diff --git a/software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.6L+.ino b/software/UI_upgrade_by_createskyblue/Program/1.6/1.6L+/SolderingStation2_arduboy_gplib_v1.6L+.ino similarity index 100% rename from software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.6L+.ino rename to software/UI_upgrade_by_createskyblue/Program/1.6/1.6L+/SolderingStation2_arduboy_gplib_v1.6L+.ino diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.6L+/T12.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.6/1.6L+/T12.ino.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.6L+/T12.ino.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.6/1.6L+/T12.ino.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.6L+/T12.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.6/1.6L+/T12.ino.with_bootloader.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.6L+/T12.ino.with_bootloader.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.6/1.6L+/T12.ino.with_bootloader.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.6L.ino b/software/UI_upgrade_by_createskyblue/Program/1.6/1.6L/SolderingStation2_arduboy_gplib_v1.6L.ino similarity index 100% rename from software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.6L.ino rename to software/UI_upgrade_by_createskyblue/Program/1.6/1.6L/SolderingStation2_arduboy_gplib_v1.6L.ino diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.6L/T12.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.6/1.6L/T12.ino.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.6L/T12.ino.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.6/1.6L/T12.ino.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.6L/T12.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.6/1.6L/T12.ino.with_bootloader.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.6L/T12.ino.with_bootloader.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.6/1.6L/T12.ino.with_bootloader.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7+.ino b/software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino similarity index 100% rename from software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7+.ino rename to software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino diff --git a/software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino.standard.hex new file mode 100644 index 0000000..cfd0546 --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino.standard.hex @@ -0,0 +1,1895 @@ +:100000000C943F120C9467120C9467120C943F28C6 +:100010000C9467120C9467120C9467120C9467127C +:100020000C9467120C9467120C9467120C9467126C +:100030000C9467120C9467120C9467120C9467125C +:100040000C94F5270C9467120C94C3270C949D27ED +:100050000C9467120C9416290C9467120C94671276 +:100060000C9467120C94671207634236B79BD8A7AB +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900005A84CCDB2D44EB93836A9020C50B9914E +:1000A0008688083CA6AAAA2ABE000000803F080055 +:1000B0000000BE922449123EABAAAA2ABECDCCCCE7 +:1000C0004C3E00000080BEABAAAAAA3E0000000081 +:1000D000BF000000803F0000000000084178D3BB53 +:1000E0004387D1133D190E3CC3BD4282AD2B3E6800 +:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1 +:10010000FF7F3F0000000000800400003FF0383017 +:1001100033103F90381033902790261030903FF0E6 +:1001200000008004800400003FF03DF020103BF010 +:100130003B7030302B502AD031B03FF000008004AB +:10014000800400003FF038703030231027902010DA +:100150002010279027903FF00000800480040000CA +:100160003FF03CF03CF020102490249020103CF014 +:100170003CF03FF000008004800400003FF037B006 +:1001800023103030387038703030231037B03FF0E3 +:1001900000008004FCF4F860E044C08CC11CC22C58 +:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9 +:1001B0008000BFF81FF8B0281FF8B4081FF8B10876 +:1001C0001FF8B048BFF8B288BFF880008000BFF8C1 +:1001D0001FF8B0081808B9E819B8B8381838B9B80D +:1001E000B9F8B0F8BFF8800015543FF815503FF04B +:1001F0001550387010203104138C22A817FC2AA83F +:100200000000000015543FFC15543FFC15543C04FD +:1002100014043CFC14543CFC005400A800000000F2 +:10022000800400003FF03CF034B0249024902790EC +:100230002310303038703FF000008004FF7CFE7CDB +:10024000FCECE8DCC84C984C882408200000000036 +:10025000000000008004E01CF3FCE7FCCE0C8E1CC8 +:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8 +:10027000E01CF87C000458085808580840087FF82B +:1002800060185FE85B685FE85B681CE85FE8000097 +:10029000800400003FF03CF03CF03CF020102010C7 +:1002A0003CF03CF03CF03FF000008004F87CF7BCF0 +:1002B00000007FF80000BFF4AB54AB54AB54AB5418 +:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431 +:1002D00073007F007E007C007C007C60BC64BE04F8 +:1002E000CF0CF03C81DC559C29045500299055D059 +:1002F00003FCFF002E00267002508270E600EE0420 +:10030000800C001C3FF43FE03FC4378C2318303092 +:1003100038703CF03FF03FF000008004058074B876 +:1003200057A876B80580F97C4694AAA8F97C068877 +:1003300074A8578C75740698F03CCE4CBC34B81435 +:10034000188010804230607860F844C08004B8841F +:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432 +:1003600000000300030003000780078003008004EF +:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A +:10038000CFCCCFCCC84CCFCCC00CE01CFCFCF87C54 +:10039000E01CC00CC00CC00CC00CC00CC00C800415 +:1003A0008004FFFCF87CFCFC8004000020001000AE +:1003B00008001000270000000000000000000000FE +:1003C00000008004C3FC18001800C3FCFFFCFF0CF5 +:1003D00000600060FF0CFFFCF0FC06000600F0FC73 +:1003E0008FC4102020104CC89FE43DF03DF01DE06C +:1003F0003EF03F709FE48CC400003030F87CF33C4A +:10040000F4BCF6BCF4BCF6BCF4BCE49CC84CD02CE8 +:10041000D02CC84CE79CF03C882408203830383079 +:10042000383038303830383039303BB03FF03FF07A +:1004300000008004F21415F0CADFB8CCF0D699E8B9 +:10044000AEA4DFEEE8F21D1E08F21C08F21A1B082B +:10045000F0714601F046464A01F219F051F218F0E7 +:100460005A8DF0C0DAEEAEF0C8B8A5F1302924F00C +:10047000B599E1A4BDF21415F0CBEEAEBDF218F0C3 +:100480005A8DF21617F21415F0CBEEAEBDF2161718 +:10049000F0BCCA9EE0BDF21415F21213F21011F274 +:1004A0000C0DF094F20E0FF0A2D8DFCBE1EEACDC35 +:1004B000E8F20AF08CF20BF04A8DF209F08DF09719 +:1004C000C59BBDF20708F21F20F2040506F097DE77 +:1004D000EED5F0CBABEEF0AEA4DFEEE8F0A8E8BDD1 +:1004E000E2EEE0F0B499D3EEF200010203F0CCDFCB +:1004F000B0B8BD5361766500466C6970004D6169A6 +:100500006E2053637265656E004A5000454E00438D +:100510004E00594553004E4F004F4E004F46460087 +:10052000496E666F73004269670050494400446930 +:1005300072656374005361766500426F6F73740077 +:100540004F666600536C65657000536176650042C6 +:100550006F6F737400536C656570004465666175F8 +:100560006C740053617665004164640044656C6599 +:1005700074650052656E616D650043616C696272FD +:10058000617465004368616E6765005265747572D9 +:100590006E0041626F7574004C616E67004C6F6352 +:1005A0006B004C4F5720566F6C0042757A7A65721B +:1005B0000053637265656E00436F6E74726F6C00FA +:1005C00054696D65720054656D7000546970000067 +:1005D000000000000F1DC20800054442080003840B +:1005E0005FBF000FE44410000115451000054CC921 +:1005F0007F8009244F900007C4C11000054D413F82 +:1006000000055443810007C44D0200054441140015 +:10061000055541080007C8810400000000000000E3 +:100620000000000001083FFE001FFF8100000040A5 +:1006300002000007FE0FF800040208080004020888 +:10064000880007FE08880004020888000402088861 +:100650000007FE0888000402094800040202300076 +:1006600007FE040C00040218040000000000000053 +:100670000000000007FE13FE000402084000040210 +:10068000084000040201FC0004023884000402084F +:10069000840007FE0FFF000402080000040209FEA8 +:1006A00000040209020004020B020004020D020011 +:1006B00007FE09FE00040201020000000000000025 +:1006C0000000000001100080001FFF80800001106A +:1006D0003FFF00004004080007FC04080004440435 +:1006E0001000044402100004440220001FFF812077 +:1006F00000004000C00000A001300001100208000E +:10070000060C0C07001803B00200000000000000F7 +:1007100000000000004000800000400080000FFF4B +:100720003FFF000841040800084104080008410494 +:10073000100008410210000FFF02200008410120B4 +:1007400000004000C00000400130000040020800EE +:1007500000400C07000040300200000000000000D4 +:10076000000000001FDF10200002120C20000224F5 +:10077000042000047F8020000424B820000FA488F7 +:10078000500014BF88500004A488500004A4884876 +:100790000004BF88880004A48A880007A48C840011 +:1007A0000444890700008186020000000000000068 +:1007B000000000000FF00491000440025200047F8A +:1007C000905400045088FF0007D084810004510039 +:1007D0008100044901FF0007CA028100044404812A +:1007E00000044A1CFF0007EA0481000C5104810048 +:1007F0000061C4850000408082000000000000000D +:100800000000000007FF802000008407FF00008434 +:10081000040100008404010000840401000FFFC7EC +:10082000FF0000840400000084040000008405FF31 +:100830000000840501000104090100010409010010 +:10084000020411FF00040401010000000000000088 +:1008500000000000008204FF00004402010007FFC6 +:100860009021000010102100001017FD0000101052 +:1008700021000FFFD06100001010A10000281121FD +:100880000000281221000044142100008210A10061 +:100890000301D045000C00900200000000000000A1 +:1008A00000000000084410FE00042810920005FF1C +:1008B00022920000103C920000100892001CFE10D2 +:1008C0009200041020FE0004103E920005FF80926A +:1008D00000041000920005100E92000610309200E5 +:1008E000041000FE00001000820000000000000064 +:1008F0000000000007DF8840000A24104000114279 +:1009000010FE00040022820002FF3D020008010ADE +:10091000420009F9103200090920120009F93E02CB +:1009200000090900020009090E020009F93022003D +:100930000805001400080200080000000000000084 +:10094000000000000FC3F1E0000FE3F1F8000C70AD +:10095000C19E000C30C186000C30C183000C30C138 +:1009600083000C60C183000C60C183000FC0C18391 +:10097000000FC0C186000C00C186000C00C19800A9 +:100980000C03F1F8000C03F1E0000000000000008F +:100990000000000000200820000FFF09FC000020DC +:1009A00008000000203E880003FE08500002020BF1 +:1009B000FE0003FE0C4000020218400003FE2BFE66 +:1009C00000020208480003FE0888000202085000E6 +:1009D00002022830001FFF91CC000000000000013F +:1009E00004047C0000880444000FFF3F4400002002 +:1009F00004440000200C440000200E44001FFF951A +:100A000044000020144400005024440000500444DA +:100A100000008804450001040485000603850300E6 +:100A200018010400000000000000000000000000A9 +:100A300000000000047E21FC0004421104001F7E1F +:100A4000090400044221FC000542110400067E1145 +:100A500004000C0005FC0015FF880000040813FECC +:100A6000000448325200044F12520004481252004F +:100A700014A8125200091F97FF0000000000000098 +:100A80000000000002103DFC0002102504000410CC +:100A900025040005FFBDFC000C102520000C3825A6 +:100AA0002000143825FE0004543D20000454251075 +:100AB0000004922510000511A5090006113D45000E +:100AC0000410258300041001010000000000000054 +:100AD000000000001FC8102000124A0C20001AC994 +:100AE00004200017480020001FFFB820000208085B +:100AF00050001FC8085000020808500003C80848EA +:100B0000001E1408880001540A880015220C840075 +:100B10001443890700008106020000000000000263 +:100B2000FE01000002823FFF00048202000004FE7A +:100B30000200000C1004FC00141004080005FF8CD7 +:100B400010000410141000043825FF0004340410B1 +:100B50000004520410000491841000051004500099 +:100B6000041004200000000000000000000000004D +:100B70000000000002030010001FDC3EFE00089091 +:100B8000021200051004FF001FDF84120002120C85 +:100B9000FE001FD2021000021222FE000A92141060 +:100BA000000A5214100012220DFF00022208100049 +:100BB0000A42141000040223FF000000000000009D +:100BC000000000000F78BC20000948A45000094A2A +:100BD000A85000094AA88800094AB104001FFEAACB +:100BE000FB00094AA42000094AA42000094AA7FEE4 +:100BF00000094AB420000948A924000B48A2220099 +:100C0000088AA4A200111920400000000000000082 +:100C1000000000000020008000005001FC0000885F +:100C2000010400010403080006FB0490000800C052 +:100C3000600007DF018000045106000004511BFE24 +:100C400000045102020007D9020200045602020009 +:100C5000001003FE0000100202000000000000006F +:100C6000000000000208209000027F9890001F8082 +:100C700009FF00022201100006218B100007628D7F +:100C8000FE000AA20910000A14111000121431FE0D +:100C900000020811100002141110000222111000AD +:100CA000024391FF000281110000000000000000DB +:100CB00000000000100700000008F83FFE0004805C +:100CC000200200008020020000BE23E2001C8222DD +:100CD000220004A42222000494222200048822225A +:100CE00000049423E20005222002000542200200B5 +:100CF0000A003FFE0011FFA00200000000000000FB +:100D00000000000000820FFE00004400400007FFCA +:100D10008040000010004000001000400000101F44 +:100D2000FF800FFFC040000010004000002800407E +:100D30000000280040000044004000008200400005 +:100D40000301C140000C0080800000000000000989 +:100D5000FF00400004203FFF00042000000000FED0 +:100D60000000001C420FFC00044200000007FF804E +:100D7000000004000FFC0004FF00000004810000DC +:100D80000005810FFC00068108040004FF08040030 +:100D900000810FFC000000000000000000000000C7 +:100DA0000000000000401F7E001FFF840200108032 +:100DB0008442000A4A0442000A3108420012C50F68 +:100DC00042000304197F001DF829010000400901B9 +:100DD00000084209FD00084209010008420F010015 +:100DE0000FFE0905000002000200000000000000E4 +:100DF0000000000001000FFE00010008200003FFBA +:100E00000820000201082000042208200008200B0E +:100E1000FE00102008200000500828000050082480 +:100E20000000880822000088102000010410200023 +:100E30000203A7FF000C01000000000000000000FA +:100E40000000000000400080001FFF9FFC000040E9 +:100E50000410000FFF02200000003FFF000FFE0003 +:100E6000000008420FF80008420808000FFE0808BA +:100E70000008020FF8000800080800080008080031 +:100E800008000FF800100008080000000000000033 +:100E90000000000007FE0FF800040200000004023A +:100EA00000000007FE00000004023FFE00040200F4 +:100EB000800007FE008000009004900008910C88DC +:100EC00000069310860002942082000090008000AB +:100ED00000900280001FFF81000000000000000061 +:100EE00000000000041012020005FF9FD200050060 +:100EF0009212001E28A2120004443FF20004820253 +:100F0000120006000212000CFE1FD2001410125232 +:100F10000004101242000410134200041012820058 +:100F200015FF820A00080002040000000000000013 +:100F300000000000002000000000203E04001FFF11 +:100F4000A204001000A2FF0000012204000FFE22F4 +:100F5000040000403E4400004022240004402224BB +:100F600000047C22040004402204000A403E0400E5 +:100F7000094022240010FF80140000000008000037 +:100F80000000000010FE08200008820BFF00048211 +:100F90000A010010FE3C51000882088800088209FE +:100FA000040002FE0C0000040019FC0009FF2820C8 +:100FB0000019290820000929082000092908200013 +:100FC00009292BFF000BFF9000000000000000002B +:100FD000000000001F7F90F80001080888000A1038 +:100FE000088800047F0107001FC13A000005490975 +:100FF000FC000449088400044908880004490848A2 +:1010000000044908500004490A200004160C580046 +:10101000142189870008C086020000000000001F1C +:10102000E03FF07038601860186018FFFCFCFCFCB2 +:10103000FCFCFCF87CF87CFCFC7FF81E1033382D9F +:101040007C25382D3825382D386D80DEC0BF40BF57 +:1010500040DEC061803F007FF0FFE0C008C01CC0E0 +:1010600038C870DCE4CFCCC78CC30CC00CC00CFFFC +:10107000FC7FF8000006000C0018F838F0303070E3 +:1010800060707878F878003C023F0C1FF80FF0038E +:10109000C000007FF8FFFCC00CC30CCB4CDB6CDB4A +:1010A0006CD86CDCECCFCCC78CC00CFFFC7FF80399 +:1010B0000007800FC00CC01CE01CE03CF03CF07F3F +:1010C000F87FF8FCFCFCFCFFFC7FF811408200215B +:1010D000208FE023FC82004A23E200FE209FF013D1 +:1010E000F880802220C0804221BFF0FBFA88800275 +:1010F000208480022084801A208080E3FE82800287 +:101100000101000F421FC078411040084090400884 +:10111000421FC008411040FFFD104008405FC0085A +:1011200040800008413FE008432520104125201061 +:101130004125202041252040417FF07FF848800252 +:101140000049000201FFF00201001002027F20228C +:1011500000410023F07F00220008002200FF8022CF +:101160000088802200888022008A8022008900FF77 +:10117000FC080023F21FC022111040FBF090402217 +:10118000121FC02A11104033F1104060005FC0AF41 +:10119000FC800020413FE0224325202279252022A7 +:1011A000412520A541252048FD7FF01083DFC01098 +:1011B000825040208250402FFFDFC0608252006189 +:1011C000C25200A1C25FE022A3D20022A251002499 +:1011D000925100288E5090308BD45020825830206D +:1011E000801010104047C017FC44402003F44023F7 +:1011F000F844406208C440A3F8E440200154402F62 +:10120000FD44402806444023F844402040445020F8 +:10121000404850214050302080400020921FC03D67 +:10122000F990402090904040901FC07BFF0000A0AC +:10123000013FE021F90200FD09020021097FF021B0 +:10124000F90500210945002909888031F91070212C +:1012500008202025004300202070F8754077557540 +:101260007740403E4A5E2B5E4A6B627F352F357F6A +:101270007C5B5E247B0E3A047E017E4A5E69063A00 +:101280002F3F6B7E46403F41497F494102626B6B75 +:101290006B62026A6B147D577D10413F55553D5777 +:1012A00051213F2D7F2A122E0A775A505A770A2051 +:1012B00024137D5553707A2A7B021A437A4A525E70 +:1012C0002B5E424A415F353F555F417D14577D0E8D +:1012D000407F7F1B54167D1654493A407E57567600 +:1012E000423F427E7E427E047E51377D3750127AE5 +:1012F0001752761E127F557F145D7F557F557F7F75 +:10130000553D577F55377817457F7F2B7B287B2BA3 +:101310007F1E12127F12121E7F416B7F6B517F5214 +:101320005A573A575A52007F494949497F22122A4F +:101330007F2A1222166A5E735662160937315F15CC +:101340005F7500000000002F000300033F123F16EE +:101350003F1A120824323D2A020100003E41413E5C +:10136000000A070A083E084020000808080020007C +:101370001008041C2A1C243E20322A24222A141875 +:10138000143E2E2A121C2A12023A06142A14242A67 +:101390001C002400402400081422141414221408F1 +:1013A00002290612291E3E093E3F251A1E21213F11 +:1013B000211E3F25213F05011E21393F083F213FC6 +:1013C0002110201F3F043B3F20203F063F3F013EAE +:1013D0001E211E3F09061E215E3F093622251901E6 +:1013E0003F013F203F3F100F3F183F330C33033C7A +:1013F00003312D23007F41153E15417F000201027C +:1014000040404000010218243C3F241818242418AE +:10141000243F182C2C043F0548543C3F0438003D21 +:1014200000403D003F0834013F003C1C383C04387C +:101430001824187C241818247C3C0804283C140424 +:101440003E243C203C3C100C3C303C2418244C50A6 +:101450003C24342C083641007F004136080101014C +:101460001028101F010120203E1020000008002538 +:10147000150F241C0C103804180C3828382828188C +:101480003C083C18283820242C3C2C2C1C04080830 +:10149000211D07083C0306231E223E22120A3F326A +:1014A0000F3E0A3F0A24130E271E0222223E271255 +:1014B0000F2525102119273F222E21160F241B0E40 +:1014C000251F0526261E251D053F0408241F042070 +:1014D0002222251927123B1620100F3C013E1F2403 +:1014E0002421110F0C031C1A3F1A091927222A2A3A +:1014F000382730320C13053F25023F0E213F2025AF +:10150000253F25251D07201F3C3F203F20103E2260 +:101510003E23110F212118010001020502000000E5 +:1015200000000000002040000000000000205020CB +:10153000000000000050300000000000006060006B +:101540000000000000000018180000000000003635 +:1015500036000000000000563600000000000201C6 +:1015600051090906000000005F00000000000000B3 +:10157000007F41410041417F000000000000000069 +:101580003F010101004040407E0000000000003F9C +:10159000213D05070070505E427E00000000000003 +:1015A000007F63410041637F0000000000080808DD +:1015B0007F08080800080808080808080044444490 +:1015C0005F444444004122140814224100080808E2 +:1015D0002A080808001414141414141400143414E1 +:1015E0001C141614000808141414222200222214B9 +:1015F00014140808000205023C42422400002B2C6F +:10160000782C2B000000242A7A2F2A1200001C625A +:10161000322E23140020545E254142200042251220 +:10162000082452210020623E633E230200205649D6 +:1016300055225840000022147F142200001C225919 +:10164000554D120C0000004A555529000004643C19 +:10165000173C64040004643C1F3C6404001C2241E9 +:101660004141221C001C3E7F7F7F3E1C001C225DEE +:10167000555D221C000814224122140800081C3E5B +:101680007F3E1C08007F41414141417F007F7F7FB9 +:101690007F7F7F7F0040704C434C70400040707CE7 +:1016A0007F7C704000010719611907010001071FC5 +:1016B0007F1F07010049221449142249000505052E +:1016C0007D05050500080808082A1C0800081C2AD2 +:1016D00008080808000004027F020400000010202F +:1016E0007F20100000003E414141413E0000004289 +:1016F0007F400000000062515149494600002241EC +:10170000494949360000302824227F2000002F4517 +:101710004545453900003E4949494932000001012B +:101720006119050300003649494949360000264938 +:101730004949493E000020547E3414600020527F05 +:101740002A1A4A3000003C4020041800001E2040A5 +:10175000200204180000104A4A2A10000000084520 +:10176000454525180000482A3A4A40000000442513 +:10177000153D45400000247E145024000022527F75 +:101780000A484A340044344F443804180044344F63 +:101790004439041900002A5A4B4E5A0800002A5AAC +:1017A0004B4E5B080000081414224100000008148E +:1017B00014224504003F0004443F0404003F000499 +:1017C000443F0405000020524242424000002052A3 +:1017D000424342410000245444475C040000245426 +:1017E00044475C050000003F404040200000003FAF +:1017F000404140210002020A563F02020002020A52 +:10180000563F02030004043F44545F440004043F75 +:1018100044545F45000008093D4B49080000080991 +:101820003D4B490A00423A072254444400423A07D9 +:1018300022554445000002124E4B4A32000002126B +:101840004E4B4A3300001010484830000004040298 +:101850002222221C000404022223221D0000020274 +:101860001A254341000002021A2543450000205773 +:1018700048484444000020574849444500120A277C +:1018800052503A24007F00205242424000304E38ED +:10189000540F64780024147F0422523C0018241250 +:1018A0004E422418007F002454543F44007F0024FB +:1018B00054543F45007F002454563D4600023A47A9 +:1018C00040413E0400023A4740413E0500023A478B +:1018D00040433D06004030404D32106000403040F3 +:1018E0004D321161004030404D3215620008040253 +:1018F0000408101000080402040910110008040272 +:10190000040A1512007F006A6A7E2A4A007F006A74 +:101910006A7F2A4B007F006A6A7E2D4A00006A6A4D +:101920006A7F2A4A0030291D4B483C1000122A7F4A +:101930004240422400304E38540F443800000A3EE2 +:101940004B4A4A300000080E384614080004071CB1 +:1019500062030A0400001C483E241800001E0452C2 +:101960003F12120C00002050503E48000000205052 +:10197000503F244400001C51494A483000000F42A7 +:1019800041211E00000010696D4B49300024147F76 +:1019900004023E40000010494D4B49300000281819 +:1019A0007E0844380024147F0442423C003049251C +:1019B0001F245438004028255735284000100A2E8F +:1019C0005B724A480040300C334040200000044421 +:1019D0003C140C00000001413D09050300002020DB +:1019E0001078040000001010087C02010000184864 +:1019F0004C281800000006424322120E0000404806 +:101A000078484000002022223E2222200000282880 +:101A1000587C0800002222124A7F02020000422263 +:101A20001F02427E000042221F02427F000012126B +:101A30001F721210000012121F72131000000844CF +:101A40004322120E000008444322120F00080742EE +:101A5000221E020200080742221F02030000424227 +:101A60004242427E000042424243427F0002024F15 +:101A700042221F020002024F42231E030000454A79 +:101A80004020100C0000454A4021100D0040422229 +:101A9000221A264000404222221B26410004043F15 +:101AA0004444544C0004043F4445544D0000014656 +:101AB0004020100F000001464020110F0000084494 +:101AC0004B2A120E000008444B2A120F00080A4A43 +:101AD0003E09090800080A4A3E09080900001840A2 +:101AE0005820180000020C424C20100E00020C423C +:101AF0004C21100D000405453D0505040004054575 +:101B00003D0504050000007F080810000000007F6C +:101B100008091001000444241F04040400202222A8 +:101B200022222220004041251519270000202212E0 +:101B30007B06122000404020100807000040300EB5 +:101B400000020C700040300E00020D710040300E9B +:101B500000020D7200003F484848444400003F48DE +:101B60004849444500003F48484A45460000024273 +:101B70004222120E000002424223120F00000242D3 +:101B80004222150E00080402040810200008040276 +:101B90000409102100080402040A15220024144438 +:101BA0007F041424002414447F05142500241444C5 +:101BB0007F0615220002021222520A060000212589 +:101BC000294A42000040704C4350204000404424C9 +:101BD00014083700000008093F4949480000101C5C +:101BE000680818000004040F74020A060000404848 +:101BF0004878400000202222223E2020000000449D +:101C000054547C000000424A4A4A4A7E000004457F +:101C10004525150C00000F4040201F000040201EED +:101C2000007F20100000007F4020100800007E424E +:101C30004242427E00000C4444241C000000064244 +:101C40004222120E0010121E12127F1200202222B7 +:101C50003A262220000001454525150F000041428B +:101C60004020100C000006424322120F00004828BA +:101C70001C4878000000100C4838080000080404D4 +:101C800008101008000800000800000800040808F8 +:101C900008080808000808080808080808060505D4 +:101CA0000706040903030504090A080303030603DE +:101CB00005030305050306040405050405040403E0 +:101CC00004090503CB05C605C005B805B105AA057D +:101CD000A2059D05980592058B0584057A05730577 +:101CE0006C05680563055B0555054F054A05440508 +:101CF00040053A0535052E052A05260520051C0553 +:101D00001905160512050F050C050905FD04F80453 +:101D1000F3043E0053656C656374205469700000E1 +:101D2000000000003E5B4F5B3E3E6B4F6B3E1C3E37 +:101D30007C3E1C183C7E3C181C577D571C1C5E7F4B +:101D40005E1C00183C1800FFE7C3E7FF00182418CA +:101D500000FFE7DBE7FF30483A060E2629792926FF +:101D6000407F050507407F05253F5A3CE73C5A7FE9 +:101D70003E1C1C08081C1C3E7F14227F22145F5F3F +:101D8000005F5F06097F017F006689956A60606079 +:101D9000606094A2FFA29408047E040810207E20B4 +:101DA0001008082A1C08081C2A08081E1010101009 +:101DB0000C1E0C1E0C30383E3830060E3E0E06004F +:101DC0000000000000005F00000007000700147F13 +:101DD000147F14242A7F2A1223130864623649567A +:101DE00020500008070300001C2241000041221C73 +:101DF000002A1C7F1C2A08083E080800807030005A +:101E00000808080808000060600020100804023E6E +:101E10005149453E00427F400072494949462141AF +:101E2000494D331814127F1027454545393C4A491E +:101E3000493141211109073649494936464949295D +:101E40001E0000140000004034000000081422416D +:101E50001414141414004122140802015909063EF6 +:101E6000415D594E7C1211127C7F494949363E41F1 +:101E70004141227F4141413E7F494949417F090912 +:101E800009013E414151737F0808087F00417F41AD +:101E9000002040413F017F081422417F40404040E4 +:101EA0007F021C027F7F0408107F3E4141413E7F3C +:101EB000090909063E4151215E7F09192946264933 +:101EC00049493203017F01033F4040403F1F20400A +:101ED000201F3F4038403F63140814630304780414 +:101EE000036159494D43007F4141410204081020DC +:101EF000004141417F040201020440404040400053 +:101F00000307080020545478407F2844443838445C +:101F1000444428384444287F385454541800087ED8 +:101F2000090218A4A49C787F0804047800447D402A +:101F3000002040403D007F1028440000417F4000C9 +:101F40007C047804787C080404783844444438FCE1 +:101F50001824241818242418FC7C08040408485465 +:101F600054542404043F44243C4040207C1C204022 +:101F7000201C3C4030403C44281028444C90909019 +:101F80007C4464544C440008364100000077000053 +:101F9000004136080002010204023C2623263C1EB2 +:101FA000A1A161123A4040207A3854545559215524 +:101FB0005579412154547841215554784020545545 +:101FC00079400C1E52721239555555593954545492 +:101FD0005939555454580000457C410002457D4212 +:101FE0000001457C40F0292429F0F0282528F07CC8 +:101FF000545545002054547C547C0A097F49324989 +:102000004949323248484832324A4848303A4141D8 +:10201000217A3A42402078009DA0A07D3944444472 +:10202000393D4040403D3C24FF2424487E494366DE +:102030002B2FFC2F2BFF0929F620C0887E090320B7 +:10204000545479410000447D413048484A32384078 +:1020500040227A007A0A0A727D0D19317D262929DB +:102060002F28262929292630484D402038080808DD +:102070000808080808382F10C8ACBA2F102834FAFE +:1020800000007B000008142A142222142A14089548 +:1020900000220095AA005500AAAA55AA55AA000038 +:1020A00000FF00101010FF00141414FF001010FFA8 +:1020B00000FF1010F010F0141414FC001414F700BA +:1020C000FF0000FF00FF1414F404FC141417101F89 +:1020D00010101F101F1414141F00101010F0000017 +:1020E00000001F101010101F10101010F010000032 +:1020F00000FF101010101010101010FF1000000042 +:10210000FF140000FF00FF00001F10170000FC0478 +:10211000F414141710171414F404F40000FF00F75B +:1021200014141414141414F700F7141414171410BE +:10213000101F101F141414F4141010F010F00000ED +:102140001F101F0000001F14000000FC140000F00E +:1021500010F01010FF10FF141414FF141010101FB3 +:1021600000000000F010FFFFFFFFFFF0F0F0F0F0C4 +:10217000FFFFFF0000000000FFFF0F0F0F0F0F38E1 +:10218000444438447C2A2A3E147E02020606027E1B +:10219000027E0263554941633844443C04407E203A +:1021A0001E2006027E020299A5E7A5991C2A492A4B +:1021B0001C4C7201724C304A4D4D303048784830DA +:1021C000BC625A463D3E494949007E0101017E2AD2 +:1021D0002A2A2A2A44445F444440514A4440404405 +:1021E0004A51400000FF0103E080FF000008086B37 +:1021F0006B083612362436060F090F060000181831 +:102200000000001010003040FF0101001F01011EFE +:1022100000191D1712003C3C3C3C0000000000006F +:10222000000000240027002A0000000000250028EC +:10223000002B0000000000230026002900040404F5 +:10224000040404040402020202020203030303035F +:10225000030102040810204080010204081020013C +:10226000020408102000000008000201000003041E +:10227000070000000000000000AED5F0A83FD3002A +:10228000408D14A1C8DA1281CFD9F1DB40A4A6AFEA +:10229000200021007F220007506C65617365207764 +:1022A000616974004144433A200074656D703A20BE +:1022B00000536574206D65617375726564005374B5 +:1022C00065703A2000FFFFFFFFFFFF8003867080EC +:1022D000038003867080039FF3E1309FF39FF3E157 +:1022E000309FF3983301CC9833983301CC983398CE +:1022F0003387C098339833E1C098339833E1C0985E +:10230000339FF398C09FF39FF398C09FF3800366B9 +:10231000CC8003800366CC8003FFFF010CFFFFFF2E +:10232000FF01001FFF810061301F3F873CE6FC87F3 +:1023300033873CE6FC87F3F8039E0F1F03F8039EE8 +:102340000F1F03E13CFE0C07CFE13CFE0C07CF99C9 +:10235000033E3086C3E6CF380F9EF3E6CF380F9E9C +:10236000F39E0327CC81039E0327CC8103E0FFE18A +:102370000CE6CFE0FFE10CE6CF9803060000FF98E3 +:1023800003060000FFFFFF1EF0F80380036630998C +:10239000C38003663099C39FF3010CF8FF9FF301DC +:1023A0000CF8FF9833393C01CF9833393C01CF9872 +:1023B00033FF0C793F98333ECCE0F398333ECCE0CA +:1023C000F39FF33E0098CF9FF33E0098CF80033EEB +:1023D00030E7C380033E30E7C3FFFFFFFFFFFFFF8F +:1023E000FFFFFFFFFF3030300076312E372B0056D5 +:1023F00000560043000FE01FC01FC03F803FF87F22 +:10240000F07FE007C007800F000E001C00180010CE +:102410000014A03FF07FF8E01C6E18EC1C681860F8 +:1024200018E01C6058E01C7FF83FF014A0455252A1 +:102430004F5200484F4C44004845415400574F52BA +:102440004B5900424F4F535400534C454550004F99 +:1024500046460000003BEC7BEE63E663E663E66322 +:10246000E663E663E663666226600660067FFE3F1B +:10247000FC000001020408102040800017291124EC +:102480001FBECFEFD8E0DEBFCDBF12E0A0E0B1E0CD +:10249000E6E8F4E702C005900D92A23CB107D9F737 +:1024A00028E0A2ECB2E001C01D92A131B207E1F731 +:1024B00012E1CFE3D2E104C02197FE010E94223A4B +:1024C000CE33D107C9F70E94CC290C94413A0C9421 +:1024D00000004F925F926F927F928F929F92AF9285 +:1024E000BF92CF92DF92EF92FF920F931F93CF9301 +:1024F000DF9300D000D0CDB7DEB74B015C012901DE +:102500003A016701780120E030E0A9010E946235BC +:1025100087FDA6C020E030E0A901C301B2010E94FE +:10252000623587FD9DC020E030E0A901C801B601F9 +:102530000E94623587FD94C081E02091DB073091D5 +:10254000DC072130310509F080E08093FC078092A0 +:10255000C1079092C207A092C307B092C4074092ED +:10256000C5075092C6076092C7077092C807C0920D +:10257000C907D092CA07E092CB07F092CC076091CE +:10258000EF077091F0078091F1079091F2070E9498 +:10259000673520E030E04AE754E40E946C376983F5 +:1025A0007A838B839C838092CD079092CE07A092F2 +:1025B000CF07B092D0079B01AC01C301B2010E94CA +:1025C000C8352B013C014092D1075092D20760924E +:1025D000D3077092D40729813A814B815C81C7016E +:1025E000B6010E946C376B017C01C092D507D09276 +:1025F000D607E092D707F092D8078091D90790913B +:10260000DA07019769F5A501940160E070E0CB015C +:102610000E94FF366093CD077093CE078093CF075B +:102620009093D007A301920160E070E0CB010E947B +:10263000FF366093D1077093D2078093D3079093AE +:10264000D407A701960160E070E0CB010E94FF363D +:102650006093D5077093D6078093D7079093D807D8 +:102660000F900F900F900F90DF91CF911F910F91CE +:10267000FF90EF90DF90CF90BF90AF909F908F90A2 +:102680007F906F905F904F90089580389105B0F4DF +:102690006034710598F4E3E7F4E290E1969FD0018D +:1026A000A0781124A80F6770E60FF11D9491A85E21 +:1026B000BC4F442321F08C91982B9C9308959095C6 +:1026C0008C919823FACFDF92EF92FF920F931F9392 +:1026D000CF93DF937C01D22E8B01040F111DEB01F0 +:1026E00077FF02C0D0E0C0E0C8010134110514F04A +:1026F00080E490E0C817D9073CF44D2DBE01C70116 +:102700000E9445132196F0CFDF91CF911F910F9139 +:10271000FF90EF90DF900895CF92DF92EF92FF92BB +:102720000F931F93CF93DF936B01122FEC017C016A +:10273000E40EF11CCE15DF0544F4202F412FB60125 +:10274000CE010E9463132196F5CFDF91CF911F91A7 +:102750000F91FF90EF90DF90CF9008952F923F92CE +:102760004F925F926F927F928F929F92AF92BF92A1 +:10277000CF92DF92EF92FF920F931F93CF93DF934D +:1027800000D01F92CDB7DEB7C22ED12C9601280FF4 +:10279000391F37FD4FC0803891050CF04BC0E982DE +:1027A0004A017B013C01402E512C160127E0220EEC +:1027B000311C93E0359427949A95E1F78B01B12C65 +:1027C000A12C1B821A82EA81FB8183E0F595E795B3 +:1027D0008A95E1F7EA0DFB1DE80DF91DE4918A8168 +:1027E0009B818770992720E830E002C035952795B6 +:1027F0008A95E2F7C901F0E0E223F923EF2B41F0DB +:102800004981B8018A819B81860D971D0E944513DD +:102810008A819B8101969B838A838C159D059CF2FE +:10282000A20CB31C0F5F1F4FC8018E199F0984159E +:1028300095053CF20F900F900F90DF91CF911F9173 +:102840000F91FF90EF90DF90CF90BF90AF909F904F +:102850008F907F906F905F904F903F902F90089552 +:102860000F931F93CF93DF93EC018B0140E0019610 +:102870000E94451340E0B801CE0101970E94451324 +:10288000B8016F5F7F4F40E0CE010E944513B80151 +:102890006150710940E0CE010E94451340E0B8014B +:1028A000CE01DF91CF911F910F910C94451380E0E1 +:1028B000E8E1F3E081118FEF00248193819381930C +:1028C00081930394D1F7EDEFF7E01786168615860E +:1028D000148608956F927F928F929F92AF92BF92CB +:1028E000CF92DF92EF92FF920F931F93CF93DF93DC +:1028F000803891050CF057C0603471050CF053C05E +:102900007B0137E0E322FF2433E0759567953A9524 +:10291000E1F7DB01B695BA2FAA27B795A7955D0118 +:10292000C0E8AC0EB11CA80EB91EA80FB91FA85E56 +:10293000BC4F00E810E0081B190B90E080E0E8E0D5 +:10294000F0E04F018E189F0830E0FA01E80FF91F00 +:10295000C4917D906D01D1E0CD1AD1080E2C01C03B +:10296000CC0F0A94EAF77C2AE6017882E114F1049C +:1029700099F06730710581F0E491EC01CA0DDB1D1F +:10298000C85EDC4FF0E0082C02C0F595E7950A948C +:10299000E2F7F881EF2BE8830196821793071CF486 +:1029A0000817190791F6DF91CF911F910F91FF90B2 +:1029B000EF90DF90CF90BF90AF909F908F907F90DF +:1029C0006F900895AF92BF92CF92DF92EF92FF92F5 +:1029D0000F931F93CF93DF936C017B018B01040F47 +:1029E000151FEB015E01AE18BF08C017D10759F0E3 +:1029F0006991D601ED91FC910190F081E02DC60125 +:102A00000995892B79F7C501DF91CF911F910F911E +:102A1000FF90EF90DF90CF90BF90AF900895FC01B2 +:102A2000538D448D252F30E0842F90E0821B930B33 +:102A3000541710F0CF96089501970895FC01918DD9 +:102A4000828D981761F0A28DAE0FBF2FB11D5D96DC +:102A50008C91928D9F5F9F73928F90E008958FEF7E +:102A60009FEF0895FC01918D828D981731F0828D32 +:102A7000E80FF11D858D90E008958FEF9FEF089589 +:102A8000FC01918D228D892F90E0805C9F4F821BED +:102A900091098F739927089588E197E00E94401566 +:102AA00021E0892B09F420E0822F089580E090E056 +:102AB000892B29F00E944C1581110C940000089577 +:102AC000FC01A48DA80FB92FB11DA35ABF4F2C91A3 +:102AD000848D90E001968F739927848FA689B7899A +:102AE0002C93A089B1898C91837080648C93938D91 +:102AF000848D981306C00288F389E02D80818F7D34 +:102B000080830895EF92FF920F931F93CF93DF93EB +:102B1000EC0181E0888F9B8D8C8D98131AC0E88919 +:102B2000F989808185FF15C09FB7F894EE89FF89E8 +:102B30006083E889F98980818370806480839FBF86 +:102B400081E090E0DF91CF911F910F91FF90EF9086 +:102B50000895F62E0B8D10E00F5F1F4F0F73112796 +:102B6000E02E8C8D8E110CC00FB607FCFACFE889D1 +:102B7000F989808185FFF5CFCE010E946015F1CFE4 +:102B8000EB8DEC0FFD2FF11DE35AFF4FF0829FB745 +:102B9000F8940B8FEA89FB8980818062CFCFCF9335 +:102BA000DF93EC01888D8823B9F0AA89BB89E88975 +:102BB000F9898C9185FD03C0808186FD0DC00FB61B +:102BC00007FCF7CF8C9185FFF2CF808185FFEDCF99 +:102BD000CE010E946015E9CFDF91CF910895833037 +:102BE00081F028F4813099F08230A9F0089587307F +:102BF000A9F08830C9F08430B1F4809180008F7DD5 +:102C000003C0809180008F7780938000089584B501 +:102C10008F7784BD089584B58F7DFBCF8091B00000 +:102C20008F778093B00008958091B0008F7DF9CFA9 +:102C3000CF93DF93282F30E0F901EB59FD4D8491BC +:102C4000F901EF5AFD4DD491F901E35CFD4DC491BA +:102C5000CC23A1F081110E94EF15EC2FF0E0EE0FD4 +:102C6000FF1FED5CFD4DA591B491EC91ED2381E04A +:102C700090E009F480E0DF91CF91089580E090E04A +:102C8000FACF1F93CF93DF93282F30E0F901EB5950 +:102C9000FD4D8491F901EF5AFD4DD491F901E35CAA +:102CA000FD4DC491CC23A9F0162F81110E94EF1580 +:102CB000EC2FF0E0EE0FFF1FE75DFD4DA591B49105 +:102CC0008FB7F894EC91111108C0D095DE23DC93F6 +:102CD0008FBFDF91CF911F910895DE2BF8CFCF9357 +:102CE000DF9390E0FC01EF5AFD4D2491835C9D4DF4 +:102CF000FC0184918823C9F090E0880F991FFC01A2 +:102D0000E15EFD4DA591B491FC01E75DFD4DC591DE +:102D1000D49161110DC09FB7F8948C9120958223B6 +:102D20008C938881282328839FBFDF91CF910895BA +:102D3000623051F49FB7F8943C91822F80958323A1 +:102D40008C93E8812E2BEFCF8FB7F894EC912E2B3C +:102D50002C938FBFEACF1F93CF93DF93182FEB01F4 +:102D600061E00E946F16209739F460E0812FDF91B7 +:102D7000CF911F910C944116CF3FD10511F461E022 +:102D8000F5CFE12FF0E0EB59FD4DE491E33031F167 +:102D900040F4E130B1F0E230E1F0C038D1057CF729 +:102DA000E4CFE73029F1E83059F1E430B1F7809110 +:102DB0008000806280938000D0938B00C0938A0053 +:102DC00004C084B5806884BDC7BDDF91CF911F91D9 +:102DD000089584B5806284BDC8BDF7CF809180001E +:102DE000806880938000D0938900C0938800EDCFE5 +:102DF0008091B00080688093B000C093B300E5CFAD +:102E00008091B00080628093B000C093B400DDCFA9 +:102E10003FB7F8948091DC029091DD02A091DE0230 +:102E2000B091DF0226B5A89B05C02F3F19F001968F +:102E3000A11DB11D3FBFBA2FA92F982F8827BC0114 +:102E4000CD01620F711D811D911D42E0660F771F3C +:102E5000881F991F4A95D1F708958F929F92AF923C +:102E6000BF92CF92DF92EF92FF924B015C010E94E2 +:102E700008176B017C010E9408176C197D098E09E7 +:102E80009F09683E734081059105A8F321E0821AED +:102E90009108A108B10888EEC80E83E0D81EE11C95 +:102EA000F11C81149104A104B10429F7FF90EF9063 +:102EB000DF90CF90BF90AF909F908F9008952FB7E5 +:102EC000F8946091D8027091D9028091DA029091C1 +:102ED000DB022FBF089584E98093BC008091BC0081 +:102EE00084FDFCCF08958093BB0084E88093BC00F0 +:102EF0008091BC0087FFFCCF089584EA8093BC00DA +:102F00008091BC0087FFFCCF88E70C9473170E9468 +:102F10007D1780E48093BB0084E88093BC00E8E1E7 +:102F2000F3E09091BC0097FFFCCF91919093BB0090 +:102F30008093BC0097E0E831F90799F78091BC00D5 +:102F400087FFFCCF0C946B17CF93C82F0E947D177F +:102F500080E00E9473178C2F0E947317CF910C94FE +:102F60006B17480F592F511D4138510514F040E897 +:102F700050E0481BFB0177FD379633E0F595E79568 +:102F80003A95E1F7F695FE2FEE27F795E795E80FCE +:102F9000F91FE85EFC4F6770772781E090E001C081 +:102FA000880F6A95EAF7382F213041F4415078F0C4 +:102FB0008191DF011197832B8C93F8CF809541503D +:102FC00030F09191DF01119798239C93F8CF0895E9 +:102FD000CF92DF92EF92FF920F93CF93DF936C012A +:102FE0007B01C42FD22F202F0E94B117B7016D0F84 +:102FF000711D61507109603471052CF4202F4C2F24 +:10300000C6010E94B117202F4D2FB701C6010E94A3 +:103010006313C6018C0F911D202F4D2FB70101970F +:10302000DF91CF910F91FF90EF90DF90CF900C94B4 +:1030300063132F923F924F925F926F927F928F9283 +:103040009F92AF92BF92CF92DF92EF92FF920F9337 +:103050001F93CF93DF93CDB7DEB72A970FB6F894BF +:10306000DEBF0FBECDBF9A8389836A3061F5DC0174 +:1030700052968C91B8E08B9F90011124E981FA81DE +:1030800086859785820F931F978786871586148676 +:1030900081E090E02A960FB6F894DEBF0FBECDBF58 +:1030A000DF91CF911F910F91FF90EF90DF90CF9024 +:1030B000BF90AF909F908F907F906F905F904F9058 +:1030C0003F902F9008956D3019F329813A813A8706 +:1030D0002987D9011C96AD90BC90B0E8AB16B1041D +:1030E0000CF07BC0F901C684D784F0E4CF16D1047C +:1030F0000CF073C0D90152966C90529745E095013F +:10310000649E200D311D1124121613060CF065C0AB +:10311000262C312C910153E0220F331F5A95E1F7F1 +:103120002C0D3D1D121613060CF057C05196BC9184 +:10313000BB83E985FA85F089FC83649FB001112483 +:103140009B01215E324E3A832983712CE981FA81F9 +:103150008491F5E07F1201C080E0460138E0532EF3 +:10316000282F30E03E832D834C8080FF4B80411020 +:1031700004C03B818C813817E1F010E000E00615B7 +:10318000C0F4D501A00FB11FB887AF83F12CE12C9B +:10319000E61460F4B701680D791D442D8F81988580 +:1031A0000E944513BFEFEB1AFB0AF2CF0F5F1F4FD0 +:1031B000E6CF8D819E81959587955A94820C931CBC +:1031C0005110CECF7394E981FA813196FA83E98365 +:1031D000A20CB31CF6E07F12B9CFA985BA8552962E +:1031E0002C915297422F50E01C968D919C91B6E005 +:1031F0002B9F800D911D1124E985FA859587848781 +:103200002389222309F444CF6AEF64039001659F68 +:10321000300D112420583F4F281739070CF038CFB4 +:10322000DF010190F081E02D0190F081E02D6AE056 +:10323000CD0109952DCF0F931F93CF93DF938C0171 +:10324000D0E0C0E0F801EC0FFD1F6491662341F06F +:103250008DEF97E00E941918892B11F02196F2CF7B +:10326000CE01DF91CF911F910F910895682F8DEFBF +:1032700097E00C941918089590E080E008958091EB +:103280007A00806980937A008EE480937C0061E00C +:1032900070E080E090E00E942D1783B7817F82600C +:1032A00083BF80E130E020E093B7916093BF8895C1 +:1032B00093B79E7F93BF90917A0096FDFCCF40918B +:1032C000780050917900240F351F815069F7809163 +:1032D0007A008F7780937A0084E0369527958A95D7 +:1032E000E1F750E040E064EB7BE281E190E00E9496 +:1032F0009C36C901089580917A00806980937A0094 +:1033000088EC80937C006AE070E080E090E00E94AE +:103310002D1783B7817F826083BF80E270E060E019 +:1033200093B7916093BF889593B79E7F93BF909119 +:103330007A0096FDFCCF2091780030917900620FE1 +:10334000731F815069F780917A008F7780937A009C +:10335000769567957695679562527A4090E080E021 +:103360000E94673526EF38E24CE151E40E946C3749 +:10337000089590917A00906990937A008E508064BD +:1033800080937C0083B7817F826083BF20E290E0DE +:1033900080E033B7316033BF889533B73E7F33BFAA +:1033A00030917A0036FDFCCF409178005091790041 +:1033B000840F951F215069F720917A002F77209371 +:1033C0007A0025E0969587952A95E1F708958FE094 +:1033D0000E94B919A091E302B091E4029C010E94FD +:1033E000F0360E94693528E539E743E353E40E944B +:1033F0006C370E94E537CB0108958091EC02882359 +:1034000069F086E00E941816892B41F06AE070E0AE +:1034100080E090E00E942D171092EC0208956F92C8 +:103420007F928F929F92AF92BF92CF92DF92EF9254 +:10343000FF920F93CF93DF937C01C62F01E020E32F +:1034400040E370E060E00E948C13570123E0A20E7D +:10345000B11C00E02AE24AE263E070E0C5010E948C +:103460008C1370E060E0C7010E94301467013FE2F6 +:10347000C30ED11C70E060E0C6010E9430146FE200 +:1034800070E0C7010E9430146FE270E0C6010E9434 +:103490003014EC2FF0E0EE0FFF1FE157FE4F80805D +:1034A000918053E0E52EF12CD12CC12C60E8662EE2 +:1034B000712CD0E0C0E0FE0133E0F595E7953A9538 +:1034C000E1F7EC0DFD1DE80DF91DE491CE018770CB +:1034D0009927930102C0359527958A95E2F7C9018E +:1034E000F0E0E223F923EF2B69F0CE01880F991F5A +:1034F0008C0F9D1F01E023E043E0B7018A0D9B1D67 +:103500000E948C132196CE30D105A9F632E0C30E6D +:10351000D11C83E0E80EF11C2DE2E216F10449F61D +:10352000DF91CF910F91FF90EF90DF90CF90BF9000 +:10353000AF909F908F907F906F9008950F931F93FF +:10354000CF9380914D01882399F0CFEF0FEE11E0DA +:1035500061E085E00E944116C8010197F1F760E043 +:1035600085E00E944116C8010197F1F7C15081F72B +:10357000CF911F910F9108952F923F924F925F929A +:103580006F927F928F929F92AF92BF92CF92DF9273 +:10359000EF92FF920F931F93CF93DF9310E000E021 +:1035A000D0E0C0E03EE3E32EF12C40ECC42ED12C61 +:1035B000AA24A394B12C60E2662E712C70E4272E0D +:1035C000312C4C2E86E00E94181621E0892B09F040 +:1035D00020E02093EC02F0921703E0921603D092C1 +:1035E0001503C0921403B0921303A092120382E851 +:1035F00090E09093110380931003809110039091B9 +:10360000110395958795582E9FE1591243C0F0926A +:103610001703E0921603D0921503C0921403B092E0 +:103620001303A0921203EEEBF0E0F0931103E0938A +:1036300010039FE5592E0E94571482E080930F08D3 +:1036400010930A0800930908E0E3F0E0F0930C08F7 +:10365000E0930B088EE50E94361910920A0810922A +:10366000090870920C0860920B08912C812C84142C +:1036700038F580910A03F40196E0989FE00DF11D62 +:103680001124E15BFE4F80810E943619EFEF8E1A04 +:103690009E0AEDCFF0E65F12CECFF0921703E092D4 +:1036A0001603D0921503C0921403B0921303A09294 +:1036B0001203309211032092100380E2582EBBCFE8 +:1036C00010930A080093090870920C0860920B0886 +:1036D000852D0E9436190E94FD190E94871786E0E9 +:1036E0000E941816892B09F088CF8091EC02811175 +:1036F00084CF80900A03F6E08F9E40011124C4011C +:10370000815B9E4F4C01FC01EC0FFD1F50820E941B +:103710009E1A6AE070E080E090E00E942D172196EA +:10372000005F1F4FC530D10509F04BCFF401158262 +:10373000DF91CF911F910F91FF90EF90DF90CF908D +:10374000BF90AF909F908F907F906F905F904F90C1 +:103750003F902F9008953F924F925F926F927F9289 +:103760008F929F92AF92BF92CF92DF92EF92FF9291 +:103770000F931F93CF93DF93CDB7DEB72E970FB67E +:10378000F894DEBF0FBECDBF80910D03882309F4EE +:10379000A5C11092B5071092B6071092B707109204 +:1037A000B8078090B5079090B607A090B707B09083 +:1037B000B807C090FE02D090FF02E0900003F090A6 +:1037C0000103A7019601C501B4010E94FF362B0138 +:1037D0003C0120E030E0A9010E94143818160CF0DA +:1037E000A0C1C301B2010E94E5378091480188233E +:1037F00009F4B8C1C092BD07D092BE07E092BF07DE +:10380000F092C007E12CF12C00EA10E420E030E057 +:1038100040E450E46E31710540F0E12CF12C00E8F9 +:103820001FE320E030E040E05FE360E070E080E331 +:1038300091E40E9469128091FB07882309F42AC150 +:103840000E945F176D837E838F8398878091E30743 +:103850009091E407A091E507B091E6074D815E8164 +:103860006F817885481B590B6A0B7B0B8091EF07A2 +:103870009091F007A091F107B091F207481759070E +:103880006A077B0708F406C1E091DD07F091DE07C7 +:1038900080819181A281B38189839A83AB83BC8328 +:1038A000E091E107F091E2079C01AD016081718137 +:1038B000828193810E94FF364B015C012091EB07CE +:1038C0003091EC074091ED075091EE0769817A81C4 +:1038D0008B819C810E94FF366B017C012091D10776 +:1038E0003091D2074091D3075091D407C501B4015C +:1038F0000E94C8352091E7073091E8074091E90719 +:103900005091EA070E9400372B013C014092E707E3 +:103910005092E8076092E9077092EA073090FC073E +:1039200031101AC02091CD073091CE074091CF07BA +:103930005091D007C701B6010E94C8359B01AC0168 +:10394000C301B2010E94FF366093E7077093E80756 +:103950008093E9079093EA074090E7075090E807C3 +:103960006090E9077090EA071091F7079091F807C7 +:103970009E87A091F907AD870091FA07212F392F73 +:103980004A2F502FC301B2010E94143818160CF0B0 +:10399000CCC0812F9E85AD85B02F8093E707909393 +:1039A000E807A093E907B093EA07332009F4D6C0EB +:1039B0002091CD073091CE074091CF075091D0078D +:1039C000C501B4010E94C8354B015C012091D507A7 +:1039D0003091D6074091D7075091D807C701B6015B +:1039E0000E94C8359B01AC016091E7077091E80720 +:1039F0008091E9079091EA070E94FF36A5019401A2 +:103A00000E9400376B017C019B01AC01612F7E8518 +:103A10008D85902F0E94623587FD18C01091F307A5 +:103A20009091F4079E87A091F507AD870091F60766 +:103A3000212F392F4A2F502FB601C7010E9462351E +:103A400087FD04C01C2DDE86ED860F2DE091DF077B +:103A5000F091E007812F9E85AD85B02F8083918303 +:103A6000A283B38389819A81AB81BC818093EB0768 +:103A70009093EC07A093ED07B093EE078D819E81A4 +:103A8000AF81B8858093E3079093E407A093E5079F +:103A9000B093E6076091B9077091BA078091BB07B0 +:103AA0009091BC070E94DE3789E02E960FB6F894FD +:103AB000DEBF0FBECDBFDF91CF911F910F91FF9061 +:103AC000EF90DF90CF90BF90AF909F908F907F90BE +:103AD0006F905F904F903F900C94AB1680910C03C9 +:103AE000609144017091450181110EC08091FC02EA +:103AF0009091FD0220910B03BC01222329F06091DB +:103B00004301680F792F711D90E080E00E946735B6 +:103B10006093B5077093B6078093B7079093B80783 +:103B200040CEC301B20190585ECE8091F3079091D0 +:103B3000F407A091F507B091F60789879A87AB87BC +:103B4000BC879C01AD01C301B2010E94623587FFB1 +:103B50002CCF89859A85AB85BC851FCF812C912C74 +:103B6000540134CF20E030E040E05FE3C701B6010C +:103B70000E9400379B01AC01C501B4010E941438BA +:103B800018164CF41092B9071092BA071092BB079E +:103B90001092BC077FCF80E090E0AFE7B3E4809362 +:103BA000B9079093BA07A093BB07B093BC0772CF35 +:103BB0004F925F926F927F928F929F92AF92BF923D +:103BC000CF92DF92EF92FF92CF93DF938090E50246 +:103BD0009090E602A090E702B090E802C0910A033C +:103BE000D0E0C501B4010E94DE376B017C0120E00A +:103BF00030E048E453E4C501B4010E94623593E02B +:103C0000CC0FDD1F9A95E1F7CE5FDE4F87FF31C005 +:103C10002881398150E040E025513109410951099D +:103C2000C701B6010E94FE3928EC30E040E050E0C8 +:103C30000E949C36CA01B9016B5E7F4F8F4F9F4F28 +:103C40000E9469356093FE027093FF028093000327 +:103C500090930103DF91CF91FF90EF90DF90CF9091 +:103C6000BF90AF909F908F907F906F905F904F909C +:103C700008954A805B80712C612C20E030E04CE894 +:103C800053E4C501B4010E94623587FF1FC08880DC +:103C90009980B12CA12CA7019601285C310941091A +:103CA0005109C301B201681979098A099B090E9467 +:103CB000FE3920E530E040E050E00E949C36CA0129 +:103CC000B901680D791D8A1D9B1DBACF2C813D81DC +:103CD00050E040E02419350946095709C701B601EB +:103CE00068517140810991090E94FE3920E530E058 +:103CF00040E050E00E949C36CA01B901640D751D78 +:103D0000861D971D9DCFFC0101900020E9F731979A +:103D1000AF01481B590BBC018DEF97E00C94E214E6 +:103D20008F929F92AF92BF920F931F93CF93DF9387 +:103D3000CDB7DEB7A1970FB6F894DEBF0FBECDBFEB +:103D400019A2423008F44AE08E010F5D1F4F842E05 +:103D5000912CB12CA12CA50194010E94CE36E62F06 +:103D6000B901CA01EA30F4F4E05DD801EE938D01A7 +:103D7000232B242B252B79F790E080E0109719F066 +:103D8000CD010E94831EA1960FB6F894DEBF0FBE30 +:103D9000CDBFDF91CF911F910F91BF90AF909F90BA +:103DA0008F900895E95CE1CFCF92DF92EF92FF927E +:103DB000CF93DF9397FF19C06B017C018DE20E94C6 +:103DC0003619EC0166277727CB016C197D098E091E +:103DD0009F094AE00E94901E8C0F9D1FDF91CF919A +:103DE000FF90EF90DF90CF9008954AE0DF91CF9160 +:103DF000FF90EF90DF90CF900C94901E4F925F92C7 +:103E00006F927F928F929F92AF92BF92CF92DF92EA +:103E1000EF92FF920F931F93CF936B017C01742E4F +:103E2000AC019B010E947138882399F083EB92E0EA +:103E3000CF911F910F91FF90EF90DF90CF90BF90A7 +:103E4000AF909F908F907F906F905F904F900C9469 +:103E5000831E46015701E894B7F82FEF3FEF4FE775 +:103E60005FE7C501B4010E94713881110DC02FEFC9 +:103E70003FEF4FE75FE7C501B4010E9462351816B6 +:103E80001CF487EB92E0D4CF2FEF3FEF4FE75FE4D6 +:103E9000C701B6010E94143818161CF48BEB92E08F +:103EA000C7CF2FEF3FEF4FE75FECC701B6010E948E +:103EB000623587FDF3CF20E030E0A901C701B601EC +:103EC0000E94623510E000E087FF08C08DE20E948A +:103ED00036198C01F7FAF094F7F8F094C0E060E03E +:103EE00070E080E09FE37C1641F020E030E040E2AB +:103EF00051E40E946C37CF5FF6CFA70196010E9474 +:103F000000372B013C010E94E5374B015C014AE080 +:103F10000E94901E7C01E00EF11ECC23B1F1C50180 +:103F2000B4010E9467359B01AC01C301B2010E943C +:103F3000FF364B015C018EE20E943619E80EF91E35 +:103F4000C15018F120E030E040E251E4C501B40175 +:103F50000E94C8352B013C010E94E5374B01B12C72 +:103F6000A12C4AE0C501B4010E94901EE80EF91E82 +:103F7000C501B4010E9467359B01AC01C301B201C8 +:103F80000E94FF364B015C01DBCFC701CF911F912F +:103F90000F91FF90EF90DF90CF90BF90AF909F90E8 +:103FA0008F907F906F905F904F900895CF92DF92A7 +:103FB000EF92FF920F931F93CF93DF93C82F81E06F +:103FC000DC2FD827D0930E08C0930D0880930F08DC +:103FD0000C2F2EE046E661E370E081E090E00E9465 +:103FE000E81720910E0330910F03253F81E0380739 +:103FF000B8F4A4E6B0E00E94F03624EF31E040E0EF +:1040000050E00E949C36BA01A9014E5F5F4F6F4F8E +:104010007F4F2EE061E370E081E090E00E948C131E +:104020006091B5077091B6078091B7079091B80776 +:104030000E94DE379B01AC01A4E6B0E00E94BB36D3 +:1040400034EFC32EDD24D394E12CF12CA70196018B +:104050000E949C36DA01C9010296A11DB11D02978A +:104060000C2F2DE043E062E370E00E948C1360911E +:10407000B5077091B6078091B7079091B8070E9475 +:10408000DE379B01AC01A4E6B0E00E94BB36A7017D +:1040900096010E949C36DA01C9010296A11DB11D4C +:1040A000039724E045E06CE370E00E948C1360917C +:1040B000B5077091B6078091B7079091B8070E9435 +:1040C000DE379B01AC01A4E6B0E00E94BB36A7013D +:1040D00096010E949C3689019A010E5F1F4F2F4F57 +:1040E0003F4F0150110941E3E42EF12C4D2FB70150 +:1040F000C8010E9445138FEFE81AF80A8DE3E8160D +:10410000F104A1F76091B5077091B6078091B707E8 +:104110009091B8070E94DE379B01AC01A4E6B0E0A5 +:104120000E94BB3624EF31E040E050E00E949C3614 +:10413000DA01C9010296A11DB11D0397ED2E04E01D +:1041400025E047E552E16BE370E00E94AE130C2FCF +:104150002EE047E161E370E088E690E00E94E81716 +:104160006091B9077091BA078091BB079091BC0725 +:104170000E94DE379B01AC012F5F310941095109D3 +:10418000A7E1B0E00E94BB36CC24C394DD24DA94CE +:10419000ED2CFD2CA70196010E949C36422F2EE0AB +:1041A00061E370E088E690E00E948C13C0930E08F3 +:1041B000D0930D0882E090E090930A08809309085C +:1041C00007E310E010930C0800930B086091B5070B +:1041D0007091B6078091B7079091B80740E00E94B0 +:1041E000FE1E88EF0E94361985E592E10E941B1998 +:1041F00089E690E090930A088093090810930C08D0 +:1042000000930B086091B9077091BA078091BB07C2 +:104210009091BC070E94DE379B01AC012F5F3109F2 +:1042200041095109A4E6B0E00E94BB36A7019601FE +:104230000E949C36CA01B9010E94D41E83E592E116 +:104240000E941B19D0930E08C0930D08DF91CF91E7 +:104250001F910F91FF90EF90DF90CF9008956F9294 +:104260007F928F929F92AF92BF92CF92DF92EF9206 +:10427000FF920F931F93CF93DF93B0900A0377249D +:104280007394B11001C0712C809142018150990B3F +:104290001092170310921603880F991F909315031D +:1042A0008093140381E090E09093130380931203B2 +:1042B0008B2D90E0880F991F90931103809310032A +:1042C00086E00E94181621E0892B09F020E0209357 +:1042D000EC02FF24F39472E0972EE6E08E2EFCE0D1 +:1042E000CF2ED12C0E945714C0911003D0911103EE +:1042F000D595C795EC2E8E011127C801870D911D0C +:1043000077FC9A958B199109712C97FD06C0833023 +:10431000910514F082E090E0782EF0920E08109251 +:104320000D0890920F0810920A0810920908109236 +:104330000C0810920B0884E19DE10E941B19109259 +:104340000E08F0920D0810920A0810920908A72C86 +:10435000072C000CBB08C501019654E0880F991F7B +:104360005A95E1F790930C0880930B0882E19DE148 +:104370000E941B196C2E671890E080E098012A19A2 +:104380003B095901209142018C010F5F1F4F6216BA +:10439000D0F4D0920A08C0920908980144E0220F94 +:1043A000331F4A95E1F730930C0820930B088A0DD0 +:1043B0009B1D889E9001899E300D1124C901815B4F +:1043C0009E4F0E94831EC801639403301105D1F6ED +:1043D0000E94FD190E94871786E00E941816892BFB +:1043E000B9F48091EC02811113C00E949E1AE092F0 +:1043F0000A03DF91CF911F910F91FF90EF90DF9013 +:10440000CF90BF90AF909F908F907F906F900895C6 +:10441000BC2E68CF0E943C3A1F93CF93DF93EC01F0 +:10442000162F0E948636181739F0612FCE01DF91C2 +:10443000CF911F910C948E36DF91CF911F910895EB +:10444000AF92BF92CF92DF92EF92FF920F931F93A2 +:10445000CF93DF936091470182E090E00E940C22AD +:104460006091460183E090E00E940C22609145013A +:1044700084E090E00E940C226091440185E090E08D +:104480000E940C226091430186E090E00E940C2281 +:1044900060914B0187E090E00E940C2260914A01FC +:1044A00088E090E00E940C226091490189E090E050 +:1044B0000E940C2260917F018AE090E00E940C2211 +:1044C000609148018BE090E00E940C2260914D01C8 +:1044D0008CE090E00E940C2260910A038DE090E055 +:1044E0000E940C22609142018EE090E00E940C221A +:1044F00060914E018FE090E00E940C226091E902F1 +:1045000080E190E00E940C226091070381E190E03D +:104510000E940C226091EB0282E190E00E940C224A +:104520006091EA0283E190E00E940C2284E1E82E8F +:10453000F12C10E006E0809142011817B8F5109FA9 +:1045400060011124D0E0C0E0FE01EC0DFD1DE15B37 +:10455000FE4F6081C7018C0F9D1F0E940C22219687 +:10456000C630D10589F7670186E0C80ED11C88E006 +:10457000189FE0011124CE5FDE4F8EE0E80EF11CA3 +:1045800069812296C6010E940C22560182E0A80E83 +:10459000B11CFE0132976081C60101960E940C2277 +:1045A0006501AE14BF0461F71F5FC5CFDF91CF91E6 +:1045B0001F910F91FF90EF90DF90CF90BF90AF9041 +:1045C00008958F929F92AF92BF92CF92DF92EF9217 +:1045D000FF92CF936FEF70E089E00E94AB168BEAF9 +:1045E00094E00197F1F78EE00E94B9197C018AE00E +:1045F0000E9418169091C202981729F091E09093AA +:1046000002038093C202809101019FEF980F909363 +:104610000101811106C00E94E7199093090380935C +:1046200008036091B9077091BA078091BB07909118 +:10463000BC070E94DE3789E00E94AB168090E5023D +:104640009090E602A090E702B090E802B70190E0F7 +:1046500080E00E946735A50194010E94FF362DEC91 +:104660003CEC4CE45DE30E94C835A50194010E9436 +:1046700000376093E5027093E6028093E70290931F +:10468000E8020E94D81D60910E0370910F0390E024 +:1046900080E00E9467356B017C012091B507309165 +:1046A000B6074091B7075091B8070E946235811153 +:1046B000B6C02091FE023091FF024091000350915C +:1046C0000103C701B6010E94FF366B017C0120E0A7 +:1046D00030E0A9010E94143818160CF096C020E0B2 +:1046E00030E040EA50E4C701B6010E9414381816C1 +:1046F0000CF495C06091FC027091FD0290E080E0A6 +:104700000E9467352091FE023091FF024091000324 +:10471000509101030E94FF366B017C0120E030E0E4 +:10472000A9010E94143818160CF088C0C701B60100 +:104730000E94E5376530710508F084C080918001E2 +:10474000811105C080914C0181110E949E1A81E067 +:104750008093800110924C0180910E0390910F0381 +:10476000853F21E0920710F0109200012091000196 +:10477000211141C0843F9140F0F56FEF70E089E076 +:104780000E94AB160E949E1AC1E0C09300010E94D5 +:104790002F210E942022C09302038EE00E94B919AB +:1047A000BC0190E080E00E9467356093E502709361 +:1047B000E6028093E7029093E8021092F60280915D +:1047C000FC029091FD022CE231E03093170320931C +:1047D000160320E233E030931503209314032AE0FC +:1047E00030E03093130320931203880F991F9093A6 +:1047F000110380931003CF91FF90EF90DF90CF9043 +:10480000BF90AF909F908F90089520E030E040EAF5 +:1048100050ECC701B6010E94623587FF6BCF6091F3 +:10482000FE027091FF0280910003909101030E94AB +:10483000E53770930F0360930E035CCFC701B60199 +:10484000905876CF1092800187CF0C9486362F92A5 +:104850003F924F925F926F927F928F929F92AF9210 +:10486000BF92CF92DF92EF92FF920F931F93CF935D +:10487000DF938C0186E080930F0881E080930E081F +:1048800010920D086091D5027091D602072E000C8F +:10489000880B990B0E9469352B013C014FECC42E0B +:1048A00042E0D42E7601C2E0D0E05AE0A52EB12C31 +:1048B000BE010D2E000C880B990B0E9469359B01DF +:1048C000AC0160E070E080E291E40E9419389B0145 +:1048D000AC01C301B2010E946C370E94DE37CB01EC +:1048E000B5010E940E3AF701819391937F012197C0 +:1048F000F8F61093D6020093D502C3ECD2E094E010 +:10490000E92EF12C22E0822E912C3AE0232E312C3C +:10491000B401092C000C880B990B0E9469359B018E +:10492000AC0160E070E080E291E40E9419382B0154 +:104930003C016091D5027091D602072E000C880BC5 +:10494000990B0E946935A30192010E946C370E9465 +:10495000DE37CB01B1010E940E3AF6012081318190 +:10496000821B930BF2E3F89FB001F99F700D1124A5 +:10497000072E000C880B990B0E946935288139811C +:104980004A815B810E9400372B013C0120E030E02E +:10499000A9010E94623581117CC0488259826A82D5 +:1049A0007B8201E022E346E270E060E0C701049709 +:1049B0000E948C138EECA82EBB24BA940FEF1FEF2D +:1049C000288139814A815B8160E070E080E890E471 +:1049D0000E94FF362B013C01B5010B2C000C880B0B +:1049E000990B0E9469359B01AC01C301B2010E9481 +:1049F00000370E94DE37F0920A08E09209087093AF +:104A00000C0860930B08F60160817181600F711FC3 +:104A1000072E000C880B990B0E94D41E0F5F1F4FAE +:104A2000F2E3AF0EB11C0230110551F6249621E0DD +:104A3000821A910882E0C80ED11CECE2EE0EF11C45 +:104A4000F8E8EF16F10409F063CF00E022E040E857 +:104A500070E060E090E080E00E948C1320E140E88C +:104A600060E370E090E080E00E948C13DF91CF91D2 +:104A70001F910F91FF90EF90DF90CF90BF90AF907C +:104A80009F908F907F906F905F904F903F902F906E +:104A90000895C301B20190582DEC3CEC4CE45FE367 +:104AA0000E94C835A30192010E9400376883798370 +:104AB0008A839B8376CF4F925F926F927F928F9281 +:104AC0009F92AF92BF92CF92DF92EF92FF920F939D +:104AD0001F93CF93DF93CDB7DEB72B970FB6F89424 +:104AE000DEBF0FBECDBF90914E01E82FF0E09F01D9 +:104AF000220F331F911126C0F901E55DFD4F408162 +:104B00005181EE24E39400E124E260E370E080E36D +:104B100090E00E94AE132B960FB6F894DEBF0FBE46 +:104B2000CDBFDF91CF911F910F91FF90EF90DF905C +:104B3000CF90BF90AF909F908F907F906F905F903D +:104B40004F900895923009F079C0E356F34E4490A7 +:104B5000F901E352FE4FA080B180F12CE12C04E377 +:104B600010E393E0592E27E0622EE414A0F6F5013D +:104B7000EE0DFF1D449180E1840F833008F45CC08A +:104B800081EF7816D1F082EF7816C1F1403F90F4B2 +:104B9000193710F0085F10E088E0489FA001112449 +:104BA000435E5A4E602F70E028E0812F90E00E9413 +:104BB0006A14185F80EF782E1DC04E39D8F41D3767 +:104BC00010F0085F10E0C02ED12C812E912C459D55 +:104BD000A00111244D5B5C4E23E0B601C4010E948C +:104BE0006A1421E042E453E1B601C40103960E9435 +:104BF0006A141C5F8FEFE81AF80AB7CF4132D0F77A +:104C0000193710F0085F10E0C02ED12C812E912CA6 +:104C1000469DA0011124455A5D4E27E0B601C4010E +:104C20000E946A1421E042E453E1B601C4010796F0 +:104C30000E946A14185FDECF742EDCCF80E390E010 +:104C400090930A088093090884E390E090930C08FD +:104C500080930B0881E080930F08F901EC53F34E29 +:104C600065917491CE0101960E945B35CE0101964B +:104C70000E94831E50CFCF93C82F86E00E94181643 +:104C800021E0892B09F020E02093EC020E945714C8 +:104C90008091100390911103959587950E94272488 +:104CA0008C2F0E945B250E9487170E94FD1986E0C9 +:104CB0000E941816892B51F78091EC028111E6CFE2 +:104CC0000E949E1A8091D5029091D602CF910895AC +:104CD000109217031092160328E037E03093150363 +:104CE0002093140324E630E030931303209312033F +:104CF000880F991F909311038093100387E00E94FF +:104D00003B269C01220F331F309317032093160379 +:104D1000865A9F4F880F991F909315038093140311 +:104D20008AE090E090931303809312033093110371 +:104D30002093100387E00E943B269C01220F331F23 +:104D400030931703209316030996880F991F9093A9 +:104D500015038093140381E090E0909313038093F4 +:104D60001203309311032093100387E00C943B2629 +:104D70002F923F924F925F926F927F928F929F926B +:104D8000AF92BF92CF92DF92EF92FF920F931F9359 +:104D9000CF93DF93182FE091ED02F0E0EB57FE4F39 +:104DA00080818150990B1092170310921603880F7F +:104DB000991F909315038093140381E090E09093E2 +:104DC000130380931203812F90E0880F991F909313 +:104DD00011038093100386E00E94181621E0892BAE +:104DE00009F020E02093EC0210920E0881E08093FD +:104DF0000D0838E3632EE0901003F0901103F59452 +:104E0000E794AE2C6701DD249601211B3109629ED7 +:104E1000C001639E900D1124C80FD91F209709F17E +:104E2000662777276C1B7D0B072E000C880B990BD0 +:104E30000E9469352AE939E949E15FE30E94C835F2 +:104E40001B012C01BE01DD0F880B990B0E946935F7 +:104E50009B01AC01C201B1010E9400370E94DE3704 +:104E6000EB010E9457148601025011094E0185E0A2 +:104E7000B82E93E0792E7A0CC090ED02D12C17FD5C +:104E800020C0F601EB57FE4F808180171106C9F054 +:104E9000C4F0E5E8F1E070E060E0CF0185589140B2 +:104EA0008C159D0534F48191680F711DF6CF1E2D70 +:104EB000A2CF872D8B19680FC401885491090E94D5 +:104EC0000F1ABA940F5F1F4F88E3880E911CB11020 +:104ED000D3CFE5E8F1E090E080E09F012558314034 +:104EE0002C153D0524F42191820F911DF6CF8E0DD6 +:104EF0000E945B250E9487170E94FD1986E00E9490 +:104F00001816892BA1F68091EC028111D0CF0E9456 +:104F10009E1A8A2DDF91CF911F910F91FF90EF90F4 +:104F2000DF90CF90BF90AF909F908F907F906F90C9 +:104F30005F904F903F902F9008951F920F920FB661 +:104F40000F9211242F933F934F935F936F937F930F +:104F50008F939F93AF93BF93EF93FF9388E197E075 +:104F60000E946015FF91EF91BF91AF919F918F913A +:104F70007F916F915F914F913F912F910F900FBE55 +:104F80000F901F9018951F920F920FB60F92112439 +:104F90002F938F939F93EF93FF93E0912807F091C6 +:104FA00029078081E0912E07F0912F0782FD1BC019 +:104FB0009081809131078F5F8F7320913207821724 +:104FC00041F0E0913107F0E0E85EF84F958F809373 +:104FD0003107FF91EF919F918F912F910F900FBE0D +:104FE0000F901F9018958081F4CF1F920F920FB6EB +:104FF0000F9211242F933F938F939F93AF93BF935F +:105000008091D8029091D902A091DA02B091DB028E +:105010003091D70223E0230F2D3758F50196A11DBB +:10502000B11D2093D7028093D8029093D902A09308 +:10503000DA02B093DB028091DC029091DD02A09154 +:10504000DE02B091DF020196A11DB11D8093DC024A +:105050009093DD02A093DE02B093DF02BF91AF9187 +:105060009F918F913F912F910F900FBE0F901F90A6 +:10507000189526E8230F0296A11DB11DD2CF1F92CD +:105080000F920FB60F9211242F933F934F935F937C +:105090006F937F938F939F93EF93FF9383B181706F +:1050A00029B19091E202981709F49DC030E0220FD7 +:1050B000232F221F330B922F8093E2024091E102B3 +:1050C000241709F490C02093E1022091120330913B +:1050D0001303981719F03195219531094091100368 +:1050E000509111036091160370911703240F351F1F +:1050F000261737070CF48BC020911203309113034D +:10510000981719F03195219531094091100350916C +:1051100011036091140370911503240F351F62175A +:1051200073070CF46FC0409112035091130398174A +:1051300019F05195419551092091100330911103B7 +:10514000240F351F309311032093100341E098136F +:1051500040E02091E002421709F440C02091120380 +:1051600030911303981719F0319521953109609109 +:10517000100370911103E0911603F0911703260FAD +:10518000371F2E173F070CF44CC0209112033091AB +:105190001303981719F03195219531096091100387 +:1051A00070911103E0911403F0911503260F371F3E +:1051B000E217F3078CF12091120330911303981733 +:1051C00019F03195219531098091100390911103C7 +:1051D000820F931F90931103809310034093E0027A +:1051E00081E080930203FF91EF919F918F917F91D6 +:1051F0006F915F914F913F912F910F900FBE0F9044 +:105200001F90189520911403309115039BCF209186 +:1052100016033091170396CF8091140390911503D4 +:10522000D9CF8091160390911703D4CF18950F937F +:105230001F93CF93DF93E8E1F7E01382128288EEA9 +:1052400093E0A0E0B0E084839583A683B78389E9E7 +:1052500092E09183808385EC90E09587848784EC4D +:1052600090E09787868780EC90E0918B808B81EC33 +:1052700090E0938B828B82EC90E0958B848B86EC14 +:1052800090E0978B868B118E128E138E148EEDEF1D +:10529000F7E0138212821682178280E180871582DE +:1052A000148212868BEA92E091838083158614869D +:1052B0001786168681E0808B118A828B138AC1EC57 +:1052C000D7E029EB37E03F8F2E8F2DEB37E03D8F76 +:1052D0002C8F25EB37E039A328A31AAE1AAA1BAAF4 +:1052E0001CAA1DAA40E050E06FE773E44EAB5FAB31 +:1052F00068AF79AF44E650E060E070E04EA75FA78A +:1053000068AB79AB21E030E0398F288F3B8F2A8F53 +:105310008BAF80E090E0A0E3B1E488839983AA8317 +:10532000BB8380E090E0A0E0BFE38C839D83AE83ED +:10533000BF8380E090E0A0E8BFE388879987AA87D1 +:10534000BB8780E090E0A0E3B1EC8C879D87AE87BF +:10535000BF878DEC9CECACE4BDEB888B998BAA8B62 +:10536000BB8B80E090E0A0E2B1EC8C8B9D8BAE8B90 +:10537000BF8B0E945F170EA51FA528A939A9601B26 +:10538000710B820B930B6AA37BA38CA39DA3DF916C +:10539000CF911F910F910895CF93DF93CDB7DEB7D3 +:1053A0002C970FB6F894DEBF0FBECDBF789484B5AE +:1053B000826084BD84B5816084BD85B5826085BD11 +:1053C00085B5816085BD80916E00816080936E009F +:1053D0001092810080918100826080938100809191 +:1053E0008100816080938100809180008160809342 +:1053F00080008091B10084608093B1008091B00002 +:1054000081608093B00080917A00846080937A00FC +:1054100080917A00826080937A0080917A00816026 +:1054200080937A0080917A00806880937A0010924D +:10543000C1001092B90088E48093B8000E947D17E3 +:1054400080E00E94731709E712E2F80184910E943C +:1054500073170F5F1F4FF2E208391F07B1F70E9461 +:105460006B1711E01093B8000E94871781E28093B8 +:10547000050860E08EE00E946F1660E08FE00E94F9 +:105480006F1661E085E00E946F1661E089E00E947E +:105490006F1662E087E00E946F1662E088E00E946B +:1054A0006F1662E086E00E946F1662E08AE00E945A +:1054B0006F166FEF70E089E00E94AB1660E085E048 +:1054C0000E94411680917A00876080937A008091D3 +:1054D0007A00886080937A00789410936B00109320 +:1054E00068001BBB90E080E00E942524182F81E01B +:1054F00090E00E942524912F8F31984009F0C9C077 +:1055000082E090E00E942524182F83E090E00E9422 +:105510002524912F909347018093460184E090E0E9 +:105520000E942524182F85E090E00E942524912FC9 +:10553000909345018093440186E090E00E942524E9 +:105540008093430187E090E00E94252480934B01E3 +:1055500088E090E00E94252480934A0189E090E051 +:105560000E942524809349018AE090E00E9425242E +:1055700080937F018BE090E00E94252491E08111CF +:1055800001C090E0909348018CE090E00E942524B7 +:1055900091E0811101C090E090934D018DE090E089 +:1055A0000E94252480930A038EE090E00E94252427 +:1055B000282E809342018FE090E00E942524809362 +:1055C0004E0180E190E00E94252491E0811101C00C +:1055D00090E09093E90281E190E00E94252480937D +:1055E000070382E190E00E942524182F83E190E0D8 +:1055F0000E942524912F9093EB028093EA0252E0BF +:10560000852E51E0952E6FE4A62E61E0B62E74E152 +:10561000E72EF12C312C231409F447C010E000E0F0 +:10562000C701800F911F0E942524F501E00FF11F93 +:1056300080830F5F1F4F0630110591F7670136E039 +:10564000C30ED11C4EE0E40EF11C3401C6010E94D1 +:105650002524082F10E0102F0027D3010D931C9351 +:105660002601B2E04B0E511CC60101960E94252472 +:10567000082BF301019311933F0162014E145F0463 +:1056800029F73394F8E08F0E911C26E0A20EB11C8E +:10569000C2CF68E090E080E00E940C226FE181E0E0 +:1056A00090E00E940C220E9420221091E90280ECDE +:1056B000111101C088EC0E94A41780EA111101C0E9 +:1056C00081EA0E94A4171092030380E280930403EE +:1056D00080E48093050380E6809306038091EA02CC +:1056E0009091EB02892B19F10E94571467E088E230 +:1056F00090E00E940F1A87E00E945B250E948717A6 +:1057000068EE73E080E090E00E942D170E949E1AE0 +:105710000E949E1A0E949E1A90E080E00E946826D5 +:105720002091EA023091EB0282179307E9F60E947A +:105730003F199093E4028093E3020E94E71990934B +:1057400009038093080300914601109147011093CB +:10575000FD020093FC028EE00E94B919BC0190E0AA +:1057600080E00E9467356093E5027093E6028093C3 +:10577000E7029093E8020E947B190E94D81D20E066 +:1057800030E040EA51E46091FE027091FF028091A6 +:105790000003909101030E9400376B017C01B80166 +:1057A00090E080E00E9467359B01AC01C701B60123 +:1057B0000E94623587FF05C070E060E089E00E94CA +:1057C000AB161092F3071092F4071092F50710929F +:1057D000F607412C512C3FE7632E33E4732E4092A1 +:1057E000F7075092F8076092F9077092FA07A090B5 +:1057F000DF07B090E0078091FB07D501CD90DD90E9 +:10580000ED90FC90882311F40C948A34A30192014A +:10581000C701B6010E941438181634F5F50140820C +:105820005182628273828090E7079090E807A0908F +:10583000E907B090EA07C090F707D090F807E0902A +:10584000F907F090FA07A7019601C501B4010E947B +:1058500014381816CCF4C092E707D092E807E0920B +:10586000E907F092EA0720C020E030E0A901C70173 +:10587000B6010E94623587FFD6CFD5011D921D92D9 +:105880001D921C921397CFCFC090F307D090F407CE +:10589000E090F507F090F607A7019601C501B40165 +:1058A0000E94623587FDD7CF81E08093FB0783B1EB +:1058B00081708093E20289B190E0880F892F881F60 +:1058C000990B8093E1022091E2029091E10281E044 +:1058D000291380E08093E0028CE291E0909317031B +:1058E0008093160380E293E0909315038093140352 +:1058F0008AE090E09093130380931203000F111F2E +:1059000010931103009310030E945F176093F80235 +:105910007093F9028093FA029093FB020E949E1A00 +:105920000E949E1A2090100330901103F101F5950A +:10593000E795FA87E987F093FD02E093FC0286E0A1 +:105940000E941816482E8111A0C08091F60288236B +:1059500009F49BC00E949E1A0E945F176B017C0194 +:10596000C092F202D092F302E092F402F092F502B9 +:1059700086E00E941816892B59F40E945F176C1953 +:105980007D098E099F09643F71408105910580F36F +:105990000E945F176C197D098E099F09643F714051 +:1059A0008105910508F46DC46FEF70E089E00E94F5 +:1059B000AB160E949E1A512CAAE06A2E712C1092EE +:1059C000ED02852D0E94B826582E39E0381708F4CC +:1059D00039C0E82FF0E0E151F34D0C94223A0B2D41 +:1059E000B82F32309E30AC30DD30EB300C31173117 +:1059F000213120E030E0A901C701B6010E946235E3 +:105A000087FF52CF1092E7071092E8071092E9073C +:105A10001092EA0749CFF6E0FF2E81E08093ED0275 +:105A2000852D0E94B826582E42E0841709F439C209 +:105A3000481708F4E9C0882309F413C151E0851719 +:105A400009F412C10E94202281E080930203E985BB +:105A5000FA85F093FD02E093FC028CE291E09093D2 +:105A600017038093160380E293E0909315038093CD +:105A700014038AE090E09093130380931203C10112 +:105A80008E7F90931103809310034092F6028091D1 +:105A90000B03882309F1109149011123E9F00E94B9 +:105AA0005F17C090EE02D090EF02E090F002F0900D +:105AB000F1026C197D098E099F0928EE33E040E060 +:105AC00050E00E94CE36211738F010920B030E944E +:105AD0009E1A81E080934C01809102038823F1F1AA +:105AE00080910C03882351F120E030E040EA51E43A +:105AF0006091FE027091FF0280910003909101037A +:105B00000E9400376B017C016091FC027091FD02E4 +:105B100090E080E00E9467359B01AC01C701B601AF +:105B20000E94623587FF05C070E060E089E00E9456 +:105B3000AB160E949E1A81E080934C0110920203E2 +:105B400010920C0310920D030E945F176093F802ED +:105B50007093F9028093FA029093FB020E945F1700 +:105B60000091F8021091F9022091FA023091FB02A3 +:105B7000601B710B820B930B20E63AEE40E050E085 +:105B80000E94CE36122F2093F70280910C038111D0 +:105B90000BC080914B01882339F0281728F081E051 +:105BA00080930C030E949E1A80910D0381110BC0FB +:105BB00080914A01882339F0181728F081E08093FA +:105BC0000D030E949E1A0E94E1220E94AB1B0E94BC +:105BD0005F1780910608F62FF81B8F2F909107080A +:105BE000992309F464C3F09308081092070880E031 +:105BF00090E0892B09F496CE0E944C15882309F475 +:105C000091CE0E9400008ECE63E0861709F44CC14D +:105C100084E0581217CF80914201883008F0FDCE01 +:105C200091E0980F9093420180930A030E94BC1A5E +:105C3000E0910A03B8E0EB9FF0011124EE5FFE4F04 +:105C400028ED30E03183208344E351E053834283E5 +:105C500086E891E095838483AEE1B0E0B783A683C4 +:105C6000DCCE0E942F21D9CE8E010F5F1F4F612CF9 +:105C7000712C4301639478EEC72E73E0D72EAA24CB +:105C8000A394B12CEE24E394E0910A0394E0E99FFD +:105C9000F0011124C3010197E80FF91FEE0FFF1F58 +:105CA000EE5FFE4F808191819093FD028093FC0214 +:105CB000A8ECB0E0B0931703A0931603D09215039D +:105CC000C0921403B0921303A0921203880F991F7D +:105CD0009093110380931003E0924C0186E00E94A0 +:105CE000181621E0892B09F020E02093EC020E9495 +:105CF0005714B2E0B0930F080E94E1220E94AB1B40 +:105D000010920A081092090810920C0810920B08C1 +:105D10008EEB92E20E941B19C401B3010E94D41EB3 +:105D20008FEB92E00E94831E8091800110920A08FE +:105D300010920908882309F48CC0E0E1F0E0F093A8 +:105D40000C08E0930B0881EB92E20E941B19109261 +:105D50000A081092090820E230E030930C082093E2 +:105D60000B088AEA92E20E941B196091100370915D +:105D7000110375956795072E000C880B990B0E94EF +:105D8000D41E0E94FD190E94871786E00E941816F3 +:105D9000892B09F0ACCF8091EC028111A8CF8091C2 +:105DA00010039091110395958795D8018D939D933C +:105DB0008D010E949E1A6AE070E080E090E00E94EF +:105DC0002D17BFEF6B1A7B0A8B0A9B0AE4E06E1655 +:105DD00071048104910409F057CF6FEF70E089E0FE +:105DE0000E94AB168BEA94E00197F1F70E947B19B1 +:105DF0000E94E5373B0178876F83A980BA800B81C9 +:105E00001C81C5014E968017910708F006CECD8003 +:105E1000DE80C8014E968C159D0508F0FECD87E00A +:105E20008093ED0280E00E94B826882309F4F5CD26 +:105E3000E0910A0328E0E29FF0011124EE5FFE4F9B +:105E4000B182A08213830283D582C4827782668264 +:105E5000E4CD40E150E050930C0840930B0884EAF5 +:105E600092E20E941B196091E5027091E602809116 +:105E7000E7029091E8020E94E53790E080E04AE076 +:105E80000E94901E10920A081092090880E290E089 +:105E900090930C0880930B0888E992E20E941B19EA +:105EA00070CF0E94BC1AB9CD87E08093ED0280913B +:105EB0004201813009F4B1CD80E00E94B8268823E8 +:105EC00009F4ABCD80910A0390914201492F4150D2 +:105ED000550B9A018417150639F4815080930A03F3 +:105EE00091509093420199CDE82FF0E0E217F3072B +:105EF000BCF78F9D8001112450E040E06F016FEFEF +:105F0000C61AD60AB801640F751F615B7E4FDB01AC +:105F10001696EC901697EC924F5F5F4F4630510506 +:105F200089F7D60113E0AA0FBB1F1A95E1F7AE5F00 +:105F3000BE4F4D915C91119703E0EE0FFF1F0A9544 +:105F4000E1F7EE5FFE4F5183408312964D915C91D5 +:105F500013975383428314964D915C911597558303 +:105F6000448316964D915C91578346838F5FBCCFD7 +:105F700082E08093ED0210E0E8E2CE2ED12CFCE22C +:105F8000AF2EBB24B394A0E28A2EA3E09A2EB4E1F4 +:105F9000EB2EF12C812F0E94B826182F813029F189 +:105FA00030F0823009F441C00E94202208CD809157 +:105FB000460190914701B0921703A0921603909268 +:105FC0001503809214037092130360921203880FDA +:105FD000991F909311038093100381E10E943B2647 +:105FE0009093470180934601D5CF809144019091D1 +:105FF0004501D0921703C0921603E0E9F1E0F09357 +:106000001503E09314037092130360921203880F38 +:10601000991F909311038093100382E10E943B2605 +:106020009093450180934401B5CF8091430190E066 +:10603000F0921703E092160328EC30E0309315033A +:10604000209314037092130360921203880F991F18 +:10605000909311038093100383E10E943B26809369 +:10606000430198CF83E08093ED02F12C01E010E032 +:106070008F2D0E94B826F82E31E0831709F43FC017 +:10608000831700F142E084138FCF8091490190E0A3 +:10609000109217031092160348E651E0509315032F +:1060A000409314037092130360921203880F991F98 +:1060B000909311038093100387E10E943B26809305 +:1060C0004901D6CF80914B0190E0109217031092B6 +:1060D0001603ACE3B0E0B0931503A0931403109340 +:1060E000130300931203880F991F90931103809359 +:1060F000100385E10E943B2680934B01B9CF80912C +:106100004A0190E01092170310921603E8E7F0E0BE +:10611000F0931503E093140325E030E0309313036C +:1061200020931203880F991F9093110380931003FB +:1061300086E10E943B2680934A019ACF84E08093B7 +:10614000ED02809148010E94B82691E0811101C0C2 +:1061500090E09093480133CC10E0A9E0EA2EB5E03E +:10616000DB2EE092ED02812F0E94B826182F8823A3 +:1061700021F08130E1F000E009C0D092ED02809181 +:106180007F010E94B82680937F0101E0F090E90230 +:1061900080ECF11001C088EC0E94A41780EAF11095 +:1061A00001C081EA0E94A4170111DBCFFDCE8091CE +:1061B000E90281278093E902E8CF86E08093ED022F +:1061C00080914D010E94B82691E0811101C090E0BC +:1061D00090934D01F4CB8091070390E01092170348 +:1061E00010921603A4EFB1E0B0931503A09314032B +:1061F00021E030E03093130320931203880F991F9E +:10620000909311038093100386E00E943B268093B5 +:1062100007030E949E1AD3CB8091EA029091EB0271 +:106220000E9468269093EB028093EA02F2CF88E006 +:106230008093ED0280914E010E94B82680934E011A +:10624000BECB0E945714EE24E39400E320E345EC18 +:1062500052E270E060E088E290E00E94AE130E949B +:10626000871764E670E080E090E00E942D1786E0DA +:106270000E941816892BD9F78091EC028111F7CF73 +:10628000C8CF80910B0391E0892780930B0388236B +:1062900051F00E945F176093EE027093EF028093BB +:1062A000F0029093F10281E080930203EECB909193 +:1062B0000508F91748F48F5F891708F098CC81E03A +:1062C00083BF889513BE93CC81E0809307086093C9 +:1062D00006088091010890910208019690930208A7 +:1062E00080930108A0900E03B0900F0325EFA21633 +:1062F00021E0B20608F023C180910D03882309F440 +:10630000FCC06FEF70E089E00E94AB160E9457144A +:1063100003E013E072E0872E912CA12CB12CE3E076 +:106320004E2E512C612C712C0E940335A501940135 +:106330000E949C36AB01BC014150510961097109B1 +:10634000D8018C91682F640F613808F04BC06C93B2 +:10635000312C0E940335C32CD12CF12CE12CA3014C +:1063600092010E949C366D5F7F4F8F4F9F4FA70118 +:1063700096012617370748075907C4F5D801EC904E +:10638000F12C0E94033524E130E040E050E00E940F +:106390009C366A507109810991096E0D7F1D603428 +:1063A000710530F421E040E890E080E00E94B117F0 +:1063B000F801E080F12C0E94033524E130E040E058 +:1063C00050E00E949C36DC01CB010A97A109B1097B +:1063D0008E0D9F1D21E040E470E060E00E94631399 +:1063E0003394B7CF6058F8016083B2CF0F5F1F4F6F +:1063F000F3E007301F0709F097CF0E945F170E9454 +:10640000673520E030E04AE755E40E946C370E948F +:1064100069386B017C0120E030E040E853E40E94E1 +:10642000C83520E030E040E853E40E9400372B01FB +:106430003C0110E000E0B801012E000C880B990B24 +:106440000E946935A30192010E94623587FF25C031 +:106450000E9403354B015C010E94033569877A87EE +:106460008B879C87C501B40120E430E040E050E018 +:106470000E949C364B0169857A858B859C8520E836 +:1064800030E040E050E00E949C36CB0141E0B40196 +:106490000E9445130F5F1F4FCECF80914D0188237F +:1064A00049F10E94033520E130E040E050E00E94D5 +:1064B0009C3668507109810991090E9469354B0128 +:1064C0005C0120E030E040E852E4C701B6010E94E0 +:1064D000C83520E030E040E852E40E9400379B01DC +:1064E000AC01C501B4010E9400370E94DE3785E08F +:1064F0000E94AB160E9487177ACB80910C0312E0A2 +:1065000081111EC080910B0313E0811119C080918D +:10651000800114E0811114C020E030E044E353E432 +:106520006091B9077091BA078091BB079091BC0741 +:106530000E94623515E087FD03C016E001C010E03F +:1065400080917F01882309F481C10E94571401E0E2 +:1065500020E440E870E060E090E080E00E948C136E +:1065600081E080930F0880930E0810920D08E12CB3 +:1065700000E120E143E554E270E060E090E080E07B +:106580000E94AE1383E190E090930A08809309087B +:1065900084E090E090930C0880930B0880910A03AC +:1065A00026E0829FC0011124815B9E4F0E94831EC2 +:1065B00085E390E090930A088093090881E090E0D9 +:1065C00090930C0880930B0882E080930F08C12EF3 +:1065D000D12C80914E01CC0CDD1C8111EAC0F6015A +:1065E000E957FD4F408151810EE02CE161E070E000 +:1065F00080E590E00E94AE13F601E758FD4F408120 +:106600005181E12C0EE02EE061E070E081E790E046 +:106610000E94AE1381E080930F080E947B1920E056 +:1066200030E040EA52E40E94143818160CF4E0C03E +:10663000E12C0EE02EE041E154E262E170E082E004 +:1066400090E00E94AE13609108037091090390E0FE +:1066500080E00E94673520E030E048EC52E40E9480 +:106660006C376B017C016091070370E090E080E083 +:106670000E9469359B01AC01C701B6010E946235D9 +:1066800087FDCAC0E12C0EE02EE045EF53E262E246 +:1066900070E082E090E00E94AE1303E110E01093FE +:1066A0000A080093090840E150E050930C08409319 +:1066B0000B080E947B1941E00E94FE1E88EF0E9499 +:1066C000361983EF93E20E941B1910930A08009376 +:1066D000090888E190E090930C0880930B080E94D1 +:1066E0003F19BC0190E080E00E94673520E030E077 +:1066F0004AE754E40E946C3742E00E94FE1E81EF9C +:1067000093E20E941B1910930A080093090880E283 +:1067100090E090930C0880930B08609108037091AF +:10672000090390E080E00E94673520E030E04AE70E +:1067300054E40E946C3741E00E94FE1E8FEE93E20B +:106740000E941B1910930A080093090888E290E040 +:1067500090930C0880930B0889EE93E20E941B191A +:1067600089E390E090930A088093090882E190E021 +:1067700090930C0880930B0884E080930F0860913D +:106780000E0370910F03653F91E0790708F458C03C +:1067900085EE93E20E941B1900E020E248E460E1EC +:1067A00070E087E390E00E94E81780E00E94D61F27 +:1067B000A1CE83E494E21330C1F058F48FE494E264 +:1067C000113099F089E494E2123079F08DE294E28C +:1067D0000CC088E394E2153041F08DE394E215306B +:1067E00020F083E394E2163089F70E941B1904CF4E +:1067F0000E945F1752E0660F771F881F991F5A95F6 +:10680000D1F728EE33E040E050E00E94CE3620FF82 +:106810000FCF0E949E1A17CF0E945F1742E0660FAB +:10682000771F881F991F4A95D1F728EE33E040E083 +:1068300050E00E94CE3620FF25CF0E949E1A2DCF19 +:1068400090E080E04AE00E94901EA6CF0E9457147C +:106850000E947B1920E030E040EA52E40E941438A4 +:10686000181694F40E945F1732E0660F771F881F96 +:10687000991F3A95D1F728EE33E040E050E00E94AE +:10688000CE3620FD0E949E1A609108037091090384 +:1068900090E080E00E94673520E030E048EC52E470 +:1068A0000E946C376B017C016091070370E090E0FF +:1068B00080E00E9469359B01AC01C701B6010E94CE +:1068C000623587FF12C00E945F1722E0660F771FB4 +:1068D000881F991F2A95D1F728EE33E040E050E059 +:1068E0000E94CE3620FD0E949E1A87EE93E0A5EF0F +:1068F000AA16A1E0BA0608F4C5010E94272400E008 +:1069000023E040E860E370E090E080E00E948C13B8 +:1069100081E04CCFC092E707D092E807E092E90708 +:10692000F092EA07E091DD07F091DE078081918126 +:10693000A281B3818093EB079093EC07A093ED07BE +:10694000B093EE0720E030E04FE753E4C701B60113 +:106950000E94143818160CF04CC84092E707509269 +:10696000E8076092E9077092EA070C94542C8F9222 +:106970009F92AF92BF92CF92DF92EF92FF92CF930E +:10698000DF93EC01688179818A819B8161157105B2 +:106990008105910521F464E279ED8BE597E02DE125 +:1069A00033EF41E050E00E949C3649015A019B01BF +:1069B000AC01A7EAB1E40E94BB366B017C01ACEEEE +:1069C000B4EFA50194010E94C936C60ED71EE81E79 +:1069D000F91EF7FE06C081E0C81AD108E10880E878 +:1069E000F80AC882D982EA82FB82C701B6019F7782 +:1069F000DF91CF91FF90EF90DF90CF90BF90AF905D +:106A00009F908F9008958F929F92AF92BF92CF9256 +:106A1000DF92EF92FF9260918101709182018091EB +:106A2000830190918401611571058105910521F41F +:106A300064E279ED8BE597E02DE133EF41E050E042 +:106A40000E949C3649015A019B01AC01A7EAB1E4BE +:106A50000E94BB366B017C01ACEEB4EFA501940142 +:106A60000E94C936C60ED71EE81EF91EF7FE06C0E4 +:106A700081E0C81AD108E10880E8F80AC0928101D3 +:106A8000D0928201E0928301F0928401C701B601A5 +:106A90009F77FF90EF90DF90CF90BF90AF909F9047 +:106AA0008F90089560938101709382018093830198 +:106AB000909384010895FB01DC0105900D92002064 +:106AC000E1F708950E94A43508F481E00895E89460 +:106AD00009C097FB3EF490958095709561957F4F26 +:106AE0008F4F9F4F9923A9F0F92F96E9BB279395D4 +:106AF000F695879577956795B795F111F8CFFAF4E4 +:106B0000BB0F11F460FF1BC06F5F7F4F8F4F9F4F14 +:106B100016C0882311F096E911C0772321F09EE872 +:106B2000872F762F05C0662371F096E8862F70E0D8 +:106B300060E02AF09A95660F771F881FDAF7880FB2 +:106B40009695879597F90895990F0008550FAA0B08 +:106B5000E0E8FEEF16161706E807F907C0F0121670 +:106B60001306E407F50798F0621B730B840B950B73 +:106B700039F40A2661F0232B242B252B21F40895C8 +:106B80000A2609F4A140A6958FEF811D811D089565 +:106B90000E94DB350C944C360E943E3638F00E9441 +:106BA000453620F0952311F00C9435360C943B3685 +:106BB00011240C9480360E945D3670F3959FC1F3CA +:106BC000950F50E0551F629FF001729FBB27F00D9B +:106BD000B11D639FAA27F00DB11DAA1F649F6627F0 +:106BE000B00DA11D661F829F2227B00DA11D621F3F +:106BF000739FB00DA11D621F839FA00D611D221FF9 +:106C0000749F3327A00D611D231F849F600D211DDC +:106C1000822F762F6A2F11249F5750409AF0F1F05F +:106C200088234AF0EE0FFF1FBB1F661F771F881FC8 +:106C300091505040A9F79E3F510580F00C94353695 +:106C40000C9480365F3FE4F3983ED4F386957795B5 +:106C50006795B795F795E7959F5FC1F7FE2B880F6E +:106C6000911D9695879597F9089597F99F6780E804 +:106C700070E060E008959FEF80EC089500240A948E +:106C80001616170618060906089500240A94121607 +:106C90001306140605060895092E0394000C11F43A +:106CA000882352F0BB0F40F4BF2B11F460FF04C0E7 +:106CB0006F5F7F4F8F4F9F4F089557FD9058440F40 +:106CC000551F59F05F3F71F04795880F97FB991F4B +:106CD00061F09F3F79F08795089512161306140608 +:106CE000551FF2CF4695F1DF08C016161706180695 +:106CF000991FF1CF86957105610508940895E89470 +:106D0000BB2766277727CB0197F90895F999FECF1E +:106D100092BD81BDF89A992780B50895262FF999DB +:106D2000FECF1FBA92BD81BD20BD0FB6F894FA9A6E +:106D3000F99A0FBE01960895052E97FB1EF4009454 +:106D40000E94B33657FD07D00E94CE3607FC03D011 +:106D50004EF40C94B33650954095309521953F4FA5 +:106D60004F4F5F4F089590958095709561957F4F37 +:106D70008F4F9F4F08950E94F036A59F900DB49FAE +:106D8000900DA49F800D911D11240895B7FF0C94C0 +:106D9000BB360E94BB36821B930B0895A1E21A2ECC +:106DA000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FAF +:106DB000A217B307E407F50720F0A21BB30BE40BFF +:106DC000F50B661F771F881F991F1A9469F7609546 +:106DD0007095809590959B01AC01BD01CF01089500 +:106DE000A29FB001B39FC001A39F700D811D11240C +:106DF000911DB29F700D811D1124911D0895505851 +:106E0000BB27AA270E9417370C944C360E943E36A7 +:106E100038F00E94453620F039F49F3F19F426F4EB +:106E20000C943B360EF4E095E7FB0C943536E92FD5 +:106E30000E945D3658F3BA176207730784079507F7 +:106E400020F079F4A6F50C947F360EF4E0950B2E25 +:106E5000BA2FA02D0B01B90190010C01CA01A001AC +:106E60001124FF27591B99F0593F50F4503E68F107 +:106E70001A16F040A22F232F342F4427585FF3CF48 +:106E8000469537952795A795F0405395C9F77EF419 +:106E90001F16BA0B620B730B840BBAF09150A1F062 +:106EA000FF0FBB1F661F771F881FC2F70EC0BA0FE8 +:106EB000621F731F841F48F4879577956795B79570 +:106EC000F7959E3F08F0B0CF9395880F08F099276B +:106ED000EE0F9795879508950E9480370C944C3655 +:106EE0000E94453658F00E943E3640F029F45F3F3C +:106EF00029F00C94353651110C9480360C943B36A5 +:106F00000E945D3668F39923B1F3552391F3951BE5 +:106F1000550BBB27AA2762177307840738F09F5FBA +:106F20005F4F220F331F441FAA1FA9F335D00E2E27 +:106F30003AF0E0E832D091505040E695001CCAF794 +:106F40002BD0FE2F29D0660F771F881FBB1F261757 +:106F500037074807AB07B0E809F0BB0B802DBF012E +:106F6000FF2793585F4F3AF09E3F510578F00C94FD +:106F700035360C9480365F3FE4F3983ED4F3869523 +:106F800077956795B795F7959F5FC9F7880F911D1E +:106F90009695879597F90895E1E0660F771F881F0A +:106FA000BB1F621773078407BA0720F0621B730BBD +:106FB000840BBA0BEE1F88F7E09508950E94E53721 +:106FC0006894B1110C94803608950E94653688F05B +:106FD0009F5798F0B92F9927B751B0F0E1F0660F9D +:106FE000771F881F991F1AF0BA95C9F714C0B130DE +:106FF00091F00E947F36B1E008950C947F36672FA0 +:10700000782F8827B85F39F0B93FCCF3869577950C +:107010006795B395D9F73EF49095809570956195F5 +:107020007F4F8F4F9F4F08950E94A43508F48FEF34 +:107030000895FA01EE0FFF1F309621053105A1F1E9 +:107040006115710561F48038BFE39B0749F16894CD +:107050009038810561F08038BFEF9B0741F099239C +:107060004AF5FF3FE1053105210519F1E89408943F +:10707000E795D901AA2329F4AB2FBE2FF85FD0F3EF +:1070800010C0FF5F70F4A695E0F7F73950F019F0E3 +:10709000FF3A38F49F779F930DD00F9007FC9058DC +:1070A000089546F00C943B3660E070E080E89FE382 +:1070B00008954FE79F775F934F933F932F930E94DD +:1070C00060392F913F914F915F910E94C8350C9488 +:1070D0007E389F930E94D9380F9007FCEE5F0C9486 +:1070E00002390E94A435880B990B089529F416F0F3 +:1070F0000C9435360C947F360C943B360E946536E2 +:10710000A8F39638A0F707F80F92E8942BE33AEA31 +:1071100048EB5FE70E94DE350F920F920F924DB75A +:107120005EB70F920E94A839E8E6F0E00E94B038FE +:107130004F915F91EF91FF91E595EE1FFF1F49F091 +:10714000FE57E0684427EE0F441FFA95E1F741959A +:10715000550B0E9422390F9007FE0C9416390895A2 +:10716000DF93CF931F930F93FF92EF92DF927B01F8 +:107170008C01689406C0DA2EEF010E94DB35FE0117 +:10718000E894A5912591359145915591A6F3EF018C +:107190000E941737FE019701A801DA9469F7DF9082 +:1071A000EF90FF900F911F91CF91DF9108950C9474 +:1071B0003B360E946536D8F3E894E0E0BB279F5742 +:1071C000F0F02AED3FE049EC06C0EE0FBB0F661F62 +:1071D000771F881F28F0B23A62077307840728F0E8 +:1071E000B25A620B730B840BE3959A9572F7803851 +:1071F00030F49A95BB0F661F771F881FD2F790480F +:107200000C94DE39EF93E0FF07C0A2EA2AED3FE0DD +:1072100049EC5FEB0E9417370E944C360F900394A5 +:1072200001FC9058E0E9F0E00C94EA399B01AC01D4 +:1072300060E070E080E89FE30C946C370C94353686 +:107240000C94DC390E946536D8F39923C9F3940F66 +:10725000511DA3F39150504094F059F0882332F01F +:10726000660F771F881F91505040C1F79E3F510510 +:107270002CF7880F911D9695879597F908955F3F94 +:10728000ACF0983E9CF0BB27869577956795B795AF +:1072900008F4B1609395C1F7BB0F58F711F460FF84 +:1072A000E8CF6F5F7F4F8F4F9F4FE3CF0C948036B7 +:1072B00016F00C94DC390C943B3668940C943536FB +:1072C0000E946536A8F39923C1F3AEF3DF93CF9301 +:1072D0001F930F93FF92C92FDD2788232AF0219750 +:1072E000660F771F881FDAF720E030E040E85FEB99 +:1072F0009FE3883920F0803E38F021968F770E94F6 +:107300000037EEEAF0E004C00E940037EBEDF0E059 +:107310000E94B0388B01BE01EC01FB2E6F57710942 +:107320007595771F880B990B0E94693528E132E724 +:1073300041E35FE30E94DB35AF2D9801AE01FF9082 +:107340000F911F91CF91DF910E9417370C944C360B +:10735000FA01DC01AA0FBB1F9B01AC01BF5728F447 +:10736000222733274427507820C0B75190F4AB2F01 +:107370000024469537952795011CA395D2F300204C +:1073800071F0220F331F441FB395DAF30ED00C9423 +:10739000FF3661307105A0E88A07B94630F49B01D9 +:1073A000AC016627772788279078309621F02083D4 +:1073B00031834283538308959F3F31F0915020F4ED +:1073C000879577956795B795880F911D96958795C1 +:1073D00097F908959F938F937F936F93FF93EF9304 +:1073E0009B01AC010E94C835EF91FF910E94B0381B +:1073F0002F913F914F915F910C94C835DB018F9392 +:107400009F930E94BB36BF91AF91A29F800D911DAB +:10741000A39F900DB29F900D1124089597FB072E06 +:1074200016F4009407D077FD09D00E94283A07FC93 +:1074300005D03EF4909581959F4F08957095619584 +:107440007F4F0895EE0FFF1F0590F491E02D0994F2 +:10745000AA1BBB1B51E107C0AA1FBB1FA617B7077A +:1074600010F0A61BB70B881F991F5A95A9F7809596 +:107470009095BC01CD01089581E090E0F8940C94C2 +:06748000413AF894FFCF31 +:1074860001FFD800340186011E0000000000000044 +:1074960000000000000000000000000000000000E6 +:1074A60000000000000000000000000000000000D6 +:1074B60000000000000000000000000000000000C6 +:1074C6000000013C9600400101280F050101014220 +:1074D60043312E35000000000000000000000000CF +:1074E6000000000000000000000000000000000096 +:1074F6000000000000000000000000000000000185 +:1075060001010000000B0604040202020203031834 +:1075160004FC03E003C403A8038C0370035403387C +:10752600031C030003E402C8021804AC02900274B0 +:1075360002180458023C027402580220023C0274EB +:10754600020402E801CC01B00194018C0378010029 +:10755600035C0140012401A80308017402ED04E85C +:1075660004E304DC04D604D204C904C604C304BE7E +:1075760004BA04B104A7049F049C049904960490D9 +:10758600048D048804850482047D04780475046FE0 +:10759600046B04670462045D045904540450044CEB +:1075A60004490445043C0437043404CF0F7F0F2FED +:1075B6000FDF0E8F0E3F0EEF0D9F0D4F0DFF0CAF21 +:1075C6000CCF0F5F0C0F0CBF0B6F0B1F0BCF0A7F7F +:1075D6000A2F0A1F0B7F0ADF092F0A1F0B8F093F8D +:1075E60009EF089F084F08FF07AF075F070F07BFA0 +:1075F600066F061F06CF051F0BAF1093107310F50D +:107606002357103B101F101B12E311AB1173113BD4 +:10761600110311CB10000000008215E2140F15CFE4 +:107626001540151E153215000000001918E2143C0D +:10763600193B196E616E00696E66006F7666002FE3 +:0276460033000F +:00000001FF diff --git a/software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..4c59f17 --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.7/1.7.ino.with_bootloader.standard.hex @@ -0,0 +1,1928 @@ +:020000040000FA +:100000000C943F120C9467120C9467120C943F28C6 +:100010000C9467120C9467120C9467120C9467127C +:100020000C9467120C9467120C9467120C9467126C +:100030000C9467120C9467120C9467120C9467125C +:100040000C94F5270C9467120C94C3270C949D27ED +:100050000C9467120C9416290C9467120C94671276 +:100060000C9467120C94671207634236B79BD8A7AB +:100070001A39685618AEBAAB558C1D3CB7CC5763CD +:10008000BD6DEDFD753EF6177231BF000000803F7B +:1000900005A84CCDB2D44EB93836A9020C50B9914E +:1000A0008688083CA6AAAA2ABE000000803F080055 +:1000B0000000BE922449123EABAAAA2ABECDCCCCE7 +:1000C0004C3E00000080BEABAAAAAA3E0000000081 +:1000D000BF000000803F0000000000084178D3BB53 +:1000E0004387D1133D190E3CC3BD4282AD2B3E6800 +:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1 +:10010000FF7F3F0000000000800400003FF0383017 +:1001100033103F90381033902790261030903FF0E6 +:1001200000008004800400003FF03DF020103BF010 +:100130003B7030302B502AD031B03FF000008004AB +:10014000800400003FF038703030231027902010DA +:100150002010279027903FF00000800480040000CA +:100160003FF03CF03CF020102490249020103CF014 +:100170003CF03FF000008004800400003FF037B006 +:1001800023103030387038703030231037B03FF0E3 +:1001900000008004FCF4F860E044C08CC11CC22C58 +:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9 +:1001B0008000BFF81FF8B0281FF8B4081FF8B10876 +:1001C0001FF8B048BFF8B288BFF880008000BFF8C1 +:1001D0001FF8B0081808B9E819B8B8381838B9B80D +:1001E000B9F8B0F8BFF8800015543FF815503FF04B +:1001F0001550387010203104138C22A817FC2AA83F +:100200000000000015543FFC15543FFC15543C04FD +:1002100014043CFC14543CFC005400A800000000F2 +:10022000800400003FF03CF034B0249024902790EC +:100230002310303038703FF000008004FF7CFE7CDB +:10024000FCECE8DCC84C984C882408200000000036 +:10025000000000008004E01CF3FCE7FCCE0C8E1CC8 +:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8 +:10027000E01CF87C000458085808580840087FF82B +:1002800060185FE85B685FE85B681CE85FE8000097 +:10029000800400003FF03CF03CF03CF020102010C7 +:1002A0003CF03CF03CF03FF000008004F87CF7BCF0 +:1002B00000007FF80000BFF4AB54AB54AB54AB5418 +:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431 +:1002D00073007F007E007C007C007C60BC64BE04F8 +:1002E000CF0CF03C81DC559C29045500299055D059 +:1002F00003FCFF002E00267002508270E600EE0420 +:10030000800C001C3FF43FE03FC4378C2318303092 +:1003100038703CF03FF03FF000008004058074B876 +:1003200057A876B80580F97C4694AAA8F97C068877 +:1003300074A8578C75740698F03CCE4CBC34B81435 +:10034000188010804230607860F844C08004B8841F +:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432 +:1003600000000300030003000780078003008004EF +:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A +:10038000CFCCCFCCC84CCFCCC00CE01CFCFCF87C54 +:10039000E01CC00CC00CC00CC00CC00CC00C800415 +:1003A0008004FFFCF87CFCFC8004000020001000AE +:1003B00008001000270000000000000000000000FE +:1003C00000008004C3FC18001800C3FCFFFCFF0CF5 +:1003D00000600060FF0CFFFCF0FC06000600F0FC73 +:1003E0008FC4102020104CC89FE43DF03DF01DE06C +:1003F0003EF03F709FE48CC400003030F87CF33C4A +:10040000F4BCF6BCF4BCF6BCF4BCE49CC84CD02CE8 +:10041000D02CC84CE79CF03C882408203830383079 +:10042000383038303830383039303BB03FF03FF07A +:1004300000008004F21415F0CADFB8CCF0D699E8B9 +:10044000AEA4DFEEE8F21D1E08F21C08F21A1B082B +:10045000F0714601F046464A01F219F051F218F0E7 +:100460005A8DF0C0DAEEAEF0C8B8A5F1302924F00C +:10047000B599E1A4BDF21415F0CBEEAEBDF218F0C3 +:100480005A8DF21617F21415F0CBEEAEBDF2161718 +:10049000F0BCCA9EE0BDF21415F21213F21011F274 +:1004A0000C0DF094F20E0FF0A2D8DFCBE1EEACDC35 +:1004B000E8F20AF08CF20BF04A8DF209F08DF09719 +:1004C000C59BBDF20708F21F20F2040506F097DE77 +:1004D000EED5F0CBABEEF0AEA4DFEEE8F0A8E8BDD1 +:1004E000E2EEE0F0B499D3EEF200010203F0CCDFCB +:1004F000B0B8BD5361766500466C6970004D6169A6 +:100500006E2053637265656E004A5000454E00438D +:100510004E00594553004E4F004F4E004F46460087 +:10052000496E666F73004269670050494400446930 +:1005300072656374005361766500426F6F73740077 +:100540004F666600536C65657000536176650042C6 +:100550006F6F737400536C656570004465666175F8 +:100560006C740053617665004164640044656C6599 +:1005700074650052656E616D650043616C696272FD +:10058000617465004368616E6765005265747572D9 +:100590006E0041626F7574004C616E67004C6F6352 +:1005A0006B004C4F5720566F6C0042757A7A65721B +:1005B0000053637265656E00436F6E74726F6C00FA +:1005C00054696D65720054656D7000546970000067 +:1005D000000000000F1DC20800054442080003840B +:1005E0005FBF000FE44410000115451000054CC921 +:1005F0007F8009244F900007C4C11000054D413F82 +:1006000000055443810007C44D0200054441140015 +:10061000055541080007C8810400000000000000E3 +:100620000000000001083FFE001FFF8100000040A5 +:1006300002000007FE0FF800040208080004020888 +:10064000880007FE08880004020888000402088861 +:100650000007FE0888000402094800040202300076 +:1006600007FE040C00040218040000000000000053 +:100670000000000007FE13FE000402084000040210 +:10068000084000040201FC0004023884000402084F +:10069000840007FE0FFF000402080000040209FEA8 +:1006A00000040209020004020B020004020D020011 +:1006B00007FE09FE00040201020000000000000025 +:1006C0000000000001100080001FFF80800001106A +:1006D0003FFF00004004080007FC04080004440435 +:1006E0001000044402100004440220001FFF812077 +:1006F00000004000C00000A001300001100208000E +:10070000060C0C07001803B00200000000000000F7 +:1007100000000000004000800000400080000FFF4B +:100720003FFF000841040800084104080008410494 +:10073000100008410210000FFF02200008410120B4 +:1007400000004000C00000400130000040020800EE +:1007500000400C07000040300200000000000000D4 +:10076000000000001FDF10200002120C20000224F5 +:10077000042000047F8020000424B820000FA488F7 +:10078000500014BF88500004A488500004A4884876 +:100790000004BF88880004A48A880007A48C840011 +:1007A0000444890700008186020000000000000068 +:1007B000000000000FF00491000440025200047F8A +:1007C000905400045088FF0007D084810004510039 +:1007D0008100044901FF0007CA028100044404812A +:1007E00000044A1CFF0007EA0481000C5104810048 +:1007F0000061C4850000408082000000000000000D +:100800000000000007FF802000008407FF00008434 +:10081000040100008404010000840401000FFFC7EC +:10082000FF0000840400000084040000008405FF31 +:100830000000840501000104090100010409010010 +:10084000020411FF00040401010000000000000088 +:1008500000000000008204FF00004402010007FFC6 +:100860009021000010102100001017FD0000101052 +:1008700021000FFFD06100001010A10000281121FD +:100880000000281221000044142100008210A10061 +:100890000301D045000C00900200000000000000A1 +:1008A00000000000084410FE00042810920005FF1C +:1008B00022920000103C920000100892001CFE10D2 +:1008C0009200041020FE0004103E920005FF80926A +:1008D00000041000920005100E92000610309200E5 +:1008E000041000FE00001000820000000000000064 +:1008F0000000000007DF8840000A24104000114279 +:1009000010FE00040022820002FF3D020008010ADE +:10091000420009F9103200090920120009F93E02CB +:1009200000090900020009090E020009F93022003D +:100930000805001400080200080000000000000084 +:10094000000000000FC3F1E0000FE3F1F8000C70AD +:10095000C19E000C30C186000C30C183000C30C138 +:1009600083000C60C183000C60C183000FC0C18391 +:10097000000FC0C186000C00C186000C00C19800A9 +:100980000C03F1F8000C03F1E0000000000000008F +:100990000000000000200820000FFF09FC000020DC +:1009A00008000000203E880003FE08500002020BF1 +:1009B000FE0003FE0C4000020218400003FE2BFE66 +:1009C00000020208480003FE0888000202085000E6 +:1009D00002022830001FFF91CC000000000000013F +:1009E00004047C0000880444000FFF3F4400002002 +:1009F00004440000200C440000200E44001FFF951A +:100A000044000020144400005024440000500444DA +:100A100000008804450001040485000603850300E6 +:100A200018010400000000000000000000000000A9 +:100A300000000000047E21FC0004421104001F7E1F +:100A4000090400044221FC000542110400067E1145 +:100A500004000C0005FC0015FF880000040813FECC +:100A6000000448325200044F12520004481252004F +:100A700014A8125200091F97FF0000000000000098 +:100A80000000000002103DFC0002102504000410CC +:100A900025040005FFBDFC000C102520000C3825A6 +:100AA0002000143825FE0004543D20000454251075 +:100AB0000004922510000511A5090006113D45000E +:100AC0000410258300041001010000000000000054 +:100AD000000000001FC8102000124A0C20001AC994 +:100AE00004200017480020001FFFB820000208085B +:100AF00050001FC8085000020808500003C80848EA +:100B0000001E1408880001540A880015220C840075 +:100B10001443890700008106020000000000000263 +:100B2000FE01000002823FFF00048202000004FE7A +:100B30000200000C1004FC00141004080005FF8CD7 +:100B400010000410141000043825FF0004340410B1 +:100B50000004520410000491841000051004500099 +:100B6000041004200000000000000000000000004D +:100B70000000000002030010001FDC3EFE00089091 +:100B8000021200051004FF001FDF84120002120C85 +:100B9000FE001FD2021000021222FE000A92141060 +:100BA000000A5214100012220DFF00022208100049 +:100BB0000A42141000040223FF000000000000009D +:100BC000000000000F78BC20000948A45000094A2A +:100BD000A85000094AA88800094AB104001FFEAACB +:100BE000FB00094AA42000094AA42000094AA7FEE4 +:100BF00000094AB420000948A924000B48A2220099 +:100C0000088AA4A200111920400000000000000082 +:100C1000000000000020008000005001FC0000885F +:100C2000010400010403080006FB0490000800C052 +:100C3000600007DF018000045106000004511BFE24 +:100C400000045102020007D9020200045602020009 +:100C5000001003FE0000100202000000000000006F +:100C6000000000000208209000027F9890001F8082 +:100C700009FF00022201100006218B100007628D7F +:100C8000FE000AA20910000A14111000121431FE0D +:100C900000020811100002141110000222111000AD +:100CA000024391FF000281110000000000000000DB +:100CB00000000000100700000008F83FFE0004805C +:100CC000200200008020020000BE23E2001C8222DD +:100CD000220004A42222000494222200048822225A +:100CE00000049423E20005222002000542200200B5 +:100CF0000A003FFE0011FFA00200000000000000FB +:100D00000000000000820FFE00004400400007FFCA +:100D10008040000010004000001000400000101F44 +:100D2000FF800FFFC040000010004000002800407E +:100D30000000280040000044004000008200400005 +:100D40000301C140000C0080800000000000000989 +:100D5000FF00400004203FFF00042000000000FED0 +:100D60000000001C420FFC00044200000007FF804E +:100D7000000004000FFC0004FF00000004810000DC +:100D80000005810FFC00068108040004FF08040030 +:100D900000810FFC000000000000000000000000C7 +:100DA0000000000000401F7E001FFF840200108032 +:100DB0008442000A4A0442000A3108420012C50F68 +:100DC00042000304197F001DF829010000400901B9 +:100DD00000084209FD00084209010008420F010015 +:100DE0000FFE0905000002000200000000000000E4 +:100DF0000000000001000FFE00010008200003FFBA +:100E00000820000201082000042208200008200B0E +:100E1000FE00102008200000500828000050082480 +:100E20000000880822000088102000010410200023 +:100E30000203A7FF000C01000000000000000000FA +:100E40000000000000400080001FFF9FFC000040E9 +:100E50000410000FFF02200000003FFF000FFE0003 +:100E6000000008420FF80008420808000FFE0808BA +:100E70000008020FF8000800080800080008080031 +:100E800008000FF800100008080000000000000033 +:100E90000000000007FE0FF800040200000004023A +:100EA00000000007FE00000004023FFE00040200F4 +:100EB000800007FE008000009004900008910C88DC +:100EC00000069310860002942082000090008000AB +:100ED00000900280001FFF81000000000000000061 +:100EE00000000000041012020005FF9FD200050060 +:100EF0009212001E28A2120004443FF20004820253 +:100F0000120006000212000CFE1FD2001410125232 +:100F10000004101242000410134200041012820058 +:100F200015FF820A00080002040000000000000013 +:100F300000000000002000000000203E04001FFF11 +:100F4000A204001000A2FF0000012204000FFE22F4 +:100F5000040000403E4400004022240004402224BB +:100F600000047C22040004402204000A403E0400E5 +:100F7000094022240010FF80140000000008000037 +:100F80000000000010FE08200008820BFF00048211 +:100F90000A010010FE3C51000882088800088209FE +:100FA000040002FE0C0000040019FC0009FF2820C8 +:100FB0000019290820000929082000092908200013 +:100FC00009292BFF000BFF9000000000000000002B +:100FD000000000001F7F90F80001080888000A1038 +:100FE000088800047F0107001FC13A000005490975 +:100FF000FC000449088400044908880004490848A2 +:1010000000044908500004490A200004160C580046 +:10101000142189870008C086020000000000001F1C +:10102000E03FF07038601860186018FFFCFCFCFCB2 +:10103000FCFCFCF87CF87CFCFC7FF81E1033382D9F +:101040007C25382D3825382D386D80DEC0BF40BF57 +:1010500040DEC061803F007FF0FFE0C008C01CC0E0 +:1010600038C870DCE4CFCCC78CC30CC00CC00CFFFC +:10107000FC7FF8000006000C0018F838F0303070E3 +:1010800060707878F878003C023F0C1FF80FF0038E +:10109000C000007FF8FFFCC00CC30CCB4CDB6CDB4A +:1010A0006CD86CDCECCFCCC78CC00CFFFC7FF80399 +:1010B0000007800FC00CC01CE01CE03CF03CF07F3F +:1010C000F87FF8FCFCFCFCFFFC7FF811408200215B +:1010D000208FE023FC82004A23E200FE209FF013D1 +:1010E000F880802220C0804221BFF0FBFA88800275 +:1010F000208480022084801A208080E3FE82800287 +:101100000101000F421FC078411040084090400884 +:10111000421FC008411040FFFD104008405FC0085A +:1011200040800008413FE008432520104125201061 +:101130004125202041252040417FF07FF848800252 +:101140000049000201FFF00201001002027F20228C +:1011500000410023F07F00220008002200FF8022CF +:101160000088802200888022008A8022008900FF77 +:10117000FC080023F21FC022111040FBF090402217 +:10118000121FC02A11104033F1104060005FC0AF41 +:10119000FC800020413FE0224325202279252022A7 +:1011A000412520A541252048FD7FF01083DFC01098 +:1011B000825040208250402FFFDFC0608252006189 +:1011C000C25200A1C25FE022A3D20022A251002499 +:1011D000925100288E5090308BD45020825830206D +:1011E000801010104047C017FC44402003F44023F7 +:1011F000F844406208C440A3F8E440200154402F62 +:10120000FD44402806444023F844402040445020F8 +:10121000404850214050302080400020921FC03D67 +:10122000F990402090904040901FC07BFF0000A0AC +:10123000013FE021F90200FD09020021097FF021B0 +:10124000F90500210945002909888031F91070212C +:1012500008202025004300202070F8754077557540 +:101260007740403E4A5E2B5E4A6B627F352F357F6A +:101270007C5B5E247B0E3A047E017E4A5E69063A00 +:101280002F3F6B7E46403F41497F494102626B6B75 +:101290006B62026A6B147D577D10413F55553D5777 +:1012A00051213F2D7F2A122E0A775A505A770A2051 +:1012B00024137D5553707A2A7B021A437A4A525E70 +:1012C0002B5E424A415F353F555F417D14577D0E8D +:1012D000407F7F1B54167D1654493A407E57567600 +:1012E000423F427E7E427E047E51377D3750127AE5 +:1012F0001752761E127F557F145D7F557F557F7F75 +:10130000553D577F55377817457F7F2B7B287B2BA3 +:101310007F1E12127F12121E7F416B7F6B517F5214 +:101320005A573A575A52007F494949497F22122A4F +:101330007F2A1222166A5E735662160937315F15CC +:101340005F7500000000002F000300033F123F16EE +:101350003F1A120824323D2A020100003E41413E5C +:10136000000A070A083E084020000808080020007C +:101370001008041C2A1C243E20322A24222A141875 +:10138000143E2E2A121C2A12023A06142A14242A67 +:101390001C002400402400081422141414221408F1 +:1013A00002290612291E3E093E3F251A1E21213F11 +:1013B000211E3F25213F05011E21393F083F213FC6 +:1013C0002110201F3F043B3F20203F063F3F013EAE +:1013D0001E211E3F09061E215E3F093622251901E6 +:1013E0003F013F203F3F100F3F183F330C33033C7A +:1013F00003312D23007F41153E15417F000201027C +:1014000040404000010218243C3F241818242418AE +:10141000243F182C2C043F0548543C3F0438003D21 +:1014200000403D003F0834013F003C1C383C04387C +:101430001824187C241818247C3C0804283C140424 +:101440003E243C203C3C100C3C303C2418244C50A6 +:101450003C24342C083641007F004136080101014C +:101460001028101F010120203E1020000008002538 +:10147000150F241C0C103804180C3828382828188C +:101480003C083C18283820242C3C2C2C1C04080830 +:10149000211D07083C0306231E223E22120A3F326A +:1014A0000F3E0A3F0A24130E271E0222223E271255 +:1014B0000F2525102119273F222E21160F241B0E40 +:1014C000251F0526261E251D053F0408241F042070 +:1014D0002222251927123B1620100F3C013E1F2403 +:1014E0002421110F0C031C1A3F1A091927222A2A3A +:1014F000382730320C13053F25023F0E213F2025AF +:10150000253F25251D07201F3C3F203F20103E2260 +:101510003E23110F212118010001020502000000E5 +:1015200000000000002040000000000000205020CB +:10153000000000000050300000000000006060006B +:101540000000000000000018180000000000003635 +:1015500036000000000000563600000000000201C6 +:1015600051090906000000005F00000000000000B3 +:10157000007F41410041417F000000000000000069 +:101580003F010101004040407E0000000000003F9C +:10159000213D05070070505E427E00000000000003 +:1015A000007F63410041637F0000000000080808DD +:1015B0007F08080800080808080808080044444490 +:1015C0005F444444004122140814224100080808E2 +:1015D0002A080808001414141414141400143414E1 +:1015E0001C141614000808141414222200222214B9 +:1015F00014140808000205023C42422400002B2C6F +:10160000782C2B000000242A7A2F2A1200001C625A +:10161000322E23140020545E254142200042251220 +:10162000082452210020623E633E230200205649D6 +:1016300055225840000022147F142200001C225919 +:10164000554D120C0000004A555529000004643C19 +:10165000173C64040004643C1F3C6404001C2241E9 +:101660004141221C001C3E7F7F7F3E1C001C225DEE +:10167000555D221C000814224122140800081C3E5B +:101680007F3E1C08007F41414141417F007F7F7FB9 +:101690007F7F7F7F0040704C434C70400040707CE7 +:1016A0007F7C704000010719611907010001071FC5 +:1016B0007F1F07010049221449142249000505052E +:1016C0007D05050500080808082A1C0800081C2AD2 +:1016D00008080808000004027F020400000010202F +:1016E0007F20100000003E414141413E0000004289 +:1016F0007F400000000062515149494600002241EC +:10170000494949360000302824227F2000002F4517 +:101710004545453900003E4949494932000001012B +:101720006119050300003649494949360000264938 +:101730004949493E000020547E3414600020527F05 +:101740002A1A4A3000003C4020041800001E2040A5 +:10175000200204180000104A4A2A10000000084520 +:10176000454525180000482A3A4A40000000442513 +:10177000153D45400000247E145024000022527F75 +:101780000A484A340044344F443804180044344F63 +:101790004439041900002A5A4B4E5A0800002A5AAC +:1017A0004B4E5B080000081414224100000008148E +:1017B00014224504003F0004443F0404003F000499 +:1017C000443F0405000020524242424000002052A3 +:1017D000424342410000245444475C040000245426 +:1017E00044475C050000003F404040200000003FAF +:1017F000404140210002020A563F02020002020A52 +:10180000563F02030004043F44545F440004043F75 +:1018100044545F45000008093D4B49080000080991 +:101820003D4B490A00423A072254444400423A07D9 +:1018300022554445000002124E4B4A32000002126B +:101840004E4B4A3300001010484830000004040298 +:101850002222221C000404022223221D0000020274 +:101860001A254341000002021A2543450000205773 +:1018700048484444000020574849444500120A277C +:1018800052503A24007F00205242424000304E38ED +:10189000540F64780024147F0422523C0018241250 +:1018A0004E422418007F002454543F44007F0024FB +:1018B00054543F45007F002454563D4600023A47A9 +:1018C00040413E0400023A4740413E0500023A478B +:1018D00040433D06004030404D32106000403040F3 +:1018E0004D321161004030404D3215620008040253 +:1018F0000408101000080402040910110008040272 +:10190000040A1512007F006A6A7E2A4A007F006A74 +:101910006A7F2A4B007F006A6A7E2D4A00006A6A4D +:101920006A7F2A4A0030291D4B483C1000122A7F4A +:101930004240422400304E38540F443800000A3EE2 +:101940004B4A4A300000080E384614080004071CB1 +:1019500062030A0400001C483E241800001E0452C2 +:101960003F12120C00002050503E48000000205052 +:10197000503F244400001C51494A483000000F42A7 +:1019800041211E00000010696D4B49300024147F76 +:1019900004023E40000010494D4B49300000281819 +:1019A0007E0844380024147F0442423C003049251C +:1019B0001F245438004028255735284000100A2E8F +:1019C0005B724A480040300C334040200000044421 +:1019D0003C140C00000001413D09050300002020DB +:1019E0001078040000001010087C02010000184864 +:1019F0004C281800000006424322120E0000404806 +:101A000078484000002022223E2222200000282880 +:101A1000587C0800002222124A7F02020000422263 +:101A20001F02427E000042221F02427F000012126B +:101A30001F721210000012121F72131000000844CF +:101A40004322120E000008444322120F00080742EE +:101A5000221E020200080742221F02030000424227 +:101A60004242427E000042424243427F0002024F15 +:101A700042221F020002024F42231E030000454A79 +:101A80004020100C0000454A4021100D0040422229 +:101A9000221A264000404222221B26410004043F15 +:101AA0004444544C0004043F4445544D0000014656 +:101AB0004020100F000001464020110F0000084494 +:101AC0004B2A120E000008444B2A120F00080A4A43 +:101AD0003E09090800080A4A3E09080900001840A2 +:101AE0005820180000020C424C20100E00020C423C +:101AF0004C21100D000405453D0505040004054575 +:101B00003D0504050000007F080810000000007F6C +:101B100008091001000444241F04040400202222A8 +:101B200022222220004041251519270000202212E0 +:101B30007B06122000404020100807000040300EB5 +:101B400000020C700040300E00020D710040300E9B +:101B500000020D7200003F484848444400003F48DE +:101B60004849444500003F48484A45460000024273 +:101B70004222120E000002424223120F00000242D3 +:101B80004222150E00080402040810200008040276 +:101B90000409102100080402040A15220024144438 +:101BA0007F041424002414447F05142500241444C5 +:101BB0007F0615220002021222520A060000212589 +:101BC000294A42000040704C4350204000404424C9 +:101BD00014083700000008093F4949480000101C5C +:101BE000680818000004040F74020A060000404848 +:101BF0004878400000202222223E2020000000449D +:101C000054547C000000424A4A4A4A7E000004457F +:101C10004525150C00000F4040201F000040201EED +:101C2000007F20100000007F4020100800007E424E +:101C30004242427E00000C4444241C000000064244 +:101C40004222120E0010121E12127F1200202222B7 +:101C50003A262220000001454525150F000041428B +:101C60004020100C000006424322120F00004828BA +:101C70001C4878000000100C4838080000080404D4 +:101C800008101008000800000800000800040808F8 +:101C900008080808000808080808080808060505D4 +:101CA0000706040903030504090A080303030603DE +:101CB00005030305050306040405050405040403E0 +:101CC00004090503CB05C605C005B805B105AA057D +:101CD000A2059D05980592058B0584057A05730577 +:101CE0006C05680563055B0555054F054A05440508 +:101CF00040053A0535052E052A05260520051C0553 +:101D00001905160512050F050C050905FD04F80453 +:101D1000F3043E0053656C656374205469700000E1 +:101D2000000000003E5B4F5B3E3E6B4F6B3E1C3E37 +:101D30007C3E1C183C7E3C181C577D571C1C5E7F4B +:101D40005E1C00183C1800FFE7C3E7FF00182418CA +:101D500000FFE7DBE7FF30483A060E2629792926FF +:101D6000407F050507407F05253F5A3CE73C5A7FE9 +:101D70003E1C1C08081C1C3E7F14227F22145F5F3F +:101D8000005F5F06097F017F006689956A60606079 +:101D9000606094A2FFA29408047E040810207E20B4 +:101DA0001008082A1C08081C2A08081E1010101009 +:101DB0000C1E0C1E0C30383E3830060E3E0E06004F +:101DC0000000000000005F00000007000700147F13 +:101DD000147F14242A7F2A1223130864623649567A +:101DE00020500008070300001C2241000041221C73 +:101DF000002A1C7F1C2A08083E080800807030005A +:101E00000808080808000060600020100804023E6E +:101E10005149453E00427F400072494949462141AF +:101E2000494D331814127F1027454545393C4A491E +:101E3000493141211109073649494936464949295D +:101E40001E0000140000004034000000081422416D +:101E50001414141414004122140802015909063EF6 +:101E6000415D594E7C1211127C7F494949363E41F1 +:101E70004141227F4141413E7F494949417F090912 +:101E800009013E414151737F0808087F00417F41AD +:101E9000002040413F017F081422417F40404040E4 +:101EA0007F021C027F7F0408107F3E4141413E7F3C +:101EB000090909063E4151215E7F09192946264933 +:101EC00049493203017F01033F4040403F1F20400A +:101ED000201F3F4038403F63140814630304780414 +:101EE000036159494D43007F4141410204081020DC +:101EF000004141417F040201020440404040400053 +:101F00000307080020545478407F2844443838445C +:101F1000444428384444287F385454541800087ED8 +:101F2000090218A4A49C787F0804047800447D402A +:101F3000002040403D007F1028440000417F4000C9 +:101F40007C047804787C080404783844444438FCE1 +:101F50001824241818242418FC7C08040408485465 +:101F600054542404043F44243C4040207C1C204022 +:101F7000201C3C4030403C44281028444C90909019 +:101F80007C4464544C440008364100000077000053 +:101F9000004136080002010204023C2623263C1EB2 +:101FA000A1A161123A4040207A3854545559215524 +:101FB0005579412154547841215554784020545545 +:101FC00079400C1E52721239555555593954545492 +:101FD0005939555454580000457C410002457D4212 +:101FE0000001457C40F0292429F0F0282528F07CC8 +:101FF000545545002054547C547C0A097F49324989 +:102000004949323248484832324A4848303A4141D8 +:10201000217A3A42402078009DA0A07D3944444472 +:10202000393D4040403D3C24FF2424487E494366DE +:102030002B2FFC2F2BFF0929F620C0887E090320B7 +:10204000545479410000447D413048484A32384078 +:1020500040227A007A0A0A727D0D19317D262929DB +:102060002F28262929292630484D402038080808DD +:102070000808080808382F10C8ACBA2F102834FAFE +:1020800000007B000008142A142222142A14089548 +:1020900000220095AA005500AAAA55AA55AA000038 +:1020A00000FF00101010FF00141414FF001010FFA8 +:1020B00000FF1010F010F0141414FC001414F700BA +:1020C000FF0000FF00FF1414F404FC141417101F89 +:1020D00010101F101F1414141F00101010F0000017 +:1020E00000001F101010101F10101010F010000032 +:1020F00000FF101010101010101010FF1000000042 +:10210000FF140000FF00FF00001F10170000FC0478 +:10211000F414141710171414F404F40000FF00F75B +:1021200014141414141414F700F7141414171410BE +:10213000101F101F141414F4141010F010F00000ED +:102140001F101F0000001F14000000FC140000F00E +:1021500010F01010FF10FF141414FF141010101FB3 +:1021600000000000F010FFFFFFFFFFF0F0F0F0F0C4 +:10217000FFFFFF0000000000FFFF0F0F0F0F0F38E1 +:10218000444438447C2A2A3E147E02020606027E1B +:10219000027E0263554941633844443C04407E203A +:1021A0001E2006027E020299A5E7A5991C2A492A4B +:1021B0001C4C7201724C304A4D4D303048784830DA +:1021C000BC625A463D3E494949007E0101017E2AD2 +:1021D0002A2A2A2A44445F444440514A4440404405 +:1021E0004A51400000FF0103E080FF000008086B37 +:1021F0006B083612362436060F090F060000181831 +:102200000000001010003040FF0101001F01011EFE +:1022100000191D1712003C3C3C3C0000000000006F +:10222000000000240027002A0000000000250028EC +:10223000002B0000000000230026002900040404F5 +:10224000040404040402020202020203030303035F +:10225000030102040810204080010204081020013C +:10226000020408102000000008000201000003041E +:10227000070000000000000000AED5F0A83FD3002A +:10228000408D14A1C8DA1281CFD9F1DB40A4A6AFEA +:10229000200021007F220007506C65617365207764 +:1022A000616974004144433A200074656D703A20BE +:1022B00000536574206D65617375726564005374B5 +:1022C00065703A2000FFFFFFFFFFFF8003867080EC +:1022D000038003867080039FF3E1309FF39FF3E157 +:1022E000309FF3983301CC9833983301CC983398CE +:1022F0003387C098339833E1C098339833E1C0985E +:10230000339FF398C09FF39FF398C09FF3800366B9 +:10231000CC8003800366CC8003FFFF010CFFFFFF2E +:10232000FF01001FFF810061301F3F873CE6FC87F3 +:1023300033873CE6FC87F3F8039E0F1F03F8039EE8 +:102340000F1F03E13CFE0C07CFE13CFE0C07CF99C9 +:10235000033E3086C3E6CF380F9EF3E6CF380F9E9C +:10236000F39E0327CC81039E0327CC8103E0FFE18A +:102370000CE6CFE0FFE10CE6CF9803060000FF98E3 +:1023800003060000FFFFFF1EF0F80380036630998C +:10239000C38003663099C39FF3010CF8FF9FF301DC +:1023A0000CF8FF9833393C01CF9833393C01CF9872 +:1023B00033FF0C793F98333ECCE0F398333ECCE0CA +:1023C000F39FF33E0098CF9FF33E0098CF80033EEB +:1023D00030E7C380033E30E7C3FFFFFFFFFFFFFF8F +:1023E000FFFFFFFFFF3030300076312E372B0056D5 +:1023F00000560043000FE01FC01FC03F803FF87F22 +:10240000F07FE007C007800F000E001C00180010CE +:102410000014A03FF07FF8E01C6E18EC1C681860F8 +:1024200018E01C6058E01C7FF83FF014A0455252A1 +:102430004F5200484F4C44004845415400574F52BA +:102440004B5900424F4F535400534C454550004F99 +:1024500046460000003BEC7BEE63E663E663E66322 +:10246000E663E663E663666226600660067FFE3F1B +:10247000FC000001020408102040800017291124EC +:102480001FBECFEFD8E0DEBFCDBF12E0A0E0B1E0CD +:10249000E6E8F4E702C005900D92A23CB107D9F737 +:1024A00028E0A2ECB2E001C01D92A131B207E1F731 +:1024B00012E1CFE3D2E104C02197FE010E94223A4B +:1024C000CE33D107C9F70E94CC290C94413A0C9421 +:1024D00000004F925F926F927F928F929F92AF9285 +:1024E000BF92CF92DF92EF92FF920F931F93CF9301 +:1024F000DF9300D000D0CDB7DEB74B015C012901DE +:102500003A016701780120E030E0A9010E946235BC +:1025100087FDA6C020E030E0A901C301B2010E94FE +:10252000623587FD9DC020E030E0A901C801B601F9 +:102530000E94623587FD94C081E02091DB073091D5 +:10254000DC072130310509F080E08093FC078092A0 +:10255000C1079092C207A092C307B092C4074092ED +:10256000C5075092C6076092C7077092C807C0920D +:10257000C907D092CA07E092CB07F092CC076091CE +:10258000EF077091F0078091F1079091F2070E9498 +:10259000673520E030E04AE754E40E946C376983F5 +:1025A0007A838B839C838092CD079092CE07A092F2 +:1025B000CF07B092D0079B01AC01C301B2010E94CA +:1025C000C8352B013C014092D1075092D20760924E +:1025D000D3077092D40729813A814B815C81C7016E +:1025E000B6010E946C376B017C01C092D507D09276 +:1025F000D607E092D707F092D8078091D90790913B +:10260000DA07019769F5A501940160E070E0CB015C +:102610000E94FF366093CD077093CE078093CF075B +:102620009093D007A301920160E070E0CB010E947B +:10263000FF366093D1077093D2078093D3079093AE +:10264000D407A701960160E070E0CB010E94FF363D +:102650006093D5077093D6078093D7079093D807D8 +:102660000F900F900F900F90DF91CF911F910F91CE +:10267000FF90EF90DF90CF90BF90AF909F908F90A2 +:102680007F906F905F904F90089580389105B0F4DF +:102690006034710598F4E3E7F4E290E1969FD0018D +:1026A000A0781124A80F6770E60FF11D9491A85E21 +:1026B000BC4F442321F08C91982B9C9308959095C6 +:1026C0008C919823FACFDF92EF92FF920F931F9392 +:1026D000CF93DF937C01D22E8B01040F111DEB01F0 +:1026E00077FF02C0D0E0C0E0C8010134110514F04A +:1026F00080E490E0C817D9073CF44D2DBE01C70116 +:102700000E9445132196F0CFDF91CF911F910F9139 +:10271000FF90EF90DF900895CF92DF92EF92FF92BB +:102720000F931F93CF93DF936B01122FEC017C016A +:10273000E40EF11CCE15DF0544F4202F412FB60125 +:10274000CE010E9463132196F5CFDF91CF911F91A7 +:102750000F91FF90EF90DF90CF9008952F923F92CE +:102760004F925F926F927F928F929F92AF92BF92A1 +:10277000CF92DF92EF92FF920F931F93CF93DF934D +:1027800000D01F92CDB7DEB7C22ED12C9601280FF4 +:10279000391F37FD4FC0803891050CF04BC0E982DE +:1027A0004A017B013C01402E512C160127E0220EEC +:1027B000311C93E0359427949A95E1F78B01B12C65 +:1027C000A12C1B821A82EA81FB8183E0F595E795B3 +:1027D0008A95E1F7EA0DFB1DE80DF91DE4918A8168 +:1027E0009B818770992720E830E002C035952795B6 +:1027F0008A95E2F7C901F0E0E223F923EF2B41F0DB +:102800004981B8018A819B81860D971D0E944513DD +:102810008A819B8101969B838A838C159D059CF2FE +:10282000A20CB31C0F5F1F4FC8018E199F0984159E +:1028300095053CF20F900F900F90DF91CF911F9173 +:102840000F91FF90EF90DF90CF90BF90AF909F904F +:102850008F907F906F905F904F903F902F90089552 +:102860000F931F93CF93DF93EC018B0140E0019610 +:102870000E94451340E0B801CE0101970E94451324 +:10288000B8016F5F7F4F40E0CE010E944513B80151 +:102890006150710940E0CE010E94451340E0B8014B +:1028A000CE01DF91CF911F910F910C94451380E0E1 +:1028B000E8E1F3E081118FEF00248193819381930C +:1028C00081930394D1F7EDEFF7E01786168615860E +:1028D000148608956F927F928F929F92AF92BF92CB +:1028E000CF92DF92EF92FF920F931F93CF93DF93DC +:1028F000803891050CF057C0603471050CF053C05E +:102900007B0137E0E322FF2433E0759567953A9524 +:10291000E1F7DB01B695BA2FAA27B795A7955D0118 +:10292000C0E8AC0EB11CA80EB91EA80FB91FA85E56 +:10293000BC4F00E810E0081B190B90E080E0E8E0D5 +:10294000F0E04F018E189F0830E0FA01E80FF91F00 +:10295000C4917D906D01D1E0CD1AD1080E2C01C03B +:10296000CC0F0A94EAF77C2AE6017882E114F1049C +:1029700099F06730710581F0E491EC01CA0DDB1D1F +:10298000C85EDC4FF0E0082C02C0F595E7950A948C +:10299000E2F7F881EF2BE8830196821793071CF486 +:1029A0000817190791F6DF91CF911F910F91FF90B2 +:1029B000EF90DF90CF90BF90AF909F908F907F90DF +:1029C0006F900895AF92BF92CF92DF92EF92FF92F5 +:1029D0000F931F93CF93DF936C017B018B01040F47 +:1029E000151FEB015E01AE18BF08C017D10759F0E3 +:1029F0006991D601ED91FC910190F081E02DC60125 +:102A00000995892B79F7C501DF91CF911F910F911E +:102A1000FF90EF90DF90CF90BF90AF900895FC01B2 +:102A2000538D448D252F30E0842F90E0821B930B33 +:102A3000541710F0CF96089501970895FC01918DD9 +:102A4000828D981761F0A28DAE0FBF2FB11D5D96DC +:102A50008C91928D9F5F9F73928F90E008958FEF7E +:102A60009FEF0895FC01918D828D981731F0828D32 +:102A7000E80FF11D858D90E008958FEF9FEF089589 +:102A8000FC01918D228D892F90E0805C9F4F821BED +:102A900091098F739927089588E197E00E94401566 +:102AA00021E0892B09F420E0822F089580E090E056 +:102AB000892B29F00E944C1581110C940000089577 +:102AC000FC01A48DA80FB92FB11DA35ABF4F2C91A3 +:102AD000848D90E001968F739927848FA689B7899A +:102AE0002C93A089B1898C91837080648C93938D91 +:102AF000848D981306C00288F389E02D80818F7D34 +:102B000080830895EF92FF920F931F93CF93DF93EB +:102B1000EC0181E0888F9B8D8C8D98131AC0E88919 +:102B2000F989808185FF15C09FB7F894EE89FF89E8 +:102B30006083E889F98980818370806480839FBF86 +:102B400081E090E0DF91CF911F910F91FF90EF9086 +:102B50000895F62E0B8D10E00F5F1F4F0F73112796 +:102B6000E02E8C8D8E110CC00FB607FCFACFE889D1 +:102B7000F989808185FFF5CFCE010E946015F1CFE4 +:102B8000EB8DEC0FFD2FF11DE35AFF4FF0829FB745 +:102B9000F8940B8FEA89FB8980818062CFCFCF9335 +:102BA000DF93EC01888D8823B9F0AA89BB89E88975 +:102BB000F9898C9185FD03C0808186FD0DC00FB61B +:102BC00007FCF7CF8C9185FFF2CF808185FFEDCF99 +:102BD000CE010E946015E9CFDF91CF910895833037 +:102BE00081F028F4813099F08230A9F0089587307F +:102BF000A9F08830C9F08430B1F4809180008F7DD5 +:102C000003C0809180008F7780938000089584B501 +:102C10008F7784BD089584B58F7DFBCF8091B00000 +:102C20008F778093B00008958091B0008F7DF9CFA9 +:102C3000CF93DF93282F30E0F901EB59FD4D8491BC +:102C4000F901EF5AFD4DD491F901E35CFD4DC491BA +:102C5000CC23A1F081110E94EF15EC2FF0E0EE0FD4 +:102C6000FF1FED5CFD4DA591B491EC91ED2381E04A +:102C700090E009F480E0DF91CF91089580E090E04A +:102C8000FACF1F93CF93DF93282F30E0F901EB5950 +:102C9000FD4D8491F901EF5AFD4DD491F901E35CAA +:102CA000FD4DC491CC23A9F0162F81110E94EF1580 +:102CB000EC2FF0E0EE0FFF1FE75DFD4DA591B49105 +:102CC0008FB7F894EC91111108C0D095DE23DC93F6 +:102CD0008FBFDF91CF911F910895DE2BF8CFCF9357 +:102CE000DF9390E0FC01EF5AFD4D2491835C9D4DF4 +:102CF000FC0184918823C9F090E0880F991FFC01A2 +:102D0000E15EFD4DA591B491FC01E75DFD4DC591DE +:102D1000D49161110DC09FB7F8948C9120958223B6 +:102D20008C938881282328839FBFDF91CF910895BA +:102D3000623051F49FB7F8943C91822F80958323A1 +:102D40008C93E8812E2BEFCF8FB7F894EC912E2B3C +:102D50002C938FBFEACF1F93CF93DF93182FEB01F4 +:102D600061E00E946F16209739F460E0812FDF91B7 +:102D7000CF911F910C944116CF3FD10511F461E022 +:102D8000F5CFE12FF0E0EB59FD4DE491E33031F167 +:102D900040F4E130B1F0E230E1F0C038D1057CF729 +:102DA000E4CFE73029F1E83059F1E430B1F7809110 +:102DB0008000806280938000D0938B00C0938A0053 +:102DC00004C084B5806884BDC7BDDF91CF911F91D9 +:102DD000089584B5806284BDC8BDF7CF809180001E +:102DE000806880938000D0938900C0938800EDCFE5 +:102DF0008091B00080688093B000C093B300E5CFAD +:102E00008091B00080628093B000C093B400DDCFA9 +:102E10003FB7F8948091DC029091DD02A091DE0230 +:102E2000B091DF0226B5A89B05C02F3F19F001968F +:102E3000A11DB11D3FBFBA2FA92F982F8827BC0114 +:102E4000CD01620F711D811D911D42E0660F771F3C +:102E5000881F991F4A95D1F708958F929F92AF923C +:102E6000BF92CF92DF92EF92FF924B015C010E94E2 +:102E700008176B017C010E9408176C197D098E09E7 +:102E80009F09683E734081059105A8F321E0821AED +:102E90009108A108B10888EEC80E83E0D81EE11C95 +:102EA000F11C81149104A104B10429F7FF90EF9063 +:102EB000DF90CF90BF90AF909F908F9008952FB7E5 +:102EC000F8946091D8027091D9028091DA029091C1 +:102ED000DB022FBF089584E98093BC008091BC0081 +:102EE00084FDFCCF08958093BB0084E88093BC00F0 +:102EF0008091BC0087FFFCCF089584EA8093BC00DA +:102F00008091BC0087FFFCCF88E70C9473170E9468 +:102F10007D1780E48093BB0084E88093BC00E8E1E7 +:102F2000F3E09091BC0097FFFCCF91919093BB0090 +:102F30008093BC0097E0E831F90799F78091BC00D5 +:102F400087FFFCCF0C946B17CF93C82F0E947D177F +:102F500080E00E9473178C2F0E947317CF910C94FE +:102F60006B17480F592F511D4138510514F040E897 +:102F700050E0481BFB0177FD379633E0F595E79568 +:102F80003A95E1F7F695FE2FEE27F795E795E80FCE +:102F9000F91FE85EFC4F6770772781E090E001C081 +:102FA000880F6A95EAF7382F213041F4415078F0C4 +:102FB0008191DF011197832B8C93F8CF809541503D +:102FC00030F09191DF01119798239C93F8CF0895E9 +:102FD000CF92DF92EF92FF920F93CF93DF936C012A +:102FE0007B01C42FD22F202F0E94B117B7016D0F84 +:102FF000711D61507109603471052CF4202F4C2F24 +:10300000C6010E94B117202F4D2FB701C6010E94A3 +:103010006313C6018C0F911D202F4D2FB70101970F +:10302000DF91CF910F91FF90EF90DF90CF900C94B4 +:1030300063132F923F924F925F926F927F928F9283 +:103040009F92AF92BF92CF92DF92EF92FF920F9337 +:103050001F93CF93DF93CDB7DEB72A970FB6F894BF +:10306000DEBF0FBECDBF9A8389836A3061F5DC0174 +:1030700052968C91B8E08B9F90011124E981FA81DE +:1030800086859785820F931F978786871586148676 +:1030900081E090E02A960FB6F894DEBF0FBECDBF58 +:1030A000DF91CF911F910F91FF90EF90DF90CF9024 +:1030B000BF90AF909F908F907F906F905F904F9058 +:1030C0003F902F9008956D3019F329813A813A8706 +:1030D0002987D9011C96AD90BC90B0E8AB16B1041D +:1030E0000CF07BC0F901C684D784F0E4CF16D1047C +:1030F0000CF073C0D90152966C90529745E095013F +:10310000649E200D311D1124121613060CF065C0AB +:10311000262C312C910153E0220F331F5A95E1F7F1 +:103120002C0D3D1D121613060CF057C05196BC9184 +:10313000BB83E985FA85F089FC83649FB001112483 +:103140009B01215E324E3A832983712CE981FA81F9 +:103150008491F5E07F1201C080E0460138E0532EF3 +:10316000282F30E03E832D834C8080FF4B80411020 +:1031700004C03B818C813817E1F010E000E00615B7 +:10318000C0F4D501A00FB11FB887AF83F12CE12C9B +:10319000E61460F4B701680D791D442D8F81988580 +:1031A0000E944513BFEFEB1AFB0AF2CF0F5F1F4FD0 +:1031B000E6CF8D819E81959587955A94820C931CBC +:1031C0005110CECF7394E981FA813196FA83E98365 +:1031D000A20CB31CF6E07F12B9CFA985BA8552962E +:1031E0002C915297422F50E01C968D919C91B6E005 +:1031F0002B9F800D911D1124E985FA859587848781 +:103200002389222309F444CF6AEF64039001659F68 +:10321000300D112420583F4F281739070CF038CFB4 +:10322000DF010190F081E02D0190F081E02D6AE056 +:10323000CD0109952DCF0F931F93CF93DF938C0171 +:10324000D0E0C0E0F801EC0FFD1F6491662341F06F +:103250008DEF97E00E941918892B11F02196F2CF7B +:10326000CE01DF91CF911F910F910895682F8DEFBF +:1032700097E00C941918089590E080E008958091EB +:103280007A00806980937A008EE480937C0061E00C +:1032900070E080E090E00E942D1783B7817F82600C +:1032A00083BF80E130E020E093B7916093BF8895C1 +:1032B00093B79E7F93BF90917A0096FDFCCF40918B +:1032C000780050917900240F351F815069F7809163 +:1032D0007A008F7780937A0084E0369527958A95D7 +:1032E000E1F750E040E064EB7BE281E190E00E9496 +:1032F0009C36C901089580917A00806980937A0094 +:1033000088EC80937C006AE070E080E090E00E94AE +:103310002D1783B7817F826083BF80E270E060E019 +:1033200093B7916093BF889593B79E7F93BF909119 +:103330007A0096FDFCCF2091780030917900620FE1 +:10334000731F815069F780917A008F7780937A009C +:10335000769567957695679562527A4090E080E021 +:103360000E94673526EF38E24CE151E40E946C3749 +:10337000089590917A00906990937A008E508064BD +:1033800080937C0083B7817F826083BF20E290E0DE +:1033900080E033B7316033BF889533B73E7F33BFAA +:1033A00030917A0036FDFCCF409178005091790041 +:1033B000840F951F215069F720917A002F77209371 +:1033C0007A0025E0969587952A95E1F708958FE094 +:1033D0000E94B919A091E302B091E4029C010E94FD +:1033E000F0360E94693528E539E743E353E40E944B +:1033F0006C370E94E537CB0108958091EC02882359 +:1034000069F086E00E941816892B41F06AE070E0AE +:1034100080E090E00E942D171092EC0208956F92C8 +:103420007F928F929F92AF92BF92CF92DF92EF9254 +:10343000FF920F93CF93DF937C01C62F01E020E32F +:1034400040E370E060E00E948C13570123E0A20E7D +:10345000B11C00E02AE24AE263E070E0C5010E948C +:103460008C1370E060E0C7010E94301467013FE2F6 +:10347000C30ED11C70E060E0C6010E9430146FE200 +:1034800070E0C7010E9430146FE270E0C6010E9434 +:103490003014EC2FF0E0EE0FFF1FE157FE4F80805D +:1034A000918053E0E52EF12CD12CC12C60E8662EE2 +:1034B000712CD0E0C0E0FE0133E0F595E7953A9538 +:1034C000E1F7EC0DFD1DE80DF91DE491CE018770CB +:1034D0009927930102C0359527958A95E2F7C9018E +:1034E000F0E0E223F923EF2B69F0CE01880F991F5A +:1034F0008C0F9D1F01E023E043E0B7018A0D9B1D67 +:103500000E948C132196CE30D105A9F632E0C30E6D +:10351000D11C83E0E80EF11C2DE2E216F10449F61D +:10352000DF91CF910F91FF90EF90DF90CF90BF9000 +:10353000AF909F908F907F906F9008950F931F93FF +:10354000CF9380914D01882399F0CFEF0FEE11E0DA +:1035500061E085E00E944116C8010197F1F760E043 +:1035600085E00E944116C8010197F1F7C15081F72B +:10357000CF911F910F9108952F923F924F925F929A +:103580006F927F928F929F92AF92BF92CF92DF9273 +:10359000EF92FF920F931F93CF93DF9310E000E021 +:1035A000D0E0C0E03EE3E32EF12C40ECC42ED12C61 +:1035B000AA24A394B12C60E2662E712C70E4272E0D +:1035C000312C4C2E86E00E94181621E0892B09F040 +:1035D00020E02093EC02F0921703E0921603D092C1 +:1035E0001503C0921403B0921303A092120382E851 +:1035F00090E09093110380931003809110039091B9 +:10360000110395958795582E9FE1591243C0F0926A +:103610001703E0921603D0921503C0921403B092E0 +:103620001303A0921203EEEBF0E0F0931103E0938A +:1036300010039FE5592E0E94571482E080930F08D3 +:1036400010930A0800930908E0E3F0E0F0930C08F7 +:10365000E0930B088EE50E94361910920A0810922A +:10366000090870920C0860920B08912C812C84142C +:1036700038F580910A03F40196E0989FE00DF11D62 +:103680001124E15BFE4F80810E943619EFEF8E1A04 +:103690009E0AEDCFF0E65F12CECFF0921703E092D4 +:1036A0001603D0921503C0921403B0921303A09294 +:1036B0001203309211032092100380E2582EBBCFE8 +:1036C00010930A080093090870920C0860920B0886 +:1036D000852D0E9436190E94FD190E94871786E0E9 +:1036E0000E941816892B09F088CF8091EC02811175 +:1036F00084CF80900A03F6E08F9E40011124C4011C +:10370000815B9E4F4C01FC01EC0FFD1F50820E941B +:103710009E1A6AE070E080E090E00E942D172196EA +:10372000005F1F4FC530D10509F04BCFF401158262 +:10373000DF91CF911F910F91FF90EF90DF90CF908D +:10374000BF90AF909F908F907F906F905F904F90C1 +:103750003F902F9008953F924F925F926F927F9289 +:103760008F929F92AF92BF92CF92DF92EF92FF9291 +:103770000F931F93CF93DF93CDB7DEB72E970FB67E +:10378000F894DEBF0FBECDBF80910D03882309F4EE +:10379000A5C11092B5071092B6071092B707109204 +:1037A000B8078090B5079090B607A090B707B09083 +:1037B000B807C090FE02D090FF02E0900003F090A6 +:1037C0000103A7019601C501B4010E94FF362B0138 +:1037D0003C0120E030E0A9010E94143818160CF0DA +:1037E000A0C1C301B2010E94E5378091480188233E +:1037F00009F4B8C1C092BD07D092BE07E092BF07DE +:10380000F092C007E12CF12C00EA10E420E030E057 +:1038100040E450E46E31710540F0E12CF12C00E8F9 +:103820001FE320E030E040E05FE360E070E080E331 +:1038300091E40E9469128091FB07882309F42AC150 +:103840000E945F176D837E838F8398878091E30743 +:103850009091E407A091E507B091E6074D815E8164 +:103860006F817885481B590B6A0B7B0B8091EF07A2 +:103870009091F007A091F107B091F207481759070E +:103880006A077B0708F406C1E091DD07F091DE07C7 +:1038900080819181A281B38189839A83AB83BC8328 +:1038A000E091E107F091E2079C01AD016081718137 +:1038B000828193810E94FF364B015C012091EB07CE +:1038C0003091EC074091ED075091EE0769817A81C4 +:1038D0008B819C810E94FF366B017C012091D10776 +:1038E0003091D2074091D3075091D407C501B4015C +:1038F0000E94C8352091E7073091E8074091E90719 +:103900005091EA070E9400372B013C014092E707E3 +:103910005092E8076092E9077092EA073090FC073E +:1039200031101AC02091CD073091CE074091CF07BA +:103930005091D007C701B6010E94C8359B01AC0168 +:10394000C301B2010E94FF366093E7077093E80756 +:103950008093E9079093EA074090E7075090E807C3 +:103960006090E9077090EA071091F7079091F807C7 +:103970009E87A091F907AD870091FA07212F392F73 +:103980004A2F502FC301B2010E94143818160CF0B0 +:10399000CCC0812F9E85AD85B02F8093E707909393 +:1039A000E807A093E907B093EA07332009F4D6C0EB +:1039B0002091CD073091CE074091CF075091D0078D +:1039C000C501B4010E94C8354B015C012091D507A7 +:1039D0003091D6074091D7075091D807C701B6015B +:1039E0000E94C8359B01AC016091E7077091E80720 +:1039F0008091E9079091EA070E94FF36A5019401A2 +:103A00000E9400376B017C019B01AC01612F7E8518 +:103A10008D85902F0E94623587FD18C01091F307A5 +:103A20009091F4079E87A091F507AD870091F60766 +:103A3000212F392F4A2F502FB601C7010E9462351E +:103A400087FD04C01C2DDE86ED860F2DE091DF077B +:103A5000F091E007812F9E85AD85B02F8083918303 +:103A6000A283B38389819A81AB81BC818093EB0768 +:103A70009093EC07A093ED07B093EE078D819E81A4 +:103A8000AF81B8858093E3079093E407A093E5079F +:103A9000B093E6076091B9077091BA078091BB07B0 +:103AA0009091BC070E94DE3789E02E960FB6F894FD +:103AB000DEBF0FBECDBFDF91CF911F910F91FF9061 +:103AC000EF90DF90CF90BF90AF909F908F907F90BE +:103AD0006F905F904F903F900C94AB1680910C03C9 +:103AE000609144017091450181110EC08091FC02EA +:103AF0009091FD0220910B03BC01222329F06091DB +:103B00004301680F792F711D90E080E00E946735B6 +:103B10006093B5077093B6078093B7079093B80783 +:103B200040CEC301B20190585ECE8091F3079091D0 +:103B3000F407A091F507B091F60789879A87AB87BC +:103B4000BC879C01AD01C301B2010E94623587FFB1 +:103B50002CCF89859A85AB85BC851FCF812C912C74 +:103B6000540134CF20E030E040E05FE3C701B6010C +:103B70000E9400379B01AC01C501B4010E941438BA +:103B800018164CF41092B9071092BA071092BB079E +:103B90001092BC077FCF80E090E0AFE7B3E4809362 +:103BA000B9079093BA07A093BB07B093BC0772CF35 +:103BB0004F925F926F927F928F929F92AF92BF923D +:103BC000CF92DF92EF92FF92CF93DF938090E50246 +:103BD0009090E602A090E702B090E802C0910A033C +:103BE000D0E0C501B4010E94DE376B017C0120E00A +:103BF00030E048E453E4C501B4010E94623593E02B +:103C0000CC0FDD1F9A95E1F7CE5FDE4F87FF31C005 +:103C10002881398150E040E025513109410951099D +:103C2000C701B6010E94FE3928EC30E040E050E0C8 +:103C30000E949C36CA01B9016B5E7F4F8F4F9F4F28 +:103C40000E9469356093FE027093FF028093000327 +:103C500090930103DF91CF91FF90EF90DF90CF9091 +:103C6000BF90AF909F908F907F906F905F904F909C +:103C700008954A805B80712C612C20E030E04CE894 +:103C800053E4C501B4010E94623587FF1FC08880DC +:103C90009980B12CA12CA7019601285C310941091A +:103CA0005109C301B201681979098A099B090E9467 +:103CB000FE3920E530E040E050E00E949C36CA0129 +:103CC000B901680D791D8A1D9B1DBACF2C813D81DC +:103CD00050E040E02419350946095709C701B601EB +:103CE00068517140810991090E94FE3920E530E058 +:103CF00040E050E00E949C36CA01B901640D751D78 +:103D0000861D971D9DCFFC0101900020E9F731979A +:103D1000AF01481B590BBC018DEF97E00C94E214E6 +:103D20008F929F92AF92BF920F931F93CF93DF9387 +:103D3000CDB7DEB7A1970FB6F894DEBF0FBECDBFEB +:103D400019A2423008F44AE08E010F5D1F4F842E05 +:103D5000912CB12CA12CA50194010E94CE36E62F06 +:103D6000B901CA01EA30F4F4E05DD801EE938D01A7 +:103D7000232B242B252B79F790E080E0109719F066 +:103D8000CD010E94831EA1960FB6F894DEBF0FBE30 +:103D9000CDBFDF91CF911F910F91BF90AF909F90BA +:103DA0008F900895E95CE1CFCF92DF92EF92FF927E +:103DB000CF93DF9397FF19C06B017C018DE20E94C6 +:103DC0003619EC0166277727CB016C197D098E091E +:103DD0009F094AE00E94901E8C0F9D1FDF91CF919A +:103DE000FF90EF90DF90CF9008954AE0DF91CF9160 +:103DF000FF90EF90DF90CF900C94901E4F925F92C7 +:103E00006F927F928F929F92AF92BF92CF92DF92EA +:103E1000EF92FF920F931F93CF936B017C01742E4F +:103E2000AC019B010E947138882399F083EB92E0EA +:103E3000CF911F910F91FF90EF90DF90CF90BF90A7 +:103E4000AF909F908F907F906F905F904F900C9469 +:103E5000831E46015701E894B7F82FEF3FEF4FE775 +:103E60005FE7C501B4010E94713881110DC02FEFC9 +:103E70003FEF4FE75FE7C501B4010E9462351816B6 +:103E80001CF487EB92E0D4CF2FEF3FEF4FE75FE4D6 +:103E9000C701B6010E94143818161CF48BEB92E08F +:103EA000C7CF2FEF3FEF4FE75FECC701B6010E948E +:103EB000623587FDF3CF20E030E0A901C701B601EC +:103EC0000E94623510E000E087FF08C08DE20E948A +:103ED00036198C01F7FAF094F7F8F094C0E060E03E +:103EE00070E080E09FE37C1641F020E030E040E2AB +:103EF00051E40E946C37CF5FF6CFA70196010E9474 +:103F000000372B013C010E94E5374B015C014AE080 +:103F10000E94901E7C01E00EF11ECC23B1F1C50180 +:103F2000B4010E9467359B01AC01C301B2010E943C +:103F3000FF364B015C018EE20E943619E80EF91E35 +:103F4000C15018F120E030E040E251E4C501B40175 +:103F50000E94C8352B013C010E94E5374B01B12C72 +:103F6000A12C4AE0C501B4010E94901EE80EF91E82 +:103F7000C501B4010E9467359B01AC01C301B201C8 +:103F80000E94FF364B015C01DBCFC701CF911F912F +:103F90000F91FF90EF90DF90CF90BF90AF909F90E8 +:103FA0008F907F906F905F904F900895CF92DF92A7 +:103FB000EF92FF920F931F93CF93DF93C82F81E06F +:103FC000DC2FD827D0930E08C0930D0880930F08DC +:103FD0000C2F2EE046E661E370E081E090E00E9465 +:103FE000E81720910E0330910F03253F81E0380739 +:103FF000B8F4A4E6B0E00E94F03624EF31E040E0EF +:1040000050E00E949C36BA01A9014E5F5F4F6F4F8E +:104010007F4F2EE061E370E081E090E00E948C131E +:104020006091B5077091B6078091B7079091B80776 +:104030000E94DE379B01AC01A4E6B0E00E94BB36D3 +:1040400034EFC32EDD24D394E12CF12CA70196018B +:104050000E949C36DA01C9010296A11DB11D02978A +:104060000C2F2DE043E062E370E00E948C1360911E +:10407000B5077091B6078091B7079091B8070E9475 +:10408000DE379B01AC01A4E6B0E00E94BB36A7017D +:1040900096010E949C36DA01C9010296A11DB11D4C +:1040A000039724E045E06CE370E00E948C1360917C +:1040B000B5077091B6078091B7079091B8070E9435 +:1040C000DE379B01AC01A4E6B0E00E94BB36A7013D +:1040D00096010E949C3689019A010E5F1F4F2F4F57 +:1040E0003F4F0150110941E3E42EF12C4D2FB70150 +:1040F000C8010E9445138FEFE81AF80A8DE3E8160D +:10410000F104A1F76091B5077091B6078091B707E8 +:104110009091B8070E94DE379B01AC01A4E6B0E0A5 +:104120000E94BB3624EF31E040E050E00E949C3614 +:10413000DA01C9010296A11DB11D0397ED2E04E01D +:1041400025E047E552E16BE370E00E94AE130C2FCF +:104150002EE047E161E370E088E690E00E94E81716 +:104160006091B9077091BA078091BB079091BC0725 +:104170000E94DE379B01AC012F5F310941095109D3 +:10418000A7E1B0E00E94BB36CC24C394DD24DA94CE +:10419000ED2CFD2CA70196010E949C36422F2EE0AB +:1041A00061E370E088E690E00E948C13C0930E08F3 +:1041B000D0930D0882E090E090930A08809309085C +:1041C00007E310E010930C0800930B086091B5070B +:1041D0007091B6078091B7079091B80740E00E94B0 +:1041E000FE1E88EF0E94361985E592E10E941B1998 +:1041F00089E690E090930A088093090810930C08D0 +:1042000000930B086091B9077091BA078091BB07C2 +:104210009091BC070E94DE379B01AC012F5F3109F2 +:1042200041095109A4E6B0E00E94BB36A7019601FE +:104230000E949C36CA01B9010E94D41E83E592E116 +:104240000E941B19D0930E08C0930D08DF91CF91E7 +:104250001F910F91FF90EF90DF90CF9008956F9294 +:104260007F928F929F92AF92BF92CF92DF92EF9206 +:10427000FF920F931F93CF93DF93B0900A0377249D +:104280007394B11001C0712C809142018150990B3F +:104290001092170310921603880F991F909315031D +:1042A0008093140381E090E09093130380931203B2 +:1042B0008B2D90E0880F991F90931103809310032A +:1042C00086E00E94181621E0892B09F020E0209357 +:1042D000EC02FF24F39472E0972EE6E08E2EFCE0D1 +:1042E000CF2ED12C0E945714C0911003D0911103EE +:1042F000D595C795EC2E8E011127C801870D911D0C +:1043000077FC9A958B199109712C97FD06C0833023 +:10431000910514F082E090E0782EF0920E08109251 +:104320000D0890920F0810920A0810920908109236 +:104330000C0810920B0884E19DE10E941B19109259 +:104340000E08F0920D0810920A0810920908A72C86 +:10435000072C000CBB08C501019654E0880F991F7B +:104360005A95E1F790930C0880930B0882E19DE148 +:104370000E941B196C2E671890E080E098012A19A2 +:104380003B095901209142018C010F5F1F4F6216BA +:10439000D0F4D0920A08C0920908980144E0220F94 +:1043A000331F4A95E1F730930C0820930B088A0DD0 +:1043B0009B1D889E9001899E300D1124C901815B4F +:1043C0009E4F0E94831EC801639403301105D1F6ED +:1043D0000E94FD190E94871786E00E941816892BFB +:1043E000B9F48091EC02811113C00E949E1AE092F0 +:1043F0000A03DF91CF911F910F91FF90EF90DF9013 +:10440000CF90BF90AF909F908F907F906F900895C6 +:10441000BC2E68CF0E943C3A1F93CF93DF93EC01F0 +:10442000162F0E948636181739F0612FCE01DF91C2 +:10443000CF911F910C948E36DF91CF911F910895EB +:10444000AF92BF92CF92DF92EF92FF920F931F93A2 +:10445000CF93DF936091470182E090E00E940C22AD +:104460006091460183E090E00E940C22609145013A +:1044700084E090E00E940C226091440185E090E08D +:104480000E940C226091430186E090E00E940C2281 +:1044900060914B0187E090E00E940C2260914A01FC +:1044A00088E090E00E940C226091490189E090E050 +:1044B0000E940C2260917F018AE090E00E940C2211 +:1044C000609148018BE090E00E940C2260914D01C8 +:1044D0008CE090E00E940C2260910A038DE090E055 +:1044E0000E940C22609142018EE090E00E940C221A +:1044F00060914E018FE090E00E940C226091E902F1 +:1045000080E190E00E940C226091070381E190E03D +:104510000E940C226091EB0282E190E00E940C224A +:104520006091EA0283E190E00E940C2284E1E82E8F +:10453000F12C10E006E0809142011817B8F5109FA9 +:1045400060011124D0E0C0E0FE01EC0DFD1DE15B37 +:10455000FE4F6081C7018C0F9D1F0E940C22219687 +:10456000C630D10589F7670186E0C80ED11C88E006 +:10457000189FE0011124CE5FDE4F8EE0E80EF11CA3 +:1045800069812296C6010E940C22560182E0A80E83 +:10459000B11CFE0132976081C60101960E940C2277 +:1045A0006501AE14BF0461F71F5FC5CFDF91CF91E6 +:1045B0001F910F91FF90EF90DF90CF90BF90AF9041 +:1045C00008958F929F92AF92BF92CF92DF92EF9217 +:1045D000FF92CF936FEF70E089E00E94AB168BEAF9 +:1045E00094E00197F1F78EE00E94B9197C018AE00E +:1045F0000E9418169091C202981729F091E09093AA +:1046000002038093C202809101019FEF980F909363 +:104610000101811106C00E94E7199093090380935C +:1046200008036091B9077091BA078091BB07909118 +:10463000BC070E94DE3789E00E94AB168090E5023D +:104640009090E602A090E702B090E802B70190E0F7 +:1046500080E00E946735A50194010E94FF362DEC91 +:104660003CEC4CE45DE30E94C835A50194010E9436 +:1046700000376093E5027093E6028093E70290931F +:10468000E8020E94D81D60910E0370910F0390E024 +:1046900080E00E9467356B017C012091B507309165 +:1046A000B6074091B7075091B8070E946235811153 +:1046B000B6C02091FE023091FF024091000350915C +:1046C0000103C701B6010E94FF366B017C0120E0A7 +:1046D00030E0A9010E94143818160CF096C020E0B2 +:1046E00030E040EA50E4C701B6010E9414381816C1 +:1046F0000CF495C06091FC027091FD0290E080E0A6 +:104700000E9467352091FE023091FF024091000324 +:10471000509101030E94FF366B017C0120E030E0E4 +:10472000A9010E94143818160CF088C0C701B60100 +:104730000E94E5376530710508F084C080918001E2 +:10474000811105C080914C0181110E949E1A81E067 +:104750008093800110924C0180910E0390910F0381 +:10476000853F21E0920710F0109200012091000196 +:10477000211141C0843F9140F0F56FEF70E089E076 +:104780000E94AB160E949E1AC1E0C09300010E94D5 +:104790002F210E942022C09302038EE00E94B919AB +:1047A000BC0190E080E00E9467356093E502709361 +:1047B000E6028093E7029093E8021092F60280915D +:1047C000FC029091FD022CE231E03093170320931C +:1047D000160320E233E030931503209314032AE0FC +:1047E00030E03093130320931203880F991F9093A6 +:1047F000110380931003CF91FF90EF90DF90CF9043 +:10480000BF90AF909F908F90089520E030E040EAF5 +:1048100050ECC701B6010E94623587FF6BCF6091F3 +:10482000FE027091FF0280910003909101030E94AB +:10483000E53770930F0360930E035CCFC701B60199 +:10484000905876CF1092800187CF0C9486362F92A5 +:104850003F924F925F926F927F928F929F92AF9210 +:10486000BF92CF92DF92EF92FF920F931F93CF935D +:10487000DF938C0186E080930F0881E080930E081F +:1048800010920D086091D5027091D602072E000C8F +:10489000880B990B0E9469352B013C014FECC42E0B +:1048A00042E0D42E7601C2E0D0E05AE0A52EB12C31 +:1048B000BE010D2E000C880B990B0E9469359B01DF +:1048C000AC0160E070E080E291E40E9419389B0145 +:1048D000AC01C301B2010E946C370E94DE37CB01EC +:1048E000B5010E940E3AF701819391937F012197C0 +:1048F000F8F61093D6020093D502C3ECD2E094E010 +:10490000E92EF12C22E0822E912C3AE0232E312C3C +:10491000B401092C000C880B990B0E9469359B018E +:10492000AC0160E070E080E291E40E9419382B0154 +:104930003C016091D5027091D602072E000C880BC5 +:10494000990B0E946935A30192010E946C370E9465 +:10495000DE37CB01B1010E940E3AF6012081318190 +:10496000821B930BF2E3F89FB001F99F700D1124A5 +:10497000072E000C880B990B0E946935288139811C +:104980004A815B810E9400372B013C0120E030E02E +:10499000A9010E94623581117CC0488259826A82D5 +:1049A0007B8201E022E346E270E060E0C701049709 +:1049B0000E948C138EECA82EBB24BA940FEF1FEF2D +:1049C000288139814A815B8160E070E080E890E471 +:1049D0000E94FF362B013C01B5010B2C000C880B0B +:1049E000990B0E9469359B01AC01C301B2010E9481 +:1049F00000370E94DE37F0920A08E09209087093AF +:104A00000C0860930B08F60160817181600F711FC3 +:104A1000072E000C880B990B0E94D41E0F5F1F4FAE +:104A2000F2E3AF0EB11C0230110551F6249621E0DD +:104A3000821A910882E0C80ED11CECE2EE0EF11C45 +:104A4000F8E8EF16F10409F063CF00E022E040E857 +:104A500070E060E090E080E00E948C1320E140E88C +:104A600060E370E090E080E00E948C13DF91CF91D2 +:104A70001F910F91FF90EF90DF90CF90BF90AF907C +:104A80009F908F907F906F905F904F903F902F906E +:104A90000895C301B20190582DEC3CEC4CE45FE367 +:104AA0000E94C835A30192010E9400376883798370 +:104AB0008A839B8376CF4F925F926F927F928F9281 +:104AC0009F92AF92BF92CF92DF92EF92FF920F939D +:104AD0001F93CF93DF93CDB7DEB72B970FB6F89424 +:104AE000DEBF0FBECDBF90914E01E82FF0E09F01D9 +:104AF000220F331F911126C0F901E55DFD4F408162 +:104B00005181EE24E39400E124E260E370E080E36D +:104B100090E00E94AE132B960FB6F894DEBF0FBE46 +:104B2000CDBFDF91CF911F910F91FF90EF90DF905C +:104B3000CF90BF90AF909F908F907F906F905F903D +:104B40004F900895923009F079C0E356F34E4490A7 +:104B5000F901E352FE4FA080B180F12CE12C04E377 +:104B600010E393E0592E27E0622EE414A0F6F5013D +:104B7000EE0DFF1D449180E1840F833008F45CC08A +:104B800081EF7816D1F082EF7816C1F1403F90F4B2 +:104B9000193710F0085F10E088E0489FA001112449 +:104BA000435E5A4E602F70E028E0812F90E00E9413 +:104BB0006A14185F80EF782E1DC04E39D8F41D3767 +:104BC00010F0085F10E0C02ED12C812E912C459D55 +:104BD000A00111244D5B5C4E23E0B601C4010E948C +:104BE0006A1421E042E453E1B601C40103960E9435 +:104BF0006A141C5F8FEFE81AF80AB7CF4132D0F77A +:104C0000193710F0085F10E0C02ED12C812E912CA6 +:104C1000469DA0011124455A5D4E27E0B601C4010E +:104C20000E946A1421E042E453E1B601C4010796F0 +:104C30000E946A14185FDECF742EDCCF80E390E010 +:104C400090930A088093090884E390E090930C08FD +:104C500080930B0881E080930F08F901EC53F34E29 +:104C600065917491CE0101960E945B35CE0101964B +:104C70000E94831E50CFCF93C82F86E00E94181643 +:104C800021E0892B09F020E02093EC020E945714C8 +:104C90008091100390911103959587950E94272488 +:104CA0008C2F0E945B250E9487170E94FD1986E0C9 +:104CB0000E941816892B51F78091EC028111E6CFE2 +:104CC0000E949E1A8091D5029091D602CF910895AC +:104CD000109217031092160328E037E03093150363 +:104CE0002093140324E630E030931303209312033F +:104CF000880F991F909311038093100387E00E94FF +:104D00003B269C01220F331F309317032093160379 +:104D1000865A9F4F880F991F909315038093140311 +:104D20008AE090E090931303809312033093110371 +:104D30002093100387E00E943B269C01220F331F23 +:104D400030931703209316030996880F991F9093A9 +:104D500015038093140381E090E0909313038093F4 +:104D60001203309311032093100387E00C943B2629 +:104D70002F923F924F925F926F927F928F929F926B +:104D8000AF92BF92CF92DF92EF92FF920F931F9359 +:104D9000CF93DF93182FE091ED02F0E0EB57FE4F39 +:104DA00080818150990B1092170310921603880F7F +:104DB000991F909315038093140381E090E09093E2 +:104DC000130380931203812F90E0880F991F909313 +:104DD00011038093100386E00E94181621E0892BAE +:104DE00009F020E02093EC0210920E0881E08093FD +:104DF0000D0838E3632EE0901003F0901103F59452 +:104E0000E794AE2C6701DD249601211B3109629ED7 +:104E1000C001639E900D1124C80FD91F209709F17E +:104E2000662777276C1B7D0B072E000C880B990BD0 +:104E30000E9469352AE939E949E15FE30E94C835F2 +:104E40001B012C01BE01DD0F880B990B0E946935F7 +:104E50009B01AC01C201B1010E9400370E94DE3704 +:104E6000EB010E9457148601025011094E0185E0A2 +:104E7000B82E93E0792E7A0CC090ED02D12C17FD5C +:104E800020C0F601EB57FE4F808180171106C9F054 +:104E9000C4F0E5E8F1E070E060E0CF0185589140B2 +:104EA0008C159D0534F48191680F711DF6CF1E2D70 +:104EB000A2CF872D8B19680FC401885491090E94D5 +:104EC0000F1ABA940F5F1F4F88E3880E911CB11020 +:104ED000D3CFE5E8F1E090E080E09F012558314034 +:104EE0002C153D0524F42191820F911DF6CF8E0DD6 +:104EF0000E945B250E9487170E94FD1986E00E9490 +:104F00001816892BA1F68091EC028111D0CF0E9456 +:104F10009E1A8A2DDF91CF911F910F91FF90EF90F4 +:104F2000DF90CF90BF90AF909F908F907F906F90C9 +:104F30005F904F903F902F9008951F920F920FB661 +:104F40000F9211242F933F934F935F936F937F930F +:104F50008F939F93AF93BF93EF93FF9388E197E075 +:104F60000E946015FF91EF91BF91AF919F918F913A +:104F70007F916F915F914F913F912F910F900FBE55 +:104F80000F901F9018951F920F920FB60F92112439 +:104F90002F938F939F93EF93FF93E0912807F091C6 +:104FA00029078081E0912E07F0912F0782FD1BC019 +:104FB0009081809131078F5F8F7320913207821724 +:104FC00041F0E0913107F0E0E85EF84F958F809373 +:104FD0003107FF91EF919F918F912F910F900FBE0D +:104FE0000F901F9018958081F4CF1F920F920FB6EB +:104FF0000F9211242F933F938F939F93AF93BF935F +:105000008091D8029091D902A091DA02B091DB028E +:105010003091D70223E0230F2D3758F50196A11DBB +:10502000B11D2093D7028093D8029093D902A09308 +:10503000DA02B093DB028091DC029091DD02A09154 +:10504000DE02B091DF020196A11DB11D8093DC024A +:105050009093DD02A093DE02B093DF02BF91AF9187 +:105060009F918F913F912F910F900FBE0F901F90A6 +:10507000189526E8230F0296A11DB11DD2CF1F92CD +:105080000F920FB60F9211242F933F934F935F937C +:105090006F937F938F939F93EF93FF9383B181706F +:1050A00029B19091E202981709F49DC030E0220FD7 +:1050B000232F221F330B922F8093E2024091E102B3 +:1050C000241709F490C02093E1022091120330913B +:1050D0001303981719F03195219531094091100368 +:1050E000509111036091160370911703240F351F1F +:1050F000261737070CF48BC020911203309113034D +:10510000981719F03195219531094091100350916C +:1051100011036091140370911503240F351F62175A +:1051200073070CF46FC0409112035091130398174A +:1051300019F05195419551092091100330911103B7 +:10514000240F351F309311032093100341E098136F +:1051500040E02091E002421709F440C02091120380 +:1051600030911303981719F0319521953109609109 +:10517000100370911103E0911603F0911703260FAD +:10518000371F2E173F070CF44CC0209112033091AB +:105190001303981719F03195219531096091100387 +:1051A00070911103E0911403F0911503260F371F3E +:1051B000E217F3078CF12091120330911303981733 +:1051C00019F03195219531098091100390911103C7 +:1051D000820F931F90931103809310034093E0027A +:1051E00081E080930203FF91EF919F918F917F91D6 +:1051F0006F915F914F913F912F910F900FBE0F9044 +:105200001F90189520911403309115039BCF209186 +:1052100016033091170396CF8091140390911503D4 +:10522000D9CF8091160390911703D4CF18950F937F +:105230001F93CF93DF93E8E1F7E01382128288EEA9 +:1052400093E0A0E0B0E084839583A683B78389E9E7 +:1052500092E09183808385EC90E09587848784EC4D +:1052600090E09787868780EC90E0918B808B81EC33 +:1052700090E0938B828B82EC90E0958B848B86EC14 +:1052800090E0978B868B118E128E138E148EEDEF1D +:10529000F7E0138212821682178280E180871582DE +:1052A000148212868BEA92E091838083158614869D +:1052B0001786168681E0808B118A828B138AC1EC57 +:1052C000D7E029EB37E03F8F2E8F2DEB37E03D8F76 +:1052D0002C8F25EB37E039A328A31AAE1AAA1BAAF4 +:1052E0001CAA1DAA40E050E06FE773E44EAB5FAB31 +:1052F00068AF79AF44E650E060E070E04EA75FA78A +:1053000068AB79AB21E030E0398F288F3B8F2A8F53 +:105310008BAF80E090E0A0E3B1E488839983AA8317 +:10532000BB8380E090E0A0E0BFE38C839D83AE83ED +:10533000BF8380E090E0A0E8BFE388879987AA87D1 +:10534000BB8780E090E0A0E3B1EC8C879D87AE87BF +:10535000BF878DEC9CECACE4BDEB888B998BAA8B62 +:10536000BB8B80E090E0A0E2B1EC8C8B9D8BAE8B90 +:10537000BF8B0E945F170EA51FA528A939A9601B26 +:10538000710B820B930B6AA37BA38CA39DA3DF916C +:10539000CF911F910F910895CF93DF93CDB7DEB7D3 +:1053A0002C970FB6F894DEBF0FBECDBF789484B5AE +:1053B000826084BD84B5816084BD85B5826085BD11 +:1053C00085B5816085BD80916E00816080936E009F +:1053D0001092810080918100826080938100809191 +:1053E0008100816080938100809180008160809342 +:1053F00080008091B10084608093B1008091B00002 +:1054000081608093B00080917A00846080937A00FC +:1054100080917A00826080937A0080917A00816026 +:1054200080937A0080917A00806880937A0010924D +:10543000C1001092B90088E48093B8000E947D17E3 +:1054400080E00E94731709E712E2F80184910E943C +:1054500073170F5F1F4FF2E208391F07B1F70E9461 +:105460006B1711E01093B8000E94871781E28093B8 +:10547000050860E08EE00E946F1660E08FE00E94F9 +:105480006F1661E085E00E946F1661E089E00E947E +:105490006F1662E087E00E946F1662E088E00E946B +:1054A0006F1662E086E00E946F1662E08AE00E945A +:1054B0006F166FEF70E089E00E94AB1660E085E048 +:1054C0000E94411680917A00876080937A008091D3 +:1054D0007A00886080937A00789410936B00109320 +:1054E00068001BBB90E080E00E942524182F81E01B +:1054F00090E00E942524912F8F31984009F0C9C077 +:1055000082E090E00E942524182F83E090E00E9422 +:105510002524912F909347018093460184E090E0E9 +:105520000E942524182F85E090E00E942524912FC9 +:10553000909345018093440186E090E00E942524E9 +:105540008093430187E090E00E94252480934B01E3 +:1055500088E090E00E94252480934A0189E090E051 +:105560000E942524809349018AE090E00E9425242E +:1055700080937F018BE090E00E94252491E08111CF +:1055800001C090E0909348018CE090E00E942524B7 +:1055900091E0811101C090E090934D018DE090E089 +:1055A0000E94252480930A038EE090E00E94252427 +:1055B000282E809342018FE090E00E942524809362 +:1055C0004E0180E190E00E94252491E0811101C00C +:1055D00090E09093E90281E190E00E94252480937D +:1055E000070382E190E00E942524182F83E190E0D8 +:1055F0000E942524912F9093EB028093EA0252E0BF +:10560000852E51E0952E6FE4A62E61E0B62E74E152 +:10561000E72EF12C312C231409F447C010E000E0F0 +:10562000C701800F911F0E942524F501E00FF11F93 +:1056300080830F5F1F4F0630110591F7670136E039 +:10564000C30ED11C4EE0E40EF11C3401C6010E94D1 +:105650002524082F10E0102F0027D3010D931C9351 +:105660002601B2E04B0E511CC60101960E94252472 +:10567000082BF301019311933F0162014E145F0463 +:1056800029F73394F8E08F0E911C26E0A20EB11C8E +:10569000C2CF68E090E080E00E940C226FE181E0E0 +:1056A00090E00E940C220E9420221091E90280ECDE +:1056B000111101C088EC0E94A41780EA111101C0E9 +:1056C00081EA0E94A4171092030380E280930403EE +:1056D00080E48093050380E6809306038091EA02CC +:1056E0009091EB02892B19F10E94571467E088E230 +:1056F00090E00E940F1A87E00E945B250E948717A6 +:1057000068EE73E080E090E00E942D170E949E1AE0 +:105710000E949E1A0E949E1A90E080E00E946826D5 +:105720002091EA023091EB0282179307E9F60E947A +:105730003F199093E4028093E3020E94E71990934B +:1057400009038093080300914601109147011093CB +:10575000FD020093FC028EE00E94B919BC0190E0AA +:1057600080E00E9467356093E5027093E6028093C3 +:10577000E7029093E8020E947B190E94D81D20E066 +:1057800030E040EA51E46091FE027091FF028091A6 +:105790000003909101030E9400376B017C01B80166 +:1057A00090E080E00E9467359B01AC01C701B60123 +:1057B0000E94623587FF05C070E060E089E00E94CA +:1057C000AB161092F3071092F4071092F50710929F +:1057D000F607412C512C3FE7632E33E4732E4092A1 +:1057E000F7075092F8076092F9077092FA07A090B5 +:1057F000DF07B090E0078091FB07D501CD90DD90E9 +:10580000ED90FC90882311F40C948A34A30192014A +:10581000C701B6010E941438181634F5F50140820C +:105820005182628273828090E7079090E807A0908F +:10583000E907B090EA07C090F707D090F807E0902A +:10584000F907F090FA07A7019601C501B4010E947B +:1058500014381816CCF4C092E707D092E807E0920B +:10586000E907F092EA0720C020E030E0A901C70173 +:10587000B6010E94623587FFD6CFD5011D921D92D9 +:105880001D921C921397CFCFC090F307D090F407CE +:10589000E090F507F090F607A7019601C501B40165 +:1058A0000E94623587FDD7CF81E08093FB0783B1EB +:1058B00081708093E20289B190E0880F892F881F60 +:1058C000990B8093E1022091E2029091E10281E044 +:1058D000291380E08093E0028CE291E0909317031B +:1058E0008093160380E293E0909315038093140352 +:1058F0008AE090E09093130380931203000F111F2E +:1059000010931103009310030E945F176093F80235 +:105910007093F9028093FA029093FB020E949E1A00 +:105920000E949E1A2090100330901103F101F5950A +:10593000E795FA87E987F093FD02E093FC0286E0A1 +:105940000E941816482E8111A0C08091F60288236B +:1059500009F49BC00E949E1A0E945F176B017C0194 +:10596000C092F202D092F302E092F402F092F502B9 +:1059700086E00E941816892B59F40E945F176C1953 +:105980007D098E099F09643F71408105910580F36F +:105990000E945F176C197D098E099F09643F714051 +:1059A0008105910508F46DC46FEF70E089E00E94F5 +:1059B000AB160E949E1A512CAAE06A2E712C1092EE +:1059C000ED02852D0E94B826582E39E0381708F4CC +:1059D00039C0E82FF0E0E151F34D0C94223A0B2D41 +:1059E000B82F32309E30AC30DD30EB300C31173117 +:1059F000213120E030E0A901C701B6010E946235E3 +:105A000087FF52CF1092E7071092E8071092E9073C +:105A10001092EA0749CFF6E0FF2E81E08093ED0275 +:105A2000852D0E94B826582E42E0841709F439C209 +:105A3000481708F4E9C0882309F413C151E0851719 +:105A400009F412C10E94202281E080930203E985BB +:105A5000FA85F093FD02E093FC028CE291E09093D2 +:105A600017038093160380E293E0909315038093CD +:105A700014038AE090E09093130380931203C10112 +:105A80008E7F90931103809310034092F6028091D1 +:105A90000B03882309F1109149011123E9F00E94B9 +:105AA0005F17C090EE02D090EF02E090F002F0900D +:105AB000F1026C197D098E099F0928EE33E040E060 +:105AC00050E00E94CE36211738F010920B030E944E +:105AD0009E1A81E080934C01809102038823F1F1AA +:105AE00080910C03882351F120E030E040EA51E43A +:105AF0006091FE027091FF0280910003909101037A +:105B00000E9400376B017C016091FC027091FD02E4 +:105B100090E080E00E9467359B01AC01C701B601AF +:105B20000E94623587FF05C070E060E089E00E9456 +:105B3000AB160E949E1A81E080934C0110920203E2 +:105B400010920C0310920D030E945F176093F802ED +:105B50007093F9028093FA029093FB020E945F1700 +:105B60000091F8021091F9022091FA023091FB02A3 +:105B7000601B710B820B930B20E63AEE40E050E085 +:105B80000E94CE36122F2093F70280910C038111D0 +:105B90000BC080914B01882339F0281728F081E051 +:105BA00080930C030E949E1A80910D0381110BC0FB +:105BB00080914A01882339F0181728F081E08093FA +:105BC0000D030E949E1A0E94E1220E94AB1B0E94BC +:105BD0005F1780910608F62FF81B8F2F909107080A +:105BE000992309F464C3F09308081092070880E031 +:105BF00090E0892B09F496CE0E944C15882309F475 +:105C000091CE0E9400008ECE63E0861709F44CC14D +:105C100084E0581217CF80914201883008F0FDCE01 +:105C200091E0980F9093420180930A030E94BC1A5E +:105C3000E0910A03B8E0EB9FF0011124EE5FFE4F04 +:105C400028ED30E03183208344E351E053834283E5 +:105C500086E891E095838483AEE1B0E0B783A683C4 +:105C6000DCCE0E942F21D9CE8E010F5F1F4F612CF9 +:105C7000712C4301639478EEC72E73E0D72EAA24CB +:105C8000A394B12CEE24E394E0910A0394E0E99FFD +:105C9000F0011124C3010197E80FF91FEE0FFF1F58 +:105CA000EE5FFE4F808191819093FD028093FC0214 +:105CB000A8ECB0E0B0931703A0931603D09215039D +:105CC000C0921403B0921303A0921203880F991F7D +:105CD0009093110380931003E0924C0186E00E94A0 +:105CE000181621E0892B09F020E02093EC020E9495 +:105CF0005714B2E0B0930F080E94E1220E94AB1B40 +:105D000010920A081092090810920C0810920B08C1 +:105D10008EEB92E20E941B19C401B3010E94D41EB3 +:105D20008FEB92E00E94831E8091800110920A08FE +:105D300010920908882309F48CC0E0E1F0E0F093A8 +:105D40000C08E0930B0881EB92E20E941B19109261 +:105D50000A081092090820E230E030930C082093E2 +:105D60000B088AEA92E20E941B196091100370915D +:105D7000110375956795072E000C880B990B0E94EF +:105D8000D41E0E94FD190E94871786E00E941816F3 +:105D9000892B09F0ACCF8091EC028111A8CF8091C2 +:105DA00010039091110395958795D8018D939D933C +:105DB0008D010E949E1A6AE070E080E090E00E94EF +:105DC0002D17BFEF6B1A7B0A8B0A9B0AE4E06E1655 +:105DD00071048104910409F057CF6FEF70E089E0FE +:105DE0000E94AB168BEA94E00197F1F70E947B19B1 +:105DF0000E94E5373B0178876F83A980BA800B81C9 +:105E00001C81C5014E968017910708F006CECD8003 +:105E1000DE80C8014E968C159D0508F0FECD87E00A +:105E20008093ED0280E00E94B826882309F4F5CD26 +:105E3000E0910A0328E0E29FF0011124EE5FFE4F9B +:105E4000B182A08213830283D582C4827782668264 +:105E5000E4CD40E150E050930C0840930B0884EAF5 +:105E600092E20E941B196091E5027091E602809116 +:105E7000E7029091E8020E94E53790E080E04AE076 +:105E80000E94901E10920A081092090880E290E089 +:105E900090930C0880930B0888E992E20E941B19EA +:105EA00070CF0E94BC1AB9CD87E08093ED0280913B +:105EB0004201813009F4B1CD80E00E94B8268823E8 +:105EC00009F4ABCD80910A0390914201492F4150D2 +:105ED000550B9A018417150639F4815080930A03F3 +:105EE00091509093420199CDE82FF0E0E217F3072B +:105EF000BCF78F9D8001112450E040E06F016FEFEF +:105F0000C61AD60AB801640F751F615B7E4FDB01AC +:105F10001696EC901697EC924F5F5F4F4630510506 +:105F200089F7D60113E0AA0FBB1F1A95E1F7AE5F00 +:105F3000BE4F4D915C91119703E0EE0FFF1F0A9544 +:105F4000E1F7EE5FFE4F5183408312964D915C91D5 +:105F500013975383428314964D915C911597558303 +:105F6000448316964D915C91578346838F5FBCCFD7 +:105F700082E08093ED0210E0E8E2CE2ED12CFCE22C +:105F8000AF2EBB24B394A0E28A2EA3E09A2EB4E1F4 +:105F9000EB2EF12C812F0E94B826182F813029F189 +:105FA00030F0823009F441C00E94202208CD809157 +:105FB000460190914701B0921703A0921603909268 +:105FC0001503809214037092130360921203880FDA +:105FD000991F909311038093100381E10E943B2647 +:105FE0009093470180934601D5CF809144019091D1 +:105FF0004501D0921703C0921603E0E9F1E0F09357 +:106000001503E09314037092130360921203880F38 +:10601000991F909311038093100382E10E943B2605 +:106020009093450180934401B5CF8091430190E066 +:10603000F0921703E092160328EC30E0309315033A +:10604000209314037092130360921203880F991F18 +:10605000909311038093100383E10E943B26809369 +:10606000430198CF83E08093ED02F12C01E010E032 +:106070008F2D0E94B826F82E31E0831709F43FC017 +:10608000831700F142E084138FCF8091490190E0A3 +:10609000109217031092160348E651E0509315032F +:1060A000409314037092130360921203880F991F98 +:1060B000909311038093100387E10E943B26809305 +:1060C0004901D6CF80914B0190E0109217031092B6 +:1060D0001603ACE3B0E0B0931503A0931403109340 +:1060E000130300931203880F991F90931103809359 +:1060F000100385E10E943B2680934B01B9CF80912C +:106100004A0190E01092170310921603E8E7F0E0BE +:10611000F0931503E093140325E030E0309313036C +:1061200020931203880F991F9093110380931003FB +:1061300086E10E943B2680934A019ACF84E08093B7 +:10614000ED02809148010E94B82691E0811101C0C2 +:1061500090E09093480133CC10E0A9E0EA2EB5E03E +:10616000DB2EE092ED02812F0E94B826182F8823A3 +:1061700021F08130E1F000E009C0D092ED02809181 +:106180007F010E94B82680937F0101E0F090E90230 +:1061900080ECF11001C088EC0E94A41780EAF11095 +:1061A00001C081EA0E94A4170111DBCFFDCE8091CE +:1061B000E90281278093E902E8CF86E08093ED022F +:1061C00080914D010E94B82691E0811101C090E0BC +:1061D00090934D01F4CB8091070390E01092170348 +:1061E00010921603A4EFB1E0B0931503A09314032B +:1061F00021E030E03093130320931203880F991F9E +:10620000909311038093100386E00E943B268093B5 +:1062100007030E949E1AD3CB8091EA029091EB0271 +:106220000E9468269093EB028093EA02F2CF88E006 +:106230008093ED0280914E010E94B82680934E011A +:10624000BECB0E945714EE24E39400E320E345EC18 +:1062500052E270E060E088E290E00E94AE130E949B +:10626000871764E670E080E090E00E942D1786E0DA +:106270000E941816892BD9F78091EC028111F7CF73 +:10628000C8CF80910B0391E0892780930B0388236B +:1062900051F00E945F176093EE027093EF028093BB +:1062A000F0029093F10281E080930203EECB909193 +:1062B0000508F91748F48F5F891708F098CC81E03A +:1062C00083BF889513BE93CC81E0809307086093C9 +:1062D00006088091010890910208019690930208A7 +:1062E00080930108A0900E03B0900F0325EFA21633 +:1062F00021E0B20608F023C180910D03882309F440 +:10630000FCC06FEF70E089E00E94AB160E9457144A +:1063100003E013E072E0872E912CA12CB12CE3E076 +:106320004E2E512C612C712C0E940335A501940135 +:106330000E949C36AB01BC014150510961097109B1 +:10634000D8018C91682F640F613808F04BC06C93B2 +:10635000312C0E940335C32CD12CF12CE12CA3014C +:1063600092010E949C366D5F7F4F8F4F9F4FA70118 +:1063700096012617370748075907C4F5D801EC904E +:10638000F12C0E94033524E130E040E050E00E940F +:106390009C366A507109810991096E0D7F1D603428 +:1063A000710530F421E040E890E080E00E94B117F0 +:1063B000F801E080F12C0E94033524E130E040E058 +:1063C00050E00E949C36DC01CB010A97A109B1097B +:1063D0008E0D9F1D21E040E470E060E00E94631399 +:1063E0003394B7CF6058F8016083B2CF0F5F1F4F6F +:1063F000F3E007301F0709F097CF0E945F170E9454 +:10640000673520E030E04AE755E40E946C370E948F +:1064100069386B017C0120E030E040E853E40E94E1 +:10642000C83520E030E040E853E40E9400372B01FB +:106430003C0110E000E0B801012E000C880B990B24 +:106440000E946935A30192010E94623587FF25C031 +:106450000E9403354B015C010E94033569877A87EE +:106460008B879C87C501B40120E430E040E050E018 +:106470000E949C364B0169857A858B859C8520E836 +:1064800030E040E050E00E949C36CB0141E0B40196 +:106490000E9445130F5F1F4FCECF80914D0188237F +:1064A00049F10E94033520E130E040E050E00E94D5 +:1064B0009C3668507109810991090E9469354B0128 +:1064C0005C0120E030E040E852E4C701B6010E94E0 +:1064D000C83520E030E040E852E40E9400379B01DC +:1064E000AC01C501B4010E9400370E94DE3785E08F +:1064F0000E94AB160E9487177ACB80910C0312E0A2 +:1065000081111EC080910B0313E0811119C080918D +:10651000800114E0811114C020E030E044E353E432 +:106520006091B9077091BA078091BB079091BC0741 +:106530000E94623515E087FD03C016E001C010E03F +:1065400080917F01882309F481C10E94571401E0E2 +:1065500020E440E870E060E090E080E00E948C136E +:1065600081E080930F0880930E0810920D08E12CB3 +:1065700000E120E143E554E270E060E090E080E07B +:106580000E94AE1383E190E090930A08809309087B +:1065900084E090E090930C0880930B0880910A03AC +:1065A00026E0829FC0011124815B9E4F0E94831EC2 +:1065B00085E390E090930A088093090881E090E0D9 +:1065C00090930C0880930B0882E080930F08C12EF3 +:1065D000D12C80914E01CC0CDD1C8111EAC0F6015A +:1065E000E957FD4F408151810EE02CE161E070E000 +:1065F00080E590E00E94AE13F601E758FD4F408120 +:106600005181E12C0EE02EE061E070E081E790E046 +:106610000E94AE1381E080930F080E947B1920E056 +:1066200030E040EA52E40E94143818160CF4E0C03E +:10663000E12C0EE02EE041E154E262E170E082E004 +:1066400090E00E94AE13609108037091090390E0FE +:1066500080E00E94673520E030E048EC52E40E9480 +:106660006C376B017C016091070370E090E080E083 +:106670000E9469359B01AC01C701B6010E946235D9 +:1066800087FDCAC0E12C0EE02EE045EF53E262E246 +:1066900070E082E090E00E94AE1303E110E01093FE +:1066A0000A080093090840E150E050930C08409319 +:1066B0000B080E947B1941E00E94FE1E88EF0E9499 +:1066C000361983EF93E20E941B1910930A08009376 +:1066D000090888E190E090930C0880930B080E94D1 +:1066E0003F19BC0190E080E00E94673520E030E077 +:1066F0004AE754E40E946C3742E00E94FE1E81EF9C +:1067000093E20E941B1910930A080093090880E283 +:1067100090E090930C0880930B08609108037091AF +:10672000090390E080E00E94673520E030E04AE70E +:1067300054E40E946C3741E00E94FE1E8FEE93E20B +:106740000E941B1910930A080093090888E290E040 +:1067500090930C0880930B0889EE93E20E941B191A +:1067600089E390E090930A088093090882E190E021 +:1067700090930C0880930B0884E080930F0860913D +:106780000E0370910F03653F91E0790708F458C03C +:1067900085EE93E20E941B1900E020E248E460E1EC +:1067A00070E087E390E00E94E81780E00E94D61F27 +:1067B000A1CE83E494E21330C1F058F48FE494E264 +:1067C000113099F089E494E2123079F08DE294E28C +:1067D0000CC088E394E2153041F08DE394E215306B +:1067E00020F083E394E2163089F70E941B1904CF4E +:1067F0000E945F1752E0660F771F881F991F5A95F6 +:10680000D1F728EE33E040E050E00E94CE3620FF82 +:106810000FCF0E949E1A17CF0E945F1742E0660FAB +:10682000771F881F991F4A95D1F728EE33E040E083 +:1068300050E00E94CE3620FF25CF0E949E1A2DCF19 +:1068400090E080E04AE00E94901EA6CF0E9457147C +:106850000E947B1920E030E040EA52E40E941438A4 +:10686000181694F40E945F1732E0660F771F881F96 +:10687000991F3A95D1F728EE33E040E050E00E94AE +:10688000CE3620FD0E949E1A609108037091090384 +:1068900090E080E00E94673520E030E048EC52E470 +:1068A0000E946C376B017C016091070370E090E0FF +:1068B00080E00E9469359B01AC01C701B6010E94CE +:1068C000623587FF12C00E945F1722E0660F771FB4 +:1068D000881F991F2A95D1F728EE33E040E050E059 +:1068E0000E94CE3620FD0E949E1A87EE93E0A5EF0F +:1068F000AA16A1E0BA0608F4C5010E94272400E008 +:1069000023E040E860E370E090E080E00E948C13B8 +:1069100081E04CCFC092E707D092E807E092E90708 +:10692000F092EA07E091DD07F091DE078081918126 +:10693000A281B3818093EB079093EC07A093ED07BE +:10694000B093EE0720E030E04FE753E4C701B60113 +:106950000E94143818160CF04CC84092E707509269 +:10696000E8076092E9077092EA070C94542C8F9222 +:106970009F92AF92BF92CF92DF92EF92FF92CF930E +:10698000DF93EC01688179818A819B8161157105B2 +:106990008105910521F464E279ED8BE597E02DE125 +:1069A00033EF41E050E00E949C3649015A019B01BF +:1069B000AC01A7EAB1E40E94BB366B017C01ACEEEE +:1069C000B4EFA50194010E94C936C60ED71EE81E79 +:1069D000F91EF7FE06C081E0C81AD108E10880E878 +:1069E000F80AC882D982EA82FB82C701B6019F7782 +:1069F000DF91CF91FF90EF90DF90CF90BF90AF905D +:106A00009F908F9008958F929F92AF92BF92CF9256 +:106A1000DF92EF92FF9260918101709182018091EB +:106A2000830190918401611571058105910521F41F +:106A300064E279ED8BE597E02DE133EF41E050E042 +:106A40000E949C3649015A019B01AC01A7EAB1E4BE +:106A50000E94BB366B017C01ACEEB4EFA501940142 +:106A60000E94C936C60ED71EE81EF91EF7FE06C0E4 +:106A700081E0C81AD108E10880E8F80AC0928101D3 +:106A8000D0928201E0928301F0928401C701B601A5 +:106A90009F77FF90EF90DF90CF90BF90AF909F9047 +:106AA0008F90089560938101709382018093830198 +:106AB000909384010895FB01DC0105900D92002064 +:106AC000E1F708950E94A43508F481E00895E89460 +:106AD00009C097FB3EF490958095709561957F4F26 +:106AE0008F4F9F4F9923A9F0F92F96E9BB279395D4 +:106AF000F695879577956795B795F111F8CFFAF4E4 +:106B0000BB0F11F460FF1BC06F5F7F4F8F4F9F4F14 +:106B100016C0882311F096E911C0772321F09EE872 +:106B2000872F762F05C0662371F096E8862F70E0D8 +:106B300060E02AF09A95660F771F881FDAF7880FB2 +:106B40009695879597F90895990F0008550FAA0B08 +:106B5000E0E8FEEF16161706E807F907C0F0121670 +:106B60001306E407F50798F0621B730B840B950B73 +:106B700039F40A2661F0232B242B252B21F40895C8 +:106B80000A2609F4A140A6958FEF811D811D089565 +:106B90000E94DB350C944C360E943E3638F00E9441 +:106BA000453620F0952311F00C9435360C943B3685 +:106BB00011240C9480360E945D3670F3959FC1F3CA +:106BC000950F50E0551F629FF001729FBB27F00D9B +:106BD000B11D639FAA27F00DB11DAA1F649F6627F0 +:106BE000B00DA11D661F829F2227B00DA11D621F3F +:106BF000739FB00DA11D621F839FA00D611D221FF9 +:106C0000749F3327A00D611D231F849F600D211DDC +:106C1000822F762F6A2F11249F5750409AF0F1F05F +:106C200088234AF0EE0FFF1FBB1F661F771F881FC8 +:106C300091505040A9F79E3F510580F00C94353695 +:106C40000C9480365F3FE4F3983ED4F386957795B5 +:106C50006795B795F795E7959F5FC1F7FE2B880F6E +:106C6000911D9695879597F9089597F99F6780E804 +:106C700070E060E008959FEF80EC089500240A948E +:106C80001616170618060906089500240A94121607 +:106C90001306140605060895092E0394000C11F43A +:106CA000882352F0BB0F40F4BF2B11F460FF04C0E7 +:106CB0006F5F7F4F8F4F9F4F089557FD9058440F40 +:106CC000551F59F05F3F71F04795880F97FB991F4B +:106CD00061F09F3F79F08795089512161306140608 +:106CE000551FF2CF4695F1DF08C016161706180695 +:106CF000991FF1CF86957105610508940895E89470 +:106D0000BB2766277727CB0197F90895F999FECF1E +:106D100092BD81BDF89A992780B50895262FF999DB +:106D2000FECF1FBA92BD81BD20BD0FB6F894FA9A6E +:106D3000F99A0FBE01960895052E97FB1EF4009454 +:106D40000E94B33657FD07D00E94CE3607FC03D011 +:106D50004EF40C94B33650954095309521953F4FA5 +:106D60004F4F5F4F089590958095709561957F4F37 +:106D70008F4F9F4F08950E94F036A59F900DB49FAE +:106D8000900DA49F800D911D11240895B7FF0C94C0 +:106D9000BB360E94BB36821B930B0895A1E21A2ECC +:106DA000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FAF +:106DB000A217B307E407F50720F0A21BB30BE40BFF +:106DC000F50B661F771F881F991F1A9469F7609546 +:106DD0007095809590959B01AC01BD01CF01089500 +:106DE000A29FB001B39FC001A39F700D811D11240C +:106DF000911DB29F700D811D1124911D0895505851 +:106E0000BB27AA270E9417370C944C360E943E36A7 +:106E100038F00E94453620F039F49F3F19F426F4EB +:106E20000C943B360EF4E095E7FB0C943536E92FD5 +:106E30000E945D3658F3BA176207730784079507F7 +:106E400020F079F4A6F50C947F360EF4E0950B2E25 +:106E5000BA2FA02D0B01B90190010C01CA01A001AC +:106E60001124FF27591B99F0593F50F4503E68F107 +:106E70001A16F040A22F232F342F4427585FF3CF48 +:106E8000469537952795A795F0405395C9F77EF419 +:106E90001F16BA0B620B730B840BBAF09150A1F062 +:106EA000FF0FBB1F661F771F881FC2F70EC0BA0FE8 +:106EB000621F731F841F48F4879577956795B79570 +:106EC000F7959E3F08F0B0CF9395880F08F099276B +:106ED000EE0F9795879508950E9480370C944C3655 +:106EE0000E94453658F00E943E3640F029F45F3F3C +:106EF00029F00C94353651110C9480360C943B36A5 +:106F00000E945D3668F39923B1F3552391F3951BE5 +:106F1000550BBB27AA2762177307840738F09F5FBA +:106F20005F4F220F331F441FAA1FA9F335D00E2E27 +:106F30003AF0E0E832D091505040E695001CCAF794 +:106F40002BD0FE2F29D0660F771F881FBB1F261757 +:106F500037074807AB07B0E809F0BB0B802DBF012E +:106F6000FF2793585F4F3AF09E3F510578F00C94FD +:106F700035360C9480365F3FE4F3983ED4F3869523 +:106F800077956795B795F7959F5FC9F7880F911D1E +:106F90009695879597F90895E1E0660F771F881F0A +:106FA000BB1F621773078407BA0720F0621B730BBD +:106FB000840BBA0BEE1F88F7E09508950E94E53721 +:106FC0006894B1110C94803608950E94653688F05B +:106FD0009F5798F0B92F9927B751B0F0E1F0660F9D +:106FE000771F881F991F1AF0BA95C9F714C0B130DE +:106FF00091F00E947F36B1E008950C947F36672FA0 +:10700000782F8827B85F39F0B93FCCF3869577950C +:107010006795B395D9F73EF49095809570956195F5 +:107020007F4F8F4F9F4F08950E94A43508F48FEF34 +:107030000895FA01EE0FFF1F309621053105A1F1E9 +:107040006115710561F48038BFE39B0749F16894CD +:107050009038810561F08038BFEF9B0741F099239C +:107060004AF5FF3FE1053105210519F1E89408943F +:10707000E795D901AA2329F4AB2FBE2FF85FD0F3EF +:1070800010C0FF5F70F4A695E0F7F73950F019F0E3 +:10709000FF3A38F49F779F930DD00F9007FC9058DC +:1070A000089546F00C943B3660E070E080E89FE382 +:1070B00008954FE79F775F934F933F932F930E94DD +:1070C00060392F913F914F915F910E94C8350C9488 +:1070D0007E389F930E94D9380F9007FCEE5F0C9486 +:1070E00002390E94A435880B990B089529F416F0F3 +:1070F0000C9435360C947F360C943B360E946536E2 +:10710000A8F39638A0F707F80F92E8942BE33AEA31 +:1071100048EB5FE70E94DE350F920F920F924DB75A +:107120005EB70F920E94A839E8E6F0E00E94B038FE +:107130004F915F91EF91FF91E595EE1FFF1F49F091 +:10714000FE57E0684427EE0F441FFA95E1F741959A +:10715000550B0E9422390F9007FE0C9416390895A2 +:10716000DF93CF931F930F93FF92EF92DF927B01F8 +:107170008C01689406C0DA2EEF010E94DB35FE0117 +:10718000E894A5912591359145915591A6F3EF018C +:107190000E941737FE019701A801DA9469F7DF9082 +:1071A000EF90FF900F911F91CF91DF9108950C9474 +:1071B0003B360E946536D8F3E894E0E0BB279F5742 +:1071C000F0F02AED3FE049EC06C0EE0FBB0F661F62 +:1071D000771F881F28F0B23A62077307840728F0E8 +:1071E000B25A620B730B840BE3959A9572F7803851 +:1071F00030F49A95BB0F661F771F881FD2F790480F +:107200000C94DE39EF93E0FF07C0A2EA2AED3FE0DD +:1072100049EC5FEB0E9417370E944C360F900394A5 +:1072200001FC9058E0E9F0E00C94EA399B01AC01D4 +:1072300060E070E080E89FE30C946C370C94353686 +:107240000C94DC390E946536D8F39923C9F3940F66 +:10725000511DA3F39150504094F059F0882332F01F +:10726000660F771F881F91505040C1F79E3F510510 +:107270002CF7880F911D9695879597F908955F3F94 +:10728000ACF0983E9CF0BB27869577956795B795AF +:1072900008F4B1609395C1F7BB0F58F711F460FF84 +:1072A000E8CF6F5F7F4F8F4F9F4FE3CF0C948036B7 +:1072B00016F00C94DC390C943B3668940C943536FB +:1072C0000E946536A8F39923C1F3AEF3DF93CF9301 +:1072D0001F930F93FF92C92FDD2788232AF0219750 +:1072E000660F771F881FDAF720E030E040E85FEB99 +:1072F0009FE3883920F0803E38F021968F770E94F6 +:107300000037EEEAF0E004C00E940037EBEDF0E059 +:107310000E94B0388B01BE01EC01FB2E6F57710942 +:107320007595771F880B990B0E94693528E132E724 +:1073300041E35FE30E94DB35AF2D9801AE01FF9082 +:107340000F911F91CF91DF910E9417370C944C360B +:10735000FA01DC01AA0FBB1F9B01AC01BF5728F447 +:10736000222733274427507820C0B75190F4AB2F01 +:107370000024469537952795011CA395D2F300204C +:1073800071F0220F331F441FB395DAF30ED00C9423 +:10739000FF3661307105A0E88A07B94630F49B01D9 +:1073A000AC016627772788279078309621F02083D4 +:1073B00031834283538308959F3F31F0915020F4ED +:1073C000879577956795B795880F911D96958795C1 +:1073D00097F908959F938F937F936F93FF93EF9304 +:1073E0009B01AC010E94C835EF91FF910E94B0381B +:1073F0002F913F914F915F910C94C835DB018F9392 +:107400009F930E94BB36BF91AF91A29F800D911DAB +:10741000A39F900DB29F900D1124089597FB072E06 +:1074200016F4009407D077FD09D00E94283A07FC93 +:1074300005D03EF4909581959F4F08957095619584 +:107440007F4F0895EE0FFF1F0590F491E02D0994F2 +:10745000AA1BBB1B51E107C0AA1FBB1FA617B7077A +:1074600010F0A61BB70B881F991F5A95A9F7809596 +:107470009095BC01CD01089581E090E0F8940C94C2 +:10748000413AF894FFCF01FFD800340186011E0075 +:1074900000000000000000000000000000000000EC +:1074A00000000000000000000000000000000000DC +:1074B00000000000000000000000000000000000CC +:1074C0000000000000000000013C9600400101287F +:1074D0000F050101014243312E350000000000007C +:1074E000000000000000000000000000000000009C +:1074F000000000000000000000000000000000008C +:1075000000000000000101010000000B060404025D +:1075100002020203031804FC03E003C403A8038C63 +:10752000037003540338031C030003E402C8021869 +:1075300004AC0290027402180458023C027402580F +:107540000220023C0274020402E801CC01B0019462 +:10755000018C03780100035C0140012401A80308A9 +:10756000017402ED04E804E304DC04D604D204C987 +:1075700004C604C304BE04BA04B104A7049F049C57 +:10758000049904960490048D048804850482047D83 +:1075900004780475046F046B04670462045D045985 +:1075A00004540450044C04490445043C0437043496 +:1075B00004CF0F7F0F2F0FDF0E8F0E3F0EEF0D9FAB +:1075C0000D4F0DFF0CAF0CCF0F5F0C0F0CBF0B6FEF +:1075D0000B1F0BCF0A7F0A2F0A1F0B7F0ADF092F11 +:1075E0000A1F0B8F093F09EF089F084F08FF07AFDD +:1075F000075F070F07BF066F061F06CF051F0BAFFC +:107600001093107310F52357103B101F101B12E33B +:1076100011AB1173113B110311CB1000000000825C +:1076200015E2140F15CF1540151E15321500000078 +:10763000001918E2143C193B196E616E00696E6600 +:08764000006F7666002F330095 +: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 +:00000001FF diff --git a/software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t1.ino b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t1/SolderingStation2_arduboy_gplib_v1.7t1.ino similarity index 100% rename from software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t1.ino rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t1/SolderingStation2_arduboy_gplib_v1.7t1.ino diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t1/T12.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t1/T12.ino.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t1/T12.ino.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t1/T12.ino.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t1/T12.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t1/T12.ino.with_bootloader.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t1/T12.ino.with_bootloader.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t1/T12.ino.with_bootloader.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t2.ino b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t2/SolderingStation2_arduboy_gplib_v1.7t2.ino similarity index 100% rename from software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t2.ino rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t2/SolderingStation2_arduboy_gplib_v1.7t2.ino diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t2/T12.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t2/T12.ino.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t2/T12.ino.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t2/T12.ino.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t2/T12.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t2/T12.ino.with_bootloader.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t2/T12.ino.with_bootloader.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t2/T12.ino.with_bootloader.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t3.ino b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t3/SolderingStation2_arduboy_gplib_v1.7t3.ino similarity index 100% rename from software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t3.ino rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t3/SolderingStation2_arduboy_gplib_v1.7t3.ino diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t3/T12.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t3/T12.ino.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t3/T12.ino.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t3/T12.ino.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t3/T12.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t3/T12.ino.with_bootloader.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t3/T12.ino.with_bootloader.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t3/T12.ino.with_bootloader.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t4.ino b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t4/SolderingStation2_arduboy_gplib_v1.7t4.ino similarity index 100% rename from software/UI_upgrade_by_createskyblue/sources/SolderingStation2_arduboy_gplib_v1.7t4.ino rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t4/SolderingStation2_arduboy_gplib_v1.7t4.ino diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t4/T12.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t4/T12.ino.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t4/T12.ino.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t4/T12.ino.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7t4/T12.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t4/T12.ino.with_bootloader.standard.hex similarity index 100% rename from software/UI_upgrade_by_createskyblue/binaries/1.7t4/T12.ino.with_bootloader.standard.hex rename to software/UI_upgrade_by_createskyblue/Program/1.7/test/1.7t4/T12.ino.with_bootloader.standard.hex diff --git a/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t1/1.8t1.ino b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t1/1.8t1.ino new file mode 100644 index 0000000..287c4a5 --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t1/1.8t1.ino @@ -0,0 +1,2198 @@ +/*License: http://creativecommons.org/licenses/by-sa/3.0/ + 采用CC3.0协议共享此程序 + 您可以自由地 + 共享 — 在任何媒介以任何形式复制、发行本作品 + 演绎 — 修改、转换或以本作品为基础进行创作 + 在任何用途下,甚至商业目的。 + 本许可协议为“自由文化作品(Free Cultural Works)”所接受。 + 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 + + Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) + This is a human-readable summary of (and not a substitute for) the license. Disclaimer. + You are free to: + Share — copy and redistribute the material in any medium or format + Adapt — remix, transform, and build upon the material + for any purpose, even commercially. + This license is acceptable for Free Cultural Works. + The licensor cannot revoke these freedoms as long as you follow the license terms. +*/ +// SolderingStation2 +// +// ATmega328-controlled Soldering Station for Hakko T12 Tips. +// 此v1.8t1版本功能简介 +// This 1.8t1 version of the code implements: +// - 烙铁头温度实时监测 +// - Temperature measurement of the tip +// - PID温度控制 +// - Direct or PID control of the heater +// - 可以通过编码器进行控制温度 +// - Temperature control via rotary encoder +// - 短按编码器进入短时升温模式 +// - Boost mode by short pressing rotary encoder switch +// - 长按编码器进入主菜单 +// - Setup menu by long pressing rotary encoder switch +// - 手柄震动检测(需要手柄含有震动传感器) +// - Handle movement detection (by checking ball switch) +// - 手柄连接检测(通过判断烙铁头温度是否能够被读取来实现) +// - Iron unconnected detection (by idenfying invalid temperature readings) +// - 定时器设定 - 随眠,关机时间 +// - Time driven sleep/power off mode if iron is unused (movement detection) +// - 可以测量主控芯片电压以及温度 +// - Measurement of input voltage, Vcc and ATmega's internal temperature +// - 在OLED上实现信息显示 +// - Information display on OLED +// - 支持无源蜂鸣器 +// - Buzzer +// - 允许设置不同烙铁头的温度校准值 +// - Calibrating and managing different soldering tips +// - 设置被保存在EEPROM,掉电不丢失 +// - Storing user settings into the EEPROM +// - 允许热插拔烙铁头,并弹出烙铁头配置选择菜单 +// - Tip change detection +// - 芯片过热以及低电压报警 +// - Chip overheating and low voltage alarm +// - 更好的实时温度条以及实时功率条 +// - Better real-time temperature bar and real-time power bar +// - 拥有过渡动画 +// - Have transition animation +// - 内置屏幕保护程序 +// - Built in screen saver +// - 屏幕翻转设置 +// - Screen flip settings +// - 内置英文、中文、日文语言包 +// - Built in English, Chinese and Japanese language pack +// - 开机密码设置 +// - System Password + +// Power supply should be in the range of 16V/2A to 24V/3A and well +// stabilized. +// +// For calibration you need a soldering iron tips thermometer. For best results +// wait at least three minutes after switching on the soldering station before +// you start the calibration process. +// +// Controller: ATmega328p +// Core: Barebones ATmega (https://github.com/carlosefr/atmega) +// Clockspeed: 16 MHz external +// +// 2019/2020 by Stefan Wagner with great support from John Glavinos +// 2020-8 UI upgrade by LHW-createskyblue 、lihaoyun6 +// Project Page: https://easyeda.com/wagiminator + +//关于界面-项目页面二维码 ->为了加入欠压报警只能阉割掉关于页面的二维码 +//const unsigned char QRCode[] PROGMEM = { 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0 }; +const unsigned char QRCode[] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x87, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0xff, 0xff, 0x01, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x61, 0x30, 0x1f, 0x3f, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0x33, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0xf3, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0x99, 0x03, 0x3e, 0x30, 0x86, 0xc3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0xf8, 0x03, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0xff, 0x0c, 0x79, 0x3f, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +//ICO +//width:16,height:16 +const unsigned char Tag[] PROGMEM = { 0x00, 0x00, 0x3b, 0xec, 0x7b, 0xee, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0x66, 0x62, 0x26, 0x60, 0x06, 0x60, 0x06, 0x7f, 0xfe, 0x3f, 0xfc, 0x00, 0x00 }; +const unsigned char Chip[] PROGMEM = { 0x14, 0xa0, 0x3f, 0xf0, 0x7f, 0xf8, 0xe0, 0x1c, 0x6e, 0x18, 0xec, 0x1c, 0x68, 0x18, 0x60, 0x18, 0xe0, 0x1c, 0x60, 0x58, 0xe0, 0x1c, 0x7f, 0xf8, 0x3f, 0xf0, 0x14, 0xa0 }; +//const unsigned char HeatPipe[] PROGMEM = { 0x00, 0x00, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x01, 0x80, 0x00, 0x00 }; +const unsigned char Lightning[] PROGMEM = { 0x0f, 0xe0, 0x1f, 0xc0, 0x1f, 0xc0, 0x3f, 0x80, 0x3f, 0xf8, 0x7f, 0xf0, 0x7f, 0xe0, 0x07, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x10, 0x00 }; +//const unsigned char Thermometer[] PROGMEM = { 0x01, 0x80, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0 }; +const unsigned char Pointer[] PROGMEM = { 0x20, 0x20, 0x70, 0xf8 }; +//状态提示 +//width:14,height:14 图标库 + +const unsigned char c1[] PROGMEM = { 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x0c, 0xc0, 0x1c, 0xe0, 0x1c, 0xe0, 0x3c, 0xf0, 0x3c, 0xf0, 0x7f, 0xf8, 0x7f, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c2[] PROGMEM = { 0x7f, 0xf8, 0xff, 0xfc, 0xc0, 0x0c, 0xc3, 0x0c, 0xcb, 0x4c, 0xdb, 0x6c, 0xdb, 0x6c, 0xd8, 0x6c, 0xdc, 0xec, 0xcf, 0xcc, 0xc7, 0x8c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c3[] PROGMEM = { 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0xf8, 0x38, 0xf0, 0x30, 0x30, 0x70, 0x60, 0x70, 0x78, 0x78, 0xf8, 0x78, 0x00, 0x3c, 0x02, 0x3f, 0x0c, 0x1f, 0xf8, 0x0f, 0xf0, 0x03, 0xc0, 0x00, 0x00 }; +const unsigned char c5[] PROGMEM = { 0x7f, 0xf0, 0xff, 0xe0, 0xc0, 0x08, 0xc0, 0x1c, 0xc0, 0x38, 0xc8, 0x70, 0xdc, 0xe4, 0xcf, 0xcc, 0xc7, 0x8c, 0xc3, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c6[] PROGMEM = { 0x1e, 0x10, 0x33, 0x38, 0x2d, 0x7c, 0x25, 0x38, 0x2d, 0x38, 0x25, 0x38, 0x2d, 0x38, 0x6d, 0x80, 0xde, 0xc0, 0xbf, 0x40, 0xbf, 0x40, 0xde, 0xc0, 0x61, 0x80, 0x3f, 0x00 }; +const unsigned char c7[] PROGMEM = { 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0x7c, 0xf8, 0x7c, 0xfc, 0xfc, 0x7f, 0xf8 }; +const unsigned char c_NO[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x37, 0xb0, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x37, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char *C_table[] = {c1, c2, c3, Lightning, c5, c6, c7}; + +//设置(陈星汉认为语言是一种低像素的表达方式,容易造成隔阂; 交互界面设计尽可能形象化) +// width: 14, height: 14 +const unsigned char QRC[] PROGMEM = { 0x05, 0x80, 0x74, 0xb8, 0x57, 0xa8, 0x76, 0xb8, 0x05, 0x80, 0xf9, 0x7c, 0x46, 0x94, 0xaa, 0xa8, 0xf9, 0x7c, 0x06, 0x88, 0x74, 0xa8, 0x57, 0x8c, 0x75, 0x74, 0x06, 0x98 }; +const unsigned char Set0[] PROGMEM = { 0x88, 0x24, 0x08, 0x20, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x39, 0x30, 0x3b, 0xb0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set1[] PROGMEM = { 0xf8, 0x7c, 0xf3, 0x3c, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xe4, 0x9c, 0xc8, 0x4c, 0xd0, 0x2c, 0xd0, 0x2c, 0xc8, 0x4c, 0xe7, 0x9c, 0xf0, 0x3c }; +const unsigned char Set2[] PROGMEM = { 0x8f, 0xc4, 0x10, 0x20, 0x20, 0x10, 0x4c, 0xc8, 0x9f, 0xe4, 0x3d, 0xf0, 0x3d, 0xf0, 0x1d, 0xe0, 0x3e, 0xf0, 0x3f, 0x70, 0x9f, 0xe4, 0x8c, 0xc4, 0x00, 0x00, 0x30, 0x30 }; +const unsigned char Set3[] PROGMEM = { 0xc3, 0xfc, 0x18, 0x00, 0x18, 0x00, 0xc3, 0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x60, 0x00, 0x60, 0xff, 0x0c, 0xff, 0xfc, 0xf0, 0xfc, 0x06, 0x00, 0x06, 0x00, 0xf0, 0xfc }; +const unsigned char Set4[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4F[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x30, 0x33, 0x10, 0x3f, 0x90, 0x38, 0x10, 0x33, 0x90, 0x27, 0x90, 0x26, 0x10, 0x30, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4FF[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x24, 0x30, 0x21, 0x90, 0x27, 0x90, 0x27, 0x30, 0x20, 0x70, 0x27, 0xf0, 0x23, 0x30, 0x30, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set5[] PROGMEM = { 0xfc, 0xfc, 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0x80, 0x04, 0x80, 0x04, 0xff, 0xfc, 0xf8, 0x7c, 0xfc, 0xfc }; +const unsigned char Set5_1[] PROGMEM = { 0xfc, 0xf4, 0xf8, 0x60, 0xe0, 0x44, 0xc0, 0x8c, 0xc1, 0x1c, 0xc2, 0x2c, 0xc4, 0x4c, 0xc8, 0x8c, 0xd1, 0x0c, 0xa2, 0x04, 0xc4, 0x04, 0x8f, 0xfc, 0x18, 0x7c, 0xbc, 0xfc }; +const unsigned char Set6[] PROGMEM = { 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xc8, 0x4c, 0xcf, 0xcc, 0xc0, 0x0c, 0xe0, 0x1c }; +const unsigned char Set_LANG[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x4c, 0xbc, 0x34, 0xb8, 0x14, 0x18, 0x80, 0x10, 0x80, 0x42, 0x30, 0x60, 0x78, 0x60, 0xf8, 0x44, 0xc0, 0x80, 0x04, 0xb8, 0x84, 0xcf, 0xcc, 0xf0, 0x3c }; +const unsigned char Set7[] PROGMEM = { 0x80, 0x0c, 0x00, 0x1c, 0x3f, 0xf4, 0x3f, 0xe0, 0x3f, 0xc4, 0x37, 0x8c, 0x23, 0x18, 0x30, 0x30, 0x38, 0x70, 0x3c, 0xf0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set11[] PROGMEM = { 0xf3, 0xfc, 0xe7, 0xfc, 0xce, 0x0c, 0x8e, 0x1c, 0x9f, 0x9c, 0x1f, 0x3c, 0x1f, 0x0c, 0x0e, 0x0c, 0x0f, 0xfc, 0x87, 0xf8, 0x81, 0xe4, 0xc0, 0x0c, 0xe0, 0x1c, 0xf8, 0x7c }; +const unsigned char Set8[] PROGMEM = { 0x81, 0xdc, 0x55, 0x9c, 0x29, 0x04, 0x55, 0x00, 0x29, 0x90, 0x55, 0xd0, 0x03, 0xfc, 0xff, 0x00, 0x2e, 0x00, 0x26, 0x70, 0x02, 0x50, 0x82, 0x70, 0xe6, 0x00, 0xee, 0x04 }; +const unsigned char Set9[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x0c, 0xbf, 0x04, 0xb3, 0x04, 0x73, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x60, 0xbc, 0x64, 0xbe, 0x04, 0xcf, 0x0c, 0xf0, 0x3c }; +const unsigned char Set10[] PROGMEM = { 0xf8, 0x7c, 0xf7, 0xbc, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0xbf, 0xf4, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xbf, 0xf4, 0xc0, 0x0c }; +const unsigned char Set13[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x34, 0xb0, 0x24, 0x90, 0x24, 0x90, 0x27, 0x90, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set12[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set14[] PROGMEM = { 0xff, 0x7c, 0xfe, 0x7c, 0xfc, 0xec, 0xe8, 0xdc, 0xc8, 0x4c, 0x98, 0x4c, 0x88, 0x24, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0xe0, 0x1c }; +const unsigned char Set15[] PROGMEM = { 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3c, 0x04, 0x14, 0x04, 0x3c, 0xfc, 0x14, 0x54, 0x3c, 0xfc, 0x00, 0x54, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set16[] PROGMEM = { 0x15, 0x54, 0x3f, 0xf8, 0x15, 0x50, 0x3f, 0xf0, 0x15, 0x50, 0x38, 0x70, 0x10, 0x20, 0x31, 0x04, 0x13, 0x8c, 0x22, 0xa8, 0x17, 0xfc, 0x2a, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set17[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x08, 0x18, 0x08, 0xb9, 0xe8, 0x19, 0xb8, 0xb8, 0x38, 0x18, 0x38, 0xb9, 0xb8, 0xb9, 0xf8, 0xb0, 0xf8, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Set18[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x28, 0x1f, 0xf8, 0xb4, 0x08, 0x1f, 0xf8, 0xb1, 0x08, 0x1f, 0xf8, 0xb0, 0x48, 0xbf, 0xf8, 0xb2, 0x88, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Lang_CN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x24, 0x90, 0x24, 0x90, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_EN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x27, 0x90, 0x20, 0x10, 0x20, 0x10, 0x27, 0x90, 0x27, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_JP[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3d, 0xf0, 0x20, 0x10, 0x3b, 0xf0, 0x3b, 0x70, 0x30, 0x30, 0x2b, 0x50, 0x2a, 0xd0, 0x31, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Save[] PROGMEM = { 0x00, 0x04, 0x58, 0x08, 0x58, 0x08, 0x58, 0x08, 0x40, 0x08, 0x7f, 0xf8, 0x60, 0x18, 0x5f, 0xe8, 0x5b, 0x68, 0x5f, 0xe8, 0x5b, 0x68, 0x1c, 0xe8, 0x5f, 0xe8, 0x00, 0x00 }; +const unsigned char Lock[] PROGMEM = { 0xe0, 0x1c, 0xc0, 0x0c, 0x8f, 0xc4, 0x9f, 0xe4, 0x9f, 0xe4, 0x9f, 0xe4, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0x00, 0x80, 0x04 }; +const unsigned char Set19[] PROGMEM = { 0xf8, 0x7c, 0x80, 0x04, 0xbc, 0xf4, 0x3f, 0xf0, 0x38, 0x70, 0xb7, 0xb4, 0xb6, 0xb4, 0xb5, 0xb4, 0xb7, 0xb4, 0x38, 0x70, 0x3f, 0xf0, 0xbc, 0xf4, 0x80, 0x04, 0xf8, 0x7c }; +const unsigned char *Ico_table[] = { + Set0, Set1, Set2, Set3, Set4, Set5, Set19, Set6, Lock, Set_LANG, QRC, Set7, + Set8, Set9, Set0, Set10, Set12, Save, + Set0, Set11, Set14, Save, + Set11, Set13, Set14, Save, + Set15, Set16, + Set17, Set18, //5 + Set5_1, Set5, + c_NO, Set7, + Lang_CN, Lang_EN, Lang_JP, //8 + Set4, Set4F, Save, +}; +const byte Menu_table[] = {12, 6, 4, 4, 2, 2, 2, 2, 3, 3}; //菜单 标签 温控 定时 控制方式 首页 蜂鸣器 标签删除确认界面 语言菜单 翻转 显示 +byte MenuLevel = 0; //菜单层级 + +/*//////////////////////////////////////////////////////////////////////////////////////////////////// + 多语言支持 + Multilingual support + /////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +/* + 英语库 ENGLISH +*/ +const char EN_0[] PROGMEM = "Tip"; +const char EN_1[] PROGMEM = "Temp"; +const char EN_2[] PROGMEM = "Timer"; +const char EN_3[] PROGMEM = "Control"; +const char EN_4[] PROGMEM = "Screen"; +const char EN_5[] PROGMEM = "Buzzer"; +const char EN_6[] PROGMEM = "LOW Vol"; +const char EN_7[] PROGMEM = "Lang"; +const char EN_8[] PROGMEM = "Return"; +const char EN_9[] PROGMEM = "Change"; +const char EN_10[] PROGMEM = "Calibrate"; +const char EN_11[] PROGMEM = "Rename"; +const char EN_12[] PROGMEM = "Delete"; +const char EN_13[] PROGMEM = "Add"; +const char EN_14[] PROGMEM = "Save"; +const char EN_15[] PROGMEM = "Default"; +const char EN_16[] PROGMEM = "Sleep"; +const char EN_17[] PROGMEM = "Boost"; +const char EN_18[] PROGMEM = "Save"; +const char EN_19[] PROGMEM = "Sleep"; +const char EN_20[] PROGMEM = "Off"; +const char EN_21[] PROGMEM = "Boost"; +const char EN_22[] PROGMEM = "Save"; +const char EN_23[] PROGMEM = "Direct"; +const char EN_24[] PROGMEM = "PID"; +const char EN_25[] PROGMEM = "Big"; +const char EN_26[] PROGMEM = "Infos"; +const char EN_27[] PROGMEM = "OFF"; +const char EN_28[] PROGMEM = "ON"; +const char EN_29[] PROGMEM = "NO"; +const char EN_30[] PROGMEM = "YES"; +const char EN_31[] PROGMEM = "CN"; +const char EN_32[] PROGMEM = "EN"; +const char EN_33[] PROGMEM = "NO"; +const char EN_34[] PROGMEM = "OK"; +const char EN_35[] PROGMEM = "Main Screen"; +const char EN_36[] PROGMEM = "Flip"; +const char EN_37[] PROGMEM = "Save"; +const char EN_38[] PROGMEM = "About"; +const char EN_39[] PROGMEM = "JP"; +const char EN_40[] PROGMEM = "Lock"; +const char EN_41[] PROGMEM = "Rotary"; +const char *const EN_table[] PROGMEM = {EN_0, EN_1, EN_2, EN_3, EN_4, EN_5, EN_41, EN_6, EN_40, EN_7, EN_38, EN_8, EN_9, EN_10, EN_11, EN_12, EN_13, EN_14, EN_15, EN_16, EN_17, EN_18, EN_19, EN_20, EN_21, EN_22, EN_23, EN_24, EN_25, EN_26, EN_27, EN_28, EN_29, EN_30, EN_31, EN_32, EN_39, EN_35, EN_36, EN_37,}; + +/* + #!/usr/bin/python + # -*- coding: UTF-8 -*- + for num in range(0,38): + print("EN_",end="") + print(num,end='') + print(",",end="") +*/ +/* + 中文语言库 CHINESE + + //////////////////////////////////////////////////////////////////////////////////////////////////////// + 本地化提示:你可以按照位图的大小,把这里的文字位图替换成你的语言,确保位图分辨率一致即可,我们欢迎你把程序翻译为你当地的语言! + Localization tips: you can according to the size of the bitmap, + replace the text bitmap here with your language, + ensure that the bitmap resolution is consistent, + we welcome you to translate the program into your local language! + //////////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +//width:28,height:14 主界面中文提示 +//Main Screen +//错误-ERROR +const unsigned char S1[] PROGMEM = { 0x20, 0x92, 0x1f, 0xc0, 0x3d, 0xf9, 0x90, 0x40, 0x20, 0x90, 0x90, 0x40, 0x40, 0x90, 0x1f, 0xc0, 0x7b, 0xff, 0x00, 0x00, 0xa0, 0x01, 0x3f, 0xe0, 0x21, 0xf9, 0x02, 0x00, 0xfd, 0x09, 0x02, 0x00, 0x21, 0x09, 0x7f, 0xf0, 0x21, 0xf9, 0x05, 0x00, 0x21, 0x09, 0x45, 0x00, 0x29, 0x09, 0x88, 0x80, 0x31, 0xf9, 0x10, 0x70, 0x21, 0x08, 0x20, 0x20 }; +//关机-OFF +const unsigned char S2[] PROGMEM = { 0x10, 0x40, 0x47, 0xc0, 0x17, 0xfc, 0x44, 0x40, 0x20, 0x03, 0xf4, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x62, 0x08, 0xc4, 0x40, 0xa3, 0xf8, 0xe4, 0x40, 0x20, 0x01, 0x54, 0x40, 0x2f, 0xfd, 0x44, 0x40, 0x28, 0x06, 0x44, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x20, 0x40, 0x44, 0x50, 0x20, 0x40, 0x48, 0x50, 0x21, 0x40, 0x50, 0x30, 0x20, 0x80, 0x40, 0x00 }; +//休眠-SLEEP +const unsigned char S3[] PROGMEM = { 0x10, 0x83, 0xdf, 0xc0, 0x10, 0x82, 0x50, 0x40, 0x20, 0x82, 0x50, 0x40, 0x2f, 0xff, 0xdf, 0xc0, 0x60, 0x82, 0x52, 0x00, 0x61, 0xc2, 0x52, 0x00, 0xa1, 0xc2, 0x5f, 0xe0, 0x22, 0xa3, 0xd2, 0x00, 0x22, 0xa2, 0x51, 0x00, 0x24, 0x92, 0x51, 0x00, 0x28, 0x8e, 0x50, 0x90, 0x30, 0x8b, 0xd4, 0x50, 0x20, 0x82, 0x58, 0x30, 0x20, 0x80, 0x10, 0x10 }; +//提温-BOOST +const unsigned char S4[] PROGMEM = { 0x23, 0xf2, 0x1f, 0xc0, 0x22, 0x11, 0x10, 0x40, 0xfb, 0xf0, 0x90, 0x40, 0x22, 0x12, 0x1f, 0xc0, 0x2a, 0x11, 0x10, 0x40, 0x33, 0xf1, 0x10, 0x40, 0x60, 0x00, 0x5f, 0xc0, 0xaf, 0xfc, 0x80, 0x00, 0x20, 0x41, 0x3f, 0xe0, 0x22, 0x43, 0x25, 0x20, 0x22, 0x79, 0x25, 0x20, 0x22, 0x41, 0x25, 0x20, 0xa5, 0x41, 0x25, 0x20, 0x48, 0xfd, 0x7f, 0xf0 }; +//正常工作-WORKY +const unsigned char S5[] PROGMEM = { 0x7f, 0xf8, 0x48, 0x80, 0x02, 0x00, 0x49, 0x00, 0x02, 0x01, 0xff, 0xf0, 0x02, 0x01, 0x00, 0x10, 0x02, 0x02, 0x7f, 0x20, 0x22, 0x00, 0x41, 0x00, 0x23, 0xf0, 0x7f, 0x00, 0x22, 0x00, 0x08, 0x00, 0x22, 0x00, 0xff, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x8a, 0x80, 0x22, 0x00, 0x89, 0x00, 0xff, 0xfc, 0x08, 0x00 }; +//加热-HEAT +const unsigned char S6[] PROGMEM = { 0x0f, 0x42, 0x1f, 0xc0, 0x78, 0x41, 0x10, 0x40, 0x08, 0x40, 0x90, 0x40, 0x08, 0x42, 0x1f, 0xc0, 0x08, 0x41, 0x10, 0x40, 0xff, 0xfd, 0x10, 0x40, 0x08, 0x40, 0x5f, 0xc0, 0x08, 0x40, 0x80, 0x00, 0x08, 0x41, 0x3f, 0xe0, 0x08, 0x43, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x20, 0x41, 0x25, 0x20, 0x40, 0x41, 0x7f, 0xf0 }; +//维持-HOLD +const unsigned char S7[] PROGMEM = { 0x11, 0x40, 0x82, 0x00, 0x21, 0x20, 0x8f, 0xe0, 0x23, 0xfc, 0x82, 0x00, 0x4a, 0x23, 0xe2, 0x00, 0xfe, 0x20, 0x9f, 0xf0, 0x13, 0xf8, 0x80, 0x80, 0x22, 0x20, 0xc0, 0x80, 0x42, 0x21, 0xbf, 0xf0, 0xfb, 0xfa, 0x88, 0x80, 0x02, 0x20, 0x84, 0x80, 0x02, 0x20, 0x84, 0x80, 0x1a, 0x20, 0x80, 0x80, 0xe3, 0xfe, 0x82, 0x80, 0x02, 0x01, 0x01, 0x00 }; +const unsigned char *S_table[] = {S1, S2, S3, S4, S5, S6, S7}; + +// 菜单 width:36,height:16 +//MENU Oj +/* + The order here(↓) can refer to EN_table(↑↑↑) +*/ +const unsigned char t0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x90, 0xf8, 0x00, 0x01, 0x08, 0x08, 0x88, 0x00, 0x0a, 0x10, 0x08, 0x88, 0x00, 0x04, 0x7f, 0x01, 0x07, 0x00, 0x1f, 0xc1, 0x3a, 0x00, 0x00, 0x05, 0x49, 0x09, 0xfc, 0x00, 0x04, 0x49, 0x08, 0x84, 0x00, 0x04, 0x49, 0x08, 0x88, 0x00, 0x04, 0x49, 0x08, 0x48, 0x00, 0x04, 0x49, 0x08, 0x50, 0x00, 0x04, 0x49, 0x0a, 0x20, 0x00, 0x04, 0x16, 0x0c, 0x58, 0x00, 0x14, 0x21, 0x89, 0x87, 0x00, 0x08, 0xc0, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x08, 0x20, 0x00, 0x08, 0x82, 0x0b, 0xff, 0x00, 0x04, 0x82, 0x0a, 0x01, 0x00, 0x10, 0xfe, 0x3c, 0x51, 0x00, 0x08, 0x82, 0x08, 0x88, 0x00, 0x08, 0x82, 0x09, 0x04, 0x00, 0x02, 0xfe, 0x0c, 0x00, 0x00, 0x04, 0x00, 0x19, 0xfc, 0x00, 0x09, 0xff, 0x28, 0x20, 0x00, 0x19, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x2b, 0xff, 0x00, 0x0b, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x04, 0x00, 0x1f, 0xff, 0xa2, 0x04, 0x00, 0x10, 0x00, 0xa2, 0xff, 0x00, 0x00, 0x01, 0x22, 0x04, 0x00, 0x0f, 0xfe, 0x22, 0x04, 0x00, 0x00, 0x40, 0x3e, 0x44, 0x00, 0x00, 0x40, 0x22, 0x24, 0x00, 0x04, 0x40, 0x22, 0x24, 0x00, 0x04, 0x7c, 0x22, 0x04, 0x00, 0x04, 0x40, 0x22, 0x04, 0x00, 0x0a, 0x40, 0x3e, 0x04, 0x00, 0x09, 0x40, 0x22, 0x24, 0x00, 0x10, 0xff, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }; +const unsigned char t3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x12, 0x02, 0x00, 0x05, 0xff, 0x9f, 0xd2, 0x00, 0x05, 0x00, 0x92, 0x12, 0x00, 0x1e, 0x28, 0xa2, 0x12, 0x00, 0x04, 0x44, 0x3f, 0xf2, 0x00, 0x04, 0x82, 0x02, 0x12, 0x00, 0x06, 0x00, 0x02, 0x12, 0x00, 0x0c, 0xfe, 0x1f, 0xd2, 0x00, 0x14, 0x10, 0x12, 0x52, 0x00, 0x04, 0x10, 0x12, 0x42, 0x00, 0x04, 0x10, 0x13, 0x42, 0x00, 0x04, 0x10, 0x12, 0x82, 0x00, 0x15, 0xff, 0x82, 0x0a, 0x00, 0x08, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x04, 0x02, 0x3f, 0xfe, 0x00, 0x04, 0x02, 0x00, 0x80, 0x00, 0x07, 0xfe, 0x00, 0x80, 0x00, 0x00, 0x90, 0x04, 0x90, 0x00, 0x08, 0x91, 0x0c, 0x88, 0x00, 0x06, 0x93, 0x10, 0x86, 0x00, 0x02, 0x94, 0x20, 0x82, 0x00, 0x00, 0x90, 0x00, 0x80, 0x00, 0x00, 0x90, 0x02, 0x80, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x9f, 0xfc, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x08, 0x42, 0x0f, 0xf8, 0x00, 0x08, 0x42, 0x08, 0x08, 0x00, 0x0f, 0xfe, 0x08, 0x08, 0x00, 0x08, 0x02, 0x0f, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x0f, 0xf8, 0x00, 0x10, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t6[] PROGMEM = { 0x09, 0xff, 0x00, 0x40, 0x00, 0x04, 0x20, 0x3f, 0xff, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x42, 0x0f, 0xfc, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x04, 0x00, 0x0f, 0xfc, 0x00, 0x04, 0xff, 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, 0x00, 0x05, 0x81, 0x0f, 0xfc, 0x00, 0x06, 0x81, 0x08, 0x04, 0x00, 0x04, 0xff, 0x08, 0x04, 0x00, 0x00, 0x81, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t7[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0xfe, 0x00, 0x01, 0x00, 0x08, 0x20, 0x00, 0x03, 0xff, 0x08, 0x20, 0x00, 0x02, 0x01, 0x08, 0x20, 0x00, 0x04, 0x22, 0x08, 0x20, 0x00, 0x08, 0x20, 0x0b, 0xfe, 0x00, 0x10, 0x20, 0x08, 0x20, 0x00, 0x00, 0x50, 0x08, 0x28, 0x00, 0x00, 0x50, 0x08, 0x24, 0x00, 0x00, 0x88, 0x08, 0x22, 0x00, 0x00, 0x88, 0x10, 0x20, 0x00, 0x01, 0x04, 0x10, 0x20, 0x00, 0x02, 0x03, 0xa7, 0xff, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Back[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x3f, 0xfe, 0x00, 0x04, 0x80, 0x20, 0x02, 0x00, 0x00, 0x80, 0x20, 0x02, 0x00, 0x00, 0xbe, 0x23, 0xe2, 0x00, 0x1c, 0x82, 0x22, 0x22, 0x00, 0x04, 0xa4, 0x22, 0x22, 0x00, 0x04, 0x94, 0x22, 0x22, 0x00, 0x04, 0x88, 0x22, 0x22, 0x00, 0x04, 0x94, 0x23, 0xe2, 0x00, 0x05, 0x22, 0x20, 0x02, 0x00, 0x05, 0x42, 0x20, 0x02, 0x00, 0x0a, 0x00, 0x3f, 0xfe, 0x00, 0x11, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t1_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x20, 0x90, 0x00, 0x02, 0x7f, 0x98, 0x90, 0x00, 0x1f, 0x80, 0x09, 0xff, 0x00, 0x02, 0x22, 0x01, 0x10, 0x00, 0x06, 0x21, 0x8b, 0x10, 0x00, 0x07, 0x62, 0x8d, 0xfe, 0x00, 0x0a, 0xa2, 0x09, 0x10, 0x00, 0x0a, 0x14, 0x11, 0x10, 0x00, 0x12, 0x14, 0x31, 0xfe, 0x00, 0x02, 0x08, 0x11, 0x10, 0x00, 0x02, 0x14, 0x11, 0x10, 0x00, 0x02, 0x22, 0x11, 0x10, 0x00, 0x02, 0x43, 0x91, 0xff, 0x00, 0x02, 0x81, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x50, 0x01, 0xfc, 0x00, 0x00, 0x88, 0x01, 0x04, 0x00, 0x01, 0x04, 0x03, 0x08, 0x00, 0x06, 0xfb, 0x04, 0x90, 0x00, 0x08, 0x00, 0xc0, 0x60, 0x00, 0x07, 0xdf, 0x01, 0x80, 0x00, 0x04, 0x51, 0x06, 0x00, 0x00, 0x04, 0x51, 0x1b, 0xfe, 0x00, 0x04, 0x51, 0x02, 0x02, 0x00, 0x07, 0xd9, 0x02, 0x02, 0x00, 0x04, 0x56, 0x02, 0x02, 0x00, 0x00, 0x10, 0x03, 0xfe, 0x00, 0x00, 0x10, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x78, 0xbc, 0x20, 0x00, 0x09, 0x48, 0xa4, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x88, 0x00, 0x09, 0x4a, 0xb1, 0x04, 0x00, 0x1f, 0xfe, 0xaa, 0xfb, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa7, 0xfe, 0x00, 0x09, 0x4a, 0xb4, 0x20, 0x00, 0x09, 0x48, 0xa9, 0x24, 0x00, 0x0b, 0x48, 0xa2, 0x22, 0x00, 0x08, 0x8a, 0xa4, 0xa2, 0x00, 0x11, 0x19, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x10, 0x00, 0x1f, 0xdc, 0x3e, 0xfe, 0x00, 0x08, 0x90, 0x02, 0x12, 0x00, 0x05, 0x10, 0x04, 0xff, 0x00, 0x1f, 0xdf, 0x84, 0x12, 0x00, 0x02, 0x12, 0x0c, 0xfe, 0x00, 0x1f, 0xd2, 0x02, 0x10, 0x00, 0x02, 0x12, 0x22, 0xfe, 0x00, 0x0a, 0x92, 0x14, 0x10, 0x00, 0x0a, 0x52, 0x14, 0x10, 0x00, 0x12, 0x22, 0x0d, 0xff, 0x00, 0x02, 0x22, 0x08, 0x10, 0x00, 0x0a, 0x42, 0x14, 0x10, 0x00, 0x04, 0x02, 0x23, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//默认 +const unsigned char t2_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc8, 0x10, 0x20, 0x00, 0x12, 0x4a, 0x0c, 0x20, 0x00, 0x1a, 0xc9, 0x04, 0x20, 0x00, 0x17, 0x48, 0x00, 0x20, 0x00, 0x1f, 0xff, 0xb8, 0x20, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x1f, 0xc8, 0x08, 0x50, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x03, 0xc8, 0x08, 0x48, 0x00, 0x1e, 0x14, 0x08, 0x88, 0x00, 0x01, 0x54, 0x0a, 0x88, 0x00, 0x15, 0x22, 0x0c, 0x84, 0x00, 0x14, 0x43, 0x89, 0x07, 0x00, 0x00, 0x81, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//休眠 +const unsigned char t2_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x3d, 0xfc, 0x00, 0x02, 0x10, 0x25, 0x04, 0x00, 0x04, 0x10, 0x25, 0x04, 0x00, 0x05, 0xff, 0xbd, 0xfc, 0x00, 0x0c, 0x10, 0x25, 0x20, 0x00, 0x0c, 0x38, 0x25, 0x20, 0x00, 0x14, 0x38, 0x25, 0xfe, 0x00, 0x04, 0x54, 0x3d, 0x20, 0x00, 0x04, 0x54, 0x25, 0x10, 0x00, 0x04, 0x92, 0x25, 0x10, 0x00, 0x05, 0x11, 0xa5, 0x09, 0x00, 0x06, 0x11, 0x3d, 0x45, 0x00, 0x04, 0x10, 0x25, 0x83, 0x00, 0x04, 0x10, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//提温 +const unsigned char t2_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7e, 0x21, 0xfc, 0x00, 0x04, 0x42, 0x11, 0x04, 0x00, 0x1f, 0x7e, 0x09, 0x04, 0x00, 0x04, 0x42, 0x21, 0xfc, 0x00, 0x05, 0x42, 0x11, 0x04, 0x00, 0x06, 0x7e, 0x11, 0x04, 0x00, 0x0c, 0x00, 0x05, 0xfc, 0x00, 0x15, 0xff, 0x88, 0x00, 0x00, 0x04, 0x08, 0x13, 0xfe, 0x00, 0x04, 0x48, 0x32, 0x52, 0x00, 0x04, 0x4f, 0x12, 0x52, 0x00, 0x04, 0x48, 0x12, 0x52, 0x00, 0x14, 0xa8, 0x12, 0x52, 0x00, 0x09, 0x1f, 0x97, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//关机 +const unsigned char t3_1[] PROGMEM = { 0x01, 0x04, 0x04, 0x7c, 0x00, 0x00, 0x88, 0x04, 0x44, 0x00, 0x0f, 0xff, 0x3f, 0x44, 0x00, 0x00, 0x20, 0x04, 0x44, 0x00, 0x00, 0x20, 0x0c, 0x44, 0x00, 0x00, 0x20, 0x0e, 0x44, 0x00, 0x1f, 0xff, 0x95, 0x44, 0x00, 0x00, 0x20, 0x14, 0x44, 0x00, 0x00, 0x50, 0x24, 0x44, 0x00, 0x00, 0x50, 0x04, 0x44, 0x00, 0x00, 0x88, 0x04, 0x45, 0x00, 0x01, 0x04, 0x04, 0x85, 0x00, 0x06, 0x03, 0x85, 0x03, 0x00, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x20, 0x00, 0x0f, 0xff, 0x09, 0xfc, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x88, 0x00, 0x03, 0xfe, 0x08, 0x50, 0x00, 0x02, 0x02, 0x0b, 0xfe, 0x00, 0x03, 0xfe, 0x0c, 0x40, 0x00, 0x02, 0x02, 0x18, 0x40, 0x00, 0x03, 0xfe, 0x2b, 0xfe, 0x00, 0x02, 0x02, 0x08, 0x48, 0x00, 0x03, 0xfe, 0x08, 0x88, 0x00, 0x02, 0x02, 0x08, 0x50, 0x00, 0x02, 0x02, 0x28, 0x30, 0x00, 0x1f, 0xff, 0x91, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_PID[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xf1, 0xe0, 0x00, 0x0f, 0xe3, 0xf1, 0xf8, 0x00, 0x0c, 0x70, 0xc1, 0x9e, 0x00, 0x0c, 0x30, 0xc1, 0x86, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x98, 0x00, 0x0c, 0x03, 0xf1, 0xf8, 0x00, 0x0c, 0x03, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t5_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0x88, 0x40, 0x00, 0x0a, 0x24, 0x10, 0x40, 0x00, 0x11, 0x42, 0x10, 0xfe, 0x00, 0x04, 0x00, 0x22, 0x82, 0x00, 0x02, 0xff, 0x3d, 0x02, 0x00, 0x08, 0x01, 0x0a, 0x42, 0x00, 0x09, 0xf9, 0x10, 0x32, 0x00, 0x09, 0x09, 0x20, 0x12, 0x00, 0x09, 0xf9, 0x3e, 0x02, 0x00, 0x09, 0x09, 0x00, 0x02, 0x00, 0x09, 0x09, 0x0e, 0x02, 0x00, 0x09, 0xf9, 0x30, 0x22, 0x00, 0x08, 0x05, 0x00, 0x14, 0x00, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x44, 0x10, 0xfe, 0x00, 0x04, 0x28, 0x10, 0x92, 0x00, 0x05, 0xff, 0x22, 0x92, 0x00, 0x00, 0x10, 0x3c, 0x92, 0x00, 0x00, 0x10, 0x08, 0x92, 0x00, 0x1c, 0xfe, 0x10, 0x92, 0x00, 0x04, 0x10, 0x20, 0xfe, 0x00, 0x04, 0x10, 0x3e, 0x92, 0x00, 0x05, 0xff, 0x80, 0x92, 0x00, 0x04, 0x10, 0x00, 0x92, 0x00, 0x05, 0x10, 0x0e, 0x92, 0x00, 0x06, 0x10, 0x30, 0x92, 0x00, 0x04, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x10, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x3f, 0xfe, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x08, 0x08, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x09, 0x48, 0x00, 0x04, 0x02, 0x02, 0x30, 0x00, 0x07, 0xfe, 0x04, 0x0c, 0x00, 0x04, 0x02, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_off[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x04, 0xff, 0x00, 0x00, 0x44, 0x02, 0x01, 0x00, 0x07, 0xff, 0x90, 0x21, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x00, 0x10, 0x17, 0xfd, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x0f, 0xff, 0xd0, 0x61, 0x00, 0x00, 0x10, 0x10, 0xa1, 0x00, 0x00, 0x28, 0x11, 0x21, 0x00, 0x00, 0x28, 0x12, 0x21, 0x00, 0x00, 0x44, 0x14, 0x21, 0x00, 0x00, 0x82, 0x10, 0xa1, 0x00, 0x03, 0x01, 0xd0, 0x45, 0x00, 0x0c, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_on[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x20, 0x00, 0x00, 0x84, 0x07, 0xff, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x0f, 0xff, 0xc7, 0xff, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x05, 0xff, 0x00, 0x00, 0x84, 0x05, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x02, 0x04, 0x11, 0xff, 0x00, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_NO[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x04, 0x91, 0x00, 0x04, 0x40, 0x02, 0x52, 0x00, 0x04, 0x7f, 0x90, 0x54, 0x00, 0x04, 0x50, 0x88, 0xff, 0x00, 0x07, 0xd0, 0x84, 0x81, 0x00, 0x04, 0x51, 0x00, 0x81, 0x00, 0x04, 0x49, 0x01, 0xff, 0x00, 0x07, 0xca, 0x02, 0x81, 0x00, 0x04, 0x44, 0x04, 0x81, 0x00, 0x04, 0x4a, 0x1c, 0xff, 0x00, 0x07, 0xea, 0x04, 0x81, 0x00, 0x0c, 0x51, 0x04, 0x81, 0x00, 0x00, 0x61, 0xc4, 0x85, 0x00, 0x00, 0x40, 0x80, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_OK[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0x10, 0x20, 0x00, 0x02, 0x12, 0x0c, 0x20, 0x00, 0x02, 0x24, 0x04, 0x20, 0x00, 0x04, 0x7f, 0x80, 0x20, 0x00, 0x04, 0x24, 0xb8, 0x20, 0x00, 0x0f, 0xa4, 0x88, 0x50, 0x00, 0x14, 0xbf, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x48, 0x00, 0x04, 0xbf, 0x88, 0x88, 0x00, 0x04, 0xa4, 0x8a, 0x88, 0x00, 0x07, 0xa4, 0x8c, 0x84, 0x00, 0x04, 0x44, 0x89, 0x07, 0x00, 0x00, 0x81, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_CN_CN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x0f, 0xff, 0x3f, 0xff, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x10, 0x00, 0x08, 0x41, 0x02, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x08, 0x41, 0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x01, 0x30, 0x00, 0x00, 0x40, 0x02, 0x08, 0x00, 0x00, 0x40, 0x0c, 0x07, 0x00, 0x00, 0x40, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_EN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x80, 0x80, 0x00, 0x01, 0x10, 0x3f, 0xff, 0x00, 0x00, 0x40, 0x04, 0x08, 0x00, 0x07, 0xfc, 0x04, 0x08, 0x00, 0x04, 0x44, 0x04, 0x10, 0x00, 0x04, 0x44, 0x02, 0x10, 0x00, 0x04, 0x44, 0x02, 0x20, 0x00, 0x1f, 0xff, 0x81, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0x01, 0x30, 0x00, 0x01, 0x10, 0x02, 0x08, 0x00, 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x18, 0x03, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_JP[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x13, 0xfe, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x01, 0xfc, 0x00, 0x04, 0x02, 0x38, 0x84, 0x00, 0x04, 0x02, 0x08, 0x84, 0x00, 0x07, 0xfe, 0x0f, 0xff, 0x00, 0x04, 0x02, 0x08, 0x00, 0x00, 0x04, 0x02, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x09, 0x02, 0x00, 0x04, 0x02, 0x0b, 0x02, 0x00, 0x04, 0x02, 0x0d, 0x02, 0x00, 0x07, 0xfe, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +//翻转 +const unsigned char t4f[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1d, 0xc2, 0x08, 0x00, 0x05, 0x44, 0x42, 0x08, 0x00, 0x03, 0x84, 0x5f, 0xbf, 0x00, 0x0f, 0xe4, 0x44, 0x10, 0x00, 0x01, 0x15, 0x45, 0x10, 0x00, 0x05, 0x4c, 0xc9, 0x7f, 0x80, 0x09, 0x24, 0x4f, 0x90, 0x00, 0x07, 0xc4, 0xc1, 0x10, 0x00, 0x05, 0x4d, 0x41, 0x3f, 0x00, 0x05, 0x54, 0x43, 0x81, 0x00, 0x07, 0xc4, 0x4d, 0x02, 0x00, 0x05, 0x44, 0x41, 0x14, 0x00, 0x05, 0x55, 0x41, 0x08, 0x00, 0x07, 0xc8, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//保存 +const unsigned char t_save[] PROGMEM = { 0x02, 0xfe, 0x01, 0x00, 0x00, 0x02, 0x82, 0x3f, 0xff, 0x00, 0x04, 0x82, 0x02, 0x00, 0x00, 0x04, 0xfe, 0x02, 0x00, 0x00, 0x0c, 0x10, 0x04, 0xfc, 0x00, 0x14, 0x10, 0x04, 0x08, 0x00, 0x05, 0xff, 0x8c, 0x10, 0x00, 0x04, 0x10, 0x14, 0x10, 0x00, 0x04, 0x38, 0x25, 0xff, 0x00, 0x04, 0x34, 0x04, 0x10, 0x00, 0x04, 0x52, 0x04, 0x10, 0x00, 0x04, 0x91, 0x84, 0x10, 0x00, 0x05, 0x10, 0x04, 0x50, 0x00, 0x04, 0x10, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tAbout[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0f, 0xfe, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x07, 0xff, 0x80, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x1f, 0xff, 0x80, 0x0f, 0xff, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x40, 0x00, 0x03, 0x01, 0xc1, 0x40, 0x00, 0x0c, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tPassword[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x7e, 0x00, 0x1f, 0xff, 0x84, 0x02, 0x00, 0x10, 0x80, 0x84, 0x42, 0x00, 0x0a, 0x4a, 0x04, 0x42, 0x00, 0x0a, 0x31, 0x08, 0x42, 0x00, 0x12, 0xc5, 0x0f, 0x42, 0x00, 0x03, 0x04, 0x19, 0x7f, 0x00, 0x1d, 0xf8, 0x29, 0x01, 0x00, 0x00, 0x40, 0x09, 0x01, 0x00, 0x08, 0x42, 0x09, 0xfd, 0x00, 0x08, 0x42, 0x09, 0x01, 0x00, 0x08, 0x42, 0x0f, 0x01, 0x00, 0x0f, 0xfe, 0x09, 0x05, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t19[] PROGMEM = { 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x1f, 0x88, 0xfe, 0x00, 0x1f, 0xd0, 0x0e, 0x22, 0x00, 0x04, 0x20, 0x30, 0x22, 0x00, 0x04, 0x5f, 0x80, 0x22, 0x00, 0x07, 0x84, 0x9e, 0x22, 0x00, 0x04, 0x85, 0x08, 0x22, 0x00, 0x04, 0x94, 0x08, 0x22, 0x00, 0x04, 0x94, 0x28, 0xfe, 0x00, 0x04, 0x97, 0x1e, 0x42, 0x00, 0x04, 0x94, 0x08, 0x42, 0x00, 0x08, 0x94, 0x08, 0x42, 0x00, 0x0a, 0xac, 0x0a, 0x42, 0x00, 0x11, 0x44, 0x0c, 0x42, 0x00, 0x00, 0x83, 0x89, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char *CN_table[] = { + t0, t1, t2, t3, t4, t5, t19 , t7, tPassword, t6, tAbout, Back, //0 + t0, t1_1, t1_2, t1_3, t1_4, t_save, //1 + t2_0, t2_1, t2_2, t_save, //2 + t2_1, t3_1, t2_2, t_save,//3 + t_4, t_PID,//4 + t5_0, t5_1,//5 + t_off, t_on,//6 + t_NO, t_OK,//7 + t_CN_CN, t_CN_EN, t_CN_JP, //8 + t5_3, t4f, t_save, //9 +}; +/* + 日语 Japanese +*/ +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ + +#define MISAKI_FONT_H + +#define MISAKI_FONT_F0_PAGE 0xF0 +#define MISAKI_FONT_F1_PAGE 0xF1 +#define MISAKI_FONT_F2_PAGE 0xF2 + +#define MISAKI_FONT_F0_W 8 +#define MISAKI_FONT_F1_W 3 +#define MISAKI_FONT_F2_W 7 + +#define MISAKI_FONT_F0_SIZE 0xEF +#define MISAKI_FONT_F1_SIZE 0x9D +#define MISAKI_FONT_F2_SIZE 0x20 // misaki_font_f2.h の最終行の値をここに設定する、最大0xEFまで + +/* + 利用しないフォントデータはヘッダファイルを読み込まないようにするとメモリが節約できます、 + drawText() 実行時にフォントが無い場合は処理がスキップされます。 + + 例) 8x8 dot ひらがな・カタカナ・記号 のみ利用 + #include "misaki_font_f0.h" // 8x8 dot ひらがな・カタカナ・記号 + //#include "misaki_font_f1.h" // 4x8 dot 英語・カタカナ・記号 + //#include "misaki_font_f2.h" // 8x8 dot 漢字 +*/ +PROGMEM const uint8_t misaki_font_0x00[1] = { 0x00 }; +#define MISAKI_FONT_F0_H +PROGMEM const uint8_t misaki_font_f0[ MISAKI_FONT_F0_SIZE + 1 ][ MISAKI_FONT_F0_W ] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x00   */ + { 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x01 、 */ + { 0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x02 。 */ + { 0x50, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x03 , */ + { 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x04 . */ + { 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }, /* 0x05 ・ */ + { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x06 : */ + { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x07 ; */ + { 0x00, 0x02, 0x01, 0x51, 0x09, 0x09, 0x06, 0x00 }, /* 0x08 ? */ + { 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00 }, /* 0x09 ! */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 0x0A [ */ + { 0x41, 0x41, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x0B ] */ + { 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x00 }, /* 0x0C 「 */ + { 0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00 }, /* 0x0D 」 */ + { 0x00, 0x00, 0x3f, 0x21, 0x3d, 0x05, 0x07, 0x00 }, /* 0x0E 『 */ + { 0x70, 0x50, 0x5e, 0x42, 0x7e, 0x00, 0x00, 0x00 }, /* 0x0F 』 */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x63, 0x41, 0x00 }, /* 0x10 【 */ + { 0x41, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x11 】 */ + { 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00 }, /* 0x12 + */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x13 - */ + { 0x44, 0x44, 0x44, 0x5f, 0x44, 0x44, 0x44, 0x00 }, /* 0x14 ± */ + { 0x41, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 0x15 × */ + { 0x08, 0x08, 0x08, 0x2a, 0x08, 0x08, 0x08, 0x00 }, /* 0x16 ÷ */ + { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00 }, /* 0x17 = */ + { 0x14, 0x34, 0x14, 0x1c, 0x14, 0x16, 0x14, 0x00 }, /* 0x18 ≠ */ + { 0x08, 0x08, 0x14, 0x14, 0x14, 0x22, 0x22, 0x00 }, /* 0x19 < */ + { 0x22, 0x22, 0x14, 0x14, 0x14, 0x08, 0x08, 0x00 }, /* 0x1A > */ + { 0x02, 0x05, 0x02, 0x3c, 0x42, 0x42, 0x24, 0x00 }, /* 0x1B ℃ */ + { 0x00, 0x2b, 0x2c, 0x78, 0x2c, 0x2b, 0x00, 0x00 }, /* 0x1C ¥ */ + { 0x00, 0x24, 0x2a, 0x7a, 0x2f, 0x2a, 0x12, 0x00 }, /* 0x1D $ */ + { 0x00, 0x1c, 0x62, 0x32, 0x2e, 0x23, 0x14, 0x00 }, /* 0x1E ¢ */ + { 0x20, 0x54, 0x5e, 0x25, 0x41, 0x42, 0x20, 0x00 }, /* 0x1F £ */ + { 0x42, 0x25, 0x12, 0x08, 0x24, 0x52, 0x21, 0x00 }, /* 0x20 % */ + { 0x20, 0x62, 0x3e, 0x63, 0x3e, 0x23, 0x02, 0x00 }, /* 0x21 # */ + { 0x20, 0x56, 0x49, 0x55, 0x22, 0x58, 0x40, 0x00 }, /* 0x22 & */ + { 0x00, 0x22, 0x14, 0x7f, 0x14, 0x22, 0x00, 0x00 }, /* 0x23 * */ + { 0x1c, 0x22, 0x59, 0x55, 0x4d, 0x12, 0x0c, 0x00 }, /* 0x24 @ */ + { 0x00, 0x00, 0x4a, 0x55, 0x55, 0x29, 0x00, 0x00 }, /* 0x25 § */ + { 0x04, 0x64, 0x3c, 0x17, 0x3c, 0x64, 0x04, 0x00 }, /* 0x26 ☆ */ + { 0x04, 0x64, 0x3c, 0x1f, 0x3c, 0x64, 0x04, 0x00 }, /* 0x27 ★ */ + { 0x1c, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00 }, /* 0x28 ○ */ + { 0x1c, 0x3e, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x00 }, /* 0x29 ● */ + { 0x1c, 0x22, 0x5d, 0x55, 0x5d, 0x22, 0x1c, 0x00 }, /* 0x2A ◎ */ + { 0x08, 0x14, 0x22, 0x41, 0x22, 0x14, 0x08, 0x00 }, /* 0x2B ◇ */ + { 0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00 }, /* 0x2C ◆ */ + { 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, 0x00 }, /* 0x2D □ */ + { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00 }, /* 0x2E ■ */ + { 0x40, 0x70, 0x4c, 0x43, 0x4c, 0x70, 0x40, 0x00 }, /* 0x2F △ */ + { 0x40, 0x70, 0x7c, 0x7f, 0x7c, 0x70, 0x40, 0x00 }, /* 0x30 ▲ */ + { 0x01, 0x07, 0x19, 0x61, 0x19, 0x07, 0x01, 0x00 }, /* 0x31 ▽ */ + { 0x01, 0x07, 0x1f, 0x7f, 0x1f, 0x07, 0x01, 0x00 }, /* 0x32 ▼ */ + { 0x49, 0x22, 0x14, 0x49, 0x14, 0x22, 0x49, 0x00 }, /* 0x33 ※ */ + { 0x05, 0x05, 0x05, 0x7d, 0x05, 0x05, 0x05, 0x00 }, /* 0x34 〒 */ + { 0x08, 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x00 }, /* 0x35 → */ + { 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x36 ← */ + { 0x00, 0x04, 0x02, 0x7f, 0x02, 0x04, 0x00, 0x00 }, /* 0x37 ↑ */ + { 0x00, 0x10, 0x20, 0x7f, 0x20, 0x10, 0x00, 0x00 }, /* 0x38 ↓ */ + { 0x00, 0x3e, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00 }, /* 0x39 0 */ + { 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x00 }, /* 0x3A 1 */ + { 0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46, 0x00 }, /* 0x3B 2 */ + { 0x00, 0x22, 0x41, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x3C 3 */ + { 0x00, 0x30, 0x28, 0x24, 0x22, 0x7f, 0x20, 0x00 }, /* 0x3D 4 */ + { 0x00, 0x2f, 0x45, 0x45, 0x45, 0x45, 0x39, 0x00 }, /* 0x3E 5 */ + { 0x00, 0x3e, 0x49, 0x49, 0x49, 0x49, 0x32, 0x00 }, /* 0x3F 6 */ + { 0x00, 0x01, 0x01, 0x61, 0x19, 0x05, 0x03, 0x00 }, /* 0x40 7 */ + { 0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x41 8 */ + { 0x00, 0x26, 0x49, 0x49, 0x49, 0x49, 0x3e, 0x00 }, /* 0x42 9 */ + { 0x00, 0x20, 0x54, 0x7e, 0x34, 0x14, 0x60, 0x00 }, /* 0x43 ぁ */ + { 0x20, 0x52, 0x7f, 0x2a, 0x1a, 0x4a, 0x30, 0x00 }, /* 0x44 あ */ + { 0x00, 0x3c, 0x40, 0x20, 0x04, 0x18, 0x00, 0x00 }, /* 0x45 ぃ */ + { 0x1e, 0x20, 0x40, 0x20, 0x02, 0x04, 0x18, 0x00 }, /* 0x46 い */ + { 0x00, 0x10, 0x4a, 0x4a, 0x2a, 0x10, 0x00, 0x00 }, /* 0x47 ぅ */ + { 0x00, 0x08, 0x45, 0x45, 0x45, 0x25, 0x18, 0x00 }, /* 0x48 う */ + { 0x00, 0x48, 0x2a, 0x3a, 0x4a, 0x40, 0x00, 0x00 }, /* 0x49 ぇ */ + { 0x00, 0x44, 0x25, 0x15, 0x3d, 0x45, 0x40, 0x00 }, /* 0x4A え */ + { 0x00, 0x24, 0x7e, 0x14, 0x50, 0x24, 0x00, 0x00 }, /* 0x4B ぉ */ + { 0x22, 0x52, 0x7f, 0x0a, 0x48, 0x4a, 0x34, 0x00 }, /* 0x4C お */ + { 0x44, 0x34, 0x4f, 0x44, 0x38, 0x04, 0x18, 0x00 }, /* 0x4D か */ + { 0x44, 0x34, 0x4f, 0x44, 0x39, 0x04, 0x19, 0x00 }, /* 0x4E が */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5a, 0x08, 0x00 }, /* 0x4F き */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5b, 0x08, 0x00 }, /* 0x50 ぎ */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x41, 0x00, 0x00 }, /* 0x51 く */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x45, 0x04, 0x00 }, /* 0x52 ぐ */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x04, 0x00 }, /* 0x53 け */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x05, 0x00 }, /* 0x54 げ */ + { 0x00, 0x20, 0x52, 0x42, 0x42, 0x42, 0x40, 0x00 }, /* 0x55 こ */ + { 0x00, 0x20, 0x52, 0x42, 0x43, 0x42, 0x41, 0x00 }, /* 0x56 ご */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x04, 0x00 }, /* 0x57 さ */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x05, 0x00 }, /* 0x58 ざ */ + { 0x00, 0x00, 0x3f, 0x40, 0x40, 0x40, 0x20, 0x00 }, /* 0x59 し */ + { 0x00, 0x00, 0x3f, 0x40, 0x41, 0x40, 0x21, 0x00 }, /* 0x5A じ */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x02, 0x00 }, /* 0x5B す */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x03, 0x00 }, /* 0x5C ず */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x44, 0x00 }, /* 0x5D せ */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x45, 0x00 }, /* 0x5E ぜ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x08, 0x00 }, /* 0x5F そ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x0a, 0x00 }, /* 0x60 ぞ */ + { 0x42, 0x3a, 0x07, 0x22, 0x54, 0x44, 0x44, 0x00 }, /* 0x61 た */ + { 0x42, 0x3a, 0x07, 0x22, 0x55, 0x44, 0x45, 0x00 }, /* 0x62 だ */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x32, 0x00 }, /* 0x63 ち */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x33, 0x00 }, /* 0x64 ぢ */ + { 0x00, 0x10, 0x10, 0x48, 0x48, 0x30, 0x00, 0x00 }, /* 0x65 っ */ + { 0x04, 0x04, 0x02, 0x22, 0x22, 0x22, 0x1c, 0x00 }, /* 0x66 つ */ + { 0x04, 0x04, 0x02, 0x22, 0x23, 0x22, 0x1d, 0x00 }, /* 0x67 づ */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x41, 0x00 }, /* 0x68 て */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x45, 0x00 }, /* 0x69 で */ + { 0x00, 0x20, 0x57, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0x6A と */ + { 0x00, 0x20, 0x57, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0x6B ど */ + { 0x12, 0x0a, 0x27, 0x52, 0x50, 0x3a, 0x24, 0x00 }, /* 0x6C な */ + { 0x7f, 0x00, 0x20, 0x52, 0x42, 0x42, 0x40, 0x00 }, /* 0x6D に */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x64, 0x78, 0x00 }, /* 0x6E ぬ */ + { 0x24, 0x14, 0x7f, 0x04, 0x22, 0x52, 0x3c, 0x00 }, /* 0x6F ね */ + { 0x18, 0x24, 0x12, 0x4e, 0x42, 0x24, 0x18, 0x00 }, /* 0x70 の */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x44, 0x00 }, /* 0x71 は */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x45, 0x00 }, /* 0x72 ば */ + { 0x7f, 0x00, 0x24, 0x54, 0x56, 0x3d, 0x46, 0x00 }, /* 0x73 ぱ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x04, 0x00 }, /* 0x74 ひ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x05, 0x00 }, /* 0x75 び */ + { 0x02, 0x3a, 0x47, 0x40, 0x43, 0x3d, 0x06, 0x00 }, /* 0x76 ぴ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x10, 0x60, 0x00 }, /* 0x77 ふ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x11, 0x61, 0x00 }, /* 0x78 ぶ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x15, 0x62, 0x00 }, /* 0x79 ぷ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00 }, /* 0x7A へ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x11, 0x00 }, /* 0x7B べ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x12, 0x00 }, /* 0x7C ぺ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2a, 0x4a, 0x00 }, /* 0x7D ほ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7f, 0x2a, 0x4b, 0x00 }, /* 0x7E ぼ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2d, 0x4a, 0x00 }, /* 0x7F ぽ */ + { 0x00, 0x6a, 0x6a, 0x6a, 0x7f, 0x2a, 0x4a, 0x00 }, /* 0x80 ま */ + { 0x30, 0x29, 0x1d, 0x4b, 0x48, 0x3c, 0x10, 0x00 }, /* 0x81 み */ + { 0x12, 0x2a, 0x7f, 0x42, 0x40, 0x42, 0x24, 0x00 }, /* 0x82 む */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x44, 0x38, 0x00 }, /* 0x83 め */ + { 0x00, 0x0a, 0x3e, 0x4b, 0x4a, 0x4a, 0x30, 0x00 }, /* 0x84 も */ + { 0x00, 0x08, 0x0e, 0x38, 0x46, 0x14, 0x08, 0x00 }, /* 0x85 ゃ */ + { 0x04, 0x07, 0x1c, 0x62, 0x03, 0x0a, 0x04, 0x00 }, /* 0x86 や */ + { 0x00, 0x1c, 0x48, 0x3e, 0x24, 0x18, 0x00, 0x00 }, /* 0x87 ゅ */ + { 0x1e, 0x04, 0x52, 0x3f, 0x12, 0x12, 0x0c, 0x00 }, /* 0x88 ゆ */ + { 0x00, 0x20, 0x50, 0x50, 0x3e, 0x48, 0x00, 0x00 }, /* 0x89 ょ */ + { 0x00, 0x20, 0x50, 0x50, 0x3f, 0x24, 0x44, 0x00 }, /* 0x8A よ */ + { 0x00, 0x1c, 0x51, 0x49, 0x4a, 0x48, 0x30, 0x00 }, /* 0x8B ら */ + { 0x00, 0x0f, 0x42, 0x41, 0x21, 0x1e, 0x00, 0x00 }, /* 0x8C り */ + { 0x00, 0x10, 0x69, 0x6d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8D る */ + { 0x24, 0x14, 0x7f, 0x04, 0x02, 0x3e, 0x40, 0x00 }, /* 0x8E れ */ + { 0x00, 0x10, 0x49, 0x4d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8F ろ */ + { 0x00, 0x28, 0x18, 0x7e, 0x08, 0x44, 0x38, 0x00 }, /* 0x90 ゎ */ + { 0x24, 0x14, 0x7f, 0x04, 0x42, 0x42, 0x3c, 0x00 }, /* 0x91 わ */ + { 0x30, 0x49, 0x25, 0x1f, 0x24, 0x54, 0x38, 0x00 }, /* 0x92 ゐ */ + { 0x40, 0x28, 0x25, 0x57, 0x35, 0x28, 0x40, 0x00 }, /* 0x93 ゑ */ + { 0x10, 0x0a, 0x2e, 0x5b, 0x72, 0x4a, 0x48, 0x00 }, /* 0x94 を */ + { 0x40, 0x30, 0x0c, 0x33, 0x40, 0x40, 0x20, 0x00 }, /* 0x95 ん */ + { 0x00, 0x04, 0x44, 0x3c, 0x14, 0x0c, 0x00, 0x00 }, /* 0x96 ァ */ + { 0x00, 0x01, 0x41, 0x3d, 0x09, 0x05, 0x03, 0x00 }, /* 0x97 ア */ + { 0x00, 0x20, 0x20, 0x10, 0x78, 0x04, 0x00, 0x00 }, /* 0x98 ィ */ + { 0x00, 0x10, 0x10, 0x08, 0x7c, 0x02, 0x01, 0x00 }, /* 0x99 イ */ + { 0x00, 0x18, 0x48, 0x4c, 0x28, 0x18, 0x00, 0x00 }, /* 0x9A ゥ */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0x9B ウ */ + { 0x00, 0x40, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00 }, /* 0x9C ェ */ + { 0x20, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x20, 0x00 }, /* 0x9D エ */ + { 0x00, 0x28, 0x28, 0x58, 0x7c, 0x08, 0x00, 0x00 }, /* 0x9E ォ */ + { 0x22, 0x22, 0x12, 0x4a, 0x7f, 0x02, 0x02, 0x00 }, /* 0x9F オ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7e, 0x00 }, /* 0xA0 カ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7f, 0x00 }, /* 0xA1 ガ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x12, 0x10, 0x00 }, /* 0xA2 キ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x13, 0x10, 0x00 }, /* 0xA3 ギ */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0xA4 ク */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xA5 グ */ + { 0x08, 0x07, 0x42, 0x22, 0x1e, 0x02, 0x02, 0x00 }, /* 0xA6 ケ */ + { 0x08, 0x07, 0x42, 0x22, 0x1f, 0x02, 0x03, 0x00 }, /* 0xA7 ゲ */ + { 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xA8 コ */ + { 0x00, 0x42, 0x42, 0x42, 0x43, 0x42, 0x7f, 0x00 }, /* 0xA9 ゴ */ + { 0x02, 0x02, 0x4f, 0x42, 0x22, 0x1f, 0x02, 0x00 }, /* 0xAA サ */ + { 0x02, 0x02, 0x4f, 0x42, 0x23, 0x1e, 0x03, 0x00 }, /* 0xAB ザ */ + { 0x00, 0x45, 0x4a, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xAC シ */ + { 0x00, 0x45, 0x4a, 0x40, 0x21, 0x10, 0x0d, 0x00 }, /* 0xAD ジ */ + { 0x40, 0x42, 0x22, 0x22, 0x1a, 0x26, 0x40, 0x00 }, /* 0xAE ス */ + { 0x40, 0x42, 0x22, 0x22, 0x1b, 0x26, 0x41, 0x00 }, /* 0xAF ズ */ + { 0x04, 0x04, 0x3f, 0x44, 0x44, 0x54, 0x4c, 0x00 }, /* 0xB0 セ */ + { 0x04, 0x04, 0x3f, 0x44, 0x45, 0x54, 0x4d, 0x00 }, /* 0xB1 ゼ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x10, 0x0f, 0x00 }, /* 0xB2 ソ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x11, 0x0f, 0x00 }, /* 0xB3 ゾ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0e, 0x00 }, /* 0xB4 タ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0f, 0x00 }, /* 0xB5 ダ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x09, 0x08, 0x00 }, /* 0xB6 チ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x08, 0x09, 0x00 }, /* 0xB7 ヂ */ + { 0x00, 0x18, 0x40, 0x58, 0x20, 0x18, 0x00, 0x00 }, /* 0xB8 ッ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x20, 0x10, 0x0e, 0x00 }, /* 0xB9 ツ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x21, 0x10, 0x0d, 0x00 }, /* 0xBA ヅ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x05, 0x04, 0x00 }, /* 0xBB テ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x04, 0x05, 0x00 }, /* 0xBC デ */ + { 0x00, 0x00, 0x7f, 0x08, 0x08, 0x10, 0x00, 0x00 }, /* 0xBD ト */ + { 0x00, 0x00, 0x7f, 0x08, 0x09, 0x10, 0x01, 0x00 }, /* 0xBE ド */ + { 0x04, 0x44, 0x24, 0x1f, 0x04, 0x04, 0x04, 0x00 }, /* 0xBF ナ */ + { 0x20, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x00 }, /* 0xC0 ニ */ + { 0x40, 0x41, 0x25, 0x15, 0x19, 0x27, 0x00, 0x00 }, /* 0xC1 ヌ */ + { 0x20, 0x22, 0x12, 0x7b, 0x06, 0x12, 0x20, 0x00 }, /* 0xC2 ネ */ + { 0x40, 0x40, 0x20, 0x10, 0x08, 0x07, 0x00, 0x00 }, /* 0xC3 ノ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0c, 0x70, 0x00 }, /* 0xC4 ハ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x71, 0x00 }, /* 0xC5 バ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x72, 0x00 }, /* 0xC6 パ */ + { 0x00, 0x3f, 0x48, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0xC7 ヒ */ + { 0x00, 0x3f, 0x48, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0xC8 ビ */ + { 0x00, 0x3f, 0x48, 0x48, 0x4a, 0x45, 0x46, 0x00 }, /* 0xC9 ピ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xCA フ */ + { 0x00, 0x02, 0x42, 0x42, 0x23, 0x12, 0x0f, 0x00 }, /* 0xCB ブ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x15, 0x0e, 0x00 }, /* 0xCC プ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00 }, /* 0xCD ヘ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x21, 0x00 }, /* 0xCE ベ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x22, 0x00 }, /* 0xCF ペ */ + { 0x24, 0x14, 0x44, 0x7f, 0x04, 0x14, 0x24, 0x00 }, /* 0xD0 ホ */ + { 0x24, 0x14, 0x44, 0x7f, 0x05, 0x14, 0x25, 0x00 }, /* 0xD1 ボ */ + { 0x24, 0x14, 0x44, 0x7f, 0x06, 0x15, 0x22, 0x00 }, /* 0xD2 ポ */ + { 0x02, 0x02, 0x12, 0x22, 0x52, 0x0a, 0x06, 0x00 }, /* 0xD3 マ */ + { 0x00, 0x21, 0x25, 0x29, 0x4a, 0x42, 0x00, 0x00 }, /* 0xD4 ミ */ + { 0x40, 0x70, 0x4c, 0x43, 0x50, 0x20, 0x40, 0x00 }, /* 0xD5 ム */ + { 0x40, 0x44, 0x24, 0x14, 0x08, 0x37, 0x00, 0x00 }, /* 0xD6 メ */ + { 0x00, 0x08, 0x09, 0x3f, 0x49, 0x49, 0x48, 0x00 }, /* 0xD7 モ */ + { 0x00, 0x10, 0x1c, 0x68, 0x08, 0x18, 0x00, 0x00 }, /* 0xD8 ャ */ + { 0x04, 0x04, 0x0f, 0x74, 0x02, 0x0a, 0x06, 0x00 }, /* 0xD9 ヤ */ + { 0x00, 0x40, 0x48, 0x48, 0x78, 0x40, 0x00, 0x00 }, /* 0xDA ュ */ + { 0x20, 0x22, 0x22, 0x22, 0x3e, 0x20, 0x20, 0x00 }, /* 0xDB ユ */ + { 0x00, 0x00, 0x44, 0x54, 0x54, 0x7c, 0x00, 0x00 }, /* 0xDC ョ */ + { 0x00, 0x42, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x00 }, /* 0xDD ヨ */ + { 0x00, 0x04, 0x45, 0x45, 0x25, 0x15, 0x0c, 0x00 }, /* 0xDE ラ */ + { 0x00, 0x0f, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x00 }, /* 0xDF リ */ + { 0x40, 0x20, 0x1e, 0x00, 0x7f, 0x20, 0x10, 0x00 }, /* 0xE0 ル */ + { 0x00, 0x00, 0x7f, 0x40, 0x20, 0x10, 0x08, 0x00 }, /* 0xE1 レ */ + { 0x00, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xE2 ロ */ + { 0x00, 0x0c, 0x44, 0x44, 0x24, 0x1c, 0x00, 0x00 }, /* 0xE3 ヮ */ + { 0x00, 0x06, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xE4 ワ */ + { 0x10, 0x12, 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x00 }, /* 0xE5 ヰ */ + { 0x20, 0x22, 0x22, 0x3a, 0x26, 0x22, 0x20, 0x00 }, /* 0xE6 ヱ */ + { 0x00, 0x01, 0x45, 0x45, 0x25, 0x15, 0x0f, 0x00 }, /* 0xE7 ヲ */ + { 0x00, 0x41, 0x42, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xE8 ン */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xE9 ヴ */ + { 0x00, 0x48, 0x28, 0x1c, 0x48, 0x78, 0x00, 0x00 }, /* 0xEA ヵ */ + { 0x00, 0x10, 0x0c, 0x48, 0x38, 0x08, 0x00, 0x00 }, /* 0xEB ヶ */ + { 0x08, 0x04, 0x04, 0x08, 0x10, 0x10, 0x08, 0x00 }, /* 0xEC 〜 */ + { 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00 }, /* 0xED … */ + { 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0xEE ー */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 0xEF ― */ +}; + +#define MISAKI_FONT_F1_H +PROGMEM const uint8_t misaki_font_f1[ MISAKI_FONT_F1_SIZE + 1 ][ MISAKI_FONT_F1_W ] = +{ + { 0x00, 0x00, 0x00 }, /* 0x00 */ + { 0x00, 0x2f, 0x00 }, /* 0x01 ! */ + { 0x03, 0x00, 0x03 }, /* 0x02 " */ + { 0x3f, 0x12, 0x3f }, /* 0x03 # */ + { 0x16, 0x3f, 0x1a }, /* 0x04 $ */ + { 0x12, 0x08, 0x24 }, /* 0x05 % */ + { 0x32, 0x3d, 0x2a }, /* 0x06 & */ + { 0x02, 0x01, 0x00 }, /* 0x07 ' */ + { 0x00, 0x3e, 0x41 }, /* 0x08 ( */ + { 0x41, 0x3e, 0x00 }, /* 0x09 ) */ + { 0x0a, 0x07, 0x0a }, /* 0x0A * */ + { 0x08, 0x3e, 0x08 }, /* 0x0B + */ + { 0x40, 0x20, 0x00 }, /* 0x0C , */ + { 0x08, 0x08, 0x08 }, /* 0x0D - */ + { 0x00, 0x20, 0x00 }, /* 0x0E . */ + { 0x10, 0x08, 0x04 }, /* 0x0F / */ + { 0x1c, 0x2a, 0x1c }, /* 0x10 0 */ + { 0x24, 0x3e, 0x20 }, /* 0x11 1 */ + { 0x32, 0x2a, 0x24 }, /* 0x12 2 */ + { 0x22, 0x2a, 0x14 }, /* 0x13 3 */ + { 0x18, 0x14, 0x3e }, /* 0x14 4 */ + { 0x2e, 0x2a, 0x12 }, /* 0x15 5 */ + { 0x1c, 0x2a, 0x12 }, /* 0x16 6 */ + { 0x02, 0x3a, 0x06 }, /* 0x17 7 */ + { 0x14, 0x2a, 0x14 }, /* 0x18 8 */ + { 0x24, 0x2a, 0x1c }, /* 0x19 9 */ + { 0x00, 0x24, 0x00 }, /* 0x1A : */ + { 0x40, 0x24, 0x00 }, /* 0x1B ; */ + { 0x08, 0x14, 0x22 }, /* 0x1C < */ + { 0x14, 0x14, 0x14 }, /* 0x1D = */ + { 0x22, 0x14, 0x08 }, /* 0x1E > */ + { 0x02, 0x29, 0x06 }, /* 0x1F ? */ + { 0x12, 0x29, 0x1e }, /* 0x20 @ */ + { 0x3e, 0x09, 0x3e }, /* 0x21 A */ + { 0x3f, 0x25, 0x1a }, /* 0x22 B */ + { 0x1e, 0x21, 0x21 }, /* 0x23 C */ + { 0x3f, 0x21, 0x1e }, /* 0x24 D */ + { 0x3f, 0x25, 0x21 }, /* 0x25 E */ + { 0x3f, 0x05, 0x01 }, /* 0x26 F */ + { 0x1e, 0x21, 0x39 }, /* 0x27 G */ + { 0x3f, 0x08, 0x3f }, /* 0x28 H */ + { 0x21, 0x3f, 0x21 }, /* 0x29 I */ + { 0x10, 0x20, 0x1f }, /* 0x2A J */ + { 0x3f, 0x04, 0x3b }, /* 0x2B K */ + { 0x3f, 0x20, 0x20 }, /* 0x2C L */ + { 0x3f, 0x06, 0x3f }, /* 0x2D M */ + { 0x3f, 0x01, 0x3e }, /* 0x2E N */ + { 0x1e, 0x21, 0x1e }, /* 0x2F O */ + { 0x3f, 0x09, 0x06 }, /* 0x30 P */ + { 0x1e, 0x21, 0x5e }, /* 0x31 Q */ + { 0x3f, 0x09, 0x36 }, /* 0x32 R */ + { 0x22, 0x25, 0x19 }, /* 0x33 S */ + { 0x01, 0x3f, 0x01 }, /* 0x34 T */ + { 0x3f, 0x20, 0x3f }, /* 0x35 U */ + { 0x3f, 0x10, 0x0f }, /* 0x36 V */ + { 0x3f, 0x18, 0x3f }, /* 0x37 W */ + { 0x33, 0x0c, 0x33 }, /* 0x38 X */ + { 0x03, 0x3c, 0x03 }, /* 0x39 Y */ + { 0x31, 0x2d, 0x23 }, /* 0x3A Z */ + { 0x00, 0x7f, 0x41 }, /* 0x3B [ */ + { 0x15, 0x3e, 0x15 }, /* 0x3C \ */ + { 0x41, 0x7f, 0x00 }, /* 0x3D ] */ + { 0x02, 0x01, 0x02 }, /* 0x3E ^ */ + { 0x40, 0x40, 0x40 }, /* 0x3F _ */ + { 0x00, 0x01, 0x02 }, /* 0x40 ` */ + { 0x18, 0x24, 0x3c }, /* 0x41 a */ + { 0x3f, 0x24, 0x18 }, /* 0x42 b */ + { 0x18, 0x24, 0x24 }, /* 0x43 c */ + { 0x18, 0x24, 0x3f }, /* 0x44 d */ + { 0x18, 0x2c, 0x2c }, /* 0x45 e */ + { 0x04, 0x3f, 0x05 }, /* 0x46 f */ + { 0x48, 0x54, 0x3c }, /* 0x47 g */ + { 0x3f, 0x04, 0x38 }, /* 0x48 h */ + { 0x00, 0x3d, 0x00 }, /* 0x49 i */ + { 0x40, 0x3d, 0x00 }, /* 0x4A j */ + { 0x3f, 0x08, 0x34 }, /* 0x4B k */ + { 0x01, 0x3f, 0x00 }, /* 0x4C l */ + { 0x3c, 0x1c, 0x38 }, /* 0x4D m */ + { 0x3c, 0x04, 0x38 }, /* 0x4E n */ + { 0x18, 0x24, 0x18 }, /* 0x4F o */ + { 0x7c, 0x24, 0x18 }, /* 0x50 p */ + { 0x18, 0x24, 0x7c }, /* 0x51 q */ + { 0x3c, 0x08, 0x04 }, /* 0x52 r */ + { 0x28, 0x3c, 0x14 }, /* 0x53 s */ + { 0x04, 0x3e, 0x24 }, /* 0x54 t */ + { 0x3c, 0x20, 0x3c }, /* 0x55 u */ + { 0x3c, 0x10, 0x0c }, /* 0x56 v */ + { 0x3c, 0x30, 0x3c }, /* 0x57 w */ + { 0x24, 0x18, 0x24 }, /* 0x58 x */ + { 0x4c, 0x50, 0x3c }, /* 0x59 y */ + { 0x24, 0x34, 0x2c }, /* 0x5A z */ + { 0x08, 0x36, 0x41 }, /* 0x5B { */ + { 0x00, 0x7f, 0x00 }, /* 0x5C | */ + { 0x41, 0x36, 0x08 }, /* 0x5D } */ + { 0x01, 0x01, 0x01 }, /* 0x5E ~ */ + { 0x10, 0x28, 0x10 }, /* 0x5F 。 */ + { 0x1f, 0x01, 0x01 }, /* 0x60 「 */ + { 0x20, 0x20, 0x3e }, /* 0x61 」 */ + { 0x10, 0x20, 0x00 }, /* 0x62 、 */ + { 0x00, 0x08, 0x00 }, /* 0x63 ・ */ + { 0x25, 0x15, 0x0f }, /* 0x64 ヲ */ + { 0x24, 0x1c, 0x0c }, /* 0x65 ァ */ + { 0x10, 0x38, 0x04 }, /* 0x66 ィ */ + { 0x18, 0x0c, 0x38 }, /* 0x67 ゥ */ + { 0x28, 0x38, 0x28 }, /* 0x68 ェ */ + { 0x28, 0x18, 0x3c }, /* 0x69 ォ */ + { 0x08, 0x3c, 0x18 }, /* 0x6A ャ */ + { 0x28, 0x38, 0x20 }, /* 0x6B ュ */ + { 0x24, 0x2c, 0x3c }, /* 0x6C ョ */ + { 0x2c, 0x2c, 0x1c }, /* 0x6D ッ */ + { 0x04, 0x08, 0x08 }, /* 0x6E ー */ + { 0x21, 0x1d, 0x07 }, /* 0x6F ア */ + { 0x08, 0x3c, 0x03 }, /* 0x70 イ */ + { 0x06, 0x23, 0x1e }, /* 0x71 ウ */ + { 0x22, 0x3e, 0x22 }, /* 0x72 エ */ + { 0x12, 0x0a, 0x3f }, /* 0x73 オ */ + { 0x32, 0x0f, 0x3e }, /* 0x74 カ */ + { 0x0a, 0x3f, 0x0a }, /* 0x75 キ */ + { 0x24, 0x13, 0x0e }, /* 0x76 ク */ + { 0x27, 0x1e, 0x02 }, /* 0x77 ケ */ + { 0x22, 0x22, 0x3e }, /* 0x78 コ */ + { 0x27, 0x12, 0x0f }, /* 0x79 サ */ + { 0x25, 0x25, 0x10 }, /* 0x7A シ */ + { 0x21, 0x19, 0x27 }, /* 0x7B ス */ + { 0x3f, 0x22, 0x2e }, /* 0x7C セ */ + { 0x21, 0x16, 0x0f }, /* 0x7D ソ */ + { 0x24, 0x1b, 0x0e }, /* 0x7E タ */ + { 0x25, 0x1f, 0x05 }, /* 0x7F チ */ + { 0x26, 0x26, 0x1e }, /* 0x80 ツ */ + { 0x25, 0x1d, 0x05 }, /* 0x81 テ */ + { 0x3f, 0x04, 0x08 }, /* 0x82 ト */ + { 0x24, 0x1f, 0x04 }, /* 0x83 ナ */ + { 0x20, 0x22, 0x22 }, /* 0x84 ニ */ + { 0x25, 0x19, 0x27 }, /* 0x85 ヌ */ + { 0x12, 0x3b, 0x16 }, /* 0x86 ネ */ + { 0x20, 0x10, 0x0f }, /* 0x87 ノ */ + { 0x3c, 0x01, 0x3e }, /* 0x88 ハ */ + { 0x1f, 0x24, 0x24 }, /* 0x89 ヒ */ + { 0x21, 0x11, 0x0f }, /* 0x8A フ */ + { 0x0c, 0x03, 0x1c }, /* 0x8B ヘ */ + { 0x1a, 0x3f, 0x1a }, /* 0x8C ホ */ + { 0x09, 0x19, 0x27 }, /* 0x8D マ */ + { 0x22, 0x2a, 0x2a }, /* 0x8E ミ */ + { 0x38, 0x27, 0x30 }, /* 0x8F ム */ + { 0x32, 0x0c, 0x13 }, /* 0x90 メ */ + { 0x05, 0x3f, 0x25 }, /* 0x91 モ */ + { 0x02, 0x3f, 0x0e }, /* 0x92 ヤ */ + { 0x21, 0x3f, 0x20 }, /* 0x93 ユ */ + { 0x25, 0x25, 0x3f }, /* 0x94 ヨ */ + { 0x25, 0x25, 0x1d }, /* 0x95 ラ */ + { 0x07, 0x20, 0x1f }, /* 0x96 リ */ + { 0x3c, 0x3f, 0x20 }, /* 0x97 ル */ + { 0x3f, 0x20, 0x10 }, /* 0x98 レ */ + { 0x3e, 0x22, 0x3e }, /* 0x99 ロ */ + { 0x23, 0x11, 0x0f }, /* 0x9A ワ */ + { 0x21, 0x21, 0x18 }, /* 0x9B ン */ + { 0x01, 0x00, 0x01 }, /* 0x9C ゙ */ + { 0x02, 0x05, 0x02 }, /* 0x9D ゚ */ +}; +#define MISAKI_FONT_F2_H +PROGMEM const uint8_t misaki_font_f2[ MISAKI_FONT_F2_SIZE + 1 ][ MISAKI_FONT_F2_W ] = +{ + { 0x75, 0x40, 0x77, 0x55, 0x75, 0x77, 0x40 }, /* 0x00 温 */ + { 0x40, 0x3e, 0x4a, 0x5e, 0x2b, 0x5e, 0x4a }, /* 0x01 度 */ + { 0x6b, 0x62, 0x7f, 0x35, 0x2f, 0x35, 0x7f }, /* 0x02 調 */ + { 0x7c, 0x5b, 0x5e, 0x24, 0x7b, 0x0e, 0x3a }, /* 0x03 節 */ + { 0x04, 0x7e, 0x01, 0x7e, 0x4a, 0x5e, 0x69 }, /* 0x04 低 */ + { 0x06, 0x3a, 0x2f, 0x3f, 0x6b, 0x7e, 0x46 }, /* 0x05 電 */ + { 0x40, 0x3f, 0x41, 0x49, 0x7f, 0x49, 0x41 }, /* 0x06 圧 */ + { 0x02, 0x62, 0x6b, 0x6b, 0x6b, 0x62, 0x02 }, /* 0x07 言 */ + { 0x6a, 0x6b, 0x14, 0x7d, 0x57, 0x7d, 0x10 }, /* 0x08 語 */ + { 0x41, 0x3f, 0x55, 0x55, 0x3d, 0x57, 0x51 }, /* 0x09 戻 */ + { 0x21, 0x3f, 0x2d, 0x7f, 0x2a, 0x12, 0x2e }, /* 0x0A 取 */ + { 0x0a, 0x77, 0x5a, 0x50, 0x5a, 0x77, 0x0a }, /* 0x0B 替 */ + { 0x20, 0x24, 0x13, 0x7d, 0x55, 0x53, 0x70 }, /* 0x0C 名 */ + { 0x7a, 0x2a, 0x7b, 0x02, 0x1a, 0x43, 0x7a }, /* 0x0D 前 */ + { 0x4a, 0x52, 0x5e, 0x2b, 0x5e, 0x42, 0x4a }, /* 0x0E 変 */ + { 0x41, 0x5f, 0x35, 0x3f, 0x55, 0x5f, 0x41 }, /* 0x0F 更 */ + { 0x7d, 0x14, 0x57, 0x7d, 0x0e, 0x40, 0x7f }, /* 0x10 削 */ + { 0x7f, 0x1b, 0x54, 0x16, 0x7d, 0x16, 0x54 }, /* 0x11 除 */ + { 0x49, 0x3a, 0x40, 0x7e, 0x57, 0x56, 0x76 }, /* 0x12 追 */ + { 0x42, 0x3f, 0x42, 0x7e, 0x7e, 0x42, 0x7e }, /* 0x13 加 */ + { 0x04, 0x7e, 0x51, 0x37, 0x7d, 0x37, 0x50 }, /* 0x14 保 */ + { 0x12, 0x7a, 0x17, 0x52, 0x76, 0x1e, 0x12 }, /* 0x15 存 */ + { 0x7f, 0x55, 0x7f, 0x14, 0x5d, 0x7f, 0x55 }, /* 0x16 睡 */ + { 0x7f, 0x55, 0x7f, 0x7f, 0x55, 0x3d, 0x57 }, /* 0x17 眠 */ + { 0x7f, 0x55, 0x37, 0x78, 0x17, 0x45, 0x7f }, /* 0x18 閉 */ + { 0x7f, 0x2b, 0x7b, 0x28, 0x7b, 0x2b, 0x7f }, /* 0x19 開 */ + { 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x1e }, /* 0x1A 中 */ + { 0x7f, 0x41, 0x6b, 0x7f, 0x6b, 0x51, 0x7f }, /* 0x1B 国 */ + { 0x52, 0x5a, 0x57, 0x3a, 0x57, 0x5a, 0x52 }, /* 0x1C 英 */ + { 0x00, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x7f }, /* 0x1D 日 */ + { 0x22, 0x12, 0x2a, 0x7f, 0x2a, 0x12, 0x22 }, /* 0x1E 本 */ + { 0x16, 0x6a, 0x5e, 0x73, 0x56, 0x62, 0x16 }, /* 0x1F 密 */ + { 0x09, 0x37, 0x31, 0x5f, 0x15, 0x5f, 0x75 }, /* 0x20 碼 */ +}; +/* + プリセット + 温度調節 + タイマー + コントロール + スクリーン + ブザー + 低電圧アラーム + 言語 + 戻る + 取り替える + キャリブレーション + 名前を変更 + 削除 + 追加 + 保存 + デフォルト + 睡眠 + ブースト + 保存 + 睡眠 + 閉じる + ブースト + 保存 + ダイレクト + PID + ビッグ + ニュース + 閉じる + 開く + いいえ、 + はい、 + 中国語 + 英語 + いいえ、 + はい、 + メインスクリーン + フリップ + 保存 + アバウト + 日本語 + + 汉字转换表:温度調節低電圧言語戻取替名前変更削除追加保存睡眠閉開中国英日本密碼 +*/ +const char JP_0[] PROGMEM = { 0xf0, 0xcc, 0xdf, 0xb0, 0xb8, 0xbd, }; +const char JP_1[] PROGMEM = { 0xf2, 0x00, 0x01, 0x02, 0x03, }; +const char JP_2[] PROGMEM = { 0xf0, 0xb4, 0x99, 0xd3, 0xee, }; +const char JP_3[] PROGMEM = { 0xf0, 0xa8, 0xe8, 0xbd, 0xe2, 0xee, 0xe0, }; +const char JP_4[] PROGMEM = { 0xf0, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_5[] PROGMEM = { 0xf0, 0xcb, 0xab, 0xee, }; +const char JP_6[] PROGMEM = { 0xf2, 0x04, 0x05, 0x06, 0xf0, 0x97, 0xde, 0xee, 0xd5, }; +const char JP_7[] PROGMEM = { 0xf2, 0x07, 0x08, }; +const char JP_8[] PROGMEM = { 0xf2, 0x09, 0xf0, 0x8d, }; +const char JP_9[] PROGMEM = { 0xf2, 0x0a, 0xf0, 0x8c, 0xf2, 0x0b, 0xf0, 0x4a, 0x8d, }; +const char JP_10[] PROGMEM = { 0xf0, 0xa2, 0xd8, 0xdf, 0xcb, 0xe1, 0xee, 0xac, 0xdc, 0xe8, }; +const char JP_11[] PROGMEM = { 0xf2, 0x0c, 0x0d, 0xf0, 0x94, 0xf2, 0x0e, 0x0f, }; +const char JP_12[] PROGMEM = { 0xf2, 0x10, 0x11, }; +const char JP_13[] PROGMEM = { 0xf2, 0x12, 0x13, }; +const char JP_14[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_15[] PROGMEM = { 0xf0, 0xbc, 0xca, 0x9e, 0xe0, 0xbd, }; +const char JP_16[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_17[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_18[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_19[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_20[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_21[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_22[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_23[] PROGMEM = { 0xf0, 0xb5, 0x99, 0xe1, 0xa4, 0xbd, }; +const char JP_24[] PROGMEM = { 0xf1, 0x30, 0x29, 0x24, }; +const char JP_25[] PROGMEM = { 0xf0, 0xc8, 0xb8, 0xa5, }; +const char JP_26[] PROGMEM = { 0xf0, 0xc0, 0xda, 0xee, 0xae, }; +const char JP_27[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_28[] PROGMEM = { 0xf2, 0x19, 0xf0, 0x51, }; +const char JP_29[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_30[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_31[] PROGMEM = { 0xf2, 0x1a, 0x1b, 0x08, }; +const char JP_32[] PROGMEM = { 0xf2, 0x1c, 0x08, }; +const char JP_33[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_34[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_35[] PROGMEM = { 0xf0, 0xd6, 0x99, 0xe8, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_36[] PROGMEM = { 0xf0, 0xca, 0xdf, 0xb8, 0xcc, }; +const char JP_37[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_38[] PROGMEM = { 0xf0, 0x97, 0xc5, 0x9b, 0xbd, }; +const char JP_39[] PROGMEM = { 0xf2, 0x1d, 0x1e, 0x08, }; +const char JP_40[] PROGMEM = { 0xf2, 0x1f, 0x20, }; //密码 + +const char *const JP_table[] = {JP_0, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_40, JP_7, JP_38, JP_8, JP_9, JP_10, JP_11, JP_12, JP_13, JP_14, JP_15, JP_16, JP_17, JP_18, JP_19, JP_20, JP_21, JP_22, JP_23, JP_24, JP_25, JP_26, JP_27, JP_28, JP_29, JP_30, JP_31, JP_32, JP_39, JP_35, JP_36, JP_37,}; +const char JP_Length_table[] PROGMEM = {6, 5, 5, 7, 6, 4, 9, 3, 3 , 5, 4, 9, 10, 8, 3, 3, 3, 6, 3, 5, 3, 3, 5, 5, 3, 6, 4, 4, 5, 5, 4, 5, 4, 4, 3, 4, 9, 5, 3,}; + +bool lastbutton; +#include //注意 这里使用被阉割的图形库,只有绘图功能,并非通用的版本 +Arduboy2 arduboy; + +#include +#include +#include + +// Firmware version +#define VERSION "v1.8t1" + +// Type of rotary encoder +#define ROTARY_TYPE 1 // 0: 2 increments/step; 1: 4 increments/step + +// Pins +#define SENSOR_PIN A0 // temperature sense +#define VIN_PIN A1 // input voltage sense +#define BUZZER_PIN 5 // buzzer +#define BUTTON_PIN 6 // rotary encoder switch +#define ROTARY_1_PIN 7 // rotary encoder 1 +#define ROTARY_2_PIN 8 // rotary encoder 2 +#define CONTROL_PIN 9 // heater MOSFET PWM control +#define SWITCH_PIN 10 // handle vibration switch + +// Default temperature control values (recommended soldering temperature: 300-380°C) +#define ChipTempCalVal 335 //芯片内部温度读取校准值 -->可以根据实际情况修改,不同机器情况不同,通常误差在10°C内 +#define TEMP_MIN 150 // min selectable temperature +#define TEMP_MAX 400 // max selectable temperature +#define TEMP_DEFAULT 320 // default start setpoint +#define TEMP_SLEEP 150 // temperature in sleep mode +#define TEMP_BOOST 60 // temperature increase in boost mode +#define TEMP_STEP 10 // rotary encoder temp change steps + +// Default tip temperature calibration values +#define TEMP200 216 // temperature at ADC = 200 +#define TEMP280 308 // temperature at ADC = 280 +#define TEMP360 390 // temperature at ADC = 360 +#define TEMPCHP 30 // chip temperature while calibration +#define TIPMAX 8 // max number of tips +#define TIPNAMELENGTH 6 // max length of tip names (including termination) +#define TIPNAME "BC1.5" // default tip name + +// Default timer values (0 = disabled) +#define TIME2SLEEP 5 // time to enter sleep mode in minutes +#define TIME2OFF 15 // time to shut off heater in minutes +#define TIMEOFBOOST 40 // time to stay in boost mode in seconds + +// Control values +#define TIME2SETTLE 950 // time in microseconds to allow OpAmp output to settle +#define SMOOTHIE 0.05 // OpAmp output smooth factor (1=no smoothing; 0.05 default) +#define PID_ENABLE true // enable PID control +#define BEEP_ENABLE true // enable/disable buzzer +#define MAINSCREEN 1 // type of main screen (0: big numbers; 1: more infos) + +// EEPROM identifier +#define EEPROM_IDENT 0x140A // to identify if EEPROM was written by this program + +//Beep +#define SetBeepCoolTime 200 +unsigned long BeepCoolTime; + +// Define the aggressive and conservative PID tuning parameters +double aggKp = 11, aggKi = 0.5, aggKd = 1; +double consKp = 11, consKi = 3, consKd = 5; + +// Default values that can be changed by the user and stored in the EEPROM +uint16_t DefaultTemp = TEMP_DEFAULT; +uint16_t SleepTemp = TEMP_SLEEP; +uint8_t BoostTemp = TEMP_BOOST; +uint8_t time2sleep = TIME2SLEEP; +uint8_t time2off = TIME2OFF; +uint8_t timeOfBoost = TIMEOFBOOST; +uint8_t MainScrType = MAINSCREEN; +bool PIDenable = PID_ENABLE; +bool beepEnable = BEEP_ENABLE; +// Default values for tips +uint16_t CalTemp[TIPMAX][4] = {TEMP200, TEMP280, TEMP360, TEMPCHP}; +char TipName[TIPMAX][TIPNAMELENGTH] = {TIPNAME}; +uint8_t CurrentTip = 0; +uint8_t NumberOfTips = 1; + +// Menu items +/* + 这个可以选择进行界面美化 + const char *DeleteMessage[] = { "Warning", "You cannot", "delete your", "last tip!" }; + const char *MaxTipMessage[] = { "Warning", "You reached", "maximum number", "of tips!" }; +*/ +// Variables for pin change interrupt +volatile uint8_t a0, b0, c0, d0; +volatile bool ab0; +volatile int count, countMin, countMax, countStep; +volatile bool handleMoved; + +// Variables for temperature control +uint16_t SetTemp, ShowTemp, gap, Step; +double Input, Output, Setpoint, RawTemp, CurrentTemp, ChipTemp; + +// Variables for voltage readings +uint16_t Vcc, Vin; + +// State variables +bool inSleepMode = false; +bool inOffMode = false; +bool inBoostMode = false; +bool inCalibMode = false; +bool isWorky = true; +bool beepIfWorky = true; +bool TipIsPresent = true; +bool FlipState = false; +// Timing variables +uint32_t sleepmillis; +uint32_t boostmillis; +uint32_t buttonmillis; +uint8_t goneMinutes; +uint8_t goneSeconds; +uint8_t SensorCounter = 255; +//串口助手 +int x, y, a, b; +//欠压报警 +byte UnderVoltage = 0; +// Control variables +uint16_t time2settle = 300; + +//模拟数字滚轮 Numerical scrolling effect +int Value; +int LastValue[3]; +float SlidingAnimationY[3]; + +//开机密码 BootPassword +int Password = 0; + +//屏幕保护-主题:密集运算 +byte Line[4]; + +//编码器旋转调整方向设定 +bool RotaryD = false; +// Specify the links and initial PID tuning parameters +PID ctrl(&Input, &Output, &Setpoint, aggKp, aggKi, aggKd, REVERSE); + + + +//LANG 语言支持 +/* 0 - 中文 CHINESE + 1 - 英文 ENGLISH + 2 - 日语 +*/ +byte LANG = 0; +void Flip(bool Fmode) { + arduboy.flipVertical(Fmode); + arduboy.flipHorizontal(Fmode); +} +void setup() { + arduboy.begin(); + arduboy.setFrameRate(30); + + //Serial.begin(115200); + // set the pin modes + pinMode(SENSOR_PIN, INPUT); + pinMode(VIN_PIN, INPUT); + pinMode(BUZZER_PIN, OUTPUT); + pinMode(CONTROL_PIN, OUTPUT); + pinMode(ROTARY_1_PIN, INPUT_PULLUP); + pinMode(ROTARY_2_PIN, INPUT_PULLUP); + pinMode(BUTTON_PIN, INPUT_PULLUP); + pinMode(SWITCH_PIN, INPUT_PULLUP); + + analogWrite(CONTROL_PIN, 255); // this shuts off the heater + digitalWrite(BUZZER_PIN, LOW); // must be LOW when buzzer not in use + + // setup ADC + ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2); // set ADC prescaler to 128 + ADCSRA |= bit (ADIE); // enable ADC interrupt + interrupts (); // enable global interrupts + + // setup pin change interrupt for rotary encoder + PCMSK0 = bit (PCINT0); // Configure pin change interrupt on Pin8 + PCICR = bit (PCIE0); // Enable pin change interrupt + PCIFR = bit (PCIF0); // Clear interrupt flag + + + // get default values from EEPROM + getEEPROM(); + //设置屏幕反转状态 + Flip(FlipState); + //初始化屏幕保护动画 + for (byte a = 0; a < 4; a++) Line[a] = 32 * a; + //开机密码 + BootPassword(); + + // read supply voltages in mV + Vcc = getVCC(); Vin = getVIN(); + + // read and set current iron temperature + SetTemp = DefaultTemp; + RawTemp = denoiseAnalog(SENSOR_PIN); + ChipTemp = getChipTemp(); + calculateTemp(); + + // turn on heater if iron temperature is well below setpoint + if ((CurrentTemp + 20) < DefaultTemp) analogWrite(CONTROL_PIN, 0); + + // tell the PID to range between 0 and the full window size + ctrl.SetOutputLimits(0, 255); + + // start PID + ctrl.SetMode(AUTOMATIC); + + // set initial rotary encoder values + a0 = PINB & 1; b0 = PIND >> 7 & 1; ab0 = (a0 == b0); + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + + // reset sleep timer + sleepmillis = millis(); + + // long beep for setup completion + beep(); beep(); + + +} + + +void loop() { + //HelpMeSerialer(); + ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu) + SLEEPCheck(); // check and activate/deactivate sleep modes + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + MainScreen(); // updates the main page on the OLED + //beep(0); +} + + + + +// check rotary encoder; set temperature, toggle boost mode, enter setup menu accordingly +void ROTARYCheck() { + // set working temperature according to rotary encoder value + SetTemp = getRotary(); + + // check rotary encoder switch + uint8_t c = digitalRead(BUTTON_PIN); + if ( !c && c0 ) { + beep(); + buttonmillis = millis(); + while ( (!digitalRead(BUTTON_PIN)) && ((millis() - buttonmillis) < 500) ); + if ((millis() - buttonmillis) >= 500) SetupScreen(); + else { + inBoostMode = !inBoostMode; + if (inBoostMode) boostmillis = millis(); + handleMoved = true; + } + } + c0 = c; + + // check timer when in boost mode + if (inBoostMode && timeOfBoost) { + goneSeconds = (millis() - boostmillis) / 1000; + if (goneSeconds >= timeOfBoost) { + inBoostMode = false; // stop boost mode + beep(); // beep if boost mode is over + beepIfWorky = true; // beep again when working temperature is reached + } + } +} + + +// check and activate/deactivate sleep modes +void SLEEPCheck() { + if (handleMoved) { // if handle was moved + if (inSleepMode) { // in sleep or off mode? + if ((CurrentTemp + 20) < SetTemp) // if temp is well below setpoint + analogWrite(CONTROL_PIN, 0); // then start the heater right now + beep(); // beep on wake-up + beepIfWorky = true; // beep again when working temperature is reached + } + handleMoved = false; // reset handleMoved flag + inSleepMode = false; // reset sleep flag + inOffMode = false; // reset off flag + sleepmillis = millis(); // reset sleep timer + } + + // check time passed since the handle was moved + goneMinutes = (millis() - sleepmillis) / 60000; + if ( (!inSleepMode) && (time2sleep > 0) && (goneMinutes >= time2sleep) ) { + inSleepMode = true; + beep(); + } + if ( (!inOffMode) && (time2off > 0) && (goneMinutes >= time2off ) ) { + inOffMode = true; + beep(); + } +} + + +// reads temperature, vibration switch and supply voltages +void SENSORCheck() { + analogWrite(CONTROL_PIN, 255); // shut off heater in order to measure temperature + delayMicroseconds(time2settle); // wait for voltage to settle + + uint16_t temp = denoiseAnalog(SENSOR_PIN); // read ADC value for temperature + uint8_t d = digitalRead(SWITCH_PIN); // check handle vibration switch + if (d != d0) { + handleMoved = true; // set flag if handle was moved + d0 = d; + } + if (! SensorCounter--) Vin = getVIN(); // get Vin every now and then + + analogWrite(CONTROL_PIN, Output); // turn on again heater + + RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading + calculateTemp(); + + // stabilize displayed temperature when around setpoint + if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp; + if (abs(ShowTemp - Setpoint) <= 1) ShowTemp = Setpoint; + // set state variable if temperature is in working range; beep if working temperature was just reached + gap = abs(SetTemp - CurrentTemp); + if (gap < 5) { + if (!isWorky && beepIfWorky) beep(); + isWorky = true; + beepIfWorky = false; + } + else isWorky = false; + // checks if tip is present or currently inserted + if (ShowTemp > 500) TipIsPresent = false; // tip removed ? + if (!TipIsPresent && (ShowTemp < 500)) { // new tip inserted ? + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); // beep for info + TipIsPresent = true; // tip is present now + ChangeTipScreen(); // show tip selection screen + updateEEPROM(); // update setting in EEPROM + handleMoved = true; // reset all timers + RawTemp = denoiseAnalog(SENSOR_PIN); // restart temp smooth algorithm + c0 = LOW; // switch must be released + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder + } +} + + +// calculates real temperature value according to ADC reading and calibration values +void calculateTemp() { + if (RawTemp < 200) CurrentTemp = map (RawTemp, 0, 200, 21, CalTemp[CurrentTip][0]); + else if (RawTemp < 280) CurrentTemp = map (RawTemp, 200, 280, CalTemp[CurrentTip][0], CalTemp[CurrentTip][1]); + else CurrentTemp = map (RawTemp, 280, 360, CalTemp[CurrentTip][1], CalTemp[CurrentTip][2]); +} + + +//调温 +void Thermostat() { + // define Setpoint acoording to current working mode + if (inOffMode) Setpoint = 0; + else if (inSleepMode) Setpoint = SleepTemp; + else if (inBoostMode) Setpoint = SetTemp + BoostTemp; + else Setpoint = SetTemp; + + // control the heater (PID or direct) + gap = abs(Setpoint - CurrentTemp); + if (PIDenable) { + Input = CurrentTemp; + if (gap < 30) ctrl.SetTunings(consKp, consKi, consKd); + else ctrl.SetTunings(aggKp, aggKi, aggKd); + ctrl.Compute(); + } else { + // turn on heater if current temperature is below setpoint + if ((CurrentTemp + 0.5) < Setpoint) Output = 0; else Output = 255; + } + analogWrite(CONTROL_PIN, Output); // set heater PWM +} + + +// creates a short beep on the buzzer +void beep() { + /* + if (beepEnable) { + if (BeepCoolTime + SetBeepCoolTime < millis()) { + if (state) BeepCoolTime = millis(); + analogWrite(BUZZER_PIN, 0); + } else analogWrite(BUZZER_PIN, 127); + } else analogWrite(BUZZER_PIN, 0); + */ + //体谅一下,没内存了,只能用原始的办法驱动无源蜂鸣器,否则我也不想牺牲宝贵响应资源换内存 + if (beepEnable) { + for (uint8_t i = 0; i < 255; i++) { + digitalWrite(BUZZER_PIN, HIGH); + delayMicroseconds(125); + digitalWrite(BUZZER_PIN, LOW); + delayMicroseconds(125); + } + } +} + +//设置旋转编码器的起始值 +// sets start values for rotary encoder +void setRotary(int rmin, int rmax, int rstep, int rvalue) { + countMin = rmin << ROTARY_TYPE; + countMax = rmax << ROTARY_TYPE; + if (RotaryD) countStep = rstep; else countStep = -rstep; + count = rvalue << ROTARY_TYPE; +} + + +// reads current rotary encoder value +int getRotary() { + return (count >> ROTARY_TYPE); +} + + +// reads user settings from EEPROM; if EEPROM values are invalid, write defaults +void getEEPROM() { + uint16_t identifier = (EEPROM.read(0) << 8) | EEPROM.read(1); + if (identifier == EEPROM_IDENT) { + DefaultTemp = (EEPROM.read(2) << 8) | EEPROM.read(3); + SleepTemp = (EEPROM.read(4) << 8) | EEPROM.read(5); + BoostTemp = EEPROM.read(6); + time2sleep = EEPROM.read(7); + time2off = EEPROM.read(8); + timeOfBoost = EEPROM.read(9); + MainScrType = EEPROM.read(10); + PIDenable = EEPROM.read(11); + beepEnable = EEPROM.read(12); + CurrentTip = EEPROM.read(13); + NumberOfTips = EEPROM.read(14); + LANG = EEPROM.read(15); + FlipState = EEPROM.read(16); + UnderVoltage = EEPROM.read(17); + Password = (EEPROM.read(18) << 8) | EEPROM.read(19); + RotaryD = EEPROM.read(20); + uint8_t i, j; + uint16_t counter = 21; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) { + TipName[i][j] = EEPROM.read(counter++); + } + for (j = 0; j < 4; j++) { + CalTemp[i][j] = EEPROM.read(counter++) << 8; + CalTemp[i][j] |= EEPROM.read(counter++); + } + } + } + else { + EEPROM.update(0, EEPROM_IDENT >> 8); EEPROM.update(1, EEPROM_IDENT & 0xFF); + updateEEPROM(); + } +} + + +// writes user settings to EEPROM using updade function to minimize write cycles +void updateEEPROM() { + EEPROM.update( 2, DefaultTemp >> 8); + EEPROM.update( 3, DefaultTemp & 0xFF); + EEPROM.update( 4, SleepTemp >> 8); + EEPROM.update( 5, SleepTemp & 0xFF); + EEPROM.update( 6, BoostTemp); + EEPROM.update( 7, time2sleep); + EEPROM.update( 8, time2off); + EEPROM.update( 9, timeOfBoost); + EEPROM.update(10, MainScrType); + EEPROM.update(11, PIDenable); + EEPROM.update(12, beepEnable); + EEPROM.update(13, CurrentTip); + EEPROM.update(14, NumberOfTips); + EEPROM.update(15, LANG); + EEPROM.update(16, FlipState); + EEPROM.update(17, UnderVoltage); + EEPROM.update(18, Password >> 8); + EEPROM.update(19, Password & 0xFF); + EEPROM.update(20, RotaryD); + uint8_t i, j; + uint16_t counter = 21; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) EEPROM.update(counter++, TipName[i][j]); + for (j = 0; j < 4; j++) { + EEPROM.update(counter++, CalTemp[i][j] >> 8); + EEPROM.update(counter++, CalTemp[i][j] & 0xFF); + } + } +} +//此片段用于DEBUG +void HelpMeSerialer() { + //串口助手 + if (Serial.available()) { + char TmpChar = Serial.read(); + switch (TmpChar) { + case 'x': x = Serial.parseInt(); + case 'y': y = Serial.parseInt(); + case 'a': a = Serial.parseInt(); + case 'b': b = Serial.parseInt(); + } + } + /* + Serial.println(String("X ->") + x); + Serial.println(String("Y ->") + y); + Serial.println(String("A ->") + a); + Serial.println(String("B ->") + b); + */ +} +// draws the main screen +void MainScreen() { + if (!(arduboy.nextFrame())) //帧率锁 + return; + //状态 + byte SysState; + if (ShowTemp > 500) SysState = 0; + else if (inOffMode) { + SysState = 1; + DrawIntensiveComputing(); + } else if (inSleepMode) SysState = 2; + else if (inBoostMode) SysState = 3; + else if (isWorky) SysState = 4; + else if (Output < 180) SysState = 5; + else SysState = 6; + if (SysState != 1) { + if (MainScrType) { + //arduboy.invert(0); + arduboy.clear(); + //详细信息页 + arduboy.fillRect(0, 0, 128, 64, 1); //白底 + arduboy.setTextSize(1); + SetTextColor(0); + //预设名 + arduboy.drawSlowXYBitmap(0, 0, Tag, 16, 16, 0); + arduboy.setCursor(19, 4); arduboy.print(TipName[CurrentTip]); + //显示状态 + arduboy.setCursor(53, 1); + arduboy.setTextSize(2); + switch (LANG) { + case 0: arduboy.drawSlowXYBitmap(80, 1, S_table[SysState], 28, 14, 0); break; //中文 Chinese + default: //英文 English + switch (SysState) { + case 1: arduboy.print(F("OFF")); break; + case 2: arduboy.print(F("SLEEP")); break; + case 3: arduboy.print(F("BOOST")); break; + case 4: arduboy.print(F("WORKY")); break; + case 5: arduboy.print(F("HEAT")); break; + case 6: arduboy.print(F("HOLD")); break; + default: arduboy.print(F("ERROR")); break; + } break; + } + arduboy.drawSlowXYBitmap(113, 1, C_table[SysState], 14, 14, 0); + arduboy.setTextSize(1); + //芯片 + //R1 + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); else arduboy.drawSlowXYBitmap(2, 18, Chip, 14, 14, 0); + + //R2 + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); else arduboy.drawSlowXYBitmap(2, 34, Lightning, 14, 14, 0); + //R3 + arduboy.setCursor(19, 16); arduboy.print(getChipTemp(), 1); arduboy.print((char)248); arduboy.print(F("C")); //芯片温度 + arduboy.setCursor(19, 24); arduboy.print((float)getVCC() / 1000, 2); arduboy.print(F("V")); //芯片电压 + arduboy.setCursor(19, 32); arduboy.print((float)Vin / 1000, 1); arduboy.print(F("V")); //输入电压 + arduboy.setCursor(19, 40); arduboy.print(F(VERSION)); //固件 + //显示探头温度 + DrawNumRect(ShowTemp); + + DrawStatusBar(0); + arduboy.display(); + } else { + //arduboy.invert(1); + arduboy.setTextSize(6); + SetTextColor(1); + arduboy.clear(); + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); + arduboy.setCursor(12, 2); + + if (ShowTemp > 500) arduboy.print(999); else arduboy.print(ShowTemp); + arduboy.fillRect(0, 48, 128, 16, 1); + + DrawStatusBar(0); + arduboy.display(); + } + } +} +void DrawNumRect(int n) { + arduboy.setCursor(57, 18); + arduboy.setTextSize(4); + if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(n); + arduboy.drawRect(55, 16, 72, 32, 0); +} +void DrawStatusBar(bool color) { + SetTextColor(color); + arduboy.setTextSize(1); + //温度条 + //框 + arduboy.drawRect(1, 49, 102, 14, color); + //条 + if (ShowTemp <= 500) arduboy.fillRect(1, 49, map(ShowTemp, 0, 500, 2, 102), 14, color); + //指示部分 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 2, 50, 3, 13, color); + //先来个白底 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 3, 60, 5, 4, color); + arduboy.drawLine(map(Setpoint, 0, 500, 2, 102) - 1, 60, map(Setpoint, 0, 500, 2, 102) - 1, 49, !color); + + //画指示针 + arduboy.drawSlowXYBitmap(map(Setpoint, 0, 500, 2, 102) - 3, 59, Pointer, 5, 4, !color); + + //功率条 + arduboy.drawRect(104, 49, 23, 14, color); + arduboy.fillRect(104, 49, map(Output, 255, 0, 0, 23), 14, color); + + SetTextColor(!color); + //////////////进入反色//////////////////////////////// + arduboy.setCursor(2, 55); arduboy.print(Setpoint, 0); arduboy.print((char)248); arduboy.print(F("C")); //探头预设温度 + arduboy.setCursor(105, 55); arduboy.print(map(Output, 255, 0, 0, 100)); arduboy.print(F("%")); //功率百分比 + SetTextColor(color); +} + +//设置画笔颜色 +void SetTextColor(bool color) { + arduboy.setTextBackground(!color); + arduboy.setTextColor(color); +} +// setup screen +void SetupScreen() { + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); + uint16_t SaveSetTemp = SetTemp; + uint8_t selection = 0; + bool repeat = true; + + while (repeat) { + //arduboy.invert(0); + MenuLevel = 0; //默认打开主菜单 + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 1; TipScreen(); repeat = false; break; + case 1: MenuLevel = 2; TempScreen(); break; + case 2: MenuLevel = 3; TimerScreen(); break; + case 3: MenuLevel = 4; PIDenable = MenuScreen(PIDenable); break; + case 4: ScreenSet(); break; + case 5: MenuLevel = 6; beepEnable = MenuScreen(beepEnable); break; + case 6: RotarySet(); break; + case 7: UnderVoltageSet(); break; + case 8: PasswordSet(); break; + case 9: MenuLevel = 8; LANG = MenuScreen(LANG); break; + case 10: QRcodeScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); + handleMoved = true; + SetTemp = SaveSetTemp; + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); +} + +void RotarySet() { + bool Exit = false; + float rad; + byte ExitBar = 0; + SetTextColor(0); + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(60, 420, 18, 240); + do { + arduboy.setTextSize(1); + Setpoint = getRotary(); + ShowTemp = Setpoint; + + + arduboy.clear(); + //仪表盘 + arduboy.fillRect(0, 0, 128, 64, 1); + arduboy.fillTriangle(24 + 24 * cos(rad), 24 - 24 * sin(rad), 24 + 3 * sin(rad), 24 + 3 * cos(rad), 24 - 3 * sin(rad), 24 - 3 * cos(rad), 0); + arduboy.drawCircle(24, 24, 22, 0); + arduboy.drawCircle(24, 24, 19, 0); + arduboy.drawCircle(24, 24, 3, 0); + //右上角的模式提示文本 + arduboy.setCursor(55, 1); + arduboy.setTextSize(2); + arduboy.print(F("MODE ")); + if (RotaryD) { + arduboy.print(F("-")); + rad = ((Setpoint - 60) / 360.0) * (2 * PI) - PI / 2; + } else { + arduboy.print(F("+")); + rad = ((-Setpoint - 60) / 360.0) * (2 * PI) + PI * 1 / 6; + } + //右侧数字显示 + DrawNumRect(ShowTemp); + //下端的状态条 + DrawStatusBar(0); + //退出条 + arduboy.fillRect(0, 0, ExitBar, 4, 0); + + arduboy.display(); + + + CheckLastButton(); + if (!digitalRead(BUTTON_PIN) && !lastbutton) { + + ExitBar += 8; + if (ExitBar > 127) Exit = true; + } else { + if (ExitBar > 1 && ExitBar < 64) { + RotaryD = !RotaryD; + setRotary(60, 420, 18, 240); + } + ExitBar = 0; + } + + } while (!Exit); + +} +//显示设置菜单 +// tip settings screen +void ScreenSet() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 9; + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 5; MainScrType = MenuScreen(MainScrType); break; + case 1: FlipState = !FlipState; break; + default: repeat = false; break; + } + Flip(FlipState); //设置屏幕反转状态 + } + updateEEPROM(); +} + +//预设设置菜单 +// tip settings screen +void TipScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 1; + selection = MenuScreen(selection); + switch (selection) { + case 0: ChangeTipScreen(); break; + case 1: CalibrationScreen(); break; + case 2: InputNameScreen(); break; + case 3: DeleteTipScreen(); break; + case 4: AddTipScreen(); break; + default: repeat = false; break; + } + } +} + +//温控设置菜单 +// temperature settings screen +void TempScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + DefaultTemp = InputScreen(18); break; + case 1: setRotary(20, 200, TEMP_STEP, SleepTemp); + SleepTemp = InputScreen(19); break; + case 2: setRotary(10, 100, TEMP_STEP, BoostTemp); + BoostTemp = InputScreen(20); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} + +//定时器设置菜单 +// timer settings screen +void TimerScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(0, 30, 1, time2sleep); + time2sleep = InputScreen(22); break; + case 1: setRotary(0, 60, 5, time2off); + time2off = InputScreen(23); break; + case 2: setRotary(0, 180, 10, timeOfBoost); + timeOfBoost = InputScreen(24); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} +//英语支持 +void Print_EN(byte i) { + char buffer[11]; + strcpy_P(buffer, (char *)pgm_read_word(&(EN_table[i]))); + arduboy.print(buffer); +} +//菜单界面 +// menu screen +uint8_t MenuScreen(uint8_t selected) { + int SlidingAnimationX; + uint8_t lastselected = selected; + setRotary(0, Menu_table[MenuLevel] - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + SetTextColor(1); + do { + selected = getRotary(); + //非线性滑动动画 + SlidingAnimationX += (selected - lastselected) * 56; + if (SlidingAnimationX != 0) SlidingAnimationX += 0.6 * (-SlidingAnimationX); + lastselected = selected; + arduboy.clear(); + //绘制图标 如果有指定的话 + for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject()); + DrawAppText(selected + QueryMenuObject()); + + arduboy.display(); + CheckLastButton(); + //beep(0); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return selected; +} +//显示APP图标 +void DrawApp(int x, byte appID) { + DrawUIFrame(x, 0, 1); + drawSlowXYBitmapResize(x + 3, 3, Ico_table[appID], 14, 14, 3, 1); +} +//显示APP对应的文本 +void DrawAppText(byte appID) { + // arduboy.setCursor(0, 55); arduboy.print(appID); + if (LANG == 0) arduboy.drawSlowXYBitmap(48, 48, CN_table[appID], 36, 16, 1); else if (LANG == 2) { + drawText(48, 52, JP_table[appID], pgm_read_byte(&(JP_Length_table[appID]))); + } else { + arduboy.setCursor(48, 52); + arduboy.setTextSize(1); + Print_EN(appID); + } +} +void DrawUIFrame(int x, int y, bool color) { + arduboy.fillRect(x, y, 48, 48, color); + arduboy.fillRect(x + 3, y + 3, 42, 42, !color); //雕空 + DrawPoint(x, y, 0); + DrawPoint(x + 47, y, 0); + DrawPoint(x, y + 47, 0); + DrawPoint(x + 47, y + 47, 0); +} +void DrawPoint(int x, int y, bool color) { + arduboy.drawPixel(x + 1, y, color); + arduboy.drawPixel(x - 1, y, color); + arduboy.drawPixel(x, y + 1, color); + arduboy.drawPixel(x, y - 1, color); + arduboy.drawPixel(x, y, color); +} +//检查按键 +void CheckLastButton() { + if (lastbutton && digitalRead(BUTTON_PIN)) { + delay(10); + lastbutton = false; + } +} +//返回对应层数的对象数 +byte QueryMenuObject() { + int SUM = 0; + for (int i = 0; i < (MenuLevel); i++) SUM += Menu_table[i]; + return SUM; +} +//信息窗 +/* + void MessageScreen(const char *Items[], uint8_t numberOfItems) { + lastbutton = (!digitalRead(BUTTON_PIN)); + + //u8g.setFont(//u8g_font_9x15); + //u8g.setFontPosTop(); + for (uint8_t i = 0; i < numberOfItems; i++) //u8g.drawStr( 0, i * 16, Items[i]); + + do { + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + } +*/ +/* + 好看是好看,但是浪费内存 + int wav(byte wavi, int num) { + return (wavi + byte(millis() / 100)) * (float(float(num - countMin) / float(countMax - countMin)) - 0.5) * 5; + } +*/ +//FP 密集运算屏保 +void DrawIntensiveComputing() { + analogWrite(CONTROL_PIN, 255); //关闭MOS管 + float calculate; + // while (1) { + arduboy.clear(); + + //随机线条 + DrawIntensiveComputingLine(); + + calculate = sin(millis() / 4000.0); + //模拟噪点 + for (int i = 0; i < calculate * 256 + 256; i++) arduboy.drawPixel(random(0, 128), random(0, 64), 1); + //声效 + if ((beepEnable)) analogWrite(BUZZER_PIN, 64 + calculate * 64 + random(-8, 8)); + //if ((beepEnable)) tone(BUZZER_PIN, int(calculate * 300) + 500 + random(-50, 50)); //没必要浪费内存 + + arduboy.display(); + //delay(60-calculate*30); + //} +} +//绘制屏保-密集运算线条 +void DrawIntensiveComputingLine() { + for (byte a = 0; a < 4; a++) { + Line[a] += random(-1, 1); + if (Line[a] > 128) Line[a] -= 128; + for (byte b = 0; b < random(3, 6); b++) { + arduboy.drawFastHLine(0, Line[a] + random(-10, 10), 128, 1); //水平线 + arduboy.drawFastVLine(Line[a] + random(-10, 10), 0, 64, 1); //垂直线 + } + } +} +//模拟数字滚轮 Numerical scrolling effect +void DisplayNum(int Num) { + arduboy.setTextSize(6); + SetTextColor(0); + //数字滚轮 + for (byte i = 0; i < 3; i++) LastValue[i] = int(Value / pow(10, 2 - i)) % 10; + Value = Num; + for (byte i = 0; i < 3; i++) { + SlidingAnimationY[i] += ((int(Value / pow(10, 2 - i)) % 10) - LastValue[i]) * 50; + if (SlidingAnimationY[i] != 0) SlidingAnimationY[i] += 0.8 * (-SlidingAnimationY[i]); + arduboy.fillRect(0 + i * 44, 0, 38, 50, 1); //白底 + for (int ii = -1; ii < 2; ii++) { + arduboy.setCursor(4 + i * 44, 4 - SlidingAnimationY[i] + ii * 50); + arduboy.print(LastValue[i] + ii); + } + } + //刻度标 + arduboy.fillRect(0, 0, 128, 2, 0); //上遮罩层 + arduboy.fillRect(0, 48, 128, 16, 0); //下遮罩层 +} + +//数值输入界面 +// input value screen +uint16_t InputScreen(byte appID) { + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + DisplayNum(getRotary()); + DrawAppText(appID); + arduboy.display(); + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return Value; +} +int InputBigNum(int InputPW, byte appID) { + setRotary(0, 900, 100, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 90, 10, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 9, 1, InputPW); + InputPW = InputScreen(appID); + return InputPW; +} +void QRcodeScreen() { + arduboy.clear(); + arduboy.drawSlowXYBitmap(40, 0, QRCode, 48, 48, 1); + arduboy.display(); + delay(100); + do { + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); +} +//欠压报警设置 +// information display screen +void UnderVoltageSet() { + setRotary(0, 250, 1, UnderVoltage); + UnderVoltage = InputScreen(7); + beep(); +} +//设置开机密码 +void PasswordSet() { + Password = InputBigNum(Password, 8); + beep(); +} + +void BootPassword() { + if (Password != 0) { + do { + arduboy.clear(); + DrawApp(40, 8); + DrawAppText(8); + arduboy.display(); + delay(1000); + beep(); beep(); beep(); + } while (InputBigNum(0, 8) != Password); + } +} +//更换预设界面 +// change tip screen +void ChangeTipScreen() { + uint8_t selected = CurrentTip; + uint8_t lastselected = selected; + int8_t arrow = 0; + if (selected) arrow = 1; + setRotary(0, NumberOfTips - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + //beep(0); + arduboy.clear(); + selected = getRotary(); + arrow = constrain(arrow + selected - lastselected, 0, 2); + lastselected = selected; + SetTextColor(0); + arduboy.setTextSize(2); + arduboy.setCursor(0, 0); arduboy.print(F("Select Tip")); + SetTextColor(1); + arduboy.setCursor(0, 16 * (arrow + 1)); arduboy.print(F(">")); + for (uint8_t i = 0; i < 3; i++) { + uint8_t drawnumber = selected + i - arrow; + if (drawnumber < NumberOfTips) { + arduboy.setCursor(12, 16 * (i + 1)); arduboy.print(TipName[selected + i - arrow]); + } + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + beep(); + CurrentTip = selected; +} + +//温度校准界面 +// temperature calibration screen +void CalibrationScreen() { + uint16_t CalTempNew[4]; + for (uint8_t CalStep = 0; CalStep < 3; CalStep++) { + SetTemp = CalTemp[CurrentTip][CalStep]; + setRotary(100, 500, 1, SetTemp); + beepIfWorky = true; + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + arduboy.setTextSize(2); + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + arduboy.setCursor(0, 0); arduboy.print(F("Step: ")); arduboy.print(CalStep + 1); arduboy.print("/3"); + if (isWorky) { + arduboy.setCursor(0, 16); arduboy.print(F("Set measured")); + arduboy.setCursor(0, 32); arduboy.print(F("temp: ")); arduboy.print(getRotary()); + } else { + arduboy.setCursor(0, 16); arduboy.print(F("ADC: ")); arduboy.print(uint16_t(RawTemp)); + arduboy.setCursor(0, 32); arduboy.print(F("Please wait")); + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + CalTempNew[CalStep] = getRotary(); + beep(); delay (10); + } + + analogWrite(CONTROL_PIN, 255); // shut off heater + delayMicroseconds(time2settle); // wait for voltage to settle + CalTempNew[3] = getChipTemp(); // read chip temperature + if ((CalTempNew[0] + 30 < CalTempNew[1]) && (CalTempNew[1] + 30 < CalTempNew[2])) { + MenuLevel = 7; + if (MenuScreen(0)) { + for (uint8_t i = 0; i < 4; i++) CalTemp[CurrentTip][i] = CalTempNew[i]; + } + } +} + +//命名界面 文本输入界面 +// input tip name screen +void InputNameScreen() { + uint8_t value; + for (uint8_t digit = 0; digit < (TIPNAMELENGTH - 1); digit++) { + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(31, 96, 1, 65); + do { + value = getRotary(); + if (value == 31) { + value = 95; + setRotary(31, 96, 1, 95); + } + if (value == 96) { + value = 32; + setRotary(31, 96, 1, 32); + } + //arduboy.setCursor(0, 0);arduboy.print(); + arduboy.clear(); + arduboy.setTextSize(2); + arduboy.setCursor(16 * digit, 48); arduboy.print(char(94)); + arduboy.setCursor(0, 32); + for (uint8_t i = 0; i < digit; i++) arduboy.print(TipName[CurrentTip][i]); + arduboy.setCursor(16 * digit, 32); arduboy.print(char(value)); + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + TipName[CurrentTip][digit] = value; + beep(); delay (10); + } + TipName[CurrentTip][TIPNAMELENGTH - 1] = 0; + return value; +} + + +// delete tip screen +void DeleteTipScreen() { + MenuLevel = 7; + if (NumberOfTips == 1) { + //MessageScreen(DeleteMessage, sizeof(DeleteMessage)); + } + else if (MenuScreen(0)) { + if (CurrentTip == (NumberOfTips - 1)) { + CurrentTip--; + } + else { + for (uint8_t i = CurrentTip; i < (NumberOfTips - 1); i++) { + for (uint8_t j = 0; j < TIPNAMELENGTH; j++) TipName[i][j] = TipName[i + 1][j]; + for (uint8_t j = 0; j < 4; j++) CalTemp[i][j] = CalTemp[i + 1][j]; + } + } + NumberOfTips--; + } +} + + +// add new tip screen +void AddTipScreen() { + if (NumberOfTips < TIPMAX) { + CurrentTip = NumberOfTips++; InputNameScreen(); + CalTemp[CurrentTip][0] = TEMP200; CalTemp[CurrentTip][1] = TEMP280; + CalTemp[CurrentTip][2] = TEMP360; CalTemp[CurrentTip][3] = TEMPCHP; + } //MessageScreen(MaxTipMessage, sizeof(MaxTipMessage)); 信息窗 +} + + +// average several ADC readings in sleep mode to denoise +uint16_t denoiseAnalog (byte port) { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + if (port >= A0) port -= A0; // set port and + ADMUX = (0x0F & port) | bit(REFS0); // reference to AVcc + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + return (result >> 5); // devide by 32 and return value +} + +/* + //读取芯片温度 + // get internal temperature by reading ADC channel 8 against 1.1V reference + double getChipTemp() { + unsigned int wADC; + double t; + ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); + ADCSRA |= _BV(ADEN); + delay(5); + ADCSRA |= _BV(ADSC); + while (bit_is_set(ADCSRA, ADSC)); + wADC = ADCW; + t = (wADC - ChipTempCalVal ) / 1.22; + return (t); + } +*/ +// get internal temperature by reading ADC channel 8 against 1.1V reference +double getChipTemp() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + ADMUX = bit (REFS1) | bit (REFS0) | bit (MUX3); // set reference and mux + delay(10); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 2; // devide by 4 + return ((result - 2594) / 9.76); // calculate internal temperature in degrees C +} + +// get input voltage in mV by reading 1.1V reference against AVcc +uint16_t getVCC() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + // set Vcc measurement against 1.1V reference + ADMUX = bit (REFS0) | bit (MUX3) | bit (MUX2) | bit (MUX1); + delay(1); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 16; i++) { // get 16 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 4; // devide by 16 + return (1125300L / result); // 1125300 = 1.1 * 1023 * 1000 +} + + +// get supply voltage in mV +uint16_t getVIN() { + long result; + result = denoiseAnalog (VIN_PIN); // read supply voltage via voltage divider + return (result * Vcc / 179.474); // 179.474 = 1023 * R13 / (R12 + R13) +} + +//ADC中断服务 +// ADC interrupt service routine +EMPTY_INTERRUPT (ADC_vect); // nothing to be done here + +//旋转编码器触发中断 +// Pin change interrupt service routine for rotary encoder +ISR (PCINT0_vect) { + uint8_t a = PINB & 1; + uint8_t b = PIND >> 7 & 1; + if (a != a0) { // A changed + a0 = a; + if (b != b0) { // B changed + b0 = b; + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax); + if (ROTARY_TYPE && ((a == b) != ab0)) { + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax);; + } + ab0 = (a == b); + handleMoved = true; + } + } +} + +//显示位图,并允许放大 代码片段改自arduboy2 +void drawSlowXYBitmapResize(int x, int y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t size, uint8_t color) { + // no need to draw at all of we're offscreen + /* + if (x + w < 0 || x > WIDTH - 1 || y + h < 0 || y > HEIGHT - 1) + return; + */ + int16_t xi, yi, byteWidth = (w + 7) / 8; + for (yi = 0; yi < h; yi ++) { + for (xi = 0; xi < w; xi ++) { + if (pgm_read_byte(bitmap + yi * byteWidth + xi / 8) & (128 >> (xi & 7))) { + //arduboy.drawPixel(x + xi, y + yi, color); + arduboy.fillRect(x + xi * size, y + yi * size, size, size, color); + } + } + } +} +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ +void drawText(uint8_t x, uint8_t y, const uint8_t *mes, uint8_t cnt) +{ + uint8_t pb; + uint8_t page; + uint8_t screen_start = 0; + uint8_t screen_end = 128; + + if (x < screen_start) { + x = screen_start; + } + + for (uint8_t i = 0; i < cnt; i++) { + pb = pgm_read_byte_near(mes + i); + + switch (pb) { + case MISAKI_FONT_F0_PAGE: + page = MISAKI_FONT_F0_PAGE; + continue; + case MISAKI_FONT_F1_PAGE: + page = MISAKI_FONT_F1_PAGE; + continue; + case MISAKI_FONT_F2_PAGE: + page = MISAKI_FONT_F2_PAGE; + continue; + } + + if (!page) { + continue; + } + + switch (page) { +#ifdef MISAKI_FONT_F0_H + case MISAKI_FONT_F0_PAGE: + if (pb > MISAKI_FONT_F0_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f0[ pb ], MISAKI_FONT_F0_W, 8, WHITE); + x = x + 8; + break; +#endif +#ifdef MISAKI_FONT_F1_H + case MISAKI_FONT_F1_PAGE: + if (pb > MISAKI_FONT_F1_SIZE) { + continue; + } + if ((x + 4) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f1[ pb ], MISAKI_FONT_F1_W, 8, WHITE); + arduboy.drawBitmap(x + 3, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 4; + break; +#endif +#ifdef MISAKI_FONT_F2_H + case MISAKI_FONT_F2_PAGE: + if (pb > MISAKI_FONT_F2_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f2[ pb ], MISAKI_FONT_F2_W, 8, WHITE); + arduboy.drawBitmap(x + 7, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 8; + break; +#endif + } + } +} diff --git a/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t1/README.txt b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t1/README.txt new file mode 100644 index 0000000..d21da66 --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t1/README.txt @@ -0,0 +1,6 @@ +*1.8t1 国庆节更新目标* + +1.调整简约模式的界面设计 +2.加入编码器方向设定界面 + +3.加入自定义界面模式 \ No newline at end of file diff --git a/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t2/1.8t2.ino b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t2/1.8t2.ino new file mode 100644 index 0000000..e80695d --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t2/1.8t2.ino @@ -0,0 +1,2219 @@ +/*License: http://creativecommons.org/licenses/by-sa/3.0/ + 采用CC3.0协议共享此程序 + 您可以自由地 + 共享 — 在任何媒介以任何形式复制、发行本作品 + 演绎 — 修改、翻译或以本作品为基础进行创作 + 在任何用途下,甚至商业目的。 + 本许可协议为“自由文化作品(Free Cultural Works)”所接受。 + 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 + + Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) + This is a human-readable summary of (and not a substitute for) the license. Disclaimer. + You are free to: + Share — copy and redistribute the material in any medium or format + Adapt — remix, transform, and build upon the material + for any purpose, even commercially. + This license is acceptable for Free Cultural Works. + The licensor cannot revoke these freedoms as long as you follow the license terms. +*/ +// SolderingStation2 +// +// ATmega328-controlled Soldering Station for Hakko T12 Tips. +// 此v1.8t1版本功能简介 +// This 1.8t1 version of the code implements: +// - 烙铁头温度实时监测 +// - Temperature measurement of the tip +// - PID温度控制 +// - Direct or PID control of the heater +// - 可以通过编码器进行控制温度 +// - Temperature control via rotary encoder +// - 短按编码器进入短时升温模式 +// - Boost mode by short pressing rotary encoder switch +// - 长按编码器进入主菜单 +// - Setup menu by long pressing rotary encoder switch +// - 手柄震动检测(需要手柄含有震动传感器) +// - Handle movement detection (by checking ball switch) +// - 手柄连接检测(通过判断烙铁头温度是否能够被读取来实现) +// - Iron unconnected detection (by idenfying invalid temperature readings) +// - 定时器设定 - 随眠,关机时间 +// - Time driven sleep/power off mode if iron is unused (movement detection) +// - 可以测量主控芯片电压以及温度 +// - Measurement of input voltage, Vcc and ATmega's internal temperature +// - 在OLED上实现信息显示 +// - Information display on OLED +// - 支持无源蜂鸣器 +// - Buzzer +// - 允许设置不同烙铁头的温度校准值 +// - Calibrating and managing different soldering tips +// - 设置被保存在EEPROM,掉电不丢失 +// - Storing user settings into the EEPROM +// - 允许热插拔烙铁头,并弹出烙铁头配置选择菜单 +// - Tip change detection +// - 芯片过热以及低电压报警 +// - Chip overheating and low voltage alarm +// - 更好的实时温度条以及实时功率条 +// - Better real-time temperature bar and real-time power bar +// - 拥有过渡动画 +// - Have transition animation +// - 内置屏幕保护程序 +// - Built in screen saver +// - 屏幕翻转设置 +// - Screen flip settings +// - 内置英文、中文、日文语言包 +// - Built in English, Chinese and Japanese language pack +// - 开机密码设置 +// - System Password + +// Power supply should be in the range of 16V/2A to 24V/3A and well +// stabilized. +// +// For calibration you need a soldering iron tips thermometer. For best results +// wait at least three minutes after switching on the soldering station before +// you start the calibration process. +// +// Controller: ATmega328p +// Core: Barebones ATmega (https://github.com/carlosefr/atmega) +// Clockspeed: 16 MHz external +// +// 2019/2020 by Stefan Wagner with great support from John Glavinos +// 2020-8 UI upgrade by LHW-createskyblue 、lihaoyun6 +// Project Page: https://easyeda.com/wagiminator + +//关于界面-项目页面二维码 ->为了加入欠压报警只能阉割掉关于页面的二维码 +//const unsigned char QRCode[] PROGMEM = { 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0 }; +const unsigned char QRCode[] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x87, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0xff, 0xff, 0x01, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x61, 0x30, 0x1f, 0x3f, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0x33, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0xf3, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0x99, 0x03, 0x3e, 0x30, 0x86, 0xc3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0xf8, 0x03, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0xff, 0x0c, 0x79, 0x3f, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +//ICO +//width:16,height:16 +const unsigned char Tag[] PROGMEM = { 0x00, 0x00, 0x3b, 0xec, 0x7b, 0xee, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0x66, 0x62, 0x26, 0x60, 0x06, 0x60, 0x06, 0x7f, 0xfe, 0x3f, 0xfc, 0x00, 0x00 }; +const unsigned char Chip[] PROGMEM = { 0x14, 0xa0, 0x3f, 0xf0, 0x7f, 0xf8, 0xe0, 0x1c, 0x6e, 0x18, 0xec, 0x1c, 0x68, 0x18, 0x60, 0x18, 0xe0, 0x1c, 0x60, 0x58, 0xe0, 0x1c, 0x7f, 0xf8, 0x3f, 0xf0, 0x14, 0xa0 }; +//const unsigned char HeatPipe[] PROGMEM = { 0x00, 0x00, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x01, 0x80, 0x00, 0x00 }; +const unsigned char Lightning[] PROGMEM = { 0x0f, 0xe0, 0x1f, 0xc0, 0x1f, 0xc0, 0x3f, 0x80, 0x3f, 0xf8, 0x7f, 0xf0, 0x7f, 0xe0, 0x07, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x10, 0x00 }; +//const unsigned char Thermometer[] PROGMEM = { 0x01, 0x80, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0 }; +const unsigned char Pointer[] PROGMEM = { 0x20, 0x20, 0x70, 0xf8 }; +//状态提示 +//width:14,height:14 图标库 + +const unsigned char c1[] PROGMEM = { 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x0c, 0xc0, 0x1c, 0xe0, 0x1c, 0xe0, 0x3c, 0xf0, 0x3c, 0xf0, 0x7f, 0xf8, 0x7f, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c2[] PROGMEM = { 0x7f, 0xf8, 0xff, 0xfc, 0xc0, 0x0c, 0xc3, 0x0c, 0xcb, 0x4c, 0xdb, 0x6c, 0xdb, 0x6c, 0xd8, 0x6c, 0xdc, 0xec, 0xcf, 0xcc, 0xc7, 0x8c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c3[] PROGMEM = { 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0xf8, 0x38, 0xf0, 0x30, 0x30, 0x70, 0x60, 0x70, 0x78, 0x78, 0xf8, 0x78, 0x00, 0x3c, 0x02, 0x3f, 0x0c, 0x1f, 0xf8, 0x0f, 0xf0, 0x03, 0xc0, 0x00, 0x00 }; +const unsigned char c5[] PROGMEM = { 0x7f, 0xf0, 0xff, 0xe0, 0xc0, 0x08, 0xc0, 0x1c, 0xc0, 0x38, 0xc8, 0x70, 0xdc, 0xe4, 0xcf, 0xcc, 0xc7, 0x8c, 0xc3, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c6[] PROGMEM = { 0x1e, 0x10, 0x33, 0x38, 0x2d, 0x7c, 0x25, 0x38, 0x2d, 0x38, 0x25, 0x38, 0x2d, 0x38, 0x6d, 0x80, 0xde, 0xc0, 0xbf, 0x40, 0xbf, 0x40, 0xde, 0xc0, 0x61, 0x80, 0x3f, 0x00 }; +const unsigned char c7[] PROGMEM = { 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0x7c, 0xf8, 0x7c, 0xfc, 0xfc, 0x7f, 0xf8 }; +const unsigned char c_NO[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x37, 0xb0, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x37, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char *C_table[] = {c1, c2, c3, Lightning, c5, c6, c7}; + +//设置(陈星汉认为语言是一种低像素的表达方式,容易造成隔阂; 交互界面设计尽可能形象化) +// width: 14, height: 14 +const unsigned char QRC[] PROGMEM = { 0x05, 0x80, 0x74, 0xb8, 0x57, 0xa8, 0x76, 0xb8, 0x05, 0x80, 0xf9, 0x7c, 0x46, 0x94, 0xaa, 0xa8, 0xf9, 0x7c, 0x06, 0x88, 0x74, 0xa8, 0x57, 0x8c, 0x75, 0x74, 0x06, 0x98 }; +const unsigned char Set0[] PROGMEM = { 0x88, 0x24, 0x08, 0x20, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x39, 0x30, 0x3b, 0xb0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set1[] PROGMEM = { 0xf8, 0x7c, 0xf3, 0x3c, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xe4, 0x9c, 0xc8, 0x4c, 0xd0, 0x2c, 0xd0, 0x2c, 0xc8, 0x4c, 0xe7, 0x9c, 0xf0, 0x3c }; +const unsigned char Set2[] PROGMEM = { 0x8f, 0xc4, 0x10, 0x20, 0x20, 0x10, 0x4c, 0xc8, 0x9f, 0xe4, 0x3d, 0xf0, 0x3d, 0xf0, 0x1d, 0xe0, 0x3e, 0xf0, 0x3f, 0x70, 0x9f, 0xe4, 0x8c, 0xc4, 0x00, 0x00, 0x30, 0x30 }; +const unsigned char Set3[] PROGMEM = { 0xc3, 0xfc, 0x18, 0x00, 0x18, 0x00, 0xc3, 0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x60, 0x00, 0x60, 0xff, 0x0c, 0xff, 0xfc, 0xf0, 0xfc, 0x06, 0x00, 0x06, 0x00, 0xf0, 0xfc }; +const unsigned char Set4[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4F[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x30, 0x33, 0x10, 0x3f, 0x90, 0x38, 0x10, 0x33, 0x90, 0x27, 0x90, 0x26, 0x10, 0x30, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4FF[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x24, 0x30, 0x21, 0x90, 0x27, 0x90, 0x27, 0x30, 0x20, 0x70, 0x27, 0xf0, 0x23, 0x30, 0x30, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set5[] PROGMEM = { 0xfc, 0xfc, 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0x80, 0x04, 0x80, 0x04, 0xff, 0xfc, 0xf8, 0x7c, 0xfc, 0xfc }; +const unsigned char Set5_1[] PROGMEM = { 0xfc, 0xf4, 0xf8, 0x60, 0xe0, 0x44, 0xc0, 0x8c, 0xc1, 0x1c, 0xc2, 0x2c, 0xc4, 0x4c, 0xc8, 0x8c, 0xd1, 0x0c, 0xa2, 0x04, 0xc4, 0x04, 0x8f, 0xfc, 0x18, 0x7c, 0xbc, 0xfc }; +const unsigned char Set6[] PROGMEM = { 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xc8, 0x4c, 0xcf, 0xcc, 0xc0, 0x0c, 0xe0, 0x1c }; +const unsigned char Set_LANG[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x4c, 0xbc, 0x34, 0xb8, 0x14, 0x18, 0x80, 0x10, 0x80, 0x42, 0x30, 0x60, 0x78, 0x60, 0xf8, 0x44, 0xc0, 0x80, 0x04, 0xb8, 0x84, 0xcf, 0xcc, 0xf0, 0x3c }; +const unsigned char Set7[] PROGMEM = { 0x80, 0x0c, 0x00, 0x1c, 0x3f, 0xf4, 0x3f, 0xe0, 0x3f, 0xc4, 0x37, 0x8c, 0x23, 0x18, 0x30, 0x30, 0x38, 0x70, 0x3c, 0xf0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set11[] PROGMEM = { 0xf3, 0xfc, 0xe7, 0xfc, 0xce, 0x0c, 0x8e, 0x1c, 0x9f, 0x9c, 0x1f, 0x3c, 0x1f, 0x0c, 0x0e, 0x0c, 0x0f, 0xfc, 0x87, 0xf8, 0x81, 0xe4, 0xc0, 0x0c, 0xe0, 0x1c, 0xf8, 0x7c }; +const unsigned char Set8[] PROGMEM = { 0x81, 0xdc, 0x55, 0x9c, 0x29, 0x04, 0x55, 0x00, 0x29, 0x90, 0x55, 0xd0, 0x03, 0xfc, 0xff, 0x00, 0x2e, 0x00, 0x26, 0x70, 0x02, 0x50, 0x82, 0x70, 0xe6, 0x00, 0xee, 0x04 }; +const unsigned char Set9[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x0c, 0xbf, 0x04, 0xb3, 0x04, 0x73, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x60, 0xbc, 0x64, 0xbe, 0x04, 0xcf, 0x0c, 0xf0, 0x3c }; +const unsigned char Set10[] PROGMEM = { 0xf8, 0x7c, 0xf7, 0xbc, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0xbf, 0xf4, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xbf, 0xf4, 0xc0, 0x0c }; +const unsigned char Set13[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x34, 0xb0, 0x24, 0x90, 0x24, 0x90, 0x27, 0x90, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set12[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set14[] PROGMEM = { 0xff, 0x7c, 0xfe, 0x7c, 0xfc, 0xec, 0xe8, 0xdc, 0xc8, 0x4c, 0x98, 0x4c, 0x88, 0x24, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0xe0, 0x1c }; +const unsigned char Set15[] PROGMEM = { 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3c, 0x04, 0x14, 0x04, 0x3c, 0xfc, 0x14, 0x54, 0x3c, 0xfc, 0x00, 0x54, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set16[] PROGMEM = { 0x15, 0x54, 0x3f, 0xf8, 0x15, 0x50, 0x3f, 0xf0, 0x15, 0x50, 0x38, 0x70, 0x10, 0x20, 0x31, 0x04, 0x13, 0x8c, 0x22, 0xa8, 0x17, 0xfc, 0x2a, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set17[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x08, 0x18, 0x08, 0xb9, 0xe8, 0x19, 0xb8, 0xb8, 0x38, 0x18, 0x38, 0xb9, 0xb8, 0xb9, 0xf8, 0xb0, 0xf8, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Set18[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x28, 0x1f, 0xf8, 0xb4, 0x08, 0x1f, 0xf8, 0xb1, 0x08, 0x1f, 0xf8, 0xb0, 0x48, 0xbf, 0xf8, 0xb2, 0x88, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Lang_CN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x24, 0x90, 0x24, 0x90, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_EN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x27, 0x90, 0x20, 0x10, 0x20, 0x10, 0x27, 0x90, 0x27, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_JP[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3d, 0xf0, 0x20, 0x10, 0x3b, 0xf0, 0x3b, 0x70, 0x30, 0x30, 0x2b, 0x50, 0x2a, 0xd0, 0x31, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Save[] PROGMEM = { 0x00, 0x04, 0x58, 0x08, 0x58, 0x08, 0x58, 0x08, 0x40, 0x08, 0x7f, 0xf8, 0x60, 0x18, 0x5f, 0xe8, 0x5b, 0x68, 0x5f, 0xe8, 0x5b, 0x68, 0x1c, 0xe8, 0x5f, 0xe8, 0x00, 0x00 }; +const unsigned char Lock[] PROGMEM = { 0xe0, 0x1c, 0xc0, 0x0c, 0x8f, 0xc4, 0x9f, 0xe4, 0x9f, 0xe4, 0x9f, 0xe4, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0x00, 0x80, 0x04 }; +const unsigned char Set19[] PROGMEM = { 0xf8, 0x7c, 0x80, 0x04, 0xbc, 0xf4, 0x3f, 0xf0, 0x38, 0x70, 0xb7, 0xb4, 0xb6, 0xb4, 0xb5, 0xb4, 0xb7, 0xb4, 0x38, 0x70, 0x3f, 0xf0, 0xbc, 0xf4, 0x80, 0x04, 0xf8, 0x7c }; +const unsigned char *Ico_table[] = { + Set0, Set1, Set2, Set3, Set4, Set5, Set19, Set6, Lock, Set_LANG, QRC, Set7, + Set8, Set9, Set0, Set10, Set12, Save, + Set0, Set11, Set14, Save, + Set11, Set13, Set14, Save, + Set15, Set16, + Set17, Set18, //5 + Set5_1, Set5, + c_NO, Set7, + Lang_CN, Lang_EN, Lang_JP, //8 + Set4, Set4F, Save, +}; +const byte Menu_table[] = {12, 6, 4, 4, 2, 2, 2, 2, 3, 3}; //菜单 标签 温控 定时 控制方式 首页 蜂鸣器 标签删除确认界面 语言菜单 翻转 显示 +byte MenuLevel = 0; //菜单层级 + +/*//////////////////////////////////////////////////////////////////////////////////////////////////// + 多语言支持 + Multilingual support + /////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +/* + 英语库 ENGLISH +*/ +const char EN_0[] PROGMEM = "Tip"; +const char EN_1[] PROGMEM = "Temp"; +const char EN_2[] PROGMEM = "Timer"; +const char EN_3[] PROGMEM = "Control"; +const char EN_4[] PROGMEM = "Screen"; +const char EN_5[] PROGMEM = "Buzzer"; +const char EN_6[] PROGMEM = "LOW Vol"; +const char EN_7[] PROGMEM = "Lang"; +const char EN_8[] PROGMEM = "Return"; +const char EN_9[] PROGMEM = "Change"; +const char EN_10[] PROGMEM = "Calibrate"; +const char EN_11[] PROGMEM = "Rename"; +const char EN_12[] PROGMEM = "Delete"; +const char EN_13[] PROGMEM = "Add"; +const char EN_14[] PROGMEM = "Save"; +const char EN_15[] PROGMEM = "Default"; +const char EN_16[] PROGMEM = "Sleep"; +const char EN_17[] PROGMEM = "Boost"; +const char EN_18[] PROGMEM = "Save"; +const char EN_19[] PROGMEM = "Sleep"; +const char EN_20[] PROGMEM = "Off"; +const char EN_21[] PROGMEM = "Boost"; +const char EN_22[] PROGMEM = "Save"; +const char EN_23[] PROGMEM = "Direct"; +const char EN_24[] PROGMEM = "PID"; +const char EN_25[] PROGMEM = "Big"; +const char EN_26[] PROGMEM = "Infos"; +const char EN_27[] PROGMEM = "OFF"; +const char EN_28[] PROGMEM = "ON"; +const char EN_29[] PROGMEM = "NO"; +const char EN_30[] PROGMEM = "YES"; +const char EN_31[] PROGMEM = "CN"; +const char EN_32[] PROGMEM = "EN"; +const char EN_33[] PROGMEM = "NO"; +const char EN_34[] PROGMEM = "OK"; +const char EN_35[] PROGMEM = "Main Screen"; +const char EN_36[] PROGMEM = "Flip"; +const char EN_37[] PROGMEM = "Save"; +const char EN_38[] PROGMEM = "About"; +const char EN_39[] PROGMEM = "JP"; +const char EN_40[] PROGMEM = "Lock"; +const char EN_41[] PROGMEM = "Rotary"; +const char *const EN_table[] PROGMEM = {EN_0, EN_1, EN_2, EN_3, EN_4, EN_5, EN_41, EN_6, EN_40, EN_7, EN_38, EN_8, EN_9, EN_10, EN_11, EN_12, EN_13, EN_14, EN_15, EN_16, EN_17, EN_18, EN_19, EN_20, EN_21, EN_22, EN_23, EN_24, EN_25, EN_26, EN_27, EN_28, EN_29, EN_30, EN_31, EN_32, EN_39, EN_35, EN_36, EN_37,}; + +/* + #!/usr/bin/python + # -*- coding: UTF-8 -*- + for num in range(0,38): + print("EN_",end="") + print(num,end='') + print(",",end="") +*/ +/* + 中文语言库 CHINESE + + //////////////////////////////////////////////////////////////////////////////////////////////////////// + 本地化提示:你可以按照位图的大小,把这里的文字位图替换成你的语言,确保位图分辨率一致即可,我们欢迎你把程序翻译为你当地的语言! + Localization tips: you can according to the size of the bitmap, + replace the text bitmap here with your language, + ensure that the bitmap resolution is consistent, + we welcome you to translate the program into your local language! + //////////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +//width:28,height:14 主界面中文提示 +//Main Screen +//错误-ERROR +const unsigned char S1[] PROGMEM = { 0x20, 0x92, 0x1f, 0xc0, 0x3d, 0xf9, 0x90, 0x40, 0x20, 0x90, 0x90, 0x40, 0x40, 0x90, 0x1f, 0xc0, 0x7b, 0xff, 0x00, 0x00, 0xa0, 0x01, 0x3f, 0xe0, 0x21, 0xf9, 0x02, 0x00, 0xfd, 0x09, 0x02, 0x00, 0x21, 0x09, 0x7f, 0xf0, 0x21, 0xf9, 0x05, 0x00, 0x21, 0x09, 0x45, 0x00, 0x29, 0x09, 0x88, 0x80, 0x31, 0xf9, 0x10, 0x70, 0x21, 0x08, 0x20, 0x20 }; +//关机-OFF +const unsigned char S2[] PROGMEM = { 0x10, 0x40, 0x47, 0xc0, 0x17, 0xfc, 0x44, 0x40, 0x20, 0x03, 0xf4, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x62, 0x08, 0xc4, 0x40, 0xa3, 0xf8, 0xe4, 0x40, 0x20, 0x01, 0x54, 0x40, 0x2f, 0xfd, 0x44, 0x40, 0x28, 0x06, 0x44, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x20, 0x40, 0x44, 0x50, 0x20, 0x40, 0x48, 0x50, 0x21, 0x40, 0x50, 0x30, 0x20, 0x80, 0x40, 0x00 }; +//休眠-SLEEP +const unsigned char S3[] PROGMEM = { 0x10, 0x83, 0xdf, 0xc0, 0x10, 0x82, 0x50, 0x40, 0x20, 0x82, 0x50, 0x40, 0x2f, 0xff, 0xdf, 0xc0, 0x60, 0x82, 0x52, 0x00, 0x61, 0xc2, 0x52, 0x00, 0xa1, 0xc2, 0x5f, 0xe0, 0x22, 0xa3, 0xd2, 0x00, 0x22, 0xa2, 0x51, 0x00, 0x24, 0x92, 0x51, 0x00, 0x28, 0x8e, 0x50, 0x90, 0x30, 0x8b, 0xd4, 0x50, 0x20, 0x82, 0x58, 0x30, 0x20, 0x80, 0x10, 0x10 }; +//提温-BOOST +const unsigned char S4[] PROGMEM = { 0x23, 0xf2, 0x1f, 0xc0, 0x22, 0x11, 0x10, 0x40, 0xfb, 0xf0, 0x90, 0x40, 0x22, 0x12, 0x1f, 0xc0, 0x2a, 0x11, 0x10, 0x40, 0x33, 0xf1, 0x10, 0x40, 0x60, 0x00, 0x5f, 0xc0, 0xaf, 0xfc, 0x80, 0x00, 0x20, 0x41, 0x3f, 0xe0, 0x22, 0x43, 0x25, 0x20, 0x22, 0x79, 0x25, 0x20, 0x22, 0x41, 0x25, 0x20, 0xa5, 0x41, 0x25, 0x20, 0x48, 0xfd, 0x7f, 0xf0 }; +//正常工作-WORKY +const unsigned char S5[] PROGMEM = { 0x7f, 0xf8, 0x48, 0x80, 0x02, 0x00, 0x49, 0x00, 0x02, 0x01, 0xff, 0xf0, 0x02, 0x01, 0x00, 0x10, 0x02, 0x02, 0x7f, 0x20, 0x22, 0x00, 0x41, 0x00, 0x23, 0xf0, 0x7f, 0x00, 0x22, 0x00, 0x08, 0x00, 0x22, 0x00, 0xff, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x8a, 0x80, 0x22, 0x00, 0x89, 0x00, 0xff, 0xfc, 0x08, 0x00 }; +//加热-HEAT +const unsigned char S6[] PROGMEM = { 0x0f, 0x42, 0x1f, 0xc0, 0x78, 0x41, 0x10, 0x40, 0x08, 0x40, 0x90, 0x40, 0x08, 0x42, 0x1f, 0xc0, 0x08, 0x41, 0x10, 0x40, 0xff, 0xfd, 0x10, 0x40, 0x08, 0x40, 0x5f, 0xc0, 0x08, 0x40, 0x80, 0x00, 0x08, 0x41, 0x3f, 0xe0, 0x08, 0x43, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x20, 0x41, 0x25, 0x20, 0x40, 0x41, 0x7f, 0xf0 }; +//维持-HOLD +const unsigned char S7[] PROGMEM = { 0x11, 0x40, 0x82, 0x00, 0x21, 0x20, 0x8f, 0xe0, 0x23, 0xfc, 0x82, 0x00, 0x4a, 0x23, 0xe2, 0x00, 0xfe, 0x20, 0x9f, 0xf0, 0x13, 0xf8, 0x80, 0x80, 0x22, 0x20, 0xc0, 0x80, 0x42, 0x21, 0xbf, 0xf0, 0xfb, 0xfa, 0x88, 0x80, 0x02, 0x20, 0x84, 0x80, 0x02, 0x20, 0x84, 0x80, 0x1a, 0x20, 0x80, 0x80, 0xe3, 0xfe, 0x82, 0x80, 0x02, 0x01, 0x01, 0x00 }; +const unsigned char *S_table[] = {S1, S2, S3, S4, S5, S6, S7}; + +// 菜单 width:36,height:16 +//MENU Oj +/* + The order here(↓) can refer to EN_table(↑↑↑) +*/ +const unsigned char t0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x90, 0xf8, 0x00, 0x01, 0x08, 0x08, 0x88, 0x00, 0x0a, 0x10, 0x08, 0x88, 0x00, 0x04, 0x7f, 0x01, 0x07, 0x00, 0x1f, 0xc1, 0x3a, 0x00, 0x00, 0x05, 0x49, 0x09, 0xfc, 0x00, 0x04, 0x49, 0x08, 0x84, 0x00, 0x04, 0x49, 0x08, 0x88, 0x00, 0x04, 0x49, 0x08, 0x48, 0x00, 0x04, 0x49, 0x08, 0x50, 0x00, 0x04, 0x49, 0x0a, 0x20, 0x00, 0x04, 0x16, 0x0c, 0x58, 0x00, 0x14, 0x21, 0x89, 0x87, 0x00, 0x08, 0xc0, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x08, 0x20, 0x00, 0x08, 0x82, 0x0b, 0xff, 0x00, 0x04, 0x82, 0x0a, 0x01, 0x00, 0x10, 0xfe, 0x3c, 0x51, 0x00, 0x08, 0x82, 0x08, 0x88, 0x00, 0x08, 0x82, 0x09, 0x04, 0x00, 0x02, 0xfe, 0x0c, 0x00, 0x00, 0x04, 0x00, 0x19, 0xfc, 0x00, 0x09, 0xff, 0x28, 0x20, 0x00, 0x19, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x2b, 0xff, 0x00, 0x0b, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x04, 0x00, 0x1f, 0xff, 0xa2, 0x04, 0x00, 0x10, 0x00, 0xa2, 0xff, 0x00, 0x00, 0x01, 0x22, 0x04, 0x00, 0x0f, 0xfe, 0x22, 0x04, 0x00, 0x00, 0x40, 0x3e, 0x44, 0x00, 0x00, 0x40, 0x22, 0x24, 0x00, 0x04, 0x40, 0x22, 0x24, 0x00, 0x04, 0x7c, 0x22, 0x04, 0x00, 0x04, 0x40, 0x22, 0x04, 0x00, 0x0a, 0x40, 0x3e, 0x04, 0x00, 0x09, 0x40, 0x22, 0x24, 0x00, 0x10, 0xff, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }; +const unsigned char t3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x12, 0x02, 0x00, 0x05, 0xff, 0x9f, 0xd2, 0x00, 0x05, 0x00, 0x92, 0x12, 0x00, 0x1e, 0x28, 0xa2, 0x12, 0x00, 0x04, 0x44, 0x3f, 0xf2, 0x00, 0x04, 0x82, 0x02, 0x12, 0x00, 0x06, 0x00, 0x02, 0x12, 0x00, 0x0c, 0xfe, 0x1f, 0xd2, 0x00, 0x14, 0x10, 0x12, 0x52, 0x00, 0x04, 0x10, 0x12, 0x42, 0x00, 0x04, 0x10, 0x13, 0x42, 0x00, 0x04, 0x10, 0x12, 0x82, 0x00, 0x15, 0xff, 0x82, 0x0a, 0x00, 0x08, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x04, 0x02, 0x3f, 0xfe, 0x00, 0x04, 0x02, 0x00, 0x80, 0x00, 0x07, 0xfe, 0x00, 0x80, 0x00, 0x00, 0x90, 0x04, 0x90, 0x00, 0x08, 0x91, 0x0c, 0x88, 0x00, 0x06, 0x93, 0x10, 0x86, 0x00, 0x02, 0x94, 0x20, 0x82, 0x00, 0x00, 0x90, 0x00, 0x80, 0x00, 0x00, 0x90, 0x02, 0x80, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x9f, 0xfc, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x08, 0x42, 0x0f, 0xf8, 0x00, 0x08, 0x42, 0x08, 0x08, 0x00, 0x0f, 0xfe, 0x08, 0x08, 0x00, 0x08, 0x02, 0x0f, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x0f, 0xf8, 0x00, 0x10, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t6[] PROGMEM = { 0x09, 0xff, 0x00, 0x40, 0x00, 0x04, 0x20, 0x3f, 0xff, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x42, 0x0f, 0xfc, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x04, 0x00, 0x0f, 0xfc, 0x00, 0x04, 0xff, 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, 0x00, 0x05, 0x81, 0x0f, 0xfc, 0x00, 0x06, 0x81, 0x08, 0x04, 0x00, 0x04, 0xff, 0x08, 0x04, 0x00, 0x00, 0x81, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t7[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0xfe, 0x00, 0x01, 0x00, 0x08, 0x20, 0x00, 0x03, 0xff, 0x08, 0x20, 0x00, 0x02, 0x01, 0x08, 0x20, 0x00, 0x04, 0x22, 0x08, 0x20, 0x00, 0x08, 0x20, 0x0b, 0xfe, 0x00, 0x10, 0x20, 0x08, 0x20, 0x00, 0x00, 0x50, 0x08, 0x28, 0x00, 0x00, 0x50, 0x08, 0x24, 0x00, 0x00, 0x88, 0x08, 0x22, 0x00, 0x00, 0x88, 0x10, 0x20, 0x00, 0x01, 0x04, 0x10, 0x20, 0x00, 0x02, 0x03, 0xa7, 0xff, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Back[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x3f, 0xfe, 0x00, 0x04, 0x80, 0x20, 0x02, 0x00, 0x00, 0x80, 0x20, 0x02, 0x00, 0x00, 0xbe, 0x23, 0xe2, 0x00, 0x1c, 0x82, 0x22, 0x22, 0x00, 0x04, 0xa4, 0x22, 0x22, 0x00, 0x04, 0x94, 0x22, 0x22, 0x00, 0x04, 0x88, 0x22, 0x22, 0x00, 0x04, 0x94, 0x23, 0xe2, 0x00, 0x05, 0x22, 0x20, 0x02, 0x00, 0x05, 0x42, 0x20, 0x02, 0x00, 0x0a, 0x00, 0x3f, 0xfe, 0x00, 0x11, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t1_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x20, 0x90, 0x00, 0x02, 0x7f, 0x98, 0x90, 0x00, 0x1f, 0x80, 0x09, 0xff, 0x00, 0x02, 0x22, 0x01, 0x10, 0x00, 0x06, 0x21, 0x8b, 0x10, 0x00, 0x07, 0x62, 0x8d, 0xfe, 0x00, 0x0a, 0xa2, 0x09, 0x10, 0x00, 0x0a, 0x14, 0x11, 0x10, 0x00, 0x12, 0x14, 0x31, 0xfe, 0x00, 0x02, 0x08, 0x11, 0x10, 0x00, 0x02, 0x14, 0x11, 0x10, 0x00, 0x02, 0x22, 0x11, 0x10, 0x00, 0x02, 0x43, 0x91, 0xff, 0x00, 0x02, 0x81, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x50, 0x01, 0xfc, 0x00, 0x00, 0x88, 0x01, 0x04, 0x00, 0x01, 0x04, 0x03, 0x08, 0x00, 0x06, 0xfb, 0x04, 0x90, 0x00, 0x08, 0x00, 0xc0, 0x60, 0x00, 0x07, 0xdf, 0x01, 0x80, 0x00, 0x04, 0x51, 0x06, 0x00, 0x00, 0x04, 0x51, 0x1b, 0xfe, 0x00, 0x04, 0x51, 0x02, 0x02, 0x00, 0x07, 0xd9, 0x02, 0x02, 0x00, 0x04, 0x56, 0x02, 0x02, 0x00, 0x00, 0x10, 0x03, 0xfe, 0x00, 0x00, 0x10, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x78, 0xbc, 0x20, 0x00, 0x09, 0x48, 0xa4, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x88, 0x00, 0x09, 0x4a, 0xb1, 0x04, 0x00, 0x1f, 0xfe, 0xaa, 0xfb, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa7, 0xfe, 0x00, 0x09, 0x4a, 0xb4, 0x20, 0x00, 0x09, 0x48, 0xa9, 0x24, 0x00, 0x0b, 0x48, 0xa2, 0x22, 0x00, 0x08, 0x8a, 0xa4, 0xa2, 0x00, 0x11, 0x19, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x10, 0x00, 0x1f, 0xdc, 0x3e, 0xfe, 0x00, 0x08, 0x90, 0x02, 0x12, 0x00, 0x05, 0x10, 0x04, 0xff, 0x00, 0x1f, 0xdf, 0x84, 0x12, 0x00, 0x02, 0x12, 0x0c, 0xfe, 0x00, 0x1f, 0xd2, 0x02, 0x10, 0x00, 0x02, 0x12, 0x22, 0xfe, 0x00, 0x0a, 0x92, 0x14, 0x10, 0x00, 0x0a, 0x52, 0x14, 0x10, 0x00, 0x12, 0x22, 0x0d, 0xff, 0x00, 0x02, 0x22, 0x08, 0x10, 0x00, 0x0a, 0x42, 0x14, 0x10, 0x00, 0x04, 0x02, 0x23, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//默认 +const unsigned char t2_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc8, 0x10, 0x20, 0x00, 0x12, 0x4a, 0x0c, 0x20, 0x00, 0x1a, 0xc9, 0x04, 0x20, 0x00, 0x17, 0x48, 0x00, 0x20, 0x00, 0x1f, 0xff, 0xb8, 0x20, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x1f, 0xc8, 0x08, 0x50, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x03, 0xc8, 0x08, 0x48, 0x00, 0x1e, 0x14, 0x08, 0x88, 0x00, 0x01, 0x54, 0x0a, 0x88, 0x00, 0x15, 0x22, 0x0c, 0x84, 0x00, 0x14, 0x43, 0x89, 0x07, 0x00, 0x00, 0x81, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//休眠 +const unsigned char t2_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x3d, 0xfc, 0x00, 0x02, 0x10, 0x25, 0x04, 0x00, 0x04, 0x10, 0x25, 0x04, 0x00, 0x05, 0xff, 0xbd, 0xfc, 0x00, 0x0c, 0x10, 0x25, 0x20, 0x00, 0x0c, 0x38, 0x25, 0x20, 0x00, 0x14, 0x38, 0x25, 0xfe, 0x00, 0x04, 0x54, 0x3d, 0x20, 0x00, 0x04, 0x54, 0x25, 0x10, 0x00, 0x04, 0x92, 0x25, 0x10, 0x00, 0x05, 0x11, 0xa5, 0x09, 0x00, 0x06, 0x11, 0x3d, 0x45, 0x00, 0x04, 0x10, 0x25, 0x83, 0x00, 0x04, 0x10, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//提温 +const unsigned char t2_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7e, 0x21, 0xfc, 0x00, 0x04, 0x42, 0x11, 0x04, 0x00, 0x1f, 0x7e, 0x09, 0x04, 0x00, 0x04, 0x42, 0x21, 0xfc, 0x00, 0x05, 0x42, 0x11, 0x04, 0x00, 0x06, 0x7e, 0x11, 0x04, 0x00, 0x0c, 0x00, 0x05, 0xfc, 0x00, 0x15, 0xff, 0x88, 0x00, 0x00, 0x04, 0x08, 0x13, 0xfe, 0x00, 0x04, 0x48, 0x32, 0x52, 0x00, 0x04, 0x4f, 0x12, 0x52, 0x00, 0x04, 0x48, 0x12, 0x52, 0x00, 0x14, 0xa8, 0x12, 0x52, 0x00, 0x09, 0x1f, 0x97, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//关机 +const unsigned char t3_1[] PROGMEM = { 0x01, 0x04, 0x04, 0x7c, 0x00, 0x00, 0x88, 0x04, 0x44, 0x00, 0x0f, 0xff, 0x3f, 0x44, 0x00, 0x00, 0x20, 0x04, 0x44, 0x00, 0x00, 0x20, 0x0c, 0x44, 0x00, 0x00, 0x20, 0x0e, 0x44, 0x00, 0x1f, 0xff, 0x95, 0x44, 0x00, 0x00, 0x20, 0x14, 0x44, 0x00, 0x00, 0x50, 0x24, 0x44, 0x00, 0x00, 0x50, 0x04, 0x44, 0x00, 0x00, 0x88, 0x04, 0x45, 0x00, 0x01, 0x04, 0x04, 0x85, 0x00, 0x06, 0x03, 0x85, 0x03, 0x00, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x20, 0x00, 0x0f, 0xff, 0x09, 0xfc, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x88, 0x00, 0x03, 0xfe, 0x08, 0x50, 0x00, 0x02, 0x02, 0x0b, 0xfe, 0x00, 0x03, 0xfe, 0x0c, 0x40, 0x00, 0x02, 0x02, 0x18, 0x40, 0x00, 0x03, 0xfe, 0x2b, 0xfe, 0x00, 0x02, 0x02, 0x08, 0x48, 0x00, 0x03, 0xfe, 0x08, 0x88, 0x00, 0x02, 0x02, 0x08, 0x50, 0x00, 0x02, 0x02, 0x28, 0x30, 0x00, 0x1f, 0xff, 0x91, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_PID[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xf1, 0xe0, 0x00, 0x0f, 0xe3, 0xf1, 0xf8, 0x00, 0x0c, 0x70, 0xc1, 0x9e, 0x00, 0x0c, 0x30, 0xc1, 0x86, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x98, 0x00, 0x0c, 0x03, 0xf1, 0xf8, 0x00, 0x0c, 0x03, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t5_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0x88, 0x40, 0x00, 0x0a, 0x24, 0x10, 0x40, 0x00, 0x11, 0x42, 0x10, 0xfe, 0x00, 0x04, 0x00, 0x22, 0x82, 0x00, 0x02, 0xff, 0x3d, 0x02, 0x00, 0x08, 0x01, 0x0a, 0x42, 0x00, 0x09, 0xf9, 0x10, 0x32, 0x00, 0x09, 0x09, 0x20, 0x12, 0x00, 0x09, 0xf9, 0x3e, 0x02, 0x00, 0x09, 0x09, 0x00, 0x02, 0x00, 0x09, 0x09, 0x0e, 0x02, 0x00, 0x09, 0xf9, 0x30, 0x22, 0x00, 0x08, 0x05, 0x00, 0x14, 0x00, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x44, 0x10, 0xfe, 0x00, 0x04, 0x28, 0x10, 0x92, 0x00, 0x05, 0xff, 0x22, 0x92, 0x00, 0x00, 0x10, 0x3c, 0x92, 0x00, 0x00, 0x10, 0x08, 0x92, 0x00, 0x1c, 0xfe, 0x10, 0x92, 0x00, 0x04, 0x10, 0x20, 0xfe, 0x00, 0x04, 0x10, 0x3e, 0x92, 0x00, 0x05, 0xff, 0x80, 0x92, 0x00, 0x04, 0x10, 0x00, 0x92, 0x00, 0x05, 0x10, 0x0e, 0x92, 0x00, 0x06, 0x10, 0x30, 0x92, 0x00, 0x04, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x10, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x3f, 0xfe, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x08, 0x08, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x09, 0x48, 0x00, 0x04, 0x02, 0x02, 0x30, 0x00, 0x07, 0xfe, 0x04, 0x0c, 0x00, 0x04, 0x02, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_off[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x04, 0xff, 0x00, 0x00, 0x44, 0x02, 0x01, 0x00, 0x07, 0xff, 0x90, 0x21, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x00, 0x10, 0x17, 0xfd, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x0f, 0xff, 0xd0, 0x61, 0x00, 0x00, 0x10, 0x10, 0xa1, 0x00, 0x00, 0x28, 0x11, 0x21, 0x00, 0x00, 0x28, 0x12, 0x21, 0x00, 0x00, 0x44, 0x14, 0x21, 0x00, 0x00, 0x82, 0x10, 0xa1, 0x00, 0x03, 0x01, 0xd0, 0x45, 0x00, 0x0c, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_on[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x20, 0x00, 0x00, 0x84, 0x07, 0xff, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x0f, 0xff, 0xc7, 0xff, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x05, 0xff, 0x00, 0x00, 0x84, 0x05, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x02, 0x04, 0x11, 0xff, 0x00, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_NO[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x04, 0x91, 0x00, 0x04, 0x40, 0x02, 0x52, 0x00, 0x04, 0x7f, 0x90, 0x54, 0x00, 0x04, 0x50, 0x88, 0xff, 0x00, 0x07, 0xd0, 0x84, 0x81, 0x00, 0x04, 0x51, 0x00, 0x81, 0x00, 0x04, 0x49, 0x01, 0xff, 0x00, 0x07, 0xca, 0x02, 0x81, 0x00, 0x04, 0x44, 0x04, 0x81, 0x00, 0x04, 0x4a, 0x1c, 0xff, 0x00, 0x07, 0xea, 0x04, 0x81, 0x00, 0x0c, 0x51, 0x04, 0x81, 0x00, 0x00, 0x61, 0xc4, 0x85, 0x00, 0x00, 0x40, 0x80, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_OK[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0x10, 0x20, 0x00, 0x02, 0x12, 0x0c, 0x20, 0x00, 0x02, 0x24, 0x04, 0x20, 0x00, 0x04, 0x7f, 0x80, 0x20, 0x00, 0x04, 0x24, 0xb8, 0x20, 0x00, 0x0f, 0xa4, 0x88, 0x50, 0x00, 0x14, 0xbf, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x48, 0x00, 0x04, 0xbf, 0x88, 0x88, 0x00, 0x04, 0xa4, 0x8a, 0x88, 0x00, 0x07, 0xa4, 0x8c, 0x84, 0x00, 0x04, 0x44, 0x89, 0x07, 0x00, 0x00, 0x81, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_CN_CN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x0f, 0xff, 0x3f, 0xff, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x10, 0x00, 0x08, 0x41, 0x02, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x08, 0x41, 0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x01, 0x30, 0x00, 0x00, 0x40, 0x02, 0x08, 0x00, 0x00, 0x40, 0x0c, 0x07, 0x00, 0x00, 0x40, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_EN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x80, 0x80, 0x00, 0x01, 0x10, 0x3f, 0xff, 0x00, 0x00, 0x40, 0x04, 0x08, 0x00, 0x07, 0xfc, 0x04, 0x08, 0x00, 0x04, 0x44, 0x04, 0x10, 0x00, 0x04, 0x44, 0x02, 0x10, 0x00, 0x04, 0x44, 0x02, 0x20, 0x00, 0x1f, 0xff, 0x81, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0x01, 0x30, 0x00, 0x01, 0x10, 0x02, 0x08, 0x00, 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x18, 0x03, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_JP[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x13, 0xfe, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x01, 0xfc, 0x00, 0x04, 0x02, 0x38, 0x84, 0x00, 0x04, 0x02, 0x08, 0x84, 0x00, 0x07, 0xfe, 0x0f, 0xff, 0x00, 0x04, 0x02, 0x08, 0x00, 0x00, 0x04, 0x02, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x09, 0x02, 0x00, 0x04, 0x02, 0x0b, 0x02, 0x00, 0x04, 0x02, 0x0d, 0x02, 0x00, 0x07, 0xfe, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +//翻转 +const unsigned char t4f[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1d, 0xc2, 0x08, 0x00, 0x05, 0x44, 0x42, 0x08, 0x00, 0x03, 0x84, 0x5f, 0xbf, 0x00, 0x0f, 0xe4, 0x44, 0x10, 0x00, 0x01, 0x15, 0x45, 0x10, 0x00, 0x05, 0x4c, 0xc9, 0x7f, 0x80, 0x09, 0x24, 0x4f, 0x90, 0x00, 0x07, 0xc4, 0xc1, 0x10, 0x00, 0x05, 0x4d, 0x41, 0x3f, 0x00, 0x05, 0x54, 0x43, 0x81, 0x00, 0x07, 0xc4, 0x4d, 0x02, 0x00, 0x05, 0x44, 0x41, 0x14, 0x00, 0x05, 0x55, 0x41, 0x08, 0x00, 0x07, 0xc8, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//保存 +const unsigned char t_save[] PROGMEM = { 0x02, 0xfe, 0x01, 0x00, 0x00, 0x02, 0x82, 0x3f, 0xff, 0x00, 0x04, 0x82, 0x02, 0x00, 0x00, 0x04, 0xfe, 0x02, 0x00, 0x00, 0x0c, 0x10, 0x04, 0xfc, 0x00, 0x14, 0x10, 0x04, 0x08, 0x00, 0x05, 0xff, 0x8c, 0x10, 0x00, 0x04, 0x10, 0x14, 0x10, 0x00, 0x04, 0x38, 0x25, 0xff, 0x00, 0x04, 0x34, 0x04, 0x10, 0x00, 0x04, 0x52, 0x04, 0x10, 0x00, 0x04, 0x91, 0x84, 0x10, 0x00, 0x05, 0x10, 0x04, 0x50, 0x00, 0x04, 0x10, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tAbout[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0f, 0xfe, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x07, 0xff, 0x80, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x1f, 0xff, 0x80, 0x0f, 0xff, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x40, 0x00, 0x03, 0x01, 0xc1, 0x40, 0x00, 0x0c, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tPassword[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x7e, 0x00, 0x1f, 0xff, 0x84, 0x02, 0x00, 0x10, 0x80, 0x84, 0x42, 0x00, 0x0a, 0x4a, 0x04, 0x42, 0x00, 0x0a, 0x31, 0x08, 0x42, 0x00, 0x12, 0xc5, 0x0f, 0x42, 0x00, 0x03, 0x04, 0x19, 0x7f, 0x00, 0x1d, 0xf8, 0x29, 0x01, 0x00, 0x00, 0x40, 0x09, 0x01, 0x00, 0x08, 0x42, 0x09, 0xfd, 0x00, 0x08, 0x42, 0x09, 0x01, 0x00, 0x08, 0x42, 0x0f, 0x01, 0x00, 0x0f, 0xfe, 0x09, 0x05, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t19[] PROGMEM = { 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x1f, 0x88, 0xfe, 0x00, 0x1f, 0xd0, 0x0e, 0x22, 0x00, 0x04, 0x20, 0x30, 0x22, 0x00, 0x04, 0x5f, 0x80, 0x22, 0x00, 0x07, 0x84, 0x9e, 0x22, 0x00, 0x04, 0x85, 0x08, 0x22, 0x00, 0x04, 0x94, 0x08, 0x22, 0x00, 0x04, 0x94, 0x28, 0xfe, 0x00, 0x04, 0x97, 0x1e, 0x42, 0x00, 0x04, 0x94, 0x08, 0x42, 0x00, 0x08, 0x94, 0x08, 0x42, 0x00, 0x0a, 0xac, 0x0a, 0x42, 0x00, 0x11, 0x44, 0x0c, 0x42, 0x00, 0x00, 0x83, 0x89, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char *CN_table[] = { + t0, t1, t2, t3, t4, t5, t19 , t7, tPassword, t6, tAbout, Back, //0 + t0, t1_1, t1_2, t1_3, t1_4, t_save, //1 + t2_0, t2_1, t2_2, t_save, //2 + t2_1, t3_1, t2_2, t_save,//3 + t_4, t_PID,//4 + t5_0, t5_1,//5 + t_off, t_on,//6 + t_NO, t_OK,//7 + t_CN_CN, t_CN_EN, t_CN_JP, //8 + t5_3, t4f, t_save, //9 +}; + +/* + 日语 Japanese +*/ +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ +#define LANG_JP_State true +#if LANG_JP_State +#define MISAKI_FONT_H + +#define MISAKI_FONT_F0_PAGE 0xF0 +#define MISAKI_FONT_F1_PAGE 0xF1 +#define MISAKI_FONT_F2_PAGE 0xF2 + +#define MISAKI_FONT_F0_W 8 +#define MISAKI_FONT_F1_W 3 +#define MISAKI_FONT_F2_W 7 + +#define MISAKI_FONT_F0_SIZE 0xEF +#define MISAKI_FONT_F1_SIZE 0x9D +#define MISAKI_FONT_F2_SIZE 0x22 // misaki_font_f2.h の最終行の値をここに設定する、最大0xEFまで + +/* + 利用しないフォントデータはヘッダファイルを読み込まないようにするとメモリが節約できます、 + drawText() 実行時にフォントが無い場合は処理がスキップされます。 + + 例) 8x8 dot ひらがな・カタカナ・記号 のみ利用 + #include "misaki_font_f0.h" // 8x8 dot ひらがな・カタカナ・記号 + //#include "misaki_font_f1.h" // 4x8 dot 英語・カタカナ・記号 + //#include "misaki_font_f2.h" // 8x8 dot 漢字 +*/ +PROGMEM const uint8_t misaki_font_0x00[1] = { 0x00 }; +#define MISAKI_FONT_F0_H +PROGMEM const uint8_t misaki_font_f0[ MISAKI_FONT_F0_SIZE + 1 ][ MISAKI_FONT_F0_W ] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x00   */ + { 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x01 、 */ + { 0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x02 。 */ + { 0x50, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x03 , */ + { 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x04 . */ + { 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }, /* 0x05 ・ */ + { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x06 : */ + { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x07 ; */ + { 0x00, 0x02, 0x01, 0x51, 0x09, 0x09, 0x06, 0x00 }, /* 0x08 ? */ + { 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00 }, /* 0x09 ! */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 0x0A [ */ + { 0x41, 0x41, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x0B ] */ + { 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x00 }, /* 0x0C 「 */ + { 0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00 }, /* 0x0D 」 */ + { 0x00, 0x00, 0x3f, 0x21, 0x3d, 0x05, 0x07, 0x00 }, /* 0x0E 『 */ + { 0x70, 0x50, 0x5e, 0x42, 0x7e, 0x00, 0x00, 0x00 }, /* 0x0F 』 */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x63, 0x41, 0x00 }, /* 0x10 【 */ + { 0x41, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x11 】 */ + { 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00 }, /* 0x12 + */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x13 - */ + { 0x44, 0x44, 0x44, 0x5f, 0x44, 0x44, 0x44, 0x00 }, /* 0x14 ± */ + { 0x41, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 0x15 × */ + { 0x08, 0x08, 0x08, 0x2a, 0x08, 0x08, 0x08, 0x00 }, /* 0x16 ÷ */ + { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00 }, /* 0x17 = */ + { 0x14, 0x34, 0x14, 0x1c, 0x14, 0x16, 0x14, 0x00 }, /* 0x18 ≠ */ + { 0x08, 0x08, 0x14, 0x14, 0x14, 0x22, 0x22, 0x00 }, /* 0x19 < */ + { 0x22, 0x22, 0x14, 0x14, 0x14, 0x08, 0x08, 0x00 }, /* 0x1A > */ + { 0x02, 0x05, 0x02, 0x3c, 0x42, 0x42, 0x24, 0x00 }, /* 0x1B ℃ */ + { 0x00, 0x2b, 0x2c, 0x78, 0x2c, 0x2b, 0x00, 0x00 }, /* 0x1C ¥ */ + { 0x00, 0x24, 0x2a, 0x7a, 0x2f, 0x2a, 0x12, 0x00 }, /* 0x1D $ */ + { 0x00, 0x1c, 0x62, 0x32, 0x2e, 0x23, 0x14, 0x00 }, /* 0x1E ¢ */ + { 0x20, 0x54, 0x5e, 0x25, 0x41, 0x42, 0x20, 0x00 }, /* 0x1F £ */ + { 0x42, 0x25, 0x12, 0x08, 0x24, 0x52, 0x21, 0x00 }, /* 0x20 % */ + { 0x20, 0x62, 0x3e, 0x63, 0x3e, 0x23, 0x02, 0x00 }, /* 0x21 # */ + { 0x20, 0x56, 0x49, 0x55, 0x22, 0x58, 0x40, 0x00 }, /* 0x22 & */ + { 0x00, 0x22, 0x14, 0x7f, 0x14, 0x22, 0x00, 0x00 }, /* 0x23 * */ + { 0x1c, 0x22, 0x59, 0x55, 0x4d, 0x12, 0x0c, 0x00 }, /* 0x24 @ */ + { 0x00, 0x00, 0x4a, 0x55, 0x55, 0x29, 0x00, 0x00 }, /* 0x25 § */ + { 0x04, 0x64, 0x3c, 0x17, 0x3c, 0x64, 0x04, 0x00 }, /* 0x26 ☆ */ + { 0x04, 0x64, 0x3c, 0x1f, 0x3c, 0x64, 0x04, 0x00 }, /* 0x27 ★ */ + { 0x1c, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00 }, /* 0x28 ○ */ + { 0x1c, 0x3e, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x00 }, /* 0x29 ● */ + { 0x1c, 0x22, 0x5d, 0x55, 0x5d, 0x22, 0x1c, 0x00 }, /* 0x2A ◎ */ + { 0x08, 0x14, 0x22, 0x41, 0x22, 0x14, 0x08, 0x00 }, /* 0x2B ◇ */ + { 0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00 }, /* 0x2C ◆ */ + { 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, 0x00 }, /* 0x2D □ */ + { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00 }, /* 0x2E ■ */ + { 0x40, 0x70, 0x4c, 0x43, 0x4c, 0x70, 0x40, 0x00 }, /* 0x2F △ */ + { 0x40, 0x70, 0x7c, 0x7f, 0x7c, 0x70, 0x40, 0x00 }, /* 0x30 ▲ */ + { 0x01, 0x07, 0x19, 0x61, 0x19, 0x07, 0x01, 0x00 }, /* 0x31 ▽ */ + { 0x01, 0x07, 0x1f, 0x7f, 0x1f, 0x07, 0x01, 0x00 }, /* 0x32 ▼ */ + { 0x49, 0x22, 0x14, 0x49, 0x14, 0x22, 0x49, 0x00 }, /* 0x33 ※ */ + { 0x05, 0x05, 0x05, 0x7d, 0x05, 0x05, 0x05, 0x00 }, /* 0x34 〒 */ + { 0x08, 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x00 }, /* 0x35 → */ + { 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x36 ← */ + { 0x00, 0x04, 0x02, 0x7f, 0x02, 0x04, 0x00, 0x00 }, /* 0x37 ↑ */ + { 0x00, 0x10, 0x20, 0x7f, 0x20, 0x10, 0x00, 0x00 }, /* 0x38 ↓ */ + { 0x00, 0x3e, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00 }, /* 0x39 0 */ + { 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x00 }, /* 0x3A 1 */ + { 0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46, 0x00 }, /* 0x3B 2 */ + { 0x00, 0x22, 0x41, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x3C 3 */ + { 0x00, 0x30, 0x28, 0x24, 0x22, 0x7f, 0x20, 0x00 }, /* 0x3D 4 */ + { 0x00, 0x2f, 0x45, 0x45, 0x45, 0x45, 0x39, 0x00 }, /* 0x3E 5 */ + { 0x00, 0x3e, 0x49, 0x49, 0x49, 0x49, 0x32, 0x00 }, /* 0x3F 6 */ + { 0x00, 0x01, 0x01, 0x61, 0x19, 0x05, 0x03, 0x00 }, /* 0x40 7 */ + { 0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x41 8 */ + { 0x00, 0x26, 0x49, 0x49, 0x49, 0x49, 0x3e, 0x00 }, /* 0x42 9 */ + { 0x00, 0x20, 0x54, 0x7e, 0x34, 0x14, 0x60, 0x00 }, /* 0x43 ぁ */ + { 0x20, 0x52, 0x7f, 0x2a, 0x1a, 0x4a, 0x30, 0x00 }, /* 0x44 あ */ + { 0x00, 0x3c, 0x40, 0x20, 0x04, 0x18, 0x00, 0x00 }, /* 0x45 ぃ */ + { 0x1e, 0x20, 0x40, 0x20, 0x02, 0x04, 0x18, 0x00 }, /* 0x46 い */ + { 0x00, 0x10, 0x4a, 0x4a, 0x2a, 0x10, 0x00, 0x00 }, /* 0x47 ぅ */ + { 0x00, 0x08, 0x45, 0x45, 0x45, 0x25, 0x18, 0x00 }, /* 0x48 う */ + { 0x00, 0x48, 0x2a, 0x3a, 0x4a, 0x40, 0x00, 0x00 }, /* 0x49 ぇ */ + { 0x00, 0x44, 0x25, 0x15, 0x3d, 0x45, 0x40, 0x00 }, /* 0x4A え */ + { 0x00, 0x24, 0x7e, 0x14, 0x50, 0x24, 0x00, 0x00 }, /* 0x4B ぉ */ + { 0x22, 0x52, 0x7f, 0x0a, 0x48, 0x4a, 0x34, 0x00 }, /* 0x4C お */ + { 0x44, 0x34, 0x4f, 0x44, 0x38, 0x04, 0x18, 0x00 }, /* 0x4D か */ + { 0x44, 0x34, 0x4f, 0x44, 0x39, 0x04, 0x19, 0x00 }, /* 0x4E が */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5a, 0x08, 0x00 }, /* 0x4F き */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5b, 0x08, 0x00 }, /* 0x50 ぎ */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x41, 0x00, 0x00 }, /* 0x51 く */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x45, 0x04, 0x00 }, /* 0x52 ぐ */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x04, 0x00 }, /* 0x53 け */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x05, 0x00 }, /* 0x54 げ */ + { 0x00, 0x20, 0x52, 0x42, 0x42, 0x42, 0x40, 0x00 }, /* 0x55 こ */ + { 0x00, 0x20, 0x52, 0x42, 0x43, 0x42, 0x41, 0x00 }, /* 0x56 ご */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x04, 0x00 }, /* 0x57 さ */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x05, 0x00 }, /* 0x58 ざ */ + { 0x00, 0x00, 0x3f, 0x40, 0x40, 0x40, 0x20, 0x00 }, /* 0x59 し */ + { 0x00, 0x00, 0x3f, 0x40, 0x41, 0x40, 0x21, 0x00 }, /* 0x5A じ */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x02, 0x00 }, /* 0x5B す */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x03, 0x00 }, /* 0x5C ず */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x44, 0x00 }, /* 0x5D せ */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x45, 0x00 }, /* 0x5E ぜ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x08, 0x00 }, /* 0x5F そ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x0a, 0x00 }, /* 0x60 ぞ */ + { 0x42, 0x3a, 0x07, 0x22, 0x54, 0x44, 0x44, 0x00 }, /* 0x61 た */ + { 0x42, 0x3a, 0x07, 0x22, 0x55, 0x44, 0x45, 0x00 }, /* 0x62 だ */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x32, 0x00 }, /* 0x63 ち */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x33, 0x00 }, /* 0x64 ぢ */ + { 0x00, 0x10, 0x10, 0x48, 0x48, 0x30, 0x00, 0x00 }, /* 0x65 っ */ + { 0x04, 0x04, 0x02, 0x22, 0x22, 0x22, 0x1c, 0x00 }, /* 0x66 つ */ + { 0x04, 0x04, 0x02, 0x22, 0x23, 0x22, 0x1d, 0x00 }, /* 0x67 づ */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x41, 0x00 }, /* 0x68 て */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x45, 0x00 }, /* 0x69 で */ + { 0x00, 0x20, 0x57, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0x6A と */ + { 0x00, 0x20, 0x57, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0x6B ど */ + { 0x12, 0x0a, 0x27, 0x52, 0x50, 0x3a, 0x24, 0x00 }, /* 0x6C な */ + { 0x7f, 0x00, 0x20, 0x52, 0x42, 0x42, 0x40, 0x00 }, /* 0x6D に */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x64, 0x78, 0x00 }, /* 0x6E ぬ */ + { 0x24, 0x14, 0x7f, 0x04, 0x22, 0x52, 0x3c, 0x00 }, /* 0x6F ね */ + { 0x18, 0x24, 0x12, 0x4e, 0x42, 0x24, 0x18, 0x00 }, /* 0x70 の */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x44, 0x00 }, /* 0x71 は */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x45, 0x00 }, /* 0x72 ば */ + { 0x7f, 0x00, 0x24, 0x54, 0x56, 0x3d, 0x46, 0x00 }, /* 0x73 ぱ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x04, 0x00 }, /* 0x74 ひ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x05, 0x00 }, /* 0x75 び */ + { 0x02, 0x3a, 0x47, 0x40, 0x43, 0x3d, 0x06, 0x00 }, /* 0x76 ぴ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x10, 0x60, 0x00 }, /* 0x77 ふ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x11, 0x61, 0x00 }, /* 0x78 ぶ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x15, 0x62, 0x00 }, /* 0x79 ぷ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00 }, /* 0x7A へ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x11, 0x00 }, /* 0x7B べ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x12, 0x00 }, /* 0x7C ぺ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2a, 0x4a, 0x00 }, /* 0x7D ほ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7f, 0x2a, 0x4b, 0x00 }, /* 0x7E ぼ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2d, 0x4a, 0x00 }, /* 0x7F ぽ */ + { 0x00, 0x6a, 0x6a, 0x6a, 0x7f, 0x2a, 0x4a, 0x00 }, /* 0x80 ま */ + { 0x30, 0x29, 0x1d, 0x4b, 0x48, 0x3c, 0x10, 0x00 }, /* 0x81 み */ + { 0x12, 0x2a, 0x7f, 0x42, 0x40, 0x42, 0x24, 0x00 }, /* 0x82 む */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x44, 0x38, 0x00 }, /* 0x83 め */ + { 0x00, 0x0a, 0x3e, 0x4b, 0x4a, 0x4a, 0x30, 0x00 }, /* 0x84 も */ + { 0x00, 0x08, 0x0e, 0x38, 0x46, 0x14, 0x08, 0x00 }, /* 0x85 ゃ */ + { 0x04, 0x07, 0x1c, 0x62, 0x03, 0x0a, 0x04, 0x00 }, /* 0x86 や */ + { 0x00, 0x1c, 0x48, 0x3e, 0x24, 0x18, 0x00, 0x00 }, /* 0x87 ゅ */ + { 0x1e, 0x04, 0x52, 0x3f, 0x12, 0x12, 0x0c, 0x00 }, /* 0x88 ゆ */ + { 0x00, 0x20, 0x50, 0x50, 0x3e, 0x48, 0x00, 0x00 }, /* 0x89 ょ */ + { 0x00, 0x20, 0x50, 0x50, 0x3f, 0x24, 0x44, 0x00 }, /* 0x8A よ */ + { 0x00, 0x1c, 0x51, 0x49, 0x4a, 0x48, 0x30, 0x00 }, /* 0x8B ら */ + { 0x00, 0x0f, 0x42, 0x41, 0x21, 0x1e, 0x00, 0x00 }, /* 0x8C り */ + { 0x00, 0x10, 0x69, 0x6d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8D る */ + { 0x24, 0x14, 0x7f, 0x04, 0x02, 0x3e, 0x40, 0x00 }, /* 0x8E れ */ + { 0x00, 0x10, 0x49, 0x4d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8F ろ */ + { 0x00, 0x28, 0x18, 0x7e, 0x08, 0x44, 0x38, 0x00 }, /* 0x90 ゎ */ + { 0x24, 0x14, 0x7f, 0x04, 0x42, 0x42, 0x3c, 0x00 }, /* 0x91 わ */ + { 0x30, 0x49, 0x25, 0x1f, 0x24, 0x54, 0x38, 0x00 }, /* 0x92 ゐ */ + { 0x40, 0x28, 0x25, 0x57, 0x35, 0x28, 0x40, 0x00 }, /* 0x93 ゑ */ + { 0x10, 0x0a, 0x2e, 0x5b, 0x72, 0x4a, 0x48, 0x00 }, /* 0x94 を */ + { 0x40, 0x30, 0x0c, 0x33, 0x40, 0x40, 0x20, 0x00 }, /* 0x95 ん */ + { 0x00, 0x04, 0x44, 0x3c, 0x14, 0x0c, 0x00, 0x00 }, /* 0x96 ァ */ + { 0x00, 0x01, 0x41, 0x3d, 0x09, 0x05, 0x03, 0x00 }, /* 0x97 ア */ + { 0x00, 0x20, 0x20, 0x10, 0x78, 0x04, 0x00, 0x00 }, /* 0x98 ィ */ + { 0x00, 0x10, 0x10, 0x08, 0x7c, 0x02, 0x01, 0x00 }, /* 0x99 イ */ + { 0x00, 0x18, 0x48, 0x4c, 0x28, 0x18, 0x00, 0x00 }, /* 0x9A ゥ */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0x9B ウ */ + { 0x00, 0x40, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00 }, /* 0x9C ェ */ + { 0x20, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x20, 0x00 }, /* 0x9D エ */ + { 0x00, 0x28, 0x28, 0x58, 0x7c, 0x08, 0x00, 0x00 }, /* 0x9E ォ */ + { 0x22, 0x22, 0x12, 0x4a, 0x7f, 0x02, 0x02, 0x00 }, /* 0x9F オ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7e, 0x00 }, /* 0xA0 カ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7f, 0x00 }, /* 0xA1 ガ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x12, 0x10, 0x00 }, /* 0xA2 キ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x13, 0x10, 0x00 }, /* 0xA3 ギ */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0xA4 ク */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xA5 グ */ + { 0x08, 0x07, 0x42, 0x22, 0x1e, 0x02, 0x02, 0x00 }, /* 0xA6 ケ */ + { 0x08, 0x07, 0x42, 0x22, 0x1f, 0x02, 0x03, 0x00 }, /* 0xA7 ゲ */ + { 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xA8 コ */ + { 0x00, 0x42, 0x42, 0x42, 0x43, 0x42, 0x7f, 0x00 }, /* 0xA9 ゴ */ + { 0x02, 0x02, 0x4f, 0x42, 0x22, 0x1f, 0x02, 0x00 }, /* 0xAA サ */ + { 0x02, 0x02, 0x4f, 0x42, 0x23, 0x1e, 0x03, 0x00 }, /* 0xAB ザ */ + { 0x00, 0x45, 0x4a, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xAC シ */ + { 0x00, 0x45, 0x4a, 0x40, 0x21, 0x10, 0x0d, 0x00 }, /* 0xAD ジ */ + { 0x40, 0x42, 0x22, 0x22, 0x1a, 0x26, 0x40, 0x00 }, /* 0xAE ス */ + { 0x40, 0x42, 0x22, 0x22, 0x1b, 0x26, 0x41, 0x00 }, /* 0xAF ズ */ + { 0x04, 0x04, 0x3f, 0x44, 0x44, 0x54, 0x4c, 0x00 }, /* 0xB0 セ */ + { 0x04, 0x04, 0x3f, 0x44, 0x45, 0x54, 0x4d, 0x00 }, /* 0xB1 ゼ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x10, 0x0f, 0x00 }, /* 0xB2 ソ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x11, 0x0f, 0x00 }, /* 0xB3 ゾ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0e, 0x00 }, /* 0xB4 タ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0f, 0x00 }, /* 0xB5 ダ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x09, 0x08, 0x00 }, /* 0xB6 チ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x08, 0x09, 0x00 }, /* 0xB7 ヂ */ + { 0x00, 0x18, 0x40, 0x58, 0x20, 0x18, 0x00, 0x00 }, /* 0xB8 ッ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x20, 0x10, 0x0e, 0x00 }, /* 0xB9 ツ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x21, 0x10, 0x0d, 0x00 }, /* 0xBA ヅ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x05, 0x04, 0x00 }, /* 0xBB テ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x04, 0x05, 0x00 }, /* 0xBC デ */ + { 0x00, 0x00, 0x7f, 0x08, 0x08, 0x10, 0x00, 0x00 }, /* 0xBD ト */ + { 0x00, 0x00, 0x7f, 0x08, 0x09, 0x10, 0x01, 0x00 }, /* 0xBE ド */ + { 0x04, 0x44, 0x24, 0x1f, 0x04, 0x04, 0x04, 0x00 }, /* 0xBF ナ */ + { 0x20, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x00 }, /* 0xC0 ニ */ + { 0x40, 0x41, 0x25, 0x15, 0x19, 0x27, 0x00, 0x00 }, /* 0xC1 ヌ */ + { 0x20, 0x22, 0x12, 0x7b, 0x06, 0x12, 0x20, 0x00 }, /* 0xC2 ネ */ + { 0x40, 0x40, 0x20, 0x10, 0x08, 0x07, 0x00, 0x00 }, /* 0xC3 ノ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0c, 0x70, 0x00 }, /* 0xC4 ハ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x71, 0x00 }, /* 0xC5 バ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x72, 0x00 }, /* 0xC6 パ */ + { 0x00, 0x3f, 0x48, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0xC7 ヒ */ + { 0x00, 0x3f, 0x48, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0xC8 ビ */ + { 0x00, 0x3f, 0x48, 0x48, 0x4a, 0x45, 0x46, 0x00 }, /* 0xC9 ピ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xCA フ */ + { 0x00, 0x02, 0x42, 0x42, 0x23, 0x12, 0x0f, 0x00 }, /* 0xCB ブ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x15, 0x0e, 0x00 }, /* 0xCC プ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00 }, /* 0xCD ヘ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x21, 0x00 }, /* 0xCE ベ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x22, 0x00 }, /* 0xCF ペ */ + { 0x24, 0x14, 0x44, 0x7f, 0x04, 0x14, 0x24, 0x00 }, /* 0xD0 ホ */ + { 0x24, 0x14, 0x44, 0x7f, 0x05, 0x14, 0x25, 0x00 }, /* 0xD1 ボ */ + { 0x24, 0x14, 0x44, 0x7f, 0x06, 0x15, 0x22, 0x00 }, /* 0xD2 ポ */ + { 0x02, 0x02, 0x12, 0x22, 0x52, 0x0a, 0x06, 0x00 }, /* 0xD3 マ */ + { 0x00, 0x21, 0x25, 0x29, 0x4a, 0x42, 0x00, 0x00 }, /* 0xD4 ミ */ + { 0x40, 0x70, 0x4c, 0x43, 0x50, 0x20, 0x40, 0x00 }, /* 0xD5 ム */ + { 0x40, 0x44, 0x24, 0x14, 0x08, 0x37, 0x00, 0x00 }, /* 0xD6 メ */ + { 0x00, 0x08, 0x09, 0x3f, 0x49, 0x49, 0x48, 0x00 }, /* 0xD7 モ */ + { 0x00, 0x10, 0x1c, 0x68, 0x08, 0x18, 0x00, 0x00 }, /* 0xD8 ャ */ + { 0x04, 0x04, 0x0f, 0x74, 0x02, 0x0a, 0x06, 0x00 }, /* 0xD9 ヤ */ + { 0x00, 0x40, 0x48, 0x48, 0x78, 0x40, 0x00, 0x00 }, /* 0xDA ュ */ + { 0x20, 0x22, 0x22, 0x22, 0x3e, 0x20, 0x20, 0x00 }, /* 0xDB ユ */ + { 0x00, 0x00, 0x44, 0x54, 0x54, 0x7c, 0x00, 0x00 }, /* 0xDC ョ */ + { 0x00, 0x42, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x00 }, /* 0xDD ヨ */ + { 0x00, 0x04, 0x45, 0x45, 0x25, 0x15, 0x0c, 0x00 }, /* 0xDE ラ */ + { 0x00, 0x0f, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x00 }, /* 0xDF リ */ + { 0x40, 0x20, 0x1e, 0x00, 0x7f, 0x20, 0x10, 0x00 }, /* 0xE0 ル */ + { 0x00, 0x00, 0x7f, 0x40, 0x20, 0x10, 0x08, 0x00 }, /* 0xE1 レ */ + { 0x00, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xE2 ロ */ + { 0x00, 0x0c, 0x44, 0x44, 0x24, 0x1c, 0x00, 0x00 }, /* 0xE3 ヮ */ + { 0x00, 0x06, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xE4 ワ */ + { 0x10, 0x12, 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x00 }, /* 0xE5 ヰ */ + { 0x20, 0x22, 0x22, 0x3a, 0x26, 0x22, 0x20, 0x00 }, /* 0xE6 ヱ */ + { 0x00, 0x01, 0x45, 0x45, 0x25, 0x15, 0x0f, 0x00 }, /* 0xE7 ヲ */ + { 0x00, 0x41, 0x42, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xE8 ン */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xE9 ヴ */ + { 0x00, 0x48, 0x28, 0x1c, 0x48, 0x78, 0x00, 0x00 }, /* 0xEA ヵ */ + { 0x00, 0x10, 0x0c, 0x48, 0x38, 0x08, 0x00, 0x00 }, /* 0xEB ヶ */ + { 0x08, 0x04, 0x04, 0x08, 0x10, 0x10, 0x08, 0x00 }, /* 0xEC 〜 */ + { 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00 }, /* 0xED … */ + { 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0xEE ー */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 0xEF ― */ +}; + +#define MISAKI_FONT_F1_H +PROGMEM const uint8_t misaki_font_f1[ MISAKI_FONT_F1_SIZE + 1 ][ MISAKI_FONT_F1_W ] = +{ + { 0x00, 0x00, 0x00 }, /* 0x00 */ + { 0x00, 0x2f, 0x00 }, /* 0x01 ! */ + { 0x03, 0x00, 0x03 }, /* 0x02 " */ + { 0x3f, 0x12, 0x3f }, /* 0x03 # */ + { 0x16, 0x3f, 0x1a }, /* 0x04 $ */ + { 0x12, 0x08, 0x24 }, /* 0x05 % */ + { 0x32, 0x3d, 0x2a }, /* 0x06 & */ + { 0x02, 0x01, 0x00 }, /* 0x07 ' */ + { 0x00, 0x3e, 0x41 }, /* 0x08 ( */ + { 0x41, 0x3e, 0x00 }, /* 0x09 ) */ + { 0x0a, 0x07, 0x0a }, /* 0x0A * */ + { 0x08, 0x3e, 0x08 }, /* 0x0B + */ + { 0x40, 0x20, 0x00 }, /* 0x0C , */ + { 0x08, 0x08, 0x08 }, /* 0x0D - */ + { 0x00, 0x20, 0x00 }, /* 0x0E . */ + { 0x10, 0x08, 0x04 }, /* 0x0F / */ + { 0x1c, 0x2a, 0x1c }, /* 0x10 0 */ + { 0x24, 0x3e, 0x20 }, /* 0x11 1 */ + { 0x32, 0x2a, 0x24 }, /* 0x12 2 */ + { 0x22, 0x2a, 0x14 }, /* 0x13 3 */ + { 0x18, 0x14, 0x3e }, /* 0x14 4 */ + { 0x2e, 0x2a, 0x12 }, /* 0x15 5 */ + { 0x1c, 0x2a, 0x12 }, /* 0x16 6 */ + { 0x02, 0x3a, 0x06 }, /* 0x17 7 */ + { 0x14, 0x2a, 0x14 }, /* 0x18 8 */ + { 0x24, 0x2a, 0x1c }, /* 0x19 9 */ + { 0x00, 0x24, 0x00 }, /* 0x1A : */ + { 0x40, 0x24, 0x00 }, /* 0x1B ; */ + { 0x08, 0x14, 0x22 }, /* 0x1C < */ + { 0x14, 0x14, 0x14 }, /* 0x1D = */ + { 0x22, 0x14, 0x08 }, /* 0x1E > */ + { 0x02, 0x29, 0x06 }, /* 0x1F ? */ + { 0x12, 0x29, 0x1e }, /* 0x20 @ */ + { 0x3e, 0x09, 0x3e }, /* 0x21 A */ + { 0x3f, 0x25, 0x1a }, /* 0x22 B */ + { 0x1e, 0x21, 0x21 }, /* 0x23 C */ + { 0x3f, 0x21, 0x1e }, /* 0x24 D */ + { 0x3f, 0x25, 0x21 }, /* 0x25 E */ + { 0x3f, 0x05, 0x01 }, /* 0x26 F */ + { 0x1e, 0x21, 0x39 }, /* 0x27 G */ + { 0x3f, 0x08, 0x3f }, /* 0x28 H */ + { 0x21, 0x3f, 0x21 }, /* 0x29 I */ + { 0x10, 0x20, 0x1f }, /* 0x2A J */ + { 0x3f, 0x04, 0x3b }, /* 0x2B K */ + { 0x3f, 0x20, 0x20 }, /* 0x2C L */ + { 0x3f, 0x06, 0x3f }, /* 0x2D M */ + { 0x3f, 0x01, 0x3e }, /* 0x2E N */ + { 0x1e, 0x21, 0x1e }, /* 0x2F O */ + { 0x3f, 0x09, 0x06 }, /* 0x30 P */ + { 0x1e, 0x21, 0x5e }, /* 0x31 Q */ + { 0x3f, 0x09, 0x36 }, /* 0x32 R */ + { 0x22, 0x25, 0x19 }, /* 0x33 S */ + { 0x01, 0x3f, 0x01 }, /* 0x34 T */ + { 0x3f, 0x20, 0x3f }, /* 0x35 U */ + { 0x3f, 0x10, 0x0f }, /* 0x36 V */ + { 0x3f, 0x18, 0x3f }, /* 0x37 W */ + { 0x33, 0x0c, 0x33 }, /* 0x38 X */ + { 0x03, 0x3c, 0x03 }, /* 0x39 Y */ + { 0x31, 0x2d, 0x23 }, /* 0x3A Z */ + { 0x00, 0x7f, 0x41 }, /* 0x3B [ */ + { 0x15, 0x3e, 0x15 }, /* 0x3C \ */ + { 0x41, 0x7f, 0x00 }, /* 0x3D ] */ + { 0x02, 0x01, 0x02 }, /* 0x3E ^ */ + { 0x40, 0x40, 0x40 }, /* 0x3F _ */ + { 0x00, 0x01, 0x02 }, /* 0x40 ` */ + { 0x18, 0x24, 0x3c }, /* 0x41 a */ + { 0x3f, 0x24, 0x18 }, /* 0x42 b */ + { 0x18, 0x24, 0x24 }, /* 0x43 c */ + { 0x18, 0x24, 0x3f }, /* 0x44 d */ + { 0x18, 0x2c, 0x2c }, /* 0x45 e */ + { 0x04, 0x3f, 0x05 }, /* 0x46 f */ + { 0x48, 0x54, 0x3c }, /* 0x47 g */ + { 0x3f, 0x04, 0x38 }, /* 0x48 h */ + { 0x00, 0x3d, 0x00 }, /* 0x49 i */ + { 0x40, 0x3d, 0x00 }, /* 0x4A j */ + { 0x3f, 0x08, 0x34 }, /* 0x4B k */ + { 0x01, 0x3f, 0x00 }, /* 0x4C l */ + { 0x3c, 0x1c, 0x38 }, /* 0x4D m */ + { 0x3c, 0x04, 0x38 }, /* 0x4E n */ + { 0x18, 0x24, 0x18 }, /* 0x4F o */ + { 0x7c, 0x24, 0x18 }, /* 0x50 p */ + { 0x18, 0x24, 0x7c }, /* 0x51 q */ + { 0x3c, 0x08, 0x04 }, /* 0x52 r */ + { 0x28, 0x3c, 0x14 }, /* 0x53 s */ + { 0x04, 0x3e, 0x24 }, /* 0x54 t */ + { 0x3c, 0x20, 0x3c }, /* 0x55 u */ + { 0x3c, 0x10, 0x0c }, /* 0x56 v */ + { 0x3c, 0x30, 0x3c }, /* 0x57 w */ + { 0x24, 0x18, 0x24 }, /* 0x58 x */ + { 0x4c, 0x50, 0x3c }, /* 0x59 y */ + { 0x24, 0x34, 0x2c }, /* 0x5A z */ + { 0x08, 0x36, 0x41 }, /* 0x5B { */ + { 0x00, 0x7f, 0x00 }, /* 0x5C | */ + { 0x41, 0x36, 0x08 }, /* 0x5D } */ + { 0x01, 0x01, 0x01 }, /* 0x5E ~ */ + { 0x10, 0x28, 0x10 }, /* 0x5F 。 */ + { 0x1f, 0x01, 0x01 }, /* 0x60 「 */ + { 0x20, 0x20, 0x3e }, /* 0x61 」 */ + { 0x10, 0x20, 0x00 }, /* 0x62 、 */ + { 0x00, 0x08, 0x00 }, /* 0x63 ・ */ + { 0x25, 0x15, 0x0f }, /* 0x64 ヲ */ + { 0x24, 0x1c, 0x0c }, /* 0x65 ァ */ + { 0x10, 0x38, 0x04 }, /* 0x66 ィ */ + { 0x18, 0x0c, 0x38 }, /* 0x67 ゥ */ + { 0x28, 0x38, 0x28 }, /* 0x68 ェ */ + { 0x28, 0x18, 0x3c }, /* 0x69 ォ */ + { 0x08, 0x3c, 0x18 }, /* 0x6A ャ */ + { 0x28, 0x38, 0x20 }, /* 0x6B ュ */ + { 0x24, 0x2c, 0x3c }, /* 0x6C ョ */ + { 0x2c, 0x2c, 0x1c }, /* 0x6D ッ */ + { 0x04, 0x08, 0x08 }, /* 0x6E ー */ + { 0x21, 0x1d, 0x07 }, /* 0x6F ア */ + { 0x08, 0x3c, 0x03 }, /* 0x70 イ */ + { 0x06, 0x23, 0x1e }, /* 0x71 ウ */ + { 0x22, 0x3e, 0x22 }, /* 0x72 エ */ + { 0x12, 0x0a, 0x3f }, /* 0x73 オ */ + { 0x32, 0x0f, 0x3e }, /* 0x74 カ */ + { 0x0a, 0x3f, 0x0a }, /* 0x75 キ */ + { 0x24, 0x13, 0x0e }, /* 0x76 ク */ + { 0x27, 0x1e, 0x02 }, /* 0x77 ケ */ + { 0x22, 0x22, 0x3e }, /* 0x78 コ */ + { 0x27, 0x12, 0x0f }, /* 0x79 サ */ + { 0x25, 0x25, 0x10 }, /* 0x7A シ */ + { 0x21, 0x19, 0x27 }, /* 0x7B ス */ + { 0x3f, 0x22, 0x2e }, /* 0x7C セ */ + { 0x21, 0x16, 0x0f }, /* 0x7D ソ */ + { 0x24, 0x1b, 0x0e }, /* 0x7E タ */ + { 0x25, 0x1f, 0x05 }, /* 0x7F チ */ + { 0x26, 0x26, 0x1e }, /* 0x80 ツ */ + { 0x25, 0x1d, 0x05 }, /* 0x81 テ */ + { 0x3f, 0x04, 0x08 }, /* 0x82 ト */ + { 0x24, 0x1f, 0x04 }, /* 0x83 ナ */ + { 0x20, 0x22, 0x22 }, /* 0x84 ニ */ + { 0x25, 0x19, 0x27 }, /* 0x85 ヌ */ + { 0x12, 0x3b, 0x16 }, /* 0x86 ネ */ + { 0x20, 0x10, 0x0f }, /* 0x87 ノ */ + { 0x3c, 0x01, 0x3e }, /* 0x88 ハ */ + { 0x1f, 0x24, 0x24 }, /* 0x89 ヒ */ + { 0x21, 0x11, 0x0f }, /* 0x8A フ */ + { 0x0c, 0x03, 0x1c }, /* 0x8B ヘ */ + { 0x1a, 0x3f, 0x1a }, /* 0x8C ホ */ + { 0x09, 0x19, 0x27 }, /* 0x8D マ */ + { 0x22, 0x2a, 0x2a }, /* 0x8E ミ */ + { 0x38, 0x27, 0x30 }, /* 0x8F ム */ + { 0x32, 0x0c, 0x13 }, /* 0x90 メ */ + { 0x05, 0x3f, 0x25 }, /* 0x91 モ */ + { 0x02, 0x3f, 0x0e }, /* 0x92 ヤ */ + { 0x21, 0x3f, 0x20 }, /* 0x93 ユ */ + { 0x25, 0x25, 0x3f }, /* 0x94 ヨ */ + { 0x25, 0x25, 0x1d }, /* 0x95 ラ */ + { 0x07, 0x20, 0x1f }, /* 0x96 リ */ + { 0x3c, 0x3f, 0x20 }, /* 0x97 ル */ + { 0x3f, 0x20, 0x10 }, /* 0x98 レ */ + { 0x3e, 0x22, 0x3e }, /* 0x99 ロ */ + { 0x23, 0x11, 0x0f }, /* 0x9A ワ */ + { 0x21, 0x21, 0x18 }, /* 0x9B ン */ + { 0x01, 0x00, 0x01 }, /* 0x9C ゙ */ + { 0x02, 0x05, 0x02 }, /* 0x9D ゚ */ +}; +#define MISAKI_FONT_F2_H +PROGMEM const uint8_t misaki_font_f2[ MISAKI_FONT_F2_SIZE + 1 ][ MISAKI_FONT_F2_W ] = +{ + { 0x75, 0x40, 0x77, 0x55, 0x75, 0x77, 0x40 }, /* 0x00 温 */ + { 0x40, 0x3e, 0x4a, 0x5e, 0x2b, 0x5e, 0x4a }, /* 0x01 度 */ + { 0x6b, 0x62, 0x7f, 0x35, 0x2f, 0x35, 0x7f }, /* 0x02 調 */ + { 0x7c, 0x5b, 0x5e, 0x24, 0x7b, 0x0e, 0x3a }, /* 0x03 節 */ + { 0x04, 0x7e, 0x01, 0x7e, 0x4a, 0x5e, 0x69 }, /* 0x04 低 */ + { 0x06, 0x3a, 0x2f, 0x3f, 0x6b, 0x7e, 0x46 }, /* 0x05 電 */ + { 0x40, 0x3f, 0x41, 0x49, 0x7f, 0x49, 0x41 }, /* 0x06 圧 */ + { 0x02, 0x62, 0x6b, 0x6b, 0x6b, 0x62, 0x02 }, /* 0x07 言 */ + { 0x6a, 0x6b, 0x14, 0x7d, 0x57, 0x7d, 0x10 }, /* 0x08 語 */ + { 0x41, 0x3f, 0x55, 0x55, 0x3d, 0x57, 0x51 }, /* 0x09 戻 */ + { 0x21, 0x3f, 0x2d, 0x7f, 0x2a, 0x12, 0x2e }, /* 0x0A 取 */ + { 0x0a, 0x77, 0x5a, 0x50, 0x5a, 0x77, 0x0a }, /* 0x0B 替 */ + { 0x20, 0x24, 0x13, 0x7d, 0x55, 0x53, 0x70 }, /* 0x0C 名 */ + { 0x7a, 0x2a, 0x7b, 0x02, 0x1a, 0x43, 0x7a }, /* 0x0D 前 */ + { 0x4a, 0x52, 0x5e, 0x2b, 0x5e, 0x42, 0x4a }, /* 0x0E 変 */ + { 0x41, 0x5f, 0x35, 0x3f, 0x55, 0x5f, 0x41 }, /* 0x0F 更 */ + { 0x7d, 0x14, 0x57, 0x7d, 0x0e, 0x40, 0x7f }, /* 0x10 削 */ + { 0x7f, 0x1b, 0x54, 0x16, 0x7d, 0x16, 0x54 }, /* 0x11 除 */ + { 0x49, 0x3a, 0x40, 0x7e, 0x57, 0x56, 0x76 }, /* 0x12 追 */ + { 0x42, 0x3f, 0x42, 0x7e, 0x7e, 0x42, 0x7e }, /* 0x13 加 */ + { 0x04, 0x7e, 0x51, 0x37, 0x7d, 0x37, 0x50 }, /* 0x14 保 */ + { 0x12, 0x7a, 0x17, 0x52, 0x76, 0x1e, 0x12 }, /* 0x15 存 */ + { 0x7f, 0x55, 0x7f, 0x14, 0x5d, 0x7f, 0x55 }, /* 0x16 睡 */ + { 0x7f, 0x55, 0x7f, 0x7f, 0x55, 0x3d, 0x57 }, /* 0x17 眠 */ + { 0x7f, 0x55, 0x37, 0x78, 0x17, 0x45, 0x7f }, /* 0x18 閉 */ + { 0x7f, 0x2b, 0x7b, 0x28, 0x7b, 0x2b, 0x7f }, /* 0x19 開 */ + { 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x1e }, /* 0x1A 中 */ + { 0x7f, 0x41, 0x6b, 0x7f, 0x6b, 0x51, 0x7f }, /* 0x1B 国 */ + { 0x52, 0x5a, 0x57, 0x3a, 0x57, 0x5a, 0x52 }, /* 0x1C 英 */ + { 0x00, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x7f }, /* 0x1D 日 */ + { 0x22, 0x12, 0x2a, 0x7f, 0x2a, 0x12, 0x22 }, /* 0x1E 本 */ + { 0x16, 0x6a, 0x5e, 0x73, 0x56, 0x62, 0x16 }, /* 0x1F 密 */ + { 0x09, 0x37, 0x31, 0x5f, 0x15, 0x5f, 0x75 }, /* 0x20 碼 */ + { 0x42, 0x22, 0x1e, 0x0b, 0x4a, 0x7a, 0x02 }, /* 0x21 方 */ + { 0x7e, 0x02, 0x3a, 0x2b, 0x3a, 0x42, 0x7e }, /* 0x22 向 */ +}; +/* + プリセット + 温度調節 + タイマー + コントロール + スクリーン + ブザー + 低電圧アラーム + 言語 + 戻る + 取り替える + キャリブレーション + 名前を変更 + 削除 + 追加 + 保存 + デフォルト + 睡眠 + ブースト + 保存 + 睡眠 + 閉じる + ブースト + 保存 + ダイレクト + PID + ビッグ + ニュース + 閉じる + 開く + いいえ、 + はい、 + 中国語 + 英語 + いいえ、 + はい、 + メインスクリーン + フリップ + 保存 + アバウト + 日本語 + つまみ方向 + + 汉字转换表:温度調節低電圧言語戻取替名前変更削除追加保存睡眠閉開中国英日本密碼 +*/ +const char JP_0[] PROGMEM = { 0xf0, 0xcc, 0xdf, 0xb0, 0xb8, 0xbd, }; +const char JP_1[] PROGMEM = { 0xf2, 0x00, 0x01, 0x02, 0x03, }; +const char JP_2[] PROGMEM = { 0xf0, 0xb4, 0x99, 0xd3, 0xee, }; +const char JP_3[] PROGMEM = { 0xf0, 0xa8, 0xe8, 0xbd, 0xe2, 0xee, 0xe0, }; +const char JP_4[] PROGMEM = { 0xf0, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_5[] PROGMEM = { 0xf0, 0xcb, 0xab, 0xee, }; +const char JP_6[] PROGMEM = { 0xf2, 0x04, 0x05, 0x06, 0xf0, 0x97, 0xde, 0xee, 0xd5, }; +const char JP_7[] PROGMEM = { 0xf2, 0x07, 0x08, }; +const char JP_8[] PROGMEM = { 0xf2, 0x09, 0xf0, 0x8d, }; +const char JP_9[] PROGMEM = { 0xf2, 0x0a, 0xf0, 0x8c, 0xf2, 0x0b, 0xf0, 0x4a, 0x8d, }; +const char JP_10[] PROGMEM = { 0xf0, 0xa2, 0xd8, 0xdf, 0xcb, 0xe1, 0xee, 0xac, 0xdc, 0xe8, }; +const char JP_11[] PROGMEM = { 0xf2, 0x0c, 0x0d, 0xf0, 0x94, 0xf2, 0x0e, 0x0f, }; +const char JP_12[] PROGMEM = { 0xf2, 0x10, 0x11, }; +const char JP_13[] PROGMEM = { 0xf2, 0x12, 0x13, }; +const char JP_14[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_15[] PROGMEM = { 0xf0, 0xbc, 0xca, 0x9e, 0xe0, 0xbd, }; +const char JP_16[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_17[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_18[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_19[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_20[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_21[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_22[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_23[] PROGMEM = { 0xf0, 0xb5, 0x99, 0xe1, 0xa4, 0xbd, }; +const char JP_24[] PROGMEM = { 0xf1, 0x30, 0x29, 0x24, }; +const char JP_25[] PROGMEM = { 0xf0, 0xc8, 0xb8, 0xa5, }; +const char JP_26[] PROGMEM = { 0xf0, 0xc0, 0xda, 0xee, 0xae, }; +const char JP_27[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_28[] PROGMEM = { 0xf2, 0x19, 0xf0, 0x51, }; +const char JP_29[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_30[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_31[] PROGMEM = { 0xf2, 0x1a, 0x1b, 0x08, }; +const char JP_32[] PROGMEM = { 0xf2, 0x1c, 0x08, }; +const char JP_33[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_34[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_35[] PROGMEM = { 0xf0, 0xd6, 0x99, 0xe8, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_36[] PROGMEM = { 0xf0, 0xca, 0xdf, 0xb8, 0xcc, }; +const char JP_37[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_38[] PROGMEM = { 0xf0, 0x97, 0xc5, 0x9b, 0xbd, }; +const char JP_39[] PROGMEM = { 0xf2, 0x1d, 0x1e, 0x08, }; +const char JP_40[] PROGMEM = { 0xf2, 0x1f, 0x20, }; //密码 +const char JP_41[] PROGMEM = { 0xf0, 0x66, 0x80, 0x81, 0xf2, 0x21, 0x22, }; //つまみ方向 +const char *const JP_table[] = {JP_0, JP_1, JP_2, JP_3, JP_4, JP_5, JP_41, JP_6, JP_40, JP_7, JP_38, JP_8, JP_9, JP_10, JP_11, JP_12, JP_13, JP_14, JP_15, JP_16, JP_17, JP_18, JP_19, JP_20, JP_21, JP_22, JP_23, JP_24, JP_25, JP_26, JP_27, JP_28, JP_29, JP_30, JP_31, JP_32, JP_39, JP_35, JP_36, JP_37,}; +const char JP_Length_table[] PROGMEM = {6, 5, 5, 7, 6, 4, 7, 9, 3, 3 , 5, 4, 9, 10, 8, 3, 3, 3, 6, 3, 5, 3, 3, 5, 5, 3, 6, 4, 4, 5, 5, 4, 5, 4, 4, 3, 4, 9, 5, 3,}; + +#endif + +bool lastbutton; +#include //注意 这里使用被阉割的图形库,只有绘图功能,并非通用的版本 +Arduboy2 arduboy; + +#include +#include +#include + +// Firmware version +#define VERSION "v1.8t2" + +// Type of rotary encoder +#define ROTARY_TYPE 1 // 0: 2 increments/step; 1: 4 increments/step + +// Pins +#define SENSOR_PIN A0 // temperature sense +#define VIN_PIN A1 // input voltage sense +#define BUZZER_PIN 5 // buzzer +#define BUTTON_PIN 6 // rotary encoder switch +#define ROTARY_1_PIN 7 // rotary encoder 1 +#define ROTARY_2_PIN 8 // rotary encoder 2 +#define CONTROL_PIN 9 // heater MOSFET PWM control +#define SWITCH_PIN 10 // handle vibration switch + +// Default temperature control values (recommended soldering temperature: 300-380°C) +#define ChipTempCalVal 335 //芯片内部温度读取校准值 -->可以根据实际情况修改,不同机器情况不同,通常误差在10°C内 +#define TEMP_MIN 150 // min selectable temperature +#define TEMP_MAX 400 // max selectable temperature +#define TEMP_DEFAULT 320 // default start setpoint +#define TEMP_SLEEP 150 // temperature in sleep mode +#define TEMP_BOOST 60 // temperature increase in boost mode +#define TEMP_STEP 10 // rotary encoder temp change steps + +// Default tip temperature calibration values +#define TEMP200 216 // temperature at ADC = 200 +#define TEMP280 308 // temperature at ADC = 280 +#define TEMP360 390 // temperature at ADC = 360 +#define TEMPCHP 30 // chip temperature while calibration +#define TIPMAX 8 // max number of tips +#define TIPNAMELENGTH 6 // max length of tip names (including termination) +#define TIPNAME "BC1.5" // default tip name + +// Default timer values (0 = disabled) +#define TIME2SLEEP 5 // time to enter sleep mode in minutes +#define TIME2OFF 15 // time to shut off heater in minutes +#define TIMEOFBOOST 40 // time to stay in boost mode in seconds + +// Control values +#define TIME2SETTLE 950 // time in microseconds to allow OpAmp output to settle +#define SMOOTHIE 0.05 // OpAmp output smooth factor (1=no smoothing; 0.05 default) +#define PID_ENABLE true // enable PID control +#define BEEP_ENABLE true // enable/disable buzzer +#define MAINSCREEN 1 // type of main screen (0: big numbers; 1: more infos) + +// EEPROM identifier +#define EEPROM_IDENT 0x140A // to identify if EEPROM was written by this program + +//Beep +#define SetBeepCoolTime 200 +unsigned long BeepCoolTime; + +// Define the aggressive and conservative PID tuning parameters +double aggKp = 11, aggKi = 0.5, aggKd = 1; +double consKp = 11, consKi = 3, consKd = 5; + +// Default values that can be changed by the user and stored in the EEPROM +uint16_t DefaultTemp = TEMP_DEFAULT; +uint16_t SleepTemp = TEMP_SLEEP; +uint8_t BoostTemp = TEMP_BOOST; +uint8_t time2sleep = TIME2SLEEP; +uint8_t time2off = TIME2OFF; +uint8_t timeOfBoost = TIMEOFBOOST; +uint8_t MainScrType = MAINSCREEN; +bool PIDenable = PID_ENABLE; +bool beepEnable = BEEP_ENABLE; +// Default values for tips +uint16_t CalTemp[TIPMAX][4] = {TEMP200, TEMP280, TEMP360, TEMPCHP}; +char TipName[TIPMAX][TIPNAMELENGTH] = {TIPNAME}; +uint8_t CurrentTip = 0; +uint8_t NumberOfTips = 1; + +// Menu items +/* + 这个可以选择进行界面美化 + const char *DeleteMessage[] = { "Warning", "You cannot", "delete your", "last tip!" }; + const char *MaxTipMessage[] = { "Warning", "You reached", "maximum number", "of tips!" }; +*/ +// Variables for pin change interrupt +volatile uint8_t a0, b0, c0, d0; +volatile bool ab0; +volatile int count, countMin, countMax, countStep; +volatile bool handleMoved; + +// Variables for temperature control +uint16_t SetTemp, ShowTemp, gap, Step; +double Input, Output, Setpoint, RawTemp, CurrentTemp, ChipTemp; + +// Variables for voltage readings +uint16_t Vcc, Vin; + +// State variables +bool inSleepMode = false; +bool inOffMode = false; +bool inBoostMode = false; +bool inCalibMode = false; +bool isWorky = true; +bool beepIfWorky = true; +bool TipIsPresent = true; +bool FlipState = false; +// Timing variables +uint32_t sleepmillis; +uint32_t boostmillis; +uint32_t buttonmillis; +uint8_t goneMinutes; +uint8_t goneSeconds; +uint8_t SensorCounter = 255; +//串口助手 +int x, y, a, b; +//欠压报警 +byte UnderVoltage = 0; +// Control variables +uint16_t time2settle = 300; + +//模拟数字滚轮 Numerical scrolling effect +int Value; +int LastValue[3]; +float SlidingAnimationY[3]; + +//开机密码 BootPassword +int Password = 0; + +//屏幕保护-主题:密集运算 +byte Line[4]; + +//编码器旋转调整方向设定 +bool RotaryD = false; +// Specify the links and initial PID tuning parameters +PID ctrl(&Input, &Output, &Setpoint, aggKp, aggKi, aggKd, REVERSE); + + + +//LANG 语言支持 +/* 0 - 中文 CHINESE + 1 - 英文 ENGLISH + 2 - 日语 +*/ +byte LANG = 0; +void Flip(bool Fmode) { + arduboy.flipVertical(Fmode); + arduboy.flipHorizontal(Fmode); +} +void setup() { + arduboy.begin(); + arduboy.setFrameRate(30); + + //Serial.begin(115200); + // set the pin modes + pinMode(SENSOR_PIN, INPUT); + pinMode(VIN_PIN, INPUT); + pinMode(BUZZER_PIN, OUTPUT); + pinMode(CONTROL_PIN, OUTPUT); + pinMode(ROTARY_1_PIN, INPUT_PULLUP); + pinMode(ROTARY_2_PIN, INPUT_PULLUP); + pinMode(BUTTON_PIN, INPUT_PULLUP); + pinMode(SWITCH_PIN, INPUT_PULLUP); + + analogWrite(CONTROL_PIN, 255); // this shuts off the heater + digitalWrite(BUZZER_PIN, LOW); // must be LOW when buzzer not in use + + // setup ADC + ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2); // set ADC prescaler to 128 + ADCSRA |= bit (ADIE); // enable ADC interrupt + interrupts (); // enable global interrupts + + // setup pin change interrupt for rotary encoder + PCMSK0 = bit (PCINT0); // Configure pin change interrupt on Pin8 + PCICR = bit (PCIE0); // Enable pin change interrupt + PCIFR = bit (PCIF0); // Clear interrupt flag + + + // get default values from EEPROM + getEEPROM(); + //设置屏幕反转状态 + Flip(FlipState); + //初始化屏幕保护动画 + for (byte a = 0; a < 4; a++) Line[a] = 32 * a; + //开机密码 + BootPassword(); + + // read supply voltages in mV + Vcc = getVCC(); Vin = getVIN(); + + // read and set current iron temperature + SetTemp = DefaultTemp; + RawTemp = denoiseAnalog(SENSOR_PIN); + ChipTemp = getChipTemp(); + calculateTemp(); + + // turn on heater if iron temperature is well below setpoint + if ((CurrentTemp + 20) < DefaultTemp) analogWrite(CONTROL_PIN, 0); + + // tell the PID to range between 0 and the full window size + ctrl.SetOutputLimits(0, 255); + + // start PID + ctrl.SetMode(AUTOMATIC); + + // set initial rotary encoder values + a0 = PINB & 1; b0 = PIND >> 7 & 1; ab0 = (a0 == b0); + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + + // reset sleep timer + sleepmillis = millis(); + + // long beep for setup completion + beep(); beep(); + +} + + +void loop() { + //HelpMeSerialer(); + ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu) + SLEEPCheck(); // check and activate/deactivate sleep modes + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + MainScreen(); // updates the main page on the OLED + //beep(0); +} + + + + +// check rotary encoder; set temperature, toggle boost mode, enter setup menu accordingly +void ROTARYCheck() { + // set working temperature according to rotary encoder value + SetTemp = getRotary(); + + // check rotary encoder switch + uint8_t c = digitalRead(BUTTON_PIN); + if ( !c && c0 ) { + beep(); + buttonmillis = millis(); + while ( (!digitalRead(BUTTON_PIN)) && ((millis() - buttonmillis) < 500) ); + if ((millis() - buttonmillis) >= 500) SetupScreen(); + else { + inBoostMode = !inBoostMode; + if (inBoostMode) boostmillis = millis(); + handleMoved = true; + } + } + c0 = c; + + // check timer when in boost mode + if (inBoostMode && timeOfBoost) { + goneSeconds = (millis() - boostmillis) / 1000; + if (goneSeconds >= timeOfBoost) { + inBoostMode = false; // stop boost mode + beep(); // beep if boost mode is over + beepIfWorky = true; // beep again when working temperature is reached + } + } +} + + +// check and activate/deactivate sleep modes +void SLEEPCheck() { + if (handleMoved) { // if handle was moved + if (inSleepMode) { // in sleep or off mode? + if ((CurrentTemp + 20) < SetTemp) // if temp is well below setpoint + analogWrite(CONTROL_PIN, 0); // then start the heater right now + beep(); // beep on wake-up + beepIfWorky = true; // beep again when working temperature is reached + } + handleMoved = false; // reset handleMoved flag + inSleepMode = false; // reset sleep flag + inOffMode = false; // reset off flag + sleepmillis = millis(); // reset sleep timer + } + + // check time passed since the handle was moved + goneMinutes = (millis() - sleepmillis) / 60000; + if ( (!inSleepMode) && (time2sleep > 0) && (goneMinutes >= time2sleep) ) { + inSleepMode = true; + beep(); + } + if ( (!inOffMode) && (time2off > 0) && (goneMinutes >= time2off ) ) { + inOffMode = true; + beep(); + } +} + + +// reads temperature, vibration switch and supply voltages +void SENSORCheck() { + analogWrite(CONTROL_PIN, 255); // shut off heater in order to measure temperature + delayMicroseconds(time2settle); // wait for voltage to settle + + uint16_t temp = denoiseAnalog(SENSOR_PIN); // read ADC value for temperature + uint8_t d = digitalRead(SWITCH_PIN); // check handle vibration switch + if (d != d0) { + handleMoved = true; // set flag if handle was moved + d0 = d; + } + if (! SensorCounter--) Vin = getVIN(); // get Vin every now and then + + analogWrite(CONTROL_PIN, Output); // turn on again heater + + RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading + calculateTemp(); + + // stabilize displayed temperature when around setpoint + if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp; + if (abs(ShowTemp - Setpoint) <= 1) ShowTemp = Setpoint; + // set state variable if temperature is in working range; beep if working temperature was just reached + gap = abs(SetTemp - CurrentTemp); + if (gap < 5) { + if (!isWorky && beepIfWorky) beep(); + isWorky = true; + beepIfWorky = false; + } + else isWorky = false; + // checks if tip is present or currently inserted + if (ShowTemp > 500) TipIsPresent = false; // tip removed ? + if (!TipIsPresent && (ShowTemp < 500)) { // new tip inserted ? + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); // beep for info + TipIsPresent = true; // tip is present now + ChangeTipScreen(); // show tip selection screen + updateEEPROM(); // update setting in EEPROM + handleMoved = true; // reset all timers + RawTemp = denoiseAnalog(SENSOR_PIN); // restart temp smooth algorithm + c0 = LOW; // switch must be released + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder + } +} + + +// calculates real temperature value according to ADC reading and calibration values +void calculateTemp() { + if (RawTemp < 200) CurrentTemp = map (RawTemp, 0, 200, 21, CalTemp[CurrentTip][0]); + else if (RawTemp < 280) CurrentTemp = map (RawTemp, 200, 280, CalTemp[CurrentTip][0], CalTemp[CurrentTip][1]); + else CurrentTemp = map (RawTemp, 280, 360, CalTemp[CurrentTip][1], CalTemp[CurrentTip][2]); +} + + +//调温 +void Thermostat() { + // define Setpoint acoording to current working mode + if (inOffMode) Setpoint = 0; + else if (inSleepMode) Setpoint = SleepTemp; + else if (inBoostMode) Setpoint = SetTemp + BoostTemp; + else Setpoint = SetTemp; + + // control the heater (PID or direct) + gap = abs(Setpoint - CurrentTemp); + if (PIDenable) { + Input = CurrentTemp; + if (gap < 30) ctrl.SetTunings(consKp, consKi, consKd); + else ctrl.SetTunings(aggKp, aggKi, aggKd); + ctrl.Compute(); + } else { + // turn on heater if current temperature is below setpoint + if ((CurrentTemp + 0.5) < Setpoint) Output = 0; else Output = 255; + } + analogWrite(CONTROL_PIN, Output); // set heater PWM +} + + +// creates a short beep on the buzzer +void beep() { + /* + if (beepEnable) { + if (BeepCoolTime + SetBeepCoolTime < millis()) { + if (state) BeepCoolTime = millis(); + analogWrite(BUZZER_PIN, 0); + } else analogWrite(BUZZER_PIN, 127); + } else analogWrite(BUZZER_PIN, 0); + */ + //体谅一下,没内存了,只能用原始的办法驱动无源蜂鸣器,否则我也不想牺牲宝贵响应资源换内存 + if (beepEnable) { + for (uint8_t i = 0; i < 255; i++) { + digitalWrite(BUZZER_PIN, HIGH); + delayMicroseconds(125); + digitalWrite(BUZZER_PIN, LOW); + delayMicroseconds(125); + } + } +} + +//设置旋转编码器的起始值 +// sets start values for rotary encoder +void setRotary(int rmin, int rmax, int rstep, int rvalue) { + countMin = rmin << ROTARY_TYPE; + countMax = rmax << ROTARY_TYPE; + if (RotaryD) countStep = rstep; else countStep = -rstep; + count = rvalue << ROTARY_TYPE; +} + + +// reads current rotary encoder value +int getRotary() { + return (count >> ROTARY_TYPE); +} + + +// reads user settings from EEPROM; if EEPROM values are invalid, write defaults +void getEEPROM() { + uint16_t identifier = (EEPROM.read(0) << 8) | EEPROM.read(1); + if (identifier == EEPROM_IDENT) { + DefaultTemp = (EEPROM.read(2) << 8) | EEPROM.read(3); + SleepTemp = (EEPROM.read(4) << 8) | EEPROM.read(5); + BoostTemp = EEPROM.read(6); + time2sleep = EEPROM.read(7); + time2off = EEPROM.read(8); + timeOfBoost = EEPROM.read(9); + MainScrType = EEPROM.read(10); + PIDenable = EEPROM.read(11); + beepEnable = EEPROM.read(12); + CurrentTip = EEPROM.read(13); + NumberOfTips = EEPROM.read(14); + LANG = EEPROM.read(15); + FlipState = EEPROM.read(16); + UnderVoltage = EEPROM.read(17); + Password = (EEPROM.read(18) << 8) | EEPROM.read(19); + RotaryD = EEPROM.read(20); + uint8_t i, j; + uint16_t counter = 21; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) { + TipName[i][j] = EEPROM.read(counter++); + } + for (j = 0; j < 4; j++) { + CalTemp[i][j] = EEPROM.read(counter++) << 8; + CalTemp[i][j] |= EEPROM.read(counter++); + } + } + } + else { + EEPROM.update(0, EEPROM_IDENT >> 8); EEPROM.update(1, EEPROM_IDENT & 0xFF); + updateEEPROM(); + } +} + + +// writes user settings to EEPROM using updade function to minimize write cycles +void updateEEPROM() { + EEPROM.update( 2, DefaultTemp >> 8); + EEPROM.update( 3, DefaultTemp & 0xFF); + EEPROM.update( 4, SleepTemp >> 8); + EEPROM.update( 5, SleepTemp & 0xFF); + EEPROM.update( 6, BoostTemp); + EEPROM.update( 7, time2sleep); + EEPROM.update( 8, time2off); + EEPROM.update( 9, timeOfBoost); + EEPROM.update(10, MainScrType); + EEPROM.update(11, PIDenable); + EEPROM.update(12, beepEnable); + EEPROM.update(13, CurrentTip); + EEPROM.update(14, NumberOfTips); + EEPROM.update(15, LANG); + EEPROM.update(16, FlipState); + EEPROM.update(17, UnderVoltage); + EEPROM.update(18, Password >> 8); + EEPROM.update(19, Password & 0xFF); + EEPROM.update(20, RotaryD); + uint8_t i, j; + uint16_t counter = 21; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) EEPROM.update(counter++, TipName[i][j]); + for (j = 0; j < 4; j++) { + EEPROM.update(counter++, CalTemp[i][j] >> 8); + EEPROM.update(counter++, CalTemp[i][j] & 0xFF); + } + } +} +//此片段用于DEBUG +void HelpMeSerialer() { + //串口助手 + if (Serial.available()) { + char TmpChar = Serial.read(); + switch (TmpChar) { + case 'x': x = Serial.parseInt(); + case 'y': y = Serial.parseInt(); + case 'a': a = Serial.parseInt(); + case 'b': b = Serial.parseInt(); + } + } + /* + Serial.println(String("X ->") + x); + Serial.println(String("Y ->") + y); + Serial.println(String("A ->") + a); + Serial.println(String("B ->") + b); + */ +} +// draws the main screen +void MainScreen() { + if (!(arduboy.nextFrame())) //帧率锁 + return; + //状态 + byte SysState; + if (ShowTemp > 500) SysState = 0; + else if (inOffMode) { + SysState = 1; + DrawIntensiveComputing(); + } else if (inSleepMode) SysState = 2; + else if (inBoostMode) SysState = 3; + else if (isWorky) SysState = 4; + else if (Output < 180) SysState = 5; + else SysState = 6; + if (SysState != 1) { + if (MainScrType) { + //arduboy.invert(0); + arduboy.clear(); + //详细信息页 + arduboy.fillRect(0, 0, 128, 64, 1); //白底 + arduboy.setTextSize(1); + SetTextColor(0); + //预设名 + arduboy.drawSlowXYBitmap(0, 0, Tag, 16, 16, 0); + arduboy.setCursor(19, 4); arduboy.print(TipName[CurrentTip]); + //显示状态 + arduboy.setCursor(53, 1); + arduboy.setTextSize(2); + switch (LANG) { + case 0: arduboy.drawSlowXYBitmap(80, 1, S_table[SysState], 28, 14, 0); break; //中文 Chinese + default: //英文 English + switch (SysState) { + case 1: arduboy.print(F("OFF")); break; + case 2: arduboy.print(F("SLEEP")); break; + case 3: arduboy.print(F("BOOST")); break; + case 4: arduboy.print(F("WORKY")); break; + case 5: arduboy.print(F("HEAT")); break; + case 6: arduboy.print(F("HOLD")); break; + default: arduboy.print(F("ERROR")); break; + } break; + } + arduboy.drawSlowXYBitmap(113, 1, C_table[SysState], 14, 14, 0); + arduboy.setTextSize(1); + //芯片 + //R1 + + //自动报警-图标闪烁 + if (getChipTemp() < 80 || ((millis() * 4) / 1000) % 2) { + arduboy.setCursor(19, 16); arduboy.print(getChipTemp(), 1); arduboy.print((char)248); arduboy.print(F("C")); //芯片温度 + arduboy.drawSlowXYBitmap(2, 18, Chip, 14, 14, 0); + } + //R2 + if ((float)Vin / 100 > UnderVoltage || ((millis() * 4) / 1000) % 2) { + arduboy.setCursor(19, 32); arduboy.print((float)Vin / 1000, 1); arduboy.print(F("V")); //输入电压 + arduboy.drawSlowXYBitmap(2, 34, Lightning, 14, 14, 0); + } + + + //R3 + + arduboy.setCursor(19, 24); arduboy.print((float)getVCC() / 1000, 2); arduboy.print(F("V")); //芯片电压 + + arduboy.setCursor(19, 40); arduboy.print(F(VERSION)); //固件 + //显示探头温度 + DrawNumRect(ShowTemp); + + DrawStatusBar(0); + arduboy.display(); + //警报声 + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2 || (float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); + } else { + //arduboy.invert(1); + arduboy.setTextSize(6); + SetTextColor(1); + arduboy.clear(); + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); + arduboy.setCursor(12, 2); + + if (ShowTemp > 500) arduboy.print(999); else arduboy.print(ShowTemp); + arduboy.fillRect(0, 48, 128, 16, 1); + + DrawStatusBar(0); + arduboy.display(); + } + } +} +void DrawNumRect(int n) { + arduboy.setCursor(57, 18); + arduboy.setTextSize(4); + if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(n); + arduboy.drawRect(55, 16, 72, 32, 0); +} +void DrawStatusBar(bool color) { + SetTextColor(color); + arduboy.setTextSize(1); + //温度条 + //框 + arduboy.drawRect(1, 49, 102, 14, color); + //条 + if (ShowTemp <= 500) arduboy.fillRect(1, 49, map(ShowTemp, 0, 500, 2, 102), 14, color); + //指示部分 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 2, 50, 3, 13, color); + //先来个白底 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 3, 60, 5, 4, color); + arduboy.drawLine(map(Setpoint, 0, 500, 2, 102) - 1, 60, map(Setpoint, 0, 500, 2, 102) - 1, 49, !color); + + //画指示针 + arduboy.drawSlowXYBitmap(map(Setpoint, 0, 500, 2, 102) - 3, 59, Pointer, 5, 4, !color); + + //功率条 + arduboy.drawRect(104, 49, 23, 14, color); + arduboy.fillRect(104, 49, map(Output, 255, 0, 0, 23), 14, color); + + SetTextColor(!color); + //////////////进入反色//////////////////////////////// + arduboy.setCursor(2, 55); arduboy.print(Setpoint, 0); arduboy.print((char)248); arduboy.print(F("C")); //探头预设温度 + arduboy.setCursor(105, 55); arduboy.print(map(Output, 255, 0, 0, 100)); arduboy.print(F("%")); //功率百分比 + SetTextColor(color); +} + +//设置画笔颜色 +void SetTextColor(bool color) { + arduboy.setTextBackground(!color); + arduboy.setTextColor(color); +} +// setup screen +void SetupScreen() { + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); + uint16_t SaveSetTemp = SetTemp; + uint8_t selection = 0; + bool repeat = true; + + while (repeat) { + //arduboy.invert(0); + MenuLevel = 0; //默认打开主菜单 + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 1; TipScreen(); repeat = false; break; + case 1: MenuLevel = 2; TempScreen(); break; + case 2: MenuLevel = 3; TimerScreen(); break; + case 3: MenuLevel = 4; PIDenable = MenuScreen(PIDenable); break; + case 4: ScreenSet(); break; + case 5: MenuLevel = 6; beepEnable = MenuScreen(beepEnable); break; + case 6: RotarySet(); break; + case 7: UnderVoltageSet(); break; + case 8: PasswordSet(); break; + case 9: MenuLevel = 8; LANG = MenuScreen(LANG); if (LANG == 2 && !LANG_JP_State) LANG = 1; break; + case 10: QRcodeScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); + handleMoved = true; + SetTemp = SaveSetTemp; + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); +} + +void RotarySet() { + bool Exit = false; + float rad; + byte ExitBar = 0; + SetTextColor(0); + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(60, 420, 18, 240); + do { + arduboy.setTextSize(1); + Setpoint = getRotary(); + ShowTemp = Setpoint; + + + arduboy.clear(); + //仪表盘 + arduboy.fillRect(0, 0, 128, 64, 1); + arduboy.fillTriangle(24 + 24 * cos(rad), 24 - 24 * sin(rad), 24 + 3 * sin(rad), 24 + 3 * cos(rad), 24 - 3 * sin(rad), 24 - 3 * cos(rad), 0); + arduboy.drawCircle(24, 24, 22, 0); + arduboy.drawCircle(24, 24, 19, 0); + arduboy.drawCircle(24, 24, 3, 0); + //右上角的模式提示文本 + arduboy.setCursor(55, 1); + arduboy.setTextSize(2); + arduboy.print(F("MODE ")); + if (RotaryD) { + arduboy.print(F("-")); + rad = ((Setpoint - 60) / 360.0) * (2 * PI) - PI / 2; + } else { + arduboy.print(F("+")); + rad = ((-Setpoint - 60) / 360.0) * (2 * PI) + PI * 1 / 6; + } + //右侧数字显示 + DrawNumRect(ShowTemp); + //下端的状态条 + DrawStatusBar(0); + //退出条 + arduboy.fillRect(0, 0, ExitBar, 4, 0); + + arduboy.display(); + + + CheckLastButton(); + if (!digitalRead(BUTTON_PIN) && !lastbutton) { + + ExitBar += 8; + if (ExitBar > 127) Exit = true; + } else { + if (ExitBar > 1 && ExitBar < 64) { + RotaryD = !RotaryD; + setRotary(60, 420, 18, 240); + } + ExitBar = 0; + } + + } while (!Exit); + +} +//显示设置菜单 +// tip settings screen +void ScreenSet() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 9; + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 5; MainScrType = MenuScreen(MainScrType); break; + case 1: FlipState = !FlipState; break; + default: repeat = false; break; + } + Flip(FlipState); //设置屏幕反转状态 + } + updateEEPROM(); +} + +//预设设置菜单 +// tip settings screen +void TipScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 1; + selection = MenuScreen(selection); + switch (selection) { + case 0: ChangeTipScreen(); break; + case 1: CalibrationScreen(); break; + case 2: InputNameScreen(); break; + case 3: DeleteTipScreen(); break; + case 4: AddTipScreen(); break; + default: repeat = false; break; + } + } +} + +//温控设置菜单 +// temperature settings screen +void TempScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + DefaultTemp = InputScreen(18); break; + case 1: setRotary(20, 200, TEMP_STEP, SleepTemp); + SleepTemp = InputScreen(19); break; + case 2: setRotary(10, 100, TEMP_STEP, BoostTemp); + BoostTemp = InputScreen(20); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} + +//定时器设置菜单 +// timer settings screen +void TimerScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(0, 30, 1, time2sleep); + time2sleep = InputScreen(22); break; + case 1: setRotary(0, 60, 5, time2off); + time2off = InputScreen(23); break; + case 2: setRotary(0, 180, 10, timeOfBoost); + timeOfBoost = InputScreen(24); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} +//英语支持 +void Print_EN(byte i) { + char buffer[11]; + strcpy_P(buffer, (char *)pgm_read_word(&(EN_table[i]))); + arduboy.print(buffer); +} +//菜单界面 +// menu screen +uint8_t MenuScreen(uint8_t selected) { + int SlidingAnimationX; + uint8_t lastselected = selected; + setRotary(0, Menu_table[MenuLevel] - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + SetTextColor(1); + do { + selected = getRotary(); + //非线性滑动动画 + SlidingAnimationX += (selected - lastselected) * 56; + if (SlidingAnimationX != 0) SlidingAnimationX += 0.6 * (-SlidingAnimationX); + lastselected = selected; + arduboy.clear(); + //绘制图标 如果有指定的话 + for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject()); + DrawAppText(selected + QueryMenuObject()); + + arduboy.display(); + CheckLastButton(); + //beep(0); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return selected; +} +//显示APP图标 +void DrawApp(int x, byte appID) { + DrawUIFrame(x, 0, 1); + drawSlowXYBitmapResize(x + 3, 3, Ico_table[appID], 14, 14, 3, 1); +} +//显示APP对应的文本 +void DrawAppText(byte appID) { + // arduboy.setCursor(0, 55); arduboy.print(appID); + if (LANG == 0) arduboy.drawSlowXYBitmap(48, 48, CN_table[appID], 36, 16, 1); else if (LANG == 2 && LANG_JP_State) { +#if LANG_JP_State + drawText(48, 52, JP_table[appID], pgm_read_byte(&(JP_Length_table[appID]))); +#endif + } else { + arduboy.setCursor(48, 52); + arduboy.setTextSize(1); + Print_EN(appID); + } +} +void DrawUIFrame(int x, int y, bool color) { + arduboy.fillRect(x, y, 48, 48, color); + arduboy.fillRect(x + 3, y + 3, 42, 42, !color); //雕空 + DrawPoint(x, y, 0); + DrawPoint(x + 47, y, 0); + DrawPoint(x, y + 47, 0); + DrawPoint(x + 47, y + 47, 0); +} +void DrawPoint(int x, int y, bool color) { + arduboy.drawPixel(x + 1, y, color); + arduboy.drawPixel(x - 1, y, color); + arduboy.drawPixel(x, y + 1, color); + arduboy.drawPixel(x, y - 1, color); + arduboy.drawPixel(x, y, color); +} +//检查按键 +void CheckLastButton() { + if (lastbutton && digitalRead(BUTTON_PIN)) { + delay(10); + lastbutton = false; + } +} +//返回对应层数的对象数 +byte QueryMenuObject() { + int SUM = 0; + for (int i = 0; i < (MenuLevel); i++) SUM += Menu_table[i]; + return SUM; +} +//信息窗 +/* + void MessageScreen(const char *Items[], uint8_t numberOfItems) { + lastbutton = (!digitalRead(BUTTON_PIN)); + + //u8g.setFont(//u8g_font_9x15); + //u8g.setFontPosTop(); + for (uint8_t i = 0; i < numberOfItems; i++) //u8g.drawStr( 0, i * 16, Items[i]); + + do { + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + } +*/ +/* + 好看是好看,但是浪费内存 + int wav(byte wavi, int num) { + return (wavi + byte(millis() / 100)) * (float(float(num - countMin) / float(countMax - countMin)) - 0.5) * 5; + } +*/ +//FP 密集运算屏保 +void DrawIntensiveComputing() { + analogWrite(CONTROL_PIN, 255); //关闭MOS管 + float calculate; + // while (1) { + arduboy.clear(); + + //随机线条 + DrawIntensiveComputingLine(); + + calculate = sin(millis() / 4000.0); + //模拟噪点 + for (int i = 0; i < calculate * 256 + 256; i++) arduboy.drawPixel(random(0, 128), random(0, 64), 1); + //声效 + if ((beepEnable)) analogWrite(BUZZER_PIN, 64 + calculate * 64 + random(-8, 8)); + //if ((beepEnable)) tone(BUZZER_PIN, int(calculate * 300) + 500 + random(-50, 50)); //没必要浪费内存 + + arduboy.display(); + //delay(60-calculate*30); + //} +} +//绘制屏保-密集运算线条 +void DrawIntensiveComputingLine() { + for (byte a = 0; a < 4; a++) { + Line[a] += random(-1, 1); + if (Line[a] > 128) Line[a] -= 128; + for (byte b = 0; b < random(3, 6); b++) { + arduboy.drawFastHLine(0, Line[a] + random(-10, 10), 128, 1); //水平线 + arduboy.drawFastVLine(Line[a] + random(-10, 10), 0, 64, 1); //垂直线 + } + } +} +//模拟数字滚轮 Numerical scrolling effect +void DisplayNum(int Num) { + arduboy.setTextSize(6); + SetTextColor(0); + //数字滚轮 + for (byte i = 0; i < 3; i++) LastValue[i] = int(Value / pow(10, 2 - i)) % 10; + Value = Num; + for (byte i = 0; i < 3; i++) { + SlidingAnimationY[i] += ((int(Value / pow(10, 2 - i)) % 10) - LastValue[i]) * 50; + if (SlidingAnimationY[i] != 0) SlidingAnimationY[i] += 0.8 * (-SlidingAnimationY[i]); + arduboy.fillRect(0 + i * 44, 0, 38, 50, 1); //白底 + for (int ii = -1; ii < 2; ii++) { + arduboy.setCursor(4 + i * 44, 4 - SlidingAnimationY[i] + ii * 50); + arduboy.print(LastValue[i] + ii); + } + } + //刻度标 + arduboy.fillRect(0, 0, 128, 2, 0); //上遮罩层 + arduboy.fillRect(0, 48, 128, 16, 0); //下遮罩层 +} + +//数值输入界面 +// input value screen +uint16_t InputScreen(byte appID) { + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + DisplayNum(getRotary()); + DrawAppText(appID); + arduboy.display(); + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return Value; +} +int InputBigNum(int InputPW, byte appID) { + setRotary(0, 900, 100, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 90, 10, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 9, 1, InputPW); + InputPW = InputScreen(appID); + return InputPW; +} +void QRcodeScreen() { + arduboy.clear(); + arduboy.drawSlowXYBitmap(40, 0, QRCode, 48, 48, 1); + arduboy.display(); + delay(100); + do { + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); +} +//欠压报警设置 +// information display screen +void UnderVoltageSet() { + setRotary(0, 250, 1, UnderVoltage); + UnderVoltage = InputScreen(7); + beep(); +} +//设置开机密码 +void PasswordSet() { + Password = InputBigNum(Password, 8); + beep(); +} + +void BootPassword() { + if (Password != 0) { + do { + arduboy.clear(); + DrawApp(40, 8); + DrawAppText(8); + arduboy.display(); + delay(1000); + beep(); beep(); beep(); + } while (InputBigNum(0, 8) != Password); + } +} +//更换预设界面 +// change tip screen +void ChangeTipScreen() { + uint8_t selected = CurrentTip; + uint8_t lastselected = selected; + int8_t arrow = 0; + if (selected) arrow = 1; + setRotary(0, NumberOfTips - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + //beep(0); + arduboy.clear(); + selected = getRotary(); + arrow = constrain(arrow + selected - lastselected, 0, 2); + lastselected = selected; + SetTextColor(0); + arduboy.setTextSize(2); + arduboy.setCursor(0, 0); arduboy.print(F("Select Tip")); + SetTextColor(1); + arduboy.setCursor(0, 16 * (arrow + 1)); arduboy.print(F(">")); + for (uint8_t i = 0; i < 3; i++) { + uint8_t drawnumber = selected + i - arrow; + if (drawnumber < NumberOfTips) { + arduboy.setCursor(12, 16 * (i + 1)); arduboy.print(TipName[selected + i - arrow]); + } + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + beep(); + CurrentTip = selected; +} + +//温度校准界面 +// temperature calibration screen +void CalibrationScreen() { + uint16_t CalTempNew[4]; + for (uint8_t CalStep = 0; CalStep < 3; CalStep++) { + SetTemp = CalTemp[CurrentTip][CalStep]; + setRotary(100, 500, 1, SetTemp); + beepIfWorky = true; + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + arduboy.setTextSize(2); + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + arduboy.setCursor(0, 0); arduboy.print(F("Step: ")); arduboy.print(CalStep + 1); arduboy.print("/3"); + if (isWorky) { + arduboy.setCursor(0, 16); arduboy.print(F("Set measured")); + arduboy.setCursor(0, 32); arduboy.print(F("temp: ")); arduboy.print(getRotary()); + } else { + arduboy.setCursor(0, 16); arduboy.print(F("ADC: ")); arduboy.print(uint16_t(RawTemp)); + arduboy.setCursor(0, 32); arduboy.print(F("Please wait")); + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + CalTempNew[CalStep] = getRotary(); + beep(); delay (10); + } + + analogWrite(CONTROL_PIN, 255); // shut off heater + delayMicroseconds(time2settle); // wait for voltage to settle + CalTempNew[3] = getChipTemp(); // read chip temperature + if ((CalTempNew[0] + 30 < CalTempNew[1]) && (CalTempNew[1] + 30 < CalTempNew[2])) { + MenuLevel = 7; + if (MenuScreen(0)) { + for (uint8_t i = 0; i < 4; i++) CalTemp[CurrentTip][i] = CalTempNew[i]; + } + } +} + +//命名界面 文本输入界面 +// input tip name screen +void InputNameScreen() { + uint8_t value; + for (uint8_t digit = 0; digit < (TIPNAMELENGTH - 1); digit++) { + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(31, 96, 1, 65); + do { + value = getRotary(); + if (value == 31) { + value = 95; + setRotary(31, 96, 1, 95); + } + if (value == 96) { + value = 32; + setRotary(31, 96, 1, 32); + } + //arduboy.setCursor(0, 0);arduboy.print(); + arduboy.clear(); + arduboy.setTextSize(2); + arduboy.setCursor(16 * digit, 48); arduboy.print(char(94)); + arduboy.setCursor(0, 32); + for (uint8_t i = 0; i < digit; i++) arduboy.print(TipName[CurrentTip][i]); + arduboy.setCursor(16 * digit, 32); arduboy.print(char(value)); + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + TipName[CurrentTip][digit] = value; + beep(); delay (10); + } + TipName[CurrentTip][TIPNAMELENGTH - 1] = 0; + return value; +} + + +// delete tip screen +void DeleteTipScreen() { + MenuLevel = 7; + if (NumberOfTips == 1) { + //MessageScreen(DeleteMessage, sizeof(DeleteMessage)); + } + else if (MenuScreen(0)) { + if (CurrentTip == (NumberOfTips - 1)) { + CurrentTip--; + } + else { + for (uint8_t i = CurrentTip; i < (NumberOfTips - 1); i++) { + for (uint8_t j = 0; j < TIPNAMELENGTH; j++) TipName[i][j] = TipName[i + 1][j]; + for (uint8_t j = 0; j < 4; j++) CalTemp[i][j] = CalTemp[i + 1][j]; + } + } + NumberOfTips--; + } +} + + +// add new tip screen +void AddTipScreen() { + if (NumberOfTips < TIPMAX) { + CurrentTip = NumberOfTips++; InputNameScreen(); + CalTemp[CurrentTip][0] = TEMP200; CalTemp[CurrentTip][1] = TEMP280; + CalTemp[CurrentTip][2] = TEMP360; CalTemp[CurrentTip][3] = TEMPCHP; + } //MessageScreen(MaxTipMessage, sizeof(MaxTipMessage)); 信息窗 +} + + +// average several ADC readings in sleep mode to denoise +uint16_t denoiseAnalog (byte port) { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + if (port >= A0) port -= A0; // set port and + ADMUX = (0x0F & port) | bit(REFS0); // reference to AVcc + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + return (result >> 5); // devide by 32 and return value +} + +/* + //读取芯片温度 + // get internal temperature by reading ADC channel 8 against 1.1V reference + double getChipTemp() { + unsigned int wADC; + double t; + ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); + ADCSRA |= _BV(ADEN); + delay(5); + ADCSRA |= _BV(ADSC); + while (bit_is_set(ADCSRA, ADSC)); + wADC = ADCW; + t = (wADC - ChipTempCalVal ) / 1.22; + return (t); + } +*/ +// get internal temperature by reading ADC channel 8 against 1.1V reference +double getChipTemp() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + ADMUX = bit (REFS1) | bit (REFS0) | bit (MUX3); // set reference and mux + delay(10); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 2; // devide by 4 + return ((result - 2594) / 9.76); // calculate internal temperature in degrees C +} + +// get input voltage in mV by reading 1.1V reference against AVcc +uint16_t getVCC() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + // set Vcc measurement against 1.1V reference + ADMUX = bit (REFS0) | bit (MUX3) | bit (MUX2) | bit (MUX1); + delay(1); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 16; i++) { // get 16 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 4; // devide by 16 + return (1125300L / result); // 1125300 = 1.1 * 1023 * 1000 +} + + +// get supply voltage in mV +uint16_t getVIN() { + long result; + result = denoiseAnalog (VIN_PIN); // read supply voltage via voltage divider + return (result * Vcc / 179.474); // 179.474 = 1023 * R13 / (R12 + R13) +} + +//ADC中断服务 +// ADC interrupt service routine +EMPTY_INTERRUPT (ADC_vect); // nothing to be done here + +//旋转编码器触发中断 +// Pin change interrupt service routine for rotary encoder +ISR (PCINT0_vect) { + uint8_t a = PINB & 1; + uint8_t b = PIND >> 7 & 1; + if (a != a0) { // A changed + a0 = a; + if (b != b0) { // B changed + b0 = b; + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax); + if (ROTARY_TYPE && ((a == b) != ab0)) { + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax);; + } + ab0 = (a == b); + handleMoved = true; + } + } +} + +//显示位图,并允许放大 代码片段改自arduboy2 +void drawSlowXYBitmapResize(int x, int y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t size, uint8_t color) { + // no need to draw at all of we're offscreen + /* + if (x + w < 0 || x > WIDTH - 1 || y + h < 0 || y > HEIGHT - 1) + return; + */ + int16_t xi, yi, byteWidth = (w + 7) / 8; + for (yi = 0; yi < h; yi ++) { + for (xi = 0; xi < w; xi ++) { + if (pgm_read_byte(bitmap + yi * byteWidth + xi / 8) & (128 >> (xi & 7))) { + //arduboy.drawPixel(x + xi, y + yi, color); + arduboy.fillRect(x + xi * size, y + yi * size, size, size, color); + } + } + } +} +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ +#if LANG_JP_State +void drawText(uint8_t x, uint8_t y, const uint8_t *mes, uint8_t cnt) +{ + uint8_t pb; + uint8_t page; + uint8_t screen_start = 0; + uint8_t screen_end = 128; + + if (x < screen_start) { + x = screen_start; + } + + for (uint8_t i = 0; i < cnt; i++) { + pb = pgm_read_byte_near(mes + i); + + switch (pb) { + case MISAKI_FONT_F0_PAGE: + page = MISAKI_FONT_F0_PAGE; + continue; + case MISAKI_FONT_F1_PAGE: + page = MISAKI_FONT_F1_PAGE; + continue; + case MISAKI_FONT_F2_PAGE: + page = MISAKI_FONT_F2_PAGE; + continue; + } + + if (!page) { + continue; + } + + switch (page) { +#ifdef MISAKI_FONT_F0_H + case MISAKI_FONT_F0_PAGE: + if (pb > MISAKI_FONT_F0_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f0[ pb ], MISAKI_FONT_F0_W, 8, WHITE); + x = x + 8; + break; +#endif +#ifdef MISAKI_FONT_F1_H + case MISAKI_FONT_F1_PAGE: + if (pb > MISAKI_FONT_F1_SIZE) { + continue; + } + if ((x + 4) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f1[ pb ], MISAKI_FONT_F1_W, 8, WHITE); + arduboy.drawBitmap(x + 3, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 4; + break; +#endif +#ifdef MISAKI_FONT_F2_H + case MISAKI_FONT_F2_PAGE: + if (pb > MISAKI_FONT_F2_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f2[ pb ], MISAKI_FONT_F2_W, 8, WHITE); + arduboy.drawBitmap(x + 7, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 8; + break; +#endif + } + } +} +#endif diff --git a/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino new file mode 100644 index 0000000..e1314e4 --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino @@ -0,0 +1,2248 @@ +/*License: http://creativecommons.org/licenses/by-sa/3.0/ + 采用CC3.0协议共享此程序 + 您可以自由地 + 共享 — 在任何媒介以任何形式复制、发行本作品 + 演绎 — 修改、翻译或以本作品为基础进行创作 + 在任何用途下,甚至商业目的。 + 本许可协议为“自由文化作品(Free Cultural Works)”所接受。 + 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 + + Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) + This is a human-readable summary of (and not a substitute for) the license. Disclaimer. + You are free to: + Share — copy and redistribute the material in any medium or format + Adapt — remix, transform, and build upon the material + for any purpose, even commercially. + This license is acceptable for Free Cultural Works. + The licensor cannot revoke these freedoms as long as you follow the license terms. +*/ +// SolderingStation2 +// +// ATmega328-controlled Soldering Station for Hakko T12 Tips. +// 此v1.8t3版本功能简介 +// This 1.8t1 version of the code implements: +// - 烙铁头温度实时监测 +// - Temperature measurement of the tip +// - PID温度控制 +// - Direct or PID control of the heater +// - 可以通过编码器进行控制温度 +// - Temperature control via rotary encoder +// - 短按编码器进入短时升温模式 +// - Boost mode by short pressing rotary encoder switch +// - 长按编码器进入主菜单 +// - Setup menu by long pressing rotary encoder switch +// - 手柄震动检测(需要手柄含有震动传感器) +// - Handle movement detection (by checking ball switch) +// - 手柄连接检测(通过判断烙铁头温度是否能够被读取来实现) +// - Iron unconnected detection (by idenfying invalid temperature readings) +// - 定时器设定 - 随眠,关机时间 +// - Time driven sleep/power off mode if iron is unused (movement detection) +// - 可以测量主控芯片电压以及温度 +// - Measurement of input voltage, Vcc and ATmega's internal temperature +// - 在OLED上实现信息显示 +// - Information display on OLED +// - 支持无源蜂鸣器 +// - Buzzer +// - 允许设置不同烙铁头的温度校准值 +// - Calibrating and managing different soldering tips +// - 设置被保存在EEPROM,掉电不丢失 +// - Storing user settings into the EEPROM +// - 允许热插拔烙铁头,并弹出烙铁头配置选择菜单 +// - Tip change detection +// - 芯片过热以及低电压报警 +// - Chip overheating and low voltage alarm +// - 更好的实时温度条以及实时功率条 +// - Better real-time temperature bar and real-time power bar +// - 拥有过渡动画 +// - Have transition animation +// - 内置屏幕保护程序 +// - Built in screen saver +// - 屏幕翻转设置 +// - Screen flip settings +// - 内置英文、中文、日文语言包 +// - Built in English, Chinese and Japanese language pack +// - 开机密码设置 +// - System Password +// - 允许设置旋钮方向 +// - 内嵌看门狗,宕机自动重启 + +// Power supply should be in the range of 16V/2A to 24V/3A and well +// stabilized. +// +// For calibration you need a soldering iron tips thermometer. For best results +// wait at least three minutes after switching on the soldering station before +// you start the calibration process. +// +// Controller: ATmega328p +// Core: Barebones ATmega (https://github.com/carlosefr/atmega) +// Clockspeed: 16 MHz external +// +// 2019/2020 by Stefan Wagner with great support from John Glavinos +// 2020-8 UI upgrade by LHW-createskyblue 、lihaoyun6 +// Project Page: https://easyeda.com/wagiminator + +//关于界面-项目页面二维码 ->为了加入欠压报警只能阉割掉关于页面的二维码 +//const unsigned char QRCode[] PROGMEM = { 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x7c, 0x0c, 0x00, 0x00, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3f, 0xc1, 0x8c, 0x0c, 0x7f, 0xf8, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x30, 0x01, 0xf3, 0x8c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3e, 0x0f, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x18, 0x06, 0x3f, 0xc1, 0xf0, 0x0c, 0x60, 0x18, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x1f, 0xfe, 0x3e, 0x30, 0x70, 0x0c, 0x7f, 0xf8, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x31, 0xce, 0x73, 0x8c, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x01, 0x83, 0x8f, 0xff, 0xff, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x00, 0xc0, 0x01, 0xc1, 0x8c, 0x00, 0x7f, 0x1f, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0x07, 0xc7, 0xcf, 0xce, 0x7f, 0x8c, 0x1f, 0xf8, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xf8, 0x00, 0x3e, 0x3e, 0x03, 0xf0, 0x7f, 0x00, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0xe0, 0xc7, 0xcf, 0xfe, 0x03, 0x80, 0x1f, 0xe7, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0x18, 0xc0, 0x31, 0xfe, 0x0c, 0x0c, 0x1c, 0xe0, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0xe7, 0x39, 0xf1, 0xf0, 0x03, 0xfc, 0x7c, 0xf8, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0x1f, 0x00, 0x31, 0xcf, 0xf3, 0x8c, 0x03, 0x00, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0xe0, 0x3f, 0xff, 0xc1, 0x83, 0x8f, 0x9c, 0xe7, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0x18, 0x00, 0x30, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0xff, 0xff, 0xf0, 0x3e, 0x7c, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x00, 0x00, 0x31, 0xce, 0x0c, 0x0c, 0x63, 0xe0, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x1f, 0xfe, 0x30, 0x01, 0x83, 0x8f, 0xe0, 0xff, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x31, 0xf1, 0x8f, 0x80, 0x03, 0xe7, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x3f, 0xff, 0x83, 0x83, 0xe3, 0x1f, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x18, 0x06, 0x31, 0xfe, 0x73, 0x8f, 0x80, 0xf8, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x1f, 0xfe, 0x31, 0xfe, 0x00, 0x0c, 0x60, 0xe7, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0, 0x00, 0x00, 0x31, 0xfe, 0x0c, 0x0f, 0x9f, 0xe0 }; +const unsigned char QRCode[] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x80, 0x03, 0x86, 0x70, 0x80, 0x03, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x9f, 0xf3, 0xe1, 0x30, 0x9f, 0xf3, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x01, 0xcc, 0x98, 0x33, 0x98, 0x33, 0x87, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x98, 0x33, 0xe1, 0xc0, 0x98, 0x33, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x9f, 0xf3, 0x98, 0xc0, 0x9f, 0xf3, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0x80, 0x03, 0x66, 0xcc, 0x80, 0x03, 0xff, 0xff, 0x01, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x61, 0x30, 0x1f, 0x3f, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0x33, 0x87, 0x3c, 0xe6, 0xfc, 0x87, 0xf3, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xf8, 0x03, 0x9e, 0x0f, 0x1f, 0x03, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0xe1, 0x3c, 0xfe, 0x0c, 0x07, 0xcf, 0x99, 0x03, 0x3e, 0x30, 0x86, 0xc3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0xe6, 0xcf, 0x38, 0x0f, 0x9e, 0xf3, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0x9e, 0x03, 0x27, 0xcc, 0x81, 0x03, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0xe0, 0xff, 0xe1, 0x0c, 0xe6, 0xcf, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0x98, 0x03, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0xf8, 0x03, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x80, 0x03, 0x66, 0x30, 0x99, 0xc3, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x9f, 0xf3, 0x01, 0x0c, 0xf8, 0xff, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0x39, 0x3c, 0x01, 0xcf, 0x98, 0x33, 0xff, 0x0c, 0x79, 0x3f, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x98, 0x33, 0x3e, 0xcc, 0xe0, 0xf3, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x9f, 0xf3, 0x3e, 0x00, 0x98, 0xcf, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0x80, 0x03, 0x3e, 0x30, 0xe7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +//ICO +//width:16,height:16 +const unsigned char Tag[] PROGMEM = { 0x00, 0x00, 0x3b, 0xec, 0x7b, 0xee, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0xe6, 0x63, 0x66, 0x62, 0x26, 0x60, 0x06, 0x60, 0x06, 0x7f, 0xfe, 0x3f, 0xfc, 0x00, 0x00 }; +const unsigned char Chip[] PROGMEM = { 0x14, 0xa0, 0x3f, 0xf0, 0x7f, 0xf8, 0xe0, 0x1c, 0x6e, 0x18, 0xec, 0x1c, 0x68, 0x18, 0x60, 0x18, 0xe0, 0x1c, 0x60, 0x58, 0xe0, 0x1c, 0x7f, 0xf8, 0x3f, 0xf0, 0x14, 0xa0 }; +//const unsigned char HeatPipe[] PROGMEM = { 0x00, 0x00, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x11, 0x88, 0x21, 0x84, 0x11, 0x88, 0x09, 0x90, 0x01, 0x80, 0x00, 0x00 }; +const unsigned char Lightning[] PROGMEM = { 0x0f, 0xe0, 0x1f, 0xc0, 0x1f, 0xc0, 0x3f, 0x80, 0x3f, 0xf8, 0x7f, 0xf0, 0x7f, 0xe0, 0x07, 0xc0, 0x07, 0x80, 0x0f, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x10, 0x00 }; +//const unsigned char Thermometer[] PROGMEM = { 0x01, 0x80, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x03, 0x40, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0 }; +const unsigned char Pointer[] PROGMEM = { 0x20, 0x20, 0x70, 0xf8 }; +//状态提示 +//width:14,height:14 图标库 + +const unsigned char c1[] PROGMEM = { 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x0c, 0xc0, 0x1c, 0xe0, 0x1c, 0xe0, 0x3c, 0xf0, 0x3c, 0xf0, 0x7f, 0xf8, 0x7f, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c2[] PROGMEM = { 0x7f, 0xf8, 0xff, 0xfc, 0xc0, 0x0c, 0xc3, 0x0c, 0xcb, 0x4c, 0xdb, 0x6c, 0xdb, 0x6c, 0xd8, 0x6c, 0xdc, 0xec, 0xcf, 0xcc, 0xc7, 0x8c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c3[] PROGMEM = { 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0xf8, 0x38, 0xf0, 0x30, 0x30, 0x70, 0x60, 0x70, 0x78, 0x78, 0xf8, 0x78, 0x00, 0x3c, 0x02, 0x3f, 0x0c, 0x1f, 0xf8, 0x0f, 0xf0, 0x03, 0xc0, 0x00, 0x00 }; +const unsigned char c5[] PROGMEM = { 0x7f, 0xf0, 0xff, 0xe0, 0xc0, 0x08, 0xc0, 0x1c, 0xc0, 0x38, 0xc8, 0x70, 0xdc, 0xe4, 0xcf, 0xcc, 0xc7, 0x8c, 0xc3, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xff, 0xfc, 0x7f, 0xf8 }; +const unsigned char c6[] PROGMEM = { 0x1e, 0x10, 0x33, 0x38, 0x2d, 0x7c, 0x25, 0x38, 0x2d, 0x38, 0x25, 0x38, 0x2d, 0x38, 0x6d, 0x80, 0xde, 0xc0, 0xbf, 0x40, 0xbf, 0x40, 0xde, 0xc0, 0x61, 0x80, 0x3f, 0x00 }; +const unsigned char c7[] PROGMEM = { 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0x7c, 0xf8, 0x7c, 0xfc, 0xfc, 0x7f, 0xf8 }; +const unsigned char c_NO[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x37, 0xb0, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x37, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char *C_table[] = {c1, c2, c3, Lightning, c5, c6, c7}; + +//设置(陈星汉认为语言是一种低像素的表达方式,容易造成隔阂; 交互界面设计尽可能形象化) +// width: 14, height: 14 +const unsigned char QRC[] PROGMEM = { 0x05, 0x80, 0x74, 0xb8, 0x57, 0xa8, 0x76, 0xb8, 0x05, 0x80, 0xf9, 0x7c, 0x46, 0x94, 0xaa, 0xa8, 0xf9, 0x7c, 0x06, 0x88, 0x74, 0xa8, 0x57, 0x8c, 0x75, 0x74, 0x06, 0x98 }; +const unsigned char Set0[] PROGMEM = { 0x88, 0x24, 0x08, 0x20, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, 0x30, 0x39, 0x30, 0x3b, 0xb0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set1[] PROGMEM = { 0xf8, 0x7c, 0xf3, 0x3c, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xf6, 0xbc, 0xf4, 0xbc, 0xe4, 0x9c, 0xc8, 0x4c, 0xd0, 0x2c, 0xd0, 0x2c, 0xc8, 0x4c, 0xe7, 0x9c, 0xf0, 0x3c }; +const unsigned char Set2[] PROGMEM = { 0x8f, 0xc4, 0x10, 0x20, 0x20, 0x10, 0x4c, 0xc8, 0x9f, 0xe4, 0x3d, 0xf0, 0x3d, 0xf0, 0x1d, 0xe0, 0x3e, 0xf0, 0x3f, 0x70, 0x9f, 0xe4, 0x8c, 0xc4, 0x00, 0x00, 0x30, 0x30 }; +const unsigned char Set3[] PROGMEM = { 0xc3, 0xfc, 0x18, 0x00, 0x18, 0x00, 0xc3, 0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x60, 0x00, 0x60, 0xff, 0x0c, 0xff, 0xfc, 0xf0, 0xfc, 0x06, 0x00, 0x06, 0x00, 0xf0, 0xfc }; +const unsigned char Set4[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4F[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x30, 0x33, 0x10, 0x3f, 0x90, 0x38, 0x10, 0x33, 0x90, 0x27, 0x90, 0x26, 0x10, 0x30, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set4FF[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x24, 0x30, 0x21, 0x90, 0x27, 0x90, 0x27, 0x30, 0x20, 0x70, 0x27, 0xf0, 0x23, 0x30, 0x30, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set5[] PROGMEM = { 0xfc, 0xfc, 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0x80, 0x04, 0x80, 0x04, 0xff, 0xfc, 0xf8, 0x7c, 0xfc, 0xfc }; +const unsigned char Set5_1[] PROGMEM = { 0xfc, 0xf4, 0xf8, 0x60, 0xe0, 0x44, 0xc0, 0x8c, 0xc1, 0x1c, 0xc2, 0x2c, 0xc4, 0x4c, 0xc8, 0x8c, 0xd1, 0x0c, 0xa2, 0x04, 0xc4, 0x04, 0x8f, 0xfc, 0x18, 0x7c, 0xbc, 0xfc }; +const unsigned char Set6[] PROGMEM = { 0xf8, 0x7c, 0xe0, 0x1c, 0xc0, 0x0c, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xcf, 0xcc, 0xc8, 0x4c, 0xcf, 0xcc, 0xc0, 0x0c, 0xe0, 0x1c }; +const unsigned char Set_LANG[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x4c, 0xbc, 0x34, 0xb8, 0x14, 0x18, 0x80, 0x10, 0x80, 0x42, 0x30, 0x60, 0x78, 0x60, 0xf8, 0x44, 0xc0, 0x80, 0x04, 0xb8, 0x84, 0xcf, 0xcc, 0xf0, 0x3c }; +const unsigned char Set7[] PROGMEM = { 0x80, 0x0c, 0x00, 0x1c, 0x3f, 0xf4, 0x3f, 0xe0, 0x3f, 0xc4, 0x37, 0x8c, 0x23, 0x18, 0x30, 0x30, 0x38, 0x70, 0x3c, 0xf0, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set11[] PROGMEM = { 0xf3, 0xfc, 0xe7, 0xfc, 0xce, 0x0c, 0x8e, 0x1c, 0x9f, 0x9c, 0x1f, 0x3c, 0x1f, 0x0c, 0x0e, 0x0c, 0x0f, 0xfc, 0x87, 0xf8, 0x81, 0xe4, 0xc0, 0x0c, 0xe0, 0x1c, 0xf8, 0x7c }; +const unsigned char Set8[] PROGMEM = { 0x81, 0xdc, 0x55, 0x9c, 0x29, 0x04, 0x55, 0x00, 0x29, 0x90, 0x55, 0xd0, 0x03, 0xfc, 0xff, 0x00, 0x2e, 0x00, 0x26, 0x70, 0x02, 0x50, 0x82, 0x70, 0xe6, 0x00, 0xee, 0x04 }; +const unsigned char Set9[] PROGMEM = { 0xf0, 0x3c, 0xce, 0x0c, 0xbf, 0x04, 0xb3, 0x04, 0x73, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x60, 0xbc, 0x64, 0xbe, 0x04, 0xcf, 0x0c, 0xf0, 0x3c }; +const unsigned char Set10[] PROGMEM = { 0xf8, 0x7c, 0xf7, 0xbc, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0xbf, 0xf4, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xab, 0x54, 0xbf, 0xf4, 0xc0, 0x0c }; +const unsigned char Set13[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x34, 0xb0, 0x24, 0x90, 0x24, 0x90, 0x27, 0x90, 0x23, 0x10, 0x30, 0x30, 0x38, 0x70, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set12[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Set14[] PROGMEM = { 0xff, 0x7c, 0xfe, 0x7c, 0xfc, 0xec, 0xe8, 0xdc, 0xc8, 0x4c, 0x98, 0x4c, 0x88, 0x24, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0xe0, 0x1c }; +const unsigned char Set15[] PROGMEM = { 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3f, 0xfc, 0x15, 0x54, 0x3c, 0x04, 0x14, 0x04, 0x3c, 0xfc, 0x14, 0x54, 0x3c, 0xfc, 0x00, 0x54, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set16[] PROGMEM = { 0x15, 0x54, 0x3f, 0xf8, 0x15, 0x50, 0x3f, 0xf0, 0x15, 0x50, 0x38, 0x70, 0x10, 0x20, 0x31, 0x04, 0x13, 0x8c, 0x22, 0xa8, 0x17, 0xfc, 0x2a, 0xa8, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Set17[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x08, 0x18, 0x08, 0xb9, 0xe8, 0x19, 0xb8, 0xb8, 0x38, 0x18, 0x38, 0xb9, 0xb8, 0xb9, 0xf8, 0xb0, 0xf8, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Set18[] PROGMEM = { 0x80, 0x00, 0xbf, 0xf8, 0x1f, 0xf8, 0xb0, 0x28, 0x1f, 0xf8, 0xb4, 0x08, 0x1f, 0xf8, 0xb1, 0x08, 0x1f, 0xf8, 0xb0, 0x48, 0xbf, 0xf8, 0xb2, 0x88, 0xbf, 0xf8, 0x80, 0x00 }; +const unsigned char Lang_CN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x20, 0x10, 0x24, 0x90, 0x24, 0x90, 0x20, 0x10, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_EN[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x38, 0x70, 0x30, 0x30, 0x23, 0x10, 0x27, 0x90, 0x20, 0x10, 0x20, 0x10, 0x27, 0x90, 0x27, 0x90, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Lang_JP[] PROGMEM = { 0x80, 0x04, 0x00, 0x00, 0x3f, 0xf0, 0x3d, 0xf0, 0x20, 0x10, 0x3b, 0xf0, 0x3b, 0x70, 0x30, 0x30, 0x2b, 0x50, 0x2a, 0xd0, 0x31, 0xb0, 0x3f, 0xf0, 0x00, 0x00, 0x80, 0x04 }; +const unsigned char Save[] PROGMEM = { 0x00, 0x04, 0x58, 0x08, 0x58, 0x08, 0x58, 0x08, 0x40, 0x08, 0x7f, 0xf8, 0x60, 0x18, 0x5f, 0xe8, 0x5b, 0x68, 0x5f, 0xe8, 0x5b, 0x68, 0x1c, 0xe8, 0x5f, 0xe8, 0x00, 0x00 }; +const unsigned char Lock[] PROGMEM = { 0xe0, 0x1c, 0xc0, 0x0c, 0x8f, 0xc4, 0x9f, 0xe4, 0x9f, 0xe4, 0x9f, 0xe4, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0x00, 0x80, 0x04 }; +const unsigned char Set19[] PROGMEM = { 0xf8, 0x7c, 0x80, 0x04, 0xbc, 0xf4, 0x3f, 0xf0, 0x38, 0x70, 0xb7, 0xb4, 0xb6, 0xb4, 0xb5, 0xb4, 0xb7, 0xb4, 0x38, 0x70, 0x3f, 0xf0, 0xbc, 0xf4, 0x80, 0x04, 0xf8, 0x7c }; +const unsigned char *Ico_table[] = { + Set0, Set1, Set2, Set3, Set4, Set5, Set19, Set6, Lock, Set_LANG, QRC, Set7, + Set8, Set9, Set0, Set10, Set12, Save, + Set0, Set11, Set14, Save, + Set11, Set13, Set14, Save, + Set15, Set16, + Set17, Set18, //5 + Set5_1, Set5, + c_NO, Set7, + Lang_CN, Lang_EN, Lang_JP, //8 + Set4, Set4F, Save, +}; +const byte Menu_table[] = {12, 6, 4, 4, 2, 2, 2, 2, 3, 3}; //菜单 标签 温控 定时 控制方式 首页 蜂鸣器 标签删除确认界面 语言菜单 翻转 显示 +byte MenuLevel = 0; //菜单层级 + +/*//////////////////////////////////////////////////////////////////////////////////////////////////// + 多语言支持 + Multilingual support + /////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +/* + 英语库 ENGLISH +*/ +const char EN_0[] PROGMEM = "Tip"; +const char EN_1[] PROGMEM = "Temp"; +const char EN_2[] PROGMEM = "Timer"; +const char EN_3[] PROGMEM = "Control"; +const char EN_4[] PROGMEM = "Screen"; +const char EN_5[] PROGMEM = "Buzzer"; +const char EN_6[] PROGMEM = "LOW Vol"; +const char EN_7[] PROGMEM = "Lang"; +const char EN_8[] PROGMEM = "Return"; +const char EN_9[] PROGMEM = "Change"; +const char EN_10[] PROGMEM = "Calibrate"; +const char EN_11[] PROGMEM = "Rename"; +const char EN_12[] PROGMEM = "Delete"; +const char EN_13[] PROGMEM = "Add"; +const char EN_14[] PROGMEM = "Save"; +const char EN_15[] PROGMEM = "Default"; +const char EN_16[] PROGMEM = "Sleep"; +const char EN_17[] PROGMEM = "Boost"; +const char EN_18[] PROGMEM = "Save"; +const char EN_19[] PROGMEM = "Sleep"; +const char EN_20[] PROGMEM = "Off"; +const char EN_21[] PROGMEM = "Boost"; +const char EN_22[] PROGMEM = "Save"; +const char EN_23[] PROGMEM = "Direct"; +const char EN_24[] PROGMEM = "PID"; +const char EN_25[] PROGMEM = "Big"; +const char EN_26[] PROGMEM = "Infos"; +const char EN_27[] PROGMEM = "OFF"; +const char EN_28[] PROGMEM = "ON"; +const char EN_29[] PROGMEM = "NO"; +const char EN_30[] PROGMEM = "YES"; +const char EN_31[] PROGMEM = "CN"; +const char EN_32[] PROGMEM = "EN"; +const char EN_33[] PROGMEM = "NO"; +const char EN_34[] PROGMEM = "OK"; +const char EN_35[] PROGMEM = "Main Screen"; +const char EN_36[] PROGMEM = "Flip"; +const char EN_37[] PROGMEM = "Save"; +const char EN_38[] PROGMEM = "About"; +const char EN_39[] PROGMEM = "JP"; +const char EN_40[] PROGMEM = "Lock"; +const char EN_41[] PROGMEM = "Rotary"; +const char *const EN_table[] PROGMEM = {EN_0, EN_1, EN_2, EN_3, EN_4, EN_5, EN_41, EN_6, EN_40, EN_7, EN_38, EN_8, EN_9, EN_10, EN_11, EN_12, EN_13, EN_14, EN_15, EN_16, EN_17, EN_18, EN_19, EN_20, EN_21, EN_22, EN_23, EN_24, EN_25, EN_26, EN_27, EN_28, EN_29, EN_30, EN_31, EN_32, EN_39, EN_35, EN_36, EN_37,}; + +/* + #!/usr/bin/python + # -*- coding: UTF-8 -*- + for num in range(0,38): + print("EN_",end="") + print(num,end='') + print(",",end="") +*/ +/* + 中文语言库 CHINESE + + //////////////////////////////////////////////////////////////////////////////////////////////////////// + 本地化提示:你可以按照位图的大小,把这里的文字位图替换成你的语言,确保位图分辨率一致即可,我们欢迎你把程序翻译为你当地的语言! + Localization tips: you can according to the size of the bitmap, + replace the text bitmap here with your language, + ensure that the bitmap resolution is consistent, + we welcome you to translate the program into your local language! + //////////////////////////////////////////////////////////////////////////////////////////////////////// +*/ +//width:28,height:14 主界面中文提示 +//Main Screen +//错误-ERROR +const unsigned char S1[] PROGMEM = { 0x20, 0x92, 0x1f, 0xc0, 0x3d, 0xf9, 0x90, 0x40, 0x20, 0x90, 0x90, 0x40, 0x40, 0x90, 0x1f, 0xc0, 0x7b, 0xff, 0x00, 0x00, 0xa0, 0x01, 0x3f, 0xe0, 0x21, 0xf9, 0x02, 0x00, 0xfd, 0x09, 0x02, 0x00, 0x21, 0x09, 0x7f, 0xf0, 0x21, 0xf9, 0x05, 0x00, 0x21, 0x09, 0x45, 0x00, 0x29, 0x09, 0x88, 0x80, 0x31, 0xf9, 0x10, 0x70, 0x21, 0x08, 0x20, 0x20 }; +//关机-OFF +const unsigned char S2[] PROGMEM = { 0x10, 0x40, 0x47, 0xc0, 0x17, 0xfc, 0x44, 0x40, 0x20, 0x03, 0xf4, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x62, 0x08, 0xc4, 0x40, 0xa3, 0xf8, 0xe4, 0x40, 0x20, 0x01, 0x54, 0x40, 0x2f, 0xfd, 0x44, 0x40, 0x28, 0x06, 0x44, 0x40, 0x23, 0xf8, 0x44, 0x40, 0x20, 0x40, 0x44, 0x50, 0x20, 0x40, 0x48, 0x50, 0x21, 0x40, 0x50, 0x30, 0x20, 0x80, 0x40, 0x00 }; +//休眠-SLEEP +const unsigned char S3[] PROGMEM = { 0x10, 0x83, 0xdf, 0xc0, 0x10, 0x82, 0x50, 0x40, 0x20, 0x82, 0x50, 0x40, 0x2f, 0xff, 0xdf, 0xc0, 0x60, 0x82, 0x52, 0x00, 0x61, 0xc2, 0x52, 0x00, 0xa1, 0xc2, 0x5f, 0xe0, 0x22, 0xa3, 0xd2, 0x00, 0x22, 0xa2, 0x51, 0x00, 0x24, 0x92, 0x51, 0x00, 0x28, 0x8e, 0x50, 0x90, 0x30, 0x8b, 0xd4, 0x50, 0x20, 0x82, 0x58, 0x30, 0x20, 0x80, 0x10, 0x10 }; +//提温-BOOST +const unsigned char S4[] PROGMEM = { 0x23, 0xf2, 0x1f, 0xc0, 0x22, 0x11, 0x10, 0x40, 0xfb, 0xf0, 0x90, 0x40, 0x22, 0x12, 0x1f, 0xc0, 0x2a, 0x11, 0x10, 0x40, 0x33, 0xf1, 0x10, 0x40, 0x60, 0x00, 0x5f, 0xc0, 0xaf, 0xfc, 0x80, 0x00, 0x20, 0x41, 0x3f, 0xe0, 0x22, 0x43, 0x25, 0x20, 0x22, 0x79, 0x25, 0x20, 0x22, 0x41, 0x25, 0x20, 0xa5, 0x41, 0x25, 0x20, 0x48, 0xfd, 0x7f, 0xf0 }; +//正常工作-WORKY +const unsigned char S5[] PROGMEM = { 0x7f, 0xf8, 0x48, 0x80, 0x02, 0x00, 0x49, 0x00, 0x02, 0x01, 0xff, 0xf0, 0x02, 0x01, 0x00, 0x10, 0x02, 0x02, 0x7f, 0x20, 0x22, 0x00, 0x41, 0x00, 0x23, 0xf0, 0x7f, 0x00, 0x22, 0x00, 0x08, 0x00, 0x22, 0x00, 0xff, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x88, 0x80, 0x22, 0x00, 0x8a, 0x80, 0x22, 0x00, 0x89, 0x00, 0xff, 0xfc, 0x08, 0x00 }; +//加热-HEAT +const unsigned char S6[] PROGMEM = { 0x0f, 0x42, 0x1f, 0xc0, 0x78, 0x41, 0x10, 0x40, 0x08, 0x40, 0x90, 0x40, 0x08, 0x42, 0x1f, 0xc0, 0x08, 0x41, 0x10, 0x40, 0xff, 0xfd, 0x10, 0x40, 0x08, 0x40, 0x5f, 0xc0, 0x08, 0x40, 0x80, 0x00, 0x08, 0x41, 0x3f, 0xe0, 0x08, 0x43, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x10, 0x41, 0x25, 0x20, 0x20, 0x41, 0x25, 0x20, 0x40, 0x41, 0x7f, 0xf0 }; +//维持-HOLD +const unsigned char S7[] PROGMEM = { 0x11, 0x40, 0x82, 0x00, 0x21, 0x20, 0x8f, 0xe0, 0x23, 0xfc, 0x82, 0x00, 0x4a, 0x23, 0xe2, 0x00, 0xfe, 0x20, 0x9f, 0xf0, 0x13, 0xf8, 0x80, 0x80, 0x22, 0x20, 0xc0, 0x80, 0x42, 0x21, 0xbf, 0xf0, 0xfb, 0xfa, 0x88, 0x80, 0x02, 0x20, 0x84, 0x80, 0x02, 0x20, 0x84, 0x80, 0x1a, 0x20, 0x80, 0x80, 0xe3, 0xfe, 0x82, 0x80, 0x02, 0x01, 0x01, 0x00 }; +const unsigned char *S_table[] = {S1, S2, S3, S4, S5, S6, S7}; + +// 菜单 width:36,height:16 +//MENU Oj +/* + The order here(↓) can refer to EN_table(↑↑↑) +*/ +const unsigned char t0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x90, 0xf8, 0x00, 0x01, 0x08, 0x08, 0x88, 0x00, 0x0a, 0x10, 0x08, 0x88, 0x00, 0x04, 0x7f, 0x01, 0x07, 0x00, 0x1f, 0xc1, 0x3a, 0x00, 0x00, 0x05, 0x49, 0x09, 0xfc, 0x00, 0x04, 0x49, 0x08, 0x84, 0x00, 0x04, 0x49, 0x08, 0x88, 0x00, 0x04, 0x49, 0x08, 0x48, 0x00, 0x04, 0x49, 0x08, 0x50, 0x00, 0x04, 0x49, 0x0a, 0x20, 0x00, 0x04, 0x16, 0x0c, 0x58, 0x00, 0x14, 0x21, 0x89, 0x87, 0x00, 0x08, 0xc0, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x08, 0x20, 0x00, 0x08, 0x82, 0x0b, 0xff, 0x00, 0x04, 0x82, 0x0a, 0x01, 0x00, 0x10, 0xfe, 0x3c, 0x51, 0x00, 0x08, 0x82, 0x08, 0x88, 0x00, 0x08, 0x82, 0x09, 0x04, 0x00, 0x02, 0xfe, 0x0c, 0x00, 0x00, 0x04, 0x00, 0x19, 0xfc, 0x00, 0x09, 0xff, 0x28, 0x20, 0x00, 0x19, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x08, 0x20, 0x00, 0x09, 0x29, 0x2b, 0xff, 0x00, 0x0b, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x04, 0x00, 0x1f, 0xff, 0xa2, 0x04, 0x00, 0x10, 0x00, 0xa2, 0xff, 0x00, 0x00, 0x01, 0x22, 0x04, 0x00, 0x0f, 0xfe, 0x22, 0x04, 0x00, 0x00, 0x40, 0x3e, 0x44, 0x00, 0x00, 0x40, 0x22, 0x24, 0x00, 0x04, 0x40, 0x22, 0x24, 0x00, 0x04, 0x7c, 0x22, 0x04, 0x00, 0x04, 0x40, 0x22, 0x04, 0x00, 0x0a, 0x40, 0x3e, 0x04, 0x00, 0x09, 0x40, 0x22, 0x24, 0x00, 0x10, 0xff, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 }; +const unsigned char t3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x12, 0x02, 0x00, 0x05, 0xff, 0x9f, 0xd2, 0x00, 0x05, 0x00, 0x92, 0x12, 0x00, 0x1e, 0x28, 0xa2, 0x12, 0x00, 0x04, 0x44, 0x3f, 0xf2, 0x00, 0x04, 0x82, 0x02, 0x12, 0x00, 0x06, 0x00, 0x02, 0x12, 0x00, 0x0c, 0xfe, 0x1f, 0xd2, 0x00, 0x14, 0x10, 0x12, 0x52, 0x00, 0x04, 0x10, 0x12, 0x42, 0x00, 0x04, 0x10, 0x13, 0x42, 0x00, 0x04, 0x10, 0x12, 0x82, 0x00, 0x15, 0xff, 0x82, 0x0a, 0x00, 0x08, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x04, 0x02, 0x3f, 0xfe, 0x00, 0x04, 0x02, 0x00, 0x80, 0x00, 0x07, 0xfe, 0x00, 0x80, 0x00, 0x00, 0x90, 0x04, 0x90, 0x00, 0x08, 0x91, 0x0c, 0x88, 0x00, 0x06, 0x93, 0x10, 0x86, 0x00, 0x02, 0x94, 0x20, 0x82, 0x00, 0x00, 0x90, 0x00, 0x80, 0x00, 0x00, 0x90, 0x02, 0x80, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x9f, 0xfc, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x08, 0x42, 0x0f, 0xf8, 0x00, 0x08, 0x42, 0x08, 0x08, 0x00, 0x0f, 0xfe, 0x08, 0x08, 0x00, 0x08, 0x02, 0x0f, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x0f, 0xf8, 0x00, 0x10, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t6[] PROGMEM = { 0x09, 0xff, 0x00, 0x40, 0x00, 0x04, 0x20, 0x3f, 0xff, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x42, 0x0f, 0xfc, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x04, 0x00, 0x0f, 0xfc, 0x00, 0x04, 0xff, 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x00, 0x00, 0x05, 0x81, 0x0f, 0xfc, 0x00, 0x06, 0x81, 0x08, 0x04, 0x00, 0x04, 0xff, 0x08, 0x04, 0x00, 0x00, 0x81, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t7[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0xfe, 0x00, 0x01, 0x00, 0x08, 0x20, 0x00, 0x03, 0xff, 0x08, 0x20, 0x00, 0x02, 0x01, 0x08, 0x20, 0x00, 0x04, 0x22, 0x08, 0x20, 0x00, 0x08, 0x20, 0x0b, 0xfe, 0x00, 0x10, 0x20, 0x08, 0x20, 0x00, 0x00, 0x50, 0x08, 0x28, 0x00, 0x00, 0x50, 0x08, 0x24, 0x00, 0x00, 0x88, 0x08, 0x22, 0x00, 0x00, 0x88, 0x10, 0x20, 0x00, 0x01, 0x04, 0x10, 0x20, 0x00, 0x02, 0x03, 0xa7, 0xff, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char Back[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x3f, 0xfe, 0x00, 0x04, 0x80, 0x20, 0x02, 0x00, 0x00, 0x80, 0x20, 0x02, 0x00, 0x00, 0xbe, 0x23, 0xe2, 0x00, 0x1c, 0x82, 0x22, 0x22, 0x00, 0x04, 0xa4, 0x22, 0x22, 0x00, 0x04, 0x94, 0x22, 0x22, 0x00, 0x04, 0x88, 0x22, 0x22, 0x00, 0x04, 0x94, 0x23, 0xe2, 0x00, 0x05, 0x22, 0x20, 0x02, 0x00, 0x05, 0x42, 0x20, 0x02, 0x00, 0x0a, 0x00, 0x3f, 0xfe, 0x00, 0x11, 0xff, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t1_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x20, 0x90, 0x00, 0x02, 0x7f, 0x98, 0x90, 0x00, 0x1f, 0x80, 0x09, 0xff, 0x00, 0x02, 0x22, 0x01, 0x10, 0x00, 0x06, 0x21, 0x8b, 0x10, 0x00, 0x07, 0x62, 0x8d, 0xfe, 0x00, 0x0a, 0xa2, 0x09, 0x10, 0x00, 0x0a, 0x14, 0x11, 0x10, 0x00, 0x12, 0x14, 0x31, 0xfe, 0x00, 0x02, 0x08, 0x11, 0x10, 0x00, 0x02, 0x14, 0x11, 0x10, 0x00, 0x02, 0x22, 0x11, 0x10, 0x00, 0x02, 0x43, 0x91, 0xff, 0x00, 0x02, 0x81, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x50, 0x01, 0xfc, 0x00, 0x00, 0x88, 0x01, 0x04, 0x00, 0x01, 0x04, 0x03, 0x08, 0x00, 0x06, 0xfb, 0x04, 0x90, 0x00, 0x08, 0x00, 0xc0, 0x60, 0x00, 0x07, 0xdf, 0x01, 0x80, 0x00, 0x04, 0x51, 0x06, 0x00, 0x00, 0x04, 0x51, 0x1b, 0xfe, 0x00, 0x04, 0x51, 0x02, 0x02, 0x00, 0x07, 0xd9, 0x02, 0x02, 0x00, 0x04, 0x56, 0x02, 0x02, 0x00, 0x00, 0x10, 0x03, 0xfe, 0x00, 0x00, 0x10, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x78, 0xbc, 0x20, 0x00, 0x09, 0x48, 0xa4, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x50, 0x00, 0x09, 0x4a, 0xa8, 0x88, 0x00, 0x09, 0x4a, 0xb1, 0x04, 0x00, 0x1f, 0xfe, 0xaa, 0xfb, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa4, 0x20, 0x00, 0x09, 0x4a, 0xa7, 0xfe, 0x00, 0x09, 0x4a, 0xb4, 0x20, 0x00, 0x09, 0x48, 0xa9, 0x24, 0x00, 0x0b, 0x48, 0xa2, 0x22, 0x00, 0x08, 0x8a, 0xa4, 0xa2, 0x00, 0x11, 0x19, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t1_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x10, 0x00, 0x1f, 0xdc, 0x3e, 0xfe, 0x00, 0x08, 0x90, 0x02, 0x12, 0x00, 0x05, 0x10, 0x04, 0xff, 0x00, 0x1f, 0xdf, 0x84, 0x12, 0x00, 0x02, 0x12, 0x0c, 0xfe, 0x00, 0x1f, 0xd2, 0x02, 0x10, 0x00, 0x02, 0x12, 0x22, 0xfe, 0x00, 0x0a, 0x92, 0x14, 0x10, 0x00, 0x0a, 0x52, 0x14, 0x10, 0x00, 0x12, 0x22, 0x0d, 0xff, 0x00, 0x02, 0x22, 0x08, 0x10, 0x00, 0x0a, 0x42, 0x14, 0x10, 0x00, 0x04, 0x02, 0x23, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//默认 +const unsigned char t2_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc8, 0x10, 0x20, 0x00, 0x12, 0x4a, 0x0c, 0x20, 0x00, 0x1a, 0xc9, 0x04, 0x20, 0x00, 0x17, 0x48, 0x00, 0x20, 0x00, 0x1f, 0xff, 0xb8, 0x20, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x1f, 0xc8, 0x08, 0x50, 0x00, 0x02, 0x08, 0x08, 0x50, 0x00, 0x03, 0xc8, 0x08, 0x48, 0x00, 0x1e, 0x14, 0x08, 0x88, 0x00, 0x01, 0x54, 0x0a, 0x88, 0x00, 0x15, 0x22, 0x0c, 0x84, 0x00, 0x14, 0x43, 0x89, 0x07, 0x00, 0x00, 0x81, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//休眠 +const unsigned char t2_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x3d, 0xfc, 0x00, 0x02, 0x10, 0x25, 0x04, 0x00, 0x04, 0x10, 0x25, 0x04, 0x00, 0x05, 0xff, 0xbd, 0xfc, 0x00, 0x0c, 0x10, 0x25, 0x20, 0x00, 0x0c, 0x38, 0x25, 0x20, 0x00, 0x14, 0x38, 0x25, 0xfe, 0x00, 0x04, 0x54, 0x3d, 0x20, 0x00, 0x04, 0x54, 0x25, 0x10, 0x00, 0x04, 0x92, 0x25, 0x10, 0x00, 0x05, 0x11, 0xa5, 0x09, 0x00, 0x06, 0x11, 0x3d, 0x45, 0x00, 0x04, 0x10, 0x25, 0x83, 0x00, 0x04, 0x10, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//提温 +const unsigned char t2_2[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7e, 0x21, 0xfc, 0x00, 0x04, 0x42, 0x11, 0x04, 0x00, 0x1f, 0x7e, 0x09, 0x04, 0x00, 0x04, 0x42, 0x21, 0xfc, 0x00, 0x05, 0x42, 0x11, 0x04, 0x00, 0x06, 0x7e, 0x11, 0x04, 0x00, 0x0c, 0x00, 0x05, 0xfc, 0x00, 0x15, 0xff, 0x88, 0x00, 0x00, 0x04, 0x08, 0x13, 0xfe, 0x00, 0x04, 0x48, 0x32, 0x52, 0x00, 0x04, 0x4f, 0x12, 0x52, 0x00, 0x04, 0x48, 0x12, 0x52, 0x00, 0x14, 0xa8, 0x12, 0x52, 0x00, 0x09, 0x1f, 0x97, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//关机 +const unsigned char t3_1[] PROGMEM = { 0x01, 0x04, 0x04, 0x7c, 0x00, 0x00, 0x88, 0x04, 0x44, 0x00, 0x0f, 0xff, 0x3f, 0x44, 0x00, 0x00, 0x20, 0x04, 0x44, 0x00, 0x00, 0x20, 0x0c, 0x44, 0x00, 0x00, 0x20, 0x0e, 0x44, 0x00, 0x1f, 0xff, 0x95, 0x44, 0x00, 0x00, 0x20, 0x14, 0x44, 0x00, 0x00, 0x50, 0x24, 0x44, 0x00, 0x00, 0x50, 0x04, 0x44, 0x00, 0x00, 0x88, 0x04, 0x45, 0x00, 0x01, 0x04, 0x04, 0x85, 0x00, 0x06, 0x03, 0x85, 0x03, 0x00, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_4[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x20, 0x00, 0x0f, 0xff, 0x09, 0xfc, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x88, 0x00, 0x03, 0xfe, 0x08, 0x50, 0x00, 0x02, 0x02, 0x0b, 0xfe, 0x00, 0x03, 0xfe, 0x0c, 0x40, 0x00, 0x02, 0x02, 0x18, 0x40, 0x00, 0x03, 0xfe, 0x2b, 0xfe, 0x00, 0x02, 0x02, 0x08, 0x48, 0x00, 0x03, 0xfe, 0x08, 0x88, 0x00, 0x02, 0x02, 0x08, 0x50, 0x00, 0x02, 0x02, 0x28, 0x30, 0x00, 0x1f, 0xff, 0x91, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_PID[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xf1, 0xe0, 0x00, 0x0f, 0xe3, 0xf1, 0xf8, 0x00, 0x0c, 0x70, 0xc1, 0x9e, 0x00, 0x0c, 0x30, 0xc1, 0x86, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x30, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0c, 0x60, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x83, 0x00, 0x0f, 0xc0, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x86, 0x00, 0x0c, 0x00, 0xc1, 0x98, 0x00, 0x0c, 0x03, 0xf1, 0xf8, 0x00, 0x0c, 0x03, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t5_0[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdf, 0x88, 0x40, 0x00, 0x0a, 0x24, 0x10, 0x40, 0x00, 0x11, 0x42, 0x10, 0xfe, 0x00, 0x04, 0x00, 0x22, 0x82, 0x00, 0x02, 0xff, 0x3d, 0x02, 0x00, 0x08, 0x01, 0x0a, 0x42, 0x00, 0x09, 0xf9, 0x10, 0x32, 0x00, 0x09, 0x09, 0x20, 0x12, 0x00, 0x09, 0xf9, 0x3e, 0x02, 0x00, 0x09, 0x09, 0x00, 0x02, 0x00, 0x09, 0x09, 0x0e, 0x02, 0x00, 0x09, 0xf9, 0x30, 0x22, 0x00, 0x08, 0x05, 0x00, 0x14, 0x00, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_1[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x44, 0x10, 0xfe, 0x00, 0x04, 0x28, 0x10, 0x92, 0x00, 0x05, 0xff, 0x22, 0x92, 0x00, 0x00, 0x10, 0x3c, 0x92, 0x00, 0x00, 0x10, 0x08, 0x92, 0x00, 0x1c, 0xfe, 0x10, 0x92, 0x00, 0x04, 0x10, 0x20, 0xfe, 0x00, 0x04, 0x10, 0x3e, 0x92, 0x00, 0x05, 0xff, 0x80, 0x92, 0x00, 0x04, 0x10, 0x00, 0x92, 0x00, 0x05, 0x10, 0x0e, 0x92, 0x00, 0x06, 0x10, 0x30, 0x92, 0x00, 0x04, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x10, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t5_3[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x3f, 0xfe, 0x00, 0x1f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xf8, 0x00, 0x04, 0x02, 0x08, 0x08, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x04, 0x02, 0x08, 0x88, 0x00, 0x07, 0xfe, 0x08, 0x88, 0x00, 0x04, 0x02, 0x09, 0x48, 0x00, 0x04, 0x02, 0x02, 0x30, 0x00, 0x07, 0xfe, 0x04, 0x0c, 0x00, 0x04, 0x02, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_off[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x04, 0xff, 0x00, 0x00, 0x44, 0x02, 0x01, 0x00, 0x07, 0xff, 0x90, 0x21, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x00, 0x10, 0x17, 0xfd, 0x00, 0x00, 0x10, 0x10, 0x21, 0x00, 0x0f, 0xff, 0xd0, 0x61, 0x00, 0x00, 0x10, 0x10, 0xa1, 0x00, 0x00, 0x28, 0x11, 0x21, 0x00, 0x00, 0x28, 0x12, 0x21, 0x00, 0x00, 0x44, 0x14, 0x21, 0x00, 0x00, 0x82, 0x10, 0xa1, 0x00, 0x03, 0x01, 0xd0, 0x45, 0x00, 0x0c, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_on[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x20, 0x00, 0x00, 0x84, 0x07, 0xff, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x00, 0x84, 0x04, 0x01, 0x00, 0x0f, 0xff, 0xc7, 0xff, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x84, 0x05, 0xff, 0x00, 0x00, 0x84, 0x05, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x01, 0x04, 0x09, 0x01, 0x00, 0x02, 0x04, 0x11, 0xff, 0x00, 0x04, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_NO[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x04, 0x91, 0x00, 0x04, 0x40, 0x02, 0x52, 0x00, 0x04, 0x7f, 0x90, 0x54, 0x00, 0x04, 0x50, 0x88, 0xff, 0x00, 0x07, 0xd0, 0x84, 0x81, 0x00, 0x04, 0x51, 0x00, 0x81, 0x00, 0x04, 0x49, 0x01, 0xff, 0x00, 0x07, 0xca, 0x02, 0x81, 0x00, 0x04, 0x44, 0x04, 0x81, 0x00, 0x04, 0x4a, 0x1c, 0xff, 0x00, 0x07, 0xea, 0x04, 0x81, 0x00, 0x0c, 0x51, 0x04, 0x81, 0x00, 0x00, 0x61, 0xc4, 0x85, 0x00, 0x00, 0x40, 0x80, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_OK[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdf, 0x10, 0x20, 0x00, 0x02, 0x12, 0x0c, 0x20, 0x00, 0x02, 0x24, 0x04, 0x20, 0x00, 0x04, 0x7f, 0x80, 0x20, 0x00, 0x04, 0x24, 0xb8, 0x20, 0x00, 0x0f, 0xa4, 0x88, 0x50, 0x00, 0x14, 0xbf, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x50, 0x00, 0x04, 0xa4, 0x88, 0x48, 0x00, 0x04, 0xbf, 0x88, 0x88, 0x00, 0x04, 0xa4, 0x8a, 0x88, 0x00, 0x07, 0xa4, 0x8c, 0x84, 0x00, 0x04, 0x44, 0x89, 0x07, 0x00, 0x00, 0x81, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +const unsigned char t_CN_CN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x0f, 0xff, 0x3f, 0xff, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x08, 0x00, 0x08, 0x41, 0x04, 0x10, 0x00, 0x08, 0x41, 0x02, 0x10, 0x00, 0x0f, 0xff, 0x02, 0x20, 0x00, 0x08, 0x41, 0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x01, 0x30, 0x00, 0x00, 0x40, 0x02, 0x08, 0x00, 0x00, 0x40, 0x0c, 0x07, 0x00, 0x00, 0x40, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_EN[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x80, 0x00, 0x1f, 0xff, 0x80, 0x80, 0x00, 0x01, 0x10, 0x3f, 0xff, 0x00, 0x00, 0x40, 0x04, 0x08, 0x00, 0x07, 0xfc, 0x04, 0x08, 0x00, 0x04, 0x44, 0x04, 0x10, 0x00, 0x04, 0x44, 0x02, 0x10, 0x00, 0x04, 0x44, 0x02, 0x20, 0x00, 0x1f, 0xff, 0x81, 0x20, 0x00, 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0x01, 0x30, 0x00, 0x01, 0x10, 0x02, 0x08, 0x00, 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x18, 0x03, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t_CN_JP[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x13, 0xfe, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x08, 0x40, 0x00, 0x04, 0x02, 0x01, 0xfc, 0x00, 0x04, 0x02, 0x38, 0x84, 0x00, 0x04, 0x02, 0x08, 0x84, 0x00, 0x07, 0xfe, 0x0f, 0xff, 0x00, 0x04, 0x02, 0x08, 0x00, 0x00, 0x04, 0x02, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x09, 0x02, 0x00, 0x04, 0x02, 0x0b, 0x02, 0x00, 0x04, 0x02, 0x0d, 0x02, 0x00, 0x07, 0xfe, 0x09, 0xfe, 0x00, 0x04, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +//翻转 +const unsigned char t4f[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1d, 0xc2, 0x08, 0x00, 0x05, 0x44, 0x42, 0x08, 0x00, 0x03, 0x84, 0x5f, 0xbf, 0x00, 0x0f, 0xe4, 0x44, 0x10, 0x00, 0x01, 0x15, 0x45, 0x10, 0x00, 0x05, 0x4c, 0xc9, 0x7f, 0x80, 0x09, 0x24, 0x4f, 0x90, 0x00, 0x07, 0xc4, 0xc1, 0x10, 0x00, 0x05, 0x4d, 0x41, 0x3f, 0x00, 0x05, 0x54, 0x43, 0x81, 0x00, 0x07, 0xc4, 0x4d, 0x02, 0x00, 0x05, 0x44, 0x41, 0x14, 0x00, 0x05, 0x55, 0x41, 0x08, 0x00, 0x07, 0xc8, 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +//保存 +const unsigned char t_save[] PROGMEM = { 0x02, 0xfe, 0x01, 0x00, 0x00, 0x02, 0x82, 0x3f, 0xff, 0x00, 0x04, 0x82, 0x02, 0x00, 0x00, 0x04, 0xfe, 0x02, 0x00, 0x00, 0x0c, 0x10, 0x04, 0xfc, 0x00, 0x14, 0x10, 0x04, 0x08, 0x00, 0x05, 0xff, 0x8c, 0x10, 0x00, 0x04, 0x10, 0x14, 0x10, 0x00, 0x04, 0x38, 0x25, 0xff, 0x00, 0x04, 0x34, 0x04, 0x10, 0x00, 0x04, 0x52, 0x04, 0x10, 0x00, 0x04, 0x91, 0x84, 0x10, 0x00, 0x05, 0x10, 0x04, 0x50, 0x00, 0x04, 0x10, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tAbout[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0f, 0xfe, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x07, 0xff, 0x80, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x10, 0x1f, 0xff, 0x80, 0x0f, 0xff, 0xc0, 0x40, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x40, 0x00, 0x03, 0x01, 0xc1, 0x40, 0x00, 0x0c, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char tPassword[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x7e, 0x00, 0x1f, 0xff, 0x84, 0x02, 0x00, 0x10, 0x80, 0x84, 0x42, 0x00, 0x0a, 0x4a, 0x04, 0x42, 0x00, 0x0a, 0x31, 0x08, 0x42, 0x00, 0x12, 0xc5, 0x0f, 0x42, 0x00, 0x03, 0x04, 0x19, 0x7f, 0x00, 0x1d, 0xf8, 0x29, 0x01, 0x00, 0x00, 0x40, 0x09, 0x01, 0x00, 0x08, 0x42, 0x09, 0xfd, 0x00, 0x08, 0x42, 0x09, 0x01, 0x00, 0x08, 0x42, 0x0f, 0x01, 0x00, 0x0f, 0xfe, 0x09, 0x05, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char t19[] PROGMEM = { 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x1f, 0x88, 0xfe, 0x00, 0x1f, 0xd0, 0x0e, 0x22, 0x00, 0x04, 0x20, 0x30, 0x22, 0x00, 0x04, 0x5f, 0x80, 0x22, 0x00, 0x07, 0x84, 0x9e, 0x22, 0x00, 0x04, 0x85, 0x08, 0x22, 0x00, 0x04, 0x94, 0x08, 0x22, 0x00, 0x04, 0x94, 0x28, 0xfe, 0x00, 0x04, 0x97, 0x1e, 0x42, 0x00, 0x04, 0x94, 0x08, 0x42, 0x00, 0x08, 0x94, 0x08, 0x42, 0x00, 0x0a, 0xac, 0x0a, 0x42, 0x00, 0x11, 0x44, 0x0c, 0x42, 0x00, 0x00, 0x83, 0x89, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char *CN_table[] = { + t0, t1, t2, t3, t4, t5, t19 , t7, tPassword, t6, tAbout, Back, //0 + t0, t1_1, t1_2, t1_3, t1_4, t_save, //1 + t2_0, t2_1, t2_2, t_save, //2 + t2_1, t3_1, t2_2, t_save,//3 + t_4, t_PID,//4 + t5_0, t5_1,//5 + t_off, t_on,//6 + t_NO, t_OK,//7 + t_CN_CN, t_CN_EN, t_CN_JP, //8 + t5_3, t4f, t_save, //9 +}; + +/* + 日语 Japanese +*/ +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ +#define LANG_JP_State true +#if LANG_JP_State +#define MISAKI_FONT_H + +#define MISAKI_FONT_F0_PAGE 0xF0 +#define MISAKI_FONT_F1_PAGE 0xF1 +#define MISAKI_FONT_F2_PAGE 0xF2 + +#define MISAKI_FONT_F0_W 8 +#define MISAKI_FONT_F1_W 3 +#define MISAKI_FONT_F2_W 7 + +#define MISAKI_FONT_F0_SIZE 0xEF +#define MISAKI_FONT_F1_SIZE 0x9D +#define MISAKI_FONT_F2_SIZE 0x22 // misaki_font_f2.h の最終行の値をここに設定する、最大0xEFまで + +/* + 利用しないフォントデータはヘッダファイルを読み込まないようにするとメモリが節約できます、 + drawText() 実行時にフォントが無い場合は処理がスキップされます。 + + 例) 8x8 dot ひらがな・カタカナ・記号 のみ利用 + #include "misaki_font_f0.h" // 8x8 dot ひらがな・カタカナ・記号 + //#include "misaki_font_f1.h" // 4x8 dot 英語・カタカナ・記号 + //#include "misaki_font_f2.h" // 8x8 dot 漢字 +*/ +PROGMEM const uint8_t misaki_font_0x00[1] = { 0x00 }; +#define MISAKI_FONT_F0_H +PROGMEM const uint8_t misaki_font_f0[ MISAKI_FONT_F0_SIZE + 1 ][ MISAKI_FONT_F0_W ] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x00   */ + { 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x01 、 */ + { 0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x02 。 */ + { 0x50, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x03 , */ + { 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x04 . */ + { 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }, /* 0x05 ・ */ + { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x06 : */ + { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x00 }, /* 0x07 ; */ + { 0x00, 0x02, 0x01, 0x51, 0x09, 0x09, 0x06, 0x00 }, /* 0x08 ? */ + { 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00 }, /* 0x09 ! */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 0x0A [ */ + { 0x41, 0x41, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x0B ] */ + { 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x00 }, /* 0x0C 「 */ + { 0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00 }, /* 0x0D 」 */ + { 0x00, 0x00, 0x3f, 0x21, 0x3d, 0x05, 0x07, 0x00 }, /* 0x0E 『 */ + { 0x70, 0x50, 0x5e, 0x42, 0x7e, 0x00, 0x00, 0x00 }, /* 0x0F 』 */ + { 0x00, 0x00, 0x00, 0x00, 0x7f, 0x63, 0x41, 0x00 }, /* 0x10 【 */ + { 0x41, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x11 】 */ + { 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00 }, /* 0x12 + */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x13 - */ + { 0x44, 0x44, 0x44, 0x5f, 0x44, 0x44, 0x44, 0x00 }, /* 0x14 ± */ + { 0x41, 0x22, 0x14, 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 0x15 × */ + { 0x08, 0x08, 0x08, 0x2a, 0x08, 0x08, 0x08, 0x00 }, /* 0x16 ÷ */ + { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00 }, /* 0x17 = */ + { 0x14, 0x34, 0x14, 0x1c, 0x14, 0x16, 0x14, 0x00 }, /* 0x18 ≠ */ + { 0x08, 0x08, 0x14, 0x14, 0x14, 0x22, 0x22, 0x00 }, /* 0x19 < */ + { 0x22, 0x22, 0x14, 0x14, 0x14, 0x08, 0x08, 0x00 }, /* 0x1A > */ + { 0x02, 0x05, 0x02, 0x3c, 0x42, 0x42, 0x24, 0x00 }, /* 0x1B ℃ */ + { 0x00, 0x2b, 0x2c, 0x78, 0x2c, 0x2b, 0x00, 0x00 }, /* 0x1C ¥ */ + { 0x00, 0x24, 0x2a, 0x7a, 0x2f, 0x2a, 0x12, 0x00 }, /* 0x1D $ */ + { 0x00, 0x1c, 0x62, 0x32, 0x2e, 0x23, 0x14, 0x00 }, /* 0x1E ¢ */ + { 0x20, 0x54, 0x5e, 0x25, 0x41, 0x42, 0x20, 0x00 }, /* 0x1F £ */ + { 0x42, 0x25, 0x12, 0x08, 0x24, 0x52, 0x21, 0x00 }, /* 0x20 % */ + { 0x20, 0x62, 0x3e, 0x63, 0x3e, 0x23, 0x02, 0x00 }, /* 0x21 # */ + { 0x20, 0x56, 0x49, 0x55, 0x22, 0x58, 0x40, 0x00 }, /* 0x22 & */ + { 0x00, 0x22, 0x14, 0x7f, 0x14, 0x22, 0x00, 0x00 }, /* 0x23 * */ + { 0x1c, 0x22, 0x59, 0x55, 0x4d, 0x12, 0x0c, 0x00 }, /* 0x24 @ */ + { 0x00, 0x00, 0x4a, 0x55, 0x55, 0x29, 0x00, 0x00 }, /* 0x25 § */ + { 0x04, 0x64, 0x3c, 0x17, 0x3c, 0x64, 0x04, 0x00 }, /* 0x26 ☆ */ + { 0x04, 0x64, 0x3c, 0x1f, 0x3c, 0x64, 0x04, 0x00 }, /* 0x27 ★ */ + { 0x1c, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00 }, /* 0x28 ○ */ + { 0x1c, 0x3e, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x00 }, /* 0x29 ● */ + { 0x1c, 0x22, 0x5d, 0x55, 0x5d, 0x22, 0x1c, 0x00 }, /* 0x2A ◎ */ + { 0x08, 0x14, 0x22, 0x41, 0x22, 0x14, 0x08, 0x00 }, /* 0x2B ◇ */ + { 0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00 }, /* 0x2C ◆ */ + { 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, 0x00 }, /* 0x2D □ */ + { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00 }, /* 0x2E ■ */ + { 0x40, 0x70, 0x4c, 0x43, 0x4c, 0x70, 0x40, 0x00 }, /* 0x2F △ */ + { 0x40, 0x70, 0x7c, 0x7f, 0x7c, 0x70, 0x40, 0x00 }, /* 0x30 ▲ */ + { 0x01, 0x07, 0x19, 0x61, 0x19, 0x07, 0x01, 0x00 }, /* 0x31 ▽ */ + { 0x01, 0x07, 0x1f, 0x7f, 0x1f, 0x07, 0x01, 0x00 }, /* 0x32 ▼ */ + { 0x49, 0x22, 0x14, 0x49, 0x14, 0x22, 0x49, 0x00 }, /* 0x33 ※ */ + { 0x05, 0x05, 0x05, 0x7d, 0x05, 0x05, 0x05, 0x00 }, /* 0x34 〒 */ + { 0x08, 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x00 }, /* 0x35 → */ + { 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0x36 ← */ + { 0x00, 0x04, 0x02, 0x7f, 0x02, 0x04, 0x00, 0x00 }, /* 0x37 ↑ */ + { 0x00, 0x10, 0x20, 0x7f, 0x20, 0x10, 0x00, 0x00 }, /* 0x38 ↓ */ + { 0x00, 0x3e, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00 }, /* 0x39 0 */ + { 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x00 }, /* 0x3A 1 */ + { 0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46, 0x00 }, /* 0x3B 2 */ + { 0x00, 0x22, 0x41, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x3C 3 */ + { 0x00, 0x30, 0x28, 0x24, 0x22, 0x7f, 0x20, 0x00 }, /* 0x3D 4 */ + { 0x00, 0x2f, 0x45, 0x45, 0x45, 0x45, 0x39, 0x00 }, /* 0x3E 5 */ + { 0x00, 0x3e, 0x49, 0x49, 0x49, 0x49, 0x32, 0x00 }, /* 0x3F 6 */ + { 0x00, 0x01, 0x01, 0x61, 0x19, 0x05, 0x03, 0x00 }, /* 0x40 7 */ + { 0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36, 0x00 }, /* 0x41 8 */ + { 0x00, 0x26, 0x49, 0x49, 0x49, 0x49, 0x3e, 0x00 }, /* 0x42 9 */ + { 0x00, 0x20, 0x54, 0x7e, 0x34, 0x14, 0x60, 0x00 }, /* 0x43 ぁ */ + { 0x20, 0x52, 0x7f, 0x2a, 0x1a, 0x4a, 0x30, 0x00 }, /* 0x44 あ */ + { 0x00, 0x3c, 0x40, 0x20, 0x04, 0x18, 0x00, 0x00 }, /* 0x45 ぃ */ + { 0x1e, 0x20, 0x40, 0x20, 0x02, 0x04, 0x18, 0x00 }, /* 0x46 い */ + { 0x00, 0x10, 0x4a, 0x4a, 0x2a, 0x10, 0x00, 0x00 }, /* 0x47 ぅ */ + { 0x00, 0x08, 0x45, 0x45, 0x45, 0x25, 0x18, 0x00 }, /* 0x48 う */ + { 0x00, 0x48, 0x2a, 0x3a, 0x4a, 0x40, 0x00, 0x00 }, /* 0x49 ぇ */ + { 0x00, 0x44, 0x25, 0x15, 0x3d, 0x45, 0x40, 0x00 }, /* 0x4A え */ + { 0x00, 0x24, 0x7e, 0x14, 0x50, 0x24, 0x00, 0x00 }, /* 0x4B ぉ */ + { 0x22, 0x52, 0x7f, 0x0a, 0x48, 0x4a, 0x34, 0x00 }, /* 0x4C お */ + { 0x44, 0x34, 0x4f, 0x44, 0x38, 0x04, 0x18, 0x00 }, /* 0x4D か */ + { 0x44, 0x34, 0x4f, 0x44, 0x39, 0x04, 0x19, 0x00 }, /* 0x4E が */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5a, 0x08, 0x00 }, /* 0x4F き */ + { 0x00, 0x2a, 0x5a, 0x4b, 0x4e, 0x5b, 0x08, 0x00 }, /* 0x50 ぎ */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x41, 0x00, 0x00 }, /* 0x51 く */ + { 0x00, 0x08, 0x14, 0x14, 0x22, 0x45, 0x04, 0x00 }, /* 0x52 ぐ */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x04, 0x00 }, /* 0x53 け */ + { 0x3f, 0x00, 0x04, 0x44, 0x3f, 0x04, 0x05, 0x00 }, /* 0x54 げ */ + { 0x00, 0x20, 0x52, 0x42, 0x42, 0x42, 0x40, 0x00 }, /* 0x55 こ */ + { 0x00, 0x20, 0x52, 0x42, 0x43, 0x42, 0x41, 0x00 }, /* 0x56 ご */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x04, 0x00 }, /* 0x57 さ */ + { 0x00, 0x24, 0x54, 0x44, 0x47, 0x5c, 0x05, 0x00 }, /* 0x58 ざ */ + { 0x00, 0x00, 0x3f, 0x40, 0x40, 0x40, 0x20, 0x00 }, /* 0x59 し */ + { 0x00, 0x00, 0x3f, 0x40, 0x41, 0x40, 0x21, 0x00 }, /* 0x5A じ */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x02, 0x00 }, /* 0x5B す */ + { 0x02, 0x02, 0x0a, 0x56, 0x3f, 0x02, 0x03, 0x00 }, /* 0x5C ず */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x44, 0x00 }, /* 0x5D せ */ + { 0x04, 0x04, 0x3f, 0x44, 0x54, 0x5f, 0x45, 0x00 }, /* 0x5E ぜ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x08, 0x00 }, /* 0x5F そ */ + { 0x00, 0x08, 0x09, 0x3d, 0x4b, 0x49, 0x0a, 0x00 }, /* 0x60 ぞ */ + { 0x42, 0x3a, 0x07, 0x22, 0x54, 0x44, 0x44, 0x00 }, /* 0x61 た */ + { 0x42, 0x3a, 0x07, 0x22, 0x55, 0x44, 0x45, 0x00 }, /* 0x62 だ */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x32, 0x00 }, /* 0x63 ち */ + { 0x00, 0x02, 0x12, 0x4e, 0x4b, 0x4a, 0x33, 0x00 }, /* 0x64 ぢ */ + { 0x00, 0x10, 0x10, 0x48, 0x48, 0x30, 0x00, 0x00 }, /* 0x65 っ */ + { 0x04, 0x04, 0x02, 0x22, 0x22, 0x22, 0x1c, 0x00 }, /* 0x66 つ */ + { 0x04, 0x04, 0x02, 0x22, 0x23, 0x22, 0x1d, 0x00 }, /* 0x67 づ */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x41, 0x00 }, /* 0x68 て */ + { 0x00, 0x02, 0x02, 0x1a, 0x25, 0x43, 0x45, 0x00 }, /* 0x69 で */ + { 0x00, 0x20, 0x57, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0x6A と */ + { 0x00, 0x20, 0x57, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0x6B ど */ + { 0x12, 0x0a, 0x27, 0x52, 0x50, 0x3a, 0x24, 0x00 }, /* 0x6C な */ + { 0x7f, 0x00, 0x20, 0x52, 0x42, 0x42, 0x40, 0x00 }, /* 0x6D に */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x64, 0x78, 0x00 }, /* 0x6E ぬ */ + { 0x24, 0x14, 0x7f, 0x04, 0x22, 0x52, 0x3c, 0x00 }, /* 0x6F ね */ + { 0x18, 0x24, 0x12, 0x4e, 0x42, 0x24, 0x18, 0x00 }, /* 0x70 の */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x44, 0x00 }, /* 0x71 は */ + { 0x7f, 0x00, 0x24, 0x54, 0x54, 0x3f, 0x45, 0x00 }, /* 0x72 ば */ + { 0x7f, 0x00, 0x24, 0x54, 0x56, 0x3d, 0x46, 0x00 }, /* 0x73 ぱ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x04, 0x00 }, /* 0x74 ひ */ + { 0x02, 0x3a, 0x47, 0x40, 0x41, 0x3e, 0x05, 0x00 }, /* 0x75 び */ + { 0x02, 0x3a, 0x47, 0x40, 0x43, 0x3d, 0x06, 0x00 }, /* 0x76 ぴ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x10, 0x60, 0x00 }, /* 0x77 ふ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x11, 0x61, 0x00 }, /* 0x78 ぶ */ + { 0x40, 0x30, 0x40, 0x4d, 0x32, 0x15, 0x62, 0x00 }, /* 0x79 ぷ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00 }, /* 0x7A へ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x11, 0x00 }, /* 0x7B べ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x12, 0x00 }, /* 0x7C ぺ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2a, 0x4a, 0x00 }, /* 0x7D ほ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7f, 0x2a, 0x4b, 0x00 }, /* 0x7E ぼ */ + { 0x7f, 0x00, 0x6a, 0x6a, 0x7e, 0x2d, 0x4a, 0x00 }, /* 0x7F ぽ */ + { 0x00, 0x6a, 0x6a, 0x6a, 0x7f, 0x2a, 0x4a, 0x00 }, /* 0x80 ま */ + { 0x30, 0x29, 0x1d, 0x4b, 0x48, 0x3c, 0x10, 0x00 }, /* 0x81 み */ + { 0x12, 0x2a, 0x7f, 0x42, 0x40, 0x42, 0x24, 0x00 }, /* 0x82 む */ + { 0x30, 0x4e, 0x38, 0x54, 0x0f, 0x44, 0x38, 0x00 }, /* 0x83 め */ + { 0x00, 0x0a, 0x3e, 0x4b, 0x4a, 0x4a, 0x30, 0x00 }, /* 0x84 も */ + { 0x00, 0x08, 0x0e, 0x38, 0x46, 0x14, 0x08, 0x00 }, /* 0x85 ゃ */ + { 0x04, 0x07, 0x1c, 0x62, 0x03, 0x0a, 0x04, 0x00 }, /* 0x86 や */ + { 0x00, 0x1c, 0x48, 0x3e, 0x24, 0x18, 0x00, 0x00 }, /* 0x87 ゅ */ + { 0x1e, 0x04, 0x52, 0x3f, 0x12, 0x12, 0x0c, 0x00 }, /* 0x88 ゆ */ + { 0x00, 0x20, 0x50, 0x50, 0x3e, 0x48, 0x00, 0x00 }, /* 0x89 ょ */ + { 0x00, 0x20, 0x50, 0x50, 0x3f, 0x24, 0x44, 0x00 }, /* 0x8A よ */ + { 0x00, 0x1c, 0x51, 0x49, 0x4a, 0x48, 0x30, 0x00 }, /* 0x8B ら */ + { 0x00, 0x0f, 0x42, 0x41, 0x21, 0x1e, 0x00, 0x00 }, /* 0x8C り */ + { 0x00, 0x10, 0x69, 0x6d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8D る */ + { 0x24, 0x14, 0x7f, 0x04, 0x02, 0x3e, 0x40, 0x00 }, /* 0x8E れ */ + { 0x00, 0x10, 0x49, 0x4d, 0x4b, 0x49, 0x30, 0x00 }, /* 0x8F ろ */ + { 0x00, 0x28, 0x18, 0x7e, 0x08, 0x44, 0x38, 0x00 }, /* 0x90 ゎ */ + { 0x24, 0x14, 0x7f, 0x04, 0x42, 0x42, 0x3c, 0x00 }, /* 0x91 わ */ + { 0x30, 0x49, 0x25, 0x1f, 0x24, 0x54, 0x38, 0x00 }, /* 0x92 ゐ */ + { 0x40, 0x28, 0x25, 0x57, 0x35, 0x28, 0x40, 0x00 }, /* 0x93 ゑ */ + { 0x10, 0x0a, 0x2e, 0x5b, 0x72, 0x4a, 0x48, 0x00 }, /* 0x94 を */ + { 0x40, 0x30, 0x0c, 0x33, 0x40, 0x40, 0x20, 0x00 }, /* 0x95 ん */ + { 0x00, 0x04, 0x44, 0x3c, 0x14, 0x0c, 0x00, 0x00 }, /* 0x96 ァ */ + { 0x00, 0x01, 0x41, 0x3d, 0x09, 0x05, 0x03, 0x00 }, /* 0x97 ア */ + { 0x00, 0x20, 0x20, 0x10, 0x78, 0x04, 0x00, 0x00 }, /* 0x98 ィ */ + { 0x00, 0x10, 0x10, 0x08, 0x7c, 0x02, 0x01, 0x00 }, /* 0x99 イ */ + { 0x00, 0x18, 0x48, 0x4c, 0x28, 0x18, 0x00, 0x00 }, /* 0x9A ゥ */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0x9B ウ */ + { 0x00, 0x40, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00 }, /* 0x9C ェ */ + { 0x20, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x20, 0x00 }, /* 0x9D エ */ + { 0x00, 0x28, 0x28, 0x58, 0x7c, 0x08, 0x00, 0x00 }, /* 0x9E ォ */ + { 0x22, 0x22, 0x12, 0x4a, 0x7f, 0x02, 0x02, 0x00 }, /* 0x9F オ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7e, 0x00 }, /* 0xA0 カ */ + { 0x00, 0x42, 0x22, 0x1f, 0x02, 0x42, 0x7f, 0x00 }, /* 0xA1 ガ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x12, 0x10, 0x00 }, /* 0xA2 キ */ + { 0x00, 0x12, 0x12, 0x1f, 0x72, 0x13, 0x10, 0x00 }, /* 0xA3 ギ */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0e, 0x00 }, /* 0xA4 ク */ + { 0x00, 0x08, 0x44, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xA5 グ */ + { 0x08, 0x07, 0x42, 0x22, 0x1e, 0x02, 0x02, 0x00 }, /* 0xA6 ケ */ + { 0x08, 0x07, 0x42, 0x22, 0x1f, 0x02, 0x03, 0x00 }, /* 0xA7 ゲ */ + { 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xA8 コ */ + { 0x00, 0x42, 0x42, 0x42, 0x43, 0x42, 0x7f, 0x00 }, /* 0xA9 ゴ */ + { 0x02, 0x02, 0x4f, 0x42, 0x22, 0x1f, 0x02, 0x00 }, /* 0xAA サ */ + { 0x02, 0x02, 0x4f, 0x42, 0x23, 0x1e, 0x03, 0x00 }, /* 0xAB ザ */ + { 0x00, 0x45, 0x4a, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xAC シ */ + { 0x00, 0x45, 0x4a, 0x40, 0x21, 0x10, 0x0d, 0x00 }, /* 0xAD ジ */ + { 0x40, 0x42, 0x22, 0x22, 0x1a, 0x26, 0x40, 0x00 }, /* 0xAE ス */ + { 0x40, 0x42, 0x22, 0x22, 0x1b, 0x26, 0x41, 0x00 }, /* 0xAF ズ */ + { 0x04, 0x04, 0x3f, 0x44, 0x44, 0x54, 0x4c, 0x00 }, /* 0xB0 セ */ + { 0x04, 0x04, 0x3f, 0x44, 0x45, 0x54, 0x4d, 0x00 }, /* 0xB1 ゼ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x10, 0x0f, 0x00 }, /* 0xB2 ソ */ + { 0x00, 0x01, 0x46, 0x40, 0x20, 0x11, 0x0f, 0x00 }, /* 0xB3 ゾ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0e, 0x00 }, /* 0xB4 タ */ + { 0x00, 0x08, 0x44, 0x4b, 0x2a, 0x12, 0x0f, 0x00 }, /* 0xB5 ダ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x09, 0x08, 0x00 }, /* 0xB6 チ */ + { 0x08, 0x0a, 0x4a, 0x3e, 0x09, 0x08, 0x09, 0x00 }, /* 0xB7 ヂ */ + { 0x00, 0x18, 0x40, 0x58, 0x20, 0x18, 0x00, 0x00 }, /* 0xB8 ッ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x20, 0x10, 0x0e, 0x00 }, /* 0xB9 ツ */ + { 0x02, 0x0c, 0x42, 0x4c, 0x21, 0x10, 0x0d, 0x00 }, /* 0xBA ヅ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x05, 0x04, 0x00 }, /* 0xBB テ */ + { 0x04, 0x05, 0x45, 0x3d, 0x05, 0x04, 0x05, 0x00 }, /* 0xBC デ */ + { 0x00, 0x00, 0x7f, 0x08, 0x08, 0x10, 0x00, 0x00 }, /* 0xBD ト */ + { 0x00, 0x00, 0x7f, 0x08, 0x09, 0x10, 0x01, 0x00 }, /* 0xBE ド */ + { 0x04, 0x44, 0x24, 0x1f, 0x04, 0x04, 0x04, 0x00 }, /* 0xBF ナ */ + { 0x20, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x00 }, /* 0xC0 ニ */ + { 0x40, 0x41, 0x25, 0x15, 0x19, 0x27, 0x00, 0x00 }, /* 0xC1 ヌ */ + { 0x20, 0x22, 0x12, 0x7b, 0x06, 0x12, 0x20, 0x00 }, /* 0xC2 ネ */ + { 0x40, 0x40, 0x20, 0x10, 0x08, 0x07, 0x00, 0x00 }, /* 0xC3 ノ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0c, 0x70, 0x00 }, /* 0xC4 ハ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x71, 0x00 }, /* 0xC5 バ */ + { 0x40, 0x30, 0x0e, 0x00, 0x02, 0x0d, 0x72, 0x00 }, /* 0xC6 パ */ + { 0x00, 0x3f, 0x48, 0x48, 0x48, 0x44, 0x44, 0x00 }, /* 0xC7 ヒ */ + { 0x00, 0x3f, 0x48, 0x48, 0x49, 0x44, 0x45, 0x00 }, /* 0xC8 ビ */ + { 0x00, 0x3f, 0x48, 0x48, 0x4a, 0x45, 0x46, 0x00 }, /* 0xC9 ピ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xCA フ */ + { 0x00, 0x02, 0x42, 0x42, 0x23, 0x12, 0x0f, 0x00 }, /* 0xCB ブ */ + { 0x00, 0x02, 0x42, 0x42, 0x22, 0x15, 0x0e, 0x00 }, /* 0xCC プ */ + { 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00 }, /* 0xCD ヘ */ + { 0x08, 0x04, 0x02, 0x04, 0x09, 0x10, 0x21, 0x00 }, /* 0xCE ベ */ + { 0x08, 0x04, 0x02, 0x04, 0x0a, 0x15, 0x22, 0x00 }, /* 0xCF ペ */ + { 0x24, 0x14, 0x44, 0x7f, 0x04, 0x14, 0x24, 0x00 }, /* 0xD0 ホ */ + { 0x24, 0x14, 0x44, 0x7f, 0x05, 0x14, 0x25, 0x00 }, /* 0xD1 ボ */ + { 0x24, 0x14, 0x44, 0x7f, 0x06, 0x15, 0x22, 0x00 }, /* 0xD2 ポ */ + { 0x02, 0x02, 0x12, 0x22, 0x52, 0x0a, 0x06, 0x00 }, /* 0xD3 マ */ + { 0x00, 0x21, 0x25, 0x29, 0x4a, 0x42, 0x00, 0x00 }, /* 0xD4 ミ */ + { 0x40, 0x70, 0x4c, 0x43, 0x50, 0x20, 0x40, 0x00 }, /* 0xD5 ム */ + { 0x40, 0x44, 0x24, 0x14, 0x08, 0x37, 0x00, 0x00 }, /* 0xD6 メ */ + { 0x00, 0x08, 0x09, 0x3f, 0x49, 0x49, 0x48, 0x00 }, /* 0xD7 モ */ + { 0x00, 0x10, 0x1c, 0x68, 0x08, 0x18, 0x00, 0x00 }, /* 0xD8 ャ */ + { 0x04, 0x04, 0x0f, 0x74, 0x02, 0x0a, 0x06, 0x00 }, /* 0xD9 ヤ */ + { 0x00, 0x40, 0x48, 0x48, 0x78, 0x40, 0x00, 0x00 }, /* 0xDA ュ */ + { 0x20, 0x22, 0x22, 0x22, 0x3e, 0x20, 0x20, 0x00 }, /* 0xDB ユ */ + { 0x00, 0x00, 0x44, 0x54, 0x54, 0x7c, 0x00, 0x00 }, /* 0xDC ョ */ + { 0x00, 0x42, 0x4a, 0x4a, 0x4a, 0x4a, 0x7e, 0x00 }, /* 0xDD ヨ */ + { 0x00, 0x04, 0x45, 0x45, 0x25, 0x15, 0x0c, 0x00 }, /* 0xDE ラ */ + { 0x00, 0x0f, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x00 }, /* 0xDF リ */ + { 0x40, 0x20, 0x1e, 0x00, 0x7f, 0x20, 0x10, 0x00 }, /* 0xE0 ル */ + { 0x00, 0x00, 0x7f, 0x40, 0x20, 0x10, 0x08, 0x00 }, /* 0xE1 レ */ + { 0x00, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x00 }, /* 0xE2 ロ */ + { 0x00, 0x0c, 0x44, 0x44, 0x24, 0x1c, 0x00, 0x00 }, /* 0xE3 ヮ */ + { 0x00, 0x06, 0x42, 0x42, 0x22, 0x12, 0x0e, 0x00 }, /* 0xE4 ワ */ + { 0x10, 0x12, 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x00 }, /* 0xE5 ヰ */ + { 0x20, 0x22, 0x22, 0x3a, 0x26, 0x22, 0x20, 0x00 }, /* 0xE6 ヱ */ + { 0x00, 0x01, 0x45, 0x45, 0x25, 0x15, 0x0f, 0x00 }, /* 0xE7 ヲ */ + { 0x00, 0x41, 0x42, 0x40, 0x20, 0x10, 0x0c, 0x00 }, /* 0xE8 ン */ + { 0x00, 0x06, 0x42, 0x43, 0x22, 0x12, 0x0f, 0x00 }, /* 0xE9 ヴ */ + { 0x00, 0x48, 0x28, 0x1c, 0x48, 0x78, 0x00, 0x00 }, /* 0xEA ヵ */ + { 0x00, 0x10, 0x0c, 0x48, 0x38, 0x08, 0x00, 0x00 }, /* 0xEB ヶ */ + { 0x08, 0x04, 0x04, 0x08, 0x10, 0x10, 0x08, 0x00 }, /* 0xEC 〜 */ + { 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00 }, /* 0xED … */ + { 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 }, /* 0xEE ー */ + { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 0xEF ― */ +}; + +#define MISAKI_FONT_F1_H +PROGMEM const uint8_t misaki_font_f1[ MISAKI_FONT_F1_SIZE + 1 ][ MISAKI_FONT_F1_W ] = +{ + { 0x00, 0x00, 0x00 }, /* 0x00 */ + { 0x00, 0x2f, 0x00 }, /* 0x01 ! */ + { 0x03, 0x00, 0x03 }, /* 0x02 " */ + { 0x3f, 0x12, 0x3f }, /* 0x03 # */ + { 0x16, 0x3f, 0x1a }, /* 0x04 $ */ + { 0x12, 0x08, 0x24 }, /* 0x05 % */ + { 0x32, 0x3d, 0x2a }, /* 0x06 & */ + { 0x02, 0x01, 0x00 }, /* 0x07 ' */ + { 0x00, 0x3e, 0x41 }, /* 0x08 ( */ + { 0x41, 0x3e, 0x00 }, /* 0x09 ) */ + { 0x0a, 0x07, 0x0a }, /* 0x0A * */ + { 0x08, 0x3e, 0x08 }, /* 0x0B + */ + { 0x40, 0x20, 0x00 }, /* 0x0C , */ + { 0x08, 0x08, 0x08 }, /* 0x0D - */ + { 0x00, 0x20, 0x00 }, /* 0x0E . */ + { 0x10, 0x08, 0x04 }, /* 0x0F / */ + { 0x1c, 0x2a, 0x1c }, /* 0x10 0 */ + { 0x24, 0x3e, 0x20 }, /* 0x11 1 */ + { 0x32, 0x2a, 0x24 }, /* 0x12 2 */ + { 0x22, 0x2a, 0x14 }, /* 0x13 3 */ + { 0x18, 0x14, 0x3e }, /* 0x14 4 */ + { 0x2e, 0x2a, 0x12 }, /* 0x15 5 */ + { 0x1c, 0x2a, 0x12 }, /* 0x16 6 */ + { 0x02, 0x3a, 0x06 }, /* 0x17 7 */ + { 0x14, 0x2a, 0x14 }, /* 0x18 8 */ + { 0x24, 0x2a, 0x1c }, /* 0x19 9 */ + { 0x00, 0x24, 0x00 }, /* 0x1A : */ + { 0x40, 0x24, 0x00 }, /* 0x1B ; */ + { 0x08, 0x14, 0x22 }, /* 0x1C < */ + { 0x14, 0x14, 0x14 }, /* 0x1D = */ + { 0x22, 0x14, 0x08 }, /* 0x1E > */ + { 0x02, 0x29, 0x06 }, /* 0x1F ? */ + { 0x12, 0x29, 0x1e }, /* 0x20 @ */ + { 0x3e, 0x09, 0x3e }, /* 0x21 A */ + { 0x3f, 0x25, 0x1a }, /* 0x22 B */ + { 0x1e, 0x21, 0x21 }, /* 0x23 C */ + { 0x3f, 0x21, 0x1e }, /* 0x24 D */ + { 0x3f, 0x25, 0x21 }, /* 0x25 E */ + { 0x3f, 0x05, 0x01 }, /* 0x26 F */ + { 0x1e, 0x21, 0x39 }, /* 0x27 G */ + { 0x3f, 0x08, 0x3f }, /* 0x28 H */ + { 0x21, 0x3f, 0x21 }, /* 0x29 I */ + { 0x10, 0x20, 0x1f }, /* 0x2A J */ + { 0x3f, 0x04, 0x3b }, /* 0x2B K */ + { 0x3f, 0x20, 0x20 }, /* 0x2C L */ + { 0x3f, 0x06, 0x3f }, /* 0x2D M */ + { 0x3f, 0x01, 0x3e }, /* 0x2E N */ + { 0x1e, 0x21, 0x1e }, /* 0x2F O */ + { 0x3f, 0x09, 0x06 }, /* 0x30 P */ + { 0x1e, 0x21, 0x5e }, /* 0x31 Q */ + { 0x3f, 0x09, 0x36 }, /* 0x32 R */ + { 0x22, 0x25, 0x19 }, /* 0x33 S */ + { 0x01, 0x3f, 0x01 }, /* 0x34 T */ + { 0x3f, 0x20, 0x3f }, /* 0x35 U */ + { 0x3f, 0x10, 0x0f }, /* 0x36 V */ + { 0x3f, 0x18, 0x3f }, /* 0x37 W */ + { 0x33, 0x0c, 0x33 }, /* 0x38 X */ + { 0x03, 0x3c, 0x03 }, /* 0x39 Y */ + { 0x31, 0x2d, 0x23 }, /* 0x3A Z */ + { 0x00, 0x7f, 0x41 }, /* 0x3B [ */ + { 0x15, 0x3e, 0x15 }, /* 0x3C \ */ + { 0x41, 0x7f, 0x00 }, /* 0x3D ] */ + { 0x02, 0x01, 0x02 }, /* 0x3E ^ */ + { 0x40, 0x40, 0x40 }, /* 0x3F _ */ + { 0x00, 0x01, 0x02 }, /* 0x40 ` */ + { 0x18, 0x24, 0x3c }, /* 0x41 a */ + { 0x3f, 0x24, 0x18 }, /* 0x42 b */ + { 0x18, 0x24, 0x24 }, /* 0x43 c */ + { 0x18, 0x24, 0x3f }, /* 0x44 d */ + { 0x18, 0x2c, 0x2c }, /* 0x45 e */ + { 0x04, 0x3f, 0x05 }, /* 0x46 f */ + { 0x48, 0x54, 0x3c }, /* 0x47 g */ + { 0x3f, 0x04, 0x38 }, /* 0x48 h */ + { 0x00, 0x3d, 0x00 }, /* 0x49 i */ + { 0x40, 0x3d, 0x00 }, /* 0x4A j */ + { 0x3f, 0x08, 0x34 }, /* 0x4B k */ + { 0x01, 0x3f, 0x00 }, /* 0x4C l */ + { 0x3c, 0x1c, 0x38 }, /* 0x4D m */ + { 0x3c, 0x04, 0x38 }, /* 0x4E n */ + { 0x18, 0x24, 0x18 }, /* 0x4F o */ + { 0x7c, 0x24, 0x18 }, /* 0x50 p */ + { 0x18, 0x24, 0x7c }, /* 0x51 q */ + { 0x3c, 0x08, 0x04 }, /* 0x52 r */ + { 0x28, 0x3c, 0x14 }, /* 0x53 s */ + { 0x04, 0x3e, 0x24 }, /* 0x54 t */ + { 0x3c, 0x20, 0x3c }, /* 0x55 u */ + { 0x3c, 0x10, 0x0c }, /* 0x56 v */ + { 0x3c, 0x30, 0x3c }, /* 0x57 w */ + { 0x24, 0x18, 0x24 }, /* 0x58 x */ + { 0x4c, 0x50, 0x3c }, /* 0x59 y */ + { 0x24, 0x34, 0x2c }, /* 0x5A z */ + { 0x08, 0x36, 0x41 }, /* 0x5B { */ + { 0x00, 0x7f, 0x00 }, /* 0x5C | */ + { 0x41, 0x36, 0x08 }, /* 0x5D } */ + { 0x01, 0x01, 0x01 }, /* 0x5E ~ */ + { 0x10, 0x28, 0x10 }, /* 0x5F 。 */ + { 0x1f, 0x01, 0x01 }, /* 0x60 「 */ + { 0x20, 0x20, 0x3e }, /* 0x61 」 */ + { 0x10, 0x20, 0x00 }, /* 0x62 、 */ + { 0x00, 0x08, 0x00 }, /* 0x63 ・ */ + { 0x25, 0x15, 0x0f }, /* 0x64 ヲ */ + { 0x24, 0x1c, 0x0c }, /* 0x65 ァ */ + { 0x10, 0x38, 0x04 }, /* 0x66 ィ */ + { 0x18, 0x0c, 0x38 }, /* 0x67 ゥ */ + { 0x28, 0x38, 0x28 }, /* 0x68 ェ */ + { 0x28, 0x18, 0x3c }, /* 0x69 ォ */ + { 0x08, 0x3c, 0x18 }, /* 0x6A ャ */ + { 0x28, 0x38, 0x20 }, /* 0x6B ュ */ + { 0x24, 0x2c, 0x3c }, /* 0x6C ョ */ + { 0x2c, 0x2c, 0x1c }, /* 0x6D ッ */ + { 0x04, 0x08, 0x08 }, /* 0x6E ー */ + { 0x21, 0x1d, 0x07 }, /* 0x6F ア */ + { 0x08, 0x3c, 0x03 }, /* 0x70 イ */ + { 0x06, 0x23, 0x1e }, /* 0x71 ウ */ + { 0x22, 0x3e, 0x22 }, /* 0x72 エ */ + { 0x12, 0x0a, 0x3f }, /* 0x73 オ */ + { 0x32, 0x0f, 0x3e }, /* 0x74 カ */ + { 0x0a, 0x3f, 0x0a }, /* 0x75 キ */ + { 0x24, 0x13, 0x0e }, /* 0x76 ク */ + { 0x27, 0x1e, 0x02 }, /* 0x77 ケ */ + { 0x22, 0x22, 0x3e }, /* 0x78 コ */ + { 0x27, 0x12, 0x0f }, /* 0x79 サ */ + { 0x25, 0x25, 0x10 }, /* 0x7A シ */ + { 0x21, 0x19, 0x27 }, /* 0x7B ス */ + { 0x3f, 0x22, 0x2e }, /* 0x7C セ */ + { 0x21, 0x16, 0x0f }, /* 0x7D ソ */ + { 0x24, 0x1b, 0x0e }, /* 0x7E タ */ + { 0x25, 0x1f, 0x05 }, /* 0x7F チ */ + { 0x26, 0x26, 0x1e }, /* 0x80 ツ */ + { 0x25, 0x1d, 0x05 }, /* 0x81 テ */ + { 0x3f, 0x04, 0x08 }, /* 0x82 ト */ + { 0x24, 0x1f, 0x04 }, /* 0x83 ナ */ + { 0x20, 0x22, 0x22 }, /* 0x84 ニ */ + { 0x25, 0x19, 0x27 }, /* 0x85 ヌ */ + { 0x12, 0x3b, 0x16 }, /* 0x86 ネ */ + { 0x20, 0x10, 0x0f }, /* 0x87 ノ */ + { 0x3c, 0x01, 0x3e }, /* 0x88 ハ */ + { 0x1f, 0x24, 0x24 }, /* 0x89 ヒ */ + { 0x21, 0x11, 0x0f }, /* 0x8A フ */ + { 0x0c, 0x03, 0x1c }, /* 0x8B ヘ */ + { 0x1a, 0x3f, 0x1a }, /* 0x8C ホ */ + { 0x09, 0x19, 0x27 }, /* 0x8D マ */ + { 0x22, 0x2a, 0x2a }, /* 0x8E ミ */ + { 0x38, 0x27, 0x30 }, /* 0x8F ム */ + { 0x32, 0x0c, 0x13 }, /* 0x90 メ */ + { 0x05, 0x3f, 0x25 }, /* 0x91 モ */ + { 0x02, 0x3f, 0x0e }, /* 0x92 ヤ */ + { 0x21, 0x3f, 0x20 }, /* 0x93 ユ */ + { 0x25, 0x25, 0x3f }, /* 0x94 ヨ */ + { 0x25, 0x25, 0x1d }, /* 0x95 ラ */ + { 0x07, 0x20, 0x1f }, /* 0x96 リ */ + { 0x3c, 0x3f, 0x20 }, /* 0x97 ル */ + { 0x3f, 0x20, 0x10 }, /* 0x98 レ */ + { 0x3e, 0x22, 0x3e }, /* 0x99 ロ */ + { 0x23, 0x11, 0x0f }, /* 0x9A ワ */ + { 0x21, 0x21, 0x18 }, /* 0x9B ン */ + { 0x01, 0x00, 0x01 }, /* 0x9C ゙ */ + { 0x02, 0x05, 0x02 }, /* 0x9D ゚ */ +}; +#define MISAKI_FONT_F2_H +PROGMEM const uint8_t misaki_font_f2[ MISAKI_FONT_F2_SIZE + 1 ][ MISAKI_FONT_F2_W ] = +{ + { 0x75, 0x40, 0x77, 0x55, 0x75, 0x77, 0x40 }, /* 0x00 温 */ + { 0x40, 0x3e, 0x4a, 0x5e, 0x2b, 0x5e, 0x4a }, /* 0x01 度 */ + { 0x6b, 0x62, 0x7f, 0x35, 0x2f, 0x35, 0x7f }, /* 0x02 調 */ + { 0x7c, 0x5b, 0x5e, 0x24, 0x7b, 0x0e, 0x3a }, /* 0x03 節 */ + { 0x04, 0x7e, 0x01, 0x7e, 0x4a, 0x5e, 0x69 }, /* 0x04 低 */ + { 0x06, 0x3a, 0x2f, 0x3f, 0x6b, 0x7e, 0x46 }, /* 0x05 電 */ + { 0x40, 0x3f, 0x41, 0x49, 0x7f, 0x49, 0x41 }, /* 0x06 圧 */ + { 0x02, 0x62, 0x6b, 0x6b, 0x6b, 0x62, 0x02 }, /* 0x07 言 */ + { 0x6a, 0x6b, 0x14, 0x7d, 0x57, 0x7d, 0x10 }, /* 0x08 語 */ + { 0x41, 0x3f, 0x55, 0x55, 0x3d, 0x57, 0x51 }, /* 0x09 戻 */ + { 0x21, 0x3f, 0x2d, 0x7f, 0x2a, 0x12, 0x2e }, /* 0x0A 取 */ + { 0x0a, 0x77, 0x5a, 0x50, 0x5a, 0x77, 0x0a }, /* 0x0B 替 */ + { 0x20, 0x24, 0x13, 0x7d, 0x55, 0x53, 0x70 }, /* 0x0C 名 */ + { 0x7a, 0x2a, 0x7b, 0x02, 0x1a, 0x43, 0x7a }, /* 0x0D 前 */ + { 0x4a, 0x52, 0x5e, 0x2b, 0x5e, 0x42, 0x4a }, /* 0x0E 変 */ + { 0x41, 0x5f, 0x35, 0x3f, 0x55, 0x5f, 0x41 }, /* 0x0F 更 */ + { 0x7d, 0x14, 0x57, 0x7d, 0x0e, 0x40, 0x7f }, /* 0x10 削 */ + { 0x7f, 0x1b, 0x54, 0x16, 0x7d, 0x16, 0x54 }, /* 0x11 除 */ + { 0x49, 0x3a, 0x40, 0x7e, 0x57, 0x56, 0x76 }, /* 0x12 追 */ + { 0x42, 0x3f, 0x42, 0x7e, 0x7e, 0x42, 0x7e }, /* 0x13 加 */ + { 0x04, 0x7e, 0x51, 0x37, 0x7d, 0x37, 0x50 }, /* 0x14 保 */ + { 0x12, 0x7a, 0x17, 0x52, 0x76, 0x1e, 0x12 }, /* 0x15 存 */ + { 0x7f, 0x55, 0x7f, 0x14, 0x5d, 0x7f, 0x55 }, /* 0x16 睡 */ + { 0x7f, 0x55, 0x7f, 0x7f, 0x55, 0x3d, 0x57 }, /* 0x17 眠 */ + { 0x7f, 0x55, 0x37, 0x78, 0x17, 0x45, 0x7f }, /* 0x18 閉 */ + { 0x7f, 0x2b, 0x7b, 0x28, 0x7b, 0x2b, 0x7f }, /* 0x19 開 */ + { 0x1e, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x1e }, /* 0x1A 中 */ + { 0x7f, 0x41, 0x6b, 0x7f, 0x6b, 0x51, 0x7f }, /* 0x1B 国 */ + { 0x52, 0x5a, 0x57, 0x3a, 0x57, 0x5a, 0x52 }, /* 0x1C 英 */ + { 0x00, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x7f }, /* 0x1D 日 */ + { 0x22, 0x12, 0x2a, 0x7f, 0x2a, 0x12, 0x22 }, /* 0x1E 本 */ + { 0x16, 0x6a, 0x5e, 0x73, 0x56, 0x62, 0x16 }, /* 0x1F 密 */ + { 0x09, 0x37, 0x31, 0x5f, 0x15, 0x5f, 0x75 }, /* 0x20 碼 */ + { 0x42, 0x22, 0x1e, 0x0b, 0x4a, 0x7a, 0x02 }, /* 0x21 方 */ + { 0x7e, 0x02, 0x3a, 0x2b, 0x3a, 0x42, 0x7e }, /* 0x22 向 */ +}; +/* + プリセット + 温度調節 + タイマー + コントロール + スクリーン + ブザー + 低電圧アラーム + 言語 + 戻る + 取り替える + キャリブレーション + 名前を変更 + 削除 + 追加 + 保存 + デフォルト + 睡眠 + ブースト + 保存 + 睡眠 + 閉じる + ブースト + 保存 + ダイレクト + PID + ビッグ + ニュース + 閉じる + 開く + いいえ、 + はい、 + 中国語 + 英語 + いいえ、 + はい、 + メインスクリーン + フリップ + 保存 + アバウト + 日本語 + つまみ方向 + + 汉字转换表:温度調節低電圧言語戻取替名前変更削除追加保存睡眠閉開中国英日本密碼 +*/ +const char JP_0[] PROGMEM = { 0xf0, 0xcc, 0xdf, 0xb0, 0xb8, 0xbd, }; +const char JP_1[] PROGMEM = { 0xf2, 0x00, 0x01, 0x02, 0x03, }; +const char JP_2[] PROGMEM = { 0xf0, 0xb4, 0x99, 0xd3, 0xee, }; +const char JP_3[] PROGMEM = { 0xf0, 0xa8, 0xe8, 0xbd, 0xe2, 0xee, 0xe0, }; +const char JP_4[] PROGMEM = { 0xf0, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_5[] PROGMEM = { 0xf0, 0xcb, 0xab, 0xee, }; +const char JP_6[] PROGMEM = { 0xf2, 0x04, 0x05, 0x06, 0xf0, 0x97, 0xde, 0xee, 0xd5, }; +const char JP_7[] PROGMEM = { 0xf2, 0x07, 0x08, }; +const char JP_8[] PROGMEM = { 0xf2, 0x09, 0xf0, 0x8d, }; +const char JP_9[] PROGMEM = { 0xf2, 0x0a, 0xf0, 0x8c, 0xf2, 0x0b, 0xf0, 0x4a, 0x8d, }; +const char JP_10[] PROGMEM = { 0xf0, 0xa2, 0xd8, 0xdf, 0xcb, 0xe1, 0xee, 0xac, 0xdc, 0xe8, }; +const char JP_11[] PROGMEM = { 0xf2, 0x0c, 0x0d, 0xf0, 0x94, 0xf2, 0x0e, 0x0f, }; +const char JP_12[] PROGMEM = { 0xf2, 0x10, 0x11, }; +const char JP_13[] PROGMEM = { 0xf2, 0x12, 0x13, }; +const char JP_14[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_15[] PROGMEM = { 0xf0, 0xbc, 0xca, 0x9e, 0xe0, 0xbd, }; +const char JP_16[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_17[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_18[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_19[] PROGMEM = { 0xf2, 0x16, 0x17, }; +const char JP_20[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_21[] PROGMEM = { 0xf0, 0xcb, 0xee, 0xae, 0xbd, }; +const char JP_22[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_23[] PROGMEM = { 0xf0, 0xb5, 0x99, 0xe1, 0xa4, 0xbd, }; +const char JP_24[] PROGMEM = { 0xf1, 0x30, 0x29, 0x24, }; +const char JP_25[] PROGMEM = { 0xf0, 0xc8, 0xb8, 0xa5, }; +const char JP_26[] PROGMEM = { 0xf0, 0xc0, 0xda, 0xee, 0xae, }; +const char JP_27[] PROGMEM = { 0xf2, 0x18, 0xf0, 0x5a, 0x8d, }; +const char JP_28[] PROGMEM = { 0xf2, 0x19, 0xf0, 0x51, }; +const char JP_29[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_30[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_31[] PROGMEM = { 0xf2, 0x1a, 0x1b, 0x08, }; +const char JP_32[] PROGMEM = { 0xf2, 0x1c, 0x08, }; +const char JP_33[] PROGMEM = { 0xf0, 0x46, 0x46, 0x4a, 0x01, }; +const char JP_34[] PROGMEM = { 0xf0, 0x71, 0x46, 0x01, }; +const char JP_35[] PROGMEM = { 0xf0, 0xd6, 0x99, 0xe8, 0xae, 0xa4, 0xdf, 0xee, 0xe8, }; +const char JP_36[] PROGMEM = { 0xf0, 0xca, 0xdf, 0xb8, 0xcc, }; +const char JP_37[] PROGMEM = { 0xf2, 0x14, 0x15, }; +const char JP_38[] PROGMEM = { 0xf0, 0x97, 0xc5, 0x9b, 0xbd, }; +const char JP_39[] PROGMEM = { 0xf2, 0x1d, 0x1e, 0x08, }; +const char JP_40[] PROGMEM = { 0xf2, 0x1f, 0x20, }; //密码 +const char JP_41[] PROGMEM = { 0xf0, 0x66, 0x80, 0x81, 0xf2, 0x21, 0x22, }; //つまみ方向 +const char *const JP_table[] = {JP_0, JP_1, JP_2, JP_3, JP_4, JP_5, JP_41, JP_6, JP_40, JP_7, JP_38, JP_8, JP_9, JP_10, JP_11, JP_12, JP_13, JP_14, JP_15, JP_16, JP_17, JP_18, JP_19, JP_20, JP_21, JP_22, JP_23, JP_24, JP_25, JP_26, JP_27, JP_28, JP_29, JP_30, JP_31, JP_32, JP_39, JP_35, JP_36, JP_37,}; +const char JP_Length_table[] PROGMEM = {6, 5, 5, 7, 6, 4, 7, 9, 3, 3 , 5, 4, 9, 10, 8, 3, 3, 3, 6, 3, 5, 3, 3, 5, 5, 3, 6, 4, 4, 5, 5, 4, 5, 4, 4, 3, 4, 9, 5, 3,}; + +#endif + +bool lastbutton; +#include //注意 这里使用被阉割的图形库,只有绘图功能,并非通用的版本 +Arduboy2 arduboy; + +#include +#include +#include + +// Firmware version +#define VERSION "v1.8t3" + +// Type of rotary encoder +#define ROTARY_TYPE 1 // 0: 2 increments/step; 1: 4 increments/step + +// Pins +#define SENSOR_PIN A0 // temperature sense +#define VIN_PIN A1 // input voltage sense +#define BUZZER_PIN 5 // buzzer +#define BUTTON_PIN 6 // rotary encoder switch +#define ROTARY_1_PIN 7 // rotary encoder 1 +#define ROTARY_2_PIN 8 // rotary encoder 2 +#define CONTROL_PIN 9 // heater MOSFET PWM control +#define SWITCH_PIN 10 // handle vibration switch + +// Default temperature control values (recommended soldering temperature: 300-380°C) +#define ChipTempCalVal 335 //芯片内部温度读取校准值 -->可以根据实际情况修改,不同机器情况不同,通常误差在10°C内 +#define TEMP_MIN 150 // min selectable temperature +#define TEMP_MAX 400 // max selectable temperature +#define TEMP_DEFAULT 320 // default start setpoint +#define TEMP_SLEEP 150 // temperature in sleep mode +#define TEMP_BOOST 60 // temperature increase in boost mode +#define TEMP_STEP 10 // rotary encoder temp change steps + +// Default tip temperature calibration values +#define TEMP200 216 // temperature at ADC = 200 +#define TEMP280 308 // temperature at ADC = 280 +#define TEMP360 390 // temperature at ADC = 360 +#define TEMPCHP 30 // chip temperature while calibration +#define TIPMAX 8 // max number of tips +#define TIPNAMELENGTH 6 // max length of tip names (including termination) +#define TIPNAME "BC1.5" // default tip name + +// Default timer values (0 = disabled) +#define TIME2SLEEP 5 // time to enter sleep mode in minutes +#define TIME2OFF 15 // time to shut off heater in minutes +#define TIMEOFBOOST 40 // time to stay in boost mode in seconds + +// Control values +#define TIME2SETTLE 950 // time in microseconds to allow OpAmp output to settle +#define SMOOTHIE 0.05 // OpAmp output smooth factor (1=no smoothing; 0.05 default) +#define PID_ENABLE true // enable PID control +#define BEEP_ENABLE true // enable/disable buzzer +#define MAINSCREEN 1 // type of main screen (0: big numbers; 1: more infos) + +// EEPROM identifier +#define EEPROM_IDENT 0x140A // to identify if EEPROM was written by this program + +//Beep +#define SetBeepCoolTime 200 +unsigned long BeepCoolTime; + +// Define the aggressive and conservative PID tuning parameters +double aggKp = 11, aggKi = 0.5, aggKd = 1; +double consKp = 11, consKi = 3, consKd = 5; + +// Default values that can be changed by the user and stored in the EEPROM +uint16_t DefaultTemp = TEMP_DEFAULT; +uint16_t SleepTemp = TEMP_SLEEP; +uint8_t BoostTemp = TEMP_BOOST; +uint8_t time2sleep = TIME2SLEEP; +uint8_t time2off = TIME2OFF; +uint8_t timeOfBoost = TIMEOFBOOST; +uint8_t MainScrType = MAINSCREEN; +bool PIDenable = PID_ENABLE; +bool beepEnable = BEEP_ENABLE; +// Default values for tips +uint16_t CalTemp[TIPMAX][4] = {TEMP200, TEMP280, TEMP360, TEMPCHP}; +char TipName[TIPMAX][TIPNAMELENGTH] = {TIPNAME}; +uint8_t CurrentTip = 0; +uint8_t NumberOfTips = 1; + +// Menu items +/* + 这个可以选择进行界面美化 + const char *DeleteMessage[] = { "Warning", "You cannot", "delete your", "last tip!" }; + const char *MaxTipMessage[] = { "Warning", "You reached", "maximum number", "of tips!" }; +*/ +// Variables for pin change interrupt +volatile uint8_t a0, b0, c0, d0; +volatile bool ab0; +volatile int count, countMin, countMax, countStep; +volatile bool handleMoved; + +// Variables for temperature control +uint16_t SetTemp, ShowTemp, gap, Step; +double Input, Output, Setpoint, RawTemp, CurrentTemp, ChipTemp; + +// Variables for voltage readings +uint16_t Vcc, Vin; + +// State variables +bool inSleepMode = false; +bool inOffMode = false; +bool inBoostMode = false; +bool inCalibMode = false; +bool isWorky = true; +bool beepIfWorky = true; +bool TipIsPresent = true; +bool FlipState = false; +// Timing variables +uint32_t sleepmillis; +uint32_t boostmillis; +uint32_t buttonmillis; +uint8_t goneMinutes; +uint8_t goneSeconds; +uint8_t SensorCounter = 255; +//串口助手 +int x, y, a, b; +//欠压报警 +byte UnderVoltage = 0; +// Control variables +uint16_t time2settle = 300; + +//模拟数字滚轮 Numerical scrolling effect +int Value; +int LastValue[3]; +float SlidingAnimationY[3]; + +//开机密码 BootPassword +int Password = 0; + +//屏幕保护-主题:密集运算 +byte Line[4]; + +//编码器旋转调整方向设定 +bool RotaryD = false; +// Specify the links and initial PID tuning parameters +PID ctrl(&Input, &Output, &Setpoint, aggKp, aggKi, aggKd, REVERSE); + + + +//LANG 语言支持 +/* 0 - 中文 CHINESE + 1 - 英文 ENGLISH + 2 - 日语 +*/ +byte LANG = 0; +void Flip(bool Fmode) { + arduboy.flipVertical(Fmode); + arduboy.flipHorizontal(Fmode); +} + +ISR(WDT_vect) //WDT中断,8秒一次 +{ + WDTCSR |= _BV(WDIE); +} + +void setup() { + //设置看门狗自动复位 + SetWDT(); + //启动arduboy + arduboy.begin(); + arduboy.setFrameRate(30); + + //Serial.begin(115200); + // set the pin modes + + //设置IO + pinMode(SENSOR_PIN, INPUT); + pinMode(VIN_PIN, INPUT); + pinMode(BUZZER_PIN, OUTPUT); + pinMode(CONTROL_PIN, OUTPUT); + pinMode(ROTARY_1_PIN, INPUT_PULLUP); + pinMode(ROTARY_2_PIN, INPUT_PULLUP); + pinMode(BUTTON_PIN, INPUT_PULLUP); + pinMode(SWITCH_PIN, INPUT_PULLUP); + + analogWrite(CONTROL_PIN, 255); // this shuts off the heater + digitalWrite(BUZZER_PIN, LOW); // must be LOW when buzzer not in use + + // setup ADC 初始化ADC + ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2); // set ADC prescaler to 128 + ADCSRA |= bit (ADIE); // enable ADC interrupt + interrupts (); // enable global interrupts + + // setup pin change interrupt for rotary encoder 初始化编码器IO + PCMSK0 = bit (PCINT0); // Configure pin change interrupt on Pin8 + PCICR = bit (PCIE0); // Enable pin change interrupt + PCIFR = bit (PCIF0); // Clear interrupt flag + + + // get default values from EEPROM + getEEPROM(); + //设置屏幕反转状态 + Flip(FlipState); + //初始化屏幕保护动画 + for (byte a = 0; a < 4; a++) Line[a] = 32 * a; + //开机密码 + BootPassword(); + + // read supply voltages in mV + Vcc = getVCC(); Vin = getVIN(); + + // read and set current iron temperature + SetTemp = DefaultTemp; + RawTemp = denoiseAnalog(SENSOR_PIN); + ChipTemp = getChipTemp(); + calculateTemp(); + + // turn on heater if iron temperature is well below setpoint + if ((CurrentTemp + 20) < DefaultTemp) analogWrite(CONTROL_PIN, 0); + + // tell the PID to range between 0 and the full window size + ctrl.SetOutputLimits(0, 255); + + // start PID + ctrl.SetMode(AUTOMATIC); + + // set initial rotary encoder values + a0 = PINB & 1; b0 = PIND >> 7 & 1; ab0 = (a0 == b0); + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + + // reset sleep timer + sleepmillis = millis(); + + // long beep for setup completion + beep(); beep(); + +} + + +void loop() { + //HelpMeSerialer(); + ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu) + SLEEPCheck(); // check and activate/deactivate sleep modes + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + MainScreen(); // updates the main page on the OLED + //beep(0); +} + + + + +// check rotary encoder; set temperature, toggle boost mode, enter setup menu accordingly +void ROTARYCheck() { + // set working temperature according to rotary encoder value + SetTemp = getRotary(); + + // check rotary encoder switch + uint8_t c = digitalRead(BUTTON_PIN); + if ( !c && c0 ) { + beep(); + buttonmillis = millis(); + while ( (!digitalRead(BUTTON_PIN)) && ((millis() - buttonmillis) < 500) ); + if ((millis() - buttonmillis) >= 500) SetupScreen(); + else { + inBoostMode = !inBoostMode; + if (inBoostMode) boostmillis = millis(); + handleMoved = true; + } + } + c0 = c; + + // check timer when in boost mode + if (inBoostMode && timeOfBoost) { + goneSeconds = (millis() - boostmillis) / 1000; + if (goneSeconds >= timeOfBoost) { + inBoostMode = false; // stop boost mode + beep(); // beep if boost mode is over + beepIfWorky = true; // beep again when working temperature is reached + } + } +} + + +// check and activate/deactivate sleep modes +void SLEEPCheck() { + if (handleMoved) { // if handle was moved + if (inSleepMode) { // in sleep or off mode? + if ((CurrentTemp + 20) < SetTemp) // if temp is well below setpoint + analogWrite(CONTROL_PIN, 0); // then start the heater right now + beep(); // beep on wake-up + beepIfWorky = true; // beep again when working temperature is reached + } + handleMoved = false; // reset handleMoved flag + inSleepMode = false; // reset sleep flag + inOffMode = false; // reset off flag + sleepmillis = millis(); // reset sleep timer + } + + // check time passed since the handle was moved + goneMinutes = (millis() - sleepmillis) / 60000; + if ( (!inSleepMode) && (time2sleep > 0) && (goneMinutes >= time2sleep) ) { + inSleepMode = true; + beep(); + } + if ( (!inOffMode) && (time2off > 0) && (goneMinutes >= time2off ) ) { + inOffMode = true; + beep(); + } +} + + +// reads temperature, vibration switch and supply voltages +void SENSORCheck() { + analogWrite(CONTROL_PIN, 255); // shut off heater in order to measure temperature + delayMicroseconds(time2settle); // wait for voltage to settle + + uint16_t temp = denoiseAnalog(SENSOR_PIN); // read ADC value for temperature + uint8_t d = digitalRead(SWITCH_PIN); // check handle vibration switch + if (d != d0) { + handleMoved = true; // set flag if handle was moved + d0 = d; + } + if (! SensorCounter--) Vin = getVIN(); // get Vin every now and then + + analogWrite(CONTROL_PIN, Output); // turn on again heater + + RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading + calculateTemp(); + + // stabilize displayed temperature when around setpoint + if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp; + if (abs(ShowTemp - Setpoint) <= 1) ShowTemp = Setpoint; + // set state variable if temperature is in working range; beep if working temperature was just reached + gap = abs(SetTemp - CurrentTemp); + if (gap < 5) { + if (!isWorky && beepIfWorky) beep(); + isWorky = true; + beepIfWorky = false; + } + else isWorky = false; + // checks if tip is present or currently inserted + if (ShowTemp > 500) TipIsPresent = false; // tip removed ? + if (!TipIsPresent && (ShowTemp < 500)) { // new tip inserted ? + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); // beep for info + TipIsPresent = true; // tip is present now + ChangeTipScreen(); // show tip selection screen + updateEEPROM(); // update setting in EEPROM + handleMoved = true; // reset all timers + RawTemp = denoiseAnalog(SENSOR_PIN); // restart temp smooth algorithm + c0 = LOW; // switch must be released + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder + } +} + + +// calculates real temperature value according to ADC reading and calibration values +void calculateTemp() { + if (RawTemp < 200) CurrentTemp = map (RawTemp, 0, 200, 21, CalTemp[CurrentTip][0]); + else if (RawTemp < 280) CurrentTemp = map (RawTemp, 200, 280, CalTemp[CurrentTip][0], CalTemp[CurrentTip][1]); + else CurrentTemp = map (RawTemp, 280, 360, CalTemp[CurrentTip][1], CalTemp[CurrentTip][2]); +} + + +//调温 +void Thermostat() { + // define Setpoint acoording to current working mode + if (inOffMode) Setpoint = 0; + else if (inSleepMode) Setpoint = SleepTemp; + else if (inBoostMode) Setpoint = SetTemp + BoostTemp; + else Setpoint = SetTemp; + + // control the heater (PID or direct) + gap = abs(Setpoint - CurrentTemp); + if (PIDenable) { + Input = CurrentTemp; + if (gap < 30) ctrl.SetTunings(consKp, consKi, consKd); + else ctrl.SetTunings(aggKp, aggKi, aggKd); + ctrl.Compute(); + } else { + // turn on heater if current temperature is below setpoint + if ((CurrentTemp + 0.5) < Setpoint) Output = 0; else Output = 255; + } + analogWrite(CONTROL_PIN, Output); // set heater PWM +} + + +// creates a short beep on the buzzer +void beep() { + /* + if (beepEnable) { + if (BeepCoolTime + SetBeepCoolTime < millis()) { + if (state) BeepCoolTime = millis(); + analogWrite(BUZZER_PIN, 0); + } else analogWrite(BUZZER_PIN, 127); + } else analogWrite(BUZZER_PIN, 0); + */ + //体谅一下,没内存了,只能用原始的办法驱动无源蜂鸣器,否则我也不想牺牲宝贵响应资源换内存 + if (beepEnable) { + for (uint8_t i = 0; i < 255; i++) { + digitalWrite(BUZZER_PIN, HIGH); + delayMicroseconds(125); + digitalWrite(BUZZER_PIN, LOW); + delayMicroseconds(125); + } + } +} + +//设置旋转编码器的起始值 +// sets start values for rotary encoder +void setRotary(int rmin, int rmax, int rstep, int rvalue) { + countMin = rmin << ROTARY_TYPE; + countMax = rmax << ROTARY_TYPE; + if (RotaryD) countStep = rstep; else countStep = -rstep; + count = rvalue << ROTARY_TYPE; +} + + +// reads current rotary encoder value +int getRotary() { + return (count >> ROTARY_TYPE); +} + + +// reads user settings from EEPROM; if EEPROM values are invalid, write defaults +void getEEPROM() { + uint16_t identifier = (EEPROM.read(0) << 8) | EEPROM.read(1); + if (identifier == EEPROM_IDENT) { + DefaultTemp = (EEPROM.read(2) << 8) | EEPROM.read(3); + SleepTemp = (EEPROM.read(4) << 8) | EEPROM.read(5); + BoostTemp = EEPROM.read(6); + time2sleep = EEPROM.read(7); + time2off = EEPROM.read(8); + timeOfBoost = EEPROM.read(9); + MainScrType = EEPROM.read(10); + PIDenable = EEPROM.read(11); + beepEnable = EEPROM.read(12); + CurrentTip = EEPROM.read(13); + NumberOfTips = EEPROM.read(14); + LANG = EEPROM.read(15); + FlipState = EEPROM.read(16); + UnderVoltage = EEPROM.read(17); + Password = (EEPROM.read(18) << 8) | EEPROM.read(19); + RotaryD = EEPROM.read(20); + uint8_t i, j; + uint16_t counter = 21; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) { + TipName[i][j] = EEPROM.read(counter++); + } + for (j = 0; j < 4; j++) { + CalTemp[i][j] = EEPROM.read(counter++) << 8; + CalTemp[i][j] |= EEPROM.read(counter++); + } + } + } + else { + EEPROM.update(0, EEPROM_IDENT >> 8); EEPROM.update(1, EEPROM_IDENT & 0xFF); + updateEEPROM(); + } +} + + +// writes user settings to EEPROM using updade function to minimize write cycles +void updateEEPROM() { + EEPROM.update( 2, DefaultTemp >> 8); + EEPROM.update( 3, DefaultTemp & 0xFF); + EEPROM.update( 4, SleepTemp >> 8); + EEPROM.update( 5, SleepTemp & 0xFF); + EEPROM.update( 6, BoostTemp); + EEPROM.update( 7, time2sleep); + EEPROM.update( 8, time2off); + EEPROM.update( 9, timeOfBoost); + EEPROM.update(10, MainScrType); + EEPROM.update(11, PIDenable); + EEPROM.update(12, beepEnable); + EEPROM.update(13, CurrentTip); + EEPROM.update(14, NumberOfTips); + EEPROM.update(15, LANG); + EEPROM.update(16, FlipState); + EEPROM.update(17, UnderVoltage); + EEPROM.update(18, Password >> 8); + EEPROM.update(19, Password & 0xFF); + EEPROM.update(20, RotaryD); + uint8_t i, j; + uint16_t counter = 21; + for (i = 0; i < NumberOfTips; i++) { + for (j = 0; j < TIPNAMELENGTH; j++) EEPROM.update(counter++, TipName[i][j]); + for (j = 0; j < 4; j++) { + EEPROM.update(counter++, CalTemp[i][j] >> 8); + EEPROM.update(counter++, CalTemp[i][j] & 0xFF); + } + } +} +//此片段用于DEBUG +void HelpMeSerialer() { + //串口助手 + if (Serial.available()) { + char TmpChar = Serial.read(); + switch (TmpChar) { + case 'x': x = Serial.parseInt(); + case 'y': y = Serial.parseInt(); + case 'a': a = Serial.parseInt(); + case 'b': b = Serial.parseInt(); + } + } + /* + Serial.println(String("X ->") + x); + Serial.println(String("Y ->") + y); + Serial.println(String("A ->") + a); + Serial.println(String("B ->") + b); + */ +} +// draws the main screen +void MainScreen() { + if (!(arduboy.nextFrame())) //帧率锁 + return; + //状态 + byte SysState; + if (ShowTemp > 500) SysState = 0; + else if (inOffMode) { + SysState = 1; + DrawIntensiveComputing(); + } else if (inSleepMode) SysState = 2; + else if (inBoostMode) SysState = 3; + else if (isWorky) SysState = 4; + else if (Output < 180) SysState = 5; + else SysState = 6; + if (SysState != 1) { + if (MainScrType) { + //arduboy.invert(0); + arduboy.clear(); + //详细信息页 + arduboy.fillRect(0, 0, 128, 64, 1); //白底 + arduboy.setTextSize(1); + SetTextColor(0); + //预设名 + arduboy.drawSlowXYBitmap(0, 0, Tag, 16, 16, 0); + arduboy.setCursor(19, 4); arduboy.print(TipName[CurrentTip]); + //显示状态 + arduboy.setCursor(53, 1); + arduboy.setTextSize(2); + switch (LANG) { + case 0: arduboy.drawSlowXYBitmap(80, 1, S_table[SysState], 28, 14, 0); break; //中文 Chinese + default: //英文 English + switch (SysState) { + case 1: arduboy.print(F("OFF")); break; + case 2: arduboy.print(F("SLEEP")); break; + case 3: arduboy.print(F("BOOST")); break; + case 4: arduboy.print(F("WORKY")); break; + case 5: arduboy.print(F("HEAT")); break; + case 6: arduboy.print(F("HOLD")); break; + default: arduboy.print(F("ERROR")); break; + } break; + } + arduboy.drawSlowXYBitmap(113, 1, C_table[SysState], 14, 14, 0); + arduboy.setTextSize(1); + //芯片 + //R1 + + //自动报警-图标闪烁 + if (getChipTemp() < 80 || ((millis() * 4) / 1000) % 2) { + arduboy.setCursor(19, 16); arduboy.print(getChipTemp(), 1); arduboy.print((char)248); arduboy.print(F("C")); //芯片温度 + arduboy.drawSlowXYBitmap(2, 18, Chip, 14, 14, 0); + } + //R2 + if ((float)Vin / 100 > UnderVoltage || ((millis() * 4) / 1000) % 2) { + arduboy.setCursor(19, 32); arduboy.print((float)Vin / 1000, 1); arduboy.print(F("V")); //输入电压 + arduboy.drawSlowXYBitmap(2, 34, Lightning, 14, 14, 0); + } + + + //R3 + + arduboy.setCursor(19, 24); arduboy.print((float)getVCC() / 1000, 2); arduboy.print(F("V")); //芯片电压 + + arduboy.setCursor(19, 40); arduboy.print(F(VERSION)); //固件 + //显示探头温度 + DrawNumRect(ShowTemp); + + DrawStatusBar(0); + arduboy.display(); + //警报声 + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2 || (float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); + } else { + //arduboy.invert(1); + arduboy.setTextSize(6); + SetTextColor(1); + arduboy.clear(); + if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); + if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); + arduboy.setCursor(12, 2); + + if (ShowTemp > 500) arduboy.print(999); else arduboy.print(ShowTemp); + arduboy.fillRect(0, 48, 128, 16, 1); + + DrawStatusBar(0); + arduboy.display(); + } + } +} +void DrawNumRect(int n) { + arduboy.setCursor(57, 18); + arduboy.setTextSize(4); + if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(n); + arduboy.drawRect(55, 16, 72, 32, 0); +} +void DrawStatusBar(bool color) { + SetTextColor(color); + arduboy.setTextSize(1); + //温度条 + //框 + arduboy.drawRect(1, 49, 102, 14, color); + //条 + if (ShowTemp <= 500) arduboy.fillRect(1, 49, map(ShowTemp, 0, 500, 2, 102), 14, color); + //指示部分 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 2, 50, 3, 13, color); + //先来个白底 + arduboy.fillRect(map(Setpoint, 0, 500, 2, 102) - 3, 60, 5, 4, color); + arduboy.drawLine(map(Setpoint, 0, 500, 2, 102) - 1, 60, map(Setpoint, 0, 500, 2, 102) - 1, 49, !color); + + //画指示针 + arduboy.drawSlowXYBitmap(map(Setpoint, 0, 500, 2, 102) - 3, 59, Pointer, 5, 4, !color); + + //功率条 + arduboy.drawRect(104, 49, 23, 14, color); + arduboy.fillRect(104, 49, map(Output, 255, 0, 0, 23), 14, color); + + SetTextColor(!color); + //////////////进入反色//////////////////////////////// + arduboy.setCursor(2, 55); arduboy.print(Setpoint, 0); arduboy.print((char)248); arduboy.print(F("C")); //探头预设温度 + arduboy.setCursor(105, 55); arduboy.print(map(Output, 255, 0, 0, 100)); arduboy.print(F("%")); //功率百分比 + SetTextColor(color); +} + +//设置画笔颜色 +void SetTextColor(bool color) { + arduboy.setTextBackground(!color); + arduboy.setTextColor(color); +} +// setup screen +void SetupScreen() { + analogWrite(CONTROL_PIN, 255); // shut off heater + beep(); + uint16_t SaveSetTemp = SetTemp; + uint8_t selection = 0; + bool repeat = true; + + while (repeat) { + //arduboy.invert(0); + MenuLevel = 0; //默认打开主菜单 + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 1; TipScreen(); repeat = false; break; + case 1: MenuLevel = 2; TempScreen(); break; + case 2: MenuLevel = 3; TimerScreen(); break; + case 3: MenuLevel = 4; PIDenable = MenuScreen(PIDenable); break; + case 4: ScreenSet(); break; + case 5: MenuLevel = 6; beepEnable = MenuScreen(beepEnable); break; + case 6: RotarySet(); break; + case 7: UnderVoltageSet(); break; + case 8: PasswordSet(); break; + case 9: MenuLevel = 8; LANG = MenuScreen(LANG); if (LANG == 2 && !LANG_JP_State) LANG = 1; break; + case 10: QRcodeScreen(); break; + default: repeat = false; break; + } + } + updateEEPROM(); + handleMoved = true; + SetTemp = SaveSetTemp; + setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); +} + +void RotarySet() { + bool Exit = false; + float rad; + byte ExitBar = 0; + SetTextColor(0); + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(60, 420, 18, 240); + do { + arduboy.setTextSize(1); + Setpoint = getRotary(); + ShowTemp = Setpoint; + + + arduboy.clear(); + //仪表盘 + arduboy.fillRect(0, 0, 128, 64, 1); + arduboy.fillTriangle(24 + 24 * cos(rad), 24 - 24 * sin(rad), 24 + 3 * sin(rad), 24 + 3 * cos(rad), 24 - 3 * sin(rad), 24 - 3 * cos(rad), 0); + arduboy.drawCircle(24, 24, 22, 0); + arduboy.drawCircle(24, 24, 19, 0); + arduboy.drawCircle(24, 24, 3, 0); + //右上角的模式提示文本 + arduboy.setCursor(55, 1); + arduboy.setTextSize(2); + arduboy.print(F("MODE ")); + if (RotaryD) { + arduboy.print(F("-")); + rad = ((Setpoint - 60) / 360.0) * (2 * PI) - PI / 2; + } else { + arduboy.print(F("+")); + rad = ((-Setpoint - 60) / 360.0) * (2 * PI) + PI * 1 / 6; + } + //右侧数字显示 + DrawNumRect(ShowTemp); + //下端的状态条 + DrawStatusBar(0); + //退出条 + arduboy.fillRect(0, 0, ExitBar, 4, 0); + + arduboy.display(); + + + CheckLastButton(); + if (!digitalRead(BUTTON_PIN) && !lastbutton) { + + ExitBar += 8; + if (ExitBar > 127) Exit = true; + } else { + if (ExitBar > 1 && ExitBar < 64) { + RotaryD = !RotaryD; + setRotary(60, 420, 18, 240); + } + ExitBar = 0; + } + + } while (!Exit); + +} +//显示设置菜单 +// tip settings screen +void ScreenSet() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 9; + selection = MenuScreen(selection); + switch (selection) { + case 0: MenuLevel = 5; MainScrType = MenuScreen(MainScrType); break; + case 1: FlipState = !FlipState; break; + default: repeat = false; break; + } + Flip(FlipState); //设置屏幕反转状态 + } + updateEEPROM(); +} + +//预设设置菜单 +// tip settings screen +void TipScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + MenuLevel = 1; + selection = MenuScreen(selection); + switch (selection) { + case 0: ChangeTipScreen(); break; + case 1: CalibrationScreen(); break; + case 2: InputNameScreen(); break; + case 3: DeleteTipScreen(); break; + case 4: AddTipScreen(); break; + default: repeat = false; break; + } + } +} + +//温控设置菜单 +// temperature settings screen +void TempScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp); + DefaultTemp = InputScreen(18); break; + case 1: setRotary(20, 200, TEMP_STEP, SleepTemp); + SleepTemp = InputScreen(19); break; + case 2: setRotary(10, 100, TEMP_STEP, BoostTemp); + BoostTemp = InputScreen(20); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} + +//定时器设置菜单 +// timer settings screen +void TimerScreen() { + uint8_t selection = 0; + bool repeat = true; + while (repeat) { + selection = MenuScreen(selection); + switch (selection) { + case 0: setRotary(0, 30, 1, time2sleep); + time2sleep = InputScreen(22); break; + case 1: setRotary(0, 60, 5, time2off); + time2off = InputScreen(23); break; + case 2: setRotary(0, 180, 10, timeOfBoost); + timeOfBoost = InputScreen(24); break; + default: repeat = false; break; + } + } + updateEEPROM(); +} +//英语支持 +void Print_EN(byte i) { + char buffer[11]; + strcpy_P(buffer, (char *)pgm_read_word(&(EN_table[i]))); + arduboy.print(buffer); +} +//菜单界面 +// menu screen +uint8_t MenuScreen(uint8_t selected) { + int SlidingAnimationX; + uint8_t lastselected = selected; + setRotary(0, Menu_table[MenuLevel] - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + SetTextColor(1); + do { + selected = getRotary(); + //非线性滑动动画 + SlidingAnimationX += (selected - lastselected) * 56; + if (SlidingAnimationX != 0) SlidingAnimationX += 0.6 * (-SlidingAnimationX); + lastselected = selected; + arduboy.clear(); + //绘制图标 如果有指定的话 + for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject()); + DrawAppText(selected + QueryMenuObject()); + + arduboy.display(); + CheckLastButton(); + //beep(0); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return selected; +} +//显示APP图标 +void DrawApp(int x, byte appID) { + DrawUIFrame(x, 0, 1); + drawSlowXYBitmapResize(x + 3, 3, Ico_table[appID], 14, 14, 3, 1); +} +//显示APP对应的文本 +void DrawAppText(byte appID) { + // arduboy.setCursor(0, 55); arduboy.print(appID); + if (LANG == 0) arduboy.drawSlowXYBitmap(48, 48, CN_table[appID], 36, 16, 1); else if (LANG == 2 && LANG_JP_State) { +#if LANG_JP_State + drawText(48, 52, JP_table[appID], pgm_read_byte(&(JP_Length_table[appID]))); +#endif + } else { + arduboy.setCursor(48, 52); + arduboy.setTextSize(1); + Print_EN(appID); + } +} +void DrawUIFrame(int x, int y, bool color) { + arduboy.fillRect(x, y, 48, 48, color); + arduboy.fillRect(x + 3, y + 3, 42, 42, !color); //雕空 + DrawPoint(x, y, 0); + DrawPoint(x + 47, y, 0); + DrawPoint(x, y + 47, 0); + DrawPoint(x + 47, y + 47, 0); +} +void DrawPoint(int x, int y, bool color) { + arduboy.drawPixel(x + 1, y, color); + arduboy.drawPixel(x - 1, y, color); + arduboy.drawPixel(x, y + 1, color); + arduboy.drawPixel(x, y - 1, color); + arduboy.drawPixel(x, y, color); +} +//检查按键 +void CheckLastButton() { + if (lastbutton && digitalRead(BUTTON_PIN)) { + delay(10); + lastbutton = false; + } +} +//返回对应层数的对象数 +byte QueryMenuObject() { + int SUM = 0; + for (int i = 0; i < (MenuLevel); i++) SUM += Menu_table[i]; + return SUM; +} +//信息窗 +/* + void MessageScreen(const char *Items[], uint8_t numberOfItems) { + lastbutton = (!digitalRead(BUTTON_PIN)); + + //u8g.setFont(//u8g_font_9x15); + //u8g.setFontPosTop(); + for (uint8_t i = 0; i < numberOfItems; i++) //u8g.drawStr( 0, i * 16, Items[i]); + + do { + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + } +*/ +/* + 好看是好看,但是浪费内存 + int wav(byte wavi, int num) { + return (wavi + byte(millis() / 100)) * (float(float(num - countMin) / float(countMax - countMin)) - 0.5) * 5; + } +*/ +//FP 密集运算屏保 +void DrawIntensiveComputing() { + analogWrite(CONTROL_PIN, 255); //关闭MOS管 + float calculate; + // while (1) { + arduboy.clear(); + + //随机线条 + DrawIntensiveComputingLine(); + + calculate = sin(millis() / 4000.0); + //模拟噪点 + for (int i = 0; i < calculate * 256 + 256; i++) arduboy.drawPixel(random(0, 128), random(0, 64), 1); + //声效 + if ((beepEnable)) analogWrite(BUZZER_PIN, 64 + calculate * 64 + random(-8, 8)); + //if ((beepEnable)) tone(BUZZER_PIN, int(calculate * 300) + 500 + random(-50, 50)); //没必要浪费内存 + + arduboy.display(); + //delay(60-calculate*30); + //} +} +//绘制屏保-密集运算线条 +void DrawIntensiveComputingLine() { + for (byte a = 0; a < 4; a++) { + Line[a] += random(-1, 1); + if (Line[a] > 128) Line[a] -= 128; + for (byte b = 0; b < random(3, 6); b++) { + arduboy.drawFastHLine(0, Line[a] + random(-10, 10), 128, 1); //水平线 + arduboy.drawFastVLine(Line[a] + random(-10, 10), 0, 64, 1); //垂直线 + } + } +} +//模拟数字滚轮 Numerical scrolling effect +void DisplayNum(int Num) { + arduboy.setTextSize(6); + SetTextColor(0); + //数字滚轮 + for (byte i = 0; i < 3; i++) LastValue[i] = int(Value / pow(10, 2 - i)) % 10; + Value = Num; + for (byte i = 0; i < 3; i++) { + SlidingAnimationY[i] += ((int(Value / pow(10, 2 - i)) % 10) - LastValue[i]) * 50; + if (SlidingAnimationY[i] != 0) SlidingAnimationY[i] += 0.8 * (-SlidingAnimationY[i]); + arduboy.fillRect(0 + i * 44, 0, 38, 50, 1); //白底 + for (int ii = -1; ii < 2; ii++) { + arduboy.setCursor(4 + i * 44, 4 - SlidingAnimationY[i] + ii * 50); + arduboy.print(LastValue[i] + ii); + } + } + //刻度标 + arduboy.fillRect(0, 0, 128, 2, 0); //上遮罩层 + arduboy.fillRect(0, 48, 128, 16, 0); //下遮罩层 +} + +//数值输入界面 +// input value screen +uint16_t InputScreen(byte appID) { + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + DisplayNum(getRotary()); + DrawAppText(appID); + arduboy.display(); + CheckLastButton(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); + return Value; +} +int InputBigNum(int InputPW, byte appID) { + setRotary(0, 900, 100, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 90, 10, InputPW); + InputPW = InputScreen(appID); + setRotary(InputPW, InputPW + 9, 1, InputPW); + InputPW = InputScreen(appID); + return InputPW; +} +void QRcodeScreen() { + arduboy.clear(); + arduboy.drawSlowXYBitmap(40, 0, QRCode, 48, 48, 1); + arduboy.display(); + delay(100); + do { + } while (digitalRead(BUTTON_PIN) || lastbutton); + beep(); +} +//欠压报警设置 +// information display screen +void UnderVoltageSet() { + setRotary(0, 250, 1, UnderVoltage); + UnderVoltage = InputScreen(7); + beep(); +} +//设置开机密码 +void PasswordSet() { + Password = InputBigNum(Password, 8); + beep(); +} + +void BootPassword() { + if (Password != 0) { + do { + arduboy.clear(); + DrawApp(40, 8); + DrawAppText(8); + arduboy.display(); + delay(1000); + beep(); beep(); beep(); + } while (InputBigNum(0, 8) != Password); + } +} +//更换预设界面 +// change tip screen +void ChangeTipScreen() { + uint8_t selected = CurrentTip; + uint8_t lastselected = selected; + int8_t arrow = 0; + if (selected) arrow = 1; + setRotary(0, NumberOfTips - 1, 1, selected); + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + //beep(0); + arduboy.clear(); + selected = getRotary(); + arrow = constrain(arrow + selected - lastselected, 0, 2); + lastselected = selected; + SetTextColor(0); + arduboy.setTextSize(2); + arduboy.setCursor(0, 0); arduboy.print(F("Select Tip")); + SetTextColor(1); + arduboy.setCursor(0, 16 * (arrow + 1)); arduboy.print(F(">")); + for (uint8_t i = 0; i < 3; i++) { + uint8_t drawnumber = selected + i - arrow; + if (drawnumber < NumberOfTips) { + arduboy.setCursor(12, 16 * (i + 1)); arduboy.print(TipName[selected + i - arrow]); + } + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + beep(); + CurrentTip = selected; +} + +//温度校准界面 +// temperature calibration screen +void CalibrationScreen() { + uint16_t CalTempNew[4]; + for (uint8_t CalStep = 0; CalStep < 3; CalStep++) { + SetTemp = CalTemp[CurrentTip][CalStep]; + setRotary(100, 500, 1, SetTemp); + beepIfWorky = true; + lastbutton = (!digitalRead(BUTTON_PIN)); + do { + arduboy.clear(); + arduboy.setTextSize(2); + SENSORCheck(); // reads temperature and vibration switch of the iron + Thermostat(); // heater control + arduboy.setCursor(0, 0); arduboy.print(F("Step: ")); arduboy.print(CalStep + 1); arduboy.print("/3"); + if (isWorky) { + arduboy.setCursor(0, 16); arduboy.print(F("Set measured")); + arduboy.setCursor(0, 32); arduboy.print(F("temp: ")); arduboy.print(getRotary()); + } else { + arduboy.setCursor(0, 16); arduboy.print(F("ADC: ")); arduboy.print(uint16_t(RawTemp)); + arduboy.setCursor(0, 32); arduboy.print(F("Please wait")); + } + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + + CalTempNew[CalStep] = getRotary(); + beep(); delay (10); + } + + analogWrite(CONTROL_PIN, 255); // shut off heater + delayMicroseconds(time2settle); // wait for voltage to settle + CalTempNew[3] = getChipTemp(); // read chip temperature + if ((CalTempNew[0] + 30 < CalTempNew[1]) && (CalTempNew[1] + 30 < CalTempNew[2])) { + MenuLevel = 7; + if (MenuScreen(0)) { + for (uint8_t i = 0; i < 4; i++) CalTemp[CurrentTip][i] = CalTempNew[i]; + } + } +} + +//命名界面 文本输入界面 +// input tip name screen +void InputNameScreen() { + uint8_t value; + for (uint8_t digit = 0; digit < (TIPNAMELENGTH - 1); digit++) { + lastbutton = (!digitalRead(BUTTON_PIN)); + setRotary(31, 96, 1, 65); + do { + value = getRotary(); + if (value == 31) { + value = 95; + setRotary(31, 96, 1, 95); + } + if (value == 96) { + value = 32; + setRotary(31, 96, 1, 32); + } + //arduboy.setCursor(0, 0);arduboy.print(); + arduboy.clear(); + arduboy.setTextSize(2); + arduboy.setCursor(16 * digit, 48); arduboy.print(char(94)); + arduboy.setCursor(0, 32); + for (uint8_t i = 0; i < digit; i++) arduboy.print(TipName[CurrentTip][i]); + arduboy.setCursor(16 * digit, 32); arduboy.print(char(value)); + CheckLastButton(); + arduboy.display(); + } while (digitalRead(BUTTON_PIN) || lastbutton); + TipName[CurrentTip][digit] = value; + beep(); delay (10); + } + TipName[CurrentTip][TIPNAMELENGTH - 1] = 0; + return value; +} + + +// delete tip screen +void DeleteTipScreen() { + MenuLevel = 7; + if (NumberOfTips == 1) { + //MessageScreen(DeleteMessage, sizeof(DeleteMessage)); + } + else if (MenuScreen(0)) { + if (CurrentTip == (NumberOfTips - 1)) { + CurrentTip--; + } + else { + for (uint8_t i = CurrentTip; i < (NumberOfTips - 1); i++) { + for (uint8_t j = 0; j < TIPNAMELENGTH; j++) TipName[i][j] = TipName[i + 1][j]; + for (uint8_t j = 0; j < 4; j++) CalTemp[i][j] = CalTemp[i + 1][j]; + } + } + NumberOfTips--; + } +} + + +// add new tip screen +void AddTipScreen() { + if (NumberOfTips < TIPMAX) { + CurrentTip = NumberOfTips++; InputNameScreen(); + CalTemp[CurrentTip][0] = TEMP200; CalTemp[CurrentTip][1] = TEMP280; + CalTemp[CurrentTip][2] = TEMP360; CalTemp[CurrentTip][3] = TEMPCHP; + } //MessageScreen(MaxTipMessage, sizeof(MaxTipMessage)); 信息窗 +} + + +// average several ADC readings in sleep mode to denoise +uint16_t denoiseAnalog (byte port) { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + if (port >= A0) port -= A0; // set port and + ADMUX = (0x0F & port) | bit(REFS0); // reference to AVcc + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + return (result >> 5); // devide by 32 and return value +} + +/* + //读取芯片温度 + // get internal temperature by reading ADC channel 8 against 1.1V reference + double getChipTemp() { + unsigned int wADC; + double t; + ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); + ADCSRA |= _BV(ADEN); + delay(5); + ADCSRA |= _BV(ADSC); + while (bit_is_set(ADCSRA, ADSC)); + wADC = ADCW; + t = (wADC - ChipTempCalVal ) / 1.22; + return (t); + } +*/ +// get internal temperature by reading ADC channel 8 against 1.1V reference +double getChipTemp() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + ADMUX = bit (REFS1) | bit (REFS0) | bit (MUX3); // set reference and mux + delay(10); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 32; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 2; // devide by 4 + return ((result - 2594) / 9.76); // calculate internal temperature in degrees C +} + +// get input voltage in mV by reading 1.1V reference against AVcc +uint16_t getVCC() { + uint16_t result = 0; + ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt + // set Vcc measurement against 1.1V reference + ADMUX = bit (REFS0) | bit (MUX3) | bit (MUX2) | bit (MUX1); + delay(1); // wait for voltages to settle + set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction + for (uint8_t i = 0; i < 16; i++) { // get 16 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // disable ADC + result >>= 4; // devide by 16 + return (1125300L / result); // 1125300 = 1.1 * 1023 * 1000 +} + + +// get supply voltage in mV +uint16_t getVIN() { + long result; + result = denoiseAnalog (VIN_PIN); // read supply voltage via voltage divider + return (result * Vcc / 179.474); // 179.474 = 1023 * R13 / (R12 + R13) +} + +//ADC中断服务 +// ADC interrupt service routine +EMPTY_INTERRUPT (ADC_vect); // nothing to be done here + +//旋转编码器触发中断 +// Pin change interrupt service routine for rotary encoder +ISR (PCINT0_vect) { + uint8_t a = PINB & 1; + uint8_t b = PIND >> 7 & 1; + if (a != a0) { // A changed + a0 = a; + if (b != b0) { // B changed + b0 = b; + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax); + if (ROTARY_TYPE && ((a == b) != ab0)) { + count = constrain(count + ((a == b) ? countStep : -countStep), countMin, countMax);; + } + ab0 = (a == b); + handleMoved = true; + } + } +} + +//显示位图,并允许放大 代码片段改自arduboy2 +void drawSlowXYBitmapResize(int x, int y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t size, uint8_t color) { + // no need to draw at all of we're offscreen + /* + if (x + w < 0 || x > WIDTH - 1 || y + h < 0 || y > HEIGHT - 1) + return; + */ + int16_t xi, yi, byteWidth = (w + 7) / 8; + for (yi = 0; yi < h; yi ++) { + for (xi = 0; xi < w; xi ++) { + if (pgm_read_byte(bitmap + yi * byteWidth + xi / 8) & (128 >> (xi & 7))) { + //arduboy.drawPixel(x + xi, y + yi, color); + arduboy.fillRect(x + xi * size, y + yi * size, size, size, color); + } + } + } +} + +//设置看门狗模式-中断+复位 +void SetWDT() { + byte bb; + bb = 7 & 7; + bb |= (1 << WDCE); + + __asm__ __volatile__ ("wdr"); //看门狗复位 + MCUSR &= ~(1 << WDRF); //MUUSR中的WDRF清零,清除复位标志 + WDTCSR |= (1 << WDCE) | (1 << WDE); //打开允许修改使能,并WDE置1 + //设置新的看门狗超时值bb + WDTCSR = bb; + WDTCSR |= _BV(WDIE); //设置中断模式 + WDTCSR |= _BV(WDE); //设置复位模式 +} + +/* + 8x8 dot Japanese font for Arduboy + + Copyright (c) 2016 emutyworks + + Released under the MIT license + https://github.com/emutyworks/8x8DotJPFont/blob/master/LICENSE.txt +*/ +#if LANG_JP_State +void drawText(uint8_t x, uint8_t y, const uint8_t *mes, uint8_t cnt) +{ + uint8_t pb; + uint8_t page; + uint8_t screen_start = 0; + uint8_t screen_end = 128; + + if (x < screen_start) { + x = screen_start; + } + + for (uint8_t i = 0; i < cnt; i++) { + pb = pgm_read_byte_near(mes + i); + + switch (pb) { + case MISAKI_FONT_F0_PAGE: + page = MISAKI_FONT_F0_PAGE; + continue; + case MISAKI_FONT_F1_PAGE: + page = MISAKI_FONT_F1_PAGE; + continue; + case MISAKI_FONT_F2_PAGE: + page = MISAKI_FONT_F2_PAGE; + continue; + } + + if (!page) { + continue; + } + + switch (page) { +#ifdef MISAKI_FONT_F0_H + case MISAKI_FONT_F0_PAGE: + if (pb > MISAKI_FONT_F0_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f0[ pb ], MISAKI_FONT_F0_W, 8, WHITE); + x = x + 8; + break; +#endif +#ifdef MISAKI_FONT_F1_H + case MISAKI_FONT_F1_PAGE: + if (pb > MISAKI_FONT_F1_SIZE) { + continue; + } + if ((x + 4) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f1[ pb ], MISAKI_FONT_F1_W, 8, WHITE); + arduboy.drawBitmap(x + 3, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 4; + break; +#endif +#ifdef MISAKI_FONT_F2_H + case MISAKI_FONT_F2_PAGE: + if (pb > MISAKI_FONT_F2_SIZE) { + continue; + } + if ((x + 8) > screen_end) { + x = screen_start; + y = y + 8; + } + arduboy.drawBitmap(x, y, misaki_font_f2[ pb ], MISAKI_FONT_F2_W, 8, WHITE); + arduboy.drawBitmap(x + 7, y, misaki_font_0x00, 1, 8, WHITE); + x = x + 8; + break; +#endif + } + } +} +#endif diff --git a/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino.standard.hex new file mode 100644 index 0000000..7d96885 --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino.standard.hex @@ -0,0 +1,2003 @@ +:100000000C948A120C94B2120C94B2120C945529CE +:100010000C94B2120C94B2120C942D2A0C94B212BD +:100020000C94B2120C94B2120C94B2120C94B21240 +:100030000C94B2120C94B2120C94B2120C94B21230 +:100040000C940B290C94B2120C94D9280C94B3285C +:100050000C94B2120C942C2A0C94B2120C94B2127E +:100060000C94B2120C94B21205A84CCDB2D44EB975 +:100070003836A9020C50B9918688083CA6AAAA2A4B +:10008000BE000000803F07634236B79BD8A71A39ED +:10009000685618AEBAAB558C1D3CB7CC5763BD6DD6 +:1000A000EDFD753EF6177231BF000000803F08007D +:1000B0000000BE922449123EABAAAA2ABECDCCCCE7 +:1000C0004C3E00000080BEABAAAAAA3E0000000081 +:1000D000BF000000803F0000000000084178D3BB53 +:1000E0004387D1133D190E3CC3BD4282AD2B3E6800 +:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1 +:10010000FF7F3F0000000000800400003FF0383017 +:1001100033103F90381033902790261030903FF0E6 +:1001200000008004800400003FF03DF020103BF010 +:100130003B7030302B502AD031B03FF000008004AB +:10014000800400003FF038703030231027902010DA +:100150002010279027903FF00000800480040000CA +:100160003FF03CF03CF020102490249020103CF014 +:100170003CF03FF000008004800400003FF037B006 +:1001800023103030387038703030231037B03FF0E3 +:1001900000008004FCF4F860E044C08CC11CC22C58 +:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9 +:1001B0008000BFF81FF8B0281FF8B4081FF8B10876 +:1001C0001FF8B048BFF8B288BFF880008000BFF8C1 +:1001D0001FF8B0081808B9E819B8B8381838B9B80D +:1001E000B9F8B0F8BFF8800015543FF815503FF04B +:1001F0001550387010203104138C22A817FC2AA83F +:100200000000000015543FFC15543FFC15543C04FD +:1002100014043CFC14543CFC005400A800000000F2 +:10022000800400003FF03CF034B0249024902790EC +:100230002310303038703FF000008004FF7CFE7CDB +:10024000FCECE8DCC84C984C882408200000000036 +:10025000000000008004E01CF3FCE7FCCE0C8E1CC8 +:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8 +:10027000E01CF87C000458085808580840087FF82B +:1002800060185FE85B685FE85B681CE85FE8000097 +:10029000800400003FF03CF03CF03CF020102010C7 +:1002A0003CF03CF03CF03FF000008004F87CF7BCF0 +:1002B00000007FF80000BFF4AB54AB54AB54AB5418 +:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431 +:1002D00073007F007E007C007C007C60BC64BE04F8 +:1002E000CF0CF03C81DC559C29045500299055D059 +:1002F00003FCFF002E00267002508270E600EE0420 +:10030000800C001C3FF43FE03FC4378C2318303092 +:1003100038703CF03FF03FF000008004058074B876 +:1003200057A876B80580F97C4694AAA8F97C068877 +:1003300074A8578C75740698F03CCE4CBC34B81435 +:10034000188010804230607860F844C08004B8841F +:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432 +:1003600000000300030003000780078003008004EF +:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A +:10038000CFCCCFCCC84CCFCCC00CE01CF87C8004C8 +:10039000BCF43FF03870B7B4B6B4B5B4B7B4387085 +:1003A0003FF0BCF48004F87CFCFCF87CE01CC00C42 +:1003B000C00CC00CC00CC00CC00C80048004FFFC3E +:1003C000F87CFCFC800400002000100008001000F5 +:1003D0002700000000000000000000000000800472 +:1003E000C3FC18001800C3FCFFFCFF0C0060006099 +:1003F000FF0CFFFCF0FC06000600F0FC8FC4102090 +:1004000020104CC89FE43DF03DF01DE03EF03F70F1 +:100410009FE48CC400003030F87CF33CF4BCF6BCA4 +:10042000F4BCF6BCF4BCE49CC84CD02CD02CC84C1A +:10043000E79CF03C88240820383038303830383099 +:100440003830383039303BB03FF03FF000008004A6 +:10045000F21415F0CADFB8CCF0D699E8AEA4DFEEFE +:10046000E8F21D1E08F21C08F21A1B08F071460182 +:10047000F046464A01F219F051F218F05A8DF0C0D8 +:10048000DAEEAEF0C8B8A5F1302924F0B599E1A4B0 +:10049000BDF21415F0CBEEAEBDF218F05A8DF21687 +:1004A00017F21415F0CBEEAEBDF21617F0BCCA9ED3 +:1004B000E0BDF21415F21213F21011F20C0DF094CB +:1004C000F20E0FF0A2D8DFCBE1EEACDCE8F20AF0DE +:1004D0008CF20BF04A8DF209F08DF097C59BBDF2BE +:1004E0000708F21F20F2040506F097DEEED5F0664D +:1004F0008081F22122F0CBABEEF0AEA4DFEEE8F08B +:10050000A8E8BDE2EEE0F0B499D3EEF200010203F8 +:10051000F0CCDFB0B8BD5361766500466C69700001 +:100520004D61696E2053637265656E004A500045E7 +:100530004E00434E00594553004E4F004F4E004F62 +:10054000464600496E666F73004269670050494431 +:1005500000446972656374005361766500426F6F91 +:100560007374004F666600536C6565700053617666 +:100570006500426F6F737400536C6565700044656D +:100580006661756C74005361766500416464004473 +:10059000656C6574650052656E616D650043616CE4 +:1005A000696272617465004368616E6765005265D7 +:1005B0007475726E0041626F7574004C616E6700F5 +:1005C0004C6F636B004C4F5720566F6C00526F742A +:1005D0006172790042757A7A65720053637265655B +:1005E0006E00436F6E74726F6C0054696D657200BB +:1005F00054656D70005469700000000000000F1D0C +:10060000C20800054442080003845FBF000FE444B1 +:1006100010000115451000054CC97F8009244F903A +:100620000007C4C11000054D413F0005544381003F +:1006300007C44D0200054441140005554108000758 +:10064000C881040000000000000000000000010854 +:100650003FFE001FFF810000004002000007FE0F68 +:10066000F8000402080800040208880007FE088851 +:10067000000402088800040208880007FE088800B9 +:100680000402094800040202300007FE040C0004C2 +:10069000021804000000000000000000000007FE37 +:1006A00013FE000402084000040208400004020196 +:1006B000FC000402388400040208840007FE0FFFD7 +:1006C000000402080000040209FE000402090200FE +:1006D00004020B020004020D020007FE09FE0004E2 +:1006E00002010200000000000000000000000110F4 +:1006F0000080001FFF80800001103FFF00004004C9 +:10070000080007FC0408000444041000044402101C +:100710000004440220001FFF812000004000C000B0 +:1007200000A00130000110020800060C0C070018A0 +:1007300003B00200000000000000000000000040C4 +:1007400000800000400080000FFF3FFF00084104D0 +:100750000800084104080008410410000841021084 +:10076000000FFF0220000841012000004000C000EF +:100770000040013000004002080000400C0700006B +:1007800040300200000000000000000000001FDFF9 +:1007900010200002120C20000224042000047F809C +:1007A00020000424B820000FA488500014BF8850F3 +:1007B0000004A488500004A488480004BF8888006E +:1007C00004A48A880007A48C8400044489070000DC +:1007D00081860200000000000000000000000FF011 +:1007E0000491000440025200047F90540004508899 +:1007F000FF0007D08481000451008100044901FFFB +:100800000007CA0281000444048100044A1CFF005E +:1008100007EA0481000C510481000061C4850000D6 +:10082000408082000000000000000000000007FF80 +:10083000802000008407FF0000840401000084047D +:10084000010000840401000FFFC7FF0000840400C2 +:10085000000084040000008405FF000084050100FE +:1008600001040901000104090100020411FF000450 +:1008700004010100000000000000000000000082F0 +:1008800004FF00004402010007FF90210000101047 +:100890002100001017FD0000101021000FFFD06193 +:1008A00000001010A10000281121000028122100D2 +:1008B0000044142100008210A1000301D045000C67 +:1008C000009002000000000000000000000008444A +:1008D00010FE00042810920005FF22920000103C38 +:1008E000920000100892001CFE109200041020FEDE +:1008F0000004103E920005FF809200041000920058 +:1009000005100E92000610309200041000FE000048 +:10091000100082000000000000000000000007DF5F +:100920008840000A24104000114210FE00040022FA +:10093000820002FF3D020008010A420009F910325C +:1009400000090920120009F93E020009090002000D +:1009500009090E020009F9302200080500140008F8 +:1009600002000800000000000000000000000FC3AB +:10097000F1E0000FE3F1F8000C70C19E000C30C1F3 +:1009800086000C30C183000C30C183000C60C18331 +:10099000000C60C183000FC0C183000FC0C186007E +:1009A0000C00C186000C00C198000C03F1F8000C8B +:1009B00003F1E00000000000000000000000002043 +:1009C0000820000FFF09FC00002008000000203E66 +:1009D000880003FE08500002020BFE0003FE0C40DC +:1009E00000020218400003FE2BFE0002020848002D +:1009F00003FE088800020208500002022830001F8F +:100A0000FF91CC0000000000000104047C0000887D +:100A10000444000FFF3F4400002004440000200C69 +:100A2000440000200E44001FFF95440000201444A1 +:100A30000000502444000050044400008804450095 +:100A4000010404850006038503001801040000006A +:100A50000000000000000000000000000000047E14 +:100A600021FC0004421104001F7E090400044221FD +:100A7000FC000542110400067E1104000C0005FC78 +:100A80000015FF880000040813FE000448325200DD +:100A9000044F125200044812520014A812520009C6 +:100AA0001F97FF000000000000000000000002107F +:100AB0003DFC000210250400041025040005FFBDC4 +:100AC000FC000C102520000C38252000143825FED1 +:100AD0000004543D20000454251000049225100009 +:100AE0000511A5090006113D4500041025830004E9 +:100AF00010010100000000000000000000001FC8FD +:100B0000102000124A0C20001AC9042000174800C7 +:100B100020001FFFB8200002080850001FC808501E +:100B200000020808500003C80848001E1408880086 +:100B300001540A880015220C840014438907000020 +:100B400081060200000000000002FE010000028297 +:100B50003FFF00048202000004FE0200000C1004AB +:100B6000FC00141004080005FF8C10000410141081 +:100B700000043825FF00043404100004520410005F +:100B8000049184100005100450000410042000009B +:100B90000000000000000000000000000000020350 +:100BA0000010001FDC3EFE00089002120005100439 +:100BB000FF001FDF84120002120CFE001FD2021081 +:100BC00000021222FE000A921410000A52141000B1 +:100BD00012220DFF0002220810000A421410000425 +:100BE0000223FF00000000000000000000000F785A +:100BF000BC20000948A45000094AA85000094AA88E +:100C00008800094AB104001FFEAAFB00094AA4207B +:100C100000094AA42000094AA7FE00094AB420009E +:100C20000948A924000B48A22200088AA4A20011A6 +:100C3000192040000000000000000000000000201B +:100C4000008000005001FC00008801040001040342 +:100C5000080006FB0490000800C0600007DF018068 +:100C600000045106000004511BFE00045102020062 +:100C700007D90202000456020200001003FE000021 +:100C80001002020000000000000000000000020846 +:100C9000209000027F9890001F8009FF000222012F +:100CA000100006218B100007628DFE000AA20910B9 +:100CB000000A14111000121431FE00020811100075 +:100CC00002141110000222111000024391FF0002D1 +:100CD000811100000000000000000000000010076B +:100CE00000000008F83FFE00048020020000802081 +:100CF000020000BE23E2001C8222220004A4222261 +:100D00000004942222000488222200049423E2009A +:100D1000052220020005422002000A003FFE0011C9 +:100D2000FFA00200000000000000000000000082A0 +:100D30000FFE00004400400007FF8040000010004C +:100D40004000001000400000101FFF800FFFC04057 +:100D50000000100040000028004000002800400073 +:100D6000004400400000820040000301C140000C2C +:100D700000808000000000000009FF004000042007 +:100D80003FFF00042000000000FE0000001C420F96 +:100D9000FC00044200000007FF80000004000FFC7C +:100DA0000004FF000000048100000005810FFC002A +:100DB000068108040004FF08040000810FFC000005 +:100DC00000000000000000000000000000000040E3 +:100DD0001F7E001FFF84020010808442000A4A0424 +:100DE00042000A3108420012C50F42000304197F75 +:100DF000001DF82901000040090100084209FD001A +:100E0000084209010008420F01000FFE0905000019 +:100E100002000200000000000000000000000100CD +:100E20000FFE00010008200003FF08200002010857 +:100E30002000042208200008200BFE0010200820BB +:100E400000005008280000500824000088082200F4 +:100E5000008810200001041020000203A7FF000CEE +:100E60000100000000000000000008000000021F58 +:100E700088FE001FD00E22000420302200045F8074 +:100E8000220007849E220004850822000494082280 +:100E900000049428FE0004971E42000494084200B7 +:100EA00008940842000AAC0A420011440C420000B7 +:100EB0008389FF00000000000000000000000040E7 +:100EC0000080001FFF9FFC0000400410000FFF0285 +:100ED000200000003FFF000FFE00000008420FF856 +:100EE0000008420808000FFE08080008020FF8007A +:100EF0000800080800080008080008000FF80010A3 +:100F0000000808000000000000000000000007FECC +:100F10000FF8000402000000040200000007FE00B9 +:100F2000000004023FFE00040200800007FE008073 +:100F300000009004900008910C8800069310860031 +:100F40000294208200009000800000900280001F28 +:100F5000FF810000000000000000000000000410FD +:100F600012020005FF9FD20005009212001E28A267 +:100F7000120004443FF20004820212000600021232 +:100F8000000CFE1FD2001410125200041012420076 +:100F90000410134200041012820015FF820A000898 +:100FA000000204000000000000000000000000201B +:100FB00000000000203E04001FFFA204001000A259 +:100FC000FF0000012204000FFE22040000403E4406 +:100FD0000000402224000440222400047C2204005B +:100FE00004402204000A403E04000940222400106C +:100FF000FF8014000000000800000000000010FE48 +:1010000008200008820BFF0004820A010010FE3C49 +:1010100051000882088800088209040002FE0C00C2 +:1010200000040019FC0009FF2820001929082000ED +:101030000929082000092908200009292BFF000B95 +:10104000FF900000000000000000000000001F7F73 +:1010500090F80001080888000A10088800047F0141 +:1010600007001FC13A0000054909FC000449088433 +:101070000004490888000449084800044908500051 +:1010800004490A200004160C58001421898700081E +:10109000C086020000000000001FE03FF0703860D2 +:1010A0001860186018FFFCFCFCFCFCFCFCF87CF8E9 +:1010B0007CFCFC7FF81E1033382D7C25382D38251C +:1010C000382D386D80DEC0BF40BF40DEC061803F3C +:1010D000007FF0FFE0C008C01CC038C870DCE4CF5F +:1010E000CCC78CC30CC00CC00CFFFC7FF800000602 +:1010F000000C0018F838F030307060707878F878AC +:10110000003C023F0C1FF80FF003C000007FF8FF07 +:10111000FCC00CC30CCB4CDB6CDB6CD86CDCECCFB8 +:10112000CCC78CC00CFFFC7FF8030007800FC00CFD +:10113000C01CE01CE03CF03CF07FF87FF8FCFCFCBD +:10114000FCFFFC7FF81140820021208FE023FC820D +:10115000004A23E200FE209FF013F880802220C086 +:10116000804221BFF0FBFA88800220848002208424 +:10117000801A208080E3FE8280020101000F421F5E +:10118000C0784110400840904008421FC0084110FC +:1011900040FFFD104008405FC00840800008413F0C +:1011A000E00843252010412520104125202041251D +:1011B0002040417FF07FF84880020049000201FF93 +:1011C000F00201001002027F202200410023F07F84 +:1011D00000220008002200FF802200888022008870 +:1011E0008022008A8022008900FFFC080023F21F71 +:1011F000C022111040FBF0904022121FC02A111093 +:101200004033F1104060005FC0AFFC800020413FE0 +:10121000E0224325202279252022412520A54125B1 +:101220002048FD7FF01083DFC010825040208250A4 +:10123000402FFFDFC06082520061C25200A1C25F36 +:10124000E022A3D20022A2510024925100288E5005 +:1012500090308BD45020825830208010101040479E +:10126000C017FC44402003F44023F844406208C403 +:1012700040A3F8E440200154402FFD444028064498 +:101280004023F844402040445020404850214050E2 +:10129000302080400020921FC03DF9904020909067 +:1012A0004040901FC07BFF0000A0013FE021F902F9 +:1012B00000FD09020021097FF021F90500210945FF +:1012C000002909888031F910702108202030303041 +:1012D0000075407755757740403E4A5E2B5E4A6BFD +:1012E000627F352F357F7C5B5E247B0E3A047E0166 +:1012F0007E4A5E69063A2F3F6B7E46403F41497FFA +:10130000494102626B6B6B62026A6B147D577D1000 +:10131000413F55553D5751213F2D7F2A122E0A77C7 +:101320005A505A770A2024137D5553707A2A7B022B +:101330001A437A4A525E2B5E424A415F353F555FFF +:10134000417D14577D0E407F7F1B54167D165449F6 +:101350003A407E575676423F427E7E427E047E5120 +:10136000377D3750127A1752761E127F557F145DE3 +:101370007F557F557F7F553D577F55377817457F80 +:101380007F2B7B287B2B7F1E12127F12121E7F4128 +:101390006B7F6B517F525A573A575A52007F4949D7 +:1013A00049497F22122A7F2A1222166A5E735662E8 +:1013B000160937315F155F7542221E0B4A7A027E8D +:1013C000023A2B3A427E00000000002F0003000387 +:1013D0003F123F163F1A120824323D2A0201000034 +:1013E0003E41413E000A070A083E08402000080826 +:1013F000080020001008041C2A1C243E20322A2445 +:10140000222A1418143E2E2A121C2A12023A0614FA +:101410002A14242A1C002400402400081422141436 +:101420001422140802290612291E3E093E3F251ADD +:101430001E21213F211E3F25213F05011E21393F4D +:10144000083F213F2110201F3F043B3F20203F0643 +:101450003F3F013E1E211E3F09061E215E3F093609 +:10146000222519013F013F203F3F100F3F183F3316 +:101470000C33033C03312D23007F41153E15417F82 +:101480000002010240404000010218243C3F2418A1 +:1014900018242418243F182C2C043F0548543C3FA2 +:1014A0000438003D00403D003F0834013F003C1C33 +:1014B000383C04381824187C241818247C3C080470 +:1014C000283C14043E243C203C3C100C3C303C2482 +:1014D00018244C503C24342C083641007F004136FF +:1014E000080101011028101F010120203E102000DA +:1014F00000080025150F241C0C103804180C38287F +:10150000382828183C083C18283820242C3C2C2C3F +:101510001C040808211D07083C0306231E223E2246 +:10152000120A3F320F3E0A3F0A24130E271E0222E0 +:10153000223E27120F2525102119273F222E211682 +:101540000F241B0E251F0526261E251D053F0408FA +:10155000241F04202222251927123B1620100F3C9D +:10156000013E1F242421110F0C031C1A3F1A0919D4 +:1015700027222A2A382730320C13053F25023F0E36 +:10158000213F2025253F25251D07201F3C3F203FCB +:1015900020103E223E23110F2121180100010205D7 +:1015A00002000000000000000020400000000000D9 +:1015B000002050200000000000503000000000001B +:1015C000006060000000000000000018180000002B +:1015D0000000003636000000000000563600000013 +:1015E0000000020151090906000000005F00000030 +:1015F00000000000007F41410041417F00000000E9 +:10160000000000003F010101004040407E0000005A +:101610000000003F213D05070070505E427E000043 +:1016200000000000007F63410041637F0000000074 +:10163000000808087F0808080008080808080808C3 +:10164000004444445F4444440041221408142241AD +:10165000000808082A0808080014141414141414A4 +:10166000001434141C141614000808141414222234 +:101670000022221414140808000205023C424224ED +:1016800000002B2C782C2B000000242A7A2F2A1201 +:1016900000001C62322E23140020545E254142209B +:1016A00000422512082452210020623E633E23029C +:1016B0000020564955225840000022147F14220071 +:1016C000001C2259554D120C0000004A55552900A6 +:1016D0000004643C173C64040004643C1F3C640444 +:1016E000001C22414141221C001C3E7F7F7F3E1C8A +:1016F000001C225D555D221C0008142241221408A2 +:1017000000081C3E7F3E1C08007F41414141417F53 +:10171000007F7F7F7F7F7F7F0040704C434C704015 +:101720000040707C7F7C704000010719611907013F +:101730000001071F7F1F0701004922144914224995 +:10174000000505057D05050500080808082A1C0890 +:1017500000081C2A08080808000004027F02040090 +:10176000000010207F20100000003E414141413E1A +:10177000000000427F40000000006251514949468C +:1017800000002241494949360000302824227F20A8 +:1017900000002F454545453900003E494949493239 +:1017A0000000010161190503000036494949493625 +:1017B000000026494949493E000020547E34146007 +:1017C0000020527F2A1A4A3000003C4020041800B2 +:1017D000001E2040200204180000104A4A2A10006F +:1017E00000000845454525180000482A3A4A4000AF +:1017F00000004425153D45400000247E145024007F +:101800000022527F0A484A340044344F44380418B6 +:101810000044344F4439041900002A5A4B4E5A08E8 +:1018200000002A5A4B4E5B080000081414224100A5 +:101830000000081414224504003F0004443F04043F +:10184000003F0004443F0405000020524242424051 +:1018500000002052424342410000245444475C04AB +:101860000000245444475C050000003F40404020F5 +:101870000000003F404140210002020A563F0202A0 +:101880000002020A563F02030004043F44545F442E +:101890000004043F44545F45000008093D4B4908DB +:1018A000000008093D4B490A00423A0722544444CB +:1018B00000423A0722554445000002124E4B4A327C +:1018C000000002124E4B4A3300001010484830000E +:1018D000000404022222221C000404022223221DEE +:1018E000000002021A254341000002021A25434566 +:1018F00000002057484844440000205748494445C8 +:1019000000120A2752503A24007F002052424240DF +:1019100000304E38540F64780024147F0422523C67 +:10192000001824124E422418007F002454543F44CF +:10193000007F002454543F45007F002454563D4608 +:1019400000023A4740413E0400023A4740413E050A +:1019500000023A4740433D06004030404D3210609F +:10196000004030404D321161004030404D32156230 +:1019700000080402040810100008040204091011F1 +:1019800000080402040A1512007F006A6A7E2A4ACF +:10199000007F006A6A7F2A4B007F006A6A7E2D4AB8 +:1019A00000006A6A6A7F2A4A0030291D4B483C10B1 +:1019B00000122A7F4240422400304E38540F4438EF +:1019C00000000A3E4B4A4A300000080E3846140810 +:1019D0000004071C62030A0400001C483E2418008F +:1019E000001E04523F12120C00002050503E4800CE +:1019F00000002050503F244400001C51494A483008 +:101A000000000F4241211E00000010696D4B49305B +:101A10000024147F04023E40000010494D4B493021 +:101A2000000028187E0844380024147F0442423CF9 +:101A3000003049251F2454380040282557352840B8 +:101A400000100A2E5B724A480040300C33404020A0 +:101A5000000004443C140C00000001413D09050352 +:101A6000000020201078040000001010087C020103 +:101A7000000018484C281800000006424322120EAD +:101A80000000404878484000002022223E222220C8 +:101A900000002828587C0800002222124A7F0202F7 +:101AA000000042221F02427E000042221F02427FAB +:101AB000000012121F721210000012121F72131077 +:101AC000000008444322120E000008444322120F73 +:101AD00000080742221E020200080742221F0203DA +:101AE000000042424242427E000042424243427F64 +:101AF0000002024F42221F020002024F42231E0335 +:101B00000000454A4020100C0000454A4021100DBD +:101B100000404222221A264000404222221B264137 +:101B20000004043F4444544C0004043F4445544DD5 +:101B3000000001464020100F000001464020110F18 +:101B4000000008444B2A120E000008444B2A120FD2 +:101B500000080A4A3E09090800080A4A3E0908091D +:101B6000000018405820180000020C424C20100EB3 +:101B700000020C424C21100D000405453D050504F2 +:101B8000000405453D0504050000007F080810001D +:101B90000000007F08091001000444241F0404040D +:101BA0000020222222222220004041251519270050 +:101BB000002022127B06122000404020100807005F +:101BC0000040300E00020C700040300E00020D711B +:101BD0000040300E00020D7200003F484848444467 +:101BE00000003F484849444500003F48484A4546B0 +:101BF000000002424222120E000002424223120F53 +:101C0000000002424222150E0008040204081020BF +:101C1000000804020409102100080402040A152225 +:101C2000002414447F041424002414447F05142544 +:101C3000002414447F0615220002021222520A06D2 +:101C400000002125294A42000040704C43502040AA +:101C50000040442414083700000008093F4949485F +:101C60000000101C680818000004040F74020A0623 +:101C7000000040484878400000202222223E2020D8 +:101C80000000004454547C000000424A4A4A4A7E04 +:101C9000000004454525150C00000F4040201F00A2 +:101CA0000040201E007F20100000007F4020100810 +:101CB00000007E424242427E00000C4444241C004C +:101CC000000006424222120E0010121E12127F1253 +:101CD000002022223A262220000001454525150F2A +:101CE000000041424020100C000006424322120F27 +:101CF000000048281C4878000000100C48380800F4 +:101D0000000804040810100800080000080000087B +:101D10000004080808080808000808080808080857 +:101D200008060505070604070903030504090A0850 +:101D30000303030603050303050503060404050561 +:101D4000040504040304090503F505F005EA05E2AA +:101D500005DB05D405CD05C505C005BB05B505AE3C +:101D600005A7059D0596058F058B0586057E0578DB +:101D70000572056D05670563055D05580551054D3F +:101D800005490543053F053C053905350532052F55 +:101D9000052C0520051B0516053E0053656C656383 +:101DA00074205469700000000000003E5B4F5B3EF1 +:101DB0003E6B4F6B3E1C3E7C3E1C183C7E3C181C10 +:101DC000577D571C1C5E7F5E1C00183C1800FFE707 +:101DD000C3E7FF0018241800FFE7DBE7FF30483AAD +:101DE000060E2629792926407F050507407F05250F +:101DF0003F5A3CE73C5A7F3E1C1C08081C1C3E7F97 +:101E000014227F22145F5F005F5F06097F017F005D +:101E10006689956A606060606094A2FFA29408047D +:101E20007E040810207E201008082A1C08081C2A9E +:101E300008081E101010100C1E0C1E0C30383E38F6 +:101E400030060E3E0E06000000000000005F00009D +:101E50000007000700147F147F14242A7F2A12230E +:101E60001308646236495620500008070300001C1E +:101E70002241000041221C002A1C7F1C2A08083E27 +:101E8000080800807030000808080808000060603A +:101E90000020100804023E5149453E00427F4000A8 +:101EA00072494949462141494D331814127F102780 +:101EB000454545393C4A49493141211109073649CF +:101EC000494936464949291E0000140000004034A3 +:101ED00000000008142241141414141400412214A8 +:101EE0000802015909063E415D594E7C1211127CCF +:101EF0007F494949363E414141227F4141413E7F30 +:101F0000494949417F090909013E414151737F080F +:101F100008087F00417F41002040413F017F0814B5 +:101F200022417F404040407F021C027F7F04081016 +:101F30007F3E4141413E7F090909063E4151215EF4 +:101F40007F09192946264949493203017F01033F88 +:101F50004040403F1F2040201F3F4038403F631417 +:101F600008146303047804036159494D43007F4119 +:101F700041410204081020004141417F0402010256 +:101F8000044040404040000307080020545478407B +:101F90007F284444383844444428384444287F380F +:101FA0005454541800087E090218A4A49C787F0891 +:101FB00004047800447D40002040403D007F10280C +:101FC000440000417F40007C047804787C080404CD +:101FD000783844444438FC1824241818242418FC65 +:101FE0007C08040408485454542404043F44243C0A +:101FF0004040207C1C2040201C3C4030403C442879 +:102000001028444C9090907C4464544C4400083612 +:102010004100000077000000413608000201020480 +:10202000023C2623263C1EA1A161123A4040207AA0 +:1020300038545455592155557941215454784121EA +:102040005554784020545579400C1E52721239551F +:10205000555559395454545939555454580000451C +:102060007C410002457D420001457C40F029242945 +:10207000F0F0282528F07C545545002054547C5419 +:102080007C0A097F4932494949323248484832324C +:102090004A4848303A4141217A3A42402078009DEE +:1020A000A0A07D39444444393D4040403D3C24FF9C +:1020B0002424487E4943662B2FFC2F2BFF0929F649 +:1020C00020C0887E090320545479410000447D419A +:1020D0003048484A32384040227A007A0A0A727DF3 +:1020E0000D19317D2629292F28262929292630480E +:1020F0004D4020380808080808080808382F10C87C +:10210000ACBA2F102834FA00007B000008142A14FF +:102110002222142A14089500220095AA005500AA2C +:10212000AA55AA55AA000000FF00101010FF0014C5 +:102130001414FF001010FF00FF1010F010F0141422 +:1021400014FC001414F700FF0000FF00FF1414F447 +:1021500004FC141417101F10101F101F1414141F48 +:1021600000101010F0000000001F101010101F10C1 +:10217000101010F010000000FF10101010101010C0 +:102180001010FF10000000FF140000FF00FF00000F +:102190001F10170000FC04F414141710171414F483 +:1021A00004F40000FF00F714141414141414F700BE +:1021B000F7141414171410101F101F141414F4140F +:1021C0001010F010F000001F101F0000001F14007E +:1021D0000000FC140000F010F01010FF10FF1414A9 +:1021E00014FF141010101F00000000F010FFFFFF7C +:1021F000FFFFF0F0F0F0F0FFFFFF0000000000FF35 +:10220000FF0F0F0F0F0F38444438447C2A2A3E1426 +:102210007E02020606027E027E0263554941633851 +:1022200044443C04407E201E2006027E020299A502 +:10223000E7A5991C2A492A1C4C7201724C304A4D60 +:102240004D303048784830BC625A463D3E49494995 +:10225000007E0101017E2A2A2A2A2A44445F44443E +:1022600040514A444040444A51400000FF0103E0CD +:1022700080FF000008086B6B083612362436060F04 +:10228000090F06000018180000001010003040FF71 +:102290000101001F01011E00191D1712003C3C3CEA +:1022A0003C000000000000000000240027002A007D +:1022B00000000000250028002B0000000000230083 +:1022C0002600290004040404040404040202020297 +:1022D00002020303030303030102040810204080E9 +:1022E0000102040810200102040810200000000868 +:1022F00000020100000304070000000000000000CD +:10230000AED5F0A83FD300408D14A1C8DA1281CF1A +:10231000D9F1DB40A4A6AF200021007F22000750A6 +:102320006C656173652077616974004144433A20AC +:102330000074656D703A2000536574206D6561739B +:102340007572656400537465703A20002B002D008F +:102350004D4F44452000FFFFFFFFFFFF80038670C5 +:1023600080038003867080039FF3E1309FF39FF327 +:10237000E1309FF3983301CC9833983301CC9833F4 +:10238000983387C098339833E1C098339833E1C0CD +:1023900098339FF398C09FF39FF398C09FF38003F7 +:1023A00066CC8003800366CC8003FFFF010CFFFF37 +:1023B000FFFF01001FFF810061301F3F873CE6FCEB +:1023C0008733873CE6FC87F3F8039E0F1F03F8036F +:1023D0009E0F1F03E13CFE0C07CFE13CFE0C07CF34 +:1023E00099033E3086C3E6CF380F9EF3E6CF380F11 +:1023F0009EF39E0327CC81039E0327CC8103E0FF3D +:10240000E10CE6CFE0FFE10CE6CF9803060000FF09 +:102410009803060000FFFFFF1EF0F80380036630FC +:1024200099C38003663099C39FF3010CF8FF9FF3B3 +:10243000010CF8FF9833393C01CF9833393C01CF78 +:102440009833FF0C793F98333ECCE0F398333ECC81 +:10245000E0F39FF33E0098CF9FF33E0098CF8003B8 +:102460003E30E7C380033E30E7C3FFFFFFFFFFFFBF +:10247000FFFFFFFFFFFF76312E3874330056000F49 +:10248000E01FC01FC03F803FF87FF07FE007C0071C +:10249000800F000E001C0018001000560014A03F12 +:1024A000F07FF8E01C6E18EC1C68186018E01C60E7 +:1024B00058E01C7FF83FF014A043004552524F52A1 +:1024C00000484F4C44004845415400574F524B5927 +:1024D00000424F4F535400534C454550004F464621 +:1024E0000000003BEC7BEE63E663E663E663E663D5 +:1024F000E663E663666226600660067FFE3FFC00D8 +:102500000025004300202070F8010204081020403C +:102510008000422A11241FBECFEFD8E0DEBFCDBF1E +:1025200012E0A0E0B1E0E4E4FBE702C005900D9208 +:10253000A83CB107D9F728E0A8ECB2E001C01D9291 +:10254000A931B207E1F712E1CAE8D2E104C021974C +:10255000FE010E94813DC938D107C9F70E94F72AC0 +:102560000C94A03D0C9400004F925F926F927F926A +:102570008F929F92AF92BF92CF92DF92EF92FF9293 +:102580000F931F93CF93DF9300D000D0CDB7DEB76A +:102590004B015C0129013A016701780120E030E03C +:1025A000A9010E94BC3887FDA6C020E030E0A90147 +:1025B000C301B2010E94BC3887FD9DC020E030E01D +:1025C000A901C801B6010E94BC3887FD94C081E012 +:1025D0002091E3073091E4072130310509F080E0D4 +:1025E000809304088092C9079092CA07A092CB07F3 +:1025F000B092CC074092CD075092CE076092CF07A1 +:102600007092D007C092D107D092D207E092D30740 +:10261000F092D4076091F7077091F8078091F9075D +:102620009091FA070E94C13820E030E04AE754E474 +:102630000E94CB3A69837A838B839C838092D507EF +:102640009092D607A092D707B092D8079B01AC0111 +:10265000C301B2010E9422392B013C014092D907EB +:102660005092DA076092DB077092DC0729813A8189 +:102670004B815C81C701B6010E94CB3A6B017C01A2 +:10268000C092DD07D092DE07E092DF07F092E0070C +:102690008091E1079091E207019769F5A501940106 +:1026A00060E070E0CB010E94593A6093D5077093C7 +:1026B000D6078093D7079093D807A301920160E0D3 +:1026C00070E0CB010E94593A6093D9077093DA0702 +:1026D0008093DB079093DC07A701960160E070E030 +:1026E000CB010E94593A6093DD077093DE07809317 +:1026F000DF079093E0070F900F900F900F90DF91FE +:10270000CF911F910F91FF90EF90DF90CF90BF90EE +:10271000AF909F908F907F906F905F904F900895B3 +:1027200080389105B0F46034710598F4E9E0F5E281 +:1027300090E1969FD001A0781124A80F6770E60F52 +:10274000F11D9491A05EBC4F442321F08C91982BF5 +:102750009C93089590958C919823FACFDF92EF92F5 +:10276000FF920F931F93CF93DF937C01D22E8B01A7 +:10277000040F111DEB0177FF02C0D0E0C0E0C801DB +:102780000134110514F080E490E0C817D9073CF437 +:102790004D2DBE01C7010E9490132196F0CFDF910D +:1027A000CF911F910F91FF90EF90DF900895CF92FE +:1027B000DF92EF92FF920F931F93CF93DF936B0102 +:1027C000122FEC017C01E40EF11CCE15DF0544F460 +:1027D000202F412FB601CE010E94AE132196F5CFD6 +:1027E000DF91CF911F910F91FF90EF90DF90CF90ED +:1027F00008952F923F924F925F926F927F928F92A5 +:102800009F92AF92BF92CF92DF92EF92FF920F937F +:102810001F93CF93DF9300D01F92CDB7DEB7C22EA8 +:10282000D12C9601280F391F37FD4FC080389105F4 +:102830000CF04BC0E9824A017B013C01402E512C37 +:10284000160127E0220E311C93E0359427949A95C7 +:10285000E1F78B01B12CA12C1B821A82EA81FB814A +:1028600083E0F595E7958A95E1F7EA0DFB1DE80D04 +:10287000F91DE4918A819B818770992720E830E0D7 +:1028800002C0359527958A95E2F7C901F0E0E22369 +:10289000F923EF2B41F04981B8018A819B81860D94 +:1028A000971D0E9490138A819B8101969B838A8346 +:1028B0008C159D059CF2A20CB31C0F5F1F4FC80125 +:1028C0008E199F09841595053CF20F900F900F907B +:1028D000DF91CF911F910F91FF90EF90DF90CF90FC +:1028E000BF90AF909F908F907F906F905F904F9030 +:1028F0003F902F9008950F931F93CF93DF93EC0198 +:102900008B0140E001960E94901340E0B801CE0197 +:1029100001970E949013B8016F5F7F4F40E0CE0196 +:102920000E949013B8016150710940E0CE010E94ED +:10293000901340E0B801CE01DF91CF911F910F912C +:102940000C9490132F923F924F925F926F927F92CE +:102950008F929F92AF92BF92CF92DF92EF92FF92AF +:102960000F931F93CF93DF93C82FD0E081E090E0C7 +:102970004C018C1A9D0A442455244C1A5D0A440CBF +:10298000551C7E0188E1E80EF11C40E0B70188E1AA +:1029900090E00E94901308E110E00C1B1D0B40E03A +:1029A000B80188E190E00E94901340E068E170E097 +:1029B000C7010E94901340E068E170E0C8010E94E6 +:1029C000901322242394312C712C612C97FC06C087 +:1029D000219782E0480E511C840C951C8FEF681AD9 +:1029E000780A82E0280E311C820C931C530188E186 +:1029F000A80EB11C40E07E0188E1E80EF11CB70191 +:102A0000C5010E94901388E1C82ED12CC618D708A2 +:102A100040E0B701C6010E94901340E008E110E0D9 +:102A20000C1B1D0BB801C5010E94901340E0B801BA +:102A3000C6010E94901340E0B501C7010E949013A7 +:102A400040E0B501C8010E94901340E0B601C70103 +:102A50000E94901340E0B601C8010E9490136C16CA +:102A60007D060CF4B3CFDF91CF911F910F91FF90B2 +:102A7000EF90DF90CF90BF90AF909F908F907F901E +:102A80006F905F904F903F902F90089580E0E0E22C +:102A9000F3E081118FEF00248193819381938193DF +:102AA0000394D1F7E5E0F8E01786168615861486BC +:102AB00008956F927F928F929F92AF92BF92CF9222 +:102AC000DF92EF92FF920F931F93CF93DF938038A3 +:102AD00091050CF057C0603471050CF053C07B01B8 +:102AE00037E0E322FF2433E0759567953A95E1F7E7 +:102AF000DB01B695BA2FAA27B795A7955D01C0E867 +:102B0000AC0EB11CA80EB91EA80FB91FA05EBC4F19 +:102B100000E810E0081B190B90E080E0E8E0F0E02E +:102B20004F018E189F0830E0FA01E80FF91FC49199 +:102B30007D906D01D1E0CD1AD1080E2C01C0CC0FD3 +:102B40000A94EAF77C2AE6017882E114F10499F00C +:102B50006730710581F0E491EC01CA0DDB1DC05EA8 +:102B6000DC4FF0E0082C02C0F595E7950A94E2F7F7 +:102B7000F881EF2BE8830196821793071CF408175E +:102B8000190791F6DF91CF911F910F91FF90EF9070 +:102B9000DF90CF90BF90AF909F908F907F906F907D +:102BA0000895AF92BF92CF92DF92EF92FF920F9370 +:102BB0001F93CF93DF936C017B018B01040F151FD3 +:102BC000EB015E01AE18BF08C017D10759F069913B +:102BD000D601ED91FC910190F081E02DC60109959F +:102BE000892B79F7C501DF91CF911F910F91FF904C +:102BF000EF90DF90CF90BF90AF900895FC01538D80 +:102C0000448D252F30E0842F90E0821B930B5417C6 +:102C100010F0CF96089501970895FC01918D828D53 +:102C2000981761F0A28DAE0FBF2FB11D5D968C91EC +:102C3000928D9F5F9F73928F90E008958FEF9FEF2B +:102C40000895FC01918D828D981731F0828DE80FE7 +:102C5000F11D858D90E008958FEF9FEF0895FC01A1 +:102C6000918D228D892F90E0805C9F4F821B91096E +:102C70008F739927089580E297E00E942F1621E034 +:102C8000892B09F420E0822F089580E090E0892BC1 +:102C900029F00E943B1681110C9400000895FC015C +:102CA000A48DA80FB92FB11DA35ABF4F2C91848DAD +:102CB00090E001968F739927848FA689B7892C930A +:102CC000A089B1898C91837080648C93938D848D5D +:102CD000981306C00288F389E02D80818F7D808360 +:102CE0000895EF92FF920F931F93CF93DF93EC0120 +:102CF00081E0888F9B8D8C8D98131AC0E889F989A3 +:102D0000808185FF15C09FB7F894EE89FF896083A5 +:102D1000E889F98980818370806480839FBF81E026 +:102D200090E0DF91CF911F910F91FF90EF90089568 +:102D3000F62E0B8D10E00F5F1F4F0F731127E02E43 +:102D40008C8D8E110CC00FB607FCFACFE889F9897B +:102D5000808185FFF5CFCE010E944F16F1CFEB8D1C +:102D6000EC0FFD2FF11DE35AFF4FF0829FB7F8944F +:102D70000B8FEA89FB8980818062CFCFCF93DF936D +:102D8000EC01888D8823B9F0AA89BB89E889F98983 +:102D90008C9185FD03C0808186FD0DC00FB607FCB8 +:102DA000F7CF8C9185FFF2CF808185FFEDCFCE01EB +:102DB0000E944F16E9CFDF91CF910895833081F0C3 +:102DC00028F4813099F08230A9F008958730A9F075 +:102DD0008830C9F08430B1F4809180008F7D03C0C9 +:102DE000809180008F7780938000089584B58F77DD +:102DF00084BD089584B58F7DFBCF8091B0008F771F +:102E00008093B00008958091B0008F7DF9CFCF936B +:102E1000DF93282F30E0F901E451FD4D8491F90151 +:102E2000E852FD4DD491F901EC53FD4DC491CC23F2 +:102E3000A1F081110E94DE16EC2FF0E0EE0FFF1FD3 +:102E4000E654FD4DA591B491EC91ED2381E090E025 +:102E500009F480E0DF91CF91089580E090E0FACF0F +:102E60001F93CF93DF93282F30E0F901E451FD4DFC +:102E70008491F901E852FD4DD491F901EC53FD4DD7 +:102E8000C491CC23A9F0162F81110E94DE16EC2FDD +:102E9000F0E0EE0FFF1FE055FD4DA591B4918FB707 +:102EA000F894EC91111108C0D095DE23DC938FBF0C +:102EB000DF91CF911F910895DE2BF8CFCF93DF9351 +:102EC00090E0FC01E852FD4D24918C539D4DFC0196 +:102ED00084918823C9F090E0880F991FFC01EA557E +:102EE000FD4DA591B491FC01E055FD4DC591D491E6 +:102EF00061110DC09FB7F8948C91209582238C931B +:102F00008881282328839FBFDF91CF910895623065 +:102F100051F49FB7F8943C91822F809583238C9332 +:102F2000E8812E2BEFCF8FB7F894EC912E2B2C93BA +:102F30008FBFEACF1F93CF93DF93182FEB0161E090 +:102F40000E945E17209739F460E0812FDF91CF91C6 +:102F50001F910C943017CF3FD10511F461E0F5CFEC +:102F6000E12FF0E0E451FD4DE491E33031F140F424 +:102F7000E130B1F0E230E1F0C038D1057CF7E4CFC8 +:102F8000E73029F1E83059F1E430B1F78091800061 +:102F9000806280938000D0938B00C0938A0004C02D +:102FA00084B5806884BDC7BDDF91CF911F9108951E +:102FB00084B5806284BDC8BDF7CF809180008068F1 +:102FC00080938000D0938900C0938800EDCF8091DA +:102FD000B00080688093B000C093B300E5CF8091CB +:102FE000B00080628093B000C093B400DDCF3FB7E3 +:102FF000F8948091E8029091E902A091EA02B091E0 +:10300000EB0226B5A89B05C02F3F19F00196A11D24 +:10301000B11D3FBFBA2FA92F982F8827BC01CD0122 +:10302000620F711D811D911D42E0660F771F881F81 +:10303000991F4A95D1F708958F929F92AF92BF92B0 +:10304000CF92DF92EF92FF924B015C010E94F71743 +:103050006B017C010E94F7176C197D098E099F098D +:10306000683E734081059105A8F321E0821A91081A +:10307000A108B10888EEC80E83E0D81EE11CF11C3F +:1030800081149104A104B10429F7FF90EF90DF901F +:10309000CF90BF90AF909F908F9008952FB7F894E6 +:1030A0006091E4027091E5028091E6029091E7025E +:1030B0002FBF089584E98093BC008091BC0084FDFB +:1030C000FCCF08958093BB0084E88093BC0080917E +:1030D000BC0087FFFCCF089584EA8093BC008091F8 +:1030E000BC0087FFFCCF88E70C9462180E946C1824 +:1030F00080E48093BB0084E88093BC00E0E2F3E0CE +:103100009091BC0097FFFCCF91919093BB0080936E +:10311000BC0097E0E032F90799F78091BC0087FF87 +:10312000FCCF0C945A18CF93C82F0E946C1880E0E3 +:103130000E9462188C2F0E946218CF910C945A182A +:10314000480F592F511D14161506D4F580389105D6 +:10315000BCF597FF02C090E080E04138510514F0C3 +:1031600040E850E0481BFB0177FD379633E0F595CA +:10317000E7953A95E1F7F695FE2FEE27F795E79557 +:10318000E80FF91FE05EFC4F6770772781E090E061 +:1031900001C0880F6A95EAF7382F213041F4415079 +:1031A00078F08191DF011197832B8C93F8CF809574 +:1031B000415030F09191DF01119798239C93F8CF03 +:1031C0000895CF92DF92EF92FF920F93CF93DF9308 +:1031D0006C017B01C42FD22F202F0E94A018B701B1 +:1031E0006D0F711D61507109603471052CF4202F31 +:1031F0004C2FC6010E94A018202F4D2FB701C601E9 +:103200000E94AE13C6018C0F911D202F4D2FB701C8 +:103210000197DF91CF910F91FF90EF90DF90CF90CA +:103220000C94AE132F923F924F925F926F927F92C7 +:103230008F929F92AF92BF92CF92DF92EF92FF92C6 +:103240000F931F93CF93DF93CDB7DEB72A970FB6B7 +:10325000F894DEBF0FBECDBF9A8389836A3061F5D3 +:10326000DC0152968C91B8E08B9F90011124E9818A +:10327000FA8186859785820F931F978786871586A3 +:10328000148681E090E02A960FB6F894DEBF0FBE58 +:10329000CDBFDF91CF911F910F91FF90EF90DF9005 +:1032A000CF90BF90AF909F908F907F906F905F90E6 +:1032B0004F903F902F9008956D3019F329813A81F6 +:1032C0003A872987D9011C96AD90BC90B0E8AB161F +:1032D000B1040CF07BC0F901C684D784F0E4CF16AA +:1032E000D1040CF073C0D90152966C90529745E00E +:1032F0009501649E200D311D1124121613060CF049 +:1033000065C0262C312C910153E0220F331F5A95B2 +:10331000E1F72C0D3D1D121613060CF057C0519607 +:10332000BC91BB83E985FA85F089FC83649FB00179 +:1033300011249B012A55324E3A832983712CE9814D +:10334000FA818491F5E07F1201C080E0460138E007 +:10335000532E282F30E03E832D834C8080FF4B80FE +:10336000411004C03B818C813817E1F010E000E08F +:103370000615C0F4D501A00FB11FB887AF83F12C9B +:10338000E12CE61460F4B701680D791D442D8F819E +:1033900098850E949013BFEFEB1AFB0AF2CF0F5FE4 +:1033A0001F4FE6CF8D819E81959587955A94820C0B +:1033B000931C5110CECF7394E981FA813196FA8330 +:1033C000E983A20CB31CF6E07F12B9CFA985BA85B8 +:1033D00052962C915297422F50E01C968D919C91C1 +:1033E000B6E02B9F800D911D1124E985FA85958704 +:1033F00084872389222309F444CF6AEF6403900170 +:10340000659F300D112420583F4F281739070CF0C5 +:1034100038CFDF010190F081E02D0190F081E02DA7 +:103420006AE0CD0109952DCF682F85E098E00C94D6 +:1034300012190F931F93CF93DF938C01D0E0C0E05C +:10344000F801EC0FFD1F6491662341F085E098E0E0 +:103450000E941219892B11F02196F2CFCE01DF9133 +:10346000CF911F910F910895089590E080E0089505 +:1034700080917A00806980937A008EE480937C004A +:1034800061E070E080E090E00E941C1883B7817FCB +:10349000826083BF80E130E020E093B7916093BF0A +:1034A000889593B79E7F93BF90917A0096FDFCCF4D +:1034B0004091780050917900240F351F815069F7B1 +:1034C00080917A008F7780937A0084E036952795F3 +:1034D0008A95E1F750E040E064EB7BE281E190E027 +:1034E0000E94F639C901089580917A00806980931D +:1034F0007A0088EC80937C006AE070E080E090E0E5 +:103500000E941C1883B7817F826083BF80E270E0D5 +:1035100060E093B7916093BF889593B79E7F93BF08 +:1035200090917A0096FDFCCF20917800309179003F +:10353000620F731F815069F780917A008F778093B3 +:103540007A00769567957695679562527A4090E015 +:1035500080E00E94C13826EF38E24CE151E40E943D +:10356000CB3A089590917A00906990937A008E50AA +:10357000806480937C0083B7817F826083BF20E278 +:1035800090E080E033B7316033BF889533B73E7F3A +:1035900033BF30917A0036FDFCCF409178005091D6 +:1035A0007900840F951F215069F720917A002F77B9 +:1035B00020937A0025E0969587952A95E1F708955E +:1035C0008FE00E94B21AA091EF02B091F0029C012C +:1035D0000E944A3A0E94C33828E539E743E353E49E +:1035E0000E94CB3A0E94443BCB0108958091F9029E +:1035F000882369F086E00E940717892B41F06AE072 +:1036000070E080E090E00E941C181092F90208958A +:103610006F927F928F929F92AF92BF92CF92DF92E2 +:10362000EF92FF920F93CF93DF937C01C62F01E0BF +:1036300020E340E370E060E00E94D713570123E0ED +:10364000A20EB11C00E02AE24AE263E070E0C5018C +:103650000E94D71370E060E0C7010E947B146701ED +:103660003FE2C30ED11C70E060E0C6010E947B14F3 +:103670006FE270E0C7010E947B146FE270E0C60148 +:103680000E947B14EC2FF0E0EE0FFF1FE257FE4F7D +:103690008080918053E0E52EF12CD12CC12C60E884 +:1036A000662E712CD0E0C0E0FE0133E0F595E79581 +:1036B0003A95E1F7EC0DFD1DE80DF91DE491CE0101 +:1036C00087709927930102C0359527958A95E2F76F +:1036D000C901F0E0E223F923EF2B69F0CE01880F56 +:1036E000991F8C0F9D1F01E023E043E0B7018A0D75 +:1036F0009B1D0E94D7132196CE30D105A9F632E04A +:10370000C30ED11C83E0E80EF11C2DE2E216F10499 +:1037100049F6DF91CF910F91FF90EF90DF90CF901E +:10372000BF90AF909F908F907F906F900895880F7B +:10373000991F9093E0028093DF02660F771F7093CA +:10374000DE026093DD028091F602882359F05093E7 +:10375000E2024093E102220F331F309305032093CE +:1037600004030895519541955109F1CF0F931F938B +:10377000CF9380914D01882399F0CFEF0FEE11E0A8 +:1037800061E085E00E943017C8010197F1F760E021 +:1037900085E00E943017C8010197F1F7C15081F709 +:1037A000CF911F910F9108958F929F92AF92BF92E8 +:1037B000CF92DF92EF92FF920F931F93CF93DF93FD +:1037C000D12CC12CF12CE12CD6E032E0932E40E339 +:1037D000A42EB12C8E2C86E00E94071721E0892BA5 +:1037E00009F020E02093F90221E430E041E050E0CC +:1037F00060E670E08FE190E00E94971B80910403E7 +:103800009091050395958795C82F8F31B9F52FE5D0 +:1038100030E041E050E060E670E08FE190E00E942F +:10382000971BCFE50E94461590921708D092120878 +:10383000C0921108B0921408A09213088EE50E945D +:10384000141A109212081092110880E290E09093DE +:1038500014088093130810E000E00815E8F4809144 +:103860001A03F801D89FE00DF11D1124E25BFE4F11 +:1038700080810E94141A0F5F1F4FEFCF803691F6A0 +:1038800020E230E041E050E060E670E08FE190E05F +:103890000E94971BC0E2C6CFD0921208C0921108B6 +:1038A00080E290E090931408809313088C2F0E947C +:1038B000141A0E94F61A0E94761886E00E940717D2 +:1038C000892B09F09BCF8091F902811197CF00914C +:1038D0001A03D09F80011124025B1E4FF801EE0DE8 +:1038E000FF1DC0830E94B61B6AE070E080E090E09C +:1038F0000E941C188FEFE81AF80AE0E1CE0ED11CE6 +:10390000F5E0EF16F10409F065CFF8011582DF91BB +:10391000CF911F910F91FF90EF90DF90CF90BF90CC +:10392000AF909F908F9008953F924F925F926F92C9 +:103930007F928F929F92AF92BF92CF92DF92EF923F +:10394000FF920F931F93CF93DF93CDB7DEB72E97E0 +:103950000FB6F894DEBF0FBECDBF80911D03882344 +:1039600009F4A5C11092BD071092BE071092BF07BF +:103970001092C0078090BD079090BE07A090BF072F +:10398000B090C007C0900D03D0900E03E0900F03DD +:10399000F0901003A7019601C501B4010E94593AA5 +:1039A0002B013C0120E030E0A9010E94B23B181637 +:1039B0000CF0A0C1C301B2010E94443B80914801B8 +:1039C000882309F4B8C1C092C507D092C607E09217 +:1039D000C707F092C807E12CF12C00EA10E420E0C0 +:1039E00030E040E450E46E31710540F0E12CF12C00 +:1039F00000E81FE320E030E040E05FE360E070E0DB +:103A000080E391E40E94B41280910308882309F4B2 +:103A10002AC10E944E186D837E838F839887809180 +:103A2000EB079091EC07A091ED07B091EE074D8167 +:103A30005E816F817885481B590B6A0B7B0B8091E7 +:103A4000F7079091F807A091F907B091FA07481786 +:103A500059076A077B0708F406C1E091E507F09172 +:103A6000E60780819181A281B38189839A83AB83A8 +:103A7000BC83E091E907F091EA079C01AD01608108 +:103A80007181828193810E94593A4B015C0120919E +:103A9000F3073091F4074091F5075091F6076981DB +:103AA0007A818B819C810E94593A6B017C01209123 +:103AB000D9073091DA074091DB075091DC07C50147 +:103AC000B4010E9422392091EF073091F007409114 +:103AD000F1075091F2070E945A3A2B013C014092A3 +:103AE000EF075092F0076092F1077092F207309062 +:103AF000040831101AC02091D5073091D6074091A3 +:103B0000D7075091D807C701B6010E9422399B01FF +:103B1000AC01C301B2010E94593A6093EF07709360 +:103B2000F0078093F1079093F2074090EF075090D1 +:103B3000F0076090F1077090F2071091FF079091E5 +:103B400000089E87A0910108AD8700910208212FEF +:103B5000392F4A2F502FC301B2010E94B23B1816D1 +:103B60000CF0CCC0812F9E85AD85B02F8093EF07E0 +:103B70009093F007A093F107B093F207332009F474 +:103B8000D6C02091D5073091D6074091D7075091E4 +:103B9000D807C501B4010E9422394B015C01209174 +:103BA000DD073091DE074091DF075091E007C70144 +:103BB000B6010E9422399B01AC016091EF07709120 +:103BC000F0078091F1079091F2070E94593AA50100 +:103BD00094010E945A3A6B017C019B01AC01612F58 +:103BE0007E858D85902F0E94BC3887FD18C010916E +:103BF000FB079091FC079E87A091FD07AD87009180 +:103C0000FE07212F392F4A2F502FB601C7010E94DE +:103C1000BC3887FD04C01C2DDE86ED860F2DE0919B +:103C2000E707F091E807812F9E85AD85B02F80834F +:103C30009183A283B38389819A81AB81BC81809374 +:103C4000F3079093F407A093F507B093F6078D81DF +:103C50009E81AF81B8858093EB079093EC07A0938A +:103C6000ED07B093EE076091C1077091C207809194 +:103C7000C3079091C4070E943D3B89E02E960FB682 +:103C8000F894DEBF0FBECDBFDF91CF911F910F9192 +:103C9000FF90EF90DF90CF90BF90AF909F908F906C +:103CA0007F906F905F904F903F900C949A17809107 +:103CB0001C03609144017091450181110EC08091F7 +:103CC0000B0390910C0320911B03BC01222329F0CC +:103CD00060914301680F792F711D90E080E00E9490 +:103CE000C1386093BD077093BE078093BF07909360 +:103CF000C00740CEC301B20190585ECE8091FB0751 +:103D00009091FC07A091FD07B091FE0789879A87E3 +:103D1000AB87BC879C01AD01C301B2010E94BC38D6 +:103D200087FF2CCF89859A85AB85BC851FCF812CD9 +:103D3000912C540134CF20E030E040E05FE3C70134 +:103D4000B6010E945A3A9B01AC01C501B4010E9420 +:103D5000B23B18164CF41092C1071092C207109291 +:103D6000C3071092C4077FCF80E090E0AFE7B3E4D1 +:103D70008093C1079093C207A093C307B093C40771 +:103D800072CF4F925F926F927F928F929F92AF927B +:103D9000BF92CF92DF92EF92FF92CF93DF9380900A +:103DA000F1029090F202A090F302B090F402C09160 +:103DB0001A03D0E0C501B4010E943D3B6B017C01B8 +:103DC00020E030E048E453E4C501B4010E94BC386F +:103DD00093E0CC0FDD1F9A95E1F7CE5FDE4F87FFB2 +:103DE00031C02881398150E040E025513109410935 +:103DF0005109C701B6010E945D3D28EC30E040E06A +:103E000050E00E94F639CA01B9016B5E7F4F8F4FB7 +:103E10009F4F0E94C33860930D0370930E038093ED +:103E20000F0390931003DF91CF91FF90EF90DF90FD +:103E3000CF90BF90AF909F908F907F906F905F904A +:103E40004F9008954A805B80712C612C20E030E017 +:103E50004CE853E4C501B4010E94BC3887FF1FC081 +:103E600088809980B12CA12CA7019601285C31098A +:103E700041095109C301B201681979098A099B09ED +:103E80000E945D3D20E530E040E050E00E94F639C0 +:103E9000CA01B901680D791D8A1D9B1DBACF2C81FD +:103EA0003D8150E040E02419350946095709C70112 +:103EB000B60168517140810991090E945D3D20E57C +:103EC00030E040E050E00E94F639CA01B901640DCB +:103ED000751D861D971D9DCFFC0101900020E9F7FF +:103EE0003197AF01481B590BBC0185E098E00C9459 +:103EF000D1158F929F92AF92BF920F931F93CF9342 +:103F0000DF93CDB7DEB7A1970FB6F894DEBF0FBE33 +:103F1000CDBF19A2423008F44AE08E010F5D1F4F59 +:103F2000842E912CB12CA12CA50194010E94283A39 +:103F3000E62FB901CA01EA30F4F4E05DD801EE934E +:103F40008D01232B242B252B79F790E080E010970F +:103F500019F0CD010E946C1FA1960FB6F894DEBF38 +:103F60000FBECDBFDF91CF911F910F91BF90AF904A +:103F70009F908F900895E95CE1CFCF92DF92EF920E +:103F8000FF92CF93DF936C01990FEE08FF08F7FEC5 +:103F900017C08DE20E94141AEC0166277727CB0127 +:103FA0006C197D098E099F094AE00E94791F8C0FC8 +:103FB0009D1FDF91CF91FF90EF90DF90CF900895FC +:103FC0004AE0C701B601DF91CF91FF90EF90DF90FB +:103FD000CF900C94791F0F9329E330E030931208AF +:103FE0002093110822E130E0309314082093130845 +:103FF00024E02093170820911E0330911F03253FD2 +:10400000314078F08DEC92E10E94191A00E020E234 +:1040100048E460E170E087E390E00E94E1180F91CE +:1040200008950E94BD1FF2CF4F925F926F927F92D0 +:104030008F929F92AF92BF92CF92DF92EF92FF92B8 +:104040000F931F93CF936B017C01742EAC019B01E6 +:104050000E940F3C882399F088EB92E0CF911F914A +:104060000F91FF90EF90DF90CF90BF90AF909F9017 +:104070008F907F906F905F904F900C946C1F4601D3 +:104080005701E894B7F82FEF3FEF4FE75FE7C5011F +:10409000B4010E940F3C81110DC02FEF3FEF4FE79D +:1040A0005FE7C501B4010E94BC3818161CF48CEB04 +:1040B00092E0D4CF2FEF3FEF4FE75FE4C701B601A7 +:1040C0000E94B23B18161CF480EC92E0C7CF2FEF91 +:1040D0003FEF4FE75FECC701B6010E94BC3887FD98 +:1040E000F3CF20E030E0A901C701B6010E94BC383F +:1040F00010E000E087FF08C08DE20E94141A8C01D6 +:10410000F7FAF094F7F8F094C0E060E070E080E037 +:104110009FE37C1641F020E030E040E251E40E9451 +:10412000CB3ACF5FF6CFA70196010E945A3A2B01F6 +:104130003C010E94443B4B015C014AE00E94791F14 +:104140007C01E00EF11ECC23B1F1C501B4010E9447 +:10415000C1389B01AC01C301B2010E94593A4B0125 +:104160005C018EE20E94141AE80EF91EC15018F18B +:1041700020E030E040E251E4C501B4010E94223960 +:104180002B013C010E94443B4B01B12CA12C4AE085 +:10419000C501B4010E94791FE80EF91EC501B401E2 +:1041A0000E94C1389B01AC01C301B2010E94593A7F +:1041B0004B015C01DBCFC701CF911F910F91FF90A5 +:1041C000EF90DF90CF90BF90AF909F908F907F90B7 +:1041D0006F905F904F900895CF92DF92EF92FF9291 +:1041E0000F93CF93DF9381E0809316081092150808 +:1041F0008093170800E02EE046E661E370E081E07E +:1042000090E00E94E11820911E0330911F03253F8A +:1042100081E03807B8F4A4E6B0E00E944A3A24EFFF +:1042200031E040E050E00E94F639BA01A9014E5F4A +:104230005F4F6F4F7F4F2EE061E370E081E090E0D1 +:104240000E94D7136091BD077091BE078091BF0790 +:104250009091C0070E943D3B9B01AC01A4E6B0E0F9 +:104260000E94153A34EFC32EDD24D394E12CF12CB7 +:10427000A70196010E94F639DA01C9010296A11D33 +:10428000B11D029700E02DE043E062E370E00E9480 +:10429000D7136091BD077091BE078091BF079091C1 +:1042A000C0070E943D3B9B01AC01A4E6B0E00E9428 +:1042B000153AA70196010E94F639DA01C901029662 +:1042C000A11DB11D039724E045E06CE370E00E945E +:1042D000D7136091BD077091BE078091BF07909181 +:1042E000C0070E943D3B9B01AC01A4E6B0E00E94E8 +:1042F000153AA70196010E94F6392E5F3F4F4F4FA6 +:104300005F4F790181E0E81AF108C1E3D0E041E0B4 +:10431000BE01C7010E9490132196CD33D105B9F794 +:104320006091BD077091BE078091BF079091C00753 +:104330000E943D3B9B01AC01A4E6B0E00E94153A0F +:1043400024EF31E040E050E00E94F639DA01C90183 +:104350000296A11DB11D0397EE24E39404E025E02D +:1043600045E055E26BE370E00E94F91300E02EE0B7 +:1043700047E161E370E088E690E00E94E118609117 +:10438000C1077091C2078091C3079091C4070E9432 +:104390003D3B9B01AC012F5F310941095109A7E168 +:1043A000B0E00E94153ACC24C394DD24DA94ED2CBD +:1043B000FD2CA70196010E94F639422F2EE061E301 +:1043C00070E088E690E00E94D7131092160881E012 +:1043D0008093150882E090E0909312088093110872 +:1043E000C7E3D0E0D0931408C09313086091BD07D1 +:1043F0007091BE078091BF079091C00740E00E9476 +:10440000142088EF0E94141A83E095E20E94191A82 +:1044100089E690E09093120880931108D0931408D5 +:10442000C09313086091C1077091C2078091C307C0 +:104430009091C4070E943D3B9B01AC012F5F310965 +:1044400041095109A4E6B0E00E94153AA70196017E +:104450000E94F63969017A014AE0C701B601F7FE08 +:104460000BC08DE20E94141A66277727CB016C19C6 +:104470007D098E099F094AE00E94791F81E095E23B +:104480000E94191A81E08093160810921508DF9196 +:10449000CF910F91FF90EF90DF90CF9008956F92A2 +:1044A0007F928F929F92AF92BF92CF92DF92EF92C4 +:1044B000FF920F931F93CF93DF93B0901A0377244B +:1044C0007394B11001C0712C2B2D30E0609142012A +:1044D0006150770B41E050E090E080E00E94971B34 +:1044E00086E00E94071721E0892B09F020E0209345 +:1044F000F902FF24F39472E0972EE6E08E2EFCE0A2 +:10450000CF2ED12C0E944615C0910403D0910503F3 +:10451000D595C795EC2E8E011127C801870D911DE9 +:1045200077FC9A958B199109712C97FD06C0833001 +:10453000910514F082E090E0782EF0921608109227 +:1045400015089092170810921208109211081092F4 +:104550001408109213088BE99DE10E94191A109219 +:104560001608F09215081092120810921108A72C44 +:10457000072C000CBB08C501019654E0880F991F59 +:104580005A95E1F7909314088093130889E99DE107 +:104590000E94191A6C2E671890E080E098012A1981 +:1045A0003B095901209142018C010F5F1F4F621698 +:1045B000D0F4D0921208C0921108980144E0220F62 +:1045C000331F4A95E1F730931408209313088A0D9E +:1045D0009B1D889E9001899E300D1124C901825B2C +:1045E0009E4F0E946C1FC801639403301105D1F6E1 +:1045F0000E94F61A0E94761886E00E940717892BFF +:10460000B9F48091F902811113C00E94B61BE092A7 +:104610001A03DF91CF911F910F91FF90EF90DF90E0 +:10462000CF90BF90AF909F908F907F906F900895A4 +:10463000BC2E68CF0E949B3D1F93CF93DF93EC016C +:10464000162F0E94E039181739F0612FCE01DF9143 +:10465000CF911F910C94E839DF91CF911F9108956C +:10466000AF92BF92CF92DF92EF92FF920F931F9380 +:10467000CF93DF936091470182E090E00E941C237A +:104680006091460183E090E00E941C236091450107 +:1046900084E090E00E941C236091440185E090E05A +:1046A0000E941C236091430186E090E00E941C233D +:1046B00060914B0187E090E00E941C2360914A01C9 +:1046C00088E090E00E941C236091490189E090E01D +:1046D0000E941C2360917E018AE090E00E941C23CE +:1046E000609148018BE090E00E941C2360914D0195 +:1046F0008CE090E00E941C2360911A038DE090E012 +:104700000E941C23609142018EE090E00E941C23D5 +:10471000609119038FE090E00E941C236091F502E4 +:1047200080E190E00E941C236091160381E190E0FB +:104730000E941C236091F80282E190E00E941C23F9 +:104740006091F70283E190E00E941C236091F602E1 +:1047500084E190E00E941C2385E1E82EF12C10E01A +:1047600006E0809142011817B8F5109F60011124EE +:10477000D0E0C0E0FE01EC0DFD1DE25BFE4F60816C +:10478000C7018C0F9D1F0E941C232196C630D105A6 +:1047900089F7670186E0C80ED11C88E0189FE00108 +:1047A0001124CE5FDE4F8EE0E80EF11C6981229667 +:1047B000C6010E941C23560182E0A80EB11CFE0116 +:1047C00032976081C60101960E941C236501AE14D8 +:1047D000BF0461F71F5FC5CFDF91CF911F910F918C +:1047E000FF90EF90DF90CF90BF90AF9008958F92A1 +:1047F0009F92AF92BF92CF92DF92EF92FF92CF93B0 +:104800006FEF70E089E00E949A178BEA94E00197BD +:10481000F1F78EE00E94B21A7C018AE00E9407172D +:104820009091C802981729F091E09093110380931A +:10483000C802809101019FEF980F909301018111AF +:1048400006C00E94E01A90931803809317036091AA +:10485000C1077091C2078091C3079091C4070E945D +:104860003D3B89E00E949A178090F1029090F202FD +:10487000A090F302B090F402B70190E080E00E94B3 +:10488000C138A50194010E94593A2DEC3CEC4CE44E +:104890005DE30E942239A50194010E945A3A609377 +:1048A000F1027093F2028093F3029093F4020E945B +:1048B000C11E60911E0370911F0390E080E00E9472 +:1048C000C1384B015C01C090BD07D090BE07E0909D +:1048D000BF07F090C007A70196010E94BC38811164 +:1048E00051C020910D0330910E0340910F03509160 +:1048F0001003C501B4010E94593A4B015C0120E04C +:1049000030E0A9010E94B23B181694F520E030E097 +:1049100040EA50E4C501B4010E94B23B181694F17C +:1049200060911E0370911F0390E080E00E94C138E7 +:10493000A70196010E94593A4B015C0120E030E04A +:10494000A9010E94B23B181664F520E030E040E86F +:104950005FE3C501B4010E94BC38181664F1C701B9 +:10496000B6010E94443B70931F0360931E0323C053 +:1049700020E030E040EA50ECC501B4010E94BC38B0 +:1049800087FFCECF60910D0370910E0380910F03CE +:10499000909110030E94443B70931F0360931E0389 +:1049A000BFCF20E030E040E85FEBC501B4010E94DA +:1049B000B23B87FFD4CF60910B0370910C0390E062 +:1049C00080E00E94C13820910D0330910E03409188 +:1049D0000F03509110030E94593A6B017C0120E0B3 +:1049E00030E0A9010E94B23B18160CF05EC0C7016E +:1049F000B6010E94443B6530710508F05AC08091B1 +:104A00007F01811105C080914C0181110E94B61B6C +:104A100081E080937F0110924C0180911E03909160 +:104A20001F03853F21E0920710F0109200012091B2 +:104A30000001211141C0843F9140F0F56FEF70E01B +:104A400089E00E949A170E94B61BC1E0C093000142 +:104A50000E944F220E943023C09311038EE00E94D7 +:104A6000B21ABC0190E080E00E94C1386093F1026C +:104A70007093F2028093F3029093F4021092030376 +:104A800020910B0330910C034AE050E060E971E0A3 +:104A900086E990E0CF91FF90EF90DF90CF90BF90AC +:104AA000AF909F908F900C94971BC701B6019058C0 +:104AB000A0CF10927F01B1CFCF91FF90EF90DF9008 +:104AC000CF90BF90AF909F908F9008950C94E03955 +:104AD0004F925F926F927F928F929F92AF92BF920E +:104AE000CF92DF92EF92FF920F931F93CF93DF93BA +:104AF000CDB7DEB72B970FB6F894DEBF0FBECDBF94 +:104B000090911903E82FF0E09F01220F331F9111BC +:104B100026C0F901E25DFD4F40815181EE24E3940E +:104B200000E124E260E370E080E390E00E94F9138A +:104B30002B960FB6F894DEBF0FBECDBFDF91CF919D +:104B40001F910F91FF90EF90DF90CF90BF90AF90AB +:104B50009F908F907F906F905F904F9008959230CC +:104B600009F079C0EF5DF24E4490F901E252FE4F38 +:104B7000A080B180F12CE12C04E310E393E0592EE6 +:104B800027E0622EE414A0F6F501EE0DFF1D44911E +:104B900080E1840F833008F45CC081EF7816D1F097 +:104BA00082EF7816C1F1403F90F4193710F0085F9A +:104BB00010E088E0489FA00111244F555A4E602F05 +:104BC00070E028E0812F90E00E945915185F80EF77 +:104BD000782E1DC04E39D8F41D3710F0085F10E054 +:104BE000C02ED12C812E912C459DA001112449531A +:104BF0005C4E23E0B601C4010E94591521E046EC49 +:104C000053E1B601C40103960E9459151C5F8FEF52 +:104C1000E81AF80AB7CF4332D0F7193710F0085F17 +:104C200010E0C02ED12C812E912C469DA001112484 +:104C30004F525D4E27E0B601C4010E94591521E094 +:104C400046EC53E1B601C40107960E945915185F5E +:104C5000DECF742EDCCF80E390E090931208809337 +:104C6000110884E390E0909314088093130881E086 +:104C700080931708F901E75BF24E65917491CE01BC +:104C800001960E94B538CE0101960E946C1F50CF4C +:104C90002F923F924F925F926F927F928F929F924C +:104CA000AF92BF92CF92DF92EF92FF920F931F933A +:104CB000CF93DF9300D01F92CDB7DEB7898386E014 +:104CC0000E94071721E0892B09F020E02093F902C8 +:104CD0005AE0252E312C0E944615009104031091B4 +:104CE00005031595079526E02093170831E03093CA +:104CF0001608109215086091DB027091DC02072EF5 +:104D0000000C880B990B0E94C3384B015C0145EDE8 +:104D1000C42E42E0D42E760182E090E09B838A8309 +:104D2000EA81FB81BF01FF0F880B990B0E94C338FA +:104D30009B01AC0160E070E080E291E40E94B73B2F +:104D40009B01AC01C501B4010E94CB3A0E943D3BDE +:104D5000CB01B1010E946D3DF701819391937F01D9 +:104D60002A813B81215031093B832A832F3F3F4FCA +:104D7000B9F61093DC020093DB02E9ECF2E0FB836E +:104D8000EA8394E0E92EF12C22E0822E912CB401EA +:104D9000092C000C880B990B0E94C3389B01AC01B5 +:104DA00060E070E080E291E40E94B73B2B013C019F +:104DB0006091DB027091DC02072E000C880B990BCE +:104DC0000E94C338A30192010E94CB3A0E943D3B4E +:104DD000CB01B1010E946D3DF60120813181821B22 +:104DE000930BF2E3F89FB001F99F700D1124072E89 +:104DF000000C880B990B0E94C338EA81FB8120814B +:104E00003181428153810E945A3A2B013C0120E0BA +:104E100030E0A9010E94BC3881119BC0EA81FB816E +:104E2000408251826282738201E022E346E270E0B6 +:104E300060E0C70104970E94D7138EECA82EBB2414 +:104E4000BA940FEF1FEFEA81FB812081318142810B +:104E5000538160E070E080E890E40E94593A2B01B1 +:104E60003C01B5010B2C000C880B990B0E94C33838 +:104E70009B01AC01C301B2010E945A3A0E943D3B22 +:104E8000F0921208E09211087093140860931308CE +:104E9000F60180819181800F911F0E94BD1F0F5FDD +:104EA0001F4FF2E3AF0EB11C0230110561F62A81EB +:104EB0003B812C5F3F4F3B832A8331E0831A91086B +:104EC00082E0C80ED11C9CE2E90EF11CE8E8EE1667 +:104ED000F10409F05CCF00E022E040E870E060E01F +:104EE00090E080E00E94D71320E140E860E370E0AA +:104EF00090E080E00E94D71389810E9468250E947B +:104F000076180E94F61A86E00E940717892B09F08E +:104F1000E2CE8091F9028111DECE0E94B61B809113 +:104F2000DB029091DC020F900F900F90DF91CF91F8 +:104F30001F910F91FF90EF90DF90CF90BF90AF90B7 +:104F40009F908F907F906F905F904F903F902F90A9 +:104F50000895C301B20190582DEC3CEC4CE45FE3A2 +:104F60000E942239A30192010E945A3AEA81FB81F0 +:104F7000608371838283938357CF9C0144E650E022 +:104F800064E873E090E080E00E94971B88E00E9454 +:104F90004826BC01665A7F4F9C014AE050E00E94BF +:104FA000971B88E00E944826BC01675F7F4F9C01E9 +:104FB00041E050E00E94971B88E00C9448262F9215 +:104FC0003F924F925F926F927F928F929F92AF9299 +:104FD000BF92CF92DF92EF92FF920F931F93CF93E6 +:104FE000DF93D82E282F30E0E091FA02F0E0EC5762 +:104FF000FE4F60816150770B41E050E090E080E02F +:105000000E94971B86E00E94071721E0892B09F078 +:1050100020E02093F9021092160881E08093150891 +:1050200038E3632EE0900403F0900503F594E794D1 +:10503000AE2C8701112798012D193109629EC001FC +:10504000639E900D1124C80FD91F209709F1662780 +:1050500077276C1B7D0B072E000C880B990B0E9489 +:10506000C3382AE939E949E15FE30E9422391B018B +:105070002C01BE01DD0F880B990B0E94C3389B01E8 +:10508000AC01C201B1010E945A3A0E943D3BEB01C2 +:105090000E944615025011094E0185E0B82E93E09A +:1050A000792E7A0CC090FA02D12C17FD20C0F6019F +:1050B000EC57FE4F808180171106C9F0C4F0E4E878 +:1050C000F1E070E060E0CF01845891408C159D05BF +:1050D00034F48191680F711DF6CFDE2CA3CF872D9C +:1050E0008B19680FC401885491090E94081BBA9457 +:1050F0000F5F1F4F88E3880E911CB110D3CFE4E8F7 +:10510000F1E090E080E09F01245831402C153D05EE +:1051100024F42191820F911DF6CF8E0D0E946825F7 +:105120000E9476180E94F61A86E00E940717892BC3 +:10513000A1F68091F9028111D0CF0E94B61B8A2D71 +:10514000DF91CF911F910F91FF90EF90DF90CF9063 +:10515000BF90AF909F908F907F906F905F904F9097 +:105160003F902F9008951F920F920FB60F92112427 +:105170002F933F934F935F936F937F938F939F935F +:10518000AF93BF93EF93FF9380E297E00E944F1697 +:10519000FF91EF91BF91AF919F918F917F916F910F +:1051A0005F914F913F912F910F900FBE0F901F90E5 +:1051B00018951F920F920FB60F9211242F938F9371 +:1051C0009F93EF93FF93E0913007F0913107808137 +:1051D000E0913607F091370782FD1BC090818091E6 +:1051E00039078F5F8F7320913A07821741F0E09162 +:1051F0003907F0E0E05EF84F958F80933907FF9113 +:10520000EF919F918F912F910F900FBE0F901F9054 +:1052100018958081F4CF1F920F920FB60F92112430 +:105220002F933F938F939F93AF93BF938091E4020B +:105230009091E502A091E602B091E7023091E3027D +:1052400023E0230F2D3758F50196A11DB11D2093A2 +:10525000E3028093E4029093E502A093E602B09308 +:10526000E7028091E8029091E902A091EA02B091F0 +:10527000EB020196A11DB11D8093E8029093E90213 +:10528000A093EA02B093EB02BF91AF919F918F91EF +:105290003F912F910F900FBE0F901F90189526E809 +:1052A000230F0296A11DB11DD2CF1F920F920FB6F0 +:1052B0000F9211242F933F934F935F936F937F939C +:1052C0008F939F93EF93FF9383B1817029B1909156 +:1052D000EE02981709F49DC030E0220F232F221F01 +:1052E000330B922F8093EE024091ED02241709F4C4 +:1052F00090C02093ED022091E1023091E2029817D4 +:1053000019F031952195310940910403509105031D +:105310006091DF027091E002240F351F26173707D6 +:105320000CF48BC02091E1023091E202981719F041 +:105330003195219531094091040350910503609105 +:10534000DD027091DE02240F351F621773070CF423 +:105350006FC04091E1025091E202981719F0519507 +:10536000419551092091040330910503240F351F05 +:10537000309305032093040341E0981340E020910B +:10538000EC02421709F440C02091E1023091E202A0 +:10539000981719F0319521953109609104037091A6 +:1053A0000503E091DF02F091E002260F371F2E1770 +:1053B0003F070CF44CC02091E1023091E2029817B3 +:1053C00019F031952195310960910403709105031D +:1053D000E091DD02F091DE02260F371FE217F3079E +:1053E0008CF12091E1023091E202981719F0319589 +:1053F000219531098091040390910503820F931F39 +:1054000090930503809304034093EC0281E0809322 +:105410001103FF91EF919F918F917F916F915F9118 +:105420004F913F912F910F900FBE0F901F901895A5 +:105430002091DD023091DE029BCF2091DF0230917E +:10544000E00296CF8091DD029091DE02D9CF80916B +:10545000DF029091E002D4CF18951F920F920FB601 +:105460000F9211248F93EF93FF93E0E6F0E0808199 +:1054700080648083FF91EF918F910F900FBE0F900A +:105480001F9018950F931F93CF93DF93E0E2F7E0FF +:105490001382128288EE93E0A0E0B0E084839583CB +:1054A000A683B7838EE992E09183808385EC90E0B8 +:1054B0009587848784EC90E09787868780EC90E0DE +:1054C000918B808B81EC90E0938B828B82EC90E0CF +:1054D000958B848B86EC90E0978B868B118E128E49 +:1054E000138E148EE5E0F8E0138212821682178282 +:1054F00080E1808715821482128680EB92E091838E +:105500008083158614861786168681E0808B118A23 +:10551000828B138AC9ECD7E021EC37E03F8F2E8FC6 +:1055200025EC37E03D8F2C8F2DEB37E039A328A3F6 +:105530001AAE1AAA1BAA1CAA1DAA40E050E06FE7E7 +:1055400073E44EAB5FAB68AF79AF44E650E060E028 +:1055500070E04EA75FA768AB79AB21E030E0398FF0 +:10556000288F3B8F2A8F8BAF80E090E0A0E3B1E4DF +:1055700088839983AA83BB8380E090E0A0E0BFE3A7 +:105580008C839D83AE83BF8380E090E0A0E8BFE37F +:1055900088879987AA87BB8780E090E0A0E3B1EC79 +:1055A0008C879D87AE87BF878DEC9CECACE4BDEB10 +:1055B000888B998BAA8BBB8B80E090E0A0E2B1EC4A +:1055C0008C8B9D8BAE8BBF8B0E944E180EA51FA59A +:1055D00028A939A9601B710B820B930B6AA37BA3CB +:1055E0008CA39DA3DF91CF911F910F910895CF932D +:1055F000DF93CDB7DEB7A5970FB6F894DEBF0FBE29 +:10560000CDBF789484B5826084BD84B5816084BD4B +:1056100085B5826085BD85B5816085BD80916E0050 +:10562000816080936E001092810080918100826081 +:1056300080938100809181008160809381008091BE +:1056400080008160809380008091B10084608093AD +:10565000B1008091B00081608093B00080917A00A9 +:10566000846080937A0080917A00826080937A00CF +:1056700080917A00816080937A0080917A008068BE +:1056800080937A001092C100A89584B7877F84BF69 +:105690008091600088618093600087E18093600062 +:1056A00080916000806480936000809160008860D9 +:1056B000809360001092B90088E48093B8000E9443 +:1056C0006C1880E00E94621800E013E2EFE1EE2E19 +:1056D000E3E2FE2EF80184910E9462180F5F1F4FD3 +:1056E000E016F106B9F70E945A1811E01093B800BD +:1056F0000E94761881E280930D0860E08EE00E949F +:105700005E1760E08FE00E945E1761E085E00E9416 +:105710005E1761E089E00E945E1762E087E00E9408 +:105720005E1762E088E00E945E1762E086E00E94F9 +:105730005E1762E08AE00E945E176FEF70E089E01A +:105740000E949A1760E085E00E94301780917A00ED +:10575000876080937A0080917A00886080937A00D5 +:10576000789410936B00109368001BBB90E080E06E +:105770000E946625182F81E090E00E946625912FF7 +:105780008A30944109F0D3C082E090E00E946625FF +:10579000182F83E090E00E946625912F9093470197 +:1057A0008093460184E090E00E946625182F85E0F2 +:1057B00090E00E946625912F9093450180934401CB +:1057C00086E090E00E9466258093430187E090E0A8 +:1057D0000E94662580934B0188E090E00E94662538 +:1057E00080934A0189E090E00E94662580934901F8 +:1057F0008AE090E00E94662580937E018BE090E035 +:105800000E94662591E0811101C090E090934801CB +:105810008CE090E00E94662591E0811101C090E04B +:1058200090934D018DE090E00E94662580931A03CD +:105830008EE090E00E946625282E809342018FE042 +:1058400090E00E9466258093190380E190E00E9419 +:10585000662591E0811101C090E09093F50281E10D +:1058600090E00E9466258093160382E190E00E94FA +:105870006625182F83E190E00E946625912F909372 +:10588000F8028093F70284E190E00E94662591E09F +:10589000811101C090E09093F60252E0852E51E014 +:1058A000952E6EE4A62E61E0B62E75E1E72EF12C62 +:1058B000312C231409F447C010E000E0C701800F29 +:1058C000911F0E946625F501E00FF11F80830F5F95 +:1058D0001F4F0630110591F7670126E0C20ED11C5B +:1058E0003EE0E30EF11C3401C6010E946625082F3C +:1058F00010E0102F0027F301118300832601F2E04E +:105900004F0E511CC60101960E946625082BF3011B +:10591000019311933F0162014E145F0429F7339400 +:10592000F8E08F0E911C26E0A20EB11CC2CF64E1FC +:1059300090E080E00E941C236AE081E090E00E94F9 +:105940001C230E9430231091F50280EC111101C03C +:1059500088EC0E94931880EA111101C081EA0E942C +:1059600093181092120380E28093130380E48093D3 +:10597000140380E6809315038091F7029091F8025A +:10598000892B19F10E94461568E088E290E00E9498 +:10599000081B88E00E9468250E94761868EE73E074 +:1059A00080E090E00E941C180E94B61B0E94B61B6B +:1059B0000E94B61B90E080E00E94BD272091F70274 +:1059C0003091F80282179307E9F60E94381A9093F3 +:1059D000F0028093EF020E94E01A909318038093E4 +:1059E0001703009146011091470110930C03009397 +:1059F0000B038EE00E94B21ABC0190E080E00E948E +:105A0000C1386093F1027093F2028093F302909395 +:105A1000F4020E94741A0E94C11E20E030E040EAA5 +:105A200051E460910D0370910E0380910F039091EA +:105A300010030E945A3A6B017C01B80190E080E0AB +:105A40000E94C1389B01AC01C701B6010E94BC385D +:105A500087FF05C070E060E089E00E949A1710920D +:105A6000FB071092FC071092FD071092FE07412CD5 +:105A7000512C3FE7632E33E4732E4092FF07509280 +:105A800000086092010870920208A090E707B090A9 +:105A9000E80780910308F501C080D180E280F3809F +:105AA000882311F40C94BB37A3019201C701B601FE +:105AB0000E94B23B181634F5F50140825182628291 +:105AC00073828090EF079090F007A090F107B0905C +:105AD000F207C090FF07D0900008E0900108F09016 +:105AE0000208A7019601C501B4010E94B23B181635 +:105AF000C4F4C092EF07D092F007E092F107F09261 +:105B0000F2071FC020E030E0A901C701B6010E94E2 +:105B1000BC3887FFD6CFF501108211821282138222 +:105B2000D0CFC090FB07D090FC07E090FD07F0902D +:105B3000FE07A7019601C501B4010E94BC3887FD8C +:105B4000D8CF81E08093030883B181708093EE0207 +:105B500089B190E0880F892F881F990B8093ED02FF +:105B60002091EE029091ED0281E0291380E0809374 +:105B7000EC0298014AE050E060E971E086E990E0CB +:105B80000E94971B0E944E186093070370930803AE +:105B90008093090390930A030E94B61B0E94B61BD0 +:105BA00080910403909105039C013595279538A3B6 +:105BB0002F8F30930C0320930B0386E00E9407176E +:105BC00089A3811193C080910303882309F48EC0B7 +:105BD0000E94B61B0E944E186B017C01C092FF020E +:105BE000D0920003E0920103F092020386E00E944B +:105BF0000717892B59F40E944E186C197D098E09DC +:105C00009F09643F71408105910580F30E944E1801 +:105C10006C197D098E099F09643F714081059105CA +:105C200008F424C66FEF70E089E00E949A170E9482 +:105C3000B61B1D861092FA028D850E94DF278D8784 +:105C40008B3008F03FC0E82FF0E0E75DF14D0C9499 +:105C5000813D462EC4300D314E315C318C319A314C +:105C6000EE3301340C34163420E030E0A901C701D2 +:105C7000B6010E94BC3887FF64CF1092EF071092E4 +:105C8000F0071092F1071092F2075BCF18ED212E6A +:105C9000312C0EE1602E712C8BEA482E84E0582EB8 +:105CA00081E08093FA028D850E94DF278D87823004 +:105CB00009F405C208F0DAC0882309F400C1813074 +:105CC00009F400C10E94302381E080931103EF8D1D +:105CD000F8A1F0930C03E0930B039F014AE050E01E +:105CE00060E971E086E990E00E94971BF9A1F093CA +:105CF000030380911B03882309F1109149011123AB +:105D0000E9F00E944E18C090FB02D090FC02E09097 +:105D1000FD02F090FE026C197D098E099F0928EEA4 +:105D200033E040E050E00E94283A211738F010920A +:105D30001B030E94B61B81E080934C0180911103EC +:105D40008823F1F180911C03882351F120E030E099 +:105D500040EA51E460910D0370910E0380910F03AE +:105D6000909110030E945A3A6B017C0160910B03E1 +:105D700070910C0390E080E00E94C1389B01AC015F +:105D8000C701B6010E94BC3887FF05C070E060E023 +:105D900089E00E949A170E94B61B81E080934C0113 +:105DA0001092110310921C0310921D030E944E18B2 +:105DB00060930703709308038093090390930A0389 +:105DC0000E944E18009107031091080320910903C7 +:105DD00030910A03601B710B820B930B20E63AEEA5 +:105DE00040E050E00E94283A122F20930603809151 +:105DF0001C0381110BC080914B01882339F02817B7 +:105E000028F081E080931C030E94B61B80911D0343 +:105E100081110BC080914A01882339F0181728F0AE +:105E200081E080931D030E94B61B0E94F7230E940D +:105E3000941C0E944E1880910E08262F281B822F3A +:105E400090910F08992309F427C520931008109208 +:105E50000F0880E090E0892B09F4A2CE0E943B1647 +:105E6000882309F49DCE0E9400009ACE5D855330B0 +:105E700009F428C1543009F025CF809142018830BF +:105E800008F00ECF91E0980F9093420180931A038F +:105E90000E94D41BE0911A0388E0E89FF0011124CE +:105EA000EE5FFE4F3182208224E331E03383228390 +:105EB00046E851E05583448377826682F1CE0E94A2 +:105EC0004F22EECECE0101967C0101E010E0DD24F0 +:105ED000D394B2E0CB2EE0911A0394E0E99FF00155 +:105EE0001124C8010197E80FF91FEE0FFF1FEE5FA5 +:105EF000FE4F2081318130930C0320930B0341E04E +:105F000050E064EF71E084E690E00E94971BD0922D +:105F10004C0186E00E94071721E0892B09F020E060 +:105F20002093F9020E944615C09217080E94F72399 +:105F30000E94941C109212081092110810921408DA +:105F40001092130885E493E20E94191AC8010E9476 +:105F5000BD1F84EC92E00E946C1F80917F01109223 +:105F6000120810921108882309F481C0E0E1F0E0E2 +:105F7000F0931408E093130888E393E20E94191A3F +:105F8000109212081092110820E230E030931408A9 +:105F90002093130881E393E20E94191A809104036D +:105FA00090910503959587950E94BD1F0E94F61A52 +:105FB0000E94761886E00E940717892B09F0B2CF5D +:105FC0008091F9028111AECF809104039091050375 +:105FD00095958795F701819391937F010E94B61B58 +:105FE0006AE070E080E090E00E941C180F5F1F4F95 +:105FF0000430110509F06FCF6FEF70E089E00E9467 +:106000009A17C2010197F1F70E94741A0E94443B4B +:106010006B0178876F8389809A800B811C81C40112 +:106020004E968017910708F03BCEAD80BE80C80128 +:106030004E968A159B0508F033CE87E08093FA02CE +:1060400080E00E94DF27882309F42ACEE0911A031A +:1060500028E0E29FF0011124EE5FFE4F91828082E2 +:1060600013830283B582A482D782C68219CE40E10F +:1060700050E050931408409313088BE293E20E947F +:10608000191A6091F1027091F2028091F3029091DD +:10609000F4020E94443B90E080E04AE00E94791FB5 +:1060A000109212081092110880E290E09093140868 +:1060B000809313088FE193E20E94191A77CF0E9410 +:1060C000D41BEECD87E08093FA02809142018130AB +:1060D00009F4E6CD80E00E94DF27882309F4E0CDB3 +:1060E00010911A0300914201402F4150550BBA0103 +:1060F0001417150639F4115010931A030150009328 +:106100004201CECD812F90E086179707BCF756E06D +:10611000159FD001112450E040E09C012F5F3F4FBC +:10612000FA01EA0FFB1FE25BFE4FF680F0824F5F41 +:106130005F4F46305105A1F743E0220F331F4A95C8 +:10614000E1F7D901AE5FBE4F2D913C91119753E01D +:10615000880F991F5A95E1F7FC01EE5FFE4F3183DE +:10616000208312968D919C9113979383828314962A +:106170008D919C9115979583848316968D919C9112 +:10618000978386831F5FBECF52E05093FA0210E0E0 +:10619000812F0E94DF27182F8130D1F028F0823024 +:1061A00059F10E94302346CD20914601309147019C +:1061B0004AE050E060E971E086E990E00E94971BB8 +:1061C00082E10E9448269093470180934601E0CFE8 +:1061D00020914401309145014AE050E068EC70E0C4 +:1061E00084E190E00E94971B83E10E9448269093EF +:1061F000450180934401CCCF2091430130E04AE037 +:1062000050E064E670E08AE090E00E94971B84E131 +:106210000E94482680934301BBCF83E08093FA021B +:1062200010E0812F0E94DF27182F813031F1A0F07C +:10623000823009F0B6CF2091490130E04AE050E0C9 +:1062400064EB70E090E080E00E94971B88E10E9480 +:10625000482680934901E5CF20914B0130E041E091 +:1062600050E06EE170E090E080E00E94971B86E1D4 +:106270000E94482680934B01D4CF20914A0130E000 +:1062800045E050E06CE370E090E080E00E94971BF6 +:1062900087E10E94482680934A01C3CF84E080931F +:1062A000FA02809148010E94DF2791E0811101C02C +:1062B00090E090934801BECC10E099E0E92EE09286 +:1062C000FA02812F0E94DF27182F882321F08130C6 +:1062D000E9F000E00AC085E08093FA0280917E0137 +:1062E0000E94DF2780937E0101E0F090F50280ECB0 +:1062F000F11001C088EC0E94931880EAF11001C0EF +:1063000081EA0E9493180111DACF4BCF8091F502F8 +:1063100081278093F502E8CF86E08093FA0280918E +:106320004D010E94DF2791E0811101C090E0909320 +:106330004D0180CC81E0809316081092150886E00C +:106340000E94071721E0892B09F020E02093F90231 +:1063500020EF30E042E150E064EA71E08CE390E04D +:106360000E94971B1A8A91E09093170800910403EA +:106370001091050315950795B801012E000C880BA7 +:10638000990B0E94C3386093BD077093BE0780933A +:10639000BF079093C00710931F0300931E030E9432 +:1063A000461501E020E440E870E060E090E080E025 +:1063B0000E94D7136E857F85888999890E94C63A85 +:1063C0006B8F7C8F8D8F9E8F20E030E040E450E417 +:1063D0000E9422391B012C01AC019B0160E070E09E +:1063E00080EC91E40E94593A0E943D3B6B8B7C8B80 +:1063F0008D8B9E8BEB89FC89FA87E9876E857F857B +:10640000888999890E94073C6B017C0120E030E07B +:1064100040E450E40E9422394B015C01AC019B0135 +:1064200060E070E080EC91E40E94593A0E943D3BAC +:106430006F8B788F898F9A8F6F88788C20E030E00F +:1064400040EC51E4C201B1010E945A3A0E943D3B26 +:106450006E877F87888B998B2E843F8420E030E085 +:1064600040EC51E4C501B4010E945A3A0E943D3B00 +:106470004B012B0120E030E040EC51E4C701B601B4 +:106480000E9422399B01AC0160E070E080EC91E455 +:106490000E94593A0E943D3B6B018B0120E030E0A5 +:1064A00040EC51E46B8D7C8D8D8D9E8D0E94223948 +:1064B00020E030E040EC51E40E945A3A0E943D3B1B +:1064C000AB012C143D040CF084C529853A852C15AC +:1064D0003D050CF496C5302F212F8101232E322E3D +:1064E000342F252FA201432E522E89859A8580179D +:1064F000910709F089C0441655062CF4342F252F36 +:10650000A201432E522E641675062CF04614570431 +:106510000CF423013A010034110540F441E0440D2C +:10652000461920E0B801C3010E94A01886E10E942C +:10653000A21483E10E94A21483E00E94A214E7E364 +:10654000F0E0F0931208E093110821E030E030937E +:1065500014082093130832E03093170880E593E283 +:106560000E94191A8091F602882309F405C18EE46D +:1065700093E20E94191A20E030E040E752E4609173 +:10658000BD077091BE078091BF079091C0070E9420 +:10659000593A20E030E044EB53E40E94CB3A2BED33 +:1065A0003FE049EC50E40E9422392BED3FE049ECFA +:1065B0005FE30E94593A6E877F87888B998B809121 +:1065C0001E0390911F030E94EB1F0E94EC2000E02D +:1065D00024E04A8970E060E090E080E00E94D713F8 +:1065E0000E9476180E94F61A86E00E940717892BEF +:1065F00009F0E8C08091F9028111E4C04A89485F3E +:106600004A8B47FFB0CE16CB362D272D3A01432FAC +:10661000522F39852A851A870987032F122F920155 +:10662000261937093C8F2B8FC101E985FA858E1B0E +:106630009F0B9BA38AA34A018618970898012E1BDB +:106640003F0B3F872E87CA01841995099C8B8B8B42 +:10665000F801E219F309FDA3ECA30215130509F4EF +:1066600041C0910121503109388F2F8BE984FA8480 +:10667000B12CA12CD12CC12C4F89588D4E155F0502 +:10668000A4F1C6016AA17BA10E946D3D9B01260D6C +:10669000371DC5016E857F850E946D3DCB01860D3E +:1066A000971DEB8DFC8DCE0EDF1EA80CB91C82173A +:1066B00093071CF0582FC901252FF0E4EF16F104C1 +:1066C00038F441E0420F481B20E0B7010E94A018B7 +:1066D0002FEFE21AF20AD0CF2B01A4010E851F85FD +:1066E00016019DCF188F0F8BC1CFC7018219930957 +:1066F0004B895C89849F6001859FD00C949FD00C4E +:106700001124C701E985FA858E1B9F0B889D5001D6 +:10671000899DB00C989DB00C11240E151F050CF42A +:1067200005CFC6016CA17DA10E946D3D9B01240D8A +:10673000351DC5016E857F850E946D3DCB01860D9F +:10674000971D4B895C89C40ED51EA80CB91C8217F5 +:1067500093071CF0582FC901252F50E4E516F104CA +:1067600038F441E0420F481B20E0B7010E94A01816 +:106770008FEFE81AF80AD1CF8CE493E20E94191A3D +:106780006091BD077091BE078091BF079091C007CF +:10679000905820E030E040E752E40E94593A20E06F +:1067A00030E044EB53E40E94CB3A2BED3FE049EC60 +:1067B00050E40E94223922E93AE046E05FE30E9479 +:1067C0005A3AF9CE8A8982508E3308F0CBCD809127 +:1067D000F60251E085278093F602BACD2091160388 +:1067E00030E041E050E06AEF70E090E080E00E942D +:1067F000971B87E00E944826809316030E94B61BD1 +:1068000019CA8091F7029091F8020E94BD279093D7 +:10681000F8028093F702F2CF88E08093FA02809129 +:1068200019030E94DF278093190304CA0E944615AA +:10683000EE24E39400E320E346E553E270E060E0F9 +:1068400088E290E00E94F9130E94761864E670E0F6 +:1068500080E090E00E941C1886E00E940717892BB8 +:10686000D9F78091F9028111F7CFC8CF80911B032E +:1068700091E0892780931B03882351F00E944E18D2 +:106880006093FB027093FC028093FD029093FE02E2 +:1068900081E0809311032ACA90910D08291748F4CA +:1068A0008F5F891708F0D5CA81E083BF889513BE32 +:1068B000D0CA81E080930F0860930E088091090888 +:1068C00090910A08019690930A0880930908E09035 +:1068D0001E03F0901F0335EFE31631E0F30608F0D6 +:1068E0001CC180911D03882309F4F5C06FEF70E08F +:1068F00089E00E949A170E94461502E113E0B3E076 +:106900008B2E912CA12CB12C0E945D3822E030E01E +:1069100040E050E00E94F639AB01BC014150510902 +:1069200061097109F8018081682F640F613808F0EE +:1069300049C06083D12C0E945D384D2C512C712CA4 +:10694000612CA50194010E94F6396D5F7F4F8F4F36 +:106950009F4F4616570668067906B4F5F801E080A1 +:10696000F12C0E945D3824E130E040E050E00E94CC +:10697000F6396A507109810991096E0D7F1D6034E5 +:10698000710530F421E040E890E080E00E94A0181A +:10699000F801E080F12C0E945D3824E130E040E015 +:1069A00050E00E94F639DC01CB010A97A109B10938 +:1069B0008E0D9F1D21E040E470E060E00E94AE1368 +:1069C000D394B9CF6058B5CF0F5F1F4FF3E00631B6 +:1069D0001F0709F099CF0E944E180E94C13820E08D +:1069E00030E04AE755E40E94CB3A0E94073C6B0135 +:1069F0007C0120E030E040E853E40E94223920E0AE +:106A000030E040E853E40E945A3A2B013C0110E088 +:106A100000E0B801012E000C880B990B0E94C338CE +:106A2000A30192010E94BC3887FF25C00E945D38F7 +:106A30004B015C010E945D3869877A878B879C8750 +:106A4000C501B40120E430E040E050E00E94F63996 +:106A50004B0169857A858B859C8520E830E040E094 +:106A600050E00E94F639CB0141E0B4010E9490133E +:106A70000F5F1F4FCECF80914D01882349F10E94B7 +:106A80005D3820E130E040E050E00E94F639685087 +:106A90007109810991090E94C3384B015C0120E012 +:106AA00030E040E852E4C701B6010E94223920E0FC +:106AB00030E040E852E40E945A3A9B01AC01C50123 +:106AC000B4010E945A3A0E943D3B85E00E949A1709 +:106AD0000E947618BEC980911C0312E081111EC06D +:106AE00080911B0313E0811119C080917F0114E094 +:106AF000811114C020E030E044E353E46091C10709 +:106B00007091C2078091C3079091C4070E94BC385E +:106B100015E087FD03C016E001C010E080917E0102 +:106B2000882309F4A9C10E94461501E020E440E849 +:106B300070E060E090E080E00E94D71381E08093F5 +:106B400017088093160810921508E12C00E120E147 +:106B500041EE54E270E060E090E080E00E94F913C2 +:106B600083E190E0909312088093110884E090E014 +:106B7000909314088093130880911A0326E0829F53 +:106B8000C0011124825B9E4F0E946C1F85E390E040 +:106B9000909312088093110881E090E0909314087C +:106BA0008093130882E080931708C12ED12C809126 +:106BB0001903CC0CDD1C811107C1F601E457FD4F10 +:106BC000408151810EE02CE161E070E080E590E0D1 +:106BD0000E94F913F601E258FD4F40815181E12CEA +:106BE0000EE02EE061E070E081E790E00E94F91392 +:106BF00081E0809317080E94741A20E030E040EA98 +:106C000052E40E94BC3887FFFEC083E190E090937D +:106C100012088093110840E150E05093140840930B +:106C200013080E94741A41E00E94142088EF0E9409 +:106C3000141A89EB94E20E94191AE12C0EE02EE05E +:106C40004DE954E262E170E082E090E00E94F913C5 +:106C5000609117037091180390E080E00E94C138A2 +:106C60006B017C0120E030E048EC52E40E94CB3A1A +:106C70004B015C016091160370E090E080E00E949F +:106C8000C3389B01AC01C501B4010E94B23B181688 +:106C90000CF0CBC083E190E0909312088093110830 +:106CA00080E290E0909314088093130820E030E095 +:106CB0004AE754E4C701B6010E94CB3A41E00E9482 +:106CC00014208BE994E20E94191AE12C0EE02EE0C8 +:106CD0004FE754E262E270E082E090E00E94F91334 +:106CE00003E110E0109312080093110888E190E08E +:106CF00090931408809313080E94381ABC0190E006 +:106D000080E00E94C13820E030E04AE754E40E946D +:106D1000CB3A42E00E9414208DE794E20E94191AB7 +:106D2000109312080093110888E290E090931408E1 +:106D30008093130886E794E20E94191A80911E033B +:106D400090911F030E94EB1F0E94EC200E94761876 +:106D50000E94741A20E030E040EA52E40E94B23B04 +:106D600018160CF474C0609117037091180390E02A +:106D700080E00E94C13820E030E048EC52E40E94FC +:106D8000CB3A6B017C016091160370E090E080E0EB +:106D90000E94C3389B01AC01C701B6010E94BC38F8 +:106DA00087FF57C80E944E1842E0660F771F881F62 +:106DB000991F4A95D1F728EE33E040E050E00E9459 +:106DC000283A20FD55C045C881ED94E21330C1F04A +:106DD00058F48DED94E2113099F087ED94E2123081 +:106DE00079F08BEB94E20CC086EC94E2153041F024 +:106DF0008BEC94E2153020F081EC94E2163089F7A8 +:106E00000E94191AE7CE0E944E18F2E0660F771F13 +:106E1000881F991FFA95D1F728EE33E040E050E043 +:106E20000E94283A20FDF1CE13CF0E944E18E2E0D6 +:106E3000660F771F881F991FEA95D1F728EE33E078 +:106E400040E050E00E94283A20FD24CF49CF0E9424 +:106E50004E1852E0660F771F881F991F5A95D1F779 +:106E600028EE33E040E050E00E94283A20FF7BCF3C +:106E70000E94B61B0C94292F86E08093170810926D +:106E8000160881E0809315080E9446150E94741A26 +:106E900020E030E040EA52E40E94B23B181694F43D +:106EA0000E944E1832E0660F771F881F991F3A958F +:106EB000D1F728EE33E040E050E00E94283A20FD70 +:106EC0000E94B61B609117037091180390E080E058 +:106ED0000E94C13820E030E048EC52E40E94CB3AF6 +:106EE0004B015C016091160370E090E080E00E942D +:106EF000C3389B01AC01C501B4010E94BC3887FFB7 +:106F000012C00E944E1822E0660F771F881F991F3B +:106F10002A95D1F728EE33E040E050E00E94283A6D +:106F200020FD0E94B61B8CE090E0909312088093A5 +:106F3000110882E090E0909314088093130895EF75 +:106F4000E91691E0F90680F087EE93E00E94BD1FFC +:106F500001E020E140E860E370E090E080E00E9422 +:106F6000D7130E94EC20B4CDB70190E080E04AE056 +:106F70000E94791FEDCFC092EF07D092F007E09208 +:106F8000F107F092F207E091E507F091E6078081C2 +:106F90009181A281B3818093F3079093F407A0932A +:106FA000F507B093F60720E030E04FE753E4C70160 +:106FB000B6010E94B23B181614F00C94342E409285 +:106FC000EF075092F0076092F1077092F2070C946D +:106FD000A12DE985FA85E215F3050CF086CA4985ED +:106FE0005A854C155D050CF477CB34012B014F8984 +:106FF000588D16010B891C898E859F859A878987F4 +:107000006ACA29853A85221533050CF408CB340168 +:107010004F88588CEE85FF85FA87E9872B883C8856 +:10702000FECA8F929F92AF92BF92CF92DF92EF9261 +:10703000FF92CF93DF93EC01688179818A819B81F4 +:10704000611571058105910521F464E279ED8BE507 +:1070500097E02DE133EF41E050E00E94F63949011D +:107060005A019B01AC01A7EAB1E40E94153A6B01F9 +:107070007C01ACEEB4EFA50194010E94233AC60E48 +:10708000D71EE81EF91EF7FE06C081E0C81AD10817 +:10709000E10880E8F80AC882D982EA82FB82C70147 +:1070A000B6019F77DF91CF91FF90EF90DF90CF9067 +:1070B000BF90AF909F908F9008958F929F92AF92C4 +:1070C000BF92CF92DF92EF92FF9260918001709118 +:1070D0008101809182019091830161157105810583 +:1070E000910521F464E279ED8BE597E02DE133EF32 +:1070F00041E050E00E94F63949015A019B01AC0180 +:10710000A7EAB1E40E94153A6B017C01ACEEB4EF42 +:10711000A50194010E94233AC60ED71EE81EF91E4F +:10712000F7FE06C081E0C81AD108E10880E8F80A35 +:10713000C0928001D0928101E0928201F09283019D +:10714000C701B6019F77FF90EF90DF90CF90BF907F +:10715000AF909F908F90089560938001709381010C +:1071600080938201909383010895FB01DC010590D7 +:107170000D920020E1F708950E94FE3808F481E0A6 +:107180000895E89409C097FB3EF49095809570951A +:1071900061957F4F8F4F9F4F9923A9F0F92F96E963 +:1071A000BB279395F695879577956795B795F111D8 +:1071B000F8CFFAF4BB0F11F460FF1BC06F5F7F4F75 +:1071C0008F4F9F4F16C0882311F096E911C0772387 +:1071D00021F09EE8872F762F05C0662371F096E890 +:1071E000862F70E060E02AF09A95660F771F881F5F +:1071F000DAF7880F9695879597F90895990F000803 +:10720000550FAA0BE0E8FEEF16161706E807F90778 +:10721000C0F012161306E407F50798F0621B730B13 +:10722000840B950B39F40A2661F0232B242B252B94 +:1072300021F408950A2609F4A140A6958FEF811D37 +:10724000811D08950E9435390C94A6390E94983901 +:1072500038F00E949F3920F0952311F00C948F395B +:107260000C94953911240C94DA390E94B73970F3D3 +:10727000959FC1F3950F50E0551F629FF001729FDB +:10728000BB27F00DB11D639FAA27F00DB11DAA1FEA +:10729000649F6627B00DA11D661F829F2227B00D37 +:1072A000A11D621F739FB00DA11D621F839FA00DC2 +:1072B000611D221F749F3327A00D611D231F849F12 +:1072C000600D211D822F762F6A2F11249F57504069 +:1072D0009AF0F1F088234AF0EE0FFF1FBB1F661FE4 +:1072E000771F881F91505040A9F79E3F510580F0AD +:1072F0000C948F390C94DA395F3FE4F3983ED4F361 +:10730000869577956795B795F795E7959F5FC1F750 +:10731000FE2B880F911D9695879597F9089597F9FB +:107320009F6780E870E060E008959FEF80EC08952B +:1073300000240A9416161706180609060895002454 +:107340000A9412161306140605060895092E0394CE +:10735000000C11F4882352F0BB0F40F4BF2B11F442 +:1073600060FF04C06F5F7F4F8F4F9F4F089557FDA1 +:107370009058440F551F59F05F3F71F04795880FA3 +:1073800097FB991F61F09F3F79F08795089512163A +:1073900013061406551FF2CF4695F1DF08C01616E6 +:1073A00017061806991FF1CF869571056105089497 +:1073B0000895E894BB2766277727CB0197F90895AE +:1073C000F999FECF92BD81BDF89A992780B50895AD +:1073D000262FF999FECF1FBA92BD81BD20BD0FB6F1 +:1073E000F894FA9AF99A0FBE01960895052E97FB24 +:1073F0001EF400940E940D3A57FD07D00E94283ACF +:1074000007FC03D04EF40C940D3A509540953095FE +:1074100021953F4F4F4F5F4F089590958095709500 +:1074200061957F4F8F4F9F4F08950E944A3AA59FC5 +:10743000900DB49F900DA49F800D911D112408956F +:10744000B7FF0C94153A0E94153A821B930B0895CE +:10745000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F58 +:10746000EE1FFF1FA217B307E407F50720F0A21BCA +:10747000B30BE40BF50B661F771F881F991F1A9437 +:1074800069F760957095809590959B01AC01BD0161 +:10749000CF010895A29FB001B39FC001A39F700DBB +:1074A000811D1124911DB29F700D811D1124911D0C +:1074B00008955058BB27AA270E94713A0C94A63908 +:1074C0000E94983938F00E949F3920F039F49F3F8C +:1074D00019F426F40C9495390EF4E095E7FB0C941E +:1074E0008F39E92F0E94B73958F3BA17620773072B +:1074F0008407950720F079F4A6F50C94D9390EF499 +:10750000E0950B2EBA2FA02D0B01B90190010C01B3 +:10751000CA01A0011124FF27591B99F0593F50F4CB +:10752000503E68F11A16F040A22F232F342F442723 +:10753000585FF3CF469537952795A795F04053951B +:10754000C9F77EF41F16BA0B620B730B840BBAF0EB +:107550009150A1F0FF0FBB1F661F771F881FC2F756 +:107560000EC0BA0F621F731F841F48F4879577956A +:107570006795B795F7959E3F08F0B0CF9395880F24 +:1075800008F09927EE0F9795879508950E94753B0F +:10759000E3950C949E3B0E94DF3A0C94A6390E941E +:1075A0009F3958F00E94983940F029F45F3F29F044 +:1075B0000C948F3951110C94DA390C9495390E943E +:1075C000B73968F39923B1F3552391F3951B550B04 +:1075D000BB27AA2762177307840738F09F5F5F4FA6 +:1075E000220F331F441FAA1FA9F335D00E2E3AF0E5 +:1075F000E0E832D091505040E695001CCAF72BD0FD +:10760000FE2F29D0660F771F881FBB1F261737074D +:107610004807AB07B0E809F0BB0B802DBF01FF277F +:1076200093585F4F3AF09E3F510578F00C948F3994 +:107630000C94DA395F3FE4F3983ED4F3869577955E +:107640006795B795F7959F5FC9F7880F911D969538 +:10765000879597F90895E1E0660F771F881FBB1F94 +:10766000621773078407BA0720F0621B730B840B41 +:10767000BA0BEE1F88F7E09508950E94443B68948A +:10768000B1110C94DA3908950E94BF3988F09F57E0 +:1076900098F0B92F9927B751B0F0E1F0660F771F36 +:1076A000881F991F1AF0BA95C9F714C0B13091F02C +:1076B0000E94D939B1E008950C94D939672F782FF9 +:1076C0008827B85F39F0B93FCCF3869577956795F1 +:1076D000B395D9F73EF490958095709561957F4F5D +:1076E0008F4F9F4F08950C9495390E94BF39D8F35E +:1076F000E894E0E0BB279F57F0F02AED3FE049EC2B +:1077000006C0EE0FBB0F661F771F881F28F0B23A26 +:1077100062077307840728F0B25A620B730B840B5D +:10772000E3959A9572F7803830F49A95BB0F661FEF +:10773000771F881FD2F790480C94503CEF93E0FFDE +:1077400007C0A2EA2AED3FE049EC5FEB0E94713AE4 +:107750000E94A6390F90039401FC9058E8E6F0E0EF +:107760000C94833C0E94FE3808F48FEF0895FA01D0 +:10777000EE0FFF1F309621053105A1F1611571054E +:1077800061F48038BFE39B0749F168949038810524 +:1077900061F08038BFEF9B0741F099234AF5FF3F26 +:1077A000E1053105210519F1E8940894E795D9011F +:1077B000AA2329F4AB2FBE2FF85FD0F310C0FF5FD0 +:1077C00070F4A695E0F7F73950F019F0FF3A38F465 +:1077D0009F779F930DD00F9007FC9058089546F027 +:1077E0000C94953960E070E080E89FE308954FE7DE +:1077F0009F775F934F933F932F930E94E13C2F918C +:107800003F914F915F910E9422390C941C3C9F93B1 +:107810000E94753B0F9007FCEE5F0C949E3B0E940C +:10782000FE38880B990B089529F416F00C948F39C3 +:107830000C94D9390C9495390E94BF39A8F3963825 +:10784000A0F707F80F92E8942BE33AEA48EB5FE7DA +:107850000E9438390F920F920F924DB75EB70F9278 +:107860000E94293DE6E8F0E00E945C3C4F915F9168 +:10787000EF91FF91E595EE1FFF1F49F0FE57E0687D +:107880004427EE0F441FFA95E1F74195550B0E94EE +:10789000A33C0F9007FE0C94973C08959F3F31F056 +:1078A000915020F4879577956795B795880F911D2E +:1078B0009695879597F90895DF93CF931F930F932C +:1078C000FF92EF92DF927B018C01689406C0DA2E62 +:1078D000EF010E943539FE01E894A591259135917B +:1078E00045915591A6F3EF010E94713AFE0197016F +:1078F000A801DA9469F7DF90EF90FF900F911F9144 +:10790000CF91DF9108959F938F937F936F93FF9310 +:10791000EF939B01AC010E942239EF91FF910E94ED +:107920005C3C2F913F914F915F910C9422399B01C8 +:10793000AC0160E070E080E89FE30C94CB3A0C94DB +:107940008F390C944E3C0E94BF39D8F39923C9F368 +:10795000940F511DA3F39150504094F059F0882397 +:1079600032F0660F771F881F91505040C1F79E3F3D +:1079700051052CF7880F911D9695879597F90895D5 +:107980005F3FACF0983E9CF0BB2786957795679556 +:10799000B79508F4B1609395C1F7BB0F58F711F490 +:1079A00060FFE8CF6F5F7F4F8F4F9F4FE3CF0C9407 +:1079B000DA3916F00C944E3C0C94953968940C947A +:1079C0008F390E94BF39A8F39923C1F3AEF3DF9337 +:1079D000CF931F930F93FF92C92FDD2788232AF09F +:1079E0002197660F771F881FDAF720E030E040E824 +:1079F0005FEB9FE3883920F0803E38F021968F7747 +:107A00000E945A3AEEEAF0E004C00E945A3AEBEDC6 +:107A1000F0E00E945C3C8B01BE01EC01FB2E6F5735 +:107A200071097595771F880B990B0E94C33828E15F +:107A300032E741E35FE30E943539AF2D9801AE0193 +:107A4000FF900F911F91CF91DF910E94713A0C949A +:107A5000A639FA01DC01AA0FBB1F9B01AC01BF577D +:107A600028F4222733274427507820C0B75190F4B8 +:107A7000AB2F0024469537952795011CA395D2F38B +:107A8000002071F0220F331F441FB395DAF30ED09C +:107A90000C94593A61307105A0E88A07B94630F470 +:107AA0009B01AC016627772788279078309621F0D4 +:107AB00020833183428353830895DB018F939F9307 +:107AC0000E94153ABF91AF91A29F800D911DA39F77 +:107AD000900DB29F900D1124089597FB072E16F478 +:107AE000009407D077FD09D00E94873D07FC05D0A0 +:107AF0003EF4909581959F4F0895709561957F4FC5 +:107B00000895EE0FFF1F0590F491E02D0994AA1B34 +:107B1000BB1B51E107C0AA1FBB1FA617B70710F078 +:107B2000A61BB70B881F991F5A95A9F780959095AA +:107B3000BC01CD01089581E090E0F8940C94A03D43 +:047B4000F894FFCFE7 +:107B440001FFD800340186011E000000000000007F +:107B54000000000000000000000000000000000021 +:107B64000000000000000000000000000000000011 +:107B74000000000000000000000000000000000001 +:107B84000000013C9600400101280F050101424319 +:107B9400312E35000000000000000000000000004D +:107BA40000000000000000000000000000000000D1 +:107BB40000000000000000000000000000000101BF +:107BC400010000000C060404020202020303340450 +:107BD4001804FC03E003C403A8038C0370035403D8 +:107BE40038031C030003E402C8023404AC0290020C +:107BF4007402340458023C027402580220023C020B +:107C040074020402E801CC01B0019401A8037801D4 +:107C140000035C0140012401C4030801740210053F +:107C24000B050605FF04F904F504EE04E504E2047B +:107C3400DF04DA04D604CD04C304BB04B804B504D9 +:107C4400B204AC04A904A404A1049E0499049404F9 +:107C540091048B04870483047E04790475047004FE +:107C64006C04680465046104580453045004491006 +:107C7400F90FA90F590F090FB90E690E190EC90D85 +:107C8400790D290DD90C4910890C390CE90B990B84 +:107C9400490BF90AA90A590A490BA90A090A590AF6 +:107CA400490BB90969091909C90879082908D907C3 +:107CB40089073907E90699064906F905490B291187 +:107CC4000D11ED107F24D110B510991095125D128D +:107CD4002512ED11B5117D1145110000000071163A +:107CE400D115FE15BE162F160D1621160000000024 +:107CF4001219D115351A341A6E616E00696E660058 +:087D04006F7666002F330000CA +:00000001FF diff --git a/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..fcceaf6 --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/1.8/1.8t3/1.8t3.ino.with_bootloader.standard.hex @@ -0,0 +1,2036 @@ +:020000040000FA +:100000000C948A120C94B2120C94B2120C945529CE +:100010000C94B2120C94B2120C942D2A0C94B212BD +:100020000C94B2120C94B2120C94B2120C94B21240 +:100030000C94B2120C94B2120C94B2120C94B21230 +:100040000C940B290C94B2120C94D9280C94B3285C +:100050000C94B2120C942C2A0C94B2120C94B2127E +:100060000C94B2120C94B21205A84CCDB2D44EB975 +:100070003836A9020C50B9918688083CA6AAAA2A4B +:10008000BE000000803F07634236B79BD8A71A39ED +:10009000685618AEBAAB558C1D3CB7CC5763BD6DD6 +:1000A000EDFD753EF6177231BF000000803F08007D +:1000B0000000BE922449123EABAAAA2ABECDCCCCE7 +:1000C0004C3E00000080BEABAAAAAA3E0000000081 +:1000D000BF000000803F0000000000084178D3BB53 +:1000E0004387D1133D190E3CC3BD4282AD2B3E6800 +:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1 +:10010000FF7F3F0000000000800400003FF0383017 +:1001100033103F90381033902790261030903FF0E6 +:1001200000008004800400003FF03DF020103BF010 +:100130003B7030302B502AD031B03FF000008004AB +:10014000800400003FF038703030231027902010DA +:100150002010279027903FF00000800480040000CA +:100160003FF03CF03CF020102490249020103CF014 +:100170003CF03FF000008004800400003FF037B006 +:1001800023103030387038703030231037B03FF0E3 +:1001900000008004FCF4F860E044C08CC11CC22C58 +:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9 +:1001B0008000BFF81FF8B0281FF8B4081FF8B10876 +:1001C0001FF8B048BFF8B288BFF880008000BFF8C1 +:1001D0001FF8B0081808B9E819B8B8381838B9B80D +:1001E000B9F8B0F8BFF8800015543FF815503FF04B +:1001F0001550387010203104138C22A817FC2AA83F +:100200000000000015543FFC15543FFC15543C04FD +:1002100014043CFC14543CFC005400A800000000F2 +:10022000800400003FF03CF034B0249024902790EC +:100230002310303038703FF000008004FF7CFE7CDB +:10024000FCECE8DCC84C984C882408200000000036 +:10025000000000008004E01CF3FCE7FCCE0C8E1CC8 +:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8 +:10027000E01CF87C000458085808580840087FF82B +:1002800060185FE85B685FE85B681CE85FE8000097 +:10029000800400003FF03CF03CF03CF020102010C7 +:1002A0003CF03CF03CF03FF000008004F87CF7BCF0 +:1002B00000007FF80000BFF4AB54AB54AB54AB5418 +:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431 +:1002D00073007F007E007C007C007C60BC64BE04F8 +:1002E000CF0CF03C81DC559C29045500299055D059 +:1002F00003FCFF002E00267002508270E600EE0420 +:10030000800C001C3FF43FE03FC4378C2318303092 +:1003100038703CF03FF03FF000008004058074B876 +:1003200057A876B80580F97C4694AAA8F97C068877 +:1003300074A8578C75740698F03CCE4CBC34B81435 +:10034000188010804230607860F844C08004B8841F +:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432 +:1003600000000300030003000780078003008004EF +:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A +:10038000CFCCCFCCC84CCFCCC00CE01CF87C8004C8 +:10039000BCF43FF03870B7B4B6B4B5B4B7B4387085 +:1003A0003FF0BCF48004F87CFCFCF87CE01CC00C42 +:1003B000C00CC00CC00CC00CC00C80048004FFFC3E +:1003C000F87CFCFC800400002000100008001000F5 +:1003D0002700000000000000000000000000800472 +:1003E000C3FC18001800C3FCFFFCFF0C0060006099 +:1003F000FF0CFFFCF0FC06000600F0FC8FC4102090 +:1004000020104CC89FE43DF03DF01DE03EF03F70F1 +:100410009FE48CC400003030F87CF33CF4BCF6BCA4 +:10042000F4BCF6BCF4BCE49CC84CD02CD02CC84C1A +:10043000E79CF03C88240820383038303830383099 +:100440003830383039303BB03FF03FF000008004A6 +:10045000F21415F0CADFB8CCF0D699E8AEA4DFEEFE +:10046000E8F21D1E08F21C08F21A1B08F071460182 +:10047000F046464A01F219F051F218F05A8DF0C0D8 +:10048000DAEEAEF0C8B8A5F1302924F0B599E1A4B0 +:10049000BDF21415F0CBEEAEBDF218F05A8DF21687 +:1004A00017F21415F0CBEEAEBDF21617F0BCCA9ED3 +:1004B000E0BDF21415F21213F21011F20C0DF094CB +:1004C000F20E0FF0A2D8DFCBE1EEACDCE8F20AF0DE +:1004D0008CF20BF04A8DF209F08DF097C59BBDF2BE +:1004E0000708F21F20F2040506F097DEEED5F0664D +:1004F0008081F22122F0CBABEEF0AEA4DFEEE8F08B +:10050000A8E8BDE2EEE0F0B499D3EEF200010203F8 +:10051000F0CCDFB0B8BD5361766500466C69700001 +:100520004D61696E2053637265656E004A500045E7 +:100530004E00434E00594553004E4F004F4E004F62 +:10054000464600496E666F73004269670050494431 +:1005500000446972656374005361766500426F6F91 +:100560007374004F666600536C6565700053617666 +:100570006500426F6F737400536C6565700044656D +:100580006661756C74005361766500416464004473 +:10059000656C6574650052656E616D650043616CE4 +:1005A000696272617465004368616E6765005265D7 +:1005B0007475726E0041626F7574004C616E6700F5 +:1005C0004C6F636B004C4F5720566F6C00526F742A +:1005D0006172790042757A7A65720053637265655B +:1005E0006E00436F6E74726F6C0054696D657200BB +:1005F00054656D70005469700000000000000F1D0C +:10060000C20800054442080003845FBF000FE444B1 +:1006100010000115451000054CC97F8009244F903A +:100620000007C4C11000054D413F0005544381003F +:1006300007C44D0200054441140005554108000758 +:10064000C881040000000000000000000000010854 +:100650003FFE001FFF810000004002000007FE0F68 +:10066000F8000402080800040208880007FE088851 +:10067000000402088800040208880007FE088800B9 +:100680000402094800040202300007FE040C0004C2 +:10069000021804000000000000000000000007FE37 +:1006A00013FE000402084000040208400004020196 +:1006B000FC000402388400040208840007FE0FFFD7 +:1006C000000402080000040209FE000402090200FE +:1006D00004020B020004020D020007FE09FE0004E2 +:1006E00002010200000000000000000000000110F4 +:1006F0000080001FFF80800001103FFF00004004C9 +:10070000080007FC0408000444041000044402101C +:100710000004440220001FFF812000004000C000B0 +:1007200000A00130000110020800060C0C070018A0 +:1007300003B00200000000000000000000000040C4 +:1007400000800000400080000FFF3FFF00084104D0 +:100750000800084104080008410410000841021084 +:10076000000FFF0220000841012000004000C000EF +:100770000040013000004002080000400C0700006B +:1007800040300200000000000000000000001FDFF9 +:1007900010200002120C20000224042000047F809C +:1007A00020000424B820000FA488500014BF8850F3 +:1007B0000004A488500004A488480004BF8888006E +:1007C00004A48A880007A48C8400044489070000DC +:1007D00081860200000000000000000000000FF011 +:1007E0000491000440025200047F90540004508899 +:1007F000FF0007D08481000451008100044901FFFB +:100800000007CA0281000444048100044A1CFF005E +:1008100007EA0481000C510481000061C4850000D6 +:10082000408082000000000000000000000007FF80 +:10083000802000008407FF0000840401000084047D +:10084000010000840401000FFFC7FF0000840400C2 +:10085000000084040000008405FF000084050100FE +:1008600001040901000104090100020411FF000450 +:1008700004010100000000000000000000000082F0 +:1008800004FF00004402010007FF90210000101047 +:100890002100001017FD0000101021000FFFD06193 +:1008A00000001010A10000281121000028122100D2 +:1008B0000044142100008210A1000301D045000C67 +:1008C000009002000000000000000000000008444A +:1008D00010FE00042810920005FF22920000103C38 +:1008E000920000100892001CFE109200041020FEDE +:1008F0000004103E920005FF809200041000920058 +:1009000005100E92000610309200041000FE000048 +:10091000100082000000000000000000000007DF5F +:100920008840000A24104000114210FE00040022FA +:10093000820002FF3D020008010A420009F910325C +:1009400000090920120009F93E020009090002000D +:1009500009090E020009F9302200080500140008F8 +:1009600002000800000000000000000000000FC3AB +:10097000F1E0000FE3F1F8000C70C19E000C30C1F3 +:1009800086000C30C183000C30C183000C60C18331 +:10099000000C60C183000FC0C183000FC0C186007E +:1009A0000C00C186000C00C198000C03F1F8000C8B +:1009B00003F1E00000000000000000000000002043 +:1009C0000820000FFF09FC00002008000000203E66 +:1009D000880003FE08500002020BFE0003FE0C40DC +:1009E00000020218400003FE2BFE0002020848002D +:1009F00003FE088800020208500002022830001F8F +:100A0000FF91CC0000000000000104047C0000887D +:100A10000444000FFF3F4400002004440000200C69 +:100A2000440000200E44001FFF95440000201444A1 +:100A30000000502444000050044400008804450095 +:100A4000010404850006038503001801040000006A +:100A50000000000000000000000000000000047E14 +:100A600021FC0004421104001F7E090400044221FD +:100A7000FC000542110400067E1104000C0005FC78 +:100A80000015FF880000040813FE000448325200DD +:100A9000044F125200044812520014A812520009C6 +:100AA0001F97FF000000000000000000000002107F +:100AB0003DFC000210250400041025040005FFBDC4 +:100AC000FC000C102520000C38252000143825FED1 +:100AD0000004543D20000454251000049225100009 +:100AE0000511A5090006113D4500041025830004E9 +:100AF00010010100000000000000000000001FC8FD +:100B0000102000124A0C20001AC9042000174800C7 +:100B100020001FFFB8200002080850001FC808501E +:100B200000020808500003C80848001E1408880086 +:100B300001540A880015220C840014438907000020 +:100B400081060200000000000002FE010000028297 +:100B50003FFF00048202000004FE0200000C1004AB +:100B6000FC00141004080005FF8C10000410141081 +:100B700000043825FF00043404100004520410005F +:100B8000049184100005100450000410042000009B +:100B90000000000000000000000000000000020350 +:100BA0000010001FDC3EFE00089002120005100439 +:100BB000FF001FDF84120002120CFE001FD2021081 +:100BC00000021222FE000A921410000A52141000B1 +:100BD00012220DFF0002220810000A421410000425 +:100BE0000223FF00000000000000000000000F785A +:100BF000BC20000948A45000094AA85000094AA88E +:100C00008800094AB104001FFEAAFB00094AA4207B +:100C100000094AA42000094AA7FE00094AB420009E +:100C20000948A924000B48A22200088AA4A20011A6 +:100C3000192040000000000000000000000000201B +:100C4000008000005001FC00008801040001040342 +:100C5000080006FB0490000800C0600007DF018068 +:100C600000045106000004511BFE00045102020062 +:100C700007D90202000456020200001003FE000021 +:100C80001002020000000000000000000000020846 +:100C9000209000027F9890001F8009FF000222012F +:100CA000100006218B100007628DFE000AA20910B9 +:100CB000000A14111000121431FE00020811100075 +:100CC00002141110000222111000024391FF0002D1 +:100CD000811100000000000000000000000010076B +:100CE00000000008F83FFE00048020020000802081 +:100CF000020000BE23E2001C8222220004A4222261 +:100D00000004942222000488222200049423E2009A +:100D1000052220020005422002000A003FFE0011C9 +:100D2000FFA00200000000000000000000000082A0 +:100D30000FFE00004400400007FF8040000010004C +:100D40004000001000400000101FFF800FFFC04057 +:100D50000000100040000028004000002800400073 +:100D6000004400400000820040000301C140000C2C +:100D700000808000000000000009FF004000042007 +:100D80003FFF00042000000000FE0000001C420F96 +:100D9000FC00044200000007FF80000004000FFC7C +:100DA0000004FF000000048100000005810FFC002A +:100DB000068108040004FF08040000810FFC000005 +:100DC00000000000000000000000000000000040E3 +:100DD0001F7E001FFF84020010808442000A4A0424 +:100DE00042000A3108420012C50F42000304197F75 +:100DF000001DF82901000040090100084209FD001A +:100E0000084209010008420F01000FFE0905000019 +:100E100002000200000000000000000000000100CD +:100E20000FFE00010008200003FF08200002010857 +:100E30002000042208200008200BFE0010200820BB +:100E400000005008280000500824000088082200F4 +:100E5000008810200001041020000203A7FF000CEE +:100E60000100000000000000000008000000021F58 +:100E700088FE001FD00E22000420302200045F8074 +:100E8000220007849E220004850822000494082280 +:100E900000049428FE0004971E42000494084200B7 +:100EA00008940842000AAC0A420011440C420000B7 +:100EB0008389FF00000000000000000000000040E7 +:100EC0000080001FFF9FFC0000400410000FFF0285 +:100ED000200000003FFF000FFE00000008420FF856 +:100EE0000008420808000FFE08080008020FF8007A +:100EF0000800080800080008080008000FF80010A3 +:100F0000000808000000000000000000000007FECC +:100F10000FF8000402000000040200000007FE00B9 +:100F2000000004023FFE00040200800007FE008073 +:100F300000009004900008910C8800069310860031 +:100F40000294208200009000800000900280001F28 +:100F5000FF810000000000000000000000000410FD +:100F600012020005FF9FD20005009212001E28A267 +:100F7000120004443FF20004820212000600021232 +:100F8000000CFE1FD2001410125200041012420076 +:100F90000410134200041012820015FF820A000898 +:100FA000000204000000000000000000000000201B +:100FB00000000000203E04001FFFA204001000A259 +:100FC000FF0000012204000FFE22040000403E4406 +:100FD0000000402224000440222400047C2204005B +:100FE00004402204000A403E04000940222400106C +:100FF000FF8014000000000800000000000010FE48 +:1010000008200008820BFF0004820A010010FE3C49 +:1010100051000882088800088209040002FE0C00C2 +:1010200000040019FC0009FF2820001929082000ED +:101030000929082000092908200009292BFF000B95 +:10104000FF900000000000000000000000001F7F73 +:1010500090F80001080888000A10088800047F0141 +:1010600007001FC13A0000054909FC000449088433 +:101070000004490888000449084800044908500051 +:1010800004490A200004160C58001421898700081E +:10109000C086020000000000001FE03FF0703860D2 +:1010A0001860186018FFFCFCFCFCFCFCFCF87CF8E9 +:1010B0007CFCFC7FF81E1033382D7C25382D38251C +:1010C000382D386D80DEC0BF40BF40DEC061803F3C +:1010D000007FF0FFE0C008C01CC038C870DCE4CF5F +:1010E000CCC78CC30CC00CC00CFFFC7FF800000602 +:1010F000000C0018F838F030307060707878F878AC +:10110000003C023F0C1FF80FF003C000007FF8FF07 +:10111000FCC00CC30CCB4CDB6CDB6CD86CDCECCFB8 +:10112000CCC78CC00CFFFC7FF8030007800FC00CFD +:10113000C01CE01CE03CF03CF07FF87FF8FCFCFCBD +:10114000FCFFFC7FF81140820021208FE023FC820D +:10115000004A23E200FE209FF013F880802220C086 +:10116000804221BFF0FBFA88800220848002208424 +:10117000801A208080E3FE8280020101000F421F5E +:10118000C0784110400840904008421FC0084110FC +:1011900040FFFD104008405FC00840800008413F0C +:1011A000E00843252010412520104125202041251D +:1011B0002040417FF07FF84880020049000201FF93 +:1011C000F00201001002027F202200410023F07F84 +:1011D00000220008002200FF802200888022008870 +:1011E0008022008A8022008900FFFC080023F21F71 +:1011F000C022111040FBF0904022121FC02A111093 +:101200004033F1104060005FC0AFFC800020413FE0 +:10121000E0224325202279252022412520A54125B1 +:101220002048FD7FF01083DFC010825040208250A4 +:10123000402FFFDFC06082520061C25200A1C25F36 +:10124000E022A3D20022A2510024925100288E5005 +:1012500090308BD45020825830208010101040479E +:10126000C017FC44402003F44023F844406208C403 +:1012700040A3F8E440200154402FFD444028064498 +:101280004023F844402040445020404850214050E2 +:10129000302080400020921FC03DF9904020909067 +:1012A0004040901FC07BFF0000A0013FE021F902F9 +:1012B00000FD09020021097FF021F90500210945FF +:1012C000002909888031F910702108202030303041 +:1012D0000075407755757740403E4A5E2B5E4A6BFD +:1012E000627F352F357F7C5B5E247B0E3A047E0166 +:1012F0007E4A5E69063A2F3F6B7E46403F41497FFA +:10130000494102626B6B6B62026A6B147D577D1000 +:10131000413F55553D5751213F2D7F2A122E0A77C7 +:101320005A505A770A2024137D5553707A2A7B022B +:101330001A437A4A525E2B5E424A415F353F555FFF +:10134000417D14577D0E407F7F1B54167D165449F6 +:101350003A407E575676423F427E7E427E047E5120 +:10136000377D3750127A1752761E127F557F145DE3 +:101370007F557F557F7F553D577F55377817457F80 +:101380007F2B7B287B2B7F1E12127F12121E7F4128 +:101390006B7F6B517F525A573A575A52007F4949D7 +:1013A00049497F22122A7F2A1222166A5E735662E8 +:1013B000160937315F155F7542221E0B4A7A027E8D +:1013C000023A2B3A427E00000000002F0003000387 +:1013D0003F123F163F1A120824323D2A0201000034 +:1013E0003E41413E000A070A083E08402000080826 +:1013F000080020001008041C2A1C243E20322A2445 +:10140000222A1418143E2E2A121C2A12023A0614FA +:101410002A14242A1C002400402400081422141436 +:101420001422140802290612291E3E093E3F251ADD +:101430001E21213F211E3F25213F05011E21393F4D +:10144000083F213F2110201F3F043B3F20203F0643 +:101450003F3F013E1E211E3F09061E215E3F093609 +:10146000222519013F013F203F3F100F3F183F3316 +:101470000C33033C03312D23007F41153E15417F82 +:101480000002010240404000010218243C3F2418A1 +:1014900018242418243F182C2C043F0548543C3FA2 +:1014A0000438003D00403D003F0834013F003C1C33 +:1014B000383C04381824187C241818247C3C080470 +:1014C000283C14043E243C203C3C100C3C303C2482 +:1014D00018244C503C24342C083641007F004136FF +:1014E000080101011028101F010120203E102000DA +:1014F00000080025150F241C0C103804180C38287F +:10150000382828183C083C18283820242C3C2C2C3F +:101510001C040808211D07083C0306231E223E2246 +:10152000120A3F320F3E0A3F0A24130E271E0222E0 +:10153000223E27120F2525102119273F222E211682 +:101540000F241B0E251F0526261E251D053F0408FA +:10155000241F04202222251927123B1620100F3C9D +:10156000013E1F242421110F0C031C1A3F1A0919D4 +:1015700027222A2A382730320C13053F25023F0E36 +:10158000213F2025253F25251D07201F3C3F203FCB +:1015900020103E223E23110F2121180100010205D7 +:1015A00002000000000000000020400000000000D9 +:1015B000002050200000000000503000000000001B +:1015C000006060000000000000000018180000002B +:1015D0000000003636000000000000563600000013 +:1015E0000000020151090906000000005F00000030 +:1015F00000000000007F41410041417F00000000E9 +:10160000000000003F010101004040407E0000005A +:101610000000003F213D05070070505E427E000043 +:1016200000000000007F63410041637F0000000074 +:10163000000808087F0808080008080808080808C3 +:10164000004444445F4444440041221408142241AD +:10165000000808082A0808080014141414141414A4 +:10166000001434141C141614000808141414222234 +:101670000022221414140808000205023C424224ED +:1016800000002B2C782C2B000000242A7A2F2A1201 +:1016900000001C62322E23140020545E254142209B +:1016A00000422512082452210020623E633E23029C +:1016B0000020564955225840000022147F14220071 +:1016C000001C2259554D120C0000004A55552900A6 +:1016D0000004643C173C64040004643C1F3C640444 +:1016E000001C22414141221C001C3E7F7F7F3E1C8A +:1016F000001C225D555D221C0008142241221408A2 +:1017000000081C3E7F3E1C08007F41414141417F53 +:10171000007F7F7F7F7F7F7F0040704C434C704015 +:101720000040707C7F7C704000010719611907013F +:101730000001071F7F1F0701004922144914224995 +:10174000000505057D05050500080808082A1C0890 +:1017500000081C2A08080808000004027F02040090 +:10176000000010207F20100000003E414141413E1A +:10177000000000427F40000000006251514949468C +:1017800000002241494949360000302824227F20A8 +:1017900000002F454545453900003E494949493239 +:1017A0000000010161190503000036494949493625 +:1017B000000026494949493E000020547E34146007 +:1017C0000020527F2A1A4A3000003C4020041800B2 +:1017D000001E2040200204180000104A4A2A10006F +:1017E00000000845454525180000482A3A4A4000AF +:1017F00000004425153D45400000247E145024007F +:101800000022527F0A484A340044344F44380418B6 +:101810000044344F4439041900002A5A4B4E5A08E8 +:1018200000002A5A4B4E5B080000081414224100A5 +:101830000000081414224504003F0004443F04043F +:10184000003F0004443F0405000020524242424051 +:1018500000002052424342410000245444475C04AB +:101860000000245444475C050000003F40404020F5 +:101870000000003F404140210002020A563F0202A0 +:101880000002020A563F02030004043F44545F442E +:101890000004043F44545F45000008093D4B4908DB +:1018A000000008093D4B490A00423A0722544444CB +:1018B00000423A0722554445000002124E4B4A327C +:1018C000000002124E4B4A3300001010484830000E +:1018D000000404022222221C000404022223221DEE +:1018E000000002021A254341000002021A25434566 +:1018F00000002057484844440000205748494445C8 +:1019000000120A2752503A24007F002052424240DF +:1019100000304E38540F64780024147F0422523C67 +:10192000001824124E422418007F002454543F44CF +:10193000007F002454543F45007F002454563D4608 +:1019400000023A4740413E0400023A4740413E050A +:1019500000023A4740433D06004030404D3210609F +:10196000004030404D321161004030404D32156230 +:1019700000080402040810100008040204091011F1 +:1019800000080402040A1512007F006A6A7E2A4ACF +:10199000007F006A6A7F2A4B007F006A6A7E2D4AB8 +:1019A00000006A6A6A7F2A4A0030291D4B483C10B1 +:1019B00000122A7F4240422400304E38540F4438EF +:1019C00000000A3E4B4A4A300000080E3846140810 +:1019D0000004071C62030A0400001C483E2418008F +:1019E000001E04523F12120C00002050503E4800CE +:1019F00000002050503F244400001C51494A483008 +:101A000000000F4241211E00000010696D4B49305B +:101A10000024147F04023E40000010494D4B493021 +:101A2000000028187E0844380024147F0442423CF9 +:101A3000003049251F2454380040282557352840B8 +:101A400000100A2E5B724A480040300C33404020A0 +:101A5000000004443C140C00000001413D09050352 +:101A6000000020201078040000001010087C020103 +:101A7000000018484C281800000006424322120EAD +:101A80000000404878484000002022223E222220C8 +:101A900000002828587C0800002222124A7F0202F7 +:101AA000000042221F02427E000042221F02427FAB +:101AB000000012121F721210000012121F72131077 +:101AC000000008444322120E000008444322120F73 +:101AD00000080742221E020200080742221F0203DA +:101AE000000042424242427E000042424243427F64 +:101AF0000002024F42221F020002024F42231E0335 +:101B00000000454A4020100C0000454A4021100DBD +:101B100000404222221A264000404222221B264137 +:101B20000004043F4444544C0004043F4445544DD5 +:101B3000000001464020100F000001464020110F18 +:101B4000000008444B2A120E000008444B2A120FD2 +:101B500000080A4A3E09090800080A4A3E0908091D +:101B6000000018405820180000020C424C20100EB3 +:101B700000020C424C21100D000405453D050504F2 +:101B8000000405453D0504050000007F080810001D +:101B90000000007F08091001000444241F0404040D +:101BA0000020222222222220004041251519270050 +:101BB000002022127B06122000404020100807005F +:101BC0000040300E00020C700040300E00020D711B +:101BD0000040300E00020D7200003F484848444467 +:101BE00000003F484849444500003F48484A4546B0 +:101BF000000002424222120E000002424223120F53 +:101C0000000002424222150E0008040204081020BF +:101C1000000804020409102100080402040A152225 +:101C2000002414447F041424002414447F05142544 +:101C3000002414447F0615220002021222520A06D2 +:101C400000002125294A42000040704C43502040AA +:101C50000040442414083700000008093F4949485F +:101C60000000101C680818000004040F74020A0623 +:101C7000000040484878400000202222223E2020D8 +:101C80000000004454547C000000424A4A4A4A7E04 +:101C9000000004454525150C00000F4040201F00A2 +:101CA0000040201E007F20100000007F4020100810 +:101CB00000007E424242427E00000C4444241C004C +:101CC000000006424222120E0010121E12127F1253 +:101CD000002022223A262220000001454525150F2A +:101CE000000041424020100C000006424322120F27 +:101CF000000048281C4878000000100C48380800F4 +:101D0000000804040810100800080000080000087B +:101D10000004080808080808000808080808080857 +:101D200008060505070604070903030504090A0850 +:101D30000303030603050303050503060404050561 +:101D4000040504040304090503F505F005EA05E2AA +:101D500005DB05D405CD05C505C005BB05B505AE3C +:101D600005A7059D0596058F058B0586057E0578DB +:101D70000572056D05670563055D05580551054D3F +:101D800005490543053F053C053905350532052F55 +:101D9000052C0520051B0516053E0053656C656383 +:101DA00074205469700000000000003E5B4F5B3EF1 +:101DB0003E6B4F6B3E1C3E7C3E1C183C7E3C181C10 +:101DC000577D571C1C5E7F5E1C00183C1800FFE707 +:101DD000C3E7FF0018241800FFE7DBE7FF30483AAD +:101DE000060E2629792926407F050507407F05250F +:101DF0003F5A3CE73C5A7F3E1C1C08081C1C3E7F97 +:101E000014227F22145F5F005F5F06097F017F005D +:101E10006689956A606060606094A2FFA29408047D +:101E20007E040810207E201008082A1C08081C2A9E +:101E300008081E101010100C1E0C1E0C30383E38F6 +:101E400030060E3E0E06000000000000005F00009D +:101E50000007000700147F147F14242A7F2A12230E +:101E60001308646236495620500008070300001C1E +:101E70002241000041221C002A1C7F1C2A08083E27 +:101E8000080800807030000808080808000060603A +:101E90000020100804023E5149453E00427F4000A8 +:101EA00072494949462141494D331814127F102780 +:101EB000454545393C4A49493141211109073649CF +:101EC000494936464949291E0000140000004034A3 +:101ED00000000008142241141414141400412214A8 +:101EE0000802015909063E415D594E7C1211127CCF +:101EF0007F494949363E414141227F4141413E7F30 +:101F0000494949417F090909013E414151737F080F +:101F100008087F00417F41002040413F017F0814B5 +:101F200022417F404040407F021C027F7F04081016 +:101F30007F3E4141413E7F090909063E4151215EF4 +:101F40007F09192946264949493203017F01033F88 +:101F50004040403F1F2040201F3F4038403F631417 +:101F600008146303047804036159494D43007F4119 +:101F700041410204081020004141417F0402010256 +:101F8000044040404040000307080020545478407B +:101F90007F284444383844444428384444287F380F +:101FA0005454541800087E090218A4A49C787F0891 +:101FB00004047800447D40002040403D007F10280C +:101FC000440000417F40007C047804787C080404CD +:101FD000783844444438FC1824241818242418FC65 +:101FE0007C08040408485454542404043F44243C0A +:101FF0004040207C1C2040201C3C4030403C442879 +:102000001028444C9090907C4464544C4400083612 +:102010004100000077000000413608000201020480 +:10202000023C2623263C1EA1A161123A4040207AA0 +:1020300038545455592155557941215454784121EA +:102040005554784020545579400C1E52721239551F +:10205000555559395454545939555454580000451C +:102060007C410002457D420001457C40F029242945 +:10207000F0F0282528F07C545545002054547C5419 +:102080007C0A097F4932494949323248484832324C +:102090004A4848303A4141217A3A42402078009DEE +:1020A000A0A07D39444444393D4040403D3C24FF9C +:1020B0002424487E4943662B2FFC2F2BFF0929F649 +:1020C00020C0887E090320545479410000447D419A +:1020D0003048484A32384040227A007A0A0A727DF3 +:1020E0000D19317D2629292F28262929292630480E +:1020F0004D4020380808080808080808382F10C87C +:10210000ACBA2F102834FA00007B000008142A14FF +:102110002222142A14089500220095AA005500AA2C +:10212000AA55AA55AA000000FF00101010FF0014C5 +:102130001414FF001010FF00FF1010F010F0141422 +:1021400014FC001414F700FF0000FF00FF1414F447 +:1021500004FC141417101F10101F101F1414141F48 +:1021600000101010F0000000001F101010101F10C1 +:10217000101010F010000000FF10101010101010C0 +:102180001010FF10000000FF140000FF00FF00000F +:102190001F10170000FC04F414141710171414F483 +:1021A00004F40000FF00F714141414141414F700BE +:1021B000F7141414171410101F101F141414F4140F +:1021C0001010F010F000001F101F0000001F14007E +:1021D0000000FC140000F010F01010FF10FF1414A9 +:1021E00014FF141010101F00000000F010FFFFFF7C +:1021F000FFFFF0F0F0F0F0FFFFFF0000000000FF35 +:10220000FF0F0F0F0F0F38444438447C2A2A3E1426 +:102210007E02020606027E027E0263554941633851 +:1022200044443C04407E201E2006027E020299A502 +:10223000E7A5991C2A492A1C4C7201724C304A4D60 +:102240004D303048784830BC625A463D3E49494995 +:10225000007E0101017E2A2A2A2A2A44445F44443E +:1022600040514A444040444A51400000FF0103E0CD +:1022700080FF000008086B6B083612362436060F04 +:10228000090F06000018180000001010003040FF71 +:102290000101001F01011E00191D1712003C3C3CEA +:1022A0003C000000000000000000240027002A007D +:1022B00000000000250028002B0000000000230083 +:1022C0002600290004040404040404040202020297 +:1022D00002020303030303030102040810204080E9 +:1022E0000102040810200102040810200000000868 +:1022F00000020100000304070000000000000000CD +:10230000AED5F0A83FD300408D14A1C8DA1281CF1A +:10231000D9F1DB40A4A6AF200021007F22000750A6 +:102320006C656173652077616974004144433A20AC +:102330000074656D703A2000536574206D6561739B +:102340007572656400537465703A20002B002D008F +:102350004D4F44452000FFFFFFFFFFFF80038670C5 +:1023600080038003867080039FF3E1309FF39FF327 +:10237000E1309FF3983301CC9833983301CC9833F4 +:10238000983387C098339833E1C098339833E1C0CD +:1023900098339FF398C09FF39FF398C09FF38003F7 +:1023A00066CC8003800366CC8003FFFF010CFFFF37 +:1023B000FFFF01001FFF810061301F3F873CE6FCEB +:1023C0008733873CE6FC87F3F8039E0F1F03F8036F +:1023D0009E0F1F03E13CFE0C07CFE13CFE0C07CF34 +:1023E00099033E3086C3E6CF380F9EF3E6CF380F11 +:1023F0009EF39E0327CC81039E0327CC8103E0FF3D +:10240000E10CE6CFE0FFE10CE6CF9803060000FF09 +:102410009803060000FFFFFF1EF0F80380036630FC +:1024200099C38003663099C39FF3010CF8FF9FF3B3 +:10243000010CF8FF9833393C01CF9833393C01CF78 +:102440009833FF0C793F98333ECCE0F398333ECC81 +:10245000E0F39FF33E0098CF9FF33E0098CF8003B8 +:102460003E30E7C380033E30E7C3FFFFFFFFFFFFBF +:10247000FFFFFFFFFFFF76312E3874330056000F49 +:10248000E01FC01FC03F803FF87FF07FE007C0071C +:10249000800F000E001C0018001000560014A03F12 +:1024A000F07FF8E01C6E18EC1C68186018E01C60E7 +:1024B00058E01C7FF83FF014A043004552524F52A1 +:1024C00000484F4C44004845415400574F524B5927 +:1024D00000424F4F535400534C454550004F464621 +:1024E0000000003BEC7BEE63E663E663E663E663D5 +:1024F000E663E663666226600660067FFE3FFC00D8 +:102500000025004300202070F8010204081020403C +:102510008000422A11241FBECFEFD8E0DEBFCDBF1E +:1025200012E0A0E0B1E0E4E4FBE702C005900D9208 +:10253000A83CB107D9F728E0A8ECB2E001C01D9291 +:10254000A931B207E1F712E1CAE8D2E104C021974C +:10255000FE010E94813DC938D107C9F70E94F72AC0 +:102560000C94A03D0C9400004F925F926F927F926A +:102570008F929F92AF92BF92CF92DF92EF92FF9293 +:102580000F931F93CF93DF9300D000D0CDB7DEB76A +:102590004B015C0129013A016701780120E030E03C +:1025A000A9010E94BC3887FDA6C020E030E0A90147 +:1025B000C301B2010E94BC3887FD9DC020E030E01D +:1025C000A901C801B6010E94BC3887FD94C081E012 +:1025D0002091E3073091E4072130310509F080E0D4 +:1025E000809304088092C9079092CA07A092CB07F3 +:1025F000B092CC074092CD075092CE076092CF07A1 +:102600007092D007C092D107D092D207E092D30740 +:10261000F092D4076091F7077091F8078091F9075D +:102620009091FA070E94C13820E030E04AE754E474 +:102630000E94CB3A69837A838B839C838092D507EF +:102640009092D607A092D707B092D8079B01AC0111 +:10265000C301B2010E9422392B013C014092D907EB +:102660005092DA076092DB077092DC0729813A8189 +:102670004B815C81C701B6010E94CB3A6B017C01A2 +:10268000C092DD07D092DE07E092DF07F092E0070C +:102690008091E1079091E207019769F5A501940106 +:1026A00060E070E0CB010E94593A6093D5077093C7 +:1026B000D6078093D7079093D807A301920160E0D3 +:1026C00070E0CB010E94593A6093D9077093DA0702 +:1026D0008093DB079093DC07A701960160E070E030 +:1026E000CB010E94593A6093DD077093DE07809317 +:1026F000DF079093E0070F900F900F900F90DF91FE +:10270000CF911F910F91FF90EF90DF90CF90BF90EE +:10271000AF909F908F907F906F905F904F900895B3 +:1027200080389105B0F46034710598F4E9E0F5E281 +:1027300090E1969FD001A0781124A80F6770E60F52 +:10274000F11D9491A05EBC4F442321F08C91982BF5 +:102750009C93089590958C919823FACFDF92EF92F5 +:10276000FF920F931F93CF93DF937C01D22E8B01A7 +:10277000040F111DEB0177FF02C0D0E0C0E0C801DB +:102780000134110514F080E490E0C817D9073CF437 +:102790004D2DBE01C7010E9490132196F0CFDF910D +:1027A000CF911F910F91FF90EF90DF900895CF92FE +:1027B000DF92EF92FF920F931F93CF93DF936B0102 +:1027C000122FEC017C01E40EF11CCE15DF0544F460 +:1027D000202F412FB601CE010E94AE132196F5CFD6 +:1027E000DF91CF911F910F91FF90EF90DF90CF90ED +:1027F00008952F923F924F925F926F927F928F92A5 +:102800009F92AF92BF92CF92DF92EF92FF920F937F +:102810001F93CF93DF9300D01F92CDB7DEB7C22EA8 +:10282000D12C9601280F391F37FD4FC080389105F4 +:102830000CF04BC0E9824A017B013C01402E512C37 +:10284000160127E0220E311C93E0359427949A95C7 +:10285000E1F78B01B12CA12C1B821A82EA81FB814A +:1028600083E0F595E7958A95E1F7EA0DFB1DE80D04 +:10287000F91DE4918A819B818770992720E830E0D7 +:1028800002C0359527958A95E2F7C901F0E0E22369 +:10289000F923EF2B41F04981B8018A819B81860D94 +:1028A000971D0E9490138A819B8101969B838A8346 +:1028B0008C159D059CF2A20CB31C0F5F1F4FC80125 +:1028C0008E199F09841595053CF20F900F900F907B +:1028D000DF91CF911F910F91FF90EF90DF90CF90FC +:1028E000BF90AF909F908F907F906F905F904F9030 +:1028F0003F902F9008950F931F93CF93DF93EC0198 +:102900008B0140E001960E94901340E0B801CE0197 +:1029100001970E949013B8016F5F7F4F40E0CE0196 +:102920000E949013B8016150710940E0CE010E94ED +:10293000901340E0B801CE01DF91CF911F910F912C +:102940000C9490132F923F924F925F926F927F92CE +:102950008F929F92AF92BF92CF92DF92EF92FF92AF +:102960000F931F93CF93DF93C82FD0E081E090E0C7 +:102970004C018C1A9D0A442455244C1A5D0A440CBF +:10298000551C7E0188E1E80EF11C40E0B70188E1AA +:1029900090E00E94901308E110E00C1B1D0B40E03A +:1029A000B80188E190E00E94901340E068E170E097 +:1029B000C7010E94901340E068E170E0C8010E94E6 +:1029C000901322242394312C712C612C97FC06C087 +:1029D000219782E0480E511C840C951C8FEF681AD9 +:1029E000780A82E0280E311C820C931C530188E186 +:1029F000A80EB11C40E07E0188E1E80EF11CB70191 +:102A0000C5010E94901388E1C82ED12CC618D708A2 +:102A100040E0B701C6010E94901340E008E110E0D9 +:102A20000C1B1D0BB801C5010E94901340E0B801BA +:102A3000C6010E94901340E0B501C7010E949013A7 +:102A400040E0B501C8010E94901340E0B601C70103 +:102A50000E94901340E0B601C8010E9490136C16CA +:102A60007D060CF4B3CFDF91CF911F910F91FF90B2 +:102A7000EF90DF90CF90BF90AF909F908F907F901E +:102A80006F905F904F903F902F90089580E0E0E22C +:102A9000F3E081118FEF00248193819381938193DF +:102AA0000394D1F7E5E0F8E01786168615861486BC +:102AB00008956F927F928F929F92AF92BF92CF9222 +:102AC000DF92EF92FF920F931F93CF93DF938038A3 +:102AD00091050CF057C0603471050CF053C07B01B8 +:102AE00037E0E322FF2433E0759567953A95E1F7E7 +:102AF000DB01B695BA2FAA27B795A7955D01C0E867 +:102B0000AC0EB11CA80EB91EA80FB91FA05EBC4F19 +:102B100000E810E0081B190B90E080E0E8E0F0E02E +:102B20004F018E189F0830E0FA01E80FF91FC49199 +:102B30007D906D01D1E0CD1AD1080E2C01C0CC0FD3 +:102B40000A94EAF77C2AE6017882E114F10499F00C +:102B50006730710581F0E491EC01CA0DDB1DC05EA8 +:102B6000DC4FF0E0082C02C0F595E7950A94E2F7F7 +:102B7000F881EF2BE8830196821793071CF408175E +:102B8000190791F6DF91CF911F910F91FF90EF9070 +:102B9000DF90CF90BF90AF909F908F907F906F907D +:102BA0000895AF92BF92CF92DF92EF92FF920F9370 +:102BB0001F93CF93DF936C017B018B01040F151FD3 +:102BC000EB015E01AE18BF08C017D10759F069913B +:102BD000D601ED91FC910190F081E02DC60109959F +:102BE000892B79F7C501DF91CF911F910F91FF904C +:102BF000EF90DF90CF90BF90AF900895FC01538D80 +:102C0000448D252F30E0842F90E0821B930B5417C6 +:102C100010F0CF96089501970895FC01918D828D53 +:102C2000981761F0A28DAE0FBF2FB11D5D968C91EC +:102C3000928D9F5F9F73928F90E008958FEF9FEF2B +:102C40000895FC01918D828D981731F0828DE80FE7 +:102C5000F11D858D90E008958FEF9FEF0895FC01A1 +:102C6000918D228D892F90E0805C9F4F821B91096E +:102C70008F739927089580E297E00E942F1621E034 +:102C8000892B09F420E0822F089580E090E0892BC1 +:102C900029F00E943B1681110C9400000895FC015C +:102CA000A48DA80FB92FB11DA35ABF4F2C91848DAD +:102CB00090E001968F739927848FA689B7892C930A +:102CC000A089B1898C91837080648C93938D848D5D +:102CD000981306C00288F389E02D80818F7D808360 +:102CE0000895EF92FF920F931F93CF93DF93EC0120 +:102CF00081E0888F9B8D8C8D98131AC0E889F989A3 +:102D0000808185FF15C09FB7F894EE89FF896083A5 +:102D1000E889F98980818370806480839FBF81E026 +:102D200090E0DF91CF911F910F91FF90EF90089568 +:102D3000F62E0B8D10E00F5F1F4F0F731127E02E43 +:102D40008C8D8E110CC00FB607FCFACFE889F9897B +:102D5000808185FFF5CFCE010E944F16F1CFEB8D1C +:102D6000EC0FFD2FF11DE35AFF4FF0829FB7F8944F +:102D70000B8FEA89FB8980818062CFCFCF93DF936D +:102D8000EC01888D8823B9F0AA89BB89E889F98983 +:102D90008C9185FD03C0808186FD0DC00FB607FCB8 +:102DA000F7CF8C9185FFF2CF808185FFEDCFCE01EB +:102DB0000E944F16E9CFDF91CF910895833081F0C3 +:102DC00028F4813099F08230A9F008958730A9F075 +:102DD0008830C9F08430B1F4809180008F7D03C0C9 +:102DE000809180008F7780938000089584B58F77DD +:102DF00084BD089584B58F7DFBCF8091B0008F771F +:102E00008093B00008958091B0008F7DF9CFCF936B +:102E1000DF93282F30E0F901E451FD4D8491F90151 +:102E2000E852FD4DD491F901EC53FD4DC491CC23F2 +:102E3000A1F081110E94DE16EC2FF0E0EE0FFF1FD3 +:102E4000E654FD4DA591B491EC91ED2381E090E025 +:102E500009F480E0DF91CF91089580E090E0FACF0F +:102E60001F93CF93DF93282F30E0F901E451FD4DFC +:102E70008491F901E852FD4DD491F901EC53FD4DD7 +:102E8000C491CC23A9F0162F81110E94DE16EC2FDD +:102E9000F0E0EE0FFF1FE055FD4DA591B4918FB707 +:102EA000F894EC91111108C0D095DE23DC938FBF0C +:102EB000DF91CF911F910895DE2BF8CFCF93DF9351 +:102EC00090E0FC01E852FD4D24918C539D4DFC0196 +:102ED00084918823C9F090E0880F991FFC01EA557E +:102EE000FD4DA591B491FC01E055FD4DC591D491E6 +:102EF00061110DC09FB7F8948C91209582238C931B +:102F00008881282328839FBFDF91CF910895623065 +:102F100051F49FB7F8943C91822F809583238C9332 +:102F2000E8812E2BEFCF8FB7F894EC912E2B2C93BA +:102F30008FBFEACF1F93CF93DF93182FEB0161E090 +:102F40000E945E17209739F460E0812FDF91CF91C6 +:102F50001F910C943017CF3FD10511F461E0F5CFEC +:102F6000E12FF0E0E451FD4DE491E33031F140F424 +:102F7000E130B1F0E230E1F0C038D1057CF7E4CFC8 +:102F8000E73029F1E83059F1E430B1F78091800061 +:102F9000806280938000D0938B00C0938A0004C02D +:102FA00084B5806884BDC7BDDF91CF911F9108951E +:102FB00084B5806284BDC8BDF7CF809180008068F1 +:102FC00080938000D0938900C0938800EDCF8091DA +:102FD000B00080688093B000C093B300E5CF8091CB +:102FE000B00080628093B000C093B400DDCF3FB7E3 +:102FF000F8948091E8029091E902A091EA02B091E0 +:10300000EB0226B5A89B05C02F3F19F00196A11D24 +:10301000B11D3FBFBA2FA92F982F8827BC01CD0122 +:10302000620F711D811D911D42E0660F771F881F81 +:10303000991F4A95D1F708958F929F92AF92BF92B0 +:10304000CF92DF92EF92FF924B015C010E94F71743 +:103050006B017C010E94F7176C197D098E099F098D +:10306000683E734081059105A8F321E0821A91081A +:10307000A108B10888EEC80E83E0D81EE11CF11C3F +:1030800081149104A104B10429F7FF90EF90DF901F +:10309000CF90BF90AF909F908F9008952FB7F894E6 +:1030A0006091E4027091E5028091E6029091E7025E +:1030B0002FBF089584E98093BC008091BC0084FDFB +:1030C000FCCF08958093BB0084E88093BC0080917E +:1030D000BC0087FFFCCF089584EA8093BC008091F8 +:1030E000BC0087FFFCCF88E70C9462180E946C1824 +:1030F00080E48093BB0084E88093BC00E0E2F3E0CE +:103100009091BC0097FFFCCF91919093BB0080936E +:10311000BC0097E0E032F90799F78091BC0087FF87 +:10312000FCCF0C945A18CF93C82F0E946C1880E0E3 +:103130000E9462188C2F0E946218CF910C945A182A +:10314000480F592F511D14161506D4F580389105D6 +:10315000BCF597FF02C090E080E04138510514F0C3 +:1031600040E850E0481BFB0177FD379633E0F595CA +:10317000E7953A95E1F7F695FE2FEE27F795E79557 +:10318000E80FF91FE05EFC4F6770772781E090E061 +:1031900001C0880F6A95EAF7382F213041F4415079 +:1031A00078F08191DF011197832B8C93F8CF809574 +:1031B000415030F09191DF01119798239C93F8CF03 +:1031C0000895CF92DF92EF92FF920F93CF93DF9308 +:1031D0006C017B01C42FD22F202F0E94A018B701B1 +:1031E0006D0F711D61507109603471052CF4202F31 +:1031F0004C2FC6010E94A018202F4D2FB701C601E9 +:103200000E94AE13C6018C0F911D202F4D2FB701C8 +:103210000197DF91CF910F91FF90EF90DF90CF90CA +:103220000C94AE132F923F924F925F926F927F92C7 +:103230008F929F92AF92BF92CF92DF92EF92FF92C6 +:103240000F931F93CF93DF93CDB7DEB72A970FB6B7 +:10325000F894DEBF0FBECDBF9A8389836A3061F5D3 +:10326000DC0152968C91B8E08B9F90011124E9818A +:10327000FA8186859785820F931F978786871586A3 +:10328000148681E090E02A960FB6F894DEBF0FBE58 +:10329000CDBFDF91CF911F910F91FF90EF90DF9005 +:1032A000CF90BF90AF909F908F907F906F905F90E6 +:1032B0004F903F902F9008956D3019F329813A81F6 +:1032C0003A872987D9011C96AD90BC90B0E8AB161F +:1032D000B1040CF07BC0F901C684D784F0E4CF16AA +:1032E000D1040CF073C0D90152966C90529745E00E +:1032F0009501649E200D311D1124121613060CF049 +:1033000065C0262C312C910153E0220F331F5A95B2 +:10331000E1F72C0D3D1D121613060CF057C0519607 +:10332000BC91BB83E985FA85F089FC83649FB00179 +:1033300011249B012A55324E3A832983712CE9814D +:10334000FA818491F5E07F1201C080E0460138E007 +:10335000532E282F30E03E832D834C8080FF4B80FE +:10336000411004C03B818C813817E1F010E000E08F +:103370000615C0F4D501A00FB11FB887AF83F12C9B +:10338000E12CE61460F4B701680D791D442D8F819E +:1033900098850E949013BFEFEB1AFB0AF2CF0F5FE4 +:1033A0001F4FE6CF8D819E81959587955A94820C0B +:1033B000931C5110CECF7394E981FA813196FA8330 +:1033C000E983A20CB31CF6E07F12B9CFA985BA85B8 +:1033D00052962C915297422F50E01C968D919C91C1 +:1033E000B6E02B9F800D911D1124E985FA85958704 +:1033F00084872389222309F444CF6AEF6403900170 +:10340000659F300D112420583F4F281739070CF0C5 +:1034100038CFDF010190F081E02D0190F081E02DA7 +:103420006AE0CD0109952DCF682F85E098E00C94D6 +:1034300012190F931F93CF93DF938C01D0E0C0E05C +:10344000F801EC0FFD1F6491662341F085E098E0E0 +:103450000E941219892B11F02196F2CFCE01DF9133 +:10346000CF911F910F910895089590E080E0089505 +:1034700080917A00806980937A008EE480937C004A +:1034800061E070E080E090E00E941C1883B7817FCB +:10349000826083BF80E130E020E093B7916093BF0A +:1034A000889593B79E7F93BF90917A0096FDFCCF4D +:1034B0004091780050917900240F351F815069F7B1 +:1034C00080917A008F7780937A0084E036952795F3 +:1034D0008A95E1F750E040E064EB7BE281E190E027 +:1034E0000E94F639C901089580917A00806980931D +:1034F0007A0088EC80937C006AE070E080E090E0E5 +:103500000E941C1883B7817F826083BF80E270E0D5 +:1035100060E093B7916093BF889593B79E7F93BF08 +:1035200090917A0096FDFCCF20917800309179003F +:10353000620F731F815069F780917A008F778093B3 +:103540007A00769567957695679562527A4090E015 +:1035500080E00E94C13826EF38E24CE151E40E943D +:10356000CB3A089590917A00906990937A008E50AA +:10357000806480937C0083B7817F826083BF20E278 +:1035800090E080E033B7316033BF889533B73E7F3A +:1035900033BF30917A0036FDFCCF409178005091D6 +:1035A0007900840F951F215069F720917A002F77B9 +:1035B00020937A0025E0969587952A95E1F708955E +:1035C0008FE00E94B21AA091EF02B091F0029C012C +:1035D0000E944A3A0E94C33828E539E743E353E49E +:1035E0000E94CB3A0E94443BCB0108958091F9029E +:1035F000882369F086E00E940717892B41F06AE072 +:1036000070E080E090E00E941C181092F90208958A +:103610006F927F928F929F92AF92BF92CF92DF92E2 +:10362000EF92FF920F93CF93DF937C01C62F01E0BF +:1036300020E340E370E060E00E94D713570123E0ED +:10364000A20EB11C00E02AE24AE263E070E0C5018C +:103650000E94D71370E060E0C7010E947B146701ED +:103660003FE2C30ED11C70E060E0C6010E947B14F3 +:103670006FE270E0C7010E947B146FE270E0C60148 +:103680000E947B14EC2FF0E0EE0FFF1FE257FE4F7D +:103690008080918053E0E52EF12CD12CC12C60E884 +:1036A000662E712CD0E0C0E0FE0133E0F595E79581 +:1036B0003A95E1F7EC0DFD1DE80DF91DE491CE0101 +:1036C00087709927930102C0359527958A95E2F76F +:1036D000C901F0E0E223F923EF2B69F0CE01880F56 +:1036E000991F8C0F9D1F01E023E043E0B7018A0D75 +:1036F0009B1D0E94D7132196CE30D105A9F632E04A +:10370000C30ED11C83E0E80EF11C2DE2E216F10499 +:1037100049F6DF91CF910F91FF90EF90DF90CF901E +:10372000BF90AF909F908F907F906F900895880F7B +:10373000991F9093E0028093DF02660F771F7093CA +:10374000DE026093DD028091F602882359F05093E7 +:10375000E2024093E102220F331F309305032093CE +:1037600004030895519541955109F1CF0F931F938B +:10377000CF9380914D01882399F0CFEF0FEE11E0A8 +:1037800061E085E00E943017C8010197F1F760E021 +:1037900085E00E943017C8010197F1F7C15081F709 +:1037A000CF911F910F9108958F929F92AF92BF92E8 +:1037B000CF92DF92EF92FF920F931F93CF93DF93FD +:1037C000D12CC12CF12CE12CD6E032E0932E40E339 +:1037D000A42EB12C8E2C86E00E94071721E0892BA5 +:1037E00009F020E02093F90221E430E041E050E0CC +:1037F00060E670E08FE190E00E94971B80910403E7 +:103800009091050395958795C82F8F31B9F52FE5D0 +:1038100030E041E050E060E670E08FE190E00E942F +:10382000971BCFE50E94461590921708D092120878 +:10383000C0921108B0921408A09213088EE50E945D +:10384000141A109212081092110880E290E09093DE +:1038500014088093130810E000E00815E8F4809144 +:103860001A03F801D89FE00DF11D1124E25BFE4F11 +:1038700080810E94141A0F5F1F4FEFCF803691F6A0 +:1038800020E230E041E050E060E670E08FE190E05F +:103890000E94971BC0E2C6CFD0921208C0921108B6 +:1038A00080E290E090931408809313088C2F0E947C +:1038B000141A0E94F61A0E94761886E00E940717D2 +:1038C000892B09F09BCF8091F902811197CF00914C +:1038D0001A03D09F80011124025B1E4FF801EE0DE8 +:1038E000FF1DC0830E94B61B6AE070E080E090E09C +:1038F0000E941C188FEFE81AF80AE0E1CE0ED11CE6 +:10390000F5E0EF16F10409F065CFF8011582DF91BB +:10391000CF911F910F91FF90EF90DF90CF90BF90CC +:10392000AF909F908F9008953F924F925F926F92C9 +:103930007F928F929F92AF92BF92CF92DF92EF923F +:10394000FF920F931F93CF93DF93CDB7DEB72E97E0 +:103950000FB6F894DEBF0FBECDBF80911D03882344 +:1039600009F4A5C11092BD071092BE071092BF07BF +:103970001092C0078090BD079090BE07A090BF072F +:10398000B090C007C0900D03D0900E03E0900F03DD +:10399000F0901003A7019601C501B4010E94593AA5 +:1039A0002B013C0120E030E0A9010E94B23B181637 +:1039B0000CF0A0C1C301B2010E94443B80914801B8 +:1039C000882309F4B8C1C092C507D092C607E09217 +:1039D000C707F092C807E12CF12C00EA10E420E0C0 +:1039E00030E040E450E46E31710540F0E12CF12C00 +:1039F00000E81FE320E030E040E05FE360E070E0DB +:103A000080E391E40E94B41280910308882309F4B2 +:103A10002AC10E944E186D837E838F839887809180 +:103A2000EB079091EC07A091ED07B091EE074D8167 +:103A30005E816F817885481B590B6A0B7B0B8091E7 +:103A4000F7079091F807A091F907B091FA07481786 +:103A500059076A077B0708F406C1E091E507F09172 +:103A6000E60780819181A281B38189839A83AB83A8 +:103A7000BC83E091E907F091EA079C01AD01608108 +:103A80007181828193810E94593A4B015C0120919E +:103A9000F3073091F4074091F5075091F6076981DB +:103AA0007A818B819C810E94593A6B017C01209123 +:103AB000D9073091DA074091DB075091DC07C50147 +:103AC000B4010E9422392091EF073091F007409114 +:103AD000F1075091F2070E945A3A2B013C014092A3 +:103AE000EF075092F0076092F1077092F207309062 +:103AF000040831101AC02091D5073091D6074091A3 +:103B0000D7075091D807C701B6010E9422399B01FF +:103B1000AC01C301B2010E94593A6093EF07709360 +:103B2000F0078093F1079093F2074090EF075090D1 +:103B3000F0076090F1077090F2071091FF079091E5 +:103B400000089E87A0910108AD8700910208212FEF +:103B5000392F4A2F502FC301B2010E94B23B1816D1 +:103B60000CF0CCC0812F9E85AD85B02F8093EF07E0 +:103B70009093F007A093F107B093F207332009F474 +:103B8000D6C02091D5073091D6074091D7075091E4 +:103B9000D807C501B4010E9422394B015C01209174 +:103BA000DD073091DE074091DF075091E007C70144 +:103BB000B6010E9422399B01AC016091EF07709120 +:103BC000F0078091F1079091F2070E94593AA50100 +:103BD00094010E945A3A6B017C019B01AC01612F58 +:103BE0007E858D85902F0E94BC3887FD18C010916E +:103BF000FB079091FC079E87A091FD07AD87009180 +:103C0000FE07212F392F4A2F502FB601C7010E94DE +:103C1000BC3887FD04C01C2DDE86ED860F2DE0919B +:103C2000E707F091E807812F9E85AD85B02F80834F +:103C30009183A283B38389819A81AB81BC81809374 +:103C4000F3079093F407A093F507B093F6078D81DF +:103C50009E81AF81B8858093EB079093EC07A0938A +:103C6000ED07B093EE076091C1077091C207809194 +:103C7000C3079091C4070E943D3B89E02E960FB682 +:103C8000F894DEBF0FBECDBFDF91CF911F910F9192 +:103C9000FF90EF90DF90CF90BF90AF909F908F906C +:103CA0007F906F905F904F903F900C949A17809107 +:103CB0001C03609144017091450181110EC08091F7 +:103CC0000B0390910C0320911B03BC01222329F0CC +:103CD00060914301680F792F711D90E080E00E9490 +:103CE000C1386093BD077093BE078093BF07909360 +:103CF000C00740CEC301B20190585ECE8091FB0751 +:103D00009091FC07A091FD07B091FE0789879A87E3 +:103D1000AB87BC879C01AD01C301B2010E94BC38D6 +:103D200087FF2CCF89859A85AB85BC851FCF812CD9 +:103D3000912C540134CF20E030E040E05FE3C70134 +:103D4000B6010E945A3A9B01AC01C501B4010E9420 +:103D5000B23B18164CF41092C1071092C207109291 +:103D6000C3071092C4077FCF80E090E0AFE7B3E4D1 +:103D70008093C1079093C207A093C307B093C40771 +:103D800072CF4F925F926F927F928F929F92AF927B +:103D9000BF92CF92DF92EF92FF92CF93DF9380900A +:103DA000F1029090F202A090F302B090F402C09160 +:103DB0001A03D0E0C501B4010E943D3B6B017C01B8 +:103DC00020E030E048E453E4C501B4010E94BC386F +:103DD00093E0CC0FDD1F9A95E1F7CE5FDE4F87FFB2 +:103DE00031C02881398150E040E025513109410935 +:103DF0005109C701B6010E945D3D28EC30E040E06A +:103E000050E00E94F639CA01B9016B5E7F4F8F4FB7 +:103E10009F4F0E94C33860930D0370930E038093ED +:103E20000F0390931003DF91CF91FF90EF90DF90FD +:103E3000CF90BF90AF909F908F907F906F905F904A +:103E40004F9008954A805B80712C612C20E030E017 +:103E50004CE853E4C501B4010E94BC3887FF1FC081 +:103E600088809980B12CA12CA7019601285C31098A +:103E700041095109C301B201681979098A099B09ED +:103E80000E945D3D20E530E040E050E00E94F639C0 +:103E9000CA01B901680D791D8A1D9B1DBACF2C81FD +:103EA0003D8150E040E02419350946095709C70112 +:103EB000B60168517140810991090E945D3D20E57C +:103EC00030E040E050E00E94F639CA01B901640DCB +:103ED000751D861D971D9DCFFC0101900020E9F7FF +:103EE0003197AF01481B590BBC0185E098E00C9459 +:103EF000D1158F929F92AF92BF920F931F93CF9342 +:103F0000DF93CDB7DEB7A1970FB6F894DEBF0FBE33 +:103F1000CDBF19A2423008F44AE08E010F5D1F4F59 +:103F2000842E912CB12CA12CA50194010E94283A39 +:103F3000E62FB901CA01EA30F4F4E05DD801EE934E +:103F40008D01232B242B252B79F790E080E010970F +:103F500019F0CD010E946C1FA1960FB6F894DEBF38 +:103F60000FBECDBFDF91CF911F910F91BF90AF904A +:103F70009F908F900895E95CE1CFCF92DF92EF920E +:103F8000FF92CF93DF936C01990FEE08FF08F7FEC5 +:103F900017C08DE20E94141AEC0166277727CB0127 +:103FA0006C197D098E099F094AE00E94791F8C0FC8 +:103FB0009D1FDF91CF91FF90EF90DF90CF900895FC +:103FC0004AE0C701B601DF91CF91FF90EF90DF90FB +:103FD000CF900C94791F0F9329E330E030931208AF +:103FE0002093110822E130E0309314082093130845 +:103FF00024E02093170820911E0330911F03253FD2 +:10400000314078F08DEC92E10E94191A00E020E234 +:1040100048E460E170E087E390E00E94E1180F91CE +:1040200008950E94BD1FF2CF4F925F926F927F92D0 +:104030008F929F92AF92BF92CF92DF92EF92FF92B8 +:104040000F931F93CF936B017C01742EAC019B01E6 +:104050000E940F3C882399F088EB92E0CF911F914A +:104060000F91FF90EF90DF90CF90BF90AF909F9017 +:104070008F907F906F905F904F900C946C1F4601D3 +:104080005701E894B7F82FEF3FEF4FE75FE7C5011F +:10409000B4010E940F3C81110DC02FEF3FEF4FE79D +:1040A0005FE7C501B4010E94BC3818161CF48CEB04 +:1040B00092E0D4CF2FEF3FEF4FE75FE4C701B601A7 +:1040C0000E94B23B18161CF480EC92E0C7CF2FEF91 +:1040D0003FEF4FE75FECC701B6010E94BC3887FD98 +:1040E000F3CF20E030E0A901C701B6010E94BC383F +:1040F00010E000E087FF08C08DE20E94141A8C01D6 +:10410000F7FAF094F7F8F094C0E060E070E080E037 +:104110009FE37C1641F020E030E040E251E40E9451 +:10412000CB3ACF5FF6CFA70196010E945A3A2B01F6 +:104130003C010E94443B4B015C014AE00E94791F14 +:104140007C01E00EF11ECC23B1F1C501B4010E9447 +:10415000C1389B01AC01C301B2010E94593A4B0125 +:104160005C018EE20E94141AE80EF91EC15018F18B +:1041700020E030E040E251E4C501B4010E94223960 +:104180002B013C010E94443B4B01B12CA12C4AE085 +:10419000C501B4010E94791FE80EF91EC501B401E2 +:1041A0000E94C1389B01AC01C301B2010E94593A7F +:1041B0004B015C01DBCFC701CF911F910F91FF90A5 +:1041C000EF90DF90CF90BF90AF909F908F907F90B7 +:1041D0006F905F904F900895CF92DF92EF92FF9291 +:1041E0000F93CF93DF9381E0809316081092150808 +:1041F0008093170800E02EE046E661E370E081E07E +:1042000090E00E94E11820911E0330911F03253F8A +:1042100081E03807B8F4A4E6B0E00E944A3A24EFFF +:1042200031E040E050E00E94F639BA01A9014E5F4A +:104230005F4F6F4F7F4F2EE061E370E081E090E0D1 +:104240000E94D7136091BD077091BE078091BF0790 +:104250009091C0070E943D3B9B01AC01A4E6B0E0F9 +:104260000E94153A34EFC32EDD24D394E12CF12CB7 +:10427000A70196010E94F639DA01C9010296A11D33 +:10428000B11D029700E02DE043E062E370E00E9480 +:10429000D7136091BD077091BE078091BF079091C1 +:1042A000C0070E943D3B9B01AC01A4E6B0E00E9428 +:1042B000153AA70196010E94F639DA01C901029662 +:1042C000A11DB11D039724E045E06CE370E00E945E +:1042D000D7136091BD077091BE078091BF07909181 +:1042E000C0070E943D3B9B01AC01A4E6B0E00E94E8 +:1042F000153AA70196010E94F6392E5F3F4F4F4FA6 +:104300005F4F790181E0E81AF108C1E3D0E041E0B4 +:10431000BE01C7010E9490132196CD33D105B9F794 +:104320006091BD077091BE078091BF079091C00753 +:104330000E943D3B9B01AC01A4E6B0E00E94153A0F +:1043400024EF31E040E050E00E94F639DA01C90183 +:104350000296A11DB11D0397EE24E39404E025E02D +:1043600045E055E26BE370E00E94F91300E02EE0B7 +:1043700047E161E370E088E690E00E94E118609117 +:10438000C1077091C2078091C3079091C4070E9432 +:104390003D3B9B01AC012F5F310941095109A7E168 +:1043A000B0E00E94153ACC24C394DD24DA94ED2CBD +:1043B000FD2CA70196010E94F639422F2EE061E301 +:1043C00070E088E690E00E94D7131092160881E012 +:1043D0008093150882E090E0909312088093110872 +:1043E000C7E3D0E0D0931408C09313086091BD07D1 +:1043F0007091BE078091BF079091C00740E00E9476 +:10440000142088EF0E94141A83E095E20E94191A82 +:1044100089E690E09093120880931108D0931408D5 +:10442000C09313086091C1077091C2078091C307C0 +:104430009091C4070E943D3B9B01AC012F5F310965 +:1044400041095109A4E6B0E00E94153AA70196017E +:104450000E94F63969017A014AE0C701B601F7FE08 +:104460000BC08DE20E94141A66277727CB016C19C6 +:104470007D098E099F094AE00E94791F81E095E23B +:104480000E94191A81E08093160810921508DF9196 +:10449000CF910F91FF90EF90DF90CF9008956F92A2 +:1044A0007F928F929F92AF92BF92CF92DF92EF92C4 +:1044B000FF920F931F93CF93DF93B0901A0377244B +:1044C0007394B11001C0712C2B2D30E0609142012A +:1044D0006150770B41E050E090E080E00E94971B34 +:1044E00086E00E94071721E0892B09F020E0209345 +:1044F000F902FF24F39472E0972EE6E08E2EFCE0A2 +:10450000CF2ED12C0E944615C0910403D0910503F3 +:10451000D595C795EC2E8E011127C801870D911DE9 +:1045200077FC9A958B199109712C97FD06C0833001 +:10453000910514F082E090E0782EF0921608109227 +:1045400015089092170810921208109211081092F4 +:104550001408109213088BE99DE10E94191A109219 +:104560001608F09215081092120810921108A72C44 +:10457000072C000CBB08C501019654E0880F991F59 +:104580005A95E1F7909314088093130889E99DE107 +:104590000E94191A6C2E671890E080E098012A1981 +:1045A0003B095901209142018C010F5F1F4F621698 +:1045B000D0F4D0921208C0921108980144E0220F62 +:1045C000331F4A95E1F730931408209313088A0D9E +:1045D0009B1D889E9001899E300D1124C901825B2C +:1045E0009E4F0E946C1FC801639403301105D1F6E1 +:1045F0000E94F61A0E94761886E00E940717892BFF +:10460000B9F48091F902811113C00E94B61BE092A7 +:104610001A03DF91CF911F910F91FF90EF90DF90E0 +:10462000CF90BF90AF909F908F907F906F900895A4 +:10463000BC2E68CF0E949B3D1F93CF93DF93EC016C +:10464000162F0E94E039181739F0612FCE01DF9143 +:10465000CF911F910C94E839DF91CF911F9108956C +:10466000AF92BF92CF92DF92EF92FF920F931F9380 +:10467000CF93DF936091470182E090E00E941C237A +:104680006091460183E090E00E941C236091450107 +:1046900084E090E00E941C236091440185E090E05A +:1046A0000E941C236091430186E090E00E941C233D +:1046B00060914B0187E090E00E941C2360914A01C9 +:1046C00088E090E00E941C236091490189E090E01D +:1046D0000E941C2360917E018AE090E00E941C23CE +:1046E000609148018BE090E00E941C2360914D0195 +:1046F0008CE090E00E941C2360911A038DE090E012 +:104700000E941C23609142018EE090E00E941C23D5 +:10471000609119038FE090E00E941C236091F502E4 +:1047200080E190E00E941C236091160381E190E0FB +:104730000E941C236091F80282E190E00E941C23F9 +:104740006091F70283E190E00E941C236091F602E1 +:1047500084E190E00E941C2385E1E82EF12C10E01A +:1047600006E0809142011817B8F5109F60011124EE +:10477000D0E0C0E0FE01EC0DFD1DE25BFE4F60816C +:10478000C7018C0F9D1F0E941C232196C630D105A6 +:1047900089F7670186E0C80ED11C88E0189FE00108 +:1047A0001124CE5FDE4F8EE0E80EF11C6981229667 +:1047B000C6010E941C23560182E0A80EB11CFE0116 +:1047C00032976081C60101960E941C236501AE14D8 +:1047D000BF0461F71F5FC5CFDF91CF911F910F918C +:1047E000FF90EF90DF90CF90BF90AF9008958F92A1 +:1047F0009F92AF92BF92CF92DF92EF92FF92CF93B0 +:104800006FEF70E089E00E949A178BEA94E00197BD +:10481000F1F78EE00E94B21A7C018AE00E9407172D +:104820009091C802981729F091E09093110380931A +:10483000C802809101019FEF980F909301018111AF +:1048400006C00E94E01A90931803809317036091AA +:10485000C1077091C2078091C3079091C4070E945D +:104860003D3B89E00E949A178090F1029090F202FD +:10487000A090F302B090F402B70190E080E00E94B3 +:10488000C138A50194010E94593A2DEC3CEC4CE44E +:104890005DE30E942239A50194010E945A3A609377 +:1048A000F1027093F2028093F3029093F4020E945B +:1048B000C11E60911E0370911F0390E080E00E9472 +:1048C000C1384B015C01C090BD07D090BE07E0909D +:1048D000BF07F090C007A70196010E94BC38811164 +:1048E00051C020910D0330910E0340910F03509160 +:1048F0001003C501B4010E94593A4B015C0120E04C +:1049000030E0A9010E94B23B181694F520E030E097 +:1049100040EA50E4C501B4010E94B23B181694F17C +:1049200060911E0370911F0390E080E00E94C138E7 +:10493000A70196010E94593A4B015C0120E030E04A +:10494000A9010E94B23B181664F520E030E040E86F +:104950005FE3C501B4010E94BC38181664F1C701B9 +:10496000B6010E94443B70931F0360931E0323C053 +:1049700020E030E040EA50ECC501B4010E94BC38B0 +:1049800087FFCECF60910D0370910E0380910F03CE +:10499000909110030E94443B70931F0360931E0389 +:1049A000BFCF20E030E040E85FEBC501B4010E94DA +:1049B000B23B87FFD4CF60910B0370910C0390E062 +:1049C00080E00E94C13820910D0330910E03409188 +:1049D0000F03509110030E94593A6B017C0120E0B3 +:1049E00030E0A9010E94B23B18160CF05EC0C7016E +:1049F000B6010E94443B6530710508F05AC08091B1 +:104A00007F01811105C080914C0181110E94B61B6C +:104A100081E080937F0110924C0180911E03909160 +:104A20001F03853F21E0920710F0109200012091B2 +:104A30000001211141C0843F9140F0F56FEF70E01B +:104A400089E00E949A170E94B61BC1E0C093000142 +:104A50000E944F220E943023C09311038EE00E94D7 +:104A6000B21ABC0190E080E00E94C1386093F1026C +:104A70007093F2028093F3029093F4021092030376 +:104A800020910B0330910C034AE050E060E971E0A3 +:104A900086E990E0CF91FF90EF90DF90CF90BF90AC +:104AA000AF909F908F900C94971BC701B6019058C0 +:104AB000A0CF10927F01B1CFCF91FF90EF90DF9008 +:104AC000CF90BF90AF909F908F9008950C94E03955 +:104AD0004F925F926F927F928F929F92AF92BF920E +:104AE000CF92DF92EF92FF920F931F93CF93DF93BA +:104AF000CDB7DEB72B970FB6F894DEBF0FBECDBF94 +:104B000090911903E82FF0E09F01220F331F9111BC +:104B100026C0F901E25DFD4F40815181EE24E3940E +:104B200000E124E260E370E080E390E00E94F9138A +:104B30002B960FB6F894DEBF0FBECDBFDF91CF919D +:104B40001F910F91FF90EF90DF90CF90BF90AF90AB +:104B50009F908F907F906F905F904F9008959230CC +:104B600009F079C0EF5DF24E4490F901E252FE4F38 +:104B7000A080B180F12CE12C04E310E393E0592EE6 +:104B800027E0622EE414A0F6F501EE0DFF1D44911E +:104B900080E1840F833008F45CC081EF7816D1F097 +:104BA00082EF7816C1F1403F90F4193710F0085F9A +:104BB00010E088E0489FA00111244F555A4E602F05 +:104BC00070E028E0812F90E00E945915185F80EF77 +:104BD000782E1DC04E39D8F41D3710F0085F10E054 +:104BE000C02ED12C812E912C459DA001112449531A +:104BF0005C4E23E0B601C4010E94591521E046EC49 +:104C000053E1B601C40103960E9459151C5F8FEF52 +:104C1000E81AF80AB7CF4332D0F7193710F0085F17 +:104C200010E0C02ED12C812E912C469DA001112484 +:104C30004F525D4E27E0B601C4010E94591521E094 +:104C400046EC53E1B601C40107960E945915185F5E +:104C5000DECF742EDCCF80E390E090931208809337 +:104C6000110884E390E0909314088093130881E086 +:104C700080931708F901E75BF24E65917491CE01BC +:104C800001960E94B538CE0101960E946C1F50CF4C +:104C90002F923F924F925F926F927F928F929F924C +:104CA000AF92BF92CF92DF92EF92FF920F931F933A +:104CB000CF93DF9300D01F92CDB7DEB7898386E014 +:104CC0000E94071721E0892B09F020E02093F902C8 +:104CD0005AE0252E312C0E944615009104031091B4 +:104CE00005031595079526E02093170831E03093CA +:104CF0001608109215086091DB027091DC02072EF5 +:104D0000000C880B990B0E94C3384B015C0145EDE8 +:104D1000C42E42E0D42E760182E090E09B838A8309 +:104D2000EA81FB81BF01FF0F880B990B0E94C338FA +:104D30009B01AC0160E070E080E291E40E94B73B2F +:104D40009B01AC01C501B4010E94CB3A0E943D3BDE +:104D5000CB01B1010E946D3DF701819391937F01D9 +:104D60002A813B81215031093B832A832F3F3F4FCA +:104D7000B9F61093DC020093DB02E9ECF2E0FB836E +:104D8000EA8394E0E92EF12C22E0822E912CB401EA +:104D9000092C000C880B990B0E94C3389B01AC01B5 +:104DA00060E070E080E291E40E94B73B2B013C019F +:104DB0006091DB027091DC02072E000C880B990BCE +:104DC0000E94C338A30192010E94CB3A0E943D3B4E +:104DD000CB01B1010E946D3DF60120813181821B22 +:104DE000930BF2E3F89FB001F99F700D1124072E89 +:104DF000000C880B990B0E94C338EA81FB8120814B +:104E00003181428153810E945A3A2B013C0120E0BA +:104E100030E0A9010E94BC3881119BC0EA81FB816E +:104E2000408251826282738201E022E346E270E0B6 +:104E300060E0C70104970E94D7138EECA82EBB2414 +:104E4000BA940FEF1FEFEA81FB812081318142810B +:104E5000538160E070E080E890E40E94593A2B01B1 +:104E60003C01B5010B2C000C880B990B0E94C33838 +:104E70009B01AC01C301B2010E945A3A0E943D3B22 +:104E8000F0921208E09211087093140860931308CE +:104E9000F60180819181800F911F0E94BD1F0F5FDD +:104EA0001F4FF2E3AF0EB11C0230110561F62A81EB +:104EB0003B812C5F3F4F3B832A8331E0831A91086B +:104EC00082E0C80ED11C9CE2E90EF11CE8E8EE1667 +:104ED000F10409F05CCF00E022E040E870E060E01F +:104EE00090E080E00E94D71320E140E860E370E0AA +:104EF00090E080E00E94D71389810E9468250E947B +:104F000076180E94F61A86E00E940717892B09F08E +:104F1000E2CE8091F9028111DECE0E94B61B809113 +:104F2000DB029091DC020F900F900F90DF91CF91F8 +:104F30001F910F91FF90EF90DF90CF90BF90AF90B7 +:104F40009F908F907F906F905F904F903F902F90A9 +:104F50000895C301B20190582DEC3CEC4CE45FE3A2 +:104F60000E942239A30192010E945A3AEA81FB81F0 +:104F7000608371838283938357CF9C0144E650E022 +:104F800064E873E090E080E00E94971B88E00E9454 +:104F90004826BC01665A7F4F9C014AE050E00E94BF +:104FA000971B88E00E944826BC01675F7F4F9C01E9 +:104FB00041E050E00E94971B88E00C9448262F9215 +:104FC0003F924F925F926F927F928F929F92AF9299 +:104FD000BF92CF92DF92EF92FF920F931F93CF93E6 +:104FE000DF93D82E282F30E0E091FA02F0E0EC5762 +:104FF000FE4F60816150770B41E050E090E080E02F +:105000000E94971B86E00E94071721E0892B09F078 +:1050100020E02093F9021092160881E08093150891 +:1050200038E3632EE0900403F0900503F594E794D1 +:10503000AE2C8701112798012D193109629EC001FC +:10504000639E900D1124C80FD91F209709F1662780 +:1050500077276C1B7D0B072E000C880B990B0E9489 +:10506000C3382AE939E949E15FE30E9422391B018B +:105070002C01BE01DD0F880B990B0E94C3389B01E8 +:10508000AC01C201B1010E945A3A0E943D3BEB01C2 +:105090000E944615025011094E0185E0B82E93E09A +:1050A000792E7A0CC090FA02D12C17FD20C0F6019F +:1050B000EC57FE4F808180171106C9F0C4F0E4E878 +:1050C000F1E070E060E0CF01845891408C159D05BF +:1050D00034F48191680F711DF6CFDE2CA3CF872D9C +:1050E0008B19680FC401885491090E94081BBA9457 +:1050F0000F5F1F4F88E3880E911CB110D3CFE4E8F7 +:10510000F1E090E080E09F01245831402C153D05EE +:1051100024F42191820F911DF6CF8E0D0E946825F7 +:105120000E9476180E94F61A86E00E940717892BC3 +:10513000A1F68091F9028111D0CF0E94B61B8A2D71 +:10514000DF91CF911F910F91FF90EF90DF90CF9063 +:10515000BF90AF909F908F907F906F905F904F9097 +:105160003F902F9008951F920F920FB60F92112427 +:105170002F933F934F935F936F937F938F939F935F +:10518000AF93BF93EF93FF9380E297E00E944F1697 +:10519000FF91EF91BF91AF919F918F917F916F910F +:1051A0005F914F913F912F910F900FBE0F901F90E5 +:1051B00018951F920F920FB60F9211242F938F9371 +:1051C0009F93EF93FF93E0913007F0913107808137 +:1051D000E0913607F091370782FD1BC090818091E6 +:1051E00039078F5F8F7320913A07821741F0E09162 +:1051F0003907F0E0E05EF84F958F80933907FF9113 +:10520000EF919F918F912F910F900FBE0F901F9054 +:1052100018958081F4CF1F920F920FB60F92112430 +:105220002F933F938F939F93AF93BF938091E4020B +:105230009091E502A091E602B091E7023091E3027D +:1052400023E0230F2D3758F50196A11DB11D2093A2 +:10525000E3028093E4029093E502A093E602B09308 +:10526000E7028091E8029091E902A091EA02B091F0 +:10527000EB020196A11DB11D8093E8029093E90213 +:10528000A093EA02B093EB02BF91AF919F918F91EF +:105290003F912F910F900FBE0F901F90189526E809 +:1052A000230F0296A11DB11DD2CF1F920F920FB6F0 +:1052B0000F9211242F933F934F935F936F937F939C +:1052C0008F939F93EF93FF9383B1817029B1909156 +:1052D000EE02981709F49DC030E0220F232F221F01 +:1052E000330B922F8093EE024091ED02241709F4C4 +:1052F00090C02093ED022091E1023091E2029817D4 +:1053000019F031952195310940910403509105031D +:105310006091DF027091E002240F351F26173707D6 +:105320000CF48BC02091E1023091E202981719F041 +:105330003195219531094091040350910503609105 +:10534000DD027091DE02240F351F621773070CF423 +:105350006FC04091E1025091E202981719F0519507 +:10536000419551092091040330910503240F351F05 +:10537000309305032093040341E0981340E020910B +:10538000EC02421709F440C02091E1023091E202A0 +:10539000981719F0319521953109609104037091A6 +:1053A0000503E091DF02F091E002260F371F2E1770 +:1053B0003F070CF44CC02091E1023091E2029817B3 +:1053C00019F031952195310960910403709105031D +:1053D000E091DD02F091DE02260F371FE217F3079E +:1053E0008CF12091E1023091E202981719F0319589 +:1053F000219531098091040390910503820F931F39 +:1054000090930503809304034093EC0281E0809322 +:105410001103FF91EF919F918F917F916F915F9118 +:105420004F913F912F910F900FBE0F901F901895A5 +:105430002091DD023091DE029BCF2091DF0230917E +:10544000E00296CF8091DD029091DE02D9CF80916B +:10545000DF029091E002D4CF18951F920F920FB601 +:105460000F9211248F93EF93FF93E0E6F0E0808199 +:1054700080648083FF91EF918F910F900FBE0F900A +:105480001F9018950F931F93CF93DF93E0E2F7E0FF +:105490001382128288EE93E0A0E0B0E084839583CB +:1054A000A683B7838EE992E09183808385EC90E0B8 +:1054B0009587848784EC90E09787868780EC90E0DE +:1054C000918B808B81EC90E0938B828B82EC90E0CF +:1054D000958B848B86EC90E0978B868B118E128E49 +:1054E000138E148EE5E0F8E0138212821682178282 +:1054F00080E1808715821482128680EB92E091838E +:105500008083158614861786168681E0808B118A23 +:10551000828B138AC9ECD7E021EC37E03F8F2E8FC6 +:1055200025EC37E03D8F2C8F2DEB37E039A328A3F6 +:105530001AAE1AAA1BAA1CAA1DAA40E050E06FE7E7 +:1055400073E44EAB5FAB68AF79AF44E650E060E028 +:1055500070E04EA75FA768AB79AB21E030E0398FF0 +:10556000288F3B8F2A8F8BAF80E090E0A0E3B1E4DF +:1055700088839983AA83BB8380E090E0A0E0BFE3A7 +:105580008C839D83AE83BF8380E090E0A0E8BFE37F +:1055900088879987AA87BB8780E090E0A0E3B1EC79 +:1055A0008C879D87AE87BF878DEC9CECACE4BDEB10 +:1055B000888B998BAA8BBB8B80E090E0A0E2B1EC4A +:1055C0008C8B9D8BAE8BBF8B0E944E180EA51FA59A +:1055D00028A939A9601B710B820B930B6AA37BA3CB +:1055E0008CA39DA3DF91CF911F910F910895CF932D +:1055F000DF93CDB7DEB7A5970FB6F894DEBF0FBE29 +:10560000CDBF789484B5826084BD84B5816084BD4B +:1056100085B5826085BD85B5816085BD80916E0050 +:10562000816080936E001092810080918100826081 +:1056300080938100809181008160809381008091BE +:1056400080008160809380008091B10084608093AD +:10565000B1008091B00081608093B00080917A00A9 +:10566000846080937A0080917A00826080937A00CF +:1056700080917A00816080937A0080917A008068BE +:1056800080937A001092C100A89584B7877F84BF69 +:105690008091600088618093600087E18093600062 +:1056A00080916000806480936000809160008860D9 +:1056B000809360001092B90088E48093B8000E9443 +:1056C0006C1880E00E94621800E013E2EFE1EE2E19 +:1056D000E3E2FE2EF80184910E9462180F5F1F4FD3 +:1056E000E016F106B9F70E945A1811E01093B800BD +:1056F0000E94761881E280930D0860E08EE00E949F +:105700005E1760E08FE00E945E1761E085E00E9416 +:105710005E1761E089E00E945E1762E087E00E9408 +:105720005E1762E088E00E945E1762E086E00E94F9 +:105730005E1762E08AE00E945E176FEF70E089E01A +:105740000E949A1760E085E00E94301780917A00ED +:10575000876080937A0080917A00886080937A00D5 +:10576000789410936B00109368001BBB90E080E06E +:105770000E946625182F81E090E00E946625912FF7 +:105780008A30944109F0D3C082E090E00E946625FF +:10579000182F83E090E00E946625912F9093470197 +:1057A0008093460184E090E00E946625182F85E0F2 +:1057B00090E00E946625912F9093450180934401CB +:1057C00086E090E00E9466258093430187E090E0A8 +:1057D0000E94662580934B0188E090E00E94662538 +:1057E00080934A0189E090E00E94662580934901F8 +:1057F0008AE090E00E94662580937E018BE090E035 +:105800000E94662591E0811101C090E090934801CB +:105810008CE090E00E94662591E0811101C090E04B +:1058200090934D018DE090E00E94662580931A03CD +:105830008EE090E00E946625282E809342018FE042 +:1058400090E00E9466258093190380E190E00E9419 +:10585000662591E0811101C090E09093F50281E10D +:1058600090E00E9466258093160382E190E00E94FA +:105870006625182F83E190E00E946625912F909372 +:10588000F8028093F70284E190E00E94662591E09F +:10589000811101C090E09093F60252E0852E51E014 +:1058A000952E6EE4A62E61E0B62E75E1E72EF12C62 +:1058B000312C231409F447C010E000E0C701800F29 +:1058C000911F0E946625F501E00FF11F80830F5F95 +:1058D0001F4F0630110591F7670126E0C20ED11C5B +:1058E0003EE0E30EF11C3401C6010E946625082F3C +:1058F00010E0102F0027F301118300832601F2E04E +:105900004F0E511CC60101960E946625082BF3011B +:10591000019311933F0162014E145F0429F7339400 +:10592000F8E08F0E911C26E0A20EB11CC2CF64E1FC +:1059300090E080E00E941C236AE081E090E00E94F9 +:105940001C230E9430231091F50280EC111101C03C +:1059500088EC0E94931880EA111101C081EA0E942C +:1059600093181092120380E28093130380E48093D3 +:10597000140380E6809315038091F7029091F8025A +:10598000892B19F10E94461568E088E290E00E9498 +:10599000081B88E00E9468250E94761868EE73E074 +:1059A00080E090E00E941C180E94B61B0E94B61B6B +:1059B0000E94B61B90E080E00E94BD272091F70274 +:1059C0003091F80282179307E9F60E94381A9093F3 +:1059D000F0028093EF020E94E01A909318038093E4 +:1059E0001703009146011091470110930C03009397 +:1059F0000B038EE00E94B21ABC0190E080E00E948E +:105A0000C1386093F1027093F2028093F302909395 +:105A1000F4020E94741A0E94C11E20E030E040EAA5 +:105A200051E460910D0370910E0380910F039091EA +:105A300010030E945A3A6B017C01B80190E080E0AB +:105A40000E94C1389B01AC01C701B6010E94BC385D +:105A500087FF05C070E060E089E00E949A1710920D +:105A6000FB071092FC071092FD071092FE07412CD5 +:105A7000512C3FE7632E33E4732E4092FF07509280 +:105A800000086092010870920208A090E707B090A9 +:105A9000E80780910308F501C080D180E280F3809F +:105AA000882311F40C94BB37A3019201C701B601FE +:105AB0000E94B23B181634F5F50140825182628291 +:105AC00073828090EF079090F007A090F107B0905C +:105AD000F207C090FF07D0900008E0900108F09016 +:105AE0000208A7019601C501B4010E94B23B181635 +:105AF000C4F4C092EF07D092F007E092F107F09261 +:105B0000F2071FC020E030E0A901C701B6010E94E2 +:105B1000BC3887FFD6CFF501108211821282138222 +:105B2000D0CFC090FB07D090FC07E090FD07F0902D +:105B3000FE07A7019601C501B4010E94BC3887FD8C +:105B4000D8CF81E08093030883B181708093EE0207 +:105B500089B190E0880F892F881F990B8093ED02FF +:105B60002091EE029091ED0281E0291380E0809374 +:105B7000EC0298014AE050E060E971E086E990E0CB +:105B80000E94971B0E944E186093070370930803AE +:105B90008093090390930A030E94B61B0E94B61BD0 +:105BA00080910403909105039C013595279538A3B6 +:105BB0002F8F30930C0320930B0386E00E9407176E +:105BC00089A3811193C080910303882309F48EC0B7 +:105BD0000E94B61B0E944E186B017C01C092FF020E +:105BE000D0920003E0920103F092020386E00E944B +:105BF0000717892B59F40E944E186C197D098E09DC +:105C00009F09643F71408105910580F30E944E1801 +:105C10006C197D098E099F09643F714081059105CA +:105C200008F424C66FEF70E089E00E949A170E9482 +:105C3000B61B1D861092FA028D850E94DF278D8784 +:105C40008B3008F03FC0E82FF0E0E75DF14D0C9499 +:105C5000813D462EC4300D314E315C318C319A314C +:105C6000EE3301340C34163420E030E0A901C701D2 +:105C7000B6010E94BC3887FF64CF1092EF071092E4 +:105C8000F0071092F1071092F2075BCF18ED212E6A +:105C9000312C0EE1602E712C8BEA482E84E0582EB8 +:105CA00081E08093FA028D850E94DF278D87823004 +:105CB00009F405C208F0DAC0882309F400C1813074 +:105CC00009F400C10E94302381E080931103EF8D1D +:105CD000F8A1F0930C03E0930B039F014AE050E01E +:105CE00060E971E086E990E00E94971BF9A1F093CA +:105CF000030380911B03882309F1109149011123AB +:105D0000E9F00E944E18C090FB02D090FC02E09097 +:105D1000FD02F090FE026C197D098E099F0928EEA4 +:105D200033E040E050E00E94283A211738F010920A +:105D30001B030E94B61B81E080934C0180911103EC +:105D40008823F1F180911C03882351F120E030E099 +:105D500040EA51E460910D0370910E0380910F03AE +:105D6000909110030E945A3A6B017C0160910B03E1 +:105D700070910C0390E080E00E94C1389B01AC015F +:105D8000C701B6010E94BC3887FF05C070E060E023 +:105D900089E00E949A170E94B61B81E080934C0113 +:105DA0001092110310921C0310921D030E944E18B2 +:105DB00060930703709308038093090390930A0389 +:105DC0000E944E18009107031091080320910903C7 +:105DD00030910A03601B710B820B930B20E63AEEA5 +:105DE00040E050E00E94283A122F20930603809151 +:105DF0001C0381110BC080914B01882339F02817B7 +:105E000028F081E080931C030E94B61B80911D0343 +:105E100081110BC080914A01882339F0181728F0AE +:105E200081E080931D030E94B61B0E94F7230E940D +:105E3000941C0E944E1880910E08262F281B822F3A +:105E400090910F08992309F427C520931008109208 +:105E50000F0880E090E0892B09F4A2CE0E943B1647 +:105E6000882309F49DCE0E9400009ACE5D855330B0 +:105E700009F428C1543009F025CF809142018830BF +:105E800008F00ECF91E0980F9093420180931A038F +:105E90000E94D41BE0911A0388E0E89FF0011124CE +:105EA000EE5FFE4F3182208224E331E03383228390 +:105EB00046E851E05583448377826682F1CE0E94A2 +:105EC0004F22EECECE0101967C0101E010E0DD24F0 +:105ED000D394B2E0CB2EE0911A0394E0E99FF00155 +:105EE0001124C8010197E80FF91FEE0FFF1FEE5FA5 +:105EF000FE4F2081318130930C0320930B0341E04E +:105F000050E064EF71E084E690E00E94971BD0922D +:105F10004C0186E00E94071721E0892B09F020E060 +:105F20002093F9020E944615C09217080E94F72399 +:105F30000E94941C109212081092110810921408DA +:105F40001092130885E493E20E94191AC8010E9476 +:105F5000BD1F84EC92E00E946C1F80917F01109223 +:105F6000120810921108882309F481C0E0E1F0E0E2 +:105F7000F0931408E093130888E393E20E94191A3F +:105F8000109212081092110820E230E030931408A9 +:105F90002093130881E393E20E94191A809104036D +:105FA00090910503959587950E94BD1F0E94F61A52 +:105FB0000E94761886E00E940717892B09F0B2CF5D +:105FC0008091F9028111AECF809104039091050375 +:105FD00095958795F701819391937F010E94B61B58 +:105FE0006AE070E080E090E00E941C180F5F1F4F95 +:105FF0000430110509F06FCF6FEF70E089E00E9467 +:106000009A17C2010197F1F70E94741A0E94443B4B +:106010006B0178876F8389809A800B811C81C40112 +:106020004E968017910708F03BCEAD80BE80C80128 +:106030004E968A159B0508F033CE87E08093FA02CE +:1060400080E00E94DF27882309F42ACEE0911A031A +:1060500028E0E29FF0011124EE5FFE4F91828082E2 +:1060600013830283B582A482D782C68219CE40E10F +:1060700050E050931408409313088BE293E20E947F +:10608000191A6091F1027091F2028091F3029091DD +:10609000F4020E94443B90E080E04AE00E94791FB5 +:1060A000109212081092110880E290E09093140868 +:1060B000809313088FE193E20E94191A77CF0E9410 +:1060C000D41BEECD87E08093FA02809142018130AB +:1060D00009F4E6CD80E00E94DF27882309F4E0CDB3 +:1060E00010911A0300914201402F4150550BBA0103 +:1060F0001417150639F4115010931A030150009328 +:106100004201CECD812F90E086179707BCF756E06D +:10611000159FD001112450E040E09C012F5F3F4FBC +:10612000FA01EA0FFB1FE25BFE4FF680F0824F5F41 +:106130005F4F46305105A1F743E0220F331F4A95C8 +:10614000E1F7D901AE5FBE4F2D913C91119753E01D +:10615000880F991F5A95E1F7FC01EE5FFE4F3183DE +:10616000208312968D919C9113979383828314962A +:106170008D919C9115979583848316968D919C9112 +:10618000978386831F5FBECF52E05093FA0210E0E0 +:10619000812F0E94DF27182F8130D1F028F0823024 +:1061A00059F10E94302346CD20914601309147019C +:1061B0004AE050E060E971E086E990E00E94971BB8 +:1061C00082E10E9448269093470180934601E0CFE8 +:1061D00020914401309145014AE050E068EC70E0C4 +:1061E00084E190E00E94971B83E10E9448269093EF +:1061F000450180934401CCCF2091430130E04AE037 +:1062000050E064E670E08AE090E00E94971B84E131 +:106210000E94482680934301BBCF83E08093FA021B +:1062200010E0812F0E94DF27182F813031F1A0F07C +:10623000823009F0B6CF2091490130E04AE050E0C9 +:1062400064EB70E090E080E00E94971B88E10E9480 +:10625000482680934901E5CF20914B0130E041E091 +:1062600050E06EE170E090E080E00E94971B86E1D4 +:106270000E94482680934B01D4CF20914A0130E000 +:1062800045E050E06CE370E090E080E00E94971BF6 +:1062900087E10E94482680934A01C3CF84E080931F +:1062A000FA02809148010E94DF2791E0811101C02C +:1062B00090E090934801BECC10E099E0E92EE09286 +:1062C000FA02812F0E94DF27182F882321F08130C6 +:1062D000E9F000E00AC085E08093FA0280917E0137 +:1062E0000E94DF2780937E0101E0F090F50280ECB0 +:1062F000F11001C088EC0E94931880EAF11001C0EF +:1063000081EA0E9493180111DACF4BCF8091F502F8 +:1063100081278093F502E8CF86E08093FA0280918E +:106320004D010E94DF2791E0811101C090E0909320 +:106330004D0180CC81E0809316081092150886E00C +:106340000E94071721E0892B09F020E02093F90231 +:1063500020EF30E042E150E064EA71E08CE390E04D +:106360000E94971B1A8A91E09093170800910403EA +:106370001091050315950795B801012E000C880BA7 +:10638000990B0E94C3386093BD077093BE0780933A +:10639000BF079093C00710931F0300931E030E9432 +:1063A000461501E020E440E870E060E090E080E025 +:1063B0000E94D7136E857F85888999890E94C63A85 +:1063C0006B8F7C8F8D8F9E8F20E030E040E450E417 +:1063D0000E9422391B012C01AC019B0160E070E09E +:1063E00080EC91E40E94593A0E943D3B6B8B7C8B80 +:1063F0008D8B9E8BEB89FC89FA87E9876E857F857B +:10640000888999890E94073C6B017C0120E030E07B +:1064100040E450E40E9422394B015C01AC019B0135 +:1064200060E070E080EC91E40E94593A0E943D3BAC +:106430006F8B788F898F9A8F6F88788C20E030E00F +:1064400040EC51E4C201B1010E945A3A0E943D3B26 +:106450006E877F87888B998B2E843F8420E030E085 +:1064600040EC51E4C501B4010E945A3A0E943D3B00 +:106470004B012B0120E030E040EC51E4C701B601B4 +:106480000E9422399B01AC0160E070E080EC91E455 +:106490000E94593A0E943D3B6B018B0120E030E0A5 +:1064A00040EC51E46B8D7C8D8D8D9E8D0E94223948 +:1064B00020E030E040EC51E40E945A3A0E943D3B1B +:1064C000AB012C143D040CF084C529853A852C15AC +:1064D0003D050CF496C5302F212F8101232E322E3D +:1064E000342F252FA201432E522E89859A8580179D +:1064F000910709F089C0441655062CF4342F252F36 +:10650000A201432E522E641675062CF04614570431 +:106510000CF423013A010034110540F441E0440D2C +:10652000461920E0B801C3010E94A01886E10E942C +:10653000A21483E10E94A21483E00E94A214E7E364 +:10654000F0E0F0931208E093110821E030E030937E +:1065500014082093130832E03093170880E593E283 +:106560000E94191A8091F602882309F405C18EE46D +:1065700093E20E94191A20E030E040E752E4609173 +:10658000BD077091BE078091BF079091C0070E9420 +:10659000593A20E030E044EB53E40E94CB3A2BED33 +:1065A0003FE049EC50E40E9422392BED3FE049ECFA +:1065B0005FE30E94593A6E877F87888B998B809121 +:1065C0001E0390911F030E94EB1F0E94EC2000E02D +:1065D00024E04A8970E060E090E080E00E94D713F8 +:1065E0000E9476180E94F61A86E00E940717892BEF +:1065F00009F0E8C08091F9028111E4C04A89485F3E +:106600004A8B47FFB0CE16CB362D272D3A01432FAC +:10661000522F39852A851A870987032F122F920155 +:10662000261937093C8F2B8FC101E985FA858E1B0E +:106630009F0B9BA38AA34A018618970898012E1BDB +:106640003F0B3F872E87CA01841995099C8B8B8B42 +:10665000F801E219F309FDA3ECA30215130509F4EF +:1066600041C0910121503109388F2F8BE984FA8480 +:10667000B12CA12CD12CC12C4F89588D4E155F0502 +:10668000A4F1C6016AA17BA10E946D3D9B01260D6C +:10669000371DC5016E857F850E946D3DCB01860D3E +:1066A000971DEB8DFC8DCE0EDF1EA80CB91C82173A +:1066B00093071CF0582FC901252FF0E4EF16F104C1 +:1066C00038F441E0420F481B20E0B7010E94A018B7 +:1066D0002FEFE21AF20AD0CF2B01A4010E851F85FD +:1066E00016019DCF188F0F8BC1CFC7018219930957 +:1066F0004B895C89849F6001859FD00C949FD00C4E +:106700001124C701E985FA858E1B9F0B889D5001D6 +:10671000899DB00C989DB00C11240E151F050CF42A +:1067200005CFC6016CA17DA10E946D3D9B01240D8A +:10673000351DC5016E857F850E946D3DCB01860D9F +:10674000971D4B895C89C40ED51EA80CB91C8217F5 +:1067500093071CF0582FC901252F50E4E516F104CA +:1067600038F441E0420F481B20E0B7010E94A01816 +:106770008FEFE81AF80AD1CF8CE493E20E94191A3D +:106780006091BD077091BE078091BF079091C007CF +:10679000905820E030E040E752E40E94593A20E06F +:1067A00030E044EB53E40E94CB3A2BED3FE049EC60 +:1067B00050E40E94223922E93AE046E05FE30E9479 +:1067C0005A3AF9CE8A8982508E3308F0CBCD809127 +:1067D000F60251E085278093F602BACD2091160388 +:1067E00030E041E050E06AEF70E090E080E00E942D +:1067F000971B87E00E944826809316030E94B61BD1 +:1068000019CA8091F7029091F8020E94BD279093D7 +:10681000F8028093F702F2CF88E08093FA02809129 +:1068200019030E94DF278093190304CA0E944615AA +:10683000EE24E39400E320E346E553E270E060E0F9 +:1068400088E290E00E94F9130E94761864E670E0F6 +:1068500080E090E00E941C1886E00E940717892BB8 +:10686000D9F78091F9028111F7CFC8CF80911B032E +:1068700091E0892780931B03882351F00E944E18D2 +:106880006093FB027093FC028093FD029093FE02E2 +:1068900081E0809311032ACA90910D08291748F4CA +:1068A0008F5F891708F0D5CA81E083BF889513BE32 +:1068B000D0CA81E080930F0860930E088091090888 +:1068C00090910A08019690930A0880930908E09035 +:1068D0001E03F0901F0335EFE31631E0F30608F0D6 +:1068E0001CC180911D03882309F4F5C06FEF70E08F +:1068F00089E00E949A170E94461502E113E0B3E076 +:106900008B2E912CA12CB12C0E945D3822E030E01E +:1069100040E050E00E94F639AB01BC014150510902 +:1069200061097109F8018081682F640F613808F0EE +:1069300049C06083D12C0E945D384D2C512C712CA4 +:10694000612CA50194010E94F6396D5F7F4F8F4F36 +:106950009F4F4616570668067906B4F5F801E080A1 +:10696000F12C0E945D3824E130E040E050E00E94CC +:10697000F6396A507109810991096E0D7F1D6034E5 +:10698000710530F421E040E890E080E00E94A0181A +:10699000F801E080F12C0E945D3824E130E040E015 +:1069A00050E00E94F639DC01CB010A97A109B10938 +:1069B0008E0D9F1D21E040E470E060E00E94AE1368 +:1069C000D394B9CF6058B5CF0F5F1F4FF3E00631B6 +:1069D0001F0709F099CF0E944E180E94C13820E08D +:1069E00030E04AE755E40E94CB3A0E94073C6B0135 +:1069F0007C0120E030E040E853E40E94223920E0AE +:106A000030E040E853E40E945A3A2B013C0110E088 +:106A100000E0B801012E000C880B990B0E94C338CE +:106A2000A30192010E94BC3887FF25C00E945D38F7 +:106A30004B015C010E945D3869877A878B879C8750 +:106A4000C501B40120E430E040E050E00E94F63996 +:106A50004B0169857A858B859C8520E830E040E094 +:106A600050E00E94F639CB0141E0B4010E9490133E +:106A70000F5F1F4FCECF80914D01882349F10E94B7 +:106A80005D3820E130E040E050E00E94F639685087 +:106A90007109810991090E94C3384B015C0120E012 +:106AA00030E040E852E4C701B6010E94223920E0FC +:106AB00030E040E852E40E945A3A9B01AC01C50123 +:106AC000B4010E945A3A0E943D3B85E00E949A1709 +:106AD0000E947618BEC980911C0312E081111EC06D +:106AE00080911B0313E0811119C080917F0114E094 +:106AF000811114C020E030E044E353E46091C10709 +:106B00007091C2078091C3079091C4070E94BC385E +:106B100015E087FD03C016E001C010E080917E0102 +:106B2000882309F4A9C10E94461501E020E440E849 +:106B300070E060E090E080E00E94D71381E08093F5 +:106B400017088093160810921508E12C00E120E147 +:106B500041EE54E270E060E090E080E00E94F913C2 +:106B600083E190E0909312088093110884E090E014 +:106B7000909314088093130880911A0326E0829F53 +:106B8000C0011124825B9E4F0E946C1F85E390E040 +:106B9000909312088093110881E090E0909314087C +:106BA0008093130882E080931708C12ED12C809126 +:106BB0001903CC0CDD1C811107C1F601E457FD4F10 +:106BC000408151810EE02CE161E070E080E590E0D1 +:106BD0000E94F913F601E258FD4F40815181E12CEA +:106BE0000EE02EE061E070E081E790E00E94F91392 +:106BF00081E0809317080E94741A20E030E040EA98 +:106C000052E40E94BC3887FFFEC083E190E090937D +:106C100012088093110840E150E05093140840930B +:106C200013080E94741A41E00E94142088EF0E9409 +:106C3000141A89EB94E20E94191AE12C0EE02EE05E +:106C40004DE954E262E170E082E090E00E94F913C5 +:106C5000609117037091180390E080E00E94C138A2 +:106C60006B017C0120E030E048EC52E40E94CB3A1A +:106C70004B015C016091160370E090E080E00E949F +:106C8000C3389B01AC01C501B4010E94B23B181688 +:106C90000CF0CBC083E190E0909312088093110830 +:106CA00080E290E0909314088093130820E030E095 +:106CB0004AE754E4C701B6010E94CB3A41E00E9482 +:106CC00014208BE994E20E94191AE12C0EE02EE0C8 +:106CD0004FE754E262E270E082E090E00E94F91334 +:106CE00003E110E0109312080093110888E190E08E +:106CF00090931408809313080E94381ABC0190E006 +:106D000080E00E94C13820E030E04AE754E40E946D +:106D1000CB3A42E00E9414208DE794E20E94191AB7 +:106D2000109312080093110888E290E090931408E1 +:106D30008093130886E794E20E94191A80911E033B +:106D400090911F030E94EB1F0E94EC200E94761876 +:106D50000E94741A20E030E040EA52E40E94B23B04 +:106D600018160CF474C0609117037091180390E02A +:106D700080E00E94C13820E030E048EC52E40E94FC +:106D8000CB3A6B017C016091160370E090E080E0EB +:106D90000E94C3389B01AC01C701B6010E94BC38F8 +:106DA00087FF57C80E944E1842E0660F771F881F62 +:106DB000991F4A95D1F728EE33E040E050E00E9459 +:106DC000283A20FD55C045C881ED94E21330C1F04A +:106DD00058F48DED94E2113099F087ED94E2123081 +:106DE00079F08BEB94E20CC086EC94E2153041F024 +:106DF0008BEC94E2153020F081EC94E2163089F7A8 +:106E00000E94191AE7CE0E944E18F2E0660F771F13 +:106E1000881F991FFA95D1F728EE33E040E050E043 +:106E20000E94283A20FDF1CE13CF0E944E18E2E0D6 +:106E3000660F771F881F991FEA95D1F728EE33E078 +:106E400040E050E00E94283A20FD24CF49CF0E9424 +:106E50004E1852E0660F771F881F991F5A95D1F779 +:106E600028EE33E040E050E00E94283A20FF7BCF3C +:106E70000E94B61B0C94292F86E08093170810926D +:106E8000160881E0809315080E9446150E94741A26 +:106E900020E030E040EA52E40E94B23B181694F43D +:106EA0000E944E1832E0660F771F881F991F3A958F +:106EB000D1F728EE33E040E050E00E94283A20FD70 +:106EC0000E94B61B609117037091180390E080E058 +:106ED0000E94C13820E030E048EC52E40E94CB3AF6 +:106EE0004B015C016091160370E090E080E00E942D +:106EF000C3389B01AC01C501B4010E94BC3887FFB7 +:106F000012C00E944E1822E0660F771F881F991F3B +:106F10002A95D1F728EE33E040E050E00E94283A6D +:106F200020FD0E94B61B8CE090E0909312088093A5 +:106F3000110882E090E0909314088093130895EF75 +:106F4000E91691E0F90680F087EE93E00E94BD1FFC +:106F500001E020E140E860E370E090E080E00E9422 +:106F6000D7130E94EC20B4CDB70190E080E04AE056 +:106F70000E94791FEDCFC092EF07D092F007E09208 +:106F8000F107F092F207E091E507F091E6078081C2 +:106F90009181A281B3818093F3079093F407A0932A +:106FA000F507B093F60720E030E04FE753E4C70160 +:106FB000B6010E94B23B181614F00C94342E409285 +:106FC000EF075092F0076092F1077092F2070C946D +:106FD000A12DE985FA85E215F3050CF086CA4985ED +:106FE0005A854C155D050CF477CB34012B014F8984 +:106FF000588D16010B891C898E859F859A878987F4 +:107000006ACA29853A85221533050CF408CB340168 +:107010004F88588CEE85FF85FA87E9872B883C8856 +:10702000FECA8F929F92AF92BF92CF92DF92EF9261 +:10703000FF92CF93DF93EC01688179818A819B81F4 +:10704000611571058105910521F464E279ED8BE507 +:1070500097E02DE133EF41E050E00E94F63949011D +:107060005A019B01AC01A7EAB1E40E94153A6B01F9 +:107070007C01ACEEB4EFA50194010E94233AC60E48 +:10708000D71EE81EF91EF7FE06C081E0C81AD10817 +:10709000E10880E8F80AC882D982EA82FB82C70147 +:1070A000B6019F77DF91CF91FF90EF90DF90CF9067 +:1070B000BF90AF909F908F9008958F929F92AF92C4 +:1070C000BF92CF92DF92EF92FF9260918001709118 +:1070D0008101809182019091830161157105810583 +:1070E000910521F464E279ED8BE597E02DE133EF32 +:1070F00041E050E00E94F63949015A019B01AC0180 +:10710000A7EAB1E40E94153A6B017C01ACEEB4EF42 +:10711000A50194010E94233AC60ED71EE81EF91E4F +:10712000F7FE06C081E0C81AD108E10880E8F80A35 +:10713000C0928001D0928101E0928201F09283019D +:10714000C701B6019F77FF90EF90DF90CF90BF907F +:10715000AF909F908F90089560938001709381010C +:1071600080938201909383010895FB01DC010590D7 +:107170000D920020E1F708950E94FE3808F481E0A6 +:107180000895E89409C097FB3EF49095809570951A +:1071900061957F4F8F4F9F4F9923A9F0F92F96E963 +:1071A000BB279395F695879577956795B795F111D8 +:1071B000F8CFFAF4BB0F11F460FF1BC06F5F7F4F75 +:1071C0008F4F9F4F16C0882311F096E911C0772387 +:1071D00021F09EE8872F762F05C0662371F096E890 +:1071E000862F70E060E02AF09A95660F771F881F5F +:1071F000DAF7880F9695879597F90895990F000803 +:10720000550FAA0BE0E8FEEF16161706E807F90778 +:10721000C0F012161306E407F50798F0621B730B13 +:10722000840B950B39F40A2661F0232B242B252B94 +:1072300021F408950A2609F4A140A6958FEF811D37 +:10724000811D08950E9435390C94A6390E94983901 +:1072500038F00E949F3920F0952311F00C948F395B +:107260000C94953911240C94DA390E94B73970F3D3 +:10727000959FC1F3950F50E0551F629FF001729FDB +:10728000BB27F00DB11D639FAA27F00DB11DAA1FEA +:10729000649F6627B00DA11D661F829F2227B00D37 +:1072A000A11D621F739FB00DA11D621F839FA00DC2 +:1072B000611D221F749F3327A00D611D231F849F12 +:1072C000600D211D822F762F6A2F11249F57504069 +:1072D0009AF0F1F088234AF0EE0FFF1FBB1F661FE4 +:1072E000771F881F91505040A9F79E3F510580F0AD +:1072F0000C948F390C94DA395F3FE4F3983ED4F361 +:10730000869577956795B795F795E7959F5FC1F750 +:10731000FE2B880F911D9695879597F9089597F9FB +:107320009F6780E870E060E008959FEF80EC08952B +:1073300000240A9416161706180609060895002454 +:107340000A9412161306140605060895092E0394CE +:10735000000C11F4882352F0BB0F40F4BF2B11F442 +:1073600060FF04C06F5F7F4F8F4F9F4F089557FDA1 +:107370009058440F551F59F05F3F71F04795880FA3 +:1073800097FB991F61F09F3F79F08795089512163A +:1073900013061406551FF2CF4695F1DF08C01616E6 +:1073A00017061806991FF1CF869571056105089497 +:1073B0000895E894BB2766277727CB0197F90895AE +:1073C000F999FECF92BD81BDF89A992780B50895AD +:1073D000262FF999FECF1FBA92BD81BD20BD0FB6F1 +:1073E000F894FA9AF99A0FBE01960895052E97FB24 +:1073F0001EF400940E940D3A57FD07D00E94283ACF +:1074000007FC03D04EF40C940D3A509540953095FE +:1074100021953F4F4F4F5F4F089590958095709500 +:1074200061957F4F8F4F9F4F08950E944A3AA59FC5 +:10743000900DB49F900DA49F800D911D112408956F +:10744000B7FF0C94153A0E94153A821B930B0895CE +:10745000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F58 +:10746000EE1FFF1FA217B307E407F50720F0A21BCA +:10747000B30BE40BF50B661F771F881F991F1A9437 +:1074800069F760957095809590959B01AC01BD0161 +:10749000CF010895A29FB001B39FC001A39F700DBB +:1074A000811D1124911DB29F700D811D1124911D0C +:1074B00008955058BB27AA270E94713A0C94A63908 +:1074C0000E94983938F00E949F3920F039F49F3F8C +:1074D00019F426F40C9495390EF4E095E7FB0C941E +:1074E0008F39E92F0E94B73958F3BA17620773072B +:1074F0008407950720F079F4A6F50C94D9390EF499 +:10750000E0950B2EBA2FA02D0B01B90190010C01B3 +:10751000CA01A0011124FF27591B99F0593F50F4CB +:10752000503E68F11A16F040A22F232F342F442723 +:10753000585FF3CF469537952795A795F04053951B +:10754000C9F77EF41F16BA0B620B730B840BBAF0EB +:107550009150A1F0FF0FBB1F661F771F881FC2F756 +:107560000EC0BA0F621F731F841F48F4879577956A +:107570006795B795F7959E3F08F0B0CF9395880F24 +:1075800008F09927EE0F9795879508950E94753B0F +:10759000E3950C949E3B0E94DF3A0C94A6390E941E +:1075A0009F3958F00E94983940F029F45F3F29F044 +:1075B0000C948F3951110C94DA390C9495390E943E +:1075C000B73968F39923B1F3552391F3951B550B04 +:1075D000BB27AA2762177307840738F09F5F5F4FA6 +:1075E000220F331F441FAA1FA9F335D00E2E3AF0E5 +:1075F000E0E832D091505040E695001CCAF72BD0FD +:10760000FE2F29D0660F771F881FBB1F261737074D +:107610004807AB07B0E809F0BB0B802DBF01FF277F +:1076200093585F4F3AF09E3F510578F00C948F3994 +:107630000C94DA395F3FE4F3983ED4F3869577955E +:107640006795B795F7959F5FC9F7880F911D969538 +:10765000879597F90895E1E0660F771F881FBB1F94 +:10766000621773078407BA0720F0621B730B840B41 +:10767000BA0BEE1F88F7E09508950E94443B68948A +:10768000B1110C94DA3908950E94BF3988F09F57E0 +:1076900098F0B92F9927B751B0F0E1F0660F771F36 +:1076A000881F991F1AF0BA95C9F714C0B13091F02C +:1076B0000E94D939B1E008950C94D939672F782FF9 +:1076C0008827B85F39F0B93FCCF3869577956795F1 +:1076D000B395D9F73EF490958095709561957F4F5D +:1076E0008F4F9F4F08950C9495390E94BF39D8F35E +:1076F000E894E0E0BB279F57F0F02AED3FE049EC2B +:1077000006C0EE0FBB0F661F771F881F28F0B23A26 +:1077100062077307840728F0B25A620B730B840B5D +:10772000E3959A9572F7803830F49A95BB0F661FEF +:10773000771F881FD2F790480C94503CEF93E0FFDE +:1077400007C0A2EA2AED3FE049EC5FEB0E94713AE4 +:107750000E94A6390F90039401FC9058E8E6F0E0EF +:107760000C94833C0E94FE3808F48FEF0895FA01D0 +:10777000EE0FFF1F309621053105A1F1611571054E +:1077800061F48038BFE39B0749F168949038810524 +:1077900061F08038BFEF9B0741F099234AF5FF3F26 +:1077A000E1053105210519F1E8940894E795D9011F +:1077B000AA2329F4AB2FBE2FF85FD0F310C0FF5FD0 +:1077C00070F4A695E0F7F73950F019F0FF3A38F465 +:1077D0009F779F930DD00F9007FC9058089546F027 +:1077E0000C94953960E070E080E89FE308954FE7DE +:1077F0009F775F934F933F932F930E94E13C2F918C +:107800003F914F915F910E9422390C941C3C9F93B1 +:107810000E94753B0F9007FCEE5F0C949E3B0E940C +:10782000FE38880B990B089529F416F00C948F39C3 +:107830000C94D9390C9495390E94BF39A8F3963825 +:10784000A0F707F80F92E8942BE33AEA48EB5FE7DA +:107850000E9438390F920F920F924DB75EB70F9278 +:107860000E94293DE6E8F0E00E945C3C4F915F9168 +:10787000EF91FF91E595EE1FFF1F49F0FE57E0687D +:107880004427EE0F441FFA95E1F74195550B0E94EE +:10789000A33C0F9007FE0C94973C08959F3F31F056 +:1078A000915020F4879577956795B795880F911D2E +:1078B0009695879597F90895DF93CF931F930F932C +:1078C000FF92EF92DF927B018C01689406C0DA2E62 +:1078D000EF010E943539FE01E894A591259135917B +:1078E00045915591A6F3EF010E94713AFE0197016F +:1078F000A801DA9469F7DF90EF90FF900F911F9144 +:10790000CF91DF9108959F938F937F936F93FF9310 +:10791000EF939B01AC010E942239EF91FF910E94ED +:107920005C3C2F913F914F915F910C9422399B01C8 +:10793000AC0160E070E080E89FE30C94CB3A0C94DB +:107940008F390C944E3C0E94BF39D8F39923C9F368 +:10795000940F511DA3F39150504094F059F0882397 +:1079600032F0660F771F881F91505040C1F79E3F3D +:1079700051052CF7880F911D9695879597F90895D5 +:107980005F3FACF0983E9CF0BB2786957795679556 +:10799000B79508F4B1609395C1F7BB0F58F711F490 +:1079A00060FFE8CF6F5F7F4F8F4F9F4FE3CF0C9407 +:1079B000DA3916F00C944E3C0C94953968940C947A +:1079C0008F390E94BF39A8F39923C1F3AEF3DF9337 +:1079D000CF931F930F93FF92C92FDD2788232AF09F +:1079E0002197660F771F881FDAF720E030E040E824 +:1079F0005FEB9FE3883920F0803E38F021968F7747 +:107A00000E945A3AEEEAF0E004C00E945A3AEBEDC6 +:107A1000F0E00E945C3C8B01BE01EC01FB2E6F5735 +:107A200071097595771F880B990B0E94C33828E15F +:107A300032E741E35FE30E943539AF2D9801AE0193 +:107A4000FF900F911F91CF91DF910E94713A0C949A +:107A5000A639FA01DC01AA0FBB1F9B01AC01BF577D +:107A600028F4222733274427507820C0B75190F4B8 +:107A7000AB2F0024469537952795011CA395D2F38B +:107A8000002071F0220F331F441FB395DAF30ED09C +:107A90000C94593A61307105A0E88A07B94630F470 +:107AA0009B01AC016627772788279078309621F0D4 +:107AB00020833183428353830895DB018F939F9307 +:107AC0000E94153ABF91AF91A29F800D911DA39F77 +:107AD000900DB29F900D1124089597FB072E16F478 +:107AE000009407D077FD09D00E94873D07FC05D0A0 +:107AF0003EF4909581959F4F0895709561957F4FC5 +:107B00000895EE0FFF1F0590F491E02D0994AA1B34 +:107B1000BB1B51E107C0AA1FBB1FA617B70710F078 +:107B2000A61BB70B881F991F5A95A9F780959095AA +:107B3000BC01CD01089581E090E0F8940C94A03D43 +:107B4000F894FFCF01FFD800340186011E00000029 +:107B50000000000000000000000000000000000025 +:107B60000000000000000000000000000000000015 +:107B70000000000000000000000000000000000005 +:107B8000000000000000013C9600400101280F05A4 +:107B900001014243312E35000000000000000000CA +:107BA00000000000000000000000000000000000D5 +:107BB00000000000000000000000000000000000C5 +:107BC00000000101010000000C0604040202020290 +:107BD000030334041804FC03E003C403A8038C0368 +:107BE0007003540338031C030003E402C802340486 +:107BF000AC0290027402340458023C02740258022F +:107C000020023C0274020402E801CC01B00194019C +:107C1000A803780100035C0140012401C4030801AA +:107C2000740210050B050605FF04F904F504EE04C3 +:107C3000E504E204DF04DA04D604CD04C304BB0483 +:107C4000B804B504B204AC04A904A404A1049E04BD +:107C50009904940491048B04870483047E047904BA +:107C6000750470046C0468046504610458045304CA +:107C700050044910F90FA90F590F090FB90E690ED9 +:107C8000190EC90D790D290DD90C4910890C390C23 +:107C9000E90B990B490BF90AA90A590A490BA90AD8 +:107CA000090A590A490BB90969091909C908790862 +:107CB0002908D90789073907E90699064906F90508 +:107CC000490B29110D11ED107F24D110B510991019 +:107CD00095125D122512ED11B5117D1145110000AF +:107CE00000007116D115FE15BE162F160D162116A1 +:107CF000000000001219D115351A341A6E616E0099 +:0C7D0000696E66006F7666002F3300008D +: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 +:00000001FF diff --git a/software/UI_upgrade_by_createskyblue/Program/readme.txt b/software/UI_upgrade_by_createskyblue/Program/readme.txt new file mode 100644 index 0000000..2c1725a --- /dev/null +++ b/software/UI_upgrade_by_createskyblue/Program/readme.txt @@ -0,0 +1,17 @@ +*重要提示 Important note + +版本号含有"t"的代表是测试版本,不稳定不推荐上传 +A version number with a "t" indicates a test version, and unstable uploads are not recommended + +版本号含有多个"+" 代表是改进版本 +The version number contains multiple "+" to indicate an improved version + +Upload: +固件上传指令 +avrdude -c usbtiny -p m328p -V -U lfuse:w:0xff:m -U hfuse:w:0xdb:m -U efuse:w:0xfd:m +avrdude -c usbtiny -p m328p -U flash:w:.hex + +Libraries: +用到的库文件 +https://github.com/createskyblue/Arduboy2/ +https://github.com/mblythe86/C-PID-Library/tree/master/PID_v1 diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7+/T12.ino.standard.hex b/software/UI_upgrade_by_createskyblue/binaries/1.7+/T12.ino.standard.hex deleted file mode 100644 index 26b8ceb..0000000 --- a/software/UI_upgrade_by_createskyblue/binaries/1.7+/T12.ino.standard.hex +++ /dev/null @@ -1,8523 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ATmega-Soldering-Station/T12.ino.standard.hex at master · createskyblue/ATmega-Soldering-Station - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Skip to content - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - - -
-
-
- - - - -
-
-
-

Learn Git and GitHub without any code!

-

- Using the Hello World guide, you’ll start a branch, write comments, and open a pull request. -

- Read the guide -
-
-
-
- - - - - - - - - -
- -
- -
-

- - - / - - ATmega-Soldering-Station - - -

- - - forked from wagiminator/ATmega-Soldering-Station - - -
- -
    - -
  • -
    - -
    - - - Watch - - - -
    - Notifications -
    -
    - - - - - - - -
    -
    -
    - -
    -
  • - -
  • -
    -
    - - -
    -
    - - -
    - -
  • - -
  • -
    -
    - -
  • -
- -
- - -
- -
-
- - - - - - - Permalink - - - - -
- -
-
- - - master - - - - -
- - - -
-
-
- -
- - - - Go to file - - -
- - -
- -
- - - -
- -
-
-
 
-
- -
-
 
- Cannot retrieve contributors at this time -
-
- - - - - - -
- -
-
- - 1822 lines (1822 sloc) - - 78.2 KB -
- -
- -
- Raw - Blame -
- -
- - - - -
- -
-
- -
-
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:100000000C943F120C9467120C9467120C941027F6
:100010000C9467120C9467120C9467120C9467127C
:100020000C9467120C9467120C9467120C9467126C
:100030000C9467120C9467120C9467120C9467125C
:100040000C94C6260C9467120C9494260C946E267D
:100050000C9467120C94E7270C9467120C946712A7
:100060000C9467120C94671207634236B79BD8A7AB
:100070001A39685618AEBAAB558C1D3CB7CC5763CD
:10008000BD6DEDFD753EF6177231BF000000803F7B
:1000900005A84CCDB2D44EB93836A9020C50B9914E
:1000A0008688083CA6AAAA2ABE000000803F080055
:1000B0000000BE922449123EABAAAA2ABECDCCCCE7
:1000C0004C3E00000080BEABAAAAAA3E0000000081
:1000D000BF000000803F0000000000084178D3BB53
:1000E0004387D1133D190E3CC3BD4282AD2B3E6800
:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1
:10010000FF7F3F0000000000800400003FF0383017
:1001100033103F90381033902790261030903FF0E6
:1001200000008004800400003FF03DF020103BF010
:100130003B7030302B502AD031B03FF000008004AB
:10014000800400003FF038703030231027902010DA
:100150002010279027903FF00000800480040000CA
:100160003FF03CF03CF020102490249020103CF014
:100170003CF03FF000008004800400003FF037B006
:1001800023103030387038703030231037B03FF0E3
:1001900000008004FCF4F860E044C08CC11CC22C58
:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9
:1001B0008000BFF81FF8B0281FF8B4081FF8B10876
:1001C0001FF8B048BFF8B288BFF880008000BFF8C1
:1001D0001FF8B0081808B9E819B8B8381838B9B80D
:1001E000B9F8B0F8BFF8800015543FF815503FF04B
:1001F0001550387010203104138C22A817FC2AA83F
:100200000000000015543FFC15543FFC15543C04FD
:1002100014043CFC14543CFC005400A800000000F2
:10022000800400003FF03CF034B0249024902790EC
:100230002310303038703FF000008004FF7CFE7CDB
:10024000FCECE8DCC84C984C882408200000000036
:10025000000000008004E01CF3FCE7FCCE0C8E1CC8
:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8
:10027000E01CF87C000458085808580840087FF82B
:1002800060185FE85B685FE85B681CE85FE8000097
:10029000800400003FF03CF03CF03CF020102010C7
:1002A0003CF03CF03CF03FF000008004F87CF7BCF0
:1002B00000007FF80000BFF4AB54AB54AB54AB5418
:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431
:1002D00073007F007E007C007C007C60BC64BE04F8
:1002E000CF0CF03C81DC559C29045500299055D059
:1002F00003FCFF002E00267002508270E600EE0420
:10030000800C001C3FF43FE03FC4378C2318303092
:1003100038703CF03FF03FF000008004058074B876
:1003200057A876B80580F97C4694AAA8F97C068877
:1003300074A8578C75740698F03CCE4CBC34B81435
:10034000188010804230607860F844C08004B8841F
:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432
:1003600000000300030003000780078003008004EF
:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A
:10038000CFCCCFCCC84CCFCCC00CE01CFCFCF87C54
:10039000E01CC00CC00CC00CC00CC00CC00C800415
:1003A0008004FFFCF87CFCFC8004000020001000AE
:1003B00008001000270000000000000000000000FE
:1003C00000008004C3FC18001800C3FCFFFCFF0CF5
:1003D00000600060FF0CFFFCF0FC06000600F0FC73
:1003E0008FC4102020104CC89FE43DF03DF01DE06C
:1003F0003EF03F709FE48CC400003030F87CF33C4A
:10040000F4BCF6BCF4BCF6BCF4BCE49CC84CD02CE8
:10041000D02CC84CE79CF03C882408203830383079
:10042000383038303830383039303BB03FF03FF07A
:1004300000008004F21415F0CADFB8CCF0D699E8B9
:10044000AEA4DFEEE8F21D1E08F21C08F21A1B082B
:10045000F0714601F046464A01F219F051F218F0E7
:100460005A8DF0C0DAEEAEF0C8B8A5F1302924F00C
:10047000B599E1A4BDF21415F0CBEEAEBDF218F0C3
:100480005A8DF21617F21415F0CBEEAEBDF2161718
:10049000F0BCCA9EE0BDF21415F21213F21011F274
:1004A0000C0DF094F20E0FF0A2D8DFCBE1EEACDC35
:1004B000E8F20AF08CF20BF04A8DF209F08DF09719
:1004C000C59BBDF20708F21F20F2040506F097DE77
:1004D000EED5F0CBABEEF0AEA4DFEEE8F0A8E8BDD1
:1004E000E2EEE0F0B499D3EEF200010203F0CCDFCB
:1004F000B0B8BD5361766500466C6970004D6169A6
:100500006E2053637265656E004A5000454E00438D
:100510004E00594553004E4F004F4E004F46460087
:10052000496E666F73004269670050494400446930
:1005300072656374005361766500426F6F73740077
:100540004F666600536C65657000536176650042C6
:100550006F6F737400536C656570004465666175F8
:100560006C740053617665004164640044656C6599
:1005700074650052656E616D650043616C696272FD
:10058000617465004368616E6765005265747572D9
:100590006E0041626F7574004C616E67004C6F6352
:1005A0006B004C4F5720566F6C0042757A7A65721B
:1005B0000053637265656E00436F6E74726F6C00FA
:1005C00054696D65720054656D7000546970000067
:1005D000000000000F1DC20800054442080003840B
:1005E0005FBF000FE44410000115451000054CC921
:1005F0007F8009244F900007C4C11000054D413F82
:1006000000055443810007C44D0200054441140015
:10061000055541080007C8810400000000000000E3
:100620000000000001083FFE001FFF8100000040A5
:1006300002000007FE0FF800040208080004020888
:10064000880007FE08880004020888000402088861
:100650000007FE0888000402094800040202300076
:1006600007FE040C00040218040000000000000053
:100670000000000007FE13FE000402084000040210
:10068000084000040201FC0004023884000402084F
:10069000840007FE0FFF000402080000040209FEA8
:1006A00000040209020004020B020004020D020011
:1006B00007FE09FE00040201020000000000000025
:1006C0000000000001100080001FFF80800001106A
:1006D0003FFF00004004080007FC04080004440435
:1006E0001000044402100004440220001FFF812077
:1006F00000004000C00000A001300001100208000E
:10070000060C0C07001803B00200000000000000F7
:1007100000000000004000800000400080000FFF4B
:100720003FFF000841040800084104080008410494
:10073000100008410210000FFF02200008410120B4
:1007400000004000C00000400130000040020800EE
:1007500000400C07000040300200000000000000D4
:10076000000000001FDF10200002120C20000224F5
:10077000042000047F8020000424B820000FA488F7
:10078000500014BF88500004A488500004A4884876
:100790000004BF88880004A48A880007A48C840011
:1007A0000444890700008186020000000000000068
:1007B000000000000FF00491000440025200047F8A
:1007C000905400045088FF0007D084810004510039
:1007D0008100044901FF0007CA028100044404812A
:1007E00000044A1CFF0007EA0481000C5104810048
:1007F0000061C4850000408082000000000000000D
:100800000000000007FF802000008407FF00008434
:10081000040100008404010000840401000FFFC7EC
:10082000FF0000840400000084040000008405FF31
:100830000000840501000104090100010409010010
:10084000020411FF00040401010000000000000088
:1008500000000000008204FF00004402010007FFC6
:100860009021000010102100001017FD0000101052
:1008700021000FFFD06100001010A10000281121FD
:100880000000281221000044142100008210A10061
:100890000301D045000C00900200000000000000A1
:1008A00000000000084410FE00042810920005FF1C
:1008B00022920000103C920000100892001CFE10D2
:1008C0009200041020FE0004103E920005FF80926A
:1008D00000041000920005100E92000610309200E5
:1008E000041000FE00001000820000000000000064
:1008F0000000000007DF8840000A24104000114279
:1009000010FE00040022820002FF3D020008010ADE
:10091000420009F9103200090920120009F93E02CB
:1009200000090900020009090E020009F93022003D
:100930000805001400080200080000000000000084
:10094000000000000FC3F1E0000FE3F1F8000C70AD
:10095000C19E000C30C186000C30C183000C30C138
:1009600083000C60C183000C60C183000FC0C18391
:10097000000FC0C186000C00C186000C00C19800A9
:100980000C03F1F8000C03F1E0000000000000008F
:100990000000000000200820000FFF09FC000020DC
:1009A00008000000203E880003FE08500002020BF1
:1009B000FE0003FE0C4000020218400003FE2BFE66
:1009C00000020208480003FE0888000202085000E6
:1009D00002022830001FFF91CC000000000000013F
:1009E00004047C0000880444000FFF3F4400002002
:1009F00004440000200C440000200E44001FFF951A
:100A000044000020144400005024440000500444DA
:100A100000008804450001040485000603850300E6
:100A200018010400000000000000000000000000A9
:100A300000000000047E21FC0004421104001F7E1F
:100A4000090400044221FC000542110400067E1145
:100A500004000C0005FC0015FF880000040813FECC
:100A6000000448325200044F12520004481252004F
:100A700014A8125200091F97FF0000000000000098
:100A80000000000002103DFC0002102504000410CC
:100A900025040005FFBDFC000C102520000C3825A6
:100AA0002000143825FE0004543D20000454251075
:100AB0000004922510000511A5090006113D45000E
:100AC0000410258300041001010000000000000054
:100AD000000000001FC8102000124A0C20001AC994
:100AE00004200017480020001FFFB820000208085B
:100AF00050001FC8085000020808500003C80848EA
:100B0000001E1408880001540A880015220C840075
:100B10001443890700008106020000000000000263
:100B2000FE01000002823FFF00048202000004FE7A
:100B30000200000C1004FC00141004080005FF8CD7
:100B400010000410141000043825FF0004340410B1
:100B50000004520410000491841000051004500099
:100B6000041004200000000000000000000000004D
:100B70000000000002030010001FDC3EFE00089091
:100B8000021200051004FF001FDF84120002120C85
:100B9000FE001FD2021000021222FE000A92141060
:100BA000000A5214100012220DFF00022208100049
:100BB0000A42141000040223FF000000000000009D
:100BC000000000000F78BC20000948A45000094A2A
:100BD000A85000094AA88800094AB104001FFEAACB
:100BE000FB00094AA42000094AA42000094AA7FEE4
:100BF00000094AB420000948A924000B48A2220099
:100C0000088AA4A200111920400000000000000082
:100C1000000000000020008000005001FC0000885F
:100C2000010400010403080006FB0490000800C052
:100C3000600007DF018000045106000004511BFE24
:100C400000045102020007D9020200045602020009
:100C5000001003FE0000100202000000000000006F
:100C6000000000000208209000027F9890001F8082
:100C700009FF00022201100006218B100007628D7F
:100C8000FE000AA20910000A14111000121431FE0D
:100C900000020811100002141110000222111000AD
:100CA000024391FF000281110000000000000000DB
:100CB00000000000100700000008F83FFE0004805C
:100CC000200200008020020000BE23E2001C8222DD
:100CD000220004A42222000494222200048822225A
:100CE00000049423E20005222002000542200200B5
:100CF0000A003FFE0011FFA00200000000000000FB
:100D00000000000000820FFE00004400400007FFCA
:100D10008040000010004000001000400000101F44
:100D2000FF800FFFC040000010004000002800407E
:100D30000000280040000044004000008200400005
:100D40000301C140000C0080800000000000000989
:100D5000FF00400004203FFF00042000000000FED0
:100D60000000001C420FFC00044200000007FF804E
:100D7000000004000FFC0004FF00000004810000DC
:100D80000005810FFC00068108040004FF08040030
:100D900000810FFC000000000000000000000000C7
:100DA0000000000000401F7E001FFF840200108032
:100DB0008442000A4A0442000A3108420012C50F68
:100DC00042000304197F001DF829010000400901B9
:100DD00000084209FD00084209010008420F010015
:100DE0000FFE0905000002000200000000000000E4
:100DF0000000000001000FFE00010008200003FFBA
:100E00000820000201082000042208200008200B0E
:100E1000FE00102008200000500828000050082480
:100E20000000880822000088102000010410200023
:100E30000203A7FF000C01000000000000000000FA
:100E40000000000000400080001FFF9FFC000040E9
:100E50000410000FFF02200000003FFF000FFE0003
:100E6000000008420FF80008420808000FFE0808BA
:100E70000008020FF8000800080800080008080031
:100E800008000FF800100008080000000000000033
:100E90000000000007FE0FF800040200000004023A
:100EA00000000007FE00000004023FFE00040200F4
:100EB000800007FE008000009004900008910C88DC
:100EC00000069310860002942082000090008000AB
:100ED00000900280001FFF81000000000000000061
:100EE00000000000041012020005FF9FD200050060
:100EF0009212001E28A2120004443FF20004820253
:100F0000120006000212000CFE1FD2001410125232
:100F10000004101242000410134200041012820058
:100F200015FF820A00080002040000000000000013
:100F300000000000002000000000203E04001FFF11
:100F4000A204001000A2FF0000012204000FFE22F4
:100F5000040000403E4400004022240004402224BB
:100F600000047C22040004402204000A403E0400E5
:100F7000094022240010FF80140000000008000037
:100F80000000000010FE08200008820BFF00048211
:100F90000A010010FE3C51000882088800088209FE
:100FA000040002FE0C0000040019FC0009FF2820C8
:100FB0000019290820000929082000092908200013
:100FC00009292BFF000BFF9000000000000000002B
:100FD000000000001F7F90F80001080888000A1038
:100FE000088800047F0107001FC13A000005490975
:100FF000FC000449088400044908880004490848A2
:1010000000044908500004490A200004160C580046
:10101000142189870008C086020000000000001F1C
:10102000E03FF07038601860186018FFFCFCFCFCB2
:10103000FCFCFCF87CF87CFCFC7FF81E1033382D9F
:101040007C25382D3825382D386D80DEC0BF40BF57
:1010500040DEC061803F007FF0FFE0C008C01CC0E0
:1010600038C870DCE4CFCCC78CC30CC00CC00CFFFC
:10107000FC7FF8000006000C0018F838F0303070E3
:1010800060707878F878003C023F0C1FF80FF0038E
:10109000C000007FF8FFFCC00CC30CCB4CDB6CDB4A
:1010A0006CD86CDCECCFCCC78CC00CFFFC7FF80399
:1010B0000007800FC00CC01CE01CE03CF03CF07F3F
:1010C000F87FF8FCFCFCFCFFFC7FF811408200215B
:1010D000208FE023FC82004A23E200FE209FF013D1
:1010E000F880802220C0804221BFF0FBFA88800275
:1010F000208480022084801A208080E3FE82800287
:101100000101000F421FC078411040084090400884
:10111000421FC008411040FFFD104008405FC0085A
:1011200040800008413FE008432520104125201061
:101130004125202041252040417FF07FF848800252
:101140000049000201FFF00201001002027F20228C
:1011500000410023F07F00220008002200FF8022CF
:101160000088802200888022008A8022008900FF77
:10117000FC080023F21FC022111040FBF090402217
:10118000121FC02A11104033F1104060005FC0AF41
:10119000FC800020413FE0224325202279252022A7
:1011A000412520A541252048FD7FF01083DFC01098
:1011B000825040208250402FFFDFC0608252006189
:1011C000C25200A1C25FE022A3D20022A251002499
:1011D000925100288E5090308BD45020825830206D
:1011E000801010104047C017FC44402003F44023F7
:1011F000F844406208C440A3F8E440200154402F62
:10120000FD44402806444023F844402040445020F8
:10121000404850214050302080400020921FC03D67
:10122000F990402090904040901FC07BFF0000A0AC
:10123000013FE021F90200FD09020021097FF021B0
:10124000F90500210945002909888031F91070212C
:1012500008202025004300202070F8754077557540
:101260007740403E4A5E2B5E4A6B627F352F357F6A
:101270007C5B5E247B0E3A047E017E4A5E69063A00
:101280002F3F6B7E46403F41497F494102626B6B75
:101290006B62026A6B147D577D10413F55553D5777
:1012A00051213F2D7F2A122E0A775A505A770A2051
:1012B00024137D5553707A2A7B021A437A4A525E70
:1012C0002B5E424A415F353F555F417D14577D0E8D
:1012D000407F7F1B54167D1654493A407E57567600
:1012E000423F427E7E427E047E51377D3750127AE5
:1012F0001752761E127F557F145D7F557F557F7F75
:10130000553D577F55377817457F7F2B7B287B2BA3
:101310007F1E12127F12121E7F416B7F6B517F5214
:101320005A573A575A52007F494949497F22122A4F
:101330007F2A1222166A5E735662160937315F15CC
:101340005F7500000000002F000300033F123F16EE
:101350003F1A120824323D2A020100003E41413E5C
:10136000000A070A083E084020000808080020007C
:101370001008041C2A1C243E20322A24222A141875
:10138000143E2E2A121C2A12023A06142A14242A67
:101390001C002400402400081422141414221408F1
:1013A00002290612291E3E093E3F251A1E21213F11
:1013B000211E3F25213F05011E21393F083F213FC6
:1013C0002110201F3F043B3F20203F063F3F013EAE
:1013D0001E211E3F09061E215E3F093622251901E6
:1013E0003F013F203F3F100F3F183F330C33033C7A
:1013F00003312D23007F41153E15417F000201027C
:1014000040404000010218243C3F241818242418AE
:10141000243F182C2C043F0548543C3F0438003D21
:1014200000403D003F0834013F003C1C383C04387C
:101430001824187C241818247C3C0804283C140424
:101440003E243C203C3C100C3C303C2418244C50A6
:101450003C24342C083641007F004136080101014C
:101460001028101F010120203E1020000008002538
:10147000150F241C0C103804180C3828382828188C
:101480003C083C18283820242C3C2C2C1C04080830
:10149000211D07083C0306231E223E22120A3F326A
:1014A0000F3E0A3F0A24130E271E0222223E271255
:1014B0000F2525102119273F222E21160F241B0E40
:1014C000251F0526261E251D053F0408241F042070
:1014D0002222251927123B1620100F3C013E1F2403
:1014E0002421110F0C031C1A3F1A091927222A2A3A
:1014F000382730320C13053F25023F0E213F2025AF
:10150000253F25251D07201F3C3F203F20103E2260
:101510003E23110F212118010001020502000000E5
:1015200000000000002040000000000000205020CB
:10153000000000000050300000000000006060006B
:101540000000000000000018180000000000003635
:1015500036000000000000563600000000000201C6
:1015600051090906000000005F00000000000000B3
:10157000007F41410041417F000000000000000069
:101580003F010101004040407E0000000000003F9C
:10159000213D05070070505E427E00000000000003
:1015A000007F63410041637F0000000000080808DD
:1015B0007F08080800080808080808080044444490
:1015C0005F444444004122140814224100080808E2
:1015D0002A080808001414141414141400143414E1
:1015E0001C141614000808141414222200222214B9
:1015F00014140808000205023C42422400002B2C6F
:10160000782C2B000000242A7A2F2A1200001C625A
:10161000322E23140020545E254142200042251220
:10162000082452210020623E633E230200205649D6
:1016300055225840000022147F142200001C225919
:10164000554D120C0000004A555529000004643C19
:10165000173C64040004643C1F3C6404001C2241E9
:101660004141221C001C3E7F7F7F3E1C001C225DEE
:10167000555D221C000814224122140800081C3E5B
:101680007F3E1C08007F41414141417F007F7F7FB9
:101690007F7F7F7F0040704C434C70400040707CE7
:1016A0007F7C704000010719611907010001071FC5
:1016B0007F1F07010049221449142249000505052E
:1016C0007D05050500080808082A1C0800081C2AD2
:1016D00008080808000004027F020400000010202F
:1016E0007F20100000003E414141413E0000004289
:1016F0007F400000000062515149494600002241EC
:10170000494949360000302824227F2000002F4517
:101710004545453900003E4949494932000001012B
:101720006119050300003649494949360000264938
:101730004949493E000020547E3414600020527F05
:101740002A1A4A3000003C4020041800001E2040A5
:10175000200204180000104A4A2A10000000084520
:10176000454525180000482A3A4A40000000442513
:10177000153D45400000247E145024000022527F75
:101780000A484A340044344F443804180044344F63
:101790004439041900002A5A4B4E5A0800002A5AAC
:1017A0004B4E5B080000081414224100000008148E
:1017B00014224504003F0004443F0404003F000499
:1017C000443F0405000020524242424000002052A3
:1017D000424342410000245444475C040000245426
:1017E00044475C050000003F404040200000003FAF
:1017F000404140210002020A563F02020002020A52
:10180000563F02030004043F44545F440004043F75
:1018100044545F45000008093D4B49080000080991
:101820003D4B490A00423A072254444400423A07D9
:1018300022554445000002124E4B4A32000002126B
:101840004E4B4A3300001010484830000004040298
:101850002222221C000404022223221D0000020274
:101860001A254341000002021A2543450000205773
:1018700048484444000020574849444500120A277C
:1018800052503A24007F00205242424000304E38ED
:10189000540F64780024147F0422523C0018241250
:1018A0004E422418007F002454543F44007F0024FB
:1018B00054543F45007F002454563D4600023A47A9
:1018C00040413E0400023A4740413E0500023A478B
:1018D00040433D06004030404D32106000403040F3
:1018E0004D321161004030404D3215620008040253
:1018F0000408101000080402040910110008040272
:10190000040A1512007F006A6A7E2A4A007F006A74
:101910006A7F2A4B007F006A6A7E2D4A00006A6A4D
:101920006A7F2A4A0030291D4B483C1000122A7F4A
:101930004240422400304E38540F443800000A3EE2
:101940004B4A4A300000080E384614080004071CB1
:1019500062030A0400001C483E241800001E0452C2
:101960003F12120C00002050503E48000000205052
:10197000503F244400001C51494A483000000F42A7
:1019800041211E00000010696D4B49300024147F76
:1019900004023E40000010494D4B49300000281819
:1019A0007E0844380024147F0442423C003049251C
:1019B0001F245438004028255735284000100A2E8F
:1019C0005B724A480040300C334040200000044421
:1019D0003C140C00000001413D09050300002020DB
:1019E0001078040000001010087C02010000184864
:1019F0004C281800000006424322120E0000404806
:101A000078484000002022223E2222200000282880
:101A1000587C0800002222124A7F02020000422263
:101A20001F02427E000042221F02427F000012126B
:101A30001F721210000012121F72131000000844CF
:101A40004322120E000008444322120F00080742EE
:101A5000221E020200080742221F02030000424227
:101A60004242427E000042424243427F0002024F15
:101A700042221F020002024F42231E030000454A79
:101A80004020100C0000454A4021100D0040422229
:101A9000221A264000404222221B26410004043F15
:101AA0004444544C0004043F4445544D0000014656
:101AB0004020100F000001464020110F0000084494
:101AC0004B2A120E000008444B2A120F00080A4A43
:101AD0003E09090800080A4A3E09080900001840A2
:101AE0005820180000020C424C20100E00020C423C
:101AF0004C21100D000405453D0505040004054575
:101B00003D0504050000007F080810000000007F6C
:101B100008091001000444241F04040400202222A8
:101B200022222220004041251519270000202212E0
:101B30007B06122000404020100807000040300EB5
:101B400000020C700040300E00020D710040300E9B
:101B500000020D7200003F484848444400003F48DE
:101B60004849444500003F48484A45460000024273
:101B70004222120E000002424223120F00000242D3
:101B80004222150E00080402040810200008040276
:101B90000409102100080402040A15220024144438
:101BA0007F041424002414447F05142500241444C5
:101BB0007F0615220002021222520A060000212589
:101BC000294A42000040704C4350204000404424C9
:101BD00014083700000008093F4949480000101C5C
:101BE000680818000004040F74020A060000404848
:101BF0004878400000202222223E2020000000449D
:101C000054547C000000424A4A4A4A7E000004457F
:101C10004525150C00000F4040201F000040201EED
:101C2000007F20100000007F4020100800007E424E
:101C30004242427E00000C4444241C000000064244
:101C40004222120E0010121E12127F1200202222B7
:101C50003A262220000001454525150F000041428B
:101C60004020100C000006424322120F00004828BA
:101C70001C4878000000100C4838080000080404D4
:101C800008101008000800000800000800040808F8
:101C900008080808000808080808080808060505D4
:101CA0000706040903030504090A080303030603DE
:101CB00005030305050306040405050405040403E0
:101CC00004090503CB05C605C005B805B105AA057D
:101CD000A2059D05980592058B0584057A05730577
:101CE0006C05680563055B0555054F054A05440508
:101CF00040053A0535052E052A05260520051C0553
:101D00001905160512050F050C050905FD04F80453
:101D1000F3043E0053656C656374205469700000E1
:101D2000000000003E5B4F5B3E3E6B4F6B3E1C3E37
:101D30007C3E1C183C7E3C181C577D571C1C5E7F4B
:101D40005E1C00183C1800FFE7C3E7FF00182418CA
:101D500000FFE7DBE7FF30483A060E2629792926FF
:101D6000407F050507407F05253F5A3CE73C5A7FE9
:101D70003E1C1C08081C1C3E7F14227F22145F5F3F
:101D8000005F5F06097F017F006689956A60606079
:101D9000606094A2FFA29408047E040810207E20B4
:101DA0001008082A1C08081C2A08081E1010101009
:101DB0000C1E0C1E0C30383E3830060E3E0E06004F
:101DC0000000000000005F00000007000700147F13
:101DD000147F14242A7F2A1223130864623649567A
:101DE00020500008070300001C2241000041221C73
:101DF000002A1C7F1C2A08083E080800807030005A
:101E00000808080808000060600020100804023E6E
:101E10005149453E00427F400072494949462141AF
:101E2000494D331814127F1027454545393C4A491E
:101E3000493141211109073649494936464949295D
:101E40001E0000140000004034000000081422416D
:101E50001414141414004122140802015909063EF6
:101E6000415D594E7C1211127C7F494949363E41F1
:101E70004141227F4141413E7F494949417F090912
:101E800009013E414151737F0808087F00417F41AD
:101E9000002040413F017F081422417F40404040E4
:101EA0007F021C027F7F0408107F3E4141413E7F3C
:101EB000090909063E4151215E7F09192946264933
:101EC00049493203017F01033F4040403F1F20400A
:101ED000201F3F4038403F63140814630304780414
:101EE000036159494D43007F4141410204081020DC
:101EF000004141417F040201020440404040400053
:101F00000307080020545478407F2844443838445C
:101F1000444428384444287F385454541800087ED8
:101F2000090218A4A49C787F0804047800447D402A
:101F3000002040403D007F1028440000417F4000C9
:101F40007C047804787C080404783844444438FCE1
:101F50001824241818242418FC7C08040408485465
:101F600054542404043F44243C4040207C1C204022
:101F7000201C3C4030403C44281028444C90909019
:101F80007C4464544C440008364100000077000053
:101F9000004136080002010204023C2623263C1EB2
:101FA000A1A161123A4040207A3854545559215524
:101FB0005579412154547841215554784020545545
:101FC00079400C1E52721239555555593954545492
:101FD0005939555454580000457C410002457D4212
:101FE0000001457C40F0292429F0F0282528F07CC8
:101FF000545545002054547C547C0A097F49324989
:102000004949323248484832324A4848303A4141D8
:10201000217A3A42402078009DA0A07D3944444472
:10202000393D4040403D3C24FF2424487E494366DE
:102030002B2FFC2F2BFF0929F620C0887E090320B7
:10204000545479410000447D413048484A32384078
:1020500040227A007A0A0A727D0D19317D262929DB
:102060002F28262929292630484D402038080808DD
:102070000808080808382F10C8ACBA2F102834FAFE
:1020800000007B000008142A142222142A14089548
:1020900000220095AA005500AAAA55AA55AA000038
:1020A00000FF00101010FF00141414FF001010FFA8
:1020B00000FF1010F010F0141414FC001414F700BA
:1020C000FF0000FF00FF1414F404FC141417101F89
:1020D00010101F101F1414141F00101010F0000017
:1020E00000001F101010101F10101010F010000032
:1020F00000FF101010101010101010FF1000000042
:10210000FF140000FF00FF00001F10170000FC0478
:10211000F414141710171414F404F40000FF00F75B
:1021200014141414141414F700F7141414171410BE
:10213000101F101F141414F4141010F010F00000ED
:102140001F101F0000001F14000000FC140000F00E
:1021500010F01010FF10FF141414FF141010101FB3
:1021600000000000F010FFFFFFFFFFF0F0F0F0F0C4
:10217000FFFFFF0000000000FFFF0F0F0F0F0F38E1
:10218000444438447C2A2A3E147E02020606027E1B
:10219000027E0263554941633844443C04407E203A
:1021A0001E2006027E020299A5E7A5991C2A492A4B
:1021B0001C4C7201724C304A4D4D303048784830DA
:1021C000BC625A463D3E494949007E0101017E2AD2
:1021D0002A2A2A2A44445F444440514A4440404405
:1021E0004A51400000FF0103E080FF000008086B37
:1021F0006B083612362436060F090F060000181831
:102200000000001010003040FF0101001F01011EFE
:1022100000191D1712003C3C3C3C0000000000006F
:10222000000000240027002A0000000000250028EC
:10223000002B0000000000230026002900040404F5
:10224000040404040402020202020203030303035F
:10225000030102040810204080010204081020013C
:10226000020408102000000008000201000003041E
:10227000070000000000000000AED5F0A83FD3002A
:10228000408D14A1C8DA1281CFD9F1DB40A4A6AFEA
:10229000200021007F220007506C65617365207764
:1022A000616974004144433A200074656D703A20BE
:1022B00000536574206D65617375726564005374B5
:1022C00065703A2000FFFFFFFFFFFF8003867080EC
:1022D000038003867080039FF3E1309FF39FF3E157
:1022E000309FF3983301CC9833983301CC983398CE
:1022F0003387C098339833E1C098339833E1C0985E
:10230000339FF398C09FF39FF398C09FF3800366B9
:10231000CC8003800366CC8003FFFF010CFFFFFF2E
:10232000FF01001FFF810061301F3F873CE6FC87F3
:1023300033873CE6FC87F3F8039E0F1F03F8039EE8
:102340000F1F03E13CFE0C07CFE13CFE0C07CF99C9
:10235000033E3086C3E6CF380F9EF3E6CF380F9E9C
:10236000F39E0327CC81039E0327CC8103E0FFE18A
:102370000CE6CFE0FFE10CE6CF9803060000FF98E3
:1023800003060000FFFFFF1EF0F80380036630998C
:10239000C38003663099C39FF3010CF8FF9FF301DC
:1023A0000CF8FF9833393C01CF9833393C01CF9872
:1023B00033FF0C793F98333ECCE0F398333ECCE0CA
:1023C000F39FF33E0098CF9FF33E0098CF80033EEB
:1023D00030E7C380033E30E7C3FFFFFFFFFFFFFF8F
:1023E000FFFFFFFFFF3030300076312E372B0056D5
:1023F00000560043000FE01FC01FC03F803FF87F22
:10240000F07FE007C007800F000E001C00180010CE
:102410000014A03FF07FF8E01C6E18EC1C681860F8
:1024200018E01C6058E01C7FF83FF014A0455252A1
:102430004F5200484F4C44004845415400574F52BA
:102440004B5900424F4F535400534C454550004F99
:1024500046460000003BEC7BEE63E663E663E66322
:10246000E663E663E663666226600660067FFE3F1B
:10247000FC0000010204081020408000E82711241D
:102480001FBECFEFD8E0DEBFCDBF12E0A0E0B1E0CD
:10249000ECEFFFE602C005900D92AE3CB107D9F714
:1024A00027E0AEECB2E001C01D92A33EB207E1F717
:1024B00012E1CFE3D2E104C02197FE010E94DD3793
:1024C000CE33D107C9F70E942D280C94FC370C9409
:1024D000000080389105B0F46034710598F4E3E7AA
:1024E000F4E290E1969FD001A0781124A80F6770C4
:1024F000E60FF11D9491AE5CBC4F442321F08C910A
:10250000982B9C93089590958C919823FACFDF9205
:10251000EF92FF920F931F93CF93DF937C01D22E04
:102520008B01040F111DEB0177FF02C0D0E0C0E06A
:10253000C8010134110514F080E490E0C817D907F0
:102540003CF44D2DBE01C7010E9469122196F0CFC7
:10255000DF91CF911F910F91FF90EF90DF90089541
:10256000CF92DF92EF92FF920F931F93CF93DF935F
:102570006B01122FEC017C01E40EF11CCE15DF057E
:1025800044F4202F412FB601CE010E9487122196DC
:10259000F5CFDF91CF911F910F91FF90EF90DF90DA
:1025A000CF9008952F923F924F925F926F927F92B9
:1025B0008F929F92AF92BF92CF92DF92EF92FF9253
:1025C0000F931F93CF93DF9300D01F92CDB7DEB749
:1025D000C22ED12C9601280F391F37FD4FC08038ED
:1025E00091050CF04BC0E9824A017B013C01402E71
:1025F000512C160127E0220E311C93E035942794CC
:102600009A95E1F78B01B12CA12C1B821A82EA81E9
:10261000FB8183E0F595E7958A95E1F7EA0DFB1DCF
:10262000E80DF91DE4918A819B818770992720E844
:1026300030E002C0359527958A95E2F7C901F0E0B0
:10264000E223F923EF2B41F04981B8018A819B8174
:10265000860D971D0E9469128A819B8101969B833A
:102660008A838C159D059CF2A20CB31C0F5F1F4F33
:10267000C8018E199F09841595053CF20F900F90A3
:102680000F90DF91CF911F910F91FF90EF90DF900E
:10269000CF90BF90AF909F908F907F906F905F9002
:1026A0004F903F902F9008950F931F93CF93DF93F8
:1026B000EC018B0140E001960E94691240E0B801F4
:1026C000CE0101970E946912B8016F5F7F4F40E011
:1026D000CE010E946912B8016150710940E0CE013B
:1026E0000E94691240E0B801CE01DF91CF911F91A5
:1026F0000F910C94691280E0E2E3F3E081118FEF17
:10270000002481938193819381930394D1F7EFEC1B
:10271000F7E0178616861586148608956F927F92C5
:102720008F929F92AF92BF92CF92DF92EF92FF92E1
:102730000F931F93CF93DF93803891050CF057C010
:10274000603471050CF053C07B0137E0E322FF24B5
:1027500033E0759567953A95E1F7DB01B695BA2FA9
:10276000AA27B795A7955D01C0E8AC0EB11CA80ECD
:10277000B91EA80FB91FAE5CBC4F00E810E0081BE3
:10278000190B90E080E0E8E0F0E04F018E189F0820
:1027900030E0FA01E80FF91FC4917D906D01D1E09E
:1027A000CD1AD1080E2C01C0CC0F0A94EAF77C2A6E
:1027B000E6017882E114F10499F06730710581F047
:1027C000E491EC01CA0DDB1DCE5CDC4FF0E0082C7F
:1027D00002C0F595E7950A94E2F7F881EF2BE883BC
:1027E0000196821793071CF40817190791F6DF91D9
:1027F000CF911F910F91FF90EF90DF90CF90BF90FE
:10280000AF909F908F907F906F900895AF92BF92FE
:10281000CF92DF92EF92FF920F931F93CF93DF93AC
:102820006C017B018B01040F151FEB015E01AE18DB
:10283000BF08C017D10759F06991D601ED91FC91FD
:102840000190F081E02DC6010995892B79F7C5012A
:10285000DF91CF911F910F91FF90EF90DF90CF907C
:10286000BF90AF900895FC01538D448D252F30E02B
:10287000842F90E0821B930B541710F0CF9608958D
:1028800001970895FC01918D828D981761F0A28DBA
:10289000AE0FBF2FB11D5D968C91928D9F5F9F7380
:1028A000928F90E008958FEF9FEF0895FC01918D36
:1028B000828D981731F0828DE80FF11D858D90E0A3
:1028C00008958FEF9FEF0895FC01918D228D892F40
:1028D00090E0805C9F4F821B91098F739927089528
:1028E00082E397E00E94641421E0892B09F420E040
:1028F000822F089580E090E0892B29F00E947014C7
:1029000081110C9400000895FC01A48DA80FB92F2B
:10291000B11DA35ABF4F2C91848D90E001968F7307
:102920009927848FA689B7892C93A089B1898C9126
:10293000837080648C93938D848D981306C0028875
:10294000F389E02D80818F7D80830895EF92FF923F
:102950000F931F93CF93DF93EC0181E0888F9B8DC2
:102960008C8D98131AC0E889F989808185FF15C07C
:102970009FB7F894EE89FF896083E889F98980819F
:102980008370806480839FBF81E090E0DF91CF916E
:102990001F910F91FF90EF900895F62E0B8D10E090
:1029A0000F5F1F4F0F731127E02E8C8D8E110CC0FF
:1029B0000FB607FCFACFE889F989808185FFF5CF4A
:1029C000CE010E948414F1CFEB8DEC0FFD2FF11D91
:1029D000E35AFF4FF0829FB7F8940B8FEA89FB8987
:1029E00080818062CFCFCF93DF93EC01888D8823E5
:1029F000B9F0AA89BB89E889F9898C9185FD03C062
:102A0000808186FD0DC00FB607FCF7CF8C9185FF46
:102A1000F2CF808185FFEDCFCE010E948414E9CFF3
:102A2000DF91CF910895833081F028F4813099F0BF
:102A30008230A9F008958730A9F08830C9F0843039
:102A4000B1F4809180008F7D03C0809180008F77EA
:102A500080938000089584B58F7784BD089584B5F0
:102A60008F7DFBCF8091B0008F778093B000089569
:102A70008091B0008F7DF9CFCF93DF93282F30E086
:102A8000F901EB59FD4D8491F901EF5AFD4DD491B7
:102A9000F901E35CFD4DC491CC23A1F081110E94AA
:102AA0001315EC2FF0E0EE0FFF1FED5CFD4DA5912F
:102AB000B491EC91ED2381E090E009F480E0DF91A6
:102AC000CF91089580E090E0FACF1F93CF93DF93EA
:102AD000282F30E0F901EB59FD4D8491F901EF5AAF
:102AE000FD4DD491F901E35CFD4DC491CC23A9F0D7
:102AF000162F81110E941315EC2FF0E0EE0FFF1F2F
:102B0000E75DFD4DA591B4918FB7F894EC9111114B
:102B100008C0D095DE23DC938FBFDF91CF911F914A
:102B20000895DE2BF8CFCF93DF9390E0FC01EF5AAE
:102B3000FD4D2491835C9D4DFC0184918823C9F057
:102B400090E0880F991FFC01E15EFD4DA591B491C5
:102B5000FC01E75DFD4DC591D49161110DC09FB79A
:102B6000F8948C91209582238C9388812823288344
:102B70009FBFDF91CF910895623051F49FB7F894D1
:102B80003C91822F809583238C93E8812E2BEFCF6D
:102B90008FB7F894EC912E2B2C938FBFEACF1F9315
:102BA000CF93DF93182FEB0161E00E9493152097DC
:102BB00039F460E0812FDF91CF911F910C9465155E
:102BC000CF3FD10511F461E0F5CFE12FF0E0EB59F3
:102BD000FD4DE491E33031F140F4E130B1F0E23009
:102BE000E1F0C038D1057CF7E4CFE73029F1E830D7
:102BF00059F1E430B1F780918000806280938000C9
:102C0000D0938B00C0938A0004C084B5806884BDD3
:102C1000C7BDDF91CF911F91089584B5806284BDB7
:102C2000C8BDF7CF80918000806880938000D093EA
:102C30008900C0938800EDCF8091B00080688093B8
:102C4000B000C093B300E5CF8091B0008062809364
:102C5000B000C093B400DDCF3FB7F8948091F2028A
:102C60009091F302A091F402B091F50226B5A89BD1
:102C700005C02F3F19F00196A11DB11D3FBFBA2F0E
:102C8000A92F982F8827BC01CD01620F711D811DCE
:102C9000911D42E0660F771F881F991F4A95D1F753
:102CA00008958F929F92AF92BF92CF92DF92EF9250
:102CB000FF924B015C010E942C166B017C010E946B
:102CC0002C166C197D098E099F09683E7340810599
:102CD0009105A8F321E0821A9108A108B10888EEB5
:102CE000C80E83E0D81EE11CF11C81149104A104DC
:102CF000B10429F7FF90EF90DF90CF90BF90AF9095
:102D00009F908F9008952FB7F8946091EE02709184
:102D1000EF028091F0029091F1022FBF089584E9B3
:102D20008093BC008091BC0084FDFCCF089580930B
:102D3000BB0084E88093BC008091BC0087FFFCCF7F
:102D4000089584EA8093BC008091BC0087FFFCCF8B
:102D500088E70C9497160E94A11680E48093BB002C
:102D600084E88093BC00E2E3F3E09091BC0097FF1D
:102D7000FCCF91919093BB008093BC0097E0E2332D
:102D8000F90799F78091BC0087FFFCCF0C948F1650
:102D9000CF93C82F0E94A11680E00E9497168C2F17
:102DA0000E949716CF910C948F16480F592F511DE2
:102DB0004138510514F040E850E0481BFB0177FD15
:102DC000379633E0F595E7953A95E1F7F695FE2FBE
:102DD000EE27F795E795E80FF91FEE5CFC4F67705B
:102DE000772781E090E001C0880F6A95EAF7382FD5
:102DF000213041F4415078F08191DF011197832B0C
:102E00008C93F8CF8095415030F09191DF0111976C
:102E100098239C93F8CF0895CF92DF92EF92FF9280
:102E20000F93CF93DF936C017B01C42FD22F202F00
:102E30000E94D516B7016D0F711D61507109603484
:102E400071052CF4202F4C2FC6010E94D516202F7F
:102E50004D2FB701C6010E948712C6018C0F911D2C
:102E6000202F4D2FB7010197DF91CF910F91FF9048
:102E7000EF90DF90CF900C9487122F923F924F9259
:102E80005F926F927F928F929F92AF92BF92CF92FA
:102E9000DF92EF92FF920F931F93CF93DF93CDB703
:102EA000DEB72A970FB6F894DEBF0FBECDBF9A8368
:102EB00089836A3061F5DC0152968C91B8E08B9F72
:102EC00090011124E981FA8186859785820F931FED
:102ED000978786871586148681E090E02A960FB63C
:102EE000F894DEBF0FBECDBFDF91CF911F910F9140
:102EF000FF90EF90DF90CF90BF90AF909F908F901A
:102F00007F906F905F904F903F902F9008956D301D
:102F100019F329813A813A872987D9011C96AD9006
:102F2000BC90B0E8AB16B1040CF07BC0F901C684CC
:102F3000D784F0E4CF16D1040CF073C0D9015296B7
:102F40006C90529745E09501649E200D311D11242F
:102F5000121613060CF065C0262C312C910153E09B
:102F6000220F331F5A95E1F72C0D3D1D1216130643
:102F70000CF057C05196BC91BB83E985FA85F08966
:102F8000FC83649FB00111249B01215E324E3A8381
:102F90002983712CE981FA818491F5E07F1201C0C7
:102FA00080E0460138E0532E282F30E03E832D8309
:102FB0004C8080FF4B80411004C03B818C813817CE
:102FC000E1F010E000E00615C0F4D501A00FB11F3C
:102FD000B887AF83F12CE12CE61460F4B701680DDB
:102FE000791D442D8F8198850E946912BFEFEB1ADD
:102FF000FB0AF2CF0F5F1F4FE6CF8D819E81959523
:1030000087955A94820C931C5110CECF7394E9810A
:10301000FA813196FA83E983A20CB31CF6E07F12A1
:10302000B9CFA985BA8552962C915297422F50E07C
:103030001C968D919C91B6E02B9F800D911D1124C3
:10304000E985FA85958784872389222309F444CF6B
:103050006AEF64039001659F300D112420583F4FA3
:10306000281739070CF038CFDF010190F081E02DEF
:103070000190F081E02D6AE0CD0109952DCF0F93ED
:103080001F93CF93DF938C01D0E0C0E0F801EC0FE9
:10309000FD1F6491662341F08FEC97E00E943D177D
:1030A000892B11F02196F2CFCE01DF91CF911F91A4
:1030B0000F910895682F8FEC97E00C943D170895B9
:1030C00090E080E0089580917A00806980937A0092
:1030D0008EE480937C0061E070E080E090E00E94EC
:1030E000511683B7817F826083BF80E130E020E0AA
:1030F00093B7916093BF889593B79E7F93BF90914C
:103100007A0096FDFCCF4091780050917900240F11
:10311000351F815069F780917A008F7780937A000C
:1031200084E0369527958A95E1F750E040E064EB1E
:103130007BE281E190E00E945734C90108958091BB
:103140007A00806980937A0088EC80937C006AE042
:1031500070E080E090E00E94511683B7817F82602A
:1031600083BF80E270E060E093B7916093BF889581
:1031700093B79E7F93BF90917A0096FDFCCF2091EC
:10318000780030917900620F731F815069F7809148
:103190007A008F7780937A00769567957695679514
:1031A00062527A4090E080E00E94223326EF38E2BB
:1031B0004CE151E40E942735089590917A0090697E
:1031C00090937A008E50806480937C0083B7817FD7
:1031D000826083BF20E290E080E033B7316033BF8C
:1031E000889533B73E7F33BF30917A0036FDFCCFF0
:1031F0004091780050917900840F951F215069F714
:1032000020917A002F7720937A0025E09695879574
:103210002A95E1F708958FE00E94DD18A091F90248
:10322000B091FA029C010E94AB340E94243328E53D
:1032300039E743E353E40E9427350E94A035CB01D0
:10324000089580910203882369F086E00E943C156E
:10325000892B41F06AE070E080E090E00E94511616
:103260001092020308956F927F928F929F92AF9275
:10327000BF92CF92DF92EF92FF920F93CF93DF93A3
:103280007C01C62F01E020E340E370E060E00E9493
:10329000B012570123E0A20EB11C00E02AE24AE27C
:1032A00063E070E0C5010E94B01270E060E0C70109
:1032B0000E94541367013FE2C30ED11C70E060E02E
:1032C000C6010E9454136FE270E0C7010E945413BC
:1032D0006FE270E0C6010E945413EC2FF0E0EE0F95
:1032E000FF1FE556FE4F8080918053E0E52EF12CC4
:1032F000D12CC12C60E8662E712CD0E0C0E0FE011C
:1033000033E0F595E7953A95E1F7EC0DFD1DE80DF5
:10331000F91DE491CE0187709927930102C035957C
:1033200027958A95E2F7C901F0E0E223F923EF2B14
:1033300069F0CE01880F991F8C0F9D1F01E023E0DB
:1033400043E0B7018A0D9B1D0E94B0122196CE303A
:10335000D105A9F632E0C30ED11C83E0E80EF11CC2
:103360002DE2E216F10449F6DF91CF910F91FF9023
:10337000EF90DF90CF90BF90AF909F908F907F9015
:103380006F9008950F931F93CF93809159018823D5
:1033900099F0CFEF0FEE11E061E085E00E94651536
:1033A000C8010197F1F760E085E00E946515C8014A
:1033B0000197F1F7C15081F7CF911F910F910895B7
:1033C0002F923F924F925F926F927F928F929F9235
:1033D000AF92BF92CF92DF92EF92FF920F931F9323
:1033E000CF93DF9310E000E0D0E0C0E03EE3E32EB7
:1033F000F12C40ECC42ED12CAA24A394B12C60E271
:10340000662E712C70E4272E312C4C2E86E00E9403
:103410003C1521E0892B09F020E020930203F09273
:103420003103E0923003D0922F03C0922E03B0926A
:103430002D03A0922C0382E890E090932B038093BD
:103440002A0380912A0390912B0395958795582EF6
:103450009FE1591243C0F0923103E0923003D092C1
:103460002F03C0922E03B0922D03A0922C03EEEBFB
:10347000F0E0F0932B03E0932A039FE5592E0E947E
:103480007B1382E08093E1071093DC070093DB0756
:10349000E0E3F0E0F093DE07E093DD078EE50E94C5
:1034A0005A181092DC071092DB077092DE076092C8
:1034B000DD07912C812C841438F580912003F401D0
:1034C00096E0989FE00DF11D1124E55AFE4F808192
:1034D0000E945A18EFEF8E1A9E0AEDCFF0E65F12A7
:1034E000CECFF0923103E0923003D0922F03C092FE
:1034F0002E03B0922D03A0922C0330922B03209226
:103500002A0380E2582EBBCF1093DC070093DB0721
:103510007092DE076092DD07852D0E945A180E9486
:1035200021190E94AB1686E00E943C15892B09F0F8
:1035300088CF80910203811184CF80902003F6E030
:103540008F9E40011124C401855A9E4F4C01FC01FD
:10355000EC0FFD1F50820E94C2196AE070E080E00B
:1035600090E00E9451162196005F1F4FC530D10593
:1035700009F04BCFF4011582852DDF91CF911F917A
:103580000F91FF90EF90DF90CF90BF90AF909F9002
:103590008F907F906F905F904F903F902F90089505
:1035A0002F923F924F925F926F927F928F929F9253
:1035B000AF92BF92CF92DF92EF92FF920F931F9341
:1035C000CF93DF93CDB7DEB76E970FB6F894DEBF1B
:1035D0000FBECDBF80912703882309F4A7C11092A5
:1035E000D5021092D6021092D7021092D802809083
:1035F000D5029090D602A090D702B090D802409009
:103600001403509015036090160370901703A301E4
:103610009201C501B4010E94BA346B017C0120E023
:1036200030E0A9010E94CF3518160CF0A2C1C701E5
:10363000B6010E94A0351B017093D4026093D3029F
:1036400080915401882309F498C1609121037091FD
:10365000220380912303909124030E9499356E8B5D
:103660007F8B888F998FB10190E080E00E94223398
:10367000162F7E8F8D8F092FA090D102B090D2028D
:1036800080910A0190910B01A0910C01B0910D0164
:103690008D839E83AF83B887809106019091070147
:1036A000A0910801B091090189879A87AB87BC87EF
:1036B0008091020190910301A0910401B091050154
:1036C0008D879E87AF87B88B70E060E0211431044E
:1036D00009F47BC0B1016A197B0990E080E00E9487
:1036E00022336A8B7B8B8C8B9D8B6091CF02709188
:1036F000D002C501880F991F681B790B620D731DDD
:1037000090E080E00E94223369837A838B839C83DC
:1037100029853A854B855C855F776D817E818F81B8
:1037200098859F770E94BB342D853E854F855889AB
:103730005F770E94BB346B017C01AC019B016D8102
:103740007E818F8198850E942735212F3E8D4D8D5A
:10375000502F0E9483332B013C01A70196016985FC
:103760007A858B859C850E9427352A893B894C89DF
:103770005D890E9483339B01AC01C301B2010E94A9
:10378000BB342B013C01A70196016D857E858F8599
:1037900098890E94273529813A814B815C810E945A
:1037A00083339B01AC01C301B2010E94BB3423E30C
:1037B00033E343E550E40E9483330E949935198B2B
:1037C0009E8D9A8FAD8DAB8F0C8F8E899F89680FE0
:1037D000791F77FF02C070E060E0611592E0790721
:1037E00014F06FEF71E0072E000C880B990B0E940C
:1037F00024336B017C01C0922103D0922203E0921A
:103800002303F092240323E333E343E750E4612FDF
:103810007E8D8D8D902F0E948333A70196010E948B
:10382000833329893A8D4B8D5C8D0E9483332D81A2
:103830003E814F8158850E94BB3460930A0170938A
:103840000B0180930C0190930D012AE939E949E1BC
:103850005FE3612F7E8D8D8D902F0E948333A701B2
:1038600096010E9483332A893B894C895D890E9495
:10387000833329853A854B855C850E94BB346093F0
:1038800006017093070180930801909309012AE9CA
:1038900039E949E95EE3612F7E8D8D8D902F0E947D
:1038A0008333A70196010E94833329813A814B819A
:1038B0005C810E9483332D853E854F8558890E9407
:1038C000BB346093020170930301809304019093D1
:1038D0000501B092D002A092CF023092D202209283
:1038E000D102609121037091220380912303909172
:1038F00024030E94993589E06E960FB6F894DEBFD6
:103900000FBECDBFDF91CF911F910F91FF90EF9030
:10391000DF90CF90BF90AF909F908F907F906F90EF
:103920005F904F903F902F900C94CF15809126037D
:10393000609150017091510181110EC0809112036C
:103940009091130320912503BC01222329F060915B
:103950004F01680F792F711D90E080E00E942233A3
:103960006093D5027093D6028093D7029093D802C9
:103970003ECEC701B60190585CCE20E030E040E07A
:103980005FE3C301B2010E94BB349B01AC01C501DE
:10399000B4010E94CF3518164CF4109221031092F6
:1039A000220310922303109224039BCF80E090E027
:1039B000AFE7B3E48093210390932203A093230302
:1039C000B09324038ECF4F925F926F927F928F922B
:1039D0009F92AF92BF92CF92DF92EF92FF92CF93DE
:1039E000DF938090FB029090FC02A090FD02B090CB
:1039F000FE02C0912003D0E0C501B4010E949935B8
:103A00006B017C0120E030E048E453E4C501B401DF
:103A10000E941D3393E0CC0FDD1F9A95E1F7C25F42
:103A2000DE4F87FF31C02881398150E040E02551C9
:103A3000310941095109C701B6010E94B93728EC83
:103A400030E040E050E00E945734CA01B9016B5E9B
:103A50007F4F8F4F9F4F0E942433609314037093C6
:103A600015038093160390931703DF91CF91FF9076
:103A7000EF90DF90CF90BF90AF909F908F907F900E
:103A80006F905F904F9008954A805B80712C612CFD
:103A900020E030E04CE853E4C501B4010E941D333E
:103AA00087FF1FC088809980B12CA12CA7019601A7
:103AB000285C310941095109C301B201681979092A
:103AC0008A099B090E94B93720E530E040E050E0C8
:103AD0000E945734CA01B901680D791D8A1D9B1DCA
:103AE000BACF2C813D8150E040E0241935094609C8
:103AF0005709C701B60168517140810991090E94B7
:103B0000B93720E530E040E050E00E945734CA0168
:103B1000B901640D751D861D971D9DCFFC01019097
:103B20000020E9F73197AF01481B590BBC018FEC1E
:103B300097E00C9406148F929F92AF92BF920F93CE
:103B40001F93CF93DF93CDB7DEB7A1970FB6F8944D
:103B5000DEBF0FBECDBF19A2423008F44AE08E018D
:103B60000F5D1F4F842E912CB12CA12CA501940127
:103B70000E948934E62FB901CA01EA30F4F4E05D0D
:103B8000D801EE938D01232B242B252B79F790E080
:103B900080E0109719F0CD010E948E1DA1960FB6FE
:103BA000F894DEBF0FBECDBFDF91CF911F910F9173
:103BB000BF90AF909F908F900895E95CE1CF6F9296
:103BC0007F928F929F92AF92BF92CF92DF92EF92AD
:103BD000FF920F931F93CF93DF93B090200377242E
:103BE0007394B11001C0712C80914E018150990BDA
:103BF0001092310310923003880F991F90932F0376
:103C000080932E0381E090E090932D0380932C030A
:103C10008B2D90E0880F991F90932B0380932A039C
:103C200086E00E943C1521E0892B09F020E02093DA
:103C30000203FF24F39472E0972EE6E08E2EFCE060
:103C4000CF2ED12C0E947B13C0912A03D0912B033D
:103C5000D595C795EC2E8E011127C801870D911DB2
:103C600077FC9A958B199109712C97FD06C08330CA
:103C7000910514F082E090E0782EF092E007109227
:103C8000DF079092E1071092DC071092DB07109299
:103C9000DE071092DD0784E19DE10E943F1810923B
:103CA000E007F092DF071092DC071092DB07A72CE9
:103CB000072C000CBB08C501019654E0880F991F22
:103CC0005A95E1F79093DE078093DD0782E19DE14D
:103CD0000E943F186C2E671890E080E098012A1926
:103CE0003B09590120914E018C010F5F1F4F621655
:103CF000D0F4D092DC07C092DB07980144E0220F99
:103D0000331F4A95E1F73093DE072093DD078A0DD4
:103D10009B1D889E9001899E300D1124C901855AF2
:103D20009E4F0E948E1DC801639403301105D1F689
:103D30000E9421190E94AB1686E00E943C15892B37
:103D4000B9F480910203811113C00E94C219E0925C
:103D50002003DF91CF911F910F91FF90EF90DF90A3
:103D6000CF90BF90AF909F908F907F906F9008956D
:103D7000BC2E68CFCF92DF92EF92FF92CF93DF936A
:103D800097FF19C06B017C018DE20E945A18EC016B
:103D900066277727CB016C197D098E099F094AE0B8
:103DA0000E949B1D8C0F9D1FDF91CF91FF90EF9084
:103DB000DF90CF9008954AE0DF91CF91FF90EF9090
:103DC000DF90CF900C949B1D4F925F926F927F92E9
:103DD0008F929F92AF92BF92CF92DF92EF92FF921B
:103DE0000F931F93CF936B017C01742EAC019B0149
:103DF0000E942C36882399F08FEB92E0CF911F918F
:103E00000F91FF90EF90DF90CF90BF90AF909F9079
:103E10008F907F906F905F904F900C948E1D460115
:103E20005701E894B7F82FEF3FEF4FE75FE7C50181
:103E3000B4010E942C3681110DC02FEF3FEF4FE7E8
:103E40005FE7C501B4010E941D3318161CF483EC12
:103E500092E0D4CF2FEF3FEF4FE75FE4C701B60109
:103E60000E94CF3518161CF487EC92E0C7CF2FEFD5
:103E70003FEF4FE75FECC701B6010E941D3387FD9E
:103E8000F3CF20E030E0A901C701B6010E941D3345
:103E900010E000E087FF08C08DE20E945A188C01F4
:103EA000F7FAF094F7F8F094C0E060E070E080E09A
:103EB0009FE37C1641F020E030E040E251E40E94B4
:103EC0002735CF5FF6CFA70196010E94BB342B01A7
:103ED0003C010E94A0354B015C014AE00E949B1D01
:103EE0007C01E00EF11ECC23B1F1C501B4010E94AA
:103EF00022339B01AC01C301B2010E94BA344B01D1
:103F00005C018EE20E945A18E80EF91EC15018F1A9
:103F100020E030E040E251E4C501B4010E94833367
:103F20002B013C010E94A0354B01B12CA12C4AE091
:103F3000C501B4010E949B1DE80EF91EC501B40124
:103F40000E9422339B01AC01C301B2010E94BA342A
:103F50004B015C01DBCFC701CF911F910F91FF9007
:103F6000EF90DF90CF90BF90AF909F908F907F9019
:103F70006F905F904F9008954F925F926F927F92F3
:103F80008F929F92AF92BF92CF92DF92EF92FF9269
:103F90000F931F93CF93DF93C82F81E0DC2FD82797
:103FA000D093E007C093DF078093E1070C2F2EE04A
:103FB00046E661E370E081E090E00E940C172091FA
:103FC000280330912903253F81E03807B8F4A4E69F
:103FD000B0E00E94AB3424EF31E040E050E00E94BA
:103FE0005734BA01A9014E5F5F4F6F4F7F4F2EE0EC
:103FF00061E370E081E090E00E94B0128090D50211
:104000009090D602A090D702B090D802C501B4011A
:104010000E9499359B01AC01A4E6B0E00E94763481
:1040200024EF31E040E050E00E94573429013A018A
:1040300082E0480E511C611C711CC20102970C2FBA
:104040002DE043E062E370E00E94B012620183E081
:10405000C81AD10824E045E06CE370E0C6010E9474
:10406000B01281E0481A510831E3E32EF12C4D2FB4
:10407000B701C2010E9469128FEFE81AF80A8DE3B6
:10408000E816F104A1F7ED2E04E025E047E552E142
:104090006BE370E0C6010E94D2120C2F2EE047E1C4
:1040A00061E370E088E690E00E940C1760912103C4
:1040B0007091220380912303909124030E949935EB
:1040C0009B01AC012F5F310941095109A7E1B0E023
:1040D0000E947634CC24C394DD24DA94ED2CFD2C9C
:1040E000A70196010E945734422F2EE061E370E051
:1040F00088E690E00E94B012C093E007D093DF07FB
:1041000082E090E09093DC078093DB0707E310E008
:104110001093DE070093DD0740E0C501B4010E9463
:10412000E41E88EF0E945A1885E592E10E943F182C
:1041300089E690E09093DC078093DB071093DE071D
:104140000093DD0760912103709122038091230386
:10415000909124030E9499359B01AC012F5F310996
:1041600041095109A4E6B0E00E947634A701960106
:104170000E945734CA01B9010E94BA1E83E592E138
:104180000E943F18D093E007C093DF07DF91CF91E3
:104190001F910F91FF90EF90DF90CF90BF90AF9065
:1041A0009F908F907F906F905F904F9008950E94A6
:1041B000F7371F93CF93DF93EC01162F0E94413402
:1041C000181739F0612FCE01DF91CF911F910C9418
:1041D0004934DF91CF911F910895AF92BF92CF9252
:1041E000DF92EF92FF920F931F93CF93DF93609133
:1041F000530182E090E00E94D9206091520183E057
:1042000090E00E94D9206091510184E090E00E94EA
:10421000D9206091500185E090E00E94D920609102
:104220004F0186E090E00E94D9206091570187E01D
:1042300090E00E94D9206091560188E090E00E94B1
:10424000D9206091550189E090E00E94D9206091C9
:104250008B018AE090E00E94D920609154018BE0AC
:1042600090E00E94D920609159018CE090E00E947A
:10427000D920609120038DE090E00E94D9206091C8
:104280004E018EE090E00E94D92060915A018FE0AB
:1042900090E00E94D9206091FF0280E190E00E94AE
:1042A000D92060911D0381E190E00E94D9206091A6
:1042B000010382E190E00E94D9206091000383E134
:1042C00090E00E94D92084E1E82EF12C10E006E075
:1042D00080914E011817B8F5109F60011124D0E0AD
:1042E000C0E0FE01EC0DFD1DE55AFE4F6081C701E7
:1042F0008C0F9D1F0E94D9202196C630D10589F7C9
:10430000670186E0C80ED11C88E0189FE0011124E7
:10431000C25FDE4F8EE0E80EF11C69812296C60175
:104320000E94D920560182E0A80EB11CFE013297EE
:104330006081C60101960E94D9206501AE14BF04B8
:1043400061F71F5FC5CFDF91CF911F910F91FF9054
:10435000EF90DF90CF90BF90AF9008958F929F9293
:10436000AF92BF92CF92DF92EF92FF92CF936FEF17
:1043700070E089E00E94CF158BEA94E00197F1F795
:104380008EE00E94DD187C018AE00E943C1590912D
:10439000CE02981729F091E0909318038093CE02F3
:1043A000809101019FEF980F90930101811106C048
:1043B0000E940B1990931F0380931E0360912103A9
:1043C0007091220380912303909124030E949935D8
:1043D00089E00E94CF158090FB029090FC02A09093
:1043E000FD02B090FE02B70190E080E00E9422330F
:1043F000A50194010E94BA342DEC3CEC4CE45DE341
:104400000E948333A50194010E94BB346093FB0298
:104410007093FC028093FD029093FE020E94E31CC5
:10442000609128037091290390E080E00E9422337C
:104430006B017C012091D5023091D6024091D702C8
:104440005091D8020E941D338111BAC020911403EB
:10445000309115034091160350911703C701B6011F
:104460000E94BA346B017C0120E030E0A9010E9477
:10447000CF3518160CF09AC020E030E040EA50E446
:10448000C701B6010E94CF3518160CF499C060918F
:1044900012037091130390E080E00E942233209178
:1044A00014033091150340911603509117030E9495
:1044B000BA346B017C0120E030E0A9010E94CF35C5
:1044C00018160CF08CC0C701B6010E94A03570937D
:1044D000D4026093D3026530710508F084C08091E6
:1044E0008C01811105C08091580181110E94C2196F
:1044F00081E080938C011092580180912803909163
:104500002903853F21E0920710F0109200012091CD
:104510000001211141C0843F9140F0F56FEF70E040
:1045200089E00E94CF150E94C219C1E0C09300012A
:104530000E94DF1D0E94ED20C09318038EE00E94B0
:10454000DD18BC0190E080E00E9422336093FB0202
:104550007093FC028093FD029093FE0210920C0374
:1045600080911203909113032CE231E030933103D8
:104570002093300320E233E030932F0320932E0367
:104580002AE030E030932D0320932C03880F991FED
:1045900090932B0380932A03CF91FF90EF90DF90AD
:1045A000CF90BF90AF909F908F90089520E030E023
:1045B00040EA50ECC701B6010E941D3387FF67CF68
:1045C0006091140370911503809116039091170365
:1045D0000E94A035709329036093280358CFC70128
:1045E000B601905872CF10928C0187CF0C94413451
:1045F0002F923F924F925F926F927F928F929F92F3
:10460000AF92BF92CF92DF92EF92FF920F931F93E0
:10461000CF93DF938C0186E08093E10781E0809364
:10462000E0071092DF076091EB027091EC02072E19
:10463000000C880B990B0E9424332B013C0145EEA2
:10464000C42E42E0D42E7601C2E0D0E05AE0A52E7E
:10465000B12CBE010D2E000C880B990B0E94243347
:104660009B01AC0160E070E080E291E40E94D435EF
:104670009B01AC01C301B2010E9427350E9499350C
:10468000CB01B5010E94C937F701819391937F0156
:104690002197F8F61093EC020093EB02C9EDD2E0FB
:1046A00094E0E92EF12C22E0822E912C3AE0232E88
:1046B000312CB401092C000C880B990B0E94243377
:1046C0009B01AC0160E070E080E291E40E94D4358F
:1046D0002B013C016091EB027091EC02072E000C63
:1046E000880B990B0E942433A30192010E94273565
:1046F0000E949935CB01B1010E94C937F601208192
:104700003181821B930BF2E3F89FB001F99F700D8A
:104710001124072E000C880B990B0E94243328814A
:1047200039814A815B810E94BB342B013C0120E02E
:1047300030E0A9010E941D3381117CC0488259825A
:104740006A827B8201E022E346E270E060E0C7011A
:1047500004970E94B0128EECA82EBB24BA940FEFDF
:104760001FEF288139814A815B8160E070E080E839
:1047700090E40E94BA342B013C01B5010B2C000CD3
:10478000880B990B0E9424339B01AC01C301B20139
:104790000E94BB340E949935F092DC07E092DB075F
:1047A0007093DE076093DD07F60160817181600F11
:1047B000711F072E000C880B990B0E94BA1E0F5F09
:1047C0001F4FF2E3AF0EB11C0230110551F62496D3
:1047D00021E0821A910882E0C80ED11CECE2EE0EB4
:1047E000F11CF8E8EF16F10409F063CF00E022E0D5
:1047F00040E870E060E090E080E00E94B01220E1CC
:1048000040E860E370E090E080E00E94B012DF9149
:10481000CF911F910F91FF90EF90DF90CF90BF90BD
:10482000AF909F908F907F906F905F904F903F9050
:104830002F900895C301B20190582DEC3CEC4CE44C
:104840005FE30E948333A30192010E94BB3468831B
:1048500079838A839B8376CF4F925F926F927F9208
:104860008F929F92AF92BF92CF92DF92EF92FF9280
:104870000F931F93CF93DF93CDB7DEB72B970FB670
:10488000F894DEBF0FBECDBF90915A01E82FF0E043
:104890009F01220F331F911126C0F901E95CFD4FE2
:1048A00040815181EE24E39400E124E260E370E072
:1048B00080E390E00E94D2122B960FB6F894DEBFF0
:1048C0000FBECDBFDF91CF911F910F91FF90EF9061
:1048D000DF90CF90BF90AF909F908F907F906F9020
:1048E0005F904F900895923009F079C0E356F34EEF
:1048F0004490F901E751FE4FA080B180F12CE12CEA
:1049000004E310E393E0592E27E0622EE414A0F6AE
:10491000F501EE0DFF1D449180E1840F833008F412
:104920005CC081EF7816D1F082EF7816C1F1403F7C
:1049300090F4193710F0085F10E088E0489FA0015C
:104940001124435E5A4E602F70E028E0812F90E0E2
:104950000E948E13185F80EF782E1DC04E39D8F458
:104960001D3710F0085F10E0C02ED12C812E912C45
:10497000459DA00111244D5B5C4E23E0B601C401AE
:104980000E948E1321E042E453E1B601C401039674
:104990000E948E131C5F8FEFE81AF80AB7CF4132DE
:1049A000D0F7193710F0085F10E0C02ED12C812EFF
:1049B000912C469DA0011124455A5D4E27E0B60179
:1049C000C4010E948E1321E042E453E1B601C40108
:1049D00007960E948E13185FDECF742EDCCF80E323
:1049E00090E09093DC078093DB0784E390E0909362
:1049F000DE078093DD0781E08093E107F901EC5346
:104A0000F34E65917491CE0101960E941633CE014A
:104A100001960E948E1D50CFCF93C82F86E00E9432
:104A20003C1521E0892B09F020E0209302030E942D
:104A30007B1380912A0390912B03959587950E9473
:104A4000F8228C2F0E942C240E94AB160E94211960
:104A500086E00E943C15892B51F780910203811159
:104A6000E6CF0E94C2198091EB029091EC02CF91A7
:104A70000895109231031092300328E037E030930C
:104A80002F0320932E0324E630E030932D03209350
:104A90002C03880F991F90932B0380932A0387E0A0
:104AA0000E940C259C01220F331F30933103209369
:104AB0003003865A9F4F880F991F90932F0380933E
:104AC0002E038AE090E090932D0380932C03309383
:104AD0002B0320932A0387E00E940C259C01220FC0
:104AE000331F30933103209330030996880F991FA9
:104AF00090932F0380932E0381E090E090932D03F9
:104B000080932C0330932B0320932A0387E00C948B
:104B10000C252F923F924F925F926F927F928F92CD
:104B20009F92AF92BF92CF92DF92EF92FF920F933C
:104B30001F93CF93DF93182FE0910303F0E0EF561C
:104B4000FE4F80818150990B1092310310923003F7
:104B5000880F991F90932F0380932E0381E090E09C
:104B600090932D0380932C03812F90E0880F991F41
:104B700090932B0380932A0386E00E943C1521E04A
:104B8000892B09F020E0209302031092E00781E0D6
:104B90008093DF0738E3632EE0902A03F0902B0325
:104BA000F594E794AE2C6701DD249601211B3109B1
:104BB000629EC001639E900D1124C80FD91F2097DB
:104BC00009F1662777276C1B7D0B072E000C880BDD
:104BD000990B0E9424332AE939E949E15FE30E94F5
:104BE00083331B012C01BE01DD0F880B990B0E9442
:104BF00024339B01AC01C201B1010E94BB340E946D
:104C00009935EB010E947B138601025011094E0178
:104C100085E0B82E93E0792E7A0CC0900303D12C56
:104C200017FD20C0F601EF56FE4F80818017110658
:104C3000C9F0C4F0E1E9F1E070E060E0CF01815932
:104C400091408C159D0534F48191680F711DF6CF4C
:104C50001E2DA2CF872D8B19680FC401885491098E
:104C60000E943319BA940F5F1F4F88E3880E911C7E
:104C7000B110D3CFE1E9F1E090E080E09F0121594C
:104C800031402C153D0524F42191820F911DF6CF62
:104C90008E0D0E942C240E94AB160E94211986E0E2
:104CA0000E943C15892BA1F6809102038111D0CF7F
:104CB0000E94C2198A2DDF91CF911F910F91FF9011
:104CC000EF90DF90CF90BF90AF909F908F907F90AC
:104CD0006F905F904F903F902F9008951F920F928A
:104CE0000FB60F9211242F933F934F935F936F93BF
:104CF0007F938F939F93AF93BF93EF93FF9382E341
:104D000097E00E948414FF91EF91BF91AF919F9122
:104D10008F917F916F915F914F913F912F910F9064
:104D20000FBE0F901F9018951F920F920FB60F9203
:104D300011242F938F939F93EF93FF93E09142075A
:104D4000F09143078081E0914807F091490782FD87
:104D50001BC0908180914B078F5F8F7320914C0710
:104D6000821741F0E0914B07F0E0EE5CF84F958F31
:104D700080934B07FF91EF919F918F912F910F900F
:104D80000FBE0F901F9018958081F4CF1F920F9245
:104D90000FB60F9211242F933F938F939F93AF934E
:104DA000BF938091EE029091EF02A091F002B0913A
:104DB000F1023091ED0223E0230F2D3758F50196D3
:104DC000A11DB11D2093ED028093EE029093EF029E
:104DD000A093F002B093F1028091F2029091F3025D
:104DE000A091F402B091F5020196A11DB11D80932E
:104DF000F2029093F302A093F402B093F502BF91F4
:104E0000AF919F918F913F912F910F900FBE0F9077
:104E10001F90189526E8230F0296A11DB11DD2CF31
:104E20001F920F920FB60F9211242F933F934F931F
:104E30005F936F937F938F939F93EF93FF9383B1D0
:104E4000817029B19091F802981709F49DC030E063
:104E5000220F232F221F330B922F8093F8024091B1
:104E6000F702241709F490C02093F70220912C0335
:104E700030912D03981719F0319521953109409102
:104E80002A0350912B036091300370913103240F5A
:104E9000351F261737070CF48BC020912C03309157
:104EA0002D03981719F031952195310940912A0366
:104EB00050912B0360912E0370912F03240F351F07
:104EC000621773070CF46FC040912C0350912D03AF
:104ED000981719F051954195510920912A03309165
:104EE0002B03240F351F30932B0320932A0341E01B
:104EF000981340E02091F602421709F440C0209137
:104F00002C0330912D03981719F031952195310913
:104F100060912A0370912B03E0913003F0913103EB
:104F2000260F371F2E173F070CF44CC020912C037F
:104F300030912D03981719F0319521953109609121
:104F40002A0370912B03E0912E03F0912F03260F7B
:104F5000371FE217F3078CF120912C0330912D03BA
:104F6000981719F031952195310980912A03909174
:104F70002B03820F931F90932B0380932A0340935C
:104F8000F60281E080931803FF91EF919F918F913A
:104F90007F916F915F914F913F912F910F900FBE35
:104FA0000F901F90189520912E0330912F039BCFC7
:104FB000209130033091310396CF80912E03909150
:104FC0002F03D9CF8091300390913103D4CF18951E
:104FD000E2E3F7E01382128288EE93E0A0E0B0E013
:104FE00084839583A683B78385EA92E09183808347
:104FF00085EC90E09587848784EC90E0978786879E
:1050000080EC90E0918B808B81EC90E0938B828B95
:1050100082EC90E0958B848B86EC90E0978B868B6E
:10502000118E128E138E148EEFECF7E01382128223
:105030001682178280E1808715821482128687EBA0
:1050400092E091838083158614861786168681E008
:10505000808B118A828B138A0895CF93DF93CDB70B
:10506000DEB72C970FB6F894DEBF0FBECDBF789495
:1050700084B5826084BD84B5816084BD85B582605D
:1050800085BD85B5816085BD80916E00816080930E
:105090006E00109281008091810082608093810077
:1050A0008091810081608093810080918000816087
:1050B000809380008091B10084608093B1008091E2
:1050C000B00081608093B00080917A00846080930A
:1050D0007A0080917A00826080937A0080917A00D1
:1050E000816080937A0080917A00806880937A0052
:1050F0001092C1001092B90088E48093B8000E9419
:10510000A11680E00E94971609E712E2F801849147
:105110000E9497160F5F1F4FF2E208391F07B1F781
:105120000E948F1611E01093B8000E94AB1681E226
:105130008093D70760E08EE00E94931560E08FE0D7
:105140000E949315609121037091220380912303A3
:10515000909124030E94A035062F85E00E949315AC
:10516000602F89E00E94931562E087E00E9493150A
:1051700062E088E00E94931562E086E00E94931549
:1051800062E08AE00E9493156FEF70E089E00E9470
:10519000CF1560E085E00E94651580917A008760F8
:1051A00080937A0080917A00886080937A00789466
:1051B00010936B00109368001BBB90E080E00E948E
:1051C000F622182F81E090E00E94F622912F8F3175
:1051D000984009F0C9C082E090E00E94F622182FA2
:1051E00083E090E00E94F622912F909353018093E8
:1051F000520184E090E00E94F622182F85E090E0B2
:105200000E94F622912F909351018093500186E0E5
:1052100090E00E94F62280934F0187E090E00E9488
:10522000F6228093570188E090E00E94F622809356
:10523000560189E090E00E94F622809355018AE0B1
:1052400090E00E94F62280938B018BE090E00E9418
:10525000F62291E0811101C090E0909354018CE01E
:1052600090E00E94F62291E0811101C090E09093BD
:1052700059018DE090E00E94F622809320038EE099
:1052800090E00E94F622282E80934E018FE090E05D
:105290000E94F62280935A0180E190E00E94F6225B
:1052A00091E0811101C090E09093FF0281E190E0D4
:1052B0000E94F62280931D0382E190E00E94F62274
:1052C000182F83E190E00E94F622912F9093010322
:1052D000809300034EE0842E41E0942E5BE5A52EE2
:1052E00051E0B52E64E1E62EF12C312C231409F4A3
:1052F00047C010E000E0C701800F911F0E94F62216
:10530000F501E00FF11F80830F5F1F4F063011057D
:1053100091F7670136E0C30ED11C4EE0E40EF11C9C
:105320003401C6010E94F622082F10E0102F00273A
:10533000D3010D931C932601B2E04B0E511CC60104
:1053400001960E94F622082BF301019311933F016D
:1053500062014E145F0429F73394F8E08F0E911C1C
:1053600026E0A20EB11CC2CF68E090E080E00E946F
:10537000D9206FE181E090E00E94D9200E94ED20C9
:105380001091FF0280EC111101C088EC0E94C81638
:1053900080EA111101C081EA0E94C8161092190317
:1053A00080E280931A0380E480931B0380E680935D
:1053B0001C038091000390910103892B19F10E9435
:1053C0007B1367E088E290E00E94331987E00E9437
:1053D0002C240E94AB1668EE73E080E090E00E94FF
:1053E00051160E94C2190E94C2190E94C21990E06F
:1053F00080E00E943925209100033091010382173B
:105400009307E9F60E9463189093FA028093F902D9
:105410000E940B1990931F0380931E030091520169
:105420001091530110931303009312038EE00E9416
:10543000DD18BC0190E080E00E9422336093FB0203
:105440007093FC028093FD029093FE020E949F18CD
:105450000E94E31C20E030E040EA51E46091140334
:105460007091150380911603909117030E94BB342D
:105470006B017C01B80190E080E00E9422339B0127
:10548000AC01C701B6010E941D3387FF05C070E063
:1054900060E089E00E94CF1583B181708093F802AB
:1054A00089B190E0880F892F881F990B8093F702AC
:1054B0002091F8029091F70281E0291380E0809317
:1054C000F6028CE291E0909331038093300380E206
:1054D00093E090932F0380932E038AE090E09093C3
:1054E0002D0380932C03000F111F10932B030093A7
:1054F0002A030E94831660930E0370930F03809318
:105500001003909311030E94C2190E94C2192090A7
:105510002A0330902B03A101559547955A87498757
:10552000509313034093120386E00E943C15482ECB
:1055300081118DC080910C03882309F488C00E94DA
:10554000C2190E9483166B017C01C0920803D0929D
:105550000903E0920A03F0920B0386E00E943C15D7
:10556000892B59F40E9483166C197D098E099F09B5
:10557000643F71408105910580F30E9483166C1988
:105580007D098E099F09643F71408105910508F4EA
:105590005AC46FEF70E089E00E94CF150E94C219D3
:1055A000512CAAE06A2E712C10920303852D0E94C3
:1055B0008925582EB9E0B81738F1E82FF0E0ED5101
:1055C000F54D0C94DD37ED2A9A2D142E802E8E2E5B
:1055D000BF2ECD2EEE2EF92E032FF6E0FF2E81E00A
:1055E00080930303852D0E948925582EE2E08E17B3
:1055F00009F439C2E81708F4E9C0882309F413C193
:10560000F1E08F1709F412C10E94ED2081E0809330
:105610001803E985FA85F0931303E09312038CE2F3
:1056200091E0909331038093300380E293E0909374
:105630002F0380932E038AE090E090932D038093B4
:105640002C03C1018E7F90932B0380932A034092F9
:105650000C0380912503882309F110915501112332
:10566000E9F00E948316C0900403D0900503E090F7
:105670000603F09007036C197D098E099F0928EE37
:1056800033E040E050E00E948934211738F0109256
:1056900025030E94C21981E080935801809118036C
:1056A0008823F1F180912603882351F120E030E036
:1056B00040EA51E460911403709115038091160340
:1056C000909117030E94BB346B017C01609112031F
:1056D0007091130390E080E00E9422339B01AC01A3
:1056E000C701B6010E941D3387FF05C070E060E06E
:1056F00089E00E94CF150E94C21981E08093580171
:105700001092180310922603109227030E9483160A
:1057100060930E0370930F03809310039093110313
:105720000E94831600910E0310910F032091100325
:1057300030911103601B710B820B930B20E63AEE44
:1057400040E050E00E948934122F20930D03809195
:10575000260381110BC080915701882339F0281747
:1057600028F081E0809326030E94C21980912703CC
:1057700081110BC080915601882339F0181728F049
:1057800081E0809327030E94C2190E94AE210E94EB
:10579000D01A0E9483168091D807F62FF81B8F2FFE
:1057A0009091D907992309F464C3F093DA07109212
:1057B000D90780E090E0892B09F4A9CE0E947014EB
:1057C000882309F4A4CE0E940000A1CE23E0821712
:1057D00009F44CC134E0831317CF80914E01883017
:1057E00008F0FDCE91E0980F90934E018093200336
:1057F0000E94E019E0912003B8E0EB9FF001112432
:10580000E25FFE4F28ED30E03183208344E351E036
:105810005383428386E891E095838483AEE1B0E0D0
:10582000B783A683DCCE0E94DF1DD9CE8E010F5F29
:105830001F4F612C712C4301639478EEC72E73E0E7
:10584000D72EAA24A394B12CEE24E394E091200354
:1058500044E0E49FF0011124C3010197E80FF91F10
:10586000EE0FFF1FE25FFE4F808191819093130343
:1058700080931203A8ECB0E0B0933103A0933003FF
:10588000D0922F03C0922E03B0922D03A0922C032E
:10589000880F991F90932B0380932A03E09258015D
:1058A00086E00E943C1521E0892B09F020E020933E
:1058B00002030E947B13B2E0B093E1070E94AE2185
:1058C0000E94D01A1092DC071092DB071092DE07BC
:1058D0001092DD078EEB92E20E943F18C401B301E3
:1058E0000E94BA1E8BEC92E00E948E1D80918C016A
:1058F0001092DC071092DB07882309F48CC0E0E1EA
:10590000F0E0F093DE07E093DD0781EB92E20E9486
:105910003F181092DC071092DB0720E230E0309352
:10592000DE072093DD078AEA92E20E943F18609129
:105930002A0370912B0375956795072E000C880B31
:10594000990B0E94BA1E0E9421190E94AB1686E094
:105950000E943C15892B09F0ACCF80910203811184
:10596000A8CF80912A0390912B0395958795D80114
:105970008D939D938D010E94C2196AE070E080E0D2
:1059800090E00E945116BFEF6B1A7B0A8B0A9B0AAC
:10599000E4E06E1671048104910409F057CF6FEFB3
:1059A00070E089E00E94CF158BEA94E00197F1F74F
:1059B0000E949F180E94A0353B0178876F83A980C1
:1059C000BA800B811C81C5014E968017910708F0A3
:1059D00006CECD80DE80C8014E968C159D0508F060
:1059E000FECD87E08093030380E00E948925882311
:1059F00009F4F5CDE091200328E0E29FF0011124A5
:105A0000E25FFE4FB182A08213830283D582C482FB
:105A100077826682E4CD40E150E05093DE07409308
:105A2000DD0784EA92E20E943F186091FB027091C8
:105A3000FC028091FD029091FE020E94A03590E050
:105A400080E04AE00E949B1D1092DC071092DB0769
:105A500080E290E09093DE078093DD0788E992E290
:105A60000E943F1870CF0E94E019B9CD87E0809363
:105A7000030380914E01813009F4B1CD80E00E9492
:105A80008925882309F4ABCD8091200390914E01A4
:105A9000492F4150550B9A018417150639F481504E
:105AA00080932003915090934E0199CDE82FF0E020
:105AB000E217F307BCF78F9D8001112450E040E00E
:105AC0006F016FEFC61AD60AB801640F751F655AC9
:105AD0007E4FDB011696EC901697EC924F5F5F4F6E
:105AE0004630510589F7D60113E0AA0FBB1F1A955E
:105AF000E1F7A25FBE4F4D915C91119703E0EE0F6D
:105B0000FF1F0A95E1F7E25FFE4F51834083129633
:105B10004D915C9113975383428314964D915C9100
:105B200015975583448316964D915C915783468310
:105B30008F5FBCCF82E08093030310E0E8E2CE2EBB
:105B4000D12CFCE2AF2EBB24B394A0E28A2EA3E0BA
:105B50009A2EB4E1EB2EF12C812F0E948925182F6B
:105B6000813029F130F0823009F441C00E94ED20EB
:105B70001BCD8091520190915301B0923103A092BC
:105B8000300390922F0380922E0370922D03609227
:105B90002C03880F991F90932B0380932A0381E194
:105BA0000E940C259093530180935201D5CF809190
:105BB000500190915101D0923103C0923003E0E93D
:105BC000F1E0F0932F03E0932E0370922D03609287
:105BD0002C03880F991F90932B0380932A0382E153
:105BE0000E940C259093510180935001B5CF809174
:105BF0004F0190E0F0923103E092300328EC30E066
:105C000030932F0320932E0370922D0360922C0368
:105C1000880F991F90932B0380932A0383E10E949E
:105C20000C2580934F0198CF83E080930303F12CE0
:105C300001E010E08F2D0E948925F82E31E08317B6
:105C400009F43FC0831700F142E084138FCF8091A5
:105C5000550190E0109231031092300348E651E074
:105C600050932F0340932E0370922D0360922C03C8
:105C7000880F991F90932B0380932A0387E10E943A
:105C80000C2580935501D6CF8091570190E010925A
:105C9000310310923003ACE3B0E0B0932F03A09334
:105CA0002E0310932D0300932C03880F991F9093BC
:105CB0002B0380932A0385E10E940C2580935701D2
:105CC000B9CF8091560190E01092310310923003C9
:105CD000E8E7F0E0F0932F03E0932E0325E030E0B7
:105CE00030932D0320932C03880F991F90932B033F
:105CF00080932A0386E10E940C25809356019ACF57
:105D000084E080930303809154010E94892591E0EF
:105D1000811101C090E09093540146CC10E0B9E0AD
:105D2000EB2E05E0D02EE0920303812F0E948925FF
:105D3000182F882321F08130E1F000E009C0D092D3
:105D4000030380918B010E94892580938B0101E0E0
:105D5000F090FF0280ECF11001C088EC0E94C816A0
:105D600080EAF11001C081EA0E94C8160111DBCF60
:105D7000FDCE8091FF0281278093FF02E8CF86E06D
:105D800080930303809159010E94892591E081113C
:105D900001C090E09093590107CC80911D0390E0E1
:105DA0001092310310923003A4EFB1E0B0932F03AF
:105DB000A0932E0321E030E030932D0320932C0399
:105DC000880F991F90932B0380932A0386E00E94EB
:105DD0000C2580931D030E94C219E6CB809100031D
:105DE000909101030E943925909301038093000351
:105DF000F2CF88E08093030380915A010E948925A5
:105E000080935A01D1CB0E947B13EE24E39400E3EC
:105E100020E345EC52E270E060E088E290E00E940E
:105E2000D2120E94AB1664E670E080E090E00E941F
:105E3000511686E00E943C15892BD9F78091020308
:105E40008111F7CFC8CF8091250391E089278093F6
:105E50002503882351F00E948316609304037093F6
:105E60000503809306039093070381E08093180352
:105E7000EECB9091D707F91748F48F5F891708F098
:105E800098CC81E083BF889513BE93CC81E080934A
:105E9000D9076093D8078091D3079091D4070196D2
:105EA0009093D4078093D307A0902803B090290340
:105EB00025EFA21621E0B20608F029C18091270340
:105EC000882309F402C16FEF70E089E00E94CF15CA
:105ED0000E947B1309E113E07DE1272E73E0372E4A
:105EE000E2E08E2E912CA12CB12CF3E04F2E512C00
:105EF000612C712C0E94BE32A50194010E9457347E
:105F0000AB01BC014150510961097109D8018C9163
:105F1000682F640F613808F04EC06C9319860E9498
:105F2000BE32F985CF2ED12CF12CE12CA3019201A8
:105F30000E9457346D5F7F4F8F4F9F4FA70196018F
:105F40002617370748075907D4F5D801EC90F12CEC
:105F50000E94BE3224E130E040E050E00E9457341D
:105F60006A507109810991096E0D7F1D60347105B8
:105F700030F421E040E890E080E00E94D516F8017E
:105F8000E080F12C0E94BE3224E130E040E050E09D
:105F90000E945734DC01CB010A97A109B1098E0D8B
:105FA0009F1D21E040E470E060E00E948712F985C7
:105FB000FF5FF987B4CF6058F8016083AFCF0F5F00
:105FC0001F4F2016310609F095CF0E9483160E94BC
:105FD000223320E030E04AE755E40E9427350E9452
:105FE00024366B017C0120E030E040E853E40E945D
:105FF000833320E030E040E853E40E94BB342B01BF
:106000003C0110E000E0B801012E000C880B990B58
:106010000E942433A30192010E941D3387FF25C0F3
:106020000E94BE324B015C010E94BE3269877A87B2
:106030008B879C87C501B40120E430E040E050E04C
:106040000E9457344B0169857A858B859C8520E8B1
:1060500030E040E050E00E945734CB0141E0B40111
:106060000E9469120F5F1F4FCECF80915901882384
:1060700049F10E94BE3220E130E040E050E00E9451
:10608000573468507109810991090E9424334B01EA
:106090005C0120E030E040E852E4C701B6010E9414
:1060A000833320E030E040E852E40E94BB349B019F
:1060B000AC01C501B4010E94BB340E94993585E052
:1060C0000E94CF150E94AB1674CB8091260312E07C
:1060D00081111EC08091250313E0811119C08091A8
:1060E0008C0114E0811114C020E030E044E353E45B
:1060F00060912103709122038091230390912403E6
:106100000E941D3315E087FD03C016E001C010E0BA
:1061100080918B01882309F481C10E947B1301E0E7
:1061200020E440E870E060E090E080E00E94B0127F
:1061300081E08093E1078093E0071092DF07E12C74
:1061400000E120E143E554E270E060E090E080E0AF
:106150000E94D21283E190E09093DC078093DB07EA
:1061600084E090E09093DE078093DD078091200328
:1061700026E0829FC0011124855A9E4F0E948E1DE9
:1061800085E390E09093DC078093DB0781E090E06B
:106190009093DE078093DD0782E08093E107C12EB4
:1061A000D12C80915A01CC0CDD1C8111EAC0F60182
:1061B000ED56FD4F408151810EE02CE161E070E031
:1061C00080E590E00E94D212F601EB57FD4F40812E
:1061D0005181E12C0EE02EE061E070E081E790E07B
:1061E0000E94D21281E08093E1070E949F1820E074
:1061F00030E040EA52E40E94CF3518160CF4E0C0BB
:10620000E12C0EE02EE041E154E262E170E082E038
:1062100090E00E94D21260911E0370911F0390E0E3
:1062200080E00E94223320E030E048EC52E40E94FB
:1062300027356B017C0160911D0370E090E080E0E8
:106240000E9424339B01AC01C701B6010E941D339B
:1062500087FDCAC0E12C0EE02EE045EF53E262E27A
:1062600070E082E090E00E94D21203E110E010930F
:10627000DC070093DB0740E150E05093DE074093DA
:10628000DD070E949F1841E00E94E41E88EF0E94F3
:106290005A1883EF93E20E943F181093DC07009393
:1062A000DB0788E190E09093DE078093DD070E9492
:1062B0006318BC0190E080E00E94223320E030E0CF
:1062C0004AE754E40E94273542E00E94E41E81EF31
:1062D00093E20E943F181093DC070093DB0780E2F3
:1062E00090E09093DE078093DD0760911E0370912C
:1062F0001F0390E080E00E94223320E030E04AE774
:1063000054E40E94273541E00E94E41E8FEE93E2A0
:106310000E943F181093DC070093DB0788E290E0AF
:106320009093DE078093DD0789EE93E20E943F1889
:1063300089E390E09093DC078093DB0782E190E0B3
:106340009093DE078093DD0784E08093E1076091FE
:10635000280370912903653F91E0790708F458C03C
:1063600085EE93E20E943F1800E020E248E460E1FD
:1063700070E087E390E00E940C1780E00E94BC1F51
:10638000A1CE83E494E21330C1F058F48FE494E298
:10639000113099F089E494E2123079F08DE294E2C0
:1063A0000CC088E394E2153041F08DE394E215309F
:1063B00020F083E394E2163089F70E943F1804CF5F
:1063C0000E94831652E0660F771F881F991F5A9507
:1063D000D1F728EE33E040E050E00E94893420FFFE
:1063E0000FCF0E94C21917CF0E94831642E0660F9A
:1063F000771F881F991F4A95D1F728EE33E040E0B8
:1064000050E00E94893420FF25CF0E94C2192DCF71
:1064100090E080E04AE00E949B1DA6CF0E947B1383
:106420000E949F1820E030E040EA52E40E94CF35FD
:10643000181694F40E94831632E0660F771F881FA7
:10644000991F3A95D1F728EE33E040E050E00E94E2
:10645000893420FD0E94C21960911E0370911F03B0
:1064600090E080E00E94223320E030E048EC52E4EB
:106470000E9427356B017C0160911D0370E090E064
:1064800080E00E9424339B01AC01C701B6010E9449
:106490001D3387FF12C00E94831622E0660F771F0C
:1064A000881F991F2A95D1F728EE33E040E050E08D
:1064B0000E94893420FD0E94C21987EE93E0A5EF67
:1064C000AA16A1E0BA0608F4C5010E94F82200E06D
:1064D00023E040E860E370E090E080E00E94B012CA
:1064E00081E04CCF8F929F92AF92BF92CF92DF927A
:1064F000EF92FF92CF93DF93EC01688179818A81DB
:106500009B81611571058105910521F464E279EDA6
:106510008BE597E02DE133EF41E050E00E945734E6
:1065200049015A019B01AC01A7EAB1E40E9476340B
:106530006B017C01ACEEB4EFA50194010E948434A0
:10654000C60ED71EE81EF91EF7FE06C081E0C81A67
:10655000D108E10880E8F80AC882D982EA82FB8281
:10656000C701B6019F77DF91CF91FF90EF90DF9049
:10657000CF90BF90AF909F908F9008958F929F92F1
:10658000AF92BF92CF92DF92EF92FF9260918D0116
:1065900070918E0180918F0190919001611571052C
:1065A0008105910521F464E279ED8BE597E02DE119
:1065B00033EF41E050E00E94573449015A019B01FA
:1065C000AC01A7EAB1E40E9476346B017C01ACEE29
:1065D000B4EFA50194010E948434C60ED71EE81EB4
:1065E000F91EF7FE06C081E0C81AD108E10880E86C
:1065F000F80AC0928D01D0928E01E0928F01F09244
:106600009001C701B6019F77FF90EF90DF90CF9088
:10661000BF90AF909F908F90089560938D0170937D
:106620008E0180938F01909390010895FB01DC010E
:1066300005900D920020E1F708950E945F3308F461
:1066400081E00895E89409C097FB3EF49095809509
:10665000709561957F4F8F4F9F4F9923A9F0F92F28
:1066600096E9BB279395F695879577956795B795A6
:10667000F111F8CFFAF4BB0F11F460FF1BC06F5F8C
:106680007F4F8F4F9F4F16C0882311F096E911C09E
:10669000772321F09EE8872F762F05C0662371F0BF
:1066A00096E8862F70E060E02AF09A95660F771FD3
:1066B000881FDAF7880F9695879597F90895990FAF
:1066C0000008550FAA0BE0E8FEEF16161706E807BC
:1066D000F907C0F012161306E407F50798F0621BDD
:1066E000730B840B950B39F40A2661F0232B242BB2
:1066F000252B21F408950A2609F4A140A6958FEFD1
:10670000811D811D08950E9496330C9407340E94C8
:10671000F93338F00E94003420F0952311F00C94E6
:10672000F0330C94F63311240C943B340E9418344B
:1067300070F3959FC1F3950F50E0551F629FF001D4
:10674000729FBB27F00DB11D639FAA27F00DB11DED
:10675000AA1F649F6627B00DA11D661F829F222776
:10676000B00DA11D621F739FB00DA11D621F839FFD
:10677000A00D611D221F749F3327A00D611D231FD3
:10678000849F600D211D822F762F6A2F11249F5721
:1067900050409AF0F1F088234AF0EE0FFF1FBB1F24
:1067A000661F771F881F91505040A9F79E3F5105E3
:1067B00080F00C94F0330C943B345F3FE4F3983E4C
:1067C000D4F3869577956795B795F795E7959F5F8D
:1067D000C1F7FE2B880F911D9695879597F908951F
:1067E00097F99F6780E870E060E008959FEF80EC84
:1067F000089500240A941616170618060906089527
:1068000000240A9412161306140605060895092E8C
:106810000394000C11F4882352F0BB0F40F4BF2BFB
:1068200011F460FF04C06F5F7F4F8F4F9F4F08953B
:1068300057FD9058440F551F59F05F3F71F0479531
:10684000880F97FB991F61F09F3F79F08795089516
:10685000121613061406551FF2CF4695F1DF08C035
:10686000161617061806991FF1CF86957105610552
:1068700008940895E894BB2766277727CB0197F9FA
:106880000895F999FECF92BD81BDF89A992780B5F8
:106890000895262FF999FECF1FBA92BD81BD20BD64
:1068A0000FB6F894FA9AF99A0FBE01960895052E3C
:1068B00097FB1EF400940E946E3457FD07D00E948F
:1068C000893407FC03D04EF40C946E3450954095F7
:1068D000309521953F4F4F4F5F4F0895909580958C
:1068E000709561957F4F8F4F9F4F08950E94AB34F5
:1068F000A59F900DB49F900DA49F800D911D112414
:106900000895B7FF0C9476340E947634821B930B63
:106910000895A1E21A2EAA1BBB1BFD010DC0AA1FE0
:10692000BB1FEE1FFF1FA217B307E407F50720F0F8
:10693000A21BB30BE40BF50B661F771F881F991F73
:106940001A9469F760957095809590959B01AC01BC
:10695000BD01CF010895A29FB001B39FC001A39FC5
:10696000700D811D1124911DB29F700D811D112488
:10697000911D08955058BB27AA270E94D2340C9429
:1069800007340E94F93338F00E94003420F039F4C3
:106990009F3F19F426F40C94F6330EF4E095E7FBD0
:1069A0000C94F033E92F0E94183458F3BA17620799
:1069B00073078407950720F079F4A6F50C943A3410
:1069C0000EF4E0950B2EBA2FA02D0B01B90190010A
:1069D0000C01CA01A0011124FF27591B99F0593F4E
:1069E00050F4503E68F11A16F040A22F232F342F96
:1069F0004427585FF3CF469537952795A795F040E4
:106A00005395C9F77EF41F16BA0B620B730B840BF8
:106A1000BAF09150A1F0FF0FBB1F661F771F881FB0
:106A2000C2F70EC0BA0F621F731F841F48F4879508
:106A300077956795B795F7959E3F08F0B0CF9395FA
:106A4000880F08F09927EE0F9795879508950E9473
:106A50003B350C9407340E94003458F00E94F933FF
:106A600040F029F45F3F29F00C94F03351110C945D
:106A70003B340C94F6330E94183468F39923B1F335
:106A8000552391F3951B550BBB27AA276217730754
:106A9000840738F09F5F5F4F220F331F441FAA1FE8
:106AA000A9F335D00E2E3AF0E0E832D091505040A4
:106AB000E695001CCAF72BD0FE2F29D0660F771F52
:106AC000881FBB1F261737074807AB07B0E809F038
:106AD000BB0B802DBF01FF2793585F4F3AF09E3FBD
:106AE000510578F00C94F0330C943B345F3FE4F3A1
:106AF000983ED4F3869577956795B795F7959F5F00
:106B0000C9F7880F911D9695879597F90895E1E04B
:106B1000660F771F881FBB1F621773078407BA07AA
:106B200020F0621B730B840BBA0BEE1F88F7E09505
:106B300008950E94A0356894B1110C943B340895D7
:106B40000E94203488F09F5798F0B92F9927B751A9
:106B5000B0F0E1F0660F771F881F991F1AF0BA9501
:106B6000C9F714C0B13091F00E943A34B1E00895F1
:106B70000C943A34672F782F8827B85F39F0B93FE3
:106B8000CCF3869577956795B395D9F73EF49095B4
:106B90008095709561957F4F8F4F9F4F08950E940C
:106BA0005F3308F48FEF0895FA01EE0FFF1F309660
:106BB00021053105A1F16115710561F48038BFE34C
:106BC0009B0749F168949038810561F08038BFEFE8
:106BD0009B0741F099234AF5FF3FE1053105210567
:106BE00019F1E8940894E795D901AA2329F4AB2F69
:106BF000BE2FF85FD0F310C0FF5F70F4A695E0F7EA
:106C0000F73950F019F0FF3A38F49F779F930DD081
:106C10000F9007FC9058089546F00C94F63360E00E
:106C200070E080E89FE308954FE79F775F934F936D
:106C30003F932F930E941B372F913F914F915F916C
:106C40000E9483330C9439369F930E9494360F90A0
:106C500007FCEE5F0C94BD360E945F33880B990BE6
:106C6000089529F416F00C94F0330C943A340C94F3
:106C7000F6330E942034A8F39638A0F707F80F9255
:106C8000E8942BE33AEA48EB5FE70E9499330F92CE
:106C90000F920F924DB75EB70F920E946337E8E6EE
:106CA000F0E00E946B364F915F91EF91FF91E59577
:106CB000EE1FFF1F49F0FE57E0684427EE0F441F08
:106CC000FA95E1F74195550B0E94DD360F9007FECE
:106CD0000C94D1360895DF93CF931F930F93FF92B7
:106CE000EF92DF927B018C01689406C0DA2EEF01EF
:106CF0000E949633FE01E894A59125913591459126
:106D00005591A6F3EF010E94D234FE019701A8012C
:106D1000DA9469F7DF90EF90FF900F911F91CF9178
:106D2000DF9108950C94F6330E942034D8F3E89450
:106D3000E0E0BB279F57F0F02AED3FE049EC06C0AA
:106D4000EE0FBB0F661F771F881F28F0B23A62074D
:106D50007307840728F0B25A620B730B840BE39518
:106D60009A9572F7803830F49A95BB0F661F771F9B
:106D7000881FD2F790480C949937EF93E0FF07C033
:106D8000A2EA2AED3FE049EC5FEB0E94D2340E9478
:106D900007340F90039401FC9058E0E9F0E00C9464
:106DA000A5379B01AC0160E070E080E89FE30C94A4
:106DB00027350C94F0330C9497370E942034D8F385
:106DC0009923C9F3940F511DA3F39150504094F0AF
:106DD00059F0882332F0660F771F881F915050407A
:106DE000C1F79E3F51052CF7880F911D9695879509
:106DF00097F908955F3FACF0983E9CF0BB278695CD
:106E000077956795B79508F4B1609395C1F7BB0F77
:106E100058F711F460FFE8CF6F5F7F4F8F4F9F4FA0
:106E2000E3CF0C943B3416F00C9497370C94F63364
:106E300068940C94F0330E942034A8F39923C1F392
:106E4000AEF3DF93CF931F930F93FF92C92FDD27EC
:106E500088232AF02197660F771F881FDAF720E032
:106E600030E040E85FEB9FE3883920F0803E38F067
:106E700021968F770E94BB34EEEAF0E004C00E94B6
:106E8000BB34EBEDF0E00E946B368B01BE01EC01F0
:106E9000FB2E6F5771097595771F880B990B0E9410
:106EA000243328E132E741E35FE30E949633AF2DBC
:106EB0009801AE01FF900F911F91CF91DF910E9439
:106EC000D2340C940734FA01DC01AA0FBB1F9B01DA
:106ED000AC01BF5728F4222733274427507820C01D
:106EE000B75190F4AB2F0024469537952795011C98
:106EF000A395D2F3002071F0220F331F441FB395E6
:106F0000DAF30ED00C94BA3461307105A0E88A0728
:106F1000B94630F49B01AC01662777278827907823
:106F2000309621F0208331834283538308959F3F1D
:106F300031F0915020F4879577956795B795880F34
:106F4000911D9695879597F908959F938F937F93B9
:106F50006F93FF93EF939B01AC010E948333EF91FA
:106F6000FF910E946B362F913F914F915F910C944E
:106F70008333DB018F939F930E947634BF91AF914F
:106F8000A29F800D911DA39F900DB29F900D112483
:106F9000089597FB072E16F4009407D077FD09D0CB
:106FA0000E94E33707FC05D03EF4909581959F4FF2
:106FB0000895709561957F4F0895EE0FFF1F05901E
:106FC000F491E02D0994AA1BBB1B51E107C0AA1F35
:106FD000BB1FA617B70710F0A61BB70B881F991F7A
:106FE0005A95A9F780959095BC01CD01089581E04F
:0C6FF00090E0F8940C94FC37F894FFCF6C
:106FFC0001FF3C229CCA705158C9C2D4094FD80019
:10700C00340186011E00000000000000000000009A
:10701C000000000000000000000000000000000064
:10702C000000000000000000000000000000000054
:10703C000000000000000000000000000000013C07
:10704C009600400101280F050101014243312E3504
:10705C000000000000000000000000000000000024
:10706C000000000000000000000000000000000014
:10707C000000000000000000000000010101000001
:10708C00000B0604040202020203031804FC03E0D2
:10709C0003C403A8038C037003540338031C0300BC
:1070AC0003E402C8021804AC0290027402180458DB
:1070BC00023C027402580220023C0274020402E8F0
:1070CC0001CC01B00194018C03780100035C0140F8
:1070DC00012401A80308017402ED04E804E304DCB4
:1070EC0004D604D204C904C604C304BE04BA04B151
:1070FC0004A7049F049C049904960490048D0488AE
:10710C0004850482047D04780475046F046B0467A1
:10711C000462045D045904540450044C04490445AD
:10712C00043C0437043404CF0F7F0F2F0FDF0E8F76
:10713C000E3F0EEF0D9F0D4F0DFF0CAF0CCF0F5FE1
:10714C000C0F0CBF0B6F0B1F0BCF0A7F0A2F0A1FE4
:10715C000B7F0ADF092F0A1F0B8F093F09EF089FCE
:10716C00084F08FF07AF075F070F07BF066F061F23
:10717C0006CF051F0BAF1093107310F52357103B60
:10718C00101F101B12E311AB1173113B110311CB28
:10719C001000000000A61406143314F314641442F7
:1071AC00145614000000003D17061460185F186E8A
:0E71BC00616E00696E66006F7666002F33000C
:00000001FF
- - - -
- -
- - - - -
- - -
- - -
-
- - - - -
-
- -
-
- -
- - - - - - -
- - - You can’t perform that action at this time. -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/software/UI_upgrade_by_createskyblue/binaries/1.7+/T12.ino.with_bootloader.standard.hex b/software/UI_upgrade_by_createskyblue/binaries/1.7+/T12.ino.with_bootloader.standard.hex deleted file mode 100644 index b76db8c..0000000 --- a/software/UI_upgrade_by_createskyblue/binaries/1.7+/T12.ino.with_bootloader.standard.hex +++ /dev/null @@ -1,8659 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ATmega-Soldering-Station/T12.ino.with_bootloader.standard.hex at master · createskyblue/ATmega-Soldering-Station - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Skip to content - - - - - - - - - - - -
- -
- - - - -
- - - -
- - - - - - - - -
-
-
- - - - -
-
-
-

Learn Git and GitHub without any code!

-

- Using the Hello World guide, you’ll start a branch, write comments, and open a pull request. -

- Read the guide -
-
-
-
- - - - - - - - - -
- -
- -
-

- - - / - - ATmega-Soldering-Station - - -

- - - forked from wagiminator/ATmega-Soldering-Station - - -
- -
    - -
  • -
    - -
    - - - Watch - - - -
    - Notifications -
    -
    - - - - - - - -
    -
    -
    - -
    -
  • - -
  • -
    -
    - - -
    -
    - - -
    - -
  • - -
  • -
    -
    - -
  • -
- -
- - -
- -
-
- - - - - - - Permalink - - - - -
- -
-
- - - master - - - - -
- - - -
-
-
- -
- - - - Go to file - - -
- - -
- -
- - - -
- -
-
-
 
-
- -
-
 
- Cannot retrieve contributors at this time -
-
- - - - - - -
- -
-
- - 1856 lines (1856 sloc) - - 79.6 KB -
- -
- -
- Raw - Blame -
- -
- - - - -
- -
-
- -
-
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:020000040000FA
:100000000C943F120C9467120C9467120C941027F6
:100010000C9467120C9467120C9467120C9467127C
:100020000C9467120C9467120C9467120C9467126C
:100030000C9467120C9467120C9467120C9467125C
:100040000C94C6260C9467120C9494260C946E267D
:100050000C9467120C94E7270C9467120C946712A7
:100060000C9467120C94671207634236B79BD8A7AB
:100070001A39685618AEBAAB558C1D3CB7CC5763CD
:10008000BD6DEDFD753EF6177231BF000000803F7B
:1000900005A84CCDB2D44EB93836A9020C50B9914E
:1000A0008688083CA6AAAA2ABE000000803F080055
:1000B0000000BE922449123EABAAAA2ABECDCCCCE7
:1000C0004C3E00000080BEABAAAAAA3E0000000081
:1000D000BF000000803F0000000000084178D3BB53
:1000E0004387D1133D190E3CC3BD4282AD2B3E6800
:1000F000EC8276BED98FE1A93E4C80EFFFBE01C4F1
:10010000FF7F3F0000000000800400003FF0383017
:1001100033103F90381033902790261030903FF0E6
:1001200000008004800400003FF03DF020103BF010
:100130003B7030302B502AD031B03FF000008004AB
:10014000800400003FF038703030231027902010DA
:100150002010279027903FF00000800480040000CA
:100160003FF03CF03CF020102490249020103CF014
:100170003CF03FF000008004800400003FF037B006
:1001800023103030387038703030231037B03FF0E3
:1001900000008004FCF4F860E044C08CC11CC22C58
:1001A000C44CC88CD10CA204C4048FFC187CBCFCC9
:1001B0008000BFF81FF8B0281FF8B4081FF8B10876
:1001C0001FF8B048BFF8B288BFF880008000BFF8C1
:1001D0001FF8B0081808B9E819B8B8381838B9B80D
:1001E000B9F8B0F8BFF8800015543FF815503FF04B
:1001F0001550387010203104138C22A817FC2AA83F
:100200000000000015543FFC15543FFC15543C04FD
:1002100014043CFC14543CFC005400A800000000F2
:10022000800400003FF03CF034B0249024902790EC
:100230002310303038703FF000008004FF7CFE7CDB
:10024000FCECE8DCC84C984C882408200000000036
:10025000000000008004E01CF3FCE7FCCE0C8E1CC8
:100260009F9C1F3C1F0C0E0C0FFC87F881E4C00CF8
:10027000E01CF87C000458085808580840087FF82B
:1002800060185FE85B685FE85B681CE85FE8000097
:10029000800400003FF03CF03CF03CF020102010C7
:1002A0003CF03CF03CF03FF000008004F87CF7BCF0
:1002B00000007FF80000BFF4AB54AB54AB54AB5418
:1002C000AB54AB54BFF4C00CF03CCE0CBF04B30431
:1002D00073007F007E007C007C007C60BC64BE04F8
:1002E000CF0CF03C81DC559C29045500299055D059
:1002F00003FCFF002E00267002508270E600EE0420
:10030000800C001C3FF43FE03FC4378C2318303092
:1003100038703CF03FF03FF000008004058074B876
:1003200057A876B80580F97C4694AAA8F97C068877
:1003300074A8578C75740698F03CCE4CBC34B81435
:10034000188010804230607860F844C08004B8841F
:10035000CFCCF03CE01CC00C8FC49FE49FE49FE432
:1003600000000300030003000780078003008004EF
:10037000F87CE01CC00CCFCCCFCCCFCCCFCCCFCC3A
:10038000CFCCCFCCC84CCFCCC00CE01CFCFCF87C54
:10039000E01CC00CC00CC00CC00CC00CC00C800415
:1003A0008004FFFCF87CFCFC8004000020001000AE
:1003B00008001000270000000000000000000000FE
:1003C00000008004C3FC18001800C3FCFFFCFF0CF5
:1003D00000600060FF0CFFFCF0FC06000600F0FC73
:1003E0008FC4102020104CC89FE43DF03DF01DE06C
:1003F0003EF03F709FE48CC400003030F87CF33C4A
:10040000F4BCF6BCF4BCF6BCF4BCE49CC84CD02CE8
:10041000D02CC84CE79CF03C882408203830383079
:10042000383038303830383039303BB03FF03FF07A
:1004300000008004F21415F0CADFB8CCF0D699E8B9
:10044000AEA4DFEEE8F21D1E08F21C08F21A1B082B
:10045000F0714601F046464A01F219F051F218F0E7
:100460005A8DF0C0DAEEAEF0C8B8A5F1302924F00C
:10047000B599E1A4BDF21415F0CBEEAEBDF218F0C3
:100480005A8DF21617F21415F0CBEEAEBDF2161718
:10049000F0BCCA9EE0BDF21415F21213F21011F274
:1004A0000C0DF094F20E0FF0A2D8DFCBE1EEACDC35
:1004B000E8F20AF08CF20BF04A8DF209F08DF09719
:1004C000C59BBDF20708F21F20F2040506F097DE77
:1004D000EED5F0CBABEEF0AEA4DFEEE8F0A8E8BDD1
:1004E000E2EEE0F0B499D3EEF200010203F0CCDFCB
:1004F000B0B8BD5361766500466C6970004D6169A6
:100500006E2053637265656E004A5000454E00438D
:100510004E00594553004E4F004F4E004F46460087
:10052000496E666F73004269670050494400446930
:1005300072656374005361766500426F6F73740077
:100540004F666600536C65657000536176650042C6
:100550006F6F737400536C656570004465666175F8
:100560006C740053617665004164640044656C6599
:1005700074650052656E616D650043616C696272FD
:10058000617465004368616E6765005265747572D9
:100590006E0041626F7574004C616E67004C6F6352
:1005A0006B004C4F5720566F6C0042757A7A65721B
:1005B0000053637265656E00436F6E74726F6C00FA
:1005C00054696D65720054656D7000546970000067
:1005D000000000000F1DC20800054442080003840B
:1005E0005FBF000FE44410000115451000054CC921
:1005F0007F8009244F900007C4C11000054D413F82
:1006000000055443810007C44D0200054441140015
:10061000055541080007C8810400000000000000E3
:100620000000000001083FFE001FFF8100000040A5
:1006300002000007FE0FF800040208080004020888
:10064000880007FE08880004020888000402088861
:100650000007FE0888000402094800040202300076
:1006600007FE040C00040218040000000000000053
:100670000000000007FE13FE000402084000040210
:10068000084000040201FC0004023884000402084F
:10069000840007FE0FFF000402080000040209FEA8
:1006A00000040209020004020B020004020D020011
:1006B00007FE09FE00040201020000000000000025
:1006C0000000000001100080001FFF80800001106A
:1006D0003FFF00004004080007FC04080004440435
:1006E0001000044402100004440220001FFF812077
:1006F00000004000C00000A001300001100208000E
:10070000060C0C07001803B00200000000000000F7
:1007100000000000004000800000400080000FFF4B
:100720003FFF000841040800084104080008410494
:10073000100008410210000FFF02200008410120B4
:1007400000004000C00000400130000040020800EE
:1007500000400C07000040300200000000000000D4
:10076000000000001FDF10200002120C20000224F5
:10077000042000047F8020000424B820000FA488F7
:10078000500014BF88500004A488500004A4884876
:100790000004BF88880004A48A880007A48C840011
:1007A0000444890700008186020000000000000068
:1007B000000000000FF00491000440025200047F8A
:1007C000905400045088FF0007D084810004510039
:1007D0008100044901FF0007CA028100044404812A
:1007E00000044A1CFF0007EA0481000C5104810048
:1007F0000061C4850000408082000000000000000D
:100800000000000007FF802000008407FF00008434
:10081000040100008404010000840401000FFFC7EC
:10082000FF0000840400000084040000008405FF31
:100830000000840501000104090100010409010010
:10084000020411FF00040401010000000000000088
:1008500000000000008204FF00004402010007FFC6
:100860009021000010102100001017FD0000101052
:1008700021000FFFD06100001010A10000281121FD
:100880000000281221000044142100008210A10061
:100890000301D045000C00900200000000000000A1
:1008A00000000000084410FE00042810920005FF1C
:1008B00022920000103C920000100892001CFE10D2
:1008C0009200041020FE0004103E920005FF80926A
:1008D00000041000920005100E92000610309200E5
:1008E000041000FE00001000820000000000000064
:1008F0000000000007DF8840000A24104000114279
:1009000010FE00040022820002FF3D020008010ADE
:10091000420009F9103200090920120009F93E02CB
:1009200000090900020009090E020009F93022003D
:100930000805001400080200080000000000000084
:10094000000000000FC3F1E0000FE3F1F8000C70AD
:10095000C19E000C30C186000C30C183000C30C138
:1009600083000C60C183000C60C183000FC0C18391
:10097000000FC0C186000C00C186000C00C19800A9
:100980000C03F1F8000C03F1E0000000000000008F
:100990000000000000200820000FFF09FC000020DC
:1009A00008000000203E880003FE08500002020BF1
:1009B000FE0003FE0C4000020218400003FE2BFE66
:1009C00000020208480003FE0888000202085000E6
:1009D00002022830001FFF91CC000000000000013F
:1009E00004047C0000880444000FFF3F4400002002
:1009F00004440000200C440000200E44001FFF951A
:100A000044000020144400005024440000500444DA
:100A100000008804450001040485000603850300E6
:100A200018010400000000000000000000000000A9
:100A300000000000047E21FC0004421104001F7E1F
:100A4000090400044221FC000542110400067E1145
:100A500004000C0005FC0015FF880000040813FECC
:100A6000000448325200044F12520004481252004F
:100A700014A8125200091F97FF0000000000000098
:100A80000000000002103DFC0002102504000410CC
:100A900025040005FFBDFC000C102520000C3825A6
:100AA0002000143825FE0004543D20000454251075
:100AB0000004922510000511A5090006113D45000E
:100AC0000410258300041001010000000000000054
:100AD000000000001FC8102000124A0C20001AC994
:100AE00004200017480020001FFFB820000208085B
:100AF00050001FC8085000020808500003C80848EA
:100B0000001E1408880001540A880015220C840075
:100B10001443890700008106020000000000000263
:100B2000FE01000002823FFF00048202000004FE7A
:100B30000200000C1004FC00141004080005FF8CD7
:100B400010000410141000043825FF0004340410B1
:100B50000004520410000491841000051004500099
:100B6000041004200000000000000000000000004D
:100B70000000000002030010001FDC3EFE00089091
:100B8000021200051004FF001FDF84120002120C85
:100B9000FE001FD2021000021222FE000A92141060
:100BA000000A5214100012220DFF00022208100049
:100BB0000A42141000040223FF000000000000009D
:100BC000000000000F78BC20000948A45000094A2A
:100BD000A85000094AA88800094AB104001FFEAACB
:100BE000FB00094AA42000094AA42000094AA7FEE4
:100BF00000094AB420000948A924000B48A2220099
:100C0000088AA4A200111920400000000000000082
:100C1000000000000020008000005001FC0000885F
:100C2000010400010403080006FB0490000800C052
:100C3000600007DF018000045106000004511BFE24
:100C400000045102020007D9020200045602020009
:100C5000001003FE0000100202000000000000006F
:100C6000000000000208209000027F9890001F8082
:100C700009FF00022201100006218B100007628D7F
:100C8000FE000AA20910000A14111000121431FE0D
:100C900000020811100002141110000222111000AD
:100CA000024391FF000281110000000000000000DB
:100CB00000000000100700000008F83FFE0004805C
:100CC000200200008020020000BE23E2001C8222DD
:100CD000220004A42222000494222200048822225A
:100CE00000049423E20005222002000542200200B5
:100CF0000A003FFE0011FFA00200000000000000FB
:100D00000000000000820FFE00004400400007FFCA
:100D10008040000010004000001000400000101F44
:100D2000FF800FFFC040000010004000002800407E
:100D30000000280040000044004000008200400005
:100D40000301C140000C0080800000000000000989
:100D5000FF00400004203FFF00042000000000FED0
:100D60000000001C420FFC00044200000007FF804E
:100D7000000004000FFC0004FF00000004810000DC
:100D80000005810FFC00068108040004FF08040030
:100D900000810FFC000000000000000000000000C7
:100DA0000000000000401F7E001FFF840200108032
:100DB0008442000A4A0442000A3108420012C50F68
:100DC00042000304197F001DF829010000400901B9
:100DD00000084209FD00084209010008420F010015
:100DE0000FFE0905000002000200000000000000E4
:100DF0000000000001000FFE00010008200003FFBA
:100E00000820000201082000042208200008200B0E
:100E1000FE00102008200000500828000050082480
:100E20000000880822000088102000010410200023
:100E30000203A7FF000C01000000000000000000FA
:100E40000000000000400080001FFF9FFC000040E9
:100E50000410000FFF02200000003FFF000FFE0003
:100E6000000008420FF80008420808000FFE0808BA
:100E70000008020FF8000800080800080008080031
:100E800008000FF800100008080000000000000033
:100E90000000000007FE0FF800040200000004023A
:100EA00000000007FE00000004023FFE00040200F4
:100EB000800007FE008000009004900008910C88DC
:100EC00000069310860002942082000090008000AB
:100ED00000900280001FFF81000000000000000061
:100EE00000000000041012020005FF9FD200050060
:100EF0009212001E28A2120004443FF20004820253
:100F0000120006000212000CFE1FD2001410125232
:100F10000004101242000410134200041012820058
:100F200015FF820A00080002040000000000000013
:100F300000000000002000000000203E04001FFF11
:100F4000A204001000A2FF0000012204000FFE22F4
:100F5000040000403E4400004022240004402224BB
:100F600000047C22040004402204000A403E0400E5
:100F7000094022240010FF80140000000008000037
:100F80000000000010FE08200008820BFF00048211
:100F90000A010010FE3C51000882088800088209FE
:100FA000040002FE0C0000040019FC0009FF2820C8
:100FB0000019290820000929082000092908200013
:100FC00009292BFF000BFF9000000000000000002B
:100FD000000000001F7F90F80001080888000A1038
:100FE000088800047F0107001FC13A000005490975
:100FF000FC000449088400044908880004490848A2
:1010000000044908500004490A200004160C580046
:10101000142189870008C086020000000000001F1C
:10102000E03FF07038601860186018FFFCFCFCFCB2
:10103000FCFCFCF87CF87CFCFC7FF81E1033382D9F
:101040007C25382D3825382D386D80DEC0BF40BF57
:1010500040DEC061803F007FF0FFE0C008C01CC0E0
:1010600038C870DCE4CFCCC78CC30CC00CC00CFFFC
:10107000FC7FF8000006000C0018F838F0303070E3
:1010800060707878F878003C023F0C1FF80FF0038E
:10109000C000007FF8FFFCC00CC30CCB4CDB6CDB4A
:1010A0006CD86CDCECCFCCC78CC00CFFFC7FF80399
:1010B0000007800FC00CC01CE01CE03CF03CF07F3F
:1010C000F87FF8FCFCFCFCFFFC7FF811408200215B
:1010D000208FE023FC82004A23E200FE209FF013D1
:1010E000F880802220C0804221BFF0FBFA88800275
:1010F000208480022084801A208080E3FE82800287
:101100000101000F421FC078411040084090400884
:10111000421FC008411040FFFD104008405FC0085A
:1011200040800008413FE008432520104125201061
:101130004125202041252040417FF07FF848800252
:101140000049000201FFF00201001002027F20228C
:1011500000410023F07F00220008002200FF8022CF
:101160000088802200888022008A8022008900FF77
:10117000FC080023F21FC022111040FBF090402217
:10118000121FC02A11104033F1104060005FC0AF41
:10119000FC800020413FE0224325202279252022A7
:1011A000412520A541252048FD7FF01083DFC01098
:1011B000825040208250402FFFDFC0608252006189
:1011C000C25200A1C25FE022A3D20022A251002499
:1011D000925100288E5090308BD45020825830206D
:1011E000801010104047C017FC44402003F44023F7
:1011F000F844406208C440A3F8E440200154402F62
:10120000FD44402806444023F844402040445020F8
:10121000404850214050302080400020921FC03D67
:10122000F990402090904040901FC07BFF0000A0AC
:10123000013FE021F90200FD09020021097FF021B0
:10124000F90500210945002909888031F91070212C
:1012500008202025004300202070F8754077557540
:101260007740403E4A5E2B5E4A6B627F352F357F6A
:101270007C5B5E247B0E3A047E017E4A5E69063A00
:101280002F3F6B7E46403F41497F494102626B6B75
:101290006B62026A6B147D577D10413F55553D5777
:1012A00051213F2D7F2A122E0A775A505A770A2051
:1012B00024137D5553707A2A7B021A437A4A525E70
:1012C0002B5E424A415F353F555F417D14577D0E8D
:1012D000407F7F1B54167D1654493A407E57567600
:1012E000423F427E7E427E047E51377D3750127AE5
:1012F0001752761E127F557F145D7F557F557F7F75
:10130000553D577F55377817457F7F2B7B287B2BA3
:101310007F1E12127F12121E7F416B7F6B517F5214
:101320005A573A575A52007F494949497F22122A4F
:101330007F2A1222166A5E735662160937315F15CC
:101340005F7500000000002F000300033F123F16EE
:101350003F1A120824323D2A020100003E41413E5C
:10136000000A070A083E084020000808080020007C
:101370001008041C2A1C243E20322A24222A141875
:10138000143E2E2A121C2A12023A06142A14242A67
:101390001C002400402400081422141414221408F1
:1013A00002290612291E3E093E3F251A1E21213F11
:1013B000211E3F25213F05011E21393F083F213FC6
:1013C0002110201F3F043B3F20203F063F3F013EAE
:1013D0001E211E3F09061E215E3F093622251901E6
:1013E0003F013F203F3F100F3F183F330C33033C7A
:1013F00003312D23007F41153E15417F000201027C
:1014000040404000010218243C3F241818242418AE
:10141000243F182C2C043F0548543C3F0438003D21
:1014200000403D003F0834013F003C1C383C04387C
:101430001824187C241818247C3C0804283C140424
:101440003E243C203C3C100C3C303C2418244C50A6
:101450003C24342C083641007F004136080101014C
:101460001028101F010120203E1020000008002538
:10147000150F241C0C103804180C3828382828188C
:101480003C083C18283820242C3C2C2C1C04080830
:10149000211D07083C0306231E223E22120A3F326A
:1014A0000F3E0A3F0A24130E271E0222223E271255
:1014B0000F2525102119273F222E21160F241B0E40
:1014C000251F0526261E251D053F0408241F042070
:1014D0002222251927123B1620100F3C013E1F2403
:1014E0002421110F0C031C1A3F1A091927222A2A3A
:1014F000382730320C13053F25023F0E213F2025AF
:10150000253F25251D07201F3C3F203F20103E2260
:101510003E23110F212118010001020502000000E5
:1015200000000000002040000000000000205020CB
:10153000000000000050300000000000006060006B
:101540000000000000000018180000000000003635
:1015500036000000000000563600000000000201C6
:1015600051090906000000005F00000000000000B3
:10157000007F41410041417F000000000000000069
:101580003F010101004040407E0000000000003F9C
:10159000213D05070070505E427E00000000000003
:1015A000007F63410041637F0000000000080808DD
:1015B0007F08080800080808080808080044444490
:1015C0005F444444004122140814224100080808E2
:1015D0002A080808001414141414141400143414E1
:1015E0001C141614000808141414222200222214B9
:1015F00014140808000205023C42422400002B2C6F
:10160000782C2B000000242A7A2F2A1200001C625A
:10161000322E23140020545E254142200042251220
:10162000082452210020623E633E230200205649D6
:1016300055225840000022147F142200001C225919
:10164000554D120C0000004A555529000004643C19
:10165000173C64040004643C1F3C6404001C2241E9
:101660004141221C001C3E7F7F7F3E1C001C225DEE
:10167000555D221C000814224122140800081C3E5B
:101680007F3E1C08007F41414141417F007F7F7FB9
:101690007F7F7F7F0040704C434C70400040707CE7
:1016A0007F7C704000010719611907010001071FC5
:1016B0007F1F07010049221449142249000505052E
:1016C0007D05050500080808082A1C0800081C2AD2
:1016D00008080808000004027F020400000010202F
:1016E0007F20100000003E414141413E0000004289
:1016F0007F400000000062515149494600002241EC
:10170000494949360000302824227F2000002F4517
:101710004545453900003E4949494932000001012B
:101720006119050300003649494949360000264938
:101730004949493E000020547E3414600020527F05
:101740002A1A4A3000003C4020041800001E2040A5
:10175000200204180000104A4A2A10000000084520
:10176000454525180000482A3A4A40000000442513
:10177000153D45400000247E145024000022527F75
:101780000A484A340044344F443804180044344F63
:101790004439041900002A5A4B4E5A0800002A5AAC
:1017A0004B4E5B080000081414224100000008148E
:1017B00014224504003F0004443F0404003F000499
:1017C000443F0405000020524242424000002052A3
:1017D000424342410000245444475C040000245426
:1017E00044475C050000003F404040200000003FAF
:1017F000404140210002020A563F02020002020A52
:10180000563F02030004043F44545F440004043F75
:1018100044545F45000008093D4B49080000080991
:101820003D4B490A00423A072254444400423A07D9
:1018300022554445000002124E4B4A32000002126B
:101840004E4B4A3300001010484830000004040298
:101850002222221C000404022223221D0000020274
:101860001A254341000002021A2543450000205773
:1018700048484444000020574849444500120A277C
:1018800052503A24007F00205242424000304E38ED
:10189000540F64780024147F0422523C0018241250
:1018A0004E422418007F002454543F44007F0024FB
:1018B00054543F45007F002454563D4600023A47A9
:1018C00040413E0400023A4740413E0500023A478B
:1018D00040433D06004030404D32106000403040F3
:1018E0004D321161004030404D3215620008040253
:1018F0000408101000080402040910110008040272
:10190000040A1512007F006A6A7E2A4A007F006A74
:101910006A7F2A4B007F006A6A7E2D4A00006A6A4D
:101920006A7F2A4A0030291D4B483C1000122A7F4A
:101930004240422400304E38540F443800000A3EE2
:101940004B4A4A300000080E384614080004071CB1
:1019500062030A0400001C483E241800001E0452C2
:101960003F12120C00002050503E48000000205052
:10197000503F244400001C51494A483000000F42A7
:1019800041211E00000010696D4B49300024147F76
:1019900004023E40000010494D4B49300000281819
:1019A0007E0844380024147F0442423C003049251C
:1019B0001F245438004028255735284000100A2E8F
:1019C0005B724A480040300C334040200000044421
:1019D0003C140C00000001413D09050300002020DB
:1019E0001078040000001010087C02010000184864
:1019F0004C281800000006424322120E0000404806
:101A000078484000002022223E2222200000282880
:101A1000587C0800002222124A7F02020000422263
:101A20001F02427E000042221F02427F000012126B
:101A30001F721210000012121F72131000000844CF
:101A40004322120E000008444322120F00080742EE
:101A5000221E020200080742221F02030000424227
:101A60004242427E000042424243427F0002024F15
:101A700042221F020002024F42231E030000454A79
:101A80004020100C0000454A4021100D0040422229
:101A9000221A264000404222221B26410004043F15
:101AA0004444544C0004043F4445544D0000014656
:101AB0004020100F000001464020110F0000084494
:101AC0004B2A120E000008444B2A120F00080A4A43
:101AD0003E09090800080A4A3E09080900001840A2
:101AE0005820180000020C424C20100E00020C423C
:101AF0004C21100D000405453D0505040004054575
:101B00003D0504050000007F080810000000007F6C
:101B100008091001000444241F04040400202222A8
:101B200022222220004041251519270000202212E0
:101B30007B06122000404020100807000040300EB5
:101B400000020C700040300E00020D710040300E9B
:101B500000020D7200003F484848444400003F48DE
:101B60004849444500003F48484A45460000024273
:101B70004222120E000002424223120F00000242D3
:101B80004222150E00080402040810200008040276
:101B90000409102100080402040A15220024144438
:101BA0007F041424002414447F05142500241444C5
:101BB0007F0615220002021222520A060000212589
:101BC000294A42000040704C4350204000404424C9
:101BD00014083700000008093F4949480000101C5C
:101BE000680818000004040F74020A060000404848
:101BF0004878400000202222223E2020000000449D
:101C000054547C000000424A4A4A4A7E000004457F
:101C10004525150C00000F4040201F000040201EED
:101C2000007F20100000007F4020100800007E424E
:101C30004242427E00000C4444241C000000064244
:101C40004222120E0010121E12127F1200202222B7
:101C50003A262220000001454525150F000041428B
:101C60004020100C000006424322120F00004828BA
:101C70001C4878000000100C4838080000080404D4
:101C800008101008000800000800000800040808F8
:101C900008080808000808080808080808060505D4
:101CA0000706040903030504090A080303030603DE
:101CB00005030305050306040405050405040403E0
:101CC00004090503CB05C605C005B805B105AA057D
:101CD000A2059D05980592058B0584057A05730577
:101CE0006C05680563055B0555054F054A05440508
:101CF00040053A0535052E052A05260520051C0553
:101D00001905160512050F050C050905FD04F80453
:101D1000F3043E0053656C656374205469700000E1
:101D2000000000003E5B4F5B3E3E6B4F6B3E1C3E37
:101D30007C3E1C183C7E3C181C577D571C1C5E7F4B
:101D40005E1C00183C1800FFE7C3E7FF00182418CA
:101D500000FFE7DBE7FF30483A060E2629792926FF
:101D6000407F050507407F05253F5A3CE73C5A7FE9
:101D70003E1C1C08081C1C3E7F14227F22145F5F3F
:101D8000005F5F06097F017F006689956A60606079
:101D9000606094A2FFA29408047E040810207E20B4
:101DA0001008082A1C08081C2A08081E1010101009
:101DB0000C1E0C1E0C30383E3830060E3E0E06004F
:101DC0000000000000005F00000007000700147F13
:101DD000147F14242A7F2A1223130864623649567A
:101DE00020500008070300001C2241000041221C73
:101DF000002A1C7F1C2A08083E080800807030005A
:101E00000808080808000060600020100804023E6E
:101E10005149453E00427F400072494949462141AF
:101E2000494D331814127F1027454545393C4A491E
:101E3000493141211109073649494936464949295D
:101E40001E0000140000004034000000081422416D
:101E50001414141414004122140802015909063EF6
:101E6000415D594E7C1211127C7F494949363E41F1
:101E70004141227F4141413E7F494949417F090912
:101E800009013E414151737F0808087F00417F41AD
:101E9000002040413F017F081422417F40404040E4
:101EA0007F021C027F7F0408107F3E4141413E7F3C
:101EB000090909063E4151215E7F09192946264933
:101EC00049493203017F01033F4040403F1F20400A
:101ED000201F3F4038403F63140814630304780414
:101EE000036159494D43007F4141410204081020DC
:101EF000004141417F040201020440404040400053
:101F00000307080020545478407F2844443838445C
:101F1000444428384444287F385454541800087ED8
:101F2000090218A4A49C787F0804047800447D402A
:101F3000002040403D007F1028440000417F4000C9
:101F40007C047804787C080404783844444438FCE1
:101F50001824241818242418FC7C08040408485465
:101F600054542404043F44243C4040207C1C204022
:101F7000201C3C4030403C44281028444C90909019
:101F80007C4464544C440008364100000077000053
:101F9000004136080002010204023C2623263C1EB2
:101FA000A1A161123A4040207A3854545559215524
:101FB0005579412154547841215554784020545545
:101FC00079400C1E52721239555555593954545492
:101FD0005939555454580000457C410002457D4212
:101FE0000001457C40F0292429F0F0282528F07CC8
:101FF000545545002054547C547C0A097F49324989
:102000004949323248484832324A4848303A4141D8
:10201000217A3A42402078009DA0A07D3944444472
:10202000393D4040403D3C24FF2424487E494366DE
:102030002B2FFC2F2BFF0929F620C0887E090320B7
:10204000545479410000447D413048484A32384078
:1020500040227A007A0A0A727D0D19317D262929DB
:102060002F28262929292630484D402038080808DD
:102070000808080808382F10C8ACBA2F102834FAFE
:1020800000007B000008142A142222142A14089548
:1020900000220095AA005500AAAA55AA55AA000038
:1020A00000FF00101010FF00141414FF001010FFA8
:1020B00000FF1010F010F0141414FC001414F700BA
:1020C000FF0000FF00FF1414F404FC141417101F89
:1020D00010101F101F1414141F00101010F0000017
:1020E00000001F101010101F10101010F010000032
:1020F00000FF101010101010101010FF1000000042
:10210000FF140000FF00FF00001F10170000FC0478
:10211000F414141710171414F404F40000FF00F75B
:1021200014141414141414F700F7141414171410BE
:10213000101F101F141414F4141010F010F00000ED
:102140001F101F0000001F14000000FC140000F00E
:1021500010F01010FF10FF141414FF141010101FB3
:1021600000000000F010FFFFFFFFFFF0F0F0F0F0C4
:10217000FFFFFF0000000000FFFF0F0F0F0F0F38E1
:10218000444438447C2A2A3E147E02020606027E1B
:10219000027E0263554941633844443C04407E203A
:1021A0001E2006027E020299A5E7A5991C2A492A4B
:1021B0001C4C7201724C304A4D4D303048784830DA
:1021C000BC625A463D3E494949007E0101017E2AD2
:1021D0002A2A2A2A44445F444440514A4440404405
:1021E0004A51400000FF0103E080FF000008086B37
:1021F0006B083612362436060F090F060000181831
:102200000000001010003040FF0101001F01011EFE
:1022100000191D1712003C3C3C3C0000000000006F
:10222000000000240027002A0000000000250028EC
:10223000002B0000000000230026002900040404F5
:10224000040404040402020202020203030303035F
:10225000030102040810204080010204081020013C
:10226000020408102000000008000201000003041E
:10227000070000000000000000AED5F0A83FD3002A
:10228000408D14A1C8DA1281CFD9F1DB40A4A6AFEA
:10229000200021007F220007506C65617365207764
:1022A000616974004144433A200074656D703A20BE
:1022B00000536574206D65617375726564005374B5
:1022C00065703A2000FFFFFFFFFFFF8003867080EC
:1022D000038003867080039FF3E1309FF39FF3E157
:1022E000309FF3983301CC9833983301CC983398CE
:1022F0003387C098339833E1C098339833E1C0985E
:10230000339FF398C09FF39FF398C09FF3800366B9
:10231000CC8003800366CC8003FFFF010CFFFFFF2E
:10232000FF01001FFF810061301F3F873CE6FC87F3
:1023300033873CE6FC87F3F8039E0F1F03F8039EE8
:102340000F1F03E13CFE0C07CFE13CFE0C07CF99C9
:10235000033E3086C3E6CF380F9EF3E6CF380F9E9C
:10236000F39E0327CC81039E0327CC8103E0FFE18A
:102370000CE6CFE0FFE10CE6CF9803060000FF98E3
:1023800003060000FFFFFF1EF0F80380036630998C
:10239000C38003663099C39FF3010CF8FF9FF301DC
:1023A0000CF8FF9833393C01CF9833393C01CF9872
:1023B00033FF0C793F98333ECCE0F398333ECCE0CA
:1023C000F39FF33E0098CF9FF33E0098CF80033EEB
:1023D00030E7C380033E30E7C3FFFFFFFFFFFFFF8F
:1023E000FFFFFFFFFF3030300076312E372B0056D5
:1023F00000560043000FE01FC01FC03F803FF87F22
:10240000F07FE007C007800F000E001C00180010CE
:102410000014A03FF07FF8E01C6E18EC1C681860F8
:1024200018E01C6058E01C7FF83FF014A0455252A1
:102430004F5200484F4C44004845415400574F52BA
:102440004B5900424F4F535400534C454550004F99
:1024500046460000003BEC7BEE63E663E663E66322
:10246000E663E663E663666226600660067FFE3F1B
:10247000FC0000010204081020408000E82711241D
:102480001FBECFEFD8E0DEBFCDBF12E0A0E0B1E0CD
:10249000ECEFFFE602C005900D92AE3CB107D9F714
:1024A00027E0AEECB2E001C01D92A33EB207E1F717
:1024B00012E1CFE3D2E104C02197FE010E94DD3793
:1024C000CE33D107C9F70E942D280C94FC370C9409
:1024D000000080389105B0F46034710598F4E3E7AA
:1024E000F4E290E1969FD001A0781124A80F6770C4
:1024F000E60FF11D9491AE5CBC4F442321F08C910A
:10250000982B9C93089590958C919823FACFDF9205
:10251000EF92FF920F931F93CF93DF937C01D22E04
:102520008B01040F111DEB0177FF02C0D0E0C0E06A
:10253000C8010134110514F080E490E0C817D907F0
:102540003CF44D2DBE01C7010E9469122196F0CFC7
:10255000DF91CF911F910F91FF90EF90DF90089541
:10256000CF92DF92EF92FF920F931F93CF93DF935F
:102570006B01122FEC017C01E40EF11CCE15DF057E
:1025800044F4202F412FB601CE010E9487122196DC
:10259000F5CFDF91CF911F910F91FF90EF90DF90DA
:1025A000CF9008952F923F924F925F926F927F92B9
:1025B0008F929F92AF92BF92CF92DF92EF92FF9253
:1025C0000F931F93CF93DF9300D01F92CDB7DEB749
:1025D000C22ED12C9601280F391F37FD4FC08038ED
:1025E00091050CF04BC0E9824A017B013C01402E71
:1025F000512C160127E0220E311C93E035942794CC
:102600009A95E1F78B01B12CA12C1B821A82EA81E9
:10261000FB8183E0F595E7958A95E1F7EA0DFB1DCF
:10262000E80DF91DE4918A819B818770992720E844
:1026300030E002C0359527958A95E2F7C901F0E0B0
:10264000E223F923EF2B41F04981B8018A819B8174
:10265000860D971D0E9469128A819B8101969B833A
:102660008A838C159D059CF2A20CB31C0F5F1F4F33
:10267000C8018E199F09841595053CF20F900F90A3
:102680000F90DF91CF911F910F91FF90EF90DF900E
:10269000CF90BF90AF909F908F907F906F905F9002
:1026A0004F903F902F9008950F931F93CF93DF93F8
:1026B000EC018B0140E001960E94691240E0B801F4
:1026C000CE0101970E946912B8016F5F7F4F40E011
:1026D000CE010E946912B8016150710940E0CE013B
:1026E0000E94691240E0B801CE01DF91CF911F91A5
:1026F0000F910C94691280E0E2E3F3E081118FEF17
:10270000002481938193819381930394D1F7EFEC1B
:10271000F7E0178616861586148608956F927F92C5
:102720008F929F92AF92BF92CF92DF92EF92FF92E1
:102730000F931F93CF93DF93803891050CF057C010
:10274000603471050CF053C07B0137E0E322FF24B5
:1027500033E0759567953A95E1F7DB01B695BA2FA9
:10276000AA27B795A7955D01C0E8AC0EB11CA80ECD
:10277000B91EA80FB91FAE5CBC4F00E810E0081BE3
:10278000190B90E080E0E8E0F0E04F018E189F0820
:1027900030E0FA01E80FF91FC4917D906D01D1E09E
:1027A000CD1AD1080E2C01C0CC0F0A94EAF77C2A6E
:1027B000E6017882E114F10499F06730710581F047
:1027C000E491EC01CA0DDB1DCE5CDC4FF0E0082C7F
:1027D00002C0F595E7950A94E2F7F881EF2BE883BC
:1027E0000196821793071CF40817190791F6DF91D9
:1027F000CF911F910F91FF90EF90DF90CF90BF90FE
:10280000AF909F908F907F906F900895AF92BF92FE
:10281000CF92DF92EF92FF920F931F93CF93DF93AC
:102820006C017B018B01040F151FEB015E01AE18DB
:10283000BF08C017D10759F06991D601ED91FC91FD
:102840000190F081E02DC6010995892B79F7C5012A
:10285000DF91CF911F910F91FF90EF90DF90CF907C
:10286000BF90AF900895FC01538D448D252F30E02B
:10287000842F90E0821B930B541710F0CF9608958D
:1028800001970895FC01918D828D981761F0A28DBA
:10289000AE0FBF2FB11D5D968C91928D9F5F9F7380
:1028A000928F90E008958FEF9FEF0895FC01918D36
:1028B000828D981731F0828DE80FF11D858D90E0A3
:1028C00008958FEF9FEF0895FC01918D228D892F40
:1028D00090E0805C9F4F821B91098F739927089528
:1028E00082E397E00E94641421E0892B09F420E040
:1028F000822F089580E090E0892B29F00E947014C7
:1029000081110C9400000895FC01A48DA80FB92F2B
:10291000B11DA35ABF4F2C91848D90E001968F7307
:102920009927848FA689B7892C93A089B1898C9126
:10293000837080648C93938D848D981306C0028875
:10294000F389E02D80818F7D80830895EF92FF923F
:102950000F931F93CF93DF93EC0181E0888F9B8DC2
:102960008C8D98131AC0E889F989808185FF15C07C
:102970009FB7F894EE89FF896083E889F98980819F
:102980008370806480839FBF81E090E0DF91CF916E
:102990001F910F91FF90EF900895F62E0B8D10E090
:1029A0000F5F1F4F0F731127E02E8C8D8E110CC0FF
:1029B0000FB607FCFACFE889F989808185FFF5CF4A
:1029C000CE010E948414F1CFEB8DEC0FFD2FF11D91
:1029D000E35AFF4FF0829FB7F8940B8FEA89FB8987
:1029E00080818062CFCFCF93DF93EC01888D8823E5
:1029F000B9F0AA89BB89E889F9898C9185FD03C062
:102A0000808186FD0DC00FB607FCF7CF8C9185FF46
:102A1000F2CF808185FFEDCFCE010E948414E9CFF3
:102A2000DF91CF910895833081F028F4813099F0BF
:102A30008230A9F008958730A9F08830C9F0843039
:102A4000B1F4809180008F7D03C0809180008F77EA
:102A500080938000089584B58F7784BD089584B5F0
:102A60008F7DFBCF8091B0008F778093B000089569
:102A70008091B0008F7DF9CFCF93DF93282F30E086
:102A8000F901EB59FD4D8491F901EF5AFD4DD491B7
:102A9000F901E35CFD4DC491CC23A1F081110E94AA
:102AA0001315EC2FF0E0EE0FFF1FED5CFD4DA5912F
:102AB000B491EC91ED2381E090E009F480E0DF91A6
:102AC000CF91089580E090E0FACF1F93CF93DF93EA
:102AD000282F30E0F901EB59FD4D8491F901EF5AAF
:102AE000FD4DD491F901E35CFD4DC491CC23A9F0D7
:102AF000162F81110E941315EC2FF0E0EE0FFF1F2F
:102B0000E75DFD4DA591B4918FB7F894EC9111114B
:102B100008C0D095DE23DC938FBFDF91CF911F914A
:102B20000895DE2BF8CFCF93DF9390E0FC01EF5AAE
:102B3000FD4D2491835C9D4DFC0184918823C9F057
:102B400090E0880F991FFC01E15EFD4DA591B491C5
:102B5000FC01E75DFD4DC591D49161110DC09FB79A
:102B6000F8948C91209582238C9388812823288344
:102B70009FBFDF91CF910895623051F49FB7F894D1
:102B80003C91822F809583238C93E8812E2BEFCF6D
:102B90008FB7F894EC912E2B2C938FBFEACF1F9315
:102BA000CF93DF93182FEB0161E00E9493152097DC
:102BB00039F460E0812FDF91CF911F910C9465155E
:102BC000CF3FD10511F461E0F5CFE12FF0E0EB59F3
:102BD000FD4DE491E33031F140F4E130B1F0E23009
:102BE000E1F0C038D1057CF7E4CFE73029F1E830D7
:102BF00059F1E430B1F780918000806280938000C9
:102C0000D0938B00C0938A0004C084B5806884BDD3
:102C1000C7BDDF91CF911F91089584B5806284BDB7
:102C2000C8BDF7CF80918000806880938000D093EA
:102C30008900C0938800EDCF8091B00080688093B8
:102C4000B000C093B300E5CF8091B0008062809364
:102C5000B000C093B400DDCF3FB7F8948091F2028A
:102C60009091F302A091F402B091F50226B5A89BD1
:102C700005C02F3F19F00196A11DB11D3FBFBA2F0E
:102C8000A92F982F8827BC01CD01620F711D811DCE
:102C9000911D42E0660F771F881F991F4A95D1F753
:102CA00008958F929F92AF92BF92CF92DF92EF9250
:102CB000FF924B015C010E942C166B017C010E946B
:102CC0002C166C197D098E099F09683E7340810599
:102CD0009105A8F321E0821A9108A108B10888EEB5
:102CE000C80E83E0D81EE11CF11C81149104A104DC
:102CF000B10429F7FF90EF90DF90CF90BF90AF9095
:102D00009F908F9008952FB7F8946091EE02709184
:102D1000EF028091F0029091F1022FBF089584E9B3
:102D20008093BC008091BC0084FDFCCF089580930B
:102D3000BB0084E88093BC008091BC0087FFFCCF7F
:102D4000089584EA8093BC008091BC0087FFFCCF8B
:102D500088E70C9497160E94A11680E48093BB002C
:102D600084E88093BC00E2E3F3E09091BC0097FF1D
:102D7000FCCF91919093BB008093BC0097E0E2332D
:102D8000F90799F78091BC0087FFFCCF0C948F1650
:102D9000CF93C82F0E94A11680E00E9497168C2F17
:102DA0000E949716CF910C948F16480F592F511DE2
:102DB0004138510514F040E850E0481BFB0177FD15
:102DC000379633E0F595E7953A95E1F7F695FE2FBE
:102DD000EE27F795E795E80FF91FEE5CFC4F67705B
:102DE000772781E090E001C0880F6A95EAF7382FD5
:102DF000213041F4415078F08191DF011197832B0C
:102E00008C93F8CF8095415030F09191DF0111976C
:102E100098239C93F8CF0895CF92DF92EF92FF9280
:102E20000F93CF93DF936C017B01C42FD22F202F00
:102E30000E94D516B7016D0F711D61507109603484
:102E400071052CF4202F4C2FC6010E94D516202F7F
:102E50004D2FB701C6010E948712C6018C0F911D2C
:102E6000202F4D2FB7010197DF91CF910F91FF9048
:102E7000EF90DF90CF900C9487122F923F924F9259
:102E80005F926F927F928F929F92AF92BF92CF92FA
:102E9000DF92EF92FF920F931F93CF93DF93CDB703
:102EA000DEB72A970FB6F894DEBF0FBECDBF9A8368
:102EB00089836A3061F5DC0152968C91B8E08B9F72
:102EC00090011124E981FA8186859785820F931FED
:102ED000978786871586148681E090E02A960FB63C
:102EE000F894DEBF0FBECDBFDF91CF911F910F9140
:102EF000FF90EF90DF90CF90BF90AF909F908F901A
:102F00007F906F905F904F903F902F9008956D301D
:102F100019F329813A813A872987D9011C96AD9006
:102F2000BC90B0E8AB16B1040CF07BC0F901C684CC
:102F3000D784F0E4CF16D1040CF073C0D9015296B7
:102F40006C90529745E09501649E200D311D11242F
:102F5000121613060CF065C0262C312C910153E09B
:102F6000220F331F5A95E1F72C0D3D1D1216130643
:102F70000CF057C05196BC91BB83E985FA85F08966
:102F8000FC83649FB00111249B01215E324E3A8381
:102F90002983712CE981FA818491F5E07F1201C0C7
:102FA00080E0460138E0532E282F30E03E832D8309
:102FB0004C8080FF4B80411004C03B818C813817CE
:102FC000E1F010E000E00615C0F4D501A00FB11F3C
:102FD000B887AF83F12CE12CE61460F4B701680DDB
:102FE000791D442D8F8198850E946912BFEFEB1ADD
:102FF000FB0AF2CF0F5F1F4FE6CF8D819E81959523
:1030000087955A94820C931C5110CECF7394E9810A
:10301000FA813196FA83E983A20CB31CF6E07F12A1
:10302000B9CFA985BA8552962C915297422F50E07C
:103030001C968D919C91B6E02B9F800D911D1124C3
:10304000E985FA85958784872389222309F444CF6B
:103050006AEF64039001659F300D112420583F4FA3
:10306000281739070CF038CFDF010190F081E02DEF
:103070000190F081E02D6AE0CD0109952DCF0F93ED
:103080001F93CF93DF938C01D0E0C0E0F801EC0FE9
:10309000FD1F6491662341F08FEC97E00E943D177D
:1030A000892B11F02196F2CFCE01DF91CF911F91A4
:1030B0000F910895682F8FEC97E00C943D170895B9
:1030C00090E080E0089580917A00806980937A0092
:1030D0008EE480937C0061E070E080E090E00E94EC
:1030E000511683B7817F826083BF80E130E020E0AA
:1030F00093B7916093BF889593B79E7F93BF90914C
:103100007A0096FDFCCF4091780050917900240F11
:10311000351F815069F780917A008F7780937A000C
:1031200084E0369527958A95E1F750E040E064EB1E
:103130007BE281E190E00E945734C90108958091BB
:103140007A00806980937A0088EC80937C006AE042
:1031500070E080E090E00E94511683B7817F82602A
:1031600083BF80E270E060E093B7916093BF889581
:1031700093B79E7F93BF90917A0096FDFCCF2091EC
:10318000780030917900620F731F815069F7809148
:103190007A008F7780937A00769567957695679514
:1031A00062527A4090E080E00E94223326EF38E2BB
:1031B0004CE151E40E942735089590917A0090697E
:1031C00090937A008E50806480937C0083B7817FD7
:1031D000826083BF20E290E080E033B7316033BF8C
:1031E000889533B73E7F33BF30917A0036FDFCCFF0
:1031F0004091780050917900840F951F215069F714
:1032000020917A002F7720937A0025E09695879574
:103210002A95E1F708958FE00E94DD18A091F90248
:10322000B091FA029C010E94AB340E94243328E53D
:1032300039E743E353E40E9427350E94A035CB01D0
:10324000089580910203882369F086E00E943C156E
:10325000892B41F06AE070E080E090E00E94511616
:103260001092020308956F927F928F929F92AF9275
:10327000BF92CF92DF92EF92FF920F93CF93DF93A3
:103280007C01C62F01E020E340E370E060E00E9493
:10329000B012570123E0A20EB11C00E02AE24AE27C
:1032A00063E070E0C5010E94B01270E060E0C70109
:1032B0000E94541367013FE2C30ED11C70E060E02E
:1032C000C6010E9454136FE270E0C7010E945413BC
:1032D0006FE270E0C6010E945413EC2FF0E0EE0F95
:1032E000FF1FE556FE4F8080918053E0E52EF12CC4
:1032F000D12CC12C60E8662E712CD0E0C0E0FE011C
:1033000033E0F595E7953A95E1F7EC0DFD1DE80DF5
:10331000F91DE491CE0187709927930102C035957C
:1033200027958A95E2F7C901F0E0E223F923EF2B14
:1033300069F0CE01880F991F8C0F9D1F01E023E0DB
:1033400043E0B7018A0D9B1D0E94B0122196CE303A
:10335000D105A9F632E0C30ED11C83E0E80EF11CC2
:103360002DE2E216F10449F6DF91CF910F91FF9023
:10337000EF90DF90CF90BF90AF909F908F907F9015
:103380006F9008950F931F93CF93809159018823D5
:1033900099F0CFEF0FEE11E061E085E00E94651536
:1033A000C8010197F1F760E085E00E946515C8014A
:1033B0000197F1F7C15081F7CF911F910F910895B7
:1033C0002F923F924F925F926F927F928F929F9235
:1033D000AF92BF92CF92DF92EF92FF920F931F9323
:1033E000CF93DF9310E000E0D0E0C0E03EE3E32EB7
:1033F000F12C40ECC42ED12CAA24A394B12C60E271
:10340000662E712C70E4272E312C4C2E86E00E9403
:103410003C1521E0892B09F020E020930203F09273
:103420003103E0923003D0922F03C0922E03B0926A
:103430002D03A0922C0382E890E090932B038093BD
:103440002A0380912A0390912B0395958795582EF6
:103450009FE1591243C0F0923103E0923003D092C1
:103460002F03C0922E03B0922D03A0922C03EEEBFB
:10347000F0E0F0932B03E0932A039FE5592E0E947E
:103480007B1382E08093E1071093DC070093DB0756
:10349000E0E3F0E0F093DE07E093DD078EE50E94C5
:1034A0005A181092DC071092DB077092DE076092C8
:1034B000DD07912C812C841438F580912003F401D0
:1034C00096E0989FE00DF11D1124E55AFE4F808192
:1034D0000E945A18EFEF8E1A9E0AEDCFF0E65F12A7
:1034E000CECFF0923103E0923003D0922F03C092FE
:1034F0002E03B0922D03A0922C0330922B03209226
:103500002A0380E2582EBBCF1093DC070093DB0721
:103510007092DE076092DD07852D0E945A180E9486
:1035200021190E94AB1686E00E943C15892B09F0F8
:1035300088CF80910203811184CF80902003F6E030
:103540008F9E40011124C401855A9E4F4C01FC01FD
:10355000EC0FFD1F50820E94C2196AE070E080E00B
:1035600090E00E9451162196005F1F4FC530D10593
:1035700009F04BCFF4011582852DDF91CF911F917A
:103580000F91FF90EF90DF90CF90BF90AF909F9002
:103590008F907F906F905F904F903F902F90089505
:1035A0002F923F924F925F926F927F928F929F9253
:1035B000AF92BF92CF92DF92EF92FF920F931F9341
:1035C000CF93DF93CDB7DEB76E970FB6F894DEBF1B
:1035D0000FBECDBF80912703882309F4A7C11092A5
:1035E000D5021092D6021092D7021092D802809083
:1035F000D5029090D602A090D702B090D802409009
:103600001403509015036090160370901703A301E4
:103610009201C501B4010E94BA346B017C0120E023
:1036200030E0A9010E94CF3518160CF0A2C1C701E5
:10363000B6010E94A0351B017093D4026093D3029F
:1036400080915401882309F498C1609121037091FD
:10365000220380912303909124030E9499356E8B5D
:103660007F8B888F998FB10190E080E00E94223398
:10367000162F7E8F8D8F092FA090D102B090D2028D
:1036800080910A0190910B01A0910C01B0910D0164
:103690008D839E83AF83B887809106019091070147
:1036A000A0910801B091090189879A87AB87BC87EF
:1036B0008091020190910301A0910401B091050154
:1036C0008D879E87AF87B88B70E060E0211431044E
:1036D00009F47BC0B1016A197B0990E080E00E9487
:1036E00022336A8B7B8B8C8B9D8B6091CF02709188
:1036F000D002C501880F991F681B790B620D731DDD
:1037000090E080E00E94223369837A838B839C83DC
:1037100029853A854B855C855F776D817E818F81B8
:1037200098859F770E94BB342D853E854F855889AB
:103730005F770E94BB346B017C01AC019B016D8102
:103740007E818F8198850E942735212F3E8D4D8D5A
:10375000502F0E9483332B013C01A70196016985FC
:103760007A858B859C850E9427352A893B894C89DF
:103770005D890E9483339B01AC01C301B2010E94A9
:10378000BB342B013C01A70196016D857E858F8599
:1037900098890E94273529813A814B815C810E945A
:1037A00083339B01AC01C301B2010E94BB3423E30C
:1037B00033E343E550E40E9483330E949935198B2B
:1037C0009E8D9A8FAD8DAB8F0C8F8E899F89680FE0
:1037D000791F77FF02C070E060E0611592E0790721
:1037E00014F06FEF71E0072E000C880B990B0E940C
:1037F00024336B017C01C0922103D0922203E0921A
:103800002303F092240323E333E343E750E4612FDF
:103810007E8D8D8D902F0E948333A70196010E948B
:10382000833329893A8D4B8D5C8D0E9483332D81A2
:103830003E814F8158850E94BB3460930A0170938A
:103840000B0180930C0190930D012AE939E949E1BC
:103850005FE3612F7E8D8D8D902F0E948333A701B2
:1038600096010E9483332A893B894C895D890E9495
:10387000833329853A854B855C850E94BB346093F0
:1038800006017093070180930801909309012AE9CA
:1038900039E949E95EE3612F7E8D8D8D902F0E947D
:1038A0008333A70196010E94833329813A814B819A
:1038B0005C810E9483332D853E854F8558890E9407
:1038C000BB346093020170930301809304019093D1
:1038D0000501B092D002A092CF023092D202209283
:1038E000D102609121037091220380912303909172
:1038F00024030E94993589E06E960FB6F894DEBFD6
:103900000FBECDBFDF91CF911F910F91FF90EF9030
:10391000DF90CF90BF90AF909F908F907F906F90EF
:103920005F904F903F902F900C94CF15809126037D
:10393000609150017091510181110EC0809112036C
:103940009091130320912503BC01222329F060915B
:103950004F01680F792F711D90E080E00E942233A3
:103960006093D5027093D6028093D7029093D802C9
:103970003ECEC701B60190585CCE20E030E040E07A
:103980005FE3C301B2010E94BB349B01AC01C501DE
:10399000B4010E94CF3518164CF4109221031092F6
:1039A000220310922303109224039BCF80E090E027
:1039B000AFE7B3E48093210390932203A093230302
:1039C000B09324038ECF4F925F926F927F928F922B
:1039D0009F92AF92BF92CF92DF92EF92FF92CF93DE
:1039E000DF938090FB029090FC02A090FD02B090CB
:1039F000FE02C0912003D0E0C501B4010E949935B8
:103A00006B017C0120E030E048E453E4C501B401DF
:103A10000E941D3393E0CC0FDD1F9A95E1F7C25F42
:103A2000DE4F87FF31C02881398150E040E02551C9
:103A3000310941095109C701B6010E94B93728EC83
:103A400030E040E050E00E945734CA01B9016B5E9B
:103A50007F4F8F4F9F4F0E942433609314037093C6
:103A600015038093160390931703DF91CF91FF9076
:103A7000EF90DF90CF90BF90AF909F908F907F900E
:103A80006F905F904F9008954A805B80712C612CFD
:103A900020E030E04CE853E4C501B4010E941D333E
:103AA00087FF1FC088809980B12CA12CA7019601A7
:103AB000285C310941095109C301B201681979092A
:103AC0008A099B090E94B93720E530E040E050E0C8
:103AD0000E945734CA01B901680D791D8A1D9B1DCA
:103AE000BACF2C813D8150E040E0241935094609C8
:103AF0005709C701B60168517140810991090E94B7
:103B0000B93720E530E040E050E00E945734CA0168
:103B1000B901640D751D861D971D9DCFFC01019097
:103B20000020E9F73197AF01481B590BBC018FEC1E
:103B300097E00C9406148F929F92AF92BF920F93CE
:103B40001F93CF93DF93CDB7DEB7A1970FB6F8944D
:103B5000DEBF0FBECDBF19A2423008F44AE08E018D
:103B60000F5D1F4F842E912CB12CA12CA501940127
:103B70000E948934E62FB901CA01EA30F4F4E05D0D
:103B8000D801EE938D01232B242B252B79F790E080
:103B900080E0109719F0CD010E948E1DA1960FB6FE
:103BA000F894DEBF0FBECDBFDF91CF911F910F9173
:103BB000BF90AF909F908F900895E95CE1CF6F9296
:103BC0007F928F929F92AF92BF92CF92DF92EF92AD
:103BD000FF920F931F93CF93DF93B090200377242E
:103BE0007394B11001C0712C80914E018150990BDA
:103BF0001092310310923003880F991F90932F0376
:103C000080932E0381E090E090932D0380932C030A
:103C10008B2D90E0880F991F90932B0380932A039C
:103C200086E00E943C1521E0892B09F020E02093DA
:103C30000203FF24F39472E0972EE6E08E2EFCE060
:103C4000CF2ED12C0E947B13C0912A03D0912B033D
:103C5000D595C795EC2E8E011127C801870D911DB2
:103C600077FC9A958B199109712C97FD06C08330CA
:103C7000910514F082E090E0782EF092E007109227
:103C8000DF079092E1071092DC071092DB07109299
:103C9000DE071092DD0784E19DE10E943F1810923B
:103CA000E007F092DF071092DC071092DB07A72CE9
:103CB000072C000CBB08C501019654E0880F991F22
:103CC0005A95E1F79093DE078093DD0782E19DE14D
:103CD0000E943F186C2E671890E080E098012A1926
:103CE0003B09590120914E018C010F5F1F4F621655
:103CF000D0F4D092DC07C092DB07980144E0220F99
:103D0000331F4A95E1F73093DE072093DD078A0DD4
:103D10009B1D889E9001899E300D1124C901855AF2
:103D20009E4F0E948E1DC801639403301105D1F689
:103D30000E9421190E94AB1686E00E943C15892B37
:103D4000B9F480910203811113C00E94C219E0925C
:103D50002003DF91CF911F910F91FF90EF90DF90A3
:103D6000CF90BF90AF909F908F907F906F9008956D
:103D7000BC2E68CFCF92DF92EF92FF92CF93DF936A
:103D800097FF19C06B017C018DE20E945A18EC016B
:103D900066277727CB016C197D098E099F094AE0B8
:103DA0000E949B1D8C0F9D1FDF91CF91FF90EF9084
:103DB000DF90CF9008954AE0DF91CF91FF90EF9090
:103DC000DF90CF900C949B1D4F925F926F927F92E9
:103DD0008F929F92AF92BF92CF92DF92EF92FF921B
:103DE0000F931F93CF936B017C01742EAC019B0149
:103DF0000E942C36882399F08FEB92E0CF911F918F
:103E00000F91FF90EF90DF90CF90BF90AF909F9079
:103E10008F907F906F905F904F900C948E1D460115
:103E20005701E894B7F82FEF3FEF4FE75FE7C50181
:103E3000B4010E942C3681110DC02FEF3FEF4FE7E8
:103E40005FE7C501B4010E941D3318161CF483EC12
:103E500092E0D4CF2FEF3FEF4FE75FE4C701B60109
:103E60000E94CF3518161CF487EC92E0C7CF2FEFD5
:103E70003FEF4FE75FECC701B6010E941D3387FD9E
:103E8000F3CF20E030E0A901C701B6010E941D3345
:103E900010E000E087FF08C08DE20E945A188C01F4
:103EA000F7FAF094F7F8F094C0E060E070E080E09A
:103EB0009FE37C1641F020E030E040E251E40E94B4
:103EC0002735CF5FF6CFA70196010E94BB342B01A7
:103ED0003C010E94A0354B015C014AE00E949B1D01
:103EE0007C01E00EF11ECC23B1F1C501B4010E94AA
:103EF00022339B01AC01C301B2010E94BA344B01D1
:103F00005C018EE20E945A18E80EF91EC15018F1A9
:103F100020E030E040E251E4C501B4010E94833367
:103F20002B013C010E94A0354B01B12CA12C4AE091
:103F3000C501B4010E949B1DE80EF91EC501B40124
:103F40000E9422339B01AC01C301B2010E94BA342A
:103F50004B015C01DBCFC701CF911F910F91FF9007
:103F6000EF90DF90CF90BF90AF909F908F907F9019
:103F70006F905F904F9008954F925F926F927F92F3
:103F80008F929F92AF92BF92CF92DF92EF92FF9269
:103F90000F931F93CF93DF93C82F81E0DC2FD82797
:103FA000D093E007C093DF078093E1070C2F2EE04A
:103FB00046E661E370E081E090E00E940C172091FA
:103FC000280330912903253F81E03807B8F4A4E69F
:103FD000B0E00E94AB3424EF31E040E050E00E94BA
:103FE0005734BA01A9014E5F5F4F6F4F7F4F2EE0EC
:103FF00061E370E081E090E00E94B0128090D50211
:104000009090D602A090D702B090D802C501B4011A
:104010000E9499359B01AC01A4E6B0E00E94763481
:1040200024EF31E040E050E00E94573429013A018A
:1040300082E0480E511C611C711CC20102970C2FBA
:104040002DE043E062E370E00E94B012620183E081
:10405000C81AD10824E045E06CE370E0C6010E9474
:10406000B01281E0481A510831E3E32EF12C4D2FB4
:10407000B701C2010E9469128FEFE81AF80A8DE3B6
:10408000E816F104A1F7ED2E04E025E047E552E142
:104090006BE370E0C6010E94D2120C2F2EE047E1C4
:1040A00061E370E088E690E00E940C1760912103C4
:1040B0007091220380912303909124030E949935EB
:1040C0009B01AC012F5F310941095109A7E1B0E023
:1040D0000E947634CC24C394DD24DA94ED2CFD2C9C
:1040E000A70196010E945734422F2EE061E370E051
:1040F00088E690E00E94B012C093E007D093DF07FB
:1041000082E090E09093DC078093DB0707E310E008
:104110001093DE070093DD0740E0C501B4010E9463
:10412000E41E88EF0E945A1885E592E10E943F182C
:1041300089E690E09093DC078093DB071093DE071D
:104140000093DD0760912103709122038091230386
:10415000909124030E9499359B01AC012F5F310996
:1041600041095109A4E6B0E00E947634A701960106
:104170000E945734CA01B9010E94BA1E83E592E138
:104180000E943F18D093E007C093DF07DF91CF91E3
:104190001F910F91FF90EF90DF90CF90BF90AF9065
:1041A0009F908F907F906F905F904F9008950E94A6
:1041B000F7371F93CF93DF93EC01162F0E94413402
:1041C000181739F0612FCE01DF91CF911F910C9418
:1041D0004934DF91CF911F910895AF92BF92CF9252
:1041E000DF92EF92FF920F931F93CF93DF93609133
:1041F000530182E090E00E94D9206091520183E057
:1042000090E00E94D9206091510184E090E00E94EA
:10421000D9206091500185E090E00E94D920609102
:104220004F0186E090E00E94D9206091570187E01D
:1042300090E00E94D9206091560188E090E00E94B1
:10424000D9206091550189E090E00E94D9206091C9
:104250008B018AE090E00E94D920609154018BE0AC
:1042600090E00E94D920609159018CE090E00E947A
:10427000D920609120038DE090E00E94D9206091C8
:104280004E018EE090E00E94D92060915A018FE0AB
:1042900090E00E94D9206091FF0280E190E00E94AE
:1042A000D92060911D0381E190E00E94D9206091A6
:1042B000010382E190E00E94D9206091000383E134
:1042C00090E00E94D92084E1E82EF12C10E006E075
:1042D00080914E011817B8F5109F60011124D0E0AD
:1042E000C0E0FE01EC0DFD1DE55AFE4F6081C701E7
:1042F0008C0F9D1F0E94D9202196C630D10589F7C9
:10430000670186E0C80ED11C88E0189FE0011124E7
:10431000C25FDE4F8EE0E80EF11C69812296C60175
:104320000E94D920560182E0A80EB11CFE013297EE
:104330006081C60101960E94D9206501AE14BF04B8
:1043400061F71F5FC5CFDF91CF911F910F91FF9054
:10435000EF90DF90CF90BF90AF9008958F929F9293
:10436000AF92BF92CF92DF92EF92FF92CF936FEF17
:1043700070E089E00E94CF158BEA94E00197F1F795
:104380008EE00E94DD187C018AE00E943C1590912D
:10439000CE02981729F091E0909318038093CE02F3
:1043A000809101019FEF980F90930101811106C048
:1043B0000E940B1990931F0380931E0360912103A9
:1043C0007091220380912303909124030E949935D8
:1043D00089E00E94CF158090FB029090FC02A09093
:1043E000FD02B090FE02B70190E080E00E9422330F
:1043F000A50194010E94BA342DEC3CEC4CE45DE341
:104400000E948333A50194010E94BB346093FB0298
:104410007093FC028093FD029093FE020E94E31CC5
:10442000609128037091290390E080E00E9422337C
:104430006B017C012091D5023091D6024091D702C8
:104440005091D8020E941D338111BAC020911403EB
:10445000309115034091160350911703C701B6011F
:104460000E94BA346B017C0120E030E0A9010E9477
:10447000CF3518160CF09AC020E030E040EA50E446
:10448000C701B6010E94CF3518160CF499C060918F
:1044900012037091130390E080E00E942233209178
:1044A00014033091150340911603509117030E9495
:1044B000BA346B017C0120E030E0A9010E94CF35C5
:1044C00018160CF08CC0C701B6010E94A03570937D
:1044D000D4026093D3026530710508F084C08091E6
:1044E0008C01811105C08091580181110E94C2196F
:1044F00081E080938C011092580180912803909163
:104500002903853F21E0920710F0109200012091CD
:104510000001211141C0843F9140F0F56FEF70E040
:1045200089E00E94CF150E94C219C1E0C09300012A
:104530000E94DF1D0E94ED20C09318038EE00E94B0
:10454000DD18BC0190E080E00E9422336093FB0202
:104550007093FC028093FD029093FE0210920C0374
:1045600080911203909113032CE231E030933103D8
:104570002093300320E233E030932F0320932E0367
:104580002AE030E030932D0320932C03880F991FED
:1045900090932B0380932A03CF91FF90EF90DF90AD
:1045A000CF90BF90AF909F908F90089520E030E023
:1045B00040EA50ECC701B6010E941D3387FF67CF68
:1045C0006091140370911503809116039091170365
:1045D0000E94A035709329036093280358CFC70128
:1045E000B601905872CF10928C0187CF0C94413451
:1045F0002F923F924F925F926F927F928F929F92F3
:10460000AF92BF92CF92DF92EF92FF920F931F93E0
:10461000CF93DF938C0186E08093E10781E0809364
:10462000E0071092DF076091EB027091EC02072E19
:10463000000C880B990B0E9424332B013C0145EEA2
:10464000C42E42E0D42E7601C2E0D0E05AE0A52E7E
:10465000B12CBE010D2E000C880B990B0E94243347
:104660009B01AC0160E070E080E291E40E94D435EF
:104670009B01AC01C301B2010E9427350E9499350C
:10468000CB01B5010E94C937F701819391937F0156
:104690002197F8F61093EC020093EB02C9EDD2E0FB
:1046A00094E0E92EF12C22E0822E912C3AE0232E88
:1046B000312CB401092C000C880B990B0E94243377
:1046C0009B01AC0160E070E080E291E40E94D4358F
:1046D0002B013C016091EB027091EC02072E000C63
:1046E000880B990B0E942433A30192010E94273565
:1046F0000E949935CB01B1010E94C937F601208192
:104700003181821B930BF2E3F89FB001F99F700D8A
:104710001124072E000C880B990B0E94243328814A
:1047200039814A815B810E94BB342B013C0120E02E
:1047300030E0A9010E941D3381117CC0488259825A
:104740006A827B8201E022E346E270E060E0C7011A
:1047500004970E94B0128EECA82EBB24BA940FEFDF
:104760001FEF288139814A815B8160E070E080E839
:1047700090E40E94BA342B013C01B5010B2C000CD3
:10478000880B990B0E9424339B01AC01C301B20139
:104790000E94BB340E949935F092DC07E092DB075F
:1047A0007093DE076093DD07F60160817181600F11
:1047B000711F072E000C880B990B0E94BA1E0F5F09
:1047C0001F4FF2E3AF0EB11C0230110551F62496D3
:1047D00021E0821A910882E0C80ED11CECE2EE0EB4
:1047E000F11CF8E8EF16F10409F063CF00E022E0D5
:1047F00040E870E060E090E080E00E94B01220E1CC
:1048000040E860E370E090E080E00E94B012DF9149
:10481000CF911F910F91FF90EF90DF90CF90BF90BD
:10482000AF909F908F907F906F905F904F903F9050
:104830002F900895C301B20190582DEC3CEC4CE44C
:104840005FE30E948333A30192010E94BB3468831B
:1048500079838A839B8376CF4F925F926F927F9208
:104860008F929F92AF92BF92CF92DF92EF92FF9280
:104870000F931F93CF93DF93CDB7DEB72B970FB670
:10488000F894DEBF0FBECDBF90915A01E82FF0E043
:104890009F01220F331F911126C0F901E95CFD4FE2
:1048A00040815181EE24E39400E124E260E370E072
:1048B00080E390E00E94D2122B960FB6F894DEBFF0
:1048C0000FBECDBFDF91CF911F910F91FF90EF9061
:1048D000DF90CF90BF90AF909F908F907F906F9020
:1048E0005F904F900895923009F079C0E356F34EEF
:1048F0004490F901E751FE4FA080B180F12CE12CEA
:1049000004E310E393E0592E27E0622EE414A0F6AE
:10491000F501EE0DFF1D449180E1840F833008F412
:104920005CC081EF7816D1F082EF7816C1F1403F7C
:1049300090F4193710F0085F10E088E0489FA0015C
:104940001124435E5A4E602F70E028E0812F90E0E2
:104950000E948E13185F80EF782E1DC04E39D8F458
:104960001D3710F0085F10E0C02ED12C812E912C45
:10497000459DA00111244D5B5C4E23E0B601C401AE
:104980000E948E1321E042E453E1B601C401039674
:104990000E948E131C5F8FEFE81AF80AB7CF4132DE
:1049A000D0F7193710F0085F10E0C02ED12C812EFF
:1049B000912C469DA0011124455A5D4E27E0B60179
:1049C000C4010E948E1321E042E453E1B601C40108
:1049D00007960E948E13185FDECF742EDCCF80E323
:1049E00090E09093DC078093DB0784E390E0909362
:1049F000DE078093DD0781E08093E107F901EC5346
:104A0000F34E65917491CE0101960E941633CE014A
:104A100001960E948E1D50CFCF93C82F86E00E9432
:104A20003C1521E0892B09F020E0209302030E942D
:104A30007B1380912A0390912B03959587950E9473
:104A4000F8228C2F0E942C240E94AB160E94211960
:104A500086E00E943C15892B51F780910203811159
:104A6000E6CF0E94C2198091EB029091EC02CF91A7
:104A70000895109231031092300328E037E030930C
:104A80002F0320932E0324E630E030932D03209350
:104A90002C03880F991F90932B0380932A0387E0A0
:104AA0000E940C259C01220F331F30933103209369
:104AB0003003865A9F4F880F991F90932F0380933E
:104AC0002E038AE090E090932D0380932C03309383
:104AD0002B0320932A0387E00E940C259C01220FC0
:104AE000331F30933103209330030996880F991FA9
:104AF00090932F0380932E0381E090E090932D03F9
:104B000080932C0330932B0320932A0387E00C948B
:104B10000C252F923F924F925F926F927F928F92CD
:104B20009F92AF92BF92CF92DF92EF92FF920F933C
:104B30001F93CF93DF93182FE0910303F0E0EF561C
:104B4000FE4F80818150990B1092310310923003F7
:104B5000880F991F90932F0380932E0381E090E09C
:104B600090932D0380932C03812F90E0880F991F41
:104B700090932B0380932A0386E00E943C1521E04A
:104B8000892B09F020E0209302031092E00781E0D6
:104B90008093DF0738E3632EE0902A03F0902B0325
:104BA000F594E794AE2C6701DD249601211B3109B1
:104BB000629EC001639E900D1124C80FD91F2097DB
:104BC00009F1662777276C1B7D0B072E000C880BDD
:104BD000990B0E9424332AE939E949E15FE30E94F5
:104BE00083331B012C01BE01DD0F880B990B0E9442
:104BF00024339B01AC01C201B1010E94BB340E946D
:104C00009935EB010E947B138601025011094E0178
:104C100085E0B82E93E0792E7A0CC0900303D12C56
:104C200017FD20C0F601EF56FE4F80818017110658
:104C3000C9F0C4F0E1E9F1E070E060E0CF01815932
:104C400091408C159D0534F48191680F711DF6CF4C
:104C50001E2DA2CF872D8B19680FC401885491098E
:104C60000E943319BA940F5F1F4F88E3880E911C7E
:104C7000B110D3CFE1E9F1E090E080E09F0121594C
:104C800031402C153D0524F42191820F911DF6CF62
:104C90008E0D0E942C240E94AB160E94211986E0E2
:104CA0000E943C15892BA1F6809102038111D0CF7F
:104CB0000E94C2198A2DDF91CF911F910F91FF9011
:104CC000EF90DF90CF90BF90AF909F908F907F90AC
:104CD0006F905F904F903F902F9008951F920F928A
:104CE0000FB60F9211242F933F934F935F936F93BF
:104CF0007F938F939F93AF93BF93EF93FF9382E341
:104D000097E00E948414FF91EF91BF91AF919F9122
:104D10008F917F916F915F914F913F912F910F9064
:104D20000FBE0F901F9018951F920F920FB60F9203
:104D300011242F938F939F93EF93FF93E09142075A
:104D4000F09143078081E0914807F091490782FD87
:104D50001BC0908180914B078F5F8F7320914C0710
:104D6000821741F0E0914B07F0E0EE5CF84F958F31
:104D700080934B07FF91EF919F918F912F910F900F
:104D80000FBE0F901F9018958081F4CF1F920F9245
:104D90000FB60F9211242F933F938F939F93AF934E
:104DA000BF938091EE029091EF02A091F002B0913A
:104DB000F1023091ED0223E0230F2D3758F50196D3
:104DC000A11DB11D2093ED028093EE029093EF029E
:104DD000A093F002B093F1028091F2029091F3025D
:104DE000A091F402B091F5020196A11DB11D80932E
:104DF000F2029093F302A093F402B093F502BF91F4
:104E0000AF919F918F913F912F910F900FBE0F9077
:104E10001F90189526E8230F0296A11DB11DD2CF31
:104E20001F920F920FB60F9211242F933F934F931F
:104E30005F936F937F938F939F93EF93FF9383B1D0
:104E4000817029B19091F802981709F49DC030E063
:104E5000220F232F221F330B922F8093F8024091B1
:104E6000F702241709F490C02093F70220912C0335
:104E700030912D03981719F0319521953109409102
:104E80002A0350912B036091300370913103240F5A
:104E9000351F261737070CF48BC020912C03309157
:104EA0002D03981719F031952195310940912A0366
:104EB00050912B0360912E0370912F03240F351F07
:104EC000621773070CF46FC040912C0350912D03AF
:104ED000981719F051954195510920912A03309165
:104EE0002B03240F351F30932B0320932A0341E01B
:104EF000981340E02091F602421709F440C0209137
:104F00002C0330912D03981719F031952195310913
:104F100060912A0370912B03E0913003F0913103EB
:104F2000260F371F2E173F070CF44CC020912C037F
:104F300030912D03981719F0319521953109609121
:104F40002A0370912B03E0912E03F0912F03260F7B
:104F5000371FE217F3078CF120912C0330912D03BA
:104F6000981719F031952195310980912A03909174
:104F70002B03820F931F90932B0380932A0340935C
:104F8000F60281E080931803FF91EF919F918F913A
:104F90007F916F915F914F913F912F910F900FBE35
:104FA0000F901F90189520912E0330912F039BCFC7
:104FB000209130033091310396CF80912E03909150
:104FC0002F03D9CF8091300390913103D4CF18951E
:104FD000E2E3F7E01382128288EE93E0A0E0B0E013
:104FE00084839583A683B78385EA92E09183808347
:104FF00085EC90E09587848784EC90E0978786879E
:1050000080EC90E0918B808B81EC90E0938B828B95
:1050100082EC90E0958B848B86EC90E0978B868B6E
:10502000118E128E138E148EEFECF7E01382128223
:105030001682178280E1808715821482128687EBA0
:1050400092E091838083158614861786168681E008
:10505000808B118A828B138A0895CF93DF93CDB70B
:10506000DEB72C970FB6F894DEBF0FBECDBF789495
:1050700084B5826084BD84B5816084BD85B582605D
:1050800085BD85B5816085BD80916E00816080930E
:105090006E00109281008091810082608093810077
:1050A0008091810081608093810080918000816087
:1050B000809380008091B10084608093B1008091E2
:1050C000B00081608093B00080917A00846080930A
:1050D0007A0080917A00826080937A0080917A00D1
:1050E000816080937A0080917A00806880937A0052
:1050F0001092C1001092B90088E48093B8000E9419
:10510000A11680E00E94971609E712E2F801849147
:105110000E9497160F5F1F4FF2E208391F07B1F781
:105120000E948F1611E01093B8000E94AB1681E226
:105130008093D70760E08EE00E94931560E08FE0D7
:105140000E949315609121037091220380912303A3
:10515000909124030E94A035062F85E00E949315AC
:10516000602F89E00E94931562E087E00E9493150A
:1051700062E088E00E94931562E086E00E94931549
:1051800062E08AE00E9493156FEF70E089E00E9470
:10519000CF1560E085E00E94651580917A008760F8
:1051A00080937A0080917A00886080937A00789466
:1051B00010936B00109368001BBB90E080E00E948E
:1051C000F622182F81E090E00E94F622912F8F3175
:1051D000984009F0C9C082E090E00E94F622182FA2
:1051E00083E090E00E94F622912F909353018093E8
:1051F000520184E090E00E94F622182F85E090E0B2
:105200000E94F622912F909351018093500186E0E5
:1052100090E00E94F62280934F0187E090E00E9488
:10522000F6228093570188E090E00E94F622809356
:10523000560189E090E00E94F622809355018AE0B1
:1052400090E00E94F62280938B018BE090E00E9418
:10525000F62291E0811101C090E0909354018CE01E
:1052600090E00E94F62291E0811101C090E09093BD
:1052700059018DE090E00E94F622809320038EE099
:1052800090E00E94F622282E80934E018FE090E05D
:105290000E94F62280935A0180E190E00E94F6225B
:1052A00091E0811101C090E09093FF0281E190E0D4
:1052B0000E94F62280931D0382E190E00E94F62274
:1052C000182F83E190E00E94F622912F9093010322
:1052D000809300034EE0842E41E0942E5BE5A52EE2
:1052E00051E0B52E64E1E62EF12C312C231409F4A3
:1052F00047C010E000E0C701800F911F0E94F62216
:10530000F501E00FF11F80830F5F1F4F063011057D
:1053100091F7670136E0C30ED11C4EE0E40EF11C9C
:105320003401C6010E94F622082F10E0102F00273A
:10533000D3010D931C932601B2E04B0E511CC60104
:1053400001960E94F622082BF301019311933F016D
:1053500062014E145F0429F73394F8E08F0E911C1C
:1053600026E0A20EB11CC2CF68E090E080E00E946F
:10537000D9206FE181E090E00E94D9200E94ED20C9
:105380001091FF0280EC111101C088EC0E94C81638
:1053900080EA111101C081EA0E94C8161092190317
:1053A00080E280931A0380E480931B0380E680935D
:1053B0001C038091000390910103892B19F10E9435
:1053C0007B1367E088E290E00E94331987E00E9437
:1053D0002C240E94AB1668EE73E080E090E00E94FF
:1053E00051160E94C2190E94C2190E94C21990E06F
:1053F00080E00E943925209100033091010382173B
:105400009307E9F60E9463189093FA028093F902D9
:105410000E940B1990931F0380931E030091520169
:105420001091530110931303009312038EE00E9416
:10543000DD18BC0190E080E00E9422336093FB0203
:105440007093FC028093FD029093FE020E949F18CD
:105450000E94E31C20E030E040EA51E46091140334
:105460007091150380911603909117030E94BB342D
:105470006B017C01B80190E080E00E9422339B0127
:10548000AC01C701B6010E941D3387FF05C070E063
:1054900060E089E00E94CF1583B181708093F802AB
:1054A00089B190E0880F892F881F990B8093F702AC
:1054B0002091F8029091F70281E0291380E0809317
:1054C000F6028CE291E0909331038093300380E206
:1054D00093E090932F0380932E038AE090E09093C3
:1054E0002D0380932C03000F111F10932B030093A7
:1054F0002A030E94831660930E0370930F03809318
:105500001003909311030E94C2190E94C2192090A7
:105510002A0330902B03A101559547955A87498757
:10552000509313034093120386E00E943C15482ECB
:1055300081118DC080910C03882309F488C00E94DA
:10554000C2190E9483166B017C01C0920803D0929D
:105550000903E0920A03F0920B0386E00E943C15D7
:10556000892B59F40E9483166C197D098E099F09B5
:10557000643F71408105910580F30E9483166C1988
:105580007D098E099F09643F71408105910508F4EA
:105590005AC46FEF70E089E00E94CF150E94C219D3
:1055A000512CAAE06A2E712C10920303852D0E94C3
:1055B0008925582EB9E0B81738F1E82FF0E0ED5101
:1055C000F54D0C94DD37ED2A9A2D142E802E8E2E5B
:1055D000BF2ECD2EEE2EF92E032FF6E0FF2E81E00A
:1055E00080930303852D0E948925582EE2E08E17B3
:1055F00009F439C2E81708F4E9C0882309F413C193
:10560000F1E08F1709F412C10E94ED2081E0809330
:105610001803E985FA85F0931303E09312038CE2F3
:1056200091E0909331038093300380E293E0909374
:105630002F0380932E038AE090E090932D038093B4
:105640002C03C1018E7F90932B0380932A034092F9
:105650000C0380912503882309F110915501112332
:10566000E9F00E948316C0900403D0900503E090F7
:105670000603F09007036C197D098E099F0928EE37
:1056800033E040E050E00E948934211738F0109256
:1056900025030E94C21981E080935801809118036C
:1056A0008823F1F180912603882351F120E030E036
:1056B00040EA51E460911403709115038091160340
:1056C000909117030E94BB346B017C01609112031F
:1056D0007091130390E080E00E9422339B01AC01A3
:1056E000C701B6010E941D3387FF05C070E060E06E
:1056F00089E00E94CF150E94C21981E08093580171
:105700001092180310922603109227030E9483160A
:1057100060930E0370930F03809310039093110313
:105720000E94831600910E0310910F032091100325
:1057300030911103601B710B820B930B20E63AEE44
:1057400040E050E00E948934122F20930D03809195
:10575000260381110BC080915701882339F0281747
:1057600028F081E0809326030E94C21980912703CC
:1057700081110BC080915601882339F0181728F049
:1057800081E0809327030E94C2190E94AE210E94EB
:10579000D01A0E9483168091D807F62FF81B8F2FFE
:1057A0009091D907992309F464C3F093DA07109212
:1057B000D90780E090E0892B09F4A9CE0E947014EB
:1057C000882309F4A4CE0E940000A1CE23E0821712
:1057D00009F44CC134E0831317CF80914E01883017
:1057E00008F0FDCE91E0980F90934E018093200336
:1057F0000E94E019E0912003B8E0EB9FF001112432
:10580000E25FFE4F28ED30E03183208344E351E036
:105810005383428386E891E095838483AEE1B0E0D0
:10582000B783A683DCCE0E94DF1DD9CE8E010F5F29
:105830001F4F612C712C4301639478EEC72E73E0E7
:10584000D72EAA24A394B12CEE24E394E091200354
:1058500044E0E49FF0011124C3010197E80FF91F10
:10586000EE0FFF1FE25FFE4F808191819093130343
:1058700080931203A8ECB0E0B0933103A0933003FF
:10588000D0922F03C0922E03B0922D03A0922C032E
:10589000880F991F90932B0380932A03E09258015D
:1058A00086E00E943C1521E0892B09F020E020933E
:1058B00002030E947B13B2E0B093E1070E94AE2185
:1058C0000E94D01A1092DC071092DB071092DE07BC
:1058D0001092DD078EEB92E20E943F18C401B301E3
:1058E0000E94BA1E8BEC92E00E948E1D80918C016A
:1058F0001092DC071092DB07882309F48CC0E0E1EA
:10590000F0E0F093DE07E093DD0781EB92E20E9486
:105910003F181092DC071092DB0720E230E0309352
:10592000DE072093DD078AEA92E20E943F18609129
:105930002A0370912B0375956795072E000C880B31
:10594000990B0E94BA1E0E9421190E94AB1686E094
:105950000E943C15892B09F0ACCF80910203811184
:10596000A8CF80912A0390912B0395958795D80114
:105970008D939D938D010E94C2196AE070E080E0D2
:1059800090E00E945116BFEF6B1A7B0A8B0A9B0AAC
:10599000E4E06E1671048104910409F057CF6FEFB3
:1059A00070E089E00E94CF158BEA94E00197F1F74F
:1059B0000E949F180E94A0353B0178876F83A980C1
:1059C000BA800B811C81C5014E968017910708F0A3
:1059D00006CECD80DE80C8014E968C159D0508F060
:1059E000FECD87E08093030380E00E948925882311
:1059F00009F4F5CDE091200328E0E29FF0011124A5
:105A0000E25FFE4FB182A08213830283D582C482FB
:105A100077826682E4CD40E150E05093DE07409308
:105A2000DD0784EA92E20E943F186091FB027091C8
:105A3000FC028091FD029091FE020E94A03590E050
:105A400080E04AE00E949B1D1092DC071092DB0769
:105A500080E290E09093DE078093DD0788E992E290
:105A60000E943F1870CF0E94E019B9CD87E0809363
:105A7000030380914E01813009F4B1CD80E00E9492
:105A80008925882309F4ABCD8091200390914E01A4
:105A9000492F4150550B9A018417150639F481504E
:105AA00080932003915090934E0199CDE82FF0E020
:105AB000E217F307BCF78F9D8001112450E040E00E
:105AC0006F016FEFC61AD60AB801640F751F655AC9
:105AD0007E4FDB011696EC901697EC924F5F5F4F6E
:105AE0004630510589F7D60113E0AA0FBB1F1A955E
:105AF000E1F7A25FBE4F4D915C91119703E0EE0F6D
:105B0000FF1F0A95E1F7E25FFE4F51834083129633
:105B10004D915C9113975383428314964D915C9100
:105B200015975583448316964D915C915783468310
:105B30008F5FBCCF82E08093030310E0E8E2CE2EBB
:105B4000D12CFCE2AF2EBB24B394A0E28A2EA3E0BA
:105B50009A2EB4E1EB2EF12C812F0E948925182F6B
:105B6000813029F130F0823009F441C00E94ED20EB
:105B70001BCD8091520190915301B0923103A092BC
:105B8000300390922F0380922E0370922D03609227
:105B90002C03880F991F90932B0380932A0381E194
:105BA0000E940C259093530180935201D5CF809190
:105BB000500190915101D0923103C0923003E0E93D
:105BC000F1E0F0932F03E0932E0370922D03609287
:105BD0002C03880F991F90932B0380932A0382E153
:105BE0000E940C259093510180935001B5CF809174
:105BF0004F0190E0F0923103E092300328EC30E066
:105C000030932F0320932E0370922D0360922C0368
:105C1000880F991F90932B0380932A0383E10E949E
:105C20000C2580934F0198CF83E080930303F12CE0
:105C300001E010E08F2D0E948925F82E31E08317B6
:105C400009F43FC0831700F142E084138FCF8091A5
:105C5000550190E0109231031092300348E651E074
:105C600050932F0340932E0370922D0360922C03C8
:105C7000880F991F90932B0380932A0387E10E943A
:105C80000C2580935501D6CF8091570190E010925A
:105C9000310310923003ACE3B0E0B0932F03A09334
:105CA0002E0310932D0300932C03880F991F9093BC
:105CB0002B0380932A0385E10E940C2580935701D2
:105CC000B9CF8091560190E01092310310923003C9
:105CD000E8E7F0E0F0932F03E0932E0325E030E0B7
:105CE00030932D0320932C03880F991F90932B033F
:105CF00080932A0386E10E940C25809356019ACF57
:105D000084E080930303809154010E94892591E0EF
:105D1000811101C090E09093540146CC10E0B9E0AD
:105D2000EB2E05E0D02EE0920303812F0E948925FF
:105D3000182F882321F08130E1F000E009C0D092D3
:105D4000030380918B010E94892580938B0101E0E0
:105D5000F090FF0280ECF11001C088EC0E94C816A0
:105D600080EAF11001C081EA0E94C8160111DBCF60
:105D7000FDCE8091FF0281278093FF02E8CF86E06D
:105D800080930303809159010E94892591E081113C
:105D900001C090E09093590107CC80911D0390E0E1
:105DA0001092310310923003A4EFB1E0B0932F03AF
:105DB000A0932E0321E030E030932D0320932C0399
:105DC000880F991F90932B0380932A0386E00E94EB
:105DD0000C2580931D030E94C219E6CB809100031D
:105DE000909101030E943925909301038093000351
:105DF000F2CF88E08093030380915A010E948925A5
:105E000080935A01D1CB0E947B13EE24E39400E3EC
:105E100020E345EC52E270E060E088E290E00E940E
:105E2000D2120E94AB1664E670E080E090E00E941F
:105E3000511686E00E943C15892BD9F78091020308
:105E40008111F7CFC8CF8091250391E089278093F6
:105E50002503882351F00E948316609304037093F6
:105E60000503809306039093070381E08093180352
:105E7000EECB9091D707F91748F48F5F891708F098
:105E800098CC81E083BF889513BE93CC81E080934A
:105E9000D9076093D8078091D3079091D4070196D2
:105EA0009093D4078093D307A0902803B090290340
:105EB00025EFA21621E0B20608F029C18091270340
:105EC000882309F402C16FEF70E089E00E94CF15CA
:105ED0000E947B1309E113E07DE1272E73E0372E4A
:105EE000E2E08E2E912CA12CB12CF3E04F2E512C00
:105EF000612C712C0E94BE32A50194010E9457347E
:105F0000AB01BC014150510961097109D8018C9163
:105F1000682F640F613808F04EC06C9319860E9498
:105F2000BE32F985CF2ED12CF12CE12CA3019201A8
:105F30000E9457346D5F7F4F8F4F9F4FA70196018F
:105F40002617370748075907D4F5D801EC90F12CEC
:105F50000E94BE3224E130E040E050E00E9457341D
:105F60006A507109810991096E0D7F1D60347105B8
:105F700030F421E040E890E080E00E94D516F8017E
:105F8000E080F12C0E94BE3224E130E040E050E09D
:105F90000E945734DC01CB010A97A109B1098E0D8B
:105FA0009F1D21E040E470E060E00E948712F985C7
:105FB000FF5FF987B4CF6058F8016083AFCF0F5F00
:105FC0001F4F2016310609F095CF0E9483160E94BC
:105FD000223320E030E04AE755E40E9427350E9452
:105FE00024366B017C0120E030E040E853E40E945D
:105FF000833320E030E040E853E40E94BB342B01BF
:106000003C0110E000E0B801012E000C880B990B58
:106010000E942433A30192010E941D3387FF25C0F3
:106020000E94BE324B015C010E94BE3269877A87B2
:106030008B879C87C501B40120E430E040E050E04C
:106040000E9457344B0169857A858B859C8520E8B1
:1060500030E040E050E00E945734CB0141E0B40111
:106060000E9469120F5F1F4FCECF80915901882384
:1060700049F10E94BE3220E130E040E050E00E9451
:10608000573468507109810991090E9424334B01EA
:106090005C0120E030E040E852E4C701B6010E9414
:1060A000833320E030E040E852E40E94BB349B019F
:1060B000AC01C501B4010E94BB340E94993585E052
:1060C0000E94CF150E94AB1674CB8091260312E07C
:1060D00081111EC08091250313E0811119C08091A8
:1060E0008C0114E0811114C020E030E044E353E45B
:1060F00060912103709122038091230390912403E6
:106100000E941D3315E087FD03C016E001C010E0BA
:1061100080918B01882309F481C10E947B1301E0E7
:1061200020E440E870E060E090E080E00E94B0127F
:1061300081E08093E1078093E0071092DF07E12C74
:1061400000E120E143E554E270E060E090E080E0AF
:106150000E94D21283E190E09093DC078093DB07EA
:1061600084E090E09093DE078093DD078091200328
:1061700026E0829FC0011124855A9E4F0E948E1DE9
:1061800085E390E09093DC078093DB0781E090E06B
:106190009093DE078093DD0782E08093E107C12EB4
:1061A000D12C80915A01CC0CDD1C8111EAC0F60182
:1061B000ED56FD4F408151810EE02CE161E070E031
:1061C00080E590E00E94D212F601EB57FD4F40812E
:1061D0005181E12C0EE02EE061E070E081E790E07B
:1061E0000E94D21281E08093E1070E949F1820E074
:1061F00030E040EA52E40E94CF3518160CF4E0C0BB
:10620000E12C0EE02EE041E154E262E170E082E038
:1062100090E00E94D21260911E0370911F0390E0E3
:1062200080E00E94223320E030E048EC52E40E94FB
:1062300027356B017C0160911D0370E090E080E0E8
:106240000E9424339B01AC01C701B6010E941D339B
:1062500087FDCAC0E12C0EE02EE045EF53E262E27A
:1062600070E082E090E00E94D21203E110E010930F
:10627000DC070093DB0740E150E05093DE074093DA
:10628000DD070E949F1841E00E94E41E88EF0E94F3
:106290005A1883EF93E20E943F181093DC07009393
:1062A000DB0788E190E09093DE078093DD070E9492
:1062B0006318BC0190E080E00E94223320E030E0CF
:1062C0004AE754E40E94273542E00E94E41E81EF31
:1062D00093E20E943F181093DC070093DB0780E2F3
:1062E00090E09093DE078093DD0760911E0370912C
:1062F0001F0390E080E00E94223320E030E04AE774
:1063000054E40E94273541E00E94E41E8FEE93E2A0
:106310000E943F181093DC070093DB0788E290E0AF
:106320009093DE078093DD0789EE93E20E943F1889
:1063300089E390E09093DC078093DB0782E190E0B3
:106340009093DE078093DD0784E08093E1076091FE
:10635000280370912903653F91E0790708F458C03C
:1063600085EE93E20E943F1800E020E248E460E1FD
:1063700070E087E390E00E940C1780E00E94BC1F51
:10638000A1CE83E494E21330C1F058F48FE494E298
:10639000113099F089E494E2123079F08DE294E2C0
:1063A0000CC088E394E2153041F08DE394E215309F
:1063B00020F083E394E2163089F70E943F1804CF5F
:1063C0000E94831652E0660F771F881F991F5A9507
:1063D000D1F728EE33E040E050E00E94893420FFFE
:1063E0000FCF0E94C21917CF0E94831642E0660F9A
:1063F000771F881F991F4A95D1F728EE33E040E0B8
:1064000050E00E94893420FF25CF0E94C2192DCF71
:1064100090E080E04AE00E949B1DA6CF0E947B1383
:106420000E949F1820E030E040EA52E40E94CF35FD
:10643000181694F40E94831632E0660F771F881FA7
:10644000991F3A95D1F728EE33E040E050E00E94E2
:10645000893420FD0E94C21960911E0370911F03B0
:1064600090E080E00E94223320E030E048EC52E4EB
:106470000E9427356B017C0160911D0370E090E064
:1064800080E00E9424339B01AC01C701B6010E9449
:106490001D3387FF12C00E94831622E0660F771F0C
:1064A000881F991F2A95D1F728EE33E040E050E08D
:1064B0000E94893420FD0E94C21987EE93E0A5EF67
:1064C000AA16A1E0BA0608F4C5010E94F82200E06D
:1064D00023E040E860E370E090E080E00E94B012CA
:1064E00081E04CCF8F929F92AF92BF92CF92DF927A
:1064F000EF92FF92CF93DF93EC01688179818A81DB
:106500009B81611571058105910521F464E279EDA6
:106510008BE597E02DE133EF41E050E00E945734E6
:1065200049015A019B01AC01A7EAB1E40E9476340B
:106530006B017C01ACEEB4EFA50194010E948434A0
:10654000C60ED71EE81EF91EF7FE06C081E0C81A67
:10655000D108E10880E8F80AC882D982EA82FB8281
:10656000C701B6019F77DF91CF91FF90EF90DF9049
:10657000CF90BF90AF909F908F9008958F929F92F1
:10658000AF92BF92CF92DF92EF92FF9260918D0116
:1065900070918E0180918F0190919001611571052C
:1065A0008105910521F464E279ED8BE597E02DE119
:1065B00033EF41E050E00E94573449015A019B01FA
:1065C000AC01A7EAB1E40E9476346B017C01ACEE29
:1065D000B4EFA50194010E948434C60ED71EE81EB4
:1065E000F91EF7FE06C081E0C81AD108E10880E86C
:1065F000F80AC0928D01D0928E01E0928F01F09244
:106600009001C701B6019F77FF90EF90DF90CF9088
:10661000BF90AF909F908F90089560938D0170937D
:106620008E0180938F01909390010895FB01DC010E
:1066300005900D920020E1F708950E945F3308F461
:1066400081E00895E89409C097FB3EF49095809509
:10665000709561957F4F8F4F9F4F9923A9F0F92F28
:1066600096E9BB279395F695879577956795B795A6
:10667000F111F8CFFAF4BB0F11F460FF1BC06F5F8C
:106680007F4F8F4F9F4F16C0882311F096E911C09E
:10669000772321F09EE8872F762F05C0662371F0BF
:1066A00096E8862F70E060E02AF09A95660F771FD3
:1066B000881FDAF7880F9695879597F90895990FAF
:1066C0000008550FAA0BE0E8FEEF16161706E807BC
:1066D000F907C0F012161306E407F50798F0621BDD
:1066E000730B840B950B39F40A2661F0232B242BB2
:1066F000252B21F408950A2609F4A140A6958FEFD1
:10670000811D811D08950E9496330C9407340E94C8
:10671000F93338F00E94003420F0952311F00C94E6
:10672000F0330C94F63311240C943B340E9418344B
:1067300070F3959FC1F3950F50E0551F629FF001D4
:10674000729FBB27F00DB11D639FAA27F00DB11DED
:10675000AA1F649F6627B00DA11D661F829F222776
:10676000B00DA11D621F739FB00DA11D621F839FFD
:10677000A00D611D221F749F3327A00D611D231FD3
:10678000849F600D211D822F762F6A2F11249F5721
:1067900050409AF0F1F088234AF0EE0FFF1FBB1F24
:1067A000661F771F881F91505040A9F79E3F5105E3
:1067B00080F00C94F0330C943B345F3FE4F3983E4C
:1067C000D4F3869577956795B795F795E7959F5F8D
:1067D000C1F7FE2B880F911D9695879597F908951F
:1067E00097F99F6780E870E060E008959FEF80EC84
:1067F000089500240A941616170618060906089527
:1068000000240A9412161306140605060895092E8C
:106810000394000C11F4882352F0BB0F40F4BF2BFB
:1068200011F460FF04C06F5F7F4F8F4F9F4F08953B
:1068300057FD9058440F551F59F05F3F71F0479531
:10684000880F97FB991F61F09F3F79F08795089516
:10685000121613061406551FF2CF4695F1DF08C035
:10686000161617061806991FF1CF86957105610552
:1068700008940895E894BB2766277727CB0197F9FA
:106880000895F999FECF92BD81BDF89A992780B5F8
:106890000895262FF999FECF1FBA92BD81BD20BD64
:1068A0000FB6F894FA9AF99A0FBE01960895052E3C
:1068B00097FB1EF400940E946E3457FD07D00E948F
:1068C000893407FC03D04EF40C946E3450954095F7
:1068D000309521953F4F4F4F5F4F0895909580958C
:1068E000709561957F4F8F4F9F4F08950E94AB34F5
:1068F000A59F900DB49F900DA49F800D911D112414
:106900000895B7FF0C9476340E947634821B930B63
:106910000895A1E21A2EAA1BBB1BFD010DC0AA1FE0
:10692000BB1FEE1FFF1FA217B307E407F50720F0F8
:10693000A21BB30BE40BF50B661F771F881F991F73
:106940001A9469F760957095809590959B01AC01BC
:10695000BD01CF010895A29FB001B39FC001A39FC5
:10696000700D811D1124911DB29F700D811D112488
:10697000911D08955058BB27AA270E94D2340C9429
:1069800007340E94F93338F00E94003420F039F4C3
:106990009F3F19F426F40C94F6330EF4E095E7FBD0
:1069A0000C94F033E92F0E94183458F3BA17620799
:1069B00073078407950720F079F4A6F50C943A3410
:1069C0000EF4E0950B2EBA2FA02D0B01B90190010A
:1069D0000C01CA01A0011124FF27591B99F0593F4E
:1069E00050F4503E68F11A16F040A22F232F342F96
:1069F0004427585FF3CF469537952795A795F040E4
:106A00005395C9F77EF41F16BA0B620B730B840BF8
:106A1000BAF09150A1F0FF0FBB1F661F771F881FB0
:106A2000C2F70EC0BA0F621F731F841F48F4879508
:106A300077956795B795F7959E3F08F0B0CF9395FA
:106A4000880F08F09927EE0F9795879508950E9473
:106A50003B350C9407340E94003458F00E94F933FF
:106A600040F029F45F3F29F00C94F03351110C945D
:106A70003B340C94F6330E94183468F39923B1F335
:106A8000552391F3951B550BBB27AA276217730754
:106A9000840738F09F5F5F4F220F331F441FAA1FE8
:106AA000A9F335D00E2E3AF0E0E832D091505040A4
:106AB000E695001CCAF72BD0FE2F29D0660F771F52
:106AC000881FBB1F261737074807AB07B0E809F038
:106AD000BB0B802DBF01FF2793585F4F3AF09E3FBD
:106AE000510578F00C94F0330C943B345F3FE4F3A1
:106AF000983ED4F3869577956795B795F7959F5F00
:106B0000C9F7880F911D9695879597F90895E1E04B
:106B1000660F771F881FBB1F621773078407BA07AA
:106B200020F0621B730B840BBA0BEE1F88F7E09505
:106B300008950E94A0356894B1110C943B340895D7
:106B40000E94203488F09F5798F0B92F9927B751A9
:106B5000B0F0E1F0660F771F881F991F1AF0BA9501
:106B6000C9F714C0B13091F00E943A34B1E00895F1
:106B70000C943A34672F782F8827B85F39F0B93FE3
:106B8000CCF3869577956795B395D9F73EF49095B4
:106B90008095709561957F4F8F4F9F4F08950E940C
:106BA0005F3308F48FEF0895FA01EE0FFF1F309660
:106BB00021053105A1F16115710561F48038BFE34C
:106BC0009B0749F168949038810561F08038BFEFE8
:106BD0009B0741F099234AF5FF3FE1053105210567
:106BE00019F1E8940894E795D901AA2329F4AB2F69
:106BF000BE2FF85FD0F310C0FF5F70F4A695E0F7EA
:106C0000F73950F019F0FF3A38F49F779F930DD081
:106C10000F9007FC9058089546F00C94F63360E00E
:106C200070E080E89FE308954FE79F775F934F936D
:106C30003F932F930E941B372F913F914F915F916C
:106C40000E9483330C9439369F930E9494360F90A0
:106C500007FCEE5F0C94BD360E945F33880B990BE6
:106C6000089529F416F00C94F0330C943A340C94F3
:106C7000F6330E942034A8F39638A0F707F80F9255
:106C8000E8942BE33AEA48EB5FE70E9499330F92CE
:106C90000F920F924DB75EB70F920E946337E8E6EE
:106CA000F0E00E946B364F915F91EF91FF91E59577
:106CB000EE1FFF1F49F0FE57E0684427EE0F441F08
:106CC000FA95E1F74195550B0E94DD360F9007FECE
:106CD0000C94D1360895DF93CF931F930F93FF92B7
:106CE000EF92DF927B018C01689406C0DA2EEF01EF
:106CF0000E949633FE01E894A59125913591459126
:106D00005591A6F3EF010E94D234FE019701A8012C
:106D1000DA9469F7DF90EF90FF900F911F91CF9178
:106D2000DF9108950C94F6330E942034D8F3E89450
:106D3000E0E0BB279F57F0F02AED3FE049EC06C0AA
:106D4000EE0FBB0F661F771F881F28F0B23A62074D
:106D50007307840728F0B25A620B730B840BE39518
:106D60009A9572F7803830F49A95BB0F661F771F9B
:106D7000881FD2F790480C949937EF93E0FF07C033
:106D8000A2EA2AED3FE049EC5FEB0E94D2340E9478
:106D900007340F90039401FC9058E0E9F0E00C9464
:106DA000A5379B01AC0160E070E080E89FE30C94A4
:106DB00027350C94F0330C9497370E942034D8F385
:106DC0009923C9F3940F511DA3F39150504094F0AF
:106DD00059F0882332F0660F771F881F915050407A
:106DE000C1F79E3F51052CF7880F911D9695879509
:106DF00097F908955F3FACF0983E9CF0BB278695CD
:106E000077956795B79508F4B1609395C1F7BB0F77
:106E100058F711F460FFE8CF6F5F7F4F8F4F9F4FA0
:106E2000E3CF0C943B3416F00C9497370C94F63364
:106E300068940C94F0330E942034A8F39923C1F392
:106E4000AEF3DF93CF931F930F93FF92C92FDD27EC
:106E500088232AF02197660F771F881FDAF720E032
:106E600030E040E85FEB9FE3883920F0803E38F067
:106E700021968F770E94BB34EEEAF0E004C00E94B6
:106E8000BB34EBEDF0E00E946B368B01BE01EC01F0
:106E9000FB2E6F5771097595771F880B990B0E9410
:106EA000243328E132E741E35FE30E949633AF2DBC
:106EB0009801AE01FF900F911F91CF91DF910E9439
:106EC000D2340C940734FA01DC01AA0FBB1F9B01DA
:106ED000AC01BF5728F4222733274427507820C01D
:106EE000B75190F4AB2F0024469537952795011C98
:106EF000A395D2F3002071F0220F331F441FB395E6
:106F0000DAF30ED00C94BA3461307105A0E88A0728
:106F1000B94630F49B01AC01662777278827907823
:106F2000309621F0208331834283538308959F3F1D
:106F300031F0915020F4879577956795B795880F34
:106F4000911D9695879597F908959F938F937F93B9
:106F50006F93FF93EF939B01AC010E948333EF91FA
:106F6000FF910E946B362F913F914F915F910C944E
:106F70008333DB018F939F930E947634BF91AF914F
:106F8000A29F800D911DA39F900DB29F900D112483
:106F9000089597FB072E16F4009407D077FD09D0CB
:106FA0000E94E33707FC05D03EF4909581959F4FF2
:106FB0000895709561957F4F0895EE0FFF1F05901E
:106FC000F491E02D0994AA1BBB1B51E107C0AA1F35
:106FD000BB1FA617B70710F0A61BB70B881F991F7A
:106FE0005A95A9F780959095BC01CD01089581E04F
:106FF00090E0F8940C94FC37F894FFCF01FF3C220A
:107000009CCA705158C9C2D4094FD80034018601B6
:107010001E00000000000000000000000000000052
:107020000000000000000000000000000000000060
:107030000000000000000000000000000000000050
:1070400000000000000000000000013C960040012C
:1070500001280F050101014243312E3500000000D7
:107060000000000000000000000000000000000020
:107070000000000000000000000000000000000010
:10708000000000000000000101010000000B0604E8
:10709000040202020203031804FC03E003C403A871
:1070A000038C037003540338031C030003E402C879
:1070B000021804AC0290027402180458023C0274D4
:1070C00002580220023C0274020402E801CC01B022
:1070D0000194018C03780100035C0140012401A8A4
:1070E0000308017402ED04E804E304DC04D604D2CE
:1070F00004C904C604C304BE04BA04B104A7049FAF
:10710000049C049904960490048D048804850482E8
:10711000047D04780475046F046B04670462045DE5
:10712000045904540450044C04490445043C0437F5
:10713000043404CF0F7F0F2F0FDF0E8F0E3F0EEFA3
:107140000D9F0D4F0DFF0CAF0CCF0F5F0C0F0CBF41
:107150000B6F0B1F0BCF0A7F0A2F0A1F0B7F0ADF53
:10716000092F0A1F0B8F093F09EF089F084F08FFDF
:1071700007AF075F070F07BF066F061F06CF051F84
:107180000BAF1093107310F52357103B101F101BFB
:1071900012E311AB1173113B110311CB100000006E
:1071A00000A61406143314F3146414421456140085
:1071B0000000003D17061460185F186E616E0069CC
:0A71C0006E66006F7666002F330044
: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
:00000001FF
- - - -
- -
- - - - -
- - -
- - -
-
- - - - -
-
- -
-
- -
- - - - - - -
- - - You can’t perform that action at this time. -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/software/UI_upgrade_by_createskyblue/binaries/readme.txt b/software/UI_upgrade_by_createskyblue/binaries/readme.txt deleted file mode 100644 index a152dd5..0000000 --- a/software/UI_upgrade_by_createskyblue/binaries/readme.txt +++ /dev/null @@ -1,2 +0,0 @@ -avrdude -c usbtiny -p m328p -V -U lfuse:w:0xff:m -U hfuse:w:0xdb:m -U efuse:w:0xfd:m -avrdude -c usbtiny -p m328p -U flash:w:.hex diff --git a/software/UI_upgrade_by_createskyblue/img/文本/旋钮.png b/software/UI_upgrade_by_createskyblue/img/文本/旋钮.png new file mode 100644 index 0000000..736c6f0 Binary files /dev/null and b/software/UI_upgrade_by_createskyblue/img/文本/旋钮.png differ diff --git a/software/UI_upgrade_by_createskyblue/img/设置/Set19.png b/software/UI_upgrade_by_createskyblue/img/设置/Set19.png new file mode 100644 index 0000000..8850f2b Binary files /dev/null and b/software/UI_upgrade_by_createskyblue/img/设置/Set19.png differ diff --git a/software/UI_upgrade_by_createskyblue/sources/readme.txt b/software/UI_upgrade_by_createskyblue/sources/readme.txt deleted file mode 100644 index 3810c21..0000000 --- a/software/UI_upgrade_by_createskyblue/sources/readme.txt +++ /dev/null @@ -1,4 +0,0 @@ -Libraries: -https://github.com/createskyblue/Arduboy2/ -https://github.com/mblythe86/C-PID-Library/tree/master/PID_v1 -