/tags/V0.76g/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> |
/tags/V0.76g/GPS.c |
---|
0,0 → 1,32 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + 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; |
signed int GPS_Nick2 = 0; |
signed int GPS_Roll2 = 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; |
} |
/tags/V0.76g/Hex-Files/BootLoader_MEGA644P_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 |
/tags/V0.76g/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 |
/tags/V0.76g/Hex-Files/Flight-Ctrl_MEGA644_V0_76g.hex |
---|
0,0 → 1,3504 |
:100000000C943B050C9456050C9456050C9456051F |
:100010000C9456050C9456050C9456050C945605F4 |
:100020000C9456050C9472180C9456050C945605B5 |
:100030000C94562C0C9456050C9456050C945605AD |
:100040000C9456050C9456050C9406170C94560502 |
:100050000C940A0C0C9456050C94D10B0C94560578 |
:100060000C94861D0C9456050C94112B0C9456057B |
:100070000C9446670C9456050C945605341E271EA6 |
:100080001B1E011EE71DC31DD51D38216C206920D4 |
:10009000C31D56203C201C20FC1FAA1F581F401EB9 |
:1000A000862B792BC62BAA2B9E2B372B482B482B24 |
:1000B0004F2B6B2B662B4B2B532B4F2B622B6F2B0A |
:1000C0004B2B532B4F2B5E2B742B4B2BD82B0A0D0A |
:1000D000426174743A0020332043656C6C732020B5 |
:1000E0000020342043656C6C73202000204C6F7717 |
:1000F000207761726E696E67206C6576656C3A2058 |
:1001000025642E2564000A0D3D3D3D3D3D3D3D3DB0 |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D3D3D3D3D3D3D3D3D3D000A0D466C67 |
:1001300069676874436F6E74726F6C0A0D48617200 |
:1001400064776172653A25642E25640A0D536F66E3 |
:1001500074776172653A5625642E25642563200004 |
:100160000A0D74686520757365206F662074686970 |
:100170007320736F667477617265206973206F6E88 |
:100180006C79207065726D6974746564200A0D6FF6 |
:100190006E206F726967696E616C204D696B726F5A |
:1001A0004B6F707465722D4861726477617265007F |
:1001B0000A0D7777772E4D696B726F4B6F70746590 |
:1001C000722E646520286329204869537973746509 |
:1001D0006D7320476D6248000A0D3D3D3D3D3D3D3C |
:1001E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3F |
:1001F0003D3D3D3D3D3D3D3D3D3D3D3D3D000A0DCF |
:1002000047656E65726174696E67206465666175C5 |
:100210006C74204D69786572205461626C65000AC7 |
:100220000D4D697865722D436F6E6669673A2027B8 |
:1002300025732720282575204D6F746F7273290050 |
:100240000A0D466F756E6420424C2D4374726C3AF1 |
:100250002000256420000A0D0A0D2121204D49535C |
:1002600053494E4720424C2D4354524C3A2025646A |
:10027000202121000A0D3D3D3D3D3D3D3D3D3D3DA3 |
:100280003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D9E |
:100290003D3D3D3D3D3D3D3D3D000A0D496E69748E |
:1002A0002E20454550524F4D003A2047656E6572ED |
:1002B0006174696E672044656661756C742D506168 |
:1002C00072616D65746572207573696E67206F6CFD |
:1002D0006420537469636B2053657474696E67732B |
:1002E000000A0D466C696768742D74696D65202578 |
:1002F00075206D696E2020546F74616C3A257520ED |
:100300006D696E000A0D414343206E6F7420636176 |
:100310006C696272617465642021000A0D5573690D |
:100320006E6720706172616D6574657273657420AB |
:100330002564000A0D43616C6962726174696E67BD |
:100340002070726573737572652073656E736F725A |
:100350002E2E004F4B0A0D000A0D436F6E74726F04 |
:100360006C3A200048656164696E67486F6C640090 |
:100370004E6F726D616C20284143432D4D6F646553 |
:1003800029000A0D3D3D3D3D3D3D3D3D3D3D3D3D51 |
:100390003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D8D |
:1003A0003D3D3D3D3D3D3D0A0D002E000A0D2044E2 |
:1003B0004143206F7220493243204552524F52210F |
:1003C00020436865636B204932432C2033567265A5 |
:1003D000662C2044414320616E6420424C2D4374BE |
:1003E000726C005B25695D005B25695D002B204D0B |
:1003F000696B726F4B6F70746572202B0048573AAF |
:100400005625642E25642053573A25642E256425ED |
:10041000630053657474696E673A25642025730020 |
:10042000493243204552524F52212121004D6973D8 |
:1004300073696E6720424C2D4374726C3A256421B7 |
:10044000210028632920486F6C676572204275730C |
:100450007300486F6568653A2020202020253569A3 |
:1004600000536F6C6C486F6568653A2025356900EC |
:100470004C756674647275636B3A20253569004F5C |
:1004800066662020202020203A20253569004B6513 |
:10049000696E65200048F668656E726567656C7503 |
:1004A0006E6700616B742E204C616765004E696356 |
:1004B0006B3A20202020202025356900526F6C6C7B |
:1004C0003A202020202020253569004B6F6D706177 |
:1004D00073733A202020253569004B313A25346961 |
:1004E00020204B323A25346920004B333A253469B9 |
:1004F00020204B343A25346920004B353A253469A5 |
:1005000020204B363A25346920004B373A25346990 |
:1005100020204B383A25346920004E693A25346949 |
:100520002020526F3A253469200047733A253469F8 |
:10053000202047693A253469200050313A25346932 |
:10054000202050323A253469200050333A2534694E |
:10055000202050343A25346920004779726F202DCD |
:100560002053656E736F72004E69636B202534698A |
:1005700020282533692E25692900526F6C6C2025AF |
:10058000346920282533692E256929004769657259 |
:1005900020253469202825336929004E69636B20A2 |
:1005A00025346920282533692E25782900526F6C5F |
:1005B0006C2025346920282533692E2578290047A9 |
:1005C00069657220253469202825336929004E6920 |
:1005D000636B202534692028253369292825336950 |
:1005E0002900526F6C6C2025346920282533692935 |
:1005F0002825336929004769657220253469202838 |
:1006000025336929282533692900414343202D20BA |
:1006100053656E736F72004E69636B2025346920D9 |
:10062000282533692900526F6C6C202534692028F5 |
:100630002533692900486F636820253469202825FF |
:1006400033692900566F6C746167653A2020202554 |
:1006500035690052432D4C6576656C3A202025356E |
:10066000690052432D4368616E6E656C733A2534A0 |
:1006700069004B6F6D706173732020202020202053 |
:10068000005269636874756E673A202025356900E9 |
:100690004D657373776572743A2020253569005370 |
:1006A000746172743A202020202025356900506F33 |
:1006B0007469313A202025336900506F7469323AE9 |
:1006C000202025336900506F7469333A2020253388 |
:1006D0006900506F7469343A2020253369005365EE |
:1006E00072766F202000536574706F696E742020DD |
:1006F000253369005374656C6C756E673A20253339 |
:10070000690052616E67653A2533692D25336900AA |
:1007100045787465726E436F6E74726F6C20200042 |
:100720004E693A2534692020526F3A2534692000F9 |
:1007300047733A253469202047693A2534692000F7 |
:1007400048693A253469202043663A2534692000F7 |
:10075000424C2D4374726C204572726F727320008C |
:100760002025336420202533642020253364202075 |
:100770002533642000202533642020253364202085 |
:100780002533642020253364200020253364202075 |
:100790002533642020253364202025336420004243 |
:1007A0004C2D4374726C20666F756E64200020259A |
:1007B000632020202563202020256320202025631E |
:1007C0002000202563202020256320202025632071 |
:1007D0002020256320002025632020202D2020209C |
:1007E0002D2020202D0031300031310031320046E3 |
:1007F0006C696768742D54696D6520200020202085 |
:100800002020202535756D696E00546F74616C3A37 |
:100810002535756D696E0028726573657429000A47 |
:100820000D506C6561736520636F6E6E6563742037 |
:100830005370656B7472756D20726563656976655A |
:100840007220666F722062696E64696E67204E4F17 |
:10085000572E2E2E006F6B2E0A0D0054696D656F9A |
:1008600075742E0A0D000001020304040506070832 |
:10087000090A0B0B0C0D0E0F101111121314151584 |
:1008800016171818191A1B1B1C1D1D1E1F1F2021AF |
:100890002122232324242525262727282829292AFD |
:1008A0002A2B2B2C2C2D2D2D2E2E2F2F303030316E |
:1008B00031323232333333343434353535363636FB |
:1008C00037373737383838393939393A3A3A3A3B9D |
:1008D0003B3B3B3C3C3C3C3C3D3D3D3D3E3E3E3E4F |
:1008E0003E3F3F3F3F3F3F4040404040404141410D |
:1008F00041414142424242424242434343434343D5 |
:1009000043444444444444444445454545454545A1 |
:100910004545464646464646464646474747474774 |
:10092000474747474747484848484848484848484D |
:100930004849494949494949494949494949494A27 |
:100940004A4A4A4A4A4A4A4A4A4A4A4A4A4B4B4B04 |
:100950004B4B4B4B4B4B4B4B4B4B4B4B4B4B4C4CE5 |
:100960004C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4CC7 |
:100970004C4D4D4D4D4D4D4D4D4D4D4D4D4D4D4DA8 |
:100980004D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E8E |
:100990004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E77 |
:1009A0004E4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F58 |
:1009B0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F47 |
:1009C00000008F001E01AD013B02CA025803E6037E |
:1009D000740402058F051B06A7063307BE074808E7 |
:1009E000D2085B09E3096B0AF20A780BFD0B810C54 |
:1009F000040D860D070E870E060F840F00107B1066 |
:100A0000F5106E11E5115B12CF124213B3132314CC |
:100A10009214FE146A15D3153B16A1160517671715 |
:100A2000C81727188318DE1837198E19E319361AD4 |
:100A3000871AD61A231B6E1BB61BFD1B411C831C79 |
:100A4000C31C001D3C1D751DAB1DE01D121E421E6A |
:100A50006F1E9A1EC31EE91E0D1F2E1F4D1F691FFC |
:100A6000841F9B1FB01FC31FD31FE11FEC1FF51F67 |
:100A7000FB1FFF1F002011241FBECFEFD0E1DEBF00 |
:100A8000CDBF13E0A0E0B1E0E2E0F8ED02C00590D8 |
:100A90000D92A63DB107D9F71AE0A6EDB3E001C06B |
:100AA0001D92A931B107E1F70C9487060C94000060 |
:100AB000282FFB018150853008F023E0842F9927EF |
:100AC000332721503040829FD001839FB00D929FE9 |
:100AD000B00D1124AC59BF4F019724F00E94E36B75 |
:100AE0000192FACF0E949E650895863038F085E025 |
:100AF000A2E0B0E0082E0E94F06B08958823C1F7B1 |
:100B00000895582F863048F155E0842F9927252FD6 |
:100B1000332721503040829FD001839FB00D929F98 |
:100B2000B00D1124AC59BF4FFB01019724F0019087 |
:100B30000E94F06BFACFA2E6B0E0042E0E94F06BA8 |
:100B4000A0E5B0E088E0FB01182E0E94FC6B852F29 |
:100B50000E9475050E949E6508958823B1F6089548 |
:100B6000CF93A2E0B0E00E94E36B802DC82F8150AC |
:100B7000853020F0C3E08C2F0E9475058C2F9927BB |
:100B8000CF9108958091E108E82FFF27EE0FFF1F16 |
:100B9000E155F74F808191818D5E9F4F14F0109247 |
:100BA0000301808191818A5B9F4F24F4809103012E |
:100BB000882319F020917E0717C081E080930301FC |
:100BC00020917E07280F20937E07253038F088EE8D |
:100BD00093E09093FC038093FB0306C066E970E00A |
:100BE000822F0E945B31E6CF822F992790934C0889 |
:100BF00080934B0808951F93CF93DF93182F88237A |
:100C000051F48091FF088233A0F0809300011123FA |
:100C100009F479C038C08EEC90E09F938F931F92B7 |
:100C20000E9471140F900F900F908091FF088233F3 |
:100C300060F784EF91E00E94F017EC01112309F0B6 |
:100C400042C08091270390912803823891050CF0CF |
:100C500046C08091FF0823E0829FC0011124809349 |
:100C600000011123A1F268EC70E0822F0E945B3139 |
:100C700086ED90E09F938F931F920E9471140F90C6 |
:100C80000F900F90C4CF809100016AE00E94736BB7 |
:100C9000892F99279F938F93809100010E94736BF6 |
:100CA00099279F938F938CEE90E09F938F931F9241 |
:100CB0000E9471148DB79EB707960FB6F8949EBF29 |
:100CC0000FBE8DBF20C0CE010E94F917882309F006 |
:100CD000B8CFCE010E94F9178823A9F3B2CF809133 |
:100CE000FF089927880F991F880F991F809300018B |
:100CF000112309F48CCF68EC70E084E00E945B3132 |
:100D000081EE90E0B7CFDF91CF911F910895CFEFA3 |
:100D1000D0E1DEBFCDBFEE24FF2414B815B8C7EE76 |
:100D2000D3E0E297D7FFFDCF189B6FC1199B78C125 |
:100D30002DE02093020181E887B93E9A8FEF88B9B0 |
:100D40008BE184B981E085B98EE38AB987E48BB9F8 |
:100D5000469A84B7877F84BF8091600088618093C2 |
:100D600060001092600080ED97E09093FC03809308 |
:100D7000FB031092D8041092D7041092B40810927A |
:100D8000B3081092DA041092D9041092DC04109285 |
:100D9000DB04243108F43FC188E894E0A0E0B0E02F |
:100DA0008093860390938703A0938803B09389036D |
:100DB0002A3009F465C1243109F462C1289A0E94DD |
:100DC0005B180E942C180E9446110E94412C0E9420 |
:100DD000541C0E94D02A0E94D361789486E091E04E |
:100DE0009F938F931F920E9471140F900F900F90FA |
:100DF00087E690E09F938F938CE490E09F938F938E |
:100E00001F921F92809102016AE00E94736B892FEA |
:100E100099279F938F93809102010E94736B99276A |
:100E20009F938F938CE291E09F938F931F920E94E8 |
:100E300071148DB79EB70D960FB6F8949EBF0FBE76 |
:100E40008DBF80E691E09F938F931F920E94711453 |
:100E50000F900F900F9080EB91E09F938F931F92D4 |
:100E60000E9471140F900F900F9088ED91E09F9366 |
:100E70008F931F920E9471148091C8000F900F9061 |
:100E80000F90803209F4F4C0809102018C3008F098 |
:100E9000C0C0299A49E061EE78E083E00E945805DD |
:100EA000C8EED3E0DE010E94E36B802D813009F4AF |
:100EB000B9C08EEF91E09F938F931F920E9471149F |
:100EC0000F900F900F9023ED35E0F9018FE015861C |
:100ED00016861786108A8150349687FFF8CF80E4F3 |
:100EE0008093E0058093E1051092E2058093E3058D |
:100EF0008093E40590EC9093E5051092E6058093CD |
:100F0000E7058093E8051092E9059093EA05909330 |
:100F1000EB058093EC051092ED058093EE05909320 |
:100F2000EF0581E08093D30544ED55E08BE0E4E0EC |
:100F3000F1E0DA0101900D928A95E1F78DE4DE018E |
:100F4000F901182E0E94FC6B8091850399279F93CD |
:100F50008F935F934F938FE192E09F938F931F92B4 |
:100F60000E9471148DB79EB707960FB6F8949EBF76 |
:100F70000FBE8DBF80E492E09F938F931F920E94DB |
:100F80007114109247041092FF030E94483F0F9083 |
:100F90000F900F908091FF038823E1F31092470494 |
:100FA00080ED97E00E94F017EC01CC24DD2472E57F |
:100FB000A72E72E0B72E1092FF030E94483F809147 |
:100FC000FF038823E1F3F601EE0FFF1FEE0FFF1F73 |
:100FD000ED52FA4F858518160CF054C086010E5557 |
:100FE000174FCE010E94F917882309F04EC0D8018F |
:100FF0008C91882309F049C08093FF030E94483FE9 |
:101000008091FF038823E1F3ECCF199B2FC024E1EB |
:1010100090CE29983FCF8BE095E0A0E0B0E0C0CE25 |
:101020002BE087CEA1E0B0E00E94E36B802D8F3FE4 |
:1010300009F43FCF1092850323ED35E08DE4DE0106 |
:10104000F901182E0E94EB6B90918503F9013D96F2 |
:101050002FE08081349618160CF49F5F215027FFF3 |
:10106000F8CF9093850344ED55E06ECF2AE061CE32 |
:101070008091CA00863009F007CF0E944D6604CFE8 |
:1010800028989DCE86010E55174FF8018081882340 |
:1010900009F03FC086010F5F1F4F68010C3011053A |
:1010A00008F489CFCC24DD2456E5A52E52E0B52ED8 |
:1010B000C1E025C0F601EE0FFF1FEE0FFF1FED523E |
:1010C000FA4F858518160CF586010F5F1F4F1F9389 |
:1010D0000F93BF92AF929F930E947114C093F90334 |
:1010E0000F900F900F900F900F9086E898E0C80E29 |
:1010F000D91ED6011C9268010C301105D0F4F601FE |
:10110000EE55F74F90819923A9F286010F5F1F4F8B |
:10111000ECCF86010F5F1F4F1F930F93BF92AF92CB |
:101120001F920E9471140F900F900F900F900F90CC |
:10113000B4CF84E792E09F938F931F920E94711423 |
:101140000E94483F0F900F900F90A1E0B0E00E94E6 |
:10115000E36B802D803509F029C20EE010E0D80144 |
:101160000E94E36B802D9927582F4427480108944B |
:10117000811C911CD4010E94E36B802D480F511DEE |
:10118000ECEFAE2EEFEFBE2EA00EB11ED5010E94E9 |
:10119000E36B802D9927382F22276DEFC62E6FEF36 |
:1011A000D62EC00ED11ED6010E94E36B802D280FD3 |
:1011B000311DEFEF2F3F3E0709F4B9C2FFEF4F3F5C |
:1011C0005F0709F4B4C23093D7032093D60350933A |
:1011D000D9034093D8038091D6039091D7039F936E |
:1011E0008F938091D8039091D9039F938F9381EE31 |
:1011F00092E09F938F931F920E9471148DB79EB7B8 |
:1012000007960FB6F8949EBF0FBE8DBFA4E0B0E066 |
:101210000E94E36B802D853008F0B8C20E94B005B3 |
:1012200045E661EE78E00E9458050E94B0059927D6 |
:101230009F938F938BE193E09F938F931F920E94D4 |
:1012400071148091E9080F900F900F900F900F90FC |
:1012500080FD7BC20E94A23C809102018A3009F489 |
:1012600072C2843109F46FC2289A80ED97E090939E |
:10127000FC038093FB0385E58093800788E593E07A |
:101280009F938F931F920E9471148091E9080F9091 |
:101290000F900F9082FF54C284E693E09F938F9348 |
:1012A0001F920E9471140F900F900F900E941B22AA |
:1012B00088E893E19093AD038093AC0381E0809341 |
:1012C0007F070E94FB0582E893E09F938F931F9214 |
:1012D0000E94711480ED97E00E94F017EC010F90CE |
:1012E0000F900F908091FF03882309F4A1C0809193 |
:1012F0001903882309F49CC01092FF0380917E0794 |
:10130000882309F4D0C00E94C2050E94483F209162 |
:1013100002012A3009F4D0C0243109F4CDC0289A42 |
:101320008091DE04882309F4CDC08091DE048150D1 |
:101330008093DE048091C205882369F081508093F8 |
:10134000C205882341F41092C0051092BF05109287 |
:10135000BE051092BD058091AC039091AD0301973D |
:101360009093AD038093AC038091AC039091AD0357 |
:10137000892B29F080914604882309F4D7C08091F5 |
:10138000AC039091AD03892B09F4D6C08091120370 |
:10139000909113038F5F9F4F09F4E7C08091FF0383 |
:1013A000882321F08091D404882311F40E948211B3 |
:1013B0000E946B0ECE010E94F9178823B9F1649642 |
:1013C00080910F03882309F489C0815080930F0313 |
:1013D00080910001282F33278091270390912803C3 |
:1013E000821793070CF074C08091AD0480628093E3 |
:1013F000AD0480911203909113038F5F9F4F09F406 |
:10140000C8C00E94C56484E08093FA038091D4042C |
:10141000882321F45AEAE52E55E0F52E0894E11CC4 |
:10142000F11CF2E7EF16FBE0FF0651F00E94AD65FC |
:101430008091FA03882309F055CF0E94096552CFA5 |
:10144000EE24FF242091D8033091D9032F5F3F4F22 |
:101450003093D9032093D8038091D6039091D7037A |
:1014600001969093D7038093D603832F9927D801B1 |
:10147000082E0E94F06B8091D803D401082E0E94A0 |
:10148000F06B8091D703D501082E0E94F06B8091FC |
:10149000D603D601082E0E94F06B84E190E00E94F2 |
:1014A000F017EC01C3CF0E9461430E94483F209196 |
:1014B00002012A3009F030CF28988091DE04882379 |
:1014C00009F033CF80916F00806280936F0032CF3C |
:1014D0008091AD048F7D8093AD0493CF80938A0774 |
:1014E0001092B9041092B8041092B7041092B60486 |
:1014F0001092B5041092B4048091120390911303DA |
:101500008F5F9F4F09F064CF8091DE04882309F03C |
:101510005FCF88E99AE39093FC038093FB0380E01C |
:101520009CE0909313038093120352CF2A3079F1F9 |
:10153000243169F1289A32CF0E94E62A85E090E0B2 |
:101540009093AD038093AC0380915D0890915E0809 |
:10155000019690935E0880935D08809112039091AC |
:1015600013038F5F9F4F09F019CF8091D404882314 |
:1015700009F414CF80E197E29093FC038093FB037E |
:1015800080E890E0909313038093120307CF28988C |
:1015900005CF80E797E19093FC038093FB0380E005 |
:1015A00093E090931303809312032BCF0E94E22EBB |
:1015B0008AE992E09F938F931F920E94711431E009 |
:1015C000932E0F900F900F90C0E5D0E08E010F5F2B |
:1015D0001F4F22E0C22ED12CCC0EDD1E93E0A92E8F |
:1015E000B12CAC0EBD1E84E0682E712C6C0E7D1EDD |
:1015F000B5E04B2E512C4C0E5D1EA6E02A2E312C50 |
:101600002C0E3D1EE2E09E1609F48BC0F3E09F16FF |
:1016100009F48AC023E0291508F483C080910201EF |
:10162000843168F085E08093FC0810921A098BE100 |
:101630008093F8088EE48093170980931809DE01DF |
:101640000E94E36B802D8C3008F068C0D8010E94A6 |
:10165000E36B802D8C3008F061C0D6010E94E36BF3 |
:10166000802D8C3008F05AC0D5010E94E36B802D8C |
:101670008C3008F053C0DE010E94E36B802D809314 |
:10168000E108D8010E94E36B802D8093E208D60127 |
:101690000E94E36B802D8093E308D5010E94E36BE9 |
:1016A000802D8093E408D3010E94E36B802D80930A |
:1016B000E508D2010E94E36B802D8093E608D101FA |
:1016C0000E94E36B802D8093E708A7E5B0E00E94BD |
:1016D000E36B802D8093E80881E0981651F4A9EA25 |
:1016E000B2E0BF93AF931F920E9471140F900F90BE |
:1016F0000F9045E661EE78E0892D0E948105939474 |
:10170000B5E0B91508F07ECF83E00E94750580E54D |
:10171000A1E0B0E0082E0E94F06B1FCD0E94C92E00 |
:10172000E8CF0E94AF2F7ACF0E947A3077CF109205 |
:10173000D9031092D8031092D7031092D6034BCD41 |
:1017400080E793E0ABCD289890CD83E393E09F931F |
:101750008F931F920E94711488EE93E00E94F017FD |
:10176000EC010E945A1C0F900F900F90CE010E9426 |
:10177000F9178823D9F383E593E09F938F931F9202 |
:101780000E9471140F900F900F9064CD84E093E04D |
:101790009F938F931F920E9471140F900F900F9040 |
:1017A0003DCD1F920F920FB60F9211248F939F93EE |
:1017B000EF93FF93809111038823A9F48091ED03A7 |
:1017C0009091EE030196FC01E05DF94FE081ED3070 |
:1017D00079F08639910561F09093EE038093ED03E3 |
:1017E000E093C6000EC01092EE031092ED0309C004 |
:1017F0001092EE031092ED0381E080931103E093C9 |
:10180000C600FF91EF919F918F910F900FBE0F90A7 |
:101810001F9018951F920F920FB60F9211242F93BD |
:101820003F934F935F938F939F93AF93BF93EF93A8 |
:10183000FF9390E08091C6008093E5035091F303FD |
:10184000563910F09093F4038091E5038D3091F0B8 |
:101850002091F403822F99278130910509F46CC0FF |
:10186000823091050CF48EC0029709F47FC010926B |
:10187000F403A8C02091F403223061F79093F4039D |
:10188000852F99278357984FFC01329740812091EB |
:10189000EF033091F003241B3109DC0111978C9187 |
:1018A000281B3109C9019F709093F0038093EF03C7 |
:1018B0000024880F991F001C880F991F001C892F76 |
:1018C000902D982F935C9093F1032F733070235CCD |
:1018D0002093F2038081891709F46EC090E0809113 |
:1018E000E2038F5F8093E2033091E403332309F036 |
:1018F00069C0992309F466C081E08093E403580F1E |
:101900005093E1035150E52FFF27E357F84F8DE047 |
:10191000808380918F07823509F054C088E190E080 |
:101920002CE00FB6F894A895809360000FBE20932A |
:1019300060003093F90346C02F5F2093F403E52F36 |
:10194000FF27E357F84F8091E50380835F5F509353 |
:10195000F3032091E5038091EF039091F003820F50 |
:10196000911D9093F0038093EF032CC0E52FFF2788 |
:10197000E357F84F8091E5038083563938F310928E |
:10198000F403E7CF892B09F072CF8091E50383320E |
:1019900059F08091E50380938D0781E08093F303F4 |
:1019A0008091E5039927DDCF8091E403882389F7AF |
:1019B00081E08093F403EDCF8C91821709F08ECFF4 |
:1019C00091E092CFFF91EF91BF91AF919F918F9155 |
:1019D0005F914F913F912F910F900FBE0F901F90ED |
:1019E0001895AC01A0E0B0E09D01A817B90748F434 |
:1019F000E0E3F6E08191280F311D1196A417B50799 |
:101A0000C8F33F70FD01E05DF94FC9010024880F64 |
:101A1000991F001C880F991F001C892F902D835C33 |
:101A200080831196FD01E05DF94F2F733070822F96 |
:101A3000835C8083AF5CB94F8DE08C93109211036F |
:101A4000809130068093C6000895BF92CF92DF92B6 |
:101A5000EF92FF920F931F93CF93DF93CDB7DEB733 |
:101A60002C859D857E85BB2483E2809330069F591B |
:101A7000909331062093320603E010E0772309F4B7 |
:101A8000ADC0CF84D88843E1E42EF12CEC0EFD1ECE |
:101A9000A989BA897150109709F4A0C0109709F468 |
:101AA0003CC0F601EB0DF11DB3949081119789F4C0 |
:101AB0007723A1F1F70122E030E0E20EF31ED70117 |
:101AC000C080D180E20EF31E0D90BC91A02DBB24EE |
:101AD0007150109719F1F601EB0DF11DB39440818F |
:101AE000119709F466C01097D1F0F601EB0DF11DC6 |
:101AF000B39460811197A1F4772391F0F7013296A6 |
:101B0000D701CD90DC9032E0E32EF12CEE0EFF1EDB |
:101B1000A081B181BB24715003C090E040E060E03F |
:101B2000F801E05DF94F892F86958695835C808367 |
:101B30000F5F1F4FF801E05DF94F892F99278370E0 |
:101B4000907082959295907F9827807F982755274F |
:101B50009A01329522952F7023273F702327822BDD |
:101B6000835C80830F5F1F4FF801E05DF94F4F707A |
:101B70005070440F551F440F551F862F992700247E |
:101B8000880F991F001C880F991F001C892F902D0A |
:101B9000842B835C80830F5F1F4FF801E05DF94F5A |
:101BA0006F73635C60830F5F1F4F109709F076CFF0 |
:101BB00015C0772309F4B3CFF701A2E0B0E0EA0E35 |
:101BC000FB1ED701C080D18022E030E0E20EF31E80 |
:101BD0000D90BC91A02DBB24715085CFC8010E94EF |
:101BE000F10CDF91CF911F910F91FF90EF90DF905B |
:101BF000CF90BF900895A3E07A2F4091E103465023 |
:101C000009F45FC0E72FFF27E357F84F80818D531A |
:101C10007F5FE72FFF27E357F84F20812D537F5F2A |
:101C2000E72FFF27E357F84F30813D537F5FE72FC2 |
:101C3000FF27E357F84F60816D537F5F9927880F27 |
:101C4000991F880F991F522F52955F70582B822F22 |
:101C500099278F70907082959295907F9827807FBA |
:101C60009827232F26952695282B832F9927837035 |
:101C7000907000249695879507949695879507947C |
:101C8000982F802D682B41504F3FD9F0EA2FFF2726 |
:101C9000E357F84F5083AF5F41504F3F91F0EA2F29 |
:101CA000FF27E357F84F2083AF5F41504F3F49F084 |
:101CB000EA2FFF27E357F84F6083AF5F442309F013 |
:101CC000A1CF80E997E09093E0038093DF03A350D6 |
:101CD000A093DE030895CF93DF93CDB7DEB72297AD |
:101CE0000FB6F894DEBF0FBECDBF8091E40388230A |
:101CF00009F4AFC20E94FB0D80918E07823609F471 |
:101D000071C080918F0799278436910509F457C0D7 |
:101D10008536910584F58136910509F44EC18236E8 |
:101D200091050CF4C2C08236910509F49AC183363C |
:101D30009105C1F48091DA039091DB03892B09F0BE |
:101D40004FC2A091DF03B091E0039C91992309F069 |
:101D50003DC29C918AE0989FC00111249093DB03BF |
:101D60008093DA031092E4031092E0031092DF03F1 |
:101D70001092DE036EC28C36910509F410C18D36C7 |
:101D800091050CF0B3C08736910509F42BC1883654 |
:101D9000910541F78FEF80930F03E091DF03F091FE |
:101DA000E003808190913F04892B80933F04882336 |
:101DB00011F01092E60381E08093EA03D3CFE09123 |
:101DC000DF03F091E00390818AE0989FC001112425 |
:101DD00090930D0380930C03892B21F281E0809373 |
:101DE000E903C0CF80918F0799278037910509F4C7 |
:101DF000F2C0813791050CF485C08337910509F451 |
:101E00005BC1843791050CF03CC18137910509F025 |
:101E100078CFA091DF03B091E0038C918F3F09F45C |
:101E20000CC28C91882309F003C281E08C93A091AD |
:101E3000DF03B091E00345E661EE78E08C910E940B |
:101E40005805809111038823E1F3E091DF03F091BD |
:101E5000E0038081898380E58A8385E690E09F9313 |
:101E60008F9381EE98E09F938F9321E030E03F9332 |
:101E70002F93CE0102969F938F933F932F93CE0182 |
:101E8000820F931F9F938F9383E08F9381E08F93B3 |
:101E900081E58F930E94250DADB7BEB71F960FB693 |
:101EA000F894BEBF0FBEADBF2CCF8B34910509F0A7 |
:101EB00059CFE091DF03F091E0038081918190930D |
:101EC000F0048093EF042091ED043091EE04821B26 |
:101ED000930B845E9D4F68E671E00E94936B845B78 |
:101EE00090409093EC048093EB043CCF84379105B1 |
:101EF00009F47CC08637910509F034CF81E08093E6 |
:101F0000E80330CF8D36910529F18E3691050CF01E |
:101F100093C08B34910509F0F4CEA091DF03B0910A |
:101F2000E0038D919C919093F0048093EF042091B5 |
:101F3000ED043091EE04821B930B845E9D4F68E6A6 |
:101F400071E00E94936B845B90409093EC048093CB |
:101F5000EB04D7CE809111038823E1F3A091DF0336 |
:101F6000B091E0039C91913009F43FC1198281E066 |
:101F700090E09F938F93CE0101969F938F9381E082 |
:101F80008F938F938DE48F930E94250D8DB79EB70D |
:101F900007960FB6F8949EBF0FBE8DBFB2CE8FEFDF |
:101FA00080930F03E091DF03F091E0038081809341 |
:101FB000400481E08093EB03D5CEE091DF03F09104 |
:101FC000E003E081E03258F08FE1809310038FEF5F |
:101FD00080930F03C7CE81E08093E70392CEE09316 |
:101FE0001003F5CF81E08093EC03BCCE8091E10338 |
:101FF000853108F4DAC0E091DF03F091E00380E17D |
:10200000A8E6B7E001900D928A95E1F7809111035F |
:102010008823E1F31F9280910E038F9384E58F93C1 |
:102020000E94250D8AEF8093DC038FEF80930F03CE |
:102030000F900F900F9096CE8E36910509F061CEDD |
:10204000809111038823E1F38DE490E09F938F93B7 |
:1020500083ED95E09F938F9381E08F938F938EE430 |
:1020600092CFA091DF03B091E0038BE0E0E8F7E0CE |
:102070000D9001928A95E1F7809189078093650818 |
:10208000A6CF8437910509F03CCE8091E1038531DC |
:1020900008F4BCC0A091DF03B091E00380E1E8E662 |
:1020A000F7E00D9001928A95E1F780EF8093DC03D1 |
:1020B0008FEF80930F0325CE2091DF033091E00353 |
:1020C000F90180818150853018F481818035E9F0F3 |
:1020D0001982809111038823E1F381E090E09F93BE |
:1020E0008F93CE0101969F938F9381E08F938F936F |
:1020F00083E58F930E94250DEDB7FEB737960FB697 |
:10210000F894FEBF0FBEEDBFFCCD61EE78E085E632 |
:102110002E5F3F4FDB01F901982F01900D929A95A8 |
:10212000E1F722503040482FD9018C910E9481055F |
:10213000809117099927AA27BB27BC01CD0124EC60 |
:1021400039E040E050E00E94546BDC01CB01809309 |
:10215000A6039093A703A093A803B093A90380912B |
:1021600018099927AA27BB27BC01CD010E94546BEF |
:10217000DC01CB018093A2039093A303A093A4035B |
:10218000B093A503E091DF03F091E00380810E940A |
:1021900075050E94B005898380E00E94FB056EE60C |
:1021A00070E089810E945B3194CFE091DF03F09170 |
:1021B000E00380819181A281B3818093680790932D |
:1021C0006907A0936A07B0936B0720CF8AE0989FB6 |
:1021D000C00111240E94F01790932F0680932E06C1 |
:1021E000A091DF03B091E003B4CD43ED55E08DE461 |
:1021F000FA01282F0D9001922A95E1F7A8EEB3E09D |
:10220000FA01182E0E94FC6B9983B1CEA091DF03D6 |
:10221000B091E0038D919D910D90BC91A02D809384 |
:10222000680790936907A0936A07B0936B073DCF47 |
:10223000863008F400CE85E0F9CD0E94B005E0912B |
:10224000DF03F091E0038083A091DF03B091E0030E |
:10225000E8CD22960FB6F894DEBF0FBECDBFDF915A |
:10226000CF910895CF93C82F8A3029F08091C00074 |
:1022700085FFFCCF04C08DE00E943211F7CFC093E0 |
:10228000C60080E090E0CF910895089588E18093A2 |
:10229000C1008091C00082608093C0008091C10025 |
:1022A00080688093C1008091C10080648093C100E8 |
:1022B0008AE28093C40080910C0390910D030E94E8 |
:1022C000F01790935D0780935C078CED90E00E947F |
:1022D000F01790938C0780938B0710925E078CE425 |
:1022E00080935F0786E0809362078AE080936007AF |
:1022F00081E0809361071092E0031092DF03109257 |
:10230000DE030895EF92FF920F931F9380911103C4 |
:10231000882309F478C28091EA03882309F082C0F7 |
:102320008091EB03882329F080911103882309F021 |
:102330007FC18091E803882329F0809111038823CD |
:1023400009F05BC18091EC03882329F0809111038F |
:10235000882309F036C180918B0790918C070E94E9 |
:10236000F917882329F080911103882309F0C8C048 |
:1023700080910C0390910D03892B09F084C1809109 |
:10238000E903882329F080911103882309F00FC203 |
:102390008091DA039091DB03892B09F07EC12091B3 |
:1023A00010032F3F59F180E190E09F938F93822F8C |
:1023B000992782959295907F9827807F9827845FB0 |
:1023C0009E4F9F938F9381E090E09F938F9380E146 |
:1023D00093E09F938F9382E08F9381E08F9381E4CA |
:1023E0008F930E94250D8FEF809310038DB79EB7BA |
:1023F0000B960FB6F8949EBF0FBE8DBF80916508F7 |
:10240000882329F080911103882309F05EC0809110 |
:10241000E703882309F4F7C180911103882309F4A5 |
:10242000F2C139C080911103882309F479CF0E9449 |
:10243000242284E190E09F938F939091E60384E1BE |
:10244000989FC0011124865D9C4F9F938F9381E0DC |
:1024500090E09F938F9386EE93E09F938F9382E01B |
:102460008F9381E08F9388E48F930E94250D809154 |
:10247000E6038F5F2DB73EB7255F3F4F0FB6F89449 |
:102480003EBF0FBE2DBF843008F4B8C11092E603E2 |
:102490001092EA0345CF86E190E09F938F938FEAF5 |
:1024A00098E09F938F9381E08F938F9380E58F9334 |
:1024B0000E94250D1092E7038DB79EB707960FB6C1 |
:1024C000F8949EBF0FBE8DBF9EC181E090E09F93A8 |
:1024D0008F9385E698E09F938F9381E08F938F93FE |
:1024E00082E48F930E94250D109265082DB73EB7A8 |
:1024F000295F3F4F0FB6F8943EBF0FBE2DBF87CF69 |
:102500008091F8089927880F991F880F991F7C01DF |
:102510000027F7FC0095102F8091290590912A053E |
:10252000A0912B05B0912C05BC01CD01A80197010C |
:102530000E94C86B3093790720937807809121051A |
:1025400090912205A0912305B0912405BC01CD01F5 |
:10255000A80197010E94C86B30937B0720937A07EC |
:102560008091C10480937C078091C00480937D0793 |
:1025700088E090E09F938F9388E797E09F938F93F5 |
:1025800081E08F9383E08F9387E78F930E94250DDF |
:1025900080917E072DB73EB7295F3F4F0FB6F89465 |
:1025A0003EBF0FBE2DBF853018F086E080937E07BA |
:1025B00083E690E00E94F01790938C0780938B073E |
:1025C000D7CE8BE090E09F938F9380E897E09F9326 |
:1025D0008F9381E08F9380910E038F9387E48F9385 |
:1025E0000E94250D1092EC038DB79EB707960FB68B |
:1025F000F8949EBF0FBE8DBFAECE8AE090E09F9351 |
:102600008F938EE597E09F938F9381E08F938F93C5 |
:1026100086E58F930E94250D1092E8032DB73EB7F3 |
:10262000295F3F4F0FB6F8943EBF0FBE2DBF8ACE35 |
:102630000E94242280E590E09F938F938AE293E0AA |
:102640009F938F9321E030E03F932F9389E293E0B3 |
:102650009F938F933F932F9380E494E09F938F9366 |
:1026600083E08F9381E08F938CE48F930E94250DFC |
:102670001092EB038DB79EB70F960FB6F8949EBFDE |
:102680000FBE8DBF56CE80915C0790915D070E9472 |
:10269000F917882309F077CE72CE80912E0690919B |
:1026A0002F060E94F917882309F479CE809111032F |
:1026B000882309F474CE8091F8089927880F991F10 |
:1026C000880F991F7C010027F7FC0095102F80913F |
:1026D000290590912A05A0912B05B0912C05BC01EC |
:1026E000CD01A80197010E94C86B30932106209369 |
:1026F00020068091210590912205A0912305B0919B |
:102700002405BC01CD01A80197010E94C86B30933C |
:102710002306209322062091AB093091AC09409109 |
:10272000AD095091AE09DA01C90103E0880F991F84 |
:10273000AA1FBB1F0A95D1F7820F931FA41FB51FB5 |
:10274000820F931FA41FB51F20918603309187032A |
:102750004091880350918903BC01CD010E94C86B50 |
:1027600030932506209324068EE090E09F938F936C |
:1027700080E296E09F938F9381E08F938F9383E421 |
:102780008F930E94250D8091DA039091DB030E94C4 |
:10279000F01790932F0680932E062DB73EB7295F32 |
:1027A0003F4F0FB6F8943EBF0FBE2DBFF8CD82E469 |
:1027B00090E09F938F9383E298E09F938F9381E0C3 |
:1027C0008F938F9384E48F930E94250D1092E903D9 |
:1027D0008DB79EB707960FB6F8949EBF0FBE8DBFFC |
:1027E00080910C0390910D03009709F4D1CD0E94C4 |
:1027F000F01790935D0780935C07CACD8093E60342 |
:102800001092EA038DCD1F910F91FF90EF900895E4 |
:10281000982F80916608813031F0892F0E94321103 |
:10282000282F33270CC080914104E82FFF27E65D55 |
:10283000FC4F90838F5F8093410421E030E0C90119 |
:1028400008950F931F93CF93DF938C01EB01672BB8 |
:1028500071F0F80181918F010E940814219739F0DD |
:10286000F80181918F010E940814219791F7DF915F |
:10287000CF911F910F9108950F931F93CF93DF93E3 |
:102880008C01EB01672B81F0F8010F5F1F4F8491E2 |
:102890000E940814219741F0F8010F5F1F4F8491A7 |
:1028A0000E940814219781F7DF91CF911F910F911A |
:1028B0000895CF93C82F181634F480E20E940814AC |
:1028C000C1501C16D4F3CF910895CF93C82F18167A |
:1028D00034F480E30E940814C1501C16D4F3CF9145 |
:1028E00008952F923F924F925F926F927F928F92B4 |
:1028F0009F92AF92BF92CF92DF92EF92FF920F938F |
:102900001F93CF93DF93CDB7DEB7E0970FB6F89460 |
:10291000DEBF0FBECDBF26968FAD26972896EEADB3 |
:10292000FFAD28978824992454018093660848E4D1 |
:10293000C42ED12CCC0EDD1E7F01C701F7011491EE |
:10294000112331F0153221F00894E11CF11CF6CF6F |
:10295000B701681B790B09F095C0112309F43DC23A |
:102960000894E11CF11C1FA63FA4232C0FEF39A6ED |
:10297000F7010894E11CF11C14911537C9F1812F5E |
:1029800080628837A9F1103209F440C0133209F48B |
:102990008DC01A3209F479C01D3209F476C01B3299 |
:1029A000C9F11E32C9F1103309F48AC0812F815355 |
:1029B000893008F07EC060E070E0CB01880F991F7D |
:1029C000880F991F880F991F860F971F680F791F0F |
:1029D000610F711D60537040F7010894E11CF11CF8 |
:1029E0001491812F80538A3040F3262E153739F603 |
:1029F00030FE3DC0F60184E090E0C80ED91E808014 |
:102A00009180A280B380103209F0C0CF89A58823BD |
:102A100009F0AECF19A7ACCFF7010894E11CF11C67 |
:102A200014911A3209F451C060E070E014C0CB0177 |
:102A3000880F991F880F991F880F991F860F971F5E |
:102A4000680F791F610F711D60537040F701089482 |
:102A5000E11CF11C1491812F80538A3040F3EFEF79 |
:102A60006F3F7E0714F46FEF7FEF062F86CFF601DE |
:102A700082E090E0C80ED91E808191814C01AA2489 |
:102A8000BB2481CF0E943C1468CF1A3251F4F60166 |
:102A900082E090E0C80ED91E208022200CF068CF82 |
:102AA000219490E1392AEFED3E2262CF98E0392A55 |
:102AB0005FCF1836C9F01C36D1F481E0382A58CFE0 |
:102AC00034FC56CFF0E23F2A53CFF60182E090E08B |
:102AD000C80ED91E608171819FEF6F3F790714F492 |
:102AE0006FEF7FEF062F44CF24E0322A41CF133619 |
:102AF00009F44DC1143409F41FC1143609F41CC182 |
:102B0000193609F419C11F3409F40FC11F3609F42D |
:102B10000CC1103709F4F9C0133709F4B2C01535E8 |
:102B200009F4ECC0153709F4E9C0183509F444C0BC |
:102B3000183709F441C0112309F44FC1CE010196A1 |
:102B40009DA78CA7198381E0482E19A6632C7724B2 |
:102B5000042D5FA4541857FC2DC029A5222331F160 |
:102B60000F5F050DC30180739070892B09F42FC18D |
:102B7000222309F027C166FC1BC1C301807390703A |
:102B8000809709F410C1852D0E946514842D992722 |
:102B900087FD9095BC018CA59DA50E94211464FE23 |
:102BA000CCCE822D801B0E945914C7CE66FED9CF91 |
:102BB0000E5FD7CF5524D1CFE0E1EEA733FE07C09B |
:102BC00081149104A104B10411F0F0E43F2A19A684 |
:102BD0000FA707FD02C02FED3222CE0189969DA7D7 |
:102BE0008CA781149104A104B10419F49FA5992321 |
:102BF00061F1EEA54E2E55246624772418AA84147C |
:102C00009504A604B70410F0F1E0F8ABC501B401D7 |
:102C1000A30192010E94A66BDC01CB01082F8A3030 |
:102C2000F0F4005DECA5FDA50293FDA7ECA7C5019E |
:102C3000B401A30192010E94A66B49015A01F8A9AF |
:102C4000FF23E1F62EA5283079F0632C7724CE01FE |
:102C50000196482EFCA54F1A28E2420E79CF095A58 |
:102C6000183501F70F7DDECF632C772463FEEFCF9D |
:102C7000003369F380E3ECA5FDA58293FDA7ECA7E3 |
:102C8000E6CFF60182E090E0C80ED91E0190F081F7 |
:102C9000E02DFDA7ECA7EF2B81F4FE013196FDA7F7 |
:102CA000ECA788E289838EE6818385E78B838CE6B7 |
:102CB0008C838D8389E28E831F8207FD15C0802F50 |
:102CC000992787FD9095AC0160E070E08CA59DA5EB |
:102CD0000E946D6A009731F0482EFCA54F1A04152A |
:102CE0000CF033CF402E31CFECA5FDA50190002094 |
:102CF000E9F731974E2E2CA5421A27CF153511F43E |
:102D000081E0382A9AE09EA762CFF60182E090E047 |
:102D1000C80ED91E808191814C01AA24BB2490E168 |
:102D20009EA7E0E43E2A18E752CF1F3411F4E1E0F9 |
:102D30003E2AF8E0FEA74BCF143411F491E0392A73 |
:102D400030FE18C0F60184E090E0C80ED91E8080E5 |
:102D50009180A280B380B7FE0AC0B094A0949094F2 |
:102D60008094811C911CA11CB11C8DE289A79AE062 |
:102D70009EA72ECFF60182E090E0C80ED91E80817A |
:102D800091814C01AA2497FCA094BA2CE4CFFE01B7 |
:102D90003196FDA7ECA7F60182E090E0C80ED91E9F |
:102DA00080818983D0CE822D801B0E946514EBCE5A |
:102DB00080E38AA71BA762E070E0CE018A960E949A |
:102DC0002114DBCE61E070E0CE018996F8CF822D30 |
:102DD000801B0E94591429A5CBCEE0960FB6F8941B |
:102DE000DEBF0FBECDBFDF91CF911F910F91FF903E |
:102DF000EF90DF90CF90BF90AF909F908F907F909B |
:102E00006F905F904F903F902F9008951F920F9278 |
:102E10000FB60F9211242F933F935F936F937F937D |
:102E20008F939F93AF93BF93EF93FF938091FA0398 |
:102E3000882329F08091FA0381508093FA038091CE |
:102E4000CE05882319F081508093CE05809102042D |
:102E500081508F3F09F493C0809302048091FB035B |
:102E60009091FC03892B01F18091FB039091FC036D |
:102E700001979093FC038093FB038091FB03909157 |
:102E8000FC03209112033091130382239323892B97 |
:102E900089F0809102018A3009F48BC0479A8091B1 |
:102EA000E90883FF8DC010C08FEF9FEF909313034D |
:102EB00080931203809102018A3009F478C0479808 |
:102EC0008091E90883FF7CC086B19927FC01E071FD |
:102ED000F07084FF0AC08091FD039091FE0301967B |
:102EE0009093FE038093FD036BC08091FD0390914E |
:102EF000FE03892B49F18091FD039091FE038A56D0 |
:102F0000914010F58091FD039091FE0369E270E01D |
:102F10000E947F6B8091FD039091FE03860F971FA7 |
:102F20009093FE038093FD038091FD039091FE0337 |
:102F30000B9708F440C08091FD039091FE030A971F |
:102F40009093F0048093EF048091EF049091F0044B |
:102F50002091ED043091EE04821B930B845E9D4F13 |
:102F600068E671E00E94936B845B90409093EC0460 |
:102F70008093EB041092FE031092FD0321C089E0C0 |
:102F800080930204809114038F5F817080931403F7 |
:102F9000882319F481E08093FF03809100049091CD |
:102FA00001040196909301048093000457CF5A982E |
:102FB00087CF5A9A85CFF093F004E093EF04C4CF03 |
:102FC000FF91EF91BF91AF919F918F917F916F9101 |
:102FD0005F913F912F910F900FBE0F901F9018950A |
:102FE0002091000430910104280F391FC901019676 |
:102FF00008952091000430910104821B930B892FC6 |
:1030000099278695807490700895CF93DF930E94DE |
:10301000F017EC01CE010E94F9178823D9F3DF9154 |
:10302000CF9108951F93CF93DF930E94F017EC0187 |
:103030001FEC08C080911903882321F09093190395 |
:1030400010937A00CE010E94F917982F882391F3EC |
:10305000DF91CF911F9108959FB7F8945F983E9AA2 |
:10306000469A8091B0008F708093B0008091B0003C |
:1030700083608093B0008091B1008B738093B10026 |
:103080008091B1008B608093B1001092B2008FEFFD |
:103090008093B3008091B00080688093B0008091ED |
:1030A00070008A7F809370008091700082608093AE |
:1030B00070009FBF08958AE090E00E94F0179093FF |
:1030C0000A048093090482E085BD83EA84BD17BCAD |
:1030D00088E788BD86E086BD80916E008160809320 |
:1030E0006E0008951F920F920FB60F9211242F9326 |
:1030F0003F934F935F936F937F938F939F93AF9380 |
:10310000BF93EF93FF93809102018431C0F48091CB |
:103110000304882309F446C0209104043091050477 |
:1031200041E02F37340708F49CC08FEF8093B30041 |
:103130002F5F30403093050420930404A4C3809192 |
:103140000304882349F78091B00086FFADC08091C9 |
:10315000B0008F7B8093B000E0910804EE2309F06B |
:10316000EFC080911009282F33278DED96E0289F1E |
:10317000A001299F500D389F500D1124CA012091A4 |
:10318000060430910704821B930B909305048093EF |
:1031900004041092070410920604469A81E080937A |
:1031A0000304BACF8091B00086FFA8C08091B00020 |
:1031B0008F7B8093B00089EA93E09093050480931D |
:1031C000040480911503909116039C01220F331F74 |
:1031D000280F391F809192039927880F991F880F14 |
:1031E000991F280F391F37FD25C2C901959587956D |
:1031F0009595879590931603809315039093F80304 |
:103200008093F7038091380980FFDDC08091090920 |
:10321000682F7727882799272091290530912A053B |
:1032200040912B0550912C0557FDE9C1A7E055951C |
:10323000479537952795AA95D1F70E94546B9B0126 |
:10324000AC0197FDFAC1F6E055954795379527955E |
:10325000FA95D1F78091F7039091F803820F931FAD |
:10326000DCC02F3F310569F060F0A9014F5F50408D |
:103270004F37510588F480E88093B30020583040E0 |
:1032800059CF809104048093B300109205041092EA |
:10329000040410920304F7C28FEF8093B30050939D |
:1032A000050440930404EFC28091B00080648093D1 |
:1032B000B0008CEB90E0909305048093040480911F |
:1032C00006049091070484549F4F909307048093C1 |
:1032D00006048091F903882329F08091DE04853B60 |
:1032E00008F0F2C0469A909108049F5F80911009FF |
:1032F000891708F0E6C01092080450CF8091B00002 |
:1033000080648093B00080911009282F33278DEDC1 |
:1033100096E0289FA001299F500D389F500D112441 |
:10332000CA012091060430910704821B930B9093ED |
:103330000504809304049C0181E080930304F0CE93 |
:1033400089EA93E090930504809304048E2F9927D3 |
:103350008130910509F4BAC0029709F478C1FF27BA |
:10336000EE0FFF1FE155F74F80819181880F991F64 |
:103370002091040430910504820F931F909305045B |
:1033800080930404209104043091050455E02D3D00 |
:10339000350708F440C18CED95E0909305048093C7 |
:1033A00004049C012C5B30403093050420930404FA |
:1033B0008091060490910704820F931F9093070455 |
:1033C00080930604EBCE80910909682F7727882720 |
:1033D00099272091290530912A0540912B0550917C |
:1033E0002C0557FD07C1E7E055954795379527957B |
:1033F000EA95D1F70E94546B9B01AC0197FD22C165 |
:1034000076E055954795379527957A95D1F7809130 |
:10341000F7039091F803821B930B9093F80380932A |
:10342000F70380910A09282F3327220F331F220F19 |
:10343000331F8091F7039091F803821793077CF074 |
:1034400080910B09282F3327220F331F220F331FA0 |
:103450008091F7039091F8032817390724F43093EB |
:10346000F8032093F7032091F7033091F80380913C |
:10347000040490910504280F391F20503240809198 |
:10348000F7039091F80397FDD3C09595879595958F |
:1034900087959093F8038093F70345E02D3D34071B |
:1034A00008F4B2C08CED95E0909305048093040479 |
:1034B00020910404309105043093070420930604FE |
:1034C0003BCF909308046ACE46980DCF80911503A8 |
:1034D000909116039C01220F331F280F391F8091F2 |
:1034E00092039927880F991F880F991F280F391F5A |
:1034F00037FD99C1C90195958795959587959093C5 |
:103500001603809315039093F8038093F70380913B |
:10351000380980FF30C180910909682F77278827F3 |
:1035200099272091290530912A0540912B0550912A |
:103530002C0557FD85C1E7E05595479537952795AB |
:10354000EA95D1F70E94546B9B01AC0197FD73C1C2 |
:10355000B6E05595479537952795BA95D1F780915F |
:10356000F7039091F803820F931F9093F8038093D1 |
:10357000F70380910A09282F3327220F331F220FC8 |
:10358000331F8091F7039091F803821793077CF023 |
:1035900080910B09282F3327220F331F220F331F4F |
:1035A0008091F7039091F8032817390724F430939A |
:1035B000F8032093F7038091F7039091F80320918B |
:1035C000040430910504820F931F80509240909321 |
:1035D0000504809304048091F7039091F80397FD0C |
:1035E00020C195958795959587959093F80380933D |
:1035F000F703C8CE21583F4F4F4F5F4FF4CE2158AD |
:103600003F4F4F4F5F4F12CE51E02737350758F4E9 |
:1036100087E791E049CF81E02737380708F0C2CE2D |
:1036200087E791E0BACE309305042093040440CF9D |
:1036300003962BCF2D5F3F4FD8CD215C3F4F4F4F8F |
:103640005F4F01CE215C3F4F4F4F5F4FD9CE8091EE |
:103650001703909118039C01220F331F280F391F65 |
:10366000809191039927880F991F880F991F280F20 |
:10367000391F37FDDBC0C9019595879595958795CD |
:1036800090931803809317039093F6038093F503A8 |
:103690008091380981FF9AC080910D09682F7727A2 |
:1036A00088279927209121053091220540912305F3 |
:1036B0005091240557FDE2C0A7E0559547953795F1 |
:1036C0002795AA95D1F70E94546B9B01AC0197FDF9 |
:1036D000D0C0F6E05595479537952795FA95D1F7DF |
:1036E0008091F5039091F603820F931F9093F60358 |
:1036F0008093F50380910E09282F3327220F331F63 |
:10370000220F331F8091F5039091F60382179307E0 |
:103710007CF080910F09282F3327220F331F220FAF |
:10372000331F8091F5039091F6032817390724F48D |
:103730003093F6032093F5038091F5039091F603FF |
:103740002091040430910504820F931F8050924011 |
:1037500090930504809304048091F5039091F603FF |
:1037600097FD67C095958795959587959093F603F6 |
:103770008093F50307CE80910909682F7727882762 |
:1037800099272091290530912A0540912B055091C8 |
:103790002C0557FD5FC0A7E05595479537952795B0 |
:1037A000AA95D1F70E94546B9B01AC0197FD4DC0C7 |
:1037B000F6E05595479537952795FA95D1F780917D |
:1037C000F7039091F803821B930BCFCE80910D09E4 |
:1037D000682F772788279927209121053091220586 |
:1037E000409123055091240557FD3EC0E7E05595D3 |
:1037F000479537952795EA95D1F70E94546B9B0121 |
:10380000AC0197FD2CC066E05595479537952795F7 |
:103810006A95D1F78091F5039091F603821B930B83 |
:1038200065CF0396DECE2D5F3F4F64CE2D5F3F4FB9 |
:1038300022CF039697CF215C3F4F4F4F5F4F88CEEB |
:1038400021583F4F4F4F5F4F76CE215C3F4F4F4F38 |
:103850005F4FAECF21583F4F4F4F5F4F9CCF215C02 |
:103860003F4F4F4F5F4FCFCF21583F4F4F4F5F4F8D |
:10387000BDCF215C3F4F4F4F5F4F2BCF21583F4F64 |
:103880004F4F5F4F19CFFF91EF91BF91AF919F9134 |
:103890008F917F916F915F914F913F912F910F90F9 |
:1038A0000FBE0F901F90189510927C008FEC8093A4 |
:1038B0007A000895EF92FF920F931F93CF93DF93B7 |
:1038C00003E010E0D8010E94E36B802DC82FDD27B4 |
:1038D000C531D10508F02A97C7BD1092120484E6BD |
:1038E00090E00E94121880911D0390911E03805257 |
:1038F000934010F4C0E0D0E0CA3FD105E0F48AEA7A |
:10390000E82E83E0F82EC7BD82E390E00E941218F3 |
:10391000FF92EF921F920E94711480911D0390916B |
:103920001E030F900F900F908052934020F021962D |
:10393000CA3FD10540F3D8010C2E0E94F06BC09312 |
:1039400073088CE291E00E941218DF91CF911F91D1 |
:103950000F91FF90EF900895EF92FF920F931F93B6 |
:10396000CF93DF9300E000930D0400930C040093C9 |
:103970000B0480ED97E00E94F017EC011CE821E0B9 |
:10398000F22E95EFE92E033009F4ABC000E08091F0 |
:103990002204909123048C5F93400CF091C080919D |
:1039A0001C03815080931C0380912004909121047A |
:1039B0008C5F93400CF079C080911B038150809301 |
:1039C0001B0380911E0490911F048C5F93400CF0A8 |
:1039D0004AC080911A03815080931A0388E0809333 |
:1039E00049040E94D62A80911C038A3008F055C0F1 |
:1039F000F0920D048AE080931C0380911B038A30AF |
:103A000008F043C0F0920C048AE080931B0380917D |
:103A10001A038A3098F5F0920B048AE080931A0317 |
:103A200080914904882379F0CE010E94F9178823F8 |
:103A3000B9F38CEA93E09F938F931F920E947114C5 |
:103A40000F900F900F90109219038FEC80937A00D3 |
:103A5000809119038823E1F31A3008F447C011500C |
:103A600009F091CF48C080911E0490911F048750A7 |
:103A700094408CF180911A038F5FAECF863F80F225 |
:103A8000F0920B04E0921A03CBCF863F08F4BFCF2D |
:103A9000F0920C04E0921B03BACF863F08F4ADCF3E |
:103AA000F0920D04E0921C03A8CF80912004909125 |
:103AB0002104875094408CF080911B038F5F7FCF4F |
:103AC00080912204909123048750944044F0809187 |
:103AD0001C038F5F67CF0F5F81CF0F5F72CF01E055 |
:103AE00063CF1B3008F452CF19E050CF8AE090E04A |
:103AF0000E941218B4CF86E490E00E941218DF9161 |
:103B0000CF911F910F91FF90EF9008951F920F9208 |
:103B10000FB60F921124AF92BF92CF92DF92EF9225 |
:103B2000FF920F931F932F933F934F935F936F9346 |
:103B30007F938F939F93AF93BF93EF93FF932091C6 |
:103B40002B04822F9927AA27BB272F5FFC014297BE |
:103B500040F4E25CFF4FEE0FFF1F0590F491E02D63 |
:103B6000099410922B0482E080932A0480912A0405 |
:103B700080937C0080912B04882309F443C48FEC4C |
:103B800080937A003FC420932B0480917800909119 |
:103B900079002091300430913104820F931F90936B |
:103BA00031048093300481E0DFCF20932B04809197 |
:103BB00078009091790020912E0430912F04820F8B |
:103BC000931F90932F0480932E0484E0CDCF2093F5 |
:103BD0002B048091780090917900209137053091E5 |
:103BE0003805821B930B9093720880937108809123 |
:103BF000710890917208909339048093380482E0A0 |
:103C0000B3CF20932B0480913505909136052091F8 |
:103C1000780030917900821B930B90936808809311 |
:103C200067088091670890916808909337048093A3 |
:103C3000360487E099CF20932B04809178009091EF |
:103C4000790090932D0480932C0486E08DCF2093EF |
:103C50002B04209178003091790030932F04209329 |
:103C60002E0410922A0482CF20932B0420917800F6 |
:103C700030917900309331042093300481E074CF87 |
:103C800010922B0481E08093190380910E0490918F |
:103C90000F04019690930F0480930E048091780096 |
:103CA0009091790090931E0380931D0380911D03D2 |
:103CB00090911E035C01CC24DD2480913A04909104 |
:103CC0003B04A0913C04B0913D04A80EB91ECA1E4D |
:103CD000DB1E80913E048F5F823108F4E8C2809140 |
:103CE0001F0390912003A0912103B09122037C0136 |
:103CF0008D0123E0EE0CFF1C001F111F2A95D1F748 |
:103D0000E81AF90A0A0B1B0BEA0CFB1C0C1D1D1D03 |
:103D100080911204992787FD9095A92FB92FBC0196 |
:103D2000CD0126EC34E240E050E00E94546BDC010F |
:103D3000CB01E81AF90A0A0B1B0BD801C70104963C |
:103D4000A11DB11DB7FD23C313E0B595A7959795A8 |
:103D500087951A95D1F780931F0390932003A09322 |
:103D60002103B093220380916B0890916C087C0131 |
:103D70000027F7FC0095102F80911F0390912003DE |
:103D8000A0912103B0912203E81AF90A0A0B1B0B38 |
:103D9000E092D004F092D1040093D2041093D304A3 |
:103DA000209113043091140440911504509116048D |
:103DB00057FDFDC2A4E05595479537952795AA95DF |
:103DC000D1F78091130490911404A0911504B0913F |
:103DD0001604821B930BA40BB50B809313049093D2 |
:103DE0001404A0931504B0931604809113049091C9 |
:103DF0001404A0911504B09116048E0D9F1DA01FF0 |
:103E0000B11F8093130490931404A0931504B093EE |
:103E100016048091100490911104BC016295729572 |
:103E2000707F7627607F7627681B790B20911304BB |
:103E300030911404409115045091160457FDB2C2FC |
:103E4000E4E05595479537952795EA95D1F7809108 |
:103E5000D0049091D104821B930B880F991F880F77 |
:103E6000991F880F991F860F971F97FDA9C29595D7 |
:103E70008795959587959595879595958795909331 |
:103E8000110480931004D601C501D7FC95C2B595E5 |
:103E9000A7959795879580933A0490933B04A093B8 |
:103EA0003C04B0933D0489E080933E0482E05CCE04 |
:103EB00020932B04209178003091790080912E047A |
:103EC00090912F04280F391F809102018A3009F444 |
:103ED00048C2220F331F220F331F30932F04209329 |
:103EE0002E04C90137FD73C29595879595958795E1 |
:103EF00095958795909321048093200480913404B4 |
:103F000090913504820F931F97FD66C29595879512 |
:103F1000909335048093340420913F0530914005FF |
:103F2000821B930B909324038093230320912604F8 |
:103F3000309127048091230390912403280F391F87 |
:103F400037FD47C2359527953093270420932604E3 |
:103F500083E00ACE20932B042091780030917900E1 |
:103F60008091300490913104280F391F8091020113 |
:103F70008A3009F407C2220F331F220F331F3093F8 |
:103F8000310420933004C90137FDFFC19595879511 |
:103F90009595879595958795909323048093220412 |
:103FA0008091320490913304820F931F97FD0DC2CC |
:103FB0009595879590933304809332042091410521 |
:103FC00030914205821B930B909326038093250327 |
:103FD0002091280430912904809125039091260393 |
:103FE000280F391F37FDEEC13595279530932904E9 |
:103FF0002093280481E0B8CD20932B048091780091 |
:10400000909179002091370530913805821B930BF0 |
:104010009093720880937108809171089091720852 |
:104020002091380430913904820F931F90931B0420 |
:1040300080931A0482E098CD20932B04809135055B |
:10404000909136052091780030917900821B930B76 |
:10405000909368088093670880916708909168083A |
:104060002091360430913704820F931F90931D04E2 |
:1040700080931C0487E078CD20932B04809102016B |
:104080008A3009F471C1843109F4A8C180917800A3 |
:104090009091790020912C0430912D04820F931F70 |
:1040A00090931F0480931E0486E05ECD20932B0422 |
:1040B000809178009091790020912E0430912F0406 |
:1040C000820F931F90932F0480932E0410922A0442 |
:1040D0004DCD20932B04E2CD20932B0480917800CA |
:1040E00090917900AA2797FDA095BA2FBC01CD0128 |
:1040F0000E94DA6A7B018C0180912F059091300536 |
:10410000A0913105B09132059C01AD01C801B70104 |
:104110000E947A6ADC01CB01BC01CD010E94BD6A1C |
:10412000DC01CB019093190480931804809118044A |
:104130009091190402970CF4C6C080912F059091BC |
:104140003005A0913105B091320520E030E84BE315 |
:1041500054E4BC01CD010E94E46A8823DCF580911F |
:104160002F0590913005A0913105B09132052AE0DC |
:1041700037ED43EA5CE3BC01CD010E947B6ADC01C0 |
:10418000CB0180932F0590933005A0933105B09318 |
:1041900032058091AE049091AF04845F9140D0F4D9 |
:1041A00080912F0590913005A0913105B091320595 |
:1041B0002DEC3CEC4CEC5DE3BC01CD010E947B6A34 |
:1041C000DC01CB0180932F0590933005A09331053E |
:1041D000B093320581E0809317048091780090912C |
:1041E000790090936A0880936908809118049091EF |
:1041F0001904AA2797FDA095BA2F2091F1043091B8 |
:10420000F2044091F3045091F404820F931FA41F11 |
:10421000B51F8093F1049093F204A093F304B0933C |
:10422000F4042091F1043091F2044091F304509190 |
:10423000F40457FDB2C00AE0559547953795279588 |
:104240000A95D1F78091F1049091F204A091F304C2 |
:10425000B091F404821B930BA40BB50B8093F10473 |
:104260009093F204A093F304B093F40483E07CCC25 |
:1042700020932B0480912703909128039C01220F07 |
:10428000331F280F391F809178009091790063E0E7 |
:1042900070E00E947F6B260F371F36952795369565 |
:1042A0002795309328032093270385E05DCC8093E6 |
:1042B0003E04A0923A04B0923B04C0923C04D092D7 |
:1042C0003D0482E051CC80911804909119048F5FD5 |
:1042D0009F4F0CF07FCF80912F0590913005A091DA |
:1042E0003105B091320520E030E849E054E4BC01EA |
:1042F000CD010E94E76A18160CF06CCF80912F0553 |
:1043000090913005A0913105B09132052AE037ED4A |
:1043100043EA5CE3BC01CD010E947A6ADC01CB0177 |
:1043200080932F0590933005A0933105B09332050B |
:104330008091AE049091AF04845F914008F04ACF21 |
:1043400080912F0590913005A0913105B0913205F3 |
:104350002DEC3CEC4CEC5DE3BC01CD010E947A6A93 |
:104360002FCF220F331FB9CD809178009091790023 |
:1043700020912C0430912D04820F931F0196969565 |
:1043800087958ECE220F331FFACD0796FFCDD80129 |
:10439000C7010B96A11DB11DD7CC21503C4F4F4FEB |
:1043A0005F4F49CF215F3F4F4F4F5F4F49CD215F57 |
:1043B0003F4F4F4F5F4FFECC0196A11DB11D67CD02 |
:1043C0000F9655CD2F5F3F4F0FCE0196F1CD07963B |
:1043D0008BCD2F5F3F4FB6CD019698CD8091780061 |
:1043E0009091790020912C0430912D04820F931F1D |
:1043F0002FEF37E0281B390B30931F0420931E0446 |
:1044000086E0B2CBFF91EF91BF91AF919F918F91D9 |
:104410007F916F915F914F913F912F911F910F91DC |
:10442000FF90EF90DF90CF90BF90AF900F900FBEB6 |
:104430000F901F90189590E2EAE2F3E08FE49193D9 |
:10444000815087FFFCCF08951F93CF93DF93809116 |
:10445000400420912903281710F4209340049091E0 |
:104460003F0490FF08C080914004882309F41EC1D6 |
:1044700081508093400491FF08C0809140048217CE |
:1044800009F4E4C18F5F80934004892F992780FF4E |
:1044900002C081FD08C10E941B22909140049A3005 |
:1044A00008F0A2C081E180934104892F99279F934E |
:1044B0008F9383EE93E09F938F9381E08F930E947D |
:1044C00071140F900F900F900F900F9080914004F7 |
:1044D000C82FDD27C730D10509F4BBC1C830D105CD |
:1044E0000CF08CC0C330D10509F455C2C430D105DD |
:1044F0000CF0DFC0C130D10509F4BBC2C230D10518 |
:104500000CF438C31092410483EA94E09F938F9394 |
:10451000C1E0CF930E94711484E1809341040F9015 |
:104520000F900F908091290590912A05A0912B055D |
:10453000B0912C05B7FD58C63AE0B595A79597956B |
:1045400087953A95D1F7BF93AF939F938F938DEA59 |
:1045500094E09F938F93CF930E94711488E280938D |
:1045600041048DB79EB707960FB6F8949EBF0FBE55 |
:104570008DBF8091210590912205A0912305B091D6 |
:104580002405B7FD2CC62AE0B595A7959795879584 |
:104590002A95D1F7BF93AF939F938F938CEB94E0C1 |
:1045A0009F938F93CF930E9471148CE38093410467 |
:1045B0002DB73EB7295F3F4F0FB6F8943EBF0FBEF1 |
:1045C0002DBF8091EF049091F0049F938F938BEC1B |
:1045D00094E09F938F93CF930E9471140F900F904C |
:1045E0000F900F900F90D6C780E180934104892FE0 |
:1045F00099279F938F9388EE93E05DCFCB30D105C1 |
:1046000009F45DC1CC30D1050CF00FC1C930D10522 |
:1046100009F40BC52A970CF01CC31092410482E7E1 |
:1046200096E09F938F9311E01F930E94711484E191 |
:10463000809341040F900F900F908091EB04909124 |
:10464000EC049F938F9381E896E09F938F931F9341 |
:104650000E94711488E2809341040F900F900F9094 |
:104660000F900F908091EF049091F0049F938F939F |
:1046700080E996E09F938F931F930E9471148CE3BF |
:10468000809341040F900F900F900F900F908091A6 |
:10469000ED049091EE049F938F938FE996E09F93A2 |
:1046A0008F931F9399CF10924004F5CE209340042E |
:1046B000E2CEC530D10509F403C426970CF08CC3B3 |
:1046C000109241048091E208E82FFF27EE0FFF1FB0 |
:1046D000E155F74F808191819F938F938091E108FD |
:1046E000E82FFF27EE0FFF1FE155F74F80819181E3 |
:1046F0009F938F938AE195E09F938F9311E01F938F |
:104700000E94711484E1809341048DB79EB707968F |
:104710000FB6F8949EBF0FBE8DBF8091E408E82FBE |
:10472000FF27EE0FFF1FE155F74F808191819F9387 |
:104730008F938091E308E82FFF27EE0FFF1FE155CD |
:10474000F74F8081918188589F4F9F938F938AE282 |
:1047500095E09F938F931F930E94711488E280933A |
:1047600041042DB73EB7295F3F4F0FB6F8943EBFC7 |
:104770000FBE2DBF8091E608E82FFF27EE0FFF1F29 |
:10478000E155F74F8081918182599F4F9F938F937D |
:104790008091E508E82FFF27EE0FFF1FE155F74F47 |
:1047A0008081918182599F4F9F938F938AE395E0F7 |
:1047B0009F938F931F930E9471148CE38093410405 |
:1047C0006DB77EB7695F7F4F0FB6F8947EBF0FBE9F |
:1047D0006DBF8091E808E82FFF27EE0FFF1FE1551E |
:1047E000F74F8081918182599F4F9F938F93809142 |
:1047F000E708E82FFF27EE0FFF1FE155F74F8081F5 |
:10480000918182599F4F9F938F938AE495E09F9364 |
:104810008F931F930E9471148DB79EB707960FB6A2 |
:10482000F8949EBF0FBE8DBFB5C6CD30D10509F43B |
:1048300047C4CD30D1050CF452C22E9709F4D9C427 |
:1048400081508093290310924004A4C61092400422 |
:104850001CCE84E18093410480912703909128032A |
:104860009F938F9384E496E09F938F9311E01F931F |
:104870000E94711488E2809341040F900F900F9072 |
:104880000F900F908091DE0499279F938F9383E57B |
:1048900096E09F938F931F930E9471148CE38093F3 |
:1048A00041040F900F900F900F900F908091AE08E1 |
:1048B000992701979F938F9382E696E0F0CE10920E |
:1048C000410480E197E09F938F9311E01F930E9432 |
:1048D000711484E1809341040F900F900F908091A8 |
:1048E0008407992787FD90959F938F9380918307E5 |
:1048F000992787FD90959F938F9380E297E09F93F0 |
:104900008F931F930E94711488E2809341048DB7A6 |
:104910009EB707960FB6F8949EBF0FBE8DBF8091CD |
:104920008507992787FD90959F938F9380918607A0 |
:1049300099279F938F9380E397E09F938F931F9383 |
:104940000E9471148CE3809341042DB73EB7295F18 |
:104950003F4F0FB6F8943EBF0FBE2DBF80918A0720 |
:1049600099279F938F9380918707992787FD90952B |
:104970009F938F9380E497E09F938F931F930E9460 |
:1049800071146DB77EB7695F7F4F0FB6F8947EBF25 |
:104990000FBE6DBFFFC5109241048091B308909186 |
:1049A000B4089F938F938091B1089091B2089F9320 |
:1049B0008F938AED94E09F938F9311E01F930E9451 |
:1049C000711484E1809341046DB77EB7695F7F4FB6 |
:1049D0000FB6F8947EBF0FBE6DBF8091B70890915F |
:1049E000B8089F938F938091B5089091B6089F93D4 |
:1049F0008F938AEE94E09F938F931F930E9471147C |
:104A000088E2809341048DB79EB707960FB6F8945D |
:104A10009EBF0FBE8DBF8091BB089091BC089F9335 |
:104A20008F938091B9089091BA089F938F938AEFE2 |
:104A300094E09F938F931F930E9471148CE3809353 |
:104A400041042DB73EB7295F3F4F0FB6F8943EBFE4 |
:104A50000FBE2DBF8091BF089091C0089F938F9388 |
:104A60008091BD089091BE089F938F938AE095E056 |
:104A700083CF8091E90880FD1CC084E180934104CC |
:104A80008EE894E09F938F9311E01F930E9471141E |
:104A900088E2809341040F900F900F9085E994E095 |
:104AA0009F938F931F930E9471140F900F900F90FC |
:104AB00071C5109241048091D0049091D104A091CD |
:104AC000D204B091D304BC01CD0125E030E040E038 |
:104AD00050E00E94C86B3F932F9382E594E09F9330 |
:104AE0008F9311E01F930E94711484E1809341041D |
:104AF0000F900F900F900F900F908091CC04909199 |
:104B0000CD04A091CE04B091CF04BC01CD0125E02D |
:104B100030E040E050E00E94C86B3F932F9381E665 |
:104B200094E09F938F931F930E94711488E2809367 |
:104B300041040F900F900F900F900F9080911D03E4 |
:104B400090911E039F938F9380E794E09F938F93A0 |
:104B50001F930E9471148CE3809341040F900F9077 |
:104B60000F900F900F9087B599279F938F938FE7A2 |
:104B700094E095CD209709F063CE109241048DEE1C |
:104B800093E09F938F9311E01F930E94711484E12F |
:104B9000809341040F900F900F9087E690E09F93D1 |
:104BA0008F938CE490E09F938F93DF93CF938091CA |
:104BB00002016AE00E94736B892F99279F938F935C |
:104BC000809102010E94736B99279F938F938DEFC1 |
:104BD00093E09F938F931F930E94711488E28093B8 |
:104BE00041042DB73EB7235F3F4F0FB6F8943EBF49 |
:104BF0000FBE2DBF84ED95E09F938F930E94B0056B |
:104C000099279F938F9382E194E09F938F931F93B3 |
:104C10000E9471148091AC039091AD036DB77EB783 |
:104C2000695F7F4F0FB6F8947EBF0FBE6DBF0697CA |
:104C300008F488C490914604992309F47DC48CE358 |
:104C400080934104892F99279F938F938DE294E05D |
:104C500026CD109241048EED96E09F938F9311E044 |
:104C60001F930E94711484E1809341040F900F9070 |
:104C70000F908091920399279F938F9386EE96E0F1 |
:104C80009F938F931F930E94711488E28093410435 |
:104C90000F900F900F900F900F908091F7039091CD |
:104CA000F8039F938F9384EF96E09F938F931F93C6 |
:104CB0000E9471148CE3809341040F900F900F9029 |
:104CC0000F900F9080910B0999279F938F9380915C |
:104CD0000A0999279F938F9382E097E04DCE109217 |
:104CE000410480E597E09F938F9311E01F930E940A |
:104CF000711484E1809341040F900F900F90809184 |
:104D0000890899279F938F938091880899279F936B |
:104D10008F938091870899279F938F93809186081E |
:104D200099279F938F9380E697E09F938F931F938C |
:104D30000E94711488E2809341048DB79EB70B9650 |
:104D40000FB6F8949EBF0FBE8DBF80918D08992736 |
:104D50009F938F9380918C0899279F938F93809135 |
:104D60008B0899279F938F9380918A0899279F9307 |
:104D70008F9385E797E09F938F931F930E94711401 |
:104D80008CE3809341042DB73EB7255F3F4F0FB6AC |
:104D9000F8943EBF0FBE2DBF8091910899279F9335 |
:104DA0008F938091900899279F938F9380918F087C |
:104DB00099279F938F9380918E0899279F938F9324 |
:104DC0008AE897E09F938F931F930E9471146DB7A9 |
:104DD0007EB7655F7F4FD9CD109241048AE096E09F |
:104DE0009F938F9311E01F930E94711484E180932D |
:104DF00041040F900F900F908091370590913805E6 |
:104E00009F938F9380911A0490911B049F938F938B |
:104E100087E196E09F938F931F930E94711488E21D |
:104E2000809341046DB77EB7695F7F4F0FB6F894EA |
:104E30007EBF0FBE6DBF80913505909136059F9363 |
:104E40008F9380911C0490911D049F938F9386E211 |
:104E500096E09F938F931F930E9471148CE380932D |
:104E600041048DB79EB707960FB6F8949EBF0FBE4C |
:104E70008DBF80912F0590913005A0913105B091A3 |
:104E80003205BC01CD010E94BD6ADC01CB019F93BC |
:104E90008F9380916209909163099F938F9385E32B |
:104EA00096E09F938F931F930E9471142DB73EB786 |
:104EB000295F3F4F0FB6F8943EBF0FBE2DBF6AC3A8 |
:104EC000109241048AE595E09F938F93C1E0CF93C0 |
:104ED0000E947114809102010F900F900F908A3000 |
:104EE00009F4A5C28B3009F4DEC1843109F4DBC1B9 |
:104EF0008D3009F04FC384E18093410480911C03FD |
:104F000099279F938F934091410550914205CA0183 |
:104F100057FD39C39595879595958795959587956F |
:104F2000959587959F938F939A0157FD29C3359542 |
:104F30002795359527953595279580912204909151 |
:104F40002304821B930B9F938F938EEC95E09F938A |
:104F50008F93CF930E94711488E2809341046DB7C0 |
:104F60007EB7675F7F4F0FB6F8947EBF0FBE6DBFF1 |
:104F700080911B0399279F938F9340913F055091F8 |
:104F80004005CA0157FD04C395958795959587956A |
:104F900095958795959587959F938F939A0157FD42 |
:104FA000F4C23595279535952795359527958091A8 |
:104FB000200490912104821B930B9F938F9382EE88 |
:104FC00095E09F938F93CF930E9471148CE380930D |
:104FD00041048DB79EB709960FB6F8949EBF0FBED9 |
:104FE0008DBF80911A0399279F938F9320913D0540 |
:104FF00030913E05C90137FDC1C2959587959F93B4 |
:105000008F9380911E0490911F04281B390B3F93AE |
:105010002F9386EF95E09F938F93CF930E94711407 |
:105020002DB73EB7275F3F4F45CF10924104809187 |
:10503000E5049091E6049F938F938EEA96E09F9308 |
:105040008F9311E01F930E94711484E180934104B7 |
:105050000F900F900F900F900F908091E30490911C |
:10506000E4049F938F938AEB96E09F938F931F9313 |
:105070000E94711488E2809341040F900F900F906A |
:105080000F900F908091E1049091E2049F938F9391 |
:1050900086EC96E09F938F931F930E9471148CE38C |
:1050A000809341040F900F900F900F900F9080917C |
:1050B000DF049091E0049F938F9382ED96E0EFCA16 |
:1050C000109241048FE997E09F938F93C1E0CF93B3 |
:1050D0000E94711484E1809341040F900F900F900F |
:1050E0008091A50899278D969F938F938091A4080E |
:1050F00099278D969F938F938091A30899278D96DA |
:105100009F938F938091A20899278D969F938F9359 |
:105110008EEA97E09F938F93CF930E94711488E259 |
:10512000809341048DB79EB70B960FB6F8949EBF3F |
:105130000FBE8DBF8091A90899278D969F938F935D |
:105140008091A80899278D969F938F938091A708A7 |
:1051500099278D969F938F938091A60899278D9676 |
:105160009F938F9382EC97E09F938F93CF930E94AE |
:1051700071148CE3809341042DB73EB7255F3F4FF8 |
:105180000FB6F8943EBF0FBE2DBF8091AA08992795 |
:105190008D969F938F9386ED97E09F938F93CF93F8 |
:1051A0000E9471140F900F900F900F900F908091AC |
:1051B000AB08882309F02DC18091AC08882309F041 |
:1051C0001AC18091AD08882309F4E4C188E4809372 |
:1051D00041048CEE97E09F938F93CF9364CC8150E2 |
:1051E0009C4FAF4FBF4FCFC981509C4FAF4FBF4F68 |
:1051F000A3C9109241048FEE97E09F938F9311E023 |
:105200001F930E94711484E1809341040F900F90CA |
:105210000F908091D8039091D9039F938F938DEF36 |
:1052200097E09F938F931F930E94711488E280935D |
:1052300041040F900F900F900F900F908091D60324 |
:105240009091D7039F938F938AE098E09F938F93D9 |
:105250001F930E94711489E4809341040F900F9072 |
:105260000F900F900F9087E198E09F938F931F937B |
:105270000E94711480913F040F900F900F9083FF54 |
:1052800089C11092D9031092D803AEE0B0E080E05B |
:10529000082E0E94F06BAFE0B0E08091D803082E9A |
:1052A0000E94F06B77C184E18093410440914105F5 |
:1052B00050914205CA0157FD57C19C01359527956C |
:1052C000359527953595279535952795C90182956B |
:1052D0009295907F9827807F9827BA01681B790B59 |
:1052E000CB0177FD3FC1959587959F938F933F9312 |
:1052F0002F939A0157FD33C13595279535952795FD |
:10530000359527958091220490912304821B930B5D |
:105310009F938F938BE995E09F938F93CF930E94F8 |
:10532000711488E2809341048DB79EB709960FB639 |
:10533000F8949EBF0FBE8DBF40913F055091400530 |
:10534000CA0157FD0AC19C013595279535952795CA |
:105350003595279535952795C90182959295907F2A |
:105360009827807F9827BA01681B790BCB0177FDBE |
:10537000F2C0959587959F938F933F932F939A01B2 |
:1053800057FDE6C035952795359527953595279591 |
:105390008091200490912104821B930B9F938F9303 |
:1053A0008DEA95E09F938F93CF930E9471148CE3C5 |
:1053B000809341048DB79EB709960FB6F8949EBFAF |
:1053C0000FBE8DBF20913D0530913E05C90137FDCF |
:1053D000CDC0959587959F938F9380911E04909152 |
:1053E0001F04281B390B3F932F938FEB95E09F935E |
:1053F0008F93CF9359CD84E48093410489EE97E055 |
:105400009F938F93CF930E9471140F900F900F90E2 |
:10541000D8CE80E48093410486EE97E09F938F93EB |
:10542000CF930E9471140F900F900F90C5CE84E11E |
:105430008093410440914105509142059A0157FDE6 |
:105440009AC0359527953595279535952795C901A6 |
:10545000880F991F880F991F880F991F481B590B98 |
:105460005F934F933F932F93809122049091230455 |
:10547000821B930B9F938F9388E695E09F938F9366 |
:10548000CF930E94711488E2809341042DB73EB7F8 |
:10549000275F3F4F0FB6F8943EBF0FBE2DBF409120 |
:1054A0003F05509140059A0157FD62C035952795FB |
:1054B0003595279535952795C901880F991F880F30 |
:1054C000991F880F991F481B590B5F934F933F9368 |
:1054D0002F938091200490912104821B930B9F9322 |
:1054E0008F938AE795E09F938F93CF930E947114D7 |
:1054F0008CE3809341046DB77EB7675F7F4F0FB633 |
:10550000F8947EBF0FBE6DBF80913D0590913E0522 |
:105510009F938F9380913D0590913E0520911E04AD |
:1055200030911F04821B930B9F938F938CE895E01F |
:105530009F938F93CF936EC98CE38093410482E451 |
:1055400094E0AECA8CE38093410480E294E0A8CA60 |
:10555000295F3F4F17CF01960CCF0F96F4CE295FEE |
:105560003F4FCACE0196BFCE0F96A7CE019631CF40 |
:10557000295F3F4F9BCF295F3F4F63CF01963DCDC2 |
:10558000295F3F4FD4CC0F96C5CC295F3F4F09CD43 |
:105590000F96FACC10923F04DF91CF911F9108959E |
:1055A0001092B9008AE28093B800089585EA80934A |
:1055B000BC00089584E98093BC0008951092B9005E |
:1055C0008093BB0085E88093BC0008950E94DA2A8E |
:1055D000109249048091BB001092480480E88093A7 |
:1055E000BC001092BD001092BA001092BB00109245 |
:1055F000B9001092B8000E94D02A0E94D62A80E0FA |
:105600000E94DE2A08958093BB0085E88093BC0049 |
:10561000089585EC8093BC00089585E88093BC00D4 |
:1056200008951F920F920FB60F9211242F933F935C |
:105630004F935F936F937F938F939F93AF93BF939A |
:10564000EF93FF9380914904282F33274427552750 |
:105650008F5F80934904F90127313105C8F4E05B7D |
:10566000FF4FEE0FFF1F0590F491E02D09948091FC |
:105670004704E82FFF27EA58F74F9091BB0090832B |
:105680008F5F8C3008F49DC0109247040E94DA2A84 |
:1056900010924904E0C080E80E94DE2ADCC088E95C |
:1056A0000E94DE2AD8C00E94DA2A8AE090E0909315 |
:1056B000AD038093AC030E94D62ACDC084E10E9442 |
:1056C000DE2AC9C082E10E94DE2AC5C080911C0387 |
:1056D0000E94DE2AC0C080E10E94DE2ABCC0809108 |
:1056E0001B030E94DE2AB7C080911A030E94DE2AA3 |
:1056F000B2C080914804E82FFF27EA56F64F8F5F2B |
:105700008093480480810E94DE2AA5C090914804BD |
:10571000292FE92FFF27EE0FFF1FEE0FFF1FED527E |
:10572000FA4F858518160CF054C09C3009F467C0F8 |
:10573000990F892F8E5A0E94DE2A8DC080914704CE |
:10574000E82FFF27EE56F74F8091BB0080830E9421 |
:105750000D2B81C08091B900803409F46EC0809116 |
:105760004704E82FFF27EE55F74F10828F5F8C30EC |
:1057700068F1109247040E94DA2A1092490480913D |
:105780004A048093460410924A0465C08091B9008F |
:10579000803309F440C00E94DA2A8AE090E09093B6 |
:1057A000AD038093AC03109249040E94D62A53C0E3 |
:1057B0000E94DA2A8AE090E09093AD038093AC03D4 |
:1057C00067CF809347040E94DA2A62CF8093470410 |
:1057D000D2CF9C3008F0A9CF922F9F5FE92FFF27EF |
:1057E000EE0FFF1FEE0FFF1FED52FA4F85851816C3 |
:1057F0001CF0292F9C3080F39093480496CF109290 |
:10580000480483E08093490480914704880F8D5AAF |
:105810000E94DE2A20C080914A048823C9F4909116 |
:10582000480490934A04E92FFF27EB57F74F8081F4 |
:105830008F5F09F48FEF8083AECF80914704E82F0C |
:10584000FF27EE55F74F8C5F80830E94092B97CF7F |
:1058500090914804E8CF8091BC0080688093BC00A0 |
:10586000FF91EF91BF91AF919F918F917F916F9138 |
:105870005F914F913F912F910F900FBE0F901F900E |
:10588000189583EC8093810080916F0080628093F3 |
:105890006F0010923E0510923D0510924005109247 |
:1058A0003F05109242051092410508951F920F92F4 |
:1058B0000FB60F921124EF92FF920F931F932F9325 |
:1058C0003F934F935F936F937F938F939F93AF9388 |
:1058D000BF93CF93DF93EF93FF938091390982FDBC |
:1058E0002CC0209186003091870080914C049091CB |
:1058F0004D04281B390B809186009091870090936E |
:105900004D0480934C04C9018D549440835F9A41A7 |
:1059100008F0B5C080914E048093AE0880914E048B |
:1059200090914F04049714F010928403C1E0D0E0EA |
:10593000D0934F04C0934E0415C2409186005091FD |
:1059400087008091500490915104481B590B80911D |
:105950008600909187009093510480935004CA016F |
:105960008D549440835F9A4138F58091AA048093C6 |
:105970004B0480914B04843008F00EC18091AB043D |
:10598000853608F47BC18AE08093AB0480910201E4 |
:105990008A3009F476C1843109F473C1289881E012 |
:1059A0008093AA048091D404882309F0DBC18091FC |
:1059B0004B048093AE08D6C10091AA040A3008F0C7 |
:1059C000E4C0CA018B5F9040845B914008F05BC1EA |
:1059D000425D5140E02FFF27EE0FFF1FEE5AFB4FB5 |
:1059E00080819181FA01E81BF90BCF0105960B9795 |
:1059F00008F45CC1E02FFF27EE0FFF1FEE5AFB4FAC |
:105A0000808191819C01220F331F280F391F240FA1 |
:105A1000351F37FDA4C1E901D595C795D595C79523 |
:105A2000CA0101968C179D070CF071C121978091D6 |
:105A3000DE048E3B08F462C1E02FFF27EE0FFF1F4C |
:105A4000DF01AE5ABB4F8D919C919E01281B390BF3 |
:105A5000C90163E070E00E94936BCB01880F991F2E |
:105A6000860F971FE859FB4F91838083E02FFF2714 |
:105A7000EE0FFF1FEE5AFB4FD183C0830BC1C091C5 |
:105A80004E04D0914F04CA30D1050CF06BC1C9014E |
:105A90008B5F9040845B914008F060C0225D314094 |
:105AA000FE01EC0FFD1FE155F74F80819181D90177 |
:105AB000A81BB90BCD01B7FD0EC1069754F4809118 |
:105AC000DE04883C08F046C18091DE04865F809346 |
:105AD000DE04FE01EC0FFD1FE155F74F808191813F |
:105AE000AC01440F551F480F591F420F531F57FD5C |
:105AF00033C17A01F594E794F594E794C9010196CE |
:105B00008E159F050CF013C10894E108F1088091EF |
:105B1000DE04833C08F403C18E010C0F1D1FF80145 |
:105B2000E155F74F80819181F701E81BF90BCF0117 |
:105B300063E070E00E94936BCB01880F991F860F82 |
:105B4000971F0B53174FD80111969C938E93FE010C |
:105B5000EC0FFD1FE155F74FF182E082FE01319617 |
:105B6000F0934F04E0934E04E530F10509F4B9C019 |
:105B70005D98E630F10509F4BFC05C98379709F4E9 |
:105B8000B9C05B98EFC05C9A5B98043108F054C0D0 |
:105B90000F5F0093AA04E6C09091AE0880914B0479 |
:105BA000981709F0EBCE4091AB044B3008F49BC042 |
:105BB000109284031092AA043AC00091AA04E02F24 |
:105BC000FF27EE0FFF1F9F0122583B4FDF01A1551A |
:105BD000B74F8D919C91D9018D939C93DF01AB536D |
:105BE000B74F8D919C91EC56FB4F91838083E02FB2 |
:105BF000FF27EE0FFF1F9F012155374FDF01AE5AE0 |
:105C0000BB4F8D919C91D90111969C938E93DF018E |
:105C1000A859BB4F8D919C91EB53F74F9183808393 |
:105C2000E02FEF5FEB3008F05EC0E093AA044F3145 |
:105C300020F60091AA04DBCF043109F093C08091D3 |
:105C400002018A3009F47DC0843109F47AC02898B1 |
:105C50008EE18093AA042AE0C5ECD8E0AEE7B4E078 |
:105C6000EFEAF8E08D919D919183808332961982BD |
:105C700018822296215027FFF5CF74C01092AB04F2 |
:105C800085CE289A8CCE809102018A3011F1843120 |
:105C900001F12898053019F15D98063009F473CFA9 |
:105CA0005C98073009F070CF5B9A72CF8091AB049B |
:105CB0008A3108F448C08091DE04865F8093DE0458 |
:105CC0008091DE04893C08F495CE88EC8093DE0454 |
:105CD00091CE289ADFCF909581959F4FEECE5D9A19 |
:105CE000DFCF5D9A46CF4F3F09F459CE4F5F4093C7 |
:105CF000AB0455CE5B9A36C05C9A40CFE02FFF27AD |
:105D0000EE0FFF1FE859FB4F11821082AFCE4150BA |
:105D10005040C417D5070CF08ACE219688CEFE01DC |
:105D2000EC0FFD1FEB53F74F1182108210CF215063 |
:105D30003040E216F3060CF0EACE0894E11CF11CA8 |
:105D4000E6CE289A85CF8B3008F4BACF8091DE0456 |
:105D50008E5FB4CF88ECBBCE4D5F5F4FCACE2D5F58 |
:105D60003F4F59CEFF91EF91DF91CF91BF91AF910E |
:105D70009F918F917F916F915F914F913F912F9163 |
:105D80001F910F91FF90EF900F900FBE0F901F90FB |
:105D9000189581E08093E30882E08093E20883E035 |
:105DA0008093E10884E08093E40885E08093E5082F |
:105DB00086E08093E60887E08093E70888E0809398 |
:105DC000E80808951F938AE68093E90851E050930C |
:105DD00039094EE14093EA088BEF8093EC088AE0A2 |
:105DE0008093ED084093EB084093EF0885E08093A3 |
:105DF000F00880E48093F1081092F20884E1809327 |
:105E0000EE088EE08093F308E0E1E093F4081CE0F4 |
:105E10001093F508F8E0F093F60886EE8093F70803 |
:105E20004093F80880E88093F90830E53093FA0849 |
:105E300096E99093FB0883E08093FC083093FD087B |
:105E40009093FE0881E28093FF0883E2809300092B |
:105E5000409301091092020960E2609303091092D5 |
:105E60000409109205091092060910920709109270 |
:105E70001C0910921D0910921E0910921F0924E698 |
:105E80002093080998E290930909509338091092D9 |
:105E90000A098AEF80930B0976E07093100920932A |
:105EA0000C0990930D0910920E0980930F0982E35B |
:105EB000809311099AE59093120980931309109227 |
:105EC000370990931409309315095093160985E505 |
:105ED0008093170980931809E093190960931A09B0 |
:105EE00020931B098FE58093200983EF809322097B |
:105EF0008AEA80932409809325098FE08093210901 |
:105F0000809323098CEF809326092093270990938F |
:105F100028099093290990932A098BE480932B09EF |
:105F200080932C0980932D0910922E0970932F09CC |
:105F3000F09330099093310940933209209333094B |
:105F40002093340984E080933509AEEAB3E0EAE3B4 |
:105F5000F9E00D9001921A95E1F71F9108958AE6F4 |
:105F60008093E90871E0709339095EE15093EA0883 |
:105F70008BEF8093EC089AE09093ED085093EB0838 |
:105F80005093EF0885E08093F00880E48093F10857 |
:105F90001092F2088FE08093EE089093F30880E16E |
:105FA0008093F40866E06093F508E8E0E093F60873 |
:105FB00086EE8093F7085093F80880E88093F908FC |
:105FC0002AE52093FA0898E79093FB0883E08093F2 |
:105FD000FC082093FD089093FE0881E28093FF085F |
:105FE00083E280930009509301091092020940E274 |
:105FF00040930309109204091092050910920609B2 |
:106000001092070910921C0910921D0910921E0986 |
:1060100010921F0934E63093080998E29093090919 |
:106020007093380910920A098AEF80930B096093E4 |
:10603000100930930C0990930D0910920E0980936A |
:106040000F0982E3809311092093120980931309A9 |
:10605000109237092093140980E5809315098CE389 |
:106060008093160985E5809317098093180940935A |
:10607000190940931A099BE490931B098FE58093BB |
:10608000200983EF809322098AEA80932409809370 |
:10609000250984E180932109809323098CEF809363 |
:1060A0002609309327092093280920932909209352 |
:1060B0002A0990932B0990932C0990932D09109203 |
:1060C0002E0960932F09E0933009209331095093F2 |
:1060D0003209309333093093340984E080933509D1 |
:1060E0008CE0A5EBB3E0EAE3F9E00D9001928A952C |
:1060F000E1F708958AE68093E90871E07093390921 |
:106100004EE14093EA088BEF8093EC088AE080939D |
:10611000ED084093EB084093EF0885E08093F0088A |
:1061200080E48093F1081092F2088FE08093EE08EB |
:1061300068E06093F30820E12093F40856E0509360 |
:10614000F5086093F60886EE8093F7084093F80808 |
:1061500080E88093F90834E63093FA0898E7909342 |
:10616000FB0883E08093FC083093FD089093FE08C1 |
:1061700081E28093FF0883E28093000984E18093A9 |
:106180000109109202092093030910920409109248 |
:106190000509109206091092070910921C09109225 |
:1061A0001D0910921E0910921F093093080998E2E8 |
:1061B000909309097093380910920A098AEF809325 |
:1061C0000B095093100930930C0990930D0910920C |
:1061D0000E0980930F0992E3909311092AE5209309 |
:1061E000120990931309109237092093140980E53E |
:1061F0008093150986E48093160985E58093170935 |
:106200008093180980E28093190980931A0990936A |
:106210001B098FE58093200983EF809322098AEA86 |
:1062200080932409809325094093210940932309F1 |
:106230008CEF809326093093270920932809209317 |
:10624000290920932A098BE480932B0980932C0938 |
:1062500080932D0910922E0950932F0960933009D5 |
:106260002093310940933209309333093093340934 |
:1062700084E0809335098CE0ADEBB3E0EAE3F9E02C |
:106280000D9001928A95E1F708956817790744F413 |
:10629000680F791F77FD09C0CB0195958795089503 |
:1062A000681B790B861B970B08956F5F7F4FCB019F |
:1062B000959587950895EF92FF920F931F93CF9333 |
:1062C000C82F8B018091D4048823A9F4C150CF3FFB |
:1062D00091F07B01E60EF71E1093FC030093FB0385 |
:1062E0008091FB039091FC03892BD1F7C7010E9499 |
:1062F0000518C15088F7CF911F910F91FF90EF9033 |
:1063000008952F923F924F925F926F927F928F9259 |
:106310009F92AF92BF92CF92DF92EF92FF920F9334 |
:106320001F93CF93DF93CDB7DEB7ED970FB6F894F9 |
:10633000DEBF0FBECDBF20913D0530913E0580915F |
:106340001E0490911F04281B390B3A87298730932C |
:10635000A5092093A409209128043091290437FD30 |
:10636000D4C73595279535952795359527953AA71F |
:1063700029A73C872B877901209126043091270497 |
:1063800037FDC0C7359527953595279535952795C0 |
:106390003CA72BA73E872D87F0926509E092640900 |
:1063A00030935B0920935A09809193099091940945 |
:1063B000AA2797FDA095BA2F7C018D01EE0CFF1C3A |
:1063C000001F111FE80EF91E0A1F1B1F80911A04DF |
:1063D00090911B049C01442737FD4095542FDA010E |
:1063E000C901880F991FAA1FBB1F880F991FAA1FD9 |
:1063F000BB1F820F931FA41FB51F820F931FA41FE3 |
:10640000B51FE80EF91E0A1F1B1F17FD9CC7159527 |
:106410000795F794E79415950795F794E794F0920C |
:106420009409E09293098091AF099091B009AA274D |
:1064300097FDA095BA2F7C018D01EE0CFF1C001F6B |
:10644000111FE80EF91E0A1F1B1F80911C0490915A |
:106450001D049C01442737FD4095542FDA01C901E2 |
:10646000880F991FAA1FBB1F880F991FAA1FBB1F48 |
:10647000820F931FA41FB51F820F931FA41FB51F68 |
:10648000E80EF91E0A1F1B1F17FD54C71595079527 |
:10649000F794E79415950795F794E794F092B0096F |
:1064A000E092AF098091620990916309AA2797FD54 |
:1064B000A095BA2F9C01AD01220F331F441F551F19 |
:1064C000280F391F4A1F5B1F8091180490911904EF |
:1064D000AA2797FDA095BA2F280F391F4A1F5B1FC7 |
:1064E00057FD16C755954795379527955595479567 |
:1064F00037952795309363092093620920911A04F8 |
:1065000030911B04C901880F991F880F991F820FB2 |
:10651000931F820F931FAA2797FDA095BA2F209152 |
:10652000190530911A0540911B0550911C05820FE9 |
:10653000931FA41FB51F8093190590931A05A0936C |
:106540001B05B0931C0520911C0430911D04C9014A |
:10655000880F991F880F991F820F931F820F931F17 |
:10656000AA2797FDA095BA2F209115053091160501 |
:106570004091170550911805820F931FA41FB51F56 |
:106580008093150590931605A0931705B0931805F1 |
:1065900080916D0990916E0920911A0430911B042D |
:1065A000820F931F90936E0980936D098091A709C4 |
:1065B0009091A80920911C0430911D04820F931F13 |
:1065C0009093A8098093A709809133059091340591 |
:1065D0000196909334058093330580911105909135 |
:1065E0001205A0911305B0911405BC01CD010E94C4 |
:1065F000DA6A5B016C018091690890916A08AA27A8 |
:1066000097FDA095BA2FBC01CD010E94DA6A7B01EB |
:106610008C0180912F0590913005A0913105B091AA |
:1066200032059C01AD01C801B7010E947A6ADC0104 |
:10663000CB019C01AD01C601B5010E947B6ADC0162 |
:10664000CB01BC01CD010E94BD6ADC01CB0180936E |
:10665000110590931205A0931305B09314058FECC8 |
:1066600080937A0010921903209001053090020562 |
:10667000409003055090040539E423163BE63306A9 |
:1066800031E0430630E053060CF414C188E49BE685 |
:10669000A1E0B0E08D839E83AF83B8876090090549 |
:1066A00070900A0580900B0590900C0539E46316F4 |
:1066B0003BE6730631E0830630E093060CF4DCC45D |
:1066C00088E49BE6A1E0B0E089839A83AB83BC8336 |
:1066D00049855A85CA01AA2797FDA095BA2F20910E |
:1066E000F9043091FA044091FB045091FC04280F06 |
:1066F000391F4A1F5B1F2DA33EA34FA358A7A0908D |
:10670000AB09B090AC09C090AD09D090AE09A80E0D |
:10671000B91ECA1EDB1E860175013091C7043BA35A |
:10672000332309F0DAC08091C604882309F0C2C47B |
:106730004091E9084CA346FF13C6EBA5FCA5CF0189 |
:10674000AA2797FDA095BA2FBC01CD0129813A81D6 |
:106750004B815C810E94546B9B01AC0197FD2CC75F |
:10676000BBE05595479537952795BA95D1F7809118 |
:106770008E03E82EFF2400271127C801B7010E94CD |
:10678000546B97FD14C7ACE0959587957795679501 |
:10679000AA95D1F76F87788B898B9A8B60934D057B |
:1067A00070934E0580934F059093500529A53AA507 |
:1067B000C901AA2797FDA095BA2FBC01CD012D8153 |
:1067C0003E814F8158850E94546B9B01AC0197FD1F |
:1067D00001C7FBE05595479537952795FA95D1F771 |
:1067E000C801B7010E94546B97FDEFC6DC01CB01D5 |
:1067F000ECE0B595A79597958795EA95D1F78093A5 |
:10680000510590935205A0935305B09354052091E0 |
:106810004D0530914E053093DC082093DB08209124 |
:106820005105309152053093E0082093DF082F8501 |
:10683000388949895A89821B930BA40BB50B8AAFFF |
:106840009BAFACAFBDAF8093510590935205A09321 |
:106850005305B0935405A80EB91ECA1EDB1E86014F |
:10686000750130918D033DA7332309F0A3C58EA791 |
:106870009FA7A8ABB9ABB7FD61C62EA53FA548A998 |
:1068800059A955954795379527958DA19EA1AFA1FB |
:10689000B8A5821B930BA40BB50B8DA39EA3AFA32E |
:1068A000B8A78093F9049093FA04A093FB04B093E3 |
:1068B000FC048CC598EB291694E939069EEF49062D |
:1068C0009FEF59060CF0F1C328EB34E94EEF5FEF70 |
:1068D0002D833E834F835887E1CE2DA13EA14FA14A |
:1068E00058A52093F9043093FA044093FB04509385 |
:1068F000FC043091E9083CA31092E0081092DF08F4 |
:106900001092DC081092DB081092490510924A059B |
:1069100010924B0510924C051092450510924605B9 |
:10692000109247051092480530918D033DA7809144 |
:10693000490590914A05A0914B05B0914C05BC01C9 |
:10694000CD0124E630E040E050E00E94C86BDA015F |
:10695000C9014091450550914605481B590B58A364 |
:106960004F8F8091450590914605A0914705B091C4 |
:106970004805BC01CD0124E630E040E050E00E9433 |
:10698000C86BDA01C9012091490530914A05821B83 |
:10699000930B9AA389A38091860390918703A0917A |
:1069A0008803B0918903BC01CD0128E631E040E0C5 |
:1069B00050E00E94546BE616F7060807190744F0EA |
:1069C00057016801A61AB70AC80AD90A86017501D3 |
:1069D00017FDA3C4A092AB09B092AC09C092AD0957 |
:1069E000D092AE092BA53CA58F8D98A1280F391FF9 |
:1069F00079010027F7FC0095102F8091FD049091FC |
:106A0000FE04A091FF04B0910005E80EF91E0A1FD4 |
:106A10001B1F570168018091CA049091CB04281B69 |
:106A2000390BC901AA2797FDA095BA2F280E391E48 |
:106A30004A1E5B1E2091A2033091A3034091A40340 |
:106A40005091A503221533054405550574F4A8EAB1 |
:106A5000EA2EA1E6FA2E012D112DE21AF30A040BFB |
:106A6000150B170128015701680188279927DC01B8 |
:106A7000821B930BA40BB50B281639064A065B063E |
:106A80000CF0E9C2F8E52F2EFEE93F2EFFEF4F2E66 |
:106A9000FFEF5F2E220E331E441E551E209201056D |
:106AA0003092020540920305509204058201710163 |
:106AB0002092FD043092FE044092FF0450920005A3 |
:106AC00029A53AA5A9A1BAA12A0F3B1FA9016627AA |
:106AD00057FD6095762F8091050590910605A09150 |
:106AE0000705B0910805480F591F6A1F7B1F5A01FF |
:106AF0006B018091C8049091C904281B390BC9010E |
:106B0000AA2797FDA095BA2F680E791E8A1E9B1E94 |
:106B10008091A6039091A703A091A803B091A90327 |
:106B20008EAB9FABA8AFB9AF86159705A805B90581 |
:106B300064F448EA51E660E070E0481B590B6A0BC8 |
:106B40007B0B3A014B015A016B018EA99FA9A8AD9D |
:106B5000B9ADB095A095909581959F4FAF4FBF4F20 |
:106B6000681679068A069B060CF064C2E8E56E2E6C |
:106B7000EEE97E2EEFEF8E2EEFEF9E2E2EA93FA98F |
:106B800048AD59AD620E731E841E951E60920905B4 |
:106B900070920A0580920B0590920C05B401A30136 |
:106BA000609205057092060580920705909208058F |
:106BB0008DA19EA1AFA1B8A580930D0590930E0560 |
:106BC000A0930F05B09310056092290570922A05D5 |
:106BD00080922B0590922C0520922105309222055F |
:106BE0004092230550922405409325055093260595 |
:106BF0006093270570932805E0921D05F0921E050D |
:106C000000931F0510932005809125039091260382 |
:106C100097FDA4C37C01F594E794F594E794F5946B |
:106C2000E794FAA6E9A6809123039091240397FDA7 |
:106C300093C38C011595079515950795159507959F |
:106C40001CA70BA780912204909123040F9734F482 |
:106C500058E1E52E5CEFF52EFAA6E9A68091220414 |
:106C600090912304079734F440E3E42E48EFF42E88 |
:106C7000FAA6E9A6209102012A3009F46BC280919C |
:106C8000220490912304815D97400CF007C280910B |
:106C9000220490912304805E974034F080EDE82E2A |
:106CA00087E0F82EFAA6E9A68091200490912104AD |
:106CB0000F9724F408E11CEF1CA70BA78091200478 |
:106CC00090912104079724F400E318EF1CA70BA769 |
:106CD0002A3009F455C28091200490912104815DED |
:106CE000974024F008EE13E01CA70BA78091200426 |
:106CF00090912104805E974024F000ED17E01CA7DE |
:106D00000BA7A0919903AA2309F497C060912503CA |
:106D1000709126038091550590915605681B790B5B |
:106D20002091250330912603280F391F37FD3FC3DB |
:106D30003595279530935605209355056138710593 |
:106D40000CF43AC260E870E070935C0560935B05F8 |
:106D50008A2F9927869FF001879FF00D969FF00D4F |
:106D60001124CF01F7FD21C37C01F594E794F5943C |
:106D7000E794F594E794F594E79429A53AA5E20EF3 |
:106D8000F31EFAA6E9A640912303509124038091B3 |
:106D9000570590915805481B590B209123033091BA |
:106DA0002403280F391F37FDFDC2359527953093F1 |
:106DB000580520935705413851050CF4F5C140E8BA |
:106DC00050E050935A05409359058A2F9927849F84 |
:106DD000D001859FB00D949FB00D1124AD019D0190 |
:106DE000B7FDDDC289011595079515950795159590 |
:106DF000079515950795EBA5FCA50E0F1F1F1CA762 |
:106E00000BA7869F9001879F300D969F300D112410 |
:106E1000C9012091250330912603820F931F90937F |
:106E20002603809325038091230390912403480F28 |
:106E3000591F50932403409323034D855E851416F8 |
:106E400015060CF0C1C18091DB089091DC0897FD1C |
:106E5000A2C2AA2797FDA095BA2F6DA5262F33278A |
:106E600044275527BC01CD010E94546B97FD8EC26B |
:106E7000E6E09595879577956795EA95D1F7AF8D7B |
:106E8000B8A1A60FB71FB0935609A09355094B851B |
:106E90005C85141615060CF0C1C18091DF08909135 |
:106EA000E00897FD6FC2AA2797FDA095BA2F6DA5A0 |
:106EB000262F332744275527BC01CD010E94546B50 |
:106EC00097FD5BC246E095958795779567954A95BE |
:106ED000D1F7A9A1BAA1A60FB71FB0934B09A093F0 |
:106EE0004A093CA137FDC1C11093490900934809E3 |
:106EF000F0925809E09257098091E508E82FFF27A2 |
:106F0000EE0FFF1FE155F74F8081918182599F4F0E |
:106F1000A091E504B091E604A817B9070CF0EEC003 |
:106F2000CD0101969093E6048093E504DC01809105 |
:106F3000E608E82FFF27EE0FFF1FE155F74F80818E |
:106F4000918182599F4F6091E3047091E404681726 |
:106F500079070CF0C4C0CB0101969093E4048093B0 |
:106F6000E304BC018091E708E82FFF27EE0FFF1F25 |
:106F7000E155F74F8081918182599F4F4091E10403 |
:106F80005091E204481759070CF0D5C0CA01019688 |
:106F90009093E2048093E104AC018091E808E82F2B |
:106FA000FF27EE0FFF1FE155F74F80819181825936 |
:106FB0009F4F2091DF043091E004281739070CF02F |
:106FC000ABC0C90101969093E0048093DF049C015B |
:106FD000B7FD93C1AF3FB10539F034F08FEF90E0CA |
:106FE0009093E6048093E50477FD76C16F3F7105C9 |
:106FF00039F034F08FEF90E09093E4048093E30451 |
:1070000057FD70C14F3F510539F034F08FEF90E0DC |
:107010009093E2048093E10437FD6AC12F3F31056C |
:1070200009F00CF4EEC28FEF90E09093E0048093AF |
:10703000DF04E7C26092090570920A0580920B0591 |
:1070400090920C05A0920505B0920605C092070526 |
:10705000D0920805ADCD20920105309202054092F4 |
:10706000030550920405A092FD04B092FE04C09264 |
:10707000FF04D092000524CD98EB691694E97906B7 |
:107080009EEF89069FEF99062CF528EB34E94EEF29 |
:107090005FEF29833A834B835C831ACB98EEE92E0A |
:1070A00093E0F92EFAA6E9A6F2CD2D823E824F8218 |
:1070B0005886F4CA8DA19EA1AFA1B8A58093F9040A |
:1070C0009093FA04A093FB04B093FC049091E90818 |
:1070D0009CA312CC69827A828B829C82F9CA8081BD |
:1070E000918182599F4F861797070CF03BCF61150E |
:1070F000710509F437CFCB0101972FCF80819181A2 |
:1071000082599F4F8A179B070CF011CF109709F4F3 |
:107110000ECFCD01019706CF8081918182599F4F7B |
:10712000821793070CF054CF2115310509F450CF85 |
:10713000C901019748CF8081918182599F4F84175F |
:1071400095070CF02ACF4115510509F426CFCA0145 |
:1071500001971ECF8091220490912304835F934076 |
:1071600034F038EEE32E33E0F32EFAA6E9A6809150 |
:107170002204909123048A5F93400CF495CD8ECD28 |
:107180008091200490912104835F934024F008EEC5 |
:1071900013E01CA70BA780912004909121048A5F23 |
:1071A00093400CF4AECDA9CD3FEF403853070CF01F |
:1071B00008CE40E85FEF05CE8FEF603878070CF01F |
:1071C000C3CD60E87FEFC0CD8091DB089091DC08F3 |
:1071D00097FD9BC1AA2797FDA095BA2FEDA52E2F4D |
:1071E000332744275527BC01CD010E94546B97FDDE |
:1071F000ADC156E095958795779567955A95D1F7E6 |
:107200002F8D38A1261B370B309356092093550933 |
:107210004B855C85141615060CF43FCE8091DF0873 |
:107220009091E00897FD6DC1AA2797FDA095BA2F10 |
:10723000EDA52E2F332744275527BC01CD010E94F1 |
:10724000546B97FD88C136E095958795779567953E |
:107250003A95D1F729A13AA1261B370B30934B0958 |
:1072600020934A093CA137FF3FCE4BA1442309F0AC |
:107270003BCE8091C604882309F036CE8B859C8551 |
:10728000A1E081309A070CF044C12B853C854FEF7B |
:10729000203034070CF0A3C189A59AA5280F391F07 |
:1072A0003C872B8720503F4F309358092093570934 |
:1072B000AD85BE85E1E0A130BE070CF465C12BA50C |
:1072C0003CA5A20FB31FBE87AD87A050B140B093BD |
:1072D0004909A093480910CE1092E4041092E304E7 |
:1072E00057FF90CE1092E2041092E10437FF96CE41 |
:1072F0001092E0041092DF0484C11092E604109210 |
:10730000E50472CE295F3F4F3DC8295F3F4F29C832 |
:107310002D5F3F4F4F4F5F4FE5C8E60EF71E081F2A |
:10732000191FE092AB09F092AC090093AD091093DC |
:10733000AE0958CB23E030E040E050E0E20EF31E0F |
:10734000041F151FA3C883E090E0A0E0B0E0E80EA2 |
:10735000F91E0A1F1B1F5BC807966BCC07965ACCF9 |
:107360002DA13EA14FA158A52093F9043093FA0412 |
:107370004093FB045093FC04BFCA615C7F4F8F4F66 |
:107380009F4FA0CD909581959F4F8DCD615C7F4F94 |
:107390008F4F9F4F6DCD909581959F4F5ACD215F17 |
:1073A0003F4F20CD2F5F3F4F00CD0F96DDCC2F5F9D |
:1073B0003F4FBECC2DA13EA14FA158A52093F9046B |
:1073C0003093FA044093FB045093FC0489859A851A |
:1073D000AA2797FDA095BA2F2AAD3BAD4CAD5DAD68 |
:1073E000820F931FA41FB51F8B8B9C8BAD8BBE8B05 |
:1073F000BC01CD0129813A814B815C810E94546B93 |
:107400009B01AC0197FDBBC06BE055954795379547 |
:1074100027956A95D1F760918F03862F9927AA2720 |
:10742000BB278F8B988FA98FBA8FBC01CD010E948B |
:10743000546B97FD9FC02CE0959587957795679540 |
:107440002A95D1F76B8F7C8F8D8F9E8F609345052A |
:107450007093460580934705909348056B897C8916 |
:107460008D899E892D813E814F8158850E94546B64 |
:107470009B01AC0197FD79C08BE0559547953795F9 |
:1074800027958A95D1F76F89788D898D9A8D0E947D |
:10749000546B97FD65C0BCE095958795779567958A |
:1074A000BA95D1F76AAB7BAB8CAB9DAB60934905CA |
:1074B00070934A0580934B0590934C0529853A8536 |
:1074C00037FD7FC0213431050CF431CA6B8D7C8DC2 |
:1074D0008D8D9E8D97FD2AC06138710581059105BE |
:1074E00064F46AA97BA98CA99DA997FD82C0613823 |
:1074F0007105810591050CF41ACA81E08093E904B5 |
:1075000016CA909581959F4F8FCE909581959F4FEC |
:1075100061CEE9A5FAA58E0F9F1F9C878B878050AF |
:1075200091409093580980935709C2CE90958095C9 |
:10753000709561957F4F8F4F9F4FCECF0196A11DC4 |
:10754000B11D8EA79FA7A8ABB9AB97C9615C7F4F50 |
:107550008F4F9F4F4ECE615C7F4F8F4F9F4F73CEAB |
:107560006150704F8F4F9F4F96CF2150384F4F4FE4 |
:107570005F4F82CF6150704F8F4F9F4F5CCF215034 |
:10758000384F4F4F5F4F40CF4D855E856FEF403096 |
:10759000560754F58BA59CA5480F591F5E874D874C |
:1075A00040505F4F5093490940934809A5CC615022 |
:1075B000704F8F4F9F4FE7C82150384F4F4F5F4F4D |
:1075C000CFC8309521953F4F7DCF6150704F8F4F81 |
:1075D0009F4F0CC92150384F4F4F5F4FFAC8F09260 |
:1075E0005809E092570964CE10934909009348095D |
:1075F00083CC90958095709561957F4F8F4F9F4F6D |
:1076000076CFED960FB6F894DEBF0FBECDBFDF91FB |
:10761000CF911F910F91FF90EF90DF90CF90BF908F |
:10762000AF909F908F907F906F905F904F903F9022 |
:107630002F900895809102018D3009F455C1109268 |
:107640007A008091220490912304909358098093AA |
:1076500057098091200490912104909349098093C7 |
:10766000480980911E0490911F049093A50980936E |
:10767000A40980911A0490911B049C01442737FDB2 |
:107680004095542FDA01C901880F991FAA1FBB1F0B |
:10769000880F991FAA1FBB1F820F931FA41FB51F1E |
:1076A000820F931FA41FB51F909394098093930991 |
:1076B00080911C0490911D049C01442737FD409546 |
:1076C000542FDA01C901880F991FAA1FBB1F880F09 |
:1076D000991FAA1FBB1F820F931FA41FB51F820FE4 |
:1076E000931FA41FB51F9093B0098093AF09809199 |
:1076F00018049091190490936309809362098FECA8 |
:1077000080937A008091E508E82FFF27EE0FFF1F96 |
:10771000E155F74F8081918182599F4FA091E504F7 |
:10772000B091E604A817B9070CF085C0CD01019609 |
:107730009093E6048093E504DC018091E608E82F4D |
:10774000FF27EE0FFF1FE155F74F8081918182598E |
:107750009F4F6091E3047091E404681779070CF07F |
:1077600096C0CB0101969093E4048093E304BC019E |
:107770008091E708E82FFF27EE0FFF1FE155F74F35 |
:107780008081918182599F4F4091E1045091E204A0 |
:10779000481759070CF06CC0CA0101969093E20497 |
:1077A0008093E104AC018091E808E82FFF27EE0FF9 |
:1077B000FF1FE155F74F8081918182599F4F2091A2 |
:1077C000DF043091E004281739070CF042C0C901EA |
:1077D00001969093E0048093DF049C01B7FD7FC085 |
:1077E000AF3FB10511F00CF061C077FD67C06F3F8E |
:1077F000710539F034F08FEF90E09093E4048093BA |
:10780000E30457FD61C04F3F510539F034F08FEF6D |
:1078100090E09093E2048093E10437FD5BC02F3F3A |
:10782000310509F00CF463C08FEF90E09093E00411 |
:107830008093DF045CC08081918182599F4F8A17B9 |
:107840009B070CF07ACF109709F477CFCD01019701 |
:107850006FCF8081918182599F4F821793070CF0DF |
:10786000BDCF2115310509F4B9CFC9010197B1CFB9 |
:107870008081918182599F4F841795070CF093CF97 |
:107880004115510509F48FCFCA01019787CF808137 |
:10789000918182599F4F861797070CF069CF611528 |
:1078A000710509F465CFCB0101975DCF8FEF90E0B3 |
:1078B0009093E6048093E50477FF99CF1092E40457 |
:1078C0001092E30457FF9FCF1092E2041092E1045C |
:1078D00037FFA5CF1092E0041092DF0408C0109289 |
:1078E000E6041092E50481CF0E94AC1CA8CE8091E2 |
:1078F00017099927AA27BB27BC01CD0124EC39E041 |
:1079000040E050E00E94546BDC01CB018093A60361 |
:107910009093A703A093A803B093A903809118099B |
:107920009927AA27BB27BC01CD010E94546BDC011B |
:10793000CB018093A2039093A303A093A403B093DD |
:10794000A50308956F927F928F929F92AF92BF92FC |
:10795000CF92DF92EF92FF920F931F93CF9300E0AD |
:1079600010E078016801469A1093380500933705B6 |
:10797000109336050093350580E090E0A0E0B0E07C |
:1079800080932F0590933005A0933105B093320575 |
:1079900010934205009341051093400500933F0565 |
:1079A00010933E0500933D051093750900937409EB |
:1079B00010928F0310928E03109212040E941A3BB1 |
:1079C00084E690E00E9412180E941A3B8091E90818 |
:1079D00080FF10C080911D0390911E03875B934030 |
:1079E00008F0FBC180911D0390911E038E5E9240B2 |
:1079F00008F4F3C1CFE18AE090E00E941218809170 |
:107A00001E0490911F04080F191F80912204909169 |
:107A10002304E80EF91E8091200490912104C80EE1 |
:107A2000D91EC150C7FFE7CFA701405F5F4F5695F2 |
:107A300047955695479550934205409341059601C9 |
:107A4000205F3F4F36952795369527953093400513 |
:107A500020933F05C801409696958795929582950B |
:107A60008F7089279F70892790933E0580933D05ED |
:107A7000909375098093740930933C0520933B05DE |
:107A800050933A054093390544E050E0DA010E94F2 |
:107A9000E36B802D853008F4A3C18091AF099091EC |
:107AA000B00997FDD2C16CE070E00E94936B7093B7 |
:107AB000360560933505809193099091940997FD5F |
:107AC000D5C16CE070E00E94936B709338056093B1 |
:107AD00037058091690890916A08AA2797FDA095BB |
:107AE000BA2FBC01CD010E94DA6ADC01CB01809380 |
:107AF0002F0590933005A0933105B0933205109275 |
:107B00005809109257091092490910924809109289 |
:107B1000A5091092A40984E690E00E9412188091B1 |
:107B20001A0490911B04AA2797FDA095BA2F9C01D7 |
:107B3000AD01220F331F441F551F220F331F441F57 |
:107B4000551F280F391F4A1F5B1F280F391F4A1F57 |
:107B50005B1F309394092093930980911C049091AA |
:107B60001D04AA2797FDA095BA2F7C018D01EE0C6C |
:107B7000FF1C001F111FEE0CFF1C001F111FE80E41 |
:107B8000F91E0A1F1B1FE80EF91E0A1F1B1FF09289 |
:107B9000B009E092AF098091F808682E7724882414 |
:107BA0009924C9019C01442737FD4095542FC401F5 |
:107BB000B3010E94546B5B016C01609329057093C3 |
:107BC0002A0580932B0590932C059701442737FDB8 |
:107BD0004095542FC401B3010E94546BDC01CB01CA |
:107BE0008093210590932205A0932305B09324054B |
:107BF000A0920505B0920605C0920705D09208052F |
:107C00008093FD049093FE04A093FF04B0930005BD |
:107C10001092F9041092FA041092FB041092FC04E2 |
:107C200080911F0390912003A0912103B091220322 |
:107C300090936C0880936B081092110410921004BA |
:107C40001092F1041092F2041092F3041092F404D2 |
:107C50008091EF049091F0049093EE048093ED04F2 |
:107C60000E94A96182E390E09093FC038093FB0360 |
:107C7000809117099927AA27BB27BC01CD0124ECC5 |
:107C800039E040E050E00E94546BDC01CB018856A3 |
:107C9000954CAF4FBF4F8093A6039093A703A0933B |
:107CA000A803B093A903809118099927AA27BB2795 |
:107CB000BC01CD010E94546BDC01CB018856954C70 |
:107CC000AF4FBF4F8093A2039093A303A093A4034D |
:107CD000B093A50310928B0310928A038091EF0456 |
:107CE0009091F004AA2797FDA095BA2F20918603C2 |
:107CF000309187034091880350918903BC01CD01E5 |
:107D00000E94546BDC01CB018093AB099093AC09CA |
:107D1000A093AD09B093AE091092E8041092E70465 |
:107D200081E0809301010E949E658091AD04846092 |
:107D30008093AD048FEF8093140A1092150A80E2AD |
:107D40008093160A8091E508E82FFF27EE0FFF1FAA |
:107D5000E155F74F8081918182599F4F9093E604BE |
:107D60008093E5048091E608E82FFF27EE0FFF1FC0 |
:107D7000E155F74F8081918182599F4F9093E404A0 |
:107D80008093E3048091E708E82FFF27EE0FFF1FA1 |
:107D9000E155F74F8081918182599F4F9093E20482 |
:107DA0008093E1048091E808E82FFF27EE0FFF1F82 |
:107DB000E155F74F8081918182599F4F9093E00464 |
:107DC0008093DF0484E68093DE048091F9038823A6 |
:107DD00009F450C0469A579A4DC00E945A1C0ACEC8 |
:107DE000DA010E94E36B802D9927982F8827DA010A |
:107DF00011960E94E36B202D820F911D9093380500 |
:107E000080933705DA0112960E94E36B802D992743 |
:107E1000982F8827DA0113960E94E36B202D820F9A |
:107E2000911D9093360580933505DA0114960E94D2 |
:107E3000E36B802D9927982F8827DA0115960E94E9 |
:107E4000E36B202D820F911D48CE909581959F4F19 |
:107E50006CE070E00E94936B70933605609335057B |
:107E6000809193099091940997FF2BCE90958195DD |
:107E70009F4F27CECF911F910F91FF90EF90DF90F2 |
:107E8000CF90BF90AF909F908F907F906F9008950C |
:107E90009091D404992381F58091AD048C7F8093D7 |
:107EA000AD0410C0A92FBB27FD01E859F84F80830E |
:107EB000FD01E859F84F8081AA56B64F8C939F5F19 |
:107EC0009C3080F48091DC03882361F3A92FBB27C9 |
:107ED000FD01E859F84F8081AA56B64F8C939F5FF9 |
:107EE0009C3080F38091DC03882359F08091DC037F |
:107EF00081508093DC0305C08091AD048160809344 |
:107F0000AD0480919609992790933E0880933D088F |
:107F10008091970999279093400880933F0880911A |
:107F20009909992790934208809341088091980974 |
:107F30009927909344088093430810924904109223 |
:107F400048040E94D62A08958091EC088B3F68F07F |
:107F50008B3F09F4D5C28C3F09F474C38D3F09F4FB |
:107F6000F6C28E3F21F48091DF0480939E038091BE |
:107F7000EB088B3F08F439C28B3F09F434C28C3FC5 |
:107F800009F448C38D3F09F4D9C28E3F09F478C380 |
:107F900080919F03882309F02DC280939F038091D5 |
:107FA000ED088B3F08F42DC28B3F09F428C28C3FAB |
:107FB00009F442C38D3F09F4C4C28E3F09F45AC389 |
:107FC00080919D03882309F021C280939D038091B5 |
:107FD000EF088B3F68F08B3F09F495C28C3F09F4A2 |
:107FE0002EC38D3F09F4B0C28E3F21F48091DF048F |
:107FF00080939C038091F1088B3F68F08B3F09F4DC |
:1080000079C28C3F09F4E2C28D3F09F4BEC28E3FB3 |
:1080100021F48091DF0480939A038091F9088B3FCB |
:1080200068F08B3F09F469C28C3F09F4FCC28D3FB4 |
:1080300009F490C28E3F21F48091DF0480939B036A |
:108040008091FA088B3F08F4E8C18B3F09F4E3C143 |
:108050008C3F09F4EEC28D3F09F494C28E3F09F4BF |
:1080600012C3809198038B3008F4DCC18F3F11F468 |
:10807000809398038091FB088B3F68F08B3F09F455 |
:1080800027C28C3F09F4D2C28D3F09F466C28E3FED |
:1080900021F48091DF04809397038091FC088B3F4B |
:1080A00068F08B3F09F417C28C3F09F489C28D3FF9 |
:1080B00009F46EC28E3F21F48091DF04809399030E |
:1080C0008091FD088B3F68F08B3F09F407C28C3F1D |
:1080D00009F479C28D3F09F452C28E3F21F4809198 |
:1080E000DF04809396038091FE088B3F68F08B3FFE |
:1080F00009F4F7C18C3F09F4ABC28D3F09F43CC2CF |
:108100008E3F21F48091DF04809395032091030931 |
:108110002B3F08F48BC12B3F09F486C12C3F09F497 |
:108120007CC22D3F09F404C22E3F09F4A6C220915F |
:108130009303809104098B3F08F07FC18093C104B1 |
:10814000809105098B3F68F08B3F09F4D0C18C3FCB |
:1081500009F466C28D3F09F4EEC18E3F21F480918F |
:10816000DF048093C004809106098B3F68F08B3F49 |
:1081700009F484C18C3F09F471C28D3F09F4D2C166 |
:108180008E3F21F48091DF048093BF048091070922 |
:108190008B3F68F08B3F09F474C18C3F09F461C2D6 |
:1081A0008D3F09F4C2C18E3F21F48091DF0480939A |
:1081B000BE0480911C098B3F68F08B3F09F464C1B9 |
:1081C0008C3F09F454C28D3F09F4A3C18E3F21F4C2 |
:1081D0008091DF048093BD0480911D098B3F68F07E |
:1081E0008B3F09F454C18C3F09F42FC28D3F09F431 |
:1081F00093C18E3F21F48091DF048093BC04809171 |
:108200001E098B3F68F08B3F09F444C18C3F09F491 |
:10821000ECC18D3F09F4C5C18E3F21F48091DF048C |
:108220008093BB0480911F098B3F68F08B3F09F45A |
:1082300034C18C3F09F4DCC18D3F09F4B5C18E3FD8 |
:1082400021F48091DF048093BA04809108098B3F68 |
:1082500068F08B3F09F424C18C3F09F4CFC18D3FF6 |
:1082600009F484C18E3F21F48091DF04809392034E |
:1082700080910C098B3F68F08B3F09F414C18C3F4F |
:1082800009F4BFC18D3F09F474C18E3F21F4809180 |
:10829000DF0480939103809111098B3F68F08B3F3D |
:1082A00009F404C18C3F09F4AFC18D3F09F458C1F2 |
:1082B0008E3F21F48091DF04809390038091140914 |
:1082C0008B3F68F08B3F09F4F4C08C3F09F49FC1E9 |
:1082D0008D3F09F448C18E3F21F48091DF048093E3 |
:1082E0008F03809115098B3F68F08B3F09F4E4C040 |
:1082F0008C3F09F46EC18D3F09F44DC18E3F21F4CE |
:108300008091DF0480938E03809116098B3F68F083 |
:108310008B3F09F4D4C08C3F09F464C18D3F09F44C |
:108320003DC18E3F21F48091DF0480938D038091C5 |
:108330001B098B3F68F08B3F09F4C4C08C3F09F4E4 |
:108340005AC18D3F09F433C18E3F21F48091DF047F |
:1083500080938C03809121098B3F08F47FC08B3F71 |
:1083600009F47AC08C3F09F437C18D3F09F422C16A |
:108370008E3F09F48BC180916F09823008F473C07D |
:108380008F3F11F480936F09809123098B3F08F48C |
:108390006EC08B3F09F469C08C3F09F420C18D3F4A |
:1083A00009F40BC18E3F09F474C18091A209823097 |
:1083B00008F462C08F3F11F48093A20980913609BE |
:1083C0008B3F70F08B3F09F480C08C3F09F44CC1A7 |
:1083D0008D3F09F49BC08E3F09F05EC18091DF04A0 |
:1083E0008093B20959C18091E50480939F0388234B |
:1083F00009F4D3CD843608F4D2CD84E6CECD809175 |
:10840000E50480939D03882309F4DFCD843608F4C6 |
:10841000DECD84E6DACD8091E504809398038B303D |
:1084200008F024CE8AE024CE2091E5042093930323 |
:10843000809104098B3F08F481CE8B3F09F454C02E |
:108440008C3F09F408C18D3F09F469C08E3F09F0E3 |
:1084500077CE8091DF0472CE8091E50480936F091E |
:10846000823008F08DCF81E08DCF8091E50480933C |
:10847000A209823008F09ECF81E09ECF8091E50472 |
:1084800083CE8091E50493CE8091E504A3CE8091C4 |
:10849000E504B3CE8091E504C3CE8091E504D3CE4C |
:1084A0008091E504E3CE8091E504F3CE8091E5046C |
:1084B00003CF8091E50413CF8091E50423CF809111 |
:1084C000E50433CF8091E50443CF8091E50488CF64 |
:1084D0008091E504E0CD8091E504F0CD8091E50444 |
:1084E00000CE8091E50410CE8091E50427CE8091E6 |
:1084F000E50437CE8091E5048ECD8091E5049ECDD4 |
:108500008091E50432CD8091E50472CD8091E10443 |
:1085100067CF8091E1045ECE8091E1046ECE8091C0 |
:10852000E1040CCE8091E1042FCE8091E1043FCE96 |
:108530002091E1047BCF8091E10413CE8091E1048E |
:1085400054CF8091E1045DCF8091E10451CD8091C1 |
:10855000E1040BCD8091E10471CD8091E1049BCDCC |
:108560008091E104A9CE8091E104B9CE8091E1042B |
:108570007DCE8091E1048DCE8091E104C5CD8091C6 |
:10858000E104AFCD8091E10448CF8091E10443CD77 |
:108590008091E10493CD8091E104B4CE8091E10417 |
:1085A000C4CE8091E1043CCE8091E1044CCE809118 |
:1085B000E104CECE8091E10451CF8091E10457CF08 |
:1085C0008091E3047BCD8091E3048BCD8091E30423 |
:1085D00022CD8091E30496CE8091E3043FCF809139 |
:1085E000E30445CF8091E304A0CE8091E30418CE4C |
:1085F0008091E30428CE8091E304AACE8091E30425 |
:1086000035CE8091E30445CE8091E30455CE809130 |
:10861000E30465CE8091E304E8CE2091E30406CF25 |
:108620008091E3049ECD8091E30408CD8091E30422 |
:1086300032CD8091E304F1CE8091E304E2CE8091CB |
:10864000E304D6CC8091E30490CC8091E304D5CDB3 |
:108650008091E30459CD8091E30470CD8091E304CF |
:1086600093CD8091E304A3CD8091E304B9CE8091B2 |
:10867000E304B0CD8091DF04C4CE2091DF04D6CED8 |
:108680008091DF04B2CE8091DF04C7CE8091DF04F9 |
:10869000E5CE8091DF04EBCE33272F5F3F4F8CE395 |
:1086A00098E2B9010E94936B7093A1036093A003B9 |
:1086B0008091F7088093A3098091F60880935C0964 |
:1086C00008952F923F924F925F926F927F928F9276 |
:1086D0009F92AF92BF92CF92DF92EF92FF920F9351 |
:1086E0001F93CF93DF93CDB7DEB7ED970FB6F89416 |
:1086F000DEBF0FBECDBF8091AC04815009F485E090 |
:108700008093AC040E948131209102012C3008F04A |
:10871000BAC2299AA090D504B090D604BA82A98290 |
:1087200080915C0999270A96A816B90614F49A83D1 |
:1087300089838091DE04843608F0A7C28091790590 |
:1087400090917A05009709F081C41092D404809129 |
:10875000AD048F7E8093AD042A3009F47FC42431A8 |
:1087600009F47CC428988091AE049091AF04895E8E |
:10877000934008F47CC480910009282F33273A8362 |
:1087800029838091AD0480618093AD048091E108DC |
:10879000A82FBB27AA0FBB1FFD01EB53F74F118278 |
:1087A00010828091E208282F3327220F331FC9013E |
:1087B0008B53974FFC0111821082A155B74F119630 |
:1087C0001C921E922155374FD90111961C921E9270 |
:1087D0008091E408E82FFF27EE0FFF1FE155F74FC8 |
:1087E0001182108280918403815080938403809150 |
:1087F00084038F3F21F08091AD0484FF3BC40E942D |
:10880000A43F8091880590918905AC01440F551FC4 |
:10881000480F591F0091E108A02FBB27AA0FBB1FCB |
:10882000FD01E155F74FE090F308CE2CDD24808167 |
:1088300091818C9D50018D9DB00C9C9DB00C11249C |
:108840004A0D5B1D57FF02C00C945858559547952B |
:1088500055954795AB53B74F8091F408682F77270C |
:108860008D919C91869F9001879F300D969F300D32 |
:108870001124240F351F309389052093880580919A |
:10888000BF059091C0054091BB055091BC05840F78 |
:10889000951F281B390B3093DC042093DB04809157 |
:1088A0008A0590918B05AC01440F551F480F591F45 |
:1088B0001091E208A12FBB27AA0FBB1FFD01E155B4 |
:1088C000F74F808191818C9D90018D9D300D9C9DF5 |
:1088D000300D1124420F531F57FF02C00C945458FF |
:1088E0005595479555954795AB53B74F8D919C91AD |
:1088F000869F9001879F300D969F300D1124240F85 |
:10890000351F30938B0520938A058091BD0590918A |
:10891000BE054091B9055091BA05840F951F281BDB |
:10892000390B3093DA042093D9048091E408E82FBE |
:10893000FF27EE0FFF1FE155F74F80819181909542 |
:1089400081959F4F8330910514F40C94264F029724 |
:108950009093D8048093D7048091E308E82FFF27F1 |
:10896000EE0FFF1FE155F74FC080D18048E750E080 |
:10897000C40ED51E809198039927AA2797FDA0952C |
:10898000BA2FBC01CD010E94DA6ADC01CB0120E0E4 |
:1089900030E040E251E4BC01CD010E947B6ADC0181 |
:1089A000CB01BC01CD010E94BD6ADC01CB018093EB |
:1089B000A909F0909703809196039927AA2797FD1C |
:1089C000A095BA2FBC01CD010E94DA6ADC01CB016F |
:1089D00020E030E040E251E4BC01CD010E947B6A1E |
:1089E000DC01CB01BC01CD010E94BD6ADC01CB01E1 |
:1089F00080934F09509195035093660980918A079F |
:108A000080FF06C08091B209813810F00C94894F24 |
:108A1000D092D604C092D5048091D5049091D6040A |
:108A200097FF02C00C944E58F091E908FAA3F2FDAA |
:108A300002C00C94704F109276094091DB04509163 |
:108A4000DC04CA0157FF02C00C947B4F95958795B3 |
:108A50009595879597FF02C00C94844F2091B2049E |
:108A60003091B3042817390714F00C942E4FCA0123 |
:108A700057FF02C00C94195C97FF02C00C941E5C57 |
:108A8000BC0175956795759567956536710514F404 |
:108A90000C94314F64E670E04091D9045091DA04AF |
:108AA000CA0157FD02C00C943A4F039695958795DD |
:108AB0009595879597FD02C00C94424F90958195AE |
:108AC0009F4F2091B0043091B1042817390714F456 |
:108AD0000C944B4F215030408091AD0484FD02C076 |
:108AE0000C94664F1092B3041092B2041092B10429 |
:108AF0001092B004E12FFF27EE0FFF1FE155F74F53 |
:108B000040911209242F332780819181281739073A |
:108B100034F48091370982FF02C00C94FD4FE12F9D |
:108B2000FF27EE0FFF1FE155F74F842F9927209164 |
:108B30001309821B9109208131812817390714F408 |
:108B40001092C504E12FFF27EE0FFF1FE155F74FED |
:108B5000842F992722273327281B390B8081918165 |
:108B60008217930734F48091370983FF02C00C9475 |
:108B7000F84F8091C404882391F0E12FFF27EE0F76 |
:108B8000FF1FE155F74F809113099927841B910925 |
:108B9000208131818217930714F40C942950E02F1F |
:108BA000FF27EE0FFF1FE155F74F242F332780815A |
:108BB00091812817390734F48091370980FF02C06A |
:108BC0000C94F24F5091C204552399F0E02FFF27E7 |
:108BD000EE0FFF1FE155F74F842F992720911309BE |
:108BE000821B9109208131812817390714F40C94D4 |
:108BF0002450E02FFF27EE0FFF1FE155F74F842F82 |
:108C0000992722273327281B390B808191818217CE |
:108C1000930734F48091370981FF02C00C94ED4F23 |
:108C20008091C304882391F0E02FFF27EE0FFF1FF0 |
:108C3000E155F74F809113099927841B91092081F1 |
:108C400031818217930714F40C942D508091C50440 |
:108C5000882331F48091C404882311F40C94EA4FE2 |
:108C600091E0552331F48091C304882311F40C94CE |
:108C7000085081E08093C7041092C6041092C50486 |
:108C80001092C404FAC1299845CD8091DE048D3834 |
:108C900008F4A8CD8091AD048F7E8093AD049091AF |
:108CA000010982E3989FC001112490937A05809373 |
:108CB0007905E981FA81B99714F00C940D508091EF |
:108CC000AE049091AF048F3F910519F010F00C9411 |
:108CD000475810925D0510925E0510925F05109244 |
:108CE0006005109261051092620510926305109262 |
:108CF00064058A3F910511F40C946D5D3091E30891 |
:108D0000E32FFF27EE0FFF1FE155F74F8081918181 |
:108D1000813591050CF4E9C04091D404442309F055 |
:108D2000E4C08091E408E82FFF27EE0FFF1FE15514 |
:108D3000F74F808191818C34910514F40C94B45CCC |
:108D400080917B058F5F893C10F40C949E5D2C30E4 |
:108D500010F00C94745F29981092D40410927B0543 |
:108D60001092AF041092AE040091E108E02FFF27AB |
:108D7000EE0FFF1FE155F74F8081918187349105F8 |
:108D800014F00C942E5F1091E208E12FFF27EE0FF4 |
:108D9000FF1FE155F74F808191810190F081E02D17 |
:108DA000F7FF02C00C941861E734F1050CF470C0B1 |
:108DB00021E0A12FBB27AA0FBB1FA155B74F8D9153 |
:108DC0009C9111978734910544F0E02FFF27EE0F17 |
:108DD000FF1FE155F74F808191818D919C918734E0 |
:108DE000910564F0E02FFF27EE0FFF1FE155F74FCD |
:108DF00080819181873491050CF022E0E12FFF27DB |
:108E0000EE0FFF1FE155F74F808191818634910568 |
:108E100064F4E02FFF27EE0FFF1FE155F74F80812D |
:108E20009181873491050CF023E0E12FFF27EE0FAD |
:108E3000FF1FE155F74F808191818A5B9F4F64F45A |
:108E4000E02FFF27EE0FFF1FE155F74F8081918143 |
:108E5000873491050CF024E0E12FFF27EE0FFF1F70 |
:108E6000E155F74F808191818A5B9F4F64F4E02F39 |
:108E7000FF27EE0FFF1FE155F74F80819181863468 |
:108E800091050CF425E0822F0E9475051091E208EF |
:108E9000E12FFF27EE0FFF1FE155F74F80819181F2 |
:108EA0000190F081E02DF7FF02C00C943F607E97A7 |
:108EB00014F00C941A5E8091E108E82FFF27EE0F62 |
:108EC000FF1FE155F74F808191818A5B9F4F14F01E |
:108ED0000C941A5E81E080937E0788EE93E0909375 |
:108EE000FC038093FB033091E308E32FFF27EE0F91 |
:108EF000FF1FE155F74F808191818B5A9F4F0CF0F6 |
:108F000071CCD090E408ED2DFF27EE0FFF1FE15547 |
:108F1000F74F80819181855B9F4F14F00C946A59C3 |
:108F200080917C058F5F893C10F40C94A85C88ECE0 |
:108F300080937C0581E090E09093AF048093AE0431 |
:108F400081E08093D404109265051092660510921A |
:108F50006705109268051092F9041092FA041092B5 |
:108F6000FB041092FC041092F5041092F604109287 |
:108F7000F7041092F8048091F808E82EFF240027E7 |
:108F8000112780919309909194099C01442737FD02 |
:108F90004095542FC801B7010E94546BDC01CB01EE |
:108FA0008093090590930A05A0930B05B0930C05D7 |
:108FB0008091AF099091B0099C01442737FD4095FD |
:108FC000542FC801B7010E94546BDC01CB01809380 |
:108FD000010590930205A0930305B09304058091C9 |
:108FE000290590912A05A0912B05B0912C0580931D |
:108FF000050590930605A0930705B0930805809199 |
:10900000210590912205A0912305B091240580931C |
:10901000FD049093FE04A093FF04B093000510920A |
:109020005D0510925E0510925F051092600510922A |
:10903000610510926205109263051092640580919B |
:10904000AD0488608093AD040C946C5901979093A3 |
:109050007A05809379052A3009F081CB289A80918E |
:10906000AE049091AF04895E934008F084CB1092D7 |
:10907000D404B8CBA090E908AAA20091C6040E8B34 |
:10908000002321F48091C704882369F0809111099D |
:10909000992729813A818217930714F49A83898347 |
:1090A00081E08093E9048091AD0484FFCBC61092E7 |
:1090B000D8041092D7041092DC041092DB041092B2 |
:1090C000DA041092D9049AE59093A90988E780936D |
:1090D000760990934F0989A3809366091092C6047C |
:1090E0001092C7041E8A2091690930916A09409143 |
:1090F0006B0950916C096091290570912A05809146 |
:109100002B0590912C05698B7A8B8B8B9C8B260F72 |
:10911000371F481F591F8091700990917109A091C4 |
:109120007209B0917309A0902105B0902205C090FA |
:109130002305D0902405AFA2B8A6C9A6DAA68A0D49 |
:109140009B1DAC1DBD1DC0905E09D0905F09E090D5 |
:109150006009F0906109C8AAD9AAEAAAFBAAE0901E |
:109160002505F09026050091270510912805E88E29 |
:10917000F98E0A8F1B8FA8A8B9A8CAA8DBA8AE0CC5 |
:10918000BF1CC01ED11EA8AAB9AACAAADBAAC09039 |
:109190005009D0905109E0905209F0905309CCA6A3 |
:1091A000DDA6EEA6FFA6E0901D05F0901E0500913D |
:1091B0001F0510912005EBA2FCA20DA31EA3ACA4D9 |
:1091C000BDA4CEA4DFA4AE0CBF1CC01ED11EACA695 |
:1091D000BDA6CEA6DFA6B090C704BF8ABB2009F00B |
:1091E000D0C50E89002309F0CCC5809370099093F7 |
:1091F0007109A0937209B0937309209369093093A0 |
:109200006A0940936B0950936C09809169089091A9 |
:109210006A08815092400CF07EC48091D404882367 |
:1092200009F079C480910E0490910F048F3F91054D |
:1092300009F008F47FC5BF89BB2309F017C7EE8981 |
:10924000EE2309F013C7F091E904FD8BFF2309F029 |
:109250000DC7A0901A09ABA6AA2009F407C7C8A891 |
:10926000D9A8EAA8FBA8C0925E09D0925F09E09253 |
:109270006009F0926109ECA4FDA40EA51FA5E0927F |
:109280005009F092510900935209109353098091AB |
:10929000690990916A09A0916B09B0916C09B7FFB7 |
:1092A00002C00C94B25F292E3A2E4B2E552447FC57 |
:1092B0005A942092690930926A0940926B0950923F |
:1092C0006C098091700990917109A0917209B09117 |
:1092D0007309B7FF02C00C94AC5F892F9A2FAB2F94 |
:1092E000BB27A7FDBA958D839E83AF83B8878093F4 |
:1092F000700990937109A0937209B09373098091DA |
:10930000F808E82EFF240027112720911905309135 |
:109310001A0540911B0550911C05C801B7010E9418 |
:10932000546B97FF02C00C94CA5F672E782E892E6B |
:10933000992487FC9A942091150530911605409147 |
:10934000170550911805C801B7010E94546B97FF8B |
:1093500002C00C94C45FA72EB82EC92EDD24C7FC12 |
:10936000DA94D201C10186199709A809B909209197 |
:109370001909E22EFF2400271127BC01CD01A80105 |
:1093800097010E94C86B39014A0119012A018D8198 |
:109390009E81AF81B8858A199B09AC09BD09BC01C2 |
:1093A000CD01A80197010E94C86BD401C30197FEAB |
:1093B00002C00C94BE5F892F9A2FAB2FBB27A7FD4D |
:1093C000BA95BC01DA01C90157FF02C00C94B85F1D |
:1093D000892F9A2FAB2FBB27A7FDBA956C018091DF |
:1093E000B2049091B30481349105D4F48091B00417 |
:1093F0009091B104813491059CF48091E408E82FA8 |
:10940000FF27EE0FFF1FE155F74F808191810190FB |
:10941000F081E02DF7FF02C00C9429617A9734F0B7 |
:109420008091140A8F3F11F40C945E5F088D198DA2 |
:109430002A8D3B8D89899A89AB89BC89081B190BB8 |
:109440002A0B3B0B0AAF1BAF2CAF3DAF0093690556 |
:1094500010936A0520936B0530936C05EBA0FCA07C |
:109460000DA11EA12FA138A549A55AA5E21AF30AFC |
:10947000040B150BE986FA860B871C87E0926D05B5 |
:10948000F0926E0500936F05109370058AAD9BAD49 |
:10949000ACADBDAD8093710590937205A09373053B |
:1094A000B0937405E0927505F09276050093770508 |
:1094B000109378058091050590910605A091070508 |
:1094C000B0910805EAACFBAC0CAD1DAD8E199F093F |
:1094D000A00BB10B8093050590930605A09307059B |
:1094E000B09308058091FD049091FE04A091FF04C3 |
:1094F000B091000509851A852B853C85801B910B51 |
:10950000A20BB30B8093FD049093FE04A093FF0481 |
:10951000B09300051BA5112371F12091E704309150 |
:10952000E8042138310594F080913D0590913E0585 |
:10953000019690933E0580933D058091740990912A |
:1095400075090196909375098093740920583F4FCF |
:1095500094F480913D0590913E05019790933E05CE |
:1095600080933D05809174099091750901979093BE |
:109570007509809374091092E8041092E70401E0E1 |
:10958000A02EB12C8AAD9BADACADBDADB7FF02C076 |
:109590000C94805F81509240A040B0401CF014E0D9 |
:1095A000A12EB12C8091920590919305A0919405E4 |
:1095B000B0919505E0906909F0906A0900916B09F6 |
:1095C00010916C098E199F09A00BB10B815E914B14 |
:1095D000AF4FBF4F8F539C49A040B04010F40C9444 |
:1095E000B05DF091150AFC8FF93114F40C94485FCA |
:1095F000B0928D05A0928C058AAD9BADACADBDAD92 |
:1096000081509041A040B04014F40C94B95D809119 |
:109610008E05882311F40C94D05F7093C904609375 |
:10962000C8048AAD9BADACADBDADB7FF02C00C9414 |
:109630000F619C01AD01B7FF02C00C940961B9E054 |
:109640005595479537952795BA95D1F780918C0513 |
:1096500090918D05820F931F90938D0580938C05BB |
:109660002AAD3BAD4CAD5DAD57FF02C00C9403611C |
:1096700039014A01A3E09594879477946794AA9559 |
:10968000D1F713012401F9E86F16F3E17F06F0E04A |
:109690008F06F0E09F0644F0F8E86F2EF3E17F2E8E |
:1096A000812C912C13012401D401C30197FE02C027 |
:1096B0000C943D61892F9A2FAB2FBB27A7FDBA953C |
:1096C000680F791F2AAD3BAD4CAD5DAD203080EF0A |
:1096D00038078FEF48078FEF580714F00C94C95DD7 |
:1096E00080918F05882311F40C949F5F7093C904B7 |
:1096F0006093C804DA01C90157FF02C00C94FA60F4 |
:109700009C01AD01B7FF02C00C94526169E0559510 |
:109710004795379527956A95D1F780918C0590915B |
:109720008D05820F931F90938D0580938C052AAD34 |
:109730003BAD4CAD5DAD57FF02C00C944C6139019F |
:109740004A0143E095948794779467944A95D1F7BA |
:1097500098E769169CEE79069FEF89069FEF9906B8 |
:1097600044F438E7632E3CEE732E3FEF832E3FEF39 |
:10977000932E60928005709281058092820590926E |
:109780008305D401C30197FE02C00C94F460892FB5 |
:109790009A2FAB2FBB27A7FDBA956091C804709193 |
:1097A000C904680F791FABA52A2F332780918C0538 |
:1097B00090918D052817390724F430938D05209357 |
:1097C0008C05BC8DBB2379F02B2F332727FD3095DB |
:1097D00080918C0590918D052817390724F43093DA |
:1097E0008D0520938C052AAD3BAD4CAD5DAD213888 |
:1097F00031054105510574F0809141059091420574 |
:1098000020918C0530918D05820F931F9093420516 |
:10981000809341058AAD9BADACADBDAD80589F4FE7 |
:10982000AF4FBF4F74F48091410590914205209154 |
:109830008C0530918D05821B930B9093420580938C |
:109840004105B1E0AB2EB12C89859A85AB85BC85ED |
:10985000B7FF02C00C94965F81509240A040B04088 |
:109860001CF0A4E0AA2EB12C20E030E040E050E053 |
:109870008091960590919705A0919805B0919905D2 |
:1098800060907009709071098090720990907309CE |
:1098900086199709A809B909815E914BAF4FBF4F4F |
:1098A0008F539C49A040B04028F0FC8DF93114F44E |
:1098B0000C94325FB0928D05A0928C0589859A85B3 |
:1098C000AB85BC8581509041A040B04014F40C940D |
:1098D000BD5D80919005882311F40C94895FD0922E |
:1098E000CB04C092CA0489859A85AB85BC85B7FF35 |
:1098F00002C00C944361B7FF02C00C94EE60F9E023 |
:10990000B595A79597958795FA95D1F7A80EB91EA5 |
:10991000B0928D05A0928C0529853A854B855C8592 |
:1099200057FF02C00C94E860E3E0559547953795E2 |
:109930002795EA95D1F72938F3E13F07F0E04F0783 |
:10994000F0E05F0714F40C947E6088E893E1A0E0F7 |
:10995000B0E08093840590938505A0938605B0932D |
:1099600087058091840590918505A0918605B09129 |
:109970008705B7FF02C00C94CC60892F9A2FAB2FBC |
:10998000BB27A7FDBA95C090CA04D090CB04C80EDF |
:10999000D91E29853A854B855C85203080EF3807B4 |
:1099A0008FEF48078FEF580714F00C94D55D809126 |
:1099B0009105882311F40C94775FD092CB04C09268 |
:1099C000CA04DA01C90157FF02C00C9434619C013A |
:1099D000AD01B7FF02C00C942E61B9E055954795D3 |
:1099E00037952795BA95D1F780918C0590918D0583 |
:1099F000820F931F90938D0580938C0529853A855E |
:109A00004B855C8557FF02C00C94D660A3E055954A |
:109A1000479537952795AA95D1F728379CEE3907B2 |
:109A20009FEF49079FEF590714F00C94886088E76F |
:109A30009CEEAFEFBFEF8093840590938505A093D4 |
:109A40008605B09387058091840590918505A09146 |
:109A50008605B0918705B7FF02C00C942361892F5A |
:109A60009A2FAB2FBB27A7FDBA95C090CA04D09000 |
:109A7000CB04C80ED91EABA52A2F332780918C05A5 |
:109A800090918D052817390724F430938D05209384 |
:109A90008C05BC8DBB2379F02B2F332727FD309508 |
:109AA00080918C0590918D052817390724F4309307 |
:109AB0008D0520938C0529853A854B855C85213859 |
:109AC00031054105510574F080913F0590914005A5 |
:109AD00020918C0530918D05820F931F9093400546 |
:109AE00080933F0589859A85AB85BC8580589F4FBB |
:109AF000AF4FBF4F0CF0D0C280913F059091400511 |
:109B000020918C0530918D05821B930B909340051D |
:109B100080933F05C1C29090140A6FEF961611F41E |
:109B20000C945E588091F808A82EBB24CC24DD2428 |
:109B300069897A898B899C89A60195010E94C86BE5 |
:109B400079018A018091930990919409AA2797FD40 |
:109B5000A095BA2FE81AF90A0A0B1B0B6FA178A57A |
:109B600089A59AA5A60195010E94C86B59016A01B1 |
:109B70008091AF099091B009AA2797FDA095BA2FBF |
:109B8000A81AB90ACA0ADB0A292C332427FC309404 |
:109B9000432C532CC201B101A80197010E94546BC0 |
:109BA00097FD5FC23B014C01F9E09594879477944F |
:109BB0006794FA95D1F7C201B101A60195010E94FF |
:109BC000546B97FF02C00C94715C5B016C01E9E07F |
:109BD000D594C794B794A794EA95D1F78091B2042D |
:109BE0009091B304813491053CF48091B00490913C |
:109BF000B10481349105C4F0D401C30197FE02C0C1 |
:109C00000C94685D3C014D0195948794779467941A |
:109C1000D601C501D7FE02C00C94635D5C016D01E5 |
:109C2000D594C794B794A7948091E408E82FFF27B0 |
:109C3000EE0FFF1FE155F74F808191810190F08178 |
:109C4000E02DF7FF02C00C946C5C7A97A4F0C4017D |
:109C5000B30123E030E040E050E00E94C86B3901DE |
:109C60004A01C601B50123E030E040E050E00E9427 |
:109C7000C86B59016A018091160A282F332727FDE6 |
:109C80003095432F532F261537054805590514F4F1 |
:109C900039014A01992787FD9095909581959F4FAD |
:109CA000AA2797FDA095BA2F681679068A069B0603 |
:109CB00014F43C014D012A153B054C055D0514F4D7 |
:109CC00059016A01A816B906CA06DB0614F45C013C |
:109CD0006D018091090590910A05A0910B05B09145 |
:109CE0000C0586199709A809B9098093090590936D |
:109CF0000A05A0930B05B0930C0580910105909186 |
:109D00000205A0910305B09104058A199B09AC09CD |
:109D1000BD098093010590930205A0930305B093BC |
:109D2000040580910E0490910F048F3F910511F06E |
:109D300008F081CAA8A8B9A8CAA8DBA8A0925E09A1 |
:109D4000B0925F09C0926009D0926109CCA4DDA4F1 |
:109D5000EEA4FFA4C0925009D0925109E09252099A |
:109D6000F09253090091E9040D8BA090D704B090B4 |
:109D7000D804C501B7FEF0C1882799278A199B0925 |
:109D8000EBC11092190510921A0510921B05109242 |
:109D90001C051092150510921605109217051092C9 |
:109DA00018051092690910926A0910926B091092B5 |
:109DB0006C09109270091092710910927209109238 |
:109DC00073091CA61DA61EA61FA620E030E040E0D9 |
:109DD00050E028AB39AB4AAB5BAB80910905909161 |
:109DE0000A05A0910B05B0910C0580930505909391 |
:109DF0000605A0930705B093080580910105909191 |
:109E00000205A0910305B09104058093FD04909391 |
:109E1000FE04A093FF04B093000510920F0410926B |
:109E20000E041092C9041092C8041092CB04109230 |
:109E3000CA043F89332309F0F5C94E89442309F048 |
:109E4000F1C9E3C93091660939A34DC93FEF8E3F8F |
:109E500093070CF0D7C002960C94A844B901615046 |
:109E600070404091D9045091DA04CA0157FF02C0F2 |
:109E70000C945545959587959595879597FF02C0C4 |
:109E80000C945E452091B0043091B1042817390735 |
:109E900014F00C946A45CA0157FF02C00C94245C6C |
:109EA00097FF02C00C94215C9C0135952795359550 |
:109EB00027952536310514F40C946C4524E630E0E2 |
:109EC0008091AD0484FF02C00C9472453093B104BC |
:109ED0002093B0047093B3046093B2040C947A4559 |
:109EE000F09276094091DB045091DC04CA0157FDE1 |
:109EF00002C00C9426450396959587959595879570 |
:109F000097FD02C00C942E45909581959F4F0C941F |
:109F10002E4580918307992787FD90954E2D5527D3 |
:109F2000849FB001859F700D949F700D1124CB010B |
:109F30002091DB043091DC04820F931F9093DC04AA |
:109F40008093DB0480918407992787FD9095849FF7 |
:109F5000D001859FB00D949FB00D1124CD012091AB |
:109F6000D9043091DA04820F931F9093DA0480931E |
:109F7000D90480918507992787FD90952091D70472 |
:109F80003091D804820F931F9093D8048093D70404 |
:109F900080918707282F332727FD30958091EE0881 |
:109FA0009927289FF001299FF00D389FF00D11246B |
:109FB000F0938B03E0938A038091860799278C1591 |
:109FC0009D0514F00C9408459093D6048093D50415 |
:109FD0000C940C45982F0C94314681E08093C30477 |
:109FE0000C94264681E08093C204582F0C94F945C6 |
:109FF00081E08093C4040C94CF4581E08093C50434 |
:10A000000C94A2451092D8041092D7040C94AC443E |
:10A010009093C6048093C70430C88091D4048823E9 |
:10A0200011F40C945F468091AE049091AF04FFEF61 |
:10A030008F3F9F0711F40C94634601969093AF04F1 |
:10A040008093AE040C9463461092C20450E00C94CA |
:10A05000F9451092C4040C94CF451092C3040C949B |
:10A06000264661507E4F8F4F9F4F9CCD60E070E041 |
:10A070006B011092E9041D8AE0906909F0906A0969 |
:10A0800000916B0910916C096090700970907109D2 |
:10A09000809072099090730980917609882309F065 |
:10A0A000B6C71092CB041092CA041092C904109241 |
:10A0B000C804E0929205F0929305009394051093E2 |
:10A0C00095056092960570929705809298059092FA |
:10A0D00099051092190510921A0510921B051092FD |
:10A0E0001C05109215051092160510921705109276 |
:10A0F0001805109211051092120510921305109276 |
:10A1000014051092690910926A0910926B09109255 |
:10A110006C091092700910927109109272091092D4 |
:10A12000730910925E0910925F09109260091092F3 |
:10A13000610910925009109251091092520910921F |
:10A14000530910920F0410920E04A090D704B090FF |
:10A15000D804C501B7FC10CE409774F068EE262EE7 |
:10A1600063E0362E3092AB032092AA031AA114FDAD |
:10A1700003C081E080937F05D090F508ED2CFF248B |
:10A1800000271127B501882777FD8095982F950125 |
:10A19000B7FC78C7442737FD4095542F0E94546B75 |
:10A1A0009B01AC01C801B7010E94546B97FD65C7C4 |
:10A1B00059E095958795779567955A95D1F79B01C5 |
:10A1C0008D2D99278A9DA0018B9D500D9A9D500D34 |
:10A1D0001124CA0157FD43C7959587959595879595 |
:10A1E000280F391FC901AA2797FDA095BA2F809380 |
:10A1F000650590936605A0936705B0936805E090A8 |
:10A20000F904F090FA040091FB041091FC04E81AA0 |
:10A21000F90A0A0B1B0B51E5E51653ECF50650E065 |
:10A22000050750E015070CF4E9C680E593ECA0E0C3 |
:10A23000B0E08093F9049093FA04A093FB04B093E8 |
:10A24000FC048091F9049091FA04A091FB04B09170 |
:10A25000FC04805B9C43AF4FBF4F64F480EB9CE3F6 |
:10A26000AFEFBFEF8093F9049093FA04A093FB043F |
:10A27000B093FC04C090EF04D090F004C114D1045A |
:10A2800009F4B5C57AA173FFB2C589899A89AB89EA |
:10A29000BC89B7FF02C00C943B5C09E0B595A7955B |
:10A2A000979587950A95D1F79BAF8AAF97FF02C024 |
:10A2B0000C94475C8FA198A5A9A5BAA5B7FF02C0C9 |
:10A2C0000C94415C19E0B595A795979587951A95DB |
:10A2D000D1F7BC0197FF02C00C94365CAAADBBADB0 |
:10A2E000A617B70714F47BAF6AAF6AAD7BAD77FFF3 |
:10A2F00002C00C94325C2B015594479455944794BA |
:10A30000559447940894411C511CECE1F2E0CE0EA8 |
:10A31000DF1E76010027F7FC0095102FA4EEAA2E71 |
:10A32000ADEFBA2ECA0CDB1C6090AB097090AC0983 |
:10A330008090AD099090AE092091860330918703FB |
:10A3400040918803509189032D8F3E8F4F8F58A3E2 |
:10A35000C401B3010E94C86BE21AF30A040B150B87 |
:10A36000C801B70128E631E040E050E00E94C86B28 |
:10A37000DC01CB018C01045B1040A090A409B090DB |
:10A38000A509C501B7FE02C00C942C5C813891056B |
:10A3900014F000E010E02090AA033090AB032114E9 |
:10A3A0003104A9F44AAD5BAD4931510584F4809183 |
:10A3B000E7049091E804800F911F9093E804809344 |
:10A3C000E70480917F05882311F00C943E5DC8015D |
:10A3D000880F991F880F991F880F991FB2010E943B |
:10A3E000936B9B01442737FD4095542F260D371D55 |
:10A3F000481D591D2093AB093093AC094093AD091A |
:10A400005093AE09F0909B036F2D7727AAADBBAD9B |
:10A410006A9FC0016B9F900D7A9F900D112497FF4A |
:10A4200002C00C94295C959587959595879595958F |
:10A4300087959595879595958795681B790B7BAF43 |
:10A440006AAF77FF02C00C944E5C2114310411F006 |
:10A450000C94635C0091B2041091B3048091B00439 |
:10A460009091B104080F191F17FF02C00C948B5D67 |
:10A47000159507951595079515950795005C1F4F40 |
:10A48000CA01B9012D8D3E8D4F8D58A10E94C86B18 |
:10A49000DA01C9012091ED043091EE04442737FD23 |
:10A4A0004095542F821B930BA40BB50B845E9D4FDC |
:10A4B000AF4FBF4FBC01CD0128E631E040E050E096 |
:10A4C0000E94C86BDC01CB01845B90402AAD3BADA0 |
:10A4D000829FF001839FF00D929FF00D1124CF0118 |
:10A4E000B8010E94936B83E0F89EA00111245BAF3A |
:10A4F0004AAF4617570714F00C94565CBA01CB01CB |
:10A50000AA2797FDA095BA2F2091F9043091FA045B |
:10A510004091FB045091FC04820F931FA41FB51FB0 |
:10A520008093F9049093FA04A093FB04B093FC0485 |
:10A5300080917E0581508F3F09F462C480937E052F |
:10A540005D89552381F01092610510926205109289 |
:10A5500063051092640510925D0510925E051092DD |
:10A560005F05109260056F89662309F044C58091EC |
:10A5700076099927AA27BB27BC01CD0129893A89E9 |
:10A580004B895C890E94546BDC01CB01BC01CD017D |
:10A5900028EF3AE240E050E00E94C86B19017E8942 |
:10A5A000772309F025C5809176099927AA27BB272B |
:10A5B000BC01CD012FA138A549A55AA50E94546B15 |
:10A5C000DC01CB01BC01CD0128EF3AE240E050E0D4 |
:10A5D0000E94C86B3C832B8380904A0990904B0962 |
:10A5E00089EC881691040CF4F8C4B8EC8B2E912CED |
:10A5F00090924B0980924A09009155091091560991 |
:10A60000093C11050CF4E1C408EC10E01093560964 |
:10A61000009355098091570990915809AA2797FDF1 |
:10A62000A095BA2F2091A909C22EDD24EE24FF2483 |
:10A63000BC01CD01A70196010E94546B9B01AC01A6 |
:10A64000C401AA2797FDA095BA2FF7E0880F991F9C |
:10A65000AA1FBB1FFA95D1F7280F391F4A1F5B1F8E |
:10A6600057FDECC4E6E05595479537952795EA9553 |
:10A67000D1F74101820E931E2401809148099091E7 |
:10A680004909AA2797FDA095BA2FBC01CD01A701C2 |
:10A6900096010E94546B9B01AC01C801AA2797FD4B |
:10A6A000A095BA2F77E0880F991FAA1FBB1F7A9534 |
:10A6B000D1F7280F391F4A1F5B1F57FDBAC466E048 |
:10A6C00055954795379527956A95D1F76B807C808E |
:10A6D000620E731E6301AA0CBB1CC501AA2797FD5D |
:10A6E000A095BA2F20914F09332744275527BC0145 |
:10A6F000CD010E94546B7B018C0197FD91C456E003 |
:10A7000015950795F794E7945A95D1F739A1832FBA |
:10A710009927AA27BB2720910D0530910E0540915E |
:10A720000F0550911005BC01CD010E94546BDC0156 |
:10A73000CB01BC01CD0120EF35E540E050E00E94A7 |
:10A74000C86B5701A20EB31EC50141E0841640E458 |
:10A75000940624F0812C40E4942E240150E08516C8 |
:10A7600050EC95060CF02CC4812C30EC932E90927A |
:10A7700058098092570961E0661660E4760624F075 |
:10A78000612C20E4722E630170E0671670EC77068E |
:10A790000CF011C4612C00EC702E7092490960928B |
:10A7A0004809A1E0AA16A0E4BA0624F0A12C10E4FE |
:10A7B000B12EC501B0E0AB16B0ECBB060CF0F6C391 |
:10A7C000A12CB0ECBB2EB092A509A092A409809157 |
:10A7D0000001482F5527809127039091280348179F |
:10A7E000590794F42091270330912803E981FA81D5 |
:10A7F0004E9FC0014F9F900D5E9F900D1124B90197 |
:10A800000E947F6B7A836983C980DA80CC0CDD1C5F |
:10A81000CC0CDD1CDA82C982DAA0D0FE51C00E89D0 |
:10A82000002309F04DC01F89112309F049C0809110 |
:10A830009E0590919F059093500880934F088091BA |
:10A8400010049091110490934A0880934908209134 |
:10A850004305309144052115310509F0F8C4809174 |
:10A860001D0390911E038959934010F00C94AB5C2A |
:10A8700080911D0390911E038436910510F00C9475 |
:10A88000A65D87B58B3010F40C94415E8091120464 |
:10A890008F5F809312049AE08902900111248091C5 |
:10A8A0007308821B87BD8CE291E09093FC03809338 |
:10A8B000FB038EE591E09093440580934305E8C443 |
:10A8C0005090A30940905C09242D3327C901880FBB |
:10A8D000991F880F991F8896E981FA81E817F9076F |
:10A8E00014F49A838983852D9927880F991F880FDF |
:10A8F000991F80559040C980DA808C159D0514F40D |
:10A900009A838983809146048823A1F08091AE04C4 |
:10A910009091AF040297C09768F4E980FA801E1402 |
:10A920001F0444F481E090E09093AF048093AE0460 |
:10A930003A83298309811A811093340800933308DC |
:10A940008091650590916605A0916705B0916805B5 |
:10A95000880F991FAA1FBB1F880F991FAA1FBB1F13 |
:10A96000A81AB90AB9AEA8AE013A11050CF40AC387 |
:10A97000C80117FDA1C39595879528AD39AD8217FC |
:10A98000930714F499AF88AF909581959F4F48AD88 |
:10A9900059AD4817590714F499AF88AF252D3327BF |
:10A9A000220F331F220F331FC90149815A81841B93 |
:10A9B000950B68AD79AD8617970714F499AF88AFFA |
:10A9C00089819A81821B930BA8ADB9ADA817B907ED |
:10A9D00014F499AF88AF8091DB049091DC0484017A |
:10A9E000081B190B1093680900936709A09076095A |
:10A9F000AA2009F4C1C2281A390AC101AA2797FD61 |
:10AA0000A095BA2F20915D0530915E0540915F05BC |
:10AA100050916005820F931FA41FB51F80935D05A1 |
:10AA200090935E05A0935F05B093600560915D050E |
:10AA300070915E0580915F05909160056130BAEF7D |
:10AA40007B07B0E08B07B0E09B0774F080E09AEFE3 |
:10AA5000A0E0B0E080935D0590935E05A0935F0554 |
:10AA6000B0936005BC01CD016030E6E07E07EFEFFA |
:10AA70008E07EFEF9E0774F480E096E0AFEFBFEF34 |
:10AA800080935D0590935E05A0935F05B09360058C |
:10AA9000BC01CD01E090A003F090A10397014427F1 |
:10AAA00037FD4095542F0E94C86B6801C20ED31E1B |
:10AAB000B0908C036B2D77278827992728AD39AD67 |
:10AAC00037FDC9C237FDC4C23595279509811A8162 |
:10AAD000200F311F442737FD4095542F0E94546B9F |
:10AAE00097FDB1C226E095958795779567952A954C |
:10AAF000D1F79B016C157D050CF46B013095219508 |
:10AB00003F4FC216D3060CF469018091D90490918D |
:10AB1000DA048301081B190B1093470900934609B7 |
:10AB2000AA2009F423C22B813C81281B390BC901BF |
:10AB3000AA2797FDA095BA2F209161053091620553 |
:10AB40004091630550916405820F931FA41FB51FA8 |
:10AB50008093610590936205A0936305B0936405AB |
:10AB60006091610570916205809163059091640523 |
:10AB700061303AEF730730E0830730E0930774F0F9 |
:10AB800080E09AEFA0E0B0E08093610590936205C9 |
:10AB9000A0936305B0936405BC01CD01603046E02D |
:10ABA00074074FEF84074FEF940774F480E096E04A |
:10ABB000AFEFBFEF8093610590936205A0936305AB |
:10ABC000B0936405BC01CD019701442737FD409542 |
:10ABD000542F0E94C86B7801E20EF31E6B2D77276D |
:10ABE0008827992728AD39AD37FD43C237FD3EC2CE |
:10ABF00035952795A981BA812A0F3B1F442737FD38 |
:10AC00004095542F0E94546B97FD2BC216E09595EA |
:10AC10008795779567951A95D1F79B016E157F05F6 |
:10AC20000CF47B01309521953F4FE216F3060CF4AE |
:10AC300079018601222717FD2095322F0D871E8767 |
:10AC40002F87388B242D33273DAB2CAB452D552733 |
:10AC50005FAB4EABB6E9CB2EB9E0DB2E03ED15E0D2 |
:10AC60002701662457FC6094762C68AD79AD4B01C2 |
:10AC7000AA2497FCA094BA2CABE03A2EF7E7EF2E6B |
:10AC8000F9E0FF2E07C0FBAFEAAFEAADD601EC93C7 |
:10AC90000C948261F801258512160CF08FC0498151 |
:10ACA0005A81CA01AA2797FDA095BA2F332727FDFD |
:10ACB0003095432F532FBC01CD010E94546B97FD5B |
:10ACC00091C0E6E09595879577956795EA95D1F7D8 |
:10ACD0007BAF6AAFF8018685282F332727FD309593 |
:10ACE000432F532F6D857E858F8598890E94546BE5 |
:10ACF00097FD73C056E095958795779567955A951A |
:10AD0000D1F72AAD3BAD260F371F3BAF2AAFF80175 |
:10AD10008785282F332727FD3095432F532FC301D5 |
:10AD2000B2010E94546B97FD51C046E095958795FE |
:10AD3000779567954A95D1F72AAD3BAD260F371F1A |
:10AD40003BAF2AAFF8018089282F332727FD3095A4 |
:10AD5000432F532FC501B4010E94546BDC01CB017A |
:10AD6000B7FD30C036E0B595A795979587953A958C |
:10AD7000D1F7F701608171812AAD3BAD820F931F3E |
:10AD80000E944531D7018D939C9397FD24C09595E2 |
:10AD90008795959587959BAF8AAFECA9FDA98E17EE |
:10ADA0009F070CF470CF2EA93FA94AAD5BAD2417C5 |
:10ADB00035070CF06ACF3BAF2AAF67CFD6011C92A4 |
:10ADC0000C948261CF96A11DB11DCCCF615C7F4FE9 |
:10ADD0008F4F9F4FAACF0396DACF615C7F4F8F4F83 |
:10ADE0009F4F88CF615C7F4F8F4F9F4F6ACFA0905E |
:10ADF000A409B090A50980917E05815008F09ECBF2 |
:10AE000088E180937E058091F8089927880F991F23 |
:10AE1000880F991F7C010027F7FC0095102F698986 |
:10AE20007A898B899C89A80197010E94C86B30930D |
:10AE30002608209325086FA178A589A59AA5A801C1 |
:10AE400097010E94C86B30932808209327088091AF |
:10AE500093099091940997FDEAC4959587959595E6 |
:10AE6000879590932A08809329088091AF09909143 |
:10AE7000B00997FDDAC49595879595958795909338 |
:10AE80002C0880932B08B0922E08A0922D08809158 |
:10AE9000D0049091D104A091D204B091D304BC010C |
:10AEA000CD0125E030E040E050E00E94C86B3093D7 |
:10AEB000300820932F088091690890916A08909338 |
:10AEC000320880933108D0923608C09235088091BC |
:10AED0002703909128039093380880933708809136 |
:10AEE000DE04992790933A08809339088091AB0942 |
:10AEF0009091AC09A091AD09B091AE092091860363 |
:10AF0000309187034091880350918903BC01CD01A2 |
:10AF10000E94C86B30933C0820933B08809110043A |
:10AF20009091110490934A088093490880917E077C |
:10AF3000992790934C0880934B088091F703909148 |
:10AF4000F80390934E0880934D088091BF0590912F |
:10AF5000C00590936208809361088091BD0590912F |
:10AF6000BE059093640880936308EACAC801AA27C3 |
:10AF700097FDA095BA2FE0CDC801AA2797FDA0950F |
:10AF8000BA2F40CD68AD79AD6135710524F080E50B |
:10AF900090E099AF88AFA8ADB9ADA05BBF4F0CF002 |
:10AFA000FDCC00EB1FEF19AF08AFF8CC9093A509CB |
:10AFB0008093A4090CCCD0924909C0924809F1CBE6 |
:10AFC0005092580940925709D6CBAFEF08331A0771 |
:10AFD0000CF020CB08E31FEF19CB98E389169FEF05 |
:10AFE00099060CF009CBA8E38A2EAFEF9A2E00CB7E |
:10AFF0001C821B82F1CA22243324D1CAE092F904B4 |
:10B00000F092FA040093FB041093FC041AC9D09246 |
:10B01000CB04C092CA047093C9046093C80449C8A1 |
:10B020002FE330E040E050E0E20EF31E041F151F56 |
:10B0300066CB215C3F4F4F4F5F4F41CB215C3F4F71 |
:10B040004F4F5F4F0FCB615C7F4F8F4F9F4F4ACD6C |
:10B050002F5F3F4F39CD309521953F4F33CD03962C |
:10B06000BBC8615C7F4F8F4F9F4FD0CD2F5F3F4F4D |
:10B07000BFCD309521953F4FB9CD61507E4F8F4F59 |
:10B080009F4F96C8222733272A193B0983C88091EE |
:10B09000AD0482608093AD040C947E461092D60479 |
:10B0A0001092D5040C9414454D5F5F4F0C9470447E |
:10B0B0004D5F5F4F0C94264401965DCC8091F8085B |
:10B0C000E82EFF240027112769897A898B899C89BA |
:10B0D000A80197010E94C86B39014A018091930928 |
:10B0E00090919409AA2797FDA095BA2F681A790A1A |
:10B0F0008A0A9B0A6FA178A589A59AA5A80197013C |
:10B100000E94C86B59016A018091AF099091B00902 |
:10B11000AA2797FDA095BA2FA81AB90ACA0ADB0A6E |
:10B12000D401C30197FCF3C43C014D0154E0959454 |
:10B130008794779467945A95D1F7D601C501D7FCC7 |
:10B14000F2C45C016D0144E0D594C794B794A79410 |
:10B150004A95D1F78091B2049091B304813491055E |
:10B160000CF4C5C3C401B30123E030E040E050E07B |
:10B170000E94C86B39014A01C601B50123E030E0E5 |
:10B1800040E050E00E94C86B59016A018091E408D8 |
:10B19000E82FFF27EE0FFF1FE155F74F80819181C8 |
:10B1A0000190F081E02DF7FDBAC47A97A4F0C401B4 |
:10B1B000B30123E030E040E050E00E94C86B390169 |
:10B1C0004A01C601B50123E030E040E050E00E94B2 |
:10B1D000C86B59016A0171E2671671048104910418 |
:10B1E0002CF030E2632E712C812C912C80EE6816AD |
:10B1F0008FEF78068FEF88068FEF980644F420EEE5 |
:10B20000622E2FEF722E2FEF822E2FEF922E91E2D1 |
:10B21000A916B104C104D1042CF090E2A92EB12CDE |
:10B22000C12CD12CA0EEAA16AFEFBA06AFEFCA061A |
:10B23000AFEFDA0614F00C94694E80EEA82E8FEF73 |
:10B24000B82E8FEFC82E8FEFD82E0C94694E8091B8 |
:10B25000D0049091D104A091D204B091D304F4E031 |
:10B26000880F991FAA1FBB1FFA95D1F7809313046B |
:10B2700090931404A0931504B09316041092110433 |
:10B280001092100421503040309344052093430520 |
:10B290004AA141FF3EC080919E03823308F051C312 |
:10B2A0008091CB03815098F41092EA048091D004ED |
:10B2B0009091D104A091D204B091D3048093CC0496 |
:10B2C0009093CD04A093CE04B093CF0481E08093FB |
:10B2D000CB0341C010927C05ED2DFF27EE0FFF1F21 |
:10B2E000E155F74F808191818C3491050CF499C21E |
:10B2F00080917D058F5F893C08F41FC31092D404B0 |
:10B3000088EC80937D051092AF041092AE040C94EB |
:10B31000F24320919E0380918A0390918B03820FC8 |
:10B32000911D2091EE083327829FB001839F700DFD |
:10B33000929F700D1124CB01AA2797FDA095BA2FDB |
:10B340008093CC049093CD04A093CE04B093CF040B |
:10B3500081E08093EA04E0908603F09087030091F7 |
:10B3600088031091890369897A898B899C89A8014E |
:10B3700097010E94C86B59016A016FA178A589A540 |
:10B380009AA5A80197010E94C86BB901C5010E9446 |
:10B39000436A6C01CD971CF0ECE3CE2ED12CC60194 |
:10B3A0000E94E9686C018091EA04882309F469C16C |
:10B3B0008091AD0499279C012071307084FD61C19A |
:10B3C000B0903909B0FC04C08091E90881FD5DC4EA |
:10B3D00009811A8130939B0520939A056090D004CF |
:10B3E0007090D1048090D2049090D3048091CC04CA |
:10B3F0009091CD04A091CE04B091CF04861597050D |
:10B40000A805B90514F0B0FC52C1E090D004F0904A |
:10B41000D1048091CC049091CD04E81AF90A80916E |
:10B420009D0399278E9D90018F9D300D9E9D300D1F |
:10B430001124C90137FDDAC59595879595958795AE |
:10B440009595879595958795081B190B2091100464 |
:10B450003091110437FDC7C535952795359527954A |
:10B4600035952795293031050CF4CCC328E030E020 |
:10B47000229FA001239F500D329F500D11249A014D |
:10B4800057FDAEC5359527953595279580911004C4 |
:10B4900090911104280F391F80919F039927AA27A3 |
:10B4A000BB27442737FD4095542FBC01CD010E9496 |
:10B4B000546B97FD90C5B7E09595879577956795FF |
:10B4C000BA95D1F79B015FEF613875070CF092C315 |
:10B4D00021E83FEF021B130B6090F1047090F2041F |
:10B4E0008090F3049090F40497FC64C5A7E09594D1 |
:10B4F000879477946794AA95D1F780919C03282F1D |
:10B50000332744275527C401B3010E94546B97FD8C |
:10B510004CC5F5E09595879577956795FA95D1F7A0 |
:10B520009B017FEF213837070CF04BC321E83FEF39 |
:10B53000021B130B85E990E0E80EF91E9BE2E91669 |
:10B5400091E0F906E8F480919A0590919B05892B8A |
:10B55000B9F480919E0590919F051816190684F400 |
:10B560008091A0059091A105081719070CF49FC2BE |
:10B570008091C9039091CA03801791070CF497C278 |
:10B580008091430590914405892B21F000919E05FF |
:10B5900010919F0580919A039927AA27BB27209194 |
:10B5A000180A332727FD3095432F532FBC01CD01B7 |
:10B5B0000E94546B97FD0AC5E7E0959587957795AE |
:10B5C0006795EA95D1F79B01AFEF61387A070CF0E8 |
:10B5D000F0C221E83FEF021B130BC801AA2797FD19 |
:10B5E000A095BA2F5DE0880F991FAA1FBB1F5A951F |
:10B5F000D1F79601442737FD4095542FBC01CD016A |
:10B600000E94C86B20936D0530936E0540936F05C3 |
:10B610005093700500916D0510916E0580919C0509 |
:10B6200090919D059C01220F331F280F391F200F79 |
:10B63000311F37FDC8C4A9015595479555954795C4 |
:10B64000BA018091EA08282F3327220F331F220FD7 |
:10B65000331F421753070CF0BCC2A901B901509027 |
:10B66000A309B0FE64C2E981FA81E417F5070CF082 |
:10B670005EC2AF01F0939D05E0939C055A83498318 |
:10B6800018C06091F208662309F43AC1772766343E |
:10B6900071050CF00EC226E430E03093C80320930D |
:10B6A000C703E980FA80F0929D05E0929C055090D6 |
:10B6B000A3098091AD0481FFA7C08091AD0484FDF2 |
:10B6C000A3C0E090A205F090A3050091A4051091FD |
:10B6D000A505E114F10401051105B1F429813A81B0 |
:10B6E00079010027F7FC0095102FECE0EE0CFF1C11 |
:10B6F000001F111FEA95D1F7E092A205F092A30571 |
:10B700000093A4051093A505809110049091110455 |
:10B71000809110049091110497FDEEC38436910539 |
:10B720000CF072C069817A819B01442737FD4095F6 |
:10B73000542FC601AA2797FDA095BA2FBC01CD01B1 |
:10B740000E94546B97FD6CC49B01AC017DE0559544 |
:10B750004795379527957A95D1F720936D053093C6 |
:10B760006E0540936F05509370058091AE049091E3 |
:10B77000AF0477E0803D970708F053C3D801C701B5 |
:10B7800069E0B695A795979587956A95D1F7E81AD8 |
:10B79000F90A0A0B1B0BDA01C90123E0880F991F74 |
:10B7A000AA1FBB1F2A95D1F7E80EF91E0A1F1B1FFF |
:10B7B000E092A205F092A3050093A4051093A505BD |
:10B7C000D801C7011CE0B695A795979587951A955E |
:10B7D000D1F790939F0580939E054091F0084423F4 |
:10B7E00009F414C355279C01BA010E94936BC90147 |
:10B7F000861B970B9093A1058093A005260F371FFA |
:10B800003093CA032093C903A090A409B090A5095E |
:10B8100080905709909058096090480970904909A4 |
:10B8200051C810927D050C94F243039624CB0396E5 |
:10B8300014CB909581959F4F0C943C4503960C94A6 |
:10B84000404503960C94544F909581959F4F0C94CE |
:10B85000504F4F960C941352882799278A199B09A9 |
:10B860000C94C651695F7F4F0C947B517095619524 |
:10B870007F4F0C946E5181509E4FAF4FBF4F0C9431 |
:10B880004D5181509E4FAF4FBF4F0C9462519095D8 |
:10B8900081959F4F9BAF8AAF0C945A5184EF91E0F2 |
:10B8A0009093AB038093AA030C9498528AAD9BADFE |
:10B8B000909581959F4F6817790714F00C947F52EB |
:10B8C000BC010C947F520894210831083092AB03DC |
:10B8D0002092AA030C949852F095E195FF4F0C9496 |
:10B8E000254E61507E4F8F4F9F4F0C94E54D8091B8 |
:10B8F000B0049091B104813491050CF447CC32CC62 |
:10B9000040919E0550919F0557FDB8C155954795AB |
:10B910005595479580912703909128032091000128 |
:10B920003327489F5001499FB00C589FB00C1124F9 |
:10B93000C501B9010E94936BAACE80937D050C943A |
:10B94000F24381E08093EA0488EC8093CB0303CD3B |
:10B9500080937C05C1CC87B5853F08F0F3C080910A |
:10B96000120481500C94495480819181855B9F4FD2 |
:10B970000CF0F2C080917B058F5F80937B05893C42 |
:10B9800010F40C9475472C3008F07EC32998A4E07D |
:10B99000B0E08FEF082E0E94F06B1092D40410924A |
:10B9A0007B051092AF041092AE040E94A23CA4E06A |
:10B9B000B0E0809137059091380597FD41C4892FFB |
:10B9C000990F990B082E0E94F06BA5E0B0E08091D2 |
:10B9D000370590913805082E0E94F06BA6E0B0E084 |
:10B9E000809135059091360597FD27C4892F990FD1 |
:10B9F000990B082E0E94F06BA7E0B0E0809135050E |
:10BA000090913605082E0E94F06B08E010E08091BE |
:10BA10002F0590913005A0913105B0913205BC0100 |
:10BA2000CD010E94BD6ADC01CB019C0197FDCDC315 |
:10BA3000832F992787FD9A95D801082E0E94F06BD5 |
:10BA400009E010E080912F0590913005A09131051B |
:10BA5000B0913205BC01CD010E94BD6ADC01CB0171 |
:10BA6000D801082E0E94F06B0E94B00568E770E0D4 |
:10BA70000E945B313091E3080C947547C601AA27F8 |
:10BA800097FDA095BA2FBC01CD012D8D3E8D4F8D18 |
:10BA900058A10E94546B3B014C010E94C86B30932B |
:10BAA000EE042093ED0410927F050C94E7518C0175 |
:10BAB00067CD6739710534F186E990E09093C8034A |
:10BAC0008093C703EECD0196A11DB11D0C940E4EBF |
:10BAD0000196A11DB11D0C94024E81E080937F055B |
:10BAE0001092650510926605109267051092680520 |
:10BAF0001092F9041092FA041092FB041092FC04C4 |
:10BB00000C947E467093C8036093C703CACD0F960A |
:10BB1000A11DB11D09CB095F1F4F0C943852F09540 |
:10BB2000E195FF4F42CB0F96A11DB11D0ACB70933B |
:10BB30009D0560939C055A834983BBCD80937B050B |
:10BB40000C94754781E08093A705A2CB3F89309381 |
:10BB5000A6053093A7059CCB40937B050C947547B5 |
:10BB6000B0928D05A0928C052091150A2C8F0C9413 |
:10BB7000FC4A10928E050C94624B209384053093FE |
:10BB800085054093860550938705109290050C9487 |
:10BB9000C94C2092800530928105409282055092D6 |
:10BBA000830510928F050C94D34B109291050C9441 |
:10BBB0003B4D6F3F710509F00CF40DCD2FEF30E0D8 |
:10BBC0000ACD2F3F310509F00CF4B2CC2FEF30E055 |
:10BBD000AFCC5090A309252D3327220F331F220FFE |
:10BBE000331F20553040241735070CF03ACDA901FA |
:10BBF000B90137CD6F3F710509F00CF46BCC2FEF15 |
:10BC000030E068CC121613060CF432CC229FC0012F |
:10BC1000239F900D329F900D112497FD6DC3959534 |
:10BC20008795959587952091100430911104281BD4 |
:10BC3000390B32CC0E94B00545E661EE78E00E94F7 |
:10BC400058058091E90880FF10C080911D039091F4 |
:10BC50001E03875B934038F480911D0390911E036F |
:10BC60008E5E924010F40E945A1C1092F9030E94BA |
:10BC7000A23C81E08093F903579AF6CE4D5F5F4F67 |
:10BC800045CE81E08093A60503CB8091AD0481FF72 |
:10BC9000D1C12091C7033091C803C9010F964091CB |
:10BCA000D5045091D604841795070CF0EFC180910C |
:10BCB000A605882309F0EAC18091A80581FFF8C292 |
:10BCC0008D7F6090D0047090D1048090D2049090C9 |
:10BCD000D3046092CC047092CD048092CE049092F2 |
:10BCE000CF0481608093A805421B530B9A012F500B |
:10BCF000304037FDF4C280919A0590919B05280F42 |
:10BD0000391F30939B0520939A0520919A05309115 |
:10BD10009B05C90137FF04C088279927821B930B15 |
:10BD2000815092400CF481C18091EE089927829F46 |
:10BD3000F001839FF00D929FF00D1124CF0160E080 |
:10BD400075E00E94936BCB01AA2797FDA095BA2FAF |
:10BD50002091CC043091CD044091CE045091CF0479 |
:10BD6000820F931FA41FB51F8093CC049093CD0422 |
:10BD7000A093CE04B093CF0410929B0510929A0525 |
:10BD8000B1FE06C08BE490E09093FC038093FB032C |
:10BD90008091F208882309F048C100919E05109116 |
:10BDA0009F05A80117FD93C2559547955595479551 |
:10BDB0008091270390912803209100013327489F09 |
:10BDC0007001499FF00C589FF00C1124C701B90174 |
:10BDD0000E94936B663471050CF073C226E430E068 |
:10BDE0003093C8032093C703809143059091440585 |
:10BDF000892B09F4FBCAD401C3016092CC04709270 |
:10BE0000CD048092CE049092CF04F8CA1092A1057E |
:10BE10001092A0058FEF93E09093CA038093C9031B |
:10BE2000F3CCAFE0803A9A0708F0E2C0D801C7012E |
:10BE3000FAE0B695A79597958795FA95D1F7E81A00 |
:10BE4000F90A0A0B1B0BDA01C901880F991FAA1FF7 |
:10BE5000BB1F880F991FAA1FBB1FA6CC1091E20819 |
:10BE60000C94D8462093840530938505409386052D |
:10BE70005093870510928D0510928C05E8EE2E2EBA |
:10BE8000E3E03E2E3092AB032092AA030C943B4D8C |
:10BE90006092800570928105809282059092830560 |
:10BEA00010928D0510928C0588EE282E83E0382E96 |
:10BEB0003092AB032092AA030C94D34B7093C90425 |
:10BEC0006093C804D092CB04C092CA04CB0177FD22 |
:10BED0006BC1BC0175956795C601D7FC63C16C0148 |
:10BEE000D594C7940C94164A299A0C94AC4681E0D8 |
:10BEF000809391050C943B4D909581959F4F0ECC6E |
:10BF0000B095A095909581959F4FAF4FBF4F0C94E2 |
:10BF1000CA4A209384053093850540938605509343 |
:10BF2000870581E0809390050C94C94CB095A0954D |
:10BF3000909581959F4FAF4FBF4F0C942C4C209202 |
:10BF4000800530928105409282055092830581E000 |
:10BF500080938F050C94D34B81509F4FAF4FBF4FB1 |
:10BF60000C946D4981509F4FAF4FBF4F0C94534974 |
:10BF700081509F4FAF4FBF4F0C94E84981509F4F66 |
:10BF8000AF4FBF4F0C94DB4961507F4F8F4F9F4F96 |
:10BF90000C94AB4961507F4F8F4F9F4F0C94954944 |
:10BFA00081E080938E050C94624B615E7F4F8F4FD2 |
:10BFB0009F4FAFCA6FE770E080E090E0660E771E9B |
:10BFC000881E991E93CA2D5F3F4F35CB61587F4F16 |
:10BFD0008F4F9F4FF1CA61587F4F8F4F9F4F6BCA52 |
:10BFE0002D5F3F4F4FCA295F3F4F36CA0F9624CA75 |
:10BFF00080549F4108F096C0D801C7017BE0B695F8 |
:10C00000A795979587957A95D1F7E81AF90A0A0BBB |
:10C010001B0BDA01C901820F931FA41FB51FC4CBEC |
:10C020006150704E8F4F9F4F8FCB00919E051091A6 |
:10C030009F05DACE6090D0047090D1048090D20435 |
:10C040009090D304D401C30180599140A040B040E6 |
:10C050008093CC049093CD04A093CE04B093CF04EE |
:10C060002091F208222309F446C033273093C803F5 |
:10C070002093C70300919E0510919F05BFC9F095BD |
:10C08000E195FF4F0C945747299A81CCC9010F972E |
:10C09000481759070CF058C08091A705882309F06C |
:10C0A00053C08091A80580FF1EC18E7F6090D00490 |
:10C0B0007090D1048090D2049090D3046092CC040C |
:10C0C0007092CD048092CE049092CF0482608093CF |
:10C0D000A805421B530B9A01215F3F4F37FD0EC14C |
:10C0E00080919A0590919B05821B930B90939B05E1 |
:10C0F00080939A050ACE28E730E0B8CF20938405D4 |
:10C100003093850540938605509387050C94B14C78 |
:10C1100020938405309385054093860550938705C9 |
:10C120000C94234DD801C7016CE0B695A79597955F |
:10C1300087956A95D1F7E81AF90A0A0B1B0BE20EEC |
:10C14000F31E041F151F34CB2091A805822F9927B9 |
:10C1500083709070892B81F12C7F2093A805109219 |
:10C160009B0510929A056090D0047090D104809045 |
:10C17000D2049090D3046092CC047092CD0480924B |
:10C18000CE049092CF04B1FEC0CD84EF91E09093A5 |
:10C19000FC038093FB03B9CD81509F4FAF4FBF4F3E |
:10C1A0000C94BD4C01969BCE019693CE295F3F4FD8 |
:10C1B0004F4F5F4F0C94064D6090D0047090D104A7 |
:10C1C0008090D2049090D304A0CD21503F4F30CC2A |
:10C1D000295F3F4F4F4F5F4F0C94944C81509E4FBF |
:10C1E000AF4FBF4F0C947F4C81509F4FAF4FBF4F0D |
:10C1F0000C94C74BB095A095909581959F4FAF4FEC |
:10C20000BF4F0C94804B295F3F4F4F4F5F4F0C94B3 |
:10C21000384B21503E4F4F4F5F4F0C941F4BB09502 |
:10C22000A095909581959F4FAF4FBF4F0C94194BA0 |
:10C23000F095E195FF4F0C94D44681509F4FD6CB9B |
:10C2400081509F4FBCCB81509F4FAF4FBF4F0C943D |
:10C250002F4DF095E195FF4F0C940E4A21503E4F23 |
:10C260004F4F5F4F0C94ED4CB095A09590958195F4 |
:10C270009F4FAF4FBF4F0C94E74C81509F4FAF4F34 |
:10C28000BF4F0C945A4BB095A095909581959F4FB8 |
:10C29000AF4FBF4F0C947B4C295F3F4F4F4F5F4FC9 |
:10C2A0000C949F4B21503E4F4F4F5F4F0C94864B49 |
:10C2B0006090D0047090D1048090D2049090D30408 |
:10C2C00010CD6739710534F026E930E089CD4D5F36 |
:10C2D0005F4F6ACD7093C8036093C70385CD3095D7 |
:10C2E00021953F4F08CD6090D0047090D10480908C |
:10C2F000D2049090D304EACE039691CC3095219548 |
:10C300003F4FEECE3A94E2E0F0E0EE0EFF1E0C5FFF |
:10C310001F4F0894C11CD11C37FC02C00C944A5614 |
:10C32000ED960FB6F894DEBF0FBECDBFDF91CF9173 |
:10C330001F910F91FF90EF90DF90CF90BF90AF9043 |
:10C340009F908F907F906F905F904F903F902F9035 |
:10C3500008958091B5059091B605A091B705B0916B |
:10C36000B8058093AD059093AE05A093AF05B0934B |
:10C37000B0058091B1059091B205A091B305B0913F |
:10C38000B4058093A9059093AA05A093AB05B0933B |
:10C39000AC0508951092C0051092BF051092BE051D |
:10C3A0001092BD05089584B1806A84B93D9A82E5F2 |
:10C3B0008CBD1DBC459A81E08093B5098AEA8093C3 |
:10C3C000B90983E88093BA099AE09093BB09109267 |
:10C3D000BD091092BC091092BF091092BE091092BB |
:10C3E000170A1092DB091092DC098CE48093DD09B6 |
:10C3F00086E08093DE099093DF090895EF92FF9223 |
:10C400000F931F938091F8089927880F991F880F21 |
:10C41000991F7C010027F7FC0095102F80912905BA |
:10C4200090912A05A0912B05B0912C05BC01CD015E |
:10C43000A80197010E94C86B3093BD092093BC09E5 |
:10C440008091210590912205A0912305B0912405AA |
:10C45000BC01CD01A80197010E94C86B3093BF09B0 |
:10C460002093BE092091AB093091AC094091AD09F0 |
:10C470005091AE09DA01C901E3E0880F991FAA1FA4 |
:10C48000BB1FEA95D1F7820F931FA41FB51F820F20 |
:10C49000931FA41FB51F20918603309187034091FD |
:10C4A000880350918903BC01CD010E94C86B309371 |
:10C4B000C5092093C409E0913305F09134058091BA |
:10C4C0006D0990916E09BF010E94936BCB019B0196 |
:10C4D000220F331F220F331F280F391F280F391F38 |
:10C4E00037FD1CC135952795359527953093C109A2 |
:10C4F0002093C0098091A7099091A809BF010E94CB |
:10C50000936B9B01220F331F220F331F260F371F00 |
:10C51000260F371F37FDFFC0359527953595279591 |
:10C520003093C3092093C209109234051092330549 |
:10C5300010926E0910926D091092A8091092A70925 |
:10C540008091BB0999278C30910509F4A1C08D30E9 |
:10C5500091050CF069C08A30910509F4A4C10B97CC |
:10C5600009F410C18091DB09882309F4CBC0209124 |
:10C57000E1093091E209C90181509E4F8F5F9340DC |
:10C58000C8F44091E3095091E409CA0181509E4FDB |
:10C590008F5F934078F48091E90885FF0BC030935A |
:10C5A000C0052093BF055093BE054093BD058AEF9B |
:10C5B0008093C2058091E7099091E80921E08936CE |
:10C5C00092070CF056C19C019093F0048093EF0405 |
:10C5D0008091ED049091EE04281B390BC901845E13 |
:10C5E0009D4F68E671E00E94936B845B904090934E |
:10C5F000EC048093EB042091EB093091EC098091DD |
:10C60000FB039091FC038217930740F480917E070F |
:10C61000882321F43093FC032093FB038091E009ED |
:10C62000873609F0ADC12AC18E30910509F476C173 |
:10C630008E3091050CF475C00F9709F093CF80915F |
:10C6400010098093CC09809138098093CD0980919D |
:10C6500092038093CE09809109098093CF0980913C |
:10C660000A098093D00980910B098093D1098091A8 |
:10C6700091038093D20980910D098093D309809111 |
:10C680000E098093D40980910F098093D5096ACF50 |
:10C6900080917E07863018F010927E0785E08093A7 |
:10C6A000CC09809135098093CD0980912F08909114 |
:10C6B00030089093CF098093CE098091CC0490915B |
:10C6C000CD04A091CE04B091CF04BC01CD0125E0F2 |
:10C6D00030E040E050E00E94C86B3093D1092093D5 |
:10C6E000D00980912B098093D20980912C098093E5 |
:10C6F000D30980912D098093D4098091DB09882387 |
:10C7000009F035CF1092C0051092BF051092BE05FA |
:10C710001092BD0535C12D5F3F4FFECE2D5F3F4FBF |
:10C72000E1CE809126098093CC09809127098093DE |
:10C73000CD09809128098093CE09809129098093A1 |
:10C74000CF0980912A098093D00980912E09809386 |
:10C75000D10980912F098093D2098091300980936B |
:10C76000D309809133098093D40980913109809352 |
:10C77000D509809132098093D6098091340980933C |
:10C78000D709F0CEF8948091E308E82FFF27EE0F49 |
:10C79000FF1FE155F74F0190F081E02DE038F105E2 |
:10C7A0000CF0D1C02FEFE138F20714F4E1E8FFEF0D |
:10C7B000E093CC098091E408E82FFF27EE0FFF1FDC |
:10C7C000E155F74F0190F081E02DE038F1050CF4D0 |
:10C7D000CDC0EFE7F0E0E093CD098091E208E82FCB |
:10C7E000FF27EE0FFF1FE155F74F0190F081E02D7D |
:10C7F000E038F1050CF4B2C0EFE7F0E0E093CE09C9 |
:10C800008091E108E82FFF27EE0FFF1FE155F74F5A |
:10C810000190F081E02DE038F1050CF497C0EFE7CE |
:10C82000F0E07894E093CF098091E5048093D009FB |
:10C830008091E3048093D1098091E1048093D2092F |
:10C840008091DF048093D3098091DE048093D40922 |
:10C850008091DD048093D50980913308909134084C |
:10C8600097FD8CC095958795959587958093D6096A |
:10C8700079CE2091EF043091F004AACE8091ED0999 |
:10C880008093140A8091EE098093160A8091EF0933 |
:10C890008093150A8091F0098093170A8091F1091D |
:10C8A0008093180A6DC08091C1048093CC09809157 |
:10C8B000C0048093CD098091BF048093CE098091FC |
:10C8C000BE048093CF098091BD048093D0098091EC |
:10C8D000BC048093D1098091BB048093D2098091DC |
:10C8E000BA048093D3098091AD048093D4098091D8 |
:10C8F000AD04837F8093AD0480912703909128033A |
:10C900008093D509809100018093D609A2E0B0E020 |
:10C910000E94E36B802D8093D70924CE8091DC099F |
:10C920008093CC098091DD098093CD098091DE0947 |
:10C930008093CE098091DF098093CF098091020115 |
:10C940008093D0090FCEEFE7F0E032CF8FEFE138E0 |
:10C95000F8070CF066CFE1E8FFEF63CF6FEFE13847 |
:10C96000F6070CF04BCFE1E8FFEF48CF4FEFE1388F |
:10C97000F4070CF030CFE1E8FFEF2DCF039672CF34 |
:10C980001F910F91FF90EF9008958091B509882332 |
:10C9900009F43BC0459889EB99E09093B7098093DF |
:10C9A000B6098091C105E82FFF27E453FC4F982F6B |
:10C9B0009F5F80818093BB09973008F027C09093D8 |
:10C9C000C1051092B5090E94FE6181E08093B8090B |
:10C9D0000000000000000000000000000000000057 |
:10C9E0000000000000000000000000000000000047 |
:10C9F0000000000000000000000000000000000037 |
:10CA00008091B9098093D8098EBD08951092C1050F |
:10CA1000D8CF2091B509222309F045C00DB407FEF7 |
:10CA200042C084E08093FA03459A3EB58091C305E5 |
:10CA300099278130910509F437C0823091050CF4B3 |
:10CA400051C0029709F439C02091B809203208F08A |
:10CA500030C0459800000000000000000000000009 |
:10CA600000000000000000000000000000000000C6 |
:10CA700000000000000000000000000000000000B6 |
:10CA800000000000E091B609F091B709E20FF11D36 |
:10CA900080818EBD8091D8099081890F8093D809BB |
:10CAA0002F5F2093B8090895353551F12093C305C0 |
:10CAB000CBCF81E08093B509F3CF8091DA09E82FDD |
:10CAC000FF27E650F64F30838F5F8093DA098A3173 |
:10CAD00000F18091C405381711F12093DB09109201 |
:10CAE000C305B2CF892B09F0AFCF2093DA09309379 |
:10CAF000C405313809F0A8CF81E08093C305A4CFE5 |
:10CB00008091C405830F8093C40582E08093C305A0 |
:10CB10009BCF8091C405830F8093C40595CF8AE194 |
:10CB2000EAEFF9E0A0EEB9E001900D928A95E1F705 |
:10CB300081E08093DB091092C30586CF87B18C60BA |
:10CB400087B9429843981092C60580E88093D40331 |
:10CB50001092C5058093D30308958091CB05815031 |
:10CB60008F3F19F08093CB05089584E08093CB0527 |
:10CB70008091AD0485FF16C0409124094093CC05F7 |
:10CB8000609125096093CD0550913709252F3327F2 |
:10CB900024FF13C08091D404882379F425FF17C0A3 |
:10CBA000429A33C08091DE04882334F740912009F3 |
:10CBB0004093CC0560912209E5CF909121099B3FDC |
:10CBC000B8F080916F098D3D98F047FDE9CF42980C |
:10CBD000252F332724FD1DC0909123099B3F08F189 |
:10CBE0008091A209873EE8F067FD19C04398089537 |
:10CBF0009B3F20F080916F098A3008F18091C60533 |
:10CC000081508F3F21F18093C605252F332724FFC4 |
:10CC1000E3CF8091D4048823F9F626FFE7CF439A27 |
:10CC200008959B3F20F08091A2098A3060F08091A6 |
:10CC3000C50581508F3FE1F08093C505089547FDFC |
:10CC4000C6CF429AE2CF67FDD1CF439A0895809133 |
:10CC50006F0981508093C6058091D4038130C9F05B |
:10CC600086958093D403842309F4B1CF429ACDCF23 |
:10CC70008091A20981508093C5058091D3038130B2 |
:10CC800051F086958093D303862309F4AFCF439A5E |
:10CC9000089580E8E6CF80E8F5CF8091C9008F77CE |
:10CCA0008093C9008091C9008F7B8093C9008091D7 |
:10CCB000C9008F7D8093C9005A9A52981092CD0076 |
:10CCC00084E190E08093CC008091C80082608093E2 |
:10CCD000C80080E18093C9008091CA008F7780935B |
:10CCE000CA008091CA008F7B8093CA008091CA00DD |
:10CCF0008F7D8093CA008091CA008F7E8093CA0086 |
:10CD00008091CA00877F8093CA008091C9008B7F81 |
:10CD10008093C9008091CA0084608093CA0080918A |
:10CD2000CA0082608093CA008091C80087FF0CC04F |
:10CD30008091CE008091C800882334F48091CE0089 |
:10CD40008091C8008823A4F38091C90080688093F3 |
:10CD5000C90008951F93CF93DF9380E197E20E946B |
:10CD6000F017EC0110E08091C9008F778093C90023 |
:10CD70008091C9008F7E8093C9005A988FE198E016 |
:10CD80009F938F931F930E9471140F900F900F9099 |
:10CD9000CE010E94F917882309F066C04A9BF8CF9C |
:10CDA0008AE590E00E94F017EC0185E598E09F93FA |
:10CDB0008F931F920E947114529A0F900F900F90B0 |
:10CDC000CE010E94F9178823D9F383E690E05A9A9E |
:10CDD000019797FFFCCF8FE891E05A98019797FF52 |
:10CDE000FCCF89E090E05A9A019797FFFCCF89E049 |
:10CDF00090E05A98019797FFFCCF8FE891E05A9AFC |
:10CE0000019797FFFCCF8FE891E05A98019797FF21 |
:10CE1000FCCF89E090E05A9A019797FFFCCF89E018 |
:10CE200090E05A98019797FFFCCF8FE891E05A9ACB |
:10CE3000019797FFFCCF8FE891E05A98019797FFF1 |
:10CE4000FCCF89E090E05A9A019797FFFCCF89E0E8 |
:10CE500090E05A98019797FFFCCF8FE891E05A9A9B |
:10CE6000019797FFFCCF0AC08BE598E09F938F93C3 |
:10CE70001F930E9471140F900F900F9052985A9820 |
:10CE80000E944D66DF91CF911F9108951F920F92DE |
:10CE90000FB60F921124EF92FF920F931F932F93CF |
:10CEA0003F934F935F936F937F938F939F93AF9332 |
:10CEB000BF93CF93DF93EF93FF932091CE008091A8 |
:10CEC000D503813009F44BC08091CE058823C9F089 |
:10CED00040E050E08091CF058823C9F4452B09F448 |
:10CEE0004AC081E08093CF058091D0058F5F809309 |
:10CEF000D00543E08091D0058031E8F44093CE0521 |
:10CF000004C141E050E08091CF05882339F381309E |
:10CF100009F44AC08230B9F1833009F44AC081E093 |
:10CF20008093D5031092D0051092D20544E48091ED |
:10CF3000D005803118F38091D205882331F4809197 |
:10CF4000D503882311F4809384031092D0051092A6 |
:10CF5000D2051092CF0584E48093CE05D6C01092FE |
:10CF6000D50384E48093CE051092D0051092CF05AE |
:10CF70001092D105CAC044E48093D0058093CF05B8 |
:10CF80008093D105D4CF452B51F643E02093D105B2 |
:10CF90009091D005923009F492C083E08093CF0540 |
:10CFA0009F5F9093D005C3CF452B09F0B8CF82E0A7 |
:10CFB00099CF452B09F0B3CF482F82E08093CF055E |
:10CFC0008091D0058F5F8093D0059091D105892FF6 |
:10CFD00086958695E82FFF27EF70F0703196892FA0 |
:10CFE0009927982F88273327822B932B9370805073 |
:10CFF000924063E070E00E94936BEB30F10508F023 |
:10D0000057C07F01EE0EFF1EF701E155F74F8081FB |
:10D0100091819B01281B390BC90137FD6EC0069712 |
:10D0200054F48091DE04883C08F05BC08091DE04FB |
:10D03000865F8093DE04F701E155F74F808191818F |
:10D040009C01220F331F280F391F260F371F37FD72 |
:10D0500051C0E901D595C795D595C795CB010196E6 |
:10D060008C179D07BCF521978091DE04843B60F10D |
:10D0700087010B53174FF701E155F74F80819181DD |
:10D08000FE01E81BF90BCF0163E070E00E94936B97 |
:10D09000CB01880F991F860F971FF801918380831A |
:10D0A0002FEA38E0E20EF31EF701D183C0833FCFB1 |
:10D0B000729708F43CCF81E08093D50338CF27FDE9 |
:10D0C00020C01092D20569CFF701EB53F74F1182C0 |
:10D0D0001082E6CF61507040C617D7072CF6219614 |
:10D0E000C3CF88EC8093DE0480916F008F7D8093A6 |
:10D0F0006F00A1CF2D5F3F4FACCF909581959F4F93 |
:10D100008ECF81E08093D20548CFFF91EF91DF91E0 |
:10D11000CF91BF91AF919F918F917F916F915F91CF |
:10D120004F913F912F911F910F91FF90EF900F9092 |
:10D130000FBE0F901F901895CF93FC0197FD21C053 |
:10D14000C1E028E631E0CF01B9010E94936BFC01F8 |
:10D150008B35910554F08B5590408A35910538F404 |
:10D1600084EB90E08E1B9F0BFC0141E013C0CF01CC |
:10D17000855B90408A35910548F4E45BF0404FEFC1 |
:10D1800009C0CFEFF095E195FF4FDBCF2E1B3F0B92 |
:10D19000F9014FEFEE0FFF1FE054F64F2591349148 |
:10D1A0008C2F992787FD9095829FB001839F700DEA |
:10D1B000929F700D1124842F992787FD9095689F69 |
:10D1C000A001699F500D789F500D1124CA01CF9185 |
:10D1D00008952AE530E0281B390BC9010E949C689C |
:10D1E00008951F93CF93DF93EB016115710519F437 |
:10D1F000009709F494C097FD3EC011E0209729F4F0 |
:10D200008AE51802B00111248AC0AA2797FDA095CB |
:10D21000BA2F26E0880F991FAA1FBB1F2A95D1F7A6 |
:10D220009E01442737FD4095542FBC01CD010E943B |
:10D23000C86BF90137FD2CC081E0EA35F807ACF086 |
:10D240008CE1E73AF807CCF02AE530E01C161D0621 |
:10D250001CF5812F992787FD9095829FB001839FB0 |
:10D26000700D929F700D11245AC0EA59F74F8491A6 |
:10D27000282F3327EBCF1FEFC1CF89E0ED38F80718 |
:10D280008CF485E0EA3BF80784F028E530E0DECF57 |
:10D29000F095E195FF4FD0CFD7FD0EC0B901645B8B |
:10D2A00070403DC029E530E0D1CF84E0E731F80798 |
:10D2B00054F027E530E0CACF111684F764EB70E034 |
:10D2C000621B730B2CC083E0EE32F8071CF026E5DE |
:10D2D00030E0BCCF82E0E939F8071CF025E530E00A |
:10D2E000B5CF82E0E233F8071CF024E530E0AECFA2 |
:10D2F00081E0E73EF8071CF023E530E0A7CF81E0AE |
:10D30000ED3AF8071CF022E530E0A0CFEF57F140EE |
:10D310001CF021E530E09ACF20E530E097CFCB013B |
:10D32000DF91CF911F910895EF92FF920F931F937A |
:10D33000CF93DF937B018C0120E030E040E050E0B0 |
:10D34000FA01E9016FE00BC0C21BD30BE40BF50B34 |
:10D350002F5F3F4F4F4F5F4F615067FD31C0220F2E |
:10D36000331F441F551FCC0FDD1FEE1FFF1FCC0FB7 |
:10D37000DD1FEE1FFF1FD801C7017EE1B695A795FF |
:10D38000979587957A95D1F7C80FD91FEA1FFB1F8C |
:10D39000EE0CFF1C001F111FEE0CFF1C001F111FC5 |
:10D3A0002F5F3F4F4F4F5F4FC217D307E407F5077B |
:10D3B00058F62150304040405040615067FFCFCF79 |
:10D3C0005695479537952795CA01B901DF91CF91B9 |
:10D3D0001F910F91FF90EF9008950024222733278B |
:10D3E000442751E0BB27EE27FF27A0E1660F771FF8 |
:10D3F000881F991F001C221F331F441F660F771FB1 |
:10D40000881F991F001C221F331F441F2AF4050E7A |
:10D410002B1F3E1F4F1F04C0051A2B0B3E0B4F0B3B |
:10D42000550FBB1FEE1F587F556047FD5250AA9500 |
:10D43000E9F6E695B7955795E695B7955795852FF3 |
:10D440009B2F08952227332741E0552768E0880F56 |
:10D45000991F221F331F880F991F221F331F1AF491 |
:10D46000240F351F02C0241B350B440F551F487F66 |
:10D47000456037FD42506A9551F756954795569548 |
:10D480004795842F0895AA2797FF04C0809590950B |
:10D490008A1F9A1F77FF04C0609570956A1F7A1FD4 |
:10D4A000669F9001779FA001679F300D411D5A1F15 |
:10D4B000300D411D5A1F889FF001999F2E0F3F1F6D |
:10D4C000401D511D899F300D411D5A1F300D411DBA |
:10D4D0005A1FCA01B901112480CFFC0141505040AC |
:10D4E00030F001900616D1F73197CF0108958827C3 |
:10D4F000992708955058192EA6D001D08CC0BA177C |
:10D500006207730784079507B1F188F40EF410944D |
:10D510000B2EBA2FA02D062E622F202D072E732F33 |
:10D52000302D082E842F402D092E952F502DFF27AA |
:10D530005523B9F0591B49F0573E98F04695379559 |
:10D540002795A795F0405395C9F776F0BA0F621F5B |
:10D55000731F841F30F4879577956795B795F040D2 |
:10D56000939517FA0F2E0895BF1BBB27BA0B620BBA |
:10D57000730B840BF6CFDEF692C097FB70D09F370B |
:10D5800038F0FEE9F91B982F872F762F6B2F05C0F7 |
:10D5900083C09695879577956795F150D0F73EF4BF |
:10D5A00090958095709561957F4F8F4F9F4F08950F |
:10D5B000E89403C097FB0EF4F3DFB62F672F782FA4 |
:10D5C000892F9EE9002427C00ED05EF004C00BD046 |
:10D5D00026F001C008D019F020F48FEF089580E004 |
:10D5E000089581E0089597FB092E052600F86894B8 |
:10D5F0002DD0E89407FC07C06217730784079507CE |
:10D6000021F008F400940794989408959A95BB0F1C |
:10D61000661F771F881F11249923A1F08823B2F772 |
:10D620009F3F59F0BB0F48F421F4002011F460FF34 |
:10D6300004C06F5F7F4F8F4F9F4F881F97958795CF |
:10D6400097F9089529C0052E092607FA440F551F9A |
:10D650005F3F79F0AA27A51708F051E04795880F9A |
:10D66000991F9F3F31F0BB27B91708F091E08795CC |
:10D6700008959F919F91112414C097FB880F991FC3 |
:10D680009F3F31F0BB27B91708F091E087950895C7 |
:10D690009F919F91112405C0662777278827992796 |
:10D6A00008959FEF80EC0895629FD001739FF00171 |
:10D6B000829FE00DF11D649FE00DF11D929FF00D22 |
:10D6C000839FF00D749FF00D659FF00D9927729F59 |
:10D6D000B00DE11DF91F639FB00DE11DF91FBD01E4 |
:10D6E000CF0111240895991B79E004C0991F961762 |
:10D6F00008F0961B881F7A95C9F780950895AA1B94 |
:10D70000BB1B51E107C0AA1FBB1FA617B70710F02C |
:10D71000A61BB70B881F991F5A95A9F7809590955E |
:10D72000BC01CD01089597FB092E07260AD077FD8D |
:10D7300004D0E5DF06D000201AF4709561957F4F84 |
:10D740000895F6F7909581959F4F0895A1E21A2EBE |
:10D75000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F95 |
:10D76000A217B307E407F50720F0A21BB30BE40BE5 |
:10D77000F50B661F771F881F991F1A9469F760952C |
:10D780007095809590959B01AC01BD01CF010895E6 |
:10D7900097FB092E05260ED057FD04D0D7DF0AD0FF |
:10D7A000001C38F450954095309521953F4F4F4FD0 |
:10D7B0005F4F0895F6F790958095709561957F4F2E |
:10D7C0008F4F9F4F0895F999FECFB2BDA1BDF89A32 |
:10D7D000119600B40895F7DF01921A94E1F70895C5 |
:10D7E000F999FECFB2BDA1BD00BC11960FB6F89459 |
:10D7F000FA9AF99A0FBE08950190F2DF1A94E1F7B0 |
:02D80000089589 |
:10D802005E010A0151756164726F0000416E676CBE |
:10D81200654E69636B20202020202020416E676CBA |
:10D8220065526F6C6C202020202020204163634EC3 |
:10D8320069636B2020202020202020204163635236 |
:10D842006F6C6C2020202020202020204779726FCE |
:10D8520047696572202020202020202048696768BF |
:10D86200742056616C756520202020204163635A24 |
:10D8720020202020202020202020202047617320EB |
:10D88200202020202020202020202020436F6D7087 |
:10D892006173732056616C7565202020566F6C741D |
:10D8A200616765202020202020202020456D7066A1 |
:10D8B200616E672020202020202020204779726F6F |
:10D8C200204B6F6D70617373202020204D6F746F39 |
:10D8D200722046726F6E7420202020204D6F746F6C |
:10D8E2007220526561722020202020204D6F746FBB |
:10D8F20072204C6566742020202020204D6F746FAA |
:10D902007220526967687420202020202020202065 |
:10D912002020202020202020202020202020202005 |
:10D9220020202020202020202020202056617269E3 |
:10D932006F4D657465722020202020204D4B334DA1 |
:10D9420061672043616C537461746520536572761C |
:10D952006F2020202020202020202020486F6F765A |
:10D962006572676173202020202020202020202043 |
:10D9720020202020202020202020202020202020A5 |
:10D982002020202020202020202020202020202095 |
:10D992002020202020202020202020202020202085 |
:10D9A2002020202020202020202020202020202075 |
:10D9B2002020202020202020202020202020202065 |
:10D9C2002020202020202020202020204932432DEA |
:10D9D2004572726F722020202020202020202020DB |
:10D9E2002020202020202020202020204750535F6C |
:10D9F2004E69636B20202020202020204750535F57 |
:10DA0200526F6C6C2020202020202020C80001644E |
:10DA1200FF01FFFF01FC01FC0101737373FF0300AF |
:10DA22007D0000C409C40964000E48616C6C6F205B |
:10DA320057656C7400000000000000000000000048 |
:10DA420000000000000000000000000000000000D4 |
:10DA520000000000000000000000000000000000C4 |
:10DA620000000000000000000000000000000000B4 |
:10DA7200000000000000000000000102030405068F |
:10DA82000708090A01040B050000ECFF6440415A33 |
:10DA92004664640A02969696960840403A10FB3015 |
:10DAA200380190D0030090D00300F4016400537059 |
:10DAB2006F727400004E6F726D616C000042656798 |
:10DAC200696E6E657200007800FF03640A0B0D0B2D |
:06DAD2000C0E0F01010122 |
:00000001FF |
/tags/V0.76g/Hex-Files/Flight-Ctrl_MEGA644_V0_76g_S3D.hex |
---|
0,0 → 1,3454 |
:100000000C943B050C9456050C9456050C9456051F |
:100010000C9456050C9456050C9456050C945605F4 |
:100020000C9456050C9472180C9456050C945605B5 |
:100030000C94562C0C9456050C9456050C945605AD |
:100040000C9456050C9456050C9406170C94560502 |
:100050000C940A0C0C9456050C94D10B0C94560578 |
:100060000C94861D0C9456050C94112B0C9456057B |
:100070000C94BD650C9456050C945605341E271E31 |
:100080001B1E011EE71DC31DD51D38216C206920D4 |
:10009000C31D56203C201C20FC1FAA1F581F401EB9 |
:1000A000862B792BC62BAA2B9E2B372B482B482B24 |
:1000B0004F2B6B2B662B4B2B532B4F2B622B6F2B0A |
:1000C0004B2B532B4F2B5E2B742B4B2BD82B0A0D0A |
:1000D000426174743A0020332043656C6C732020B5 |
:1000E0000020342043656C6C73202000204C6F7717 |
:1000F000207761726E696E67206C6576656C3A2058 |
:1001000025642E2564000A0D3D3D3D3D3D3D3D3DB0 |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D3D3D3D3D3D3D3D3D3D000A0D466C67 |
:1001300069676874436F6E74726F6C0A0D48617200 |
:1001400064776172653A25642E25640A0D536F66E3 |
:1001500074776172653A5625642E25642563200004 |
:100160000A0D74686520757365206F662074686970 |
:100170007320736F667477617265206973206F6E88 |
:100180006C79207065726D6974746564200A0D6FF6 |
:100190006E206F726967696E616C204D696B726F5A |
:1001A0004B6F707465722D4861726477617265007F |
:1001B0000A0D7777772E4D696B726F4B6F70746590 |
:1001C000722E646520286329204869537973746509 |
:1001D0006D7320476D6248000A0D3D3D3D3D3D3D3C |
:1001E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3F |
:1001F0003D3D3D3D3D3D3D3D3D3D3D3D3D000A0DCF |
:1002000047656E65726174696E67206465666175C5 |
:100210006C74204D69786572205461626C65000AC7 |
:100220000D4D697865722D436F6E6669673A2027B8 |
:1002300025732720282575204D6F746F7273290050 |
:100240000A0D466F756E6420424C2D4374726C3AF1 |
:100250002000256420000A0D0A0D2121204D49535C |
:1002600053494E4720424C2D4354524C3A2025646A |
:10027000202121000A0D3D3D3D3D3D3D3D3D3D3DA3 |
:100280003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D9E |
:100290003D3D3D3D3D3D3D3D3D000A0D496E69748E |
:1002A0002E20454550524F4D003A2047656E6572ED |
:1002B0006174696E672044656661756C742D506168 |
:1002C00072616D65746572207573696E67206F6CFD |
:1002D0006420537469636B2053657474696E67732B |
:1002E000000A0D466C696768742D74696D65202578 |
:1002F00075206D696E2020546F74616C3A257520ED |
:100300006D696E000A0D414343206E6F7420636176 |
:100310006C696272617465642021000A0D5573690D |
:100320006E6720706172616D6574657273657420AB |
:100330002564000A0D43616C6962726174696E67BD |
:100340002070726573737572652073656E736F725A |
:100350002E2E004F4B0A0D000A0D436F6E74726F04 |
:100360006C3A200048656164696E67486F6C640090 |
:100370004E6F726D616C20284143432D4D6F646553 |
:1003800029000A0D3D3D3D3D3D3D3D3D3D3D3D3D51 |
:100390003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D8D |
:1003A0003D3D3D3D3D3D3D0A0D002E000A0D2044E2 |
:1003B0004143206F7220493243204552524F52210F |
:1003C00020436865636B204932432C2033567265A5 |
:1003D000662C2044414320616E6420424C2D4374BE |
:1003E000726C005B25695D005B25695D002B204D0B |
:1003F000696B726F4B6F70746572202B0048573AAF |
:100400005625642E25642053573A25642E256425ED |
:10041000630053657474696E673A25642025730020 |
:10042000493243204552524F52212121004D6973D8 |
:1004300073696E6720424C2D4374726C3A256421B7 |
:10044000210028632920486F6C676572204275730C |
:100450007300486F6568653A2020202020253569A3 |
:1004600000536F6C6C486F6568653A2025356900EC |
:100470004C756674647275636B3A20253569004F5C |
:1004800066662020202020203A20253569004B6513 |
:10049000696E65200048F668656E726567656C7503 |
:1004A0006E6700616B742E204C616765004E696356 |
:1004B0006B3A20202020202025356900526F6C6C7B |
:1004C0003A202020202020253569004B6F6D706177 |
:1004D00073733A202020253569004B313A25346961 |
:1004E00020204B323A25346920004B333A253469B9 |
:1004F00020204B343A25346920004B353A253469A5 |
:1005000020204B363A25346920004B373A25346990 |
:1005100020204B383A25346920004E693A25346949 |
:100520002020526F3A253469200047733A253469F8 |
:10053000202047693A253469200050313A25346932 |
:10054000202050323A253469200050333A2534694E |
:10055000202050343A25346920004779726F202DCD |
:100560002053656E736F72004E69636B202534698A |
:1005700020282533692E25692900526F6C6C2025AF |
:10058000346920282533692E256929004769657259 |
:1005900020253469202825336929004E69636B20A2 |
:1005A00025346920282533692E25782900526F6C5F |
:1005B0006C2025346920282533692E2578290047A9 |
:1005C00069657220253469202825336929004E6920 |
:1005D000636B202534692028253369292825336950 |
:1005E0002900526F6C6C2025346920282533692935 |
:1005F0002825336929004769657220253469202838 |
:1006000025336929282533692900414343202D20BA |
:1006100053656E736F72004E69636B2025346920D9 |
:10062000282533692900526F6C6C202534692028F5 |
:100630002533692900486F636820253469202825FF |
:1006400033692900566F6C746167653A2020202554 |
:1006500035690052432D4C6576656C3A202025356E |
:10066000690052432D4368616E6E656C733A2534A0 |
:1006700069004B6F6D706173732020202020202053 |
:10068000005269636874756E673A202025356900E9 |
:100690004D657373776572743A2020253569005370 |
:1006A000746172743A202020202025356900506F33 |
:1006B0007469313A202025336900506F7469323AE9 |
:1006C000202025336900506F7469333A2020253388 |
:1006D0006900506F7469343A2020253369005365EE |
:1006E00072766F202000536574706F696E742020DD |
:1006F000253369005374656C6C756E673A20253339 |
:10070000690052616E67653A2533692D25336900AA |
:1007100045787465726E436F6E74726F6C20200042 |
:100720004E693A2534692020526F3A2534692000F9 |
:1007300047733A253469202047693A2534692000F7 |
:1007400048693A253469202043663A2534692000F7 |
:10075000424C2D4374726C204572726F727320008C |
:100760002025336420202533642020253364202075 |
:100770002533642000202533642020253364202085 |
:100780002533642020253364200020253364202075 |
:100790002533642020253364202025336420004243 |
:1007A0004C2D4374726C20666F756E64200020259A |
:1007B000632020202563202020256320202025631E |
:1007C0002000202563202020256320202025632071 |
:1007D0002020256320002025632020202D2020209C |
:1007E0002D2020202D0031300031310031320046E3 |
:1007F0006C696768742D54696D6520200020202085 |
:100800002020202535756D696E00546F74616C3A37 |
:100810002535756D696E0028726573657429000A47 |
:100820000D506C6561736520636F6E6E6563742037 |
:100830005370656B7472756D20726563656976655A |
:100840007220666F722062696E64696E67204E4F17 |
:10085000572E2E2E006F6B2E0A0D0054696D656F9A |
:1008600075742E0A0D000001020304040506070832 |
:10087000090A0B0B0C0D0E0F101111121314151584 |
:1008800016171818191A1B1B1C1D1D1E1F1F2021AF |
:100890002122232324242525262727282829292AFD |
:1008A0002A2B2B2C2C2D2D2D2E2E2F2F303030316E |
:1008B00031323232333333343434353535363636FB |
:1008C00037373737383838393939393A3A3A3A3B9D |
:1008D0003B3B3B3C3C3C3C3C3D3D3D3D3E3E3E3E4F |
:1008E0003E3F3F3F3F3F3F4040404040404141410D |
:1008F00041414142424242424242434343434343D5 |
:1009000043444444444444444445454545454545A1 |
:100910004545464646464646464646474747474774 |
:10092000474747474747484848484848484848484D |
:100930004849494949494949494949494949494A27 |
:100940004A4A4A4A4A4A4A4A4A4A4A4A4A4B4B4B04 |
:100950004B4B4B4B4B4B4B4B4B4B4B4B4B4B4C4CE5 |
:100960004C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4CC7 |
:100970004C4D4D4D4D4D4D4D4D4D4D4D4D4D4D4DA8 |
:100980004D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E8E |
:100990004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E77 |
:1009A0004E4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F58 |
:1009B0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F47 |
:1009C00000008F001E01AD013B02CA025803E6037E |
:1009D000740402058F051B06A7063307BE074808E7 |
:1009E000D2085B09E3096B0AF20A780BFD0B810C54 |
:1009F000040D860D070E870E060F840F00107B1066 |
:100A0000F5106E11E5115B12CF124213B3132314CC |
:100A10009214FE146A15D3153B16A1160517671715 |
:100A2000C81727188318DE1837198E19E319361AD4 |
:100A3000871AD61A231B6E1BB61BFD1B411C831C79 |
:100A4000C31C001D3C1D751DAB1DE01D121E421E6A |
:100A50006F1E9A1EC31EE91E0D1F2E1F4D1F691FFC |
:100A6000841F9B1FB01FC31FD31FE11FEC1FF51F67 |
:100A7000FB1FFF1F002011241FBECFEFD0E1DEBF00 |
:100A8000CDBF13E0A0E0B1E0E0EFF4ED02C00590CF |
:100A90000D92A63DB107D9F719E0A6EDB3E001C06C |
:100AA0001D92AD3BB107E1F70C9487060C94000052 |
:100AB000282FFB018150853008F023E0842F9927EF |
:100AC000332721503040829FD001839FB00D929FE9 |
:100AD000B00D1124AC59BF4F019724F00E945A6AFF |
:100AE0000192FACF0E9415640895863038F085E0AF |
:100AF000A2E0B0E0082E0E94676A08958823C1F73B |
:100B00000895582F863048F155E0842F9927252FD6 |
:100B1000332721503040829FD001839FB00D929F98 |
:100B2000B00D1124AC59BF4FFB01019724F0019087 |
:100B30000E94676AFACFA2E6B0E0042E0E94676ABC |
:100B4000A0E5B0E088E0FB01182E0E94736A852FB3 |
:100B50000E9475050E94156408958823B1F60895D2 |
:100B6000CF93A2E0B0E00E945A6A802DC82F815036 |
:100B7000853020F0C3E08C2F0E9475058C2F9927BB |
:100B8000CF91089580918508E82FFF27EE0FFF1F72 |
:100B9000ED5AF74F808191818D5E9F4F14F0109236 |
:100BA0000301808191818A5B9F4F24F4809103012E |
:100BB000882319F02091220717C081E08093030158 |
:100BC00020912207280F20932207253038F088EE45 |
:100BD00093E09093FC038093FB0306C066E970E00A |
:100BE000822F0E94D22FE6CF822F99279093F00771 |
:100BF0008093EF0708951F93CF93DF93182F8823D7 |
:100C000051F48091A3088233A0F080930001112356 |
:100C100009F479C038C08EEC90E09F938F931F92B7 |
:100C20000E9471140F900F900F908091A30882334F |
:100C300060F784EF91E00E94F017EC01112309F0B6 |
:100C400042C08091270390912803823891050CF0CF |
:100C500046C08091A30823E0829FC00111248093A5 |
:100C600000011123A1F268EC70E0822F0E94D22FC4 |
:100C700086ED90E09F938F931F920E9471140F90C6 |
:100C80000F900F90C4CF809100016AE00E94EA6942 |
:100C9000892F99279F938F93809100010E94EA6981 |
:100CA00099279F938F938CEE90E09F938F931F9241 |
:100CB0000E9471148DB79EB707960FB6F8949EBF29 |
:100CC0000FBE8DBF20C0CE010E94F917882309F006 |
:100CD000B8CFCE010E94F9178823A9F3B2CF809133 |
:100CE000A3089927880F991F880F991F80930001E7 |
:100CF000112309F48CCF68EC70E084E00E94D22FBD |
:100D000081EE90E0B7CFDF91CF911F910895CFEFA3 |
:100D1000D0E1DEBFCDBFEE24FF2414B815B8C7EE76 |
:100D2000D3E0E297D7FFFDCF189B6FC1199B78C125 |
:100D30002DE02093020181E887B93E9A8FEF88B9B0 |
:100D40008BE184B981E085B98EE38AB987E48BB9F8 |
:100D5000469A84B7877F84BF8091600088618093C2 |
:100D600060001092600080ED97E09093FC03809308 |
:100D7000FB0310927C0410927B041092580810928E |
:100D8000570810927E0410927D04109280041092F5 |
:100D90007F04243108F43FC188E894E0A0E0B0E08B |
:100DA0008093860390938703A0938803B09389036D |
:100DB0002A3009F465C1243109F462C1289A0E94DD |
:100DC0005B180E942C180E9446110E94412C0E9420 |
:100DD000541C0E94D02A0E944A60789486E091E0D8 |
:100DE0009F938F931F920E9471140F900F900F90FA |
:100DF00087E690E09F938F938CE490E09F938F938E |
:100E00001F921F92809102016AE00E94EA69892F75 |
:100E100099279F938F93809102010E94EA699927F5 |
:100E20009F938F938CE291E09F938F931F920E94E8 |
:100E300071148DB79EB70D960FB6F8949EBF0FBE76 |
:100E40008DBF80E691E09F938F931F920E94711453 |
:100E50000F900F900F9080EB91E09F938F931F92D4 |
:100E60000E9471140F900F900F9088ED91E09F9366 |
:100E70008F931F920E9471148091C8000F900F9061 |
:100E80000F90803209F4F4C0809102018C3008F098 |
:100E9000C0C0299A49E065E878E083E00E945805DF |
:100EA000C8EED3E0DE010E945A6A802D813009F439 |
:100EB000B9C08EEF91E09F938F931F920E9471149F |
:100EC0000F900F900F9027E735E0F9018FE015861E |
:100ED00016861786108A8150349687FFF8CF80E4F3 |
:100EE00080938405809385051092860580938705FD |
:100EF0008093880590EC9093890510928A058093E1 |
:100F00008B0580938C0510928D0590938E059093A0 |
:100F10008F05809390051092910580939205909390 |
:100F2000930581E08093770548E755E08BE0E4E0A6 |
:100F3000F1E0DA0101900D928A95E1F78DE4DE018E |
:100F4000F901182E0E94736A8091850399279F9357 |
:100F50008F935F934F938FE192E09F938F931F92B4 |
:100F60000E9471148DB79EB707960FB6F8949EBF76 |
:100F70000FBE8DBF80E492E09F938F931F920E94DB |
:100F80007114109247041092FF030E94BF3D0F900E |
:100F90000F900F908091FF038823E1F31092470494 |
:100FA00080ED97E00E94F017EC01CC24DD2472E57F |
:100FB000A72E72E0B72E1092FF030E94BF3D8091D2 |
:100FC000FF038823E1F3F601EE0FFF1FEE0FFF1F73 |
:100FD000E958FA4F858518160CF054C086010A5B53 |
:100FE000174FCE010E94F917882309F04EC0D8018F |
:100FF0008C91882309F049C08093FF030E94BF3D74 |
:101000008091FF038823E1F3ECCF199B2FC024E1EB |
:1010100090CE29983FCF8BE095E0A0E0B0E0C0CE25 |
:101020002BE087CEA1E0B0E00E945A6A802D8F3F6E |
:1010300009F43FCF1092850327E735E08DE4DE0108 |
:10104000F901182E0E94626A90918503F9013D967C |
:101050002FE08081349618160CF49F5F215027FFF3 |
:10106000F8CF9093850348E755E06ECF2AE061CE34 |
:101070008091CA00863009F007CF0E94C46404CF73 |
:1010800028989DCE86010A5B174FF801808188233E |
:1010900009F03FC086010F5F1F4F68010C3011053A |
:1010A00008F489CFCC24DD2456E5A52E52E0B52ED8 |
:1010B000C1E025C0F601EE0FFF1FEE0FFF1FE9583C |
:1010C000FA4F858518160CF586010F5F1F4F1F9389 |
:1010D0000F93BF92AF929F930E947114C093F90334 |
:1010E0000F900F900F900F900F908AE298E0C80E2B |
:1010F000D91ED6011C9268010C301105D0F4F601FE |
:10110000EA5BF74F90819923A9F286010F5F1F4F89 |
:10111000ECCF86010F5F1F4F1F930F93BF92AF92CB |
:101120001F920E9471140F900F900F900F900F90CC |
:10113000B4CF84E792E09F938F931F920E94711423 |
:101140000E94BF3D0F900F900F90A1E0B0E00E9471 |
:101150005A6A802D803509F029C20EE010E0D801CE |
:101160000E945A6A802D9927582F442748010894D5 |
:10117000811C911CD4010E945A6A802D480F511D78 |
:10118000ECEFAE2EEFEFBE2EA00EB11ED5010E94E9 |
:101190005A6A802D9927382F22276DEFC62E6FEFC0 |
:1011A000D62EC00ED11ED6010E945A6A802D280F5D |
:1011B000311DEFEF2F3F3E0709F4B9C2FFEF4F3F5C |
:1011C0005F0709F4B4C23093D7032093D60350933A |
:1011D000D9034093D8038091D6039091D7039F936E |
:1011E0008F938091D8039091D9039F938F9381EE31 |
:1011F00092E09F938F931F920E9471148DB79EB7B8 |
:1012000007960FB6F8949EBF0FBE8DBFA4E0B0E066 |
:101210000E945A6A802D853008F0B8C20E94B0053D |
:1012200045E665E878E00E9458050E94B0059927D8 |
:101230009F938F938BE193E09F938F931F920E94D4 |
:10124000711480918D080F900F900F900F900F9058 |
:1012500080FD7BC20E94193B809102018A3009F413 |
:1012600072C2843109F46FC2289A80ED97E090939E |
:10127000FC038093FB0385E58093240788E593E0D6 |
:101280009F938F931F920E94711480918D080F90ED |
:101290000F900F9082FF54C284E693E09F938F9348 |
:1012A0001F920E9471140F900F900F900E941B22AA |
:1012B00088E893E19093AD038093AC0381E0809341 |
:1012C00023070E94FB0582E893E09F938F931F9270 |
:1012D0000E94711480ED97E00E94F017EC010F90CE |
:1012E0000F900F908091FF03882309F4A1C0809193 |
:1012F0001903882309F49CC01092FF0380912207F0 |
:10130000882309F4D0C00E94C2050E94BF3D2091ED |
:1013100002012A3009F4D0C0243109F4CDC0289A42 |
:1013200080918204882309F4CDC080918204815089 |
:101330008093820480916605882369F081508093B0 |
:101340006605882341F4109264051092630510929B |
:101350006205109261058091AC039091AD030197F5 |
:101360009093AD038093AC038091AC039091AD0357 |
:10137000892B29F080914604882309F4D7C08091F5 |
:10138000AC039091AD03892B09F4D6C08091120370 |
:10139000909113038F5F9F4F09F4E7C08091FF0383 |
:1013A000882321F080917804882311F40E9482110F |
:1013B0000E946B0ECE010E94F9178823B9F1649642 |
:1013C00080910F03882309F489C0815080930F0313 |
:1013D00080910001282F33278091270390912803C3 |
:1013E000821793070CF074C080915104806280933F |
:1013F000510480911203909113038F5F9F4F09F462 |
:10140000C8C00E943C6384E08093FA038091780412 |
:10141000882321F45AEAE52E55E0F52E0894E11CC4 |
:10142000F11CF2E7EF16FBE0FF0651F00E94246486 |
:101430008091FA03882309F055CF0E94806352CF30 |
:10144000EE24FF242091D8033091D9032F5F3F4F22 |
:101450003093D9032093D8038091D6039091D7037A |
:1014600001969093D7038093D603832F9927D801B1 |
:10147000082E0E94676A8091D803D401082E0E942A |
:10148000676A8091D703D501082E0E94676A809110 |
:10149000D603D601082E0E94676A84E190E00E947C |
:1014A000F017EC01C3CF0E94D8410E94BF3D2091AC |
:1014B00002012A3009F030CF2898809182048823D5 |
:1014C00009F033CF80916F00806280936F0032CF3C |
:1014D000809151048F7D8093510493CF80932E0788 |
:1014E00010925D0410925C0410925B0410925A04F6 |
:1014F0001092590410925804809112039091130392 |
:101500008F5F9F4F09F064CF80918204882309F098 |
:101510005FCF88E99AE39093FC038093FB0380E01C |
:101520009CE0909313038093120352CF2A3079F1F9 |
:10153000243169F1289A32CF0E94E62A85E090E0B2 |
:101540009093AD038093AC038091010890910208C1 |
:101550000196909302088093010880911203909164 |
:1015600013038F5F9F4F09F019CF80917804882370 |
:1015700009F414CF80E197E29093FC038093FB037E |
:1015800080E890E0909313038093120307CF28988C |
:1015900005CF80E797E19093FC038093FB0380E005 |
:1015A00093E090931303809312032BCF0E94592D45 |
:1015B0008AE992E09F938F931F920E94711431E009 |
:1015C000932E0F900F900F90C0E5D0E08E010F5F2B |
:1015D0001F4F22E0C22ED12CCC0EDD1E93E0A92E8F |
:1015E000B12CAC0EBD1E84E0682E712C6C0E7D1EDD |
:1015F000B5E04B2E512C4C0E5D1EA6E02A2E312C50 |
:101600002C0E3D1EE2E09E1609F48BC0F3E09F16FF |
:1016100009F48AC023E0291508F483C080910201EF |
:10162000843168F085E08093A0081092BE088BE1B9 |
:1016300080939C088EE48093BB088093BC08DE01F5 |
:101640000E945A6A802D8C3008F068C0D8010E9430 |
:101650005A6A802D8C3008F061C0D6010E945A6A07 |
:10166000802D8C3008F05AC0D5010E945A6A802D16 |
:101670008C3008F053C0DE010E945A6A802D80939E |
:101680008508D8010E945A6A802D80938608D60169 |
:101690000E945A6A802D80938708D5010E945A6A59 |
:1016A000802D80938808D3010E945A6A802D8093F0 |
:1016B0008908D2010E945A6A802D80938A08D1013C |
:1016C0000E945A6A802D80938B08A7E5B0E00E94A3 |
:1016D0005A6A802D80938C0881E0981651F4A9EA0B |
:1016E000B2E0BF93AF931F920E9471140F900F90BE |
:1016F0000F9045E665E878E0892D0E948105939476 |
:10170000B5E0B91508F07ECF83E00E94750580E54D |
:10171000A1E0B0E0082E0E94676A1FCD0E94402D14 |
:10172000E8CF0E94262E7ACF0E94F12E77CF10921A |
:10173000D9031092D8031092D7031092D6034BCD41 |
:1017400080E793E0ABCD289890CD83E393E09F931F |
:101750008F931F920E94711488EE93E00E94F017FD |
:10176000EC010E945A1C0F900F900F90CE010E9426 |
:10177000F9178823D9F383E593E09F938F931F9202 |
:101780000E9471140F900F900F9064CD84E093E04D |
:101790009F938F931F920E9471140F900F900F9040 |
:1017A0003DCD1F920F920FB60F9211248F939F93EE |
:1017B000EF93FF93809111038823A9F48091ED03A7 |
:1017C0009091EE030196FC01EC52FA4FE081ED306E |
:1017D00079F08639910561F09093EE038093ED03E3 |
:1017E000E093C6000EC01092EE031092ED0309C004 |
:1017F0001092EE031092ED0381E080931103E093C9 |
:10180000C600FF91EF919F918F910F900FBE0F90A7 |
:101810001F9018951F920F920FB60F9211242F93BD |
:101820003F934F935F938F939F93AF93BF93EF93A8 |
:10183000FF9390E08091C6008093E5035091F303FD |
:10184000563910F09093F4038091E5038D3091F0B8 |
:101850002091F403822F99278130910509F46CC0FF |
:10186000823091050CF48EC0029709F47FC010926B |
:10187000F403A8C02091F403223061F79093F4039D |
:10188000852F99278F5C984FFC01329740812091DA |
:10189000EF033091F003241B3109DC0111978C9187 |
:1018A000281B3109C9019F709093F0038093EF03C7 |
:1018B0000024880F991F001C880F991F001C892F76 |
:1018C000902D982F935C9093F1032F733070235CCD |
:1018D0002093F2038081891709F46EC090E0809113 |
:1018E000E2038F5F8093E2033091E403332309F036 |
:1018F00069C0992309F466C081E08093E403580F1E |
:101900005093E1035150E52FFF27EF5CF84F8DE036 |
:10191000808380913307823509F054C088E190E0DC |
:101920002CE00FB6F894A895809360000FBE20932A |
:1019300060003093F90346C02F5F2093F403E52F36 |
:10194000FF27EF5CF84F8091E50380835F5F509342 |
:10195000F3032091E5038091EF039091F003820F50 |
:10196000911D9093F0038093EF032CC0E52FFF2788 |
:10197000EF5CF84F8091E5038083563938F310927D |
:10198000F403E7CF892B09F072CF8091E50383320E |
:1019900059F08091E5038093310781E08093F30350 |
:1019A0008091E5039927DDCF8091E403882389F7AF |
:1019B00081E08093F403EDCF8C91821709F08ECFF4 |
:1019C00091E092CFFF91EF91BF91AF919F918F9155 |
:1019D0005F914F913F912F910F900FBE0F901F90ED |
:1019E0001895AC01A0E0B0E09D01A817B90748F434 |
:1019F000E4EDF5E08191280F311D1196A417B5078C |
:101A0000C8F33F70FD01EC52FA4FC9010024880F62 |
:101A1000991F001C880F991F001C892F902D835C33 |
:101A200080831196FD01EC52FA4F2F733070822F94 |
:101A3000835C8083AB52BA4F8DE08C93109211037C |
:101A40008091D4058093C6000895BF92CF92DF9213 |
:101A5000EF92FF920F931F93CF93DF93CDB7DEB733 |
:101A60002C859D857E85BB2483E28093D4059F5978 |
:101A70009093D5052093D60503E010E0772309F471 |
:101A8000ADC0CF84D88843E1E42EF12CEC0EFD1ECE |
:101A9000A989BA897150109709F4A0C0109709F468 |
:101AA0003CC0F601EB0DF11DB3949081119789F4C0 |
:101AB0007723A1F1F70122E030E0E20EF31ED70117 |
:101AC000C080D180E20EF31E0D90BC91A02DBB24EE |
:101AD0007150109719F1F601EB0DF11DB39440818F |
:101AE000119709F466C01097D1F0F601EB0DF11DC6 |
:101AF000B39460811197A1F4772391F0F7013296A6 |
:101B0000D701CD90DC9032E0E32EF12CEE0EFF1EDB |
:101B1000A081B181BB24715003C090E040E060E03F |
:101B2000F801EC52FA4F892F86958695835C808365 |
:101B30000F5F1F4FF801EC52FA4F892F99278370DE |
:101B4000907082959295907F9827807F982755274F |
:101B50009A01329522952F7023273F702327822BDD |
:101B6000835C80830F5F1F4FF801EC52FA4F4F7078 |
:101B70005070440F551F440F551F862F992700247E |
:101B8000880F991F001C880F991F001C892F902D0A |
:101B9000842B835C80830F5F1F4FF801EC52FA4F58 |
:101BA0006F73635C60830F5F1F4F109709F076CFF0 |
:101BB00015C0772309F4B3CFF701A2E0B0E0EA0E35 |
:101BC000FB1ED701C080D18022E030E0E20EF31E80 |
:101BD0000D90BC91A02DBB24715085CFC8010E94EF |
:101BE000F10CDF91CF911F910F91FF90EF90DF905B |
:101BF000CF90BF900895A3E07A2F4091E103465023 |
:101C000009F45FC0E72FFF27EF5CF84F80818D5309 |
:101C10007F5FE72FFF27EF5CF84F20812D537F5F19 |
:101C2000E72FFF27EF5CF84F30813D537F5FE72FB1 |
:101C3000FF27EF5CF84F60816D537F5F9927880F16 |
:101C4000991F880F991F522F52955F70582B822F22 |
:101C500099278F70907082959295907F9827807FBA |
:101C60009827232F26952695282B832F9927837035 |
:101C7000907000249695879507949695879507947C |
:101C8000982F802D682B41504F3FD9F0EA2FFF2726 |
:101C9000EF5CF84F5083AF5F41504F3F91F0EA2F18 |
:101CA000FF27EF5CF84F2083AF5F41504F3F49F073 |
:101CB000EA2FFF27EF5CF84F6083AF5F442309F002 |
:101CC000A1CF84E397E09093E0038093DF03A350D8 |
:101CD000A093DE030895CF93DF93CDB7DEB72297AD |
:101CE0000FB6F894DEBF0FBECDBF8091E40388230A |
:101CF00009F4AFC20E94FB0D80913207823609F4CD |
:101D000071C08091330799278436910509F457C033 |
:101D10008536910584F58136910509F44EC18236E8 |
:101D200091050CF4C2C08236910509F49AC183363C |
:101D30009105C1F48091DA039091DB03892B09F0BE |
:101D40004FC2A091DF03B091E0039C91992309F069 |
:101D50003DC29C918AE0989FC00111249093DB03BF |
:101D60008093DA031092E4031092E0031092DF03F1 |
:101D70001092DE036EC28C36910509F410C18D36C7 |
:101D800091050CF0B3C08736910509F42BC1883654 |
:101D9000910541F78FEF80930F03E091DF03F091FE |
:101DA000E003808190913F04892B80933F04882336 |
:101DB00011F01092E60381E08093EA03D3CFE09123 |
:101DC000DF03F091E00390818AE0989FC001112425 |
:101DD00090930D0380930C03892B21F281E0809373 |
:101DE000E903C0CF8091330799278037910509F423 |
:101DF000F2C0813791050CF485C08337910509F451 |
:101E00005BC1843791050CF03CC18137910509F025 |
:101E100078CFA091DF03B091E0038C918F3F09F45C |
:101E20000CC28C91882309F003C281E08C93A091AD |
:101E3000DF03B091E00345E665E878E08C910E940D |
:101E40005805809111038823E1F3E091DF03F091BD |
:101E5000E0038081898380E58A8385E690E09F9313 |
:101E60008F9385E898E09F938F9321E030E03F9334 |
:101E70002F93CE0102969F938F933F932F93CE0182 |
:101E8000820F931F9F938F9383E08F9381E08F93B3 |
:101E900081E58F930E94250DADB7BEB71F960FB693 |
:101EA000F894BEBF0FBEADBF2CCF8B34910509F0A7 |
:101EB00059CFE091DF03F091E0038081918190930D |
:101EC0009404809393042091910430919204821B96 |
:101ED000930B845E9D4F68E671E00E940A6A845B02 |
:101EE00090409093900480938F043CCF8437910569 |
:101EF00009F47CC08637910509F034CF81E08093E6 |
:101F0000E80330CF8D36910529F18E3691050CF01E |
:101F100093C08B34910509F0F4CEA091DF03B0910A |
:101F2000E0038D919C91909394048093930420916D |
:101F3000910430919204821B930B845E9D4F68E65E |
:101F400071E00E940A6A845B9040909390048093B1 |
:101F50008F04D7CE809111038823E1F3A091DF0392 |
:101F6000B091E0039C91913009F43FC1198281E066 |
:101F700090E09F938F93CE0101969F938F9381E082 |
:101F80008F938F938DE48F930E94250D8DB79EB70D |
:101F900007960FB6F8949EBF0FBE8DBFB2CE8FEFDF |
:101FA00080930F03E091DF03F091E0038081809341 |
:101FB000400481E08093EB03D5CEE091DF03F09104 |
:101FC000E003E081E03258F08FE1809310038FEF5F |
:101FD00080930F03C7CE81E08093E70392CEE09316 |
:101FE0001003F5CF81E08093EC03BCCE8091E10338 |
:101FF000853108F4DAC0E091DF03F091E00380E17D |
:10200000ACE0B7E001900D928A95E1F78091110361 |
:102010008823E1F31F9280910E038F9384E58F93C1 |
:102020000E94250D8AEF8093DC038FEF80930F03CE |
:102030000F900F900F9096CE8E36910509F061CEDD |
:10204000809111038823E1F38DE490E09F938F93B7 |
:1020500087E795E09F938F9381E08F938F938EE432 |
:1020600092CFA091DF03B091E0038BE0E4E2F7E0D0 |
:102070000D9001928A95E1F780912D0780930908D0 |
:10208000A6CF8437910509F03CCE8091E1038531DC |
:1020900008F4BCC0A091DF03B091E00380E1ECE064 |
:1020A000F7E00D9001928A95E1F780EF8093DC03D1 |
:1020B0008FEF80930F0325CE2091DF033091E00353 |
:1020C000F90180818150853018F481818035E9F0F3 |
:1020D0001982809111038823E1F381E090E09F93BE |
:1020E0008F93CE0101969F938F9381E08F938F936F |
:1020F00083E58F930E94250DEDB7FEB737960FB697 |
:10210000F894FEBF0FBEEDBFFCCD65E878E085E634 |
:102110002E5F3F4FDB01F901982F01900D929A95A8 |
:10212000E1F722503040482FD9018C910E9481055F |
:102130008091BB089927AA27BB27BC01CD0124ECBD |
:1021400039E040E050E00E94CB69DC01CB01809394 |
:10215000A6039093A703A093A803B093A90380912B |
:10216000BC089927AA27BB27BC01CD010E94CB69D7 |
:10217000DC01CB018093A2039093A303A093A4035B |
:10218000B093A503E091DF03F091E00380810E940A |
:1021900075050E94B005898380E00E94FB056EE60C |
:1021A00070E089810E94D22F94CFE091DF03F091FB |
:1021B000E00380819181A281B38180930C07909389 |
:1021C0000D07A0930E07B0930F0720CF8AE0989FCA |
:1021D000C00111240E94F0179093D3058093D2057B |
:1021E000A091DF03B091E003B4CD47E755E08DE463 |
:1021F000FA01282F0D9001922A95E1F7A8EEB3E09D |
:10220000FA01182E0E94736A9983B1CEA091DF0360 |
:10221000B091E0038D919D910D90BC91A02D809384 |
:102220000C0790930D07A0930E07B0930F073DCFB7 |
:10223000863008F400CE85E0F9CD0E94B005E0912B |
:10224000DF03F091E0038083A091DF03B091E0030E |
:10225000E8CD22960FB6F894DEBF0FBECDBFDF915A |
:10226000CF910895CF93C82F8A3029F08091C00074 |
:1022700085FFFCCF04C08DE00E943211F7CFC093E0 |
:10228000C60080E090E0CF910895089588E18093A2 |
:10229000C1008091C00082608093C0008091C10025 |
:1022A00080688093C1008091C10080648093C100E8 |
:1022B0008AE28093C40080910C0390910D030E94E8 |
:1022C000F01790930107809300078CED90E00E9437 |
:1022D000F0179093300780932F07109202078CE439 |
:1022E0008093030786E0809306078AE080930407C3 |
:1022F00081E0809305071092E0031092DF031092B3 |
:10230000DE030895EF92FF920F931F9380911103C4 |
:10231000882309F478C28091EA03882309F082C0F7 |
:102320008091EB03882329F080911103882309F021 |
:102330007FC18091E803882329F0809111038823CD |
:1023400009F05BC18091EC03882329F0809111038F |
:10235000882309F036C180912F07909130070E94A1 |
:10236000F917882329F080911103882309F0C8C048 |
:1023700080910C0390910D03892B09F084C1809109 |
:10238000E903882329F080911103882309F00FC203 |
:102390008091DA039091DB03892B09F07EC12091B3 |
:1023A00010032F3F59F180E190E09F938F93822F8C |
:1023B000992782959295907F9827807F9827845FB0 |
:1023C0009E4F9F938F9381E090E09F938F9380E146 |
:1023D00093E09F938F9382E08F9381E08F9381E4CA |
:1023E0008F930E94250D8FEF809310038DB79EB7BA |
:1023F0000B960FB6F8949EBF0FBE8DBF8091090853 |
:10240000882329F080911103882309F05EC0809110 |
:10241000E703882309F4F7C180911103882309F4A5 |
:10242000F2C139C080911103882309F479CF0E9449 |
:10243000242284E190E09F938F939091E60384E1BE |
:10244000989FC0011124865D9C4F9F938F9381E0DC |
:1024500090E09F938F9386EE93E09F938F9382E01B |
:102460008F9381E08F9388E48F930E94250D809154 |
:10247000E6038F5F2DB73EB7255F3F4F0FB6F89449 |
:102480003EBF0FBE2DBF843008F4B8C11092E603E2 |
:102490001092EA0345CF86E190E09F938F9383E506 |
:1024A00098E09F938F9381E08F938F9380E58F9334 |
:1024B0000E94250D1092E7038DB79EB707960FB6C1 |
:1024C000F8949EBF0FBE8DBF9EC181E090E09F93A8 |
:1024D0008F9389E098E09F938F9381E08F938F9300 |
:1024E00082E48F930E94250D109209082DB73EB704 |
:1024F000295F3F4F0FB6F8943EBF0FBE2DBF87CF69 |
:1025000080919C089927880F991F880F991F7C013B |
:102510000027F7FC0095102F8091CD049091CE04F8 |
:10252000A091CF04B091D004BC01CD01A8019701C6 |
:102530000E943F6A30931D0720931C078091C504B9 |
:102540009091C604A091C704B091C804BC01CD010C |
:10255000A80197010E943F6A30931F0720931E072E |
:102560008091650480932007809164048093210703 |
:1025700088E090E09F938F938CE197E09F938F93F7 |
:1025800081E08F9383E08F9387E78F930E94250DDF |
:10259000809122072DB73EB7295F3F4F0FB6F894C1 |
:1025A0003EBF0FBE2DBF853018F086E08093220716 |
:1025B00083E690E00E94F0179093300780932F07F6 |
:1025C000D7CE8BE090E09F938F9384E297E09F9328 |
:1025D0008F9381E08F9380910E038F9387E48F9385 |
:1025E0000E94250D1092EC038DB79EB707960FB68B |
:1025F000F8949EBF0FBE8DBFAECE8AE090E09F9351 |
:102600008F9382E097E09F938F9381E08F938F93D6 |
:1026100086E58F930E94250D1092E8032DB73EB7F3 |
:10262000295F3F4F0FB6F8943EBF0FBE2DBF8ACE35 |
:102630000E94242280E590E09F938F938AE293E0AA |
:102640009F938F9321E030E03F932F9389E293E0B3 |
:102650009F938F933F932F9380E494E09F938F9366 |
:1026600083E08F9381E08F938CE48F930E94250DFC |
:102670001092EB038DB79EB70F960FB6F8949EBFDE |
:102680000FBE8DBF56CE80910007909101070E942A |
:10269000F917882309F077CE72CE8091D2059091F8 |
:1026A000D3050E94F917882309F479CE809111038C |
:1026B000882309F474CE80919C089927880F991F6C |
:1026C000880F991F7C010027F7FC0095102F80913F |
:1026D000CD049091CE04A091CF04B091D004BC0160 |
:1026E000CD01A80197010E943F6A3093C505209350 |
:1026F000C4058091C5049091C604A091C704B0910F |
:10270000C804BC01CD01A80197010E943F6A309323 |
:10271000C7052093C60520914F093091500940917B |
:10272000510950915209DA01C90103E0880F991F3C |
:10273000AA1FBB1F0A95D1F7820F931FA41FB51FB5 |
:10274000820F931FA41FB51F20918603309187032A |
:102750004091880350918903BC01CD010E943F6ADA |
:102760003093C9052093C8058EE090E09F938F9326 |
:1027700084EC95E09F938F9381E08F938F9383E414 |
:102780008F930E94250D8091DA039091DB030E94C4 |
:10279000F0179093D3058093D2052DB73EB7295FEC |
:1027A0003F4F0FB6F8943EBF0FBE2DBFF8CD82E469 |
:1027B00090E09F938F9387EC97E09F938F9381E0B6 |
:1027C0008F938F9384E48F930E94250D1092E903D9 |
:1027D0008DB79EB707960FB6F8949EBF0FBE8DBFFC |
:1027E00080910C0390910D03009709F4D1CD0E94C4 |
:1027F000F0179093010780930007CACD8093E603FA |
:102800001092EA038DCD1F910F91FF90EF900895E4 |
:10281000982F80910A08813031F0892F0E9432115F |
:10282000282F33270CC080914104E82FFF27E65D55 |
:10283000FC4F90838F5F8093410421E030E0C90119 |
:1028400008950F931F93CF93DF938C01EB01672BB8 |
:1028500071F0F80181918F010E940814219739F0DD |
:10286000F80181918F010E940814219791F7DF915F |
:10287000CF911F910F9108950F931F93CF93DF93E3 |
:102880008C01EB01672B81F0F8010F5F1F4F8491E2 |
:102890000E940814219741F0F8010F5F1F4F8491A7 |
:1028A0000E940814219781F7DF91CF911F910F911A |
:1028B0000895CF93C82F181634F480E20E940814AC |
:1028C000C1501C16D4F3CF910895CF93C82F18167A |
:1028D00034F480E30E940814C1501C16D4F3CF9145 |
:1028E00008952F923F924F925F926F927F928F92B4 |
:1028F0009F92AF92BF92CF92DF92EF92FF920F938F |
:102900001F93CF93DF93CDB7DEB7E0970FB6F89460 |
:10291000DEBF0FBECDBF26968FAD26972896EEADB3 |
:10292000FFAD289788249924540180930A0848E42D |
:10293000C42ED12CCC0EDD1E7F01C701F7011491EE |
:10294000112331F0153221F00894E11CF11CF6CF6F |
:10295000B701681B790B09F095C0112309F43DC23A |
:102960000894E11CF11C1FA63FA4232C0FEF39A6ED |
:10297000F7010894E11CF11C14911537C9F1812F5E |
:1029800080628837A9F1103209F440C0133209F48B |
:102990008DC01A3209F479C01D3209F476C01B3299 |
:1029A000C9F11E32C9F1103309F48AC0812F815355 |
:1029B000893008F07EC060E070E0CB01880F991F7D |
:1029C000880F991F880F991F860F971F680F791F0F |
:1029D000610F711D60537040F7010894E11CF11CF8 |
:1029E0001491812F80538A3040F3262E153739F603 |
:1029F00030FE3DC0F60184E090E0C80ED91E808014 |
:102A00009180A280B380103209F0C0CF89A58823BD |
:102A100009F0AECF19A7ACCFF7010894E11CF11C67 |
:102A200014911A3209F451C060E070E014C0CB0177 |
:102A3000880F991F880F991F880F991F860F971F5E |
:102A4000680F791F610F711D60537040F701089482 |
:102A5000E11CF11C1491812F80538A3040F3EFEF79 |
:102A60006F3F7E0714F46FEF7FEF062F86CFF601DE |
:102A700082E090E0C80ED91E808191814C01AA2489 |
:102A8000BB2481CF0E943C1468CF1A3251F4F60166 |
:102A900082E090E0C80ED91E208022200CF068CF82 |
:102AA000219490E1392AEFED3E2262CF98E0392A55 |
:102AB0005FCF1836C9F01C36D1F481E0382A58CFE0 |
:102AC00034FC56CFF0E23F2A53CFF60182E090E08B |
:102AD000C80ED91E608171819FEF6F3F790714F492 |
:102AE0006FEF7FEF062F44CF24E0322A41CF133619 |
:102AF00009F44DC1143409F41FC1143609F41CC182 |
:102B0000193609F419C11F3409F40FC11F3609F42D |
:102B10000CC1103709F4F9C0133709F4B2C01535E8 |
:102B200009F4ECC0153709F4E9C0183509F444C0BC |
:102B3000183709F441C0112309F44FC1CE010196A1 |
:102B40009DA78CA7198381E0482E19A6632C7724B2 |
:102B5000042D5FA4541857FC2DC029A5222331F160 |
:102B60000F5F050DC30180739070892B09F42FC18D |
:102B7000222309F027C166FC1BC1C301807390703A |
:102B8000809709F410C1852D0E946514842D992722 |
:102B900087FD9095BC018CA59DA50E94211464FE23 |
:102BA000CCCE822D801B0E945914C7CE66FED9CF91 |
:102BB0000E5FD7CF5524D1CFE0E1EEA733FE07C09B |
:102BC00081149104A104B10411F0F0E43F2A19A684 |
:102BD0000FA707FD02C02FED3222CE0189969DA7D7 |
:102BE0008CA781149104A104B10419F49FA5992321 |
:102BF00061F1EEA54E2E55246624772418AA84147C |
:102C00009504A604B70410F0F1E0F8ABC501B401D7 |
:102C1000A30192010E941D6ADC01CB01082F8A30BA |
:102C2000F0F4005DECA5FDA50293FDA7ECA7C5019E |
:102C3000B401A30192010E941D6A49015A01F8A939 |
:102C4000FF23E1F62EA5283079F0632C7724CE01FE |
:102C50000196482EFCA54F1A28E2420E79CF095A58 |
:102C6000183501F70F7DDECF632C772463FEEFCF9D |
:102C7000003369F380E3ECA5FDA58293FDA7ECA7E3 |
:102C8000E6CFF60182E090E0C80ED91E0190F081F7 |
:102C9000E02DFDA7ECA7EF2B81F4FE013196FDA7F7 |
:102CA000ECA788E289838EE6818385E78B838CE6B7 |
:102CB0008C838D8389E28E831F8207FD15C0802F50 |
:102CC000992787FD9095AC0160E070E08CA59DA5EB |
:102CD0000E94E468009731F0482EFCA54F1A0415B5 |
:102CE0000CF033CF402E31CFECA5FDA50190002094 |
:102CF000E9F731974E2E2CA5421A27CF153511F43E |
:102D000081E0382A9AE09EA762CFF60182E090E047 |
:102D1000C80ED91E808191814C01AA24BB2490E168 |
:102D20009EA7E0E43E2A18E752CF1F3411F4E1E0F9 |
:102D30003E2AF8E0FEA74BCF143411F491E0392A73 |
:102D400030FE18C0F60184E090E0C80ED91E8080E5 |
:102D50009180A280B380B7FE0AC0B094A0949094F2 |
:102D60008094811C911CA11CB11C8DE289A79AE062 |
:102D70009EA72ECFF60182E090E0C80ED91E80817A |
:102D800091814C01AA2497FCA094BA2CE4CFFE01B7 |
:102D90003196FDA7ECA7F60182E090E0C80ED91E9F |
:102DA00080818983D0CE822D801B0E946514EBCE5A |
:102DB00080E38AA71BA762E070E0CE018A960E949A |
:102DC0002114DBCE61E070E0CE018996F8CF822D30 |
:102DD000801B0E94591429A5CBCEE0960FB6F8941B |
:102DE000DEBF0FBECDBFDF91CF911F910F91FF903E |
:102DF000EF90DF90CF90BF90AF909F908F907F909B |
:102E00006F905F904F903F902F9008951F920F9278 |
:102E10000FB60F9211242F933F935F936F937F937D |
:102E20008F939F93AF93BF93EF93FF938091FA0398 |
:102E3000882329F08091FA0381508093FA038091CE |
:102E40007205882319F081508093720580910204E5 |
:102E500081508F3F09F493C0809302048091FB035B |
:102E60009091FC03892B01F18091FB039091FC036D |
:102E700001979093FC038093FB038091FB03909157 |
:102E8000FC03209112033091130382239323892B97 |
:102E900089F0809102018A3009F48BC0479A8091B1 |
:102EA0008D0883FF8DC010C08FEF9FEF90931303A9 |
:102EB00080931203809102018A3009F478C0479808 |
:102EC00080918D0883FF7CC086B19927FC01E07159 |
:102ED000F07084FF0AC08091FD039091FE0301967B |
:102EE0009093FE038093FD036BC08091FD0390914E |
:102EF000FE03892B49F18091FD039091FE038A56D0 |
:102F0000914010F58091FD039091FE0369E270E01D |
:102F10000E94F6698091FD039091FE03860F971F32 |
:102F20009093FE038093FD038091FD039091FE0337 |
:102F30000B9708F440C08091FD039091FE030A971F |
:102F400090939404809393048091930490919404BB |
:102F50002091910430919204821B930B845E9D4FCB |
:102F600068E671E00E940A6A845B90409093900446 |
:102F700080938F041092FE031092FD0321C089E01C |
:102F800080930204809114038F5F817080931403F7 |
:102F9000882319F481E08093FF03809100049091CD |
:102FA00001040196909301048093000457CF5A982E |
:102FB00087CF5A9A85CFF0939404E0939304C4CFBB |
:102FC000FF91EF91BF91AF919F918F917F916F9101 |
:102FD0005F913F912F910F900FBE0F901F9018950A |
:102FE0002091000430910104280F391FC901019676 |
:102FF00008952091000430910104821B930B892FC6 |
:1030000099278695807490700895CF93DF930E94DE |
:10301000F017EC01CE010E94F9178823D9F3DF9154 |
:10302000CF9108951F93CF93DF930E94F017EC0187 |
:103030001FEC08C080911903882321F09093190395 |
:1030400010937A00CE010E94F917982F882391F3EC |
:10305000DF91CF911F9108959FB7F8945F983E9AA2 |
:10306000469A8091B0008F708093B0008091B0003C |
:1030700083608093B0008091B1008B738093B10026 |
:103080008091B1008B608093B1001092B2008FEFFD |
:103090008093B3008091B00080688093B0008091ED |
:1030A00070008A7F809370008091700082608093AE |
:1030B00070009FBF08958AE090E00E94F0179093FF |
:1030C0000A048093090482E085BD83EA84BD17BCAD |
:1030D00088E788BD86E086BD80916E008160809320 |
:1030E0006E0008951F920F920FB60F9211242F9326 |
:1030F0003F934F935F936F937F938F939F93AF9380 |
:10310000BF93EF93FF93809102018431C0F48091CB |
:103110000304882309F446C0209104043091050477 |
:1031200041E02F37340708F49CC08FEF8093B30041 |
:103130002F5F30403093050420930404A4C3809192 |
:103140000304882349F78091B00086FFADC08091C9 |
:10315000B0008F7B8093B000E0910804EE2309F06B |
:10316000EFC08091B408282F33278DED96E0289F7B |
:10317000A001299F500D389F500D1124CA012091A4 |
:10318000060430910704821B930B909305048093EF |
:1031900004041092070410920604469A81E080937A |
:1031A0000304BACF8091B00086FFA8C08091B00020 |
:1031B0008F7B8093B00089EA93E09093050480931D |
:1031C000040480911503909116039C01220F331F74 |
:1031D000280F391F809192039927880F991F880F14 |
:1031E000991F280F391F37FD25C2C901959587956D |
:1031F0009595879590931603809315039093F80304 |
:103200008093F7038091DC0880FFDDC08091AD08DA |
:10321000682F7727882799272091CD043091CE04F5 |
:103220004091CF045091D00457FDE9C1A7E05595D6 |
:10323000479537952795AA95D1F70E94CB699B01B1 |
:10324000AC0197FDFAC1F6E055954795379527955E |
:10325000FA95D1F78091F7039091F803820F931FAD |
:10326000DCC02F3F310569F060F0A9014F5F50408D |
:103270004F37510588F480E88093B30020583040E0 |
:1032800059CF809104048093B300109205041092EA |
:10329000040410920304F7C28FEF8093B30050939D |
:1032A000050440930404EFC28091B00080648093D1 |
:1032B000B0008CEB90E0909305048093040480911F |
:1032C00006049091070484549F4F909307048093C1 |
:1032D00006048091F903882329F080918204853BBC |
:1032E00008F0F2C0469A909108049F5F8091B4085C |
:1032F000891708F0E6C01092080450CF8091B00002 |
:1033000080648093B0008091B408282F33278DED1E |
:1033100096E0289FA001299F500D389F500D112441 |
:10332000CA012091060430910704821B930B9093ED |
:103330000504809304049C0181E080930304F0CE93 |
:1033400089EA93E090930504809304048E2F9927D3 |
:103350008130910509F4BAC0029709F478C1FF27BA |
:10336000EE0FFF1FED5AF74F80819181880F991F53 |
:103370002091040430910504820F931F909305045B |
:1033800080930404209104043091050455E02D3D00 |
:10339000350708F440C18CED95E0909305048093C7 |
:1033A00004049C012C5B30403093050420930404FA |
:1033B0008091060490910704820F931F9093070455 |
:1033C00080930604EBCE8091AD08682F772788277D |
:1033D00099272091CD043091CE044091CF04509193 |
:1033E000D00457FD07C1E7E05595479537952795D8 |
:1033F000EA95D1F70E94CB699B01AC0197FD22C1F0 |
:1034000076E055954795379527957A95D1F7809130 |
:10341000F7039091F803821B930B9093F80380932A |
:10342000F7038091AE08282F3327220F331F220F76 |
:10343000331F8091F7039091F803821793077CF074 |
:103440008091AF08282F3327220F331F220F331FFD |
:103450008091F7039091F8032817390724F43093EB |
:10346000F8032093F7032091F7033091F80380913C |
:10347000040490910504280F391F20503240809198 |
:10348000F7039091F80397FDD3C09595879595958F |
:1034900087959093F8038093F70345E02D3D34071B |
:1034A00008F4B2C08CED95E0909305048093040479 |
:1034B00020910404309105043093070420930604FE |
:1034C0003BCF909308046ACE46980DCF80911503A8 |
:1034D000909116039C01220F331F280F391F8091F2 |
:1034E00092039927880F991F880F991F280F391F5A |
:1034F00037FD99C1C90195958795959587959093C5 |
:103500001603809315039093F8038093F70380913B |
:10351000DC0880FF30C18091AD08682F77278827AD |
:1035200099272091CD043091CE044091CF04509141 |
:10353000D00457FD85C1E7E0559547953795279508 |
:10354000EA95D1F70E94CB699B01AC0197FD73C14D |
:10355000B6E05595479537952795BA95D1F780915F |
:10356000F7039091F803820F931F9093F8038093D1 |
:10357000F7038091AE08282F3327220F331F220F25 |
:10358000331F8091F7039091F803821793077CF023 |
:103590008091AF08282F3327220F331F220F331FAC |
:1035A0008091F7039091F8032817390724F430939A |
:1035B000F8032093F7038091F7039091F80320918B |
:1035C000040430910504820F931F80509240909321 |
:1035D0000504809304048091F7039091F80397FD0C |
:1035E00020C195958795959587959093F80380933D |
:1035F000F703C8CE21583F4F4F4F5F4FF4CE2158AD |
:103600003F4F4F4F5F4F12CE51E02737350758F4E9 |
:1036100087E791E049CF81E02737380708F0C2CE2D |
:1036200087E791E0BACE309305042093040440CF9D |
:1036300003962BCF2D5F3F4FD8CD215C3F4F4F4F8F |
:103640005F4F01CE215C3F4F4F4F5F4FD9CE8091EE |
:103650001703909118039C01220F331F280F391F65 |
:10366000809191039927880F991F880F991F280F20 |
:10367000391F37FDDBC0C9019595879595958795CD |
:1036800090931803809317039093F6038093F503A8 |
:103690008091DC0881FF9AC08091B108682F77275C |
:1036A000882799272091C5043091C6044091C7040A |
:1036B0005091C80457FDE2C0A7E05595479537954E |
:1036C0002795AA95D1F70E94CB699B01AC0197FD84 |
:1036D000D0C0F6E05595479537952795FA95D1F7DF |
:1036E0008091F5039091F603820F931F9093F60358 |
:1036F0008093F5038091B208282F3327220F331FC0 |
:10370000220F331F8091F5039091F60382179307E0 |
:103710007CF08091B308282F3327220F331F220F0C |
:10372000331F8091F5039091F6032817390724F48D |
:103730003093F6032093F5038091F5039091F603FF |
:103740002091040430910504820F931F8050924011 |
:1037500090930504809304048091F5039091F603FF |
:1037600097FD67C095958795959587959093F603F6 |
:103770008093F50307CE8091AD08682F77278827BF |
:1037800099272091CD043091CE044091CF045091DF |
:10379000D00457FD5FC0A7E055954795379527950D |
:1037A000AA95D1F70E94CB699B01AC0197FD4DC052 |
:1037B000F6E05595479537952795FA95D1F780917D |
:1037C000F7039091F803821B930BCFCE8091B10841 |
:1037D000682F7727882799272091C5043091C60440 |
:1037E0004091C7045091C80457FD3EC0E7E055958D |
:1037F000479537952795EA95D1F70E94CB699B01AC |
:10380000AC0197FD2CC066E05595479537952795F7 |
:103810006A95D1F78091F5039091F603821B930B83 |
:1038200065CF0396DECE2D5F3F4F64CE2D5F3F4FB9 |
:1038300022CF039697CF215C3F4F4F4F5F4F88CEEB |
:1038400021583F4F4F4F5F4F76CE215C3F4F4F4F38 |
:103850005F4FAECF21583F4F4F4F5F4F9CCF215C02 |
:103860003F4F4F4F5F4FCFCF21583F4F4F4F5F4F8D |
:10387000BDCF215C3F4F4F4F5F4F2BCF21583F4F64 |
:103880004F4F5F4F19CFFF91EF91BF91AF919F9134 |
:103890008F917F916F915F914F913F912F910F90F9 |
:1038A0000FBE0F901F90189510927C008FEC8093A4 |
:1038B0007A000895EF92FF920F931F93CF93DF93B7 |
:1038C00003E010E0D8010E945A6A802DC82FDD273E |
:1038D000C531D10508F02A97C7BD1092120484E6BD |
:1038E00090E00E94121880911D0390911E03805257 |
:1038F000934010F4C0E0D0E0CA3FD105E0F48AEA7A |
:10390000E82E83E0F82EC7BD82E390E00E941218F3 |
:10391000FF92EF921F920E94711480911D0390916B |
:103920001E030F900F900F908052934020F021962D |
:10393000CA3FD10540F3D8010C2E0E94676AC0939C |
:1039400017088CE291E00E941218DF91CF911F912D |
:103950000F91FF90EF900895EF92FF920F931F93B6 |
:10396000CF93DF9300E000930D0400930C040093C9 |
:103970000B0480ED97E00E94F017EC011CE821E0B9 |
:10398000F22E95EFE92E033009F4ABC000E08091F0 |
:103990002204909123048C5F93400CF091C080919D |
:1039A0001C03815080931C0380912004909121047A |
:1039B0008C5F93400CF079C080911B038150809301 |
:1039C0001B0380911E0490911F048C5F93400CF0A8 |
:1039D0004AC080911A03815080931A0388E0809333 |
:1039E00049040E94D62A80911C038A3008F055C0F1 |
:1039F000F0920D048AE080931C0380911B038A30AF |
:103A000008F043C0F0920C048AE080931B0380917D |
:103A10001A038A3098F5F0920B048AE080931A0317 |
:103A200080914904882379F0CE010E94F9178823F8 |
:103A3000B9F38CEA93E09F938F931F920E947114C5 |
:103A40000F900F900F90109219038FEC80937A00D3 |
:103A5000809119038823E1F31A3008F447C011500C |
:103A600009F091CF48C080911E0490911F048750A7 |
:103A700094408CF180911A038F5FAECF863F80F225 |
:103A8000F0920B04E0921A03CBCF863F08F4BFCF2D |
:103A9000F0920C04E0921B03BACF863F08F4ADCF3E |
:103AA000F0920D04E0921C03A8CF80912004909125 |
:103AB0002104875094408CF080911B038F5F7FCF4F |
:103AC00080912204909123048750944044F0809187 |
:103AD0001C038F5F67CF0F5F81CF0F5F72CF01E055 |
:103AE00063CF1B3008F452CF19E050CF8AE090E04A |
:103AF0000E941218B4CF86E490E00E941218DF9161 |
:103B0000CF911F910F91FF90EF9008951F920F9208 |
:103B10000FB60F921124AF92BF92CF92DF92EF9225 |
:103B2000FF920F931F932F933F934F935F936F9346 |
:103B30007F938F939F93AF93BF93EF93FF932091C6 |
:103B40002B04822F9927AA27BB272F5FFC014297BE |
:103B500040F4E25CFF4FEE0FFF1F0590F491E02D63 |
:103B6000099410922B0482E080932A0480912A0405 |
:103B700080937C0080912B04882309F443C48FEC4C |
:103B800080937A003FC420932B0480917800909119 |
:103B900079002091300430913104820F931F90936B |
:103BA00031048093300481E0DFCF20932B04809197 |
:103BB00078009091790020912E0430912F04820F8B |
:103BC000931F90932F0480932E0484E0CDCF2093F5 |
:103BD0002B0480917800909179002091DB04309142 |
:103BE000DC04821B930B9093160880931508809138 |
:103BF000150890911608909339048093380482E058 |
:103C0000B3CF20932B048091D9049091DA042091B2 |
:103C1000780030917900821B930B90930C0880936D |
:103C20000B0880910B0890910C08909337048093B7 |
:103C3000360487E099CF20932B04809178009091EF |
:103C4000790090932D0480932C0486E08DCF2093EF |
:103C50002B04209178003091790030932F04209329 |
:103C60002E0410922A0482CF20932B0420917800F6 |
:103C700030917900309331042093300481E074CF87 |
:103C800010922B0481E08093190380910E0490918F |
:103C90000F04019690930F0480930E048091780096 |
:103CA0009091790090931E0380931D0380911D03D2 |
:103CB00090911E035C01CC24DD2480913A04909104 |
:103CC0003B04A0913C04B0913D04A80EB91ECA1E4D |
:103CD000DB1E80913E048F5F823108F4E8C2809140 |
:103CE0001F0390912003A0912103B09122037C0136 |
:103CF0008D0123E0EE0CFF1C001F111F2A95D1F748 |
:103D0000E81AF90A0A0B1B0BEA0CFB1C0C1D1D1D03 |
:103D100080911204992787FD9095A92FB92FBC0196 |
:103D2000CD0126EC34E240E050E00E94CB69DC019A |
:103D3000CB01E81AF90A0A0B1B0BD801C70104963C |
:103D4000A11DB11DB7FD23C313E0B595A7959795A8 |
:103D500087951A95D1F780931F0390932003A09322 |
:103D60002103B093220380910F08909110087C01E9 |
:103D70000027F7FC0095102F80911F0390912003DE |
:103D8000A0912103B0912203E81AF90A0A0B1B0B38 |
:103D9000E0927404F0927504009376041093770413 |
:103DA000209113043091140440911504509116048D |
:103DB00057FDFDC2A4E05595479537952795AA95DF |
:103DC000D1F78091130490911404A0911504B0913F |
:103DD0001604821B930BA40BB50B809313049093D2 |
:103DE0001404A0931504B0931604809113049091C9 |
:103DF0001404A0911504B09116048E0D9F1DA01FF0 |
:103E0000B11F8093130490931404A0931504B093EE |
:103E100016048091100490911104BC016295729572 |
:103E2000707F7627607F7627681B790B20911304BB |
:103E300030911404409115045091160457FDB2C2FC |
:103E4000E4E05595479537952795EA95D1F7809108 |
:103E5000740490917504821B930B880F991F880F2F |
:103E6000991F880F991F860F971F97FDA9C29595D7 |
:103E70008795959587959595879595958795909331 |
:103E8000110480931004D601C501D7FC95C2B595E5 |
:103E9000A7959795879580933A0490933B04A093B8 |
:103EA0003C04B0933D0489E080933E0482E05CCE04 |
:103EB00020932B04209178003091790080912E047A |
:103EC00090912F04280F391F809102018A3009F444 |
:103ED00048C2220F331F220F331F30932F04209329 |
:103EE0002E04C90137FD73C29595879595958795E1 |
:103EF00095958795909321048093200480913404B4 |
:103F000090913504820F931F97FD66C29595879512 |
:103F100090933504809334042091E3043091E404B9 |
:103F2000821B930B909324038093230320912604F8 |
:103F3000309127048091230390912403280F391F87 |
:103F400037FD47C2359527953093270420932604E3 |
:103F500083E00ACE20932B042091780030917900E1 |
:103F60008091300490913104280F391F8091020113 |
:103F70008A3009F407C2220F331F220F331F3093F8 |
:103F8000310420933004C90137FDFFC19595879511 |
:103F90009595879595958795909323048093220412 |
:103FA0008091320490913304820F931F97FD0DC2CC |
:103FB0009595879590933304809332042091E5047E |
:103FC0003091E604821B930B909326038093250384 |
:103FD0002091280430912904809125039091260393 |
:103FE000280F391F37FDEEC13595279530932904E9 |
:103FF0002093280481E0B8CD20932B048091780091 |
:10400000909179002091DB043091DC04821B930BAA |
:1040100090931608809315088091150890911608C2 |
:104020002091380430913904820F931F90931B0420 |
:1040300080931A0482E098CD20932B048091D904B8 |
:104040009091DA042091780030917900821B930BD3 |
:1040500090930C0880930B0880910B0890910C08AA |
:104060002091360430913704820F931F90931D04E2 |
:1040700080931C0487E078CD20932B04809102016B |
:104080008A3009F471C1843109F4A8C180917800A3 |
:104090009091790020912C0430912D04820F931F70 |
:1040A00090931F0480931E0486E05ECD20932B0422 |
:1040B000809178009091790020912E0430912F0406 |
:1040C000820F931F90932F0480932E0410922A0442 |
:1040D0004DCD20932B04E2CD20932B0480917800CA |
:1040E00090917900AA2797FDA095BA2FBC01CD0128 |
:1040F0000E9451697B018C018091D3049091D4047A |
:10410000A091D504B091D6049C01AD01C801B701BE |
:104110000E94F168DC01CB01BC01CD010E94346931 |
:10412000DC01CB019093190480931804809118044A |
:104130009091190402970CF4C6C08091D304909119 |
:10414000D404A091D504B091D60420E030E84BE32C |
:1041500054E4BC01CD010E945B698823DCF58091A9 |
:10416000D3049091D404A091D504B091D6042AE050 |
:1041700037ED43EA5CE3BC01CD010E94F268DC014B |
:10418000CB018093D3049093D404A093D504B0932F |
:10419000D6048091520490915304845F9140D0F4EE |
:1041A0008091D3049091D404A091D504B091D60409 |
:1041B0002DEC3CEC4CEC5DE3BC01CD010E94F268BF |
:1041C000DC01CB018093D3049093D404A093D50455 |
:1041D000B093D60481E08093170480917800909189 |
:1041E000790090930E0880930D08809118049091A7 |
:1041F0001904AA2797FDA095BA2F20919504309114 |
:1042000096044091970450919804820F931FA41F25 |
:10421000B51F8093950490939604A0939704B09350 |
:104220009804209195043091960440919704509100 |
:10423000980457FDB2C00AE05595479537952795E4 |
:104240000A95D1F78091950490919604A0919704D6 |
:10425000B0919804821B930BA40BB50B809395042B |
:1042600090939604A0939704B093980483E07CCC39 |
:1042700020932B0480912703909128039C01220F07 |
:10428000331F280F391F809178009091790063E0E7 |
:1042900070E00E94F669260F371F369527953695F0 |
:1042A0002795309328032093270385E05DCC8093E6 |
:1042B0003E04A0923A04B0923B04C0923C04D092D7 |
:1042C0003D0482E051CC80911804909119048F5FD5 |
:1042D0009F4F0CF07FCF8091D3049091D404A09194 |
:1042E000D504B091D60420E030E849E054E4BC01A4 |
:1042F000CD010E945E6918160CF06CCF8091D3043A |
:104300009091D404A091D504B091D6042AE037ED61 |
:1043100043EA5CE3BC01CD010E94F168DC01CB0102 |
:104320008093D3049093D404A093D504B093D6047F |
:104330008091520490915304845F914008F04ACFD9 |
:104340008091D3049091D404A091D504B091D60467 |
:104350002DEC3CEC4CEC5DE3BC01CD010E94F1681E |
:104360002FCF220F331FB9CD809178009091790023 |
:1043700020912C0430912D04820F931F0196969565 |
:1043800087958ECE220F331FFACD0796FFCDD80129 |
:10439000C7010B96A11DB11DD7CC21503C4F4F4FEB |
:1043A0005F4F49CF215F3F4F4F4F5F4F49CD215F57 |
:1043B0003F4F4F4F5F4FFECC0196A11DB11D67CD02 |
:1043C0000F9655CD2F5F3F4F0FCE0196F1CD07963B |
:1043D0008BCD2F5F3F4FB6CD019698CD8091780061 |
:1043E0009091790020912C0430912D04820F931F1D |
:1043F0002FEF37E0281B390B30931F0420931E0446 |
:1044000086E0B2CBFF91EF91BF91AF919F918F91D9 |
:104410007F916F915F914F913F912F911F910F91DC |
:10442000FF90EF90DF90CF90BF90AF900F900FBEB6 |
:104430000F901F90189590E2EAE2F3E08FE49193D9 |
:10444000815087FFFCCF08951F93CF93DF93809116 |
:10445000400420912903281710F4209340049091E0 |
:104460003F0490FF08C080914004882309F41EC1D6 |
:1044700081508093400491FF08C0809140048217CE |
:1044800009F4E4C18F5F80934004892F992780FF4E |
:1044900002C081FD08C10E941B22909140049A3005 |
:1044A00008F0A2C081E180934104892F99279F934E |
:1044B0008F9383EE93E09F938F9381E08F930E947D |
:1044C00071140F900F900F900F900F9080914004F7 |
:1044D000C82FDD27C730D10509F4BBC1C830D105CD |
:1044E0000CF08CC0C330D10509F455C2C430D105DD |
:1044F0000CF0DFC0C130D10509F4BBC2C230D10518 |
:104500000CF438C31092410483EA94E09F938F9394 |
:10451000C1E0CF930E94711484E1809341040F9015 |
:104520000F900F908091CD049091CE04A091CF0474 |
:10453000B091D004B7FD58C63AE0B595A7959795C8 |
:1045400087953A95D1F7BF93AF939F938F938DEA59 |
:1045500094E09F938F93CF930E94711488E280938D |
:1045600041048DB79EB707960FB6F8949EBF0FBE55 |
:104570008DBF8091C5049091C604A091C704B091ED |
:10458000C804B7FD2CC62AE0B595A79597958795E1 |
:104590002A95D1F7BF93AF939F938F938CEB94E0C1 |
:1045A0009F938F93CF930E9471148CE38093410467 |
:1045B0002DB73EB7295F3F4F0FB6F8943EBF0FBEF1 |
:1045C0002DBF80919304909194049F938F938BECD3 |
:1045D00094E09F938F93CF930E9471140F900F904C |
:1045E0000F900F900F90D6C780E180934104892FE0 |
:1045F00099279F938F9388EE93E05DCFCB30D105C1 |
:1046000009F45DC1CC30D1050CF00FC1C930D10522 |
:1046100009F40BC52A970CF01CC31092410482E7E1 |
:1046200096E09F938F9311E01F930E94711484E191 |
:10463000809341040F900F900F9080918F04909180 |
:1046400090049F938F9381E896E09F938F931F939D |
:104650000E94711488E2809341040F900F900F9094 |
:104660000F900F9080919304909194049F938F9357 |
:1046700080E996E09F938F931F930E9471148CE3BF |
:10468000809341040F900F900F900F900F908091A6 |
:104690009104909192049F938F938FE996E09F935A |
:1046A0008F931F9399CF10924004F5CE209340042E |
:1046B000E2CEC530D10509F403C426970CF08CC3B3 |
:1046C0001092410480918608E82FFF27EE0FFF1F0C |
:1046D000ED5AF74F808191819F938F938091850848 |
:1046E000E82FFF27EE0FFF1FED5AF74F80819181D2 |
:1046F0009F938F938AE195E09F938F9311E01F938F |
:104700000E94711484E1809341048DB79EB707968F |
:104710000FB6F8949EBF0FBE8DBF80918808E82F1A |
:10472000FF27EE0FFF1FED5AF74F808191819F9376 |
:104730008F9380918708E82FFF27EE0FFF1FED5A18 |
:10474000F74F8081918188589F4F9F938F938AE282 |
:1047500095E09F938F931F930E94711488E280933A |
:1047600041042DB73EB7295F3F4F0FB6F8943EBFC7 |
:104770000FBE2DBF80918A08E82FFF27EE0FFF1F85 |
:10478000ED5AF74F8081918182599F4F9F938F936C |
:1047900080918908E82FFF27EE0FFF1FED5AF74F92 |
:1047A0008081918182599F4F9F938F938AE395E0F7 |
:1047B0009F938F931F930E9471148CE38093410405 |
:1047C0006DB77EB7695F7F4F0FB6F8947EBF0FBE9F |
:1047D0006DBF80918C08E82FFF27EE0FFF1FED5A69 |
:1047E000F74F8081918182599F4F9F938F93809142 |
:1047F0008B08E82FFF27EE0FFF1FED5AF74F808140 |
:10480000918182599F4F9F938F938AE495E09F9364 |
:104810008F931F930E9471148DB79EB707960FB6A2 |
:10482000F8949EBF0FBE8DBFB5C6CD30D10509F43B |
:1048300047C4CD30D1050CF452C22E9709F4D9C427 |
:1048400081508093290310924004A4C61092400422 |
:104850001CCE84E18093410480912703909128032A |
:104860009F938F9384E496E09F938F9311E01F931F |
:104870000E94711488E2809341040F900F900F9072 |
:104880000F900F908091820499279F938F9383E5D7 |
:1048900096E09F938F931F930E9471148CE38093F3 |
:1048A00041040F900F900F900F900F90809152083D |
:1048B000992701979F938F9382E696E0F0CE10920E |
:1048C000410480E197E09F938F9311E01F930E9432 |
:1048D000711484E1809341040F900F900F908091A8 |
:1048E0002807992787FD90959F938F93809127079D |
:1048F000992787FD90959F938F9380E297E09F93F0 |
:104900008F931F930E94711488E2809341048DB7A6 |
:104910009EB707960FB6F8949EBF0FBE8DBF8091CD |
:104920002907992787FD90959F938F9380912A0758 |
:1049300099279F938F9380E397E09F938F931F9383 |
:104940000E9471148CE3809341042DB73EB7295F18 |
:104950003F4F0FB6F8943EBF0FBE2DBF80912E077C |
:1049600099279F938F9380912B07992787FD909587 |
:104970009F938F9380E497E09F938F931F930E9460 |
:1049800071146DB77EB7695F7F4F0FB6F8947EBF25 |
:104990000FBE6DBFFFC510924104809157089091E2 |
:1049A00058089F938F9380915508909156089F9334 |
:1049B0008F938AED94E09F938F9311E01F930E9451 |
:1049C000711484E1809341046DB77EB7695F7F4FB6 |
:1049D0000FB6F8947EBF0FBE6DBF80915B089091BB |
:1049E0005C089F938F938091590890915A089F93E8 |
:1049F0008F938AEE94E09F938F931F930E9471147C |
:104A000088E2809341048DB79EB707960FB6F8945D |
:104A10009EBF0FBE8DBF80915F08909160089F93ED |
:104A20008F9380915D0890915E089F938F938AEF9A |
:104A300094E09F938F931F930E9471148CE3809353 |
:104A400041042DB73EB7295F3F4F0FB6F8943EBFE4 |
:104A50000FBE2DBF80916308909164089F938F9340 |
:104A600080916108909162089F938F938AE095E00E |
:104A700083CF80918D0880FD1CC084E18093410428 |
:104A80008EE894E09F938F9311E01F930E9471141E |
:104A900088E2809341040F900F900F9085E994E095 |
:104AA0009F938F931F930E9471140F900F900F90FC |
:104AB00071C5109241048091740490917504A09185 |
:104AC0007604B0917704BC01CD0125E030E040E0F0 |
:104AD00050E00E943F6A3F932F9382E594E09F93BA |
:104AE0008F9311E01F930E94711484E1809341041D |
:104AF0000F900F900F900F900F90809170049091F5 |
:104B00007104A0917204B0917304BC01CD0125E041 |
:104B100030E040E050E00E943F6A3F932F9381E6EF |
:104B200094E09F938F931F930E94711488E2809367 |
:104B300041040F900F900F900F900F9080911D03E4 |
:104B400090911E039F938F9380E794E09F938F93A0 |
:104B50001F930E9471148CE3809341040F900F9077 |
:104B60000F900F900F9087B599279F938F938FE7A2 |
:104B700094E095CD209709F063CE109241048DEE1C |
:104B800093E09F938F9311E01F930E94711484E12F |
:104B9000809341040F900F900F9087E690E09F93D1 |
:104BA0008F938CE490E09F938F93DF93CF938091CA |
:104BB00002016AE00E94EA69892F99279F938F93E7 |
:104BC000809102010E94EA6999279F938F938DEF4C |
:104BD00093E09F938F931F930E94711488E28093B8 |
:104BE00041042DB73EB7235F3F4F0FB6F8943EBF49 |
:104BF0000FBE2DBF88E795E09F938F930E94B0056D |
:104C000099279F938F9382E194E09F938F931F93B3 |
:104C10000E9471148091AC039091AD036DB77EB783 |
:104C2000695F7F4F0FB6F8947EBF0FBE6DBF0697CA |
:104C300008F488C490914604992309F47DC48CE358 |
:104C400080934104892F99279F938F938DE294E05D |
:104C500026CD109241048EED96E09F938F9311E044 |
:104C60001F930E94711484E1809341040F900F9070 |
:104C70000F908091920399279F938F9386EE96E0F1 |
:104C80009F938F931F930E94711488E28093410435 |
:104C90000F900F900F900F900F908091F7039091CD |
:104CA000F8039F938F9384EF96E09F938F931F93C6 |
:104CB0000E9471148CE3809341040F900F900F9029 |
:104CC0000F900F908091AF0899279F938F938091B9 |
:104CD000AE0899279F938F9382E097E04DCE109274 |
:104CE000410480E597E09F938F9311E01F930E940A |
:104CF000711484E1809341040F900F900F90809184 |
:104D00002D0899279F938F9380912C0899279F9323 |
:104D10008F9380912B0899279F938F9380912A08D6 |
:104D200099279F938F9380E697E09F938F931F938C |
:104D30000E94711488E2809341048DB79EB70B9650 |
:104D40000FB6F8949EBF0FBE8DBF80913108992792 |
:104D50009F938F938091300899279F938F93809191 |
:104D60002F0899279F938F9380912E0899279F93BF |
:104D70008F9385E797E09F938F931F930E94711401 |
:104D80008CE3809341042DB73EB7255F3F4F0FB6AC |
:104D9000F8943EBF0FBE2DBF8091350899279F9391 |
:104DA0008F938091340899279F938F938091330834 |
:104DB00099279F938F938091320899279F938F9380 |
:104DC0008AE897E09F938F931F930E9471146DB7A9 |
:104DD0007EB7655F7F4FD9CD109241048AE096E09F |
:104DE0009F938F9311E01F930E94711484E180932D |
:104DF00041040F900F900F908091DB049091DC04A0 |
:104E00009F938F9380911A0490911B049F938F938B |
:104E100087E196E09F938F931F930E94711488E21D |
:104E2000809341046DB77EB7695F7F4F0FB6F894EA |
:104E30007EBF0FBE6DBF8091D9049091DA049F931D |
:104E40008F9380911C0490911D049F938F9386E211 |
:104E500096E09F938F931F930E9471148CE380932D |
:104E600041048DB79EB707960FB6F8949EBF0FBE4C |
:104E70008DBF8091D3049091D404A091D504B091BA |
:104E8000D604BC01CD010E943469DC01CB019F93A3 |
:104E90008F9380910609909107099F938F9385E3E3 |
:104EA00096E09F938F931F930E9471142DB73EB786 |
:104EB000295F3F4F0FB6F8943EBF0FBE2DBF6AC3A8 |
:104EC000109241048AE595E09F938F93C1E0CF93C0 |
:104ED0000E947114809102010F900F900F908A3000 |
:104EE00009F4A5C28B3009F4DEC1843109F4DBC1B9 |
:104EF0008D3009F04FC384E18093410480911C03FD |
:104F000099279F938F934091E5045091E604CA013D |
:104F100057FD39C39595879595958795959587956F |
:104F2000959587959F938F939A0157FD29C3359542 |
:104F30002795359527953595279580912204909151 |
:104F40002304821B930B9F938F938EEC95E09F938A |
:104F50008F93CF930E94711488E2809341046DB7C0 |
:104F60007EB7675F7F4F0FB6F8947EBF0FBE6DBFF1 |
:104F700080911B0399279F938F934091E304509155 |
:104F8000E404CA0157FD04C39595879595958795C7 |
:104F900095958795959587959F938F939A0157FD42 |
:104FA000F4C23595279535952795359527958091A8 |
:104FB000200490912104821B930B9F938F9382EE88 |
:104FC00095E09F938F93CF930E9471148CE380930D |
:104FD00041048DB79EB709960FB6F8949EBF0FBED9 |
:104FE0008DBF80911A0399279F938F932091E1049D |
:104FF0003091E204C90137FDC1C2959587959F9311 |
:105000008F9380911E0490911F04281B390B3F93AE |
:105010002F9386EF95E09F938F93CF930E94711407 |
:105020002DB73EB7275F3F4F45CF10924104809187 |
:10503000890490918A049F938F938EEA96E09F93C0 |
:105040008F9311E01F930E94711484E180934104B7 |
:105050000F900F900F900F900F9080918704909178 |
:1050600088049F938F938AEB96E09F938F931F936F |
:105070000E94711488E2809341040F900F900F906A |
:105080000F900F9080918504909186049F938F9349 |
:1050900086EC96E09F938F931F930E9471148CE38C |
:1050A000809341040F900F900F900F900F9080917C |
:1050B0008304909184049F938F9382ED96E0EFCACE |
:1050C000109241048FE997E09F938F93C1E0CF93B3 |
:1050D0000E94711484E1809341040F900F900F900F |
:1050E0008091490899278D969F938F9380914808C6 |
:1050F00099278D969F938F938091470899278D9636 |
:105100009F938F938091460899278D969F938F93B5 |
:105110008EEA97E09F938F93CF930E94711488E259 |
:10512000809341048DB79EB70B960FB6F8949EBF3F |
:105130000FBE8DBF80914D0899278D969F938F93B9 |
:1051400080914C0899278D969F938F9380914B085F |
:1051500099278D969F938F9380914A0899278D96D2 |
:105160009F938F9382EC97E09F938F93CF930E94AE |
:1051700071148CE3809341042DB73EB7255F3F4FF8 |
:105180000FB6F8943EBF0FBE2DBF80914E089927F1 |
:105190008D969F938F9386ED97E09F938F93CF93F8 |
:1051A0000E9471140F900F900F900F900F908091AC |
:1051B0004F08882309F02DC180915008882309F0F9 |
:1051C0001AC180915108882309F4E4C188E48093CE |
:1051D00041048CEE97E09F938F93CF9364CC8150E2 |
:1051E0009C4FAF4FBF4FCFC981509C4FAF4FBF4F68 |
:1051F000A3C9109241048FEE97E09F938F9311E023 |
:105200001F930E94711484E1809341040F900F90CA |
:105210000F908091D8039091D9039F938F938DEF36 |
:1052200097E09F938F931F930E94711488E280935D |
:1052300041040F900F900F900F900F908091D60324 |
:105240009091D7039F938F938AE098E09F938F93D9 |
:105250001F930E94711489E4809341040F900F9072 |
:105260000F900F900F9087E198E09F938F931F937B |
:105270000E94711480913F040F900F900F9083FF54 |
:1052800089C11092D9031092D803AEE0B0E080E05B |
:10529000082E0E94676AAFE0B0E08091D803082E24 |
:1052A0000E94676A77C184E1809341044091E504DC |
:1052B0005091E604CA0157FD57C19C0135952795C9 |
:1052C000359527953595279535952795C90182956B |
:1052D0009295907F9827807F9827BA01681B790B59 |
:1052E000CB0177FD3FC1959587959F938F933F9312 |
:1052F0002F939A0157FD33C13595279535952795FD |
:10530000359527958091220490912304821B930B5D |
:105310009F938F938BE995E09F938F93CF930E94F8 |
:10532000711488E2809341048DB79EB709960FB639 |
:10533000F8949EBF0FBE8DBF4091E3045091E404EA |
:10534000CA0157FD0AC19C013595279535952795CA |
:105350003595279535952795C90182959295907F2A |
:105360009827807F9827BA01681B790BCB0177FDBE |
:10537000F2C0959587959F938F933F932F939A01B2 |
:1053800057FDE6C035952795359527953595279591 |
:105390008091200490912104821B930B9F938F9303 |
:1053A0008DEA95E09F938F93CF930E9471148CE3C5 |
:1053B000809341048DB79EB709960FB6F8949EBFAF |
:1053C0000FBE8DBF2091E1043091E204C90137FD89 |
:1053D000CDC0959587959F938F9380911E04909152 |
:1053E0001F04281B390B3F932F938FEB95E09F935E |
:1053F0008F93CF9359CD84E48093410489EE97E055 |
:105400009F938F93CF930E9471140F900F900F90E2 |
:10541000D8CE80E48093410486EE97E09F938F93EB |
:10542000CF930E9471140F900F900F90C5CE84E11E |
:10543000809341044091E5045091E6049A0157FDA0 |
:105440009AC0359527953595279535952795C901A6 |
:10545000880F991F880F991F880F991F481B590B98 |
:105460005F934F933F932F93809122049091230455 |
:10547000821B930B9F938F9388E695E09F938F9366 |
:10548000CF930E94711488E2809341042DB73EB7F8 |
:10549000275F3F4F0FB6F8943EBF0FBE2DBF409120 |
:1054A000E3045091E4049A0157FD62C035952795B5 |
:1054B0003595279535952795C901880F991F880F30 |
:1054C000991F880F991F481B590B5F934F933F9368 |
:1054D0002F938091200490912104821B930B9F9322 |
:1054E0008F938AE795E09F938F93CF930E947114D7 |
:1054F0008CE3809341046DB77EB7675F7F4F0FB633 |
:10550000F8947EBF0FBE6DBF8091E1049091E204DC |
:105510009F938F938091E1049091E20420911E0467 |
:1055200030911F04821B930B9F938F938CE895E01F |
:105530009F938F93CF936EC98CE38093410482E451 |
:1055400094E0AECA8CE38093410480E294E0A8CA60 |
:10555000295F3F4F17CF01960CCF0F96F4CE295FEE |
:105560003F4FCACE0196BFCE0F96A7CE019631CF40 |
:10557000295F3F4F9BCF295F3F4F63CF01963DCDC2 |
:10558000295F3F4FD4CC0F96C5CC295F3F4F09CD43 |
:105590000F96FACC10923F04DF91CF911F9108959E |
:1055A0001092B9008AE28093B800089585EA80934A |
:1055B000BC00089584E98093BC0008951092B9005E |
:1055C0008093BB0085E88093BC0008950E94DA2A8E |
:1055D000109249048091BB001092480480E88093A7 |
:1055E000BC001092BD001092BA001092BB00109245 |
:1055F000B9001092B8000E94D02A0E94D62A80E0FA |
:105600000E94DE2A08958093BB0085E88093BC0049 |
:10561000089585EC8093BC00089585E88093BC00D4 |
:1056200008951F920F920FB60F9211242F933F935C |
:105630004F935F936F937F938F939F93AF93BF939A |
:10564000EF93FF9380914904282F33274427552750 |
:105650008F5F80934904F90127313105C8F4E05B7D |
:10566000FF4FEE0FFF1F0590F491E02D09948091FC |
:105670004704E82FFF27E65EF74F9091BB00908329 |
:105680008F5F8C3008F49DC0109247040E94DA2A84 |
:1056900010924904E0C080E80E94DE2ADCC088E95C |
:1056A0000E94DE2AD8C00E94DA2A8AE090E0909315 |
:1056B000AD038093AC030E94D62ACDC084E10E9442 |
:1056C000DE2AC9C082E10E94DE2AC5C080911C0387 |
:1056D0000E94DE2AC0C080E10E94DE2ABCC0809108 |
:1056E0001B030E94DE2AB7C080911A030E94DE2AA3 |
:1056F000B2C080914804E82FFF27E65CF64F8F5F29 |
:105700008093480480810E94DE2AA5C090914804BD |
:10571000292FE92FFF27EE0FFF1FEE0FFF1FE9587C |
:10572000FA4F858518160CF054C09C3009F467C0F8 |
:10573000990F892F8E5A0E94DE2A8DC080914704CE |
:10574000E82FFF27EA5CF74F8091BB0080830E941F |
:105750000D2B81C08091B900803409F46EC0809116 |
:105760004704E82FFF27EA5BF74F10828F5F8C30EA |
:1057700068F1109247040E94DA2A1092490480913D |
:105780004A048093460410924A0465C08091B9008F |
:10579000803309F440C00E94DA2A8AE090E09093B6 |
:1057A000AD038093AC03109249040E94D62A53C0E3 |
:1057B0000E94DA2A8AE090E09093AD038093AC03D4 |
:1057C00067CF809347040E94DA2A62CF8093470410 |
:1057D000D2CF9C3008F0A9CF922F9F5FE92FFF27EF |
:1057E000EE0FFF1FEE0FFF1FE958FA4F85851816C1 |
:1057F0001CF0292F9C3080F39093480496CF109290 |
:10580000480483E08093490480914704880F8D5AAF |
:105810000E94DE2A20C080914A048823C9F4909116 |
:10582000480490934A04E92FFF27E75DF74F8081F2 |
:105830008F5F09F48FEF8083AECF80914704E82F0C |
:10584000FF27EA5BF74F8C5F80830E94092B97CF7D |
:1058500090914804E8CF8091BC0080688093BC00A0 |
:10586000FF91EF91BF91AF919F918F917F916F9138 |
:105870005F914F913F912F910F900FBE0F901F900E |
:10588000189582EC8093810080916F0080628093F4 |
:105890006F001092E2041092E1041092E40410925E |
:1058A000E3041092E6041092E50408951F920F920B |
:1058B0000FB60F921124EF92FF920F931F932F9325 |
:1058C0003F934F935F936F937F938F939F93AF9388 |
:1058D000BF93CF93DF93EF93FF9320918600309196 |
:1058E000870080914C0490914D04281B390B309314 |
:1058F000EA072093E907C90137FD8BC09C01359564 |
:105900002795809186009091870090934D04809315 |
:105910004C04C90189599840875E954370F4809181 |
:105920004E0490914F0404970CF070C0C1E0D0E099 |
:10593000D0934F04C0934E048CC0C0914E04D091BC |
:105940004F04CA30D1050CF084C0C9018B5F904070 |
:105950008356944008F058C0225C3340FE01EC0F9F |
:10596000FD1FED5AF74F80819181F901E81BF90B7A |
:10597000CF01F7FD6AC006972CF480918204883C21 |
:1059800008F45AC0FE01EC0FFD1FED5AF74F80815D |
:105990009181AC01440F551F480F591F420F531FEF |
:1059A00057FD50C07A01F594E794F594E794C90146 |
:1059B00001968E159F057CF50894E108F108809109 |
:1059C0008204833C88F18E010C0F1D1FF801ED5AF3 |
:1059D000F74F808191819701281B390BC90163E042 |
:1059E00070E00E940A6ACB01880F991F860F971FEB |
:1059F0000759174FF80191838083FE01EC0FFD1FBB |
:105A0000ED5AF74FF182E082219692CF10928403F3 |
:105A10008DCF019673CF21503040E216F3067CF60D |
:105A20000894E11CF11CCBCFFE01EC0FFD1FE759E0 |
:105A3000F74F11821082E1CF80918204865F8093BC |
:105A40008204A0CF4D5F5F4FADCF909581959F4F62 |
:105A500092CFFF91EF91DF91CF91BF91AF919F9145 |
:105A60008F917F916F915F914F913F912F911F91F6 |
:105A70000F91FF90EF900F900FBE0F901F90189511 |
:105A800081E08093870882E08093860883E080939A |
:105A9000850884E08093880885E08093890886E003 |
:105AA00080938A0887E080938B0888E080938C0835 |
:105AB00008951F938AE680938D0851E05093DD0886 |
:105AC0004EE140938E088BEF809390088AE080939C |
:105AD000910840938F084093930885E08093940841 |
:105AE00080E4809395081092960884E18093920850 |
:105AF0008EE080939708E0E1E09398081CE0109313 |
:105B00009908F8E0F0939A0886EE80939B084093FA |
:105B10009C0880E880939D0830E530939E0896E9C4 |
:105B200090939F0883E08093A0083093A1089093FE |
:105B3000A20881E28093A30883E28093A4084093A3 |
:105B4000A5081092A60860E26093A7081092A80822 |
:105B50001092A9081092AA081092AB081092C008DF |
:105B60001092C1081092C2081092C30824E6209334 |
:105B7000AC0898E29093AD085093DC081092AE0800 |
:105B80008AEF8093AF0876E07093B4082093B00852 |
:105B90009093B1081092B2088093B30882E3809387 |
:105BA000B5089AE59093B6088093B7081092DB0881 |
:105BB0009093B8083093B9085093BA0885E580935C |
:105BC000BB088093BC08E093BD086093BE08209397 |
:105BD000BF088FE58093C40883EF8093C6088AEAE4 |
:105BE0008093C8088093C9088FE08093C50880938C |
:105BF000C7088CEF8093CA082093CB089093CC08F9 |
:105C00009093CD089093CE088BE48093CF08809337 |
:105C1000D0088093D1081092D2087093D308F093E3 |
:105C2000D4089093D5084093D6082093D7082093A2 |
:105C3000D80884E08093D908AEEAB3E0EEEDF8E04E |
:105C40000D9001921A95E1F71F9108958AE68093CD |
:105C50008D0871E07093DD085EE150938E088BEF44 |
:105C6000809390089AE09093910850938F085093F6 |
:105C7000930885E08093940880E4809395081092BF |
:105C800096088FE0809392089093970880E1809324 |
:105C9000980866E060939908E8E0E0939A0886EE39 |
:105CA00080939B0850939C0880E880939D082AE588 |
:105CB00020939E0898E790939F0883E08093A00824 |
:105CC0002093A1089093A20881E28093A30883E225 |
:105CD0008093A4085093A5081092A60840E2409330 |
:105CE000A7081092A8081092A9081092AA0810926A |
:105CF000AB081092C0081092C1081092C20810920E |
:105D0000C30834E63093AC0898E29093AD087093E2 |
:105D1000DC081092AE088AEF8093AF086093B40855 |
:105D20003093B0089093B1081092B2088093B308F2 |
:105D300082E38093B5082093B6088093B708109249 |
:105D4000DB082093B80880E58093B9088CE3809342 |
:105D5000BA0885E58093BB088093BC084093BD08D2 |
:105D60004093BE089BE49093BF088FE58093C408DE |
:105D700083EF8093C6088AEA8093C8088093C90895 |
:105D800084E18093C5088093C7088CEF8093CA088C |
:105D90003093CB082093CC082093CD082093CE08D5 |
:105DA0009093CF089093D0089093D1081092D20886 |
:105DB0006093D308E093D4082093D5085093D60875 |
:105DC0003093D7083093D80884E08093D9088CE0CA |
:105DD000A5EBB3E0EEEDF8E00D9001928A95E1F7C6 |
:105DE00008958AE680938D0871E07093DD084EE196 |
:105DF00040938E088BEF809390088AE080939108FF |
:105E000040938F084093930885E08093940880E442 |
:105E100080939508109296088FE08093920868E02E |
:105E20006093970820E12093980856E050939908D2 |
:105E300060939A0886EE80939B0840939C0880E8C4 |
:105E400080939D0834E630939E0898E790939F08CE |
:105E500083E08093A0083093A1089093A20881E288 |
:105E60008093A30883E28093A40884E18093A5082B |
:105E70001092A6082093A7081092A8081092A908CB |
:105E80001092AA081092AB081092C0081092C10894 |
:105E90001092C2081092C3083093AC0898E2909315 |
:105EA000AD087093DC081092AE088AEF8093AF08BB |
:105EB0005093B4083093B0089093B1081092B20890 |
:105EC0008093B30892E39093B5082AE52093B6082F |
:105ED0009093B7081092DB082093B80880E5809370 |
:105EE000B90886E48093BA0885E58093BB0880935F |
:105EF000BC0880E28093BD088093BE089093BF08E1 |
:105F00008FE58093C40883EF8093C6088AEA809364 |
:105F1000C8088093C9084093C5084093C7088CEF10 |
:105F20008093CA083093CB082093CC082093CD08E7 |
:105F30002093CE088BE48093CF088093D008809381 |
:105F4000D1081092D2085093D3086093D4082093BC |
:105F5000D5084093D6083093D7083093D80884E00A |
:105F60008093D9088CE0ADEBB3E0EEEDF8E00D9056 |
:105F700001928A95E1F708956817790744F4680F4C |
:105F8000791F77FD09C0CB01959587950895681B0A |
:105F9000790B861B970B08956F5F7F4FCB0195950B |
:105FA00087950895EF92FF920F931F93CF93C82F79 |
:105FB0008B01809178048823A9F4C150CF3F91F0E0 |
:105FC0007B01E60EF71E1093FC030093FB03809108 |
:105FD000FB039091FC03892BD1F7C7010E940518A0 |
:105FE000C15088F7CF911F910F91FF90EF900895C6 |
:105FF0002F923F924F925F926F927F928F929F92D9 |
:10600000AF92BF92CF92DF92EF92FF920F931F93C6 |
:10601000CF93DF93CDB7DEB7ED970FB6F894DEBF21 |
:106020000FBECDBF2091E1043091E20480911E04A7 |
:1060300090911F04281B390B3A872987309349090F |
:1060400020934809209128043091290437FDD4C7B2 |
:106050003595279535952795359527953AA729A7FD |
:106060003C872B877901209126043091270437FD46 |
:10607000C0C73595279535952795359527953CA724 |
:106080002BA73E872D87F0920909E09208093093EB |
:10609000FF082093FE088091370990913809AA27BC |
:1060A00097FDA095BA2F7C018D01EE0CFF1C001FFF |
:1060B000111FE80EF91E0A1F1B1F80911A049091F0 |
:1060C0001B049C01442737FD4095542FDA01C90178 |
:1060D000880F991FAA1FBB1F880F991FAA1FBB1FDC |
:1060E000820F931FA41FB51F820F931FA41FB51FFC |
:1060F000E80EF91E0A1F1B1F17FD9CC71595079573 |
:10610000F794E79415950795F794E794F09238097A |
:10611000E09237098091530990915409AA2797FD7D |
:10612000A095BA2F7C018D01EE0CFF1C001F111FE2 |
:10613000E80EF91E0A1F1B1F80911C0490911D047C |
:106140009C01442737FD4095542FDA01C901880F7F |
:10615000991FAA1FBB1F880F991FAA1FBB1F820F61 |
:10616000931FA41FB51F820F931FA41FB51FE80E16 |
:10617000F91E0A1F1B1F17FD54C715950795F794A5 |
:10618000E79415950795F794E794F0925409E092F7 |
:1061900053098091060990910709AA2797FDA095B8 |
:1061A000BA2F9C01AD01220F331F441F551F280F2A |
:1061B000391F4A1F5B1F8091180490911904AA2768 |
:1061C00097FDA095BA2F280F391F4A1F5B1F57FD57 |
:1061D00016C7559547953795279555954795379502 |
:1061E0002795309307092093060920911A043091CE |
:1061F0001B04C901880F991F880F991F820F931FD5 |
:10620000820F931FAA2797FDA095BA2F2091BD0456 |
:106210003091BE044091BF045091C004820F931F7F |
:10622000A41FB51F8093BD049093BE04A093BF0428 |
:10623000B093C00420911C0430911D04C901880F43 |
:10624000991F880F991F820F931F820F931FAA27F0 |
:1062500097FDA095BA2F2091B9043091BA044091CE |
:10626000BB045091BC04820F931FA41FB51F8093E1 |
:10627000B9049093BA04A093BB04B093BC0480917A |
:1062800011099091120920911A0430911B04820F78 |
:10629000931F909312098093110980914B0990915B |
:1062A0004C0920911C0430911D04820F931F909380 |
:1062B0004C0980934B098091D7049091D8040196A2 |
:1062C0009093D8048093D7048091B5049091B6043C |
:1062D000A091B704B091B804BC01CD010E945169EE |
:1062E0005B016C0180910D0890910E08AA2797FD23 |
:1062F000A095BA2FBC01CD010E9451697B018C0190 |
:106300008091D3049091D404A091D504B091D60487 |
:106310009C01AD01C801B7010E94F168DC01CB010D |
:106320009C01AD01C601B5010E94F268DC01CB0100 |
:10633000BC01CD010E943469DC01CB018093B5041E |
:106340009093B604A093B704B093B8048FEC8093F5 |
:106350007A00109219032090A5043090A604409072 |
:10636000A7045090A80439E423163BE6330631E035 |
:10637000430630E053060CF414C188E49BE6A1E028 |
:10638000B0E08D839E83AF83B8876090AD0470903A |
:10639000AE048090AF049090B00439E463163BE6FD |
:1063A000730631E0830630E093060CF4DCC488E425 |
:1063B0009BE6A1E0B0E089839A83AB83BC834985E7 |
:1063C0005A85CA01AA2797FDA095BA2F20919D044E |
:1063D00030919E0440919F045091A004280F391FD2 |
:1063E0004A1F5B1F2DA33EA34FA358A7A0904F09A0 |
:1063F000B0905009C0905109D0905209A80EB91E12 |
:10640000CA1EDB1E8601750130916B043BA333234A |
:1064100009F0DAC080916A04882309F0C2C440916F |
:106420008D084CA346FF13C6EBA5FCA5CF01AA27F8 |
:1064300097FDA095BA2FBC01CD0129813A814B81EE |
:106440005C810E94CB699B01AC0197FD2CC7BBE02E |
:106450005595479537952795BA95D1F780918E0335 |
:10646000E82EFF2400271127C801B7010E94CB693D |
:1064700097FD14C7ACE09595879577956795AA9594 |
:10648000D1F76F87788B898B9A8B6093F104709327 |
:10649000F2048093F3049093F40429A53AA5C9016A |
:1064A000AA2797FDA095BA2FBC01CD012D813E8171 |
:1064B0004F8158850E94CB699B01AC0197FD01C7B4 |
:1064C000FBE05595479537952795FA95D1F7C80183 |
:1064D000B7010E94CB6997FDEFC6DC01CB01ECE070 |
:1064E000B595A79597958795EA95D1F78093F5048B |
:1064F0009093F604A093F704B093F8042091F1046C |
:106500003091F2043093800820937F082091F504A5 |
:106510003091F60430938408209383082F853889BE |
:1065200049895A89821B930BA40BB50B8AAF9BAF89 |
:10653000ACAFBDAF8093F5049093F604A093F7043D |
:10654000B093F804A80EB91ECA1EDB1E86017501A1 |
:1065500030918D033DA7332309F0A3C58EA79FA7D4 |
:10656000A8ABB9ABB7FD61C62EA53FA548A959A9EF |
:1065700055954795379527958DA19EA1AFA1B8A5B3 |
:10658000821B930BA40BB50B8DA39EA3AFA3B8A73F |
:1065900080939D0490939E04A0939F04B093A004C5 |
:1065A0008CC598EB291694E939069EEF49069FEFB2 |
:1065B00059060CF0F1C328EB34E94EEF5FEF2D8361 |
:1065C0003E834F835887E1CE2DA13EA14FA158A510 |
:1065D00020939D0430939E0440939F045093A00405 |
:1065E00030918D083CA31092840810928308109279 |
:1065F000800810927F081092ED041092EE04109221 |
:10660000EF041092F0041092E9041092EA04109240 |
:10661000EB041092EC0430918D033DA78091ED04C2 |
:106620009091EE04A091EF04B091F004BC01CD0173 |
:1066300024E630E040E050E00E943F6ADA01C90100 |
:106640004091E9045091EA04481B590B58A34F8F1D |
:106650008091E9049091EA04A091EB04B091EC04DC |
:10666000BC01CD0124E630E040E050E00E943F6AEA |
:10667000DA01C9012091ED043091EE04821B930BE5 |
:106680009AA389A38091860390918703A0918803A0 |
:10669000B0918903BC01CD0128E631E040E050E033 |
:1066A0000E94CB69E616F7060807190744F0570160 |
:1066B0006801A61AB70AC80AD90A8601750117FD2A |
:1066C000A3C4A0924F09B0925009C0925109D09230 |
:1066D00052092BA53CA58F8D98A1280F391F790150 |
:1066E0000027F7FC0095102F8091A1049091A2043F |
:1066F000A091A304B091A404E80EF91E0A1F1B1F69 |
:106700005701680180916E0490916F04281B390B2A |
:10671000C901AA2797FDA095BA2F280E391E4A1E37 |
:106720005B1E2091A2033091A3034091A4035091DA |
:10673000A503221533054405550574F4A8EAEA2E8D |
:10674000A1E6FA2E012D112DE21AF30A040B150B06 |
:10675000170128015701680188279927DC01821B4E |
:10676000930BA40BB50B281639064A065B060CF0F2 |
:10677000E9C2F8E52F2EFEE93F2EFFEF4F2EFFEF87 |
:106780005F2E220E331E441E551E2092A504309209 |
:10679000A6044092A7045092A8048201710120929D |
:1067A000A1043092A2044092A3045092A40429A50B |
:1067B0003AA5A9A1BAA12A0F3B1FA901662757FD37 |
:1067C0006095762F8091A9049091AA04A091AB04C2 |
:1067D000B091AC04480F591F6A1F7B1F5A016B010F |
:1067E00080916C0490916D04281B390BC901AA2774 |
:1067F00097FDA095BA2F680E791E8A1E9B1E809168 |
:10680000A6039091A703A091A803B091A9038EAB12 |
:106810009FABA8AFB9AF86159705A805B90564F475 |
:1068200048EA51E660E070E0481B590B6A0B7B0BAD |
:106830003A014B015A016B018EA99FA9A8ADB9ADD0 |
:10684000B095A095909581959F4FAF4FBF4F68161B |
:1068500079068A069B060CF064C2E8E56E2EEEE926 |
:106860007E2EEFEF8E2EEFEF9E2E2EA93FA948AD84 |
:1068700059AD620E731E841E951E6092AD04709217 |
:10688000AE048092AF049092B004B401A301609270 |
:10689000A9047092AA048092AB049092AC048DA1DA |
:1068A0009EA1AFA1B8A58093B1049093B204A09328 |
:1068B000B304B093B4046092CD047092CE0480927D |
:1068C000CF049092D0042092C5043092C604409226 |
:1068D000C7045092C8044093C9045093CA046093FB |
:1068E000CB047093CC04E092C104F092C2040093F4 |
:1068F000C3041093C404809125039091260397FD4F |
:10690000A4C37C01F594E794F594E794F594E79497 |
:10691000FAA6E9A6809123039091240397FD93C3DF |
:106920008C011595079515950795159507951CA745 |
:106930000BA780912204909123040F9734F458E11F |
:10694000E52E5CEFF52EFAA6E9A68091220490913F |
:106950002304079734F440E3E42E48EFF42EFAA61C |
:10696000E9A6209102012A3009F46BC28091220429 |
:1069700090912304815D97400CF007C2809122041E |
:1069800090912304805E974034F080EDE82E87E0FC |
:10699000F82EFAA6E9A680912004909121040F9781 |
:1069A00024F408E11CEF1CA70BA780912004909110 |
:1069B0002104079724F400E318EF1CA70BA72A3043 |
:1069C00009F455C28091200490912104815D974083 |
:1069D00024F008EE13E01CA70BA7809120049091EF |
:1069E0002104805E974024F000ED17E01CA70BA760 |
:1069F000A0919903AA2309F497C06091250370918F |
:106A000026038091F9049091FA04681B790B209178 |
:106A1000250330912603280F391F37FD3FC33595D5 |
:106A200027953093FA042093F904613871050CF42A |
:106A30003AC260E870E0709300056093FF048A2F0B |
:106A40009927869FF001879FF00D969FF00D1124E6 |
:106A5000CF01F7FD21C37C01F594E794F594E79409 |
:106A6000F594E794F594E79429A53AA5E20EF31E70 |
:106A7000FAA6E9A640912303509124038091FB04D8 |
:106A80009091FC04481B590B20912303309124035F |
:106A9000280F391F37FDFDC2359527953093FC042B |
:106AA0002093FB04413851050CF4F5C140E850E057 |
:106AB0005093FE044093FD048A2F9927849FD001B0 |
:106AC000859FB00D949FB00D1124AD019D01B7FDC0 |
:106AD000DDC28901159507951595079515950795BB |
:106AE00015950795EBA5FCA50E0F1F1F1CA70BA75F |
:106AF000869F9001879F300D969F300D1124C9010C |
:106B00002091250330912603820F931F9093260333 |
:106B1000809325038091230390912403480F591FEC |
:106B200050932403409323034D855E851416150668 |
:106B30000CF0C1C180917F089091800897FDA2C29E |
:106B4000AA2797FDA095BA2F6DA5262F3327442796 |
:106B50005527BC01CD010E94CB6997FD8EC2E6E0AE |
:106B60009595879577956795EA95D1F7AF8DB8A1FB |
:106B7000A60FB71FB093FA08A093F9084B855C8560 |
:106B8000141615060CF0C1C18091830890918408F9 |
:106B900097FD6FC2AA2797FDA095BA2F6DA5262F46 |
:106BA000332744275527BC01CD010E94CB6997FDAF |
:106BB0005BC246E095958795779567954A95D1F79D |
:106BC000A9A1BAA1A60FB71FB093EF08A093EE0832 |
:106BD0003CA137FDC1C11093ED080093EC08F09281 |
:106BE000FC08E092FB0880918908E82FFF27EE0F50 |
:106BF000FF1FED5AF74F8081918182599F4FA091DD |
:106C00008904B0918A04A817B9070CF0EEC0CD0131 |
:106C1000019690938A0480938904DC0180918A080C |
:106C2000E82FFF27EE0FFF1FED5AF74F808191816C |
:106C300082599F4F60918704709188046817790783 |
:106C40000CF0C4C0CB010196909388048093870414 |
:106C5000BC0180918B08E82FFF27EE0FFF1FED5A34 |
:106C6000F74F8081918182599F4F409185045091C7 |
:106C70008604481759070CF0D5C0CA0101969093B5 |
:106C8000860480938504AC0180918C08E82FFF274F |
:106C9000EE0FFF1FED5AF74F8081918182599F4F70 |
:106CA0002091830430918404281739070CF0ABC07D |
:106CB000C901019690938404809383049C01B7FDDD |
:106CC00093C1AF3FB10539F034F08FEF90E090936E |
:106CD0008A048093890477FD76C16F3F710539F08E |
:106CE00034F08FEF90E0909388048093870457FDF1 |
:106CF00070C14F3F510539F034F08FEF90E0909321 |
:106D000086048093850437FD6AC12F3F310509F061 |
:106D10000CF4EEC28FEF90E0909384048093830490 |
:106D2000E7C26092AD047092AE048092AF0490927C |
:106D3000B004A092A904B092AA04C092AB04D0926D |
:106D4000AC04ADCD2092A5043092A6044092A704D5 |
:106D50005092A804A092A104B092A204C092A304ED |
:106D6000D092A40424CD98EB691694E979069EEF9D |
:106D700089069FEF99062CF528EB34E94EEF5FEF7B |
:106D800029833A834B835C831ACB98EEE92E93E0F8 |
:106D9000F92EFAA6E9A6F2CD2D823E824F825886C0 |
:106DA000F4CA8DA19EA1AFA1B8A580939D04909334 |
:106DB0009E04A0939F04B093A00490918D089CA37F |
:106DC00012CC69827A828B829C82F9CA80819181FD |
:106DD00082599F4F861797070CF03BCF61157105BD |
:106DE00009F437CFCB0101972FCF80819181825950 |
:106DF0009F4F8A179B070CF011CF109709F40ECF05 |
:106E0000CD01019706CF8081918182599F4F8217D2 |
:106E100093070CF054CF2115310509F450CFC90167 |
:106E2000019748CF8081918182599F4F84179507A0 |
:106E30000CF02ACF4115510509F426CFCA0101975C |
:106E40001ECF8091220490912304835F934034F0FD |
:106E500038EEE32E33E0F32EFAA6E9A68091220461 |
:106E6000909123048A5F93400CF495CD8ECD809150 |
:106E7000200490912104835F934024F008EE13E0F6 |
:106E80001CA70BA780912004909121048A5F934056 |
:106E90000CF4AECDA9CD3FEF403853070CF008CE2F |
:106EA00040E85FEF05CE8FEF603878070CF0C3CD78 |
:106EB00060E87FEFC0CD80917F089091800897FDBA |
:106EC0009BC1AA2797FDA095BA2FEDA52E2F33279A |
:106ED00044275527BC01CD010E94CB6997FDADC168 |
:106EE00056E095958795779567955A95D1F72F8DAB |
:106EF00038A1261B370B3093FA082093F9084B85ED |
:106F00005C85141615060CF43FCE80918308909191 |
:106F1000840897FD6DC1AA2797FDA095BA2FEDA50E |
:106F20002E2F332744275527BC01CD010E94CB6962 |
:106F300097FD88C136E095958795779567953A9541 |
:106F4000D1F729A13AA1261B370B3093EF082093E4 |
:106F5000EE083CA137FF3FCE4BA1442309F03BCEC6 |
:106F600080916A04882309F036CE8B859C85A1E048 |
:106F700081309A070CF044C12B853C854FEF2030BF |
:106F800034070CF0A3C189A59AA5280F391F3C87A7 |
:106F90002B8720503F4F3093FC082093FB08AD8592 |
:106FA000BE85E1E0A130BE070CF465C12BA53CA570 |
:106FB000A20FB31FBE87AD87A050B140B093ED08BC |
:106FC000A093EC0810CE109288041092870457FF0B |
:106FD00090CE109286041092850437FF96CE1092C0 |
:106FE00084041092830484C110928A04109289044C |
:106FF00072CE295F3F4F3DC8295F3F4F29C82D5FA3 |
:107000003F4F4F4F5F4FE5C8E60EF71E081F191F91 |
:10701000E0924F09F09250090093510910935209E0 |
:1070200058CB23E030E040E050E0E20EF31E041FB6 |
:10703000151FA3C883E090E0A0E0B0E0E80EF91EC1 |
:107040000A1F1B1F5BC807966BCC07965ACC2DA155 |
:107050003EA14FA158A520939D0430939E044093D8 |
:107060009F045093A004BFCA615C7F4F8F4F9F4F16 |
:10707000A0CD909581959F4F8DCD615C7F4F8F4FB7 |
:107080009F4F6DCD909581959F4F5ACD215F3F4F7A |
:1070900020CD2F5F3F4F00CD0F96DDCC2F5F3F4FB0 |
:1070A000BECC2DA13EA14FA158A520939D043093A5 |
:1070B0009E0440939F045093A00489859A85AA2733 |
:1070C00097FDA095BA2F2AAD3BAD4CAD5DAD820FBB |
:1070D000931FA41FB51F8B8B9C8BAD8BBE8BBC01EC |
:1070E000CD0129813A814B815C810E94CB699B0152 |
:1070F000AC0197FDBBC06BE055954795379527953B |
:107100006A95D1F760918F03862F9927AA27BB270D |
:107110008F8B988FA98FBA8FBC01CD010E94CB694C |
:1071200097FD9FC02CE095958795779567952A9553 |
:10713000D1F76B8F7C8F8D8F9E8F6093E904709356 |
:10714000EA048093EB049093EC046B897C898D892D |
:107150009E892D813E814F8158850E94CB699B017C |
:10716000AC0197FD79C08BE05595479537952795EC |
:107170008A95D1F76F89788D898D9A8D0E94CB6918 |
:1071800097FD65C0BCE09595879577956795BA950D |
:10719000D1F76AAB7BAB8CAB9DAB6093ED04709386 |
:1071A000EE048093EF049093F00429853A8537FD2F |
:1071B0007FC0213431050CF431CA6B8D7C8D8D8DEF |
:1071C0009E8D97FD2AC0613871058105910564F493 |
:1071D0006AA97BA98CA99DA997FD82C06138710518 |
:1071E000810591050CF41ACA81E080938D0416CABA |
:1071F000909581959F4F8FCE909581959F4F61CEB1 |
:10720000E9A5FAA58E0F9F1F9C878B878050914020 |
:107210009093FC088093FB08C2CE90958095709562 |
:1072200061957F4F8F4F9F4FCECF0196A11DB11D0E |
:107230008EA79FA7A8ABB9AB97C9615C7F4F8F4F53 |
:107240009F4F4ECE615C7F4F8F4F9F4F73CE6150EB |
:10725000704F8F4F9F4F96CF2150384F4F4F5F4FFA |
:1072600082CF6150704F8F4F9F4F5CCF2150384F6E |
:107270004F4F5F4F40CF4D855E856FEF40305607D3 |
:1072800054F58BA59CA5480F591F5E874D8740502C |
:107290005F4F5093ED084093EC08A5CC6150704FC0 |
:1072A0008F4F9F4FE7C82150384F4F4F5F4FCFC888 |
:1072B000309521953F4F7DCF6150704F8F4F9F4F3D |
:1072C0000CC92150384F4F4F5F4FFAC8F092FC085D |
:1072D000E092FB0864CE1093ED080093EC0883CC99 |
:1072E00090958095709561957F4F8F4F9F4F76CF8A |
:1072F000ED960FB6F894DEBF0FBECDBFDF91CF91F4 |
:107300001F910F91FF90EF90DF90CF90BF90AF90C3 |
:107310009F908F907F906F905F904F903F902F90B5 |
:107320000895809102018D3009F455C110927A00C0 |
:1073300080912204909123049093FC088093FB0891 |
:1073400080912004909121049093ED088093EC08A3 |
:1073500080911E0490911F049093490980934809DD |
:1073600080911A0490911B049C01442737FD40959D |
:10737000542FDA01C901880F991FAA1FBB1F880F5C |
:10738000991FAA1FBB1F820F931FA41FB51F820F37 |
:10739000931FA41FB51F90933809809337098091DC |
:1073A0001C0490911D049C01442737FD4095542FE7 |
:1073B000DA01C901880F991FAA1FBB1F880F991FE7 |
:1073C000AA1FBB1F820F931FA41FB51F820F931FFD |
:1073D000A41FB51F909354098093530980911804FA |
:1073E0009091190490930709809306098FEC80937C |
:1073F0007A0080918908E82FFF27EE0FFF1FED5AD2 |
:10740000F74F8081918182599F4FA0918904B0915B |
:107410008A04A817B9070CF085C0CD010196909396 |
:107420008A0480938904DC0180918A08E82FFF2771 |
:10743000EE0FFF1FED5AF74F8081918182599F4FC8 |
:107440006091870470918804681779070CF096C0E2 |
:10745000CB0101969093880480938704BC018091AE |
:107460008B08E82FFF27EE0FFF1FED5AF74F8081A3 |
:10747000918182599F4F409185045091860448170D |
:1074800059070CF06CC0CA01019690938604809352 |
:107490008504AC0180918C08E82FFF27EE0FFF1FB9 |
:1074A000ED5AF74F8081918182599F4F209183043B |
:1074B00030918404281739070CF042C0C9010196A5 |
:1074C00090938404809383049C01B7FD7FC0AF3FF9 |
:1074D000B10511F00CF061C077FD67C06F3F710519 |
:1074E00039F034F08FEF90E0909388048093870414 |
:1074F00057FD61C04F3F510539F034F08FEF90E0F8 |
:10750000909386048093850437FD5BC02F3F31053F |
:1075100009F00CF463C08FEF90E0909384048093A3 |
:1075200083045CC08081918182599F4F8A179B0799 |
:107530000CF07ACF109709F477CFCD0101976FCF78 |
:107540008081918182599F4F821793070CF0BDCFA4 |
:107550002115310509F4B9CFC9010197B1CF808157 |
:10756000918182599F4F841795070CF093CF411555 |
:10757000510509F48FCFCA01019787CF808191818E |
:1075800082599F4F861797070CF069CF61157105D7 |
:1075900009F465CFCB0101975DCF8FEF90E0909319 |
:1075A0008A048093890477FF99CF109288041092FF |
:1075B000870457FF9FCF109286041092850437FFEF |
:1075C000A5CF109284041092830408C010928A04FC |
:1075D0001092890481CF0E94AC1CA8CE8091BB0878 |
:1075E0009927AA27BB27BC01CD0124EC39E040E054 |
:1075F00050E00E94CB69DC01CB018093A6039093FD |
:10760000A703A093A803B093A9038091BC0899276E |
:10761000AA27BB27BC01CD010E94CB69DC01CB01AD |
:107620008093A2039093A303A093A403B093A50314 |
:1076300008956F927F928F929F92AF92BF92CF9256 |
:10764000DF92EF92FF920F931F93CF9300E010E031 |
:1076500078016801469A1093DC040093DB041093D0 |
:10766000DA040093D90480E090E0A0E0B0E08093D9 |
:10767000D3049093D404A093D504B093D60410936C |
:10768000E6040093E5041093E4040093E3041093EC |
:10769000E2040093E1041093190900931809109271 |
:1076A0008F0310928E03109212040E94913984E687 |
:1076B00090E00E9412180E94913980918D0880FFFD |
:1076C00010C080911D0390911E03875B934008F0CA |
:1076D000FBC180911D0390911E038E5E924008F4C1 |
:1076E000F3C1CFE18AE090E00E94121880911E045D |
:1076F00090911F04080F191F809122049091230478 |
:10770000E80EF91E8091200490912104C80ED91E24 |
:10771000C150C7FFE7CFA701405F5F4F5695479520 |
:10772000569547955093E6044093E5049601205FF3 |
:107730003F4F36952795369527953093E40420934F |
:10774000E304C801409696958795929582958F702F |
:1077500089279F7089279093E2048093E104909396 |
:107760001909809318093093E0042093DF045093A3 |
:10777000DE044093DD0444E050E0DA010E945A6ADE |
:10778000802D853008F4A3C180915309909154094C |
:1077900097FDD2C16CE070E00E940A6A7093DA042F |
:1077A0006093D904809137099091380997FDD5C12C |
:1077B0006CE070E00E940A6A7093DC046093DB0462 |
:1077C00080910D0890910E08AA2797FDA095BA2FD9 |
:1077D000BC01CD010E945169DC01CB018093D3042F |
:1077E0009093D404A093D504B093D6041092FC08CF |
:1077F0001092FB081092ED081092EC0810924909C3 |
:107800001092480984E690E00E94121880911A04B0 |
:1078100090911B04AA2797FDA095BA2F9C01AD015A |
:10782000220F331F441F551F220F331F441F551FA4 |
:10783000280F391F4A1F5B1F280F391F4A1F5B1F64 |
:10784000309338092093370980911C0490911D04CE |
:10785000AA2797FDA095BA2F7C018D01EE0CFF1C85 |
:10786000001F111FEE0CFF1C001F111FE80EF91E58 |
:107870000A1F1B1FE80EF91E0A1F1B1FF092540956 |
:10788000E092530980919C08682E772488249924DB |
:10789000C9019C01442737FD4095542FC401B30111 |
:1078A0000E94CB695B016C016093CD047093CE04A0 |
:1078B0008093CF049093D0049701442737FD4095DF |
:1078C000542FC401B3010E94CB69DC01CB0180932A |
:1078D000C5049093C604A093C704B093C804A092B3 |
:1078E000A904B092AA04C092AB04D092AC048093D5 |
:1078F000A1049093A204A093A304B093A4041092B3 |
:107900009D0410929E0410929F041092A0048091F6 |
:107910001F0390912003A0912103B0912203909323 |
:10792000100880930F081092110410921004109206 |
:1079300095041092960410929704109298048091E6 |
:1079400093049091940490939204809391040E94E4 |
:10795000206082E390E09093FC038093FB0380918E |
:10796000BB089927AA27BB27BC01CD0124EC39E02D |
:1079700040E050E00E94CB69DC01CB018856954C79 |
:10798000AF4FBF4F8093A6039093A703A093A80384 |
:10799000B093A9038091BC089927AA27BB27BC01F3 |
:1079A000CD010E94CB69DC01CB018856954CAF4FCD |
:1079B000BF4F8093A2039093A303A093A403B0931B |
:1079C000A50310928B0310928A03809193049091E7 |
:1079D0009404AA2797FDA095BA2F20918603309191 |
:1079E00087034091880350918903BC01CD010E9417 |
:1079F000CB69DC01CB0180934F0990935009A09390 |
:107A00005109B093520910928C0410928B0481E0BA |
:107A1000809301010E9415648091510484608093D9 |
:107A200051048FEF8093B8091092B90980E28093D6 |
:107A3000BA0980918908E82FFF27EE0FFF1FED5A42 |
:107A4000F74F8081918182599F4F90938A04809350 |
:107A5000890480918A08E82FFF27EE0FFF1FED5A57 |
:107A6000F74F8081918182599F4F90938804809332 |
:107A7000870480918B08E82FFF27EE0FFF1FED5A38 |
:107A8000F74F8081918182599F4F90938604809314 |
:107A9000850480918C08E82FFF27EE0FFF1FED5A19 |
:107AA000F74F8081918182599F4F909384048093F6 |
:107AB000830484E6809382048091F903882309F487 |
:107AC00050C0469A579A4DC00E945A1C0ACEDA01FD |
:107AD0000E945A6A802D9927982F8827DA011196DB |
:107AE0000E945A6A202D820F911D9093DC0480938E |
:107AF000DB04DA0112960E945A6A802D9927982F8A |
:107B00008827DA0113960E945A6A202D820F911D50 |
:107B10009093DA048093D904DA0114960E945A6A89 |
:107B2000802D9927982F8827DA0115960E945A6A86 |
:107B3000202D820F911D48CE909581959F4F6CE02E |
:107B400070E00E940A6A7093DA046093D90480910D |
:107B500037099091380997FF2BCE909581959F4FCB |
:107B600027CECF911F910F91FF90EF90DF90CF9094 |
:107B7000BF90AF909F908F907F906F90089590915D |
:107B80007804992381F5809151048C7F809351046E |
:107B900010C0A92FBB27FD01E45FF84F8083FD01D2 |
:107BA000E45FF84F8081A65CB64F8C939F5F9C305A |
:107BB00080F48091DC03882361F3A92FBB27FD01AA |
:107BC000E45FF84F8081A65CB64F8C939F5F9C303A |
:107BD00080F38091DC03882359F08091DC0381508D |
:107BE0008093DC0305C0809151048160809351042F |
:107BF00080913A0999279093E2078093E107809159 |
:107C00003B0999279093E4078093E30780913D090E |
:107C100099279093E6078093E50780913C0999277F |
:107C20009093E8078093E707109249041092480464 |
:107C30000E94D62A0895809190088B3F68F08B3F70 |
:107C400009F4D5C28C3F09F474C38D3F09F4F6C220 |
:107C50008E3F21F48091830480939E0380918F084E |
:107C60008B3F08F439C28B3F09F434C28C3F09F4CE |
:107C700048C38D3F09F4D9C28E3F09F478C380917F |
:107C80009F03882309F02DC280939F038091910860 |
:107C90008B3F08F42DC28B3F09F428C28C3F09F4B6 |
:107CA00042C38D3F09F4C4C28E3F09F45AC3809188 |
:107CB0009D03882309F021C280939D03809193083E |
:107CC0008B3F68F08B3F09F495C28C3F09F42EC3BB |
:107CD0008D3F09F4B0C28E3F21F4809183048093DC |
:107CE0009C03809195088B3F68F08B3F09F479C223 |
:107CF0008C3F09F4E2C28D3F09F4BEC28E3F21F4ED |
:107D00008091830480939A0380919D088B3F68F053 |
:107D10008B3F09F469C28C3F09F4FCC28D3F09F422 |
:107D200090C28E3F21F48091830480939B038091C5 |
:107D30009E088B3F08F4E8C18B3F09F4E3C18C3FF8 |
:107D400009F4EEC28D3F09F494C28E3F09F412C3C8 |
:107D5000809198038B3008F4DCC18F3F11F480933D |
:107D6000980380919F088B3F68F08B3F09F427C2EE |
:107D70008C3F09F4D2C28D3F09F466C28E3F21F4D4 |
:107D800080918304809397038091A0088B3F68F0D3 |
:107D90008B3F09F417C28C3F09F489C28D3F09F467 |
:107DA0006EC28E3F21F48091830480939903809169 |
:107DB000A1088B3F68F08B3F09F407C28C3F09F4A0 |
:107DC00079C28D3F09F452C28E3F21F48091830421 |
:107DD000809396038091A2088B3F68F08B3F09F453 |
:107DE000F7C18C3F09F4ABC28D3F09F43CC28E3F12 |
:107DF00021F480918304809395032091A7082B3F61 |
:107E000008F48BC12B3F09F486C12C3F09F47CC2D6 |
:107E10002D3F09F404C22E3F09F4A6C2209193031A |
:107E20008091A8088B3F08F07FC180936504809102 |
:107E3000A9088B3F68F08B3F09F4D0C18C3F09F44F |
:107E400066C28D3F09F4EEC18E3F21F48091830418 |
:107E5000809364048091AA088B3F68F08B3F09F4FB |
:107E600084C18C3F09F471C28D3F09F4D2C18E3FA9 |
:107E700021F480918304809363048091AB088B3F4D |
:107E800068F08B3F09F474C18C3F09F461C28D3FE7 |
:107E900009F4C2C18E3F21F480918304809362046F |
:107EA0008091C0088B3F68F08B3F09F464C18C3F20 |
:107EB00009F454C28D3F09F4A3C18E3F21F480918F |
:107EC0008304809361048091C1088B3F68F08B3FED |
:107ED00009F454C18C3F09F42FC28D3F09F493C1BA |
:107EE0008E3F21F480918304809360048091C208C6 |
:107EF0008B3F68F08B3F09F444C18C3F09F4ECC11F |
:107F00008D3F09F4C5C18E3F21F480918304809395 |
:107F10005F048091C3088B3F68F08B3F09F434C144 |
:107F20008C3F09F4DCC18D3F09F4B5C18E3F21F4CB |
:107F30008091830480935E048091AC088B3F68F04D |
:107F40008B3F09F424C18C3F09F4CFC18D3F09F464 |
:107F500084C18E3F21F480918304809392038091A9 |
:107F6000B0088B3F68F08B3F09F414C18C3F09F4D3 |
:107F7000BFC18D3F09F474C18E3F21F48091830409 |
:107F8000809391038091B5088B3F68F08B3F09F493 |
:107F900004C18C3F09F4AFC18D3F09F458C18E3F35 |
:107FA00021F480918304809390038091B8088B3FE3 |
:107FB00068F08B3F09F4F4C08C3F09F49FC18D3FFA |
:107FC00009F448C18E3F21F48091830480938F038C |
:107FD0008091B9088B3F68F08B3F09F4E4C08C3F77 |
:107FE00009F46EC18D3F09F44DC18E3F21F480919B |
:107FF000830480938E038091BA088B3F68F08B3F97 |
:1080000009F4D4C08C3F09F464C18D3F09F43DC12B |
:108010008E3F21F48091830480938D038091BF086B |
:108020008B3F68F08B3F09F4C4C08C3F09F45AC100 |
:108030008D3F09F433C18E3F21F4809183048093F6 |
:108040008C038091C5088B3F08F47FC08B3F09F4F7 |
:108050007AC08C3F09F437C18D3F09F422C18E3FAD |
:1080600009F48BC180911309823008F473C08F3FEB |
:1080700011F4809313098091C7088B3F08F46EC0F8 |
:108080008B3F09F469C08C3F09F420C18D3F09F48E |
:108090000BC18E3F09F474C180914609823008F407 |
:1080A00062C08F3F11F4809346098091DA088B3FBC |
:1080B00070F08B3F09F480C08C3F09F44CC18D3FB8 |
:1080C00009F49BC08E3F09F05EC1809183048093C8 |
:1080D000560959C18091890480939F03882309F42C |
:1080E000D3CD843608F4D2CD84E6CECD80918904F8 |
:1080F00080939D03882309F4DFCD843608F4DECD18 |
:1081000084E6DACD80918904809398038B3008F05F |
:1081100024CE8AE024CE2091890420939303809179 |
:10812000A8088B3F08F481CE8B3F09F454C08C3FE4 |
:1081300009F408C18D3F09F469C08E3F09F077CE7C |
:108140008091830472CE80918904809313098230D8 |
:1081500008F08DCF81E08DCF80918904809346090E |
:10816000823008F09ECF81E09ECF8091890483CE3B |
:108170008091890493CE80918904A3CE8091890453 |
:10818000B3CE80918904C3CE80918904D3CE8091EF |
:108190008904E3CE80918904F3CE8091890403CFD2 |
:1081A0008091890413CF8091890423CF8091890421 |
:1081B00033CF8091890443CF8091890488CF809107 |
:1081C0008904E0CD80918904F0CD8091890400CEAE |
:1081D0008091890410CE8091890427CE80918904F2 |
:1081E00037CE809189048ECD809189049ECD809177 |
:1081F000890432CD8091890472CD8091850467CF46 |
:10820000809185045ECE809185046ECE8091850438 |
:108210000CCE809185042FCE809185043FCE209195 |
:1082200085047BCF8091850413CE8091850454CF43 |
:10823000809185045DCF8091850451CD8091850426 |
:108240000BCD8091850471CD809185049BCD80916B |
:108250008504A9CE80918504B9CE809185047DCE18 |
:10826000809185048DCE80918504C5CD8091850453 |
:10827000AFCD8091850448CF8091850443CD809116 |
:10828000850493CD80918504B4CE80918504C4CEBD |
:10829000809185043CCE809185044CCE80918504EC |
:1082A000CECE8091850451CF8091850457CF8091A7 |
:1082B00087047BCD809187048BCD8091870422CD6C |
:1082C0008091870496CE809187043FCF8091870468 |
:1082D00045CF80918704A0CE8091870418CE8091ED |
:1082E000870428CE80918704AACE8091870435CE5A |
:1082F0008091870445CE8091870455CE8091870474 |
:1083000065CE80918704E8CE2091870406CF8091C6 |
:1083100087049ECD8091870408CD8091870432CD5B |
:1083200080918704F1CE80918704E2CE809187040A |
:10833000D6CC8091870490CC80918704D5CD809154 |
:10834000870459CD8091870470CD8091870493CDA7 |
:1083500080918704A3CD80918704B9CE8091870452 |
:10836000B0CD80918304C4CE20918304D6CE809179 |
:108370008304B2CE80918304C7CE80918304E5CE7E |
:1083800080918304EBCE33272F5F3F4F8CE398E23D |
:10839000B9010E940A6A7093A1036093A0038091BF |
:1083A0009B088093470980919A088093000908955B |
:1083B0002F923F924F925F926F927F928F929F92F5 |
:1083C000AF92BF92CF92DF92EF92FF920F931F93E3 |
:1083D000CF93DF93CDB7DEB7ED970FB6F894DEBF3E |
:1083E0000FBECDBF80915004815009F485E0809389 |
:1083F00050040E94F82F209102012C3008F0BAC2DC |
:10840000299AA0907904B0907A04BA82A9828091C6 |
:10841000000999270A96A816B90614F49A83898345 |
:1084200080918204843608F0A7C280911D05909146 |
:108430001E05009709F081C41092780480915104C0 |
:108440008F7E809351042A3009F47FC4243109F4CB |
:108450007CC428988091520490915304895E934083 |
:1084600008F47CC48091A408282F33273A832983F9 |
:108470008091510480618093510480918508A82FD8 |
:10848000BB27AA0FBB1FFD01E759F74F11821082CE |
:1084900080918608282F3327220F331FC90187595F |
:1084A000974FFC0111821082AD5AB74F11961C9262 |
:1084B0001E922D5A374FD90111961C921E9280910F |
:1084C0008808E82FFF27EE0FFF1FED5AF74F1182A4 |
:1084D000108280918403815080938403809184036F |
:1084E0008F3F21F08091510484FF3BC40E941B3ECA |
:1084F00080912C0590912D05AC01440F551F480F1C |
:10850000591F00918508A02FBB27AA0FBB1FFD0193 |
:10851000ED5AF74FE0909708CE2CDD2480819181B1 |
:108520008C9D50018D9DB00C9C9DB00C11244A0D6A |
:108530005B1D57FF02C00C94CF5655954795559536 |
:108540004795A759B74F80919808682F77278D9145 |
:108550009C91869F9001879F300D969F300D11242E |
:10856000240F351F30932D0520932C058091630532 |
:108570009091640540915F0550916005840F951FAF |
:10858000281B390B3093800420937F0480912E05A3 |
:1085900090912F05AC01440F551F480F591F1091A2 |
:1085A0008608A12FBB27AA0FBB1FFD01ED5AF74F6D |
:1085B000808191818C9D90018D9D300D9C9D300D11 |
:1085C0001124420F531F57FF02C00C94CB565595F0 |
:1085D000479555954795A759B74F8D919C91869F83 |
:1085E0009001879F300D969F300D1124240F351F69 |
:1085F00030932F0520932E0580916105909162059F |
:1086000040915D0550915E05840F951F281B390B25 |
:1086100030937E0420937D0480918808E82FFF2703 |
:10862000EE0FFF1FED5AF74F808191819095819554 |
:108630009F4F8330910514F40C949D4D02979093B5 |
:108640007C0480937B0480918708E82FFF27EE0F3E |
:10865000FF1FED5AF74FC080D18048E750E0C40EAD |
:10866000D51E809198039927AA2797FDA095BA2F28 |
:10867000BC01CD010E945169DC01CB0120E030E05A |
:1086800040E251E4BC01CD010E94F268DC01CB0163 |
:10869000BC01CD010E943469DC01CB0180934D09FE |
:1086A000F0909703809196039927AA2797FDA095AC |
:1086B000BA2FBC01CD010E945169DC01CB0120E041 |
:1086C00030E040E251E4BC01CD010E94F268DC01DF |
:1086D000CB01BC01CD010E943469DC01CB01809348 |
:1086E000F3085091950350930A0980912E0780FF5B |
:1086F00006C080915609813810F00C94004ED0923B |
:108700007A04C09279048091790490917A0497FF59 |
:1087100002C00C94C556F0918D08FAA3F2FD02C078 |
:108720000C94E74D10921A0940917F0450918004F7 |
:10873000CA0157FF02C00C94F24D95958795959507 |
:10874000879597FF02C00C94FB4D20915604309101 |
:1087500057042817390714F00C94A54DCA0157FF88 |
:1087600002C00C94905A97FF02C00C94955ABC0119 |
:1087700075956795759567956536710514F40C9434 |
:10878000A84D64E670E040917D0450917E04CA01DA |
:1087900057FD02C00C94B14D03969595879595951C |
:1087A000879597FD02C00C94B94D909581959F4F88 |
:1087B00020915404309155042817390714F40C946F |
:1087C000C24D215030408091510484FD02C00C9470 |
:1087D000DD4D1092570410925604109255041092D9 |
:1087E0005404E12FFF27EE0FFF1FED5AF74F409182 |
:1087F000B608242F3327808191812817390734F454 |
:108800008091DB0882FF02C00C94744EE12FFF2799 |
:10881000EE0FFF1FED5AF74F842F99272091B708CD |
:10882000821B9109208131812817390714F4109295 |
:108830006904E12FFF27EE0FFF1FED5AF74F842F3A |
:10884000992722273327281B390B80819181821792 |
:10885000930734F48091DB0883FF02C00C946F4EC1 |
:1088600080916804882391F0E12FFF27EE0FFF1F0E |
:10887000ED5AF74F8091B7089927841B9109208101 |
:1088800031818217930714F40C94A04EE02FFF2738 |
:10889000EE0FFF1FED5AF74F242F33278081918170 |
:1088A0002817390734F48091DB0880FF02C00C944C |
:1088B000694E50916604552399F0E02FFF27EE0F83 |
:1088C000FF1FED5AF74F842F99272091B708821B7D |
:1088D0009109208131812817390714F40C949B4E9B |
:1088E000E02FFF27EE0FFF1FED5AF74F842F992738 |
:1088F00022273327281B390B808191818217930708 |
:1089000034F48091DB0881FF02C00C94644E8091A6 |
:108910006704882391F0E02FFF27EE0FFF1FED5A29 |
:10892000F74F8091B7089927841B910920813181E5 |
:108930008217930714F40C94A44E80916904882341 |
:1089400031F480916804882311F40C94614E91E015 |
:10895000552331F480916704882311F40C947F4EE1 |
:1089600081E080936B0410926A0410926904109263 |
:108970006804FAC1299845CD809182048D3808F4A5 |
:10898000A8CD809151048F7E809351049091A508C9 |
:1089900082E3989FC001112490931E0580931D05CA |
:1089A000E981FA81B99714F00C94844E80915204B5 |
:1089B000909153048F3F910519F010F00C94BE561E |
:1089C0001092010510920205109203051092040501 |
:1089D00010920505109206051092070510920805E1 |
:1089E0008A3F910511F40C94E45B30918708E32FE2 |
:1089F000FF27EE0FFF1FED5AF74F808191818135E0 |
:108A000091050CF4E9C040917804442309F0E4C0D6 |
:108A100080918808E82FFF27EE0FFF1FED5AF74FD0 |
:108A2000808191818C34910514F40C942B5B80919E |
:108A30001F058F5F893C10F40C94155C2C3010F0EE |
:108A40000C94EB5D29981092780410921F051092F7 |
:108A500053041092520400918508E02FFF27EE0F77 |
:108A6000FF1FED5AF74F808191818734910514F0F3 |
:108A70000C94A55D10918608E12FFF27EE0FFF1FD4 |
:108A8000ED5AF74F808191810190F081E02DF7FF41 |
:108A900002C00C948F5FE734F1050CF470C021E044 |
:108AA000A12FBB27AA0FBB1FAD5AB74F8D919C9129 |
:108AB00011978734910544F0E02FFF27EE0FFF1F39 |
:108AC000ED5AF74F808191818D919C91873491056A |
:108AD00064F0E02FFF27EE0FFF1FED5AF74F808164 |
:108AE0009181873491050CF022E0E12FFF27EE0FF2 |
:108AF000FF1FED5AF74F808191818634910564F410 |
:108B0000E02FFF27EE0FFF1FED5AF74F8081918175 |
:108B1000873491050CF023E0E12FFF27EE0FFF1FB4 |
:108B2000ED5AF74F808191818A5B9F4F64F4E02F6B |
:108B3000FF27EE0FFF1FED5AF74F80819181873499 |
:108B400091050CF024E0E12FFF27EE0FFF1FED5AF7 |
:108B5000F74F808191818A5B9F4F64F4E02FFF275C |
:108B6000EE0FFF1FED5AF74F8081918186349105FA |
:108B70000CF425E0822F0E94750510918608E12FE4 |
:108B8000FF27EE0FFF1FED5AF74F80819181019073 |
:108B9000F081E02DF7FF02C00C94B65E7E9714F0D2 |
:108BA0000C94915C80918508E82FFF27EE0FFF1F42 |
:108BB000ED5AF74F808191818A5B9F4F14F00C949E |
:108BC000915C81E08093220788EE93E09093FC0310 |
:108BD0008093FB0330918708E32FFF27EE0FFF1FE1 |
:108BE000ED5AF74F808191818B5A9F4F0CF071CCD9 |
:108BF000D0908808ED2DFF27EE0FFF1FED5AF74F9D |
:108C000080819181855B9F4F14F00C94E157809196 |
:108C100020058F5F893C10F40C941F5B88EC8093D7 |
:108C2000200581E090E0909353048093520481E00A |
:108C3000809378041092090510920A0510920B0592 |
:108C400010920C0510929D0410929E0410929F04A5 |
:108C50001092A0041092990410929A0410929B040E |
:108C600010929C0480919C08E82EFF240027112775 |
:108C700080913709909138099C01442737FD409530 |
:108C8000542FC801B7010E94CB69DC01CB0180934E |
:108C9000AD049093AE04A093AF04B093B004809160 |
:108CA0005309909154099C01442737FD4095542F56 |
:108CB000C801B7010E94CB69DC01CB018093A504F8 |
:108CC0009093A604A093A704B093A8048091CD0428 |
:108CD0009091CE04A091CF04B091D0048093A904C8 |
:108CE0009093AA04A093AB04B093AC048091C50404 |
:108CF0009091C604A091C704B091C8048093A104C8 |
:108D00009093A204A093A304B093A404109201052D |
:108D100010920205109203051092040510920505A9 |
:108D200010920605109207051092080580915104D3 |
:108D30008860809351040C94E357019790931E052B |
:108D400080931D052A3009F081CB289A8091520426 |
:108D500090915304895E934008F084CB109278047C |
:108D6000B8CBA0908D08AAA200916A040E8B0023B4 |
:108D700021F480916B04882369F08091B5089927CC |
:108D800029813A818217930714F49A83898381E0B9 |
:108D900080938D048091510484FFCBC610927C0493 |
:108DA00010927B041092800410927F0410927E0433 |
:108DB00010927D049AE590934D0988E780931A09F3 |
:108DC0009093F30889A380930A0910926A04109281 |
:108DD0006B041E8A20910D0930910E0940910F09F4 |
:108DE000509110096091CD047091CE048091CF0410 |
:108DF0009091D004698B7A8B8B8B9C8B260F371FBD |
:108E0000481F591F8091140990911509A0911609C6 |
:108E1000B0911709A090C504B090C604C090C704D3 |
:108E2000D090C804AFA2B8A6C9A6DAA68A0D9B1D29 |
:108E3000AC1DBD1DC0900209D0900309E09004094B |
:108E4000F0900509C8AAD9AAEAAAFBAAE090C90429 |
:108E5000F090CA040091CB041091CC04E88EF98EF6 |
:108E60000A8F1B8FA8A8B9A8CAA8DBA8AE0CBF1C84 |
:108E7000C01ED11EA8AAB9AACAAADBAAC090F4082B |
:108E8000D090F508E090F608F090F708CCA6DDA6A3 |
:108E9000EEA6FFA6E090C104F090C2040091C304C6 |
:108EA0001091C404EBA2FCA20DA31EA3ACA4BDA40C |
:108EB000CEA4DFA4AE0CBF1CC01ED11EACA6BDA6A6 |
:108EC000CEA6DFA6B0906B04BF8ABB2009F0D0C548 |
:108ED0000E89002309F0CCC58093140990931509DD |
:108EE000A0931609B093170920930D0930930E092A |
:108EF00040930F095093100980910D0890910E082E |
:108F0000815092400CF07EC480917804882309F04F |
:108F100079C480910E0490910F048F3F910509F060 |
:108F200008F47FC5BF89BB2309F017C7EE89EE237C |
:108F300009F013C7F0918D04FD8BFF2309F00DC7D5 |
:108F4000A090BE08ABA6AA2009F407C7C8A8D9A854 |
:108F5000EAA8FBA8C0920209D0920309E092040992 |
:108F6000F0920509ECA4FDA40EA51FA5E092F4085B |
:108F7000F092F5080093F6081093F70880910D0918 |
:108F800090910E09A0910F09B0911009B7FF02C08E |
:108F90000C94295E292E3A2E4B2E552447FC5A94C8 |
:108FA00020920D0930920E0940920F09509210093B |
:108FB0008091140990911509A0911609B091170993 |
:108FC000B7FF02C00C94235E892F9A2FAB2FBB27CB |
:108FD000A7FDBA958D839E83AF83B88780931409CC |
:108FE00090931509A0931609B093170980919C08D6 |
:108FF000E82EFF24002711272091BD043091BE04E4 |
:109000004091BF045091C004C801B7010E94CB69D0 |
:1090100097FF02C00C94415E672E782E892E99240A |
:1090200087FC9A942091B9043091BA044091BB0412 |
:109030005091BC04C801B7010E94CB6997FF02C0E0 |
:109040000C943B5EA72EB82EC92EDD24C7FCDA9403 |
:10905000D201C10186199709A809B9092091BD0853 |
:10906000E22EFF2400271127BC01CD01A8019701A2 |
:109070000E943F6A39014A0119012A018D819E81AE |
:10908000AF81B8858A199B09AC09BD09BC01CD0126 |
:10909000A80197010E943F6AD401C30197FE02C054 |
:1090A0000C94355E892F9A2FAB2FBB27A7FDBA955D |
:1090B000BC01DA01C90157FF02C00C942F5E892F51 |
:1090C0009A2FAB2FBB27A7FDBA956C018091560450 |
:1090D0009091570481349105D4F480915404909177 |
:1090E0005504813491059CF480918808E82FFF276E |
:1090F000EE0FFF1FED5AF74F808191810190F081B3 |
:10910000E02DF7FF02C00C94A05F7A9734F08091B5 |
:10911000B8098F3F11F40C94D55D088D198D2A8DF7 |
:109120003B8D89899A89AB89BC89081B190B2A0B4D |
:109130003B0B0AAF1BAF2CAF3DAF00930D05109357 |
:109140000E0520930F0530931005EBA0FCA00DA198 |
:109150001EA12FA138A549A55AA5E21AF30A040BAE |
:10916000150BE986FA860B871C87E0921105F092B1 |
:10917000120500931305109314058AAD9BADACAD99 |
:10918000BDAD8093150590931605A0931705B09378 |
:109190001805E0921905F0921A0500931B0510932B |
:1091A0001C058091A9049091AA04A091AB04B091F0 |
:1091B000AC04EAACFBAC0CAD1DAD8E199F09A00B45 |
:1091C000B10B8093A9049093AA04A093AB04B0932D |
:1091D000AC048091A1049091A204A091A304B09149 |
:1091E000A40409851A852B853C85801B910BA20B55 |
:1091F000B30B8093A1049093A204A093A304B09313 |
:10920000A4041BA5112371F120918B0430918C04CF |
:109210002138310594F08091E1049091E2040196A7 |
:109220009093E2048093E1048091180990911909C8 |
:109230000196909319098093180920583F4F94F490 |
:109240008091E1049091E20401979093E20480936D |
:10925000E1048091180990911909019790931909D7 |
:109260008093180910928C0410928B0401E0A02EB8 |
:10927000B12C8AAD9BADACADBDADB7FF02C00C94B7 |
:10928000F75D81509240A040B0401CF014E0A12E48 |
:10929000B12C8091360590913705A0913805B09199 |
:1092A0003905E0900D09F0900E0900910F09109119 |
:1092B00010098E199F09A00BB10B815E914BAF4F26 |
:1092C000BF4F8F539C49A040B04010F40C94275CD2 |
:1092D000F091B909FC8FF93114F40C94BF5DB09290 |
:1092E0003105A09230058AAD9BADACADBDAD8150CE |
:1092F0009041A040B04014F40C94305C8091320551 |
:10930000882311F40C94475E70936D0460936C0491 |
:109310008AAD9BADACADBDADB7FF02C00C94865F0E |
:109320009C01AD01B7FF02C00C94805FB9E0559578 |
:10933000479537952795BA95D1F78091300590914B |
:109340003105820F931F90933105809330052AAD2C |
:109350003BAD4CAD5DAD57FF02C00C947A5F390157 |
:109360004A01A3E09594879477946794AA95D1F7DE |
:1093700013012401F9E86F16F3E17F06F0E08F0690 |
:10938000F0E09F0644F0F8E86F2EF3E17F2E812C89 |
:10939000912C13012401D401C30197FE02C00C9447 |
:1093A000B45F892F9A2FAB2FBB27A7FDBA95680F03 |
:1093B000791F2AAD3BAD4CAD5DAD203080EF380755 |
:1093C0008FEF48078FEF580714F00C94405C8091A2 |
:1093D0003305882311F40C94165E70936D0460932A |
:1093E0006C04DA01C90157FF02C00C94715F9C0143 |
:1093F000AD01B7FF02C00C94C95F69E05595479570 |
:10940000379527956A95D1F7809130059091310570 |
:10941000820F931F90933105809330052AAD3BADA9 |
:109420004CAD5DAD57FF02C00C94C35F39014A01DA |
:1094300043E095948794779467944A95D1F798E799 |
:1094400069169CEE79069FEF89069FEF990644F412 |
:1094500038E7632E3CEE732E3FEF832E3FEF932EC3 |
:10946000609224057092250580922605909227052A |
:10947000D401C30197FE02C00C946B5F892F9A2F11 |
:10948000AB2FBB27A7FDBA9560916C0470916D045A |
:10949000680F791FABA52A2F332780913005909153 |
:1094A00031052817390724F430933105209330050E |
:1094B000BC8DBB2379F02B2F332727FD309580916E |
:1094C0003005909131052817390724F43093310580 |
:1094D000209330052AAD3BAD4CAD5DAD2138310553 |
:1094E0004105510574F08091E5049091E6042091C6 |
:1094F000300530913105820F931F9093E6048093DD |
:10950000E5048AAD9BADACADBDAD80589F4FAF4F6C |
:10951000BF4F74F48091E5049091E60420913005EA |
:1095200030913105821B930B9093E6048093E50400 |
:10953000B1E0AB2EB12C89859A85AB85BC85B7FF90 |
:1095400002C00C940D5E81509240A040B0401CF0CF |
:10955000A4E0AA2EB12C20E030E040E050E0809161 |
:109560003A0590913B05A0913C05B0913D05609076 |
:1095700014097090150980901609909017098619A2 |
:109580009709A809B909815E914BAF4FBF4F8F531F |
:109590009C49A040B04028F0FC8DF93114F40C94A3 |
:1095A000A95DB0923105A092300589859A85AB8579 |
:1095B000BC8581509041A040B04014F40C94345CC0 |
:1095C00080913405882311F40C94005ED0926F04CE |
:1095D000C0926E0489859A85AB85BC85B7FF02C0B1 |
:1095E0000C94BA5FB7FF02C00C94655FF9E0B595C3 |
:1095F000A79597958795FA95D1F7A80EB91EB092C1 |
:109600003105A092300529853A854B855C8557FF49 |
:1096100002C00C945F5FE3E0559547953795279519 |
:10962000EA95D1F72938F3E13F07F0E04F07F0E082 |
:109630005F0714F40C94F55E88E893E1A0E0B0E0D5 |
:109640008093280590932905A0932A05B0932B05B4 |
:109650008091280590912905A0912A05B0912B05AC |
:10966000B7FF02C00C94435F892F9A2FAB2FBB2703 |
:10967000A7FDBA95C0906E04D0906F04C80ED91E95 |
:1096800029853A854B855C85203080EF38078FEF40 |
:1096900048078FEF580714F00C944C5C8091350507 |
:1096A000882311F40C94EE5DD0926F04C0926E0486 |
:1096B000DA01C90157FF02C00C94AB5F9C01AD01F8 |
:1096C000B7FF02C00C94A55FB9E055954795379553 |
:1096D0002795BA95D1F78091300590913105820F89 |
:1096E000931F909331058093300529853A854B85EA |
:1096F0005C8557FF02C00C944D5FA3E055954795DC |
:1097000037952795AA95D1F728379CEE39079FEF13 |
:1097100049079FEF590714F00C94FF5E88E79CEE11 |
:10972000AFEFBFEF8093280590932905A0932A05FA |
:10973000B0932B058091280590912905A0912A05C9 |
:10974000B0912B05B7FF02C00C949A5F892F9A2F16 |
:10975000AB2FBB27A7FDBA95C0906E04D0906F04C5 |
:10976000C80ED91EABA52A2F3327809130059091C2 |
:1097700031052817390724F430933105209330053B |
:10978000BC8DBB2379F02B2F332727FD309580919B |
:109790003005909131052817390724F430933105AD |
:1097A0002093300529853A854B855C852138310524 |
:1097B0004105510574F08091E3049091E4042091F7 |
:1097C000300530913105820F931F9093E40480930C |
:1097D000E30489859A85AB85BC8580589F4FAF4F40 |
:1097E000BF4F0CF0D0C28091E3049091E40420912B |
:1097F000300530913105821B930B9093E4048093E4 |
:10980000E304C1C29090B8096FEF961611F40C945E |
:10981000D55680919C08A82EBB24CC24DD246989D0 |
:109820007A898B899C89A60195010E943F6A7901FA |
:109830008A018091370990913809AA2797FDA09550 |
:10984000BA2FE81AF90A0A0B1B0B6FA178A589A594 |
:109850009AA5A60195010E943F6A59016A0180916B |
:10986000530990915409AA2797FDA095BA2FA81AD9 |
:10987000B90ACA0ADB0A292C332427FC3094432C6A |
:10988000532CC201B101A80197010E94CB6997FD39 |
:109890005FC23B014C01F9E09594879477946794FB |
:1098A000FA95D1F7C201B101A60195010E94CB69D9 |
:1098B00097FF02C00C94E85A5B016C01E9E0D59473 |
:1098C000C794B794A794EA95D1F7809156049091E4 |
:1098D0005704813491053CF48091540490915504CF |
:1098E00081349105C4F0D401C30197FE02C00C94E9 |
:1098F000DF5B3C014D019594879477946794D60182 |
:10990000C501D7FE02C00C94DA5B5C016D01D594F1 |
:10991000C794B794A79480918808E82FFF27EE0F8B |
:10992000FF1FED5AF74F808191810190F081E02D6A |
:10993000F7FF02C00C94E35A7A97A4F0C401B30174 |
:1099400023E030E040E050E00E943F6A39014A01E4 |
:10995000C601B50123E030E040E050E00E943F6ADC |
:1099600059016A018091BA09282F332727FD3095C4 |
:10997000432F532F261537054805590514F439018F |
:109980004A01992787FD9095909581959F4FAA2729 |
:1099900097FDA095BA2F681679068A069B0614F4DF |
:1099A0003C014D012A153B054C055D0514F4590198 |
:1099B0006A01A816B906CA06DB0614F45C016D013B |
:1099C0008091AD049091AE04A091AF04B091B00429 |
:1099D00086199709A809B9098093AD049093AE043C |
:1099E000A093AF04B093B0048091A5049091A60415 |
:1099F000A091A704B091A8048A199B09AC09BD09DC |
:109A00008093A5049093A604A093A704B093A80400 |
:109A100080910E0490910F048F3F910511F008F092 |
:109A200081CAA8A8B9A8CAA8DBA8A0920209B092C6 |
:109A30000309C0920409D0920509CCA4DDA4EEA4C8 |
:109A4000FFA4C092F408D092F508E092F608F092D4 |
:109A5000F70800918D040D8BA0907B04B0907C04DE |
:109A6000C501B7FEF0C1882799278A199B09EBC168 |
:109A70001092BD041092BE041092BF041092C00454 |
:109A80001092B9041092BA041092BB041092BC0454 |
:109A900010920D0910920E0910920F0910921009E0 |
:109AA00010921409109215091092160910921709B4 |
:109AB0001CA61DA61EA61FA620E030E040E050E038 |
:109AC00028AB39AB4AAB5BAB8091AD049091AE044F |
:109AD000A091AF04B091B0048093A9049093AA041C |
:109AE000A093AB04B093AC048091A5049091A6041C |
:109AF000A091A704B091A8048093A1049093A2041C |
:109B0000A093A304B093A40410920F0410920E0427 |
:109B100010926D0410926C0410926F0410926E04F7 |
:109B20003F89332309F0F5C94E89442309F0F1C96F |
:109B3000E3C930910A0939A34DC93FEF8E3F93071E |
:109B40000CF0D7C002960C941F43B90161507040CD |
:109B500040917D0450917E04CA0157FF02C00C94CD |
:109B6000CC43959587959595879597FF02C00C9462 |
:109B7000D54320915404309155042817390714F027 |
:109B80000C94E143CA0157FF02C00C949B5A97FF03 |
:109B900002C00C94985A9C013595279535952795C8 |
:109BA0002536310514F40C94E34324E630E080912B |
:109BB000510484FF02C00C94E94330935504209370 |
:109BC000540470935704609356040C94F143F0923C |
:109BD0001A0940917F0450918004CA0157FD02C0C8 |
:109BE0000C949D430396959587959595879597FD3C |
:109BF00002C00C94A543909581959F4F0C94A5436A |
:109C000080912707992787FD90954E2D5527849F92 |
:109C1000B001859F700D949F700D1124CB01209190 |
:109C20007F0430918004820F931F9093800480936F |
:109C30007F0480912807992787FD9095849FD00104 |
:109C4000859FB00D949FB00D1124CD0120917D040E |
:109C500030917E04820F931F90937E0480937D0445 |
:109C600080912907992787FD909520917B04309159 |
:109C70007C04820F931F90937C0480937B048091DB |
:109C80002B07282F332727FD30958091920899279D |
:109C9000289FF001299FF00D389FF00D1124F093BB |
:109CA0008B03E0938A0380912A0799278C159D05E1 |
:109CB00014F00C947F4390937A04809379040C946D |
:109CC0008343982F0C94A84481E0809367040C94FC |
:109CD0009D4481E080936604582F0C94704481E089 |
:109CE000809368040C94464481E0809369040C944A |
:109CF000194410927C0410927B040C94234390939B |
:109D00006A0480936B0430C880917804882311F42E |
:109D10000C94D6448091520490915304FFEF8F3FEE |
:109D20009F0711F40C94DA440196909353048093A6 |
:109D300052040C94DA441092660450E00C9470447F |
:109D4000109268040C944644109267040C949D444D |
:109D500061507E4F8F4F9F4F9CCD60E070E06B0154 |
:109D600010928D041D8AE0900D09F0900E0900916B |
:109D70000F091091100960901409709015098090D6 |
:109D800016099090170980911A09882309F0B6C71F |
:109D900010926F0410926E0410926D0410926C0475 |
:109DA000E0923605F0923705009338051093390597 |
:109DB00060923A0570923B0580923C0590923D0579 |
:109DC0001092BD041092BE041092BF041092C00401 |
:109DD0001092B9041092BA041092BB041092BC0401 |
:109DE0001092B5041092B6041092B7041092B80401 |
:109DF00010920D0910920E0910920F09109210097D |
:109E00001092140910921509109216091092170950 |
:109E10001092020910920309109204091092050988 |
:109E20001092F4081092F5081092F6081092F708B4 |
:109E300010920F0410920E04A0907B04B0907C044A |
:109E4000C501B7FC10CE409774F068EE262E63E093 |
:109E5000362E3092AB032092AA031AA114FD03C040 |
:109E600081E080932305D0909908ED2CFF240027F2 |
:109E70001127B501882777FD8095982F9501B7FCAC |
:109E800078C7442737FD4095542F0E94CB699B012A |
:109E9000AC01C801B7010E94CB6997FD65C759E0C5 |
:109EA00095958795779567955A95D1F79B018D2D57 |
:109EB00099278A9DA0018B9D500D9A9D500D1124CC |
:109EC000CA0157FD43C79595879595958795280FA6 |
:109ED000391FC901AA2797FDA095BA2F80930905BC |
:109EE00090930A05A0930B05B0930C05E0909D0498 |
:109EF000F0909E0400919F041091A004E81AF90AC2 |
:109F00000A0B1B0B51E5E51653ECF50650E005076F |
:109F100050E015070CF4E9C680E593ECA0E0B0E052 |
:109F200080939D0490939E04A0939F04B093A004FB |
:109F300080919D0490919E04A0919F04B091A004F3 |
:109F4000805B9C43AF4FBF4F64F480EB9CE3AFEF6B |
:109F5000BFEF80939D0490939E04A0939F04B093C1 |
:109F6000A004C0909304D0909404C114D10409F4C7 |
:109F7000B5C57AA173FFB2C589899A89AB89BC89B5 |
:109F8000B7FF02C00C94B25A09E0B595A795979512 |
:109F900087950A95D1F79BAF8AAF97FF02C00C94C3 |
:109FA000BE5A8FA198A5A9A5BAA5B7FF02C00C9467 |
:109FB000B85A19E0B595A795979587951A95D1F751 |
:109FC000BC0197FF02C00C94AD5AAAADBBADA61759 |
:109FD000B70714F47BAF6AAF6AAD7BAD77FF02C001 |
:109FE0000C94A95A2B015594479455944794559431 |
:109FF00047940894411C511CECE1F2E0CE0EDF1EA8 |
:10A0000076010027F7FC0095102FA4EEAA2EADEFE5 |
:10A01000BA2ECA0CDB1C60904F09709050098090DA |
:10A020005109909052092091860330918703409105 |
:10A030008803509189032D8F3E8F4F8F58A3C40101 |
:10A04000B3010E943F6AE21AF30A040B150BC80120 |
:10A05000B70128E631E040E050E00E943F6ADC01B1 |
:10A06000CB018C01045B1040A0904809B0904909D5 |
:10A07000C501B7FE02C00C94A35A8138910514F0B3 |
:10A0800000E010E02090AA033090AB0321143104CB |
:10A09000A9F44AAD5BAD4931510584F480918B043C |
:10A0A00090918C04800F911F90938C0480938B046B |
:10A0B00080912305882311F00C94B55BC801880FAB |
:10A0C000991F880F991F880F991FB2010E940A6A71 |
:10A0D0009B01442737FD4095542F260D371D481D01 |
:10A0E000591D20934F0930935009409351095093C3 |
:10A0F0005209F0909B036F2D7727AAADBBAD6A9FE5 |
:10A10000C0016B9F900D7A9F900D112497FF02C0A4 |
:10A110000C94A05A959587959595879595958795D3 |
:10A120009595879595958795681B790B7BAF6AAF59 |
:10A1300077FF02C00C94C55A2114310411F00C941D |
:10A14000DA5A00915604109157048091540490916A |
:10A150005504080F191F17FF02C00C94025C1595D7 |
:10A1600007951595079515950795005C1F4FCA0132 |
:10A17000B9012D8D3E8D4F8D58A10E943F6ADA01A5 |
:10A18000C9012091910430919204442737FD4095F4 |
:10A19000542F821B930BA40BB50B845E9D4FAF4FC6 |
:10A1A000BF4FBC01CD0128E631E040E050E00E9405 |
:10A1B0003F6ADC01CB01845B90402AAD3BAD829FBE |
:10A1C000F001839FF00D929FF00D1124CF01B80193 |
:10A1D0000E940A6A83E0F89EA00111245BAF4AAF97 |
:10A1E0004617570714F00C94CD5ABA01CB01AA2791 |
:10A1F00097FDA095BA2F20919D0430919E04409127 |
:10A200009F045091A004820F931FA41FB51F809339 |
:10A210009D0490939E04A0939F04B093A00480910A |
:10A22000220581508F3F09F462C4809322055D8925 |
:10A23000552381F01092050510920605109207052E |
:10A240001092080510920105109202051092030564 |
:10A25000109204056F89662309F044C580911A099C |
:10A260009927AA27BB27BC01CD0129893A894B89A7 |
:10A270005C890E94CB69DC01CB01BC01CD0128EFD8 |
:10A280003AE240E050E00E943F6A19017E8977235C |
:10A2900009F025C580911A099927AA27BB27BC0177 |
:10A2A000CD012FA138A549A55AA50E94CB69DC0193 |
:10A2B000CB01BC01CD0128EF3AE240E050E00E9422 |
:10A2C0003F6A3C832B838090EE089090EF0889ECE6 |
:10A2D000881691040CF4F8C4B8EC8B2E912C909253 |
:10A2E000EF088092EE080091F9081091FA08093CF5 |
:10A2F00011050CF4E1C408EC10E01093FA08009387 |
:10A30000F9088091FB089091FC08AA2797FDA09579 |
:10A31000BA2F20914D09C22EDD24EE24FF24BC016A |
:10A32000CD01A70196010E94CB699B01AC01C4013C |
:10A33000AA2797FDA095BA2FF7E0880F991FAA1FAB |
:10A34000BB1FFA95D1F7280F391F4A1F5B1F57FD16 |
:10A35000ECC4E6E05595479537952795EA95D1F7F2 |
:10A360004101820E931E24018091EC089091ED082A |
:10A37000AA2797FDA095BA2FBC01CD01A701960190 |
:10A380000E94CB699B01AC01C801AA2797FDA0954B |
:10A39000BA2F77E0880F991FAA1FBB1F7A95D1F7B4 |
:10A3A000280F391F4A1F5B1F57FDBAC466E0559539 |
:10A3B0004795379527956A95D1F76B807C80620E1B |
:10A3C000731E6301AA0CBB1CC501AA2797FDA095AB |
:10A3D000BA2F2091F308332744275527BC01CD011C |
:10A3E0000E94CB697B018C0197FD91C456E01595C5 |
:10A3F0000795F794E7945A95D1F739A1832F9927B8 |
:10A40000AA27BB272091B1043091B2044091B30434 |
:10A410005091B404BC01CD010E94CB69DC01CB0199 |
:10A42000BC01CD0120EF35E540E050E00E943F6ADD |
:10A430005701A20EB31EC50141E0841640E4940604 |
:10A4400024F0812C40E4942E240150E0851650EC39 |
:10A4500095060CF02CC4812C30EC932E9092FC08C5 |
:10A460008092FB0861E0661660E4760624F0612CB9 |
:10A4700020E4722E630170E0671670EC77060CF032 |
:10A4800011C4612C00EC702E7092ED086092EC0803 |
:10A49000A1E0AA16A0E4BA0624F0A12C10E4B12E83 |
:10A4A000C501B0E0AB16B0ECBB060CF0F6C3A12CB6 |
:10A4B000B0ECBB2EB0924909A092480980910001EE |
:10A4C000482F552780912703909128034817590753 |
:10A4D00094F42091270330912803E981FA814E9F5B |
:10A4E000C0014F9F900D5E9F900D1124B9010E94F5 |
:10A4F000F6697A836983C980DA80CC0CDD1CCC0CC8 |
:10A50000DD1CDA82C982DAA0D0FE51C00E89002398 |
:10A5100009F04DC01F89112309F049C080914205FF |
:10A52000909143059093F4078093F3078091100472 |
:10A53000909111049093EE078093ED072091E7042A |
:10A540003091E8042115310509F0F8C480911D030C |
:10A5500090911E038959934010F00C94225B8091D6 |
:10A560001D0390911E038436910510F00C941D5C20 |
:10A5700087B58B3010F40C94B85C809112048F5F17 |
:10A58000809312049AE089029001112480911708A7 |
:10A59000821B87BD8CE291E09093FC038093FB03C8 |
:10A5A0008EE591E09093E8048093E704E8C450902E |
:10A5B000470940900009242D3327C901880F991FAE |
:10A5C000880F991F8896E981FA81E817F90714F432 |
:10A5D0009A838983852D9927880F991F880F991F42 |
:10A5E00080559040C980DA808C159D0514F49A83BB |
:10A5F0008983809146048823A1F080915204909130 |
:10A6000053040297C09768F4E980FA801E141F046F |
:10A6100044F481E090E090935304809352043A8391 |
:10A62000298309811A811093D8070093D707809155 |
:10A63000090590910A05A0910B05B0910C05880FB2 |
:10A64000991FAA1FBB1F880F991FAA1FBB1FA81AFB |
:10A65000B90AB9AEA8AE013A11050CF40AC3C80193 |
:10A6600017FDA1C39595879528AD39AD821793073E |
:10A6700014F499AF88AF909581959F4F48AD59AD2F |
:10A680004817590714F499AF88AF252D3327220FA7 |
:10A69000331F220F331FC90149815A81841B950B37 |
:10A6A00068AD79AD8617970714F499AF88AF8981A3 |
:10A6B0009A81821B930BA8ADB9ADA817B90714F402 |
:10A6C00099AF88AF80917F04909180048401081B2A |
:10A6D000190B10930C0900930B09A0901A09AA20DA |
:10A6E00009F4C1C2281A390AC101AA2797FDA09509 |
:10A6F000BA2F209101053091020540910305509138 |
:10A700000405820F931FA41FB51F8093010590932A |
:10A710000205A0930305B0930405609101057091B3 |
:10A72000020580910305909104056130BAEF7B0723 |
:10A73000B0E08B07B0E09B0774F080E09AEFA0E0F8 |
:10A74000B0E08093010590930205A0930305B093B8 |
:10A750000405BC01CD016030E6E07E07EFEF8E0717 |
:10A76000EFEF9E0774F480E096E0AFEFBFEF8093C9 |
:10A77000010590930205A0930305B0930405BC0165 |
:10A78000CD01E090A003F090A1039701442737FD8D |
:10A790004095542F0E943F6A6801C20ED31EB090AC |
:10A7A0008C036B2D77278827992728AD39AD37FD86 |
:10A7B000C9C237FDC4C23595279509811A81200F7A |
:10A7C000311F442737FD4095542F0E94CB6997FDD8 |
:10A7D000B1C226E095958795779567952A95D1F72B |
:10A7E0009B016C157D050CF46B01309521953F4F55 |
:10A7F000C216D3060CF4690180917D0490917E0409 |
:10A800008301081B190B1093EB080093EA08AA2098 |
:10A8100009F423C22B813C81281B390BC901AA27CB |
:10A8200097FDA095BA2F209105053091060540911E |
:10A83000070550910805820F931FA41FB51F809331 |
:10A84000050590930605A0930705B0930805609150 |
:10A850000505709106058091070590910805613006 |
:10A860003AEF730730E0830730E0930774F080E03D |
:10A870009AEFA0E0B0E08093050590930605A093C1 |
:10A880000705B0930805BC01CD01603046E07407B0 |
:10A890004FEF84074FEF940774F480E096E0AFEF3A |
:10A8A000BFEF8093050590930605A0930705B0932D |
:10A8B0000805BC01CD019701442737FD4095542F71 |
:10A8C0000E943F6A7801E20EF31E6B2D77278827DE |
:10A8D000992728AD39AD37FD43C237FD3EC23595C6 |
:10A8E0002795A981BA812A0F3B1F442737FD409540 |
:10A8F000542F0E94CB6997FD2BC216E09595879542 |
:10A90000779567951A95D1F79B016E157F050CF425 |
:10A910007B01309521953F4FE216F3060CF4790147 |
:10A920008601222717FD2095322F0D871E872F873E |
:10A93000388B242D33273DAB2CAB452D55275FABF2 |
:10A940004EABBAE3CB2EB9E0DB2E07E715E02701CB |
:10A95000662457FC6094762C68AD79AD4B01AA242F |
:10A9600097FCA094BA2CABE03A2EFBE1EF2EF9E075 |
:10A97000FF2E07C0FBAFEAAFEAADD601EC930C9413 |
:10A98000F95FF801258512160CF08FC049815A81B4 |
:10A99000CA01AA2797FDA095BA2F332727FD309526 |
:10A9A000432F532FBC01CD010E94CB6997FD91C06D |
:10A9B000E6E09595879577956795EA95D1F77BAF12 |
:10A9C0006AAFF8018685282F332727FD3095432F5E |
:10A9D000532F6D857E858F8598890E94CB6997FD61 |
:10A9E00073C056E095958795779567955A95D1F7F9 |
:10A9F0002AAD3BAD260F371F3BAF2AAFF801878545 |
:10AA0000282F332727FD3095432F532FC301B20141 |
:10AA10000E94CB6997FD51C046E095958795779543 |
:10AA200067954A95D1F72AAD3BAD260F371F3BAF4F |
:10AA30002AAFF8018089282F332727FD3095432F2F |
:10AA4000532FC501B4010E94CB69DC01CB01B7FDD6 |
:10AA500030C036E0B595A795979587953A95D1F78B |
:10AA6000F701608171812AAD3BAD820F931F0E9477 |
:10AA7000BC2FD7018D939C9397FD24C09595879506 |
:10AA8000959587959BAF8AAFECA9FDA98E179F0777 |
:10AA90000CF470CF2EA93FA94AAD5BAD2417350742 |
:10AAA0000CF06ACF3BAF2AAF67CFD6011C920C9453 |
:10AAB000F95FCF96A11DB11DCCCF615C7F4F8F4F49 |
:10AAC0009F4FAACF0396DACF615C7F4F8F4F9F4F86 |
:10AAD00088CF615C7F4F8F4F9F4F6ACFA09048090E |
:10AAE000B090490980912205815008F09ECB88E101 |
:10AAF0008093220580919C089927880F991F880FC1 |
:10AB0000991F7C010027F7FC0095102F69897A892D |
:10AB10008B899C89A80197010E943F6A3093CA07DC |
:10AB20002093C9076FA178A589A59AA5A8019701C7 |
:10AB30000E943F6A3093CC072093CB07809137095E |
:10AB40009091380997FDEAC49595879595958795D5 |
:10AB50009093CE078093CD0780915309909154092B |
:10AB600097FDDAC495958795959587959093D0072D |
:10AB70008093CF07B092D207A092D107809174043E |
:10AB800090917504A0917604B0917704BC01CD0139 |
:10AB900025E030E040E050E00E943F6A3093D40767 |
:10ABA0002093D30780910D0890910E089093D607BB |
:10ABB0008093D507D092DA07C092D90780912703F6 |
:10ABC000909128039093DC078093DB0780918204A7 |
:10ABD00099279093DE078093DD0780914F0990912C |
:10ABE0005009A0915109B0915209209186033091EA |
:10ABF00087034091880350918903BC01CD010E94D5 |
:10AC00003F6A3093E0072093DF0780911004909112 |
:10AC100011049093EE078093ED0780912207992706 |
:10AC20009093F0078093EF078091F7039091F803DA |
:10AC30009093F2078093F1078091630590916405EA |
:10AC400090930608809305088091610590916205B4 |
:10AC50009093080880930708EACAC801AA2797FDBD |
:10AC6000A095BA2FE0CDC801AA2797FDA095BA2FCD |
:10AC700040CD68AD79AD6135710524F080E590E097 |
:10AC800099AF88AFA8ADB9ADA05BBF4F0CF0FDCCBC |
:10AC900000EB1FEF19AF08AFF8CC909349098093F0 |
:10ACA00048090CCCD092ED08C092EC08F1CB509240 |
:10ACB000FC084092FB08D6CBAFEF08331A070CF024 |
:10ACC00020CB08E31FEF19CB98E389169FEF990675 |
:10ACD0000CF009CBA8E38A2EAFEF9A2E00CB1C8292 |
:10ACE0001B82F1CA22243324D1CAE0929D04F0923F |
:10ACF0009E0400939F041093A0041AC9D0926F047D |
:10AD0000C0926E0470936D0460936C0449C82FE385 |
:10AD100030E040E050E0E20EF31E041F151F66CB4A |
:10AD2000215C3F4F4F4F5F4F41CB215C3F4F4F4F17 |
:10AD30005F4F0FCB615C7F4F8F4F9F4F4ACD2F5F8F |
:10AD40003F4F39CD309521953F4F33CD0396BBC84A |
:10AD5000615C7F4F8F4F9F4FD0CD2F5F3F4FBFCD57 |
:10AD6000309521953F4FB9CD61507E4F8F4F9F4F0A |
:10AD700096C8222733272A193B0983C8809151049A |
:10AD80008260809351040C94F54410927A041092DE |
:10AD900079040C948B434D5F5F4F0C94E7424D5FF9 |
:10ADA0005F4F0C949D4201965DCC80919C08E82EEB |
:10ADB000FF240027112769897A898B899C89A8013A |
:10ADC00097010E943F6A39014A01809137099091A9 |
:10ADD0003809AA2797FDA095BA2F681A790A8A0A16 |
:10ADE0009B0A6FA178A589A59AA5A80197010E9441 |
:10ADF0003F6A59016A018091530990915409AA2729 |
:10AE000097FDA095BA2FA81AB90ACA0ADB0AD4017D |
:10AE1000C30197FCF3C43C014D0154E09594879421 |
:10AE2000779467945A95D1F7D601C501D7FCF2C43F |
:10AE30005C016D0144E0D594C794B794A7944A95FA |
:10AE4000D1F78091560490915704813491050CF408 |
:10AE5000C5C3C401B30123E030E040E050E00E94EC |
:10AE60003F6A39014A01C601B50123E030E040E004 |
:10AE700050E00E943F6A59016A0180918808E82FDA |
:10AE8000FF27EE0FFF1FED5AF74F80819181019050 |
:10AE9000F081E02DF7FDBAC47A97A4F0C401B301A4 |
:10AEA00023E030E040E050E00E943F6A39014A016F |
:10AEB000C601B50123E030E040E050E00E943F6A67 |
:10AEC00059016A0171E267167104810491042CF042 |
:10AED00030E2632E712C812C912C80EE68168FEF5E |
:10AEE00078068FEF88068FEF980644F420EE622EE6 |
:10AEF0002FEF722E2FEF822E2FEF922E91E2A916B6 |
:10AF0000B104C104D1042CF090E2A92EB12CC12CC3 |
:10AF1000D12CA0EEAA16AFEFBA06AFEFCA06AFEF7C |
:10AF2000DA0614F00C94E04C80EEA82E8FEFB82EC9 |
:10AF30008FEFC82E8FEFD82E0C94E04C80917404C4 |
:10AF400090917504A0917604B0917704F4E0880F95 |
:10AF5000991FAA1FBB1FFA95D1F7809313049093F2 |
:10AF60001404A0931504B0931604109211041092C7 |
:10AF70001004215030403093E8042093E7044AA1A4 |
:10AF800041FF3EC080919E03823308F051C38091FF |
:10AF9000CB03815098F410928E04809174049091A8 |
:10AFA0007504A0917604B091770480937004909317 |
:10AFB0007104A0937204B093730481E08093CB0377 |
:10AFC00041C010922005ED2DFF27EE0FFF1FED5A17 |
:10AFD000F74F808191818C3491050CF499C2809156 |
:10AFE00021058F5F893C08F41FC31092780488EC18 |
:10AFF0008093210510925304109252040C946942DC |
:10B0000020919E0380918A0390918B03820F911D62 |
:10B01000209192083327829FB001839F700D929FE9 |
:10B02000700D1124CB01AA2797FDA095BA2F80930C |
:10B03000700490937104A0937204B093730481E040 |
:10B0400080938E04E0908603F0908703009188033C |
:10B050001091890369897A898B899C89A801970154 |
:10B060000E943F6A59016A016FA178A589A59AA536 |
:10B07000A80197010E943F6AB901C5010E94BA6800 |
:10B080006C01CD971CF0ECE3CE2ED12CC6010E94B2 |
:10B0900060676C0180918E04882309F469C18091F6 |
:10B0A000510499279C012071307084FD61C1B090DA |
:10B0B000DD08B0FC04C080918D0881FD5DC409816C |
:10B0C0001A8130933F0520933E0560907404709080 |
:10B0D000750480907604909077048091700490912C |
:10B0E0007104A0917204B091730486159705A805A8 |
:10B0F000B90514F0B0FC52C1E0907404F0907504EE |
:10B100008091700490917104E81AF90A80919D036E |
:10B1100099278E9D90018F9D300D9E9D300D11249D |
:10B12000C90137FDDAC595958795959587959595CC |
:10B13000879595958795081B190B209110043091E0 |
:10B14000110437FDC7C53595279535952795359554 |
:10B150002795293031050CF4CCC328E030E0229F3C |
:10B16000A001239F500D329F500D11249A0157FDCD |
:10B17000AEC535952795359527958091100490910A |
:10B180001104280F391F80919F039927AA27BB27F5 |
:10B19000442737FD4095542FBC01CD010E94CB6957 |
:10B1A00097FD90C5B7E09595879577956795BA9582 |
:10B1B000D1F79B015FEF613875070CF092C321E86E |
:10B1C0003FEF021B130B60909504709096048090E3 |
:10B1D00097049090980497FC64C5A7E09594879491 |
:10B1E00077946794AA95D1F780919C03282F3327F1 |
:10B1F00044275527C401B3010E94CB6997FD4CC574 |
:10B20000F5E09595879577956795FA95D1F79B0128 |
:10B210007FEF213837070CF04BC321E83FEF021BCB |
:10B22000130B85E990E0E80EF91E9BE2E91691E028 |
:10B23000F906E8F480913E0590913F05892BB9F419 |
:10B2400080914205909143051816190684F4809167 |
:10B25000440590914505081719070CF49FC2809189 |
:10B26000C9039091CA03801791070CF497C280918B |
:10B27000E7049091E804892B21F000914205109198 |
:10B28000430580919A039927AA27BB272091BC09DF |
:10B29000332727FD3095432F532FBC01CD010E944A |
:10B2A000CB6997FD0AC5E7E09595879577956795F2 |
:10B2B000EA95D1F79B01AFEF61387A070CF0F0C245 |
:10B2C00021E83FEF021B130BC801AA2797FDA095A9 |
:10B2D000BA2F5DE0880F991FAA1FBB1F5A95D1F79F |
:10B2E0009601442737FD4095542FBC01CD010E94A3 |
:10B2F0003F6A209311053093120540931305509334 |
:10B30000140500911105109112058091400590914E |
:10B3100041059C01220F331F280F391F200F311FB9 |
:10B3200037FDC8C4A9015595479555954795BA016C |
:10B3300080918E08282F3327220F331F220F331FAF |
:10B34000421753070CF0BCC2A901B901509047093C |
:10B35000B0FE64C2E981FA81E417F5070CF05EC221 |
:10B36000AF01F0934105E09340055A83498318C02B |
:10B3700060919608662309F43AC17727663471050F |
:10B380000CF00EC226E430E03093C8032093C703CC |
:10B39000E980FA80F0924105E0924005509047091B |
:10B3A0008091510481FFA7C08091510484FDA3C006 |
:10B3B000E0904605F0904705009148051091490539 |
:10B3C000E114F10401051105B1F429813A817901F3 |
:10B3D0000027F7FC0095102FECE0EE0CFF1C001F7F |
:10B3E000111FEA95D1F7E0924605F09247050093C8 |
:10B3F00048051093490580911004909111048091A3 |
:10B4000010049091110497FDEEC3843691050CF061 |
:10B4100072C069817A819B01442737FD4095542F82 |
:10B42000C601AA2797FDA095BA2FBC01CD010E94A5 |
:10B43000CB6997FD6CC49B01AC017DE055954795A8 |
:10B44000379527957A95D1F72093110530931205FA |
:10B450004093130550931405809152049091530426 |
:10B4600077E0803D970708F053C3D801C70169E032 |
:10B47000B695A795979587956A95D1F7E81AF90A31 |
:10B480000A0B1B0BDA01C90123E0880F991FAA1FC1 |
:10B49000BB1F2A95D1F7E80EF91E0A1F1B1FE09269 |
:10B4A0004605F09247050093480510934905D801D9 |
:10B4B000C7011CE0B695A795979587951A95D1F782 |
:10B4C000909343058093420540919408442309F4E6 |
:10B4D00014C355279C01BA010E940A6AC901861B40 |
:10B4E000970B9093450580934405260F371F3093A3 |
:10B4F000CA032093C903A0904809B09049098090DD |
:10B50000FB089090FC086090EC087090ED0851C822 |
:10B51000109221050C946942039624CB039614CB18 |
:10B52000909581959F4F0C94B34303960C94B74329 |
:10B5300003960C94CB4D909581959F4F0C94C74DDD |
:10B540004F960C948A50882799278A199B090C9446 |
:10B550003D50695F7F4F0C94F24F709561957F4F1E |
:10B560000C94E54F81509E4FAF4FBF4F0C94C44F8A |
:10B5700081509E4FAF4FBF4F0C94D94F90958195FE |
:10B580009F4F9BAF8AAF0C94D14F84EF91E0909383 |
:10B59000AB038093AA030C940F518AAD9BAD909599 |
:10B5A00081959F4F6817790714F00C94F650BC01F1 |
:10B5B0000C94F6500894210831083092AB03209285 |
:10B5C000AA030C940F51F095E195FF4F0C949C4CFD |
:10B5D00061507E4F8F4F9F4F0C945C4C8091540470 |
:10B5E00090915504813491050CF447CC32CC4091B4 |
:10B5F00042055091430557FDB8C15595479555955E |
:10B6000047958091270390912803209100013327CB |
:10B61000489F5001499FB00C589FB00C1124C501A0 |
:10B62000B9010E940A6AAACE809321050C9469424E |
:10B6300081E080938E0488EC8093CB0303CD8093CC |
:10B640002005C1CC87B5853F08F0F3C08091120476 |
:10B6500081500C94C05280819181855B9F4F0CF08A |
:10B66000F2C080911F058F5F80931F05893C10F405 |
:10B670000C94EC452C3008F07EC32998A4E0B0E08F |
:10B680008FEF082E0E94676A1092780410921F05AF |
:10B6900010925304109252040E94193BA4E0B0E0AF |
:10B6A0008091DB049091DC0497FD41C4892F990FB0 |
:10B6B000990B082E0E94676AA5E0B0E08091DB0438 |
:10B6C0009091DC04082E0E94676AA6E0B0E08091A9 |
:10B6D000D9049091DA0497FD27C4892F990F990B0B |
:10B6E000082E0E94676AA7E0B0E08091D90490918B |
:10B6F000DA04082E0E94676A08E010E08091D30403 |
:10B700009091D404A091D504B091D604BC01CD0190 |
:10B710000E943469DC01CB019C0197FDCDC3832FCE |
:10B72000992787FD9A95D801082E0E94676A09E03B |
:10B7300010E08091D3049091D404A091D504B091ED |
:10B74000D604BC01CD010E943469DC01CB01D801D3 |
:10B75000082E0E94676A0E94B00568E770E00E94A8 |
:10B76000D22F309187080C94EC45C601AA2797FD8B |
:10B77000A095BA2FBC01CD012D8D3E8D4F8D58A1C6 |
:10B780000E94CB693B014C010E943F6A30939204B6 |
:10B7900020939104109223050C945E508C0167CD88 |
:10B7A0006739710534F186E990E09093C80380937E |
:10B7B000C703EECD0196A11DB11D0C94854C0196D9 |
:10B7C000A11DB11D0C94794C81E08093230510924A |
:10B7D000090510920A0510920B0510920C051092A3 |
:10B7E0009D0410929E0410929F041092A0040C9449 |
:10B7F000F5447093C8036093C703CACD0F96A11D8B |
:10B80000B11D09CB095F1F4F0C94AF50F095E19526 |
:10B81000FF4F42CB0F96A11DB11D0ACB709341057E |
:10B82000609340055A834983BBCD80931F050C94D8 |
:10B83000EC4581E080934B05A2CB3F8930934A05CC |
:10B8400030934B059CCB40931F050C94EC45B09274 |
:10B850003105A09230052091B9092C8F0C947349C1 |
:10B86000109232050C94D94920932805309329056C |
:10B8700040932A0550932B05109234050C94404BAD |
:10B8800020922405309225054092260550922705E6 |
:10B89000109233050C944A4A109235050C94B24B21 |
:10B8A0006F3F710509F00CF40DCD2FEF30E00ACD9C |
:10B8B0002F3F310509F00CF4B2CC2FEF30E0AFCCC4 |
:10B8C00050904709252D3327220F331F220F331F96 |
:10B8D00020553040241735070CF03ACDA901B901A5 |
:10B8E00037CD6F3F710509F00CF46BCC2FEF30E0D2 |
:10B8F00068CC121613060CF432CC229FC001239F91 |
:10B90000900D329F900D112497FD6DC395958795ED |
:10B91000959587952091100430911104281B390BBF |
:10B9200032CC0E94B00545E665E878E00E945805F3 |
:10B9300080918D0880FF10C080911D0390911E039F |
:10B94000875B934038F480911D0390911E038E5EB7 |
:10B95000924010F40E945A1C1092F9030E94193B65 |
:10B9600081E08093F903579AF6CE4D5F5F4F45CE45 |
:10B9700081E080934A0503CB8091510481FFD1C1BE |
:10B980002091C7033091C803C9010F9640917904F3 |
:10B9900050917A04841795070CF0EFC180914A0505 |
:10B9A000882309F0EAC180914C0581FFF8C28D7FA0 |
:10B9B0006090740470907504809076049090770481 |
:10B9C0006092700470927104809272049092730479 |
:10B9D000816080934C05421B530B9A012F503040DD |
:10B9E00037FDF4C280913E0590913F05280F391F25 |
:10B9F00030933F0520933E0520913E0530913F0551 |
:10BA0000C90137FF04C088279927821B930B8150F7 |
:10BA100092400CF481C1809192089927829FF00195 |
:10BA2000839FF00D929FF00D1124CF0160E075E02F |
:10BA30000E940A6ACB01AA2797FDA095BA2F2091F0 |
:10BA40007004309171044091720450917304820F1C |
:10BA5000931FA41FB51F8093700490937104A0934B |
:10BA60007204B093730410923F0510923E05B1FE2C |
:10BA700006C08BE490E09093FC038093FB038091DD |
:10BA80009608882309F048C10091420510914305AA |
:10BA9000A80117FD93C255954795559547958091F7 |
:10BAA000270390912803209100013327489F7001BC |
:10BAB000499FF00C589FF00C1124C701B9010E9456 |
:10BAC0000A6A663471050CF073C226E430E03093E4 |
:10BAD000C8032093C7038091E7049091E804892B61 |
:10BAE00009F4FBCAD401C30160927004709271041E |
:10BAF0008092720490927304F8CA109245051092D5 |
:10BB000044058FEF93E09093CA038093C903F3CC6D |
:10BB1000AFE0803A9A0708F0E2C0D801C701FAE026 |
:10BB2000B695A79597958795FA95D1F7E81AF90AEA |
:10BB30000A0B1B0BDA01C901880F991FAA1FBB1F33 |
:10BB4000880F991FAA1FBB1FA6CC109186080C94C2 |
:10BB50004F45209328053093290540932A0550939B |
:10BB60002B051092310510923005E8EE2E2EE3E001 |
:10BB70003E2E3092AB032092AA030C94B24B6092FB |
:10BB80002405709225058092260590922705109233 |
:10BB900031051092300588EE282E83E0382E309241 |
:10BBA000AB032092AA030C944A4A70936D046093ED |
:10BBB0006C04D0926F04C0926E04CB0177FD6BC110 |
:10BBC000BC0175956795C601D7FC63C16C01D5941E |
:10BBD000C7940C948D48299A0C94234581E0809356 |
:10BBE00035050C94B24B909581959F4F0ECCB09536 |
:10BBF000A095909581959F4FAF4FBF4F0C944149B1 |
:10BC0000209328053093290540932A0550932B054E |
:10BC100081E0809334050C94404BB095A0959095AD |
:10BC200081959F4FAF4FBF4F0C94A34A209224059C |
:10BC300030922505409226055092270581E0809399 |
:10BC400033050C944A4A81509F4FAF4FBF4F0C941D |
:10BC5000E44781509F4FAF4FBF4F0C94CA4781506C |
:10BC60009F4FAF4FBF4F0C945F4881509F4FAF4FD6 |
:10BC7000BF4F0C94524861507F4F8F4F9F4F0C9491 |
:10BC8000224861507F4F8F4F9F4F0C940C4881E0AA |
:10BC9000809332050C94D949615E7F4F8F4F9F4F3F |
:10BCA000AFCA6FE770E080E090E0660E771E881EF6 |
:10BCB000991E93CA2D5F3F4F35CB61587F4F8F4FF1 |
:10BCC0009F4FF1CA61587F4F8F4F9F4F6BCA2D5FB7 |
:10BCD0003F4F4FCA295F3F4F36CA0F9624CA805440 |
:10BCE0009F4108F096C0D801C7017BE0B695A795A3 |
:10BCF000979587957A95D1F7E81AF90A0A0B1B0BE5 |
:10BD0000DA01C901820F931FA41FB51FC4CB615074 |
:10BD1000704E8F4F9F4F8FCB00914205109143057E |
:10BD2000DACE6090740470907504809076049090E0 |
:10BD30007704D401C30180599140A040B040809362 |
:10BD4000700490937104A0937204B09373042091D3 |
:10BD50009608222309F446C033273093C803209362 |
:10BD6000C7030091420510914305BFC9F095E195C5 |
:10BD7000FF4F0C94CE45299A81CCC9010F974817E3 |
:10BD800059070CF058C080914B05882309F053C027 |
:10BD900080914C0580FF1EC18E7F6090740470906E |
:10BDA000750480907604909077046092700470928D |
:10BDB00071048092720490927304826080934C05A7 |
:10BDC000421B530B9A01215F3F4F37FD0EC18091FB |
:10BDD0003E0590913F05821B930B90933F05809306 |
:10BDE0003E050ACE28E730E0B8CF209328053093EF |
:10BDF000290540932A0550932B050C94284B20933A |
:10BE000028053093290540932A0550932B050C945F |
:10BE10009A4BD801C7016CE0B695A7959795879581 |
:10BE20006A95D1F7E81AF90A0A0B1B0BE20EF31E0A |
:10BE3000041F151F34CB20914C05822F9927837046 |
:10BE40009070892B81F12C7F20934C0510923F0537 |
:10BE500010923E0560907404709075048090760492 |
:10BE600090907704609270047092710480927204D2 |
:10BE700090927304B1FEC0CD84EF91E09093FC03E7 |
:10BE80008093FB03B9CD81509F4FAF4FBF4F0C94B0 |
:10BE9000344B01969BCE019693CE295F3F4F4F4F77 |
:10BEA0005F4F0C947D4B609074047090750480908B |
:10BEB000760490907704A0CD21503F4F30CC295F7D |
:10BEC0003F4F4F4F5F4F0C940B4B81509E4FAF4FE6 |
:10BED000BF4F0C94F64A81509F4FAF4FBF4F0C9409 |
:10BEE0003E4AB095A095909581959F4FAF4FBF4F1B |
:10BEF0000C94F749295F3F4F4F4F5F4F0C94AF4968 |
:10BF000021503E4F4F4F5F4F0C949649B095A095EE |
:10BF1000909581959F4FAF4FBF4F0C949049F095EE |
:10BF2000E195FF4F0C944B4581509F4FD6CB8150EC |
:10BF30009F4FBCCB81509F4FAF4FBF4F0C94A64B30 |
:10BF4000F095E195FF4F0C94854821503E4F4F4F9F |
:10BF50005F4F0C94644BB095A095909581959F4F41 |
:10BF6000AF4FBF4F0C945E4B81509F4FAF4FBF4FB1 |
:10BF70000C94D149B095A095909581959F4FAF4F66 |
:10BF8000BF4F0C94F24A295F3F4F4F4F5F4F0C94C5 |
:10BF9000164A21503E4F4F4F5F4F0C94FD49609021 |
:10BFA000740470907504809076049090770410CD9E |
:10BFB0006739710534F026E930E089CD4D5F5F4F78 |
:10BFC0006ACD7093C8036093C70385CD30952195E2 |
:10BFD0003F4F08CD60907404709075048090760493 |
:10BFE00090907704EACE039691CC309521953F4FFF |
:10BFF000EECE3A94E2E0F0E0EE0EFF1E0C5F1F4F33 |
:10C000000894C11CD11C37FC02C00C94C154ED969D |
:10C010000FB6F894DEBF0FBECDBFDF91CF911F9159 |
:10C020000F91FF90EF90DF90CF90BF90AF909F90D7 |
:10C030008F907F906F905F904F903F902F900895DA |
:10C040008091590590915A05A0915B05B0915C05CE |
:10C050008093510590935205A0935305B0935405D6 |
:10C060008091550590915605A0915705B0915805BE |
:10C0700080934D0590934E05A0934F05B0935005C6 |
:10C080000895109264051092630510926205109253 |
:10C090006105089584B1806A84B93D9A82E58CBDBA |
:10C0A0001DBC459A81E0809359098AEA80935D0915 |
:10C0B00083E880935E099AE090935F09109261098A |
:10C0C0001092600910926309109262091092BB09E4 |
:10C0D00010927F09109280098CE48093810986E098 |
:10C0E00080938209909383090895EF92FF920F93B2 |
:10C0F0001F9380919C089927880F991F880F991F7B |
:10C100007C010027F7FC0095102F8091CD049091C1 |
:10C11000CE04A091CF04B091D004BC01CD01A80100 |
:10C1200097010E943F6A30936109209360098091D2 |
:10C13000C5049091C604A091C704B091C804BC0185 |
:10C14000CD01A80197010E943F6A309363092093B3 |
:10C15000620920914F093091500940915109509145 |
:10C160005209DA01C901E3E0880F991FAA1FBB1F1A |
:10C17000EA95D1F7820F931FA41FB51F820F931F5B |
:10C18000A41FB51F20918603309187034091880337 |
:10C1900050918903BC01CD010E943F6A3093690927 |
:10C1A00020936809E091D704F091D8048091110997 |
:10C1B00090911209BF010E940A6ACB019B01220FD4 |
:10C1C000331F220F331F280F391F280F391F37FD48 |
:10C1D0001CC1359527953595279530936509209392 |
:10C1E000640980914B0990914C09BF010E940A6A31 |
:10C1F0009B01220F331F220F331F260F371F260FDD |
:10C20000371F37FDFFC03595279535952795309316 |
:10C210006709209366091092D8041092D7041092EF |
:10C2200012091092110910924C0910924B09809139 |
:10C230005F0999278C30910509F4A1C08D309105D3 |
:10C240000CF069C08A30910509F4A4C10B9709F478 |
:10C2500010C180917F09882309F4CBC02091850902 |
:10C2600030918609C90181509E4F8F5F9340C8F479 |
:10C270004091870950918809CA0181509E4F8F5F74 |
:10C28000934078F480918D0885FF0BC0309364054E |
:10C290002093630550936205409361058AEF809374 |
:10C2A000660580918B0990918C0921E0893692076F |
:10C2B0000CF056C19C019093940480939304809158 |
:10C2C000910490919204281B390BC901845E9D4F03 |
:10C2D00068E671E00E940A6A845B90409093900443 |
:10C2E00080938F0420918F09309190098091FB03F6 |
:10C2F0009091FC038217930740F4809122078823D2 |
:10C3000021F43093FC032093FB038091840987364A |
:10C3100009F0ADC12AC18E30910509F476C18E3085 |
:10C3200091050CF475C00F9709F093CF8091B40874 |
:10C33000809370098091DC08809371098091920349 |
:10C34000809372098091AD08809373098091AE0843 |
:10C35000809374098091AF0880937509809191034F |
:10C36000809376098091B108809377098091B20813 |
:10C37000809378098091B308809379096ACF80917E |
:10C380002207863018F01092220785E0809370090A |
:10C390008091D908809371098091D3079091D40737 |
:10C3A0009093730980937209809170049091710445 |
:10C3B000A0917204B0917304BC01CD0125E030E07E |
:10C3C00040E050E00E943F6A309375092093740961 |
:10C3D0008091CF08809376098091D0088093770967 |
:10C3E0008091D1088093780980917F09882309F092 |
:10C3F00035CF109264051092630510926205109279 |
:10C40000610535C12D5F3F4FFECE2D5F3F4FE1CE21 |
:10C410008091CA08809370098091CB08809371093C |
:10C420008091CC08809372098091CD088093730924 |
:10C430008091CE08809374098091D2088093750909 |
:10C440008091D308809376098091D40880937709EE |
:10C450008091D708809378098091D50880937909D5 |
:10C460008091D60880937A098091D80880937B09BF |
:10C47000F0CEF89480918708E82FFF27EE0FFF1F7A |
:10C48000ED5AF74F0190F081E02DE038F1050CF006 |
:10C49000D1C02FEFE138F20714F4E1E8FFEFE093A9 |
:10C4A000700980918808E82FFF27EE0FFF1FED5AD3 |
:10C4B000F74F0190F081E02DE038F1050CF4CDC08C |
:10C4C000EFE7F0E0E093710980918608E82FFF27FD |
:10C4D000EE0FFF1FED5AF74F0190F081E02DE0388D |
:10C4E000F1050CF4B2C0EFE7F0E0E093720980913F |
:10C4F0008508E82FFF27EE0FFF1FED5AF74F019039 |
:10C50000F081E02DE038F1050CF497C0EFE7F0E0A2 |
:10C510007894E093730980918904809374098091E1 |
:10C5200087048093750980918504809376098091B2 |
:10C5300083048093770980918204809378098091A5 |
:10C540008104809379098091D7079091D80797FD4E |
:10C550008CC0959587959595879580937A0979CE26 |
:10C560002091930430919404AACE809191098093F4 |
:10C57000B809809192098093BA09809193098093B8 |
:10C58000B909809194098093BB09809195098093A2 |
:10C59000BC096DC08091650480937009809164042A |
:10C5A0008093710980916304809372098091620481 |
:10C5B0008093730980916104809374098091600471 |
:10C5C0008093750980915F048093760980915E0461 |
:10C5D0008093770980915104809378098091510468 |
:10C5E000837F809351048091270390912803809347 |
:10C5F00079098091000180937A09A2E0B0E00E945D |
:10C600005A6A802D80937B0924CE80918009809383 |
:10C6100070098091810980937109809182098093CA |
:10C62000720980918309809373098091020180933C |
:10C6300074090FCEEFE7F0E032CF8FEFE138F80763 |
:10C640000CF066CFE1E8FFEF63CF6FEFE138F6075C |
:10C650000CF04BCFE1E8FFEF48CF4FEFE138F407A4 |
:10C660000CF030CFE1E8FFEF2DCF039672CF1F9192 |
:10C670000F91FF90EF90089580915909882309F454 |
:10C680003BC045988DE599E090935B0980935A09EA |
:10C6900080916505E82FFF27E453FC4F982F9F5F9B |
:10C6A000808180935F09973008F027C090936505DB |
:10C6B000109259090E94756081E080935C09000026 |
:10C6C000000000000000000000000000000000006A |
:10C6D000000000000000000000000000000000005A |
:10C6E0000000000000000000000000000000809139 |
:10C6F0005D0980937C098EBD089510926505D8CFA1 |
:10C7000020915909222309F045C00DB407FE42C00B |
:10C7100084E08093FA03459A3EB580916705992796 |
:10C720008130910509F437C0823091050CF451C075 |
:10C73000029709F439C020915C09203208F030C01A |
:10C74000459800000000000000000000000000000C |
:10C7500000000000000000000000000000000000D9 |
:10C7600000000000000000000000000000000000C9 |
:10C770000000E0915A09F0915B09E20FF11D808100 |
:10C780008EBD80917C099081890F80937C092F5FF9 |
:10C7900020935C090895353551F120936705CBCF7F |
:10C7A00081E080935909F3CF80917E09E82FFF271C |
:10C7B000E256F64F30838F5F80937E098A3100F115 |
:10C7C00080916805381711F120937F091092670551 |
:10C7D000B2CF892B09F0AFCF20937E093093680543 |
:10C7E000313809F0A8CF81E080936705A4CF80910C |
:10C7F0006805830F8093680582E0809367059BCF6F |
:10C8000080916805830F8093680595CF8AE1EEE9F2 |
:10C81000F9E0A4E8B9E001900D928A95E1F781E092 |
:10C8200080937F091092670586CF87B18C6087B9A6 |
:10C830004298439810926A0580E88093D40310923E |
:10C8400069058093D303089580916F0581508F3FD0 |
:10C8500019F080936F05089584E080936F058091AF |
:10C86000510485FF16C04091C8084093700560913F |
:10C87000C908609371055091DB08252F332724FFE9 |
:10C8800013C080917804882379F425FF17C0429A59 |
:10C8900033C080918204882334F74091C4084093C8 |
:10C8A00070056091C608E5CF9091C5089B3FB8F030 |
:10C8B000809113098D3D98F047FDE9CF4298252FCF |
:10C8C000332724FD1DC09091C7089B3F08F180913C |
:10C8D0004609873EE8F067FD19C0439808959B3FDD |
:10C8E00020F0809113098A3008F180916A05815007 |
:10C8F0008F3F21F180936A05252F332724FFE3CF53 |
:10C90000809178048823F9F626FFE7CF439A0895AB |
:10C910009B3F20F0809146098A3060F08091690544 |
:10C9200081508F3FE1F080936905089547FDC6CFA0 |
:10C93000429AE2CF67FDD1CF439A089580911309BF |
:10C94000815080936A058091D4038130C9F0869527 |
:10C950008093D403842309F4B1CF429ACDCF809140 |
:10C9600046098150809369058091D303813051F04D |
:10C9700086958093D303862309F4AFCF439A089515 |
:10C9800080E8E6CF80E8F5CF8091C9008F7780936B |
:10C99000C9008091C9008F7B8093C9008091C90034 |
:10C9A0008F7D8093C9005A9A52981092CD0084E1ED |
:10C9B00090E08093CC008091C80082608093C80092 |
:10C9C00080E18093C9008091CA008F778093CA006C |
:10C9D0008091CA008F7B8093CA008091CA008F7DAE |
:10C9E0008093CA008091CA008F7E8093CA00809194 |
:10C9F000CA00877F8093CA008091C9008B7F809393 |
:10CA0000C9008091CA0084608093CA008091CA00E6 |
:10CA100082608093CA008091C80087FF0CC080911B |
:10CA2000CE008091C800882334F48091CE0080919C |
:10CA3000C8008823A4F38091C90080688093C9004E |
:10CA400008951F93CF93DF9380E197E20E94F01740 |
:10CA5000EC0110E08091C9008F778093C90080912C |
:10CA6000C9008F7E8093C9005A988FE198E09F9308 |
:10CA70008F931F930E9471140F900F900F90CE010F |
:10CA80000E94F917882309F066C04A9BF8CF8AE50F |
:10CA900090E00E94F017EC0185E598E09F938F935A |
:10CAA0001F920E947114529A0F900F900F90CE0116 |
:10CAB0000E94F9178823D9F383E690E05A9A0197E8 |
:10CAC00097FFFCCF8FE891E05A98019797FFFCCF32 |
:10CAD00089E090E05A9A019797FFFCCF89E090E0B7 |
:10CAE0005A98019797FFFCCF8FE891E05A9A0197E7 |
:10CAF00097FFFCCF8FE891E05A98019797FFFCCF02 |
:10CB000089E090E05A9A019797FFFCCF89E090E086 |
:10CB10005A98019797FFFCCF8FE891E05A9A0197B6 |
:10CB200097FFFCCF8FE891E05A98019797FFFCCFD1 |
:10CB300089E090E05A9A019797FFFCCF89E090E056 |
:10CB40005A98019797FFFCCF8FE891E05A9A019786 |
:10CB500097FFFCCF0AC08BE598E09F938F931F93BC |
:10CB60000E9471140F900F900F9052985A980E9443 |
:10CB7000C464DF91CF911F9108951F920F920FB659 |
:10CB80000F921124EF92FF920F931F932F933F93D5 |
:10CB90004F935F936F937F938F939F93AF93BF93C5 |
:10CBA000CF93DF93EF93FF932091CE008091D50335 |
:10CBB000813009F44BC0809172058823C9F040E0B0 |
:10CBC00050E0809173058823C9F4452B09F44AC0CD |
:10CBD00081E080937305809174058F5F8093740565 |
:10CBE00043E0809174058031E8F44093720504C1FC |
:10CBF00041E050E080917305882339F3813009F4D6 |
:10CC00004AC08230B9F1833009F44AC081E0809390 |
:10CC1000D503109274051092760544E48091740552 |
:10CC2000803118F380917605882331F48091D50303 |
:10CC3000882311F480938403109274051092760572 |
:10CC40001092730584E480937205D6C01092D503C8 |
:10CC500084E480937205109274051092730510920B |
:10CC60007505CAC044E4809374058093730580936E |
:10CC70007505D4CF452B51F643E02093750590916F |
:10CC80007405923009F492C083E0809373059F5F2E |
:10CC900090937405C3CF452B09F0B8CF82E099CFAC |
:10CCA000452B09F0B3CF482F82E080937305809124 |
:10CCB00074058F5F8093740590917505892F869513 |
:10CCC0008695E82FFF27EF70F0703196892F99270E |
:10CCD000982F88273327822B932B93708050924074 |
:10CCE00063E070E00E940A6AEB30F10508F057C07B |
:10CCF0007F01EE0EFF1EF701ED5AF74F8081918103 |
:10CD00009B01281B390BC90137FD6EC0069754F4EF |
:10CD100080918204883C08F05BC080918204865F29 |
:10CD200080938204F701ED5AF74F808191819C0135 |
:10CD3000220F331F280F391F260F371F37FD51C011 |
:10CD4000E901D595C795D595C795CB0101968C1767 |
:10CD50009D07BCF5219780918204843B60F1870197 |
:10CD60000759174FF701ED5AF74F80819181FE0166 |
:10CD7000E81BF90BCF0163E070E00E940A6ACB0167 |
:10CD8000880F991F860F971FF8019183808323E5F1 |
:10CD900038E0E20EF31EF701D183C0833FCF7297D4 |
:10CDA00008F43CCF81E08093D50338CF27FD20C025 |
:10CDB0001092760569CFF701E759F74F118210827B |
:10CDC000E6CF61507040C617D7072CF62196C3CF27 |
:10CDD00088EC8093820480916F008F7D80936F0038 |
:10CDE000A1CF2D5F3F4FACCF909581959F4F8ECFB8 |
:10CDF00081E08093760548CFFF91EF91DF91CF914D |
:10CE0000BF91AF919F918F917F916F915F914F9162 |
:10CE10003F912F911F910F91FF90EF900F900FBEB8 |
:10CE20000F901F901895CF93FC0197FD21C0C1E092 |
:10CE300028E631E0CF01B9010E940A6AFC018B3576 |
:10CE4000910554F08B5590408A35910538F484EB68 |
:10CE500090E08E1B9F0BFC0141E013C0CF01855B6E |
:10CE600090408A35910548F4E45BF0404FEF09C0EB |
:10CE7000CFEFF095E195FF4FDBCF2E1B3F0BF90174 |
:10CE80004FEFEE0FFF1FE054F64F259134918C2F9A |
:10CE9000992787FD9095829FB001839F700D929F87 |
:10CEA000700D1124842F992787FD9095689FA0010C |
:10CEB000699F500D789F500D1124CA01CF9108959C |
:10CEC0002AE530E0281B390BC9010E941367089539 |
:10CED0001F93CF93DF93EB016115710519F4009750 |
:10CEE00009F494C097FD3EC011E0209729F48AE52B |
:10CEF0001802B00111248AC0AA2797FDA095BA2F65 |
:10CF000026E0880F991FAA1FBB1F2A95D1F79E0103 |
:10CF1000442737FD4095542FBC01CD010E943F6A44 |
:10CF2000F90137FD2CC081E0EA35F807ACF08CE15F |
:10CF3000E73AF807CCF02AE530E01C161D061CF590 |
:10CF4000812F992787FD9095829FB001839F700D57 |
:10CF5000929F700D11245AC0EA59F74F8491282FDF |
:10CF60003327EBCF1FEFC1CF89E0ED38F8078CF402 |
:10CF700085E0EA3BF80784F028E530E0DECFF09565 |
:10CF8000E195FF4FD0CFD7FD0EC0B901645B704073 |
:10CF90003DC029E530E0D1CF84E0E731F80754F017 |
:10CFA00027E530E0CACF111684F764EB70E0621B0E |
:10CFB000730B2CC083E0EE32F8071CF026E530E05E |
:10CFC000BCCF82E0E939F8071CF025E530E0B5CFA9 |
:10CFD00082E0E233F8071CF024E530E0AECF81E0D8 |
:10CFE000E73EF8071CF023E530E0A7CF81E0ED3AFB |
:10CFF000F8071CF022E530E0A0CFEF57F1401CF01D |
:10D0000021E530E09ACF20E530E097CFCB01DF91EA |
:10D01000CF911F910895EF92FF920F931F93CF939B |
:10D02000DF937B018C0120E030E040E050E0FA012A |
:10D03000E9016FE00BC0C21BD30BE40BF50B2F5FB4 |
:10D040003F4F4F4F5F4F615067FD31C0220F331F7D |
:10D05000441F551FCC0FDD1FEE1FFF1FCC0FDD1F20 |
:10D06000EE1FFF1FD801C7017EE1B695A7959795E2 |
:10D0700087957A95D1F7C80FD91FEA1FFB1FEE0CD1 |
:10D08000FF1C001F111FEE0CFF1C001F111F2F5F44 |
:10D090003F4F4F4F5F4FC217D307E407F50758F6CE |
:10D0A0002150304040405040615067FFCFCF5695EF |
:10D0B000479537952795CA01B901DF91CF911F9107 |
:10D0C0000F91FF90EF9008950024222733274427E3 |
:10D0D00051E0BB27EE27FF27A0E1660F771F881FCF |
:10D0E000991F001C221F331F441F660F771F881FC4 |
:10D0F000991F001C221F331F441F2AF4050E2B1FEB |
:10D100003E1F4F1F04C0051A2B0B3E0B4F0B550F34 |
:10D11000BB1FEE1F587F556047FD5250AA95E9F698 |
:10D12000E695B7955795E695B7955795852F9B2F1B |
:10D1300008952227332741E0552768E0880F991F7B |
:10D14000221F331F880F991F221F331F1AF4240F29 |
:10D15000351F02C0241B350B440F551F487F456007 |
:10D1600037FD42506A9551F7569547955695479524 |
:10D17000842F0895AA2797FF04C0809590958A1F51 |
:10D180009A1F77FF04C0609570956A1F7A1F669F8B |
:10D190009001779FA001679F300D411D5A1F300DF0 |
:10D1A000411D5A1F889FF001999F2E0F3F1F401D60 |
:10D1B000511D899F300D411D5A1F300D411D5A1FB1 |
:10D1C000CA01B901112480CFFC014150504030F018 |
:10D1D00001900616D1F73197CF0108958827992736 |
:10D1E00008955058192EA6D001D08CC0BA176207E6 |
:10D1F000730784079507B1F188F40EF410940B2E91 |
:10D20000BA2FA02D062E622F202D072E732F302D22 |
:10D21000082E842F402D092E952F502DFF275523A2 |
:10D22000B9F0591B49F0573E98F046953795279528 |
:10D23000A795F0405395C9F776F0BA0F621F731F98 |
:10D24000841F30F4879577956795B795F04093954F |
:10D2500017FA0F2E0895BF1BBB27BA0B620B730B77 |
:10D26000840BF6CFDEF692C097FB70D09F3738F074 |
:10D27000FEE9F91B982F872F762F6B2F05C083C0EF |
:10D280009695879577956795F150D0F73EF49095F0 |
:10D290008095709561957F4F8F4F9F4F0895E894CB |
:10D2A00003C097FB0EF4F3DFB62F672F782F892F7B |
:10D2B0009EE9002427C00ED05EF004C00BD026F0FB |
:10D2C00001C008D019F020F48FEF089580E0089590 |
:10D2D00081E0089597FB092E052600F868942DD06B |
:10D2E000E89407FC07C0621773078407950721F0CD |
:10D2F00008F400940794989408959A95BB0F661FBC |
:10D30000771F881F11249923A1F08823B2F79F3F2C |
:10D3100059F0BB0F48F421F4002011F460FF04C061 |
:10D320006F5F7F4F8F4F9F4F881F9795879597F916 |
:10D33000089529C0052E092607FA440F551F5F3F9F |
:10D3400079F0AA27A51708F051E04795880F991F93 |
:10D350009F3F31F0BB27B91708F091E087950895FA |
:10D360009F919F91112414C097FB880F991F9F3F95 |
:10D3700031F0BB27B91708F091E0879508959F9188 |
:10D380009F91112405C0662777278827992708953C |
:10D390009FEF80EC0895629FD001739FF001829F00 |
:10D3A000E00DF11D649FE00DF11D929FF00D839F34 |
:10D3B000F00D749FF00D659FF00D9927729FB00DD1 |
:10D3C000E11DF91F639FB00DE11DF91FBD01CF01E4 |
:10D3D00011240895991B79E004C0991F961708F04D |
:10D3E000961B881F7A95C9F780950895AA1BBB1BC9 |
:10D3F00051E107C0AA1FBB1FA617B70710F0A61B55 |
:10D40000B70B881F991F5A95A9F780959095BC0175 |
:10D41000CD01089597FB092E07260AD077FD04D089 |
:10D42000E5DF06D000201AF4709561957F4F0895CE |
:10D43000F6F7909581959F4F0895A1E21A2EAA1BA9 |
:10D44000BB1BFD010DC0AA1FBB1FEE1FFF1FA217B4 |
:10D45000B307E407F50720F0A21BB30BE40BF50BB1 |
:10D46000661F771F881F991F1A9469F7609570953A |
:10D47000809590959B01AC01BD01CF01089597FB6C |
:10D48000092E05260ED057FD04D0D7DF0AD0001C88 |
:10D4900038F450954095309521953F4F4F4F5F4F51 |
:10D4A0000895F6F790958095709561957F4F8F4F11 |
:10D4B0009F4F0895F999FECFB2BDA1BDF89A11967C |
:10D4C00000B40895F7DF01921A94E1F70895F999ED |
:10D4D000FECFB2BDA1BD00BC11960FB6F894FA9A6A |
:10D4E000F99A0FBE08950190F2DF1A94E1F70895BA |
:10D4F0005E010A0151756164726F0000416E676CD4 |
:10D50000654E69636B20202020202020416E676CCF |
:10D5100065526F6C6C202020202020204163634ED8 |
:10D5200069636B202020202020202020416363524B |
:10D530006F6C6C2020202020202020204779726FE3 |
:10D5400047696572202020202020202048696768D4 |
:10D55000742056616C756520202020204163635A39 |
:10D560002020202020202020202020204761732000 |
:10D57000202020202020202020202020436F6D709C |
:10D580006173732056616C7565202020566F6C7432 |
:10D59000616765202020202020202020456D7066B6 |
:10D5A000616E672020202020202020204779726F84 |
:10D5B000204B6F6D70617373202020204D6F746F4E |
:10D5C000722046726F6E7420202020204D6F746F81 |
:10D5D0007220526561722020202020204D6F746FD0 |
:10D5E00072204C6566742020202020204D6F746FBF |
:10D5F000722052696768742020202020202020207B |
:10D60000202020202020202020202020202020201A |
:10D6100020202020202020202020202056617269F8 |
:10D620006F4D657465722020202020204D4B334DB6 |
:10D6300061672043616C5374617465205365727631 |
:10D640006F2020202020202020202020486F6F766F |
:10D650006572676173202020202020202020202058 |
:10D6600020202020202020202020202020202020BA |
:10D6700020202020202020202020202020202020AA |
:10D68000202020202020202020202020202020209A |
:10D69000202020202020202020202020202020208A |
:10D6A000202020202020202020202020202020207A |
:10D6B0002020202020202020202020204932432DFF |
:10D6C0004572726F722020202020202020202020F0 |
:10D6D0002020202020202020202020204750535F81 |
:10D6E0004E69636B20202020202020204750535F6C |
:10D6F000526F6C6C2020202020202020C800016464 |
:10D70000FF01FFFF01FC01FC0101737373FF0300C4 |
:10D710007D0000C409C40964000E48616C6C6F2070 |
:10D7200057656C740000000000000000000000005D |
:10D7300000000000000000000000000000000000E9 |
:10D7400000000000000000000000000000000000D9 |
:10D7500000000000000000000000000000000000C9 |
:10D7600000000000000000000000010203040506A4 |
:10D770000708090A01040B050000ECFF6440415A48 |
:10D780004664640A02969696960840403A10FB302A |
:10D79000380190D0030090D00300F401640053706E |
:10D7A0006F727400004E6F726D616C0000426567AD |
:10D7B000696E6E657200007800FF03640A0B0D0B42 |
:06D7C0000C0E0F01010137 |
:00000001FF |
/tags/V0.76g/Hex-Files/WasIstWas.txt |
---|
0,0 → 1,51 |
+++++++++++++++++++++++++ |
+ 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 |
//+++++++++++ |
// Quadro: |
// 1 |
// 4 3 |
// 2 |
//+++++++++++ |
// Reverse Props on 1 2 |
//+++++++++++ |
// Octo: |
// 1 2 |
// 8 3 |
// 7 4 |
// 6 5 |
//+++++++++++ |
//+++++++++++ |
// Octo2: |
// 1 |
// 8 2 |
// 7 3 |
// 6 4 |
// 5 |
//+++++++++++ |
//+++++++++++ |
// Octo3: |
// 1 |
// 2 |
// 8 7 3 4 |
// 5 |
// 6 |
//+++++++++++ |
// Reverse Props on octo: 1 3 5 7 |
/tags/V0.76g/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + 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 oder Nutzung 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 the sources to other systems or using the software on other systems (except 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. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/tags/V0.76g/Settings.h |
---|
--- V0.76g/Spectrum.c (nonexistent) |
+++ V0.76g/Spectrum.c (revision 1440) |
@@ -0,0 +1,321 @@ |
+/*####################################################################################### |
+Decodieren eines RC Summen Signals oder Spektrum Empfänger-Satellit |
+#######################################################################################*/ |
+ |
+#include "Spectrum.h" |
+#include "main.h" |
+unsigned char SpektrumTimer = 0; |
+ |
+//--------------------------------------------------------------// |
+ |
+//--------------------------------------------------------------// |
+void SpektrumBinding(void) |
+{ |
+ unsigned int timerTimeout = SetDelay(10000); // Timeout 10 sec. |
+ unsigned char connected = 0; |
+ unsigned int delaycounter; |
+ |
+ UCSR1B &= ~(1 << RXCIE1); // disable rx-interrupt |
+ UCSR1B &= ~(1<<RXEN1); // disable Uart-Rx |
+ PORTD &= ~(1 << PORTD2); // disable pull-up |
+ |
+ printf("\n\rPlease connect Spektrum receiver for binding NOW..."); |
+ |
+ while(!CheckDelay(timerTimeout)) |
+ { |
+ if (PIND & (1 << PORTD2)) { timerTimeout = SetDelay(90); connected = 1; break; } |
+ } |
+ |
+ if (connected) |
+ { |
+ |
+ printf("ok.\n\r"); |
+ DDRD |= (1 << DDD2); // Rx as output |
+ |
+ while(!CheckDelay(timerTimeout)); // delay after startup of RX |
+ for (delaycounter = 0; delaycounter < 100; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ |
+ } |
+ else |
+ { printf("Timeout.\n\r"); |
+ |
+ |
+ } |
+ |
+ DDRD &= ~(1 << DDD2); // RX as input |
+ PORTD &= ~(1 << PORTD2); |
+ |
+ Uart1Init(); // init Uart again |
+} |
+ |
+//############################################################################ |
+// zum Decodieren des Spektrum Satelliten wird USART1 benutzt. |
+// USART1 initialisation from killagreg |
+void Uart1Init(void) |
+//############################################################################ |
+ { |
+ // -- Start of USART1 initialisation for Spekturm seriell-mode |
+ // USART1 Control and Status Register A, B, C and baud rate register |
+ uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * 115200) - 1); |
+ // disable RX-Interrupt |
+ UCSR1B &= ~(1 << RXCIE1); |
+ // disable TX-Interrupt |
+ UCSR1B &= ~(1 << TXCIE1); |
+ // disable DRE-Interrupt |
+ UCSR1B &= ~(1 << UDRIE1); |
+ // set direction of RXD1 and TXD1 pins |
+ // set RXD1 (PD2) as an input pin |
+ PORTD |= (1 << PORTD2); |
+ DDRD &= ~(1 << DDD2); |
+ // USART0 Baud Rate Register |
+ // set clock divider |
+ |
+ UBRR1H = (uint8_t)(ubrr>>8); |
+ UBRR1L = (uint8_t)ubrr; |
+ // enable double speed operation |
+ UCSR1A |= (1 << U2X1); |
+ // enable receiver and transmitter |
+ //UCSR1B = (1<<RXEN1)|(1<<TXEN1); |
+ |
+ UCSR1B = (1<<RXEN1); |
+ // set asynchronous mode |
+ UCSR1C &= ~(1 << UMSEL11); |
+ UCSR1C &= ~(1 << UMSEL10); |
+ // no parity |
+ UCSR1C &= ~(1 << UPM11); |
+ UCSR1C &= ~(1 << UPM10); |
+ // 1 stop bit |
+ UCSR1C &= ~(1 << USBS1); |
+ // 8-bit |
+ UCSR1B &= ~(1 << UCSZ12); |
+ UCSR1C |= (1 << UCSZ11); |
+ UCSR1C |= (1 << UCSZ10); |
+ // flush receive buffer explicit |
+ while(UCSR1A & (1<<RXC1)) UDR1; |
+ // enable RX-interrupts at the end |
+ UCSR1B |= (1 << RXCIE1); |
+ // -- End of USART1 initialisation |
+ return; |
+ } |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) Rainer Walther |
+// + RC-routines from original MK rc.c (c) H&I |
+// + Useful infos from Walter: http://www.rcgroups.com/forums/showthread.php?t=714299&page=2 |
+// + only for non-profit use |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// |
+// 20080808 rw Modified for Spektrum AR6100 (PPM) |
+// 20080823 rw Add Spektrum satellite receiver on USART1 (644P only) |
+// 20081213 rw Add support for Spektrum DS9 Air-Tx-Module (9 channels) |
+// Replace AR6100-coding with original composit-signal routines |
+// |
+// --- |
+// Entweder Summensignal ODER Spektrum-Receiver anschließen. Nicht beides gleichzeitig betreiben! |
+// Binding is not implemented. Bind with external Receiver. |
+// Servo output J3, J4, J5 not serviced |
+// |
+// Anschuß Spektrum Receiver |
+// Orange: 3V von der FC (keinesfalls an 5V anschließen!) |
+// Schwarz: GND |
+// Grau: RXD1 (Pin 3) auf 10-Pol FC-Stecker |
+// |
+// --- |
+// Satellite-Reciever connected on USART1: |
+// |
+// DX7/DX6i: One data-frame at 115200 baud every 22ms. |
+// DX7se: One data-frame at 115200 baud every 11ms. |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data (FLT-Mode) |
+// byte5: and byte6: channel data (Roll) |
+// byte7: and byte8: channel data (Nick) |
+// byte9: and byte10: channel data (Gier) |
+// byte11: and byte12: channel data (Gear Switch) |
+// byte13: and byte14: channel data (Gas) |
+// byte15: and byte16: channel data (AUX2) |
+// |
+// DS9 (9 Channel): One data-frame at 115200 baud every 11ms, alternating frame 1/2 for CH1-7 / CH8-9 |
+// 1st Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: channel data |
+// byte9: and byte10: channel data |
+// byte11: and byte12: channel data |
+// byte13: and byte14: channel data |
+// byte15: and byte16: channel data |
+// 2nd Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: 0xffff |
+// byte9: and byte10: 0xffff |
+// byte11: and byte12: 0xffff |
+// byte13: and byte14: 0xffff |
+// byte15: and byte16: 0xffff |
+// |
+// Each channel data (16 bit= 2byte, first msb, second lsb) is arranged as: |
+// |
+// Bits: F 0 C3 C2 C1 C0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 |
+// |
+// 0 means a '0' bit |
+// F: 1 = indicates beginning of 2nd frame for CH8-9 (DS9 only) |
+// C3 to C0 is the channel number. 0 to 9 (4 bit, as assigned in the transmitter) |
+// D9 to D0 is the channel data (10 bit) 0xaa..0x200..0x356 for 100% transmitter-travel |
+// |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+#define MIN_FRAMEGAP 68 // 7ms |
+#define MAX_BYTEGAP 3 // 310us |
+ |
+//############################################################################ |
+//Diese Routine startet und inizialisiert den USART1 für seriellen Spektrum satellite reciever |
+SIGNAL(USART1_RX_vect) |
+//############################################################################ |
+{ |
+ static unsigned char Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0; |
+ unsigned int Channel, index; |
+ signed int signal, tmp; |
+ int bCheckDelay; |
+ uint8_t c; |
+ c = UDR1; // get data byte |
+ if(ReSync == 1) |
+ { |
+ // wait for beginning of new frame |
+ ReSync = 0; |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ FrameCnt = 0; |
+ Sync = 0; |
+ ByteHigh = 0; |
+ } |
+ else |
+ { |
+ if(!SpektrumTimer) bCheckDelay = 1; else bCheckDelay = 0;//CheckDelay(FrameTimer); |
+ if ( Sync == 0 ) |
+ { |
+ if(bCheckDelay) |
+ { |
+ // nach einer Pause von mind. 7ms erstes Sync-Character gefunden |
+ // Zeichen ignorieren, da Bedeutung unbekannt |
+ Sync = 1; |
+ FrameCnt ++; |
+ SpektrumTimer = MAX_BYTEGAP; |
+ } |
+ else |
+ { |
+ // Zeichen kam vor Ablauf der 7ms Sync-Pause |
+ // warten auf erstes Sync-Zeichen |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ FrameCnt = 0; |
+ Sync = 0; |
+ ByteHigh = 0; |
+ } |
+ } |
+ else if((Sync == 1) && !bCheckDelay) |
+ { |
+ // zweites Sync-Character ignorieren, Bedeutung unbekannt |
+ Sync = 2; |
+ FrameCnt ++; |
+ SpektrumTimer = MAX_BYTEGAP; |
+ } |
+ else if((Sync == 2) && !bCheckDelay) |
+ { |
+ SpektrumTimer = MAX_BYTEGAP; |
+ // Datenbyte high |
+ ByteHigh = c; |
+ if (FrameCnt == 2) |
+ { |
+ // is 1st Byte of Channel-data |
+ // Frame 1 with Channel 1-7 comming next |
+ Frame2 = 0; |
+ if(ByteHigh & 0x80) |
+ { |
+ // DS9: Frame 2 with Channel 8-9 comming next |
+ Frame2 = 1; |
+ } |
+ } |
+ Sync = 3; |
+ FrameCnt ++; |
+ } |
+ else if((Sync == 3) && !bCheckDelay) |
+ { |
+ // Datenbyte low |
+ // High-Byte for next channel comes next |
+ SpektrumTimer = MAX_BYTEGAP; |
+ Sync = 2; |
+ FrameCnt ++; |
+ index = (ByteHigh >> 2) & 0x0f; |
+ index++; |
+ Channel = ((unsigned int)ByteHigh << 8) | c; |
+ signal = Channel & 0x3ff; |
+ signal -= 0x200; // Offset, range 0x000..0x3ff? |
+ signal = signal/3; // scaling to fit PPM resolution |
+ |
+ if(index >= 0 && index <= 10) |
+ { |
+ // Stabiles Signal |
+ if(abs(signal - PPM_in[index]) < 6) |
+ { |
+ if(SenderOkay < 200) SenderOkay += 10; |
+ else |
+ { |
+ SenderOkay = 200; |
+ TIMSK1 &= ~_BV(ICIE1); // disable PPM-Input |
+ } |
+ } |
+ tmp = (3 * (PPM_in[index]) + signal) / 4; |
+ if(tmp > signal+1) tmp--; else |
+ if(tmp < signal-1) tmp++; |
+ if(SenderOkay >= 180) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
+ else PPM_diff[index] = 0; |
+ PPM_in[index] = tmp; |
+ } |
+ else if(index > 17) ReSync = 1; // hier stimmt was nicht: neu synchronisieren |
+ } |
+ else |
+ { |
+ // hier stimmt was nicht: neu synchronisieren |
+ ReSync = 1; |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ // new frame next, nach fruehestens 7ms erwartet |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ } |
+ |
+ // 16 Bytes eingetroffen -> Komplett |
+ if(FrameCnt >= 16) |
+ { |
+ // Frame complete |
+ if(Frame2 == 0) |
+ { |
+ // Null bedeutet: Neue Daten |
+ // nur beim ersten Frame (CH 0-7) setzen |
+ if(!ReSync) NewPpmData = 0; |
+ } |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ Sync = 0; |
+ SpektrumTimer = MIN_FRAMEGAP; |
+ } |
+ } |
+} |
+ |
+ |
/tags/V0.76g/Spectrum.h |
---|
0,0 → 1,10 |
/*####################################################################################### |
Dekodieren eines Spectrum Signals |
#######################################################################################*/ |
#ifndef _SPECTRUM_H |
#define _SPECTRUM_H |
void Uart1Init(void); |
void SpektrumBinding(void); |
extern unsigned char SpektrumTimer; |
#endif //_RC_H |
/tags/V0.76g/_Settings.h |
---|
0,0 → 1,43 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Abstimmung |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ACC_AMPLIFY 6 |
#define FAKTOR_P 1 |
#define FAKTOR_I 0.0001 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debug-Interface |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
#define MIN_DEBUG_INTERVALL 250 // 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 |
/tags/V0.76g/analog.c |
---|
0,0 → 1,466 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + only for non-profit use |
// + www.MikroKopter.com |
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + 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 AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0; |
volatile int HiResNick = 2500, HiResRoll = 2500; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile long SummenHoehe = 0; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
signed char ExpandBaro = 0; |
volatile int VarioMeter = 0; |
volatile unsigned int ZaehlMessungen = 0; |
unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
unsigned char GyroDefektN = 0,GyroDefektR = 0,GyroDefektG = 0; |
volatile unsigned char AdReady = 1; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ANALOG_ON; |
} |
#define DESIRED_H_ADC 800 |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
ExpandBaro = 0; |
Delay_ms_Mess(100); |
if(MessLuftdruck < DESIRED_H_ADC) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < DESIRED_H_ADC) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
void SucheGyroOffset(void) |
{ |
unsigned char i, ready = 0; |
int timeout; |
GyroDefektN = 0; GyroDefektR = 0; GyroDefektG = 0; |
timeout = SetDelay(2000); |
for(i=140; i != 0; i--) |
{ |
if(ready == 3 && i > 10) i = 9; |
ready = 0; |
if(AdWertNick < 1020) AnalogOffsetNick--; else if(AdWertNick > 1030) AnalogOffsetNick++; else ready++; |
if(AdWertRoll < 1020) AnalogOffsetRoll--; else if(AdWertRoll > 1030) AnalogOffsetRoll++; else ready++; |
if(AdWertGier < 1020) AnalogOffsetGier--; else if(AdWertGier > 1030) AnalogOffsetGier++; else ready++; |
twi_state = 8; |
i2c_start(); |
if(AnalogOffsetNick < 10) { GyroDefektN = 1; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { GyroDefektN = 1; AnalogOffsetNick = 245;}; |
if(AnalogOffsetRoll < 10) { GyroDefektR = 1; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { GyroDefektR = 1; AnalogOffsetRoll = 245;}; |
if(AnalogOffsetGier < 10) { GyroDefektG = 1; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { GyroDefektG = 1; AnalogOffsetGier = 245;}; |
while(twi_state) if(CheckDelay(timeout)) {printf("\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"); break;} |
AdReady = 0; |
ANALOG_ON; |
while(!AdReady); |
if(i<10) Delay_ms_Mess(10); |
} |
Delay_ms_Mess(70); |
} |
/* |
0 n |
1 r |
2 g |
3 y |
4 x |
5 n |
6 r |
7 u |
8 z |
9 L |
10 n |
11 r |
12 g |
13 y |
14 x |
15 n |
16 r |
17 L |
*/ |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
static signed int accy, accx; |
static long tmpLuftdruck = 0; |
static char messanzahl_Druck = 0; |
switch(state++) |
{ |
case 0: |
nick1 = ADC; |
kanal = AD_ROLL; |
break; |
case 1: |
roll1 = ADC; |
kanal = AD_GIER; |
break; |
case 2: |
gier1 = ADC; |
kanal = AD_ACC_Y; |
break; |
case 3: |
Aktuell_ay = NeutralAccY - ADC; |
accy = Aktuell_ay; |
kanal = AD_ACC_X; |
break; |
case 4: |
Aktuell_ax = ADC - NeutralAccX; |
accx = Aktuell_ax; |
kanal = AD_NICK; |
break; |
case 5: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 6: |
roll1 += ADC; |
kanal = AD_UBAT; |
break; |
case 7: |
UBat = (3 * UBat + ADC / 3) / 4; |
kanal = AD_ACC_Z; |
break; |
case 8: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
NeutralAccZ += 0.02; |
if(modell_fliegt < 500) NeutralAccZ += 0.1; |
} |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 550) |
{ |
NeutralAccZ-= 0.02; |
if(modell_fliegt < 500) NeutralAccZ -= 0.1; |
} |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = AD_DRUCK; |
break; |
// "case 8:" fehlt hier absichtlich |
case 10: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 11: |
roll1 += ADC; |
kanal = AD_GIER; |
break; |
case 12: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 1) / 2; |
else |
if(PlatinenVersion == 20) AdWertGier = 2047 - (ADC + gier1); |
else AdWertGier = (ADC + gier1); |
kanal = AD_ACC_Y; |
break; |
case 13: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = (Aktuell_ay + accy); |
kanal = AD_ACC_X; |
break; |
case 14: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = (Aktuell_ax + accx); |
kanal = AD_NICK; |
break; |
case 15: |
nick1 += ADC; |
if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4; |
AdWertNick = nick1 / 8; |
nick_filter = (nick_filter + nick1) / 2; |
HiResNick = nick_filter - AdNeutralNick; |
AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; |
kanal = AD_ROLL; |
break; |
case 16: |
roll1 += ADC; |
if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4; |
AdWertRoll = roll1 / 8; |
roll_filter = (roll_filter + roll1) / 2; |
HiResRoll = roll_filter - AdNeutralRoll; |
AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2; |
kanal = AD_DRUCK; |
break; |
case 17: |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
// "break" fehlt hier absichtlich |
case 9: |
MessLuftdruck = ADC; |
tmpLuftdruck += MessLuftdruck; |
if(++messanzahl_Druck >= 18) |
{ |
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (18 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
HoehenWert = StartLuftdruck - Luftdruck; |
SummenHoehe -= SummenHoehe/SM_FILTER; |
SummenHoehe += HoehenWert; |
VarioMeter = (15 * VarioMeter + 8 * (int)(HoehenWert - SummenHoehe/SM_FILTER))/16; |
tmpLuftdruck /= 2; |
messanzahl_Druck = 18/2; |
} |
kanal = AD_NICK; |
break; |
default: |
kanal = 0; state = 0; kanal = AD_NICK; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/* |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static signed int gier1, roll1, nick1; |
static signed long nick_filter, roll_filter; |
static signed int accy, accx; |
switch(state++) |
{ |
case 0: |
nick1 = ADC; |
kanal = AD_ROLL; |
break; |
case 1: |
roll1 = ADC; |
kanal = AD_GIER; |
break; |
case 2: |
gier1 = ADC; |
kanal = AD_ACC_Y; |
break; |
case 3: |
Aktuell_ay = NeutralAccY - ADC; |
accy = Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 4: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 5: |
roll1 += ADC; |
kanal = AD_ACC_Z; |
break; |
case 6: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
NeutralAccZ += 0.02; |
if(modell_fliegt < 500) NeutralAccZ += 0.1; |
} |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 550) |
{ |
NeutralAccZ-= 0.02; |
if(modell_fliegt < 500) NeutralAccZ -= 0.1; |
} |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = AD_NICK; |
break; |
case 7: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 8: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 9: |
Aktuell_ax = ADC - NeutralAccX; |
accx = Aktuell_ax; |
kanal = AD_GIER; |
break; |
case 10: |
gier1 += ADC; |
kanal = AD_NICK; |
break; |
case 11: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 12: |
roll1 += ADC; |
kanal = AD_UBAT; |
break; |
case 13: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = AD_ACC_Y; |
break; |
case 14: |
Aktuell_ay = NeutralAccY - ADC; |
accy += Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 15: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 16: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 17: |
Aktuell_ax = ADC - NeutralAccX; |
accx += Aktuell_ax; |
kanal = AD_NICK; |
break; |
case 18: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 19: |
roll1 += ADC; |
kanal = AD_GIER; |
break; |
case 20: |
gier1 += ADC; |
kanal = AD_ACC_Y; |
break; |
case 21: |
Aktuell_ay = NeutralAccY - ADC; |
accy += Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 22: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 23: |
roll1 += ADC; |
kanal = AD_DRUCK; |
break; |
case 24: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (7 * HoeheD + (int) Parameter_Luftdruck_D * (int)(255 * ExpandBaro + StartLuftdruck - tmpLuftdruck - HoehenWert)) / 8; // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = 255 * ExpandBaro + StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = AD_NICK; |
break; |
case 25: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 26: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 27: |
Aktuell_ax = ADC - NeutralAccX; |
accx += Aktuell_ax; |
kanal = AD_GIER; |
break; |
case 28: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 2) / 4; |
else |
if(PlatinenVersion == 20) AdWertGier = 2047 - (ADC + gier1 + 1) / 2; |
else AdWertGier = (ADC + gier1 + 1) / 2; |
kanal = AD_NICK; |
break; |
case 29: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 30: |
roll1 += ADC; |
kanal = AD_ACC_Y; |
break; |
case 31: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = (Aktuell_ay + accy); |
kanal = AD_NICK; |
break; |
case 32: |
AdWertNick = (ADC + nick1 + 3) / 5; |
nick_filter = (long) (1 * (long) nick_filter + 4 * (long)(ADC + nick1) + 1) / 2; |
if(PlatinenVersion == 10) { AdWertNick /= 2;nick_filter /=2;} |
HiResNick = nick_filter - 20 * AdNeutralNick; |
AdWertNickFilter = (long)(3L * (long)AdWertNickFilter + HiResNick + 2) / 4; |
DebugOut.Analog[21] = AdWertNickFilter / 4; |
kanal = AD_ROLL; |
break; |
case 33: |
AdWertRoll = (ADC + roll1 + 3) / 5; |
roll_filter = (long)(1 * (long)roll_filter + 4 * (long)(ADC + roll1) + 1) / 2; |
if(PlatinenVersion == 10) { AdWertRoll /= 2;roll_filter /=2;} |
HiResRoll = roll_filter - 20 * AdNeutralRoll; |
AdWertRollFilter = (long)(3L * (long)AdWertRollFilter + HiResRoll + 2) / 4; |
DebugOut.Analog[22] = AdWertRollFilter / 4; |
kanal = AD_ACC_X; |
break; |
case 34: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = (Aktuell_ax + accx); |
kanal = AD_NICK; |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
*/ |
/tags/V0.76g/analog.h |
---|
0,0 → 1,48 |
#ifndef _ANALOG_H |
#define _ANALOG_H |
/*####################################################################################### |
#######################################################################################*/ |
#define SM_FILTER 16 |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int HiResNick, HiResRoll; |
extern volatile int AdWertNickFilter, AdWertRollFilter, AdWertGierFilter; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile long SummenHoehe; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern signed char ExpandBaro; |
extern volatile int VarioMeter; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
extern unsigned char AnalogOffsetNick,AnalogOffsetRoll,AnalogOffsetGier; |
extern volatile unsigned char AdReady; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
void SucheGyroOffset(void); |
#define AD_GIER 0 |
#define AD_ROLL 1 |
#define AD_NICK 2 |
#define AD_DRUCK 3 |
#define AD_UBAT 4 |
#define AD_ACC_Z 5 |
#define AD_ACC_Y 6 |
#define AD_ACC_X 7 |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
//Signle trigger Mode, Interrupt on |
#endif //_ANALOG_H |
/tags/V0.76g/eeprom.c |
---|
0,0 → 1,272 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultStickMapping(void) // mode 2 |
{ |
EE_Parameter.Kanalbelegung[K_GAS] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_NICK] = 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; |
} |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER; |
EE_Parameter.ExtraConfig = CFG2_HEIGHT_LIMIT;// | CFG2_VARIO_BEEP | CFG_SENSITIVE_RC |
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_HoverBand = 5; // Wert : 0-250 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250 |
EE_Parameter.Hoehe_StickNeutralPoint = 0; // Wert : 0-250 (0 = Hoover-Estimation) |
EE_Parameter.Hoehe_Verstaerkung = 20; // Wert : 0-50 |
EE_Parameter.Stick_P = 14; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 12; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // 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.Gyro_D = 3; // Wert : 0-250 |
EE_Parameter.Gyro_Gier_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_Gier_I = 150; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // 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 = 0; // 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.ServoCompInvert = 1; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 6; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 80; |
EE_Parameter.CouplingYawCorrection = 1; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 16; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 100; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.WARN_J16_Bitmask = 0xAA; |
EE_Parameter.WARN_J17_Bitmask = 0xAA; |
EE_Parameter.J16Timing = 15; |
EE_Parameter.J17Timing = 15; |
EE_Parameter.NaviGpsModeControl = 252; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER; |
EE_Parameter.ExtraConfig = CFG2_HEIGHT_LIMIT;// | CFG2_VARIO_BEEP | CFG_SENSITIVE_RC |
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_HoverBand = 5; // Wert : 0-250 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250 |
EE_Parameter.Hoehe_StickNeutralPoint = 0; // Wert : 0-250 (0 = Hoover-Estimation) |
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50 |
EE_Parameter.Stick_P = 10; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 90; // Wert : 0-250 |
EE_Parameter.Gyro_I = 120; // Wert : 0-250 |
EE_Parameter.Gyro_D = 3; // Wert : 0-250 |
EE_Parameter.Gyro_Gier_P = 90; // Wert : 0-250 |
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // 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 = 0; // 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.ServoCompInvert = 1; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 6; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 80; |
EE_Parameter.CouplingYawCorrection = 60; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 75; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.WARN_J16_Bitmask = 0xAA; |
EE_Parameter.WARN_J17_Bitmask = 0xAA; |
EE_Parameter.J16Timing = 20; |
EE_Parameter.J17Timing = 20; |
EE_Parameter.NaviGpsModeControl = 252; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(void) |
{ |
EE_Parameter.GlobalConfig = /*CFG_DREHRATEN_BEGRENZER |*/ CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV | CFG_HOEHEN_SCHALTER; |
EE_Parameter.ExtraConfig = CFG2_HEIGHT_LIMIT;// | CFG2_VARIO_BEEP | CFG_SENSITIVE_RC |
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_HoverBand = 5; // Wert : 0-250 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250 |
EE_Parameter.Hoehe_StickNeutralPoint = 0; // Wert : 0-250 (0 = Hoover-Estimation) |
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50 |
EE_Parameter.Stick_P = 8; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // 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 = 120; // Wert : 0-250 |
EE_Parameter.Gyro_D = 3; // Wert : 0-250 |
EE_Parameter.Gyro_Gier_P = 100; // Wert : 0-250 |
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50) |
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 = 0; // 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.ServoCompInvert = 1; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 6; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 80; |
EE_Parameter.CouplingYawCorrection = 70; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 50; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.WARN_J16_Bitmask = 0xAA; |
EE_Parameter.WARN_J17_Bitmask = 0xAA; |
EE_Parameter.J16Timing = 30; |
EE_Parameter.J17Timing = 30; |
EE_Parameter.NaviGpsModeControl = 252; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/tags/V0.76g/fc.c |
---|
0,0 → 1,1605 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + 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 oder Nutzung 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 the sources to other systems or using the software on other systems (except 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" |
#include "mymath.h" |
#include "isqrt.h" |
unsigned char h,m,s; |
unsigned int BaroExpandActive = 0; |
volatile unsigned int I2CTimeout = 100; |
int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias, RohMesswertNick,RohMesswertRoll; |
int TrimNick, TrimRoll; |
int AdNeutralGierBias; |
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0; |
volatile float NeutralAccZ = 0; |
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
long IntegralNick = 0,IntegralNick2 = 0; |
long IntegralRoll = 0,IntegralRoll2 = 0; |
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
long Integral_Gier = 0; |
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
volatile long Mess_Integral_Hoch = 0; |
int KompassValue = 0; |
int KompassStartwert = 0; |
int KompassRichtung = 0; |
unsigned int KompassSignalSchlecht = 500; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char HoehenReglerAktiv = 0; |
unsigned char TrichterFlug = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
long ErsatzKompass; |
int ErsatzKompassInGrad; // Kompasswert in Grad |
int GierGyroFehler = 0; |
char GyroFaktor,GyroFaktorGier; |
char IntegralFaktor,IntegralFaktorGier; |
int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char SenderOkay = 0; |
volatile unsigned char SenderRSSI = 0; |
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0; |
char MotorenEin = 0; |
long HoehenWert = 0; |
long SollHoehe = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0; |
//float Ki = FAKTOR_I; |
int Ki = 10300 / 33; |
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_Hoehe_GPS_Z = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_D = 8; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gyro_Gier_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_Gier_I = 150; // Wert : 10-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_ServoRollControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 90; |
unsigned char Parameter_AchsKopplung2 = 65; |
unsigned char Parameter_CouplingYawCorrection = 64; |
//unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
unsigned char Parameter_J16Bitmask; // for the J16 Output |
unsigned char Parameter_J16Timing; // for the J16 Output |
unsigned char Parameter_J17Bitmask; // for the J17 Output |
unsigned char Parameter_J17Timing; // for the J17 Output |
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char Parameter_NaviGpsGain; |
unsigned char Parameter_NaviGpsP; |
unsigned char Parameter_NaviGpsI; |
unsigned char Parameter_NaviGpsD; |
unsigned char Parameter_NaviGpsACC; |
unsigned char Parameter_NaviOperatingRadius; |
unsigned char Parameter_NaviWindCorrection; |
unsigned char Parameter_NaviSpeedCompensation; |
unsigned char Parameter_ExternalControl; |
struct mk_param_struct EE_Parameter; |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
int MaxStickNick = 0,MaxStickRoll = 0; |
unsigned int modell_fliegt = 0; |
volatile unsigned char MikroKopterFlags = 0; |
long GIER_GRAD_FAKTOR = 1291; |
signed int KopplungsteilNickRoll,KopplungsteilRollNick; |
unsigned char RequiredMotors = 4; |
unsigned char Motor[MAX_MOTORS]; |
signed int tmp_motorwert[MAX_MOTORS]; |
unsigned char LoadHandler = 0; |
#define LIMIT_MIN(value, min) {if(value < min) value = min;} |
#define LIMIT_MAX(value, max) {if(value > max) value = max;} |
#define LIMIT_MIN_MAX(value, min, max) {if(value < min) value = min; else if(value > max) value = max;} |
int MotorSmoothing(int neu, int alt) |
{ |
int motor; |
if(neu > alt) motor = (1*(int)alt + neu) / 2; |
else motor = neu - (alt - neu)*1; |
//if(Poti2 < 20) return(neu); |
return(motor); |
} |
void Piep(unsigned char Anzahl, unsigned int dauer) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
while(Anzahl--) |
{ |
beeptime = dauer; |
while(beeptime); |
Delay_ms(dauer * 2); |
} |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
unsigned char i; |
unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0; |
HEF4017R_ON; |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
AdNeutralGierBias = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsKopplung2 = 0; |
ExpandBaro = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
#define NEUTRAL_FILTER 32 |
for(i=0; i<NEUTRAL_FILTER; i++) |
{ |
Delay_ms_Mess(10); |
gier_neutral += AdWertGier; |
nick_neutral += AdWertNick; |
roll_neutral += AdWertRoll; |
} |
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER); |
AdNeutralGierBias = AdNeutralGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY); |
NeutralAccX = abs(Mittelwert_AccNick) / (2*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]); |
} |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
Delay_ms_Mess(100); |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
Mess_Integral_Gier = 0; |
StartLuftdruck = Luftdruck; |
VarioMeter = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L; |
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L; |
ExternHoehenValue = 0; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
GierGyroFehler = 0; |
SendVersionToNavi = 1; |
LED_Init(); |
MikroKopterFlags |= FLAG_CALIBRATE; |
FromNaviCtrl_Value.Kalman_K = -1; |
FromNaviCtrl_Value.Kalman_MaxDrift = 0; |
FromNaviCtrl_Value.Kalman_MaxFusion = 32; |
Poti1 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110; |
Poti2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110; |
Poti3 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110; |
Poti4 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110; |
SenderOkay = 100; |
if(ServoActive) |
{ |
HEF4017R_ON; |
DDRD |=0x80; // enable J7 -> Servo signal |
} |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2,tmpl3,tmpl4; |
static signed int oldNick, oldRoll, d2Roll, d2Nick; |
signed long winkel_nick, winkel_roll; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
// MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier; |
MesswertNick = (signed int) AdWertNickFilter / 8; |
MesswertRoll = (signed int) AdWertRollFilter / 8; |
RohMesswertNick = MesswertNick; |
RohMesswertRoll = MesswertRoll; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 3 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 4L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 3 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 4L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 3 + ((long)AdWertAccHoch)) / 4L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
NaviAccNick += AdWertAccNick; |
NaviAccRoll += AdWertAccRoll; |
NaviCntAcc++; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
AdReady = 0; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Mess_IntegralRoll > 93000L) winkel_roll = 93000L; |
else if(Mess_IntegralRoll <-93000L) winkel_roll = -93000L; |
else winkel_roll = Mess_IntegralRoll; |
if(Mess_IntegralNick > 93000L) winkel_nick = 93000L; |
else if(Mess_IntegralNick <-93000L) winkel_nick = -93000L; |
else winkel_nick = Mess_IntegralNick; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
ErsatzKompass += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl3 = (MesswertRoll * winkel_nick) / 2048L; |
tmpl3 *= Parameter_AchsKopplung2; //65 |
tmpl3 /= 4096L; |
tmpl4 = (MesswertNick * winkel_roll) / 2048L; |
tmpl4 *= Parameter_AchsKopplung2; //65 |
tmpl4 /= 4096L; |
KopplungsteilNickRoll = tmpl3; |
KopplungsteilRollNick = tmpl4; |
tmpl4 -= tmpl3; |
ErsatzKompass += tmpl4; |
if(!Parameter_CouplingYawCorrection) Mess_Integral_Gier -= tmpl4/2; // Gier nachhelfen |
tmpl = ((MesswertGier + tmpl4) * winkel_nick) / 2048L; |
tmpl *= Parameter_AchsKopplung1; // 90 |
tmpl /= 4096L; |
tmpl2 = ((MesswertGier + tmpl4) * winkel_roll) / 2048L; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 4096L; |
if(abs(MesswertGier) > 64) if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1; |
//MesswertGier += (Parameter_CouplingYawCorrection * tmpl4) / 256; |
} |
else tmpl = tmpl2 = KopplungsteilNickRoll = KopplungsteilRollNick = 0; |
TrimRoll = tmpl - tmpl2 / 100L; |
TrimNick = -tmpl2 + tmpl / 100L; |
// Kompasswert begrenzen ++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag |
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralRoll2 += MesswertRoll + TrimRoll; |
Mess_IntegralRoll += MesswertRoll + TrimRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralNick2 += MesswertNick + TrimNick; |
Mess_IntegralNick += MesswertNick + TrimNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
#define D_LIMIT 128 |
MesswertNick = HiResNick / 8; |
MesswertRoll = HiResRoll / 8; |
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 > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; } |
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 > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; } |
if(Parameter_Gyro_D) |
{ |
d2Nick = HiResNick - oldNick; |
oldNick = (oldNick + HiResNick)/2; |
if(d2Nick > D_LIMIT) d2Nick = D_LIMIT; |
else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT; |
MesswertNick += (d2Nick * (signed int) Parameter_Gyro_D) / 16; |
d2Roll = HiResRoll - oldRoll; |
oldRoll = (oldRoll + HiResRoll)/2; |
if(d2Roll > D_LIMIT) d2Roll = D_LIMIT; |
else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT; |
MesswertRoll += (d2Roll * (signed int) Parameter_Gyro_D) / 16; |
HiResNick += (d2Nick * (signed int) Parameter_Gyro_D); |
HiResRoll += (d2Roll * (signed int) Parameter_Gyro_D); |
} |
if(RohMesswertRoll > 0) TrimRoll += ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
else TrimRoll -= ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
if(RohMesswertNick > 0) TrimNick += ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
else TrimNick -= ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(RohMesswertNick > 256) MesswertNick += 1 * (RohMesswertNick - 256); |
else if(RohMesswertNick < -256) MesswertNick += 1 * (RohMesswertNick + 256); |
if(RohMesswertRoll > 256) MesswertRoll += 1 * (RohMesswertRoll - 256); |
else if(RohMesswertRoll < -256) MesswertRoll += 1 * (RohMesswertRoll + 256); |
} |
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) |
//############################################################################ |
{ |
if(PlatinenVersion == 13) SucheGyroOffset(); |
// 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) |
//############################################################################ |
{ |
unsigned char i; |
if(!MotorenEin) |
{ |
MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY); |
for(i=0;i<MAX_MOTORS;i++) |
{ |
if(!PC_MotortestActive) MotorTest[i] = 0; |
Motor[i] = MotorTest[i]; |
} |
if(PC_MotortestActive) PC_MotortestActive--; |
} |
else MikroKopterFlags |= FLAG_MOTOR_RUN; |
DebugOut.Analog[12] = Motor[0]; |
DebugOut.Analog[13] = Motor[1]; |
DebugOut.Analog[14] = Motor[3]; |
DebugOut.Analog[15] = Motor[2]; |
//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_MM(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;} |
#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; } |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI_MM(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_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D,0,255); |
CHK_POTI(Parameter_Gyro_Gier_P,EE_Parameter.Gyro_Gier_P,10,255); |
CHK_POTI(Parameter_Gyro_Gier_I,EE_Parameter.Gyro_Gier_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_ServoRollControl,EE_Parameter.ServoRollControl,0,255); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255); |
CHK_POTI(Parameter_AchsKopplung2, EE_Parameter.AchsKopplung2,0,255); |
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection,0,255); |
// CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255); |
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255); |
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255); |
Ki = 10300 / (Parameter_I_Faktor + 1); |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2; |
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 char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
int IntegralNickMalFaktor,IntegralRollMalFaktor; |
unsigned char i; |
if(--LoadHandler == 0) LoadHandler = 5; // verteilt die Prozessorlast |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = StickGas; |
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Empfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
MikroKopterFlags &= ~FLAG_NOTLANDUNG; |
} |
ROT_ON; |
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
MikroKopterFlags |= FLAG_NOTLANDUNG; |
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) |
{ |
MikroKopterFlags &= ~FLAG_NOTLANDUNG; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40 && MotorenEin) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 256)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
if(modell_fliegt == 250) |
{ |
NeueKompassRichtungMerken = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
// Mess_Integral_Gier2 = 0; |
} |
} else MikroKopterFlags |= FLAG_FLY; |
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; |
SetActiveParamSetNumber(setting); // aktiven Datensatz merken |
} |
// else |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) |
{ |
WinkelOut.CalcState = 1; |
beeptime = 1000; |
} |
else |
{ |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
ServoActive = 0; |
SetNeutral(); |
ServoActive = 1; |
DDRD |=0x80; // enable J7 -> Servo signal |
Piep(GetActiveParamSetNumber(),120); |
} |
} |
} |
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(),120); |
} |
} |
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 = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
MikroKopterFlags |= FLAG_START; |
} |
} |
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-- || (MikroKopterFlags & FLAG_NOTLANDUNG)) |
{ |
static int stick_nick,stick_roll; |
ParameterZuordnung(); |
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
StickNick = stick_nick - (GPS_Nick + GPS_Nick2); |
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
StickRoll = stick_roll - (GPS_Roll + GPS_Roll2); |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
if(StickGier > 2) StickGier -= 2; else |
if(StickGier < -2) StickGier += 2; else StickGier = 0; |
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
GyroFaktor = (Parameter_Gyro_P + 10.0); |
IntegralFaktor = Parameter_Gyro_I; |
GyroFaktorGier = (Parameter_Gyro_Gier_P + 10.0); |
IntegralFaktorGier = Parameter_Gyro_Gier_I; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Analoge Steuerung per Seriell |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 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(StickGas < 0) StickGas = 0; |
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
//if(GyroFaktor < 0) GyroFaktor = 0; |
//if(IntegralFaktor < 0) IntegralFaktor = 0; |
if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
{ |
MaxStickNick = abs(StickNick)/STICK_GAIN; |
if(MaxStickNick > 100) MaxStickNick = 100; |
} |
else MaxStickNick--; |
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll) |
{ |
MaxStickRoll = abs(StickRoll)/STICK_GAIN; |
if(MaxStickRoll > 100) MaxStickRoll = 100; |
} |
else MaxStickRoll--; |
if(MikroKopterFlags & FLAG_NOTLANDUNG) {MaxStickNick = 0; MaxStickRoll = 0;} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & 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.BitConfig & 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.BitConfig & 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.BitConfig & 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 || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
TrichterFlug = 1; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(MikroKopterFlags & FLAG_NOTLANDUNG) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 90; |
IntegralFaktor = 120; |
GyroFaktorGier = 90; |
IntegralFaktorGier = 120; |
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; |
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 && (Aktuell_az > 512 || MotorenEin)) |
{ |
long tmp_long, tmp_long2; |
if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/) |
{ |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long = (tmp_long * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
tmp_long2 = (tmp_long2 * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
if((MaxStickNick > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 2; |
tmp_long2 /= 2; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(tmp_long > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
} |
else |
{ |
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 > 64) || (MaxStickRoll > 64)) |
{ |
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; |
} |
//if(Poti2 > 20) { tmp_long = 0; tmp_long2 = 0;} |
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 && !TrichterFlug && EE_Parameter.Driftkomp) |
{ |
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 > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) && (FromNaviCtrl_Value.Kalman_K == -1)) |
{ |
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; |
if(EE_Parameter.Driftkomp) |
{ |
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; AdNeutralGierBias++; } |
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; AdNeutralGierBias--; } |
} |
GierGyroFehler = 0; |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL / 2) |
#define FEHLER_LIMIT1 (ABGLEICH_ANZAHL * 2) //4 |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) //16 |
#define BEWEGUNGS_LIMIT 20000 |
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(IntegralFehlerNick) > FEHLER_LIMIT1) cnt = 4; |
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8); |
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 / 8); |
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; |
KompassSignalSchlecht = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(IntegralFehlerRoll) > FEHLER_LIMIT1) cnt = 4; |
ausgleichRoll = 0; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8); |
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 / 8); |
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; |
KompassSignalSchlecht = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
TrichterFlug = 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; |
} // ZaehlMessungen >= ABGLEICH_ANZAHL |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;}; |
if(abs(StickGier) > 15) // war 35 |
{ |
KompassSignalSchlecht = 1000; |
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 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//DebugOut.Analog[16] = KompassSignalSchlecht; |
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
{ |
int w,v,r,fehler,korrektur; |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
korrektur = w / 8 + 1; |
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180; |
if(abs(MesswertGier) > 128) |
{ |
fehler = 0; |
} |
if(!KompassSignalSchlecht && w < 25) |
{ |
GierGyroFehler += fehler; |
if(NeueKompassRichtungMerken) |
{ |
// beeptime = 200; |
// KompassStartwert = KompassValue; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR); |
NeueKompassRichtungMerken = 0; |
} |
} |
ErsatzKompass += (fehler * 8) / korrektur; |
w = (w * Parameter_KompassWirkung) / 32; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w >= 0) |
{ |
if(!KompassSignalSchlecht) |
{ |
v = 64 + ((MaxStickNick + MaxStickRoll)) / 8; |
r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180; |
// r = KompassRichtung; |
v = (r * w) / v; // nach Kompass ausrichten |
w = 3 * Parameter_KompassWirkung; |
if(v > w) v = w; // Begrenzen |
else |
if(v < -w) v = -w; |
Mess_Integral_Gier += v; |
} |
if(KompassSignalSchlecht) KompassSignalSchlecht--; |
} |
else KompassSignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[1] = IntegralRoll / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[2] = Mittelwert_AccNick / 4; |
DebugOut.Analog[3] = Mittelwert_AccRoll / 4; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert/5; |
DebugOut.Analog[6] = Aktuell_az;//(Mess_Integral_Hoch / 512);//Aktuell_az; |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR; |
//DebugOut.Analog[16] = Mittelwert_AccHoch; |
//DebugOut.Analog[17] = FromNaviCtrl_Value.Distance; |
DebugOut.Analog[18] = VarioMeter; |
DebugOut.Analog[19] = WinkelOut.CalcState; |
DebugOut.Analog[20] = ServoNickValue; |
// DebugOut.Analog[22] = FromNaviCtrl_Value.GpsZ; |
// DebugOut.Analog[24] = MesswertNick/2; |
// DebugOut.Analog[25] = MesswertRoll/2; |
// DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift; |
// DebugOut.Analog[28] = (int)FromNaviCtrl_Value.Kalman_MaxFusion; |
// DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K; |
//DebugOut.Analog[28] = I2CError; |
// DebugOut.Analog[29] = FromNaviCtrl_Value.SerialDataOkay; |
DebugOut.Analog[30] = GPS_Nick; |
DebugOut.Analog[31] = GPS_Roll; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(TrichterFlug) { SummeRoll = 0; SummeNick = 0;}; |
if(!Looping_Nick) IntegralNickMalFaktor = (IntegralNick * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralNickMalFaktor = 0; |
if(!Looping_Roll) IntegralRollMalFaktor = (IntegralRoll * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralRollMalFaktor = 0; |
#define TRIM_MAX 200 |
if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX; |
if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX; |
MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN); |
MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN); |
MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN)); |
// Maximalwerte abfangen |
// #define MAX_SENSOR (4096*STICK_GAIN) |
#define MAX_SENSOR (4096*4) |
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 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(UBat > BattLowVoltageWarning) GasMischanteil = ((unsigned int)GasMischanteil * BattLowVoltageWarning) / UBat; // Gas auf das aktuelle Spannungvieveau beziehen |
GasMischanteil *= STICK_GAIN; |
// if height control is activated |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) && !(Looping_Roll || Looping_Nick)) // Höhenregelung |
{ |
#define HOOVER_GAS_AVERAGE 4096L // 4096 * 2ms = 8.2s averaging |
#define HC_GAS_AVERAGE 4 // 4 * 2ms= 8ms averaging |
#define OPA_OFFSET_STEP 10 |
int HCGas, HeightDeviation; |
static int HeightTrimming = 0; // rate for change of height setpoint |
static int FilterHCGas = 0; |
static int StickGasHoover = 120, HooverGas = 0, HooverGasMin = 0, HooverGasMax = 1023; |
static unsigned long HooverGasFilter = 0; |
static unsigned char delay = 100, BaroAtUpperLimit = 0, BaroAtLowerLimit = 0; |
int CosAttitude; // for projection of hoover gas |
// get the current hooverpoint |
// if(LoadHandler == 1) |
{ |
DebugOut.Analog[21] = HooverGas; |
DebugOut.Analog[18] = VarioMeter; |
// Expand the measurement |
// measurement of air pressure close to upper limit and no overflow in correction of the new OCR0A value occurs |
if(!BaroExpandActive) |
{ |
if(MessLuftdruck > 920) |
{ // increase offset |
if(OCR0A < (255 - OPA_OFFSET_STEP)) |
{ |
ExpandBaro -= 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // increase offset to shift ADC down |
beeptime = 300; |
BaroExpandActive = 350; |
} |
else |
{ |
BaroAtLowerLimit = 1; |
} |
} |
// measurement of air pressure close to lower limit and |
else |
if(MessLuftdruck < 100) |
{ // decrease offset |
if(OCR0A > OPA_OFFSET_STEP) |
{ |
ExpandBaro += 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; // decrease offset to shift ADC up |
beeptime = 300; |
BaroExpandActive = 350; |
} |
else |
{ |
BaroAtUpperLimit = 1; |
} |
} |
else |
{ |
BaroAtUpperLimit = 0; |
BaroAtLowerLimit = 0; |
} |
} |
else // delay, because of expanding the Baro-Range |
{ |
// now clear the D-values |
SummenHoehe = HoehenWert * SM_FILTER; |
VarioMeter = 0; |
BaroExpandActive--; |
} |
// if height control is activated by an rc channel |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ // check if parameter is less than activation threshold |
if(Parameter_MaxHoehe < 50) // for 3 or 2-state switch height control is disabled in lowest position |
{ //height control not active |
if(!delay--) |
{ |
HoehenReglerAktiv = 0; // disable height control |
SollHoehe = HoehenWert; // update SetPoint with current reading |
delay = 1; |
} |
} |
else |
{ //height control is activated |
HoehenReglerAktiv = 1; // enable height control |
delay = 200; |
} |
} |
else // no switchable height control |
{ |
SollHoehe = ((int16_t) ExternHoehenValue + (int16_t) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung; |
HoehenReglerAktiv = 1; |
} |
// calculate cos of nick and roll angle used for projection of the vertical hoover gas |
tmp_int = (int)(IntegralNick/GIER_GRAD_FAKTOR); // nick angle in deg |
tmp_int2 = (int)(IntegralRoll/GIER_GRAD_FAKTOR); // roll angle in deg |
CosAttitude = (int16_t)ihypot(tmp_int, tmp_int2); // phytagoras gives effective attitude angle in deg |
LIMIT_MAX(CosAttitude, 60); // limit effective attitude angle |
CosAttitude = c_cos_8192(CosAttitude); // cos of actual attitude |
if(HoehenReglerAktiv && !(MikroKopterFlags & FLAG_NOTLANDUNG)) |
{ |
#define HEIGHT_TRIM_UP 0x01 |
#define HEIGHT_TRIM_DOWN 0x02 |
static unsigned char HeightTrimmingFlag = 0x00; |
#define HEIGHT_CONTROL_STICKTHRESHOLD 15 |
// Holger original version |
// start of height control algorithm |
// the height control is only an attenuation of the actual gas stick. |
// I.e. it will work only if the gas stick is higher than the hover gas |
// and the hover height will be allways larger than height setpoint. |
if((EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) || !(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER)) // Regler wird über Schalter gesteuert) |
{ // old version |
HCGas = GasMischanteil; // take current stick gas as neutral point for the height control |
HeightTrimming = 0; |
} |
else |
{ |
// alternative height control |
// PD-Control with respect to hoover point |
// the thrust loss out of horizontal attitude is compensated |
// the setpoint will be fine adjusted with the gas stick position |
if(MikroKopterFlags & FLAG_FLY) // trim setpoint only when flying |
{ // gas stick is above hoover point |
if(StickGas > (StickGasHoover + HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtUpperLimit) |
{ |
if(HeightTrimmingFlag & HEIGHT_TRIM_DOWN) |
{ |
HeightTrimmingFlag &= ~HEIGHT_TRIM_DOWN; |
SollHoehe = HoehenWert; // update setpoint to current heigth |
} |
HeightTrimmingFlag |= HEIGHT_TRIM_UP; |
HeightTrimming += abs(StickGas - (StickGasHoover + HEIGHT_CONTROL_STICKTHRESHOLD)); |
} // gas stick is below hoover point |
else if(StickGas < (StickGasHoover - HEIGHT_CONTROL_STICKTHRESHOLD) && !BaroAtLowerLimit ) |
{ |
if(HeightTrimmingFlag & HEIGHT_TRIM_UP) |
{ |
HeightTrimmingFlag &= ~HEIGHT_TRIM_UP; |
SollHoehe = HoehenWert; // update setpoint to current heigth |
} |
HeightTrimmingFlag |= HEIGHT_TRIM_DOWN; |
HeightTrimming -= abs(StickGas - (StickGasHoover - HEIGHT_CONTROL_STICKTHRESHOLD)); |
} |
else // Gas Stick in Hoover Range |
{ |
if(HeightTrimmingFlag & (HEIGHT_TRIM_UP | HEIGHT_TRIM_DOWN)) |
{ |
HeightTrimmingFlag &= ~(HEIGHT_TRIM_UP | HEIGHT_TRIM_DOWN); |
HeightTrimming = 0; |
SollHoehe = HoehenWert; // update setpoint to current height |
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 500; |
} |
} |
// Trim height set point |
if(abs(HeightTrimming) > 512) |
{ |
SollHoehe += (HeightTrimming * EE_Parameter.Hoehe_Verstaerkung)/(5 * 512 / 2); // move setpoint |
HeightTrimming = 0; |
if(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP) beeptime = 75; |
//update hoover gas stick value when setpoint is shifted |
if(!EE_Parameter.Hoehe_StickNeutralPoint) |
{ |
StickGasHoover = HooverGas/STICK_GAIN; //rescale back to stick value |
StickGasHoover = (StickGasHoover * UBat) / BattLowVoltageWarning; |
if(StickGasHoover < 70) StickGasHoover = 70; |
else if(StickGasHoover > 150) StickGasHoover = 150; |
} |
} |
if(BaroExpandActive) SollHoehe = HoehenWert; // update setpoint to current altitude if Expanding is active |
} //if MikroKopterFlags & MKFLAG_FLY |
else |
{ |
SollHoehe = HoehenWert - 400; |
if(EE_Parameter.Hoehe_StickNeutralPoint) StickGasHoover = EE_Parameter.Hoehe_StickNeutralPoint; |
else StickGasHoover = 120; |
} |
HCGas = HooverGas; // take hoover gas (neutral point) |
} |
if(HoehenWert > SollHoehe || !(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT)) |
{ |
// ------------------------- P-Part ---------------------------- |
HeightDeviation = (int)(HoehenWert - SollHoehe); // positive when too high |
tmp_int = (HeightDeviation * (int)Parameter_Hoehe_P) / 16; // p-part |
HCGas -= tmp_int; |
// ------------------------- D-Part 1: Vario Meter ---------------------------- |
tmp_int = VarioMeter / 8; |
if(tmp_int > 8) tmp_int = 8; // limit quadratic part on upward movement to avoid to much gas reduction |
if(tmp_int > 0) tmp_int = VarioMeter + (tmp_int * tmp_int) / 4; |
else tmp_int = VarioMeter - (tmp_int * tmp_int) / 4; |
tmp_int = (Parameter_Luftdruck_D * (long)(tmp_int)) / 128L; // scale to d-gain parameter |
LIMIT_MIN_MAX(tmp_int, -127, 255); |
HCGas -= tmp_int; |
// ------------------------ D-Part 2: ACC-Z Integral ------------------------ |
tmp_int = ((Mess_Integral_Hoch / 128) * (long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN); |
LIMIT_MIN_MAX(tmp_int, -127, 255); |
HCGas -= tmp_int; |
// limit deviation from hoover point within the target region |
if( (abs(HeightDeviation) < 150) && (!HeightTrimming) && (HooverGas > 0)) // height setpoint is not changed and hoover gas not zero |
{ |
LIMIT_MIN_MAX(HCGas, HooverGasMin, HooverGasMax); // limit gas around the hoover point |
} |
if(BaroExpandActive) HCGas = HooverGas; |
// ------------------------ D-Part 3: GpsZ ---------------------------------- |
tmp_int = (Parameter_Hoehe_GPS_Z * (long)FromNaviCtrl_Value.GpsZ)/128L; |
LIMIT_MIN_MAX(tmp_int, -127, 255); |
HCGas -= tmp_int; |
// strech control output by inverse attitude projection 1/cos |
// + 1/cos(angle) ++++++++++++++++++++++++++ |
tmp_long2 = (int32_t)HCGas; |
tmp_long2 *= 8192L; |
tmp_long2 /= CosAttitude; |
HCGas = (int16_t)tmp_long2; |
// update height control gas averaging |
FilterHCGas = (FilterHCGas * (HC_GAS_AVERAGE - 1) + HCGas) / HC_GAS_AVERAGE; |
// limit height control gas pd-control output |
LIMIT_MIN_MAX(FilterHCGas, EE_Parameter.Hoehe_MinGas * STICK_GAIN, (MAX_GAS - 20) * STICK_GAIN); |
// set GasMischanteil to HeightControlGasFilter |
if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) |
{ // old version |
if(FilterHCGas > GasMischanteil) FilterHCGas = GasMischanteil; // nicht mehr als Gas |
} |
GasMischanteil = FilterHCGas; |
} |
}// EOF height control active |
else // HC not active |
{ |
//update hoover gas stick value when HC is not active |
if(!EE_Parameter.Hoehe_StickNeutralPoint) |
{ |
StickGasHoover = HooverGas/STICK_GAIN; // rescale back to stick value |
StickGasHoover = (StickGasHoover * UBat) / BattLowVoltageWarning; |
} |
else StickGasHoover = EE_Parameter.Hoehe_StickNeutralPoint; |
if(StickGasHoover < 70) StickGasHoover = 70; |
else if(StickGasHoover > 150) StickGasHoover = 150; |
FilterHCGas = GasMischanteil; |
} |
// Hoover gas estimation by averaging gas control output on small z-velocities |
// this is done only if height contol option is selected in global config and aircraft is flying |
if((MikroKopterFlags & FLAG_FLY) && !(MikroKopterFlags & FLAG_NOTLANDUNG)) |
{ |
if(HooverGasFilter == 0) HooverGasFilter = HOOVER_GAS_AVERAGE * (unsigned long)(GasMischanteil); // init estimation |
if(abs(VarioMeter) < 100) // only on small vertical speed |
{ |
tmp_long2 = (int32_t)GasMischanteil; // take current thrust |
tmp_long2 *= CosAttitude; // apply attitude projection |
tmp_long2 /= 8192; |
// average vertical projected thrust |
if(modell_fliegt < 2000) // the first 4 seconds |
{ // reduce the time constant of averaging by factor of 8 to get much faster a stable value |
HooverGasFilter -= HooverGasFilter/(HOOVER_GAS_AVERAGE/8L); |
HooverGasFilter += 8L * tmp_long2; |
} |
else if(modell_fliegt < 4000) // the first 8 seconds |
{ // reduce the time constant of averaging by factor of 4 to get much faster a stable value |
HooverGasFilter -= HooverGasFilter/(HOOVER_GAS_AVERAGE/4L); |
HooverGasFilter += 4L * tmp_long2; |
} |
else if(modell_fliegt < 8000) // the first 16 seconds |
{ // reduce the time constant of averaging by factor of 2 to get much faster a stable value |
HooverGasFilter -= HooverGasFilter/(HOOVER_GAS_AVERAGE/2L); |
HooverGasFilter += 2L * tmp_long2; |
} |
else //later |
{ |
HooverGasFilter -= HooverGasFilter/HOOVER_GAS_AVERAGE; |
HooverGasFilter += tmp_long2; |
} |
HooverGas = (int16_t)(HooverGasFilter/HOOVER_GAS_AVERAGE); |
if(EE_Parameter.Hoehe_HoverBand) |
{ |
int16_t band; |
band = HooverGas / EE_Parameter.Hoehe_HoverBand; // the higher the parameter the smaller the range |
HooverGasMin = HooverGas - band; |
HooverGasMax = HooverGas + band; |
} |
else |
{ // no limit |
HooverGasMin = 0; |
HooverGasMax = 1023; |
} |
} |
} |
} |
//DebugOut.Analog[26] = HooverGasMax; |
}// EOF ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL |
// limit gas to parameter setting |
LIMIT_MIN(GasMischanteil, (MIN_GAS + 10) * STICK_GAIN); |
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// all BL-Ctrl connected? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(MissingMotor) |
if(modell_fliegt > 1 && modell_fliegt < 50 && GasMischanteil > 0) |
{ |
modell_fliegt = 1; |
GasMischanteil = MIN_GAS; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier |
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren |
if(GasMischanteil > MIN_GIERGAS) |
{ |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
} |
else |
{ |
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2; |
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2); |
} |
tmp_int = MAX_GAS*STICK_GAIN; |
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil)); |
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil)); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - StickNick; // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L); |
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN); |
pd_ergebnis_nick = DiffNick + SummeNick / Ki; // PI-Regler für Nick |
// Motor Vorn |
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; // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L); |
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN); |
pd_ergebnis_roll = DiffRoll + SummeRoll / Ki; // 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; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Universal Mixer |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
for(i=0; i<MAX_MOTORS; i++) |
{ |
signed int tmp_int; |
if(Mixer.Motor[i][0] > 0) |
{ |
tmp_int = ((long)GasMischanteil * Mixer.Motor[i][0]) / 64L; |
tmp_int += ((long)pd_ergebnis_nick * Mixer.Motor[i][1]) / 64L; |
tmp_int += ((long)pd_ergebnis_roll * Mixer.Motor[i][2]) / 64L; |
tmp_int += ((long)GierMischanteil * Mixer.Motor[i][3]) / 64L; |
tmp_motorwert[i] = MotorSmoothing(tmp_int,tmp_motorwert[i]); // Filter |
tmp_int = tmp_motorwert[i] / STICK_GAIN; |
CHECK_MIN_MAX(tmp_int,MIN_GAS,MAX_GAS); |
Motor[i] = tmp_int; |
} |
else Motor[i] = 0; |
} |
/* |
if(Poti1 > 20) Motor1 = 0; |
if(Poti1 > 90) Motor6 = 0; |
if(Poti1 > 140) Motor2 = 0; |
//if(Poti1 > 200) Motor7 = 0; |
*/ |
} |
/tags/V0.76g/fc.h |
---|
0,0 → 1,201 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
//#define GIER_GRAD_FAKTOR 1291L // Abhängigkeit zwischen GyroIntegral und Winkel |
//#define GIER_GRAD_FAKTOR 1160L |
extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel |
#define STICK_GAIN 4 |
#define FLAG_MOTOR_RUN 1 |
#define FLAG_FLY 2 |
#define FLAG_CALIBRATE 4 |
#define FLAG_START 8 |
#define FLAG_NOTLANDUNG 16 |
#define FLAG_LOWBAT 32 |
#define MAX_MOTORS 12 |
#define CHECK_MIN_MAX(wert,min,max) {if(wert < min) wert = min; else if(wert > max) wert = max;} |
extern volatile unsigned char MikroKopterFlags; |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern unsigned int BaroExpandActive; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
//extern int IntegralNick,IntegralNick2; |
//extern int IntegralRoll,IntegralRoll2; |
extern long Mess_IntegralNick,Mess_IntegralNick2; |
extern long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern long IntegralAccNick,IntegralAccRoll; |
extern volatile long Mess_Integral_Hoch; |
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern int KompassValue; |
extern int KompassStartwert; |
extern int KompassRichtung; |
extern int TrimNick, TrimRoll; |
extern long ErsatzKompass; |
extern int ErsatzKompassInGrad; // Kompasswert in Grad |
extern long HoehenWert; |
extern long SollHoehe; |
extern int MesswertNick,MesswertRoll,MesswertGier; |
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern unsigned char HoehenReglerAktiv; |
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; |
extern int NaviAccNick,NaviAccRoll,NaviCntAcc; |
extern unsigned int modell_fliegt; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl, unsigned int dauer); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char SenderOkay; |
extern volatile unsigned char SenderRSSI; |
extern unsigned char RequiredMotors; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
extern void DefaultKonstanten3(void); |
extern void DefaultStickMapping(void); |
#define STRUCT_PARAM_LAENGE sizeof(EE_Parameter) |
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 Hoehe_HoverBand; // Wert : 0-250 |
unsigned char Hoehe_GPS_Z; // Wert : 0-250 |
unsigned char Hoehe_StickNeutralPoint;// 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 Gyro_D; // Wert : 0-250 |
unsigned char Gyro_Gier_P; // Wert : 10-250 |
unsigned char Gyro_Gier_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 |
//--- Seit V0.75 |
unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoRollComp; // Wert : 0-250 |
unsigned char ServoRollMin; // Wert : 0-250 |
unsigned char ServoRollMax; // 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 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 AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
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 |
//---Output --------------------------------------------- |
unsigned char J16Bitmask; // for the J16 Output |
unsigned char J16Timing; // for the J16 Output |
unsigned char J17Bitmask; // for the J17 Output |
unsigned char J17Timing; // for the J17 Output |
// seit version V0.75c |
unsigned char WARN_J16_Bitmask; // for the J16 Output |
unsigned char WARN_J17_Bitmask; // for the J17 Output |
//---NaviCtrl--------------------------------------------- |
unsigned char NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char NaviGpsGain; |
unsigned char NaviGpsP; |
unsigned char NaviGpsI; |
unsigned char NaviGpsD; |
unsigned char NaviGpsPLimit; |
unsigned char NaviGpsILimit; |
unsigned char NaviGpsDLimit; |
unsigned char NaviGpsACC; |
unsigned char NaviGpsMinSat; |
unsigned char NaviStickThreshold; |
unsigned char NaviWindCorrection; |
unsigned char NaviSpeedCompensation; |
unsigned char NaviOperatingRadius; |
unsigned char NaviAngleLimitation; |
unsigned char NaviPH_LoginTime; |
//---Ext.Ctrl--------------------------------------------- |
unsigned char ExternalControl; // for serial Control |
//------------------------------------------------ |
unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char ExtraConfig; // bitcodiert |
char Name[12]; |
}; |
struct |
{ |
char Revision; |
char Name[12]; |
signed char Motor[16][4]; |
} Mixer; |
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_ServoRollControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsKopplung2; |
//extern unsigned char Parameter_AchsGegenKopplung1; |
extern unsigned char Parameter_J16Bitmask; // for the J16 Output |
extern unsigned char Parameter_J16Timing; // for the J16 Output |
extern unsigned char Parameter_J17Bitmask; // for the J17 Output |
extern unsigned char Parameter_J17Timing; // for the J17 Output |
extern signed char MixerTable[MAX_MOTORS][4]; |
extern unsigned char Motor[MAX_MOTORS]; |
#endif //_FC_H |
/tags/V0.76g/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="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><File path="led.h"></File><File path="led.c"></File><File path="fc.c"></File><File path="Spectrum.c"></File><File path="Spectrum.h"></File><File path="mymath.c"></File><File path="mymath.h"></File><File path="isqrt.S"></File></Project> |
/tags/V0.76g/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/tags/V0.76g/gps.h |
---|
0,0 → 1,7 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern signed int GPS_Nick2; |
extern signed int GPS_Roll2; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/tags/V0.76g/isqrt.S |
---|
0,0 → 1,203 |
;-----------------------------------------------------------------------------; |
; Fast integer squareroot routines for avr-gcc project (C)ChaN, 2008 |
; http://elm-chan.org/docs/avrlib/sqrt32.S |
;-----------------------------------------------------------------------------; |
; uint16_t isqrt32 (uint32_t n); |
; uint8_t isqrt16 (uint16_t n); |
; uint16_t ihypot (int16_t x, int16_t y); |
;-----------------------------------------------------------------------------: |
; 32bit integer squareroot |
;-----------------------------------------------------------------------------; |
; uint16_t isqrt32 ( |
; uint32_t n |
; ); |
; |
; Return Value: |
; Squareroot of n. |
; |
; Size = 53 words |
; Clock = 532..548 cycles |
; Stack = 0 byte |
.global isqrt32 |
.func isqrt32 |
isqrt32: |
clr r0 |
clr r18 |
clr r19 |
clr r20 |
ldi r21, 1 |
clr r27 |
clr r30 |
clr r31 |
ldi r26, 16 |
1: lsl r22 |
rol r23 |
rol r24 |
rol r25 |
rol r0 |
rol r18 |
rol r19 |
rol r20 |
lsl r22 |
rol r23 |
rol r24 |
rol r25 |
rol r0 |
rol r18 |
rol r19 |
rol r20 |
brpl 2f |
add r0, r21 |
adc r18, r27 |
adc r19, r30 |
adc r20, r31 |
rjmp 3f |
2: sub r0, r21 |
sbc r18, r27 |
sbc r19, r30 |
sbc r20, r31 |
3: lsl r21 |
rol r27 |
rol r30 |
andi r21, 0b11111000 |
ori r21, 0b00000101 |
sbrc r20, 7 |
subi r21, 2 |
dec r26 |
brne 1b |
lsr r30 |
ror r27 |
ror r21 |
lsr r30 |
ror r27 |
ror r21 |
mov r24, r21 |
mov r25, r27 |
ret |
.endfunc |
;-----------------------------------------------------------------------------: |
; 16bit integer squareroot |
;-----------------------------------------------------------------------------; |
; uint8_t isqrt16 ( |
; uint16_t n |
; ); |
; |
; Return Value: |
; Squareroot of n. |
; |
; Size = 33 words |
; Clock = 181..189 cycles |
; Stack = 0 byte |
.global isqrt16 |
.func isqrt16 |
isqrt16: |
clr r18 |
clr r19 |
ldi r20, 1 |
clr r21 |
ldi r22, 8 |
1: lsl r24 |
rol r25 |
rol r18 |
rol r19 |
lsl r24 |
rol r25 |
rol r18 |
rol r19 |
brpl 2f |
add r18, r20 |
adc r19, r21 |
rjmp 3f |
2: sub r18, r20 |
sbc r19, r21 |
3: lsl r20 |
rol r21 |
andi r20, 0b11111000 |
ori r20, 0b00000101 |
sbrc r19, 7 |
subi r20, 2 |
dec r22 |
brne 1b |
lsr r21 |
ror r20 |
lsr r21 |
ror r20 |
mov r24, r20 |
ret |
.endfunc |
;-----------------------------------------------------------------------------: |
; 16bit integer hypot (megaAVR is required) |
;-----------------------------------------------------------------------------; |
; uint16_t ihypot ( |
; int16_t x, |
; int16_t y |
; ); |
; |
; Return Value: |
; Squareroot of (x*x + y*y) |
; |
; Size = 42 words |
; Clock = 581..597 cycles |
; Stack = 0 byte |
.global ihypot |
.func ihypot |
ihypot: |
clr r26 |
sbrs r25, 7 |
rjmp 1f |
com r24 |
com r25 |
adc r24, r26 |
adc r25, r26 |
1: sbrs r23, 7 |
rjmp 2f |
com r22 |
com r23 |
adc r22, r26 |
adc r23, r26 |
2: mul r22, r22 |
movw r18, r0 |
mul r23, r23 |
movw r20, r0 |
mul r22, r23 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
mul r24, r24 |
movw r30, r0 |
mul r25, r25 |
add r18, r30 |
adc r19, r31 |
adc r20, r0 |
adc r21, r1 |
mul r24, r25 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
add r19, r0 |
adc r20, r1 |
adc r21, r26 |
movw r24, r20 |
movw r22, r18 |
clr r1 |
rjmp isqrt32 |
.endfunc |
/tags/V0.76g/isqrt.h |
---|
0,0 → 1,11 |
#ifndef _ISQRT_H |
#define _ISQRT_H |
#include <inttypes.h> |
// coded in assembler file |
extern uint16_t isqrt32(uint32_t n); |
extern uint8_t isqrt16(uint16_t n); |
extern uint16_t ihypot(int16_t x, int16_t y); |
#endif // _ISQRT_H |
/tags/V0.76g/led.c |
---|
0,0 → 1,67 |
#include <inttypes.h> |
#include "main.h" |
uint16_t LED1_Timing = 0; |
uint16_t LED2_Timing = 0; |
unsigned char J16Blinkcount = 0, J16Mask = 1; |
unsigned char J17Blinkcount = 0, J17Mask = 1; |
// initializes the LED control outputs J16, J17 |
void LED_Init(void) |
{ |
// set PC2 & PC3 as output (control of J16 & J17) |
DDRC |= (1<<DDC2)|(1<<DDC3); |
J16_OFF; |
J17_OFF; |
J16Blinkcount = 0; J16Mask = 128; |
J17Blinkcount = 0; J17Mask = 128; |
} |
// called in UpdateMotors() every 2ms |
void LED_Update(void) |
{ |
static char delay = 0; |
static unsigned char J16Bitmask = 0; |
static unsigned char J17Bitmask = 0; |
if(!delay--) // 10ms Intervall |
{ |
delay = 4; |
if(MikroKopterFlags & FLAG_LOWBAT || SenderOkay < 128) |
{ |
J16Bitmask = EE_Parameter.WARN_J16_Bitmask; |
J17Bitmask = EE_Parameter.WARN_J17_Bitmask; |
} |
else |
{ |
J16Bitmask = EE_Parameter.J16Bitmask; |
J17Bitmask = EE_Parameter.J17Bitmask; |
} |
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED1) J16_ON; else J16_OFF;} |
else |
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing > 220)) {if(J16Bitmask & 128) J16_ON; else J16_OFF;} |
else |
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing < 10)) {if(J16Bitmask & 128) J16_OFF; else J16_ON;} |
else |
if(!J16Blinkcount--) |
{ |
J16Blinkcount = Parameter_J16Timing-1; |
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2; |
if(J16Mask & J16Bitmask) J16_ON; else J16_OFF; |
} |
if((EE_Parameter.BitConfig & CFG_MOTOR_BLINK) && !MotorenEin) {if(EE_Parameter.BitConfig & CFG_MOTOR_OFF_LED2) J17_ON; else J17_OFF;} |
else |
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing > 230)) {if(J17Bitmask & 128) J17_ON; else J17_OFF;} |
else |
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing < 10)) {if(J17Bitmask & 128) J17_OFF; else J17_ON;} |
else |
if(!J17Blinkcount--) |
{ |
J17Blinkcount = Parameter_J17Timing-1; |
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2; |
if(J17Mask & J17Bitmask) J17_ON; else J17_OFF; |
} |
} |
} |
/tags/V0.76g/led.h |
---|
0,0 → 1,11 |
#include <avr/io.h> |
#define J16_ON PORTC |= (1<<PORTC2) |
#define J16_OFF PORTC &= ~(1<<PORTC2) |
#define J16_TOGGLE PORTC ^= (1<<PORTC2) |
#define J17_ON PORTC |= (1<<PORTC3) |
#define J17_OFF PORTC &= ~(1<<PORTC3) |
#define J17_TOGGLE PORTC ^= (1<<PORTC3) |
extern void LED_Init(void); |
extern void LED_Update(void); |
/tags/V0.76g/main.c |
---|
0,0 → 1,445 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + Nur für den privaten Gebrauch / NON-COMMERCIAL USE ONLY |
// + 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 oder Nutzung 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 the sources to other systems or using the software on other systems (except 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; |
unsigned char SendVersionToNavi = 1; |
unsigned char BattLowVoltageWarning = 94; |
unsigned int FlugMinuten = 0,FlugMinutenGesamt = 0; |
// -- Parametersatz aus EEPROM lesen --- |
// number [1..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if((number > 5)||(number < 1)) number = 3; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
LED_Init(); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [1..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if(number > 5) number = 5; |
if(number < 1) return; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_LENGTH], length); // Länge der Datensätze merken |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_CHANNELS], 8); // 8 Kanäle merken |
SetActiveParamSetNumber(number); |
LED_Init(); |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if((set > 5) || (set < 1)) |
{ |
set = 3; |
SetActiveParamSetNumber(set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
void SetActiveParamSetNumber(unsigned char number) |
{ |
if(number > 5) number = 5; |
if(number < 1) return; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
void CalMk3Mag(void) |
{ |
static unsigned char stick = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -20) stick = 0; |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) && !stick) |
{ |
stick = 1; |
WinkelOut.CalcState++; |
if(WinkelOut.CalcState > 4) |
{ |
// WinkelOut.CalcState = 0; // in Uart.c |
beeptime = 1000; |
} |
else Piep(WinkelOut.CalcState,150); |
} |
DebugOut.Analog[19] = WinkelOut.CalcState; |
} |
void LipoDetection(unsigned char print) |
{ |
unsigned int timer; |
if(print) printf("\n\rBatt:"); |
if(EE_Parameter.UnterspannungsWarnung < 50) // automatische Zellenerkennung |
{ |
timer = SetDelay(500); |
if(print) while (!CheckDelay(timer)); |
if(UBat < 130) |
{ |
BattLowVoltageWarning = 3 * EE_Parameter.UnterspannungsWarnung; |
if(print) |
{ |
Piep(3,200); |
printf(" 3 Cells "); |
} |
} |
else |
{ |
BattLowVoltageWarning = 4 * EE_Parameter.UnterspannungsWarnung; |
if(print) |
{ |
Piep(4,200); |
printf(" 4 Cells "); |
} |
} |
} |
else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung; |
// if(BattLowVoltageWarning < 93) BattLowVoltageWarning = 93; |
if(print) printf(" Low warning level: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer,i,timer2 = 0; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) |
{ |
if(PINB & 0x02) PlatinenVersion = 13; |
else PlatinenVersion = 11; |
} |
else |
{ |
if(PINB & 0x02) PlatinenVersion = 20; |
else PlatinenVersion = 10; |
} |
DDRC = 0x81; // SCL |
DDRC |=0x40; // HEF4017 Reset |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
PORTD = 0x47; // LED |
HEF4017R_ON; |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
if(PlatinenVersion >= 20) GIER_GRAD_FAKTOR = 1160; else GIER_GRAD_FAKTOR = 1291; // unterschiedlich für ME und ENC |
ROT_OFF; |
Timer_Init(); |
TIMER2_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
SPI_MasterInit(); |
sei(); |
printf("\n\r==================================="); |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a'); |
printf("\n\rthe use of this software is only permitted \n\ron original MikroKopter-Hardware"); |
printf("\n\rwww.MikroKopter.de (c) HiSystems GmbH"); |
printf("\n\r==================================="); |
if(UCSR1A == 0x20 && UCSR1C == 0x06) // initial Values for 644P |
{ |
Uart1Init(); |
} |
GRN_ON; |
ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes |
if((eeprom_read_byte(&EEPromArray[EEPROM_ADR_MIXER_TABLE]) == MIXER_REVISION) && // Check Revision in the first Byte |
(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 0xff)) // Settings reset via Koptertool |
{ |
unsigned char i; |
RequiredMotors = 0; |
eeprom_read_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
for(i=0; i<16;i++) { if(Mixer.Motor[i][0] > 0) RequiredMotors++;} |
} |
else // default |
{ |
unsigned char i; |
printf("\n\rGenerating default Mixer Table"); |
for(i=0; i<16;i++) { Mixer.Motor[i][0] = 0;Mixer.Motor[i][1] = 0;Mixer.Motor[i][2] = 0;Mixer.Motor[i][3] = 0;}; |
// default = Quadro |
Mixer.Motor[0][0] = 64; Mixer.Motor[0][1] = +64; Mixer.Motor[0][2] = 0; Mixer.Motor[0][3] = +64; |
Mixer.Motor[1][0] = 64; Mixer.Motor[1][1] = -64; Mixer.Motor[1][2] = 0; Mixer.Motor[1][3] = +64; |
Mixer.Motor[2][0] = 64; Mixer.Motor[2][1] = 0; Mixer.Motor[2][2] = -64; Mixer.Motor[2][3] = -64; |
Mixer.Motor[3][0] = 64; Mixer.Motor[3][1] = 0; Mixer.Motor[3][2] = +64; Mixer.Motor[3][3] = -64; |
Mixer.Revision = MIXER_REVISION; |
memcpy(Mixer.Name, "Quadro\0", 11); |
eeprom_write_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
} |
printf("\n\rMixer-Config: '%s' (%u Motors)",Mixer.Name,RequiredMotors); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Check connected BL-Ctrls |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
printf("\n\rFound BL-Ctrl: "); |
motorread = 0; UpdateMotor = 0; SendMotorData(); while(!UpdateMotor); motorread = 0; // read the first I2C-Data |
timer = SetDelay(2000); |
for(i=0; i < MAX_MOTORS; i++) |
{ |
UpdateMotor = 0; |
SendMotorData(); |
while(!UpdateMotor); |
if(Mixer.Motor[i][0] > 0) // wait max 2 sec for the BL-Ctrls to wake up |
{ |
while(!CheckDelay(timer) && !MotorPresent[i]) {UpdateMotor = 0; SendMotorData(); while(!UpdateMotor);}; |
} |
if(MotorPresent[i]) printf("%d ",i+1); |
} |
for(i=0; i < MAX_MOTORS; i++) |
{ |
if(!MotorPresent[i] && Mixer.Motor[i][0] > 0) |
{ |
printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1); |
ServoActive = 1; // just in case the FC would be used as camera-stabilizer |
} |
MotorError[i] = 0; |
} |
printf("\n\r==================================="); |
SendMotorData(); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Check Settings |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
DefaultKonstanten1(); |
printf("\n\rInit. EEPROM"); |
for (unsigned char i=1;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
if(PlatinenVersion >= 20) |
{ |
EE_Parameter.Gyro_D = 5; |
EE_Parameter.Driftkomp = 0; |
EE_Parameter.GyroAccFaktor = 27; |
EE_Parameter.WinkelUmschlagNick = 78; |
EE_Parameter.WinkelUmschlagRoll = 78; |
} |
// valid Stick-Settings? |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]) < 12) |
{ |
EE_Parameter.Kanalbelegung[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]); |
EE_Parameter.Kanalbelegung[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]); |
EE_Parameter.Kanalbelegung[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]); |
EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); |
EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); |
EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); |
EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); |
EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); |
if(i==1) printf(": Generating Default-Parameter using old Stick Settings"); |
} else DefaultStickMapping(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
SetActiveParamSetNumber(3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
FlugMinuten = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES2]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1]); |
FlugMinutenGesamt = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES+1]); |
if(FlugMinutenGesamt == 0xffff || FlugMinuten == 0xffff) |
{ |
FlugMinuten = 0; |
FlugMinutenGesamt = 0; |
} |
printf("\n\rFlight-time %u min Total:%u min" ,FlugMinuten,FlugMinutenGesamt); |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
printf("\n\rACC not calibrated !"); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rUsing parameterset %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rCalibrating pressure sensor.."); |
timer = SetDelay(1000); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
ExternControl.Digital[0] = 0x55; |
printf("\n\rControl: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Normal (ACC-Mode)"); |
LcdClear(); |
I2CTimeout = 5000; |
WinkelOut.Orientation = 1; |
LipoDetection(1); |
printf("\n\r===================================\n\r"); |
//SpektrumBinding(); |
timer = SetDelay(2000); |
while (1) |
{ |
if(UpdateMotor && AdReady) // ReglerIntervall |
{ |
UpdateMotor=0; |
if(WinkelOut.CalcState) CalMk3Mag(); |
else MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(SenderOkay) SenderOkay--; |
else TIMSK1 |= _BV(ICIE1); // enable PPM-Input |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 160 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 220) SenderOkay = 160; |
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 101 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 1) SenderOkay = 101; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(NaviDataOkay) |
{ |
if(--NaviDataOkay == 0) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
if(!--I2CTimeout || MissingMotor) |
{ |
if(!I2CTimeout) |
{ |
i2c_reset(); |
I2CTimeout = 5; |
DebugOut.Analog[28]++; // I2C-Error |
} |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
ROT_OFF; |
} |
if(SIO_DEBUG && (!UpdateMotor || !MotorenEin)) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
timer += 20; |
if(PcZugriff) PcZugriff--; |
else |
{ |
ExternControl.Config = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
if(BeepMuster == 0xffff && SenderOkay == 0) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(UBat < BattLowVoltageWarning) |
{ |
MikroKopterFlags |= FLAG_LOWBAT; |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
else MikroKopterFlags &= ~FLAG_LOWBAT; |
SPI_StartTransmitPacket(); |
SendSPI = 4; |
if(!MotorenEin) timer2 = 1450; // 0,5 Minuten aufrunden |
if(++timer2 == 2930) // eine Minute |
{ |
timer2 = 0; |
FlugMinuten++; |
FlugMinutenGesamt++; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2],FlugMinuten / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1],FlugMinuten % 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES],FlugMinutenGesamt / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES+1],FlugMinutenGesamt % 256); |
timer = SetDelay(20); // falls "timer += 20;" mal nicht geht |
} |
} |
LED_Update(); |
} |
if(!SendSPI) { SPI_TransmitByte(); } |
} |
return (1); |
} |
/tags/V0.76g/main.h |
---|
0,0 → 1,136 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define QUADRO |
//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 |
#endif |
#if defined (__AVR_ATmega644P__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF {if((PlatinenVersion < 12)) PORTB &=~0x02; else PORTB |= 0x02;} |
#define GRN_ON {if((PlatinenVersion < 12)) PORTB |= 0x02; else PORTB &=~0x02;} |
#define GRN_FLASH PORTB ^= 0x02 |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EE_DATENREVISION 80 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
#define MIXER_REVISION 1 // wird angepasst, wenn sich die Mixer-Daten geändert haben |
#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_MINUTES 10 |
#define EEPROM_ADR_MINUTES2 14 |
#define EEPROM_ADR_CHANNELS 80 |
#define EEPROM_ADR_PARAM_LENGTH 98 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define EEPROM_ADR_MIXER_TABLE 1000 // 1001 - 1100 |
#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 CFG_MOTOR_BLINK 0x10 |
#define CFG_MOTOR_OFF_LED1 0x20 |
#define CFG_MOTOR_OFF_LED2 0x40 |
#define CFG_RES4 0x80 |
#define CFG2_HEIGHT_LIMIT 0x01 |
#define CFG2_VARIO_BEEP 0x02 |
#define CFG_SENSITIVE_RC 0x04 |
#define J3High PORTD |= 0x20 |
#define J3Low PORTD &= ~0x20 |
#define J4High PORTD |= 0x10 |
#define J4Low PORTD &= ~0x10 |
#define J5High PORTD |= 0x08 |
#define J5Low PORTD &= ~0x08 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile unsigned char SenderOkay; |
extern unsigned char BattLowVoltageWarning; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern unsigned char PlatinenVersion; |
extern unsigned char SendVersionToNavi; |
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); |
void SetActiveParamSetNumber(unsigned char number); |
void LipoDetection(unsigned char print); |
extern unsigned char EEPromArray[]; |
extern unsigned int FlugMinuten,FlugMinutenGesamt; |
#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" |
#include "led.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 |
/tags/V0.76g/makefile |
---|
0,0 → 1,450 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644p |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
VERSION_MAJOR = 0 |
VERSION_MINOR = 76 |
VERSION_PATCH = 6 |
VERSION_SERIAL_MAJOR = 10 # Serial Protocol |
VERSION_SERIAL_MINOR = 1 # Serial Protocol |
NC_SPI_COMPATIBLE = 10 # Navi-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_PATCH), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a |
endif |
ifeq ($(VERSION_PATCH), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b |
endif |
ifeq ($(VERSION_PATCH), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c |
endif |
ifeq ($(VERSION_PATCH), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d |
endif |
ifeq ($(VERSION_PATCH), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e |
endif |
ifeq ($(VERSION_PATCH), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f |
endif |
ifeq ($(VERSION_PATCH), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g |
endif |
ifeq ($(VERSION_PATCH), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h |
endif |
ifeq ($(VERSION_PATCH), 8) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i |
endif |
ifeq ($(VERSION_PATCH), 9) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j |
endif |
ifeq ($(VERSION_PATCH), 10) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k |
endif |
ifeq ($(VERSION_PATCH), 11) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)L |
endif |
ifeq ($(VERSION_PATCH), 12) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m |
endif |
ifeq ($(VERSION_PATCH), 13) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n |
endif |
ifeq ($(VERSION_PATCH), 14) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o |
endif |
ifeq ($(VERSION_PATCH), 15) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p |
endif |
ifeq ($(VERSION_PATCH), 16) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q |
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 = 2 |
########################################################################################################## |
# 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 led.c Spectrum.c |
SRC += mymath.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 = isqrt.S |
# 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_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_PATCH=$(VERSION_PATCH) -DVERSION_SERIAL_MAJOR=$(VERSION_SERIAL_MAJOR) -DVERSION_SERIAL_MINOR=$(VERSION_SERIAL_MINOR) -DNC_SPI_COMPATIBLE=$(NC_SPI_COMPATIBLE) |
# 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. |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE); $(HEXSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE); $(HEXSIZE); 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 |
/tags/V0.76g/menu.c |
---|
0,0 → 1,187 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + only for non-profit use |
// + www.MikroKopter.com |
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + 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 MaxMenue = 14; |
unsigned char MenuePunkt = 0; |
unsigned char RemoteKeys = 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) |
{ |
if(MenuePunkt > MaxMenue) MenuePunkt = MaxMenue; |
if(RemoteKeys & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue;} |
if(RemoteKeys & KEY2) { if(MenuePunkt == MaxMenue) MenuePunkt = 0; else MenuePunkt++;} |
if((RemoteKeys & KEY1) && (RemoteKeys & KEY2)) MenuePunkt = 0; |
LcdClear(); |
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_MAJOR, VERSION_MINOR, VERSION_PATCH +'a'); |
LCD_printfxy(0,2,"Setting:%d %s",GetActiveParamSetNumber(),Mixer.Name); |
if(I2CTimeout < 6) LCD_printfxy(0,3,"I2C ERROR!!!") |
else |
if(MissingMotor) LCD_printfxy(0,3,"Missing BL-Ctrl:%d!!",MissingMotor) |
else 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",(int)(HoehenWert/5)); |
LCD_printfxy(0,1,"SollHoehe: %5i",(int)(SollHoehe/5)); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",OCR0A); |
} |
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]]+120,PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]]+110,PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]+110); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]]+110,PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]+110); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i.%i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/8, AdNeutralNick%8); |
LCD_printfxy(0,2,"Roll %4i (%3i.%i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/8, AdNeutralRoll%8); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier); |
} |
else |
if((PlatinenVersion == 11) || (PlatinenVersion == 20)) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i.%x)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16, (AdNeutralNick%16)/2); |
LCD_printfxy(0,2,"Roll %4i (%3i.%x)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16, (AdNeutralRoll%16)/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2); |
} |
else |
if(PlatinenVersion == 13) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)(%3i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16,AnalogOffsetNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)(%3i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16,AnalogOffsetRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)(%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2,AnalogOffsetGier); |
} |
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,"Voltage: %5i",UBat); |
LCD_printfxy(0,2,"RC-Level: %5i",SenderOkay); |
LCD_printfxy(0,3,"RC-Channels:%4i",Channels-1); |
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",ServoNickValue); |
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; |
case 12: |
LCD_printfxy(0,0,"BL-Ctrl Errors " ); |
LCD_printfxy(0,1," %3d %3d %3d %3d ",MotorError[0],MotorError[1],MotorError[2],MotorError[3]); |
LCD_printfxy(0,2," %3d %3d %3d %3d ",MotorError[4],MotorError[5],MotorError[6],MotorError[7]); |
LCD_printfxy(0,3," %3d %3d %3d %3d ",MotorError[8],MotorError[9],MotorError[10],MotorError[11]); |
break; |
case 13: |
LCD_printfxy(0,0,"BL-Ctrl found " ); |
LCD_printfxy(0,1," %c %c %c %c ",MotorPresent[0] + '-',MotorPresent[1] + '-',MotorPresent[2] + '-',MotorPresent[3] + '-'); |
LCD_printfxy(0,2," %c %c %c %c ",MotorPresent[4] + '-',MotorPresent[5] + '-',MotorPresent[6] + '-',MotorPresent[7] + '-'); |
LCD_printfxy(0,3," %c - - -",MotorPresent[8] + '-'); |
if(MotorPresent[9]) LCD_printfxy(4,3,"10"); |
if(MotorPresent[10]) LCD_printfxy(8,3,"11"); |
if(MotorPresent[11]) LCD_printfxy(12,3,"12"); |
break; |
case 14: |
LCD_printfxy(0,0,"Flight-Time " ); |
LCD_printfxy(0,1," %5umin",FlugMinuten); |
LCD_printfxy(0,2,"Total:%5umin",FlugMinutenGesamt); |
LCD_printfxy(13,3,"(reset)"); |
if(RemoteKeys & KEY4) |
{ |
FlugMinuten = 0; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2],FlugMinuten / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1],FlugMinuten % 256); |
} |
/* if(RemoteKeys & KEY3 && FlugMinuten == 0) |
{ |
FlugMinutenGesamt = 0; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES],FlugMinutenGesamt / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES+1],FlugMinutenGesamt % 256); |
} */ |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteKeys = 0; |
} |
/tags/V0.76g/menu.h |
---|
0,0 → 1,9 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char MaxMenue; |
extern unsigned char MenuePunkt; |
extern unsigned char RemoteKeys; |
/tags/V0.76g/mymath.c |
---|
0,0 → 1,106 |
#include <stdlib.h> |
#include <avr/pgmspace.h> |
#include "mymath.h" |
// discrete mathematics |
// Sinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit. |
const uint16_t pgm_sinlookup[91] PROGMEM = {0, 143, 286, 429, 571, 714, 856, 998, 1140, 1282, 1423, 1563, 1703, 1843, 1982, 2120, 2258, 2395, 2531, 2667, 2802, 2936, 3069, 3201, 3332, 3462, 3591, 3719, 3846, 3972, 4096, 4219, 4341, 4462, 4581, 4699, 4815, 4930, 5043, 5155, 5266, 5374, 5482, 5587, 5691, 5793, 5893, 5991, 6088, 6183, 6275, 6366, 6455, 6542, 6627, 6710, 6791, 6870, 6947, 7022, 7094, 7165, 7233, 7299, 7363, 7424, 7484, 7541, 7595, 7648, 7698, 7746, 7791, 7834, 7875, 7913, 7949, 7982, 8013, 8041, 8068, 8091, 8112, 8131, 8147, 8161, 8172, 8181, 8187, 8191, 8192}; |
int16_t c_sin_8192(int16_t angle) |
{ |
int8_t m,n; |
int16_t sinus; |
// avoid negative angles |
if (angle < 0) |
{ |
m = -1; |
angle = abs(angle); |
} |
else m = +1; |
// fold angle to intervall 0 to 359 |
angle %= 360; |
// check quadrant |
if (angle <= 90) n=1; // first quadrant |
else if ((angle > 90) && (angle <= 180)) {angle = 180 - angle; n = 1;} // second quadrant |
else if ((angle > 180) && (angle <= 270)) {angle = angle - 180; n = -1;} // third quadrant |
else {angle = 360 - angle; n = -1;} //fourth quadrant |
// get lookup value |
sinus = pgm_read_word(&pgm_sinlookup[angle]); |
// calculate sinus value |
return (sinus * m * n); |
} |
// Cosinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit. |
int16_t c_cos_8192(int16_t angle) |
{ |
return (c_sin_8192(90 - angle)); |
} |
// Arcustangens returns degree in a range of +/. 180 deg |
const uint8_t pgm_atanlookup[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79}; |
int16_t c_atan2(int16_t y, int16_t x) |
{ |
int16_t index, angle; |
int8_t m; |
if (!x && !y) return 0; //atan2(0, 0) is undefined |
if (y < 0) m = -1; |
else m = 1; |
if (!x) return (90 * m); // atan2(y,0) = +/- 90 deg |
index = (int16_t)(((int32_t)y * 64) / x);// calculate index for lookup table |
if (index < 0) index = -index; |
if (index < 346) angle = pgm_read_byte(&pgm_atanlookup[index]); // lookup for 0 deg to 79 deg |
else if (index > 7334) angle = 90; // limit is 90 deg |
else if (index > 2444) angle = 89; // 89 deg to 80 deg is mapped via intervalls |
else if (index > 1465) angle = 88; |
else if (index > 1046) angle = 87; |
else if (index > 813) angle = 86; |
else if (index > 664) angle = 85; |
else if (index > 561) angle = 84; |
else if (index > 486) angle = 83; |
else if (index > 428) angle = 82; |
else if (index > 382) angle = 81; |
else angle = 80; // (index>345) |
if (x > 0) return (angle * m); // 1st and 4th quadrant |
else if ((x < 0) && (m > 0)) return (180 - angle); // 2nd quadrant |
else return (angle - 180); // ( (x < 0) && (y < 0)) 3rd quadrant |
} |
// Integer square root |
// For details of the algorithm see the article http://www.embedded.com/98/9802fe2.htm |
uint32_t c_sqrt(uint32_t a) |
{ |
uint32_t rem = 0; |
uint32_t root = 0; |
uint8_t i; |
for(i = 0; i < 16; i++) |
{ |
root <<= 1; |
rem = ((rem << 2) + (a >> 30)); |
a <<= 2; |
root++; |
if(root <= rem) |
{ |
rem -= root; |
root++; |
} |
else root--; |
} |
return (root >> 1); |
} |
/tags/V0.76g/mymath.h |
---|
0,0 → 1,10 |
#ifndef _MYMATH_H |
#define _MYMATH_H |
#include <inttypes.h> |
extern int16_t c_sin_8192(int16_t angle); |
extern int16_t c_cos_8192(int16_t angle); |
extern int16_t c_atan2(int16_t y, int16_t x); |
extern uint32_t c_sqrt(uint32_t a); |
#endif // _MYMATH_H |
/tags/V0.76g/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 |
/tags/V0.76g/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); |
} |
/tags/V0.76g/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 |
/tags/V0.76g/rc.c |
---|
0,0 → 1,212 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + only for non-profit use |
// + www.MikroKopter.com |
// + porting the sources to other systems or using the software on other systems (except hardware from www.mikrokopter.de) is not allowed |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
//#define ACT_S3D_SUMMENSIGNAL |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile char Channels,tmpChannels = 0; |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
#ifndef ACT_S3D_SUMMENSIGNAL |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
#else |
TCCR1B=(1<<CS11)|(0<<CS10)|(1<<ICES1)|(1<<ICNC1); //timer1 prescale 64 |
#endif |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
#ifndef ACT_S3D_SUMMENSIGNAL |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
if(!(EE_Parameter.ExtraConfig & CFG_SENSITIVE_RC)) |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
if((signal > 1100) && (signal < 8000)) |
{ |
Channels = index; |
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; else SenderOkay = 200;} |
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) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
} |
} |
else |
{ |
static unsigned int AltICR=0; |
static int ppm_in[11]; |
static int ppm_diff[11]; |
static int old_ppm_in[11]; |
static int old_ppm_diff[11]; |
signed int signal = 0,tmp; |
static unsigned char index, okay_cnt = 0; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
if((signal > 1100) && (signal < 8000)) |
{ |
tmpChannels = index; |
if(tmpChannels >= 4 && Channels == tmpChannels) |
{ |
if(okay_cnt > 10) |
{ |
NewPpmData = 0; // Null bedeutet: Neue Daten |
for(index = 0; index < 11; index++) |
{ |
if(okay_cnt > 30) |
{ |
old_ppm_in[index] = PPM_in[index]; |
old_ppm_diff[index] = PPM_diff[index]; |
} |
PPM_in[index] = ppm_in[index]; |
PPM_diff[index] = ppm_diff[index]; |
} |
} |
if(okay_cnt < 255) okay_cnt++; |
} |
else |
{ |
if(okay_cnt > 100) okay_cnt = 10; else okay_cnt = 0; |
ROT_ON; |
} |
index = 1; |
if(!MotorenEin) Channels = tmpChannels; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if((abs(signal - ppm_in[index]) < 6)) |
{ |
if(okay_cnt > 25) SenderOkay += 10; |
else |
if(okay_cnt > 10) SenderOkay += 2; |
if(SenderOkay > 200) SenderOkay = 200; |
} |
tmp = (3 * (ppm_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 190) ppm_diff[index] = ((tmp - ppm_in[index]) / 3) * 3; |
else ppm_diff[index] = 0; |
ppm_in[index] = tmp; |
} |
else ROT_ON; |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
if(index < 20) index++; |
else |
if(index == 20) |
{ |
unsigned char i; |
ROT_ON; |
index = 30; |
for(i=0;i<11;i++) // restore from older data |
{ |
PPM_in[i] = old_ppm_in[i]; |
PPM_diff[i] = 0; |
// okay_cnt /= 2; |
} |
} |
} |
} |
} |
#else |
//############################################################################ |
//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; |
DebugOut.Analog[16] = signal; |
signal /= 2; |
AltICR = ICR1; |
//Syncronisationspause? |
if((signal > 1100*2) && (signal < 8000*2)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687*2)) |
{ |
signal -= 962; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
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++; |
} |
} |
} |
#endif |
/tags/V0.76g/rc.h |
---|
0,0 → 1,31 |
/*####################################################################################### |
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_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644P__) |
#define TIMER_RELOAD_VALUE 250 |
#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; |
extern volatile char Channels,tmpChannels; |
#endif //_RC_H |
/tags/V0.76g/spi.c |
---|
0,0 → 1,297 |
// ######################## SPI - FlightCtrl ################### |
#include "main.h" |
//struct str_ToNaviCtrl_Version ToNaviCtrl_Version; |
//struct str_FromNaviCtrl_Version FromNaviCtrl_Version; |
struct str_ToNaviCtrl ToNaviCtrl; |
struct str_FromNaviCtrl FromNaviCtrl; |
struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
struct str_SPI_VersionInfo SPI_VersionInfo; |
unsigned char SPI_BufferIndex; |
unsigned char SPI_RxBufferIndex; |
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)]; |
unsigned char *SPI_TX_Buffer; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
unsigned char SPI_RxDataValid,NaviDataOkay = 0; |
unsigned char SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_PARAMETER1, SPI_CMD_STICK, SPI_CMD_MISC, SPI_CMD_VERSION, SPI_CMD_SERVOS }; |
unsigned char SPI_CommandCounter = 0; |
#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<<SPR0)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64 |
SPSR = 0;//(1<<SPI2X); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); |
SPITransferCompleted = 1; |
//SPDR = 0x00; // dummy write |
ToNaviCtrl.Sync1 = 0xAA; |
ToNaviCtrl.Sync2 = 0x83; |
ToNaviCtrl.Command = SPI_CMD_USER; |
ToNaviCtrl.IntegralNick = 0; |
ToNaviCtrl.IntegralRoll = 0; |
FromNaviCtrl_Value.SerialDataOkay = 0; |
SPI_RxDataValid = 0; |
SPI_VersionInfo.Major = VERSION_MAJOR; |
SPI_VersionInfo.Minor = VERSION_MINOR; |
SPI_VersionInfo.Patch = VERSION_PATCH; |
SPI_VersionInfo.Compatible = NC_SPI_COMPATIBLE; |
} |
//------------------------------------------------------ |
void SPI_StartTransmitPacket(void) |
{ |
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed |
if (!SPITransferCompleted) return; |
// _delay_us(30); |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl; |
ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++]; |
if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0; |
SPITransferCompleted = 0; |
UpdateSPI_Buffer(); // update buffer |
SPI_BufferIndex = 1; |
//ebugOut.Analog[16]++; |
// -- Debug-Output --- |
//---- |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1; |
SPDR = ToNaviCtrl.Sync1; // Start transmission |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
//------------------------------------------------------ |
//SIGNAL(SIG_SPI) |
void SPI_TransmitByte(void) |
{ |
static unsigned char SPI_RXState = 0; |
unsigned char rxdata; |
static unsigned char rxchksum; |
if (SPITransferCompleted) return; |
if (!(SPSR & (1 << SPIF))) return; |
SendSPI = 4; |
// _delay_us(30); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
rxdata = SPDR; |
switch ( SPI_RXState) |
{ |
case 0: |
SPI_RxBufferIndex = 0; |
//DebugOut.Analog[17]++; |
rxchksum = rxdata; |
if (rxdata == 0x81 ) { SPI_RXState = 1; } // 1. Syncbyte ok |
break; |
case 1: |
if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState = 2; } // 2. Syncbyte ok |
else SPI_RXState = 0; |
//DebugOut.Analog[18]++; |
break; |
case 2: |
SPI_Buffer[SPI_RxBufferIndex++]= rxdata; // get data |
//DebugOut.Analog[19]++; |
if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl)) |
{ |
if (rxdata == rxchksum) |
{ |
unsigned char *ptr = (unsigned char *)&FromNaviCtrl; |
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer)); |
SPI_RxDataValid = 1; |
} |
else SPI_RxDataValid = 0; |
SPI_RXState = 0; |
} |
else rxchksum += rxdata; |
break; |
} |
if (SPI_BufferIndex < sizeof(ToNaviCtrl)) |
{ |
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"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
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 = SPI_TX_Buffer[SPI_BufferIndex]; |
ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex]; |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
else SPITransferCompleted = 1; |
SPI_BufferIndex++; |
} |
//------------------------------------------------------ |
void UpdateSPI_Buffer(void) |
{ |
signed int tmp; |
ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR; |
ToNaviCtrl.AccNick = ((int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc))/4; |
ToNaviCtrl.AccRoll = ((int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc))/4; |
NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0; |
// ToNaviCtrl.User8 = Parameter_UserParam8; |
// ToNaviCtrl.CalState = WinkelOut.CalcState; |
switch(ToNaviCtrl.Command) // |
{ |
case SPI_CMD_USER: |
ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1; |
ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2; |
ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3; |
ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4; |
ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5; |
ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6; |
ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7; |
ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) MikroKopterFlags; |
MikroKopterFlags &= ~(FLAG_CALIBRATE | FLAG_START); |
ToNaviCtrl.Param.Byte[9] = (unsigned char) UBat; |
ToNaviCtrl.Param.Byte[10] =(unsigned char) BattLowVoltageWarning; |
ToNaviCtrl.Param.Byte[11] =(unsigned char) eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
break; |
case SPI_CMD_PARAMETER1: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviGpsModeControl; // Parameters for the Naviboard |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; |
ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP; |
ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsACC; |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsMinSat; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviOperatingRadius; |
ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection; |
ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviSpeedCompensation; |
ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation; |
break; |
case SPI_CMD_STICK: |
cli(); |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[0] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[1] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[2] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
sei(); |
ToNaviCtrl.Param.Byte[3] = (char) tmp; |
ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti1; |
ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti2; |
ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti3; |
ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti4; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) SenderOkay; |
ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderRSSI; |
ToNaviCtrl.Param.Byte[10] = DebugOut.Analog[7] / 4; //GasMischanteil |
break; |
case SPI_CMD_MISC: |
if(WinkelOut.CalcState > 5) |
{ |
WinkelOut.CalcState = 0; |
ToNaviCtrl.Param.Byte[0] = 5; |
} |
else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState; |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviPH_LoginTime; |
ToNaviCtrl.Param.Int[1] = DebugOut.Analog[5];// = HoehenWert/5; |
ToNaviCtrl.Param.Int[2] = (int)(SollHoehe/5); |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsPLimit; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviGpsILimit; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviGpsDLimit; |
break; |
case SPI_CMD_VERSION: |
ToNaviCtrl.Param.Byte[0] = SPI_VersionInfo.Major; |
ToNaviCtrl.Param.Byte[1] = SPI_VersionInfo.Minor; |
ToNaviCtrl.Param.Byte[2] = SPI_VersionInfo.Patch; |
ToNaviCtrl.Param.Byte[3] = SPI_VersionInfo.Compatible; |
ToNaviCtrl.Param.Byte[4] = PlatinenVersion; |
break; |
case SPI_CMD_SERVOS: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.ServoNickRefresh; // Parameters for the Servo Control |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.ServoCompInvert; |
ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl; |
ToNaviCtrl.Param.Byte[3] = EE_Parameter.ServoNickComp; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.ServoNickMin; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.ServoNickMax; |
ToNaviCtrl.Param.Byte[6] = Parameter_ServoRollControl; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.ServoRollComp; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.ServoRollMin; |
ToNaviCtrl.Param.Byte[9] = EE_Parameter.ServoRollMax; |
break; |
} |
if(SPI_RxDataValid) |
{ |
if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV)) |
{ |
GPS_Nick = FromNaviCtrl.GPS_Nick; |
GPS_Roll = FromNaviCtrl.GPS_Roll; |
NaviDataOkay = 250; |
} |
if(FromNaviCtrl.CompassValue <= 360) KompassValue = FromNaviCtrl.CompassValue; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
if(FromNaviCtrl.BeepTime > beeptime && !WinkelOut.CalcState) beeptime = FromNaviCtrl.BeepTime; |
switch (FromNaviCtrl.Command) |
{ |
case SPI_KALMAN: |
FromNaviCtrl_Value.Kalman_K = FromNaviCtrl.Param.sByte[0]; |
FromNaviCtrl_Value.Kalman_MaxFusion = FromNaviCtrl.Param.sByte[1]; |
FromNaviCtrl_Value.Kalman_MaxDrift = FromNaviCtrl.Param.sByte[2]; |
FromNaviCtrl_Value.SerialDataOkay = FromNaviCtrl.Param.Byte[3]; |
FromNaviCtrl_Value.GpsZ = FromNaviCtrl.Param.Byte[4]; |
break; |
default: |
break; |
} |
} |
else |
{ |
// KompassValue = 0; |
// KompassRichtung = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
#endif |
/tags/V0.76g/spi.h |
---|
0,0 → 1,144 |
// ######################## SPI - FlightCtrl ################### |
#ifndef _SPI_H |
#define _SPI_H |
#include <util/delay.h> |
#define USE_SPI_COMMUNICATION |
//----------------------------------------- |
#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 |
#define SPI_CMD_USER 10 |
#define SPI_CMD_STICK 11 |
#define SPI_CMD_MISC 12 |
#define SPI_CMD_PARAMETER1 13 |
#define SPI_CMD_VERSION 14 |
#define SPI_CMD_SERVOS 15 |
struct str_ToNaviCtrl |
{ |
unsigned char Sync1, Sync2; |
unsigned char Command; |
signed int IntegralNick; |
signed int IntegralRoll; |
signed int AccNick; |
signed int AccRoll; |
signed int GyroCompass; |
signed int GyroNick; |
signed int GyroRoll; |
signed int GyroGier; |
union |
{ |
char sByte[12]; |
unsigned char Byte[12]; |
int Int[6]; |
long Long[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
#define SPI_KALMAN 103 |
struct str_FromNaviCtrl |
{ |
unsigned char Command; |
signed int GPS_Nick; |
signed int GPS_Roll; |
signed int GPS_Gier; |
signed int CompassValue; |
signed int Status; |
unsigned int BeepTime; |
union |
{ |
char sByte[12]; |
unsigned char Byte[12]; |
int Int[6]; |
long Long[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
struct str_FromNaviCtrl_Value |
{ |
signed char Kalman_K; |
signed char Kalman_MaxDrift; |
signed char Kalman_MaxFusion; |
unsigned char SerialDataOkay; |
signed char GpsZ; |
}; |
struct str_SPI_VersionInfo |
{ |
unsigned char Major; |
unsigned char Minor; |
unsigned char Patch; |
unsigned char Compatible; |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
extern unsigned char SPI_CommandCounter,NaviDataOkay; |
//#define SPI_CMD_VALUE 0x03 |
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 |
/tags/V0.76g/timer0.c |
---|
0,0 → 1,402 |
#include "main.h" |
#include "spectrum.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; |
volatile unsigned char SendSPI = 0, ServoActive = 0; |
unsigned int BeepMuster = 0xffff; |
volatile int16_t ServoNickValue = 0; |
volatile int16_t ServoRollValue = 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) // 9,7kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
unsigned char pieper_ein = 0; |
if(SendSPI) SendSPI--; |
if(SpektrumTimer) SpektrumTimer--; |
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 < 362)) |
{ |
cntKompass += cntKompass / 41; |
if(cntKompass > 10) KompassValue = cntKompass - 10; else KompassValue = 0; |
} |
// if(cntKompass < 10) cntKompass =r 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 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)) if(AdReady) {AdReady = 0; ANALOG_ON;} |
} |
/*****************************************************/ |
/* Initialize Timer 2 */ |
/*****************************************************/ |
// The timer 2 is used to generate the PWM at PD7 (J7) |
// to control a camera servo for nick compensation. |
void TIMER2_Init(void) |
{ |
uint8_t sreg = SREG; |
// disable all interrupts before reconfiguration |
cli(); |
PORTD &= ~(1<<PORTD7); // set PD7 to low |
DDRC |= (1<<DDC6); // set PC6 as output (Reset for HEF4017) |
HEF4017R_ON; |
// Timer/Counter 2 Control Register A |
// Timer Mode is FastPWM with timer reload at OCR2A (Bits: WGM22 = 1, WGM21 = 1, WGM20 = 1) |
// PD7: Normal port operation, OC2A disconnected, (Bits: COM2A1 = 0, COM2A0 = 0) |
// PD6: Normal port operation, OC2B disconnected, (Bits: COM2B1 = 0, COM2B0 = 0) |
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0)|(1<<COM2B1)|(1<<COM2B0)); |
TCCR2A |= (1<<WGM21)|(1<<WGM20); |
// Timer/Counter 2 Control Register B |
// Set clock divider for timer 2 to SYSKLOCK/32 = 20MHz / 32 = 625 kHz |
// The timer increments from 0x00 to 0xFF with an update rate of 625 kHz or 1.6 us |
// hence the timer overflow interrupt frequency is 625 kHz / 256 = 2.44 kHz or 0.4096 ms |
// divider 32 (Bits: CS022 = 0, CS21 = 1, CS20 = 1) |
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS22)); |
TCCR2B |= (1<<CS21)|(1<<CS20)|(1<<WGM22); |
// Initialize the Timer/Counter 2 Register |
TCNT2 = 0; |
// Initialize the Output Compare Register A used for PWM generation on port PD7. |
OCR2A = 255; |
TCCR2A |= (1<<COM2A1); // set or clear at compare match depends on value of COM2A0 |
// Timer/Counter 2 Interrupt Mask Register |
// Enable timer output compare match A Interrupt only |
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2)); |
TIMSK2 |= (1<<OCIE2A); |
SREG = sreg; |
} |
//---------------------------- |
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; |
TIMSK0 |= _BV(TOIE0); |
} |
/*****************************************************/ |
/* Control Servo Position */ |
/*****************************************************/ |
ISR(TIMER2_COMPA_vect) |
{ |
// frame len 22.5 ms = 14063 * 1.6 us |
// stop pulse: 0.3 ms = 188 * 1.6 us |
// min servo pulse: 0.6 ms = 375 * 1.6 us |
// max servo pulse: 2.4 ms = 1500 * 1.6 us |
// resolution: 1500 - 375 = 1125 steps |
#define IRS_RUNTIME 127 |
#define PPM_STOPPULSE 188 |
// #define PPM_FRAMELEN (14063 |
#define PPM_FRAMELEN (1757 * EE_Parameter.ServoNickRefresh) |
#define MINSERVOPULSE 375 |
#define MAXSERVOPULSE 1500 |
#define SERVORANGE (MAXSERVOPULSE - MINSERVOPULSE) |
static uint8_t PulseOutput = 0; |
static uint16_t RemainingPulse = 0; |
static uint16_t ServoFrameTime = 0; |
static uint8_t ServoIndex = 0; |
#define MULTIPLYER 4 |
static int16_t ServoNickOffset = (255 / 2) * MULTIPLYER; // initial value near center positon |
static int16_t ServoRollOffset = (255 / 2) * MULTIPLYER; // initial value near center positon |
if(PlatinenVersion < 20) |
{ |
//--------------------------- |
// Nick servo state machine |
//--------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
ServoNickOffset = (ServoNickOffset * 3 + (int16_t)Parameter_ServoNickControl * MULTIPLYER) / 4; // lowpass offset |
ServoNickValue = ServoNickOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoCompInvert & 0x01) |
{ // inverting movement of servo |
ServoNickValue += (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoNickValue -= (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER; |
} |
else |
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER; |
} |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoNickValue /= MULTIPLYER; |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// accumulate time for correct update rate |
ServoFrameTime = RemainingPulse; |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF Nick servo state machine |
else |
{ |
//----------------------------------------------------- |
// PPM state machine, onboard demultiplexed by HEF4017 |
//----------------------------------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
if(ServoIndex == 0) // if we are at the sync gap |
{ |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; // generate sync gap by filling time to full frame time |
ServoFrameTime = 0; // reset servo frame time |
HEF4017R_ON; // enable HEF4017 reset |
} |
else // servo channels |
{ |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
switch(ServoIndex) // map servo channels |
{ |
case 1: // Nick Compensation Servo |
ServoNickOffset = (ServoNickOffset * 3 + (int16_t)Parameter_ServoNickControl * MULTIPLYER) / 4; // lowpass offset |
ServoNickValue = ServoNickOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoCompInvert & 0x01) |
{ // inverting movement of servo |
ServoNickValue += (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoNickValue -= (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER; |
} |
else |
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER; |
} |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoNickValue /= MULTIPLYER; |
break; |
case 2: // Roll Compensation Servo |
ServoRollOffset = (ServoRollOffset * 3 + (int16_t) Parameter_ServoRollControl * MULTIPLYER) / 4; // lowpass offset |
ServoRollValue = ServoRollOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoCompInvert & 0x02) |
{ // inverting movement of servo |
ServoRollValue += (int16_t)( ( (int32_t) EE_Parameter.ServoRollComp * MULTIPLYER * (IntegralRoll / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoRollValue -= (int16_t)( ( (int32_t) EE_Parameter.ServoRollComp * MULTIPLYER * (IntegralRoll / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoRollValue < ((int16_t)EE_Parameter.ServoRollMin * MULTIPLYER) ) |
{ |
ServoRollValue = (int16_t)EE_Parameter.ServoRollMin * MULTIPLYER; |
} |
else |
if(ServoRollValue > ((int16_t)EE_Parameter.ServoRollMax * MULTIPLYER) ) |
{ |
ServoRollValue = (int16_t)EE_Parameter.ServoRollMax * MULTIPLYER; |
} |
RemainingPulse += ServoRollValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoRollValue /= MULTIPLYER; |
//DebugOut.Analog[20] = ServoRollValue; |
break; |
default: // other servo channels |
RemainingPulse += 2 * PPM_in[ServoIndex]; // add channel value, factor of 2 because timer 1 increments 3.2µs |
break; |
} |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// substract stop pulse width |
RemainingPulse -= PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
} |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
// set pulsewidth to stop pulse width |
RemainingPulse = PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
if(ServoActive && SenderOkay > 180) HEF4017R_OFF; // disable HEF4017 reset |
else HEF4017R_ON; |
ServoIndex++; // change to next servo channel |
if(ServoIndex > EE_Parameter.ServoNickRefresh) ServoIndex = 0; // reset to the sync gap |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF PPM state machine |
// General pulse output generator |
if(RemainingPulse > (255 + IRS_RUNTIME)) |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
else |
{ |
if(RemainingPulse > 255) // this is the 2nd last part |
{ |
if((RemainingPulse - 255) < IRS_RUNTIME) |
{ |
OCR2A = 255 - IRS_RUNTIME; |
RemainingPulse -= 255 - IRS_RUNTIME; |
} |
else // last part > ISR_RUNTIME |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
} |
else // this is the last part |
{ |
OCR2A = RemainingPulse; |
RemainingPulse = 0; |
PulseOutput = 0; // trigger to stop pulse |
} |
} // EOF general pulse output generator |
} |
/tags/V0.76g/timer0.h |
---|
0,0 → 1,21 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
#define HEF4017R_ON PORTC |= (1<<PORTC6) |
#define HEF4017R_OFF PORTC &= ~(1<<PORTC6) |
void Timer_Init(void); |
void TIMER2_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 unsigned int BeepMuster; |
extern volatile unsigned char SendSPI, ServoActive; |
extern volatile int16_t ServoNickValue; |
extern volatile int16_t ServoRollValue; |
/tags/V0.76g/twimaster.c |
---|
0,0 → 1,221 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
volatile unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0,MissingMotor = 0; |
unsigned char motor_rx[16],motor_rx2[16]; |
unsigned char MotorPresent[MAX_MOTORS]; |
unsigned char MotorError[MAX_MOTORS]; |
unsigned int I2CError = 0; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
void i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
} |
//############################################################################ |
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); |
} |
//############################################################################ |
void i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
/****************************************/ |
/* Write to I2C */ |
/****************************************/ |
void I2C_WriteByte(int8_t byte) |
{ |
// move byte to send into TWI Data Register |
TWDR = byte; |
// clear interrupt flag (TWINT = 1) |
// enable i2c bus (TWEN = 1) |
// enable interrupt (TWIE = 1) |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
/****************************************/ |
/* Receive byte and send ACK */ |
/****************************************/ |
void I2C_ReceiveByte(void) |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
/****************************************/ |
/* I2C receive last byte and send no ACK*/ |
/****************************************/ |
void I2C_ReceiveLastByte(void) |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
//############################################################################ |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
static unsigned char missing_motor; |
switch(twi_state++) |
{ |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Writing the Data |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
case 0: |
while(Mixer.Motor[motor][0] <= 0 && motor < MAX_MOTORS) motor++; // skip if not used |
if(motor == MAX_MOTORS) // writing finished -> now read |
{ |
motor = 0; |
twi_state = 3; |
i2c_write_byte(0x53+(motorread*2)); |
} |
else i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
i2c_write_byte(Motor[motor++]); |
break; |
case 2: |
if(TWSR == 0x30) |
{ |
if(!missing_motor) missing_motor = motor; |
if(++MotorError[motor-1] == 0) MotorError[motor-1] = 255; |
} |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
i2c_start(); |
break; |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Reading Data |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
case 3: |
//Transmit 1st byte for reading |
if(TWSR != 0x40) // Error? |
{ |
MotorPresent[motorread] = 0; |
motorread++; |
if(motorread >= MAX_MOTORS) motorread = 0; |
i2c_stop(); |
twi_state = 0; |
} |
else |
{ |
MotorPresent[motorread] = ('1' - '-') + motorread; |
I2C_ReceiveByte(); |
} |
MissingMotor = missing_motor; |
missing_motor = 0; |
break; |
case 4: //Read 1st byte and transmit 2nd Byte |
motor_rx[motorread] = TWDR; |
I2C_ReceiveLastByte(); //nack |
break; |
case 5: |
//Read 2nd byte |
motor_rx2[motorread++] = TWDR; |
if(motorread >= MAX_MOTORS) motorread = 0; |
i2c_stop(); |
twi_state = 0; |
break; |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// writing Gyro-Offset |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
case 8: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 9: |
i2c_write_byte(0x10); // Update Channel A |
break; |
case 10: |
i2c_write_byte(AnalogOffsetNick); // Value |
break; |
case 11: |
i2c_write_byte(0x80); // Value |
break; |
case 12: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 13: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 14: |
i2c_write_byte(0x12); // Update Channel B |
break; |
case 15: |
i2c_write_byte(AnalogOffsetRoll); // Value |
break; |
case 16: |
i2c_write_byte(0x80); // Value |
break; |
case 17: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 18: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 19: |
i2c_write_byte(0x14); // Update Channel C |
break; |
case 20: |
i2c_write_byte(AnalogOffsetGier); // Value |
break; |
case 21: |
i2c_write_byte(0x80); // Value |
break; |
case 22: |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
default: twi_state = 0; |
break; |
} |
TWCR |= 0x80; |
} |
/tags/V0.76g/twimaster.h |
---|
0,0 → 1,35 |
/*############################################################################ |
############################################################################*/ |
#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 volatile unsigned char twi_state; |
extern unsigned char motor,MissingMotor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[]; |
extern unsigned char MotorPresent[]; |
extern unsigned char MotorError[]; |
void i2c_reset(void); |
extern void i2c_init (void); // I2C initialisieren |
extern void i2c_start (void); // Start I2C |
extern void i2c_stop (void); // Stop I2C |
extern void i2c_write_byte (char byte); // 1 Byte schreiben |
extern void i2c_reset(void); |
#endif |
/tags/V0.76g/uart.c |
---|
0,0 → 1,570 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include <stdarg.h> |
#include <string.h> |
#include "main.h" |
#include "uart.h" |
#define FC_ADDRESS 1 |
#define NC_ADDRESS 2 |
#define MK3MAG_ADDRESS 3 |
unsigned char GetExternalControl = 0,DebugDisplayAnforderung1 = 0, DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0, GetPPMChannelAnforderung = 0; |
unsigned char DisplayLine = 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 char *pRxData = 0; |
unsigned char RxDataLen = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned volatile char PC_MotortestActive = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[16]; |
unsigned char MeineSlaveAdresse = 1; // Flight-Ctrl |
unsigned char ConfirmFrame; |
struct str_DebugOut DebugOut; |
struct str_ExternControl ExternControl; |
struct str_VersionInfo VersionInfo; |
struct str_WinkelOut WinkelOut; |
struct str_Data3D Data3D; |
int Debug_Timer,Kompass_Timer,Timer3D; |
unsigned int DebugDataIntervall = 200, Intervall3D = 0; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"AngleNick ", //0 |
"AngleRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"Hight Value ", //5 |
"AccZ ", |
"Gas ", |
"Compass Value ", |
"Voltage ", |
"Empfang ", //10 |
"Gyro Kompass ", |
"Motor Front ", |
"Motor Rear ", |
"Motor Left ", |
"Motor Right ", //15 |
" ", |
" ", |
"VarioMeter ", |
"MK3Mag CalState ", |
"Servo ", //20 |
"Hoovergas ", |
" ", |
" ", |
" ", |
" ", //25 |
" ", |
" ", |
"I2C-Error ", |
" ",// "Navi Serial Data", |
"GPS_Nick ", //30 |
"GPS_Roll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ 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 + 1; |
RxdBuffer[buf_ptr] = '\r'; |
if(RxdBuffer[2] == 'R') |
{ |
wdt_enable(WDTO_250MS); // Reset-Commando |
ServoActive = 0; |
} |
} |
} |
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 address, unsigned char BufferAnzahl, ...) //unsigned char *snd, unsigned char len) |
{ |
va_list ap; |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
unsigned char *snd = 0; |
int len = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = 'a' + address; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
va_start(ap, BufferAnzahl); |
if(BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
while(len) |
{ |
if(len) |
{ |
a = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else a = 0; |
if(len) |
{ |
b = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else b = 0; |
if(len) |
{ |
c = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
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); |
} |
va_end(ap); |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(void) // die daten werden im rx buffer dekodiert, das geht nur, weil aus 4 byte immer 3 gemacht werden. |
{ |
unsigned char a,b,c,d; |
unsigned char x,y,z; |
unsigned char ptrIn = 3; // start at begin of data block |
unsigned char ptrOut = 3; |
unsigned char len = AnzahlEmpfangsBytes - 6; // von der Gesamtbytezahl eines Frames gehen 3 Bytes des Headers ('#',Addr, Cmd) und 3 Bytes des Footers (CRC1, CRC2, '\r') ab. |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) RxdBuffer[ptrOut++] = x; else break; |
if(len--) RxdBuffer[ptrOut++] = y; else break; |
if(len--) RxdBuffer[ptrOut++] = z; else break; |
} |
pRxData = (unsigned char*)&RxdBuffer[3]; // decodierte Daten beginnen beim 4. Byte |
RxDataLen = ptrOut - 3; // wie viele Bytes wurden dekodiert? |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned char tempchar1, tempchar2; |
Decode64(); // dekodiere datenblock im Empfangsbuffer |
switch(RxdBuffer[1]-'a') // check for Slave Address |
{ |
case FC_ADDRESS: // FC special commands |
switch(RxdBuffer[2]) |
{ |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
break; |
case 't':// Motortest |
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4); |
PC_MotortestActive = 240; |
//while(!UebertragungAbgeschlossen); |
//SendOutData('T', MeineSlaveAdresse, 0); |
PcZugriff = 255; |
break; |
case 'n':// "Get Mixer |
while(!UebertragungAbgeschlossen); |
SendOutData('N', FC_ADDRESS, 1, (unsigned char *) &Mixer,sizeof(Mixer)); |
break; |
case 'm':// "Write Mixer |
while(!UebertragungAbgeschlossen); |
if(pRxData[0] == MIXER_REVISION) |
{ |
memcpy(&Mixer, (unsigned char *)pRxData, sizeof(Mixer)); |
eeprom_write_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
tempchar1 = 1; |
} |
else tempchar1 = 0; |
SendOutData('M', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
break; |
case 'p': // get PPM Channels |
GetPPMChannelAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
if(pRxData[0] == 0xFF) |
{ |
pRxData[0] = GetActiveParamSetNumber(); |
} |
// limit settings range |
if(pRxData[0] < 1) pRxData[0] = 1; // limit to 5 |
else if(pRxData[0] > 5) pRxData[0] = 5; // limit to 5 |
// load requested parameter set |
ReadParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
while(!UebertragungAbgeschlossen); |
tempchar1 = pRxData[0]; |
tempchar2 = EE_DATENREVISION; |
SendOutData('Q', FC_ADDRESS, 3, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
break; |
case 's': // Parametersatz speichern |
if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EE_DATENREVISION)) // check for setting to be in range |
{ |
memcpy((unsigned char *) &EE_Parameter.Kanalbelegung[0], (unsigned char *)&pRxData[2], STRUCT_PARAM_LAENGE); |
WriteParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
SetActiveParamSetNumber(pRxData[0]); |
tempchar1 = GetActiveParamSetNumber(); |
LipoDetection(0); |
Piep(tempchar1,110); |
} |
else |
{ |
tempchar1 = 0; // mark in response an invlid setting |
} |
while(!UebertragungAbgeschlossen); |
SendOutData('S', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
break; |
} // case FC_ADDRESS: |
default: // any Slave Address |
switch(RxdBuffer[2]) |
{ |
// 't' comand placed here only for compatibility to BL |
case 't':// Motortest |
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4); |
while(!UebertragungAbgeschlossen); |
SendOutData('T', MeineSlaveAdresse, 0); |
PC_MotortestActive = 250; |
PcZugriff = 255; |
break; |
// 'K' comand placed here only for compatibility to old MK3MAG software, that does not send the right Slave Address |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
break; |
case 'a':// Texte der Analogwerte |
DebugTextAnforderung = pRxData[0]; |
if (DebugTextAnforderung > 31) DebugTextAnforderung = 31; |
PcZugriff = 255; |
break; |
case 'b': |
memcpy((unsigned char *)&ExternControl, (unsigned char *)pRxData, sizeof(ExternControl)); |
ConfirmFrame = ExternControl.Frame; |
PcZugriff = 255; |
break; |
case 'c': // Poll the 3D-Data |
if(!Intervall3D) { if(pRxData[0]) Timer3D = SetDelay(pRxData[0] * 10);} |
Intervall3D = pRxData[0] * 10; |
break; |
case 'd': // Poll the debug data |
DebugDataIntervall = pRxData[0] * 10; |
if(DebugDataIntervall > 0) DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
PcZugriff = 255; |
RemoteKeys |= pRxData[0]; |
if(RemoteKeys) DisplayLine = 0; |
DebugDisplayAnforderung = 1; |
break; |
case 'l':// x-1 Displayzeilen |
PcZugriff = 255; |
MenuePunkt = pRxData[0]; |
DebugDisplayAnforderung1 = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// |
GetExternalControl = 1; |
break; |
} |
break; // default: |
} |
NeuerDatensatzEmpfangen = 0; |
pRxData = 0; |
RxDataLen = 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(DebugDataIntervall); |
Kompass_Timer = SetDelay(220); |
VersionInfo.SWMajor = VERSION_MAJOR; |
VersionInfo.SWMinor = VERSION_MINOR; |
VersionInfo.SWPatch = VERSION_PATCH; |
VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR; |
pRxData = 0; |
RxDataLen = 0; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20); |
DisplayLine++; |
if(DisplayLine >= 4) DisplayLine = 0; |
DebugDisplayAnforderung = 0; |
} |
if(DebugDisplayAnforderung1 && UebertragungAbgeschlossen) |
{ |
Menu(); |
SendOutData('L', FC_ADDRESS, 3, &MenuePunkt, sizeof(MenuePunkt), &MaxMenue, sizeof(MaxMenue), DisplayBuff, sizeof(DisplayBuff)); |
DebugDisplayAnforderung1 = 0; |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V', FC_ADDRESS, 1, (unsigned char *) &VersionInfo, sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
if(GetExternalControl && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse, 1, (unsigned char *) &ExternControl, sizeof(ExternControl)); |
GetExternalControl = 0; |
} |
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen) |
{ |
WinkelOut.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.UserParameter[0] = Parameter_UserParam1; |
WinkelOut.UserParameter[1] = Parameter_UserParam2; |
SendOutData('w', MK3MAG_ADDRESS, 1, (unsigned char *) &WinkelOut,sizeof(WinkelOut)); |
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt |
Kompass_Timer = SetDelay(99); |
} |
if(((DebugDataIntervall>0 && CheckDelay(Debug_Timer)) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
//if(Poti3 > 64) |
SendOutData('D', FC_ADDRESS, 1, (unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
if(DebugDataIntervall>0) Debug_Timer = SetDelay(DebugDataIntervall); |
} |
if(Intervall3D > 0 && CheckDelay(Timer3D) && UebertragungAbgeschlossen) |
{ |
Data3D.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[2] = (int) ((10 * ErsatzKompass) / GIER_GRAD_FAKTOR); |
SendOutData('C', FC_ADDRESS, 1, (unsigned char *) &Data3D,sizeof(Data3D)); |
Timer3D = SetDelay(Intervall3D); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A', FC_ADDRESS, 2, (unsigned char *)&DebugTextAnforderung, sizeof(DebugTextAnforderung),(unsigned char *) ANALOG_TEXT[DebugTextAnforderung], 16); |
DebugTextAnforderung = 255; |
} |
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz bestätigen |
{ |
SendOutData('B', FC_ADDRESS, 1, (uint8_t*)&ConfirmFrame, sizeof(ConfirmFrame)); |
ConfirmFrame = 0; |
} |
if(GetPPMChannelAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('P', FC_ADDRESS, 1, (unsigned char *) &PPM_in, sizeof(PPM_in)); |
GetPPMChannelAnforderung = 0; |
} |
} |
/tags/V0.76g/uart.h |
---|
0,0 → 1,136 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
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 volatile char PC_MotortestActive; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern unsigned char RemotePollDisplayLine; |
extern int Debug_Timer,Kompass_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 Uart1Init(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[16]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
signed int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_WinkelOut |
{ |
signed int Winkel[2]; |
unsigned char UserParameter[2]; |
unsigned char CalcState; |
unsigned char Orientation; |
}; |
extern struct str_WinkelOut WinkelOut; |
struct str_Data3D |
{ |
signed int Winkel[3]; // nick, roll, compass in 0,1° |
signed char reserve[8]; |
}; |
extern struct str_Data3D Data3D; |
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 SWMajor; |
unsigned char SWMinor; |
unsigned char ProtoMajor; |
unsigned char ProtoMinor; |
unsigned char SWPatch; |
unsigned char Reserved[5]; |
}; |
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 |
#if defined (__AVR_ATmega644P__) |
# 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 |
/tags/V0.76g/version.txt |
---|
0,0 → 1,342 |
------- |
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.69e H.Buss 05.05.2008 |
- kleinere Bugs beseitigt |
- Schneller Sinkflug jetzt möglich |
- Min- und Maxgas in den Settings geändert |
- Lagewinkel wird jetzt in 0,1 Grad an Kompass und Navi gesendet |
- Kalibrierung für MK3Mag -> Nick unten beim Kalibrieren |
- Kompassroutine um den Ersatzkompass (Gyro unterstützt Kompasswert) erweitert |
V0.69h H.Buss 21.05.2008 |
- STICK_GAIN = 4 eingeführt. Das erhöht die Auflösung der Sollwerte. Stick_P und Stick_I müssen nun um Faktor 4 erhöht werden |
- SenderOkay auch an das Naviboard übertragen |
- Bessere Parameter bei Senderausfall |
V0.69j H.Buss 30.05.2008 |
- Höhere Präzision der Achsenkopplung |
V0.69k H.Buss 31.05.2008 |
- Bug in SPI.C behoben |
- in 0.69h war ein Bug, der zu ungewollten Loopings führen konnte |
V0.69L H.Buss 14.06.2008 |
- feinere Cam-Servo-Auflösung |
V0.70a H.Buss 01.07.2008 |
- Unterstützung der V1.3-Hardware mit automatischem Hardware-Gyro-Abgleich |
V0.70b H.Buss 14.07.2008 |
- flexible Einstellungsmöglichkeit von J16 und J17 (Transistorausgänge) |
- eigene Parameter für GPS-Naviboard |
- eigener Parameter für ExternalControl (war vorher UserParameter1 bzw. 8) |
- neue Parameter im EEPROM-Datensatz: J16Bitmask, J16Timing, ExternalControl, Navi... |
- MikroKopterFlags eingeführt, damit das Navi den Status des MKs kennt |
- KopterTool-Kompatibilität auf 8 erhöht |
V0.70c H.Buss 30.07.2008 |
- Parameter der Datenfusion leicht modifiziert |
- EEPROM-Parameter für Looping-Umschlag angepasst (von 100 auf 85) |
- MaxStick wird auf 100 begrenzt |
V0.70d H.Buss 02.08.2008 |
- Transistorausgänge: das oberste Bit der Blinkmaske (im KopterTool linkes Bit) gibt nun den Zustand des Ausgangs im Schalterbetrieb an |
0.71b: H.Buss 19.10.2008 |
Kommunikation zum Navi erweitert: |
- Beeptime jetzt 32Bit |
- Datenfusion und Driftkopensation wird durch NaviBoard unterstützt |
0.71c: H.Buss 20.10.2008 |
- LoopConfig heisst jetzt BitConfig |
- 3-Fach-Schalter für Höhensteuerung möglich -> kann man mit GPS-Schalter zusammenlegen |
- bei den Settings wurde Setting[0] mit abgespeichert, welches es nicht gab. |
- in Zukunft werden bei neuen EEPROM-Settings die Kanäle von Setting 1 übernommen |
- Variablen NaviWindCorrection, NaviSpeedCompensation, NaviOperatingRadius eingeführt |
0.71f: H.Buss 15.11.2008 |
- Ausschalten der Höhenregelung per Schalter um 0,3 sek verzögert |
- bei der seriellen Übertragung hat die FC jetzt als SlaveAdresse die 1 |
- VersionInfo.NaviKompatibel eingeführt |
- wenn manuell gegiert wird, wird der GyroKompass-Wert auf den Kompasswert gesetzt |
- Luftdruckwert wird an das Navi übertragen |
- Der Baro-Offset wird jetzt nachgeführt, um den Messbereich zu erweitern. Geht nur bei Höhenregler mit Schalter |
- Debugdaten können jetzt mit 'f' gepollt werden |
0.71g: Gregor 09.12.2008 |
- Kommunikation überarbeitet |
Infos hier: http://www.mikrokopter.de/ucwiki/en/SerialCommands |
0.71h: H.Buss 15.12.2008 |
- Freigegebene Version |
- NaviAngleLimitation als Parameter zum Navi implementiert |
- Antwort auf CMD: 't' entfernt |
0.72d: H.Buss 22.01.2009 |
- OCTO als Compilerschalter |
- Unterstützung der FC 2.0 (ME) |
- GYRO_D eingeführt |
- Achsenkopplung jetzt auch auf Nick/Roll-Bewegung |
0.72e: H.Buss 27.01.2009 |
- die 0.72d hatte kein Integral im Gier |
- Parameter eingeführt: |
EE_Parameter.NaviGpsPLimit |
EE_Parameter.NaviGpsILimit |
EE_Parameter.NaviGpsDLimit |
EE_Parameter.NaviPH_LoginTime |
EE_Parameter.AchsKopplung2 |
EE_Parameter.CouplingYawCorrection |
0.72f: H.Buss 28.01.2009 |
- Bug im Ersatzkompass entfernt |
0.72h: H.Buss 05.02.2009 |
- Algorithmen beschleunigt -> Floats durch Fixkomma ersetzt |
- Achsentkopplung weiter verbessert |
- Nick- und Roll im Octo-Mischer auf jeweils vier Motoren aufgeteilt |
0.72i: H.Buss 07.02.2009 |
- Abtastrate von 1kHz auf 2kHz erhöht |
0.72j: H.Buss 09.02.2009 |
- neue Implementierung der Servoausgänge |
0.72k: H.Buss 10.02.2009 |
- Abtastrate auf 5kHz erhöht |
0.72L: H.Buss 13.02.2009 |
- Signalfilterung überarbeitet |
- OCTO2 implementiert |
0.72M: H.Buss 13.02.2009 |
- Code Cleanup |
0.72o: H.Buss 24.02.2009 |
- Abtastrate auf 2kHz |
- HW-Version an Navi |
- neuer Datensatz 'c' -> Lagedaten für 3D-Grafik |
- Auswerteroutine für Spectrum-Satteliten implementiert |
- Kanalsettings werden beim Parameterreset nicht mehr gelöscht |
- die Driftkompensation wird jetzt feiner aufgelöst --> EE_Parameter.Driftkomp muss mal 8 genommen werden |
- die Integrale und ACC-Werte werden jetzt im Scope in ca. 0,1° angezeigt (wie beim NaviBrd) |
0.72p: H.Buss 01.03.2009 |
- Octo3 erstellt |
- Analogwerte umbenannt |
0.73a-d: H.Buss 05.04.2009 |
- MixerTabelle implementiert |
- I2C-Bus auf bis zu 12 Motoren erweitert |
- die Busfehler der BL-Regler werden im Menü angezeigt |
- Revision der MixerTabelle eingeführt |
- MixerTabelle wird bei Parameterreset neu initialisiert |
- Motortest auf [12] erweitert |
- Motorschalter nicht mehr 3-Stufig |
0.74a |
- Datenfusion im Flug auch, wenn ACC-Z < 512 |
- Wert für die Luftdruck-Messbereichserweiterung abgefangen |
0.74d |
- Die Driftkompensation ist jetzt dreistufig -> 0,5% pro sekunde zusätzlich eingeführts |
0.75a G.Stobrawa 22.5.2009 |
- Extern Control also received from NC via SPI |
0.75b H.Buss 27.05.2009 |
- Spektrum-Singale schalten den PPM-Eingang aus |
- max. 2 Sekunden nach dem Start auf die BL-Regler warten |
- Automatische Zellenerkennung, wenn Spannungswarnung < 5,0V |
- Bei automatischer Zellenerkennung piept es je nach Zellenzahl |
- EE_DATENREVISION auf 76 erhöht |
- Servo: |
- Roll-Servo für FC ME implementiert |
- Update-Cmd stoppt Servos |
- Servos werden erst nach dem ersten Kalibrieren aktiviert |
0.75c G.Stobrawa 25.7.2009 |
- Übertragung der Servo-Settings zur NC |
- RSSI wird an NC gesendet, derzeit wird der Wert nicht gesetzt |
- Bugfix Messbereichsumschaltung des Luftdrucksensors springt |
- Auflösung des Luftdrucks nun bis auf 1 cm (5mal feiner) zur genaueren Berechnung des D-Anteils |
- Unterstützung von Warnings-Bitmasks für die J16, J17-Outputs bei Unterspannung |
- Unterspannung für einzelne Zelle´n von 3.2V auf 3.3V angehoben (9.6V --> 9.9V für 3S) |
0.75d H.Buss 13.8.2009 |
- RC-Routine: Empfangsausfall soll sicherer erkannt werden |
- Zellenerkennung nun auch beim Speichern der Settings |
- Warnungs-Blinkmaske auch bei Empfangsausfall |
0.75e H.Buss 18.8.2009 |
- LED-Blinken kann an die Motoren gekoppelt werden |
- Feinabstimmung des Höhenreglers |
0.75f H.Buss 27.8.2009 |
- D-Anteil des Höhenreglers jetzt mit Quadratischer Komponente |
- Lagewinkel wirkt jetzt mit 1/Cos(x) mit in den Höhenregler |
- leichte Modifikation der RC-Empfangroutine |
0.75g H.Buss 31.08.2009 |
- die Akkuspannung geht jetzt antiproportional ins Gas ein |
0.75h H.Buss 3.09.2009 |
- im Höhenregler werden jetzt die Stellwerte begrenzt --> max +- 16% vom geschätzten Schwebegas |
0.75i H.Buss 7.09.2009 |
- GpsZ vom Navi zur FC für den Höhenregler |
- "hoovergas-Variation" als Parameter |
- Kompatibilität zu NC und PC erhöht |
0.75j H.Buss 17.09.2009 |
- Laufzeitzähler eingebaut |
0.75k H.Buss 22.09.2009 |
- zweite Variante (Gregor) der Höhenregelung implementiert |
- umschaltbare RC-Routine |
0.75L H.Buss 23.09.2009 |
- SollHoehe und Gas geht nun auch an die NC |
0.75M H.Buss 29.09.2009 |
- Spektrum-Timing wird nun überwacht |
- die FC kann nun stand-Alone als Kamera-Stabilizer eingesetzt werden, weil die Servos aktiviert werden, wenn I2C fehlt |
0.75N H.Buss 29.09.2009 |
- Hoover-Stickpunkt wird bei aktivem Höhenregler nicht nachgeführt |
- Hoover-Stickpunkt kann per Parameter fest eingestellt werden |
- Baro-Messbereichserweiterung auch bei aktiviertem Höhenregler |
- Gyro_Gier_P und Gyro_Gier_I eingeführt |
- I2C_fehler-Zähler jetzt in den Analogdaten |
0.75o H.Buss 01.10.2009 |
- der Höhenregler wird jetzt nur alle 10ms bearbeitet |
- Baro-Messbereichserweiterung auch bei Poti als Sollwert |
0.76d H.Buss 10.10.2009 |
- bei aktiver Messbereichserweiterung wird die aktuelle Höhe übernommen |
0.76e H.Buss 27.10.2009 |
- es werden beim Start einmal alle BL-Regler angesprochen, damit BL-Regler#8 auch einen Selbsttest macht |
- S3D-ACT-Summensignal als Compilerschalter |
0.76f H.Buss 05.11.2009 |
- untere Spannungsgrenze der Unterspannungswarnung (9,3V) entfernt |
0.76g H.Buss 10.11.2009 |
- Casting-Fehler in der Gas-Berechnung |
/tags/V0.76g |
---|
Property changes: |
Added: tsvn:logminsize |
+8 |
\ No newline at end of property |