/branches/V0.68d_Xtype_and_bugfix/Flight-Ctrl_MEGA644_V0_68d.hex |
---|
0,0 → 1,2024 |
:100000000C9432020C944F020C944F020C944F0249 |
:100010000C944F020C944F020C944F020C944F021C |
:100020000C944F020C94300C0C944F020C944F0221 |
:100030000C94A8150C944F020C944F020C944F0290 |
:100040000C944F020C944F020C946C0B0C944F02C6 |
:100050000C94BF040C944F020C9489040C944F022E |
:100060000C94360D0C944F020C94DC140C944F023B |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D414343206E69636874206102 |
:1000E000626765676C696368656E21000A0D496E19 |
:1000F00069742E20454550524F4D3A2047656E6534 |
:1001000072696572652044656661756C742D506115 |
:1001100072616D657465722E2E2E000A0D3D3D3D97 |
:100120003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DFF |
:100130003D3D3D3D3D3D3D3D3D3D3D000A0D466C57 |
:1001400069676874436F6E74726F6C0A0D486172F0 |
:1001500064776172653A25642E25640A0D536F66D3 |
:1001600074776172653A5625642E256425632000F4 |
:100170002E0048693A253469202043663A253469BF |
:10018000200047733A253469202047693A253469AD |
:1001900020004E693A2534692020526F3A2534698F |
:1001A000200045787465726E436F6E74726F6C20B8 |
:1001B000200052616E67653A2533692D2533690049 |
:1001C0005374656C6C756E673A202533690053650E |
:1001D00074706F696E7420202533690053657276E0 |
:1001E0006F202000506F7469343A20202533690055 |
:1001F000506F7469333A202025336900506F746959 |
:10020000323A202025336900506F7469313A20203A |
:100210002533690053746172743A20202020202510 |
:100220003569004D657373776572743A2020253502 |
:1002300069005269636874756E673A2020253569D4 |
:10024000004B6F6D706173732020202020202000F0 |
:10025000456D70662E506567656C3A2535690053AB |
:1002600070616E6E756E673A202025356900486FA3 |
:1002700063682025346920282533692900526F6C72 |
:100280006C20253469202825336929004E69636B69 |
:100290002025346920282533692900414343202D36 |
:1002A0002053656E736F720047696572202534694B |
:1002B00020282533692900526F6C6C202534692071 |
:1002C0002825336929004E69636B2025346920286D |
:1002D000253369290047696572202534692028255E |
:1002E00033692900526F6C6C20253469202825332E |
:1002F0006929004E69636B202534692028253369FC |
:1003000029004779726F202D2053656E736F72003C |
:1003100050333A253469202050343A25346920007E |
:1003200050313A253469202050323A253469200072 |
:1003300047733A253469202047693A2534692000FB |
:100340004E693A2534692020526F3A2534692000DD |
:100350004B373A25346920204B383A253469200040 |
:100360004B353A25346920204B363A253469200034 |
:100370004B333A25346920204B343A253469200028 |
:100380004B313A25346920204B323A25346920001C |
:100390004B6F6D706173733A2020202535690052D0 |
:1003A0006F6C6C3A202020202020253569004E6992 |
:1003B000636B3A20202020202025356900616B7472 |
:1003C0002E204C6167650048F668656E726567654A |
:1003D0006C756E67004B65696E6520004F66662020 |
:1003E00020202020203A20253569004C7566746451 |
:1003F0007275636B3A2025356900536F6C6C486FDA |
:100400006568653A2025356900486F6568653A205A |
:10041000202020202535690028632920486F6C673B |
:10042000657220427573730053657474696E673A20 |
:10043000202564200048573A5625642E2564205311 |
:10044000573A25642E25642563002B204D696B7275 |
:100450006F4B6F70746572202B005B25695D005BCC |
:1004600025695D0011241FBECFEFD0E1DEBFCDBFF7 |
:1004700014E0A0E0B1E0E2EBFAE702C005900D92D3 |
:10048000A43AB107D9F718E0A4EAB4E001C01D927C |
:10049000AE3DB107E1F70E948A020C94583D0C94DE |
:1004A000000022E030E0D9010E94443D802D8630DA |
:1004B00028F082E0D901082E0E944C3D90E008957A |
:1004C000FB01282F863008F025E0429FD00111243F |
:1004D000AC59BF4F842F90E0019724F001900E9407 |
:1004E0004C3DFACFA2E0B0E0022E0E944C3D0895B0 |
:1004F000FB01863008F085E0489FD0011124AC59FB |
:10050000BF4F842F90E0019724F00E94443D019258 |
:10051000FACF0895EF92FF921F93CF93DF9314B811 |
:1005200015B8189B02C08BE001C08AE080930001DF |
:1005300081E887B98FEF88B98BE184B981E085B90B |
:100540008EE38AB9579A87EF8BB984B7877F84BFC8 |
:10055000809160008861809360001092600080ED5F |
:1005600097E09093C6048093C50410925C051092A6 |
:100570005B0510921A081092190810925A051092F1 |
:1005800059051092580510925705809100018A3044 |
:1005900011F4289801C0289A0E94D30C0E94940656 |
:1005A0000E9493150E94300D0E94C21478941092FC |
:1005B0000C0784E480930D0787E080930E07209159 |
:1005C0000001822F6AE00E949D3C492F50E0822F5B |
:1005D0000E949D3C90E024E630E03F932F9324E47A |
:1005E00030E03F932F931F921F925F934F939F93FF |
:1005F0008F938CE391E09F938F931F920E94C80882 |
:100600008BE191E09F938F931F920E94C808299AD3 |
:10061000A1E0B0E00E94443D802D2DB73EB7205FA1 |
:100620003F4F0FB6F8943EBF0FBE2DBF8534A9F1E2 |
:100630008CEE90E09F938F931F920E94C8080E94B7 |
:10064000AE23C0E0D0E00F900F900F9081E4E82E31 |
:1006500088E0F82E1C2FC23039F0C33019F40E9404 |
:100660008C2204C0C43010F00E941D2347E4B7015F |
:10067000812F0E9460022196C630D10559F783E090 |
:1006800022E030E0D901082E0E944C3D85E4215043 |
:100690003040D901082E0E944C3DC4E0D0E0DE017C |
:1006A0000E94443D802D853050F083ED90E09F9373 |
:1006B0008F931F920E94C8080F900F900F9022975F |
:1006C000DE010E94443D802D863028F082E0DE016C |
:1006D000082E0E944C3D47E461E478E00E947802D5 |
:1006E000DE010E94443D802D863028F082E0DE014C |
:1006F000082E0E944C3D90E09F938F9388EB90E0F2 |
:100700009F938F931F920E94C808809149080F9071 |
:100710000F900F900F900F9080FD03C0C8EED3E0B4 |
:1007200020C08BE990E09F938F931F920E94C8088E |
:1007300088EE93E00E941B0CEC010E94CE0F0F90FC |
:100740000F900F90CE010E94240C8823D9F386E9E4 |
:1007500090E09F938F931F920E94C8080F900F9074 |
:100760000F900E941621809100018A3011F4289880 |
:1007700001C0289A80ED97E09093C6048093C50449 |
:1007800085E58093160788E890E09F938F931F92EA |
:100790000E94C808809149080F900F900F9082FF27 |
:1007A00003C08CE790E002C084E790E09F938F93B2 |
:1007B0001F920E94C8080F900F900F9080E790E062 |
:1007C0009F938F931F920E94C8080E94171088E879 |
:1007D00093E190938603809385030F900F900F9081 |
:1007E0008091C2048823E1F31092C2040E943F2446 |
:1007F0000E94CF20209100012A3011F4289801C0D6 |
:10080000289A80910301882321F08150809303016D |
:1008100012C01092B4041092B504109220071092E6 |
:1008200079051092780510927B0510927A05109246 |
:100830007D0510927C0580915605882329F08091D2 |
:1008400056058150809356058091850390918603CB |
:10085000892B01F585E090E09093860380938503D2 |
:100860000E946D1580910403909105038F5F9F4F47 |
:10087000F9F480915F058823D9F080E197E29093A5 |
:10088000C6048093C50480E890E0909305038093AC |
:1008900004030EC080918503909186030197909385 |
:1008A0008603809385032A3011F4289801C0289A82 |
:1008B0008091C204882311F40E94AF060E9457075A |
:1008C000CE010E94240C882309F48ACF20910803CA |
:1008D000309109038091590890E0281739079CF45A |
:1008E00080910403909105038F5F9F4F61F480E72F |
:1008F00097E19093C6048093C50480E093E09093C1 |
:1009000005038093040384E690E00E941B0CEC0135 |
:1009100067CF1F920F920FB60F9211248F939F9360 |
:10092000EF93FF93809101018823E1F48091BE044D |
:100930009091BF0401969093BF048093BE04FC0184 |
:10094000E252FA4FE081ED3019F08639910539F421 |
:100950001092BF041092BE0481E080930101E093E5 |
:10096000C60004C01092BF041092BE04FF91EF9124 |
:100970009F918F910F900FBE0F901F9018951F920F |
:100980000F920FB60F9211242F933F934F938F9393 |
:100990009F93AF93BF93CF93DF93EF93FF93809198 |
:1009A000C6008093A8044091B904463910F0109213 |
:1009B000B8048091A8048D3009F05CC08091B8041F |
:1009C000823009F057C01092B804A42FB0E0FD01A6 |
:1009D000E15EF84F3081ED01C05ED84F28818091F3 |
:1009E000BC049091BD04831B9109821B91099F70E7 |
:1009F0009093BD048093BC049C0196E036952795A6 |
:100A00009A95E1F7235C2093BB04982F9F73935C26 |
:100A10009093BA048081281729F48881981711F4DB |
:100A200091E006C08091AB048F5F8093AB0490E0AF |
:100A30008091A904882309F065C0992309F462C054 |
:100A400081E08093A9044093AC04AF5DB84F8DE082 |
:100A50008C9380912307823509F054C088E190E09F |
:100A60002CE00FB6F894A895809360000FBE2093F9 |
:100A7000600048C08091B8048130D9F0813018F00E |
:100A80008230F1F521C08091A804833239F480913D |
:100A9000A904882319F481E08093B8048091A80404 |
:100AA0008093210781E08093B9048091A80490E0AD |
:100AB00022C082E08093B804E42FF0E08091A80483 |
:100AC000EF5DF84F808309C0E42FF0E08091A80427 |
:100AD000EF5DF84F8083463920F44F5F4093B904AF |
:100AE00002C01092B8042091A8048091BC04909197 |
:100AF000BD04820F911D9093BD048093BC0402C07D |
:100B00001092B804FF91EF91DF91CF91BF91AF9117 |
:100B10009F918F914F913F912F910F900FBE0F900A |
:100B20001F901895DC0120E030E040E050E008C064 |
:100B3000FA01E252FA4F8081280F311D4F5F5F4F5B |
:100B40004A175B07A9F73F70C90136E0969587956C |
:100B50003A95E1F7835CFD01E252FA4F80831196EA |
:100B60002F73235CFD01E252FA4F2083A152BA4F4A |
:100B70008DE08C93109201018091DE058093C60078 |
:100B800008951F93CF93DF93EA01722F93E290931E |
:100B9000DE056093DF058093E005A3E0B0E060E050 |
:100BA0004FC0FE01E60FF11D90816F5F715019F487 |
:100BB00010E040E00FC0FE01E60FF11D40816F5FC5 |
:100BC000715011F410E006C0FE01E60FF11D108116 |
:100BD0006F5F7150892F86958695835CFD01E25287 |
:100BE000FA4F808350E09A0184E0369527958A95E4 |
:100BF000E1F7892F90E083709070F4E0880F991FDF |
:100C0000FA95E1F7282B235CFD01E152FA4F20838E |
:100C1000812F82958695869583704F705070440F12 |
:100C2000551F440F551F842B835CFD01E052FA4F82 |
:100C300080831F73135CFD01EF51FA4F10831496EC |
:100C4000772309F0AECFCD010E949205DF91CF91BD |
:100C50001F9108951F93CF93DF93EC0170E0A22FB3 |
:100C6000B0E0129748C0E42FF0E0EF5DF84F30811C |
:100C70004F5FE42FF0E0EF5DF84F50814F5FE42FBE |
:100C8000F0E0EF5DF84F10814F5FE42FF0E0EF5D93 |
:100C9000F84F20814F5F842F90E0A817B90774F1B7 |
:100CA0005D53FE01E70FF11D852F82958F703D5337 |
:100CB000330F330F382B3083613001F1912F9D5367 |
:100CC0007F5FFE01E70FF11D71505295507F892F14 |
:100CD00086958695582B508363506F3F79F07E5FE1 |
:100CE000FE01E70FF11D9295990F990F907C2D53FE |
:100CF000922B90837F5F662309F0B5CFDF91CF9170 |
:100D00001F9108951F93182F8A3019F48DE00E94C7 |
:100D100082068091C00085FFFCCF1093C60080E062 |
:100D200090E01F9108950895E1ECF0E088E1808360 |
:100D3000A0ECB0E08C9182608C938081806880838D |
:100D40008081806480838AE28093C40088EC90E094 |
:100D50000E941B0C90930B0780930A0708958091C3 |
:100D60000101882309F4A2C08091A404882371F0B2 |
:100D700080910101882351F06091DD052BE046E16F |
:100D800057E087E40E94C1051092A40480910A07ED |
:100D900090910B070E94240C882321F48091A604D3 |
:100DA0008823B1F080910101882391F06091DD05E5 |
:100DB00022E447EB57E084E40E94C1051092A604A8 |
:100DC00084EF91E00E941B0C90930B0780930A071D |
:100DD000609102016F3F89F0462F50E094E0440F8C |
:100DE000551F9A95E1F74C5F5E4F605D20E181E40D |
:100DF0000E94C1058FEF809302019091F90799231A |
:100E0000A1F080910101882381F083E28093DE05C7 |
:100E10009093DF058DE08093E00510920101109220 |
:100E2000F9078091DE058093C6008091A504882390 |
:100E300059F180910101882339F10E94201010920C |
:100E4000A5043091AE04932F9F5F9093AE0494302D |
:100E500021F08091AF04882359F026E145E158E064 |
:100E600060E084E30E94C1058FEF8093AE040CC064 |
:100E700044E1949FA0011124465E5C4F24E160E0B0 |
:100E8000832F8F5C0E94C1058091A704882371F095 |
:100E900080910101882351F06091DD052AE04CE04A |
:100EA00057E086E50E94C1051092A70408951F939C |
:100EB000CF93DF93CDB7DEB722970FB6F894DEBF9E |
:100EC0000FBECDBF8091A904882309F4FEC08FEF27 |
:100ED00080930301809123078B3609F479C08C3607 |
:100EE00088F48336D1F1843630F48136C1F082360D |
:100EF00009F0E9C020C0873609F47BC0883609F0C4 |
:100F0000E2C042C0813709F478C0813708F49DC03F |
:100F1000843709F454C0863709F0D5C066C02091E3 |
:100F2000AC0443E062E0CE0101960E942A0689816A |
:100F300080930201C8C02091AC0443E06BE086E1DD |
:100F400097E00E942A068091ED0490911807892B62 |
:100F50008093ED0480911F0745C02091AC0443E0CD |
:100F60006BE086E197E00E942A068091ED04909163 |
:100F70001807892B8093ED0480911F078093F90750 |
:100F800081E08093A6049FC02091AC0443E062E01E |
:100F9000CE0101960E942A068091ED049981892B49 |
:100FA0008093ED048A818F3F21F481E08093AF0428 |
:100FB00002C01092AF0481E08093A50484C0209108 |
:100FC000AC0443E064E080EB94E00E942A067BC01E |
:100FD0002091AC0443E064E084EB94E00E942A0694 |
:100FE0008091B7048093F9076EC081E08093A704D5 |
:100FF0006AC081E08093A40466C02091AC0443E001 |
:1010000062E0CE0101960E942A0689818F3F89F015 |
:10101000863010F085E0898347E461E478E08981D7 |
:101020000E9478026091DD05898127E441E458E05F |
:1010300008C01091DD050E94510227E441E458E008 |
:10104000612F855B0E94C1053EC02091AC0443E046 |
:1010500067E481E498E00E942A068091230747E430 |
:1010600061E478E08B560E946002809123078B56E2 |
:10107000A2E0B0E0082E0E944C3D60916C0870E048 |
:1010800080E090E024EC39E040E050E00E947E3CBB |
:1010900060938703709388038093890390938A03F6 |
:1010A00060916D0870E080E090E00E947E3C60936B |
:1010B0008B0370938C0380938D0390938E030E9417 |
:1010C00051020E9477221092A90422960FB6F8943A |
:1010D000DEBF0FBECDBFDF91CF911F910895982F36 |
:1010E0008091FA07813069F48091EC04E82FF0E0F8 |
:1010F000E65EFC4F90838F5F8093EC0421E030E04C |
:1011000005C0892F0E948206282F30E0C90108956A |
:101110001F93182F04C080E30E946F08115011160E |
:10112000D4F31F9108951F93182F04C080E20E94EA |
:101130006F0811501116D4F31F9108950F931F9348 |
:10114000CF93DF938C01EB0108C0F8010F5F1F4FB5 |
:10115000E4918E2F0E946F0821972097B1F7DF91BD |
:10116000CF911F910F9108950F931F93CF93DF930A |
:101170008C01EB0106C0F80181918F010E946F087C |
:1011800021972097C1F7DF91CF911F910F9108957B |
:101190002F923F924F925F926F927F928F929F9287 |
:1011A000AF92BF92CF92DF92EF92FF920F931F9375 |
:1011B000CF93DF93CDB7DEB7E5970FB6F894DEBFD8 |
:1011C0000FBECDBF2B968FAD2B978093FA07CE0124 |
:1011D000835B9F4F9B838A832D964EAC5FAC2D978C |
:1011E0001EA61FA618AA19AA9E01225D3F4F3DAB5D |
:1011F0002CAB820102C00F5F1F4FF801F490FF205B |
:1012000019F0F5E2FF16B9F7B8016419750919F07C |
:10121000C2010E949E08FF2009F445C228010894DB |
:10122000411C511C1982AA81BB8133241BAA2FEFB8 |
:101230002AABF2010894411C511CB490632D70E05C |
:101240006170707035E7B31621F08B2D806288379E |
:10125000C9F46115710559F02D913D914D915C9145 |
:1012600013972EA73FA748AB59AB14960BC08D918F |
:101270009C9111979C0140E050E02EA73FA748ABFE |
:1012800059AB129630E2B31621F48981882389F68E |
:101290001CC043E2B41611F458E055C08AE2B816F7 |
:1012A00021F09DE2B91671F408C0FD011296E081AB |
:1012B000EBABE7FFBECFE195EBABE0E13E2AFFED04 |
:1012C0003F22B7CF2BE2B21611F4B982B2CF3EE281 |
:1012D000B31699F5F2010894411C511C84918A328D |
:1012E00021F0B82E20E030E01DC0FD0112964081B3 |
:1012F000518157FF02C04FEF5FEF4AAB9ACFC90150 |
:1013000053E0880F991F5A95E1F7220F331F280FDA |
:10131000391F2B0D311D20533040F2010894411C20 |
:10132000511CB4908B2D80538A3048F3A90137FFAC |
:1013300002C04FEF5FEF4AAB85CF40E3B41629F40C |
:1013400034FC77CF50E2352A74CF8B2D815389300E |
:10135000D8F420E030E0C90103E0880F991F0A9516 |
:10136000E1F7220F331F280F391F2B0D311D20539A |
:101370003040F2010894411C511CB4908B2D8053D5 |
:101380008A3048F32BAB5ECF88E6B81619F494E0A8 |
:10139000392A4FCFECE6BE1619F4F1E03F2A49CFC7 |
:1013A000BB83AA8323E6B21639F41296BB83AA83C1 |
:1013B00012978C918E8322C134E4B31639F044E63F |
:1013C000B41631F059E6B516A9F502C081E0382A05 |
:1013D00030FE08C01496BB83AA835E914E913E9165 |
:1013E0002E910AC01296BB83AA839E918E919C0176 |
:1013F000442737FD4095542F2EA73FA748AB59AB44 |
:101400008EA59FA5A8A9B9A9BB238CF42EA53FA59D |
:1014100048A959A950954095309521953F4F4F4F78 |
:101420005F4F2EA73FA748AB59AB8DE28983BAE047 |
:101430002B2E80C03FE4B31621F04FE6B41631F4F2 |
:1014400002C051E0352AA8E02A2E73C080E7B81602 |
:1014500089F41296BB83AA839E918E919C0140E0F1 |
:1014600050E02EA73FA748AB59AB30E4332AF8E74A |
:10147000BF2E5DC043E7B416D1F51296BB83AA8395 |
:10148000DE90CE90C114D10489F488E28E838EE67A |
:101490008F8385E788878CE689878A8789E28B87AF |
:1014A0001C86E6E0CE2ED12CCC0EDD1E5AA957FDAF |
:1014B00014C0452F552747FD509560E070E0C601E8 |
:1014C0000E94563A009711F4FAA80EC0F82EFC18A4 |
:1014D0008AA98F154CF4F82E07C0F6010190002060 |
:1014E000E9F73197FE2EFC18198240E090C095E58F |
:1014F000B91621F0A5E7BA1631F402C0B1E03B2AD3 |
:101500007AE0272E16C0E8E5BE1621F0F8E7BF16F0 |
:1015100009F070C033FE0BC02EA53FA548A959A9FC |
:10152000211531054105510511F030E4332A60E100 |
:10153000262E19824AA947FD02C05FED35228EA5ED |
:101540009FA5A8A9B9A90097A105B10549F49AA931 |
:10155000992331F45EE2C52ED12CCC0EDD1E46C09F |
:101560006EA47FA488A899A84EE2C42ED12CCC0EDC |
:10157000DD1EE22CFF2400E010E06EA57FA588A907 |
:1015800099A9A80197010E94D03C6A3020F430E369 |
:10159000A32EA60E08C027E5A22EA60EA8E5BA1611 |
:1015A00011F4BFEDAB22F601A2926F016EA57FA5EB |
:1015B00088A999A9A80197010E94D03C2EA73FA70E |
:1015C00048AB59AB6E147F048006910618F03901C0 |
:1015D0004A01D3CFF8E02F1649F433FE07C020E3C9 |
:1015E000A21621F080E3D6018E936D01FCA8FC18B1 |
:1015F0004AA90DC0BB2009F456C0BE82198296E0EC |
:10160000C92ED12CCC0EDD1E40E0FF24F394E42E35 |
:10161000EF18E7FCEE248981882319F08F2D8F5F66 |
:1016200006C036FC02C08F2D02C08F2D8E5FA82E03 |
:10163000AE0C032D10E080E3882E912C80229122A5 |
:101640008114910421F48BA98A190E94930889813D |
:10165000882329F061E070E0CE01019609C006FF01 |
:1016600009C080E38C83BD8262E070E0CE01049605 |
:101670000E94B408B0E28B16910421F48BA98A1958 |
:101680000E9488088E2D0E9488086F2D772767FD9D |
:101690007095C6010E94B40804FFABCD8BA98A19CE |
:1016A0000E949308A6CDE5960FB6F894DEBF0FBE54 |
:1016B000CDBFDF91CF911F910F91FF90EF90DF9001 |
:1016C000CF90BF90AF909F908F907F906F905F90E2 |
:1016D0004F903F902F9008951F920F920FB60F9248 |
:1016E00011242F933F935F936F937F938F939F93D7 |
:1016F000AF93BF938091C90481508093C9048F3FF9 |
:10170000B9F489E08093C904809107038F5F8170E9 |
:1017100080930703882319F481E08093C2048091A9 |
:10172000C0049091C10401969093C1048093C004B9 |
:101730008091C5049091C6040297B8F08091C504C9 |
:101740009091C60401979093C6048093C50480913C |
:10175000C5049091C60420910403309105038223AF |
:101760009323892B09F053C006C08FEF9FEF90930E |
:10177000050380930403809100018A3039F404C08A |
:101780005A9A05C0479A03C05A9801C04798809159 |
:10179000490883FF42C0349B0AC08091C3049091E2 |
:1017A000C40401969093C4048093C30436C080910E |
:1017B000C3049091C404892B79F08091C304909163 |
:1017C000C404805A9F4040F48091C3049091C404A3 |
:1017D0009093470580934605809146059091470573 |
:1017E0002091480530914905845E9D4F821B930BE3 |
:1017F00068E671E00E94BD3C845B904090934B058D |
:1018000080934A051092C4041092C30406C08091CC |
:1018100000018A3009F0B6CFB3CFBF91AF919F914D |
:101820008F917F916F915F913F912F910F900FBE9C |
:101830000F901F9018952091C0043091C1042F5F24 |
:101840003F4F820F931F08952091C0043091C1042F |
:10185000821B930B892F99278695807490E00895B9 |
:101860001F920F920FB60F9211241F932F933F9345 |
:101870004F935F936F937F938F939F93AF93BF9398 |
:10188000CF93DF93EF93FF93809106038150809372 |
:1018900006038F3F09F06FC083E88093B00080910A |
:1018A0009C03C82FD0E0D093C804C093C704809194 |
:1018B00076081091630880FF1FC060910A0570913F |
:1018C0000B0580910C0590910D0520E830E040E07B |
:1018D00050E00E94F23CCA01B901212F30E040E003 |
:1018E00050E00E947E3C20E032E040E050E00E9468 |
:1018F000F23CC20FD31F1EC060910A0570910B0508 |
:1019000080910C0590910D0520E830E040E050E01A |
:101910000E94F23CCA01B901212F30E040E050E0C2 |
:101920000E947E3C20E032E040E050E00E94F23C29 |
:10193000C21BD30BD093C804C093C7042091C70423 |
:101940003091C8048091640890E02817390734F07A |
:101950008091650890E08217930724F49093C8045F |
:101960008093C7048091C7048093B3008091660878 |
:101970008093060304C083E08093B0005F98FF91DA |
:10198000EF91DF91CF91BF91AF919F918F917F9117 |
:101990006F915F914F913F912F911F910F900FBECB |
:1019A0000F901F9018958091C0049091C1040B96E0 |
:1019B0009093CB048093CA0482E085BD83EA84BD02 |
:1019C00017BC88E788BD96E096BD83EC8093B00095 |
:1019D0009093B100E0E7F0E0808182608083EEE6E2 |
:1019E000F0E08081816080838AE08093B300109270 |
:1019F000B2000895AC012091C0043091C1042F5F62 |
:101A00003F4F03C08FEE80937A008091C004909185 |
:101A1000C104B901681B790BCB01840F951F80703D |
:101A20009078892F99278695882361F30895AC01D2 |
:101A30002091C0043091C1042F5F3F4F8091C004BA |
:101A40009091C104B901681B790BCB01840F951FDC |
:101A500080709078892F99278695882379F3089547 |
:101A600010927C008FEE80937A0008951F920F925F |
:101A70000FB60F921124EF92FF920F931F932F93A3 |
:101A80003F934F935F936F937F938F939F93AF9306 |
:101A9000BF93CF93DF93EF93FF9310927A008091DF |
:101AA000E8048F5F8093E8048150853009F486C094 |
:101AB000863090F4823009F440C0833030F48823BB |
:101AC000F1F0813009F044C22FC0833009F441C0E5 |
:101AD000843009F03DC25AC0883009F4C2C0893050 |
:101AE00038F4863009F483C0873009F031C29CC0D5 |
:101AF000893009F4D3C08A3009F02AC2B1C180917B |
:101B00007800909179009093E7048093E60481E057 |
:101B10008093E9048091E0049091E1040196909310 |
:101B2000E1048093E00418C28091780090917900DC |
:101B30009093E5048093E40492C0809178009091A2 |
:101B400079009093E3048093E20484E08093E904B5 |
:101B500003C240910803509109038091780090914D |
:101B600079009A01220F331F240F351F63E070E0C4 |
:101B70000E94A93C260F371F369527953695279545 |
:101B8000309309032093080386E0E0CF809102059B |
:101B9000909103052091780030917900821B930B7E |
:101BA0009093FC078093FB078091FB079091FC07C3 |
:101BB0009093D3048093D20487E0C8CF80917800BB |
:101BC000909179002091000530910105821B930BC3 |
:101BD0009093070880930608809106089091070863 |
:101BE0009093D5048093D4041092E904B5C18091F8 |
:101BF00000012091E6043091E7048A3049F4809195 |
:101C0000780090917900820F931F9695879506C072 |
:101C10008091780090917900820F931F9093D10466 |
:101C20008093D00481E092CF809100012091E40460 |
:101C30003091E5048A3049F48091780090917900E0 |
:101C4000820F931F9695879506C08091780090919A |
:101C50007900820F931F9093CF048093CE0482E08B |
:101C600075CF809100012091E2043091E3048A3025 |
:101C700049F48091780090917900820F931F969596 |
:101C8000879506C08091780090917900820F931F0C |
:101C90009093CD048093CC0485E058CF6091780078 |
:101CA00070917900E0900405F0900505009106051B |
:101CB00010910705882777FD8095982F0E94633B38 |
:101CC000A80197010E94633A0E94303B7093D704A9 |
:101CD0006093D604E091D604F091D7048091FB077D |
:101CE0009091FC07C0910608D091070897FF03C0A8 |
:101CF000909581959F4F64E070E00E94BD3C9B01F0 |
:101D0000CE01D7FF03C0909581959F4F64E070E0AE |
:101D10000E94BD3C260F371FE20FF31FF093D7043C |
:101D2000E093D6048091D6049091D704029704F1F1 |
:101D30006091040570910505809106059091070555 |
:101D400020E030E048E454E40E949E3B88230CF0FD |
:101D50003CC0609104057091050580910605909145 |
:101D600007052AE037ED43EA5CE30E94643A25C0A8 |
:101D70008091D6049091D7048F5F9F4F34F5609186 |
:101D8000040570910505809106059091070520E0F6 |
:101D900030E046E154E40E94A23B1816B4F460918E |
:101DA00004057091050580910605909107052AE0CC |
:101DB00037ED43EA5CE30E94633A60930405709355 |
:101DC0000505809306059093070581E08093DD0467 |
:101DD00080917800909179009093FE078093FD07A1 |
:101DE00020914205309143054091440550914505AD |
:101DF0008091D6049091D704AA2797FDA095BA2F79 |
:101E0000820F931FA41FB51F809342059093430533 |
:101E1000A0934405B0934505E0904205F09043053A |
:101E2000009144051091450560914205709143056C |
:101E3000809144059091450520E034E040E050E079 |
:101E40000E94F23CE21AF30A040B150BE0924205E1 |
:101E5000F0924305009344051093450583E076CE48 |
:101E600080910B0890910C082091780030917900B6 |
:101E7000820F931F90930C0880930B0880910308A6 |
:101E80008F5F8093030880910308853008F460C059 |
:101E9000809178009091790090930F0380930E03C6 |
:101EA000109203088091FF079091000820910B0881 |
:101EB00030910C08821B930B2091600530916105D5 |
:101EC000821B930B9093DF048093DE0420910B0818 |
:101ED00030910C08E0900A03F0900B0300910C0382 |
:101EE00010910D03C801B701660F771F881F991F56 |
:101EF0006E0D7F1D801F911F442737FD4095542F85 |
:101F0000620F731F841F951F24E030E040E050E013 |
:101F10000E94F23C20930A0330930B0340930C037E |
:101F200050930D032091FF073091000880910A0320 |
:101F300090910B03A0910C03B0910D03281B390B5A |
:101F4000309361052093600510920C0810920B08E5 |
:101F50001092E9041092E8048091E90480937C00D7 |
:101F60008091E804882319F08FEE80937A00FF9126 |
:101F7000EF91DF91CF91BF91AF919F918F917F9121 |
:101F80006F915F914F913F912F911F910F91FF9012 |
:101F9000EF900F900FBE0F901F9018950F931F9307 |
:101FA000CF93DF93A3E0B0E00E94443D802DC82F83 |
:101FB000D0E0C531D10508F02A97C7BD84E690E08E |
:101FC0000E94FA0C80910E0390910F03825593406A |
:101FD000C8F4C0E0D0E016C0C7BD82E390E00E9424 |
:101FE000FA0C1F930F931F920E94C80880910E0352 |
:101FF00090910F030F900F900F908458934038F0FA |
:10200000219602C000E711E0CA3FD10528F3A3E002 |
:10201000B0E00C2E0E944C3DC09308088CE291E089 |
:102020000E94FA0CDF91CF911F910F910895EAE180 |
:10203000F3E080E2819383E0EA36F807D1F7089570 |
:102040001F938091ED04282F30E0C90181709070BA |
:10205000682F8823A9F08091EE04882311F0815025 |
:1020600002C080916A038093EE04EAE1F3E080E22B |
:10207000819383E0EA36F807D1F78FEF8093AE04BF |
:10208000A9014270507021FF10C08091EE048F5F53 |
:102090008093EE04EAE1F3E080E2819393E0EA3694 |
:1020A000F907D1F78FEF8093AE04662321F0452B1B |
:1020B00011F01092EE048091EE04282F30E08A3067 |
:1020C00040F481E18093EC043F932F938FE594E0FB |
:1020D00007C080E18093EC043F932F938AE594E05E |
:1020E0009F938F9381E08F930E94C8080F900F9069 |
:1020F0000F900F900F901091EE04153009F403C269 |
:10210000163090F4123009F4D0C0133030F411239B |
:1021100009F1113009F02DC465C0133009F41BC159 |
:10212000143009F026C46BC1183009F418C31930F3 |
:1021300038F4163009F4A1C2173009F01AC4EBC202 |
:102140001A3009F486C31A3008F447C31B3009F06B |
:1021500010C4BDC31092EC048AE494E09F938F9363 |
:1021600011E01F930E94C80884E18093EC04209141 |
:102170000001822F6AE00E949D3C492F50E0822F8F |
:102180000E949D3C90E024E630E03F932F9324E4AE |
:1021900030E03F932F931F921F925F934F939F9333 |
:1021A0008F9385E394E09F938F931F930E94C808B9 |
:1021B00088E28093EC040E94510290E09F938F93F9 |
:1021C00088E294E09F938F931F930E94C8088CE34A |
:1021D0008093EC0488E194E09F938F931F930E9477 |
:1021E000C808C3C38091490880FF47C01092EC041F |
:1021F00080916005909161059F938F9389E094E0B1 |
:102200009F938F931F930E94C80884E18093EC04EE |
:1022100080916205909163059F938F938AEF93E07D |
:102220009F938F931F930E94C80888E28093EC04C9 |
:1022300080910E0390910F039F938F938BEE93E009 |
:102240009F938F931F930E94C8088CE38093EC04A4 |
:102250008091080890E09F938F938CED93E09F937B |
:102260008F931F930E94C8088DB79EB744960FB6F0 |
:10227000F8949EBF0FBE8DBF81C384E18093EC04B0 |
:1022800085ED93E09F938F931F930E94C80888E287 |
:102290008093EC0487EC93E09F938F931F930E94AD |
:1022A000C8088DB79EB70696E2CF1092EC048DEB6E |
:1022B00093E09F938F9311E01F930E94C80884E1DD |
:1022C0008093EC0460910A0570910B0580910C05D8 |
:1022D00090910D0520E034E040E050E00E94F23C97 |
:1022E0005F934F933F932F938EEA93E09F938F9347 |
:1022F0001F930E94C80888E28093EC046091120545 |
:1023000070911305809114059091150520E034E03B |
:1023100040E050E00E94F23C5F934F933F932F9335 |
:102320008FE993E09F938F931F930E94C8088CE3DB |
:102330008093EC0480914605909147059F938F937D |
:1023400080E993E09F938F931F930E94C8088DB7F5 |
:102350009EB746968CCF1092EC048091190890910C |
:102360001A0820911708309118089F938F933F9374 |
:102370002F9380E893E09F938F9311E01F930E9427 |
:10238000C80884E18093EC0480911D0890911E0898 |
:1023900020911B0830911C089F938F933F932F939C |
:1023A00080E793E09F938F931F930E94C80888E271 |
:1023B0008093EC04809121089091220820911F08BD |
:1023C000309120089F938F933F932F9380E693E063 |
:1023D0009F938F931F930E94C8088CE38093EC0413 |
:1023E0008091250890912608209123083091240897 |
:1023F0009F938F933F932F9380E593E07BC0109240 |
:10240000EC04E0914208F0E0EE0FFF1FEB5EF74FA7 |
:1024100020813181E0914108F0E0EE0FFF1FEB5E7B |
:10242000F74F808191813F932F939F938F9380E407 |
:1024300093E09F938F9311E01F930E94C80884E15B |
:102440008093EC04E0914408F0E0EE0FFF1FEB5E98 |
:10245000F74F20813181E0914308F0E0EE0FFF1F3C |
:10246000EB5EF74F808191813F932F939F938F93E2 |
:1024700080E393E09F938F931F930E94C80888E2A4 |
:102480008093EC04E0914608F0E0EE0FFF1FEB5E56 |
:10249000F74F20813181E0914508F0E0EE0FFF1FFA |
:1024A000EB5EF74F808191813F932F939F938F93A2 |
:1024B00080E293E09F938F931F930E94C8088CE360 |
:1024C0008093EC04E0914808F0E0EE0FFF1FEB5E14 |
:1024D000F74F20813181E0914708F0E0EE0FFF1FB8 |
:1024E000EB5EF74F808191813F932F939F938F9362 |
:1024F00080E193E09F938F931F930E94C8088DB74C |
:102500009EB74C96B4CE1092EC0482E093E09F9379 |
:102510008F9311E01F930E94C8080F900F900F90A7 |
:10252000809100018A3009F04AC084E18093EC0474 |
:102530004091F6045091F7048091CC049091CD0421 |
:102540002091F6043091F704821B930B5F934F9315 |
:102550009F938F9383EF92E09F938F931F930E949B |
:10256000C80888E28093EC044091F8045091F90483 |
:102570008091CE049091CF042091F8043091F90419 |
:10258000821B930B5F934F939F938F9384EE92E004 |
:102590009F938F931F930E94C8088CE38093EC0451 |
:1025A0008091FA049091FB042091B0083091B10819 |
:1025B0009F938F933F932F9385ED92E055C084E1D5 |
:1025C0008093EC048091F6049091F70462E070E04F |
:1025D0000E94BD3C8091CC049091CD042091F604E2 |
:1025E0003091F704821B930B7F936F939F938F938C |
:1025F00086EC92E09F938F931F930E94C80888E215 |
:102600008093EC048091F8049091F90462E070E00A |
:102610000E94BD3C8091CE049091CF042091F8049B |
:102620003091F904821B930B7F936F939F938F9349 |
:1026300087EB92E09F938F931F930E94C8088CE3CF |
:102640008093EC048091FA049091FB0462E070E0C6 |
:102650000E94BD3C8091B0089091B1087F936F9328 |
:102660009F938F9388EA92E09F938F931F930E948A |
:10267000C8088DB79EB74596FACD1092EC048BE949 |
:1026800092E09F938F9311E01F930E94C80884E10A |
:102690008093EC0480910005909101052091D40471 |
:1026A0003091D5049F938F933F932F938CE892E0C2 |
:1026B0009F938F931F930E94C80888E28093EC0435 |
:1026C00080910205909103052091D2043091D304AA |
:1026D0009F938F933F932F938DE792E09F938F93D8 |
:1026E0001F930E94C8088CE38093EC04609104055A |
:1026F0007091050580910605909107050E94303B79 |
:1027000020919808309199087F936F933F932F936E |
:102710008EE692E025C184E18093EC048091080369 |
:10272000909109039F938F938FE592E09F938F93EE |
:1027300011E01F930E94C80888E28093EC04809106 |
:10274000560590E09F938F9380E592E09F938F933F |
:102750001F930E94C8088DB79EB70A9688CD109225 |
:10276000EC0481E492E09F938F9311E01F930E9409 |
:10277000C80884E18093EC0480914A0590914B0550 |
:102780009F938F9382E392E09F938F931F930E9476 |
:10279000C80888E28093EC04809146059091470533 |
:1027A0009F938F9383E292E09F938F931F930E9456 |
:1027B000C8088CE38093EC0480914805909149050A |
:1027C0009F938F9384E192E09F938F931F930E9436 |
:1027D000C8088DB79EB742964ACD1092EC048091FE |
:1027E0004E0590914F059F938F9388E092E09F93C1 |
:1027F0008F9311E01F930E94C80884E18093EC043A |
:1028000080915005909151059F938F938CEF91E0AB |
:102810009F938F931F930E94C80888E28093EC04D3 |
:1028200080915205909153059F938F9380EF91E093 |
:102830009F938F931F930E94C8088CE38093EC04AE |
:1028400080915405909155059F938F9384EE91E06C |
:1028500006CD1092EC048CED91E09F938F9311E0E4 |
:102860001F930E94C80884E18093EC0480919C032C |
:1028700090E09F938F938EEC91E09F938F931F93A3 |
:102880000E94C80888E28093EC048091C70490916C |
:10289000C8049F938F9380EC91E09F938F931F9335 |
:1028A0000E94C8088CE38093EC042091650830E016 |
:1028B0008091640890E03F932F939F938F9382EBD6 |
:1028C00091E09F938F931F930E94C808CDCC1092E4 |
:1028D000EC0482EA91E09F938F9311E01F930E9492 |
:1028E000C80884E18093EC0420911A07332727FD60 |
:1028F000309580911907992787FD90953F932F93E5 |
:102900009F938F9382E991E09F938F931F930E94EF |
:10291000C80888E28093EC0420911B07332727FD29 |
:10292000309580911C0790E03F932F939F938F9356 |
:1029300082E891E09F938F931F930E94C8088CE3D5 |
:102940008093EC042091200730E080911D079927A7 |
:1029500087FD90953F932F939F938F9382E791E00C |
:102960009F938F931F930E94C8088DB79EB7489678 |
:102970007ECC115010936A031092EE041092ED0475 |
:102980001F9108951092B9008AE28093B8000895CB |
:1029900085EA8093BC0080E090E0089584E980930C |
:1029A000BC0008951092B9008093BB0085E8809325 |
:1029B000BC0080E090E008951F920F920FB60F9236 |
:1029C00011248F939F93EF93FF938091EF048F5F78 |
:1029D0008093EF0481508330C1F1843028F481303A |
:1029E00091F0823020F50AC08530B9F18530E8F1E8 |
:1029F0008630D9F1873009F062C046C08091F0047A |
:102A0000880F8E5A0CC08091F0048F5F8093F00481 |
:102A100081502DC0833009F052C08091AA081092D5 |
:102A2000B9008093BB0085E88093BC0048C084E96E |
:102A30008093BC008091F004843018F41092EF046D |
:102A400002C01092F00485EAEFCF8091F104880F64 |
:102A50008D5AE5CF8230A9F0DDCF8091BB00E091A7 |
:102A6000F104F0E0E35FF74F80838091F10481305F |
:102A700029F0813078F780918B08D1CF8091900830 |
:102A8000CECF8091A808CBCF8091F1049091BB006C |
:102A9000E82FF0E0E35FF74F94838F5F8093F104BA |
:102AA000843010F01092F10484E98093BC008AE035 |
:102AB00090E090938603809385031092EF048091B9 |
:102AC000BC0080688093BC00FF91EF919F918F9133 |
:102AD0000F900FBE0F901F9018954CEB50E084E9BB |
:102AE000DA018C931092EF042BEB30E0F901808136 |
:102AF0001092F00480E88C931092BD001092BA00FE |
:102B00001082E9EBF0E01082A8EBB0E01C9210829A |
:102B10008AE28C9385EADA018C931082F9011082A3 |
:102B200085E88C93089583EC80938100EFE6F0E0D4 |
:102B30008081806280831092FB041092FA041092CC |
:102B4000F9041092F8041092F7041092F604089514 |
:102B50001F920F920FB60F9211240F931F932F9372 |
:102B60003F934F935F936F937F938F939F93AF9315 |
:102B7000BF93CF93DF93EF93FF9320918600309123 |
:102B800087008091F4049091F504281B390B809103 |
:102B90008600909187009093F5048093F404C90116 |
:102BA0008D5494400091F2041091F304835F9A4194 |
:102BB00060F40430110514F010926B0381E090E092 |
:102BC0009093F3048093F2048AC00A3011050CF04C |
:102BD00086C0C9018B5F9040845B914008F068C05B |
:102BE000E901C25DD140F801EE0FFF1FEB5EF74F28 |
:102BF000808191819E01281B390BC90137FF03C0D9 |
:102C0000909581959F4F06974CF480915605883C8E |
:102C100028F480915605865F80935605F801EE0FE3 |
:102C2000FF1FEB5EF74F20813181C901880F991F8B |
:102C3000820F931F8C0F9D1F64E070E00E94BD3CCB |
:102C40009B01CE010196861797071CF42150304056 |
:102C500006C021976C177D0714F42F5F3F4F8091BA |
:102C60005605E801CC0FDD1F833CB8F0FE01EB5E9A |
:102C7000F74F80819181A901481B590BCA0163E07C |
:102C800070E00E94BD3CCB01880F991F860F971FF3 |
:102C9000C55DD74F9983888304C0C55DD74F19821E |
:102CA0001882F801EE0FFF1FEB5EF74F3183208390 |
:102CB000F8013196F093F304E093F204E530F10566 |
:102CC00011F45D9A06C05D98E630F10511F45C9A46 |
:102CD00005C05C98379711F45B9A01C05B98FF912F |
:102CE000EF91DF91CF91BF91AF919F918F917F91A4 |
:102CF0006F915F914F913F912F911F910F910F9085 |
:102D00000FBE0F901F9018952F923F924F925F9297 |
:102D10006F927F928F929F92AF92BF92CF92DF92EB |
:102D2000EF92FF920F931F93CF93DF93CDB7DEB750 |
:102D300022970FB6F894DEBF0FBECDBF8091FA0484 |
:102D40009091FB042091D0043091D104821B930B0D |
:102D50009093B1088093B0088091CE049091CF04F5 |
:102D60002091F8043091F904821B930B90938A0808 |
:102D7000809389088091CC049091CD042091F60431 |
:102D80003091F704821B930B9093920880939108E3 |
:102D90008091890890918A089093F2078093F107B7 |
:102DA000E090AD08F090AE086091D4047091D50425 |
:102DB000882777FD8095982F2CE030E040E050E0A8 |
:102DC0000E947E3C0027F7FC0095102FE60EF71EB0 |
:102DD000081F191FC801B70122E030E040E050E0B1 |
:102DE0000E94F23C3093AE082093AD08E090B70803 |
:102DF000F090B8086091D2047091D304882777FDD1 |
:102E00008095982F2CE030E040E050E00E947E3C1E |
:102E10000027F7FC0095102FE60EF71E081F191F5C |
:102E2000C801B70122E030E040E050E00E94F23CEF |
:102E30003093B8082093B7082091980830919908EA |
:102E40006091D6047091D704882777FD8095982FDC |
:102E5000442737FD4095542F620F731F841F951F21 |
:102E600022E030E040E050E00E94F23C30939908CC |
:102E70002093980840911A0550911B0560911C05FC |
:102E800070911D052091D4043091D504C901880F9B |
:102E9000991F820F931F880F991F880F991FAA27C8 |
:102EA00097FDA095BA2F840F951FA61FB71F80937B |
:102EB0001A0590931B05A0931C05B0931D05409126 |
:102EC0001E0550911F0560912005709121052091EC |
:102ED000D2043091D304C901880F991F820F931F28 |
:102EE000880F991F880F991FAA2797FDA095BA2FC1 |
:102EF000840F951FA61FB71F80931E0590931F0573 |
:102F0000A0932005B09321056091220570912305BF |
:102F10008091240590912505E090FD07F090FE0733 |
:102F2000A0900405B0900505C0900605D090070557 |
:102F30000E94633B3B014C010027F7FC0095102FDA |
:102F4000C801B7010E94633BA60195010E94633A44 |
:102F50009B01AC01C401B3010E94643A0E94303B62 |
:102F60006093220570932305809324059093250593 |
:102F700020913A0530913B0540913C0550913D052B |
:102F80008091B0089091B108AA2797FDA095BA2F1B |
:102F9000820F931FA41FB51F80933A0590933B05A2 |
:102FA000A0933C05B0933D0520913E0530913F052F |
:102FB00040914005509141058091B0089091B10831 |
:102FC000AA2797FDA095BA2F820F931FA41FB51FA4 |
:102FD00080933E0590933F05A0934005B093410533 |
:102FE000209168052A83222309F069C08091690530 |
:102FF000882309F064C08091490886FF60C0609111 |
:103000002A0570912B0580912C0590912D05E0905B |
:10301000B008F090B108A0907605BB24CC24DD2444 |
:103020000027F7FC0095102F20E030E140E050E051 |
:103030000E94F23CC801B7010E947E3CA6019501A6 |
:103040000E947E3C20E038E040E050E00E94F23CEC |
:103050002093C5053093C6054093C7055093C80516 |
:10306000609132057091330580913405909135055A |
:10307000E090B008F090B10820E030E140E050E08E |
:103080000E94F23CCA01B901A60195010E947E3C52 |
:103090000027F7FC0095102FA80197010E947E3CA5 |
:1030A00020E038E040E050E00E94F23C2093C1056F |
:1030B0003093C2054093C3055093C40510C01092CD |
:1030C000C1051092C2051092C3051092C40510925A |
:1030D000C5051092C6051092C7051092C8058091CB |
:1030E000890890918A082090C5053090C6054090C7 |
:1030F000C7055090C805820D931D90938A08809350 |
:1031000089080091890810918A08A090C105B090A3 |
:10311000C205C090C305D090C40580917705682E84 |
:10312000772488249924C401B301A60195010E9443 |
:103130007E3C20E032E040E050E00E94F23C020F92 |
:10314000131F10938A080093890820913605309147 |
:103150003705409138055091390580918908909143 |
:103160008A08AA2797FDA095BA2F820F931FA41F44 |
:10317000B51F8093360590933705A0933805B0931B |
:1031800039054091320550913305609134057091B5 |
:1031900035058091890890918A08209164053091C5 |
:1031A0006505821B930BAA2797FDA095BA2F840F64 |
:1031B000951FA61FB71F8093320590933305A093E8 |
:1031C0003405B09335058091320590913305A09177 |
:1031D0003405B0913505E0908B03F0908C0300919D |
:1031E0008D0310918E03E816F9060A071B0704F5F4 |
:1031F00080E197E2A0E0B0E08E199F09A00BB10B2F |
:103200008093320590933305A0933405B093350530 |
:103210008091320590913305A0913405B091350528 |
:103220008093360590933705A0933805B093390500 |
:103230002091320530913305409134055091350588 |
:1032400088279927DC018E199F09A00BB10B28173D |
:1032500039074A075B0704F580EF98EDAFEFBFEF42 |
:10326000E80EF91E0A1F1B1FE0923205F09233058B |
:103270000093340510933505809132059091330504 |
:10328000A0913405B09135058093360590933705AC |
:10329000A0933805B09339058091CE049091CF0466 |
:1032A0000F9734F488E19CEF90938A088093890803 |
:1032B0008091CE049091CF04079734F480E398EF87 |
:1032C00090938A08809389089091000199839A309D |
:1032D000A9F48091CE049091CF04835F934034F0A1 |
:1032E00088EE93E090938A08809389088091CE04B9 |
:1032F0009091CF048A5F9340DCF014C08091CE049B |
:103300009091CF04855E974034F088EE93E09093DF |
:103310008A08809389088091CE049091CF04835FBE |
:10332000974034F080ED97E090938A088093890865 |
:1033300080919108909192088A199B099093920824 |
:10334000809391080091910810919208C401B301F3 |
:10335000A20191010E947E3C20E032E040E050E07A |
:103360000E94F23C021B130B1093920800939108E9 |
:1033700020912E0530912F05409130055091310557 |
:103380008091910890919208AA2797FDA095BA2F55 |
:10339000820F931FA41FB51F80932E0590932F05B6 |
:1033A000A0933005B093310540912A0550912B052B |
:1033B00060912C0570912D05809191089091920853 |
:1033C0002091660530916705821B930BAA2797FD14 |
:1033D000A095BA2F840F951FA61FB71F80932A05AB |
:1033E00090932B05A0932C05B0932D0580912A0571 |
:1033F00090912B05A0912C05B0912D05E0908703AD |
:10340000F09088030091890310918A03E816F90669 |
:103410000A071B0704F580E197E2A0E0B0E08E19EF |
:103420009F09A00BB10B80932A0590932B05A093C5 |
:103430002C05B0932D0580912A0590912B05A09124 |
:103440002C05B0912D0580932E0590932F05A09308 |
:103450003005B093310520912A0530912B0540911C |
:103460002C0550912D0588279927DC018E199F097D |
:10347000A00BB10B281739074A075B0704F580EF4B |
:1034800098EDAFEFBFEFE80EF91E0A1F1B1FE09289 |
:103490002A05F0922B0500932C0510932D058091A1 |
:1034A0002A0590912B05A0912C05B0912D058093B4 |
:1034B0002E0590932F05A0933005B0933105809190 |
:1034C000CC049091CD040F9734F488E19CEF909355 |
:1034D0009208809391088091CC049091CD04079735 |
:1034E00034F480E398EF9093920880939108998147 |
:1034F0009A30A9F48091CC049091CD04835F9340DD |
:1035000034F088EE93E09093920880939108809134 |
:10351000CC049091CD048A5F9340DCF014C080917C |
:10352000CC049091CD04855E974034F088EE93E012 |
:1035300090939208809391088091CC049091CD044F |
:10354000835F974034F080ED97E0909392088093EA |
:1035500091088FEE80937A0080913A0590913B0517 |
:10356000A0913C05B0913D058093260590932705D9 |
:10357000A0932805B093290580912A0590912B05E9 |
:10358000A0912C05B0912D0580930A0590930B0511 |
:10359000A0930C05B0930D058091320590913305F1 |
:1035A000A0913405B09135058093120590931305D1 |
:1035B000A0931405B093150580912E0590912F05C9 |
:1035C000A0913005B091310580930E0590930F05C1 |
:1035D000A0931005B09311058091360590913705A1 |
:1035E000A0913805B0913905809316059093170581 |
:1035F000A0931805B09319058091490887FF63C00F |
:103600002A81222309F05FC080916905882309F08F |
:103610005AC08091910890919208893C91055CF084 |
:103620002091910830919208809191089091920890 |
:103630002052334011C08091910890919208885394 |
:103640009F4FA4F4209191083091920880919108A5 |
:1036500090919208205E3C4F880F991F880F991F08 |
:10366000280F391F30939208209391088091890880 |
:1036700090918A08893C91055CF0209189083091ED |
:103680008A088091890890918A082052334011C09D |
:103690008091890890918A0888539F4FA4F42091C3 |
:1036A000890830918A088091890890918A08205E63 |
:1036B0003C4F880F991F880F991F280F391F30938F |
:1036C0008A082093890820914E0530914F058091FA |
:1036D0004508E82FF0E0EE0FFF1FEB5EF74F80810B |
:1036E000918182599F4F281739071CF42F5F3F4F54 |
:1036F0000CC08081918182599F4F821793074CF4AF |
:103700002115310531F02150304030934F05209381 |
:103710004E05209150053091510580914608E82FC3 |
:10372000F0E0EE0FFF1FEB5EF74F80819181825931 |
:103730009F4F281739071CF42F5F3F4F0CC0808123 |
:10374000918182599F4F821793074CF421153105BF |
:1037500031F0215030403093510520935005209195 |
:1037600052053091530580914708E82FF0E0EE0FA5 |
:10377000FF1FEB5EF74F8081918182599F4F281781 |
:1037800039071CF42F5F3F4F0CC080819181825913 |
:103790009F4F821793074CF42115310531F02150CA |
:1037A00030403093530520935205209154053091B9 |
:1037B000550580914808E82FF0E0EE0FFF1FEB5E03 |
:1037C000F74F8081918182599F4F281739071CF448 |
:1037D0002F5F3F4F0CC08081918182599F4F82178C |
:1037E00093074CF42115310531F0215030403093CE |
:1037F00055052093540580914E0590914F0597FFF4 |
:1038000005C010924F0510924E050AC08F3F9105DA |
:1038100039F034F08FEF90E090934F0580934E0590 |
:10382000809150059091510597FF05C01092510568 |
:10383000109250050AC08F3F910539F034F08FEF98 |
:1038400090E090935105809350058091520590919E |
:10385000530597FF05C010925305109252050AC0F8 |
:103860008F3F910539F034F08FEF90E0909353053E |
:1038700080935205809154059091550597FF05C09E |
:1038800010925505109254050AC08F3F910539F0EA |
:1038900034F08FEF90E09093550580935405229675 |
:1038A0000FB6F894DEBF0FBECDBFDF91CF911F9151 |
:1038B0000F91FF90EF90DF90CF90BF90AF909F90CF |
:1038C0008F907F906F905F904F903F902F900895D2 |
:1038D00010927A008091CC049091CD04909392083C |
:1038E000809391088091CE049091CF0490938A08A0 |
:1038F000809389088091D0049091D1049093B1086D |
:103900008093B0086091D4047091D504882777FD26 |
:103910008095982F2CE030E040E050E00E947E3C03 |
:103920007093AE086093AD086091D2047091D30497 |
:10393000882777FD8095982F0E947E3C7093B80869 |
:103940006093B7088091D6049091D704909399081A |
:10395000809398088FEE80937A0020914E053091E5 |
:103960004F0580914508E82FF0E0EE0FFF1FEB5E5A |
:10397000F74F8081918182599F4F281739071CF496 |
:103980002F5F3F4F0CC08081918182599F4F8217DA |
:1039900093074CF42115310531F02150304030931C |
:1039A0004F0520934E05209150053091510580918F |
:1039B0004608E82FF0E0EE0FFF1FEB5EF74F808127 |
:1039C000918182599F4F281739071CF42F5F3F4F71 |
:1039D0000CC08081918182599F4F821793074CF4CC |
:1039E0002115310531F0215030403093510520939D |
:1039F0005005209152053091530580914708E82FDA |
:103A0000F0E0EE0FFF1FEB5EF74F8081918182594E |
:103A10009F4F281739071CF42F5F3F4F0CC0808140 |
:103A2000918182599F4F821793074CF421153105DC |
:103A300031F02150304030935305209352052091AE |
:103A400054053091550580914808E82FF0E0EE0FBD |
:103A5000FF1FEB5EF74F8081918182599F4F28179E |
:103A600039071CF42F5F3F4F0CC080819181825930 |
:103A70009F4F821793074CF42115310531F02150E7 |
:103A80003040309355052093540580914E05909118 |
:103A90004F0597FF05C010924F0510924E050AC0C2 |
:103AA0008F3F910539F034F08FEF90E090934F0500 |
:103AB00080934E05809150059091510597FF05C068 |
:103AC00010925105109250050AC08F3F910539F0B0 |
:103AD00034F08FEF90E090935105809350058091E2 |
:103AE00052059091530597FF05C01092530510920F |
:103AF00052050AC08F3F910539F034F08FEF90E006 |
:103B000090935305809352058091540590915505EB |
:103B100097FF05C010925505109254050AC08F3FBB |
:103B2000910539F034F08FEF90E090935505809334 |
:103B3000540560916C0870E080E090E024EC39E07E |
:103B400040E050E00E947E3C6093870370938803BE |
:103B50008093890390938A0360916D0870E080E000 |
:103B600090E00E947E3C60938B0370938C03809363 |
:103B70008D0390938E03089580914C088B3F98F0AD |
:103B80008B3F19F480914E050EC08C3F19F4809143 |
:103B9000500509C08D3F19F48091520504C08E3F35 |
:103BA00021F4809154058093940380919403882399 |
:103BB00019F41092940304C08F3F11F4809394037E |
:103BC00080914B088B3F98F08B3F19F480914E0504 |
:103BD0000EC08C3F19F48091500509C08D3F19F437 |
:103BE0008091520504C08E3F21F48091540580934A |
:103BF000930380919303882319F41092930305C0D3 |
:103C0000843618F084E68093930380914D088B3FAF |
:103C100098F08B3F19F480914E050EC08C3F19F43B |
:103C20008091500509C08D3F19F48091520504C060 |
:103C30008E3F21F4809154058093950380919503E4 |
:103C4000882319F41092950305C0843618F084E691 |
:103C50008093950380914F088B3F98F08B3F19F428 |
:103C600080914E050EC08C3F19F48091500509C01B |
:103C70008D3F19F48091520504C08E3F21F480914C |
:103C800054058093960380919603882319F410922B |
:103C9000960304C08F3F11F48093960380915608D9 |
:103CA0008B3F98F08B3F19F480914E050EC08C3FEE |
:103CB00019F48091500509C08D3F19F48091520587 |
:103CC00004C08E3F21F48091540580939703809126 |
:103CD0009703882319F41092970304C08F3F11F4BF |
:103CE00080939703809157088B3F98F08B3F19F48E |
:103CF00080914E050EC08C3F19F48091500509C08B |
:103D00008D3F19F48091520504C08E3F21F48091BB |
:103D1000540580939803809198038B3010F48AE0C7 |
:103D200002C08F3F11F480939803809158088B3F15 |
:103D300098F08B3F19F480914E050EC08C3F19F41A |
:103D40008091500509C08D3F19F48091520504C03F |
:103D50008E3F21F4809154058093990380919903BB |
:103D6000882319F41092990304C08F3F11F48093B3 |
:103D7000990380915D088B3F98F08B3F19F48091F7 |
:103D80004E050EC08C3F19F48091500509C08D3F3F |
:103D900019F48091520504C08E3F21F4809154059E |
:103DA00080939B0380919B03882319F410929B03BB |
:103DB00004C08F3F11F480939B0380915E088B3F7A |
:103DC00098F08B3F19F480914E050EC08C3F19F48A |
:103DD0008091500509C08D3F19F48091520504C0AF |
:103DE0008E3F21F48091540580936E0580916E057D |
:103DF000882319F410926E0504C08F3F11F480934C |
:103E00006E0580915F088B3F98F08B3F19F480918D |
:103E10004E050EC08C3F19F48091500509C08D3FAE |
:103E200019F48091520504C08E3F21F4809154050D |
:103E300080936F0580916F05882319F410926F05A8 |
:103E400004C08F3F11F480936F05809160088B3F11 |
:103E500098F08B3F19F480914E050EC08C3F19F4F9 |
:103E60008091500509C08D3F19F48091520504C01E |
:103E70008E3F21F4809154058093700580917005E8 |
:103E8000882319F41092700504C08F3F11F48093B9 |
:103E90007005809161088B3F98F08B3F19F48091F9 |
:103EA0004E050EC08C3F19F48091500509C08D3F1E |
:103EB00019F48091520504C08E3F21F4809154057D |
:103EC0008093710580917105882319F41092710512 |
:103ED00004C08F3F11F480937105809171088B3F6E |
:103EE00098F08B3F19F480914E050EC08C3F19F469 |
:103EF0008091500509C08D3F19F48091520504C08E |
:103F00008E3F21F480915405809372058091720553 |
:103F1000882319F41092720504C08F3F11F4809326 |
:103F20007205809172088B3F98F08B3F19F4809155 |
:103F30004E050EC08C3F19F48091500509C08D3F8D |
:103F400019F48091520504C08E3F21F480915405EC |
:103F50008093730580917305882319F4109273057B |
:103F600004C08F3F11F480937305809173088B3FD9 |
:103F700098F08B3F19F480914E050EC08C3F19F4D8 |
:103F80008091500509C08D3F19F48091520504C0FD |
:103F90008E3F21F4809154058093740580917405BF |
:103FA000882319F41092740504C08F3F11F4809394 |
:103FB0007405809174088B3F98F08B3F19F48091C1 |
:103FC0004E050EC08C3F19F48091500509C08D3FFD |
:103FD00019F48091520504C08E3F21F4809154055C |
:103FE0008093750580917505882319F410927505E5 |
:103FF00004C08F3F11F480937505809162088B3F58 |
:1040000098F08B3F19F480914E050EC08C3F19F447 |
:104010008091500509C08D3F19F48091520504C06C |
:104020008E3F21F48091540580939C0380919C03E2 |
:10403000882319F410929C0304C08F3F11F48093DD |
:104040009C03809167088B3F98F08B3F19F4809117 |
:104050004E050EC08C3F19F48091500509C08D3F6C |
:1040600019F48091520504C08E3F21F480915405CB |
:1040700080939D0380919D03882319F410929D03E2 |
:1040800004C08F3F11F480939D0380916A088B3F99 |
:1040900098F08B3F19F480914E050EC08C3F19F4B7 |
:1040A0008091500509C08D3F19F48091520504C0DC |
:1040B0008E3F21F48091540580937605809176059A |
:1040C000882319F41092760504C08F3F11F4809371 |
:1040D000760580916B088B3F98F08B3F19F48091A7 |
:1040E0004E050EC08C3F19F48091500509C08D3FDC |
:1040F00019F48091520504C08E3F21F4809154053B |
:104100008093770580917705882319F410927705BD |
:1041100004C08F3F11F480937705809170088B3F26 |
:1041200098F08B3F19F480914E050EC08C3F19F426 |
:104130008091500509C08D3F19F48091520504C04B |
:104140008E3F21F48091540580939E0380919E03BD |
:10415000882319F410929E0304C08F3F11F48093BA |
:104160009E0360919B0370E080E090E00E94B6386F |
:1041700027E137EB41ED58E30E941B3C60938F032E |
:1041800070939003809391039093920380915408CD |
:104190008093AF088091530880939308089580918D |
:1041A0005F05882301F51092900810928B081092F9 |
:1041B000A8081092AA088091B004882311F0809377 |
:1041C0008B088091B104882311F08093900880912E |
:1041D000B204882311F08093AA088091B304882345 |
:1041E00011F08093A80880918B0890E09093D207FB |
:1041F0008093D1078091900890E09093D4078093AA |
:10420000D3078091AA0890E09093D6078093D507B2 |
:104210008091A80890E09093D8078093D7071092D8 |
:10422000EF041092F0040E94C81408951092010542 |
:1042300010920005109203051092020580E090E0B4 |
:10424000A0E0B0E08093040590930505A0930605D7 |
:10425000B09307051092F7041092F6041092F90437 |
:104260001092F8041092FB041092FA041092760552 |
:10427000109277050E94681C84E690E00E94FA0C78 |
:104280000E94681C8091490880FF10C080910E0335 |
:1042900090910F03875B934038F480910E039091C7 |
:1042A0000F038E5E924010F40E94CE0F8091CC04DA |
:1042B0009091CD049093F7048093F6048091CE04FE |
:1042C0009091CF049093F9048093F8048091D004E6 |
:1042D0009091D1049093FB048093FA048091F804A8 |
:1042E0009091F9049093FD048093FC048091F6046E |
:1042F0009091F7049093FF048093FE0444E050E013 |
:10430000DA010E94443D802D853038F18091B70854 |
:104310009091B80897FF03C0909581959F4F6CE0EE |
:1043200070E00E94BD3C709303056093020580918C |
:10433000AD089091AE0897FF03C0909581959F4F6F |
:104340006CE070E00E94BD3C709301056093000535 |
:104350006091FD077091FE0739C0DA010E94443D6B |
:10436000802D4F5F5F4FDA010E94443D202D90E089 |
:10437000982F8827820F911D909301058093000547 |
:104380004F5F5F4FDA010E94443D802D4F5F5F4FCA |
:10439000DA010E94443D202D90E0982F8827820F5B |
:1043A000911D90930305809302054F5F5F4FDA01E3 |
:1043B0000E94443D602D4F5F5F4FDA010E94443DF3 |
:1043C000202D70E0762F6627620F711D882777FDFC |
:1043D0008095982F0E94633B6093040570930505B8 |
:1043E000809306059093070510922A0510922B05DD |
:1043F00010922C0510922D0510922E0510922F056B |
:10440000109230051092310510923205109233054A |
:10441000109234051092350510923605109237052A |
:10442000109238051092390510923A0510923B050A |
:1044300010923C0510923D0510929208109291083E |
:1044400010928A08109289081092B1081092B00850 |
:1044500080910A0390910B03A0910C03B0910D037E |
:10446000909300088093FF071092DF041092DE04FF |
:104470001092420510924305109244051092450592 |
:104480008091460590914705909349058093480592 |
:104490000E948C3882E390E09093C6048093C50418 |
:1044A00060916C0870E080E090E024EC39E040E03E |
:1044B00050E00E947E3C6093870370938803809352 |
:1044C000890390938A0360916D0870E080E090E02A |
:1044D0000E947E3C60938B0370938C0380938D03CA |
:1044E00090938E031092A00310929F0308951F9340 |
:1044F000182F0EC080915F05882361F484E690E058 |
:104500009093C6048093C5048AEF90E00E94170D33 |
:10451000115080F71F91089581E08093410822E0B7 |
:104520002093420883E08093430854E0509344086A |
:1045300045E04093450836E03093460887E0809395 |
:10454000470888E08093480880EC809349089EE102 |
:1045500090934A088BEF80934C088AE080934D0833 |
:1045600090934B0890934F0820934E082093500847 |
:1045700050935108309352088FE0809353088AEF8C |
:10458000809354089093550880E88093560824E659 |
:10459000209357088CE8809358088EE5809359083B |
:1045A00083E280935A0884E180935B0810925C0850 |
:1045B00080E180935D0880E580935E0810925F083B |
:1045C000109260081092610810927108109272089F |
:1045D00010927308109274082093620888E2809306 |
:1045E00063081092760892E39093640886E98093BA |
:1045F000650840936608909367088AE58093680889 |
:10460000909369081092750880936A0840936B082C |
:1046100020936C0820936D0880E280936E0850937D |
:104620006F0890937008ABE7B8E0ECE6F3E08CE03D |
:1046300001900D928150E1F7089581E08093410847 |
:1046400082E08093420823E02093430854E0509393 |
:10465000440845E04093450836E03093460887E03B |
:104660008093470888E08093480880E48093490855 |
:104670009EE190934A088BEF80934C088AE08093E8 |
:104680004D0890934B0890934F0820934E08209329 |
:10469000500850935108309352088FE0809353088C |
:1046A0008AEF809354089093550880E880935608C9 |
:1046B00090E59093570888E7809358088EE580939B |
:1046C000590883E280935A0884E180935B08109232 |
:1046D0005C0830E230935D0890935E0810925F08AA |
:1046E000109260081092610810927108109272087E |
:1046F000109273081092740824E62093620888E2EE |
:10470000809363081092760892E39093640886E998 |
:104710008093650840936608909367088AE58093C4 |
:104720006808909369081092750880936A0840930E |
:104730006B0820936C0820936D0830936E0850939B |
:104740006F088BE480937008ABE7B8E0E6E7F3E02E |
:104750008CE001900D928150E1F7089581E0809303 |
:10476000410882E08093420883E08093430834E06C |
:104770003093440845E04093450886E0809346081E |
:1047800087E08093470828E02093480880E48093DE |
:1047900049089EE190934A088BEF80934C088AE089 |
:1047A00080934D0890934B0890934F0830934E0898 |
:1047B00030935008209351088CE0809352088FE08A |
:1047C000809353088AEF809354089093550890E89B |
:1047D0009093560880E58093570856E950935808FF |
:1047E0008EE58093590883E280935A0884E1809390 |
:1047F0005B0810925C0880E280935D0890935E08ED |
:1048000010925F081092600810926108109271086F |
:1048100010927208109273081092740824E6209384 |
:10482000620888E2809363081092760882E380939E |
:1048300064085093650840936608809367089AE57A |
:1048400090936808809369081092750890936A089D |
:1048500040936B0820936C0820936D0880E180934F |
:104860006E0830936F0820937008ABE7B8E0EEE76E |
:10487000F3E08CE001900D928150E1F708952F92C2 |
:104880003F924F925F926F927F928F929F92AF92E0 |
:10489000BF92CF92DF92EF92FF920F931F93CF932D |
:1048A000DF93CDB7DEB7A6970FB6F894DEBF0FBE85 |
:1048B000CDBF0E948416299A20915D0530915E0536 |
:1048C0003C872B8737FF02C01C861B8680915605CC |
:1048D000843608F06CC080910301882399F480919C |
:1048E0000403909105038F5F9F4F61F488E99AE379 |
:1048F0009093C6048093C50480E09CE090930503E8 |
:10490000809304038091A3059091A405009731F052 |
:1049100001979093A4058093A30504C010925F05AE |
:1049200010924C05809100018A3011F4289A01C040 |
:10493000289880919E0590919F05815D9740A0F1F8 |
:1049400080915A08682F70E07C876B8781E08093A4 |
:104950004C05A0914108B0E0AA0FBB1FFD01E55D29 |
:10496000F74F11821082E09142082E2F30E0220F83 |
:10497000331FC901855D974FFC0111821082AB5E28 |
:10498000B74F11961C921E922B5E374FD90111968C |
:104990001C921E92E0914408F0E0EE0FFF1FEB5EC8 |
:1049A000F74F118210824AC210925F0547C2809170 |
:1049B00056058D3808F442C210924C0580915B0870 |
:1049C00022E3829FC00111249093A4058093A30544 |
:1049D000EB85FC85B9976CF080919E0590919F05C1 |
:1049E000FFEF8F3F9F0729F0019690939F058093DB |
:1049F0009E0580919E0590919F05883C910528F029 |
:104A00002B853C852832310504F51092BD051092A6 |
:104A1000BE051092BF051092C0051092B905109204 |
:104A2000BA051092BB051092BC0510923A0510927F |
:104A30003B0510923C0510923D0510923E051092E8 |
:104A40003F051092400510924105E0914308F0E0C7 |
:104A5000EE0FFF1FEB5EF74F80819181813591054D |
:104A60000CF444C180915F05882309F03FC1809117 |
:104A70004408E82FF0E0EE0FFF1FEB5EF74F808158 |
:104A800091818C3491050CF4A8C08091A2058F5FB0 |
:104A90008093A205893C08F429C1299810925F05EA |
:104AA0001092A20510929F0510929E0580914108D8 |
:104AB000282F30E0F901EE0FFF1FEB5EF74F8081EA |
:104AC0009181873491059CF4E0914208F0E0EE0F6B |
:104AD000FF1FEB5EF74F0190F081E02DF7FF03C061 |
:104AE000F095E195FF4FE734F1050CF46CC080912F |
:104AF0004208682F70E0DB01AA0FBB1FAB5EB74F07 |
:104B00008D919C911197873491053CF0F901EE0F3E |
:104B1000FF1FEB5EF74F808191818D919C918734CF |
:104B2000910564F0F901EE0FFF1FEB5EF74F8081F6 |
:104B300091818734910514F042E001C041E0FB010E |
:104B4000EE0FFF1FEB5EF74F808191818634910558 |
:104B50005CF4F901EE0FFF1FEB5EF74F808191814E |
:104B6000873491050CF043E0FB01EE0FFF1FEB5E75 |
:104B7000F74F808191818A5B9F4F5CF4F901EE0FC2 |
:104B8000FF1FEB5EF74F80819181873491050CF018 |
:104B900044E0660F771F6B5E774FDB018D919C9130 |
:104BA0008A5B9F4F5CF4220F331F2B5E374FF90156 |
:104BB00080819181863491050CF445E0A2E0B0E05B |
:104BC000042E0E944C3D0E94510247E461E478E0CB |
:104BD0000E9478020E94162182C080819181855BAB |
:104BE0009F4F0CF081C08091A2058F5F8093A2053A |
:104BF000893C08F47BC029988FEF04E010E0D801CD |
:104C0000082E0E944C3D10925F051092A205109252 |
:104C10009F0510929E050E9416218091000590919B |
:104C2000010560E071E00E94BD3CD801062E0E94A3 |
:104C30004C3D809100059091010560E071E00E947B |
:104C4000BD3C0F5F1F4FD801082E0E944C3D809144 |
:104C500002059091030560E071E00E94BD3C0F5F8A |
:104C60001F4FD801062E0E944C3D80910205909165 |
:104C7000030560E071E00E94BD3C0F5F1F4FD8014B |
:104C8000082E0E944C3D60910405709105058091AD |
:104C90000605909107050E94303BDC01CB0160E0E6 |
:104CA00071E00E94BD3C0F5F1F4FD801062E0E948D |
:104CB0004C3D609104057091050580910605909129 |
:104CC00007050E94303BDC01CB0160E071E00E94EF |
:104CD000BD3C0F5F1F4FD801082E0E944C3D0E9423 |
:104CE00051020E94772202C01092A205E09143086F |
:104CF000F0E0EE0FFF1FEB5EF74F808191818B5A42 |
:104D00009F4F0CF09BC080914408482F50E0FA015F |
:104D1000EE0FFF1FEB5EF74F80819181855B9F4F08 |
:104D20000CF06DC08091A1058F5F8093A105893C37 |
:104D300008F467C088EC8093A10581E090E090932F |
:104D40009F0580939E0581E080935F051092B505D5 |
:104D50001092B6051092B7051092B80510923A0558 |
:104D600010923B0510923C0510923D0510923E05B5 |
:104D700010923F05109240051092410510922A05AD |
:104D800010922B0510922C0510922D0510923205D1 |
:104D900010923305109234051092350580910A0562 |
:104DA00090910B05A0910C05B0910D0580932E05F7 |
:104DB00090932F05A0933005B09331058091120593 |
:104DC00090911305A0911405B091150580933605B7 |
:104DD00090933705A0933805B09339051092BD051F |
:104DE0001092BE051092BF051092C0051092B90531 |
:104DF0001092BA051092BB051092BC0502C0109229 |
:104E0000A105440F551F4B5E574FDA018D919C91C0 |
:104E10008C3491058CF08091A0058F5F8093A00564 |
:104E2000893C60F010925F0588EC8093A005109299 |
:104E30009F0510929E0502C01092A00580916B0301 |
:104E4000815080936B0380916B038F3F29F0809199 |
:104E50004C05882309F452C30E94BC1D20905705BD |
:104E60003090580580914108E82EFF24D701AA0F01 |
:104E7000BB1FAD014B5E574FFA010190F081E02D51 |
:104E8000FCA3EBA380915008482E5524A55DB74F95 |
:104E90000D90BC91A02DBAA3A9A380915108282FF1 |
:104EA00030E038A32F8F6091590570915A057E8F9D |
:104EB0006D8F80914208082F10E0C801880F991F5C |
:104EC000DC01AB5EB74F0D90BC91A02DBC8FAB8FBA |
:104ED000855D974FDC018D919C919A8F898FE09130 |
:104EE0004408AE2FB0E0AA0FBB1FAB5EB74F0D90CA |
:104EF000BC91A02DB88FAF8BE0914308F0E0EE0F8E |
:104F0000FF1FEB5EF74F60807180E8E7F0E06E0E08 |
:104F10007F1E70925E0560925D05DA018D919C9115 |
:104F200020917E0530917F0597FF03C09095819574 |
:104F30009F4F281739078CF4FA0180819181909353 |
:104F40007F0580937E0597FF0EC0909581959F4FBA |
:104F500090937F0580937E0506C0215030403093AA |
:104F60007F0520937E05F801EE0FFF1FEB5EF74FE4 |
:104F700080819181209180053091810597FF03C048 |
:104F8000909581959F4F2817390784F480819181EE |
:104F9000909381058093800597FF0EC09095819531 |
:104FA0009F4F909381058093800506C0215030402B |
:104FB000309381052093800580914C05882341F032 |
:104FC00010927F0510927E05109281051092800547 |
:104FD0006091980370E080E090E00E94B63820E095 |
:104FE00030E040E251E40E94643A20E030E040E8E2 |
:104FF0005BE30E941B3C5B016C016093B208709301 |
:10500000B3088093B4089093B5086091990370E059 |
:1050100080E090E00E94B63820E030EE4BE257E4AA |
:105020000E94C83A6093A4087093A5088093A608CC |
:105030009093A7082091B504222331F08AE090E0F4 |
:105040009093C6048093C504E22F22FF09C080918B |
:105050006E05482F50E0440F551F440F551F10C0D8 |
:1050600023FD03C040E050E00BC080916E0590E04E |
:10507000880F991F880F991F44275527481B590BE4 |
:105080002091780530917905C901F3E0880F991FC7 |
:10509000FA95E1F7821B930B840F951F68E070E08F |
:1050A0000E94BD3C4B017093790560937805E4FF45 |
:1050B00009C080916E05482F50E0440F551F440FE2 |
:1050C000551F10C0E5FD03C040E050E00BC08091CB |
:1050D0006E0590E0880F991F880F991F4427552768 |
:1050E000481B590B80917A0590917B059C0163E0E8 |
:1050F000220F331F6A95E1F7281B390BCA01820F73 |
:10510000931F68E070E00E94BD3C7EA36DA3709386 |
:105110007B0560937A058091B404282F83FF03C038 |
:1051200082E390E004C082FF07C08EEC9FEF909373 |
:105130007D0580937C0504C010927D0510927C054E |
:1051400021FF09C080919F039091A0030196909345 |
:10515000A00380939F0324FF09C080919F03909137 |
:10516000A00301979093A00380939F032BA13CA1E0 |
:10517000249DC001259D900D349D900D1124910119 |
:10518000220F331F220D331D820F931F64E070E046 |
:105190000E94BD3C1B0149A15AA16F8D78A1469F79 |
:1051A000C001479F900D569F900D1124280E391E67 |
:1051B000C40168E070E00E94BD3C260E371E3092AC |
:1051C000580520925705AB8DBC8DA49DC001A59DAF |
:1051D000900DB49D900D11242D8D3E8D220F331F07 |
:1051E000ED8DFE8D2E0F3F1F820F931F64E070E048 |
:1051F0000E94BD3C9B01498D5A8D6F8D78A1469FC1 |
:10520000C001479F900D569F900D1124280F391F04 |
:105210008DA19EA168E070E00E94BD3C260F371F63 |
:1052200030935A052093590540917C0550917D0596 |
:105230008F89988D481B590B50935C0540935B05F3 |
:105240008091200780FF54C080916E05813808F45A |
:105250004FC080911907992787FD9095DC01A49D87 |
:10526000C001A59D900DB49D900D1124280E391EEE |
:10527000309258052092570580911A07992787FD8B |
:105280009095FC01E49DC001E59D900DF49D900D6D |
:105290001124280F391F30935A0520935905809106 |
:1052A0001B07992787FD9095480F591F50935C0560 |
:1052B00040935B0520914E0830E080911D079927AF |
:1052C00087FD9095AC01249FC001259F900D349FD0 |
:1052D000900D11249093A00380939F0380911C074D |
:1052E00090E08615970524F490935E0580935D0504 |
:1052F0008091490882FF0CC080E090E0A0E0B0E01F |
:105300008093A4089093A508A093A608B093A7083B |
:1053100020E030E040E050E0C601B5010E949E3B35 |
:10532000882364F480E090E0A0E0B0E08093B208CD |
:105330009093B308A093B408B093B50820E030E090 |
:1053400040E050E06091A4087091A5088091A60803 |
:105350009091A7080E949E3B882364F480E090E02F |
:10536000A0E0B0E08093A4089093A508A093A608BD |
:10537000B093A708F801EE0FFF1FEB5EF74F2081F7 |
:10538000318180916808482F50E04217530744F458 |
:105390008091750882FF04C081E080936A0511C086 |
:1053A000F801EE0FFF1FEB5EF74F208131818091F6 |
:1053B0006908BA01681B71092617370714F410929F |
:1053C0006A05F801EE0FFF1FEB5EF74F80819181B8 |
:1053D00066277727641B750B8617970744F480911F |
:1053E000750883FF04C081E080936B0515C0809130 |
:1053F0006B05882389F0000F111F0B5E174FD80132 |
:105400002D913C918091690890E0841B950B821747 |
:10541000930714F410926B05F701EE0FFF1FEB5E7C |
:10542000F74F808191814817590744F4809175089E |
:1054300080FF04C081E080936D0515C080916D05EB |
:10544000882389F0F701EE0FFF1FEB5EF74F2081F5 |
:10545000318180916908FA01E81BF1092E173F0795 |
:1054600014F410926D05F701EE0FFF1FEB5EF74F7E |
:10547000808191818617970744F48091750881FF98 |
:1054800004C081E080936C0517C080916C0588236F |
:1054900099F0EE0CFF1C25E138E0E20EF31ED70177 |
:1054A0002D913C918091690890E0841B950B8217A7 |
:1054B000930714F410926C0580916A05882321F4F7 |
:1054C00080916B05882321F081E08093690502C0FB |
:1054D0001092690580916D05882321F480916C05F7 |
:1054E000882351F081E0809368051092690510923D |
:1054F0006A0510926B0502C01092680580916905DB |
:10550000882339F084E690E09093C6048093C50424 |
:1055100004C080916805882351F08091670890E06D |
:10552000EB85FC858E179F0714F49C878B87F09181 |
:105530004C05F983FF2341F110925C0510925B0545 |
:10554000109258051092570510925A05109259055D |
:105550008DEC9CECACECBDE38093B2089093B30867 |
:10556000A093B408B093B5088AE097EDA3EABBE333 |
:105570008093A4089093A508A093A608B093A708C9 |
:10558000109269051092680520919C0830919D0841 |
:1055900040919E0850919F0880910A0590910B05BB |
:1055A000A0910C05B0910D05820F931FA41FB51F8C |
:1055B00080939C0890939D08A0939E08B0939F08A9 |
:1055C0002091A0083091A1084091A2085091A30811 |
:1055D0008091120590911305A0911405B0911505C5 |
:1055E000820F931FA41FB51F8093A0089093A1085A |
:1055F000A093A208B093A308209194083091950835 |
:10560000409196085091970880910E0590910F0552 |
:10561000A0911005B0911105820F931FA41FB51F13 |
:105620008093940890939508A0939608B093970858 |
:1056300020918C0830918D0840918E0850918F08F0 |
:105640008091160590911705A0911805B091190544 |
:10565000820F931FA41FB51F80938C0890938D0811 |
:10566000A0938E08B0938F08209168052A83222387 |
:1056700029F480916905882309F468C010921A05FD |
:1056800010921B0510921C0510921D0510921E050C |
:1056900010921F05109220051092210510922205EC |
:1056A00010922305109224051092250510929C0853 |
:1056B00010929D0810929E0810929F081092A008C8 |
:1056C0001092A1081092A2081092A30810929408B8 |
:1056D00010929508109296081092970810928C08D4 |
:1056E00010928D0810928E0810928F0880912A05D2 |
:1056F00090912B05A0912C05B0912D0580932E053E |
:1057000090932F05A0933005B09331058091320519 |
:1057100090913305A0913405B091350580933605FD |
:1057200090933705A0933805B09339051092E104A2 |
:105730001092E004109267051092660510926505BC |
:10574000109264053A81332309F0F9C0809169050C |
:10575000882309F0F4C060910A0570910B058091CF |
:105760000C0590910D05A0905508BB24CC24DD2498 |
:10577000E090AD08F090AE08A60195010E94F23CC1 |
:1057800039014A010027F7FC0095102F6E187F0899 |
:10579000800A910A60911205709113058091140599 |
:1057A00090911505E090B708F090B808A601950112 |
:1057B0000E94F23C59016A010027F7FC0095102F66 |
:1057C000AE18BF08C00AD10AC401B30120E130E01D |
:1057D00040E050E00E94F23C39014A01C601B501A7 |
:1057E00020E130E040E050E00E94F23C79018A0183 |
:1057F00080917E0590917F05409734F480918005DB |
:10580000909181054097A4F0C401B30123E030E0FA |
:1058100040E050E00E94F23C39014A01C801B70162 |
:1058200023E030E040E050E00E94F23C79018A0140 |
:10583000E0914408F0E0EE0FFF1FEB5EF74F0190A0 |
:10584000F081E02DF7FF03C0F095E195FF4F7A97C7 |
:10585000A4F0C401B30123E030E040E050E00E9436 |
:10586000F23C39014A01C801B70123E030E040E0D1 |
:1058700050E00E94F23C79018A0141E26416710411 |
:105880008104910434F0B0E26B2E712C812C912CA8 |
:1058900011C050EE65165FEF75065FEF85065FEF8E |
:1058A000950644F4A0EE6A2EAFEF7A2EAFEF8A2E63 |
:1058B000AFEF9A2E61E2E616F1040105110534F00E |
:1058C000F0E2EF2EF12C012D112D11C070EEE71634 |
:1058D0007FEFF7067FEF07077FEF170744F4E0EE4F |
:1058E000EE2EEFEFFE2EEFEF0E2FEFEF1E2F80913B |
:1058F0002A0590912B05A0912C05B0912D058619B4 |
:105900009709A809B90980932A0590932B05A093BC |
:105910002C05B0932D058091320590913305A0910F |
:105920003405B09135058E199F09A00BB10B8093FA |
:10593000320590933305A0933405B09335058091DB |
:10594000E0049091E1048F3F910509F008F408C547 |
:105950008A81882309F088C480916905882309F029 |
:1059600083C460919C0870919D0880919E089091DD |
:105970009F0820E031E040E050E00E94F23C20939C |
:105980009C0830939D0840939E0850939F08609117 |
:10599000A0087091A1088091A2089091A30820E02E |
:1059A00031E040E050E00E94F23C2093A0083093A8 |
:1059B000A1084093A2085093A308E0905508FF2443 |
:1059C00000E010E020911A0530911B0540911C0564 |
:1059D00050911D05C801B7010E947E3C20E031E0D6 |
:1059E00040E050E00E94F23C20931A0530931B05E2 |
:1059F00040931C0550931D0520911E0530911F05F5 |
:105A00004091200550912105C801B7010E947E3CBC |
:105A100020E031E040E050E00E94F23C20931E057F |
:105A200030931F0540932005509321056091220576 |
:105A300070912305809124059091250520E031E0A7 |
:105A400040E050E00E94F23C209322053093230571 |
:105A5000409324055093250560919C0870919D0802 |
:105A600080919E0890919F0820911A0530911B0506 |
:105A700040911C0550911D05E0906E08FF2400E048 |
:105A800010E0621B730B840B950BA80197010E9419 |
:105A9000F23C59016A012093960530939705409393 |
:105AA0009805509399056091A0087091A108809184 |
:105AB000A2089091A30820911E0530911F054091E6 |
:105AC000200550912105621B730B840B950BA801D7 |
:105AD00097010E94F23C19012A01C601B50120E09C |
:105AE00031E040E050E00E94F23C890130936705CC |
:105AF00020936605C201B10120E031E040E050E0B2 |
:105B00000E94F23C790130936505209364058091F1 |
:105B10007E0590917F054097BCF48091800590911F |
:105B2000810540978CF4E0914408F0E0EE0FFF1FF0 |
:105B3000EB5EF74F0190F081E02DF7FF03C0F09589 |
:105B4000E195FF4F7A9794F0C80162E070E00E94FF |
:105B5000BD3C7093670560936605C70162E070E025 |
:105B60000E94BD3C70936505609364056091940844 |
:105B700070919508809196089091970820E031E007 |
:105B800040E050E00E94F23C209394083093950846 |
:105B9000409396085093970860918C0870918D08F7 |
:105BA00080918E0890918F0820E031E040E050E035 |
:105BB0000E94F23C20938C0830938D0840938E080D |
:105BC00050938F08E0900E05F0900F05009110059E |
:105BD0001091110580910A0590910B05A0910C057B |
:105BE000B0910D05E81AF90A0A0B1B0BE092B105FA |
:105BF000F092B2050093B3051093B40560901605BA |
:105C000070901705809018059090190580911205E5 |
:105C100090911305A0911405B0911505681A790AA1 |
:105C20008A0A9B0A6092AD057092AE058092AF051C |
:105C30009092B005E092A905F092AA050093AB05F9 |
:105C40001093AC056092A5057092A6058092A705F9 |
:105C50009092A80580912E0590912F05A091300576 |
:105C6000B09131058E199F09A00BB10B80932E05C1 |
:105C700090932F05A0933005B093310580913605A0 |
:105C800090913705A0913805B0913905861997098B |
:105C9000A809B9098093360590933705A093380574 |
:105CA000B093390560911A0570911B0580911C0510 |
:105CB00090911D052AE130E040E050E00E94F23C66 |
:105CC0003093DC072093DB0760911E0570911F0560 |
:105CD00080912005909121052AE130E040E050E0DC |
:105CE0000E94F23C3093DE072093DD07F092E0073C |
:105CF000E092DF077092E2076092E10760919C08F2 |
:105D000070919D0880919E0890919F082AE130E053 |
:105D100040E050E00E94F23C3093E4072093E30718 |
:105D20006091A0087091A1088091A2089091A308A9 |
:105D30002AE130E040E050E00E94F23C3093E60778 |
:105D40002093E5073092F4072092F307C090640592 |
:105D5000D0906505C601880F991F960153E0220F68 |
:105D6000331F5A95E1F7820F931F9093F6078093A4 |
:105D7000F50781E090E090939105809390058091E4 |
:105D80009C0890919D08A0919E08B0919F08209139 |
:105D900088053091890540918A0550918B05281B13 |
:105DA000390B4A0B5B0B57FF07C050954095309558 |
:105DB00021953F4F4F4F5F4F20523E44404050404F |
:105DC0000CF0C1C0A1E0EA16A0E1FA06A0E00A07C3 |
:105DD000A0E01A070CF452C080918F05882309F4C3 |
:105DE00049C0D801C7014CE0B595A795979587950F |
:105DF0004A95D1F701969093910580939005D8012B |
:105E0000C70133E0B595A795979587953A95D1F752 |
:105E10008093960590939705A0939805B093990564 |
:105E200089589341A040B04064F088E893E1A0E035 |
:105E3000B0E08093960590939705A0939805B09352 |
:105E400099056091960570919705809198059091BC |
:105E5000990520E031E040E050E00E94F23C809162 |
:105E6000660590916705820F931F90936705809355 |
:105E7000660566C081E080938F0562C010928F0531 |
:105E8000F0E0EF16F0EFFF06FFEF0F07FFEF1F0741 |
:105E90000CF056C080918E05882309F44DC08827E8 |
:105EA0009927DC018E199F09A00BB10B2CE0B59549 |
:105EB000A795979587952A95D1F701969093910587 |
:105EC00080939005C801B70128E030E040E050E041 |
:105ED0000E94F23C209396053093970540939805D5 |
:105EE0005093990528573C4E4F4F5F4F64F488E715 |
:105EF0009CEEAFEFBFEF8093960590939705A0932C |
:105F00009805B093990560919605709197058091D9 |
:105F100098059091990520E031E040E050E00E9422 |
:105F2000F23C8091660590916705820F931F9093D4 |
:105F30006705809366050BC081E080938E0507C0DE |
:105F400010928E0504C010929105109290058091D8 |
:105F50006F08482E55248091900590919105481620 |
:105F6000590624F4509291054092900571E0E7168D |
:105F700074E0F70670E0070770E0170774F080918F |
:105F8000F6049091F7042091900530919105820FCD |
:105F9000931F9093F7048093F60480E0E8168CEF4B |
:105FA000F8068FEF08078FEF180774F48091F60456 |
:105FB0009091F7042091900530919105821B930BED |
:105FC0009093F7048093F60481E090E0909391051C |
:105FD000809390051092920510929305109294056B |
:105FE000109295058091A0089091A108A091A20817 |
:105FF000B091A308209184053091850540918605D4 |
:1060000050918705281B390B4A0B5B0B57FF07C0C4 |
:1060100050954095309521953F4F4F4F5F4F2052FF |
:106020003E44404050400CF0B9C0A1E06A16A0E1E7 |
:106030007A06A0E08A06A0E09A060CF44EC0809191 |
:106040008D05882309F445C0D401C301FCE0B59552 |
:10605000A79597958795FA95D1F701969093910515 |
:1060600080939005D401C301E3E0B595A79597957A |
:106070008795EA95D1F78093920590939305A09325 |
:106080009405B093950589589341A040B04064F0C1 |
:1060900088E893E1A0E0B0E08093920590939305A7 |
:1060A000A0939405B0939505609192057091930526 |
:1060B000809194059091950520E031E040E050E01A |
:1060C0000E94F23CC20ED31ED0926505C0926405B8 |
:1060D00062C081E080938D055EC010928D05F0E076 |
:1060E0006F16F0EF7F06FFEF8F06FFEF9F060CF0B5 |
:1060F00052C080918C05882309F449C088279927CC |
:10610000DC0186199709A809B9097CE0B595A7951E |
:10611000979587957A95D1F70196909391058093FD |
:106120009005C401B30128E030E040E050E00E9457 |
:10613000F23C20939205309393054093940550933D |
:10614000950528573C4E4F4F5F4F64F488E79CEE0F |
:10615000AFEFBFEF8093920590939305A0939405C2 |
:10616000B093950560919205709193058091940587 |
:106170009091950520E031E040E050E00E94F23C33 |
:10618000C20ED31ED0926505C09264050BC081E09B |
:1061900080938C0507C010928C0504C01092910565 |
:1061A000109290058091900590919105481659069E |
:1061B00024F4509291054092900571E0671674E0C6 |
:1061C000770670E0870670E0970674F08091F80417 |
:1061D0009091F9042091900530919105820F931FC1 |
:1061E0009093F9048093F80480E068168CEF7806A9 |
:1061F0008FEF88068FEF980674F48091F8049091E1 |
:10620000F9042091900530919105821B930B909396 |
:10621000F9048093F80480919205909193059093EE |
:10622000F0078093EF078091F6049091F704909324 |
:10623000E8078093E7078091F8049091F904209192 |
:10624000FC043091FD04821B930B9C0163E0220F40 |
:10625000331F6A95E1F7880F991F820F931F909360 |
:10626000EA078093E90708C010926505109264055B |
:10627000109267051092660520E030E040E050E0A3 |
:106280006091A4087091A5088091A6089091A70834 |
:106290000E949E3B882341F410926505109264058C |
:1062A000109267051092660580919C0890919D0858 |
:1062B000A0919E08B0919F088093880590938905CE |
:1062C000A0938A05B0938B058091A0089091A108B6 |
:1062D000A091A208B091A3088093840590938505AE |
:1062E000A0938605B093870510921A0510921B059E |
:1062F00010921C0510921D0510921E0510921F058C |
:10630000109220051092210510922205109223056B |
:10631000109224051092250510929C0810929D0859 |
:1063200010929E0810929F081092A0081092A10847 |
:106330001092A2081092A308109294081092950847 |
:10634000109296081092970810928C0810928D085F |
:1063500010928E0810928F081092E1041092E004BF |
:1063600080905B0590905C05840197FE04C0002737 |
:10637000112708191909053111053CF080914908C8 |
:1063800084FD03C081E080939A05E0905208B40137 |
:10639000882777FD8095982F2E2D30E040E050E043 |
:1063A0000E947E3C9801442737FD4095542F0E945F |
:1063B0007E3C20E032E040E050E00E94F23C890167 |
:1063C0009A01FF24E89CC001E99C900DF89C900D77 |
:1063D000112464E070E00E94BD3C600F711F9B01BE |
:1063E000442737FD4095542F2B8B3C8B4D8B5E8B78 |
:1063F0002093B5053093B6054093B7055093B80583 |
:1064000080913A0590913B05A0913C05B0913D05E6 |
:10641000821B930BA40BB50B80933A0590933B051D |
:10642000A0933C05B0933D0580913A0590913B05C2 |
:10643000A0913C05B0913D058155934CA040B040E2 |
:1064400064F080E593ECA0E0B0E080933A0590938F |
:106450003B05A0933C05B0933D0580913A05909192 |
:106460003B05A0913C05B0913D05805B9C43AF4F3F |
:10647000BF4F64F480EB9CE3AFEFBFEF80933A052E |
:1064800090933B05A0933C05B0933D058091460554 |
:1064900090914705892B09F492C08091490883FFA8 |
:1064A0008EC060910A0570910B0580910C0590914A |
:1064B0000D0520E032E040E050E00E94F23C89010E |
:1064C00037FF03C0109501951F4F60911205709121 |
:1064D0001305809114059091150520E032E040E00D |
:1064E00050E00E94F23CB90137FF03C070956195FE |
:1064F0007F4F601771070CF4B80169317105A4F47E |
:1065000080919A05882381F080918205909183057E |
:10651000892B51F480914605909147059093490548 |
:106520008093480510929A052091970330E0629F6E |
:10653000C001639F900D729F900D112460E470E084 |
:106540000E94BD3CA901461B570B141615068CF57D |
:106550008091820590918305009749F500913A0555 |
:1065600010913B0520913C0530913D0580914A05F5 |
:1065700090914B05BC01469FC001479F900D569FCF |
:10658000900D112460E270E00E94BD3C882777FDE9 |
:106590008095982F600F711F821F931F60933A059B |
:1065A00070933B0580933C0590933D0508C001978F |
:1065B00002C084EF91E090938305809382058091DF |
:1065C0009B05815080939B058F3F09F079C088E13E |
:1065D00080939B0560910A0570910B0580910C05D5 |
:1065E00090910D05E0905508FF2400E010E0A8010F |
:1065F00097010E94F23C3093BA072093B90760914B |
:106600001205709113058091140590911505A8014C |
:1066100097010E94F23C3093BC072093BB07809106 |
:10662000AD089091AE089093BE078093BD0780910E |
:10663000B7089091B8089093C0078093BF078091E6 |
:10664000B0089091B1089093C2078093C1078091E0 |
:106650006005909161059093C4078093C307609192 |
:10666000420570914305809144059091450520E0D5 |
:1066700032E040E050E00E94F23C3093C6072093A5 |
:10668000C50780914605909147059093CA0780936E |
:10669000C90780910803909109039093CC078093D8 |
:1066A000CB078091560590E09093CE078093CD075D |
:1066B00080919808909199089093DA078093D90770 |
:1066C0007A817723A9F060919108709192088827C8 |
:1066D00077FD8095982F0E94633B2091B2083091FE |
:1066E000B3084091B4085091B5080E941B3C32C0D9 |
:1066F00060910A0570910B0580910C0590910D0534 |
:10670000E0909108F09092080E94633B2091A408C9 |
:106710003091A5084091A6085091A7080E941B3C03 |
:106720005B016C010027F7FC0095102FC801B70131 |
:106730000E94633B2091B2083091B3084091B408A5 |
:106740005091B5080E941B3C9B01AC01C601B501EC |
:106750000E94643A0E94303B7093920860939108C3 |
:10676000809169058823A9F06091890870918A0851 |
:10677000882777FD8095982F0E94633B2091B2086F |
:106780003091B3084091B4085091B5080E941B3C69 |
:1067900032C060911205709113058091140590919B |
:1067A0001505E0908908F0908A080E94633B2091CB |
:1067B000A4083091A5084091A6085091A7080E940E |
:1067C0001B3C5B016C010027F7FC0095102FC801F2 |
:1067D000B7010E94633B2091B2083091B308409109 |
:1067E000B4085091B5080E941B3C9B01AC01C60146 |
:1067F000B5010E94643A0E94303B70938A0860930E |
:1068000089086091B0087091B108A0902605B090F9 |
:106810002705C0902805D09029058091A408909163 |
:10682000A508A091A608B091A7088B839C83AD838F |
:10683000BE83882777FD8095982F0E94633B7B015C |
:106840008C016091B2087091B3088091B408909166 |
:10685000B5089B01AC010E94643A9B01AC01C801E0 |
:10686000B7010E941B3C7B018C01C601B5010E944F |
:10687000633B2B813C814D815E810E941B3C20E06B |
:1068800030E040E05FE30E941B3C9B01AC01C8018B |
:10689000B7010E94643A0E94303B7093B108609344 |
:1068A000B0086091120570911305809114059091C4 |
:1068B00015050E94633B2B813C814D815E810E94C6 |
:1068C0001B3C0E94353B7093EC076093EB07A09153 |
:1068D0005905B0915A05B887AF83B093F807A093D4 |
:1068E000F7078091890890918A089093F207809326 |
:1068F000F10780919108909192088150984034F06E |
:1069000080E098E09093920880939108809191089C |
:10691000909192088050984F34F480E098EF9093D3 |
:106920009208809391088091890890918A088150FB |
:10693000984034F080E098E090938A08809389082A |
:106940008091890890918A088050984F34F480E0B3 |
:1069500098EF90938A08809389088091B00890916D |
:10696000B1088150984034F080E098E09093B108ED |
:106970008093B0088091B0089091B1088050984FF2 |
:1069800034F480E098EF9093B1088093B008809140 |
:10699000490880FFD7C04091940381FF0EC0423365 |
:1069A00010F580916005909161054497909363057F |
:1069B0008093620510924D0519C020919F0330917C |
:1069C000A003240F311D80914E0890E0BC01269F4A |
:1069D000C001279F900D369F900D112444979093EE |
:1069E00063058093620581E080934D05798177236B |
:1069F00021F010926305109262052091600530919C |
:106A000061054091620550916305421753070CF0F0 |
:106A100099C080914D05882309F494C08091950315 |
:106A200090E0241B350BDC01A29FC001A39F900DB9 |
:106A3000B29F900D112460E170E00E94BD3C4B01BB |
:106A4000C090DE04D090DF04609142057091430550 |
:106A50008091440590914505E0909603FF2400E065 |
:106A600010E020E032E040E050E00E94F23CC8013B |
:106A7000B7010E947E3C20E230E040E050E00E94FE |
:106A8000F23CBFEF2E3C3B0714F42EEC3FEF80911D |
:106A90009C0590919D058C0144E0000F111F4A95C3 |
:106AA000E1F7081B190B8091930390E0FC01EC9D2A |
:106AB000C001ED9D900DFC9D900D112468E070E0EB |
:106AC0000E94BD3C061B170B2333310514F022E353 |
:106AD00030E0021B130B8B859C8588199909800F68 |
:106AE000911F60E170E00E94BD3C70939D05609332 |
:106AF0009C0580914A0890E06817790784F42B85FB |
:106B00003C85281739072CF090939D0580939C05B0 |
:106B100006C04B855C8550939D0540939C058091F4 |
:106B20009C0590919D056B857C856817790724F4F9 |
:106B300070939D0560939C0580919C0590919D05A7 |
:106B40009C878B878091AF08482E5524C2014497BB |
:106B50008B849C84881599050CF44C019092C8078D |
:106B60008092C7078091B0089091B108A4E18A167D |
:106B700091041CF41E861D862AC0BC01EB89FC8989 |
:106B80006E1B7F0B940135952795621773070CF4E4 |
:106B90009B01C40162E070E00E94BD3C709561956C |
:106BA0007F4FC901261737070CF4CB019201281932 |
:106BB0003909281739070CF4C9019401241935093A |
:106BC0009E878D878217930714F43E872D87209127 |
:106BD0009108309192086090570570905805809107 |
:106BE000C9059091CA05681A790A261937093093A0 |
:106BF0009B0820939A0820E030E040E050E06B8151 |
:106C00007C818D819E810E949E3B8823F1F1E090E2 |
:106C10000A05F0900B0500910C0510910D0560918F |
:106C2000BD057091BE058091BF059091C0050E9481 |
:106C3000633B5B016C01C801B7010E94633B2B8180 |
:106C40003C814D815E810E941B3C7B018C01B30124 |
:106C5000882777FD8095982F0E94633B9B01AC01AC |
:106C6000C801B7010E94633A9B01AC01C601B5019E |
:106C70000E94643A0E94303B6093BD057093BE054C |
:106C80008093BF059093C0051CC020919A08309155 |
:106C90009B08442737FD4095542F8091BD05909166 |
:106CA000BE05A091BF05B091C005820F931FA41F20 |
:106CB000B51F8093BD059093BE05A093BF05B0930B |
:106CC000C0058091BD059091BE05A091BF05B09112 |
:106CD000C00581589E43A040B04064F080E89EE328 |
:106CE000A0E0B0E08093BD059093BE05A093BF05E2 |
:106CF000B093C0058091BD059091BE05A091BF05E0 |
:106D0000B091C0058058914CAF4FBF4F64F480E8FC |
:106D100091ECAFEFBFEF8093BD059093BE05A093BC |
:106D2000BF05B093C00560919A0870919B0880914F |
:106D30008F0390919003A0919103B09192038F875C |
:106D4000988BA98BBA8B882777FD8095982F0E9406 |
:106D5000633B7B018C016091BD057091BE05809104 |
:106D6000BF059091C0050E94633B9B01AC016F85FC |
:106D7000788989899A890E941B3C9B01AC01C801D2 |
:106D8000B7010E94643A0E94303B7B018C016B0189 |
:106D90008D859E8597FF03C0909581959F4F62E0FA |
:106DA00070E00E94BD3C680D791D882777FD8095B5 |
:106DB000982F20919E0330E040E050E00E947E3CFE |
:106DC00020E430E040E050E00E94F23C1901C2169D |
:106DD000D3060CF4970166247724621873083A8767 |
:106DE00029872615370514F47A86698680918908E3 |
:106DF00090918A082091CB053091CC05AF81B88560 |
:106E0000A21BB30BBEA3ADA38A1B9B0B9093880858 |
:106E10008093870820E030E040E050E06B817C8187 |
:106E20008D819E810E949E3B882309F440C0E090A2 |
:106E30001205F0901305009114051091150560914D |
:106E4000B9057091BA058091BB059091BC050E946F |
:106E5000633B5B016C01C801B7010E94633B2B815E |
:106E60003C814D815E810E941B3C7B018C01EDA128 |
:106E7000FEA1BF01882777FD8095982F0E94633B74 |
:106E80009B01AC01C801B7010E94633A9B01AC01B0 |
:106E9000C601B5010E94643A0E94303B6093B90577 |
:106EA0007093BA058093BB059093BC051CC02091DC |
:106EB000870830918808442737FD4095542F8091EA |
:106EC000B9059091BA05A091BB05B091BC05820FA0 |
:106ED000931FA41FB51F8093B9059093BA05A09383 |
:106EE000BB05B093BC058091B9059091BA05A091FE |
:106EF000BB05B091BC0581589E43A040B04064F0F2 |
:106F000080E89EE3A0E0B0E08093B9059093BA05D5 |
:106F1000A093BB05B093BC058091B9059091BA05CB |
:106F2000A091BB05B091BC058058914CAF4FBF4FAD |
:106F300064F480E891ECAFEFBFEF8093B9059093D4 |
:106F4000BA05A093BB05B093BC056091870870910A |
:106F50008808882777FD8095982F0E94633B7B01E6 |
:106F60008C016091B9057091BA058091BB05909133 |
:106F7000BC050E94633B9B01AC016F8578898989C0 |
:106F80009A890E941B3C9B01AC01C801B7010E9479 |
:106F9000643A0E94303B9101621573050CF49B0129 |
:106FA0008901261537050CF48301F0907505FF2043 |
:106FB00019F429853A851CC049855A85BA01882764 |
:106FC00077FD8095982F9801442737FD4095542FE1 |
:106FD000620F731F841F951F22E83AE540E050E0DE |
:106FE0000E947E3C20E030E840E050E00E94F23C0D |
:106FF0004D855E85480D591DCA01820F931F97FF6D |
:1070000003C060E070E005C0BC01481659060CF4EE |
:10701000B20180919308C82EDD24CB016C157D054B |
:107020000CF4C60180938B08421B530B9A0157FF47 |
:1070300003C020E030E004C0441655060CF4920171 |
:107040002C153D050CF4960120939008FF2011F4B7 |
:1070500098011CC0B801882777FD8095982FA985D5 |
:10706000BA859D01442737FD4095542F621B730B51 |
:10707000840B950B22E83AE540E050E00E947E3C0C |
:1070800020E030E840E050E00E94F23CD401ED8581 |
:10709000FE85AE1BBF0BA20FB31FB7FF03C0E0E01E |
:1070A000F0E005C0FD014A165B060CF4F201EC1598 |
:1070B000FD050CF4F601E093AA08821A930A9401E4 |
:1070C0004D855E85241B350B37FF03C020E030E083 |
:1070D00004C0421653060CF492012C153D050CF425 |
:1070E00096012093A808A6960FB6F894DEBF0FBEAF |
:1070F000CDBFDF91CF911F910F91FF90EF90DF9067 |
:10710000CF90BF90AF909F908F907F906F905F9047 |
:107110004F903F902F9008958091CD059091CE058E |
:10712000A091CF05B091D0058093D5059093D60559 |
:10713000A093D705B093D8058091D1059091D20541 |
:10714000A091D305B091D4058093D9059093DA0529 |
:10715000A093DB05B093DC0508951092CA05109248 |
:10716000C9051092CC051092CB050895A8E0B0E0B7 |
:10717000ECEBF8E30C94173D7B018C016115710574 |
:107180008105910519F482E089835AC083E08983DF |
:107190008EE1C82ED12CDC82CB82ED82FE820F8361 |
:1071A0001887C801B7010E942939BC01615070409D |
:1071B00077FF33C0EE27FF27E61BF70B20E030E018 |
:1071C00040E050E081E090E0A0E0B0E00E2E04C08E |
:1071D000880F991FAA1FBB1F0A94D2F70197A10914 |
:1071E000B1098E219F21A023B1230097A105B105EC |
:1071F00021F021E030E040E050E004C01695079512 |
:10720000F794E794EA95D2F72E293F29402B512B8A |
:107210002D833E834F8358870FC06115710581F020 |
:10722000062E04C0EE0CFF1C001F111F0A94D2F79B |
:10723000ED82FE820F831887C61AD70ADC82CB82C2 |
:107240001A82CE0101960E947639E8E028960C94C5 |
:10725000333DEF92FF920F931F939B01AC012030BF |
:1072600080E0380781E0480780E0580780F42F3F2E |
:1072700031054105510509F020F4EE24FF24870172 |
:1072800019C068E0E62EF12C012D112D13C020301D |
:1072900080E0380780E0480781E0580730F490E14B |
:1072A000E92EF12C012D112D05C088E1E82EF12CDD |
:1072B000012D112D80E290E0A0E0B0E08E199F0931 |
:1072C000A00BB10B04C05695479537952795EA94C6 |
:1072D000D2F7F901ED55FC4F2081821B9109A109DC |
:1072E000B1091F910F91FF90EF9008959F92AF9277 |
:1072F000BF92CF92DF92EF92FF920F931F93EE24F3 |
:10730000FF248701FC0124813581468157819180CA |
:107310008081823010F44061A2C0843009F49BC0A7 |
:10732000823029F420E030E040E050E005C0211533 |
:1073300031054105510519F4E0E0F0E092C0828189 |
:1073400093816FEF823896070CF05AC062E87FEFA6 |
:10735000681B790B6A3171052CF020E030E040E0C9 |
:1073600050E02AC0AA24BB24650181E090E0A0E09F |
:10737000B0E0062E04C0880F991FAA1FBB1F0A94F5 |
:10738000D2F70197A109B10982239323A423B5233E |
:107390000097A105B10529F071E0A72EB12CC12CF1 |
:1073A000D12C04C056954795379527956A95D2F705 |
:1073B0002A293B294C295D29DA01C9018F77907070 |
:1073C000A070B07080349105A105B10539F427FF94 |
:1073D00009C0205C3F4F4F4F5F4F04C0215C3F4FBF |
:1073E0004F4F5F4F80E090E0203060E0360760E074 |
:1073F000460760E4560710F081E090E0FC0123C0EE |
:107400008038910544F5FC01E158FF4FDA01C901CC |
:107410008F779070A070B07080349105A105B10590 |
:1074200039F427FF09C0205C3F4F4F4F5F4F04C026 |
:10743000215C3F4F4F4F5F4F57FF05C05695479513 |
:1074400037952795319687E0569547953795279537 |
:107450008A95D1F706C020E030E040E050E0EFEF41 |
:10746000F0E0E22EF32E942F9F77802F8078892BE7 |
:107470009E2F9795992797958F77082F092B9E2FE9 |
:107480009695812F8078892B9794992497948F775C |
:10749000182F1929C801B7011F910F91FF90EF9084 |
:1074A000DF90CF90BF90AF909F900895FC01415026 |
:1074B000504030F001900616D1F73197CF01089572 |
:1074C0008827992708955058BB27AA270ED079C13D |
:1074D0006AD130F06FD120F031F49F3F11F41EF4E7 |
:1074E0005FC10EF4E095E7FB55C1E92F7BD180F336 |
:1074F000BA17620773078407950718F071F49EF5B1 |
:1075000093C10EF4E0950B2EBA2FA02D0B01B901FB |
:1075100090010C01CA01A0011124FF27591B99F009 |
:10752000593F50F4503E68F11A16F040A22F232F15 |
:10753000342F4427585FF3CF469537952795A79565 |
:10754000F0405395C9F77EF41F16BA0B620B730B0C |
:10755000840BBAF09150A1F0FF0FBB1F661F771F7D |
:10756000881FC2F70EC0BA0F621F731F841F48F432 |
:10757000879577956795B795F7959E3F08F0B3CFB8 |
:107580009395880F08F09927EE0F979587950895A2 |
:107590000CD017C10FD140F006D130F021F45F3F7D |
:1075A00019F0F8C0511141C1FBC01CD198F39923C7 |
:1075B000C9F35523B1F3951B550BBB27AA276217B7 |
:1075C0007307840738F09F5F5F4F220F331F441FFC |
:1075D000AA1FA9F333D00E2E3AF0E0E830D0915034 |
:1075E0005040E695001CCAF729D0FE2F27D0660F21 |
:1075F000771F881FBB1F261737074807AB07B0E860 |
:1076000009F0BB0B802DBF01FF2793585F4F2AF075 |
:107610009E3F510568F0BEC008C15F3FECF3983E45 |
:10762000DCF3869577956795B795F7959F5FC9F7D2 |
:10763000880F911D9695879597F90895E1E0660F5B |
:10764000771F881FBB1F621773078407BA0720F0D4 |
:10765000621B730B840BBA0BEE1F88F7E09508953D |
:1076600004D06894B111E1C00895C4D088F09F5748 |
:1076700090F0B92F9927B751A0F0D1F0660F771F7E |
:10768000881F991F1AF0BA95C9F712C0B13081F05E |
:10769000CBD0B1E00895C8C0672F782F8827B85F96 |
:1076A00039F0B93FCCF3869577956795B395D9F7BF |
:1076B0003EF490958095709561957F4F8F4F9F4FC9 |
:1076C0000895E89409C097FB3EF4909580957095D5 |
:1076D00061957F4F8F4F9F4F9923A9F0F92F96E91E |
:1076E000BB279395F695879577956795B795F11193 |
:1076F000F8CFFAF4BB0F11F460FF1BC06F5F7F4F30 |
:107700008F4F9F4F16C0882311F096E911C0772341 |
:1077100021F09EE8872F762F05C0662371F096E84A |
:10772000862F70E060E02AF09A95660F771F881F19 |
:10773000DAF7880F9695879597F9089507D008F49A |
:1077400081E0089503D008F48FEF0895990F0008A1 |
:10775000550FAA0BE0E8FEEF16161706E807F90723 |
:10776000C0F012161306E407F50798F0621B730BBE |
:10777000840B950B39F40A2661F0232B242B252B3F |
:1077800021F408950A2609F4A140A6958FEF811DE2 |
:10779000811D089597F99F6780E870E060E0089583 |
:1077A0009FEF80EC089500240A9416161706180619 |
:1077B0000906089500240A941216130614060506F5 |
:1077C0000895092E0394000C11F4882352F0BB0F86 |
:1077D00040F4BF2B11F460FF04C06F5F7F4F8F4FE9 |
:1077E0009F4F089557FD9058440F551F59F05F3F24 |
:1077F00071F04795880F97FB991F61F09F3F79F0D3 |
:1078000087950895121613061406551FF2CF469554 |
:10781000F1DF08C0161617061806991FF1CF8695D6 |
:107820007105610508940895E894BB2766277727BA |
:10783000CB0197F908950BD0C4CFB5DF28F0BADF9C |
:1078400018F0952309F0A6CFABCF1124EECFCADFF5 |
:10785000A0F3959FD1F3950F50E0551F629FF00163 |
:10786000729FBB27F00DB11D639FAA27F00DB11DBC |
:10787000AA1F649F6627B00DA11D661F829F222745 |
:10788000B00DA11D621F739FB00DA11D621F839FCC |
:10789000A00D611D221F749F3327A00D611D231FA2 |
:1078A000849F600D211D822F762F6A2F11249F57F0 |
:1078B00050408AF0E1F088234AF0EE0FFF1FBB1F13 |
:1078C000661F771F881F91505040A9F79E3F5105B2 |
:1078D00070F060CFAACF5F3FECF3983EDCF3869563 |
:1078E00077956795B795F795E7959F5FC1F7FE2B5D |
:1078F000880F911D9695879597F90895629FD001FD |
:10790000739FF001829FE00DF11D649FE00DF11D5A |
:10791000929FF00D839FF00D749FF00D659FF00D09 |
:107920009927729FB00DE11DF91F639FB00DE11DF6 |
:10793000F91FBD01CF0111240895991B79E004C0FE |
:10794000991F961708F0961B881F7A95C9F780959E |
:107950000895AA1BBB1B51E107C0AA1FBB1FA61796 |
:10796000B70710F0A61BB70B881F991F5A95A9F7E8 |
:1079700080959095BC01CD01089597FB092E0726AF |
:107980000AD077FD04D0E5DF06D000201AF4709508 |
:1079900061957F4F0895F6F7909581959F4F0895D3 |
:1079A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F03 |
:1079B000EE1FFF1FA217B307E407F50720F0A21B75 |
:1079C000B30BE40BF50B661F771F881F991F1A94E2 |
:1079D00069F760957095809590959B01AC01BD010C |
:1079E000CF01089597FB092E05260ED057FD04D030 |
:1079F000D7DF0AD0001C38F450954095309521957A |
:107A00003F4F4F4F5F4F0895F6F7909580957095D3 |
:107A100061957F4F8F4F9F4F08952F923F924F92C6 |
:107A20005F926F927F928F929F92AF92BF92CF920E |
:107A3000DF92EF92FF920F931F93CF93DF93CDB717 |
:107A4000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF8F |
:107A500009942A88398848885F846E847D848C8460 |
:107A60009B84AA84B984C884DF80EE80FD800C8169 |
:107A70001B81AA81B981CE0FD11D0FB6F894DEBF4C |
:107A80000FBECDBFED010895F999FECFB2BDA1BDE6 |
:107A9000F89A119600B40895F999FECFB2BDA1BD30 |
:107AA00000BC11960FB6F894FA9AF99A0FBE089591 |
:027AB000FFCF06 |
:107AB2000A01FF64496E74656772616C4E69636B9B |
:107AC20020202020496E74656772616C526F6C6C65 |
:107AD200202020204163634E69636B2020202020F8 |
:107AE20020202020416363526F6C6C2020202020D4 |
:107AF200202020204779726F47696572202020205C |
:107B020020202020486F6568656E576572742020BA |
:107B1200202020204163635A202020202020202082 |
:107B22002020202047617320202020202020202098 |
:107B3200202020204B6F6D7061737356616C7565E8 |
:107B4200202020205370616E6E756E6720202020E9 |
:107B520020202020456D7066616E67202020202045 |
:107B620020202020416E616C6F673131202020205F |
:107B7200202020204D6F746F725F566F726E6520E9 |
:107B8200202020204D6F746F725F48696E74656E9D |
:107B9200202020204D6F746F725F4C696E6B7320D2 |
:107BA200202020204D6F746F725F5265636874737A |
:107BB200202020204163635F5A20202020202020A3 |
:107BC200202020204D697474656C4163634E6963A3 |
:107BD2006B2020204D697474656C416363526F6C35 |
:107BE2006C202020496E74656772616C4572724E1A |
:107BF20069636B20496E74656772616C457272527B |
:107C02006F6C6C204D697474656C496E744E696357 |
:107C12006B2020204D697474656C496E74526F6CD0 |
:107C22006C0920004E65757472616C4E69636B203D |
:107C320020202020526F6C6C4F6666736574202082 |
:107C420020202020496E74526F6C6C2A46616B743E |
:107C52006F722020416E616C6F67323620202020C7 |
:107C620020202020446972656B74417573676C52E1 |
:107C72006F6C6C204D65737377657274526F6C6CA8 |
:107C820020202020417573676C65696368526F6CB0 |
:107C92006C202020492D4C616765526F6C6C20204E |
:107CA20020202020537469636B526F6C6C2020205B |
:107CB20020202020FFFF0A016400007D0000FF0356 |
:107CC2000102030405060708090A48616C6C6F206B |
:107CD20057656C7400000000000000000000000006 |
:107CE2000000000000000000000000000000000092 |
:107CF2000000000000000000000000000000000082 |
:107D02000000000000000000000000000000000071 |
:107D1200000000000000000000000B0142656769DE |
:107D22006E6E657200004E6F726D616C0000537072 |
:107D32006F72740000640090D0030090D0030017AB |
:107D4200B7D13830FB103A409696020A644664EC8A |
:107D5200FFC0080001020203030303040404040435 |
:107D620004040405050505050505050505050505C4 |
:107D720005050506060606060606060606060606A4 |
:107D82000606060606060606060606060606060691 |
:107D92000606060707070707070707070707070774 |
:107DA2000707070707070707070707070707070761 |
:107DB2000707070707070707070707070707070751 |
:107DC2000707070707070707070707070707070741 |
:107DD2000707070808080808080808080808080824 |
:107DE2000808080808080808080808080808080811 |
:107DF2000808080808080808080808080808080801 |
:107E020008080808080808080808080808080808F0 |
:107E120008080808080808080808080808080808E0 |
:107E220008080808080808080808080808080808D0 |
:107E320008080808080808080808080808080808C0 |
:107E420008080808080808080808080808080808B0 |
:047E52000808080014 |
:00000001FF |
/branches/V0.68d_Xtype_and_bugfix/FlightCtrl.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/branches/V0.68d_Xtype_and_bugfix/GPS.c |
---|
0,0 → 1,30 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
} |
void GPS_BerechneZielrichtung(void) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
/branches/V0.68d_Xtype_and_bugfix/Hex-Files/BootLoader_MEGA644_20MHZ_V0_1.hex |
---|
0,0 → 1,64 |
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD |
:10F81000B1E0E0EEFBEF02C005900D92A030B10721 |
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B |
:10F83000E1F70C943B7C0C941D7C0895982F8091EB |
:10F84000C00085FFFCCF9093C60008958091C00052 |
:10F850008823E4F78091C600992708958DE40E94DB |
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441 |
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057 |
:10F88000F0E014915F01772474BE98E10FB6F8940C |
:10F8900090936000109260000FBE7092C5008AE2E3 |
:10F8A0008093C4008091C00082608093C0009093D8 |
:10F8B000C10086E08093C200EF01072D8091C00057 |
:10F8C00087FF0DC0013031F48091C6008A3AB1F152 |
:10F8D00000E005C08091C6008B3109F401E0CE0143 |
:10F8E00021968436910528F11F3F41F0112331F014 |
:10F8F000E0910001F091010109951BC01092C50033 |
:10F900008AE28093C4008AE00E941E7C8DE00E94FF |
:10F910001E7C86E50E941E7C80E30E941E7C8EE297 |
:10F920000E941E7C81E30E941E7C8AE30E941E7C52 |
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3 |
:10F940000E94267C813611F489E547C1813471F427 |
:10F950000E94267CA82EBB24BA2CAA240E94267CB6 |
:10F960009927A82AB92AB694A79406C1823629F401 |
:10F9700089E50E941E7C81E00BC1823409F083C0BE |
:10F980000E94267C9927D82FCC270E94267C992775 |
:10F99000C82BD92B0E94267C082F12E0812E11E063 |
:10F9A000912EEE24FF2464010894811C911CEC1616 |
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF |
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E |
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13 |
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA |
:10F9F0007727440F551F661F771F6A017B01C2E0FE |
:10FA0000D1E001E08991992729913327322F2227CC |
:10FA1000822B932B0C01FA0100935700E8951124D7 |
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192 |
:10FA300080935700E89507B600FCFDCF81E18093E5 |
:10FA40005700E89576956795579547955A0194C064 |
:10FA500080E00E941E7C90C0053409F08DC0F50145 |
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B |
:10FA700080BD3196FA9AF99AF999FECF215030401B |
:10FA800091F75F0179C0873609F047C00E94267C54 |
:10FA90009927D82ECC240E94267C9927C82AD92AB7 |
:10FAA0000E94267C863411F5E6016501EE24FF24D0 |
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F |
:10FAC0000E941E7C812F99270E941E7C82E090E07C |
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717 |
:10FAE000F694E794D794C79456012ACF853409F049 |
:10FAF00027CF7501E1BC8F2D992782BDF89A089414 |
:10FB0000E11CF11C80B50E941E7C0894C108D1083C |
:10FB1000C114D10479F7570113CF853601F594E765 |
:10FB2000791651F580E090E0A0E0B0E023E0FC0120 |
:10FB300020935700E89507B600FCFDCF80509F4FFB |
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B |
:10FB5000BE0768F381E180935700E8950DC08534B6 |
:10FB600069F488E190E02CE00FB6F894A8958093B2 |
:10FB700060000FBE209360008DE02FC08035E1F360 |
:10FB80008C34D1F3803711F483E527C0843721F416 |
:10FB90000E941E7C80E021C0843521F40E94267CD6 |
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51 |
:10FBB000863529F480E30E941E7C81E30EC08337E2 |
:10FBC00041F489E00E941E7C86E90E941E7C8EE141 |
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA |
:040000030000F80001 |
:00000001FF |
/branches/V0.68d_Xtype_and_bugfix/Hex-Files/Flight-Ctrl_MEGA644_V0_68d.hex |
---|
0,0 → 1,2024 |
:100000000C9432020C944F020C944F020C944F0249 |
:100010000C944F020C944F020C944F020C944F021C |
:100020000C944F020C94300C0C944F020C944F0221 |
:100030000C94A8150C944F020C944F020C944F0290 |
:100040000C944F020C944F020C946C0B0C944F02C6 |
:100050000C94BF040C944F020C9489040C944F022E |
:100060000C94360D0C944F020C94DC140C944F023B |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D414343206E69636874206102 |
:1000E000626765676C696368656E21000A0D496E19 |
:1000F00069742E20454550524F4D3A2047656E6534 |
:1001000072696572652044656661756C742D506115 |
:1001100072616D657465722E2E2E000A0D3D3D3D97 |
:100120003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DFF |
:100130003D3D3D3D3D3D3D3D3D3D3D000A0D466C57 |
:1001400069676874436F6E74726F6C0A0D486172F0 |
:1001500064776172653A25642E25640A0D536F66D3 |
:1001600074776172653A5625642E256425632000F4 |
:100170002E0048693A253469202043663A253469BF |
:10018000200047733A253469202047693A253469AD |
:1001900020004E693A2534692020526F3A2534698F |
:1001A000200045787465726E436F6E74726F6C20B8 |
:1001B000200052616E67653A2533692D2533690049 |
:1001C0005374656C6C756E673A202533690053650E |
:1001D00074706F696E7420202533690053657276E0 |
:1001E0006F202000506F7469343A20202533690055 |
:1001F000506F7469333A202025336900506F746959 |
:10020000323A202025336900506F7469313A20203A |
:100210002533690053746172743A20202020202510 |
:100220003569004D657373776572743A2020253502 |
:1002300069005269636874756E673A2020253569D4 |
:10024000004B6F6D706173732020202020202000F0 |
:10025000456D70662E506567656C3A2535690053AB |
:1002600070616E6E756E673A202025356900486FA3 |
:1002700063682025346920282533692900526F6C72 |
:100280006C20253469202825336929004E69636B69 |
:100290002025346920282533692900414343202D36 |
:1002A0002053656E736F720047696572202534694B |
:1002B00020282533692900526F6C6C202534692071 |
:1002C0002825336929004E69636B2025346920286D |
:1002D000253369290047696572202534692028255E |
:1002E00033692900526F6C6C20253469202825332E |
:1002F0006929004E69636B202534692028253369FC |
:1003000029004779726F202D2053656E736F72003C |
:1003100050333A253469202050343A25346920007E |
:1003200050313A253469202050323A253469200072 |
:1003300047733A253469202047693A2534692000FB |
:100340004E693A2534692020526F3A2534692000DD |
:100350004B373A25346920204B383A253469200040 |
:100360004B353A25346920204B363A253469200034 |
:100370004B333A25346920204B343A253469200028 |
:100380004B313A25346920204B323A25346920001C |
:100390004B6F6D706173733A2020202535690052D0 |
:1003A0006F6C6C3A202020202020253569004E6992 |
:1003B000636B3A20202020202025356900616B7472 |
:1003C0002E204C6167650048F668656E726567654A |
:1003D0006C756E67004B65696E6520004F66662020 |
:1003E00020202020203A20253569004C7566746451 |
:1003F0007275636B3A2025356900536F6C6C486FDA |
:100400006568653A2025356900486F6568653A205A |
:10041000202020202535690028632920486F6C673B |
:10042000657220427573730053657474696E673A20 |
:10043000202564200048573A5625642E2564205311 |
:10044000573A25642E25642563002B204D696B7275 |
:100450006F4B6F70746572202B005B25695D005BCC |
:1004600025695D0011241FBECFEFD0E1DEBFCDBFF7 |
:1004700014E0A0E0B1E0E2EBFAE702C005900D92D3 |
:10048000A43AB107D9F718E0A4EAB4E001C01D927C |
:10049000AE3DB107E1F70E948A020C94583D0C94DE |
:1004A000000022E030E0D9010E94443D802D8630DA |
:1004B00028F082E0D901082E0E944C3D90E008957A |
:1004C000FB01282F863008F025E0429FD00111243F |
:1004D000AC59BF4F842F90E0019724F001900E9407 |
:1004E0004C3DFACFA2E0B0E0022E0E944C3D0895B0 |
:1004F000FB01863008F085E0489FD0011124AC59FB |
:10050000BF4F842F90E0019724F00E94443D019258 |
:10051000FACF0895EF92FF921F93CF93DF9314B811 |
:1005200015B8189B02C08BE001C08AE080930001DF |
:1005300081E887B98FEF88B98BE184B981E085B90B |
:100540008EE38AB9579A87EF8BB984B7877F84BFC8 |
:10055000809160008861809360001092600080ED5F |
:1005600097E09093C6048093C50410925C051092A6 |
:100570005B0510921A081092190810925A051092F1 |
:1005800059051092580510925705809100018A3044 |
:1005900011F4289801C0289A0E94D30C0E94940656 |
:1005A0000E9493150E94300D0E94C21478941092FC |
:1005B0000C0784E480930D0787E080930E07209159 |
:1005C0000001822F6AE00E949D3C492F50E0822F5B |
:1005D0000E949D3C90E024E630E03F932F9324E47A |
:1005E00030E03F932F931F921F925F934F939F93FF |
:1005F0008F938CE391E09F938F931F920E94C80882 |
:100600008BE191E09F938F931F920E94C808299AD3 |
:10061000A1E0B0E00E94443D802D2DB73EB7205FA1 |
:100620003F4F0FB6F8943EBF0FBE2DBF8534A9F1E2 |
:100630008CEE90E09F938F931F920E94C8080E94B7 |
:10064000AE23C0E0D0E00F900F900F9081E4E82E31 |
:1006500088E0F82E1C2FC23039F0C33019F40E9404 |
:100660008C2204C0C43010F00E941D2347E4B7015F |
:10067000812F0E9460022196C630D10559F783E090 |
:1006800022E030E0D901082E0E944C3D85E4215043 |
:100690003040D901082E0E944C3DC4E0D0E0DE017C |
:1006A0000E94443D802D853050F083ED90E09F9373 |
:1006B0008F931F920E94C8080F900F900F9022975F |
:1006C000DE010E94443D802D863028F082E0DE016C |
:1006D000082E0E944C3D47E461E478E00E947802D5 |
:1006E000DE010E94443D802D863028F082E0DE014C |
:1006F000082E0E944C3D90E09F938F9388EB90E0F2 |
:100700009F938F931F920E94C808809149080F9071 |
:100710000F900F900F900F9080FD03C0C8EED3E0B4 |
:1007200020C08BE990E09F938F931F920E94C8088E |
:1007300088EE93E00E941B0CEC010E94CE0F0F90FC |
:100740000F900F90CE010E94240C8823D9F386E9E4 |
:1007500090E09F938F931F920E94C8080F900F9074 |
:100760000F900E941621809100018A3011F4289880 |
:1007700001C0289A80ED97E09093C6048093C50449 |
:1007800085E58093160788E890E09F938F931F92EA |
:100790000E94C808809149080F900F900F9082FF27 |
:1007A00003C08CE790E002C084E790E09F938F93B2 |
:1007B0001F920E94C8080F900F900F9080E790E062 |
:1007C0009F938F931F920E94C8080E94171088E879 |
:1007D00093E190938603809385030F900F900F9081 |
:1007E0008091C2048823E1F31092C2040E943F2446 |
:1007F0000E94CF20209100012A3011F4289801C0D6 |
:10080000289A80910301882321F08150809303016D |
:1008100012C01092B4041092B504109220071092E6 |
:1008200079051092780510927B0510927A05109246 |
:100830007D0510927C0580915605882329F08091D2 |
:1008400056058150809356058091850390918603CB |
:10085000892B01F585E090E09093860380938503D2 |
:100860000E946D1580910403909105038F5F9F4F47 |
:10087000F9F480915F058823D9F080E197E29093A5 |
:10088000C6048093C50480E890E0909305038093AC |
:1008900004030EC080918503909186030197909385 |
:1008A0008603809385032A3011F4289801C0289A82 |
:1008B0008091C204882311F40E94AF060E9457075A |
:1008C000CE010E94240C882309F48ACF20910803CA |
:1008D000309109038091590890E0281739079CF45A |
:1008E00080910403909105038F5F9F4F61F480E72F |
:1008F00097E19093C6048093C50480E093E09093C1 |
:1009000005038093040384E690E00E941B0CEC0135 |
:1009100067CF1F920F920FB60F9211248F939F9360 |
:10092000EF93FF93809101018823E1F48091BE044D |
:100930009091BF0401969093BF048093BE04FC0184 |
:10094000E252FA4FE081ED3019F08639910539F421 |
:100950001092BF041092BE0481E080930101E093E5 |
:10096000C60004C01092BF041092BE04FF91EF9124 |
:100970009F918F910F900FBE0F901F9018951F920F |
:100980000F920FB60F9211242F933F934F938F9393 |
:100990009F93AF93BF93CF93DF93EF93FF93809198 |
:1009A000C6008093A8044091B904463910F0109213 |
:1009B000B8048091A8048D3009F05CC08091B8041F |
:1009C000823009F057C01092B804A42FB0E0FD01A6 |
:1009D000E15EF84F3081ED01C05ED84F28818091F3 |
:1009E000BC049091BD04831B9109821B91099F70E7 |
:1009F0009093BD048093BC049C0196E036952795A6 |
:100A00009A95E1F7235C2093BB04982F9F73935C26 |
:100A10009093BA048081281729F48881981711F4DB |
:100A200091E006C08091AB048F5F8093AB0490E0AF |
:100A30008091A904882309F065C0992309F462C054 |
:100A400081E08093A9044093AC04AF5DB84F8DE082 |
:100A50008C9380912307823509F054C088E190E09F |
:100A60002CE00FB6F894A895809360000FBE2093F9 |
:100A7000600048C08091B8048130D9F0813018F00E |
:100A80008230F1F521C08091A804833239F480913D |
:100A9000A904882319F481E08093B8048091A80404 |
:100AA0008093210781E08093B9048091A80490E0AD |
:100AB00022C082E08093B804E42FF0E08091A80483 |
:100AC000EF5DF84F808309C0E42FF0E08091A80427 |
:100AD000EF5DF84F8083463920F44F5F4093B904AF |
:100AE00002C01092B8042091A8048091BC04909197 |
:100AF000BD04820F911D9093BD048093BC0402C07D |
:100B00001092B804FF91EF91DF91CF91BF91AF9117 |
:100B10009F918F914F913F912F910F900FBE0F900A |
:100B20001F901895DC0120E030E040E050E008C064 |
:100B3000FA01E252FA4F8081280F311D4F5F5F4F5B |
:100B40004A175B07A9F73F70C90136E0969587956C |
:100B50003A95E1F7835CFD01E252FA4F80831196EA |
:100B60002F73235CFD01E252FA4F2083A152BA4F4A |
:100B70008DE08C93109201018091DE058093C60078 |
:100B800008951F93CF93DF93EA01722F93E290931E |
:100B9000DE056093DF058093E005A3E0B0E060E050 |
:100BA0004FC0FE01E60FF11D90816F5F715019F487 |
:100BB00010E040E00FC0FE01E60FF11D40816F5FC5 |
:100BC000715011F410E006C0FE01E60FF11D108116 |
:100BD0006F5F7150892F86958695835CFD01E25287 |
:100BE000FA4F808350E09A0184E0369527958A95E4 |
:100BF000E1F7892F90E083709070F4E0880F991FDF |
:100C0000FA95E1F7282B235CFD01E152FA4F20838E |
:100C1000812F82958695869583704F705070440F12 |
:100C2000551F440F551F842B835CFD01E052FA4F82 |
:100C300080831F73135CFD01EF51FA4F10831496EC |
:100C4000772309F0AECFCD010E949205DF91CF91BD |
:100C50001F9108951F93CF93DF93EC0170E0A22FB3 |
:100C6000B0E0129748C0E42FF0E0EF5DF84F30811C |
:100C70004F5FE42FF0E0EF5DF84F50814F5FE42FBE |
:100C8000F0E0EF5DF84F10814F5FE42FF0E0EF5D93 |
:100C9000F84F20814F5F842F90E0A817B90774F1B7 |
:100CA0005D53FE01E70FF11D852F82958F703D5337 |
:100CB000330F330F382B3083613001F1912F9D5367 |
:100CC0007F5FFE01E70FF11D71505295507F892F14 |
:100CD00086958695582B508363506F3F79F07E5FE1 |
:100CE000FE01E70FF11D9295990F990F907C2D53FE |
:100CF000922B90837F5F662309F0B5CFDF91CF9170 |
:100D00001F9108951F93182F8A3019F48DE00E94C7 |
:100D100082068091C00085FFFCCF1093C60080E062 |
:100D200090E01F9108950895E1ECF0E088E1808360 |
:100D3000A0ECB0E08C9182608C938081806880838D |
:100D40008081806480838AE28093C40088EC90E094 |
:100D50000E941B0C90930B0780930A0708958091C3 |
:100D60000101882309F4A2C08091A404882371F0B2 |
:100D700080910101882351F06091DD052BE046E16F |
:100D800057E087E40E94C1051092A40480910A07ED |
:100D900090910B070E94240C882321F48091A604D3 |
:100DA0008823B1F080910101882391F06091DD05E5 |
:100DB00022E447EB57E084E40E94C1051092A604A8 |
:100DC00084EF91E00E941B0C90930B0780930A071D |
:100DD000609102016F3F89F0462F50E094E0440F8C |
:100DE000551F9A95E1F74C5F5E4F605D20E181E40D |
:100DF0000E94C1058FEF809302019091F90799231A |
:100E0000A1F080910101882381F083E28093DE05C7 |
:100E10009093DF058DE08093E00510920101109220 |
:100E2000F9078091DE058093C6008091A504882390 |
:100E300059F180910101882339F10E94201010920C |
:100E4000A5043091AE04932F9F5F9093AE0494302D |
:100E500021F08091AF04882359F026E145E158E064 |
:100E600060E084E30E94C1058FEF8093AE040CC064 |
:100E700044E1949FA0011124465E5C4F24E160E0B0 |
:100E8000832F8F5C0E94C1058091A704882371F095 |
:100E900080910101882351F06091DD052AE04CE04A |
:100EA00057E086E50E94C1051092A70408951F939C |
:100EB000CF93DF93CDB7DEB722970FB6F894DEBF9E |
:100EC0000FBECDBF8091A904882309F4FEC08FEF27 |
:100ED00080930301809123078B3609F479C08C3607 |
:100EE00088F48336D1F1843630F48136C1F082360D |
:100EF00009F0E9C020C0873609F47BC0883609F0C4 |
:100F0000E2C042C0813709F478C0813708F49DC03F |
:100F1000843709F454C0863709F0D5C066C02091E3 |
:100F2000AC0443E062E0CE0101960E942A0689816A |
:100F300080930201C8C02091AC0443E06BE086E1DD |
:100F400097E00E942A068091ED0490911807892B62 |
:100F50008093ED0480911F0745C02091AC0443E0CD |
:100F60006BE086E197E00E942A068091ED04909163 |
:100F70001807892B8093ED0480911F078093F90750 |
:100F800081E08093A6049FC02091AC0443E062E01E |
:100F9000CE0101960E942A068091ED049981892B49 |
:100FA0008093ED048A818F3F21F481E08093AF0428 |
:100FB00002C01092AF0481E08093A50484C0209108 |
:100FC000AC0443E064E080EB94E00E942A067BC01E |
:100FD0002091AC0443E064E084EB94E00E942A0694 |
:100FE0008091B7048093F9076EC081E08093A704D5 |
:100FF0006AC081E08093A40466C02091AC0443E001 |
:1010000062E0CE0101960E942A0689818F3F89F015 |
:10101000863010F085E0898347E461E478E08981D7 |
:101020000E9478026091DD05898127E441E458E05F |
:1010300008C01091DD050E94510227E441E458E008 |
:10104000612F855B0E94C1053EC02091AC0443E046 |
:1010500067E481E498E00E942A068091230747E430 |
:1010600061E478E08B560E946002809123078B56E2 |
:10107000A2E0B0E0082E0E944C3D60916C0870E048 |
:1010800080E090E024EC39E040E050E00E947E3CBB |
:1010900060938703709388038093890390938A03F6 |
:1010A00060916D0870E080E090E00E947E3C60936B |
:1010B0008B0370938C0380938D0390938E030E9417 |
:1010C00051020E9477221092A90422960FB6F8943A |
:1010D000DEBF0FBECDBFDF91CF911F910895982F36 |
:1010E0008091FA07813069F48091EC04E82FF0E0F8 |
:1010F000E65EFC4F90838F5F8093EC0421E030E04C |
:1011000005C0892F0E948206282F30E0C90108956A |
:101110001F93182F04C080E30E946F08115011160E |
:10112000D4F31F9108951F93182F04C080E20E94EA |
:101130006F0811501116D4F31F9108950F931F9348 |
:10114000CF93DF938C01EB0108C0F8010F5F1F4FB5 |
:10115000E4918E2F0E946F0821972097B1F7DF91BD |
:10116000CF911F910F9108950F931F93CF93DF930A |
:101170008C01EB0106C0F80181918F010E946F087C |
:1011800021972097C1F7DF91CF911F910F9108957B |
:101190002F923F924F925F926F927F928F929F9287 |
:1011A000AF92BF92CF92DF92EF92FF920F931F9375 |
:1011B000CF93DF93CDB7DEB7E5970FB6F894DEBFD8 |
:1011C0000FBECDBF2B968FAD2B978093FA07CE0124 |
:1011D000835B9F4F9B838A832D964EAC5FAC2D978C |
:1011E0001EA61FA618AA19AA9E01225D3F4F3DAB5D |
:1011F0002CAB820102C00F5F1F4FF801F490FF205B |
:1012000019F0F5E2FF16B9F7B8016419750919F07C |
:10121000C2010E949E08FF2009F445C228010894DB |
:10122000411C511C1982AA81BB8133241BAA2FEFB8 |
:101230002AABF2010894411C511CB490632D70E05C |
:101240006170707035E7B31621F08B2D806288379E |
:10125000C9F46115710559F02D913D914D915C9145 |
:1012600013972EA73FA748AB59AB14960BC08D918F |
:101270009C9111979C0140E050E02EA73FA748ABFE |
:1012800059AB129630E2B31621F48981882389F68E |
:101290001CC043E2B41611F458E055C08AE2B816F7 |
:1012A00021F09DE2B91671F408C0FD011296E081AB |
:1012B000EBABE7FFBECFE195EBABE0E13E2AFFED04 |
:1012C0003F22B7CF2BE2B21611F4B982B2CF3EE281 |
:1012D000B31699F5F2010894411C511C84918A328D |
:1012E00021F0B82E20E030E01DC0FD0112964081B3 |
:1012F000518157FF02C04FEF5FEF4AAB9ACFC90150 |
:1013000053E0880F991F5A95E1F7220F331F280FDA |
:10131000391F2B0D311D20533040F2010894411C20 |
:10132000511CB4908B2D80538A3048F3A90137FFAC |
:1013300002C04FEF5FEF4AAB85CF40E3B41629F40C |
:1013400034FC77CF50E2352A74CF8B2D815389300E |
:10135000D8F420E030E0C90103E0880F991F0A9516 |
:10136000E1F7220F331F280F391F2B0D311D20539A |
:101370003040F2010894411C511CB4908B2D8053D5 |
:101380008A3048F32BAB5ECF88E6B81619F494E0A8 |
:10139000392A4FCFECE6BE1619F4F1E03F2A49CFC7 |
:1013A000BB83AA8323E6B21639F41296BB83AA83C1 |
:1013B00012978C918E8322C134E4B31639F044E63F |
:1013C000B41631F059E6B516A9F502C081E0382A05 |
:1013D00030FE08C01496BB83AA835E914E913E9165 |
:1013E0002E910AC01296BB83AA839E918E919C0176 |
:1013F000442737FD4095542F2EA73FA748AB59AB44 |
:101400008EA59FA5A8A9B9A9BB238CF42EA53FA59D |
:1014100048A959A950954095309521953F4F4F4F78 |
:101420005F4F2EA73FA748AB59AB8DE28983BAE047 |
:101430002B2E80C03FE4B31621F04FE6B41631F4F2 |
:1014400002C051E0352AA8E02A2E73C080E7B81602 |
:1014500089F41296BB83AA839E918E919C0140E0F1 |
:1014600050E02EA73FA748AB59AB30E4332AF8E74A |
:10147000BF2E5DC043E7B416D1F51296BB83AA8395 |
:10148000DE90CE90C114D10489F488E28E838EE67A |
:101490008F8385E788878CE689878A8789E28B87AF |
:1014A0001C86E6E0CE2ED12CCC0EDD1E5AA957FDAF |
:1014B00014C0452F552747FD509560E070E0C601E8 |
:1014C0000E94563A009711F4FAA80EC0F82EFC18A4 |
:1014D0008AA98F154CF4F82E07C0F6010190002060 |
:1014E000E9F73197FE2EFC18198240E090C095E58F |
:1014F000B91621F0A5E7BA1631F402C0B1E03B2AD3 |
:101500007AE0272E16C0E8E5BE1621F0F8E7BF16F0 |
:1015100009F070C033FE0BC02EA53FA548A959A9FC |
:10152000211531054105510511F030E4332A60E100 |
:10153000262E19824AA947FD02C05FED35228EA5ED |
:101540009FA5A8A9B9A90097A105B10549F49AA931 |
:10155000992331F45EE2C52ED12CCC0EDD1E46C09F |
:101560006EA47FA488A899A84EE2C42ED12CCC0EDC |
:10157000DD1EE22CFF2400E010E06EA57FA588A907 |
:1015800099A9A80197010E94D03C6A3020F430E369 |
:10159000A32EA60E08C027E5A22EA60EA8E5BA1611 |
:1015A00011F4BFEDAB22F601A2926F016EA57FA5EB |
:1015B00088A999A9A80197010E94D03C2EA73FA70E |
:1015C00048AB59AB6E147F048006910618F03901C0 |
:1015D0004A01D3CFF8E02F1649F433FE07C020E3C9 |
:1015E000A21621F080E3D6018E936D01FCA8FC18B1 |
:1015F0004AA90DC0BB2009F456C0BE82198296E0EC |
:10160000C92ED12CCC0EDD1E40E0FF24F394E42E35 |
:10161000EF18E7FCEE248981882319F08F2D8F5F66 |
:1016200006C036FC02C08F2D02C08F2D8E5FA82E03 |
:10163000AE0C032D10E080E3882E912C80229122A5 |
:101640008114910421F48BA98A190E94930889813D |
:10165000882329F061E070E0CE01019609C006FF01 |
:1016600009C080E38C83BD8262E070E0CE01049605 |
:101670000E94B408B0E28B16910421F48BA98A1958 |
:101680000E9488088E2D0E9488086F2D772767FD9D |
:101690007095C6010E94B40804FFABCD8BA98A19CE |
:1016A0000E949308A6CDE5960FB6F894DEBF0FBE54 |
:1016B000CDBFDF91CF911F910F91FF90EF90DF9001 |
:1016C000CF90BF90AF909F908F907F906F905F90E2 |
:1016D0004F903F902F9008951F920F920FB60F9248 |
:1016E00011242F933F935F936F937F938F939F93D7 |
:1016F000AF93BF938091C90481508093C9048F3FF9 |
:10170000B9F489E08093C904809107038F5F8170E9 |
:1017100080930703882319F481E08093C2048091A9 |
:10172000C0049091C10401969093C1048093C004B9 |
:101730008091C5049091C6040297B8F08091C504C9 |
:101740009091C60401979093C6048093C50480913C |
:10175000C5049091C60420910403309105038223AF |
:101760009323892B09F053C006C08FEF9FEF90930E |
:10177000050380930403809100018A3039F404C08A |
:101780005A9A05C0479A03C05A9801C04798809159 |
:10179000490883FF42C0349B0AC08091C3049091E2 |
:1017A000C40401969093C4048093C30436C080910E |
:1017B000C3049091C404892B79F08091C304909163 |
:1017C000C404805A9F4040F48091C3049091C404A3 |
:1017D0009093470580934605809146059091470573 |
:1017E0002091480530914905845E9D4F821B930BE3 |
:1017F00068E671E00E94BD3C845B904090934B058D |
:1018000080934A051092C4041092C30406C08091CC |
:1018100000018A3009F0B6CFB3CFBF91AF919F914D |
:101820008F917F916F915F913F912F910F900FBE9C |
:101830000F901F9018952091C0043091C1042F5F24 |
:101840003F4F820F931F08952091C0043091C1042F |
:10185000821B930B892F99278695807490E00895B9 |
:101860001F920F920FB60F9211241F932F933F9345 |
:101870004F935F936F937F938F939F93AF93BF9398 |
:10188000CF93DF93EF93FF93809106038150809372 |
:1018900006038F3F09F06FC083E88093B00080910A |
:1018A0009C03C82FD0E0D093C804C093C704809194 |
:1018B00076081091630880FF1FC060910A0570913F |
:1018C0000B0580910C0590910D0520E830E040E07B |
:1018D00050E00E94F23CCA01B901212F30E040E003 |
:1018E00050E00E947E3C20E032E040E050E00E9468 |
:1018F000F23CC20FD31F1EC060910A0570910B0508 |
:1019000080910C0590910D0520E830E040E050E01A |
:101910000E94F23CCA01B901212F30E040E050E0C2 |
:101920000E947E3C20E032E040E050E00E94F23C29 |
:10193000C21BD30BD093C804C093C7042091C70423 |
:101940003091C8048091640890E02817390734F07A |
:101950008091650890E08217930724F49093C8045F |
:101960008093C7048091C7048093B3008091660878 |
:101970008093060304C083E08093B0005F98FF91DA |
:10198000EF91DF91CF91BF91AF919F918F917F9117 |
:101990006F915F914F913F912F911F910F900FBECB |
:1019A0000F901F9018958091C0049091C1040B96E0 |
:1019B0009093CB048093CA0482E085BD83EA84BD02 |
:1019C00017BC88E788BD96E096BD83EC8093B00095 |
:1019D0009093B100E0E7F0E0808182608083EEE6E2 |
:1019E000F0E08081816080838AE08093B300109270 |
:1019F000B2000895AC012091C0043091C1042F5F62 |
:101A00003F4F03C08FEE80937A008091C004909185 |
:101A1000C104B901681B790BCB01840F951F80703D |
:101A20009078892F99278695882361F30895AC01D2 |
:101A30002091C0043091C1042F5F3F4F8091C004BA |
:101A40009091C104B901681B790BCB01840F951FDC |
:101A500080709078892F99278695882379F3089547 |
:101A600010927C008FEE80937A0008951F920F925F |
:101A70000FB60F921124EF92FF920F931F932F93A3 |
:101A80003F934F935F936F937F938F939F93AF9306 |
:101A9000BF93CF93DF93EF93FF9310927A008091DF |
:101AA000E8048F5F8093E8048150853009F486C094 |
:101AB000863090F4823009F440C0833030F48823BB |
:101AC000F1F0813009F044C22FC0833009F441C0E5 |
:101AD000843009F03DC25AC0883009F4C2C0893050 |
:101AE00038F4863009F483C0873009F031C29CC0D5 |
:101AF000893009F4D3C08A3009F02AC2B1C180917B |
:101B00007800909179009093E7048093E60481E057 |
:101B10008093E9048091E0049091E1040196909310 |
:101B2000E1048093E00418C28091780090917900DC |
:101B30009093E5048093E40492C0809178009091A2 |
:101B400079009093E3048093E20484E08093E904B5 |
:101B500003C240910803509109038091780090914D |
:101B600079009A01220F331F240F351F63E070E0C4 |
:101B70000E94A93C260F371F369527953695279545 |
:101B8000309309032093080386E0E0CF809102059B |
:101B9000909103052091780030917900821B930B7E |
:101BA0009093FC078093FB078091FB079091FC07C3 |
:101BB0009093D3048093D20487E0C8CF80917800BB |
:101BC000909179002091000530910105821B930BC3 |
:101BD0009093070880930608809106089091070863 |
:101BE0009093D5048093D4041092E904B5C18091F8 |
:101BF00000012091E6043091E7048A3049F4809195 |
:101C0000780090917900820F931F9695879506C072 |
:101C10008091780090917900820F931F9093D10466 |
:101C20008093D00481E092CF809100012091E40460 |
:101C30003091E5048A3049F48091780090917900E0 |
:101C4000820F931F9695879506C08091780090919A |
:101C50007900820F931F9093CF048093CE0482E08B |
:101C600075CF809100012091E2043091E3048A3025 |
:101C700049F48091780090917900820F931F969596 |
:101C8000879506C08091780090917900820F931F0C |
:101C90009093CD048093CC0485E058CF6091780078 |
:101CA00070917900E0900405F0900505009106051B |
:101CB00010910705882777FD8095982F0E94633B38 |
:101CC000A80197010E94633A0E94303B7093D704A9 |
:101CD0006093D604E091D604F091D7048091FB077D |
:101CE0009091FC07C0910608D091070897FF03C0A8 |
:101CF000909581959F4F64E070E00E94BD3C9B01F0 |
:101D0000CE01D7FF03C0909581959F4F64E070E0AE |
:101D10000E94BD3C260F371FE20FF31FF093D7043C |
:101D2000E093D6048091D6049091D704029704F1F1 |
:101D30006091040570910505809106059091070555 |
:101D400020E030E048E454E40E949E3B88230CF0FD |
:101D50003CC0609104057091050580910605909145 |
:101D600007052AE037ED43EA5CE30E94643A25C0A8 |
:101D70008091D6049091D7048F5F9F4F34F5609186 |
:101D8000040570910505809106059091070520E0F6 |
:101D900030E046E154E40E94A23B1816B4F460918E |
:101DA00004057091050580910605909107052AE0CC |
:101DB00037ED43EA5CE30E94633A60930405709355 |
:101DC0000505809306059093070581E08093DD0467 |
:101DD00080917800909179009093FE078093FD07A1 |
:101DE00020914205309143054091440550914505AD |
:101DF0008091D6049091D704AA2797FDA095BA2F79 |
:101E0000820F931FA41FB51F809342059093430533 |
:101E1000A0934405B0934505E0904205F09043053A |
:101E2000009144051091450560914205709143056C |
:101E3000809144059091450520E034E040E050E079 |
:101E40000E94F23CE21AF30A040B150BE0924205E1 |
:101E5000F0924305009344051093450583E076CE48 |
:101E600080910B0890910C082091780030917900B6 |
:101E7000820F931F90930C0880930B0880910308A6 |
:101E80008F5F8093030880910308853008F460C059 |
:101E9000809178009091790090930F0380930E03C6 |
:101EA000109203088091FF079091000820910B0881 |
:101EB00030910C08821B930B2091600530916105D5 |
:101EC000821B930B9093DF048093DE0420910B0818 |
:101ED00030910C08E0900A03F0900B0300910C0382 |
:101EE00010910D03C801B701660F771F881F991F56 |
:101EF0006E0D7F1D801F911F442737FD4095542F85 |
:101F0000620F731F841F951F24E030E040E050E013 |
:101F10000E94F23C20930A0330930B0340930C037E |
:101F200050930D032091FF073091000880910A0320 |
:101F300090910B03A0910C03B0910D03281B390B5A |
:101F4000309361052093600510920C0810920B08E5 |
:101F50001092E9041092E8048091E90480937C00D7 |
:101F60008091E804882319F08FEE80937A00FF9126 |
:101F7000EF91DF91CF91BF91AF919F918F917F9121 |
:101F80006F915F914F913F912F911F910F91FF9012 |
:101F9000EF900F900FBE0F901F9018950F931F9307 |
:101FA000CF93DF93A3E0B0E00E94443D802DC82F83 |
:101FB000D0E0C531D10508F02A97C7BD84E690E08E |
:101FC0000E94FA0C80910E0390910F03825593406A |
:101FD000C8F4C0E0D0E016C0C7BD82E390E00E9424 |
:101FE000FA0C1F930F931F920E94C80880910E0352 |
:101FF00090910F030F900F900F908458934038F0FA |
:10200000219602C000E711E0CA3FD10528F3A3E002 |
:10201000B0E00C2E0E944C3DC09308088CE291E089 |
:102020000E94FA0CDF91CF911F910F910895EAE180 |
:10203000F3E080E2819383E0EA36F807D1F7089570 |
:102040001F938091ED04282F30E0C90181709070BA |
:10205000682F8823A9F08091EE04882311F0815025 |
:1020600002C080916A038093EE04EAE1F3E080E22B |
:10207000819383E0EA36F807D1F78FEF8093AE04BF |
:10208000A9014270507021FF10C08091EE048F5F53 |
:102090008093EE04EAE1F3E080E2819393E0EA3694 |
:1020A000F907D1F78FEF8093AE04662321F0452B1B |
:1020B00011F01092EE048091EE04282F30E08A3067 |
:1020C00040F481E18093EC043F932F938FE594E0FB |
:1020D00007C080E18093EC043F932F938AE594E05E |
:1020E0009F938F9381E08F930E94C8080F900F9069 |
:1020F0000F900F900F901091EE04153009F403C269 |
:10210000163090F4123009F4D0C0133030F411239B |
:1021100009F1113009F02DC465C0133009F41BC159 |
:10212000143009F026C46BC1183009F418C31930F3 |
:1021300038F4163009F4A1C2173009F01AC4EBC202 |
:102140001A3009F486C31A3008F447C31B3009F06B |
:1021500010C4BDC31092EC048AE494E09F938F9363 |
:1021600011E01F930E94C80884E18093EC04209141 |
:102170000001822F6AE00E949D3C492F50E0822F8F |
:102180000E949D3C90E024E630E03F932F9324E4AE |
:1021900030E03F932F931F921F925F934F939F9333 |
:1021A0008F9385E394E09F938F931F930E94C808B9 |
:1021B00088E28093EC040E94510290E09F938F93F9 |
:1021C00088E294E09F938F931F930E94C8088CE34A |
:1021D0008093EC0488E194E09F938F931F930E9477 |
:1021E000C808C3C38091490880FF47C01092EC041F |
:1021F00080916005909161059F938F9389E094E0B1 |
:102200009F938F931F930E94C80884E18093EC04EE |
:1022100080916205909163059F938F938AEF93E07D |
:102220009F938F931F930E94C80888E28093EC04C9 |
:1022300080910E0390910F039F938F938BEE93E009 |
:102240009F938F931F930E94C8088CE38093EC04A4 |
:102250008091080890E09F938F938CED93E09F937B |
:102260008F931F930E94C8088DB79EB744960FB6F0 |
:10227000F8949EBF0FBE8DBF81C384E18093EC04B0 |
:1022800085ED93E09F938F931F930E94C80888E287 |
:102290008093EC0487EC93E09F938F931F930E94AD |
:1022A000C8088DB79EB70696E2CF1092EC048DEB6E |
:1022B00093E09F938F9311E01F930E94C80884E1DD |
:1022C0008093EC0460910A0570910B0580910C05D8 |
:1022D00090910D0520E034E040E050E00E94F23C97 |
:1022E0005F934F933F932F938EEA93E09F938F9347 |
:1022F0001F930E94C80888E28093EC046091120545 |
:1023000070911305809114059091150520E034E03B |
:1023100040E050E00E94F23C5F934F933F932F9335 |
:102320008FE993E09F938F931F930E94C8088CE3DB |
:102330008093EC0480914605909147059F938F937D |
:1023400080E993E09F938F931F930E94C8088DB7F5 |
:102350009EB746968CCF1092EC048091190890910C |
:102360001A0820911708309118089F938F933F9374 |
:102370002F9380E893E09F938F9311E01F930E9427 |
:10238000C80884E18093EC0480911D0890911E0898 |
:1023900020911B0830911C089F938F933F932F939C |
:1023A00080E793E09F938F931F930E94C80888E271 |
:1023B0008093EC04809121089091220820911F08BD |
:1023C000309120089F938F933F932F9380E693E063 |
:1023D0009F938F931F930E94C8088CE38093EC0413 |
:1023E0008091250890912608209123083091240897 |
:1023F0009F938F933F932F9380E593E07BC0109240 |
:10240000EC04E0914208F0E0EE0FFF1FEB5EF74FA7 |
:1024100020813181E0914108F0E0EE0FFF1FEB5E7B |
:10242000F74F808191813F932F939F938F9380E407 |
:1024300093E09F938F9311E01F930E94C80884E15B |
:102440008093EC04E0914408F0E0EE0FFF1FEB5E98 |
:10245000F74F20813181E0914308F0E0EE0FFF1F3C |
:10246000EB5EF74F808191813F932F939F938F93E2 |
:1024700080E393E09F938F931F930E94C80888E2A4 |
:102480008093EC04E0914608F0E0EE0FFF1FEB5E56 |
:10249000F74F20813181E0914508F0E0EE0FFF1FFA |
:1024A000EB5EF74F808191813F932F939F938F93A2 |
:1024B00080E293E09F938F931F930E94C8088CE360 |
:1024C0008093EC04E0914808F0E0EE0FFF1FEB5E14 |
:1024D000F74F20813181E0914708F0E0EE0FFF1FB8 |
:1024E000EB5EF74F808191813F932F939F938F9362 |
:1024F00080E193E09F938F931F930E94C8088DB74C |
:102500009EB74C96B4CE1092EC0482E093E09F9379 |
:102510008F9311E01F930E94C8080F900F900F90A7 |
:10252000809100018A3009F04AC084E18093EC0474 |
:102530004091F6045091F7048091CC049091CD0421 |
:102540002091F6043091F704821B930B5F934F9315 |
:102550009F938F9383EF92E09F938F931F930E949B |
:10256000C80888E28093EC044091F8045091F90483 |
:102570008091CE049091CF042091F8043091F90419 |
:10258000821B930B5F934F939F938F9384EE92E004 |
:102590009F938F931F930E94C8088CE38093EC0451 |
:1025A0008091FA049091FB042091B0083091B10819 |
:1025B0009F938F933F932F9385ED92E055C084E1D5 |
:1025C0008093EC048091F6049091F70462E070E04F |
:1025D0000E94BD3C8091CC049091CD042091F604E2 |
:1025E0003091F704821B930B7F936F939F938F938C |
:1025F00086EC92E09F938F931F930E94C80888E215 |
:102600008093EC048091F8049091F90462E070E00A |
:102610000E94BD3C8091CE049091CF042091F8049B |
:102620003091F904821B930B7F936F939F938F9349 |
:1026300087EB92E09F938F931F930E94C8088CE3CF |
:102640008093EC048091FA049091FB0462E070E0C6 |
:102650000E94BD3C8091B0089091B1087F936F9328 |
:102660009F938F9388EA92E09F938F931F930E948A |
:10267000C8088DB79EB74596FACD1092EC048BE949 |
:1026800092E09F938F9311E01F930E94C80884E10A |
:102690008093EC0480910005909101052091D40471 |
:1026A0003091D5049F938F933F932F938CE892E0C2 |
:1026B0009F938F931F930E94C80888E28093EC0435 |
:1026C00080910205909103052091D2043091D304AA |
:1026D0009F938F933F932F938DE792E09F938F93D8 |
:1026E0001F930E94C8088CE38093EC04609104055A |
:1026F0007091050580910605909107050E94303B79 |
:1027000020919808309199087F936F933F932F936E |
:102710008EE692E025C184E18093EC048091080369 |
:10272000909109039F938F938FE592E09F938F93EE |
:1027300011E01F930E94C80888E28093EC04809106 |
:10274000560590E09F938F9380E592E09F938F933F |
:102750001F930E94C8088DB79EB70A9688CD109225 |
:10276000EC0481E492E09F938F9311E01F930E9409 |
:10277000C80884E18093EC0480914A0590914B0550 |
:102780009F938F9382E392E09F938F931F930E9476 |
:10279000C80888E28093EC04809146059091470533 |
:1027A0009F938F9383E292E09F938F931F930E9456 |
:1027B000C8088CE38093EC0480914805909149050A |
:1027C0009F938F9384E192E09F938F931F930E9436 |
:1027D000C8088DB79EB742964ACD1092EC048091FE |
:1027E0004E0590914F059F938F9388E092E09F93C1 |
:1027F0008F9311E01F930E94C80884E18093EC043A |
:1028000080915005909151059F938F938CEF91E0AB |
:102810009F938F931F930E94C80888E28093EC04D3 |
:1028200080915205909153059F938F9380EF91E093 |
:102830009F938F931F930E94C8088CE38093EC04AE |
:1028400080915405909155059F938F9384EE91E06C |
:1028500006CD1092EC048CED91E09F938F9311E0E4 |
:102860001F930E94C80884E18093EC0480919C032C |
:1028700090E09F938F938EEC91E09F938F931F93A3 |
:102880000E94C80888E28093EC048091C70490916C |
:10289000C8049F938F9380EC91E09F938F931F9335 |
:1028A0000E94C8088CE38093EC042091650830E016 |
:1028B0008091640890E03F932F939F938F9382EBD6 |
:1028C00091E09F938F931F930E94C808CDCC1092E4 |
:1028D000EC0482EA91E09F938F9311E01F930E9492 |
:1028E000C80884E18093EC0420911A07332727FD60 |
:1028F000309580911907992787FD90953F932F93E5 |
:102900009F938F9382E991E09F938F931F930E94EF |
:10291000C80888E28093EC0420911B07332727FD29 |
:10292000309580911C0790E03F932F939F938F9356 |
:1029300082E891E09F938F931F930E94C8088CE3D5 |
:102940008093EC042091200730E080911D079927A7 |
:1029500087FD90953F932F939F938F9382E791E00C |
:102960009F938F931F930E94C8088DB79EB7489678 |
:102970007ECC115010936A031092EE041092ED0475 |
:102980001F9108951092B9008AE28093B8000895CB |
:1029900085EA8093BC0080E090E0089584E980930C |
:1029A000BC0008951092B9008093BB0085E8809325 |
:1029B000BC0080E090E008951F920F920FB60F9236 |
:1029C00011248F939F93EF93FF938091EF048F5F78 |
:1029D0008093EF0481508330C1F1843028F481303A |
:1029E00091F0823020F50AC08530B9F18530E8F1E8 |
:1029F0008630D9F1873009F062C046C08091F0047A |
:102A0000880F8E5A0CC08091F0048F5F8093F00481 |
:102A100081502DC0833009F052C08091AA081092D5 |
:102A2000B9008093BB0085E88093BC0048C084E96E |
:102A30008093BC008091F004843018F41092EF046D |
:102A400002C01092F00485EAEFCF8091F104880F64 |
:102A50008D5AE5CF8230A9F0DDCF8091BB00E091A7 |
:102A6000F104F0E0E35FF74F80838091F10481305F |
:102A700029F0813078F780918B08D1CF8091900830 |
:102A8000CECF8091A808CBCF8091F1049091BB006C |
:102A9000E82FF0E0E35FF74F94838F5F8093F104BA |
:102AA000843010F01092F10484E98093BC008AE035 |
:102AB00090E090938603809385031092EF048091B9 |
:102AC000BC0080688093BC00FF91EF919F918F9133 |
:102AD0000F900FBE0F901F9018954CEB50E084E9BB |
:102AE000DA018C931092EF042BEB30E0F901808136 |
:102AF0001092F00480E88C931092BD001092BA00FE |
:102B00001082E9EBF0E01082A8EBB0E01C9210829A |
:102B10008AE28C9385EADA018C931082F9011082A3 |
:102B200085E88C93089583EC80938100EFE6F0E0D4 |
:102B30008081806280831092FB041092FA041092CC |
:102B4000F9041092F8041092F7041092F604089514 |
:102B50001F920F920FB60F9211240F931F932F9372 |
:102B60003F934F935F936F937F938F939F93AF9315 |
:102B7000BF93CF93DF93EF93FF9320918600309123 |
:102B800087008091F4049091F504281B390B809103 |
:102B90008600909187009093F5048093F404C90116 |
:102BA0008D5494400091F2041091F304835F9A4194 |
:102BB00060F40430110514F010926B0381E090E092 |
:102BC0009093F3048093F2048AC00A3011050CF04C |
:102BD00086C0C9018B5F9040845B914008F068C05B |
:102BE000E901C25DD140F801EE0FFF1FEB5EF74F28 |
:102BF000808191819E01281B390BC90137FF03C0D9 |
:102C0000909581959F4F06974CF480915605883C8E |
:102C100028F480915605865F80935605F801EE0FE3 |
:102C2000FF1FEB5EF74F20813181C901880F991F8B |
:102C3000820F931F8C0F9D1F64E070E00E94BD3CCB |
:102C40009B01CE010196861797071CF42150304056 |
:102C500006C021976C177D0714F42F5F3F4F8091BA |
:102C60005605E801CC0FDD1F833CB8F0FE01EB5E9A |
:102C7000F74F80819181A901481B590BCA0163E07C |
:102C800070E00E94BD3CCB01880F991F860F971FF3 |
:102C9000C55DD74F9983888304C0C55DD74F19821E |
:102CA0001882F801EE0FFF1FEB5EF74F3183208390 |
:102CB000F8013196F093F304E093F204E530F10566 |
:102CC00011F45D9A06C05D98E630F10511F45C9A46 |
:102CD00005C05C98379711F45B9A01C05B98FF912F |
:102CE000EF91DF91CF91BF91AF919F918F917F91A4 |
:102CF0006F915F914F913F912F911F910F910F9085 |
:102D00000FBE0F901F9018952F923F924F925F9297 |
:102D10006F927F928F929F92AF92BF92CF92DF92EB |
:102D2000EF92FF920F931F93CF93DF93CDB7DEB750 |
:102D300022970FB6F894DEBF0FBECDBF8091FA0484 |
:102D40009091FB042091D0043091D104821B930B0D |
:102D50009093B1088093B0088091CE049091CF04F5 |
:102D60002091F8043091F904821B930B90938A0808 |
:102D7000809389088091CC049091CD042091F60431 |
:102D80003091F704821B930B9093920880939108E3 |
:102D90008091890890918A089093F2078093F107B7 |
:102DA000E090AD08F090AE086091D4047091D50425 |
:102DB000882777FD8095982F2CE030E040E050E0A8 |
:102DC0000E947E3C0027F7FC0095102FE60EF71EB0 |
:102DD000081F191FC801B70122E030E040E050E0B1 |
:102DE0000E94F23C3093AE082093AD08E090B70803 |
:102DF000F090B8086091D2047091D304882777FDD1 |
:102E00008095982F2CE030E040E050E00E947E3C1E |
:102E10000027F7FC0095102FE60EF71E081F191F5C |
:102E2000C801B70122E030E040E050E00E94F23CEF |
:102E30003093B8082093B7082091980830919908EA |
:102E40006091D6047091D704882777FD8095982FDC |
:102E5000442737FD4095542F620F731F841F951F21 |
:102E600022E030E040E050E00E94F23C30939908CC |
:102E70002093980840911A0550911B0560911C05FC |
:102E800070911D052091D4043091D504C901880F9B |
:102E9000991F820F931F880F991F880F991FAA27C8 |
:102EA00097FDA095BA2F840F951FA61FB71F80937B |
:102EB0001A0590931B05A0931C05B0931D05409126 |
:102EC0001E0550911F0560912005709121052091EC |
:102ED000D2043091D304C901880F991F820F931F28 |
:102EE000880F991F880F991FAA2797FDA095BA2FC1 |
:102EF000840F951FA61FB71F80931E0590931F0573 |
:102F0000A0932005B09321056091220570912305BF |
:102F10008091240590912505E090FD07F090FE0733 |
:102F2000A0900405B0900505C0900605D090070557 |
:102F30000E94633B3B014C010027F7FC0095102FDA |
:102F4000C801B7010E94633BA60195010E94633A44 |
:102F50009B01AC01C401B3010E94643A0E94303B62 |
:102F60006093220570932305809324059093250593 |
:102F700020913A0530913B0540913C0550913D052B |
:102F80008091B0089091B108AA2797FDA095BA2F1B |
:102F9000820F931FA41FB51F80933A0590933B05A2 |
:102FA000A0933C05B0933D0520913E0530913F052F |
:102FB00040914005509141058091B0089091B10831 |
:102FC000AA2797FDA095BA2F820F931FA41FB51FA4 |
:102FD00080933E0590933F05A0934005B093410533 |
:102FE000209168052A83222309F069C08091690530 |
:102FF000882309F064C08091490886FF60C0609111 |
:103000002A0570912B0580912C0590912D05E0905B |
:10301000B008F090B108A0907605BB24CC24DD2444 |
:103020000027F7FC0095102F20E030E140E050E051 |
:103030000E94F23CC801B7010E947E3CA6019501A6 |
:103040000E947E3C20E038E040E050E00E94F23CEC |
:103050002093C5053093C6054093C7055093C80516 |
:10306000609132057091330580913405909135055A |
:10307000E090B008F090B10820E030E140E050E08E |
:103080000E94F23CCA01B901A60195010E947E3C52 |
:103090000027F7FC0095102FA80197010E947E3CA5 |
:1030A00020E038E040E050E00E94F23C2093C1056F |
:1030B0003093C2054093C3055093C40510C01092CD |
:1030C000C1051092C2051092C3051092C40510925A |
:1030D000C5051092C6051092C7051092C8058091CB |
:1030E000890890918A082090C5053090C6054090C7 |
:1030F000C7055090C805820D931D90938A08809350 |
:1031000089080091890810918A08A090C105B090A3 |
:10311000C205C090C305D090C40580917705682E84 |
:10312000772488249924C401B301A60195010E9443 |
:103130007E3C20E032E040E050E00E94F23C020F92 |
:10314000131F10938A080093890820913605309147 |
:103150003705409138055091390580918908909143 |
:103160008A08AA2797FDA095BA2F820F931FA41F44 |
:10317000B51F8093360590933705A0933805B0931B |
:1031800039054091320550913305609134057091B5 |
:1031900035058091890890918A08209164053091C5 |
:1031A0006505821B930BAA2797FDA095BA2F840F64 |
:1031B000951FA61FB71F8093320590933305A093E8 |
:1031C0003405B09335058091320590913305A09177 |
:1031D0003405B0913505E0908B03F0908C0300919D |
:1031E0008D0310918E03E816F9060A071B0704F5F4 |
:1031F00080E197E2A0E0B0E08E199F09A00BB10B2F |
:103200008093320590933305A0933405B093350530 |
:103210008091320590913305A0913405B091350528 |
:103220008093360590933705A0933805B093390500 |
:103230002091320530913305409134055091350588 |
:1032400088279927DC018E199F09A00BB10B28173D |
:1032500039074A075B0704F580EF98EDAFEFBFEF42 |
:10326000E80EF91E0A1F1B1FE0923205F09233058B |
:103270000093340510933505809132059091330504 |
:10328000A0913405B09135058093360590933705AC |
:10329000A0933805B09339058091CE049091CF0466 |
:1032A0000F9734F488E19CEF90938A088093890803 |
:1032B0008091CE049091CF04079734F480E398EF87 |
:1032C00090938A08809389089091000199839A309D |
:1032D000A9F48091CE049091CF04835F934034F0A1 |
:1032E00088EE93E090938A08809389088091CE04B9 |
:1032F0009091CF048A5F9340DCF014C08091CE049B |
:103300009091CF04855E974034F088EE93E09093DF |
:103310008A08809389088091CE049091CF04835FBE |
:10332000974034F080ED97E090938A088093890865 |
:1033300080919108909192088A199B099093920824 |
:10334000809391080091910810919208C401B301F3 |
:10335000A20191010E947E3C20E032E040E050E07A |
:103360000E94F23C021B130B1093920800939108E9 |
:1033700020912E0530912F05409130055091310557 |
:103380008091910890919208AA2797FDA095BA2F55 |
:10339000820F931FA41FB51F80932E0590932F05B6 |
:1033A000A0933005B093310540912A0550912B052B |
:1033B00060912C0570912D05809191089091920853 |
:1033C0002091660530916705821B930BAA2797FD14 |
:1033D000A095BA2F840F951FA61FB71F80932A05AB |
:1033E00090932B05A0932C05B0932D0580912A0571 |
:1033F00090912B05A0912C05B0912D05E0908703AD |
:10340000F09088030091890310918A03E816F90669 |
:103410000A071B0704F580E197E2A0E0B0E08E19EF |
:103420009F09A00BB10B80932A0590932B05A093C5 |
:103430002C05B0932D0580912A0590912B05A09124 |
:103440002C05B0912D0580932E0590932F05A09308 |
:103450003005B093310520912A0530912B0540911C |
:103460002C0550912D0588279927DC018E199F097D |
:10347000A00BB10B281739074A075B0704F580EF4B |
:1034800098EDAFEFBFEFE80EF91E0A1F1B1FE09289 |
:103490002A05F0922B0500932C0510932D058091A1 |
:1034A0002A0590912B05A0912C05B0912D058093B4 |
:1034B0002E0590932F05A0933005B0933105809190 |
:1034C000CC049091CD040F9734F488E19CEF909355 |
:1034D0009208809391088091CC049091CD04079735 |
:1034E00034F480E398EF9093920880939108998147 |
:1034F0009A30A9F48091CC049091CD04835F9340DD |
:1035000034F088EE93E09093920880939108809134 |
:10351000CC049091CD048A5F9340DCF014C080917C |
:10352000CC049091CD04855E974034F088EE93E012 |
:1035300090939208809391088091CC049091CD044F |
:10354000835F974034F080ED97E0909392088093EA |
:1035500091088FEE80937A0080913A0590913B0517 |
:10356000A0913C05B0913D058093260590932705D9 |
:10357000A0932805B093290580912A0590912B05E9 |
:10358000A0912C05B0912D0580930A0590930B0511 |
:10359000A0930C05B0930D058091320590913305F1 |
:1035A000A0913405B09135058093120590931305D1 |
:1035B000A0931405B093150580912E0590912F05C9 |
:1035C000A0913005B091310580930E0590930F05C1 |
:1035D000A0931005B09311058091360590913705A1 |
:1035E000A0913805B0913905809316059093170581 |
:1035F000A0931805B09319058091490887FF63C00F |
:103600002A81222309F05FC080916905882309F08F |
:103610005AC08091910890919208893C91055CF084 |
:103620002091910830919208809191089091920890 |
:103630002052334011C08091910890919208885394 |
:103640009F4FA4F4209191083091920880919108A5 |
:1036500090919208205E3C4F880F991F880F991F08 |
:10366000280F391F30939208209391088091890880 |
:1036700090918A08893C91055CF0209189083091ED |
:103680008A088091890890918A082052334011C09D |
:103690008091890890918A0888539F4FA4F42091C3 |
:1036A000890830918A088091890890918A08205E63 |
:1036B0003C4F880F991F880F991F280F391F30938F |
:1036C0008A082093890820914E0530914F058091FA |
:1036D0004508E82FF0E0EE0FFF1FEB5EF74F80810B |
:1036E000918182599F4F281739071CF42F5F3F4F54 |
:1036F0000CC08081918182599F4F821793074CF4AF |
:103700002115310531F02150304030934F05209381 |
:103710004E05209150053091510580914608E82FC3 |
:10372000F0E0EE0FFF1FEB5EF74F80819181825931 |
:103730009F4F281739071CF42F5F3F4F0CC0808123 |
:10374000918182599F4F821793074CF421153105BF |
:1037500031F0215030403093510520935005209195 |
:1037600052053091530580914708E82FF0E0EE0FA5 |
:10377000FF1FEB5EF74F8081918182599F4F281781 |
:1037800039071CF42F5F3F4F0CC080819181825913 |
:103790009F4F821793074CF42115310531F02150CA |
:1037A00030403093530520935205209154053091B9 |
:1037B000550580914808E82FF0E0EE0FFF1FEB5E03 |
:1037C000F74F8081918182599F4F281739071CF448 |
:1037D0002F5F3F4F0CC08081918182599F4F82178C |
:1037E00093074CF42115310531F0215030403093CE |
:1037F00055052093540580914E0590914F0597FFF4 |
:1038000005C010924F0510924E050AC08F3F9105DA |
:1038100039F034F08FEF90E090934F0580934E0590 |
:10382000809150059091510597FF05C01092510568 |
:10383000109250050AC08F3F910539F034F08FEF98 |
:1038400090E090935105809350058091520590919E |
:10385000530597FF05C010925305109252050AC0F8 |
:103860008F3F910539F034F08FEF90E0909353053E |
:1038700080935205809154059091550597FF05C09E |
:1038800010925505109254050AC08F3F910539F0EA |
:1038900034F08FEF90E09093550580935405229675 |
:1038A0000FB6F894DEBF0FBECDBFDF91CF911F9151 |
:1038B0000F91FF90EF90DF90CF90BF90AF909F90CF |
:1038C0008F907F906F905F904F903F902F900895D2 |
:1038D00010927A008091CC049091CD04909392083C |
:1038E000809391088091CE049091CF0490938A08A0 |
:1038F000809389088091D0049091D1049093B1086D |
:103900008093B0086091D4047091D504882777FD26 |
:103910008095982F2CE030E040E050E00E947E3C03 |
:103920007093AE086093AD086091D2047091D30497 |
:10393000882777FD8095982F0E947E3C7093B80869 |
:103940006093B7088091D6049091D704909399081A |
:10395000809398088FEE80937A0020914E053091E5 |
:103960004F0580914508E82FF0E0EE0FFF1FEB5E5A |
:10397000F74F8081918182599F4F281739071CF496 |
:103980002F5F3F4F0CC08081918182599F4F8217DA |
:1039900093074CF42115310531F02150304030931C |
:1039A0004F0520934E05209150053091510580918F |
:1039B0004608E82FF0E0EE0FFF1FEB5EF74F808127 |
:1039C000918182599F4F281739071CF42F5F3F4F71 |
:1039D0000CC08081918182599F4F821793074CF4CC |
:1039E0002115310531F0215030403093510520939D |
:1039F0005005209152053091530580914708E82FDA |
:103A0000F0E0EE0FFF1FEB5EF74F8081918182594E |
:103A10009F4F281739071CF42F5F3F4F0CC0808140 |
:103A2000918182599F4F821793074CF421153105DC |
:103A300031F02150304030935305209352052091AE |
:103A400054053091550580914808E82FF0E0EE0FBD |
:103A5000FF1FEB5EF74F8081918182599F4F28179E |
:103A600039071CF42F5F3F4F0CC080819181825930 |
:103A70009F4F821793074CF42115310531F02150E7 |
:103A80003040309355052093540580914E05909118 |
:103A90004F0597FF05C010924F0510924E050AC0C2 |
:103AA0008F3F910539F034F08FEF90E090934F0500 |
:103AB00080934E05809150059091510597FF05C068 |
:103AC00010925105109250050AC08F3F910539F0B0 |
:103AD00034F08FEF90E090935105809350058091E2 |
:103AE00052059091530597FF05C01092530510920F |
:103AF00052050AC08F3F910539F034F08FEF90E006 |
:103B000090935305809352058091540590915505EB |
:103B100097FF05C010925505109254050AC08F3FBB |
:103B2000910539F034F08FEF90E090935505809334 |
:103B3000540560916C0870E080E090E024EC39E07E |
:103B400040E050E00E947E3C6093870370938803BE |
:103B50008093890390938A0360916D0870E080E000 |
:103B600090E00E947E3C60938B0370938C03809363 |
:103B70008D0390938E03089580914C088B3F98F0AD |
:103B80008B3F19F480914E050EC08C3F19F4809143 |
:103B9000500509C08D3F19F48091520504C08E3F35 |
:103BA00021F4809154058093940380919403882399 |
:103BB00019F41092940304C08F3F11F4809394037E |
:103BC00080914B088B3F98F08B3F19F480914E0504 |
:103BD0000EC08C3F19F48091500509C08D3F19F437 |
:103BE0008091520504C08E3F21F48091540580934A |
:103BF000930380919303882319F41092930305C0D3 |
:103C0000843618F084E68093930380914D088B3FAF |
:103C100098F08B3F19F480914E050EC08C3F19F43B |
:103C20008091500509C08D3F19F48091520504C060 |
:103C30008E3F21F4809154058093950380919503E4 |
:103C4000882319F41092950305C0843618F084E691 |
:103C50008093950380914F088B3F98F08B3F19F428 |
:103C600080914E050EC08C3F19F48091500509C01B |
:103C70008D3F19F48091520504C08E3F21F480914C |
:103C800054058093960380919603882319F410922B |
:103C9000960304C08F3F11F48093960380915608D9 |
:103CA0008B3F98F08B3F19F480914E050EC08C3FEE |
:103CB00019F48091500509C08D3F19F48091520587 |
:103CC00004C08E3F21F48091540580939703809126 |
:103CD0009703882319F41092970304C08F3F11F4BF |
:103CE00080939703809157088B3F98F08B3F19F48E |
:103CF00080914E050EC08C3F19F48091500509C08B |
:103D00008D3F19F48091520504C08E3F21F48091BB |
:103D1000540580939803809198038B3010F48AE0C7 |
:103D200002C08F3F11F480939803809158088B3F15 |
:103D300098F08B3F19F480914E050EC08C3F19F41A |
:103D40008091500509C08D3F19F48091520504C03F |
:103D50008E3F21F4809154058093990380919903BB |
:103D6000882319F41092990304C08F3F11F48093B3 |
:103D7000990380915D088B3F98F08B3F19F48091F7 |
:103D80004E050EC08C3F19F48091500509C08D3F3F |
:103D900019F48091520504C08E3F21F4809154059E |
:103DA00080939B0380919B03882319F410929B03BB |
:103DB00004C08F3F11F480939B0380915E088B3F7A |
:103DC00098F08B3F19F480914E050EC08C3F19F48A |
:103DD0008091500509C08D3F19F48091520504C0AF |
:103DE0008E3F21F48091540580936E0580916E057D |
:103DF000882319F410926E0504C08F3F11F480934C |
:103E00006E0580915F088B3F98F08B3F19F480918D |
:103E10004E050EC08C3F19F48091500509C08D3FAE |
:103E200019F48091520504C08E3F21F4809154050D |
:103E300080936F0580916F05882319F410926F05A8 |
:103E400004C08F3F11F480936F05809160088B3F11 |
:103E500098F08B3F19F480914E050EC08C3F19F4F9 |
:103E60008091500509C08D3F19F48091520504C01E |
:103E70008E3F21F4809154058093700580917005E8 |
:103E8000882319F41092700504C08F3F11F48093B9 |
:103E90007005809161088B3F98F08B3F19F48091F9 |
:103EA0004E050EC08C3F19F48091500509C08D3F1E |
:103EB00019F48091520504C08E3F21F4809154057D |
:103EC0008093710580917105882319F41092710512 |
:103ED00004C08F3F11F480937105809171088B3F6E |
:103EE00098F08B3F19F480914E050EC08C3F19F469 |
:103EF0008091500509C08D3F19F48091520504C08E |
:103F00008E3F21F480915405809372058091720553 |
:103F1000882319F41092720504C08F3F11F4809326 |
:103F20007205809172088B3F98F08B3F19F4809155 |
:103F30004E050EC08C3F19F48091500509C08D3F8D |
:103F400019F48091520504C08E3F21F480915405EC |
:103F50008093730580917305882319F4109273057B |
:103F600004C08F3F11F480937305809173088B3FD9 |
:103F700098F08B3F19F480914E050EC08C3F19F4D8 |
:103F80008091500509C08D3F19F48091520504C0FD |
:103F90008E3F21F4809154058093740580917405BF |
:103FA000882319F41092740504C08F3F11F4809394 |
:103FB0007405809174088B3F98F08B3F19F48091C1 |
:103FC0004E050EC08C3F19F48091500509C08D3FFD |
:103FD00019F48091520504C08E3F21F4809154055C |
:103FE0008093750580917505882319F410927505E5 |
:103FF00004C08F3F11F480937505809162088B3F58 |
:1040000098F08B3F19F480914E050EC08C3F19F447 |
:104010008091500509C08D3F19F48091520504C06C |
:104020008E3F21F48091540580939C0380919C03E2 |
:10403000882319F410929C0304C08F3F11F48093DD |
:104040009C03809167088B3F98F08B3F19F4809117 |
:104050004E050EC08C3F19F48091500509C08D3F6C |
:1040600019F48091520504C08E3F21F480915405CB |
:1040700080939D0380919D03882319F410929D03E2 |
:1040800004C08F3F11F480939D0380916A088B3F99 |
:1040900098F08B3F19F480914E050EC08C3F19F4B7 |
:1040A0008091500509C08D3F19F48091520504C0DC |
:1040B0008E3F21F48091540580937605809176059A |
:1040C000882319F41092760504C08F3F11F4809371 |
:1040D000760580916B088B3F98F08B3F19F48091A7 |
:1040E0004E050EC08C3F19F48091500509C08D3FDC |
:1040F00019F48091520504C08E3F21F4809154053B |
:104100008093770580917705882319F410927705BD |
:1041100004C08F3F11F480937705809170088B3F26 |
:1041200098F08B3F19F480914E050EC08C3F19F426 |
:104130008091500509C08D3F19F48091520504C04B |
:104140008E3F21F48091540580939E0380919E03BD |
:10415000882319F410929E0304C08F3F11F48093BA |
:104160009E0360919B0370E080E090E00E94B6386F |
:1041700027E137EB41ED58E30E941B3C60938F032E |
:1041800070939003809391039093920380915408CD |
:104190008093AF088091530880939308089580918D |
:1041A0005F05882301F51092900810928B081092F9 |
:1041B000A8081092AA088091B004882311F0809377 |
:1041C0008B088091B104882311F08093900880912E |
:1041D000B204882311F08093AA088091B304882345 |
:1041E00011F08093A80880918B0890E09093D207FB |
:1041F0008093D1078091900890E09093D4078093AA |
:10420000D3078091AA0890E09093D6078093D507B2 |
:104210008091A80890E09093D8078093D7071092D8 |
:10422000EF041092F0040E94C81408951092010542 |
:1042300010920005109203051092020580E090E0B4 |
:10424000A0E0B0E08093040590930505A0930605D7 |
:10425000B09307051092F7041092F6041092F90437 |
:104260001092F8041092FB041092FA041092760552 |
:10427000109277050E94681C84E690E00E94FA0C78 |
:104280000E94681C8091490880FF10C080910E0335 |
:1042900090910F03875B934038F480910E039091C7 |
:1042A0000F038E5E924010F40E94CE0F8091CC04DA |
:1042B0009091CD049093F7048093F6048091CE04FE |
:1042C0009091CF049093F9048093F8048091D004E6 |
:1042D0009091D1049093FB048093FA048091F804A8 |
:1042E0009091F9049093FD048093FC048091F6046E |
:1042F0009091F7049093FF048093FE0444E050E013 |
:10430000DA010E94443D802D853038F18091B70854 |
:104310009091B80897FF03C0909581959F4F6CE0EE |
:1043200070E00E94BD3C709303056093020580918C |
:10433000AD089091AE0897FF03C0909581959F4F6F |
:104340006CE070E00E94BD3C709301056093000535 |
:104350006091FD077091FE0739C0DA010E94443D6B |
:10436000802D4F5F5F4FDA010E94443D202D90E089 |
:10437000982F8827820F911D909301058093000547 |
:104380004F5F5F4FDA010E94443D802D4F5F5F4FCA |
:10439000DA010E94443D202D90E0982F8827820F5B |
:1043A000911D90930305809302054F5F5F4FDA01E3 |
:1043B0000E94443D602D4F5F5F4FDA010E94443DF3 |
:1043C000202D70E0762F6627620F711D882777FDFC |
:1043D0008095982F0E94633B6093040570930505B8 |
:1043E000809306059093070510922A0510922B05DD |
:1043F00010922C0510922D0510922E0510922F056B |
:10440000109230051092310510923205109233054A |
:10441000109234051092350510923605109237052A |
:10442000109238051092390510923A0510923B050A |
:1044300010923C0510923D0510929208109291083E |
:1044400010928A08109289081092B1081092B00850 |
:1044500080910A0390910B03A0910C03B0910D037E |
:10446000909300088093FF071092DF041092DE04FF |
:104470001092420510924305109244051092450592 |
:104480008091460590914705909349058093480592 |
:104490000E948C3882E390E09093C6048093C50418 |
:1044A00060916C0870E080E090E024EC39E040E03E |
:1044B00050E00E947E3C6093870370938803809352 |
:1044C000890390938A0360916D0870E080E090E02A |
:1044D0000E947E3C60938B0370938C0380938D03CA |
:1044E00090938E031092A00310929F0308951F9340 |
:1044F000182F0EC080915F05882361F484E690E058 |
:104500009093C6048093C5048AEF90E00E94170D33 |
:10451000115080F71F91089581E08093410822E0B7 |
:104520002093420883E08093430854E0509344086A |
:1045300045E04093450836E03093460887E0809395 |
:10454000470888E08093480880EC809349089EE102 |
:1045500090934A088BEF80934C088AE080934D0833 |
:1045600090934B0890934F0820934E082093500847 |
:1045700050935108309352088FE0809353088AEF8C |
:10458000809354089093550880E88093560824E659 |
:10459000209357088CE8809358088EE5809359083B |
:1045A00083E280935A0884E180935B0810925C0850 |
:1045B00080E180935D0880E580935E0810925F083B |
:1045C000109260081092610810927108109272089F |
:1045D00010927308109274082093620888E2809306 |
:1045E00063081092760892E39093640886E98093BA |
:1045F000650840936608909367088AE58093680889 |
:10460000909369081092750880936A0840936B082C |
:1046100020936C0820936D0880E280936E0850937D |
:104620006F0890937008ABE7B8E0ECE6F3E08CE03D |
:1046300001900D928150E1F7089581E08093410847 |
:1046400082E08093420823E02093430854E0509393 |
:10465000440845E04093450836E03093460887E03B |
:104660008093470888E08093480880E48093490855 |
:104670009EE190934A088BEF80934C088AE08093E8 |
:104680004D0890934B0890934F0820934E08209329 |
:10469000500850935108309352088FE0809353088C |
:1046A0008AEF809354089093550880E880935608C9 |
:1046B00090E59093570888E7809358088EE580939B |
:1046C000590883E280935A0884E180935B08109232 |
:1046D0005C0830E230935D0890935E0810925F08AA |
:1046E000109260081092610810927108109272087E |
:1046F000109273081092740824E62093620888E2EE |
:10470000809363081092760892E39093640886E998 |
:104710008093650840936608909367088AE58093C4 |
:104720006808909369081092750880936A0840930E |
:104730006B0820936C0820936D0830936E0850939B |
:104740006F088BE480937008ABE7B8E0E6E7F3E02E |
:104750008CE001900D928150E1F7089581E0809303 |
:10476000410882E08093420883E08093430834E06C |
:104770003093440845E04093450886E0809346081E |
:1047800087E08093470828E02093480880E48093DE |
:1047900049089EE190934A088BEF80934C088AE089 |
:1047A00080934D0890934B0890934F0830934E0898 |
:1047B00030935008209351088CE0809352088FE08A |
:1047C000809353088AEF809354089093550890E89B |
:1047D0009093560880E58093570856E950935808FF |
:1047E0008EE58093590883E280935A0884E1809390 |
:1047F0005B0810925C0880E280935D0890935E08ED |
:1048000010925F081092600810926108109271086F |
:1048100010927208109273081092740824E6209384 |
:10482000620888E2809363081092760882E380939E |
:1048300064085093650840936608809367089AE57A |
:1048400090936808809369081092750890936A089D |
:1048500040936B0820936C0820936D0880E180934F |
:104860006E0830936F0820937008ABE7B8E0EEE76E |
:10487000F3E08CE001900D928150E1F708952F92C2 |
:104880003F924F925F926F927F928F929F92AF92E0 |
:10489000BF92CF92DF92EF92FF920F931F93CF932D |
:1048A000DF93CDB7DEB7A6970FB6F894DEBF0FBE85 |
:1048B000CDBF0E948416299A20915D0530915E0536 |
:1048C0003C872B8737FF02C01C861B8680915605CC |
:1048D000843608F06CC080910301882399F480919C |
:1048E0000403909105038F5F9F4F61F488E99AE379 |
:1048F0009093C6048093C50480E09CE090930503E8 |
:10490000809304038091A3059091A405009731F052 |
:1049100001979093A4058093A30504C010925F05AE |
:1049200010924C05809100018A3011F4289A01C040 |
:10493000289880919E0590919F05815D9740A0F1F8 |
:1049400080915A08682F70E07C876B8781E08093A4 |
:104950004C05A0914108B0E0AA0FBB1FFD01E55D29 |
:10496000F74F11821082E09142082E2F30E0220F83 |
:10497000331FC901855D974FFC0111821082AB5E28 |
:10498000B74F11961C921E922B5E374FD90111968C |
:104990001C921E92E0914408F0E0EE0FFF1FEB5EC8 |
:1049A000F74F118210824AC210925F0547C2809170 |
:1049B00056058D3808F442C210924C0580915B0870 |
:1049C00022E3829FC00111249093A4058093A30544 |
:1049D000EB85FC85B9976CF080919E0590919F05C1 |
:1049E000FFEF8F3F9F0729F0019690939F058093DB |
:1049F0009E0580919E0590919F05883C910528F029 |
:104A00002B853C852832310504F51092BD051092A6 |
:104A1000BE051092BF051092C0051092B905109204 |
:104A2000BA051092BB051092BC0510923A0510927F |
:104A30003B0510923C0510923D0510923E051092E8 |
:104A40003F051092400510924105E0914308F0E0C7 |
:104A5000EE0FFF1FEB5EF74F80819181813591054D |
:104A60000CF444C180915F05882309F03FC1809117 |
:104A70004408E82FF0E0EE0FFF1FEB5EF74F808158 |
:104A800091818C3491050CF4A8C08091A2058F5FB0 |
:104A90008093A205893C08F429C1299810925F05EA |
:104AA0001092A20510929F0510929E0580914108D8 |
:104AB000282F30E0F901EE0FFF1FEB5EF74F8081EA |
:104AC0009181873491059CF4E0914208F0E0EE0F6B |
:104AD000FF1FEB5EF74F0190F081E02DF7FF03C061 |
:104AE000F095E195FF4FE734F1050CF46CC080912F |
:104AF0004208682F70E0DB01AA0FBB1FAB5EB74F07 |
:104B00008D919C911197873491053CF0F901EE0F3E |
:104B1000FF1FEB5EF74F808191818D919C918734CF |
:104B2000910564F0F901EE0FFF1FEB5EF74F8081F6 |
:104B300091818734910514F042E001C041E0FB010E |
:104B4000EE0FFF1FEB5EF74F808191818634910558 |
:104B50005CF4F901EE0FFF1FEB5EF74F808191814E |
:104B6000873491050CF043E0FB01EE0FFF1FEB5E75 |
:104B7000F74F808191818A5B9F4F5CF4F901EE0FC2 |
:104B8000FF1FEB5EF74F80819181873491050CF018 |
:104B900044E0660F771F6B5E774FDB018D919C9130 |
:104BA0008A5B9F4F5CF4220F331F2B5E374FF90156 |
:104BB00080819181863491050CF445E0A2E0B0E05B |
:104BC000042E0E944C3D0E94510247E461E478E0CB |
:104BD0000E9478020E94162182C080819181855BAB |
:104BE0009F4F0CF081C08091A2058F5F8093A2053A |
:104BF000893C08F47BC029988FEF04E010E0D801CD |
:104C0000082E0E944C3D10925F051092A205109252 |
:104C10009F0510929E050E9416218091000590919B |
:104C2000010560E071E00E94BD3CD801062E0E94A3 |
:104C30004C3D809100059091010560E071E00E947B |
:104C4000BD3C0F5F1F4FD801082E0E944C3D809144 |
:104C500002059091030560E071E00E94BD3C0F5F8A |
:104C60001F4FD801062E0E944C3D80910205909165 |
:104C7000030560E071E00E94BD3C0F5F1F4FD8014B |
:104C8000082E0E944C3D60910405709105058091AD |
:104C90000605909107050E94303BDC01CB0160E0E6 |
:104CA00071E00E94BD3C0F5F1F4FD801062E0E948D |
:104CB0004C3D609104057091050580910605909129 |
:104CC00007050E94303BDC01CB0160E071E00E94EF |
:104CD000BD3C0F5F1F4FD801082E0E944C3D0E9423 |
:104CE00051020E94772202C01092A205E09143086F |
:104CF000F0E0EE0FFF1FEB5EF74F808191818B5A42 |
:104D00009F4F0CF09BC080914408482F50E0FA015F |
:104D1000EE0FFF1FEB5EF74F80819181855B9F4F08 |
:104D20000CF06DC08091A1058F5F8093A105893C37 |
:104D300008F467C088EC8093A10581E090E090932F |
:104D40009F0580939E0581E080935F051092B505D5 |
:104D50001092B6051092B7051092B80510923A0558 |
:104D600010923B0510923C0510923D0510923E05B5 |
:104D700010923F05109240051092410510922A05AD |
:104D800010922B0510922C0510922D0510923205D1 |
:104D900010923305109234051092350580910A0562 |
:104DA00090910B05A0910C05B0910D0580932E05F7 |
:104DB00090932F05A0933005B09331058091120593 |
:104DC00090911305A0911405B091150580933605B7 |
:104DD00090933705A0933805B09339051092BD051F |
:104DE0001092BE051092BF051092C0051092B90531 |
:104DF0001092BA051092BB051092BC0502C0109229 |
:104E0000A105440F551F4B5E574FDA018D919C91C0 |
:104E10008C3491058CF08091A0058F5F8093A00564 |
:104E2000893C60F010925F0588EC8093A005109299 |
:104E30009F0510929E0502C01092A00580916B0301 |
:104E4000815080936B0380916B038F3F29F0809199 |
:104E50004C05882309F452C30E94BC1D20905705BD |
:104E60003090580580914108E82EFF24D701AA0F01 |
:104E7000BB1FAD014B5E574FFA010190F081E02D51 |
:104E8000FCA3EBA380915008482E5524A55DB74F95 |
:104E90000D90BC91A02DBAA3A9A380915108282FF1 |
:104EA00030E038A32F8F6091590570915A057E8F9D |
:104EB0006D8F80914208082F10E0C801880F991F5C |
:104EC000DC01AB5EB74F0D90BC91A02DBC8FAB8FBA |
:104ED000855D974FDC018D919C919A8F898FE09130 |
:104EE0004408AE2FB0E0AA0FBB1FAB5EB74F0D90CA |
:104EF000BC91A02DB88FAF8BE0914308F0E0EE0F8E |
:104F0000FF1FEB5EF74F60807180E8E7F0E06E0E08 |
:104F10007F1E70925E0560925D05DA018D919C9115 |
:104F200020917E0530917F0597FF03C09095819574 |
:104F30009F4F281739078CF4FA0180819181909353 |
:104F40007F0580937E0597FF0EC0909581959F4FBA |
:104F500090937F0580937E0506C0215030403093AA |
:104F60007F0520937E05F801EE0FFF1FEB5EF74FE4 |
:104F700080819181209180053091810597FF03C048 |
:104F8000909581959F4F2817390784F480819181EE |
:104F9000909381058093800597FF0EC09095819531 |
:104FA0009F4F909381058093800506C0215030402B |
:104FB000309381052093800580914C05882341F032 |
:104FC00010927F0510927E05109281051092800547 |
:104FD0006091980370E080E090E00E94B63820E095 |
:104FE00030E040E251E40E94643A20E030E040E8E2 |
:104FF0005BE30E941B3C5B016C016093B208709301 |
:10500000B3088093B4089093B5086091990370E059 |
:1050100080E090E00E94B63820E030EE4BE257E4AA |
:105020000E94C83A6093A4087093A5088093A608CC |
:105030009093A7082091B504222331F08AE090E0F4 |
:105040009093C6048093C504E22F22FF09C080918B |
:105050006E05482F50E0440F551F440F551F10C0D8 |
:1050600023FD03C040E050E00BC080916E0590E04E |
:10507000880F991F880F991F44275527481B590BE4 |
:105080002091780530917905C901F3E0880F991FC7 |
:10509000FA95E1F7821B930B840F951F68E070E08F |
:1050A0000E94BD3C4B017093790560937805E4FF45 |
:1050B00009C080916E05482F50E0440F551F440FE2 |
:1050C000551F10C0E5FD03C040E050E00BC08091CB |
:1050D0006E0590E0880F991F880F991F4427552768 |
:1050E000481B590B80917A0590917B059C0163E0E8 |
:1050F000220F331F6A95E1F7281B390BCA01820F73 |
:10510000931F68E070E00E94BD3C7EA36DA3709386 |
:105110007B0560937A058091B404282F83FF03C038 |
:1051200082E390E004C082FF07C08EEC9FEF909373 |
:105130007D0580937C0504C010927D0510927C054E |
:1051400021FF09C080919F039091A0030196909345 |
:10515000A00380939F0324FF09C080919F03909137 |
:10516000A00301979093A00380939F032BA13CA1E0 |
:10517000249DC001259D900D349D900D1124910119 |
:10518000220F331F220D331D820F931F64E070E046 |
:105190000E94BD3C1B0149A15AA16F8D78A1469F79 |
:1051A000C001479F900D569F900D1124280E391E67 |
:1051B000C40168E070E00E94BD3C260E371E3092AC |
:1051C000580520925705AB8DBC8DA49DC001A59DAF |
:1051D000900DB49D900D11242D8D3E8D220F331F07 |
:1051E000ED8DFE8D2E0F3F1F820F931F64E070E048 |
:1051F0000E94BD3C9B01498D5A8D6F8D78A1469FC1 |
:10520000C001479F900D569F900D1124280F391F04 |
:105210008DA19EA168E070E00E94BD3C260F371F63 |
:1052200030935A052093590540917C0550917D0596 |
:105230008F89988D481B590B50935C0540935B05F3 |
:105240008091200780FF54C080916E05813808F45A |
:105250004FC080911907992787FD9095DC01A49D87 |
:10526000C001A59D900DB49D900D1124280E391EEE |
:10527000309258052092570580911A07992787FD8B |
:105280009095FC01E49DC001E59D900DF49D900D6D |
:105290001124280F391F30935A0520935905809106 |
:1052A0001B07992787FD9095480F591F50935C0560 |
:1052B00040935B0520914E0830E080911D079927AF |
:1052C00087FD9095AC01249FC001259F900D349FD0 |
:1052D000900D11249093A00380939F0380911C074D |
:1052E00090E08615970524F490935E0580935D0504 |
:1052F0008091490882FF0CC080E090E0A0E0B0E01F |
:105300008093A4089093A508A093A608B093A7083B |
:1053100020E030E040E050E0C601B5010E949E3B35 |
:10532000882364F480E090E0A0E0B0E08093B208CD |
:105330009093B308A093B408B093B50820E030E090 |
:1053400040E050E06091A4087091A5088091A60803 |
:105350009091A7080E949E3B882364F480E090E02F |
:10536000A0E0B0E08093A4089093A508A093A608BD |
:10537000B093A708F801EE0FFF1FEB5EF74F2081F7 |
:10538000318180916808482F50E04217530744F458 |
:105390008091750882FF04C081E080936A0511C086 |
:1053A000F801EE0FFF1FEB5EF74F208131818091F6 |
:1053B0006908BA01681B71092617370714F410929F |
:1053C0006A05F801EE0FFF1FEB5EF74F80819181B8 |
:1053D00066277727641B750B8617970744F480911F |
:1053E000750883FF04C081E080936B0515C0809130 |
:1053F0006B05882389F0000F111F0B5E174FD80132 |
:105400002D913C918091690890E0841B950B821747 |
:10541000930714F410926B05F701EE0FFF1FEB5E7C |
:10542000F74F808191814817590744F4809175089E |
:1054300080FF04C081E080936D0515C080916D05EB |
:10544000882389F0F701EE0FFF1FEB5EF74F2081F5 |
:10545000318180916908FA01E81BF1092E173F0795 |
:1054600014F410926D05F701EE0FFF1FEB5EF74F7E |
:10547000808191818617970744F48091750881FF98 |
:1054800004C081E080936C0517C080916C0588236F |
:1054900099F0EE0CFF1C25E138E0E20EF31ED70177 |
:1054A0002D913C918091690890E0841B950B8217A7 |
:1054B000930714F410926C0580916A05882321F4F7 |
:1054C00080916B05882321F081E08093690502C0FB |
:1054D0001092690580916D05882321F480916C05F7 |
:1054E000882351F081E0809368051092690510923D |
:1054F0006A0510926B0502C01092680580916905DB |
:10550000882339F084E690E09093C6048093C50424 |
:1055100004C080916805882351F08091670890E06D |
:10552000EB85FC858E179F0714F49C878B87F09181 |
:105530004C05F983FF2341F110925C0510925B0545 |
:10554000109258051092570510925A05109259055D |
:105550008DEC9CECACECBDE38093B2089093B30867 |
:10556000A093B408B093B5088AE097EDA3EABBE333 |
:105570008093A4089093A508A093A608B093A708C9 |
:10558000109269051092680520919C0830919D0841 |
:1055900040919E0850919F0880910A0590910B05BB |
:1055A000A0910C05B0910D05820F931FA41FB51F8C |
:1055B00080939C0890939D08A0939E08B0939F08A9 |
:1055C0002091A0083091A1084091A2085091A30811 |
:1055D0008091120590911305A0911405B0911505C5 |
:1055E000820F931FA41FB51F8093A0089093A1085A |
:1055F000A093A208B093A308209194083091950835 |
:10560000409196085091970880910E0590910F0552 |
:10561000A0911005B0911105820F931FA41FB51F13 |
:105620008093940890939508A0939608B093970858 |
:1056300020918C0830918D0840918E0850918F08F0 |
:105640008091160590911705A0911805B091190544 |
:10565000820F931FA41FB51F80938C0890938D0811 |
:10566000A0938E08B0938F08209168052A83222387 |
:1056700029F480916905882309F468C010921A05FD |
:1056800010921B0510921C0510921D0510921E050C |
:1056900010921F05109220051092210510922205EC |
:1056A00010922305109224051092250510929C0853 |
:1056B00010929D0810929E0810929F081092A008C8 |
:1056C0001092A1081092A2081092A30810929408B8 |
:1056D00010929508109296081092970810928C08D4 |
:1056E00010928D0810928E0810928F0880912A05D2 |
:1056F00090912B05A0912C05B0912D0580932E053E |
:1057000090932F05A0933005B09331058091320519 |
:1057100090913305A0913405B091350580933605FD |
:1057200090933705A0933805B09339051092E104A2 |
:105730001092E004109267051092660510926505BC |
:10574000109264053A81332309F0F9C0809169050C |
:10575000882309F0F4C060910A0570910B058091CF |
:105760000C0590910D05A0905508BB24CC24DD2498 |
:10577000E090AD08F090AE08A60195010E94F23CC1 |
:1057800039014A010027F7FC0095102F6E187F0899 |
:10579000800A910A60911205709113058091140599 |
:1057A00090911505E090B708F090B808A601950112 |
:1057B0000E94F23C59016A010027F7FC0095102F66 |
:1057C000AE18BF08C00AD10AC401B30120E130E01D |
:1057D00040E050E00E94F23C39014A01C601B501A7 |
:1057E00020E130E040E050E00E94F23C79018A0183 |
:1057F00080917E0590917F05409734F480918005DB |
:10580000909181054097A4F0C401B30123E030E0FA |
:1058100040E050E00E94F23C39014A01C801B70162 |
:1058200023E030E040E050E00E94F23C79018A0140 |
:10583000E0914408F0E0EE0FFF1FEB5EF74F0190A0 |
:10584000F081E02DF7FF03C0F095E195FF4F7A97C7 |
:10585000A4F0C401B30123E030E040E050E00E9436 |
:10586000F23C39014A01C801B70123E030E040E0D1 |
:1058700050E00E94F23C79018A0141E26416710411 |
:105880008104910434F0B0E26B2E712C812C912CA8 |
:1058900011C050EE65165FEF75065FEF85065FEF8E |
:1058A000950644F4A0EE6A2EAFEF7A2EAFEF8A2E63 |
:1058B000AFEF9A2E61E2E616F1040105110534F00E |
:1058C000F0E2EF2EF12C012D112D11C070EEE71634 |
:1058D0007FEFF7067FEF07077FEF170744F4E0EE4F |
:1058E000EE2EEFEFFE2EEFEF0E2FEFEF1E2F80913B |
:1058F0002A0590912B05A0912C05B0912D058619B4 |
:105900009709A809B90980932A0590932B05A093BC |
:105910002C05B0932D058091320590913305A0910F |
:105920003405B09135058E199F09A00BB10B8093FA |
:10593000320590933305A0933405B09335058091DB |
:10594000E0049091E1048F3F910509F008F408C547 |
:105950008A81882309F088C480916905882309F029 |
:1059600083C460919C0870919D0880919E089091DD |
:105970009F0820E031E040E050E00E94F23C20939C |
:105980009C0830939D0840939E0850939F08609117 |
:10599000A0087091A1088091A2089091A30820E02E |
:1059A00031E040E050E00E94F23C2093A0083093A8 |
:1059B000A1084093A2085093A308E0905508FF2443 |
:1059C00000E010E020911A0530911B0540911C0564 |
:1059D00050911D05C801B7010E947E3C20E031E0D6 |
:1059E00040E050E00E94F23C20931A0530931B05E2 |
:1059F00040931C0550931D0520911E0530911F05F5 |
:105A00004091200550912105C801B7010E947E3CBC |
:105A100020E031E040E050E00E94F23C20931E057F |
:105A200030931F0540932005509321056091220576 |
:105A300070912305809124059091250520E031E0A7 |
:105A400040E050E00E94F23C209322053093230571 |
:105A5000409324055093250560919C0870919D0802 |
:105A600080919E0890919F0820911A0530911B0506 |
:105A700040911C0550911D05E0906E08FF2400E048 |
:105A800010E0621B730B840B950BA80197010E9419 |
:105A9000F23C59016A012093960530939705409393 |
:105AA0009805509399056091A0087091A108809184 |
:105AB000A2089091A30820911E0530911F054091E6 |
:105AC000200550912105621B730B840B950BA801D7 |
:105AD00097010E94F23C19012A01C601B50120E09C |
:105AE00031E040E050E00E94F23C890130936705CC |
:105AF00020936605C201B10120E031E040E050E0B2 |
:105B00000E94F23C790130936505209364058091F1 |
:105B10007E0590917F054097BCF48091800590911F |
:105B2000810540978CF4E0914408F0E0EE0FFF1FF0 |
:105B3000EB5EF74F0190F081E02DF7FF03C0F09589 |
:105B4000E195FF4F7A9794F0C80162E070E00E94FF |
:105B5000BD3C7093670560936605C70162E070E025 |
:105B60000E94BD3C70936505609364056091940844 |
:105B700070919508809196089091970820E031E007 |
:105B800040E050E00E94F23C209394083093950846 |
:105B9000409396085093970860918C0870918D08F7 |
:105BA00080918E0890918F0820E031E040E050E035 |
:105BB0000E94F23C20938C0830938D0840938E080D |
:105BC00050938F08E0900E05F0900F05009110059E |
:105BD0001091110580910A0590910B05A0910C057B |
:105BE000B0910D05E81AF90A0A0B1B0BE092B105FA |
:105BF000F092B2050093B3051093B40560901605BA |
:105C000070901705809018059090190580911205E5 |
:105C100090911305A0911405B0911505681A790AA1 |
:105C20008A0A9B0A6092AD057092AE058092AF051C |
:105C30009092B005E092A905F092AA050093AB05F9 |
:105C40001093AC056092A5057092A6058092A705F9 |
:105C50009092A80580912E0590912F05A091300576 |
:105C6000B09131058E199F09A00BB10B80932E05C1 |
:105C700090932F05A0933005B093310580913605A0 |
:105C800090913705A0913805B0913905861997098B |
:105C9000A809B9098093360590933705A093380574 |
:105CA000B093390560911A0570911B0580911C0510 |
:105CB00090911D052AE130E040E050E00E94F23C66 |
:105CC0003093DC072093DB0760911E0570911F0560 |
:105CD00080912005909121052AE130E040E050E0DC |
:105CE0000E94F23C3093DE072093DD07F092E0073C |
:105CF000E092DF077092E2076092E10760919C08F2 |
:105D000070919D0880919E0890919F082AE130E053 |
:105D100040E050E00E94F23C3093E4072093E30718 |
:105D20006091A0087091A1088091A2089091A308A9 |
:105D30002AE130E040E050E00E94F23C3093E60778 |
:105D40002093E5073092F4072092F307C090640592 |
:105D5000D0906505C601880F991F960153E0220F68 |
:105D6000331F5A95E1F7820F931F9093F6078093A4 |
:105D7000F50781E090E090939105809390058091E4 |
:105D80009C0890919D08A0919E08B0919F08209139 |
:105D900088053091890540918A0550918B05281B13 |
:105DA000390B4A0B5B0B57FF07C050954095309558 |
:105DB00021953F4F4F4F5F4F20523E44404050404F |
:105DC0000CF0C1C0A1E0EA16A0E1FA06A0E00A07C3 |
:105DD000A0E01A070CF452C080918F05882309F4C3 |
:105DE00049C0D801C7014CE0B595A795979587950F |
:105DF0004A95D1F701969093910580939005D8012B |
:105E0000C70133E0B595A795979587953A95D1F752 |
:105E10008093960590939705A0939805B093990564 |
:105E200089589341A040B04064F088E893E1A0E035 |
:105E3000B0E08093960590939705A0939805B09352 |
:105E400099056091960570919705809198059091BC |
:105E5000990520E031E040E050E00E94F23C809162 |
:105E6000660590916705820F931F90936705809355 |
:105E7000660566C081E080938F0562C010928F0531 |
:105E8000F0E0EF16F0EFFF06FFEF0F07FFEF1F0741 |
:105E90000CF056C080918E05882309F44DC08827E8 |
:105EA0009927DC018E199F09A00BB10B2CE0B59549 |
:105EB000A795979587952A95D1F701969093910587 |
:105EC00080939005C801B70128E030E040E050E041 |
:105ED0000E94F23C209396053093970540939805D5 |
:105EE0005093990528573C4E4F4F5F4F64F488E715 |
:105EF0009CEEAFEFBFEF8093960590939705A0932C |
:105F00009805B093990560919605709197058091D9 |
:105F100098059091990520E031E040E050E00E9422 |
:105F2000F23C8091660590916705820F931F9093D4 |
:105F30006705809366050BC081E080938E0507C0DE |
:105F400010928E0504C010929105109290058091D8 |
:105F50006F08482E55248091900590919105481620 |
:105F6000590624F4509291054092900571E0E7168D |
:105F700074E0F70670E0070770E0170774F080918F |
:105F8000F6049091F7042091900530919105820FCD |
:105F9000931F9093F7048093F60480E0E8168CEF4B |
:105FA000F8068FEF08078FEF180774F48091F60456 |
:105FB0009091F7042091900530919105821B930BED |
:105FC0009093F7048093F60481E090E0909391051C |
:105FD000809390051092920510929305109294056B |
:105FE000109295058091A0089091A108A091A20817 |
:105FF000B091A308209184053091850540918605D4 |
:1060000050918705281B390B4A0B5B0B57FF07C0C4 |
:1060100050954095309521953F4F4F4F5F4F2052FF |
:106020003E44404050400CF0B9C0A1E06A16A0E1E7 |
:106030007A06A0E08A06A0E09A060CF44EC0809191 |
:106040008D05882309F445C0D401C301FCE0B59552 |
:10605000A79597958795FA95D1F701969093910515 |
:1060600080939005D401C301E3E0B595A79597957A |
:106070008795EA95D1F78093920590939305A09325 |
:106080009405B093950589589341A040B04064F0C1 |
:1060900088E893E1A0E0B0E08093920590939305A7 |
:1060A000A0939405B0939505609192057091930526 |
:1060B000809194059091950520E031E040E050E01A |
:1060C0000E94F23CC20ED31ED0926505C0926405B8 |
:1060D00062C081E080938D055EC010928D05F0E076 |
:1060E0006F16F0EF7F06FFEF8F06FFEF9F060CF0B5 |
:1060F00052C080918C05882309F449C088279927CC |
:10610000DC0186199709A809B9097CE0B595A7951E |
:10611000979587957A95D1F70196909391058093FD |
:106120009005C401B30128E030E040E050E00E9457 |
:10613000F23C20939205309393054093940550933D |
:10614000950528573C4E4F4F5F4F64F488E79CEE0F |
:10615000AFEFBFEF8093920590939305A0939405C2 |
:10616000B093950560919205709193058091940587 |
:106170009091950520E031E040E050E00E94F23C33 |
:10618000C20ED31ED0926505C09264050BC081E09B |
:1061900080938C0507C010928C0504C01092910565 |
:1061A000109290058091900590919105481659069E |
:1061B00024F4509291054092900571E0671674E0C6 |
:1061C000770670E0870670E0970674F08091F80417 |
:1061D0009091F9042091900530919105820F931FC1 |
:1061E0009093F9048093F80480E068168CEF7806A9 |
:1061F0008FEF88068FEF980674F48091F8049091E1 |
:10620000F9042091900530919105821B930B909396 |
:10621000F9048093F80480919205909193059093EE |
:10622000F0078093EF078091F6049091F704909324 |
:10623000E8078093E7078091F8049091F904209192 |
:10624000FC043091FD04821B930B9C0163E0220F40 |
:10625000331F6A95E1F7880F991F820F931F909360 |
:10626000EA078093E90708C010926505109264055B |
:10627000109267051092660520E030E040E050E0A3 |
:106280006091A4087091A5088091A6089091A70834 |
:106290000E949E3B882341F410926505109264058C |
:1062A000109267051092660580919C0890919D0858 |
:1062B000A0919E08B0919F088093880590938905CE |
:1062C000A0938A05B0938B058091A0089091A108B6 |
:1062D000A091A208B091A3088093840590938505AE |
:1062E000A0938605B093870510921A0510921B059E |
:1062F00010921C0510921D0510921E0510921F058C |
:10630000109220051092210510922205109223056B |
:10631000109224051092250510929C0810929D0859 |
:1063200010929E0810929F081092A0081092A10847 |
:106330001092A2081092A308109294081092950847 |
:10634000109296081092970810928C0810928D085F |
:1063500010928E0810928F081092E1041092E004BF |
:1063600080905B0590905C05840197FE04C0002737 |
:10637000112708191909053111053CF080914908C8 |
:1063800084FD03C081E080939A05E0905208B40137 |
:10639000882777FD8095982F2E2D30E040E050E043 |
:1063A0000E947E3C9801442737FD4095542F0E945F |
:1063B0007E3C20E032E040E050E00E94F23C890167 |
:1063C0009A01FF24E89CC001E99C900DF89C900D77 |
:1063D000112464E070E00E94BD3C600F711F9B01BE |
:1063E000442737FD4095542F2B8B3C8B4D8B5E8B78 |
:1063F0002093B5053093B6054093B7055093B80583 |
:1064000080913A0590913B05A0913C05B0913D05E6 |
:10641000821B930BA40BB50B80933A0590933B051D |
:10642000A0933C05B0933D0580913A0590913B05C2 |
:10643000A0913C05B0913D058155934CA040B040E2 |
:1064400064F080E593ECA0E0B0E080933A0590938F |
:106450003B05A0933C05B0933D0580913A05909192 |
:106460003B05A0913C05B0913D05805B9C43AF4F3F |
:10647000BF4F64F480EB9CE3AFEFBFEF80933A052E |
:1064800090933B05A0933C05B0933D058091460554 |
:1064900090914705892B09F492C08091490883FFA8 |
:1064A0008EC060910A0570910B0580910C0590914A |
:1064B0000D0520E032E040E050E00E94F23C89010E |
:1064C00037FF03C0109501951F4F60911205709121 |
:1064D0001305809114059091150520E032E040E00D |
:1064E00050E00E94F23CB90137FF03C070956195FE |
:1064F0007F4F601771070CF4B80169317105A4F47E |
:1065000080919A05882381F080918205909183057E |
:10651000892B51F480914605909147059093490548 |
:106520008093480510929A052091970330E0629F6E |
:10653000C001639F900D729F900D112460E470E084 |
:106540000E94BD3CA901461B570B141615068CF57D |
:106550008091820590918305009749F500913A0555 |
:1065600010913B0520913C0530913D0580914A05F5 |
:1065700090914B05BC01469FC001479F900D569FCF |
:10658000900D112460E270E00E94BD3C882777FDE9 |
:106590008095982F600F711F821F931F60933A059B |
:1065A00070933B0580933C0590933D0508C001978F |
:1065B00002C084EF91E090938305809382058091DF |
:1065C0009B05815080939B058F3F09F079C088E13E |
:1065D00080939B0560910A0570910B0580910C05D5 |
:1065E00090910D05E0905508FF2400E010E0A8010F |
:1065F00097010E94F23C3093BA072093B90760914B |
:106600001205709113058091140590911505A8014C |
:1066100097010E94F23C3093BC072093BB07809106 |
:10662000AD089091AE089093BE078093BD0780910E |
:10663000B7089091B8089093C0078093BF078091E6 |
:10664000B0089091B1089093C2078093C1078091E0 |
:106650006005909161059093C4078093C307609192 |
:10666000420570914305809144059091450520E0D5 |
:1066700032E040E050E00E94F23C3093C6072093A5 |
:10668000C50780914605909147059093CA0780936E |
:10669000C90780910803909109039093CC078093D8 |
:1066A000CB078091560590E09093CE078093CD075D |
:1066B00080919808909199089093DA078093D90770 |
:1066C0007A817723A9F060919108709192088827C8 |
:1066D00077FD8095982F0E94633B2091B2083091FE |
:1066E000B3084091B4085091B5080E941B3C32C0D9 |
:1066F00060910A0570910B0580910C0590910D0534 |
:10670000E0909108F09092080E94633B2091A408C9 |
:106710003091A5084091A6085091A7080E941B3C03 |
:106720005B016C010027F7FC0095102FC801B70131 |
:106730000E94633B2091B2083091B3084091B408A5 |
:106740005091B5080E941B3C9B01AC01C601B501EC |
:106750000E94643A0E94303B7093920860939108C3 |
:10676000809169058823A9F06091890870918A0851 |
:10677000882777FD8095982F0E94633B2091B2086F |
:106780003091B3084091B4085091B5080E941B3C69 |
:1067900032C060911205709113058091140590919B |
:1067A0001505E0908908F0908A080E94633B2091CB |
:1067B000A4083091A5084091A6085091A7080E940E |
:1067C0001B3C5B016C010027F7FC0095102FC801F2 |
:1067D000B7010E94633B2091B2083091B308409109 |
:1067E000B4085091B5080E941B3C9B01AC01C60146 |
:1067F000B5010E94643A0E94303B70938A0860930E |
:1068000089086091B0087091B108A0902605B090F9 |
:106810002705C0902805D09029058091A408909163 |
:10682000A508A091A608B091A7088B839C83AD838F |
:10683000BE83882777FD8095982F0E94633B7B015C |
:106840008C016091B2087091B3088091B408909166 |
:10685000B5089B01AC010E94643A9B01AC01C801E0 |
:10686000B7010E941B3C7B018C01C601B5010E944F |
:10687000633B2B813C814D815E810E941B3C20E06B |
:1068800030E040E05FE30E941B3C9B01AC01C8018B |
:10689000B7010E94643A0E94303B7093B108609344 |
:1068A000B0086091120570911305809114059091C4 |
:1068B00015050E94633B2B813C814D815E810E94C6 |
:1068C0001B3C0E94353B7093EC076093EB07A09153 |
:1068D0005905B0915A05B887AF83B093F807A093D4 |
:1068E000F7078091890890918A089093F207809326 |
:1068F000F10780919108909192088150984034F06E |
:1069000080E098E09093920880939108809191089C |
:10691000909192088050984F34F480E098EF9093D3 |
:106920009208809391088091890890918A088150FB |
:10693000984034F080E098E090938A08809389082A |
:106940008091890890918A088050984F34F480E0B3 |
:1069500098EF90938A08809389088091B00890916D |
:10696000B1088150984034F080E098E09093B108ED |
:106970008093B0088091B0089091B1088050984FF2 |
:1069800034F480E098EF9093B1088093B008809140 |
:10699000490880FFD7C04091940381FF0EC0423365 |
:1069A00010F580916005909161054497909363057F |
:1069B0008093620510924D0519C020919F0330917C |
:1069C000A003240F311D80914E0890E0BC01269F4A |
:1069D000C001279F900D369F900D112444979093EE |
:1069E00063058093620581E080934D05798177236B |
:1069F00021F010926305109262052091600530919C |
:106A000061054091620550916305421753070CF0F0 |
:106A100099C080914D05882309F494C08091950315 |
:106A200090E0241B350BDC01A29FC001A39F900DB9 |
:106A3000B29F900D112460E170E00E94BD3C4B01BB |
:106A4000C090DE04D090DF04609142057091430550 |
:106A50008091440590914505E0909603FF2400E065 |
:106A600010E020E032E040E050E00E94F23CC8013B |
:106A7000B7010E947E3C20E230E040E050E00E94FE |
:106A8000F23CBFEF2E3C3B0714F42EEC3FEF80911D |
:106A90009C0590919D058C0144E0000F111F4A95C3 |
:106AA000E1F7081B190B8091930390E0FC01EC9D2A |
:106AB000C001ED9D900DFC9D900D112468E070E0EB |
:106AC0000E94BD3C061B170B2333310514F022E353 |
:106AD00030E0021B130B8B859C8588199909800F68 |
:106AE000911F60E170E00E94BD3C70939D05609332 |
:106AF0009C0580914A0890E06817790784F42B85FB |
:106B00003C85281739072CF090939D0580939C05B0 |
:106B100006C04B855C8550939D0540939C058091F4 |
:106B20009C0590919D056B857C856817790724F4F9 |
:106B300070939D0560939C0580919C0590919D05A7 |
:106B40009C878B878091AF08482E5524C2014497BB |
:106B50008B849C84881599050CF44C019092C8078D |
:106B60008092C7078091B0089091B108A4E18A167D |
:106B700091041CF41E861D862AC0BC01EB89FC8989 |
:106B80006E1B7F0B940135952795621773070CF4E4 |
:106B90009B01C40162E070E00E94BD3C709561956C |
:106BA0007F4FC901261737070CF4CB019201281932 |
:106BB0003909281739070CF4C9019401241935093A |
:106BC0009E878D878217930714F43E872D87209127 |
:106BD0009108309192086090570570905805809107 |
:106BE000C9059091CA05681A790A261937093093A0 |
:106BF0009B0820939A0820E030E040E050E06B8151 |
:106C00007C818D819E810E949E3B8823F1F1E090E2 |
:106C10000A05F0900B0500910C0510910D0560918F |
:106C2000BD057091BE058091BF059091C0050E9481 |
:106C3000633B5B016C01C801B7010E94633B2B8180 |
:106C40003C814D815E810E941B3C7B018C01B30124 |
:106C5000882777FD8095982F0E94633B9B01AC01AC |
:106C6000C801B7010E94633A9B01AC01C601B5019E |
:106C70000E94643A0E94303B6093BD057093BE054C |
:106C80008093BF059093C0051CC020919A08309155 |
:106C90009B08442737FD4095542F8091BD05909166 |
:106CA000BE05A091BF05B091C005820F931FA41F20 |
:106CB000B51F8093BD059093BE05A093BF05B0930B |
:106CC000C0058091BD059091BE05A091BF05B09112 |
:106CD000C00581589E43A040B04064F080E89EE328 |
:106CE000A0E0B0E08093BD059093BE05A093BF05E2 |
:106CF000B093C0058091BD059091BE05A091BF05E0 |
:106D0000B091C0058058914CAF4FBF4F64F480E8FC |
:106D100091ECAFEFBFEF8093BD059093BE05A093BC |
:106D2000BF05B093C00560919A0870919B0880914F |
:106D30008F0390919003A0919103B09192038F875C |
:106D4000988BA98BBA8B882777FD8095982F0E9406 |
:106D5000633B7B018C016091BD057091BE05809104 |
:106D6000BF059091C0050E94633B9B01AC016F85FC |
:106D7000788989899A890E941B3C9B01AC01C801D2 |
:106D8000B7010E94643A0E94303B7B018C016B0189 |
:106D90008D859E8597FF03C0909581959F4F62E0FA |
:106DA00070E00E94BD3C680D791D882777FD8095B5 |
:106DB000982F20919E0330E040E050E00E947E3CFE |
:106DC00020E430E040E050E00E94F23C1901C2169D |
:106DD000D3060CF4970166247724621873083A8767 |
:106DE00029872615370514F47A86698680918908E3 |
:106DF00090918A082091CB053091CC05AF81B88560 |
:106E0000A21BB30BBEA3ADA38A1B9B0B9093880858 |
:106E10008093870820E030E040E050E06B817C8187 |
:106E20008D819E810E949E3B882309F440C0E090A2 |
:106E30001205F0901305009114051091150560914D |
:106E4000B9057091BA058091BB059091BC050E946F |
:106E5000633B5B016C01C801B7010E94633B2B815E |
:106E60003C814D815E810E941B3C7B018C01EDA128 |
:106E7000FEA1BF01882777FD8095982F0E94633B74 |
:106E80009B01AC01C801B7010E94633A9B01AC01B0 |
:106E9000C601B5010E94643A0E94303B6093B90577 |
:106EA0007093BA058093BB059093BC051CC02091DC |
:106EB000870830918808442737FD4095542F8091EA |
:106EC000B9059091BA05A091BB05B091BC05820FA0 |
:106ED000931FA41FB51F8093B9059093BA05A09383 |
:106EE000BB05B093BC058091B9059091BA05A091FE |
:106EF000BB05B091BC0581589E43A040B04064F0F2 |
:106F000080E89EE3A0E0B0E08093B9059093BA05D5 |
:106F1000A093BB05B093BC058091B9059091BA05CB |
:106F2000A091BB05B091BC058058914CAF4FBF4FAD |
:106F300064F480E891ECAFEFBFEF8093B9059093D4 |
:106F4000BA05A093BB05B093BC056091870870910A |
:106F50008808882777FD8095982F0E94633B7B01E6 |
:106F60008C016091B9057091BA058091BB05909133 |
:106F7000BC050E94633B9B01AC016F8578898989C0 |
:106F80009A890E941B3C9B01AC01C801B7010E9479 |
:106F9000643A0E94303B9101621573050CF49B0129 |
:106FA0008901261537050CF48301F0907505FF2043 |
:106FB00019F429853A851CC049855A85BA01882764 |
:106FC00077FD8095982F9801442737FD4095542FE1 |
:106FD000620F731F841F951F22E83AE540E050E0DE |
:106FE0000E947E3C20E030E840E050E00E94F23C0D |
:106FF0004D855E85480D591DCA01820F931F97FF6D |
:1070000003C060E070E005C0BC01481659060CF4EE |
:10701000B20180919308C82EDD24CB016C157D054B |
:107020000CF4C60180938B08421B530B9A0157FF47 |
:1070300003C020E030E004C0441655060CF4920171 |
:107040002C153D050CF4960120939008FF2011F4B7 |
:1070500098011CC0B801882777FD8095982FA985D5 |
:10706000BA859D01442737FD4095542F621B730B51 |
:10707000840B950B22E83AE540E050E00E947E3C0C |
:1070800020E030E840E050E00E94F23CD401ED8581 |
:10709000FE85AE1BBF0BA20FB31FB7FF03C0E0E01E |
:1070A000F0E005C0FD014A165B060CF4F201EC1598 |
:1070B000FD050CF4F601E093AA08821A930A9401E4 |
:1070C0004D855E85241B350B37FF03C020E030E083 |
:1070D00004C0421653060CF492012C153D050CF425 |
:1070E00096012093A808A6960FB6F894DEBF0FBEAF |
:1070F000CDBFDF91CF911F910F91FF90EF90DF9067 |
:10710000CF90BF90AF909F908F907F906F905F9047 |
:107110004F903F902F9008958091CD059091CE058E |
:10712000A091CF05B091D0058093D5059093D60559 |
:10713000A093D705B093D8058091D1059091D20541 |
:10714000A091D305B091D4058093D9059093DA0529 |
:10715000A093DB05B093DC0508951092CA05109248 |
:10716000C9051092CC051092CB050895A8E0B0E0B7 |
:10717000ECEBF8E30C94173D7B018C016115710574 |
:107180008105910519F482E089835AC083E08983DF |
:107190008EE1C82ED12CDC82CB82ED82FE820F8361 |
:1071A0001887C801B7010E942939BC01615070409D |
:1071B00077FF33C0EE27FF27E61BF70B20E030E018 |
:1071C00040E050E081E090E0A0E0B0E00E2E04C08E |
:1071D000880F991FAA1FBB1F0A94D2F70197A10914 |
:1071E000B1098E219F21A023B1230097A105B105EC |
:1071F00021F021E030E040E050E004C01695079512 |
:10720000F794E794EA95D2F72E293F29402B512B8A |
:107210002D833E834F8358870FC06115710581F020 |
:10722000062E04C0EE0CFF1C001F111F0A94D2F79B |
:10723000ED82FE820F831887C61AD70ADC82CB82C2 |
:107240001A82CE0101960E947639E8E028960C94C5 |
:10725000333DEF92FF920F931F939B01AC012030BF |
:1072600080E0380781E0480780E0580780F42F3F2E |
:1072700031054105510509F020F4EE24FF24870172 |
:1072800019C068E0E62EF12C012D112D13C020301D |
:1072900080E0380780E0480781E0580730F490E14B |
:1072A000E92EF12C012D112D05C088E1E82EF12CDD |
:1072B000012D112D80E290E0A0E0B0E08E199F0931 |
:1072C000A00BB10B04C05695479537952795EA94C6 |
:1072D000D2F7F901ED55FC4F2081821B9109A109DC |
:1072E000B1091F910F91FF90EF9008959F92AF9277 |
:1072F000BF92CF92DF92EF92FF920F931F93EE24F3 |
:10730000FF248701FC0124813581468157819180CA |
:107310008081823010F44061A2C0843009F49BC0A7 |
:10732000823029F420E030E040E050E005C0211533 |
:1073300031054105510519F4E0E0F0E092C0828189 |
:1073400093816FEF823896070CF05AC062E87FEFA6 |
:10735000681B790B6A3171052CF020E030E040E0C9 |
:1073600050E02AC0AA24BB24650181E090E0A0E09F |
:10737000B0E0062E04C0880F991FAA1FBB1F0A94F5 |
:10738000D2F70197A109B10982239323A423B5233E |
:107390000097A105B10529F071E0A72EB12CC12CF1 |
:1073A000D12C04C056954795379527956A95D2F705 |
:1073B0002A293B294C295D29DA01C9018F77907070 |
:1073C000A070B07080349105A105B10539F427FF94 |
:1073D00009C0205C3F4F4F4F5F4F04C0215C3F4FBF |
:1073E0004F4F5F4F80E090E0203060E0360760E074 |
:1073F000460760E4560710F081E090E0FC0123C0EE |
:107400008038910544F5FC01E158FF4FDA01C901CC |
:107410008F779070A070B07080349105A105B10590 |
:1074200039F427FF09C0205C3F4F4F4F5F4F04C026 |
:10743000215C3F4F4F4F5F4F57FF05C05695479513 |
:1074400037952795319687E0569547953795279537 |
:107450008A95D1F706C020E030E040E050E0EFEF41 |
:10746000F0E0E22EF32E942F9F77802F8078892BE7 |
:107470009E2F9795992797958F77082F092B9E2FE9 |
:107480009695812F8078892B9794992497948F775C |
:10749000182F1929C801B7011F910F91FF90EF9084 |
:1074A000DF90CF90BF90AF909F900895FC01415026 |
:1074B000504030F001900616D1F73197CF01089572 |
:1074C0008827992708955058BB27AA270ED079C13D |
:1074D0006AD130F06FD120F031F49F3F11F41EF4E7 |
:1074E0005FC10EF4E095E7FB55C1E92F7BD180F336 |
:1074F000BA17620773078407950718F071F49EF5B1 |
:1075000093C10EF4E0950B2EBA2FA02D0B01B901FB |
:1075100090010C01CA01A0011124FF27591B99F009 |
:10752000593F50F4503E68F11A16F040A22F232F15 |
:10753000342F4427585FF3CF469537952795A79565 |
:10754000F0405395C9F77EF41F16BA0B620B730B0C |
:10755000840BBAF09150A1F0FF0FBB1F661F771F7D |
:10756000881FC2F70EC0BA0F621F731F841F48F432 |
:10757000879577956795B795F7959E3F08F0B3CFB8 |
:107580009395880F08F09927EE0F979587950895A2 |
:107590000CD017C10FD140F006D130F021F45F3F7D |
:1075A00019F0F8C0511141C1FBC01CD198F39923C7 |
:1075B000C9F35523B1F3951B550BBB27AA276217B7 |
:1075C0007307840738F09F5F5F4F220F331F441FFC |
:1075D000AA1FA9F333D00E2E3AF0E0E830D0915034 |
:1075E0005040E695001CCAF729D0FE2F27D0660F21 |
:1075F000771F881FBB1F261737074807AB07B0E860 |
:1076000009F0BB0B802DBF01FF2793585F4F2AF075 |
:107610009E3F510568F0BEC008C15F3FECF3983E45 |
:10762000DCF3869577956795B795F7959F5FC9F7D2 |
:10763000880F911D9695879597F90895E1E0660F5B |
:10764000771F881FBB1F621773078407BA0720F0D4 |
:10765000621B730B840BBA0BEE1F88F7E09508953D |
:1076600004D06894B111E1C00895C4D088F09F5748 |
:1076700090F0B92F9927B751A0F0D1F0660F771F7E |
:10768000881F991F1AF0BA95C9F712C0B13081F05E |
:10769000CBD0B1E00895C8C0672F782F8827B85F96 |
:1076A00039F0B93FCCF3869577956795B395D9F7BF |
:1076B0003EF490958095709561957F4F8F4F9F4FC9 |
:1076C0000895E89409C097FB3EF4909580957095D5 |
:1076D00061957F4F8F4F9F4F9923A9F0F92F96E91E |
:1076E000BB279395F695879577956795B795F11193 |
:1076F000F8CFFAF4BB0F11F460FF1BC06F5F7F4F30 |
:107700008F4F9F4F16C0882311F096E911C0772341 |
:1077100021F09EE8872F762F05C0662371F096E84A |
:10772000862F70E060E02AF09A95660F771F881F19 |
:10773000DAF7880F9695879597F9089507D008F49A |
:1077400081E0089503D008F48FEF0895990F0008A1 |
:10775000550FAA0BE0E8FEEF16161706E807F90723 |
:10776000C0F012161306E407F50798F0621B730BBE |
:10777000840B950B39F40A2661F0232B242B252B3F |
:1077800021F408950A2609F4A140A6958FEF811DE2 |
:10779000811D089597F99F6780E870E060E0089583 |
:1077A0009FEF80EC089500240A9416161706180619 |
:1077B0000906089500240A941216130614060506F5 |
:1077C0000895092E0394000C11F4882352F0BB0F86 |
:1077D00040F4BF2B11F460FF04C06F5F7F4F8F4FE9 |
:1077E0009F4F089557FD9058440F551F59F05F3F24 |
:1077F00071F04795880F97FB991F61F09F3F79F0D3 |
:1078000087950895121613061406551FF2CF469554 |
:10781000F1DF08C0161617061806991FF1CF8695D6 |
:107820007105610508940895E894BB2766277727BA |
:10783000CB0197F908950BD0C4CFB5DF28F0BADF9C |
:1078400018F0952309F0A6CFABCF1124EECFCADFF5 |
:10785000A0F3959FD1F3950F50E0551F629FF00163 |
:10786000729FBB27F00DB11D639FAA27F00DB11DBC |
:10787000AA1F649F6627B00DA11D661F829F222745 |
:10788000B00DA11D621F739FB00DA11D621F839FCC |
:10789000A00D611D221F749F3327A00D611D231FA2 |
:1078A000849F600D211D822F762F6A2F11249F57F0 |
:1078B00050408AF0E1F088234AF0EE0FFF1FBB1F13 |
:1078C000661F771F881F91505040A9F79E3F5105B2 |
:1078D00070F060CFAACF5F3FECF3983EDCF3869563 |
:1078E00077956795B795F795E7959F5FC1F7FE2B5D |
:1078F000880F911D9695879597F90895629FD001FD |
:10790000739FF001829FE00DF11D649FE00DF11D5A |
:10791000929FF00D839FF00D749FF00D659FF00D09 |
:107920009927729FB00DE11DF91F639FB00DE11DF6 |
:10793000F91FBD01CF0111240895991B79E004C0FE |
:10794000991F961708F0961B881F7A95C9F780959E |
:107950000895AA1BBB1B51E107C0AA1FBB1FA61796 |
:10796000B70710F0A61BB70B881F991F5A95A9F7E8 |
:1079700080959095BC01CD01089597FB092E0726AF |
:107980000AD077FD04D0E5DF06D000201AF4709508 |
:1079900061957F4F0895F6F7909581959F4F0895D3 |
:1079A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F03 |
:1079B000EE1FFF1FA217B307E407F50720F0A21B75 |
:1079C000B30BE40BF50B661F771F881F991F1A94E2 |
:1079D00069F760957095809590959B01AC01BD010C |
:1079E000CF01089597FB092E05260ED057FD04D030 |
:1079F000D7DF0AD0001C38F450954095309521957A |
:107A00003F4F4F4F5F4F0895F6F7909580957095D3 |
:107A100061957F4F8F4F9F4F08952F923F924F92C6 |
:107A20005F926F927F928F929F92AF92BF92CF920E |
:107A3000DF92EF92FF920F931F93CF93DF93CDB717 |
:107A4000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF8F |
:107A500009942A88398848885F846E847D848C8460 |
:107A60009B84AA84B984C884DF80EE80FD800C8169 |
:107A70001B81AA81B981CE0FD11D0FB6F894DEBF4C |
:107A80000FBECDBFED010895F999FECFB2BDA1BDE6 |
:107A9000F89A119600B40895F999FECFB2BDA1BD30 |
:107AA00000BC11960FB6F894FA9AF99A0FBE089591 |
:027AB000FFCF06 |
:107AB2000A01FF64496E74656772616C4E69636B9B |
:107AC20020202020496E74656772616C526F6C6C65 |
:107AD200202020204163634E69636B2020202020F8 |
:107AE20020202020416363526F6C6C2020202020D4 |
:107AF200202020204779726F47696572202020205C |
:107B020020202020486F6568656E576572742020BA |
:107B1200202020204163635A202020202020202082 |
:107B22002020202047617320202020202020202098 |
:107B3200202020204B6F6D7061737356616C7565E8 |
:107B4200202020205370616E6E756E6720202020E9 |
:107B520020202020456D7066616E67202020202045 |
:107B620020202020416E616C6F673131202020205F |
:107B7200202020204D6F746F725F566F726E6520E9 |
:107B8200202020204D6F746F725F48696E74656E9D |
:107B9200202020204D6F746F725F4C696E6B7320D2 |
:107BA200202020204D6F746F725F5265636874737A |
:107BB200202020204163635F5A20202020202020A3 |
:107BC200202020204D697474656C4163634E6963A3 |
:107BD2006B2020204D697474656C416363526F6C35 |
:107BE2006C202020496E74656772616C4572724E1A |
:107BF20069636B20496E74656772616C457272527B |
:107C02006F6C6C204D697474656C496E744E696357 |
:107C12006B2020204D697474656C496E74526F6CD0 |
:107C22006C0920004E65757472616C4E69636B203D |
:107C320020202020526F6C6C4F6666736574202082 |
:107C420020202020496E74526F6C6C2A46616B743E |
:107C52006F722020416E616C6F67323620202020C7 |
:107C620020202020446972656B74417573676C52E1 |
:107C72006F6C6C204D65737377657274526F6C6CA8 |
:107C820020202020417573676C65696368526F6CB0 |
:107C92006C202020492D4C616765526F6C6C20204E |
:107CA20020202020537469636B526F6C6C2020205B |
:107CB20020202020FFFF0A016400007D0000FF0356 |
:107CC2000102030405060708090A48616C6C6F206B |
:107CD20057656C7400000000000000000000000006 |
:107CE2000000000000000000000000000000000092 |
:107CF2000000000000000000000000000000000082 |
:107D02000000000000000000000000000000000071 |
:107D1200000000000000000000000B0142656769DE |
:107D22006E6E657200004E6F726D616C0000537072 |
:107D32006F72740000640090D0030090D0030017AB |
:107D4200B7D13830FB103A409696020A644664EC8A |
:107D5200FFC0080001020203030303040404040435 |
:107D620004040405050505050505050505050505C4 |
:107D720005050506060606060606060606060606A4 |
:107D82000606060606060606060606060606060691 |
:107D92000606060707070707070707070707070774 |
:107DA2000707070707070707070707070707070761 |
:107DB2000707070707070707070707070707070751 |
:107DC2000707070707070707070707070707070741 |
:107DD2000707070808080808080808080808080824 |
:107DE2000808080808080808080808080808080811 |
:107DF2000808080808080808080808080808080801 |
:107E020008080808080808080808080808080808F0 |
:107E120008080808080808080808080808080808E0 |
:107E220008080808080808080808080808080808D0 |
:107E320008080808080808080808080808080808C0 |
:107E420008080808080808080808080808080808B0 |
:047E52000808080014 |
:00000001FF |
/branches/V0.68d_Xtype_and_bugfix/Hex-Files/WasIstWas.txt |
---|
0,0 → 1,15 |
+++++++++++++++++++++++++ |
+ Flight-Ctrl: |
+++++++++++++++++++++++++ |
BootLoader_MEGA644_20MHZ_V0_1.hex |
Der Bootloader wird per ISP eingespielt |
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde! |
Danach können Softwareupdates seriell eingespielt werden. |
Flight-Ctrl_MEGA644_Vx_yy.hex |
Aktuelle Firmware |
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt |
Flight-Ctrl SW > 0.62 benötigt das Kopter-Tool >1.47 |
/branches/V0.68d_Xtype_and_bugfix/Kopter-Tool/MikroKopter-Tool.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/V0.68d_Xtype_and_bugfix/Kopter-Tool/beginner.mkp |
---|
0,0 → 1,64 |
[Setup] |
Name=Beginner |
GlobalConfig=192 |
[Channels] |
Gas=1 |
Gier=2 |
Nick=3 |
Roll=4 |
Poti_1=5 |
Poti_2=6 |
Poti_3=7 |
Poti_4=8 |
[Stick] |
Nick_Roll-P=2 |
Nick_Roll-D=4 |
Gier-P=6 |
[Altitude] |
Setpoint=251 |
MinGas=30 |
P=10 |
Barometric-D=30 |
Z-ACC-Effect=30 |
Gain=2 |
[Gyro] |
P=100 |
I=140 |
DynamicStability=50 |
ACC_Gyro-Factor=40 |
ACC_Gyro-Compensation=32 |
DriftCompensation=4 |
Main-I=16 |
[Others] |
MinGas=15 |
MaxGas=250 |
Compass-Effect=128 |
UnderVoltage=94 |
NotGas=35 |
NotGasTime=20 |
[User] |
Parameter_1=80 |
Parameter_2=0 |
Parameter_3=0 |
Parameter_4=0 |
Parameter_5=0 |
Parameter_6=0 |
Parameter_7=0 |
Parameter_8=0 |
[Camera] |
ServoNickControl=100 |
ServoNickCompensation=40 |
ServoNickInvert=0 |
ServoNickMin=50 |
ServoNickMax=150 |
ServoNickRefreshRate=5 |
[Loop] |
Config=0 |
GasLimit=50 |
StickThreshold=90 |
LoopHysteresis=50 |
TurnOverNick=100 |
TurnOverRoll=100 |
[Coupling] |
YawPosFeedback=90 |
YawNegFeedback=5 |
/branches/V0.68d_Xtype_and_bugfix/Kopter-Tool/normal.mkp |
---|
0,0 → 1,64 |
[Setup] |
Name=Normal |
GlobalConfig=64 |
[Channels] |
Gas=1 |
Gier=2 |
Nick=3 |
Roll=4 |
Poti_1=5 |
Poti_2=6 |
Poti_3=7 |
Poti_4=8 |
[Stick] |
Nick_Roll-P=3 |
Nick_Roll-D=4 |
Gier-P=6 |
[Altitude] |
Setpoint=251 |
MinGas=30 |
P=10 |
Barometric-D=30 |
Z-ACC-Effect=30 |
Gain=3 |
[Gyro] |
P=80 |
I=120 |
DynamicStability=75 |
ACC_Gyro-Factor=30 |
ACC_Gyro-Compensation=32 |
DriftCompensation=4 |
Main-I=32 |
[Others] |
MinGas=15 |
MaxGas=250 |
Compass-Effect=128 |
UnderVoltage=94 |
NotGas=35 |
NotGasTime=20 |
[User] |
Parameter_1=80 |
Parameter_2=0 |
Parameter_3=0 |
Parameter_4=0 |
Parameter_5=0 |
Parameter_6=0 |
Parameter_7=0 |
Parameter_8=0 |
[Camera] |
ServoNickControl=100 |
ServoNickCompensation=40 |
ServoNickInvert=0 |
ServoNickMin=50 |
ServoNickMax=150 |
ServoNickRefreshRate=5 |
[Loop] |
Config=0 |
GasLimit=50 |
StickThreshold=90 |
LoopHysteresis=50 |
TurnOverNick=100 |
TurnOverRoll=100 |
[Coupling] |
YawPosFeedback=90 |
YawNegFeedback=5 |
/branches/V0.68d_Xtype_and_bugfix/Kopter-Tool/sport.mkp |
---|
0,0 → 1,64 |
[Setup] |
Name=Sport |
GlobalConfig=64 |
[Channels] |
Gas=1 |
Gier=2 |
Nick=3 |
Roll=4 |
Poti_1=5 |
Poti_2=6 |
Poti_3=7 |
Poti_4=8 |
[Stick] |
Nick_Roll-P=4 |
Nick_Roll-D=8 |
Gier-P=12 |
[Altitude] |
Setpoint=251 |
MinGas=30 |
P=10 |
Barometric-D=30 |
Z-ACC-Effect=30 |
Gain=4 |
[Gyro] |
P=80 |
I=150 |
DynamicStability=100 |
ACC_Gyro-Factor=30 |
ACC_Gyro-Compensation=16 |
DriftCompensation=4 |
Main-I=32 |
[Others] |
MinGas=15 |
MaxGas=250 |
Compass-Effect=128 |
UnderVoltage=94 |
NotGas=35 |
NotGasTime=20 |
[User] |
Parameter_1=128 |
Parameter_2=0 |
Parameter_3=0 |
Parameter_4=0 |
Parameter_5=0 |
Parameter_6=0 |
Parameter_7=0 |
Parameter_8=0 |
[Camera] |
ServoNickControl=100 |
ServoNickCompensation=40 |
ServoNickInvert=0 |
ServoNickMin=50 |
ServoNickMax=150 |
ServoNickRefreshRate=5 |
[Loop] |
Config=0 |
GasLimit=50 |
StickThreshold=90 |
LoopHysteresis=50 |
TurnOverNick=100 |
TurnOverRoll=100 |
[Coupling] |
YawPosFeedback=90 |
YawNegFeedback=5 |
/branches/V0.68d_Xtype_and_bugfix/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/V0.68d_Xtype_and_bugfix/Settings.h |
---|
--- V0.68d_Xtype_and_bugfix/_Settings.h (nonexistent) |
+++ V0.68d_Xtype_and_bugfix/_Settings.h (revision 758) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 12 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 500 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Sender |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ #define K_NICK 0 |
+ #define K_ROLL 1 |
+ #define K_GAS 2 |
+ #define K_GIER 3 |
+ #define K_POTI1 4 |
+ #define K_POTI2 5 |
+ #define K_POTI3 6 |
+ #define K_POTI4 7 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Kamera |
+// Stick_P:3 |
+// Stick_D:0 |
+// Gyro_P: 175 |
+// Gyro_I: 175 |
+// Ki_Anteil: 10 |
+// +++++++++++++++++++++++++++++++ |
+// + Getestete Settings: |
+// +++++++++++++++++++++++++++++++ |
+// Setting: Normal |
+// Stick_P:2 |
+// Stick_D:8 |
+// Gyro_P: 80 |
+// Gyro_I: 150 |
+// Ki_Anteil: 5 |
+ |
/branches/V0.68d_Xtype_and_bugfix/analog.c |
---|
0,0 → 1,147 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
Delay_ms_Mess(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static unsigned int gier1, roll1, nick1; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
gier1 = ADC; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
roll1 = ADC; |
kanal = 2; |
break; |
case 2: |
nick1 = ADC; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = Aktuell_ay; |
kanal = 7; |
break; |
case 5: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = Aktuell_ax; |
kanal = 0; |
break; |
case 6: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1) / 2; |
else AdWertGier = ADC + gier1; |
kanal = 1; |
break; |
case 7: |
if(PlatinenVersion == 10) AdWertRoll = (ADC + roll1) / 2; |
else AdWertRoll = ADC + roll1; |
kanal = 2; |
break; |
case 8: |
if(PlatinenVersion == 10) AdWertNick = (ADC + nick1) / 2; |
else AdWertNick = ADC + nick1; |
//AdWertNick = 0; |
//AdWertNick += Poti2; |
kanal = 5; |
break; |
case 9: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
AdWertAccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = 3; |
break; |
case 10: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/branches/V0.68d_Xtype_and_bugfix/analog.h |
---|
0,0 → 1,24 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/V0.68d_Xtype_and_bugfix/eeprom.c |
---|
0,0 → 1,182 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 4; // Wert : 0-50 |
EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 12; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 32 * 4; //zur freien Verwendung |
EE_Parameter.UserParam2 = 0; //zur freien Verwendung |
EE_Parameter.UserParam3 = 0; //zur freien Verwendung |
EE_Parameter.UserParam4 = 0; //zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 16; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 100; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 3; // Wert : 0-50 |
EE_Parameter.Stick_P = 3; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 4; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_I = 120; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 20 * 4; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 75; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(void) |
{ |
EE_Parameter.Kanalbelegung[K_NICK] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_GAS] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
EE_Parameter.GlobalConfig = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50 |
EE_Parameter.Stick_P = 2; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 4; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 100; // Wert : 0-250 |
EE_Parameter.Gyro_I = 140; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 16; |
EE_Parameter.UserParam1 = 20 * 4; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 5; |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 50; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/branches/V0.68d_Xtype_and_bugfix/fc.c |
---|
0,0 → 1,1160 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "eeprom.c" |
unsigned char h,m,s; |
volatile unsigned int I2CTimeout = 100; |
volatile int MesswertNick,MesswertRoll,MesswertGier; |
volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
volatile float NeutralAccZ = 0; |
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
volatile long IntegralNick = 0,IntegralNick2 = 0; |
volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
volatile long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
volatile long Integral_Gier = 0; |
volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
volatile long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
volatile long Mess_Integral_Hoch = 0; |
volatile int KompassValue = 0; |
volatile int KompassStartwert = 0; |
volatile int KompassRichtung = 0; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char Notlandung = 0; |
unsigned char HoehenReglerAktiv = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
float GyroFaktor; |
float IntegralFaktor; |
volatile int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay = 0; |
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0; |
char MotorenEin = 0; |
int HoehenWert = 0; |
int SollHoehe = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0; |
float Ki = FAKTOR_I; |
unsigned char Looping_Nick = 0,Looping_Roll = 0; |
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_UserParam5 = 0; |
unsigned char Parameter_UserParam6 = 0; |
unsigned char Parameter_UserParam7 = 0; |
unsigned char Parameter_UserParam8 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 0; |
unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
struct mk_param_struct EE_Parameter; |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
int MaxStickNick = 0,MaxStickRoll = 0; |
void Piep(unsigned char Anzahl) |
{ |
while(Anzahl--) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
beeptime = 100; |
Delay_ms(250); |
} |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsGegenKopplung1 = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
AdNeutralNick= AdWertNick; |
AdNeutralRoll= AdWertRoll; |
AdNeutralGier= AdWertGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY; |
NeutralAccZ = Aktuell_az; |
} |
else |
{ |
NeutralAccX = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1]); |
NeutralAccY = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1]); |
NeutralAccZ = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1]); |
} |
Mess_IntegralNick = 0; |
Mess_IntegralNick2 = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralRoll2 = 0; |
Mess_Integral_Gier = 0; |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
StartLuftdruck = Luftdruck; |
HoeheD = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
ExternHoehenValue = 0; |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll; |
MesswertNick = (signed int) AdWertNick - AdNeutralNick; |
//DebugOut.Analog[26] = MesswertNick; |
DebugOut.Analog[28] = MesswertRoll; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
Mess_Integral_Gier2 += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl = Mess_IntegralNick / 4096L; |
tmpl *= MesswertGier; |
tmpl *= Parameter_AchsKopplung1; //125 |
tmpl /= 2048L; |
tmpl2 = Mess_IntegralRoll / 4096L; |
tmpl2 *= MesswertGier; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 2048L; |
} |
else tmpl = tmpl2 = 0; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertRoll += tmpl; |
MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109 |
Mess_IntegralRoll2 += MesswertRoll; |
Mess_IntegralRoll += MesswertRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(AdWertRoll < 15) MesswertRoll = -1000; |
if(AdWertRoll < 7) MesswertRoll = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertRoll > 1010) MesswertRoll = +1000; |
if(AdWertRoll > 1017) MesswertRoll = +2000; |
} |
else |
{ |
if(AdWertRoll > 2020) MesswertRoll = +1000; |
if(AdWertRoll > 2034) MesswertRoll = +2000; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertNick -= tmpl2; |
MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L; |
Mess_IntegralNick2 += MesswertNick; |
Mess_IntegralNick += MesswertNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(AdWertNick < 15) MesswertNick = -1000; |
if(AdWertNick < 7) MesswertNick = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertNick > 1010) MesswertNick = +1000; |
if(AdWertNick > 1017) MesswertNick = +2000; |
} |
else |
{ |
if(AdWertNick > 2020) MesswertNick = +1000; |
if(AdWertNick > 2034) MesswertNick = +2000; |
} |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
} |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
MesswertNick = AdWertNick; |
MesswertRoll = AdWertRoll; |
MesswertGier = AdWertGier; |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
Mittelwert_AccHoch = (long)AdWertAccHoch; |
// ADC einschalten |
ANALOG_ON; |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
if(MOTOR_OFF || !MotorenEin) |
{ |
Motor_Hinten = 0; |
Motor_Vorne = 0; |
Motor_Rechts = 0; |
Motor_Links = 0; |
if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
if(MotorTest[2]) Motor_Links = MotorTest[2]; |
if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
} |
DebugOut.Analog[12] = Motor_Vorne; |
DebugOut.Analog[13] = Motor_Hinten; |
DebugOut.Analog[14] = Motor_Links; |
DebugOut.Analog[15] = Motor_Rechts; |
//Start I2C Interrupt Mode |
twi_state = 0; |
motor = 0; |
i2c_start(); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255); |
CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
Ki = (float) Parameter_I_Faktor * 0.0001; |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int motorwert,pd_ergebnis,h,tmp_int; |
int pd_ergebnis_roll,pd_ergebnis_nick; |
int GierMischanteil,GasMischanteil; |
static long SummeNick=0,SummeRoll=0; |
static long sollGier = 0,tmp_long,tmp_long2; |
static long IntegralFehlerNick = 0; |
static long IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static unsigned int modell_fliegt = 0; |
static int hoehenregler = 0; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = StickGas; |
if(GasMischanteil < 0) GasMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(!PcZugriff) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
Notlandung = 0; |
} |
ROT_ON; |
if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
Notlandung = 1; |
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
} |
else MotorenEin = 0; |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
Notlandung = 0; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 200) || (GasMischanteil < 40)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SetNeutral(); |
Piep(GetActiveParamSetNumber()); |
} |
} |
else |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
SetNeutral(); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],NeutralAccX / 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1],NeutralAccX % 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL],NeutralAccY / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1],NeutralAccY % 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z],(int)NeutralAccZ / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1],(int)NeutralAccZ % 256); |
Piep(GetActiveParamSetNumber()); |
} |
} |
else delay_neutral = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120) |
{ |
// Starten |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 200; |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
} |
} |
else delay_einschalten = 0; |
//Auf Neutralwerte setzen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 200; |
modell_fliegt = 0; |
} |
} |
else delay_ausschalten = 0; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || Notlandung) |
{ |
int tmp_int; |
// static int stick_nick,stick_roll; |
ParameterZuordnung(); |
StickNick = (StickNick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
StickRoll = (StickRoll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]) > MaxStickNick) |
MaxStickNick = abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]); else MaxStickNick--; |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > MaxStickRoll) |
MaxStickRoll = abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); else MaxStickRoll--; |
if(Notlandung) {MaxStickNick = 0; MaxStickRoll = 0;} |
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Digitale Steuerung per DubWise |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define KEY_VALUE (Parameter_UserParam1 * 4) //(Poti3 * 8) |
if(DubWiseKeys[1]) beeptime = 10; |
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickNick = (ExternStickNick * 7 + tmp_int) / 8; |
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8; |
if(DubWiseKeys[0] & 8) ExternStickGier = 50;else |
if(DubWiseKeys[0] & 4) ExternStickGier =-50;else ExternStickGier = 0; |
if(DubWiseKeys[0] & 2) ExternHoehenValue++; |
if(DubWiseKeys[0] & 16) ExternHoehenValue--; |
StickNick += ExternStickNick / 8; |
StickRoll += ExternStickRoll / 8; |
StickGier += ExternStickGier; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Analoge Steuerung per Seriell |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ExternControl.Config & 0x01 && Parameter_UserParam1 > 128) |
{ |
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P; |
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P; |
StickGier += ExternControl.Gier; |
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung; |
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
} |
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(GyroFaktor < 0) GyroFaktor = 0; |
if(IntegralFaktor < 0) IntegralFaktor = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0; |
} |
} |
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0; |
if(Looping_Oben || Looping_Unten) {Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0; |
} // Ende neue Funken-Werte |
if(Looping_Roll) beeptime = 100; |
if(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Notlandung) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 0.1; |
IntegralFaktor = 0.005; |
Looping_Roll = 0; |
Looping_Nick = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ABGLEICH_ANZAHL 256L |
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
MittelIntegralRoll += IntegralRoll; |
MittelIntegralNick2 += IntegralNick2; |
MittelIntegralRoll2 += IntegralRoll2; |
if(Looping_Nick || Looping_Roll) |
{ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
Mess_IntegralNick2 = Mess_IntegralNick; |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
ZaehlMessungen = 0; |
LageKorrekturNick = 0; |
LageKorrekturRoll = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll) |
{ |
long tmp_long, tmp_long2; |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long /= 16; |
tmp_long2 /= 16; |
if((MaxStickNick > 15) || (MaxStickRoll > 15)) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
#define AUSGLEICH 32 |
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
{ |
static int cnt = 0; |
static char last_n_p,last_n_n,last_r_p,last_r_n; |
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
if(!Looping_Nick && !Looping_Roll) |
{ |
MittelIntegralNick /= ABGLEICH_ANZAHL; |
MittelIntegralRoll /= ABGLEICH_ANZAHL; |
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
#define MAX_I 0//(Poti2/10) |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich; |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
if((MaxStickNick > 15) || (MaxStickRoll > 15) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturRoll /= 2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
tmp_long = IntegralNick2 - IntegralNick; |
tmp_long2 = IntegralRoll2 - IntegralRoll; |
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26; |
IntegralFehlerNick = tmp_long; |
IntegralFehlerRoll = tmp_long2; |
Mess_IntegralNick2 -= IntegralFehlerNick; |
Mess_IntegralRoll2 -= IntegralFehlerRoll; |
// IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2; |
// IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2; |
DebugOut.Analog[17] = IntegralAccNick / 26; |
DebugOut.Analog[18] = IntegralAccRoll / 26; |
DebugOut.Analog[19] = IntegralFehlerNick;// / 26; |
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26; |
DebugOut.Analog[21] = MittelIntegralNick / 26; |
DebugOut.Analog[22] = MittelIntegralRoll / 26; |
//DebugOut.Analog[28] = ausgleichNick; |
DebugOut.Analog[29] = ausgleichRoll; |
DebugOut.Analog[30] = LageKorrekturRoll * 10; |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL * 4) |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) |
#define BEWEGUNGS_LIMIT 20000 |
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick > 5000) ausgleichNick = 5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_p = 1; |
} else last_n_p = 0; |
if(IntegralFehlerNick < -FEHLER_LIMIT2) |
{ |
if(last_n_n) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick < -5000) ausgleichNick = -5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_n = 1; |
} else last_n_n = 0; |
} else cnt = 0; |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
ausgleichRoll = 0; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll > 5000) ausgleichRoll = 5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_p = 1; |
} else last_r_p = 0; |
if(IntegralFehlerRoll < -FEHLER_LIMIT2) |
{ |
if(last_r_n) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll < -5000) ausgleichRoll = -5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_n = 1; |
} else last_r_n = 0; |
} else |
{ |
cnt = 0; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
DebugOut.Analog[27] = ausgleichRoll; |
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick); |
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll); |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
} |
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick_Alt = MittelIntegralNick; |
MittelIntegralRoll_Alt = MittelIntegralRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
ZaehlMessungen = 0; |
} |
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(abs(StickGier) > 20) // war 35 |
{ |
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
} |
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
sollGier = tmp_int; |
Mess_Integral_Gier -= tmp_int; |
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
{ |
int w,v; |
static int SignalSchlecht = 0; |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
{ |
KompassStartwert = KompassValue; |
NeueKompassRichtungMerken = 0; |
} |
w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w > 0) |
{ |
if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
if(SignalSchlecht) SignalSchlecht--; |
} |
else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[2] = Mittelwert_AccNick; |
DebugOut.Analog[3] = Mittelwert_AccRoll; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert; |
DebugOut.Analog[6] =(Mess_Integral_Hoch / 512); |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[16] = Mittelwert_AccHoch; |
/* DebugOut.Analog[16] = motor_rx[0]; |
DebugOut.Analog[17] = motor_rx[1]; |
DebugOut.Analog[18] = motor_rx[2]; |
DebugOut.Analog[19] = motor_rx[3]; |
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3]; |
DebugOut.Analog[20] /= 14; |
DebugOut.Analog[21] = motor_rx[4]; |
DebugOut.Analog[22] = motor_rx[5]; |
DebugOut.Analog[23] = motor_rx[6]; |
DebugOut.Analog[24] = motor_rx[7]; |
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7]; |
*/ |
// DebugOut.Analog[9] = MesswertNick; |
// DebugOut.Analog[9] = SollHoehe; |
// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
// DebugOut.Analog[11] = KompassStartwert; |
// DebugOut.Analog[10] = Parameter_Gyro_I; |
// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
// DebugOut.Analog[9] = KompassRichtung; |
// DebugOut.Analog[10] = GasMischanteil; |
// DebugOut.Analog[3] = HoeheD * 32; |
// DebugOut.Analog[4] = hoehenregler; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//DebugOut.Analog[26] = MesswertNick; |
//DebugOut.Analog[28] = MesswertRoll; |
if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor; |
else MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor; |
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
MesswertGier = MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2; |
DebugOut.Analog[25] = IntegralRoll * IntegralFaktor; |
DebugOut.Analog[31] = StickRoll;// / (26*IntegralFaktor); |
DebugOut.Analog[28] = MesswertRoll; |
// Maximalwerte abfangen |
#define MAX_SENSOR 2048 |
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung |
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//OCR0B = 180 - (Poti1 + 120) / 4; |
//DruckOffsetSetting = OCR0B; |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
{ |
int tmp_int; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) |
{ |
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
HoehenReglerAktiv = 0; |
} |
else |
HoehenReglerAktiv = 1; |
} |
else |
{ |
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
if(Notlandung) SollHoehe = 0; |
h = HoehenWert; |
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
{ h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
h = GasMischanteil - h; // vom Gas abziehen |
h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
if(tmp_int > 50) tmp_int = 50; |
else if(tmp_int < -50) tmp_int = -50; |
h -= tmp_int; |
hoehenregler = (hoehenregler*15 + h) / 16; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
GasMischanteil = hoehenregler; |
} |
} |
if(GasMischanteil > MAX_GAS - 20) GasMischanteil = MAX_GAS - 20; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MUL_G 1.0 |
GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
// GierMischanteil = 0; |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
if(GierMischanteil > ((MAX_GAS - GasMischanteil))) GierMischanteil = ((MAX_GAS - GasMischanteil)); |
if(GierMischanteil < -((MAX_GAS - GasMischanteil))) GierMischanteil = -((MAX_GAS - GasMischanteil)); |
if(GasMischanteil < 20) GierMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - (StickNick - GPS_Nick); // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNick * IntegralFaktor - (StickNick - GPS_Nick); // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > 16000) SummeNick = 16000; |
if(SummeNick < -16000) SummeNick = -16000; |
pd_ergebnis_nick = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int; |
if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - (StickRoll - GPS_Roll); // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - (StickRoll - GPS_Roll);// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > 16000) SummeRoll = 16000; |
if(SummeRoll < -16000) SummeRoll = -16000; |
pd_ergebnis_roll = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int; |
if(pd_ergebnis_roll < -tmp_int) pd_ergebnis_roll = -tmp_int; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Parameter_UserParam8 == 0) // + or x Type |
{ |
pd_ergebnis = pd_ergebnis_nick; |
} |
else |
{ |
pd_ergebnis = (int)((((long)pd_ergebnis_roll + (long)pd_ergebnis_nick) * 23170) / 32768); |
} |
// Motor Vorn |
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Vorne = motorwert; |
// Motor Heck |
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Hinten = motorwert; |
if(Parameter_UserParam8 == 0) // + or x Type |
{ |
pd_ergebnis = pd_ergebnis_roll; |
} |
else |
{ |
pd_ergebnis = (int)((((long)pd_ergebnis_roll - (long)pd_ergebnis_nick) * 23170) / 32768); |
} |
// Motor Links |
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Links = motorwert; |
// Motor Rechts |
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Rechts = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
} |
/branches/V0.68d_Xtype_and_bugfix/fc.h |
---|
0,0 → 1,145 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long IntegralAccNick,IntegralAccRoll; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern volatile float NeutralAccZ; |
extern long Umschlag180Nick, Umschlag180Roll; |
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier; |
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl); |
extern void DefaultKonstanten(void); |
void DefaultKonstanten1(void); |
void DefaultKonstanten2(void); |
void DefaultKonstanten3(void); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Integral_Gier; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Gier; |
extern volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
extern unsigned char MotorWert[5]; |
extern volatile unsigned char SenderOkay; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
#define STRUCT_PARAM_LAENGE 71 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung) |
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
unsigned char Driftkomp; |
unsigned char DynamicStability; |
unsigned char UserParam5; // Wert : 0-250 |
unsigned char UserParam6; // Wert : 0-250 |
unsigned char UserParam7; // Wert : 0-250 |
unsigned char UserParam8; // Wert : 0-250 |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
}; |
/* |
unsigned char ServoNickMax; // Wert : 0-250 |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
*/ |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsGegenKopplung1; |
#endif //_FC_H |
/branches/V0.68d_Xtype_and_bugfix/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File><File path="eeprom.c"></File><File path="spi.h"></File><File path="spi.c"></File></Project> |
/branches/V0.68d_Xtype_and_bugfix/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/V0.68d_Xtype_and_bugfix/gps.h |
---|
0,0 → 1,14 |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/branches/V0.68d_Xtype_and_bugfix/main.c |
---|
0,0 → 1,248 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
unsigned char PlatinenVersion = 10; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if(number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if(set > 5) |
{ |
set = 2; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
//unsigned int timer2 = 0; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10; |
DDRC = 0x81; // SCL |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
SPI_MasterInit(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX + 'a'); |
printf("\n\r=============================="); |
GRN_ON; |
#define EE_DATENREVISION 69 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
printf("\n\rACC nicht abgeglichen!"); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rAbgleich Luftdrucksensor.."); |
timer = SetDelay(1000); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
ExternControl.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
I2CTimeout = 5000; |
while (1) |
{ |
if(UpdateMotor) // ReglerIntervall |
{ |
SPI_TransmitByte(); //# |
UpdateMotor=0; |
//PORTD |= 0x08; |
MotorRegler(); |
//PORTD &= ~0x08; |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
else |
{ |
DubWiseKeys[0] = 0; |
DubWiseKeys[1] = 0; |
ExternControl.Config = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
} |
if(SenderOkay) SenderOkay--; |
if(!I2CTimeout) |
{ |
I2CTimeout = 5; |
i2c_reset(); |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
I2CTimeout--; |
ROT_OFF; |
} |
if(SIO_DEBUG && !UpdateMotor) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
SPI_StartTransmitPacket();//# |
timer = SetDelay(100); |
} |
//if(UpdateMotor) DebugOut.Analog[26]++; |
} |
} |
return (1); |
} |
/branches/V0.68d_Xtype_and_bugfix/main.h |
---|
0,0 → 1,105 |
#ifndef _MAIN_H |
#define _MAIN_H |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF {if(PlatinenVersion == 10) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if(PlatinenVersion == 10) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTB ^= 0x02 |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#define EEPROM_ADR_ACC_NICK 4 |
#define EEPROM_ADR_ACC_ROLL 6 |
#define EEPROM_ADR_ACC_Z 8 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define CFG_DREHRATEN_BEGRENZER 0x80 |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern unsigned char PlatinenVersion; |
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_Settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "spi.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/V0.68d_Xtype_and_bugfix/makefile |
---|
0,0 → 1,422 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 68 |
VERSION_INDEX = 3 |
VERSION_KOMPATIBEL = 7 # PC-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(MCU), atmega644p) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(VERSION_INDEX), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)a |
endif |
ifeq ($(VERSION_INDEX), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)b |
endif |
ifeq ($(VERSION_INDEX), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)c |
endif |
ifeq ($(VERSION_INDEX), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)d |
endif |
ifeq ($(VERSION_INDEX), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)e |
endif |
ifeq ($(VERSION_INDEX), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)f |
endif |
ifeq ($(VERSION_INDEX), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)g |
endif |
ifeq ($(VERSION_INDEX), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)h |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c spi.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) -DVERSION_INDEX=$(VERSION_INDEX) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PROGRAMMER = ponyser |
AVRDUDE_PROGRAMMER = avrispv2 |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_PORT = usb # programmer connected to USB |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/V0.68d_Xtype_and_bugfix/menu.c |
---|
0,0 → 1,133 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char RemoteTasten = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
static unsigned char MaxMenue = 11,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); RemotePollDisplayLine = -1; } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); RemotePollDisplayLine = -1;} |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);} else {LCD_printfxy(16,0,"[%i]",MenuePunkt);}; |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"+ MikroKopter +"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX+'a'); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert); |
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier); |
} |
else |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick/2); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier/2); |
} |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"ExternControl " ); |
LCD_printfxy(0,1,"Ni:%4i Ro:%4i ",ExternControl.Nick,ExternControl.Roll); |
LCD_printfxy(0,2,"Gs:%4i Gi:%4i ",ExternControl.Gas,ExternControl.Gier); |
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Hight,ExternControl.Config); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteTasten = 0; |
} |
/branches/V0.68d_Xtype_and_bugfix/menu.h |
---|
0,0 → 1,6 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char RemoteTasten; |
/branches/V0.68d_Xtype_and_bugfix/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/V0.68d_Xtype_and_bugfix/printf_P.c |
---|
0,0 → 1,480 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/branches/V0.68d_Xtype_and_bugfix/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/V0.68d_Xtype_and_bugfix/rc.c |
---|
0,0 → 1,86 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
// if((signal > (int) Parameter_UserParam2 * 10) && (signal < 8000)) |
if((signal > 1100) && (signal < 8000)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
// tmp = (7 * (PPM_in[index]) + signal) / 8; |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen |
} |
} |
} |
/branches/V0.68d_Xtype_and_bugfix/rc.h |
---|
0,0 → 1,29 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega32__) |
#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644__) |
//#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
//#define TIMER_TEILER CK256 // bei 20MHz |
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/V0.68d_Xtype_and_bugfix/spi.c |
---|
0,0 → 1,113 |
// ######################## SPI - FlightCtrl ################### |
#include "main.h" |
struct str_ToNaviCtrl ToNaviCtrl; |
struct str_FromNaviCtrl FromNaviCtrl; |
unsigned char SPI_BufferIndex; |
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)]; |
unsigned char *Ptr_buffer = (unsigned char *) &ToNaviCtrl; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
#ifdef USE_SPI_COMMUNICATION |
//------------------------------------------------------ |
void SPI_MasterInit(void) |
{ |
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input |
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT); |
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64 |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); |
SPITransferCompleted = 1; |
ToNaviCtrl.Sync1 = 0x81; |
ToNaviCtrl.Sync2 = 0x55; |
ToNaviCtrl.Comp = 12; |
ToNaviCtrl.IntegralNick = 12345; |
ToNaviCtrl.IntegralRoll = 56789; |
ToNaviCtrl.StickNick = 100; |
ToNaviCtrl.StickRoll = 150;//(char) StickRoll; |
ToNaviCtrl.StickGier = 200;//(char) StickGier; |
} |
//------------------------------------------------------ |
void SPI_StartTransmitPacket(void) |
{ |
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed |
if (!SPITransferCompleted) return; |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
SPITransferCompleted = 0; |
UpdateSPI_Buffer(); // update buffer |
SPI_BufferIndex = 1; |
DebugOut.Analog[16]++; |
// -- Debug-Output --- |
/* DebugOut.Analog[20] = FromNaviCtrl.Comp; |
DebugOut.Analog[21] = FromNaviCtrl.GPS_Nick; |
DebugOut.Analog[22] = FromNaviCtrl.GPS_Roll; |
DebugOut.Analog[23] = FromNaviCtrl.CompassValue; |
*/ |
//---- |
SPDR = ToNaviCtrl.Sync1; // Start transmission |
ToNaviCtrl.ChkSum = ToNaviCtrl.Sync1; |
} |
//------------------------------------------------------ |
//SIGNAL(SIG_SPI) |
void SPI_TransmitByte(void) |
{ |
if (!(SPSR & (1 << SPIF))) return; |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
if (SPI_BufferIndex < sizeof(FromNaviCtrl)) |
{ |
SPI_Buffer[SPI_BufferIndex]= SPDR; // get data |
// if (SPI_BufferIndex < 32 ) DebugOut.Analog[26+SPI_BufferIndex] = SPI_Buffer[SPI_BufferIndex]; |
//if(SPDR!= 0x00) DebugOut.Analog[19]++; ; |
} |
if (SPI_BufferIndex < sizeof(ToNaviCtrl)) |
{ |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
SPDR = Ptr_buffer[SPI_BufferIndex]; |
ToNaviCtrl.ChkSum += Ptr_buffer[SPI_BufferIndex]; |
} |
else |
{ |
unsigned char *ptr = (unsigned char *)&FromNaviCtrl; |
SPITransferCompleted = 1; |
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer)); |
} |
SPI_BufferIndex++; |
} |
//------------------------------------------------------ |
void UpdateSPI_Buffer(void) |
{ |
/*static unsigned char i =0; |
cli(); |
ToNaviCtrl.Comp = SPI_PROTOCOL_COMP; |
ToNaviCtrl.IntegralNick = (int) (IntegralNick >> 4); |
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll >> 4); |
ToNaviCtrl.StickNick = 4; |
ToNaviCtrl.StickRoll = 5;//(char) StickRoll; |
ToNaviCtrl.StickGier = 6;//(char) StickGier; |
sei(); |
*/ |
} |
#endif |
/branches/V0.68d_Xtype_and_bugfix/spi.h |
---|
0,0 → 1,89 |
// ######################## SPI - FlightCtrl ################### |
#ifndef _SPI_H |
#define _SPI_H |
//#define USE_SPI_COMMUNICATION |
#define SPI_PROTOCOL_COMP 1 |
//----------------------------------------- |
#define DDR_SPI DDRB |
#define DD_SS PB4 |
#define DD_SCK PB7 |
#define DD_MOSI PB5 |
#define DD_MISO PB6 |
// for compatibility reasons gcc3.x <-> gcc4.x |
#ifndef SPCR |
#define SPCR SPCR0 |
#endif |
#ifndef SPE |
#define SPE SPE0 |
#endif |
#ifndef MSTR |
#define MSTR MSTR0 |
#endif |
#ifndef SPR1 |
#define SPR1 SPR01 |
#endif |
#ifndef SPR0 |
#define SPR0 SPR00 |
#endif |
#ifndef SPIE |
#define SPIE SPIE0 |
#endif |
#ifndef SPDR |
#define SPDR SPDR0 |
#endif |
#ifndef SPIF |
#define SPIF SPIF0 |
#endif |
#ifndef SPSR |
#define SPSR SPSR0 |
#endif |
// ------------------------- |
#define SLAVE_SELECT_DDR_PORT DDRC |
#define SLAVE_SELECT_PORT PORTC |
#define SPI_SLAVE_SELECT PC5 |
struct str_ToNaviCtrl |
{ |
unsigned char Sync1, Sync2; |
unsigned char Comp; |
int IntegralNick; |
int IntegralRoll; |
char StickNick,StickRoll,StickGier; |
unsigned char ChkSum; |
}; |
struct str_FromNaviCtrl |
{ |
unsigned int Dummy; |
unsigned char Comp; |
int GPS_Nick; |
int GPS_Roll; |
int CompassValue; |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
extern void SPI_MasterInit(void); |
extern void SPI_StartTransmitPacket(void); |
extern void UpdateSPI_Buffer(void); |
extern void SPI_TransmitByte(void); |
#else |
// -------------------------------- Dummy ----------------------------------------- |
#define SPI_MasterInit() ; |
#define SPI_StartTransmitPacket() ; |
#define UpdateSPI_Buffer() ; |
#define SPI_TransmitByte() ; |
#endif |
#endif |
/branches/V0.68d_Xtype_and_bugfix/timer0.c |
---|
0,0 → 1,165 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
unsigned int BeepMuster = 0xffff; |
int ServoValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
unsigned char pieper_ein = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
if(beeptime & BeepMuster) |
{ |
pieper_ein = 1; |
} |
else pieper_ein = 0; |
} |
else |
{ |
pieper_ein = 0; |
BeepMuster = 0xffff; |
} |
if(pieper_ein) |
{ |
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2 |
else PORTC |= (1<<7); // Speaker an PORTC.7 |
} |
else |
{ |
if(PlatinenVersion == 10) PORTD &= ~(1<<2); |
else PORTC &= ~(1<<7); |
} |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 0; |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
void Delay_ms_Mess(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)) ANALOG_ON; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/V0.68d_Xtype_and_bugfix/timer0.h |
---|
0,0 → 1,16 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
void Timer_Init(void); |
void Delay_ms(unsigned int); |
void Delay_ms_Mess(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
extern unsigned int BeepMuster; |
/branches/V0.68d_Xtype_and_bugfix/twimaster.c |
---|
0,0 → 1,152 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
void i2c_reset(void) |
//############################################################################ |
{ |
i2c_stop(); |
twi_state = 0; |
motor = TWDR; |
motor = 0; |
TWCR = 0x80; |
TWAMR = 0; |
TWAR = 0; |
TWDR = 0; |
TWSR = 0; |
TWBR = 0; |
i2c_init(); |
i2c_start(); |
i2c_write_byte(0); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor_Vorne); |
break; |
case 1: |
i2c_write_byte(Motor_Hinten); |
break; |
case 2: |
i2c_write_byte(Motor_Rechts); |
break; |
case 3: |
i2c_write_byte(Motor_Links); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+4] = TWDR; |
motorread++; |
if (motorread>3) motorread=0; |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
} |
TWCR |= 0x80; |
} |
/branches/V0.68d_Xtype_and_bugfix/twimaster.h |
---|
0,0 → 1,33 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_reset(void); |
extern void i2c_init (void); // I2C initialisieren |
extern char i2c_start (void); // Start I2C |
extern void i2c_stop (void); // Stop I2C |
extern char i2c_write_byte (char byte); // 1 Byte schreiben |
extern void i2c_reset(void); |
#endif |
/branches/V0.68d_Xtype_and_bugfix/uart.c |
---|
0,0 → 1,399 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char RemotePollDisplayLine = 0; |
unsigned char NurKanalAnforderung = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char DubWiseKeys[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
unsigned char ConfirmFrame; |
struct str_DebugOut DebugOut; |
struct str_ExternControl ExternControl; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"IntegralNick ", //0 |
"IntegralRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"HoehenWert ", //5 |
"AccZ ", |
"Gas ", |
"KompassValue ", |
"Spannung ", |
"Empfang ", //10 |
"Analog11 ", |
"Motor_Vorne ", |
"Motor_Hinten ", |
"Motor_Links ", |
"Motor_Rechts ", //15 |
"Acc_Z ", |
"MittelAccNick ", |
"MittelAccRoll ", |
"IntegralErrNick ", |
"IntegralErrRoll ", //20 |
"MittelIntNick ", |
"MittelIntRoll ", |
"NeutralNick ", |
"RollOffset ", |
"IntRoll*Faktor ", //25 |
"Analog26 ", |
"DirektAusglRoll ", |
"MesswertRoll ", |
"AusgleichRoll ", |
"I-LageRoll ", //30 |
"StickRoll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
if(RxdBuffer[2] == 'R') wdt_enable(WDTO_250MS); // Reset-Commando |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
// unsigned int tmp_int_arr1[1]; |
// unsigned int tmp_int_arr2[2]; |
// unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
// unsigned char tmp_char_arr3[3]; |
// unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'a':// Texte der Analogwerte |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
DebugTextAnforderung = tmp_char_arr2[0]; |
break; |
case 'b': |
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes); |
RemoteTasten |= ExternControl.RemoteTasten; |
ConfirmFrame = ExternControl.Frame; |
break; |
case 'c': |
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes); |
RemoteTasten |= ExternControl.RemoteTasten; |
ConfirmFrame = ExternControl.Frame; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
if(tmp_char_arr2[1] == 255) NurKanalAnforderung = 1; else NurKanalAnforderung = 0; // keine Displaydaten |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'k':// Keys von DubWise |
Decode64((unsigned char *) &DubWiseKeys[0],sizeof(DubWiseKeys),3,AnzahlEmpfangsBytes); |
ConfirmFrame = DubWiseKeys[3]; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &ExternControl,sizeof(ExternControl)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A',DebugTextAnforderung + '0',(unsigned char *) ANALOG_TEXT[DebugTextAnforderung],16); |
DebugTextAnforderung = 255; |
} |
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz ohne CRC bestätigen |
{ |
SendeBuffer[0] = '#'; |
SendeBuffer[1] = ConfirmFrame; |
SendeBuffer[2] = '\r'; |
UebertragungAbgeschlossen = 0; |
ConfirmFrame = 0; |
UDR = SendeBuffer[0]; |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++RemotePollDisplayLine == 4 || NurKanalAnforderung) |
{ |
SendOutData('4',0,(unsigned char *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen |
RemotePollDisplayLine = -1; |
} |
else SendOutData('0' + RemotePollDisplayLine,0,(unsigned char *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/V0.68d_Xtype_and_bugfix/uart.h |
---|
0,0 → 1,107 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
#define DUB_KEY_UP 4 |
#define DUB_KEY_DOWN 8 |
#define DUB_KEY_RIGHT 32 |
#define DUB_KEY_LEFT 16 |
#define DUB_KEY_FIRE 64 |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern unsigned char RemotePollDisplayLine; |
extern int Debug_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[4]; |
extern unsigned char DubWiseKeys[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_ExternControl |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
signed char Nick; |
signed char Roll; |
signed char Gier; |
unsigned char Gas; |
signed char Hight; |
unsigned char free; |
unsigned char Frame; |
unsigned char Config; |
}; |
extern struct str_ExternControl ExternControl; |
struct str_VersionInfo |
{ |
unsigned char Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/branches/V0.68d_Xtype_and_bugfix/version.txt |
---|
0,0 → 1,123 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
V0.61 - V0.63 H.Buss 27.09.2007 |
- Poti 4 und Kanal 8 werden im Menü angezeigt |
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt |
- Analog.c: Aktuell_ax korrigiert |
- auf 32 Debug-Kanäle erweitert |
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar |
- leichte Anpassungen im Gier - Geschwindigkeit und Drift |
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein |
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird |
- die PPM-Ausgänge liegen wieder an den Pins an |
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders |
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen |
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an |
- Sticksignale werden präziser ausgewertet |
- Stick-Kanäle werden ans Kopter-Tool übertragen |
- Es muss die Version V1.47 des Kopter-Tool verwendet werden |
- Die Settings werden auf Default zurückgesetzt |
- am Piepen kann man die Fehlerart unterscheiden |
1. einzelnes Piepen beim Einschalten und Kalibrieren |
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall |
3. schnelleres Intervall mindestens 1 Sek -> Akku |
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört |
V0.64 H.Buss 30.09.2007 |
- beim Gieren wurden die Achsen nicht hart genug geregelt |
V0.65a H.Buss 15.10.2007 |
- Integral im Mischer wieder integriert |
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100 |
- ACC/Gyro Abgleich auch bei HH |
V0.66a H.Buss 3.11.2007 |
- Messwertverarbeitung aus dem Analog-Interrupt entfernt |
- Analogmessung hängt jetzt am FC-Timing |
- Looping-Stick-Hysterese eingebaut |
- Looping-180°-Umschlag einstellbar |
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll |
- Lageregelung nach ACC-Sensor verbessert |
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage |
- Gyrodriftkompensation überarbeitet |
- Bug in der Gier-Stick-Berechnung behoben |
- Gyro-Messung auf 1kHz beschleunigt |
V0.67a H.Buss 16.11.2007 |
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode) |
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus |
- Feinabstimmung |
- Beim HH-Modus gab es noch Bugs |
V0.67e H.Buss 29.11.2007 |
- Parameter: Dynamic Stability und Driftfaktor eingeführt |
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen |
- Kompatibilität zum Koptertool erhöht |
V0.67f H.Buss 04.12.2007 |
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional |
- Schub für Gier wird jetzt auf den Gaswert begrenzt, dadurch steigt der MK nicht mehr beim Gieren. Gier ist allerdings nicht mehr so agressiv |
- Die ACC-Nullwerte können jetzt dauerhaft im EEPROM gespeichert werden (Stick:Vollgas und Gier rechts) |
V0.68a I.Busker 28.12.2007 |
- SPI.c & SPI.h ins Projekt aufgenommen |
SPI-Kommuikation kann in SPI.h aktiviert/deaktivert werden |
V0.68c H.Buss 05.01.2008 |
- Stickauswertung verbessert -> träger und präziser |
- Alle Settings angepasst |
V0.68 branch Walter 04.03.2008 |
Modifziert für X Anordnung der Motoren |
- diverse kleine Sourcecode Unschönheiten behoben (siehe forum killagreg buglist) |
- Es kann mit UserParameter8 zwischen normaler und x Anordnung umgeschaltet werden |
0 für normal, ungleich 0 für X Anordnung |
Die Flight-CTRL muß 45 grad nach rechts gedreht verbaut werden. |