From 2d7c368a3e93cc4f53c7ae323f78f7f561c9f842 Mon Sep 17 00:00:00 2001 From: Onwrikbaar Date: Tue, 15 Oct 2024 23:51:19 +0200 Subject: [PATCH] Basic event subscription mechanism. --- firmware/Makefile | 2 +- firmware/build/neodk_g071.hex | 2895 ++++++++++++++-------------- firmware/inc/app_event.h | 4 +- firmware/inc/attributes.h | 29 + firmware/inc/debug_cli.h | 3 +- firmware/inc/sequencer.h | 2 + firmware/{ => maolib}/inc/matter.h | 2 + firmware/maolib/libmao.a | Bin 20622 -> 23654 bytes firmware/src/attributes.c | 66 + firmware/src/controller.c | 45 +- firmware/src/debug_cli.c | 43 +- firmware/src/matter.c | 87 - firmware/src/neodk_main.c | 4 +- firmware/src/sequencer.c | 42 +- 14 files changed, 1651 insertions(+), 1573 deletions(-) create mode 100644 firmware/inc/attributes.h rename firmware/{ => maolib}/inc/matter.h (89%) create mode 100644 firmware/src/attributes.c delete mode 100644 firmware/src/matter.c diff --git a/firmware/Makefile b/firmware/Makefile index 61dbcec..361c5ca 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -41,7 +41,7 @@ PROJ_COMMON_SRC += \ $(PROJ_DIR_SRC)/pattern_iter.c \ $(PROJ_DIR_SRC)/datalink.c \ $(PROJ_DIR_SRC)/debug_cli.c \ - $(PROJ_DIR_SRC)/matter.c \ + $(PROJ_DIR_SRC)/attributes.c \ # Target-dependent include folders. STM32G0xx_INC += \ diff --git a/firmware/build/neodk_g071.hex b/firmware/build/neodk_g071.hex index 5fe6585..c43f772 100644 --- a/firmware/build/neodk_g071.hex +++ b/firmware/build/neodk_g071.hex @@ -1,1445 +1,1468 @@ :020000040800F2 -:1000000000900020812A0008D12A00085D1C000809 +:1000000000900020CD2900081D2A00088D1B000843 :1000100000000000000000000000000000000000E0 -:10002000000000000000000000000000D12A0008CD -:100030000000000000000000D12A0008B91C0008E0 -:10004000D12A0008D12A0008D12A0008D12A0008A4 -:10005000C91C0008D12A0008D12A0008691F00081D -:10006000D12A000871200008D12A0008D12A0008EE -:10007000D51F0008E51C0008551D0008091E0008D2 -:10008000D12A0008B91F0008D12A0008D12A000887 -:10009000D12A0008D12A0008D12A0008D12A000854 -:1000A000D12A0008D12A0008D12A0008D12A000844 -:0C00B000DD200008D12A0008D12A000839 +:100020000000000000000000000000001D2A000881 +:1000300000000000000000001D2A0008ED1B000861 +:100040001D2A00081D2A00081D2A00081D2A000874 +:10005000FD1B00081D2A00081D2A0008AD1E00080F +:100060001D2A0008B51F00081D2A00081D2A0008C7 +:10007000191F0008191C0008891C00083D1D0008F4 +:100080001D2A0008FD1E00081D2A00081D2A000860 +:100090001D2A00081D2A00081D2A00081D2A000824 +:1000A0001D2A00081D2A00081D2A00081D2A000814 +:0C00B000212000081D2A00081D2A00085D :1000BC0010B5064C2378002B07D1054B002B02D032 :1000CC00044800E000BF0123237010BD7000002025 -:1000DC00000000001C4A0008044B10B5002B03D094 +:1000DC0000000000BC4B0008044B10B5002B03D0F3 :1000EC000349044800E000BF10BDC04600000000FA -:1000FC00740000201C4A0008F0B50124C023844081 +:1000FC0074000020BC4B0008F0B50124C0238440E0 :10010C000B4D5B00EC500700830803203840FF27A1 :10011C00AC46C026C0008740890181409B006344E7 :10012C00B6009A59BA430A439A512C60F0BDC046A6 -:10013C0000E100E0F0B501224F46D64646460B687A -:10014C0000249146C0B5002B1AD14BE01700574341 -:10015C007B00DB19DB43C568AC4666460D691E4067 -:10016C007D433543C5604D68022D2DD07D4302681B -:10017C0013402B4303600B681A000134E24031D06A -:10018C004D461A00A5402A402B42F5D04B68013B46 -:10019C00012BDBD81700574383688D6898467B008A -:1001AC009C467D43BC44AA4646466546AE43350054 -:1001BC00564663462E438660CE6845685643954343 -:1001CC003543DB434560C6E7FF2A10D83D007D432D -:1001DC00026A2E01761BB2434E6975432A430262B2 -:1001EC004D68C3E7E0BCBA46B146A846F0BD120A5A -:1001FC0052435243456A1601B61AB5434E697243CF -:10020C002A4342624D68B1E710B511240200084838 -:10021C000B00016AA14301628020064980008862BC -:10022C00DA38FF3888610449044803F09BFBFEE789 -:10023C00002C014000040050644E0008505100088E -:10024C00FA2170B5124C05008900206802F086F97D -:10025C00802301385B04984201D3012070BDC0217A -:10026C000C4A090650600C48036A1B021B0A0B431C -:10027C0003620721002393601160032DEDD8026AFD -:10028C00A9071202120A0A43026218006560E5E728 -:10029C000000002010E000E000ED00E010B50A00C6 -:1002AC0002490348103103F05DFB10BD644E000899 -:1002BC005C51000810B50A0002490348203103F0D4 -:1002CC0051FB10BD644E00085C51000870B50C0069 -:1002DC0064260500164803F045FBDB2366435B00F0 -:1002EC00EC543100134803F03DFB5023124AD65214 -:1002FC00124B321C9E4200D91A1C114B92B29A42DC -:10030C0000D21A000D4B28349A1A0E4BE4B2534308 -:10031C008022120194460C4A63441B0B536121004A -:10032C000A4803F01FFBB823FF33EC5470BDC046E2 -:10033C0064510008845100088C000020D327000071 -:10034C00B204000049070000007400409C510008F2 -:10035C004B1E9941012310B54942994300220023B9 -:10036C000E3103F061FD10BD70B5060014001D00C8 -:10037C0082B080360092019332687368A41A9D4152 -:10038C00002D04D1074B9C4201D802B070BD08234C -:10039C006A46132103F048FD009B019C3360746096 -:1003AC00F3E7C046BFE1E40030B50100040083B0C0 -:1003BC00174803F0D7FA5023164D221CEC52164B5B -:1003CC009C4200D91A1C154B92B29A4200D21A00C8 -:1003DC00114B64219A1A124B5343802212019446FA -:1003EC00104A63441B0B53615023E85A2B005833BB -:1003FC0098836B46DC1D02F0B1F828302070012385 -:10040C0022002221E86E03F00FFD03B030BDC04680 -:10041C00845100088C000020D3270000B204000097 -:10042C004907000000740040F0B5D6464F464646DA -:10043C000300C0B5A933FF331D8902000020002D35 -:10044C0004D1E0BCBA46B146A846F0BDD4219C7A92 -:10045C004900515898881A79002C7ED1CC7AD879D9 -:10046C005200241A0120013CE4B2987248689B792E -:10047C0085189946865C6D788F7AC82B7ED80123B7 -:10048C005B424B449846042F00D89BE04B46002B14 -:10049C0005D1704B704A1800704903F073FA002CA8 -:1004AC0000D185E07B01DB1B9801C01AFA23C00048 -:1004BC00C01980019B04984274D36948002206211C -:1004CC00684B013CD8621C635A621A698A431A61F0 -:1004DC00354200D09BE0052333427ED042460221B8 -:1004EC00604B35435A63DA680A43DA605A6901395A -:1004FC000A435A614022ED4301205B4B9A61EBB2F7 -:10050C00054200D09CE0594A022190620422082046 -:10051C0019401A400340002900D08DE002205349B5 -:10052C008862002A6FD10421504A9162002B50D06E -:10053C0020224E4B9A61002352214D4A494C535272 -:10054C006363A36390692D39002203F06DFC0122D3 -:10055C00236801201343236073E701320C89D6B260 -:10056C00B4422DD07200DC790134E4B2DC71CE7A65 -:10057C00013EB44252D00020987277E7C7239846C8 -:10058C00042F8CD8334B3B4A18003B499A4603F056 -:10059C00F9F9002C0ED07B01DB1B9801C01AC000AE -:1005AC00C0198001FA21890001F0D8FF013885E7D4 -:1005BC00284B9A465046314A314903F0E3F971E72A -:1005CC000022D0E7234B2B4A18002B4903F0DAF911 -:1005DC005CE72022254B9A62ADE742460421214B71 -:1005EC0035439A63DA680A43DA605A6903390A4375 -:1005FC005A61002D1ED140221B4B9A621B4B3E3A76 -:10060C0099619A6108230421184A91618EE762214D -:10061C001C4A1048FF3103F0B5F95CE700260130A5 -:10062C0080B2DE7198800F898742A4D1013D9E80F3 -:10063C001D81A0E7ADB25DE702200C49886170E72F -:10064C00082402213C3A19401A402340074CA0616F -:10065C0061E7C046D4510008E85100083E03000091 -:10066C00FEFF0000002C0140000800500004005068 -:10067C008C000020C05100083D030000045200080B -:10068C003F0300001C520008032310B5104C114A04 -:10069C0023616361104BA261E36180239B012362A0 -:1006AC000023A3626362E36222660C4A0C4978322F -:1006BC0062661022E01DA2662367E366636703F09F -:1006CC000DFE2000074903F009FE2023A37110BD85 -:1006DC002421002038520008240100208C00002026 -:1006EC004452000848520008F8B54746CE4680B53B -:1006FC008368C56899465B1B9846436804000E00E6 -:10070C0017005819904507D9ED1903F0ADFCE560B9 -:10071C00C0BCB946B046F8BD424603F0A5FC4B46FA -:10072C003100ED19ED1A2A006068414403F09CFC7D -:10073C00E560EDE7F0B557464E464546DE46E0B57A -:10074C00354B83B09A461B78060015000191002B9F -:10075C0056D07700BB19DB0053441A6F9046DA6E03 -:10076C009146904525D8130042462C009B1A9D4279 -:10077C0009D8002C09D1200003B0F0BCBB46B2460E -:10078C00A946A046F0BD1C1EF5D0A146BB19DB0046 -:10079C005344596E220041440198A04403F064FC78 -:1007AC004C46002CE7D04346BF19FF0057443B672B -:1007BC00E1E742469B6E2C009B1A9D4227D8BB1941 -:1007CC00DB0053449B46596E22004144019803F0D0 -:1007DC004BFC5B469B6EA0442D1B434519D04B46EE -:1007EC0042469B1A99464D450DD8002DD9D0019BF8 -:1007FC00A1469C46A44463462C000193A944C5E73A -:10080C00FFF742FFA5E74D46002DCAD0EFE71C00CD -:10081C00D5E700239846E6E724210020F8B5574693 -:10082C004E46DE4645468946411CE0B517004A0057 -:10083C0052180300D2009246344A5E0093461000D0 -:10084C00F618F6005E44F36A50449846012B0CD01F -:10085C00022B27D0002B17D0002398464046F0BC23 -:10086C00BB46B246A946A046F8BDB36A726A93422B -:10087C0047D9013B9B1AB8469F4200D9984642463D -:10088C004946FFF731FFE9E7B36A726A934233D9FD -:10089C00013B9B1A9F42E1D83A004946FFF724FFDF -:1008AC00B846DBE70023746A98461DE0013B356AC5 -:1008BC001B1BBB4200D93B002D1B9D4200D91D00C8 -:1008CC005B46534458682A004946001903F0CCFB98 -:1008DC00336A6419E31A5A1E93415B421C40A844C4 -:1008EC00A9447F1B7462B9D0B36AA342DED8356ABF -:1008FC005B19013B1B1BDCE7316A5B18013B9B1A44 -:10090C00C8E7316A5B18013B9B1AB4E7242100202D -:10091C00F0B5C64600B5856843686A1C04009A4267 -:10092C0007D8036859551500C36882600133C3604A -:10093C0043689D4202D080BCB846F0BD236827694D -:10094C0098460E4B1B78002B15D0EFF31086012127 -:10095C0081F310882A0041463800FFF75FFF86F3C9 -:10096C001088A368834203D001235B42E360E2E773 -:10097C000023A360DFE7FFF787FEE6E724210020D2 -:10098C00F0B54E4645465746DE46E0B583B09A462E -:10099C000C9B80460E0015009946914200D27DE0DA -:1009AC0008000127290001F0D9FD01378542F9D94A -:1009BC00574500D2574601230D9A1A4001920D9AC1 -:1009CC0013424ED14B46002B4BD0130020249B07D7 -:1009DC005ED44F4545D201235B429C4621004046E4 -:1009EC00E144FFF795FF4346DB68002B32DB4B46B7 -:1009FC00002BEED153460124012B07D901235B4276 -:100A0C009C46E24453466C43012BF7D8210030003E -:100A1C0001F0A4FD8542F5D9214B9B4630239A4623 -:100A2C0006E02900200001F099FDAC420FD3040030 -:100A3C003000210001F018FE534658440E00C15CF2 -:100A4C004046FFF765FF4346DB68002BE9DA019B64 -:100A5C00002B19D103B0F0BCBB46B246A946A04648 -:100A6C00F0BD4346DB68002BC4DAF3E74F45F1D207 -:100A7C0001235B429C4620214046E144FFF748FF9E -:100A8C004346DB68002BE5DB4B46002BEED1E1E760 -:100A9C0053465C425C41240120349AE7012787E7E6 -:100AAC00644E000810B5080003F092FA03490200E6 -:100ABC004031034802F056FF002010BD644E000880 -:100ACC005052000810B5080003F082FA03490200E6 -:100ADC004C31034802F046FF002010BD644E000864 -:100AEC007452000810B50400806F03F099F90028C7 -:100AFC0001D1002010BD606F03F092F90028F8D0EE -:100B0C00200003F08DF9F5E770B5D02676008359F7 -:100B1C0004009847051E1BD0A65903F03BFA0100B0 -:100B2C002000B047002804D0E8210A4A0A4802F005 -:100B3C0029FFD0235B00E55003F01EFA01002000D2 -:100B4C00A847002804D0EB21024A034802F01AFF00 -:100B5C0070BDC04698520008A452000870B5D0264B -:100B6C007600835904009847051E1DD0A65903F042 -:100B7C0011FA01002000B047002805D050210B4A83 -:100B8C000B48FF3102F0FEFED0235B00E55003F072 -:100B9C00F3F901002000A847002805D0A921034A39 -:100BAC000348490002F0EEFE70BDC04698520008A2 -:100BBC00B8520008F8B50600CC360500012230000A -:100BCC0002F0AAFF012804D0C521244A244802F0CF -:100BDC00D9FE72B6BFF34F8FBFF36F8F4827214CEE -:100BEC00E35DFF2B2DD0482201333000A35402F0DB -:100BFC000DFF00280FD04825635D002B19D048222B -:100C0C00013BDBB2A354002B04D1BFF34F8FBFF3D6 -:100C1C006F8F62B6F8BD0223FF33EA56012A17D054 -:100C2C00482511491148583102F09CFE635D002B98 -:100C3C00E5D1A6210E4A0F48890002F0A3FE635DA0 -:100C4C00DDE70D4A0D490B4802F09CFEE35DCAE757 -:100C5C0080210B4A13688B431360CCE7C852000801 -:100C6C00D45200088C000020644E00080C5300087D -:100C7C0028530008D4510008E452000891020000E7 -:100C8C0000440040F0B580250400FC20C6468126B7 -:100C9C006D00635D00B55A1C625522587600D15424 -:100CAC00615DA35B994207D3275811D08222520071 -:100CBC00A05A1B18994203D0002080BCB846F0BD46 -:100CCC00802300225B003800E25403F053F8F4E771 -:100CDC00380003F02BF800280CD0380003F052F841 -:100CEC0082235B0001009846E052A84214D8615D53 -:100CFC00A35BDEE7635D013BDBB26355002BDBD00E -:100D0C000023FC302258D1184978D154625D01334C -:100D1C00DBB29A42F6D8CFE7034802F023FE002359 -:100D2C004246A352C8E7C04648530008F0B5CE4629 -:100D3C0047460B00812180B5490083B0465A69466D -:100D4C00F41DE408E400091B02AF8D4602A9884695 -:100D5C000092050000220121404602F077FF72B696 -:100D6C00BFF34F8FBFF36F8F4823244C9946E35C3E -:100D7C00FF2B35D0482228000133A35441463200C2 -:100D8C00CC3002F04BFE002814D14825635D002BBB -:100D9C001ED04822013BDBB2A354002B04D1BFF37D -:100DAC004F8FBFF36F8F62B6BD4601B0C0BCB94662 -:100DBC00B046F0BD0223FF33EA56012A18D048256D -:100DCC000F491048583102F0CDFD635D002BE0D186 -:100DDC00A6210D4A0D48890002F0D4FD635DD8E7C9 -:100DEC000B4A0C49094802F0CDFD4B46E35CC1E7C8 -:100DFC008021094A13680B431360C6E78C0000205E -:100E0C00644E00080C53000828530008D451000805 -:100E1C00E45200089102000000440040F0B5CE46B8 -:100E2C0047461500812280B55200825A83B0904605 -:100E3C00984442460400D01D6A46C008C000121AED -:100E4C0002AF954602AA914683225200A25C484604 -:100E5C00019300950B00042102F030FF72B6BFF332 -:100E6C004F8FBFF36F8F4826454DAB5DFF2B00D1E5 -:100E7C0071E048215A1CD2B26A548021414EC905F6 -:100E8C00B068496AB160884202D9F1680131F160F9 -:100E9C00002A42D04822AB54002B04D1BFF34F8F11 -:100EAC00BFF36F8F62B683204000215CB2680B00E9 -:100EBC00F6683633B6079B009208E31832435A6043 -:100ECC00072301311940215472B6BFF34F8FBFF382 -:100EDC006F8F4826AB5DFF2B44D048222000013396 -:100EEC00AB5449464246CC3002F098FD002827D13D -:100EFC0048242B5D002B1BD04822013BDBB2AB54AA -:100F0C00002B04D1BFF34F8FBFF36F8F62B6BD467A -:100F1C0001B0C0BCB946B046F0BDA6211A4A1B4868 -:100F2C00890002F02FFD4823EB5C013BDBB2B1E7FB -:100F3C00A621154A1548890002F024FD2B5DDBE73C -:100F4C000223FF33E256012A13D0114911485831BC -:100F5C0002F008FDCCE7104A10490C4802F012FDD3 -:100F6C00AB5D86E70C4A0D49084802F00BFDAB5D02 -:100F7C00B3E780210A4A13680B431360B8E7C046F5 -:100F8C008C0000200C01002028530008D4510008CC -:100F9C00644E00080C530008E45200089102000053 -:100FAC0000440040F0B5DE4657464E464546E0B597 -:100FBC008BB0834600AF08000C0003F009F815282D -:100FCC0026D011D8012839D002282DD1D549D648A0 -:100FDC006C3102F0C7FC0020BD460BB0F0BCBB4628 -:100FEC00B246A946A046F0BD17281DD1200002F03C -:100FFC00F3FF027A0400851D062A44D0082A23D068 -:10100C00022A2CD0C949CA485C3102F0ABFCE2E799 -:10101C00D42359465B00C34AC858833B0021FF3B8D -:10102C007832FFF7FBFED6E7200002F0D1FFBD4976 -:10103C0002006C31BF4802F095FCCCE7B949BE48C0 -:10104C006C3102F08FFCC6E7C188AA88BB4802F05D -:10105C0089FCB649BA48483102F084FCBBE7AA883F -:10106C00C188B84802F07EFCAA88062A00D109E1A2 -:10107C00072A00D1A6E0052A1AD0AC49B248203183 -:10108C0002F070FCA7E7AA88C188B04802F06AFC9D -:10109C00AA88072A00D1E5E0082A00D1BBE0062A7D -:1010AC0000D1CFE0A149A848343102F05BFC92E7B3 -:1010BC006B46FB60D2235A4669465B00D25810330C -:1010CC00D35C98469B007B600733DB08DB00CB1AB4 -:1010DC009D4643466C463C61002B00D15EE1D22319 -:1010EC005B00D05846460023190141589A00013341 -:1010FC00A150DAB29642F7D83B69B0469A462B001B -:10110C00022400265546994601CD01F015FAFF231D -:10111C009C4680B284459B415B420233C018013629 -:10112C002418F6B2A4B2B045EED123006A460C33B3 -:10113C009BB20733DB08DB00D31A9D466E46BE60BC -:10114C007388B41DB3800023062233807380494614 -:10115C00200002F089FF0523A37003AB7A687B6142 -:10116C0016239446012533733B69A84663445546C0 -:10117C003B6114E002220C239246337070700A3BE0 -:10118C0002045444F01844444946120C02F06CFF1B -:10119C00A3B298463B690435AB4200D1E2E02B6820 -:1011AC007E691800994601F0C7F984B24644FF2CB9 -:1011BC00E0D90D2303223370230AB3709246032324 -:1011CC007070DDE7D2235A465B00D2581233D45CE0 -:1011DC0000237A8B3B767B837B761E232900BA8394 -:1011EC00F818062202F040FF20220523BA181370CB -:1011FC002422013BBA1813702133FB181C70D42322 -:10120C005A465B00D05818229B3B0121FF3BBA1871 -:10121C00FFF704FEDFE6AB790C2B00D0DBE65A4679 -:10122C009933FF33D658EB790E34042B00D1D6E02A -:10123C00052B00D18CE01D2100230022300002F090 -:10124C00F3FDC8E6AB790C2B00D0C4E6D22158468E -:10125C002200490040588539EB790E32FF3902F0F3 -:10126C00E3FDB8E6AB79042B00D0B4E65946220076 -:10127C00A133FF33C858A43B21210D32FF3B02F0B0 -:10128C00D3FDA8E6D2225B4652009958B623FF3311 -:10129C00CB5C8A581B019C586E46200001F04CF91F -:1012AC00FF2380B283429B415B42C0180E3083B255 -:1012BC000733DB08DB00F31A9D46E84642465B88A1 -:1012CC002900938000231380538006336B44994686 -:1012DC000622180002F0C8FE05234A46200093702F -:1012EC0001F02AF983B29946FF2B4DD80C234246C4 -:1012FC00022513730E23507343440204210018007B -:10130C00120C02F0B1FE4B46D42259460C3352005B -:10131C00EB1888589BB242460121FFF77FFDB5467A -:10132C0059E6C046644E000884530008E44E000899 -:10133C0050540008745200086C53000818540008EC -:10134C003854000898530008C0530008E0530008B4 -:10135C002C490522200002F079FE1B21002800D028 -:10136C0069E769E7434645460D339BB21822796914 -:10137C004A5559469132FF3288580121BA68FFF715 -:10138C004DFDFB689D4626E642460D2313734B46E6 -:10139C001B0A937303250F235073ADE700237A8B3D -:1013AC003B767B837B761E232900BA83F8180622B2 -:1013BC0002F05AFE20220523BA181370242211338E -:1013CC00BA1813700C2294460C329046B844C4449C -:1013DC0062467A6142460125083BBA60C6E70422A0 -:1013EC002000094902F032FE002809D00422200016 -:1013FC00064902F02BFE002800D01CE71C211BE73D -:10140C001A2119E7105400080854000870540008F9 -:10141C000FB430B597B01AA920C92800019102F079 -:10142C0097FA2A0004005021019B02A802F08AFFBF -:10143C00002807DD064A013083B20021106F02AA92 -:10144C00FFF7ECFC200017B030BC08BC04B0184708 -:10145C008C00002070B5050008000C0002F0B8FDEF -:10146C00C31FDBB21B2B03D823499B00CB589F46D1 -:10147C00224902006C31224802F074FA70BD21003E -:10148C00A86F02F015FDF9E7200002F0A5FD00237E -:10149C00416800681B4A01F001FA04003C2120005D -:1014AC0001F0E2F820000E003C2101F057F83C213D -:1014BC0001F0DAF80D00E1212000090101F04EF8ED -:1014CC00330001002A001048FFF7A2FFD6E72000E6 -:1014DC0002F082FD04680D482100FFF799FF022CF1 -:1014EC00CCD188230022EA54C8E7002300221E2115 -:1014FC00A86F02F099FCC1E7344A0008E44E0008DA -:10150C00A454000840420F0078540008905400087E -:10151C00B62370B5FF33C55C113BC35804000A21D8 -:10152C001C482D015D19FA2602F01CFADB230A2255 -:10153C005B00B600E2543100174802F013FA502356 -:10154C00164A3221D652164A164BB8265A611648FC -:10155C0002F008FA3223FF36A35529681348FFF727 -:10156C0057FFD4225200A35DA550A934FF34AA8999 -:10157C00A37100232281A380EB7A002B03D00023DC -:10158C00E371A37270BD4821094A0A4802F0FAF9C6 -:10159C00F5E7C04664510008845100088C00002017 -:1015AC00FF0F0000007400409C510008B05400086C -:1015BC00C4540008DC540008F0B5D6464F464646E5 -:1015CC000500C0B508000C0002F002FD0300143B3E -:1015DC00DBB20E2B03D83F4A9B00D3589F4620000A -:1015EC0002F0F6FC3C49020010313C4802F0BAF91A -:1015FC000020E0BCBA46B146A846F0BD200002F07F -:10160C00EBFC374A41888388008853434A43C10125 -:10161C0009180901091A9B0B920B890A3148FFF72B -:10162C00F7FEE5E7B622DA21FF32AB5C4900013365 -:10163C00DBB2AB54695C994201D10023AB54280056 -:10164C00FFF766FFD4E7200002F0C6FC81462000BD -:10165C0002F0C0FCDA235B009846EB5C0700002B21 -:10166C00EDD0D2235B0000249A4605E043460134BA -:10167C00EB5CE4B2A342E2D95246AA5823019E582D -:10168C00300000F059FFB842F0D13A003100484622 -:10169C0002F0DCFC0028E9D11349320013487C31FC -:1016AC0002F060F9B623FF33EC54C8E7200002F0D7 -:1016BC0093FC01782800FEF709FE99E7200002F060 -:1016CC008BFC04780A48210002F04CF9B823FF3354 -:1016DC00EC548DE7A44A0008644F000850520008EF -:1016EC004DCE0000F0540008E44E000818550008D8 -:1016FC009C51000870B5040008000D0002F068FC55 -:10170C00272803D8254A800013589F46290020001B -:10171C00FFF752FF70BDB623FF33E25C113BE35879 -:10172C0012019B18B822D426FF32A25C7600A3517A -:10173C00A5199989AA7100222981AA80DA7A002A2E -:10174C0024D00022EA71AA7219681548FFF760FECE -:10175C001448DFE7144915481C3102F003F9002046 -:10176C00D8E7114912481C3102F0FCF80020D1E7EF -:10177C00104802F0F7F80020CCE7D4235B00E358C4 -:10178C000D481968FFF744FE0020C3E748210B4AB7 -:10179C000B4802F0F7F8A359D3E7C046E04A00081B -:1017AC004C550008D1170008644F00082455000858 -:1017BC00385500085C55000870550008C4540008E2 -:1017CC00DC54000870B5050008000C0002F000FCA9 -:1017DC00272803D8164A800013589F46210028005A -:1017EC00FFF7EAFE70BD0020FCE71248FAE7124949 -:1017FC001248283102F0B6F82800FEF715FE00203A -:10180C00F0E70D490E48283102F0ACF80020E9E76A -:10181C002800FEF709FE03000020002BE2D1A933BB -:10182C00FF33EB5807481968FFF7F2FD0648D9E774 -:10183C00804B000859180008644F000880550008B8 -:10184C008C550008705500080117000870B505008C -:10185C0008000C0002F0BCFB272803D81D4A8000AE -:10186C0013589F4621002800FFF7A6FE70BDD42315 -:10187C005B00EB5818481968FFF7CAFD1748F5E7E5 -:10188C0017491848383102F06DF80020EEE714497A -:10189C001548383102F066F80020E7E70020E5E74C -:1018AC00D8235B00EB5A002B08D1A933FF33EB583C -:1018BC000E481968FFF7ACFD0D48D7E7D4235B0041 -:1018CC00EB580C481968FFF7A3FD0020CEE7084839 -:1018DC00CCE7C046204C000898550008D1170008EA -:1018EC00644F0008805500088C550008705500089E -:1018FC0001170008A8550008020030B5303AD3B2E1 -:10190C0083B0472B03D854499B00CB589F4601000A -:10191C005248FFF77DFD03B030BDFA2080258000D2 -:10192C0050434F4C80B2FEF73FFD6369AD002B4234 -:10193C00F1D14C4802F016F8A561ECE78025484C33 -:10194C00AD0063692B4200D080E00021464802F0D4 -:10195C0009F800235022454C4549A352454A002022 -:10196C005161220058329383642100F0F7FD01ADE0 -:10197C002830287001232A002221E06E02F054FA4C -:10198C00C9E73D48FFF744FDC5E73C493C484431B5 -:10199C0001F0E8FF3B4A3C4993680B4004210B43A0 -:1019AC009360B8E7314C002300220C21E06E02F06A -:1019BC003BFA002300220E21E06E02F035FAAAE772 -:1019CC002A4B5833988B314B643898420FDCFA23EE -:1019DC009B00984200DA180080B2FEF7E5FC9AE70B -:1019EC00224B5833988B294B64309842EFDD18000A -:1019FC00EDE780222649D2034869030413404022B4 -:101A0C00824313438B6186E7184B00221F21D86E4B -:101A1C00002302F009FA7EE702230193134B0721FE -:101A2C00D86E01AA042302F0FFF974E71948FFF7F6 -:101A3C00EFFC70E711490D4B114854311C6F01F04C -:101A4C0091FF08230022FF33E25464E7124801F0AF -:101A5C0089FFA56279E7C046C04C000830560008E3 -:101A6C000004005000560008845100088C0000202F -:101A7C00FF0F000000740040B8550008644F0008C8 -:101A8C001456000800240140E8FFFF7FD82700000F -:101A9C000008005018560008EC550008F0B54546F3 -:101AAC00DE4657464E46E0B583B0804602AF08008E -:101ABC000C0002F05FF90500012814D0200002F0A0 -:101ACC005DF90600032D54D0200002F05BF981462D -:101ADC00042D10D0280002F0ABF84B460100320068 -:101AEC00334801F03FFFBD4601B0F0BCBB46B246E7 -:101AFC00A946A046F0BD200002F038F9814620002E -:101B0C0002F046F90500200002F03CF94A460300B9 -:101B1C00002A46D1022806D12A782F2A03D16878C8 -:101B2C00FFF7EAFE1CE069465A1D91460732D208BF -:101B3C00D2008A1AEB46954602AA9246494650466E -:101B4C001C4A009502F096FB002808DD814506D959 -:101B5C00194A83B20021106F5246FFF75FF9DD4638 -:101B6C00200002F003F9310002004046FFF7DEF8D6 -:101B7C00B9E70100114801F0F5FE200002F0F6F87B -:101B8C000400020031004046FFF7D0F84346210024 -:101B9C0018684B1E994100220023153102F044F9BC -:101BAC00A1E740462A001721006802F03DF9D7E76B -:101BBC0074560008685600088C000020485600082F -:101BCC0070B50825FF35435D0400002B0ED10A29A2 -:101BDC0005D0C9B2FFF756F8032818D070BD012202 -:101BEC000339FFF7A3F801236355F7E7C9B2FFF7F1 -:101BFC0049F80028F2D0FC23E558280002F0CAF876 -:101C0C00002814D029002000FFF748FFE6E7FC234A -:101C1C00E558280002F0BEF800280ED0290020005C -:101C2C00FFF73CFF08230122FF33E254D6E70649B5 -:101C3C0006486C3101F096FED0E7034903486C313D -:101C4C0001F090FEEEE7C046644F0008A456000871 -:101C5C00112110B50E4A0F48136A8B431362802270 -:101C6C000D4B92009A62DA3AFF3A9A610B4B0C498F -:101C7C005A6801F077FE0B4C012321000A48103101 -:101C8C00237401F06FFE237C002BFCD110BDC046E9 -:101C9C00002C0140B45600080004005000ED00E098 -:101CAC00E44F00080C010020C4560008024A536996 -:101CBC00013353617047C0460C01002010B5EFF39F -:101CCC00058203490348143101F04CFE10BDC04697 -:101CDC00E44F00085C510008012210B5144B19693F -:101CEC000A421DD00620196891431960D9688143B6 -:101CFC00D960196901308143196140210D4B9962FA -:101D0C000D4B19399A6101329A6102329A611C3277 -:101D1C009A610A4B00229869002302F085F810BDE5 -:101D2C0007491A692031074801F01CFEF7E7C04645 -:101D3C00002C014000080050000400508C000020D2 -:101D4C00E44F0008FC560008022210B5254BD96858 -:101D5C000A4202D019690A423AD123490422214B82 -:101D6C00D868024202D0186902420CD15223CA5AD6 -:101D7C001C4B1B6B01339A4212D01A4B1B491A692C -:101D8C000A4218D110BD1869904318615223CA5ADF -:101D9C00013292B2CA52134B1B6B01339A42ECD1F3 -:101DAC00002300228869262102F03EF80D4B0F49D2 -:101DBC001A690A42E6D01B690D48194001F0D2FDA0 -:101DCC00EFF305820B490C48143101F0CBFDD9E738 -:101DDC00196991435222196103498B5A01338B5271 -:101DEC00BCE7C046002C01408C000020E0FF0C003A -:101DFC00FC560008E44F00085C510008F8B580233D -:101E0C000222DB0519690A420FD101211A6911421C -:101E1C0003D01A698A431A61F8BDEFF30582284989 -:101E2C002848143101F09EFDF6E71969264C9143C0 -:101E3C0019612668676872B6BFF34F8FBFF36F8F57 -:101E4C004825635DFF2B33D048215A1CD2B2625413 -:101E5C0080211E4DC905A868496AA960884202D92B -:101E6C00E9680131E960002A17D04822A354002BFD -:101E7C0004D1BFF34F8FBFF36F8F62B6EB68AA68C4 -:101E8C00990792080A439B083800B0478022D20574 -:101E9C00536BA1685B185363BEE7A6210C4A0D482F -:101EAC00890001F06FFD4823E35C013BDBB2DCE70A -:101EBC00094A0A49074801F065FD635DC4E7C0465D -:101ECC00E44F00085C5100088C0000200C0100203D -:101EDC0028530008D4510008E45200089102000075 -:101EEC0070B548250B4C635D002B0BD04822013B91 -:101EFC00DBB2A354002B04D1BFF34F8FBFF36F8F12 -:101F0C0062B670BDA621044A0448890001F03AFD6E -:101F1C00635DEBE78C00002028530008D4510008C7 -:101F2C0070B572B6BFF34F8FBFF36F8F4825074C58 -:101F3C00635DFF2B03D048220133A35470BD044AC8 -:101F4C000449054801F01EFD635DF4E78C00002098 -:101F5C00E452000891020000D4510008102210B580 -:101F6C000E4BD9680A4211D119690A4207D1EFF315 -:101F7C0005820B490B48143101F0F4FC10BD0A48E2 -:101F8C0000211A610C3001F019FDF7E70648012118 -:101F9C00DA600C3001F012FDF0E7C0460018024088 -:101FAC00E44F00085C5100088C00002010B5EFF3E2 -:101FBC00058203490348143101F0D4FC10BDC0461E -:101FCC00E44F00085C510008102210B51C4B196836 -:101FDC000A421AD1012219680A4211D180221968C9 -:101FEC009201114222D1042219680A4223D10822FB -:101FFC0019680A420ED01A60124801F0B3FC03E0D3 -:10200C0011481A6001F0AEFC10BD1A600F4801F0C7 -:10201C00A9FCF9E719680E4801F0A4FCEFF305825E -:10202C000C490D48143101F09DFCEDE71A600B488A -:10203C0001F098FCE8E71A60094801F093FCE3E72B -:10204C00002401404C570008185700080857000896 -:10205C0058570008E44F00085C510008245700084A -:10206C0040570008022310B5134C2268134218D1B4 -:10207C0008232268134208D11049226810484031C5 -:10208C0001F070FC0423636010BD0C4963604031A7 -:10209C000C4801F067FC01210B4A13680B431360D9 -:1020AC00F2E76360094B14211A0098694A3206233F -:1020BC0001F0BAFEE8E7C04600000240E44F000819 -:1020CC007457000868570008080002408C00002074 -:1020DC0010B50D4BDA69920610D4DB691B0605D5D9 -:1020EC000A4B0B49986B5B6B984710BDEFF305825D -:1020FC0008490948143101F035FCF6E70348596AE0 -:10210C001C3001F05BFCF0E7004400408C00002028 -:10211C0028440040E44F00085C51000870B572B6CA -:10212C00BFF34F8FBFF36F8F48241B4D2B5DFF2BDD -:10213C002BD048215A1CD2B26A548021174CC905A5 -:10214C00A068496AA160884202D9E1680131E16066 -:10215C00002A0FD04822AB54002B04D1BFF34F8F71 -:10216C00BFF36F8F62B6E168A0688B0780081843D5 -:10217C00890870BDA6210A4A0A48890001F002FCB0 -:10218C004823EB5C013BDBB2E4E7074A074905480F -:10219C0001F0F8FB2B5DCCE78C0000200C0100203B -:1021AC0028530008D4510008E452000891020000A2 -:1021BC007047C04610B50B00EFF31084012181F37A -:1021CC0010881900FEF7B6FA84F3108810BDC046CB -:1021DC0010B582B0EFF31084012181F310886B46A7 -:1021EC000122D91D0020FEF7A5FA84F310880128DE -:1021FC0003D16B46D87902B010BD01204042FAE7FA -:10220C0010B5FEF741FA10BDF0B5DE464E46574606 -:10221C004546E0B59BB00AAB0593402306930023DB -:10222C000793089301330C0091469B46029009904A -:10223C0005E005A8FEF76CFB0898002859DB21780F -:10224C00013400295CD02529F3D122001378002613 -:10225C0002250820140021392D2B0CD02D2B0ED843 -:10226C00232B11D02B2B00D05FE10E4301321378BE -:10227C0014002D2BF2D15B4601321E43F7E7302BB5 -:10228C0005D12E430132F2E706430132EFE71A0083 -:10229C00303A0025092A0DD81A00AB005B1901341D -:1022AC005B009B182278303B1D001300303B092B40 -:1022BC00F3D913002E2B00D1D8E00027237804216A -:1022CC0001E0637801341A008A43682AF9D0252B7F -:1022DC0007D0583BDBB2202B07D8954A9B00D3582C -:1022EC009F46252105A8FEF713FB0898013400280A -:1022FC00A5DA1BB0F0BCBB46B246A946A046F0BD61 -:10230C0008980028F5DD079C002C00D0C6E00019C9 -:10231C00EFE74B4649461B6805A81A1D0A60196869 -:10232C0010223B0001960095FEF72AFB0134089819 -:10233C00DDE74B4649461B6805A81A1D0A6019685B -:10234C000A223B0001960095FEF71AFB013408980F -:10235C00CDE74B4649461B681A1D0A601D6805E00F -:10236C0005A8FEF7D5FA08980028BFDB29780135B7 -:10237C000029F5D10898B9E74B4649461B6805A8D2 -:10238C001A1D0A6019680023019308331022009368 -:10239C00FEF7F6FA01340898A9E74B4649461B6844 -:1023AC001A1D0A601B68DA17981803930123504012 -:1023BC009A4609280DDDAA46A0461D000A210400F4 -:1023CC00013500F081F9632CF8DC2B0044465546AE -:1023DC009A46B846574575D3002D36D0039B002B33 -:1023EC0074DB730772D4B30701D5002F2DD05B4675 -:1023FC0033422AD1002D28D04346A0461C00AC42C3 -:10240C0020D205A82021FEF783FA0898013D002868 -:10241C0000DA87E0002DF2D1230044469846039B56 -:10242C00002B58DB730761D403233340022B62D09B -:10243C0005A83B000A22039901960095FEF7A0FA25 -:10244C00089853E723004446984608980028E6DA93 -:10245C0001344CE74B4649461B6805A81A1D0A6017 -:10246C001978FEF755FA0134089840E76378621C36 -:10247C001900303914000027092900D91FE71A0068 -:10248C00BB00DB1901345B009B182278303B1F002A -:10249C001300303B092BF3D9130010E7254B1B78A5 -:1024AC00002B15D0EFF31085012181F31088220049 -:1024BC0002980AA9FEF7B2F985F310880898079CD0 -:1024CC00001916E7D046002DBFD087E7013D8AE7FB -:1024DC00FEF7DAF8E6E75B422D2105A80393FEF739 -:1024EC0017FA089800289FDA013400E72B2105A879 -:1024FC00FEF70EFAF5E7002F9AD10AE0A8450CD2A8 -:10250C0005A83021FEF704FA0898013D002800DAEE -:10251C00ECE6002DF2D100258AE70898002887DA2E -:10252C000134E4E644460134E1E60025C5E6C04644 -:10253C00E04D0008242100200023C25C0133002A56 -:10254C00FBD1581E7047000003B471464908400087 -:10255C004900095E49008E4403BC704700224308C1 -:10256C008B4274D303098B425FD3030A8B4244D34F -:10257C00030B8B4228D3030C8B420DD3FF22090291 -:10258C0012BA030C8B4202D31212090265D0030B50 -:10259C008B4219D300E0090AC30B8B4201D3CB0346 -:1025AC00C01A5241830B8B4201D38B03C01A524188 -:1025BC00430B8B4201D34B03C01A5241030B8B428A -:1025CC0001D30B03C01A5241C30A8B4201D3CB0275 -:1025DC00C01A5241830A8B4201D38B02C01A52415A -:1025EC00430A8B4201D34B02C01A5241030A8B425D -:1025FC0001D30B02C01A5241CDD2C3098B4201D375 -:10260C00CB01C01A524183098B4201D38B01C01AF2 -:10261C00524143098B4201D34B01C01A5241030969 -:10262C008B4201D30B01C01A5241C3088B4201D318 -:10263C00CB00C01A524183088B4201D38B00C01AC5 -:10264C00524143088B4201D34B00C01A5241411AEC -:10265C0000D20146524110467047FFE701B50020F9 -:10266C0000F006F802BDC0460029F7D076E77047A7 -:10267C007047C04610B5002903D100F007F8203090 -:10268C0002E0080000F002F810BDC0461C21012336 -:10269C001B04984201D3000C10391B0A984201D339 -:1026AC00000A08391B09984201D30009043902A217 -:1026BC00105C40187047C04604030202010101017E -:1026CC00000000000000000003460B437FD40022F2 -:1026DC0043088B4274D303098B425FD3030A8B42AA -:1026EC0044D3030B8B4228D3030C8B420DD3FF2214 -:1026FC00090212BA030C8B4202D31212090265D0E2 -:10270C00030B8B4219D300E0090AC30B8B4201D394 -:10271C00CB03C01A5241830B8B4201D38B03C01ADB -:10272C005241430B8B4201D34B03C01A5241030B52 -:10273C008B4201D30B03C01A5241C30A8B4201D303 -:10274C00CB02C01A5241830A8B4201D38B02C01AAE -:10275C005241430A8B4201D34B02C01A5241030A25 -:10276C008B4201D30B02C01A5241CDD2C3098B420A -:10277C0001D3CB01C01A524183098B4201D38B0187 -:10278C00C01A524143098B4201D34B01C01A52412A -:10279C0003098B4201D30B01C01A5241C3088B426F -:1027AC0001D3CB00C01A524183088B4201D38B005A -:1027BC00C01A524143088B4201D34B00C01A5241FC -:1027CC00411A00D201465241104670475DE0CA0FD3 -:1027DC0000D04942031000D34042534000229C4693 -:1027EC0003098B422DD3030A8B4212D3FC2289019D -:1027FC0012BA030A8B420CD3890192118B4208D373 -:10280C00890192118B4204D389013AD0921100E0D4 -:10281C008909C3098B4201D3CB01C01A52418309E8 -:10282C008B4201D38B01C01A524143098B4201D315 -:10283C004B01C01A524103098B4201D30B01C01A40 -:10284C005241C3088B4201D3CB00C01A52418308BA -:10285C008B4201D38B00C01A5241D9D243088B4210 -:10286C0001D34B00C01A5241411A00D201466346B3 -:10287C0052415B10104601D34042002B00D5494217 -:10288C00704763465B1000D3404201B50020FFF750 -:10289C00EFFE02BD0029F8D016E77047002B11D1CE -:1028AC00002A0FD1002900D1002802D00021C943F1 -:1028BC00080007B4024802A14018029003BDC046AC -:1028CC00B1FDFFFF03B4684601B5029800F006F8AD -:1028DC00019B9E4602B00CBC7047C046F0B55746F3 -:1028EC004E464546DE46E0B504000D00924699463C -:1028FC0083B08B4230D82DD049465046FFF7BAFEF4 -:10290C00290006002000FFF7B5FE331A9846203B3D -:10291C009B4633D45A465346934042461F00534677 -:10292C0093401E00AF423AD8AF4200D178E05B46EC -:10293C00A41BBD41002B00DA75E00022002300929D -:10294C00019301235A46934001930123424693403D -:10295C00009328E08242CFD90022002300920193F9 -:10296C000C9B002B01D01C605D600098019903B09A -:10297C00F0BCBB46B246A946A046F0BD4246202359 -:10298C009B1A5246DA40414613004A468A401700C9 -:10299C0042461F43534693401E00AF42C4D9002207 -:1029AC000023009201934346002BD9D0FB077208F9 -:1029BC001A4346467B080EE0AB4201D1A2420CD82A -:1029CC00A41A9D41012024196D410021013E2418B7 -:1029DC004D41002E06D0AB42EED9013E24196D417B -:1029EC00002EF8D1009801995B4600196941002B23 -:1029FC0024DB2B005A464446D3402A00E2401C00FC -:102A0C005B461500002B2ADB26009E403300260077 -:102A1C004746BE403200801A9941009001919FE7D1 -:102A2C00A342BCD883E74246202300219B1A0022F4 -:102A3C00009101920122DA40019286E7424620235E -:102A4C009B1A2A0046469A402300F34044461343FF -:102A5C002A00E2401C005B461500002BD4DA4246EB -:102A6C002F002023260097409B1ADE403B00334367 -:102A7C00CDE7C0460D488546FFF79AFB0C480D493B -:102A8C000D4A002302E0D458C4500433C4188C42BD -:102A9C00F9D30A4A0A4C002301E013600432A24223 -:102AAC00FBD301F09BFA00F00FF8FEE7009000203A -:102ABC00000000206C0000208459000870000020E9 -:102ACC0004220020FEE70000F0B5DE4657464E46D5 -:102ADC004546E0B5B9B000F037FF904800F042FF32 -:102AEC0007228F4B00215A63A0240D3215A801F048 -:102AFC00C4FA0223E405189320000E3314A914938E -:102B0C00FDF718FB149A236913409A4206D1854BA2 -:102B1C001B6883F30888844B1B6898470323A02603 -:102B2C009A4615930023F60598463000189314A97D -:102B3C0043331493FDF7FEFA2023300014A91493A9 -:102B4C008025FDF7F7FA43460127784C1793AD0023 -:102B5C000233200015971693149514A9A562994673 -:102B6C00FDF7E8FA40237248149314A98361FDF72A -:102B7C00E1FA272320001797149314A9A361FDF7FA -:102B8C00D9FA4B46159319934346C02417935346D1 -:102B9C00A400169314943000B46214A9FDF7CAFA79 -:102BAC000C23300014A919971493FDF7C3FA802154 -:102BBC005B4B09065A6D0120920092080A435A6534 -:102BCC005C4ADA635C4A1A649A6B17439F635B4BEB -:102BDC001A6814431C605A4CFDF732FB2368594A9F -:102BEC00594F13401D4325603B6858495800C01885 -:102BFC004000FFF7B3FC80226369D200013013421E -:102C0C0002D105E0002803D0636901381342F9D1E1 -:102C1C0080214B4A490013680B43136013680B4225 -:102C2C00FCD002213E4A4A4BD365D36D1942FCD0ED -:102C3C00382391680B40D168102B01D100F01DFC9A -:102C4C00002B01D000F01DFC136842495368194059 -:102C5C008023DB010B43536013683F490B40136027 -:102C6C0013683E4A9B045B0FDA403A607868FDF7C4 -:102C7C00E7FA3B4A002832D1382029498B680340B7 -:102C8C00102B01D100F0A0FD0B68364803408020CA -:102C9C000B605469800403E053691B1B022B1ED884 -:102CAC000B680342F8D1CB682F4818402F4B0343D5 -:102CBC00CB60802308685B0403430B608023C868E7 -:102CCC005B050343CB60802154691548890403E0FC -:102CDC0053691B1B022B02D803680B42F8D0062346 -:102CEC0016490868184201D100F0B5FCE0230C49E4 -:102CFC00DB01886803438B608B681D4803408B6045 -:102D0C000B689B0167D507208B681A4C834318000E -:102D1C00022303438B603820556931E08457000847 -:102D2C00001002400000FF1F0400FF1F00040050B1 -:102D3C00000800500300023001081200002002407D -:102D4C0000700040FFF9FFFF0000002040420F0020 -:102D5C0009800000FF80FFFFFFC7FFFF0024F40085 -:102D6C000C010020FFFFFFFE8C80C1113230164693 -:102D7C00FFF0FFFF8813000053695B1BA3422AD8A6 -:102D8C008B680340102BF7D10720EE490B680340EA -:102D9C00022B01D900F0BFFCEB4BEC499A680A40BE -:102DAC009A6038229968114201D000F09DFC1B6892 -:102DBC00E7489B045B0FD840E34BE64A9B681B0536 -:102DCC001B0F9B00D3181F22DB6D1340D8403860BB -:102DDC007868FDF735FAE04AE0491368E0480B40A3 -:102DEC001360E04B3A6819680905090D00F0BAFD4B -:102DFC0084201022DC4B195891431950043819586F -:102E0C001143195019681143196059680A435A60E3 -:102E1C00D64B1A68D20307D41A68D5490A401A60EF -:102E2C00DA6BD4490A40DA638023D04A5B0211681A -:102E3C0001240B4313603F22CF4909200B689343B5 -:102E4C001A00052313430B60CC4BCD491A68114073 -:102E5C00CC4A0A43CC491A6099600321CB4A934669 -:102E6C004A32DA605A68120C12040A435A60C84A91 -:102E7C005460022219680A431A60082219680A432E -:102E8C001A601A68210022431A60FDF735F9C14B0C -:102E9C009A68224207D1DA68BF490A40DA601A6997 -:102EAC00920092081A618021BA4B8903DA680A43AE -:102EBC00DA608022920119681142FCD007211A6055 -:102ECC005A698A43110002220A4370215A615A69D5 -:102EDC008A43110050220A430F215A619A6A8A438D -:102EEC009A625A699D490A405A619A6AF231FF31D5 -:102EFC008A43110010220A4380219A625A69890080 -:102F0C000A435A619A6AA5491140C022D2000A4369 -:102F1C0080219A625A69C9010A435A619A68A04988 -:102F2C001140802252050A439A609E493868FFF787 -:102F3C0015FB142343430793079B002B05D0079BDA -:102F4C00013B0793079B002BF9D1924B96499A684A -:102F5C001140802212060A439A609A68002AFCDB10 -:102F6C00802212011A6020230793079B002B05D0A7 -:102F7C00079B013B0793079B002BF9D18023854CC2 -:102F8C009B05226903211343236111230C206360E9 -:102F9C00FDF7B2F80121E368E368A3680B4200D1A6 -:102FAC0031E3824800F0DEFC01267A4B80491A6935 -:102FBC0014A8B2431A611A69D0240A401A619A689B -:102FCC00794964000A4032439A6049235A4618A949 -:102FDC00D654642200F00EFFD620400001F022F8F7 -:102FEC00C822010052001031050000F003FFDC2064 -:102FFC00704B40002B51319501F014F8C8220100A0 -:10300C0052001031050000F0F5FE0022002338219B -:10301C0034923593882306AA52183295D654664BAF -:10302C00664819001C319A4600F09CFC38686449CB -:10303C00FFF794FA8023634ADB05013898625A63E0 -:10304C001022022158469A611A6A5F4D32431A6265 -:10305C00DA680A43DA605D4A02605A4614A8506086 -:10306C00FA225846120182600322586902435A61BF -:10307C000F201E60FDF740F8329B554A38681A51F4 -:10308C00D222520090465246414638325A50DA22E9 -:10309C00520091464946002450325A524E3A9C54A2 -:1030AC005A4640499361FFF759FA51460138A862D4 -:1030BC00AA6A7831474800F055FC474B2100AB61B8 -:1030CC0011230D202B626E60FDF716F821000E20E7 -:1030DC00FDF712F884232B60882384201B02EE60FA -:1030EC0040006B6400F09EFFC82205000190011D9A -:1030FC00CC3000F06FFC0223FF22FF33EA5442462F -:10310C00319B329E9E5004329D505B4614AADA6667 -:10311C001D674B46F35CA34278D0142292462F4B8A -:10312C0099462F4B9A444346F35825019C466544D7 -:10313C004846296800F016FC28896B6800285ED088 -:10314C00002254E00020024000100240FF8FFFFFDD -:10315C000024F400E44F000800700040FFFEFFFF65 -:10316C0098570008005801400018024000740040B5 -:10317C00FFFF03FFFFFFF8FF0008024008000240BA -:10318C000F80FFFFA0250000402401408C00002090 -:10319C000000024000240140C73FFFFFFFF0FFFF8B -:1031AC00E8FFFF6F40420F00E8FFFF7FB8570008B1 -:1031BC00FFFFFFDFD10A0008645000081456000816 -:1031CC0000093D00801A0600002C01407503000820 -:1031DC00B10A0008D457000868680000E0570008DE -:1031EC00E4500008013292B20233904207D01978B1 -:1031FC005D780D42F6D05146B74800F0B3FBDA23A8 -:10320C005B000134F35CE4B2A3428CD8B623D22227 -:10321C00FF33F35C5200B2581B01D318B822D421EF -:10322C003400FF32B25C4900A9347350FF349989E1 -:10323C00A27100222181A280DB7A934200D11FE28D -:10324C000023A64AE371A372A133FF33F25000F0BE -:10325C0093FE80250100A24C3000FEF74BFA0A21A8 -:10326C003000FDF733F86369AD002B4203D19D4864 -:10327C0000F078FBA56114AA9B4908A800F098FB04 -:10328C005B460C3316C816C303210720FCF734FF2A -:10329C00D023319D954A5B00EA5000F06DFE010091 -:1032AC002800FDF77FFED4235B00EC580223FF338C -:1032BC00E35C7F2B00D8C5E18D4B04938D4B0593BC -:1032CC00256000F0B3FC81235B00E0520130FF303D -:1032DC0000F0A8FEFC238022E05000235200A354EF -:1032EC000632A352844A854B516D0B4353658B2395 -:1032FC008349CB600A68834B13430B604923984680 -:10330C005B4642469B5C012B00D98DE102211C20BF -:10331C00FCF7F2FE42465B46404659469B5C5A1C03 -:10332C000A5402225BB2FF329046A354002B00DAFF -:10333C0081E10BAB1800220073499A4600F038FB70 -:10334C00220072490EA800F033FB11AB18002200CA -:10335C006F49994600F02CFB4346E356012B00D1F4 -:10336C00EDE10223FF33E2566A4B1E0002936A4BD7 -:10337C005836310018009A46039300F0F3FA0222F3 -:10338C00FF329046A256012A00D103E2310050468A -:10339C0000F0E8FA4246A256012A00D1FAE13100C7 -:1033AC00504600F0DFFAD4235C495B0054315C4892 -:1033BC00EC5800F0D7FA082300220299FF33E254AC -:1033CC005848783100F0CEFA574B88249A46574B20 -:1033DC00574D9846382206AB9B181B5D002B00D12D -:1033EC00AEE0329B29001A001800009300F07EFD1D -:1033FC000028EFD1319B51461A001800009300F0C1 -:10340C0075FD0028E6D114AA4146100000F06EFDAF -:10341C00061EDFD10121484600F0BEFA002800D07C -:10342C004EE172B6BFF34F8FBFF36F8F48235A46EE -:10343C00D35CFF2B00D1B3E148225B4659469B5C21 -:10344C00329801338B5400F0EBFC002800D01DE1C6 -:10345C0048235A46D35C002B00D13EE148225B4600 -:10346C0059469B5C013BDBB28B54002BB2D1BFF3B2 -:10347C004F8FBFF36F8F62B6ACE70D3B194002293B -:10348C001FD01D492B4A0B68802013400B608023F2 -:10349C000A685B001343284A0B605469C00004E0BF -:1034AC0053691B1B022B00D919E40B680342F7D09C -:1034BC004B68224818408023DB0103434B60FFF725 -:1034CC00DBFB13681D49536819408023DB010B4358 -:1034DC005360FFF7CBFBC046F057000801170008FC -:1034EC0000040050005600085D030008B10F0008EE -:1034FC0008580008D45200080010024008000C00C4 -:10350C000044004001000020CD1B0008A902000867 -:10351C00C1020008644E00080C530008644F0008F8 -:10352C001456000850580008150B000861140008C8 -:10353C00690B0008FFC7FFFF0C010020FF80FFFF95 -:10354C00D025319C6D00665900F024FD010020004F -:10355C00B047DB4BDB48635100F004FAD4235B002B -:10356C00E4580223FF33E256012A04D0029903984F -:10357C00583100F0F7F9FC23E05800F05DFD022310 -:10358C00FF228026FF33D04DE2546B69B600329C8B -:10359C00334203D0CD4800F0E5F9AE62D0256D0082 -:1035AC00665900F0F7FC01002000B047C84B019AA7 -:1035BC0063510223FF33D35C7F2B05D82621049A59 -:1035CC000598FF3100F0DEF9019800F035FD3298D6 -:1035DC0000F032FD319800F02FFD72B6BD4800F0BE -:1035EC00C1F900F0E3F91121BB4A136A8B43136252 -:1035FC008022B54B92009A62DA3AFF3A9A61B74B45 -:10360C0019329A62FEE7E368B54AE3681A40B54B93 -:10361C001343E360E3689B0200D4C5E4F023A26A81 -:10362C001B021343A362BFE4AF4800F09BF90223D3 -:10363C00FF22FF33E25411AB9946AC4B0293AC4BD7 -:10364C000393B0E6AB4BAC4AFC21180004920593F3 -:10365C0000F098F934E6072002230C6884432343D6 -:10366C000B605569A54C05E053695B1BA34201D95E -:10367C00FFF7B1FB0B680340022BF5D1FFF736FBCC -:10368C0048219F4A9F4800F07DF9D9E5319800F018 -:10369C00C7FB002800D1DBE614A800F0C1FB002812 -:1036AC0000D1D5E68022984E92007369134200D067 -:1036BC00E0E00421954A13698B43136130BFC7E6E0 -:1036CC004B461B7892490093887F582200286DD175 -:1036DC002F2B7CD12E3B8B77A3E6A6218D4A8E48CF -:1036EC00890000F04FF9B9E699681140082900D11A -:1036FC00D6E099681140102900D184E099681140F6 -:10370C00202900D1CFE09B681A40182A00D1CEE0C6 -:10371C000020FFF751FB02230C68844323430B600A -:10372C005569764C05E053695B1BA34201D9FFF741 -:10373C0052FB0B680340022BF5D1FFF72DFB5B46C8 -:10374C0052461C3343CA43C35B46283343CA43C364 -:10375C00042372490A6813430B604346E356012B5A -:10376C0000D0FEE55B465A469C636D4B53635B464B -:10377C004A463C3343CA43C3082368490A68134387 -:10378C000B604346E256594B0293594B0393012A63 -:10379C0000D0E9E52023614A11680B43136002E66F -:1037AC00604A61495C4800F0EDF845E6009B0A2B45 -:1037BC0040D05E4800F0D6F80098FEF79DF85B46C6 -:1037CC00002258339A772CE6CB68FFF788FA5946D3 -:1037DC004F4BDB7FC918885400980A280AD04C4EEE -:1037EC000133DBB2F3778854142B00D019E64F4821 -:1037FC0000F0B8F85E46583631004D4800F0B2F88B -:10380C000023F3770DE6DA68D968D243D868490605 -:10381C00490F40040131440E92074CD04548FEF745 -:10382C009DFE6043444BD968490F0131FEF796FE6B -:10383C00FFF7C2FA364B3648D97F4B1CDBB2C37745 -:10384C002F2059448854142B08D1384800F08AF89A -:10385C002F49374800F086F82D4BDE775E46002264 -:10386C005836F37F3100F254314800F07BF80022D7 -:10387C00F277A4E706203B6830495843FEF76EFE0A -:10388C0033682F4A01301340336003E0002800D125 -:10389C00DEE501388022736992001342F6D108E705 -:1038AC002848FFF789FA80200002FFF785FAFA20F2 -:1038BC00C001FFF781FA2348FEF750FE6043B1E7E1 -:1038CC00D10A00087458000800040050EC55000898 -:1038DC00B10A000884580008002C01400008005070 -:1038EC003CC2FEFF031000001C580008644E000888 -:1038FC000C530008D4520008085800088813000024 -:10390C00C4540008DC5400080070004000ED00E0D6 -:10391C00E400002028530008D45100080044004063 -:10392C00C10B0008E45200089102000088580008FE -:10393C00645800080024F4000010024040420F00BC -:10394C00FFBFFFFF00127A0010B5FEF759FC10BD47 -:10395C0000B583B0019101AA01000020FEF754FCD0 -:10396C0003B000BD0FB400B583B004AB02CB01AA09 -:10397C00002000930193FEF747FC03B008BC04B091 -:10398C001847C046130010B50A0001000148FFF7A4 -:10399C00E9FFFEE7B45800080A0010B5010000204A -:1039AC00FEF708FCC343DB17184010BD7047C04638 -:1039BC0000238360426001607047C04610B5036805 -:1039CC000400002B04D040689847A3680133A3601F -:1039DC0010BDC04601604B1E994100234942114065 -:1039EC0041608360C360704703009B68C068C01A65 -:1039FC0043425841C0B270470200C368581E9368D6 -:103A0C00C01A536800D5C0187047C04603008268BE -:103A1C00C1685B68501A00D5C0187047F0B54646AF -:103A2C00D6464F460500C0B5EB688068013B0E00DA -:103A3C0014001B1A1ED493421AD31700002F05D161 -:103A4C002000E0BCBA46B146A846F0BDAB68286879 -:103A5C009C463A006044310000F006FBAB689C4683 -:103A6C006B686744AF609F42EAD10023AB60E7E725 -:103A7C000020E6E76A6890464344A342F8D3031952 -:103A8C00994627009A42D9D8131A9A462B6852465F -:103A9C009C46604400F0E8FA00234246AB604B467B -:103AAC0056449F1ACAE7C046F8B54746CE4680B57D -:103ABC00C6688368050088469C1B0BD4944207D8C3 -:103ACC002700002C20D13800C0BCB946B046F8BD48 -:103ADC001400F5E7436899464C44944200D914000D -:103AEC00331927009945ECD84B469F1B2B683A009D -:103AFC009919404600F0B8FA4B46F61AA419B84486 -:103B0C0000263F19002CDED0296822004046891976 -:103B1C0000F0AAFAD7E7C046F0B54F464646D6465F -:103B2C00C0B50F008368C168060014005B1A1ED470 -:103B3C0093421AD31500002D05D12000E0BCBA46E3 -:103B4C00B146A846F0BDF36831689C462A00614432 -:103B5C00380000F089FAF3689C4673686544F56098 -:103B6C009D42EAD10023F360E7E70020E6E74268D4 -:103B7C0090464344A342F8D30B19994625009A4228 -:103B8C00D9D8531A9A46036852469C463800614469 -:103B9C0000F06AFA00234246F3604B4657449D1AE4 -:103BAC00C9E7C04670B501000400861D1D4D1E48B6 -:103BBC0023781B025840082304E0013BDBB280B29F -:103BCC00002B09D002B24000002AF6DA013B684013 -:103BDC00DBB280B2002BF5D10134A642E8D14B8880 -:103BEC008A781D0A120215431BD008314D190D4C51 -:103BFC00ADB20B781B025840082304E0013BDBB24A -:103C0C0080B2002B09D002B24000002AF6DA013B48 -:103C1C006040DBB280B2002BF5D101318BB2AB42EC -:103C2C00E7D170BD21100000FFFF00000820704795 -:103C3C00052804D883001B180248C0187047024896 -:103C4C00FCE7C046D8580008D458000870B50400EA -:103C5C0004A8007849000001084301210143072012 -:103C6C0018400023D20002436380237120000023FC -:103C7C000725C9B221706270661D082201304B40C5 -:103C8C0004E0013AD2B2DBB2002A09D059B25B008F -:103C9C000029F6DA013A6B40D2B2DBB2002AF5D138 -:103CAC00B04201D00178E8E763712000FFF77AFF9A -:103CBC00030AE071A371200070BDC04670B504000A -:103CCC0004A840C84900058820001B010B43D20002 -:103CDC0031002370627008302A0000F0C5F92B0AFD -:103CEC00A3700023E570200007252371661D027860 -:103CFC005340082204E0013AD2B2DBB2002A09D0C8 -:103D0C0059B25B000029F6DA013A6B40D2B2DBB251 -:103D1C00002AF5D10130B042E9D163712000FFF7E0 -:103D2C0041FF030AE071A371200070BD70B5002340 -:103D3C0007244679451D02785340082204E0013AD5 -:103D4C00D2B2DBB2002A09D059B25B000029F6DAF4 -:103D5C00013A6340D2B2DBB2002AF5D10130A8425D -:103D6C00E9D1F01A42425041C0B270BD00788006D1 -:103D7C00800F704700780007400F7047407880062E -:103D8C00400F7047827843881202180A104370471C -:103D9C000830704710B50400FFF704FFE388A179E1 -:103DAC001B0A09020B43181A42425041C0B210BD03 -:103DBC00B0B500AF050000F0DDF86A46C31DDB08A6 -:103DCC00DB00D31A9D460200040069462800FFF769 -:103DDC006BFE80B2844203D00024BD462000B0BDEF -:103DEC00684600F0F1F804002800FFF70FFE84424B -:103DFC00F2D8F2E770B505000C001600002905D0CA -:103E0C00320028002100FFF7E5FD70BD3D21024A7C -:103E1C000248FFF7B7FDF3E7F85800080859000807 -:103E2C0010B5FFF7E1FD10BDF8B5DE4657464E461E -:103E3C004546E0B500AF1E0080468A46914600F02C -:103E4C0099F86B46C41DE408E4001B1B9D46050055 -:103E5C00801983B23200514668469B4600F0A8F8A0 -:103E6C00FEF75EF84046FFF7C7FD002483450DD9E9 -:103E7C00FEF736F85B46E01ABD4643425841C0B2E5 -:103E8C00F0BCBB46B246A946A046F8BD2A0069461E -:103E9C004046FFF7C3FD4B4684B2002BE8D03200FE -:103EAC0049464046FFF7BAFD2418A4B2E0E7C046E5 -:103EBC00F8B5060008000F0000F086F80500FEF7C4 -:103ECC002FF83000FFF798FD0024854206D9FEF745 -:103EDC0007F8601B43425841C0B2F8BD2A003900B4 -:103EEC003000FFF79BFD84B2F1E7C046F8B54E46B3 -:103EFC004546DE465746E0B500AF0600894690467B -:103F0C00FFF756FF0025041E07D1BD462800F0BC64 -:103F1C00BB46B246A946A046F8BD6A46C31DDB089F -:103F2C00DB00D31AEA469D46FDF7FAFF22006946EC -:103F3C003000FFF7F1FD0600B6B2EB46FDF7D0FFFF -:103F4C00002E01D1D546E0E7684600F03DF88442EA -:103F5C0005D159464046C8470125D546D5E7252108 -:103F6C00024A0348FFF70EFDF3E7C046205900084C -:103F7C00085900080C20704710B5FEF7CFF8020066 -:103F8C000B0003480260436080235B02836010BD1A -:103F9C00E021002010B5FEF7C1F802000B00034829 -:103FAC000260436080239B02836010BDD0210020FF -:103FBC0070B504000E001500FEF7B0F866812060A5 -:103FCC0061602581200070BD00890C3080B2704783 -:103FDC00807A7047008970470C30704770B50026A6 -:103FEC000C4D0D4C641BA410A64209D1002600F008 -:103FFC000FFD0A4D0A4C641BA410A64205D170BDDE -:10400C00B300EB5898470136EEE7B300EB589847EE -:10401C000136F2E77C5900087C5900087C590008ED -:10402C008059000810B5034B0100186800F09AF88D -:10403C0010BDC0460800002010B5034B01001868E5 -:10404C0000F024F810BDC0460800002030B5002454 -:10405C000139A24201D1002005E0035D01340D5D60 -:10406C00AB42F6D0581B30BD002310B59A4200D19C -:10407C0010BDCC5CC4540133F8E7030082189342A2 -:10408C0000D1704719700133F9E7000070B50500D5 -:10409C00002910D00C1F2368002B00DAE41828002C -:1040AC0000F05CF91D4A1368002B05D163601460A5 -:1040BC00280000F05BF970BDA34208D92168601894 -:1040CC008342F3D118685B6841182160EEE71A004F -:1040DC005B68002B01D0A342F9D911685018A0429B -:1040EC000BD120680918501811608342E0D1186870 -:1040FC005B68411811605360DAE7A04202D90C23C7 -:10410C002B60D5E721686018834203D118685B687F -:10411C004118216063605460CAE7C046F02100205A -:10412C0070B50F4E0D0031680400002902D100F06B -:10413C008FF830602900200000F08AF8431C0AD068 -:10414C000323C51C9D43A84207D0291A200000F068 -:10415C007FF8431C01D101256D42280070BDC0467B -:10416C00F4210020F7B50322CB1C9343083306003F -:10417C001F000C2B32D20C27B94231D8300000F082 -:10418C00EDF8324D2B681C00002C2ED1390030007C -:10419C00FFF7C6FF0400431C1ED12C682500002D20 -:1041AC004AD123682900E3183000019300F050F83D -:1041BC00019B834243D123680337FF1A03239F4398 -:1041CC0008370C2F00D20C2739003000FFF7A8FF5E -:1041DC00431C34D02368DF19276013E0002BCBDAA3 -:1041EC000C23002533602800FEBD2268D11B20D48F -:1041FC000B2917D9E2192760A34211D12A606368F1 -:10420C00116053603000250000F0B0F807220B3528 -:10421C00231D9543EA1A9D42E5D05B1BA350E2E7B0 -:10422C005A60ECE76268A34201D12A60EAE75A605F -:10423C00E8E723006468A7E72C006D68AFE70C2360 -:10424C003000336000F092F8CDE7C046F02100203A -:10425C00002370B5064D040008002B6000F0CAFB6B -:10426C00431C03D12B68002B00D0236070BDC046CB -:10427C00F82100200CB430B5174B0C001D689DB014 -:10428C00002908DA8B2301202B6040421DB030BC82 -:10429C0008BC02B0184782236A469B009382002315 -:1042AC0002900690994200D04B1E04930793012371 -:1042BC006A465B42D382280021AB209A02A9019363 -:1042CC0000F0BEF8431C01DA8B232B60002CDDD0F0 -:1042DC000023029A1370D9E70800002003000A7823 -:1042EC0001311A700133002AF9D1704730B514002E -:1042FC0005001A009BB0002C05DA8B23036001200B -:10430C0040421BB030BD822368469B008381002352 -:10431C00009104919C4200D0631E029305930123EB -:10432C0069465B42CB8128001E9B00F089F8431C38 -:10433C0001DA8B232B60002CE3D00023009A13703E -:10434C00DFE7000007B5009313000A0001000248E4 -:10435C000068FFF7CBFF0EBD0800002010B5024827 -:10436C0000F0F0FA10BDC046FC21002010B5024848 -:10437C0000F0E9FA10BDC046FC210020F0B58E68B3 -:10438C0085B007000C00039201939E423CD8902309 -:10439C008A89DB001A4234D00969236860695B1A88 -:1043AC00029303234343DD0FED18019B0298013365 -:1043BC001B186D10AB4200D91D00530532D52900D6 -:1043CC003800FFF7CFFE061E09D10C233B604023BB -:1043DC000120A28940421343A38105B0F0BD029A8B -:1043EC002169FFF741FEA389144A1A408023134325 -:1043FC00A381029B2661F61826606561019EED1A69 -:10440C00A560019B9E4200D9019E32000399206851 -:10441C0000F0A5FAA36800209B1BA36023689E19DB -:10442C002660DAE72A00380000F0ACFA061EE0D16C -:10443C0038002169FFF72AFEC7E7C0467FFBFFFF64 -:10444C00F0B5A1B003901D008B890F0016001B0660 -:10445C0011D50B69002B0ED14021FFF783FE38607C -:10446C003861002805D10C23039A0138136021B060 -:10447C00F0BD40237B61002308AC6361203363767D -:10448C001033A376079535002B78002B01D0252B04 -:10449C0047D1AB1B0593B5420CD0320039000398C1 -:1044AC00FFF76CFF431C00D1AEE06269059B94469C -:1044BC00634463612B78002B00D1A5E0012200231B -:1044CC005242626004A9543252186E1C2360E3609D -:1044DC00A3601370A36505223178544800F034FAB8 -:1044EC00751C00281FD12268D30604D5532304A9B8 -:1044FC005B1820211970130704D5532304A95B18EA -:10450C002B21197033782A2B16D0350000210A2064 -:10451C00E3682A786E1C303A092A4ED9002911D149 -:10452C0017E00135B0E7414B2268C01A01238340E4 -:10453C0013432E002360CEE7079B191D1B680791C0 -:10454C00002B01DB0B9304E05B42E360022313437B -:10455C0023602B782E2B0AD16B782A2B35D1079B15 -:10456C0002351A1D1B680792002B2BDB0993304E6A -:10457C0003223000297800F0E7F9002806D0402308 -:10458C00801B83402268013513432360297806225F -:10459C0028486E1C217600F0D7F900283CD0264B19 -:1045AC00002B25D10722079B07339343083307932E -:1045BC006369049A9B18636165E7434335000121E5 -:1045CC009B18A6E701235B42D0E700230A201A00C0 -:1045DC000135636029786E1C3039092903D9002B09 -:1045EC00C5D00992C3E74243350001235218F1E7C5 -:1045FC0007AB00933A002100104B039800E000BF7A -:10460C000490049B0133D3D1BB890D985B0600D475 -:10461C002DE7012040422AE707AB00933A00210026 -:10462C00064B039800F07CF8EAE7C04640590008B6 -:10463C00465900084A590008000000008943000848 -:10464C00F7B5150001938A680B690C000090934232 -:10465C0000DA130022002B6043321278002A01D0BA -:10466C0001332B6023689B0602D52B6802332B6029 -:10467C002268062317001F401A4227D02300433319 -:10468C001B785A1E93412268920630D4220001995D -:10469C000098089E4332B047431C25D0062320685F -:1046AC002A68E16800250340042B03D18D1AEB43E3 -:1046BC00DB171D40A3682269934201DD9B1AED189C -:1046CC000027BD4220D1002010E00137E3682A68A2 -:1046DC009B1ABB42D2DD2200012301990098089E4F -:1046EC001932B047431CF0D101204042FEBD3020AE -:1046FC00E1184331087021005A1C45310978A21881 -:10470C00433202331170C1E7220001230199009852 -:10471C00089E1A32B047431CE6D00137D1E700009F -:10472C00F0B58BB006920A004332079305900492C1 -:10473C000A7E0C00109B782A07D8622A09D8002A16 -:10474C0000D1C1E0582A00D18CE0260042363270EC -:10475C0022E0100063381528F7D8FDF7F5FE160097 -:10476C001F00F6FFF6FFF6FFF6FF1F00F6FFF6FF41 -:10477C00F6FFF6FFA80036009A00F6FFF6FFB90028 -:10478C00F6FF3600F6FFF6FF9E0026001A6842364A -:10479C00111D1960136833700123A7E008681968AC -:1047AC000A1D05060BD50D681A60002D03DA2D23A2 -:1047BC00049A6D421370614B0A2703931BE00D683A -:1047CC001A604106F1D52DB2EFE70D681968081D86 -:1047DC0018602E0601D50D6803E06D06FBD50D683B -:1047EC00ADB2564B082703936F2A00D00237230033 -:1047FC00002243331A706368A360002B03DB04228E -:10480C00216891432160002D02D1049E002B0CD015 -:10481C00049E28003900FDF727FF039B013E5B5CDB -:10482C0033702B0005009F42F3D9082F09D1236860 -:10483C00DB0706D563682269934202DC3023013E14 -:10484C003370049B9B1B2361079B210000930598ED -:10485C00069B09AAFFF7F4FE431C4CD101204042F1 -:10486C000BB0F0BD45310A70344A03921A682168C6 -:10487C0020CA1A60080616D5CB0702D52023194387 -:10488C0021601027002DB2D1202322689A43226088 -:10489C00ADE7202209680A432260220078214532C4 -:1048AC001170274AE1E74806E6D5ADB2E4E71A688D -:1048BC000D68101D4969186013682E0601D5196022 -:1048CC0002E06D06FBD519800023049E2361BBE733 -:1048DC001A68111D1960166800213000626800F01A -:1048EC0033F8002801D0801B6060636823610023CB -:1048FC00049A1370A8E72369320006990598079D5E -:10490C00A847431CAAD023689B0715D4099BE068D1 -:10491C009842A5DA1800A3E722000123069905980E -:10492C00079E1932B047431C98D00135E368099AA9 -:10493C009B1AAB42F0DCE9E70025F7E75159000878 -:10494C006259000870477047C9B28218904201D171 -:10495C000020704703788B42FBD00130F6E710B58E -:10496C00884202D98B18984203D3002307E08B5C52 -:10497C008354013AFBD210BDCC5CC45401339A422F -:10498C00FAD1F8E7F7B507000E001400002905D19D -:10499C001100FFF7E7FB05002800FEBD002A03D13C -:1049AC00FFF774FB2500F7E700F01BF80190844239 -:1049BC0003D835004308A342EED321003800FFF79B -:1049CC00D1FB051EE8D0019B22009C4200D91A00A5 -:1049DC0031002800FFF748FB31003800FFF756FB89 -:1049EC00DAE70B1F1B68181F002B01DA0B58C018D5 -:1049FC0070470000044A03001068002802D0C31856 -:104A0C00136070470148FAE70022002008220020BA -:104A1C00F8B5C046F8BC08BC9E467047F8B5C04611 -:084A2C00F8BC08BC9E4670476F -:104A3400DA1400087C1400087C1400087C140008B4 -:104A44007C140008F61400087C140008881400087C -:104A54007C1400087C1400087C1400087C140008F2 -:104A6400941400087C1400087C1400087C140008CA -:104A74007C1400087C1400087C1400087C140008D2 -:104A84007C1400087C1400087C1400087C140008C2 -:104A94008A1400087C1400087C1400088A14000896 -:104AA40008160008EA150008EA150008EA150008C7 -:104AB400EA150008EA150008EA150008EA150008D6 -:104AC400EA150008EA150008EA150008301600087F -:104AD40052160008B8160008C8160008181700086F -:104AE400601700086E170008181700081817000848 -:104AF40018170008181700081817000818170008D6 -:104B040018170008181700081817000818170008C5 -:104B140018170008181700081817000818170008B5 -:104B240018170008181700081817000818170008A5 -:104B34001817000818170008181700081817000895 -:104B4400181700082217000818170008181700087B -:104B5400181700082217000818170008181700086B -:104B64001817000818170008181700081817000865 -:104B7400181700087C17000886170008E8170008B3 -:104B8400FA1700080E180008E8170008E8170008CC -:104B9400E8170008E8170008E8170008E8170008F5 -:104BA400E8170008E8170008E8170008E8170008E5 -:104BB400E8170008E8170008E8170008E8170008D5 -:104BC400E8170008E8170008E8170008E8170008C5 -:104BD400E8170008E8170008E8170008E8170008B5 -:104BE400E8170008E8170008F61700083818000846 -:104BF400E8170008F6170008E8170008E817000887 -:104C0400E8170008E8170008E8170008E817000884 -:104C1400F2170008F21700081C18000870180008A2 -:104C24008C1800089A1800087018000870180008FA -:104C34007018000870180008701800087018000830 -:104C44007018000870180008701800087018000820 -:104C54007018000870180008701800087018000810 -:104C64007018000870180008701800087018000800 -:104C740070180008701800087018000870180008F0 -:104C8400701800088818000870180008DA1800085E -:104C9400701800087A1800087018000870180008C6 -:104CA40070180008701800087018000870180008C0 -:104CB40070180008A8180008AC1800084819000863 -:104CC40026190008261900082619000826190008C4 -:104CD40026190008261900082619000826190008B4 -:104CE400261900081A1900081A1900081A190008C8 -:104CF4001A1900081A1900088E1900081A19000850 -:104D04001A1900081A1900081A1900081A190008B3 -:104D14001A1900081A1900081A1900081A190008A3 -:104D24001A1900081A1900081A1900081A19000893 -:104D34001A1900081A1900081A1900081A19000883 -:104D44001A1900081A1900081A1900081A19000873 -:104D54001A1900081A1900081A1900081A19000863 -:104D64001A1900081A1900081A1900081A19000853 -:104D74001A1900081A1900081A1900081A19000843 -:104D840096190008B01900081A190008CC1900086F -:104D94001A1900081A1900081A1900081A19000823 -:104DA4001A1900081A1900081A190008FE1900082F -:104DB4001A190008141A00081A1900081A19000808 -:104DC400241A00081A1900081A1900081A190008E8 -:104DD400EC190008381A0008401A00081E230008BD -:104DE400F6220008F6220008F6220008F62200083F -:104DF400F6220008F6220008F6220008F62200082F -:104E0400F6220008F622000860240008A623000801 -:104E1400F6220008F6220008F6220008F62200080E -:104E2400F6220008F6220008F6220008F6220008FE -:104E3400F6220008F6220008F6220008842300085F -:104E4400F6220008F62200085E230008F622000875 -:104E54003E230008F6220008F62200081E2300085C -:104E64006173736572745F6661696C6564000000E8 -:104E740072784572726F7243616C6C6261636B002D -:104E840074784572726F7243616C6C6261636B001B -:104E9400303132333435363738394142434445466C -:104EA40073746174654E6F700000000073746174F4 -:104EB400654E6F70000000004253505F646F43689A -:104EC400616E6E656C416374696F6E0073746174B6 -:104ED4006549646C650000005075736820746865EA -:104EE40020627574746F6E20746F20706C61792009 -:104EF4006F72207061757365203A2D290A000000D5 -:104F040068616E646C655265616452657175657340 -:104F14007400000068616E646C6557726974655250 -:104F2400657175657374000068616E646C65496EC3 -:104F3400766F6B65526571756573740068616E6434 -:104F44006C655265717565737400000064697370F3 -:104F5400617463684576656E7400000073656C6502 -:104F640063745061747465726E42794E616D65004C -:104F7400737461746543616E6F70790073746174E6 -:104F84006549646C65000000737461746550756CE8 -:104F940073696E6700000000737461746550617515 -:104FA400736564004253505F747269676765724148 -:104FB40044430000446174614C696E6B5F776169BE -:104FC40074466F7253796E630000000068616E640A -:104FD4006C65496E636F6D696E674672616D6500DD -:104FE400486172644661756C745F48616E646C6597 -:104FF4007200000073707572696F757349525100C5 -:1050040054494D315F42524B5F55505F5452475F94 -:10501400434F4D5F49525148616E646C65720000A4 -:10502400444D41315F4368616E6E656C315F495236 -:105034005148616E646C657200000000000000005D -:10504400000000000000000000000000000000005C -:10505400000000000000000000000000010000004B -:10506400020000000300000004000000060000002D -:105074000700000008000000090000004253505FD0 -:10508400726567697374657241707054696D657295 -:1050940048616E646C6572008C5800084C510008BD -:1050A40002007D03C800000098580008445100081D -:1050B400040032052C010000A05800083C510008EF -:1050C40004001405C8000000AC580008185100087A -:1050D40012001E09280000004253505F7265676980 -:1050E4007374657250756C736544656C656761743F -:1050F400650000005061747465726E497465726174 -:10510400746F725F636865636B5061747465726E0B -:10511400000000000102020504020A040408080554 -:1051240001080A01050A020105020204040A08042E -:1051340005080801010A0A0501080204040208011D -:105144000102040802010804050A0A05257328253A -:10515400732C202575290A002573282575290A0032 -:1051640053657474696E6720696E74656E736974CF -:105174007920746F202568687525250A00000000D1 -:1051840053657474696E67205663617020746F2070 -:10519400256875206D560A0053657474696E67201E -:1051A40070756C736520776964746820746F20254A -:1051B40068687520C2B5730A0000000070742D3E43 -:1051C400706163655F6D73203E3D20350000000013 -:1051D4007372632F6273705F73746D333267303729 -:1051E400312E630070742D3E70756C73655F776942 -:1051F4006474685F6D6963726F7320213D203000B1 -:1052040070742D3E6E725F6F665F70756C7365733C -:1052140020213D203000000028656C636F6E5B30F8 -:105224005D202620656C636F6E5B315D29203D3DFA -:10523400203000005465726D696E616C00000000DE -:105244005254540053454747455200005365717505 -:10525400656E6365725F257320756E65787065632E -:10526400746564206576656E743A2025750A0000BD -:10527400436F6E74726F6C6C65725F257320756E0C -:105284006578706563746564206576656E743A202C -:1052940025750A007366203D3D204E554C4C000098 -:1052A4007372632F636F6E74726F6C6C65722E63AE -:1052B400000000007372632F73657175656E63651A -:1052C400722E63006E6272203D3D203100000000AA -:1052D4007372632F646174616C696E6B2E6300007A -:1052E4006273702E637269746963616C5F73656362 -:1052F40074696F6E5F6C6576656C20213D20554343 -:105304004841525F4D4158002573282575293A209C -:10531400756E6B6E6F776E20646576696365206960 -:10532400640A00006273702E637269746963616C4D -:105334005F73656374696F6E5F6C6576656C20215D -:105344003D2030004672616D65207061796C6F613B -:105354006420746F6F206269673A20256875206243 -:105364007974657300000000436F6E74726F6C6C27 -:1053740065725F257320454E5452590A000000009F -:10538400436F6E74726F6C6C65725F257320455841 -:1053940049540A005472616E73616374696F6E20BC -:1053A4002568753A2072656164206174747269625B -:1053B400757465202568750A0000000025733A207D -:1053C400756E6B6E6F776E2061747472696275743A -:1053D400652069643D2568750A0000005472616E99 -:1053E40073616374696F6E202568753A20777269FA -:1053F40074652061747472696275746520256875BA -:105404000A000000706C617900000000706175731F -:10541400650000005472616E73616374696F6E207D -:105424002568753A20696E766F6B65202568750A64 -:10543400000000002573206E6F7420696D706C6528 -:105444006D656E746564207965740A0025732C207B -:10545400756E6B6E6F776E206F70636F646520304E -:10546400782530326868780A0000000073746F7021 -:105474000000000054696D6520253032753A2530EE -:1054840032753A253032750A0000000052656365B2 -:1054940069766564207369676E616C2025640A000F -:1054A400257328256875293F0A000000537769741D -:1054B4006368696E6720746F20272573270A0000CC -:1054C40070642D3E6E725F6F665F737465707320D7 -:1054D400213D2030000000007372632F70617474EA -:1054E40065726E5F697465722E630000497072693B -:1054F4006D3D2575206D412C20566361703D2575E9 -:10550400206D562C20566261743D2575206D560A17 -:1055140000000000257320272573270A00000000DF -:1055240053657175656E6365725F257320454E54CE -:1055340052590A0053657175656E6365725F257310 -:1055440020455849540A00005374617274696E67A7 -:1055540020272573270A00004C6173742070756C32 -:10556400736520646F6E650A0000000046696E6909 -:105574007368656420272573270A00002573204576 -:105584004E5452590A000000257320455849540AC4 -:1055940000000000526573756D696E6720272573DE -:1055A400270A000050617573696E672027257327E9 -:1055B4000A000000436F6D6D616E64733A202F3FE3 -:1055C400202F61202F62202F64202F6C202F6E202B -:1055D4002F71202F75202F76202F77202F30202F0A -:1055E400312E2E2F390A00005475726E696E6720B1 -:1055F40056636170204F46460A0000005475726E6F -:10560400696E672056636170204F4E0A00000000E7 -:1056140025730A004669726D776172652076302EB3 -:1056240033322D626574610A00000000556E6B6EA2 -:105634006F776E20636F6D6D616E6420272F256315 -:10564400270A0000476F742053594E432066726145 -:105654006D652C207365715F6E723D256868750AEF -:105664000000000027252E2A73273F0A00000000AF -:10567400476F74202573206672616D652C207365F5 -:10568400715F6E723D256868752C207061796C6F4E -:1056940061645F73697A653D2568750A00000000DE -:1056A40025733A20626164206672616D650A0000A8 -:1056B40025732C20494353523D307825780A000045 -:1056C40020205469703A2068616C74204350552C32 -:1056D400206368616E67652067756172642040208D -:1056E400257020746F20302C207468656E207374CC -:1056F40065702E0A0000000050742053523D30782B -:1057040025780A00414443206F76657272756E0AEB -:10571400000000004144432072656164790A00007E -:10572400414443206368616E6E656C20636F6E66EE -:1057340069672072656164790A000000414443206E -:10574400454F430A0000000041444320454F530A9B -:1057540000000000414443312D3E4953523D30780E -:1057640025780A0025732C2054454946310A000047 -:1057740025732C204953523D307825780A000000C7 -:10578400496E697469616C6973696E672E2E2E0A9D -:105794000000000044657649643D307825782C206B -:1057A40053797374656D436F7265436C6F636B3DBE -:1057B40025750A004C4C5F4144435F5245475F499D -:1057C4006E6974206572726F723D25750A0000005F -:1057D40025733A205053433D25750A004368656399 -:1057E4006B696E6720272573270A000025733A200A -:1057F40073686F727420696E20656C636F6E202508 -:1058040068750A006D652D3E6368616E6E656C5F38 -:105814006664203C2030000043616E206F6E6C791A -:1058240020757365206F6E652073657269616C20E5 -:10583400706F727420617420612074696D652C200E -:10584400666F72206E6F770A0000000053746172F5 -:1058540074696E67204E656F444B210A25730000FE -:10586400436F6E736F6C653A20272573270A000017 -:10587400456E64206F662073657373696F6E0A00EA -:10588400427965210A0000004A61636B68616D6DAD -:1058940065720000546F67676C65000043726F7334 -:1058A40073546F67676C6500436972636C650000CD -:1058B400415353455254494F4E204641494C454467 -:1058C40020282573203A202575292025730A0000F5 -:1058D400424144004E4F4E450041434B00004E416F -:1058E4004B000053594E430044415441004F50541F -:1058F4005300000073746F7261676520213D204E70 -:10590400554C4C006D616F6C69622F7372632F6527 -:1059140076656E7471756575652E63006576656E62 -:10592400745F73697A65203D3D20414F4576656E0D -:10593400745F73697A65286576742900232D302B8A -:105944002000686C4C00656667454647003031327C -:1059540033343536373839414243444546003031D3 -:105964003233343536373839616263646566000032 -:0859740074CFFF7F0100000069 -:04597C00E50000083A -:04598000BD0000085E -:105984000024F400040000000C00002000000000CB -:105994000000000000000000000000000000000003 -:1059A40000000000000000000000000000000000F3 -:1059B40000000000000000000000000000000000E3 -:1059C40000000000000000000000000000000000D3 -:1059D40000000000000000000000000000000000C3 -:0C59E400000000000000000000000000B7 -:0400000508002A8144 +:10013C0000E100E0F0B50D4F06000B003D0000247F +:10014C0083B02878B04205D001340C35042CF8D19A +:10015C0003B0F0BD60000419A4003C196178A068DC +:10016C00009264680A003100A047F1E78C0000207F +:10017C00F0B501224F46D64646460B680024914600 +:10018C00C0B5002B1AD14BE0170057437B00DB198D +:10019C00DB43C568AC4666460D691E407D4335435E +:1001AC00C5604D68022D2DD07D43026813402B4352 +:1001BC0003600B681A000134E24031D04D461A003E +:1001CC00A5402A402B42F5D04B68013B012BDBD8D4 +:1001DC001700574383688D6898467B009C467D4387 +:1001EC00BC44AA4646466546AE4335005646634671 +:1001FC002E438660CE684568564395433543DB43B2 +:10020C004560C6E7FF2A10D83D007D43026A2E01E7 +:10021C00761BB2434E6975432A4302624D68C3E7AD +:10022C00E0BCBA46B146A846F0BD120A524352434E +:10023C00456A1601B61AB5434E6972432A434262A7 +:10024C004D68B1E710B51124020008480B00016A93 +:10025C00A14301628020064980008862DA38FF38A9 +:10026C0088610449044803F04FFBFEE7002C014071 +:10027C0000040050C84F0008B4520008FA2170B5B1 +:10028C00124C05008900206802F00EF98023013819 +:10029C005B04984201D3012070BDC0210C4A0906B1 +:1002AC0050600C48036A1B021B0A0B4303620721B4 +:1002BC00002393601160032DEDD8026AA907120286 +:1002CC00120A0A43026218006560E5E7000000208C +:1002DC0010E000E000ED00E010B50A000249034810 +:1002EC00103103F011FB10BDC84F0008C0520008BC +:1002FC0010B50A0002490348203103F005FB10BD7C +:10030C00C84F0008C052000870B50C0064260500E8 +:10031C00184803F0F9FADB2366435B00E918012265 +:10032C00EC540720FFF706FF3100134803F0ECFAFA +:10033C008023124AD652124B321C9E4200D91A1CF0 +:10034C00104B92B29A4200D21A000D4B28349A1AD2 +:10035C000D4BE4B253438022120194460B4A634482 +:10036C001B0B536121000A4803F0CEFAB823FF336C +:10037C00EC5470BDC8520008E85200088C000020F4 +:10038C00D3270000B20400004907000000740040AD +:10039C0000530008F8B50F000C4905001600303169 +:1003AC0002000B4803F0B0FA0A4B1A7A042A0BD05D +:1003BC00511C54001972A418074BA400074AE554A9 +:1003CC001B195F705A609E60F8BDC046C84F00088C +:1003DC00245300080C0100208C000020E10F0008C1 +:1003EC004B1E9941012310B5494299430022002329 +:1003FC000E3103F0EBFC10BD70B5060014001D00AF +:10040C0082B080360092019332687368A41A9D41C1 +:10041C00002D04D1074B9C4201D802B070BD0823BB +:10042C006A46132103F0D2FC009B019C336074607C +:10043C00F3E7C046BFE1E400F0B5D6464F4646466A +:10044C000300C0B5A933FF331D8902000020002D25 +:10045C0004D1E0BCBA46B146A846F0BDD4219C7A82 +:10046C004900515898881A79002C7ED1CC7AD879C9 +:10047C005200241A0120013CE4B2987248689B791E +:10048C0085189946865C6D788F7AC82B7ED80123A7 +:10049C005B424B449846042F00D89BE04B46002B04 +:1004AC0005D1704B704A1800704903F03DFA002CCE +:1004BC0000D185E07B01DB1B9801C01AFA23C00038 +:1004CC00C01980019B04984274D36948002206210C +:1004DC00684B013CD8621C635A621A698A431A61E0 +:1004EC00354200D09BE0052333427ED042460221A8 +:1004FC00604B35435A63DA680A43DA605A6901394A +:10050C000A435A614022ED4301205B4B9A61EBB2E6 +:10051C00054200D09CE0594A022190620422082036 +:10052C0019401A400340002900D08DE002205349A5 +:10053C008862002A6FD10421504A9162002B50D05E +:10054C0020224E4B9A61002382214D4A494C535232 +:10055C006363A363906C5D39002203F037FC0122C6 +:10056C00236801201343236073E701320C89D6B250 +:10057C00B4422DD07200DC790134E4B2DC71CE7A55 +:10058C00013EB44252D00020987277E7C7239846B8 +:10059C00042F8CD8334B3B4A18003B499A4603F046 +:1005AC00C3F9002C0ED07B01DB1B9801C01AC000D4 +:1005BC00C0198001FA21890001F076FF013885E726 +:1005CC00284B9A465046314A314903F0ADF971E750 +:1005DC000022D0E7234B2B4A18002B4903F0A4F937 +:1005EC005CE72022254B9A62ADE742460421214B61 +:1005FC0035439A63DA680A43DA605A6903390A4365 +:10060C005A61002D1ED140221B4B9A621B4B3E3A65 +:10061C0099619A6108230421184A91618EE762213D +:10062C001C4A1048FF3103F07FF95CE700260130CB +:10063C0080B2DE7198800F898742A4D1013D9E80E3 +:10064C001D81A0E7ADB25DE702200C49886170E71F +:10065C00082402213C3A19401A402340074CA0615F +:10066C0061E7C046485300085C5300083E03000095 +:10067C00FEFF0000002C0140000800500004005058 +:10068C008C000020345300083D0300007853000810 +:10069C003F03000090530008032310B5104C114A7F +:1006AC0023616361104BA261E36180239B01236290 +:1006BC000023A3626362E36222660C4A0C490C328B +:1006CC0062661022E01DA2662367E366636703F08F +:1006DC00D5FE2000074903F0D1FE2023A37110BDE5 +:1006EC005C210020AC5300085C0100200C010020B0 +:1006FC00B8530008BC530008F8B54746CE4680B541 +:10070C008368C56899465B1B9846436804000E00D5 +:10071C0017005819904507D9ED1903F075FDE560E0 +:10072C00C0BCB946B046F8BD424603F06DFD4B4621 +:10073C003100ED19ED1A2A006068414403F064FDA4 +:10074C00E560EDE7F0B557464E464546DE46E0B56A +:10075C00354B83B09A461B78060015000191002B8F +:10076C0056D07700BB19DB0053441A6F9046DA6EF3 +:10077C009146904525D8130042462C009B1A9D4269 +:10078C0009D8002C09D1200003B0F0BCBB46B246FE +:10079C00A946A046F0BD1C1EF5D0A146BB19DB0036 +:1007AC005344596E220041440198A04403F02CFD9F +:1007BC004C46002CE7D04346BF19FF0057443B671B +:1007CC00E1E742469B6E2C009B1A9D4227D8BB1931 +:1007DC00DB0053449B46596E22004144019803F0C0 +:1007EC0013FD5B469B6EA0442D1B434519D04B4615 +:1007FC0042469B1A99464D450DD8002DD9D0019BE8 +:10080C00A1469C46A44463462C000193A944C5E729 +:10081C00FFF742FFA5E74D46002DCAD0EFE71C00BD +:10082C00D5E700239846E6E75C210020F8B557464B +:10083C004E46DE4645468946411CE0B517004A0047 +:10084C0052180300D2009246344A5E0093461000C0 +:10085C00F618F6005E44F36A50449846012B0CD00F +:10086C00022B27D0002B17D0002398464046F0BC13 +:10087C00BB46B246A946A046F8BDB36A726A93421B +:10088C0047D9013B9B1AB8469F4200D9984642462D +:10089C004946FFF731FFE9E7B36A726A934233D9ED +:1008AC00013B9B1A9F42E1D83A004946FFF724FFCF +:1008BC00B846DBE70023746A98461DE0013B356AB5 +:1008CC001B1BBB4200D93B002D1B9D4200D91D00B8 +:1008DC005B46534458682A004946001903F094FCBF +:1008EC00336A6419E31A5A1E93415B421C40A844B4 +:1008FC00A9447F1B7462B9D0B36AA342DED8356AAF +:10090C005B19013B1B1BDCE7316A5B18013B9B1A33 +:10091C00C8E7316A5B18013B9B1AB4E75C210020E5 +:10092C00F0B5C64600B5856843686A1C04009A4257 +:10093C0007D8036859551500C36882600133C3603A +:10094C0043689D4202D080BCB846F0BD236827693D +:10095C0098460E4B1B78002B15D0EFF31086012117 +:10096C0081F310882A0041463800FFF75FFF86F3B9 +:10097C001088A368834203D001235B42E360E2E763 +:10098C000023A360DFE7FFF787FEE6E75C2100208A +:10099C00F0B54E4645465746DE46E0B583B09A461E +:1009AC000C9B80460E0015009946914200D27DE0CA +:1009BC0008000127290001F077FD01378542F9D99C +:1009CC00574500D2574601230D9A1A4001920D9AB1 +:1009DC0013424ED14B46002B4BD0130020249B07C7 +:1009EC005ED44F4545D201235B429C4621004046D4 +:1009FC00E144FFF795FF4346DB68002B32DB4B46A7 +:100A0C00002BEED153460124012B07D901235B4265 +:100A1C009C46E24453466C43012BF7D8210030002E +:100A2C0001F042FD8542F5D9214B9B4644239A4661 +:100A3C0006E02900200001F037FDAC420FD3040082 +:100A4C003000210001F0B6FD534658440E00C15C45 +:100A5C004046FFF765FF4346DB68002BE9DA019B54 +:100A6C00002B19D103B0F0BCBB46B246A946A04638 +:100A7C00F0BD4346DB68002BC4DAF3E74F45F1D2F7 +:100A8C0001235B429C4620214046E144FFF748FF8E +:100A9C004346DB68002BE5DB4B46002BEED1E1E750 +:100AAC0053465C425C41240120349AE7012787E7D6 +:100ABC00C84F000810B5080003F05CFA03490200A7 +:100ACC005431034802F020FF002010BDC84F00082D +:100ADC00C453000810B5080003F04CFA0349020097 +:100AEC006031034802F010FF002010BDC84F000811 +:100AFC00E853000810B50400806F03F063F9002878 +:100B0C0001D1002010BD606F03F05CF90028F8D013 +:100B1C00200003F057F9F5E770B5D026760083591D +:100B2C0004009847051E1CD0A65903F005FA0100D5 +:100B3C002000B047002804D0FD210A4A0A4802F0E0 +:100B4C00F3FED0235B00E55003F0E8F90100200030 +:100B5C00A847002805D08021024A0348490002F02A +:100B6C00E3FE70BD0C5400081854000870B5D02674 +:100B7C007600835904009847051E1DD0A65903F032 +:100B8C00DBF901002000B047002805D066210B4A94 +:100B9C000B48FF3102F0C8FED0235B00E55003F098 +:100BAC00BDF901002000A847002805D0B421034A54 +:100BBC000348490002F0B8FE70BDC0460C54000852 +:100BCC002C540008F8B50600CC3605000122300084 +:100BDC0002F074FF012804D0C521264A264802F0F1 +:100BEC00A3FE72B6BFF34F8FBFF36F8F234C27005A +:100BFC0078373B78FF2B30D022000133783230002D +:100C0C00137002F0D5FE002810D0250078352B7813 +:100C1C00002B1AD0013BDBB278342370002B04D1AB +:100C2C00BFF34F8FBFF36F8F62B6F8BD0223FF3354 +:100C3C00EA56012A18D02500114912486C31783532 +:100C4C0002F062FE2B78002BE4D1A6210E4A0F484D +:100C5C00890002F069FE2B78DCE70D4A0D490B4840 +:100C6C0002F062FE3B78C7E780210B4A13688B4386 +:100C7C001360CAE73C540008485400088C0000205C +:100C8C00C84F0008805400089C54000848530008C2 +:100C9C00585400089102000000440040F0B5802533 +:100CAC000400FC20C64681266D00635D00B55A1C0D +:100CBC00625522587600D154615DA35B994207D3EB +:100CCC00275811D082225200A05A1B18994203D0E7 +:100CDC00002080BCB846F0BD802300225B003800A9 +:100CEC00E25403F019F8F4E7380002F0F1FF0028A1 +:100CFC000CD0380003F018F882235B0001009846F2 +:100D0C00E052A84214D8615DA35BDEE7635D013B52 +:100D1C00DBB26355002BDBD00023FC302258D118FA +:100D2C004978D154625D0133DBB29A42F6D8CFE7F1 +:100D3C00034802F0E9FD00234246A352C8E7C0462F +:100D4C00BC540008F0B5CE4647460B00812180B557 +:100D5C00490083B0465A6946F41DE408E400091BB7 +:100D6C0002AF8D4602A9884600920500002201219F +:100D7C00404602F03DFF72B6BFF34F8FBFF36F8F4B +:100D8C0078239946264CA1444B461B78FF2B38D030 +:100D9C002200280078320133137041463200CC30E7 +:100DAC0002F00EFE002815D1250078352B78002B8B +:100DBC001FD0013BDBB278342370002B04D1BFF37E +:100DCC004F8FBFF36F8F62B6BD4601B0C0BCB94642 +:100DDC00B046F0BD0223FF33EA56012A19D0250094 +:100DEC00104911486C31783502F08EFD2B78002BB0 +:100DFC00DFD1A6210D4A0E48890002F095FD2B7813 +:100E0C00D7E70C4A0C490A4802F08EFD4B461B787A +:100E1C00BEE78021094A13680B431360C4E7C04640 +:100E2C008C000020C84F0008805400089C54000817 +:100E3C004853000858540008910200000044004038 +:100E4C00F0B5CE4647461400812280B55200825A36 +:100E5C0083B09046984442460500D01D6A46C008AF +:100E6C00C000121A02AF954602AA91468322520084 +:100E7C00AA5C4846019300940B00042102F0F0FE9A +:100E8C0072B6BFF34F8FBFF36F8F494C2600783685 +:100E9C003378FF2B00D177E021005A1C7831D2B285 +:100EAC000A708021434EC905F069496AF161884294 +:100EBC0002D9316A01313162002A46D022007832DF +:100ECC001370002B04D1BFF34F8FBFF36F8F62B63B +:100EDC0083204000295CF2690B00366A3633B60772 +:100EEC009B009208EB1832435A60072301311940DA +:100EFC00295472B6BFF34F8FBFF36F8F260078362D +:100F0C003378FF2B47D0220028007832013313703E +:100F1C0049464246CC3002F053FD002829D1250029 +:100F2C0078352B78002B1CD0013BDBB27834237046 +:100F3C00002B04D1BFF34F8FBFF36F8F62B6BD464A +:100F4C0001B0C0BCB946B046F0BDA6211A4A1B4838 +:100F5C00890002F0E9FC230078331B78013BDBB2FB +:100F6C00ACE7A621144A1548890002F0DDFC2B7869 +:100F7C00DAE70223FF33EA56012A13D0104911484D +:100F8C006C3102F0C1FCCAE70F4A10490B4802F061 +:100F9C00CBFC337880E70C4A0C49084802F0C4FCBF +:100FAC003378B0E780210A4A13680B431360B6E725 +:100FBC008C0000200C0100209C54000848530008B1 +:100FCC00C84F0008805400085854000891020000D3 +:100FDC0000440040F0B5D6464F464646C0B500AF7B +:100FEC0098463B8C060089461000190015009A465D +:100FFC0003F08AF86B460C3084B20734E408E40042 +:10100C001B1B5A889D469A8000221A805A80DA80CF +:10101C0005321A814A4629005A8103A85346424692 +:10102C0003F07EF8D422030052000C33B058012197 +:10103C006A469BB2FFF704FFBD46E0BCBA46B14618 +:10104C00A846F0BDF0B54F46D6464646C0B582B070 +:10105C00050000AF08000C0002F08CFF152824D00E +:10106C000FD8012835D002282AD1B949B94802F045 +:10107C004BFC0020BD4602B0E0BCBA46B146A846C7 +:10108C00F0BD17281CD1200002F078FF027A040072 +:10109C00861D062A40D0082A20D0022A29D0AC4925 +:1010AC00AD48703102F030FCE3E7D423A84A5B0072 +:1010BC00E858833B0021FF3B0C32FFF7C1FED8E719 +:1010CC00200002F057FFA2490200A44802F01CFCC9 +:1010DC00CFE79F49A24802F017FCCAE7C188B28843 +:1010EC00A04802F011FC9A499F485C3102F00CFCBC +:1010FC00BFE7B288C1889D4802F006FCB288062A78 +:10110C0000D1D4E0072A6DD0052A1AD0904998480E +:10111C00343102F0F9FBACE7B288C188954802F093 +:10112C00F3FBB288072A00D1B2E0082A00D18CE088 +:10113C00062A00D19DE086498D48483102F0E4FB37 +:10114C0097E7D2235B00EB58E9469A46DA235246DE +:10115C005B00D45C6A46A3000733DB08DB00D31AC0 +:10116C009D46E846002C0FD0D22252000023944614 +:10117C0050466146415840461A0151589A00013375 +:10118C008150DAB29442F3D82100404602F054FF69 +:10119C0003006A460C339BB20733DB08DB00D31A1F +:1011AC005A889D469A8000221A805A8006236B44E6 +:1011BC009A4631001800063203F026F805235246F1 +:1011CC004146937003A8220002F056FFD42203007C +:1011DC0052000C33A85801216A469BB2FFF730FE2F +:1011EC00CD4646E7D2235B00EA581233D35C01208C +:1011FC00FB7102F0C5FE03006C460C339BB2073347 +:10120C00DB08DB00E31A5A889D469A8000221A807C +:10121C005A8006236B44984631001800063202F0BF +:10122C00F3FF0523424603A89370F91D012202F037 +:10123C00A9FED422030052000C33A85801216A469F +:10124C009BB2FFF7FDFDA54613E7B3790C2B00D03D +:10125C000FE79933FF33ED58F3790E34042B65D037 +:10126C00052B5AD01E2100230022280002F0AEFDCF +:10127C00FFE6B3790C2B00D0FBE6D221220049000B +:10128C0068588439F3790E32FF3902F09FFDF0E68D +:10129C00B379042B00D0ECE62200A133FF33E858DD +:1012AC00A43B22210D32FF3B02F090FDE1E6D2225D +:1012BC00B6235200A958FF33CB5C8A581B019C58AB +:1012CC00E846200002F08CFE03006A460C339BB209 +:1012DC000733DB08DB00D31A5A889D469A8000221C +:1012EC001A805A8006236B44994631001800063246 +:1012FC0002F08AFF05234A462100937003A802F0EE +:10130C007BFED422030052000C33A85801216A46FC +:10131C009BB2FFF795FDC546ABE6174905222000A9 +:10132C0002F064FF1C2100289CD19CE704222000C1 +:10133C00124902F05BFF002808D00422200010495B +:10134C0002F054FF00288DD11D218CE71B218AE768 +:10135C0048500008F8540008C4550008E853000829 +:10136C00E05400088C550008AC5500080C550008DA +:10137C003455000854550008845500087C55000865 +:10138C00E45500080FB430B597B01AA920C928004D +:10139C00019102F0AFFA2A0004005021019B02A82F +:1013AC0003F0A0F8002807DD064A013083B20021C3 +:1013BC00106C02AAFFF744FD200017B030BC08BC2B +:1013CC0004B018470C01002070B5050008000C0093 +:1013DC0002F0D0FDC31FDBB21B2B03D823499B00AB +:1013EC00CB589F4602002249224802F08DFA70BD6C +:1013FC002100A86F02F02EFDF9E7200002F0BEFDDF +:10140C000023416800681C4A01F0EEF904003C21FD +:10141C00200001F0CFF820000E003C2101F044F830 +:10142C003C2101F0C7F80D00E1212000090101F079 +:10143C003BF8330001002A001048FFF7A3FFD6E762 +:10144C00200002F09BFD04680D482100FFF79AFF75 +:10145C00022CCCD188230022EA54C8E700230022B6 +:10146C001F21A86F02F0B2FCC1E7C046D44B0008A4 +:10147C00C85000081856000840420F00EC550008F0 +:10148C0004560008B62370B5FF33C55C113BC35836 +:10149C002D015D19040029681448FFF773FF2E68AD +:1014AC00300000F0EFFF310082B20620FEF742FE62 +:1014BC0020000A21FEF728FFB823D422FF33520064 +:1014CC00E35CA550A934FF34AA89A37100232281BF +:1014DC00A380EB7A002B03D00023E371A37270BDC1 +:1014EC004821034A034802F01FFAF5E72456000886 +:1014FC003856000850560008F0B5D6464F464646BA +:10150C000500C0B508000C0002F034FD212840D0C5 +:10151C0012D8142829D020281DD1B622DA21FF3266 +:10152C00AB5C49000133DBB2AB54695C99425DD0D2 +:10153C002800FFF7A7FF08E022280CD1200002F0BA +:10154C001DFD01782800FEF7DFFE0020E0BCBA4646 +:10155C00B146A846F0BD200002F00CFD2549020062 +:10156C001031254802F0D0F9EFE7200002F006FD1B +:10157C00224A41888388008853434A43C101091891 +:10158C000901091A9B0B920B890A1D48FFF7FAFEF9 +:10159C00DBE7200002F0F2FC8246200002F0ECFCBB +:1015AC00DA235B009846EB5C0700002BC0D0D223FB +:1015BC005B000024994605E043460134EB5CE4B241 +:1015CC00A342B5D94A46AA5823019E58300000F0D0 +:1015DC0059FFB842F0D13A003100504602F006FEF5 +:1015EC000028E9D1B623FF33EC54A1E70023AB5418 +:1015FC009EE7C046C8500008C45300084DCE0000FA +:10160C006456000870B5040008000D0002F0B2FC2E +:10161C00272803D8294A800013589F462900200008 +:10162C00FFF76AFF70BDB623FF33E25C113BE35852 +:10163C0012019B18B822D426FF32A25C7600A3516B +:10164C00A5199989AA7100222981AA80DA7A002A1F +:10165C002CD00022EA71AA7219681948FFF792FE81 +:10166C001848DFE7184919481C3102F04DF9DC2302 +:10167C0001225B000820E254E118FEF75BFD00201C +:10168C00D0E7114912481C3102F03EF90020C9E79D +:10169C00104802F039F90020C4E7D4235B00E3586A +:1016AC000D481968FFF76EFE0020BBE748210B4A76 +:1016BC000B4802F039F9A359CBE7C046444C00085B +:1016CC00B4560008F1160008C85000088C560008E3 +:1016DC00A0560008C4560008D85600083856000812 +:1016EC005056000870B5050008000C0002F042FCD2 +:1016FC00272803D81B4A800013589F462100280036 +:10170C00FFF7FAFE70BD0020FCE71748FAE717490F +:10171C001748283102F0F8F8DC2303225B00EA5466 +:10172C000820E918023AFEF705FD2800FEF784FEB2 +:10173C000020E7E70D490F48283102F0E5F80020BA +:10174C00E0E72800FEF778FE03000020002BD9D13B +:10175C00A933FF33EB5808481968FFF713FE074805 +:10176C00D0E7C046E44C00088D170008C8500008AC +:10177C00E8560008F4560008D85600081116000860 +:10178C0070B5050008000C0002F0F4FB272803D804 +:10179C00214A800013589F4621002800FFF7ACFE19 +:1017AC0070BDD4235B00EB581C481968FFF7EAFDA9 +:1017BC001B48F5E71B491C48383102F0A5F8DC231F +:1017CC0002225B000820EA54E918013AFEF7B2FC49 +:1017DC000020E5E713491548383102F095F8002050 +:1017EC00DEE70020DCE7D8235B00EB5A002B08D1A6 +:1017FC00A933FF33EB580E481968FFF7C3FD0D48AA +:10180C00CEE7D4235B00EB580B481968FFF7BAFD01 +:10181C000020C5E70748C3E7844D000800570008BF +:10182C00F1160008C8500008E8560008F4560008E5 +:10183C00D85600081116000810570008010030B5E2 +:10184C003039CBB283B0472B03D8534A9B00D358C3 +:10185C009F4601005148FFF795FD03B030BD802530 +:10186C008B00C9184E4B01AA49004E4C986B117055 +:10187C000123222102F0AAFA6369AD002B42ECD1BC +:10188C00494802F041F8A561E7E78025454CAD00D9 +:10189C0063692B427AD1002301AA1370404B222199 +:1018AC00986B012302F092FAD7E74048FFF76AFDE4 +:1018BC00D3E73F493F48443102F026F83E4A3F49BE +:1018CC0093680B4004210B439360C6E7344C002310 +:1018DC0000220C21A06B02F079FA002300220E21C9 +:1018EC00A06B02F073FAB8E7DB222D4B5200D96BD8 +:1018FC008A5C023A111C642A46DC08B201AA0A2846 +:10190C0013DB1170986B2221012302F05FFAA4E71C +:10191C00DB22234B5200D96B8A5C0232111C642AE5 +:10192C0000DD642101AA0929EBDC0A21E9E7802208 +:10193C002349D203486903041340402282431343D2 +:10194C008B618AE7164B00222021986B002302F052 +:10195C003DFA82E702230193114B0721986B01AAF0 +:10196C00042302F033FA78E71648FFF70BFD74E70F +:10197C000F490B4B0F4854311C6C01F0C5FF082369 +:10198C000022FF33E25468E76421B6E70E4801F009 +:10199C00BBFFA5627FE7C046244E0008985700089D +:1019AC000C01002000040050685700082057000864 +:1019BC00C85000087C57000800240140E8FFFF7F56 +:1019CC00000800508057000854570008F0B54546F1 +:1019DC00DE4657464E46E0B583B0804602AF08005F +:1019EC000C0002F099F90500012814D0200002F037 +:1019FC0097F90600032D54D0200002F095F981468A +:101A0C00042D10D0280002F0E5F84B4601003200FE +:101A1C00334801F079FFBD4601B0F0BCBB46B2467D +:101A2C00A946A046F0BD200002F072F981462000C4 +:101A3C0002F080F90500200002F076F94A46030016 +:101A4C00002A46D1022806D12A782F2A03D1687899 +:101A5C00FFF7F4FE1CE069465A1D91460732D20886 +:101A6C00D2008A1AEB46954602AA9246494650463F +:101A7C001C4A009502F0CEFC002808DD814506D9F1 +:101A8C00194A83B20021106C5246FFF7D9F9DD4692 +:101A9C00200002F03DF9310002004046FFF752F9F8 +:101AAC00B9E70100114801F02FFF200002F030F9D6 +:101ABC000400020031004046FFF744F94346210080 +:101ACC0018684B1E994100220023153102F07EF953 +:101ADC00A1E740462A001721006802F077F9D7E702 +:101AEC00DC570008D05700080C010020B057000844 +:101AFC0070B50825FF35435D0400002B0ED10A2973 +:101B0C0005D0C9B2FFF7CAF8032818D070BD01225E +:101B1C000339FFF717F901236355F7E7C9B2FFF74C +:101B2C00BDF80028F2D0FC23E558280002F004F997 +:101B3C00002814D029002000FFF748FFE6E7FC231B +:101B4C00E558280002F0F8F800280ED029002000F3 +:101B5C00FFF73CFF08230122FF33E254D6E7064986 +:101B6C0006486C3101F0D0FED0E7034903486C31D4 +:101B7C0001F0CAFEEEE7C046C85000080C58000839 +:101B8C00112110B50F4A1048136A8B43136280223F +:101B9C000E4B92009A62DA3AFF3A9A610C4B0D495D +:101BAC005A6801F0B1FE0C4C0122210048230B486D +:101BBC004831E25401F0A8FE4822A35C002BFCD172 +:101BCC0010BDC046002C01401C58000800040050F9 +:101BDC0000ED00E0485100080C0100202C580008D2 +:101BEC00024AD36C0133D3647047C0460C01002009 +:101BFC0010B5EFF3058203490348143101F084FE5C +:101C0C0010BDC04648510008C0520008012210B552 +:101C1C00144B19690A421DD00620196891431960AA +:101C2C00D9688143D9601969013081431961402118 +:101C3C000D4B99620D4B19399A6101329A6102323E +:101C4C009A611C329A610A4B0022986C002302F0B4 +:101C5C00BDF810BD07491A692031074801F054FE40 +:101C6C00F7E7C046002C014000080050000400506B +:101C7C008C0000204851000864580008022210B55E +:101C8C00254BD9680A4202D019690A423AD1234934 +:101C9C000422214BD868024202D0186902420CD1AE +:101CAC008223CA5A1C4B1B6B01339A4212D01A4B1B +:101CBC001B491A690A4218D110BD18699043186162 +:101CCC008223CA5A013292B2CA52134B1B6B013394 +:101CDC009A42ECD100230022886C262102F076F87F +:101CEC000D4B0F491A690A42E6D01B690D48194081 +:101CFC0001F00AFEEFF305820B490C48143101F098 +:101D0C0003FED9E7196991438222196103498B5A61 +:101D1C0001338B52BCE7C046002C01408C000020E4 +:101D2C00E0FF0C006458000848510008C05200083D +:101D3C00F8B580230222DB0519690A420FD1012173 +:101D4C001A69114203D01A698A431A61F8BDEFF37C +:101D5C0005822A492A48143101F0D6FDF6E71969A3 +:101D6C00284C91431961266B676B72B6BFF34F8F8A +:101D7C00BFF36F8F250078352B78FF2B36D02100E1 +:101D8C005A1C7831D2B20A7080211F4DC905E869FE +:101D9C00496AE961884202D9296A01312962002A1B +:101DAC0018D0220078321370002B04D1BFF34F8F60 +:101DBC00BFF36F8F62B62B6AEA69990792080A43E0 +:101DCC009B083800B0478022D205536BA16B5B187F +:101DDC005363BBE7A6210D4A0D48890001F0A4FD11 +:101DEC00230078331B78013BDBB2DAE7094A0A4956 +:101DFC00074801F099FD2B78C1E7C046485100080F +:101E0C00C05200088C0000200C0100209C540008DB +:101E1C0048530008585400089102000070B50D4C4E +:101E2C00250078352B78002B0BD0013BDBB27834B6 +:101E3C002370002B04D1BFF34F8FBFF36F8F62B6AB +:101E4C0070BDA621044A0548890001F06DFD2B7870 +:101E5C00EBE7C0468C0000209C5400084853000857 +:101E6C0070B572B6BFF34F8FBFF36F8F084C250060 +:101E7C0078352B78FF2B03D001337834237070BD69 +:101E8C00044A0549054801F04FFD2B78F4E7C0469C +:101E9C008C000020585400089102000048530008A0 +:101EAC00102210B50E4BD9680A4211D119690A4299 +:101EBC0007D1EFF305820B490B48143101F024FDD7 +:101ECC0010BD0A4800211A613C3001F049FDF7E7CA +:101EDC0006480121DA603C3001F042FDF0E7C046D3 +:101EEC000018024048510008C05200088C00002025 +:101EFC0010B5EFF3058203490348143101F004FDDA +:101F0C0010BDC04648510008C0520008102210B540 +:101F1C001C4B19680A421AD1012219680A4211D1C4 +:101F2C00802219689201114222D1042219680A42B6 +:101F3C0023D1082219680A420ED01A60124801F007 +:101F4C00E3FC03E011481A6001F0DEFC10BD1A60DE +:101F5C000F4801F0D9FCF9E719680E4801F0D4FCE0 +:101F6C00EFF305820C490D48143101F0CDFCEDE77F +:101F7C001A600B4801F0C8FCE8E71A60094801F048 +:101F8C00C3FCE3E700240140B45800088058000863 +:101F9C0070580008C058000848510008C05200088A +:101FAC008C580008A8580008022310B5134C22685E +:101FBC00134218D108232268134208D11049226811 +:101FCC001048403101F0A0FC0423636010BD0C49A3 +:101FDC00636040310C4801F097FC01210B4A1368F7 +:101FEC000B431360F2E76360094B14211A00986CE1 +:101FFC007A32062301F0EAFEE8E7C0460000024010 +:10200C0048510008DC580008D0580008080002406D +:10201C008C00002010B50D4BDA69920610D4DB69E8 +:10202C001B0605D50A4B0B49986E5B6E984710BD85 +:10203C00EFF3058208490948143101F065FCF6E715 +:10204C000348596A4C3001F08BFCF0E70044004027 +:10205C008C0000202844004048510008C052000861 +:10206C0070B572B6BFF34F8FBFF36F8F1D4C250049 +:10207C0078352B78FF2B2DD021005A1C7831D2B219 +:10208C000A708021184DC905E869496AE9618842DE +:10209C0002D9296A01312962002A0FD078342370C1 +:1020AC00002B04D1BFF34F8FBFF36F8F62B6296A39 +:1020BC00E8698B0780081843890870BDA6210B4A74 +:1020CC000B48890001F030FC230078331B78013B6E +:1020DC00DBB2E3E7074A0849054801F025FC2B78F9 +:1020EC00CAE7C0468C0000200C0100209C5400085C +:1020FC004853000858540008910200007047C0462D +:10210C0010B50B00EFF31084012181F31088190036 +:10211C00FEF718FB84F3108810BDC04610B582B0D2 +:10212C00EFF31084012181F310886B460122D91D35 +:10213C000020FEF707FB84F31088012803D16B46BF +:10214C00D87902B010BD01204042FAE710B5FEF775 +:10215C00A3FA10BDF0B5DE464E4657464546E0B5EF +:10216C009BB00AAB05934023069300230793089377 +:10217C0001330C0091469B460290099005E005A89E +:10218C00FEF7CEFB0898002859DB21780134002992 +:10219C005CD02529F3D122001378002602250820D3 +:1021AC00140021392D2B0CD02D2B0ED8232B11D014 +:1021BC002B2B00D05FE10E430132137814002D2B32 +:1021CC00F2D15B4601321E43F7E7302B05D12E438B +:1021DC000132F2E706430132EFE71A00303A0025EC +:1021EC00092A0DD81A00AB005B1901345B009B184F +:1021FC002278303B1D001300303B092BF3D9130020 +:10220C002E2B00D1D8E000272378042101E063783D +:10221C0001341A008A43682AF9D0252B07D0583B81 +:10222C00DBB2202B07D8954A9B00D3589F4625211B +:10223C0005A8FEF775FB089801340028A5DA1BB039 +:10224C00F0BCBB46B246A946A046F0BD0898002893 +:10225C00F5DD079C002C00D0C6E00019EFE74B46DB +:10226C0049461B6805A81A1D0A60196810223B0014 +:10227C0001960095FEF78CFB01340898DDE74B4680 +:10228C0049461B6805A81A1D0A6019680A223B00FA +:10229C0001960095FEF77CFB01340898CDE74B4680 +:1022AC0049461B681A1D0A601D6805E005A8FEF763 +:1022BC0037FB08980028BFDB297801350029F5D1B8 +:1022CC000898B9E74B4649461B6805A81A1D0A60D1 +:1022DC00196800230193083310220093FEF758FB72 +:1022EC0001340898A9E74B4649461B681A1D0A6039 +:1022FC001B68DA1798180393012350409A46092853 +:10230C000DDDAA46A0461D000A210400013500F08F +:10231C0081F9632CF8DC2B00444655469A46B846A6 +:10232C00574575D3002D36D0039B002B74DB7307F8 +:10233C0072D4B30701D5002F2DD05B4633422AD17E +:10234C00002D28D04346A0461C00AC4220D205A844 +:10235C002021FEF7E5FA0898013D002800DA87E015 +:10236C00002DF2D1230044469846039B002B58DBEA +:10237C00730761D403233340022B62D005A83B00C2 +:10238C000A22039901960095FEF702FB089853E781 +:10239C0023004446984608980028E6DA01344CE7B6 +:1023AC004B4649461B6805A81A1D0A601978FEF7AA +:1023BC00B7FA0134089840E76378621C1900303989 +:1023CC0014000027092900D91FE71A00BB00DB19EC +:1023DC0001345B009B182278303B1F001300303B0C +:1023EC00092BF3D9130010E7254B1B78002B15D0C4 +:1023FC00EFF31085012181F31088220002980AA9BD +:10240C00FEF714FA85F310880898079C001916E754 +:10241C00D046002DBFD087E7013D8AE7FEF73CF997 +:10242C00E6E75B422D2105A80393FEF779FA08989D +:10243C0000289FDA013400E72B2105A8FEF770FA7B +:10244C00F5E7002F9AD10AE0A8450CD205A8302157 +:10245C00FEF766FA0898013D002800DAECE6002D3C +:10246C00F2D100258AE70898002887DA0134E4E6DF +:10247C0044460134E1E60025C5E6C046444F000859 +:10248C005C2100200023C25C0133002AFBD1581EC2 +:10249C007047000003B47146490840004900095ECA +:1024AC0049008E4403BC7047002243088B4274D30E +:1024BC0003098B425FD3030A8B4244D3030B8B4239 +:1024CC0028D3030C8B420DD3FF22090212BA030C42 +:1024DC008B4202D31212090265D0030B8B4219D323 +:1024EC0000E0090AC30B8B4201D3CB03C01A524143 +:1024FC00830B8B4201D38B03C01A5241430B8B428B +:10250C0001D34B03C01A5241030B8B4201D30B0373 +:10251C00C01A5241C30A8B4201D3CB02C01A52419A +:10252C00830A8B4201D38B02C01A5241430A8B425D +:10253C0001D34B02C01A5241030A8B4201D30B0246 +:10254C00C01A5241CDD2C3098B4201D3CB01C01A60 +:10255C00524183098B4201D38B01C01A524143096A +:10256C008B4201D34B01C01A524103098B4201D358 +:10257C000B01C01A5241C3088B4201D3CB00C01AC5 +:10258C00524183088B4201D38B00C01A524143083D +:10259C008B4201D34B00C01A5241411A00D2014662 +:1025AC00524110467047FFE701B5002000F006F8D5 +:1025BC0002BDC0460029F7D076E770477047C04689 +:1025CC0010B5002903D100F007F8203002E0080014 +:1025DC0000F002F810BDC0461C2101231B049842D8 +:1025EC0001D3000C10391B0A984201D3000A083998 +:1025FC001B09984201D30009043902A2105C40184F +:10260C007047C046040302020101010100000000F2 +:10261C000000000003460B437FD4002243088B428A +:10262C0074D303098B425FD3030A8B4244D3030B4D +:10263C008B4228D3030C8B420DD3FF22090212BA12 +:10264C00030C8B4202D31212090265D0030B8B428E +:10265C0019D300E0090AC30B8B4201D3CB03C01A78 +:10266C005241830B8B4201D38B03C01A5241430B53 +:10267C008B4201D34B03C01A5241030B8B4201D343 +:10268C000B03C01A5241C30A8B4201D3CB02C01AAE +:10269C005241830A8B4201D38B02C01A5241430A26 +:1026AC008B4201D34B02C01A5241030A8B4201D315 +:1026BC000B02C01A5241CDD2C3098B4201D3CB01BC +:1026CC00C01A524183098B4201D38B01C01A52416B +:1026DC0043098B4201D34B01C01A524103098B426F +:1026EC0001D30B01C01A5241C3088B4201D3CB005A +:1026FC00C01A524183088B4201D38B00C01A52413D +:10270C0043088B4201D34B00C01A5241411A00D2EC +:10271C0001465241104670475DE0CA0F00D0494255 +:10272C00031000D34042534000229C4603098B42C5 +:10273C002DD3030A8B4212D3FC22890112BA030A4D +:10274C008B420CD3890192118B4208D389019211CF +:10275C008B4204D389013AD0921100E08909C30954 +:10276C008B4201D3CB01C01A524183098B4201D356 +:10277C008B01C01A524143098B4201D34B01C01A41 +:10278C00524103098B4201D30B01C01A5241C308B9 +:10279C008B4201D3CB00C01A524183088B4201D328 +:1027AC008B00C01A5241D9D243088B4201D34B0043 +:1027BC00C01A5241411A00D20146634652415B1085 +:1027CC00104601D34042002B00D549427047634666 +:1027DC005B1000D3404201B50020FFF7EFFE02BDB5 +:1027EC000029F8D016E77047002B11D1002A0FD121 +:1027FC00002900D1002802D00021C943080007B4E9 +:10280C00024802A14018029003BDC046B1FDFFFF73 +:10281C0003B4684601B5029800F006F8019B9E4689 +:10282C0002B00CBC7047C046F0B557464E46454604 +:10283C00DE46E0B504000D009246994683B08B420B +:10284C0030D82DD049465046FFF7BAFE2900060075 +:10285C002000FFF7B5FE331A9846203B9B4633D435 +:10286C005A465346934042461F00534693401E001F +:10287C00AF423AD8AF4200D178E05B46A41BBD41D1 +:10288C00002B00DA75E00022002300920193012353 +:10289C005A4693400193012342469340009328E00B +:1028AC008242CFD900220023009201930C9B002B73 +:1028BC0001D01C605D600098019903B0F0BCBB4670 +:1028CC00B246A946A046F0BD424620239B1A52466A +:1028DC00DA40414613004A468A40170042461F43DD +:1028EC00534693401E00AF42C4D9002200230092ED +:1028FC0001934346002BD9D0FB0772081A43464676 +:10290C007B080EE0AB4201D1A2420CD8A41A9D4127 +:10291C00012024196D410021013E24184D41002E47 +:10292C0006D0AB42EED9013E24196D41002EF8D1F0 +:10293C00009801995B4600196941002B24DB2B00A0 +:10294C005A464446D3402A00E2401C005B46150020 +:10295C00002B2ADB26009E40330026004746BE4053 +:10296C003200801A9941009001919FE7A342BCD894 +:10297C0083E74246202300219B1A002200910192FA +:10298C000122DA40019286E7424620239B1A2A0054 +:10299C0046469A402300F340444613432A00E24043 +:1029AC001C005B461500002BD4DA42462F00202376 +:1029BC00260097409B1ADE403B003343CDE7C046D0 +:1029CC000D488546FFF79AFB0C480D490D4A00232C +:1029DC0002E0D458C4500433C4188C42F9D30A4AC8 +:1029EC000A4C002301E013600432A242FBD301F035 +:1029FC00C5FB00F00FF8FEE700900020000000205F +:102A0C006C000020EC5A0008700000203C220020D2 +:102A1C00FEE70000F0B5DE4657464E464546E0B5AB +:102A2C00B9B000F063FF934800F06EFF0722924BA1 +:102A3C0000215A63A0240D3215A801F0EEFB0223ED +:102A4C00E405189320000E3314A91493FDF790FBA2 +:102A5C00149A236913409A4206D1884B1B6883F35E +:102A6C000888874B1B6898470323A0269A46159322 +:102A7C000023F60598463000189314A94333149399 +:102A8C00FDF776FB2023300014A914938025FDF765 +:102A9C006FFB434601277B4C1793AD00023320009C +:102AAC0015971693149514A9A5629946FDF760FB2A +:102ABC0040237548149314A98361FDF759FB272310 +:102ACC0020001797149314A9A361FDF751FB4B46F3 +:102ADC00159319934346C02417935346A400169399 +:102AEC0014943000B46214A9FDF742FB0C2330009F +:102AFC0014A919971493FDF73BFB80215E4B090633 +:102B0C005A6D0120920092080A435A655F4ADA63B3 +:102B1C005F4A1A649A6B17439F635E4B1A6814439F +:102B2C001C605D4CFDF7AAFB23685C4A5C4F1340AC +:102B3C001D4325603B685B495800C0184000FFF7F7 +:102B4C00B3FC80226369D2000130134202D105E04C +:102B5C00002803D0636901381342F9D180214E4A11 +:102B6C00490013680B43136013680B42FCD002211D +:102B7C00414A4D4BD365D36D1942FCD03823916833 +:102B8C000B40D168102B01D100F035FC002B01D08B +:102B9C0000F035FC13684549536819408023DB016C +:102BAC000B435360136842490B4013601368414A4E +:102BBC009B045B0FDA403A607868FDF75FFB3E4B95 +:102BCC009B46002835D138212B4A93680B40102B9B +:102BDC0001D100F0C1FD136838495C460B4013600D +:102BEC0080215B468904D86C03E0E36C1B1A022B32 +:102BFC001ED813680B42F8D1D36831491940314BB8 +:102C0C000B43D360802311685B040B431360802358 +:102C1C00D1685B050B43D3608022E06C16499204AB +:102C2C0003E0E36C1B1A022B02D80B681342F8D09A +:102C3C00A3460623174A1168194201D100F0D2FCB1 +:102C4C00E0230D4ADB0191680B43936093681E49A6 +:102C5C000B40936013689B016CD5072193685D460C +:102C6C008B43190002230B4393605B463821DC6CC9 +:102C7C00164833E0EC580008001002400000FF1F1B +:102C8C000400FF1F00040050000800500300023035 +:102C9C00010812000020024000700040FFF9FFFF05 +:102CAC000000002040420F0009800000FF80FFFF61 +:102CBC00FFC7FFFF0024F4000C010020FFFFFFFE04 +:102CCC008C80C11132301646FFF0FFFF88130000D4 +:102CDC00EB6C1B1B834201D900F081FC93680B4009 +:102CEC00102BF5D10721F04AAB4613680B40022B91 +:102CFC0001D900F0D9FCED4BED499A680A409A6075 +:102D0C0038229968114201D000F0B7FC1B68E948E1 +:102D1C009B045B0FD840E54BE74A9B681B051B0FD8 +:102D2C009B00D3181F22DB6D1340D84038607868A5 +:102D3C00FDF7A4FAE14AE2491368E2480B4013603C +:102D4C00E14B3A6819680905090D00F0DDFD842096 +:102D5C001022DE4B1958914319500438195811435D +:102D6C00195019681143196059680A435A60D84BB5 +:102D7C001A68D20307D41A68D6490A401A60DA6B6B +:102D8C00D5490A40DA638023D14A5B0211680124D9 +:102D9C000B4313603F22D14909200B6893431A005F +:102DAC00052313430B60CE4BCE491A681140CE4A13 +:102DBC000A43CE491A6099600321CD4A7A32DA600F +:102DCC005A68120C12040A435A60CA4A546002220E +:102DDC0019680A431A60082219680A431A601A68AB +:102DEC00210022431A60FDF787F9C34B9A682242EF +:102DFC0007D1DA68C1490A40DA601A699200920870 +:102E0C001A618021BC4B8903DA680A43DA6080229C +:102E1C00920119681142FCD007211A605A698A4341 +:102E2C00110002220A4370215A615A698A43110027 +:102E3C0050220A430F215A619A6A8A439A625A694C +:102E4C009F490A405A619A6AF231FF318A43110054 +:102E5C0010220A4380219A625A6989000A435A61F6 +:102E6C009A6AA7491140C022D2000A4380219A6273 +:102E7C005A69C9010A435A619A68A24911408022D1 +:102E8C0052050A439A60A0493868FFF70DFB1423DA +:102E9C0043430793079B002B05D0079B013B0793EC +:102EAC00079B002BF9D1944B98499A6811408022CA +:102EBC0012060A439A609A68002AFCDB80221201EF +:102ECC001A6020230793079B002B05D0079B013B1F +:102EDC000793079B002BF9D18023874C9B05226914 +:102EEC0003211343236111230C206360FDF704F9C4 +:102EFC000121E368E368A3680B4200D147E38448EF +:102F0C0000F002FD01267C4B82491A6914A8B243D9 +:102F1C001A611A69D0240A401A619A687B496400C4 +:102F2C000A4032439A60724B6422793318A91E709E +:102F3C0000F032FFD620400001F044F9C822010015 +:102F4C0052001031050000F027FFDE20724B4000CC +:102F5C002B51319501F036F9C82201005200103185 +:102F6C00050000F019FF002200233821349235931C +:102F7C00882306AA52183295D654684B6848190013 +:102F8C001C319A4600F0C0FC38686649FFF78CFA91 +:102F9C008023654ADB05013898625A6310220221AE +:102FAC009A611A6A524832431A62DA685F4D0A43D0 +:102FBC00DA605F4A0263020014A85063FA224C489C +:102FCC00120182630322586902435A610F201E606A +:102FDC00FDF792F8329B574A38681A51D2225200A8 +:102FEC0090465246414638325A50DA2252009146A7 +:102FFC004946002450325A524E3A9C5402329C5448 +:10300C003B4A41499364FFF74FFA51460138A86295 +:10301C00AA6A7831484800F077FC484B2100AB6134 +:10302C0011230D202B626E60FDF766F821000E2037 +:10303C00FDF762F884232B60882384201B02EE604A +:10304C0040006B6401F0BEF8C82205000190011D20 +:10305C00CC3000F091FC0223FF22FF33EA544246AD +:10306C00329E319B9E5004329D505B4614AA9A634B +:10307C00DE631D644B46F35CA34279D01422924666 +:10308C002F4B99462F4B9A444346F35825019C46A7 +:10309C0065444846296800F037FC28896B6800288D +:1030AC005FD0002255E0C0460020024000100240D4 +:1030BC00FF8FFFFF0024F40048510008007000400F +:1030CC00FFFEFFFF005900080058014000180240A5 +:1030DC0000740040FFFF03FFFFFFF8FF00080240F1 +:1030EC00080002400F80FFFFA02500004024014093 +:1030FC008C0000200000024000240140C73FFFFF6D +:10310C00FFF0FFFFE8FFFF6F40420F00E8FFFF7F7B +:10311C0020590008FFFFFFDFE10A0008C851000832 +:10312C007C57000800093D00801A0600002C014065 +:10313C0005040008C10A00083C5900086868000032 +:10314C004859000848520008013292B202339042AA +:10315C0007D019785D780D42F6D05146BE4800F084 +:10316C00D3FBDA235B000134F35CE4B2A3428BD8CB +:10317C00B623D222FF33F35C5200B2581B01D31892 +:10318C00B822D4213400FF32B25C4900A934735008 +:10319C00FF349989A27100222181A280DB7A9342AB +:1031AC0000D135E20023AD4AE371A372A133FF33A2 +:1031BC00F25000F0B3FE80250100A94C3000FEF760 +:1031CC0021FA0A213000FDF79FF86369AD002B420C +:1031DC0003D1A44800F098FBA56114AAA24908A841 +:1031EC0000F0B8FBA14B3C3316C816C303210720D3 +:1031FC00FCF782FFD023319D9D4A5B00EA5000F022 +:10320C008DFE01002800FDF71DFFD4235B00EC5858 +:10321C000223FF33E35C7F2B00D8C9E1954B049369 +:10322C00954B0593256000F0D3FC81235B00E052A5 +:10323C000130FF3000F0C6FFFC238022E050002359 +:10324C005200A3540632A3528C4A8D4B516D0B4342 +:10325C0053658B238B49CB600A688B4B13437922C4 +:10326C0094460B60814B634498461B78012B00D924 +:10327C00A7E102211C20FCF73FFF434641461B7887 +:10328C005A1C0A7002225BB2FF329046A354002BE8 +:10329C0000DA9DE10BAB180022007C499A4600F045 +:1032AC0059FB22007A490EA800F054FB11AB180010 +:1032BC0022007849994600F04DFB4346E356012B1A +:1032CC0000D104E20223FF33E256734B1E0002933B +:1032DC00724B6C36310018009A46039300F014FBC5 +:1032EC000222FF329046A256012A00D11AE2310086 +:1032FC00504600F009FB4246A256012A00D111E2C9 +:10330C003100504600F000FBD42365495B0054317A +:10331C006448EC5800F0F8FA08230022FF33E2541A +:10332C000C212A000620FDF735F82A00042107207D +:10333C00FDF730F82A0004210820FDF72BF85A4934 +:10334C005A480C3100F0E0FA594B88249A46594BF4 +:10335C00594D9846382206AB9B181B5D002B00D1AB +:10336C00B2E0329B29001A001800009300F090FD87 +:10337C000028EFD1319B51461A001800009300F041 +:10338C0087FD0028E6D114AA4146100000F080FD0C +:10339C00061EDFD10121484600F0D0FA002800D0EB +:1033AC0056E172B6BFF34F8FBFF36F8F2F4B78334D +:1033BC001B78FF2B00D1BBE12C4A32987832137862 +:1033CC000133137000F0FEFC002800D026E1274BDF +:1033DC0078331B78002B00D148E1244A78321378DB +:1033EC00013BDBB21370002BB4D1BFF34F8FBFF393 +:1033FC006F8F62B6AEE70D3B1940022922D01F4AEF +:10340C002E4913680B401360802311685B000B433B +:10341C00802113602A4BC9001C00D86C05E0E36CBA +:10342C001B1A022B01D9FFF703FC13680B42F6D0D1 +:10343C0053682449A34619408023DB010B43536096 +:10344C00FFF7C1FB13681F49536819408023DB0148 +:10345C000B435360FFF7B0FB5859000811160008D6 +:10346C000004005068570008ED0300088C00002091 +:10347C005110000870590008485400080010024010 +:10348C0008000C000044004001000020FD1A000858 +:10349C00E5020008FD020008C84F0008805400082F +:1034AC00C85000087C57000848500008B85900085C +:1034BC00250B0008D5130008790B0008FFC7FFFF88 +:1034CC000C010020FF80FFFFD025319C6D00665958 +:1034DC0000F032FD01002000B047DC4BDC486351AA +:1034EC0000F012FAD4235B00E4580223FF33E256B7 +:1034FC00012A04D0029903986C3100F005FAFC23E0 +:10350C00E05800F069FE0223FF228026FF33D14DE4 +:10351C00E2546B69B600329C334203D0CE4800F0C3 +:10352C00F3F9AE62D0256D00665900F005FD01007F +:10353C002000B047C94B019A63510223FF33D35C7F +:10354C007F2B05D82621049A0598FF3100F0ECF961 +:10355C00019800F041FE329800F03EFE319800F0E8 +:10356C003BFE72B6BE4800F0CFF900F0F1F9112124 +:10357C00BC4A136A8B4313628022B64B92009A6248 +:10358C00DA3AFF3A9A61B84B19329A62FEE7E3686D +:10359C00B64AE3681A40B64B1343E360E3689B02F8 +:1035AC0000D4AFE4F023A26A1B021343A362A9E484 +:1035BC00B04BB14AFC2118000492059300F0B4F909 +:1035CC0030E6AE4800F0A0F90223FF22FF33E254AC +:1035DC0011AB9946AA4B0293AA4B039394E6AB46C4 +:1035EC00FFF7A8FB0721022310685D4688430343BD +:1035FC0013605B46A448DC6C03E0EB6C1B1B834242 +:10360C00EDD813680B40022BF7D1AB46FFF718FB34 +:10361C0048219E4A9E4800F087F9C3E5319800F096 +:10362C00D1FB002800D1D2E614A800F0CBFB002877 +:10363C0000D1CCE68022974E92007369134200D0E1 +:10364C00E3E00421944A13698B43136130BFBEE657 +:10365C004B4618785B460090443319782422002995 +:10366C006CD12F287BD1233A1A709AE6A6218B4A6B +:10367C008B48890000F058F9AFE699681140082989 +:10368C0000D1D8E099681140102900D184E09968E4 +:10369C001140202900D1D1E09B681A40182A00D192 +:1036AC00D0E00020FFF737FB022310688843034368 +:1036BC001360EC6C744803E0EB6C1B1B83428ED8DC +:1036CC0013680B40022BF7D1AB46FFF714FB5246A5 +:1036DC00744B4C3343CA43C3724B583343CA43C332 +:1036EC00042371490A6813430B604346E356012BCC +:1036FC0000D0E7E56B4B6B4A9C666C4B5366130032 +:10370C004A466C3343CA43C3082367490A681343C8 +:10371C000B604346E2565A4B02935A4B0393012AD1 +:10372C0000D0D2E52023604A11680B431360EBE50F +:10373C005F4A60495A4800F0F7F83DE6009B0A2BB7 +:10374C0042D05D4800F0E0F80098FEF777F85B4651 +:10375C00002244331A7024E6D368FFF76AFA5846FD +:10376C005E4645300378F618B15400990A2909D001 +:10377C000133DBB20370B154142B00D011E64E4868 +:10378C0000F0C2F859464D48243100F0BDF85B46B4 +:10379C00002245331A7004E6DA68D968D243D86837 +:1037AC004906490F40040131440E920700D195E0BF +:1037BC004348FEF779FE6043424BD968490F01310B +:1037CC00FEF772FEFFF7A7FA3F4B3F4819784B1CE8 +:1037DC00DBB203702F2059448854142B08D136487F +:1037EC0000F092F83949354800F08EF8364B1E70CF +:1037FC005E4659460022453633782431CA542F4848 +:10380C0000F082F800223270A1E706203B683049B4 +:10381C005843FEF749FE33682E4A0130134033609B +:10382C0003E0002800D1D2E50138802273699200B0 +:10383C001342F6D105E72848FFF76DFA8020000205 +:10384C00FFF769FAFA20C001FFF765FAE10A0008F0 +:10385C00DC5900080004005054570008C10A000845 +:10386C00EC590008002C0140000800503CC2FEFF3F +:10387C0003100000485400087059000884590008CF +:10388C00C84F000880540008881300003856000800 +:10389C00505600080070004000ED00E09C540008F9 +:1038AC00485300088C00002000440040D10B000855 +:1038BC005854000891020000F0590008CC59000837 +:1038CC000024F400001002405101002030010020BF +:1038DC0040420F00FFBFFFFF00127A000248FEF7C4 +:1038EC00E3FD604368E7C04600127A0010B5FEF7AE +:1038FC002DFC10BD00B583B0019101AA0100002080 +:10390C00FEF728FC03B000BD0FB400B583B004ABC8 +:10391C0002CB01AA002000930193FEF71BFC03B01D +:10392C0008BC04B01847C046130010B50A000100CB +:10393C000148FFF7E9FFFEE71C5A00080A0010B522 +:10394C0001000020FEF7DCFBC343DB17184010BD61 +:10395C007047C04600238360426001607047C046D8 +:10396C0010B503680400002B04D040689847A36886 +:10397C000133A36010BDC04601604B1E994100236A +:10398C004942114041608360C360704703009B68EB +:10399C00C068C01A43425841C0B270470200C368A5 +:1039AC00581E9368C01A536800D5C0187047C0469B +:1039BC0003008268C1685B68501A00D5C018704754 +:1039CC00F0B54646D6464F460500C0B5EB68806854 +:1039DC00013B0E0014001B1A1ED493421AD317007D +:1039EC00002F05D12000E0BCBA46B146A846F0BD78 +:1039FC00AB6828689C463A006044310000F004FC37 +:103A0C00AB689C466B686744AF609F42EAD1002369 +:103A1C00AB60E7E70020E6E76A6890464344A342C0 +:103A2C00F8D30319994627009A42D9D8131A9A4603 +:103A3C002B6852469C46604400F0E6FB002342464D +:103A4C00AB604B4656449F1ACAE7C046F8B547468A +:103A5C00CE4680B5C6688368050088469C1B0BD48F +:103A6C00944207D82700002C20D13800C0BCB9469E +:103A7C00B046F8BD1400F5E7436899464C449442AF +:103A8C0000D91400331927009945ECD84B469F1BDD +:103A9C002B683A009919404600F0B6FB4B46F61AD3 +:103AAC00A419B84400263F19002CDED02968220046 +:103ABC004046891900F0A8FBD7E7C046F0B54F4641 +:103ACC004646D646C0B50F008368C1680600140090 +:103ADC005B1A1ED493421AD31500002D05D1200079 +:103AEC00E0BCBA46B146A846F0BDF36831689C46C6 +:103AFC002A006144380000F087FBF3689C46736829 +:103B0C006544F5609D42EAD10023F360E7E70020AD +:103B1C00E6E7426890464344A342F8D30B19994612 +:103B2C0025009A42D9D8531A9A46036852469C46A5 +:103B3C003800614400F068FB00234246F3604B46BA +:103B4C0057449D1AC9E7C04670B501000400861D94 +:103B5C001D4D1E4823781B025840082304E0013BEE +:103B6C00DBB280B2002B09D002B24000002AF6DA98 +:103B7C00013B6840DBB280B2002BF5D10134A64288 +:103B8C00E8D14B888A781D0A120215431BD00831E4 +:103B9C004D190D4CADB20B781B025840082304E0B4 +:103BAC00013BDBB280B2002B09D002B24000002AEC +:103BBC00F6DA013B6040DBB280B2002BF5D101316B +:103BCC008BB2AB42E7D170BD21100000FFFF0000AB +:103BDC0008207047052804D883001B180248C01819 +:103BEC0070470248FCE7C046405A00083C5A00089F +:103BFC0070B5040004A800784900000108430121B5 +:103C0C000143072018400023D20002436380237134 +:103C1C00200000230725C9B221706270661D08229E +:103C2C0001304B4004E0013AD2B2DBB2002A09D099 +:103C3C0059B25B000029F6DA013A6B40D2B2DBB222 +:103C4C00002AF5D1B04201D00178E8E76371200079 +:103C5C00FFF77AFF030AE071A371200070BDC04624 +:103C6C0070B5040004A840C84900058820001B0159 +:103C7C000B43D20031002370627008302A0000F030 +:103C8C00C3FA2B0AA3700023E570200007252371CB +:103C9C00661D02785340082204E0013AD2B2DBB22E +:103CAC00002A09D059B25B000029F6DA013A6B40C0 +:103CBC00D2B2DBB2002AF5D10130B042E9D1637146 +:103CCC002000FFF741FF030AE071A371200070BDD3 +:103CDC0070B5002307244679451D0278534008220D +:103CEC0004E0013AD2B2DBB2002A09D059B25B002F +:103CFC000029F6DA013A6340D2B2DBB2002AF5D1E0 +:103D0C000130A842E9D1F01A42425041C0B270BD14 +:103D1C0000788006800F704700780007400F7047CE +:103D2C0040788006400F7047827843881202180A48 +:103D3C00104370470830704710B50400FFF704FFBC +:103D4C00E388A1791B0A09020B43181A424250411D +:103D5C00C0B210BDB0B500AF050000F0DDF86A468A +:103D6C00C31DDB08DB00D31A9D4602000400694624 +:103D7C002800FFF76BFE80B2844203D00024BD46BE +:103D8C002000B0BD684600F0F1F804002800FFF7F1 +:103D9C000FFE8442F2D8F2E770B505000C00160055 +:103DAC00002905D0320028002100FFF7E5FD70BD89 +:103DBC003D21024A0248FFF7B7FDF3E7605A0008BD +:103DCC00705A000810B5FFF7E1FD10BDF8B5DE46DE +:103DDC0057464E464546E0B500AF1E0080468A4623 +:103DEC00914600F099F86B46C41DE408E4001B1BD7 +:103DFC009D460500801983B23200514668469B46A9 +:103E0C0000F0A8F8FEF72CF84046FFF7C7FD002499 +:103E1C0083450DD9FEF702F85B46E01ABD464342D6 +:103E2C005841C0B2F0BCBB46B246A946A046F8BD4C +:103E3C002A0069464046FFF7C3FD4B4684B2002B6F +:103E4C00E8D0320049464046FFF7BAFD2418A4B228 +:103E5C00E0E7C046F8B5060008000F0000F086F851 +:103E6C000500FDF7FDFF3000FFF798FD00248542AB +:103E7C0006D9FDF7D3FF601B43425841C0B2F8BDD1 +:103E8C002A0039003000FFF79BFD84B2F1E7C046F1 +:103E9C00F8B54E464546DE465746E0B500AF06003F +:103EAC0089469046FFF756FF0025041E07D1BD46F4 +:103EBC002800F0BCBB46B246A946A046F8BD6A46EF +:103ECC00C31DDB08DB00D31AEA469D46FDF7C8FF8D +:103EDC00220069463000FFF7F1FD0600B6B2EB4652 +:103EEC00FDF79CFF002E01D1D546E0E7684600F0B7 +:103EFC003DF8844205D159464046C8470125D54670 +:103F0C00D5E72521024A0348FFF70EFDF3E7C0462B +:103F1C00885A0008705A00080C20704710B5FEF73C +:103F2C009FF802000B0003480260436080235B0291 +:103F3C00836010BD1822002010B5FEF791F8020026 +:103F4C000B0003480260436080239B02836010BD1A +:103F5C000822002070B504000E001500FEF780F852 +:103F6C006681206061602581200070BD00890C3065 +:103F7C0080B27047807A7047008970470C30704768 +:103F8C000130704710B5042A26D012D8012A15D05A +:103F9C00022A1BD1052303700023441CC85CE05487 +:103FAC000133D8B29042F9D30220002A0AD180B250 +:103FBC0010BD082A0AD107230370EDE70423037010 +:103FCC000B784370013AD0B20230F0E7042303704F +:103FDC00002343700220EBE706230370DCE7C046A6 +:103FEC0010B5FEF74FFAFF2382B293429B41584221 +:103FFC000230801880B210BDF8B5040008000E0025 +:10400C00FEF740FA87B20200FF2F0DD80C23607028 +:10401C000225022023701204ED193100120C201815 +:10402C0000F0F2F8A8B2F8BD0D2323703B0A6070C3 +:10403C0003250320A370EEE7F0B5C6460E0000B5CD +:10404C00002917D0FF23050000240227984601CD34 +:10405C00FEF718FA80B280459B415B420233C018D0 +:10406C0001343F18E4B2BFB2A642F0D1380080BC94 +:10407C00B846F0BD0227F9E7F8B5DE4657464E467E +:10408C0045461623E0B583460370002A38D0013A22 +:10409C00D2B2920091460B1D0E000127994411E0FB +:1040AC0002220C2392462B7068700A3B0204544483 +:1040BC004146120CE8183F19043600F0A5F8BFB2BF +:1040CC00B14512D05B46DD19336818009846FEF7EF +:1040DC00D9F984B2FF2CE3D90D2303222B70230AC8 +:1040EC00AB70924603236870E0E7781C80B25A46A6 +:1040FC001823D355F0BCBB46B246A946A046F8BD22 +:10410C0002200127F3E7C046042806D00C2802D170 +:10411C00023188B270470020FCE7013188B2F9E720 +:10412C00F8B504001600072918D90C39012917D83D +:10413C001000FEF7A7F985B2FF2D18D90D232370B7 +:10414C002B0AA37003270323607002043100120CA6 +:10415C00E018ED1900F058F8A8B202E0032901D8D4 +:10416C000020F8BD3100DAB2FFF70CFFF9E70C23A1 +:10417C000227237060700A3BE7E7C04670B5002643 +:10418C000C4D0D4C641BA410A64209D1002600F066 +:10419C000FFD0A4D0A4C641BA410A64205D170BD3C +:1041AC00B300EB5898470136EEE7B300EB5898474D +:1041BC000136F2E7E45A0008E45A0008E45A000811 +:1041CC00E85A000810B5034B0100186800F09AF883 +:1041DC0010BDC0460800002010B5034B0100186844 +:1041EC0000F024F810BDC0460800002030B50024B3 +:1041FC000139A24201D1002005E0035D01340D5DBF +:10420C00AB42F6D0581B30BD002310B59A4200D1FA +:10421C0010BDCC5CC4540133F8E703008218934200 +:10422C0000D1704719700133F9E7000070B5050033 +:10423C00002910D00C1F2368002B00DAE41828008A +:10424C0000F05CF91D4A1368002B05D16360146003 +:10425C00280000F05BF970BDA34208D921686018F2 +:10426C008342F3D118685B6841182160EEE71A00AD +:10427C005B68002B01D0A342F9D911685018A042F9 +:10428C000BD120680918501811608342E0D11868CE +:10429C005B68411811605360DAE7A04202D90C2325 +:1042AC002B60D5E721686018834203D118685B68DE +:1042BC004118216063605460CAE7C0462822002080 +:1042CC0070B50F4E0D0031680400002902D100F0CA +:1042DC008FF830602900200000F08AF8431C0AD0C7 +:1042EC000323C51C9D43A84207D0291A200000F0C7 +:1042FC007FF8431C01D101256D42280070BDC046DA +:10430C002C220020F7B50322CB1C93430833060064 +:10431C001F000C2B32D20C27B94231D8300000F0E0 +:10432C00EDF8324D2B681C00002C2ED139003000DA +:10433C00FFF7C6FF0400431C1ED12C682500002D7E +:10434C004AD123682900E3183000019300F050F89B +:10435C00019B834243D123680337FF1A03239F43F6 +:10436C0008370C2F00D20C2739003000FFF7A8FFBC +:10437C00431C34D02368DF19276013E0002BCBDA01 +:10438C000C23002533602800FEBD2268D11B20D4ED +:10439C000B2917D9E2192760A34211D12A6063684F +:1043AC00116053603000250000F0B0F807220B3587 +:1043BC00231D9543EA1A9D42E5D05B1BA350E2E70F +:1043CC005A60ECE76268A34201D12A60EAE75A60BE +:1043DC00E8E723006468A7E72C006D68AFE70C23BF +:1043EC003000336000F092F8CDE7C0462822002060 +:1043FC00002370B5064D040008002B6000F0CAFBCA +:10440C00431C03D12B68002B00D0236070BDC04629 +:10441C00302200200CB430B5174B0C001D689DB039 +:10442C00002908DA8B2301202B6040421DB030BCE0 +:10443C0008BC02B0184782236A469B009382002373 +:10444C0002900690994200D04B1E049307930123CF +:10445C006A465B42D382280021AB209A02A90193C1 +:10446C0000F0BEF8431C01DA8B232B60002CDDD04E +:10447C000023029A1370D9E70800002003000A7881 +:10448C0001311A700133002AF9D1704730B514008C +:10449C0005001A009BB0002C05DA8B230360012069 +:1044AC0040421BB030BD822368469B0083810023B1 +:1044BC00009104919C4200D0631E0293059301234A +:1044CC0069465B42CB8128001E9B00F089F8431C97 +:1044DC0001DA8B232B60002CE3D00023009A13709D +:1044EC00DFE7000007B5009313000A000100024843 +:1044FC000068FFF7CBFF0EBD0800002010B5024886 +:10450C0000F0F0FA10BDC0463422002010B502486D +:10451C0000F0E9FA10BDC04634220020F0B58E68D8 +:10452C0085B007000C00039201939E423CD8902367 +:10453C008A89DB001A4234D00969236860695B1AE6 +:10454C00029303234343DD0FED18019B02980133C3 +:10455C001B186D10AB4200D91D00530532D5290034 +:10456C003800FFF7CFFE061E09D10C233B60402319 +:10457C000120A28940421343A38105B0F0BD029AE9 +:10458C002169FFF741FEA389144A1A408023134383 +:10459C00A381029B2661F61826606561019EED1AC7 +:1045AC00A560019B9E4200D9019E320003992068B0 +:1045BC0000F0A5FAA36800209B1BA36023689E193A +:1045CC002660DAE72A00380000F0ACFA061EE0D1CB +:1045DC0038002169FFF72AFEC7E7C0467FFBFFFFC3 +:1045EC00F0B5A1B003901D008B890F0016001B06BF +:1045FC0011D50B69002B0ED14021FFF783FE3860DB +:10460C003861002805D10C23039A0138136021B0BE +:10461C00F0BD40237B61002308AC636120336376DB +:10462C001033A376079535002B78002B01D0252B62 +:10463C0047D1AB1B0593B5420CD03200390003981F +:10464C00FFF76CFF431C00D1AEE06269059B9446FA +:10465C00634463612B78002B00D1A5E00122002379 +:10466C005242626004A9543252186E1C2360E360FB +:10467C00A3601370A36505223178544800F034FA16 +:10468C00751C00281FD12268D30604D5532304A916 +:10469C005B1820211970130704D5532304A95B1848 +:1046AC002B21197033782A2B16D0350000210A20C3 +:1046BC00E3682A786E1C303A092A4ED9002911D1A8 +:1046CC0017E00135B0E7414B2268C01A0123834043 +:1046DC0013432E002360CEE7079B191D1B6807911F +:1046EC00002B01DB0B9304E05B42E36002231343DA +:1046FC0023602B782E2B0AD16B782A2B35D1079B74 +:10470C0002351A1D1B680792002B2BDB0993304EC8 +:10471C0003223000297800F0E7F9002806D0402366 +:10472C00801B8340226801351343236029780622BD +:10473C0028486E1C217600F0D7F900283CD0264B77 +:10474C00002B25D10722079B07339343083307938C +:10475C006369049A9B18636165E743433500012143 +:10476C009B18A6E701235B42D0E700230A201A001E +:10477C000135636029786E1C3039092903D9002B67 +:10478C00C5D00992C3E74243350001235218F1E723 +:10479C0007AB00933A002100104B039800E000BFD8 +:1047AC000490049B0133D3D1BB890D985B0600D4D4 +:1047BC002DE7012040422AE707AB00933A00210085 +:1047CC00064B039800F07CF8EAE7C046A85A0008AC +:1047DC00AE5A0008B25A0008000000002945000833 +:1047EC00F7B5150001938A680B690C000090934291 +:1047FC0000DA130022002B6043321278002A01D019 +:10480C0001332B6023689B0602D52B6802332B6087 +:10481C002268062317001F401A4227D02300433377 +:10482C001B785A1E93412268920630D422000199BB +:10483C000098089E4332B047431C25D006232068BD +:10484C002A68E16800250340042B03D18D1AEB4341 +:10485C00DB171D40A3682269934201DD9B1AED18FA +:10486C000027BD4220D1002010E00137E3682A6800 +:10487C009B1ABB42D2DD2200012301990098089EAD +:10488C001932B047431CF0D101204042FEBD30200C +:10489C00E1184331087021005A1C45310978A218DF +:1048AC00433202331170C1E72200012301990098B1 +:1048BC00089E1A32B047431CE6D00137D1E70000FE +:1048CC00F0B58BB006920A00433207930590049220 +:1048DC000A7E0C00109B782A07D8622A09D8002A75 +:1048EC0000D1C1E0582A00D18CE02600423632704B +:1048FC0022E0100063381528F7D8FDF7CBFD160021 +:10490C001F00F6FFF6FFF6FFF6FF1F00F6FFF6FF9F +:10491C00F6FFF6FFA80036009A00F6FFF6FFB90086 +:10492C00F6FF3600F6FFF6FF9E0026001A684236A8 +:10493C00111D1960136833700123A7E0086819680A +:10494C000A1D05060BD50D681A60002D03DA2D2300 +:10495C00049A6D421370614B0A2703931BE00D6898 +:10496C001A604106F1D52DB2EFE70D681968081DE4 +:10497C0018602E0601D50D6803E06D06FBD50D6899 +:10498C00ADB2564B082703936F2A00D00237230091 +:10499C00002243331A706368A360002B03DB0422EC +:1049AC00216891432160002D02D1049E002B0CD074 +:1049BC00049E28003900FDF7FDFD039B013E5B5C66 +:1049CC0033702B0005009F42F3D9082F09D12368BF +:1049DC00DB0706D563682269934202DC3023013E73 +:1049EC003370049B9B1B2361079B2100009305984C +:1049FC00069B09AAFFF7F4FE431C4CD10120404250 +:104A0C000BB0F0BD45310A70344A03921A68216824 +:104A1C0020CA1A60080616D5CB0702D520231943E5 +:104A2C0021601027002DB2D1202322689A432260E6 +:104A3C00ADE7202209680A43226022007821453222 +:104A4C001170274AE1E74806E6D5ADB2E4E71A68EB +:104A5C000D68101D4969186013682E0601D5196080 +:104A6C0002E06D06FBD519800023049E2361BBE791 +:104A7C001A68111D1960166800213000626800F078 +:104A8C0033F8002801D0801B606063682361002329 +:104A9C00049A1370A8E72369320006990598079DBC +:104AAC00A847431CAAD023689B0715D4099BE06830 +:104ABC009842A5DA1800A3E722000123069905986D +:104ACC00079E1932B047431C98D00135E368099A08 +:104ADC009B1AAB42F0DCE9E70025F7E7B95A00086E +:104AEC00CA5A000870477047C9B28218904201D167 +:104AFC000020704703788B42FBD00130F6E710B5ED +:104B0C00884202D98B18984203D3002307E08B5CB0 +:104B1C008354013AFBD210BDCC5CC45401339A428D +:104B2C00FAD1F8E7F7B507000E001400002905D1FB +:104B3C001100FFF7E7FB05002800FEBD002A03D19A +:104B4C00FFF774FB2500F7E700F01BF80190844297 +:104B5C0003D835004308A342EED321003800FFF7F9 +:104B6C00D1FB051EE8D0019B22009C4200D91A0003 +:104B7C0031002800FFF748FB31003800FFF756FBE7 +:104B8C00DAE70B1F1B68181F002B01DA0B58C01833 +:104B9C0070470000044A03001068002802D0C318B4 +:104BAC00136070470148FAE73822002040220020A9 +:104BBC00F8B5C046F8BC08BC9E467047F8B5C04670 +:084BCC00F8BC08BC9E467047CE +:104BD4004C140008F0130008F0130008F013000848 +:104BE400F013000868140008F0130008FA13000812 +:104BF400F0130008F0130008F0130008F013000885 +:104C040006140008F0130008F0130008F01300085D +:104C1400F0130008F0130008F0130008F013000864 +:104C2400F0130008F0130008F0130008F013000854 +:104C3400F0130008FC130008F0130008FC1300082C +:104C440028160008701600088E160008281600089A +:104C54002816000828160008281600082816000838 +:104C64002816000828160008281600082816000828 +:104C74002816000828160008281600082816000818 +:104C84002816000828160008281600082816000808 +:104C940028160008281600082816000828160008F8 +:104CA40028160008281600082816000832160008DE +:104CB40028160008281600082816000832160008CE +:104CC40028160008281600082816000828160008C8 +:104CD40028160008281600089C160008A6160008C6 +:104CE400081700081A1700084017000808170008DA +:104CF4000817000808170008081700080817000814 +:104D04000817000808170008081700080817000803 +:104D140008170008081700080817000808170008F3 +:104D240008170008081700080817000808170008E3 +:104D340008170008081700080817000808170008D3 +:104D440008170008081700080817000808170008C3 +:104D5400161700086A170008081700081617000835 +:104D640008170008081700080817000808170008A3 +:104D74000817000812170008121700084E17000839 +:104D8400A4170008C0170008E0170008A4170008BB +:104D9400A4170008A4170008A4170008A417000803 +:104DA400A4170008A4170008A4170008A4170008F3 +:104DB400A4170008A4170008A4170008A4170008E3 +:104DC400A4170008A4170008A4170008A4170008D3 +:104DD400A4170008A4170008A4170008A4170008C3 +:104DE400A4170008A4170008A4170008BC1700089B +:104DF400A417000820180008A4170008AE1700081C +:104E0400A4170008A4170008A4170008A417000892 +:104E1400A4170008A4170008EE170008F2170008EA +:104E2400961800086A1800086A1800086A1800082A +:104E34006A1800086A1800086A1800086A18000846 +:104E44006A1800086A1800085E1800085E1800084E +:104E54005E1800085E1800085E180008B6180008FE +:104E64005E1800085E1800085E1800085E18000846 +:104E74005E1800085E1800085E1800085E18000836 +:104E84005E1800085E1800085E1800085E18000826 +:104E94005E1800085E1800085E1800085E18000816 +:104EA4005E1800085E1800085E1800085E18000806 +:104EB4005E1800085E1800085E1800085E180008F6 +:104EC4005E1800085E1800085E1800085E180008E6 +:104ED4005E1800085E1800085E1800085E180008D6 +:104EE4005E180008BE180008D81800085E180008EC +:104EF400F41800085E1800085E1800085E18000820 +:104F04005E1800085E1800085E1800085E180008A5 +:104F14003A1900085E180008501900085E180008C5 +:104F24005E180008601900085E1800085E18000882 +:104F34005E1800081C190008741900087C19000880 +:104F44006A22000842220008422200084222000885 +:104F5400422200084222000842220008422200089D +:104F6400422200084222000842220008AC23000822 +:104F7400F2220008422200084222000842220008CD +:104F8400422200084222000842220008422200086D +:104F9400422200084222000842220008422200085D +:104FA400D02200084222000842220008AA22000857 +:104FB400422200088A2200084222000842220008F5 +:104FC4006A2200086173736572745F6661696C6557 +:104FD4006400000072784572726F7243616C6C6297 +:104FE40061636B0074784572726F7243616C6C62BA +:104FF40061636B004174747269627574655F737583 +:105004006273637269626500303132333435363726 +:10501400383941424344454673746174654E6F7038 +:105024000000000073746174654E6F70000000002E +:105034004253505F646F4368616E6E656C41637484 +:10504400696F6E00737461746549646C6500000077 +:10505400507573682074686520627574746F6E206F +:10506400746F20706C6179206F7220706175736544 +:10507400203A2D290A00000068616E646C6552654F +:1050840061645265717565737400000068616E64D3 +:105094006C65577269746552657175657374000047 +:1050A40068616E646C65496E766F6B655265717587 +:1050B4006573740068616E646C65526571756573BF +:1050C4007400000064697370617463684576656E8A +:1050D40074000000737461746543616E6F707900CD +:1050E400737461746549646C650000007374617461 +:1050F4006550756C73696E670000000073746174A9 +:1051040065506175736564004253505F74726967DA +:105114006765724144430000446174614C696E6B7D +:105124005F77616974466F7253796E6300000000A3 +:1051340068616E646C65496E636F6D696E67467213 +:10514400616D6500486172644661756C745F4861A5 +:105154006E646C657200000073707572696F7573AC +:105164004952510054494D315F42524B5F55505F93 +:105174005452475F434F4D5F49525148616E646CCE +:1051840065720000444D41315F4368616E6E656C29 +:10519400315F49525148616E646C657200000000D1 +:1051A40000000000000000000000000000000000FB +:1051B40000000000000000000000000000000000EB +:1051C40001000000020000000300000004000000D1 +:1051D40006000000070000000800000009000000AD +:1051E4004253505F7265676973746572417070549D +:1051F400696D657248616E646C657200F4590008EB +:10520400B052000802007D03C8000000005A0008E4 +:10521400A8520008040032052C010000085A0008B6 +:10522400A052000804001405C8000000145A000825 +:105234007C52000812001E09280000004253505FEF +:10524400726567697374657250756C736544656CD7 +:1052540065676174650000005061747465726E491D +:1052640074657261746F725F636865636B506174B7 +:105274007465726E000000000102020504020A0453 +:105284000408080501080A01050A020105020204CE +:10529400040A080405080801010A0A0501080204B1 +:1052A400040208010102040802010804050A0A05AF +:1052B40025732825732C202575290A002573282594 +:1052C40075290A0053657474696E6720696E746584 +:1052D4006E7369747920746F202568687525250AB2 +:1052E4000000000053657474696E67205663617032 +:1052F40020746F20256875206D560A0053657474F8 +:10530400696E672070756C736520776964746820B2 +:10531400746F202568687520C2B5730A0000000008 +:10532400257320666F722069643D2568750A000044 +:1053340070742D3E706163655F6D73203E3D203552 +:10534400000000007372632F6273705F73746D33B7 +:1053540032673037312E630070742D3E70756C7374 +:10536400655F77696474685F6D6963726F73202128 +:105374003D20300070742D3E6E725F6F665F7075F5 +:105384006C73657320213D203000000028656C6338 +:105394006F6E5B305D202620656C636F6E5B315DE4 +:1053A40029203D3D203000005465726D696E616CAA +:1053B4000000000052545400534547474552000032 +:1053C40053657175656E6365725F257320756E65CF +:1053D40078706563746564206576656E743A20251B +:1053E400750A0000436F6E74726F6C6C65725F2592 +:1053F4007320756E65787065637465642065766581 +:105404006E743A2025750A007366203D3D204E5582 +:105414004C4C00007372632F636F6E74726F6C6C0C +:1054240065722E63000000007372632F73657175DB +:10543400656E6365722E63006E6272203D3D20319D +:10544400000000007372632F646174616C696E6B99 +:105454002E6300006273702E637269746963616CF9 +:105464005F73656374696F6E5F6C6576656C20212C +:105474003D2055434841525F4D415800257328252E +:1054840075293A20756E6B6E6F776E206465766948 +:1054940063652069640A00006273702E6372697424 +:1054A4006963616C5F73656374696F6E5F6C657665 +:1054B400656C20213D2030004672616D652070616D +:1054C400796C6F616420746F6F206269673A20257C +:1054D400687520627974657300000000436F6E7410 +:1054E400726F6C6C65725F257320454E5452590A75 +:1054F40000000000436F6E74726F6C6C65725F2500 +:105504007320455849540A005472616E7361637480 +:10551400696F6E202568753A207265616420617434 +:1055240074726962757465202568750A000000004C +:1055340025733A20756E6B6E6F776E20617474728A +:1055440069627574652069643D2568750A00000008 +:105554005472616E73616374696F6E202568753A65 +:1055640020777269746520617474726962757465F8 +:10557400202568750A000000706C61790000000045 +:1055840070617573650000005472616E73616374B9 +:10559400696F6E202568753A20696E766F6B652099 +:1055A4002568750A000000002573206E6F74206959 +:1055B4006D706C656D656E746564207965740A0040 +:1055C40025732C20756E6B6E6F776E206F70636F12 +:1055D40064652030782530326868780A000000005D +:1055E40073746F700000000054696D6520253032BB +:1055F400753A253032753A253032750A00000000BC +:105604005265636569766564207369676E616C20B1 +:1056140025640A00257328256875293F0A000000BF +:10562400537769746368696E6720746F20272573E4 +:10563400270A000070642D3E6E725F6F665F73749C +:1056440065707320213D2030000000007372632FC9 +:105654007061747465726E5F697465722E630000A4 +:10566400497072696D3D2575206D412C205663612A +:10567400703D2575206D562C20566261743D25754C +:10568400206D560A0000000053657175656E6365F0 +:10569400725F257320454E5452590A005365717543 +:1056A400656E6365725F257320455849540A00008E +:1056B4005374617274696E6720272573270A00008A +:1056C4004C6173742070756C736520646F6E650A29 +:1056D4000000000046696E697368656420272573BD +:1056E400270A0000257320454E5452590A00000031 +:1056F400257320455849540A00000000526573750B +:105704006D696E6720272573270A00005061757341 +:10571400696E6720272573270A000000436F6D6DAB +:10572400616E64733A202F3F202F61202F62202F57 +:1057340064202F6C202F6E202F71202F75202F7640 +:10574400202F77202F30202F312E2E2F390A0000C2 +:105754005475726E696E672056636170204F4646B9 +:105764000A0000005475726E696E6720566361709A +:10577400204F4E0A0000000025730A004669726D2E +:10578400776172652076302E33332D626574610A39 +:1057940000000000556E6B6E6F776E20636F6D6D49 +:1057A400616E6420272F2563270A0000476F742049 +:1057B40053594E43206672616D652C207365715F89 +:1057C4006E723D256868750A0000000027252E2AA0 +:1057D40073273F0A00000000476F7420257320667A +:1057E40072616D652C207365715F6E723D2568680A +:1057F400752C207061796C6F61645F73697A653DA3 +:105804002568750A0000000025733A20626164204F +:105814006672616D650A000025732C20494353525A +:105824003D307825780A000020205469703A2068B9 +:10583400616C74204350552C206368616E67652049 +:105844006775617264204020257020746F20302CAD +:10585400207468656E20737465702E0A0000000061 +:1058640050742053523D307825780A004144432037 +:105874006F76657272756E0A000000004144432021 +:1058840072656164790A0000414443206368616E73 +:105894006E656C20636F6E666967207265616479FA +:1058A4000A00000041444320454F430A0000000021 +:1058B40041444320454F530A000000004144433112 +:1058C4002D3E4953523D307825780A0025732C200B +:1058D40054454946310A000025732C204953523D52 +:1058E400307825780A000000496E697469616C6932 +:1058F40073696E672E2E2E0A0000000044657649F7 +:10590400643D307825782C2053797374656D436F2A +:105914007265436C6F636B3D25750A004C4C5F41A7 +:1059240044435F5245475F496E6974206572726FE4 +:10593400723D25750A00000025733A205053433DFB +:1059440025750A00436865636B696E6720272573B4 +:10595400270A000025733A2073686F727420696EF9 +:1059640020656C636F6E202568750A006D652D3E99 +:105974006368616E6E656C5F6664203C2030000075 +:1059840043616E206F6E6C7920757365206F6E6550 +:105994002073657269616C20706F72742061742069 +:1059A400612074696D652C20666F72206E6F770AB2 +:1059B400000000005374617274696E67204E656F55 +:1059C400444B210A25730000436F6E736F6C653A74 +:1059D40020272573270A0000456E64206F66207314 +:1059E400657373696F6E0A00427965210A000000CD +:1059F4004A61636B68616D6D65720000546F67671F +:105A04006C65000043726F7373546F67676C650055 +:105A1400436972636C650000415353455254494FC6 +:105A24004E204641494C454420282573203A2025E0 +:105A340075292025730A0000424144004E4F4E450B +:105A44000041434B00004E414B000053594E43006C +:105A540044415441004F50545300000073746F721A +:105A640061676520213D204E554C4C006D616F6C83 +:105A740069622F7372632F6576656E7471756575CF +:105A8400652E63006576656E745F73697A65203D83 +:105A94003D20414F4576656E745F73697A6528656C +:105AA40076742900232D302B2000686C4C00656629 +:105AB400674546470030313233343536373839415B +:105AC4004243444546003031323334353637383971 +:085AD400616263646566000075 +:085ADC0058CDFF7F010000001E +:045AE400E5000008D1 +:045AE800BD000008F5 +:105AEC000024F400040000000C0000200000000062 +:105AFC00000000000000000000000000000000009A +:105B0C000000000000000000000000000000000089 +:105B1C000000000000000000000000000000000079 +:105B2C000000000000000000000000000000000069 +:105B3C000000000000000000000000000000000059 +:0C5B4C000000000000000000000000004D +:04000005080029CDF9 :00000001FF diff --git a/firmware/inc/app_event.h b/firmware/inc/app_event.h index 6bab9ed..250e945 100644 --- a/firmware/inc/app_event.h +++ b/firmware/inc/app_event.h @@ -21,9 +21,9 @@ enum { ET_THIRD_PARTY = ET_AO_FIRST_APP_EVENT, // To keep other libs working. ET_APP_HEARTBEAT, ET_ADC_DATA_AVAILABLE, ET_DEBUG_SYNC, ET_DATAGRAM_SYNC, ET_INCOMING_PACKET, - ET_CONTROLLER_CONNECTED, ET_CONTROLLER_DISCONNECTED, + ET_CONTROLLER_CONNECTED, ET_CONTROLLER_DISCONNECTED, ET_ATTRIBUTE_CHANGED, ET_PLAY, ET_PAUSE, ET_STOP, ET_UNKNOWN_COMMAND, ET_TOGGLE_PLAY_PAUSE, - ET_SELECT_NEXT_PATTERN, ET_SELECT_PATTERN_BY_NAME, ET_SET_INTENSITY, ET_SET_PULSE_WIDTH, + ET_SELECT_NEXT_PATTERN, ET_SELECT_PATTERN_BY_NAME, ET_SET_INTENSITY, ET_BURST_REQUESTED, ET_BURST_REJECTED, ET_BURST_STARTED, ET_BURST_COMPLETED, ET_BURST_EXPIRED, }; diff --git a/firmware/inc/attributes.h b/firmware/inc/attributes.h new file mode 100644 index 0000000..4805d16 --- /dev/null +++ b/firmware/inc/attributes.h @@ -0,0 +1,29 @@ +/* + * attributes.h + * + * NOTICE (do not remove): + * This file is part of project NeoDK (https://github.com/Onwrikbaar/NeoDK). + * See https://github.com/Onwrikbaar/NeoDK/blob/main/LICENSE.txt for full license details. + * + * Created on: 15 Oct 2024 + * Author: mark + * Copyright 2024 Neostimâ„¢ + */ + +#ifndef INC_ATTRIBUTES_H_ +#define INC_ATTRIBUTES_H_ + +#include "matter.h" + + +typedef enum { + AI_ALL_PATTERN_NAMES = 5, AI_CURRENT_PATTERN_NAME, AI_INTENSITY_PERCENT, AI_PLAY_PAUSE_STOP +} AttributeId; + +typedef void (*AttrNotifier)(void *target, AttributeId, ElementEncoding, uint8_t const *data, uint16_t size); + + +bool Attribute_subscribe(AttributeId, ElementEncoding, AttrNotifier, void *target); +void Attribute_changed(AttributeId, uint8_t const *data, uint16_t size); + +#endif diff --git a/firmware/inc/debug_cli.h b/firmware/inc/debug_cli.h index aef3401..e93402f 100644 --- a/firmware/inc/debug_cli.h +++ b/firmware/inc/debug_cli.h @@ -14,10 +14,11 @@ #define INC_DEBUG_CLI_H_ #include "eventqueue.h" +#include "sequencer.h" #include "datalink.h" -void CLI_init(EventQueue *, DataLink *); +void CLI_init(EventQueue *, Sequencer *, DataLink *); int CLI_logf(char const *fmt, ...); void CLI_handleRemoteInput(uint8_t const *, uint16_t nb); diff --git a/firmware/inc/sequencer.h b/firmware/inc/sequencer.h index 8bcedc0..6d97944 100644 --- a/firmware/inc/sequencer.h +++ b/firmware/inc/sequencer.h @@ -17,6 +17,8 @@ typedef struct _Sequencer Sequencer; // Opaque type. +typedef enum { PS_UNKNOWN, PS_IDLE, PS_PAUSED, PS_PLAYING } PlayState; + // Class method. Sequencer *Sequencer_new(void); diff --git a/firmware/inc/matter.h b/firmware/maolib/inc/matter.h similarity index 89% rename from firmware/inc/matter.h rename to firmware/maolib/inc/matter.h index 6ec31cf..68efd62 100644 --- a/firmware/inc/matter.h +++ b/firmware/maolib/inc/matter.h @@ -39,6 +39,8 @@ uint16_t Matter_encodedStringLength(char const *str); uint16_t Matter_encodeString(uint8_t dst[], char const *str); uint16_t Matter_encodedStringArrayLength(char const *strings[], uint8_t nr_of_strings); uint16_t Matter_encodeStringArray(uint8_t dst[], char const *strings[], uint8_t nr_of_strings); +uint16_t Matter_encodedDataLength(ElementEncoding enc, uint16_t nr_of_octets); +uint16_t Matter_encodeData(uint8_t dst[], ElementEncoding, uint8_t const *src, uint16_t nr_of_octets); #ifdef __cplusplus } diff --git a/firmware/maolib/libmao.a b/firmware/maolib/libmao.a index 7e94027344502d245040fc9081754e66b9567b54..b5eec0f83a82727d38dc0bc5829649719a21bd72 100644 GIT binary patch delta 2507 zcmb_dZ%kWN6hH61mawrE6b1!{tEij>sG8m|XLf<5jEykf{TOtiKuw;~H*ClK* zY2!5di6GCI=|0FpVlWyLA2z{A2cOh0CS}v4Ta+~Z>k`FO{U9X9dhY8hyf!T#j5j&= z{Jp<>-nsXlH*=f%d6}B63!QWx@9J=NaGaAPLpyU^o2$d6n7I)n06YPp|D!lnx&iXZ zdIw-H3K1v&)_i~O^=Ptk=WZ!Wc!)zYjo=V6z0)=$e+y+h*kHA@d{U+m8YD26+(9&^?pduGZG zPAXMunQF~k9j>kOxVja_Tba)G6Visw5$ZMImBQQPQkVm3pc*Krc-kD%H64vv;#5<0 zjBcu1*Yk`B{6PJe7Zc~G_P9Lj-o8h3&}3W>%jRe)asx(eCUrQMP4|mbcTA?8DMbgq zU!=KTk|pT-Hn}F4Bk8~XNvHXjWhvyo)%U!cc7|C3vlY=nDO3P)zb4a=ZY__S_z{sl zLUX)m(QVeYfyKnJ#J?zSMay|!>@kjr%n^oL5PwUiBA*Kt01;@k#?rhVpn9ZuMPo)9q_43jLfN4TpzLoC>`%}(6F(<3ixZ-;ht{1N=o2iahwQ0Z-3hYQs{FCX61yOL zSKB_p!cBqLUXjzsez;%GGqz@tH+~?_2@F3WCPK;S`mlUnVEKE)sg=(JS$JQV7q+4_ zN7?_xQt2EeF_VK{r`uka#nZt3oup7AiR$pE42|r4(@Cn)8aFF7dsR+9%Hk%x*lb)7 z89PI2rz15>u$#4+s?iCik%|Mi6>WnDauqRdCrvzU=fx5Hnj~&2ebgDJjMBU2!#J-h zbESdEt;&4XaH!t|q!sNB)2@gTgJ+oQ$5YV^1}XuO4TmM0qbfw9M~7s=xe+0ryAeYz#!yIdeF zw__IxBA*}fk3$i+ilMDukw|SF3nineWvn1STADAfv3StT0EihQz;$}g lb+mjDpMn{w3e8sOtgTMJj5#KyDI3o|#0`dVRd!^>e*r~Bek=e0 delta 379 zcmaF1gRyTR;{@q?3qwOoBQpyH1p@^TKqeIw42=wdG9Zw^#lXN|#=yYJh8y#RF)*NG zu}cgL_;5W)QfU?W*rbnv0UvgG#=w9FvqL2}J1{ai) return sub; + } + return NULL; +} + +/* + * Below are the functions implementing this module's interface. + */ + +bool Attribute_subscribe(AttributeId ai, ElementEncoding enc, AttrNotifier notify, void *target) +{ + BSP_logf("%s for id=%hu\n", __func__, ai); + if (nr_of_subs == M_DIM(subscriptions)) return false; + + Subscription *sub = &subscriptions[nr_of_subs++]; + sub->ai = ai; + sub->encoding = enc; + sub->notify = notify; + sub->target = target; + return true; +} + + +void Attribute_changed(AttributeId ai, uint8_t const *data, uint16_t size) +{ + // BSP_logf("%s(%hu)\n", __func__, ai); + Subscription const *sub = findSubForId(ai); + if (sub != NULL) { + sub->notify(sub->target, ai, sub->encoding, data, size); + } +} diff --git a/firmware/src/controller.c b/firmware/src/controller.c index 6d932af..3e2dbb0 100644 --- a/firmware/src/controller.c +++ b/firmware/src/controller.c @@ -16,6 +16,7 @@ #include "bsp_dbg.h" #include "bsp_app.h" #include "matter.h" +#include "attributes.h" #include "app_event.h" // This module implements: @@ -29,10 +30,6 @@ typedef struct { uint8_t message[0]; } PacketHeader; -typedef enum { - AI_ALL_PATTERN_NAMES = 5, AI_CURRENT_PATTERN_NAME, AI_INTENSITY_PERCENT, AI_PLAY_PAUSE_STOP -} AttributeId; - typedef struct { uint16_t transaction_id; uint8_t opcode; @@ -43,7 +40,6 @@ typedef struct { typedef void *(*StateFunc)(Controller *, AOEvent const *); - struct _Controller { EventQueue event_queue; // This MUST be the first member. uint8_t event_storage[400]; @@ -56,13 +52,17 @@ struct _Controller { static uint8_t const welcome_msg[] = "Push the button to play or pause :-)\n"; -static void initResponsePacket(PacketHeader *ph, AttributeAction const *req_aa) +static void initResponsePacket(PacketHeader *ph) { ph->flags = 0x00; ph->dst_address = ph->src_address; ph->src_address = 0x0000; // TODO Use our real address. ph->reserved = 0x00; - AttributeAction *rsp_aa = (AttributeAction *)ph->message; +} + + +static void initAttributeAction(AttributeAction *rsp_aa, AttributeAction const *req_aa) +{ *rsp_aa = *req_aa; // Copy the request. rsp_aa->opcode = OC_REPORT_DATA; // Only change the opcode. } @@ -77,7 +77,8 @@ static void readPatternNames(Controller *me, AttributeAction const *aa) uint16_t packet_size = nbtw + Matter_encodedStringArrayLength(pattern_names, nr_of_patterns); // TODO Ensure packet_size does not exceed max frame payload size. uint8_t packet[packet_size]; - initResponsePacket((PacketHeader *)packet, aa); + initResponsePacket((PacketHeader *)packet); + initAttributeAction((AttributeAction *)(packet + sizeof(PacketHeader)), aa); nbtw += Matter_encodeStringArray(packet + nbtw, pattern_names, nr_of_patterns); DataLink_sendDatagram(me->datalink, packet, nbtw); } @@ -89,7 +90,8 @@ static void readCurrentPatternName(Controller *me, AttributeAction const *aa) uint16_t nbtw = sizeof(PacketHeader) + sizeof(AttributeAction); uint16_t packet_size = nbtw + Matter_encodedStringLength(cpn); uint8_t packet[packet_size]; - initResponsePacket((PacketHeader *)packet, aa); + initResponsePacket((PacketHeader *)packet); + initAttributeAction((AttributeAction *)(packet + sizeof(PacketHeader)), aa); nbtw += Matter_encodeString(packet + nbtw, cpn); DataLink_sendDatagram(me->datalink, packet, nbtw); } @@ -101,12 +103,31 @@ static void readIntensityPercentage(Controller *me, AttributeAction const *aa) uint16_t nbtw = sizeof(PacketHeader) + sizeof(AttributeAction); uint16_t packet_size = nbtw + Matter_encodedIntegerLength(sizeof intensity); uint8_t packet[packet_size]; - initResponsePacket((PacketHeader *)packet, aa); + initResponsePacket((PacketHeader *)packet); + initAttributeAction((AttributeAction *)(packet + sizeof(PacketHeader)), aa); nbtw += Matter_encodeUnsignedInteger(packet + nbtw, &intensity, sizeof intensity); DataLink_sendDatagram(me->datalink, packet, nbtw); } +static void attributeChanged(Controller *me, AttributeId ai, ElementEncoding enc, uint8_t const *data, uint16_t data_size) +{ + // BSP_logf("Controller_%s(%hu) size=%hu\n", __func__, ai, data_size); + uint16_t nbtw = sizeof(PacketHeader) + sizeof(AttributeAction); + uint16_t packet_size = nbtw + Matter_encodedDataLength(enc, data_size); + uint8_t packet[packet_size]; + initResponsePacket((PacketHeader *)packet); + AttributeAction *aa = (AttributeAction *)(packet + sizeof(PacketHeader)); + aa->transaction_id = 0; + aa->opcode = OC_REPORT_DATA; + aa->reserved = 0; + aa->attribute_id = ai; + // TODO Add subscription Id? + nbtw += Matter_encodeData(packet + nbtw, enc, data, data_size); + DataLink_sendDatagram(me->datalink, packet, nbtw); +} + + static void handleReadRequest(Controller *me, AttributeAction const *aa) { switch (aa->attribute_id) @@ -262,6 +283,10 @@ void Controller_start(Controller *me) me->state(me, AOEvent_newEntryEvent()); DataLink_open(me->datalink, &me->event_queue); DataLink_waitForSync(me->datalink); + // In practice these subscriptions will be made by the controlling client. + Attribute_subscribe(AI_CURRENT_PATTERN_NAME, EE_UTF8_1LEN, (AttrNotifier)&attributeChanged, me); + Attribute_subscribe(AI_INTENSITY_PERCENT, EE_UNSIGNED_INT_1, (AttrNotifier)&attributeChanged, me); + Attribute_subscribe(AI_PLAY_PAUSE_STOP, EE_UNSIGNED_INT_1, (AttrNotifier)&attributeChanged, me); BSP_logf("Starting NeoDK!\n%s", welcome_msg); } diff --git a/firmware/src/debug_cli.c b/firmware/src/debug_cli.c index 9359535..9122538 100644 --- a/firmware/src/debug_cli.c +++ b/firmware/src/debug_cli.c @@ -23,9 +23,9 @@ typedef struct { uint8_t buf[20]; - EventQueue *delegate_queue; + EventQueue *delegate; + Sequencer *sequencer; DataLink *datalink; - uint16_t V_prim_mV; uint8_t state; uint8_t len; } CmndInterp; @@ -44,20 +44,18 @@ static void gatherInputCharacters(CmndInterp *me, char ch) } -static void setPrimaryVoltage_mV(CmndInterp *me, uint16_t mV) +static void setIntensity(CmndInterp *me, uint8_t intensity_perc) { - me->V_prim_mV = BSP_setPrimaryVoltage_mV(mV); - uint8_t pulse_width = 40 + me->V_prim_mV / 100; - EventQueue_postEvent(me->delegate_queue, ET_SET_PULSE_WIDTH, &pulse_width, sizeof pulse_width); + EventQueue_postEvent(me->delegate, ET_SET_INTENSITY, &intensity_perc, sizeof intensity_perc); } -static void changePrimaryVoltage_mV(CmndInterp *me, int16_t delta_mV) +static void changeIntensity(CmndInterp *me, int8_t delta_perc) { - int32_t soll_mV = (int32_t)me->V_prim_mV + delta_mV; - if (soll_mV < 1000) soll_mV = 1000; - else if (soll_mV > 10200) soll_mV = 10200; - setPrimaryVoltage_mV(me, soll_mV); + int16_t soll_perc = (int16_t)Sequencer_getIntensityPercentage(me->sequencer) + delta_perc; + if (soll_perc < 10) soll_perc = 10; + else if (soll_perc > 100) soll_perc = 100; + setIntensity(me, soll_perc); } /** @@ -72,38 +70,38 @@ static void interpretCommand(CmndInterp *me, char ch) break; case '0': BSP_primaryVoltageEnable(false); - setPrimaryVoltage_mV(me, 0); + setIntensity(me, 0); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - setPrimaryVoltage_mV(me, (ch - '0') * 1000U); + setIntensity(me, (ch - '0') * 10); // 0..90%. BSP_primaryVoltageEnable(true); // Turn on the buck converter. break; case 'a': BSP_triggerADC(); break; case 'b': // Simulate a button press. - EventQueue_postEvent(me->delegate_queue, ET_BUTTON_PUSHED, NULL, 0); - EventQueue_postEvent(me->delegate_queue, ET_BUTTON_RELEASED, NULL, 0); + EventQueue_postEvent(me->delegate, ET_BUTTON_PUSHED, NULL, 0); + EventQueue_postEvent(me->delegate, ET_BUTTON_RELEASED, NULL, 0); break; case 'd': // Intensity down. - changePrimaryVoltage_mV(me, -100); + changeIntensity(me, -2); break; case 'l': BSP_toggleTheLED(); break; case 'n': - EventQueue_postEvent(me->delegate_queue, ET_SELECT_NEXT_PATTERN, NULL, 0); + EventQueue_postEvent(me->delegate, ET_SELECT_NEXT_PATTERN, NULL, 0); break; case 'q': { // Quit. int sig = 2; // Simulate Ctrl-C. - EventQueue_postEvent(me->delegate_queue, ET_POSIX_SIGNAL, (uint8_t const *)&sig, sizeof sig); + EventQueue_postEvent(me->delegate, ET_POSIX_SIGNAL, (uint8_t const *)&sig, sizeof sig); break; } case 'u': // Intensity up. - changePrimaryVoltage_mV(me, +100); + changeIntensity(me, +2); break; case 'v': - CLI_logf("Firmware v0.32-beta\n"); + CLI_logf("Firmware v0.33-beta\n"); break; case 'w': // Allow rediscovery by Dweeb. DataLink_waitForSync(me->datalink); @@ -143,9 +141,10 @@ static void vLogToUser(CmndInterp *me, char const *fmt, va_list args) * Below are the functions implementing this module's interface. */ -void CLI_init(EventQueue *dq, DataLink *datalink) +void CLI_init(EventQueue *dq, Sequencer *sequencer, DataLink *datalink) { - my.delegate_queue = dq; + my.delegate = dq; + my.sequencer = sequencer; my.datalink = datalink; } diff --git a/firmware/src/matter.c b/firmware/src/matter.c deleted file mode 100644 index 2ae9113..0000000 --- a/firmware/src/matter.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * matter.h -- Matter data encoding and decoding - * - * NOTICE (do not remove): - * This file is part of project NeoDK (https://github.com/Onwrikbaar/NeoDK). - * See https://github.com/Onwrikbaar/NeoDK/blob/main/LICENSE.txt for full license details. - * - * Created on: 12 October 2024 - * Author: Mark - * Copyright 2024 Neostimâ„¢ - */ - -#include -#include "matter.h" - - -uint16_t Matter_encodedIntegerLength(uint8_t nr_of_octets) -{ - return 1 + nr_of_octets; -} - - -uint16_t Matter_encodeUnsignedInteger(uint8_t dst[], uint8_t const *src, uint8_t nr_of_octets) -{ - switch (nr_of_octets) - { - case 1: dst[0] = EE_UNSIGNED_INT_1; break; - case 2: dst[0] = EE_UNSIGNED_INT_2; break; - case 4: dst[0] = EE_UNSIGNED_INT_4; break; - case 8: dst[0] = EE_UNSIGNED_INT_8; break; - default: - dst[0] = EE_UNSIGNED_INT_1; - dst[1] = 0; - return 2; - } - uint16_t nbe = 1; - for (uint8_t i = 0; i < nr_of_octets; i++) { - dst[nbe++] = src[i]; - } - return nbe; -} - - -uint16_t Matter_encodedStringLength(char const *str) -{ - uint16_t nbe = strlen(str); - return nbe + (nbe < 256 ? 2 : 3); -} - - -uint16_t Matter_encodeString(uint8_t dst[], char const *str) -{ - uint16_t nbe = 0; - uint16_t str_len = strlen(str); - if (str_len < 256) { - dst[nbe++] = EE_UTF8_1LEN; - dst[nbe++] = str_len; - } else { - dst[nbe++] = EE_UTF8_2LEN; - dst[nbe++] = str_len; - dst[nbe++] = str_len >> 8; - } - memcpy(dst + nbe, str, str_len); - return nbe + str_len; -} - - -uint16_t Matter_encodedStringArrayLength(char const *strings[], uint8_t nr_of_strings) -{ - uint16_t nbe = 2; // 2 bytes to Matter_encode array. - for (uint8_t i = 0; i < nr_of_strings; i++) { - nbe += Matter_encodedStringLength(strings[i]); - } - return nbe; -} - - -uint16_t Matter_encodeStringArray(uint8_t dst[], char const *strings[], uint8_t nr_of_strings) -{ - uint16_t nbe = 0; - dst[nbe++] = EE_ARRAY; - for (uint8_t i = 0; i < nr_of_strings; i++) { - nbe += Matter_encodeString(dst + nbe, strings[i]); - } - dst[nbe++] = EE_END_OF_CONTAINER; - return nbe; -} diff --git a/firmware/src/neodk_main.c b/firmware/src/neodk_main.c index 4e91aa8..77b28bd 100644 --- a/firmware/src/neodk_main.c +++ b/firmware/src/neodk_main.c @@ -85,7 +85,7 @@ static void dispatchEvent(Boss *me, AOEvent const *evt) // Ignore for now. break; case ET_SELECT_NEXT_PATTERN: - case ET_SET_PULSE_WIDTH: + case ET_SET_INTENSITY: EventQueue_repostEvent((EventQueue *)me->sequencer, evt); break; default: @@ -128,7 +128,7 @@ static void setupAndRunApplication(Boss *me) Sequencer_init(me->sequencer); DataLink *datalink = DataLink_new(); Controller_init(me->controller, me->sequencer, datalink); - CLI_init(&me->event_queue, datalink); + CLI_init(&me->event_queue, me->sequencer, datalink); Sequencer_start(me->sequencer); Selector button_selector; diff --git a/firmware/src/sequencer.c b/firmware/src/sequencer.c index 61dbe2c..37911ee 100644 --- a/firmware/src/sequencer.c +++ b/firmware/src/sequencer.c @@ -17,6 +17,7 @@ #include "bsp_mao.h" #include "debug_cli.h" #include "app_event.h" +#include "attributes.h" #include "eventqueue.h" #include "pattern_iter.h" @@ -38,6 +39,7 @@ struct _Sequencer { uint8_t pattern_index; uint8_t intensity_percent; uint8_t pulse_width; + uint8_t play_state; }; enum { EL_0, EL_A, EL_B, EL_C = 4, EL_AC = (EL_A | EL_C), EL_D = 8, EL_BD = (EL_B | EL_D) }; @@ -128,12 +130,22 @@ static PatternDescr const pattern_descriptors[] = }; -void selectPatternByName(Sequencer *me, char const *name, EventSize len) +static void checkAllPatterns(Sequencer *me) +{ + for (uint8_t i = 0; i < me->nr_of_patterns; i++) { + PatternDescr const *pd = &me->pattern_descr[i]; + BSP_logf("Checking '%s'\n", pd->name); + PatternIterator_checkPattern(pd->pattern, pd->nr_of_elcons); + } +} + + +static void selectPatternByName(Sequencer *me, char const *name, EventSize len) { for (uint8_t i = 0; i < me->nr_of_patterns; i++) { char const *pattern_name = me->pattern_descr[i].name; if (len == strlen(pattern_name) && memcmp(name, pattern_name, len) == 0) { - BSP_logf("%s '%s'\n", __func__, pattern_name); + // BSP_logf("%s '%s'\n", __func__, pattern_name); me->pattern_index = i; return; } @@ -152,6 +164,8 @@ static void setIntensityPercentage(Sequencer *me, uint8_t perc) { BSP_logf("Setting intensity to %hhu%%\n", perc); me->intensity_percent = perc; + // TODO Ramp up? + Attribute_changed(AI_INTENSITY_PERCENT, &me->intensity_percent, sizeof me->intensity_percent); BSP_setPrimaryVoltage_mV(perc * 100); setPulseWidth(me, 40 + perc); } @@ -160,12 +174,20 @@ static void setIntensityPercentage(Sequencer *me, uint8_t perc) static void switchPattern(Sequencer *me) { PatternDescr const *pd = &me->pattern_descr[me->pattern_index]; - setIntensityPercentage(me, DEFAULT_INTENSITY_PERCENT); CLI_logf("Switching to '%s'\n", pd->name); + Attribute_changed(AI_CURRENT_PATTERN_NAME, (uint8_t const *)pd->name, strlen(pd->name)); + setIntensityPercentage(me, DEFAULT_INTENSITY_PERCENT); PatternIterator_init(&me->pi, pd, me->pulse_width); } +static void setPlayState(Sequencer *me, PlayState play_state) +{ + me->play_state = play_state; + Attribute_changed(AI_PLAY_PAUSE_STOP, &me->play_state, sizeof me->play_state); +} + + static void printAdcValues(uint16_t const *v) { uint32_t Iprim_mA = ((uint32_t)v[0] * 2063UL) / 1024; @@ -200,9 +222,6 @@ static void *stateCanopy(Sequencer *me, AOEvent const *evt) case ET_SET_INTENSITY: setIntensityPercentage(me, *(uint8_t const *)AOEvent_data(evt)); break; - case ET_SET_PULSE_WIDTH: - setPulseWidth(me, *(uint8_t const *)AOEvent_data(evt)); - break; default: BSP_logf("Sequencer_%s unexpected event: %u\n", __func__, AOEvent_type(evt)); } @@ -219,6 +238,7 @@ static void *stateIdle(Sequencer *me, AOEvent const *evt) { case ET_AO_ENTRY: BSP_logf("Sequencer_%s ENTRY\n", __func__); + setPlayState(me, PS_IDLE); break; case ET_AO_EXIT: BSP_logf("Sequencer_%s EXIT\n", __func__); @@ -247,6 +267,7 @@ static void *statePaused(Sequencer *me, AOEvent const *evt) { case ET_AO_ENTRY: BSP_logf("%s ENTRY\n", __func__); + setPlayState(me, PS_PAUSED); break; case ET_AO_EXIT: BSP_logf("%s EXIT\n", __func__); @@ -296,6 +317,7 @@ static void *statePulsing(Sequencer *me, AOEvent const *evt) { case ET_AO_ENTRY: BSP_logf("%s ENTRY\n", __func__); + setPlayState(me, PS_PLAYING); scheduleNextPulseTrain(me); break; case ET_AO_EXIT: @@ -358,6 +380,7 @@ Sequencer *Sequencer_init(Sequencer *me) me->nr_of_patterns = M_DIM(pattern_descriptors); me->pattern_index = 2; me->intensity_percent = 0; + me->play_state = PS_UNKNOWN; BSP_registerPulseDelegate(&me->event_queue); return me; } @@ -365,12 +388,7 @@ Sequencer *Sequencer_init(Sequencer *me) void Sequencer_start(Sequencer *me) { - for (uint8_t i = 0; i < me->nr_of_patterns; i++) { - PatternDescr const *pd = &me->pattern_descr[i]; - BSP_logf("Checking '%s'\n", pd->name); - PatternIterator_checkPattern(pd->pattern, pd->nr_of_elcons); - } - + checkAllPatterns(me); PatternIterator_init(&me->pi, &me->pattern_descr[me->pattern_index], me->pulse_width); me->state = stateIdle; me->state(me, AOEvent_newEntryEvent());