/tags/V0.78b/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.78b/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.78b/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.78b/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.78b/Hex-Files/Flight-Ctrl_MEGA644_V0_78b.hex |
---|
0,0 → 1,3619 |
:100000000C94A0060C94BB060C94BB060C94BB0687 |
:100010000C94BB060C94BB060C94BB060C94BB065C |
:100020000C94BB060C9470170C94BB060C94BB0686 |
:100030000C94682C0C94BB060C94BB060C94BB0669 |
:100040000C94BB060C94BB060C9405160C94BB06D2 |
:100050000C947D0D0C94BB060C94470D0C94BB06C0 |
:100060000C946A1C0C94BB060C94232B0C94BB06BA |
:100070000C9496690C94BB060C94B067951C9A1C62 |
:100080009F1CA81CBF1CD61CE61CF61C131D6D1F54 |
:10009000D61C2F1E401E6F1E8D1EAA1E041F5F1F22 |
:1000A0003D21B6217222E9225223F523002667263C |
:1000B000E1262B277627C32710286A28D7287129FD |
:1000C0006B2A462B782B872BB22BE42BF42B342C6A |
:1000D000342C212C0C2C0E2C282C162C212C112CE1 |
:1000E000132C282C162C212C232C252C282C2C2CA2 |
:1000F0000A0D426174743A0020332043656C6C73BE |
:1001000020200020342043656C6C73202000204C9C |
:100110006F77207761726E696E67206C6576656CAB |
:100120003A2025642E2564000A0D47656E657261CC |
:1001300074696E672064656661756C74204D6978BA |
:100140006572205461626C65000A0D4D69786572B4 |
:100150002D436F6E6669673A20272573272028256F |
:1001600075204D6F746F727329000A0D466F756E9E |
:100170006420424C2D4374726C3A200025642000A8 |
:100180000A0D0A0D2121204D495353494E47204263 |
:100190004C2D4354524C3A202564202121000A0D55 |
:1001A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7F |
:1001B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D6F |
:1001C0003D3D3D000A0D496E69742E204545505253 |
:1001D0004F4D003A2047656E65726174696E672005 |
:1001E00044656661756C742D506172616D657465EE |
:1001F00072207573696E67206F6C64205374696335 |
:100200006B2053657474696E6773000A0D466C69E0 |
:100210006768742D74696D65202575206D696E2081 |
:1002200020546F74616C3A2575206D696E000A0D5B |
:10023000414343206E6F742063616C696272617424 |
:1002400065642021000A0D5573696E672070617224 |
:10025000616D65746572736574202564000A0D43D1 |
:10026000616C6962726174696E6720707265737324 |
:100270007572652073656E736F722E2E004F4B0A78 |
:100280000D000A0D436F6E74726F6C3A2000486562 |
:100290006164696E67486F6C64004E6F726D616C6B |
:1002A00020284143432D4D6F646529000A0D3D3DD3 |
:1002B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D6E |
:1002C0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D5E |
:1002D0003D0A0D00416E676C654E69636B202020FE |
:1002E00020202020416E676C65526F6C6C202020AE |
:1002F000202020204163634E69636B202020202052 |
:1003000020202020416363526F6C6C20202020202D |
:10031000202020205961774779726F2020202020EB |
:10032000202020204865696768742056616C7565D7 |
:10033000202020204163635A2020202020202020DC |
:1003400020202020476173202020202020202020F2 |
:1003500020202020436F6D706173732056616C758F |
:1003600065202020566F6C74616765205B302E31EC |
:10037000565D20205265636569766572204C65760E |
:10038000656C20204779726F20436F6D70617373C5 |
:10039000202020204D6F746F7220312020202020DB |
:1003A000202020204D6F746F7220322020202020CA |
:1003B000202020204D6F746F7220332020202020B9 |
:1003C000202020204D6F746F7220342020202020A8 |
:1003D000202020202020202020202020202020201D |
:1003E000202020202020202020202020202020200D |
:1003F00020202020566172696F4D6574657220203F |
:10040000202020204D4B334D61672043616C537495 |
:1004100061746520536572766F2020202020202093 |
:1004200020202020486F766572676173202020208D |
:100430002020202043757272656E74205B302E314F |
:10044000415D20204361706163697479205B6D4177 |
:10045000685D202020202020202020202020202017 |
:10046000202020202020202020202020202020208C |
:10047000202020202020202020202020202020207C |
:10048000202020202020202020202020202020206C |
:10049000202020204932432D4572726F7220202087 |
:1004A000202020202020202020202020202020204C |
:1004B000202020204750535F4E69636B202020206E |
:1004C000202020204750535F526F6C6C202020204A |
:1004D0002020202021212120494E434F4D504154BE |
:1004E00049424C4520212121002E000A0D20444183 |
:1004F00043206F7220493243204552524F522120EF |
:10050000436865636B204932432C2033567265661D |
:100510002C2044414320616E6420424C2D43747270 |
:100520006C005B25695D005B25695D002B204D69D2 |
:100530006B726F4B6F70746572202B0048573A5680 |
:1005400025642E25642053573A25642E256425639F |
:100550000053657474696E673A25642025730049F9 |
:100560003243204552524F52212121004D6973736D |
:10057000696E6720424C2D4374726C3A25642121C8 |
:10058000004865696768743A20202535690053651D |
:1005900074706F696E743A253569005072657373B3 |
:1005A0007572653A253569004F66667365743A2041 |
:1005B000202535690048656967687420636F6E742B |
:1005C000726F6C0044495341424C45440048656990 |
:1005D00067687420636F6E74726F6C004449534196 |
:1005E000424C4544006163742E2062656172696EFD |
:1005F00067004E69636B3A20202020202025356952 |
:1006000000526F6C6C3A2020202020202535690094 |
:10061000436F6D706173733A202020253569004B5C |
:10062000313A25346920204B323A25346920004B79 |
:10063000333A25346920204B343A25346920004B65 |
:10064000353A25346920204B363A25346920004B51 |
:10065000373A25346920204B383A25346920004E3A |
:10066000693A2534692020526F3A253469200047C1 |
:10067000733A253469202047693A253469200050AF |
:10068000313A253469202050323A2534692000500F |
:10069000333A253469202050343A25346920004704 |
:1006A00079726F202D2053656E736F72004E6963EF |
:1006B0006B25346920282533692E25692900526F5E |
:1006C0006C6C25346920282533692E25692900475B |
:1006D000696572253469202825336929004E6963CC |
:1006E0006B2025346920282533692E25782900526E |
:1006F0006F6C6C2025346920282533692E257829D4 |
:100700000059617720202534692028253369290084 |
:100710004E69636B202534692028253369292825F3 |
:1007200033692900526F6C6C2025346920282533E9 |
:1007300069292825336929005961772020253469E2 |
:10074000202825336929282533692900414343207E |
:100750002D2053656E736F72004E69636B202534D4 |
:100760006920282533692900526F6C6C2025346973 |
:10077000202825336929005A20202020253469208B |
:10078000282533692900566F6C746167653A20200B |
:10079000202533692E253169560043757272656EC6 |
:1007A000743A2020202533692E2531694100506F8D |
:1007B0007765723A2020202020253469570044694B |
:1007C000736368617267653A202535696D41680019 |
:1007D00052656365697665720052432D52535349E1 |
:1007E0003A202020202534690052432D5175616C38 |
:1007F0006974793A202534690052432D4368616E4B |
:100800006E656C733A25346900436F6D7061737364 |
:100810000048656164696E673A2020253569005695 |
:10082000616C75653A20202020253569005374617C |
:1008300072743A2020202025356900506F74693188 |
:100840003A202025336900506F7469323A20202500 |
:10085000336900506F7469333A20202533690050A2 |
:100860006F7469343A202025336900506F746935FC |
:100870003A202025336900506F7469363A202025CC |
:10088000336900506F7469373A202025336900506E |
:100890006F7469383A202025336900536572766F8A |
:1008A000202000536574706F696E742020253369B1 |
:1008B00000506F736974696F6E3A20253369005276 |
:1008C000616E67653A2533692D2533690045787473 |
:1008D00065726E436F6E74726F6C2020004E693AC1 |
:1008E0002534692020526F3A253469200047733A35 |
:1008F000253469202047693A253469200048693A3F |
:10090000253469202043663A2534692000424C2D65 |
:100910004374726C204572726F72732000253364C9 |
:1009200020253364202533642025336420002533BB |
:10093000642025336420253364202533642000257A |
:10094000336420253364202533642025336420005C |
:10095000424C2D4374726C20666F756E64200020CB |
:1009600025632020202563202020256320202025AA |
:10097000632000202563202020256320202025637C |
:10098000202020256320002025632020202D2020EA |
:10099000202D2020202D2000313000313100313237 |
:1009A00000466C696768742D54696D652020005499 |
:1009B0006F74616C3A2535756D696E004163743AE8 |
:1009C00020202535756D696E002872657365742960 |
:1009D000000A0D506C6561736520636F6E6E656310 |
:1009E00074205370656B7472756D207265636569F0 |
:1009F00076657220666F722062696E64696E672028 |
:100A00004E4F572E2E2E006F6B2E0A0D0054696D1F |
:100A1000656F75742E0A0D0000008F001E01AD0178 |
:100A20003B02CA025803E603740402058F051B0645 |
:100A3000A7063307BE074808D2085B09E3096B0A1B |
:100A4000F20A780BFD0B810C040D860D070E870E44 |
:100A5000060F840F00107B10F5106E11E5115B126C |
:100A6000CF124213B31323149214FE146A15D31534 |
:100A70003B16A11605176717C81727188318DE1825 |
:100A800037198E19E319361A871AD61A231B6E1BCB |
:100A9000B61BFD1B411C831CC31C001D3C1D751D8A |
:100AA000AB1DE01D121E421E6F1E9A1EC31EE91EC4 |
:100AB0000D1F2E1F4D1F691F841F9B1FB01FC31FBB |
:100AC000D31FE11FEC1FF51FFB1FFF1F00200301B9 |
:100AD0000000876300020101476401030202B6645B |
:100AE0000200030313652532692E2531695600255E |
:100AF0003033646D20253033642563005374617492 |
:100B000075730025346920202532693A2530326911 |
:100B1000002534696D004E69636B20526F6C6C2048 |
:100B200020596177002534692025346920253469EE |
:100B3000002532692E2531695620202533692E255E |
:100B40003169410025346957202536696D416800B7 |
:100B50005361743A25303264004E6F466978003232 |
:100B600044466978003344466978003F3F466978D7 |
:100B7000002F4447505300486F6D653A2530336469 |
:100B80006D20253033642563004E6F204E617669F9 |
:100B90004374726C21000A0D7777772E4D696B7262 |
:100BA0006F4B6F707465722E64652028632920482E |
:100BB0006953797374656D7320476D6248000A0D3F |
:100BC00074686520757365206F662074686973208A |
:100BD000736F667477617265206973206F6E6C79CC |
:100BE000207065726D6974746564200A0D6F6E20E3 |
:100BF0006F726967696E616C204D696B726F4B6FC4 |
:100C0000707465722D48617264776172650041434A |
:100C1000542044534C004A65746920736174656CB8 |
:100C20006C6974005370656B7472756D20736174B8 |
:100C3000656C6C697420284C6F77207265736F6CDB |
:100C40007574696F6E29005370656B7472756D20D1 |
:100C5000736174656C6C69742028323034382900F3 |
:100C60005370656B7472756D20736174656C6C691B |
:100C700074004D756C74697369676E616C205050B7 |
:100C80004D000A0D52656365697665723A200075FC |
:100C90006E6B6E6F776E2E205573696E67205050A5 |
:100CA0004D2E2E2E006E6F7420737570706F7274DF |
:100CB00065642062792068617264776172652100E1 |
:100CC0000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB7 |
:100CD0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D44 |
:100CE0003D3D3D3D3D000A0D466C69676874436FAC |
:100CF0006E74726F6C0A0D48617264776172653A46 |
:100D000025642E25640A0D536F6674776172653A07 |
:100D10005625642E2564256320000A0D3D3D3D3D8A |
:100D20003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DF3 |
:100D30003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0020 |
:100D400011241FBECFEFD0E1DEBFCDBF11E0A0E088 |
:100D5000B1E0E6E4F1EE02C005900D92A03DB107CE |
:100D6000D9F718E0A0EDB1E001C01D92A233B107A0 |
:100D7000E1F70C94E7070C940000282FFB01815049 |
:100D8000853008F023E0842F992733272150304005 |
:100D9000829FD001839FB00D929FB00D1124AC595A |
:100DA000BF4F019724F00E9485700192FACF0E94F4 |
:100DB000D15F0895863010F085E002C0882329F0C5 |
:100DC000A2E0B0E0082E0E9492700895582F86305D |
:100DD00010F055E002C0882339F1842F9927252F80 |
:100DE000332721503040829FD001839FB00D929FC6 |
:100DF000B00D1124AC59BF4FFB01019724F00190B5 |
:100E00000E949270FACFA2E6B0E0042E0E94927087 |
:100E1000A0E5B0E08CE0FB01182E0E949E70852FAB |
:100E20000E94DA060E94D15F0895CF93A2E0B0E05D |
:100E30000E948570802DC82F8150853020F0C3E03E |
:100E40008C2F0E94DA068C2F9927CF9108958091DC |
:100E5000C206E82FFF27EE0FFF1FED5AF94F8081E2 |
:100E600091818D5E9F4F14F01092030180819181DA |
:100E70008A5B9F4FCCF4809103018823A9F481E021 |
:100E80008093030180917F048F5F80937F0485307E |
:100E900038F088EE93E09093FF018093FE0104C048 |
:100EA00066E970E00E946C3180917F0499279093ED |
:100EB000F9058093F80508951F93CF93DF93182FBA |
:100EC000882389F080EF90E09F938F9387E293E1EE |
:100ED0009F938F93E091FE03F091FF0309950F908C |
:100EE0000F900F900F908091E406823308F046C077 |
:100EF00084EF91E00E94F016EC01112329F0CE015D |
:100F00000E94F9168823D9F380912501909126013A |
:100F10002091E4068238910584F433E0239FC001D8 |
:100F2000112480930001112359F168EC70E0832FA4 |
:100F30000E946C3188EF90E011C0822F9927880FB2 |
:100F4000991F880F991F809300011123C9F068EC45 |
:100F500070E084E00E946C3183E091E09F938F9376 |
:100F600087E293E19F938F93E091FE03F091FF035B |
:100F700009950F900F900F900F9002C08093000181 |
:100F8000112309F1809100016AE00E94D86F892F36 |
:100F900099279F938F93809100010E94D86F992782 |
:100FA0009F938F938EE091E09F938F9387E293E1DD |
:100FB0009F938F93E091FE03F091FF0309958DB706 |
:100FC0009EB708968DBFDF91CF911F910895CFEF07 |
:100FD000D0E1DEBFCDBF6624772410E014B915B987 |
:100FE00087EEC82E83E0D82E8EEC9FEFC80ED91E58 |
:100FF000D7FEFACF189B06C0199B02C08DE007C030 |
:101000008BE005C0199B02C084E101C08AE0809397 |
:10101000020181E887B93E9A8FEF88B98BE184B9E4 |
:1010200081E085B98EE38AB987E48BB9469A84B7A3 |
:10103000877F84BF809160008861809360001092F8 |
:10104000600080ED97E09093FF018093FE01109285 |
:10105000E9021092E8021092580610925706109278 |
:10106000EB021092EA021092ED021092EC02209133 |
:101070000201243128F088E894E0A0E0B0E004C048 |
:101080008BE095E0A0E0B0E08093790190937A0145 |
:10109000A0937B01B0937C012A3011F0243111F42C |
:1010A000289801C0289A0E9459170E942A170E9466 |
:1010B0002F130E944C2C0E94381B0E94E22A0E948F |
:1010C000DC5B0E9413660E94D368809102018C3021 |
:1010D00010F4299A01C0299878944DE062EC76E0EA |
:1010E00083E00E94BD06C8EED3E0DE010E94857059 |
:1010F000802D8130D9F4DE01A75EB3400E94857057 |
:10110000802D8F3F99F0E0E0F4E08DE4DE01182EB1 |
:101110000E948D70EDE0F4E09FE080813496181617 |
:101120000CF41F5F915097FFF8CF51C088E291E017 |
:101130009F938F9387E293E19F938F93E091FE03B8 |
:10114000F091FF0309950F900F900F900F9020E002 |
:1011500034E0F9018FE0158616861786108A8150D3 |
:10116000349687FFF8CF80E480930D0480930E04BB |
:1011700010920F04809310048093110490EC9093CC |
:101180001204109213048093140480931504109297 |
:1011900016049093170490931804809319041092E6 |
:1011A0001A0480931B0490931C0481E08093000434 |
:1011B0008BE0A4E0B1E0E1E0F4E00D9001928A95CB |
:1011C000E1F78DE4DE01F901182E0E949E70812F57 |
:1011D00099279F938F9381E094E09F938F9389E465 |
:1011E00091E09F938F9307E2A02E03E1B02EBF9270 |
:1011F000AF92E091FE03F091FF0309958DB79EB782 |
:1012000008968DBF8AE691E09F938F93BF92AF922D |
:10121000E091FE03F091FF030995109248021092AD |
:1012200002020E94273D0F900F900F900F90809127 |
:1012300002028823E1F31092480280ED97E00E94B9 |
:10124000F0166C01C0E0D0E013E2E12E16E0F12EC2 |
:101250008E01109202020E94273D80910202882393 |
:10126000E1F3F801E050FC4F85851816ACF408C096 |
:10127000909302020E94273D809102028823E1F3AD |
:10128000C6010E94F916982F882331F4F801EE5D0B |
:10129000F94F8181882364F7F701808187FF13C0AC |
:1012A0002196DF93CF9321978CE791E09F938F93C3 |
:1012B000BF92AF92E091FE03F091FF0309958DB7C5 |
:1012C0009EB706968DBF21960C5F1F4FE4E0F0E0BD |
:1012D000EE0EFF1ECC30D10508F4BBCFC0E0D0E04D |
:1012E00002E216E0BDE0EB2EB4E0FB2EF8018181B6 |
:1012F00087FD1CC0F70180811816C4F42196DF9386 |
:10130000CF93219780E891E09F938F9387E293E1B9 |
:101310009F938F93E091FE03F091FF03099581E085 |
:101320008093FC018DB79EB706968DBFF801818131 |
:1013300080788183219684E090E0E80EF91E080F02 |
:10134000191FCC30D10590F28EE991E09F938F93D5 |
:10135000A7E2EA2EA3E1FA2EFF92EF92E091FE03BC |
:10136000F091FF0309950E94273D0F900F900F9079 |
:101370000F9001E010E0D8010E948570802D823529 |
:1013800009F4DAC00E94E22E84EC91E09F938F93DF |
:10139000FF92EF92E091FE03F091FF030995C1E007 |
:1013A0000F900F900F900F90C23039F0C33019F4A6 |
:1013B0000E94883004C0C43010F00E94B62F809183 |
:1013C0000201843168F085E08093E1061092020703 |
:1013D0008BE18093DD068EE48093FF068093000707 |
:1013E000A0E5B0E0AD010E948570802D8C3008F042 |
:1013F0008FC0DA011196FD010E948570802D8C301E |
:1014000008F086C0DA011296BD010E948570802D19 |
:101410008C3008F07DC0DA0113969D010E94857022 |
:10142000802D8C3008F074C0DA010E948570802D08 |
:101430008093C206DF010E948570802D8093C306D1 |
:10144000DB010E948570802D8093C406D9010E9423 |
:101450008570802D8093C506DA0114960E948570F0 |
:10146000802D8093C606DA0115960E948570802D26 |
:101470008093C706DA0116960E948570802D8093AE |
:10148000C806DA0117960E948570802D8093C906E0 |
:10149000DA0118969D010E948570802D8F3FD1F052 |
:1014A000D9010E948570802D8093CA06DA011996B1 |
:1014B0000E948570802D8093CB06DA011A960E94D7 |
:1014C0008570802D8093CC06DA011B960E94857072 |
:1014D000802D0AC089E08093CA068AE08093CB06FB |
:1014E0008BE08093CC068CE08093CD06C13091F4E4 |
:1014F00083ED91E09F938F93FF92EF92E091FE0333 |
:10150000F091FF0309950F900F900F900F9002C07C |
:101510000E94BD2E4CE662EC76E08C2F0E94E6061F |
:10152000CF5FC63008F440CF83E00E94DA0682E540 |
:10153000D801082E0E9492700EE010E0D8010E949F |
:101540008570802D9927582F442748010894811CC5 |
:10155000911CD4010E948570802D480F511D50931D |
:10156000D5014093D401ECEFAE2EEFEFBE2EA00ECE |
:10157000B11ED5010E948570802D9927982F88274C |
:101580006DEFE62E6FEFF62EE00EF11ED7010E94F2 |
:101590008570202D820F911D9093D3018093D201ED |
:1015A0008F5F9F4F19F04F5F5F4F41F41092D5014D |
:1015B0001092D4011092D3011092D2018091D201E5 |
:1015C0009091D3019F938F938091D4019091D501F5 |
:1015D0009F938F938BE092E09F938F93C7E2D3E129 |
:1015E000DF93CF93E091FE03F091FF0309958DB750 |
:1015F0009EB708968DBFA4E0B0E00E948570802D54 |
:10160000853078F08EE292E09F938F93DF93CF93B3 |
:10161000E091FE03F091FF0309950F900F900F905A |
:101620000F900E9415074CE662EC76E00E94BD0622 |
:101630000E94150799279F938F9385E492E09F93CB |
:101640008F93DF93CF93E091FE03F091FF03099511 |
:10165000EDB7FEB73696EDBF8DE592E09F938F9381 |
:10166000DF93CF93E091FE03F091FF03099588EE9D |
:1016700093E00E94F0166C010E943E1B0F900F90A9 |
:101680000F900F90C6010E94F9168823D9F38DE7B9 |
:1016900092E09F938F93DF93CF93E091FE03F091BD |
:1016A000FF0309950E94D83A809102010F900F9094 |
:1016B0000F900F908A3011F0843111F4289801C0F6 |
:1016C000289A80ED97E09093FF018093FE0185E5D5 |
:1016D0008093810482E892E09F938F93DF93CF936E |
:1016E000E091FE03F091FF0309958091CE060F90E3 |
:1016F0000F900F900F90E091FE03F091FF0382FF97 |
:1017000007C08EE892E09F938F93DF93CF9308C03A |
:101710008AE992E09F938F9387E293E19F938F935F |
:1017200009950F900F900F900F900E94B42088E8B9 |
:1017300093E19093A00180939F0181E080938004C6 |
:101740000E945C070E942A688CEA92E09F938F9324 |
:10175000DF93CF93E091FE03F091FF03099580EDB5 |
:1017600097E00E94F0166C018AEF90E00E94F0165C |
:10177000EC010F900F900F900F90CE010E94F91680 |
:10178000882339F084E690E00E94F016EC010E9474 |
:10179000856980910202882309F471C18091170143 |
:1017A000882309F46CC11092020280917F0488237F |
:1017B00019F00E94270702C00E94783F0E94273D2F |
:1017C000209102012A3011F0243111F4289801C02F |
:1017D000289A8091EF02882331F08091EF028150A6 |
:1017E0008093EF0205C080916F00806280936F004C |
:1017F00080919F019091A00101979093A001809307 |
:101800009F0180919F019091A001892B21F08091EF |
:1018100047028823A1F180919F019091A001892B1B |
:10182000B1F40E94F82A85E090E09093A0018093A3 |
:101830009F0180910A0690910B06019690930B06EA |
:1018400080930A068091BE0280688093BE028091D8 |
:101850001001909111018F5F9F4F19F58091E50262 |
:101860008823F9F080E197E29093FF018093FE01D5 |
:1018700080E890E0909311018093100112C02A300B |
:1018800011F0243111F4289801C0289A8091FE01AA |
:101890009091FF01892B29F48091BE028F7780936C |
:1018A000BE0280910202882321F08091E502882304 |
:1018B00011F40E946A130E94BB0FC6010E94F91620 |
:1018C000882309F4D8C084E190E0C80ED91E809125 |
:1018D0000D01882321F0815080930D0125C0809354 |
:1018E0008B041092CA021092C9021092C802109280 |
:1018F000C7021092C6021092C50280911001909109 |
:1019000011018F5F9F4F81F48091EF02882361F472 |
:1019100088E99AE39093FF018093FE0180E09CE0C8 |
:1019200090931101809310018091D403882339F0A2 |
:1019300081508093D4038091BE028F7B11C010929E |
:10194000D2031092D1031092D0031092CF03809152 |
:10195000FE019091FF01892B29F48091BE028064E1 |
:101960008093BE0280910001282F332780912501AA |
:101970009091260182179307CCF48091BE02806279 |
:101980008093BE0280911001909111018F5F9F4F53 |
:10199000C1F480E797E19093FF018093FE0180E01E |
:1019A00093E090931101809310010BC08091FE0190 |
:1019B0009091FF01892B29F48091BE028F7D809345 |
:1019C000BE020E94055F84E08093FD018091E502E4 |
:1019D000882329F45AEA652E55E0752E12C08091AD |
:1019E000D6018F5F8093D601813359F41092D601CE |
:1019F0008091D0019091D10101969093D101809373 |
:101A0000D0010894611C711C22E762162BE072065B |
:101A100091F5662477242091D4013091D5012F5F70 |
:101A20003F4F3093D5012093D4018091D201909102 |
:101A3000D30101969093D3018093D201832F9927EC |
:101A4000D801082E0E9492708091D401D401082EF2 |
:101A50000E9492708091D301D501082E0E9492704D |
:101A60008091D201D701082E0E94927084E190E00B |
:101A70000E94F0166C010E94E05F0E94286680912F |
:101A8000FD01882309F079CE0E94465F76CE1F9231 |
:101A90000F920FB60F9211248F939F93EF93FF93A2 |
:101AA00080910F018823E1F48091F0019091F10180 |
:101AB00001969093F1018093F001FC01E05DFA4FF3 |
:101AC000E081ED3019F0803A910539F41092F1017E |
:101AD0001092F00181E080930F01E093C60004C0F2 |
:101AE0001092F1011092F001FF91EF919F918F916F |
:101AF0000F900FBE0F901F9018951F920F920FB668 |
:101B00000F9211242F933F934F935F936F937F9383 |
:101B10008F939F93AF93BF93CF93EF93FF9390E0F7 |
:101B20008091C6008093E8015091F601503A10F080 |
:101B30009093F7018091E8018D3009F065C08091A4 |
:101B4000F701823009F060C09093F701852F992743 |
:101B500082579B4FFC01329740812091F2013091D6 |
:101B6000F301241B3109DC0111978C91281B3109E9 |
:101B7000C9019F709093F3018093F20146E096951E |
:101B800087954A95E1F7982F935C9093F4012F7312 |
:101B90003070235C2093F5018081981729F48C9193 |
:101BA000281711F491E006C090E08091E5018F5F65 |
:101BB0008093E501C091E701CC2309F074C099231B |
:101BC00009F471C081E08093E701580F5093E4015C |
:101BD0005150E52FFF27E257FB4F8DE08083809126 |
:101BE0009004823509F05FC00E94B42088E190E043 |
:101BF0002CE00FB6F894A895809360000FBE209358 |
:101C00006000C093FC014FC02091F701822F9927FB |
:101C100081309105F9F0823091051CF4892B21F077 |
:101C200040C0029711F13DC08091E801833239F440 |
:101C30008091E701882319F481E08093F701809176 |
:101C4000E80180938E0481E08093F6018091E801A1 |
:101C5000992722C02F5F2093F701E52FFF27E25736 |
:101C6000FB4F8091E801808309C0E52FFF27E257F1 |
:101C7000FB4F8091E8018083503A20F45F5F5093DE |
:101C8000F60102C01092F7012091E8018091F20163 |
:101C90009091F301820F911D9093F3018093F201D3 |
:101CA00002C01092F701FF91EF91CF91BF91AF91D8 |
:101CB0009F918F917F916F915F914F913F912F9164 |
:101CC0000F900FBE0F901F901895AC01A0E0B0E0F0 |
:101CD0009D01A817B90748F4E0E3F5E08191280FCA |
:101CE000311D1196A417B507C8F33F70FD01E05DE3 |
:101CF000FA4FC90156E0969587955A95E1F7835CAE |
:101D000080831196FD01E05DFA4F2F733070822FB2 |
:101D1000835C8083AF5CBA4F8DE08C9310920F018F |
:101D2000809130058093C6000895A0E0B0E0EBE913 |
:101D3000FEE00C9451702C859D850E85BB2483E2BA |
:101D4000809330059F59909331052093320533E0FD |
:101D5000E32EF12C002309F49EC0CF84D888BE0165 |
:101D60006D5E7F4FA989BA890150109709F493C01D |
:101D70001097B9F0F601EB0DF11DB3949081119716 |
:101D800091F4002349F1FB016E5F7F4FDB01C080BE |
:101D9000D1806E5F7F4F0D90BC91A02DBB24015070 |
:101DA00002C090E019C01097B9F0F601EB0DF11DDB |
:101DB000B3944081119791F4002341F1FB016E5FD0 |
:101DC0007F4FDB01C080D1806E5F7F4F0D90BC9153 |
:101DD000A02DBB24015002C040E018C01097B1F004 |
:101DE000F601EB0DF11DB3941081119781F40023DE |
:101DF00071F0FB013296DB01CD90DC90BF016E5F8C |
:101E00007F4FA081B181BB24015001C010E0F701D8 |
:101E1000E05DFA4F892F86958695835C80830894D0 |
:101E2000E11CF11CF701E05DFA4F892F99278370BF |
:101E3000907024E0880F991F2A95E1F755279A01A1 |
:101E400094E0369527959A95E1F7822B835C808301 |
:101E50000894E11CF11CF701E05DFA4F4F705070DF |
:101E6000440F551F440F551F812F992726E0969543 |
:101E700087952A95E1F7842B835C80830894E11C85 |
:101E8000F11CF701E05DFA4F1F73135C1083089497 |
:101E9000E11CF11C6ACFC7010E94650EE9E00C94B9 |
:101EA0006D70A3E07A2F4091E4014650442309F479 |
:101EB00058C0E72FFF27E257FB4F80818D537F5F8C |
:101EC000E72FFF27E257FB4F20812D537F5FE72F3E |
:101ED000FF27E257FB4F30813D537F5FE72FFF27FE |
:101EE000E257FB4F60816D537F5F9927880F991FE1 |
:101EF000880F991F522F52955F70582B822F992768 |
:101F00008F709070F4E0880F991FFA95E1F7232FF6 |
:101F100026952695282B832F992783709070E6E0CD |
:101F2000880F991FEA95E1F7682B41504F3FC9F0A0 |
:101F3000EA2FFF27E257FB4F5083AF5F41504F3FDF |
:101F400081F0EA2FFF27E257FB4F2083AF5F41501C |
:101F50004F3F39F0EA2FFF27E257FB4F6083AF5F17 |
:101F6000A5CF81E994E09093E3018093E201A3502F |
:101F7000A093E1010895A2E0B0E0E1ECFFE00C9451 |
:101F800058708091E701882309F45DC30E94510FC6 |
:101F900080918F04823609F01FC2809190049927A6 |
:101FA0008037910509F4ACC081379105A4F48636D9 |
:101FB000910509F470C18736910524F48B3491059D |
:101FC000F1F00AC28D36910509F468C08E3691058C |
:101FD00009F453C001C28337910509F4EDC0843779 |
:101FE00091052CF48137910509F491C0F5C184372E |
:101FF000910511F18937910509F48AC1EDC1E0918C |
:10200000E201F091E301808191819093020380933A |
:1020100001032091FF0230910003821B930B845E29 |
:102020009D4F68E671E00E94F86F845B904090934A |
:10203000FE028093FD02D0C18091E401A091E201F3 |
:10204000B091E301853140F080E1E9E6F4E00D90E4 |
:1020500001928A95E1F70DC08D919D910D90BC91F3 |
:10206000A02D8093690490936A04A0936B04B093AD |
:102070006C0480EF8093DF0146C080910F018823BC |
:10208000E1F38DE490E09F938F9380E094E09F9341 |
:102090008F9381E08F938F938EE42AC080910F01FC |
:1020A0008823E1F34091E2015091E301DA019C9130 |
:1020B000913089F460E074E08DE4FB01282F0D90ED |
:1020C00001922A95E1F7A8EEB3E0FB01182E0E94D9 |
:1020D0009E70998301C0198281E090E09F938F9355 |
:1020E000CE0101969F938F9381E08F938F938DE420 |
:1020F0008F930E94950E8DB79EB707968DBF6CC1CA |
:1021000081E08093EA018FEF80930D0165C1E0913A |
:10211000E201F091E30180818F3F39F40E941507BD |
:10212000E091E201F091E3018083E091E201F0911E |
:10213000E3018081882311F481E003C0863010F030 |
:1021400085E08083E091E201F091E3014CE662ECEE |
:1021500076E080810E94BD0680910F018823E1F323 |
:10216000E091E201F091E3018081898382E58A8335 |
:102170008CE690E09F938F9382EC96E09F938F93F1 |
:1021800021E030E03F932F93CE0102969F938F93EF |
:102190003F932F93CE01820F931F9F938F9383E0E2 |
:1021A0008F9381E08F9381E58F930E94950EADB759 |
:1021B000BEB71F96ADBF10C12091E2013091E3017F |
:1021C000F90180818150853008F04CC081818235D1 |
:1021D00009F048C062EC76E08CE62E5F3F4FDB01F1 |
:1021E000F901982F01900D929A95E1F72250304015 |
:1021F000482FD9018C910E94E6068091FF0699270D |
:10220000AA27BB27BC01CD0124EC39E040E050E017 |
:102210000E94B96FDC01CB018093990190939A01E0 |
:10222000A0939B01B0939C01809100079927AA2756 |
:10223000BB27BC01CD010E94B96FDC01CB018093AB |
:10224000950190939601A0939701B0939801E09126 |
:10225000E201F091E30180810E94DA060E941507F5 |
:10226000898301C0198280910F018823E1F381E005 |
:1022700090E09F938F93CE0101969F938F9381E07F |
:102280008F938F9383E58F930E94950EEDB7FEB7E2 |
:102290003796EDBF2EC0E091E201F091E301E081BD |
:1022A0008E2F8150853018F48E2F0E94DA06E0912F |
:1022B000E201F091E301808189834CE662EC76E0F3 |
:1022C0000E94BD0680910F018823E1F381E090E038 |
:1022D0009F938F93CE0101969F938F9381E08F936D |
:1022E0008F9386E48F930E94950E8DB79EB70796C5 |
:1022F0008DBF8091E502882329F46EE670E0898124 |
:102300000E946C3180E00E945C070E942A6864C0D1 |
:10231000E091E201F091E3018081992787FD90959A |
:1023200090936E0680936D068181992787FD909525 |
:102330009093700680936F068281992787FD909510 |
:1023400090937206809371068381992787FD9095FB |
:1023500090937406809373068481992787FD9095E6 |
:1023600090937606809375068581992787FD9095D1 |
:1023700090937806809377068681992787FD9095BC |
:1023800090937A06809379068781992787FD9095A7 |
:1023900090937C0680937B068085992787FD909596 |
:1023A00090937E0680937D068185992787FD909581 |
:1023B0009093800680937F068285992787FD90956C |
:1023C00090938206809381068385992787FD909557 |
:1023D0009093840680938306809190049927843695 |
:1023E000910509F4C5C085369105ACF48136910597 |
:1023F00009F479C0823691052CF48B34910509F4E7 |
:1024000055C019C18236910509F47AC08336910509 |
:1024100009F489C010C18C36910509F4F7C08D36D6 |
:1024200091054CF48736910509F402C1883691056F |
:1024300009F4BCC000C18437910529F086379105A5 |
:1024400009F4F2C0F8C08091E401A091E201B091DA |
:10245000E301853140F080E1E9E6F4E00D9001927E |
:102460008A95E1F70DC08D919D910D90BC91A02DA5 |
:102470008093690490936A04A0936B04B0936C04F6 |
:1024800080910F018823E1F31F9280910C018F93BB |
:1024900084E58F930E94950E8AEF8093DF018FEF82 |
:1024A00080930D010F900F900F90C5C0E091E20155 |
:1024B000F091E30180819181909302038093010365 |
:1024C0002091FF0230910003821B930B845E9D4F8D |
:1024D00068E671E00E94F86F845B90409093FE0282 |
:1024E0008093FD02A8C0E091E201F091E3018081B8 |
:1024F00080930E01803298F08FE180930E010FC01F |
:10250000A091E201B091E3018BE0E1E8F4E00D90ED |
:1025100001928A95E1F780918A04809312068FEFE9 |
:1025200080930D0188C08091DB019091DC01892BA3 |
:1025300089F4E091E201F091E301E081EE2351F0B2 |
:102540008AE0E89FC00111240E94F01690935C0479 |
:1025500080935B04E091E201F091E30190818AE0D5 |
:10256000989FC00111249093DC018093DB0115C07A |
:102570008FEF80930D01E091E201F091E3019081F2 |
:102580008AE0989FC00111249093DE018093DD01C1 |
:10259000892B19F081E08093EC0180EA9FE00E9492 |
:1025A000F0169093D8018093D70145C08FEF8093A8 |
:1025B0000D01E091E201F091E301908197FD08C0E7 |
:1025C00082E08093E9011092DA011092D9011AC0D9 |
:1025D000909580914202892B8093420291818AE0FA |
:1025E000989FC00111249093DA018093D90184E06F |
:1025F0008093E90180EA9FE00E94F0169093D80151 |
:102600008093D70181E08093ED0115C08FEF809317 |
:102610000D01E091E201F091E3018081809343029A |
:1026200081E08093EE0107C081E08093EB0103C05D |
:1026300081E08093EF011092E7011092E301109284 |
:10264000E2011092E101E2E0CE5F0C947470982FE9 |
:102650008091C00085FFFCCF9093C600089588E16B |
:102660008093C1008091C00082608093C0008091FF |
:10267000C10080688093C1008091C1008064809314 |
:10268000C1008AE28093C4008091DD019091DE0157 |
:102690000E94F01690935E0480935D048CED90E0B0 |
:1026A0000E94F01690938D0480938C0410925F0426 |
:1026B0008EE48093600481E0809363048BE08093D8 |
:1026C0006104109262041092E3011092E2011092F0 |
:1026D000E1010895A0E1B0E0E0E7F3E10C9454706B |
:1026E00080910F01882309F48CC28091D7019091C9 |
:1026F000D8010E94F916882361F01092DA01109235 |
:10270000D9011092DE011092DD011092DC011092CD |
:10271000DB018091D9019091DA01892B41F0809100 |
:102720002E0590912F050E94F916882329F4809197 |
:10273000ED01882309F460C080910F01882309F41A |
:102740005BC08091E90108E211E08430A8F00E94AA |
:10275000C82080E590E09F938F931F930F9381E0B3 |
:102760008F938F9388E48F930E94950E2DB73EB779 |
:10277000295F3F4F2DBF34C01092440284ED94E096 |
:102780009F938F938DEB90E29F938F93E091FE0345 |
:10279000F091FF03099584E190E09F938F931F933D |
:1027A0000F9381E090E09F938F9389EE91E09F9348 |
:1027B0008F9382E08F9381E08F9388E48F930E94C0 |
:1027C000950E8091E901982F8F5F8093E9012DB7D5 |
:1027D0003EB7215F3F4F2DBF943010F01092E901BA |
:1027E0008091D9019091DA010E94F01690932F0503 |
:1027F00080932E051092ED018091EE01882351F116 |
:1028000080910F01882331F10E94C82080E590E07B |
:102810009F938F9388E291E09F938F9321E030E024 |
:102820003F932F9387E291E09F938F933F932F9352 |
:1028300083E492E09F938F9383E08F9381E08F9363 |
:102840008CE48F930E94950E1092EE018DB79EB787 |
:102850000F968DBF8091EB018823D1F080910F01FD |
:102860008823B1F08AE090E09F938F938FE594E006 |
:102870009F938F9381E08F938F9386E58F930E9430 |
:10288000950E1092EB012DB73EB7295F3F4F2DBF3C |
:102890008091EF018823D9F080910F018823B9F04E |
:1028A0008BE090E09F938F9381E894E09F938F93C8 |
:1028B00081E08F9380910C018F9387E48F930E9426 |
:1028C000950E1092EF018DB79EB707968DBF809140 |
:1028D0008C0490918D040E94F916882309F461C03C |
:1028E00080910F01882309F45CC08091DD0699274F |
:1028F000880F991F880F991F7C010027F7FC00950E |
:10290000102F80913B0390913C03A0913D03B09127 |
:102910003E03BC01CD01A80197010E942D703093A8 |
:102920007A04209379048091330390913403A09129 |
:102930003503B0913603BC01CD01A80197010E9477 |
:102940002D7030937C0420937B048091D20280937D |
:102950007D048091D10280937E0488E090E09F9373 |
:102960008F9389E794E09F938F9381E08F9383E027 |
:102970008F9387E78F930E94950E80917F042DB7E8 |
:102980003EB7295F3F4F2DBF853018F086E080931A |
:102990007F0483E690E00E94F01690938D0480936C |
:1029A0008C048091DD019091DE01892B41F08091B2 |
:1029B0005D0490915E040E94F916882321F48091B1 |
:1029C000EC01882329F180910F01882309F182E429 |
:1029D00090E09F938F9380ED95E09F938F9381E09C |
:1029E0008F938F9384E48F930E94950E1092EC0145 |
:1029F0008DB79EB707968DBF8091DD019091DE0166 |
:102A0000009731F00E94F01690935E0480935D046D |
:102A10008091DB019091DC01892B09F485C08091C4 |
:102A20005B0490915C040E94F916882309F47CC031 |
:102A300080910F01882309F477C08091DD069927E2 |
:102A4000880F991F880F991F7C010027F7FC0095BC |
:102A5000102F80913B0390913C03A0913D03B091D6 |
:102A60003E03BC01CD01A80197010E942D70309357 |
:102A70004E0420934D048091330390913403A09130 |
:102A80003503B0913603BC01CD01A80197010E9426 |
:102A90002D703093500420934F042091890730917A |
:102AA0008A0740918B0750918C07DA01C90103E036 |
:102AB000880F991FAA1FBB1F0A95D1F7820F931F7A |
:102AC000A41FB51F820F931FA41FB51F209179016A |
:102AD00030917A0140917B0150917C01BC01CD0184 |
:102AE0000E942D7030935204209351048EE090E0A8 |
:102AF0009F938F938DE494E09F938F9381E08F93C6 |
:102B00008F9383E48F930E94950E8091DB019091C7 |
:102B1000DC010E94F01690935C0480935B042DB757 |
:102B20003EB7295F3F4F2DBF80910E018F3F71F15E |
:102B3000992714E0880F991F1A95E1F78C529D4F41 |
:102B400040E150E0BC01CE0101960E94C56E80E1DB |
:102B500090E09F938F93CE0101969F938F9381E096 |
:102B600090E09F938F938EE091E09F938F9382E00C |
:102B70008F9381E08F9381E48F930E94950E8FEF66 |
:102B800080930E018DB79EB70B968DBF8091120674 |
:102B90008823D1F080910F018823B1F081E090E08B |
:102BA0009F938F9382E196E09F938F9381E08F9321 |
:102BB0008F9382E48F930E94950E109212062DB788 |
:102BC0003EB7295F3F4F2DBF8091EA018823C9F0AE |
:102BD00080910F018823A9F084E390E09F938F9365 |
:102BE00083E596E09F938F9381E08F938F9380E5A9 |
:102BF0008F930E94950E1092EA018DB79EB70796AB |
:102C00008DBFE6E0C05F0C9470701F920F920FB6FC |
:102C10000F9211242F933F935F936F937F938F9322 |
:102C20009F93AF93BF93EF93FF938091FD01882310 |
:102C300029F08091FD0181508093FD018091E20394 |
:102C4000882319F081508093E2038091050281501E |
:102C5000809305028F3FB9F489E08093050280914B |
:102C600012018F5F817080931201882319F481E033 |
:102C70008093020280910302909104020196909346 |
:102C80000402809303028091FE019091FF01892B41 |
:102C9000C9F08091FE019091FF0101979093FF018F |
:102CA0008093FE018091FE019091FF01209110011F |
:102CB0003091110182239323892B11F021E009C067 |
:102CC00020E007C020E08FEF9FEF909311018093E9 |
:102CD000100180910201222331F08A3011F45A9AB6 |
:102CE00007C0479A05C08A3011F45A9801C0479826 |
:102CF0008091D403882309F063C08091CE0683FFBE |
:102D00005FC086B19927FC01E071F07084FF0AC0B2 |
:102D100080910002909101020196909301028093AC |
:102D200000024EC08091000290910102892B09F4AB |
:102D300043C080910002909101028A569140E0F5D3 |
:102D4000809100029091010269E270E00E94E46FBC |
:102D50008091000290910102860F971F90930102CB |
:102D60008093000280910002909101020B9750F035 |
:102D700080910002909101020A9790930203809340 |
:102D8000010304C0F0930203E09301038091010367 |
:102D9000909102032091FF0230910003821B930B5C |
:102DA000845E9D4F68E671E00E94F86F845B9040FE |
:102DB0009093FE028093FD02109201021092000295 |
:102DC000FF91EF91BF91AF919F918F917F916F9103 |
:102DD0005F913F912F910F900FBE0F901F9018950C |
:102DE0002091030230910402280F391FC901019676 |
:102DF00008952091030230910402821B930B892FC6 |
:102E000099278695807490700895CF93DF930E94E0 |
:102E1000F016EC01CE010E94F9168823D9F3DF9158 |
:102E2000CF910895CF93DF930E94F016EC0109C073 |
:102E300080911701882329F0909317018FEC8093DC |
:102E40007A00CE010E94F916982F882389F3DF912A |
:102E5000CF9108959FB7F8945F983E9A469A8091D3 |
:102E6000B0008F708093B0008091B0008360809339 |
:102E7000B0008091B1008B738093B1008091B1005C |
:102E80008B608093B1001092B2008FEF8093B300FB |
:102E90008091B00080688093B000809170008A7F3C |
:102EA00080937000809170008260809370009FBF5B |
:102EB00008958AE090E00E94F01690930D028093AE |
:102EC0000C0282E085BD83EA84BD17BC88E788BD1B |
:102ED00086E086BD80916E00816080936E000895CB |
:102EE0001F920F920FB60F9211242F933F934F937F |
:102EF0005F936F937F938F939F93AF93BF93CF9382 |
:102F0000DF93EF93FF938091020190910602843149 |
:102F100008F011C1992309F064C38091B00086FFC5 |
:102F2000ECC08091B0008F7B8093B00089EA93E081 |
:102F300090930802809307028091130190911401ED |
:102F40009C01220F331F280F391F8091850199277B |
:102F5000880F991F880F991F280F391F37FF02C04C |
:102F60002D5F3F4FC90195958795959587959093CE |
:102F70001401809313019093FB018093FA018091D7 |
:102F800020076091EE0620913B0330913C03409175 |
:102F90003D0350913E0380FF2CC077278827992757 |
:102FA000EA01D90157FF04C0A158BF4FCF4FDF4FEF |
:102FB000E7E0D595C795B795A795EA95D1F79D0117 |
:102FC000AE010E94B96F9B01AC0197FF04C0215C68 |
:102FD0003F4F4F4F5F4F66E0559547953795279583 |
:102FE0006A95D1F78091FA019091FB01820F931FAE |
:102FF0002BC0772788279927EA01D90157FF04C0FA |
:10300000A158BF4FCF4FDF4F27E0D595C795B79554 |
:10301000A7952A95D1F79D01AE010E94B96F9B013A |
:10302000AC0197FF04C0215C3F4F4F4F5F4FF6E06C |
:103030005595479537952795FA95D1F78091FA01DF |
:103040009091FB01821B930B9093FB018093FA01FB |
:103050008091EF06282F3327220F331F220F331FB3 |
:103060008091FA019091FB01821793077CF0809187 |
:10307000F006282F3327220F331F220F331F809192 |
:10308000FA019091FB012817390724F43093FB01D2 |
:103090002093FA0120910702309108028091FA01F1 |
:1030A0009091FB01280F391F2050324030930802C5 |
:1030B000209307028091FA019091FB0197FD0396FE |
:1030C00095958795959587959093FB018093FA0147 |
:1030D00045E02D3D340718F08CED95E005C02757ED |
:1030E000314030F487E791E0909308028093070223 |
:1030F000809107029091080241C28091B0008064E3 |
:103100008093B0008091F506282F33278DED96E04F |
:10311000289FA001299F500D389F500D1124CA01EE |
:103120002091090230910A02821B930B90930802AE |
:103130008093070253C2992309F053C28091B000D3 |
:1031400086FF21C28091B0008F7B8093B000E09118 |
:103150000B02EE23F1F48091F506282F33278DED35 |
:1031600096E0289FA001299F500D389F500D1124F3 |
:10317000CA012091090230910A02821B930B90939D |
:1031800008028093070210920A0210920902469ADE |
:1031900025C289EA93E090930802809307028E2F5C |
:1031A00099278330910509F4A4C1843091053CF43A |
:1031B0008130910561F0029709F4D2C0A8C1843032 |
:1031C000910509F499C1059709F49EC1A0C18091A8 |
:1031D0001301909114019C01220F331F280F391FF6 |
:1031E000809185019927880F991F880F991F280FB3 |
:1031F000391F37FF02C02D5F3F4FC9019595879555 |
:103200009595879590931401809313019093FB01FA |
:103210008093FA01809120076091EE0620913B0394 |
:1032200030913C0340913D0350913E0380FF2CC000 |
:10323000772788279927EA01D90157FF04C0A158A9 |
:10324000BF4FCF4FDF4F27E0D595C795B795A795CF |
:103250002A95D1F79D01AE010E94B96F9B01AC0187 |
:1032600097FF04C0215C3F4F4F4F5F4FA6E055953D |
:10327000479537952795AA95D1F78091FA019091B6 |
:10328000FB01820F931F27C077278827992757FFB5 |
:1032900004C021583F4F4F4F5F4FF7E0559547957A |
:1032A00037952795FA95D1F70E94B96F9B01AC012C |
:1032B00097FF04C0215C3F4F4F4F5F4FE6E05595AD |
:1032C000479537952795EA95D1F78091FA01909126 |
:1032D000FB01821B930B9093FB018093FA01809179 |
:1032E000EF06282F3327220F331F220F331F809121 |
:1032F000FA019091FB01821793077CF08091F00610 |
:10330000282F3327220F331F220F331F8091FA01FA |
:103310009091FB012817390724F43093FB01209387 |
:10332000FA0180910702909108022091FA013091F0 |
:10333000FB01820F931F805092409093080280936C |
:1033400007028091FA019091FB0197FD03969595F4 |
:103350008795959587959093FB018093FA01EAC034 |
:1033600080911501909116019C01220F331F280FA7 |
:10337000391F809184019927880F991F880F991F01 |
:10338000280F391F37FF02C02D5F3F4FC9019595A8 |
:103390008795959587959093160180931501909345 |
:1033A000F9018093F801809120076091F206A091C5 |
:1033B0003303B0913403C0913503D091360381FFBC |
:1033C0002AC07727882799279D01AE01D7FF04C01F |
:1033D00021583F4F4F4F5F4FA7E055954795379581 |
:1033E0002795AA95D1F70E94B96F9B01AC0197FF71 |
:1033F00004C0215C3F4F4F4F5F4FF6E05595479516 |
:1034000037952795FA95D1F78091F8019091F901B8 |
:10341000820F931F29C07727882799279D01AE0126 |
:10342000D7FF04C021583F4F4F4F5F4FE7E05595FE |
:10343000479537952795EA95D1F70E94B96F9B017B |
:10344000AC0197FF04C0215C3F4F4F4F5F4F66E0D8 |
:1034500055954795379527956A95D1F78091F8014D |
:103460009091F901821B930B9093F9018093F801DD |
:103470008091F306282F3327220F331F220F331F8B |
:103480008091F8019091F901821793077CF0809167 |
:10349000F406282F3327220F331F220F331F80916A |
:1034A000F8019091F9012817390724F43093F901B4 |
:1034B0002093F80180910702909108022091F80171 |
:1034C0003091F901820F931F80509240909308022F |
:1034D000809307028091F8019091F90197FD03967E |
:1034E00095958795959587959093F9018093F80127 |
:1034F00021C08091550702C08091C1069927880F8D |
:10350000991F87559C4F12C080915F07F7CFFF2707 |
:10351000EE0FFF1FED5AF94F20813181220F331F2B |
:103520008091070290910802820F931F90930802E6 |
:1035300080930702809107029091080255E08D3D2B |
:10354000950718F08CED95E005C08757914030F451 |
:1035500087E791E090930802809307022091070289 |
:10356000309108022C5B3040309308022093070210 |
:103570008091090290910A02820F931F90930A0290 |
:10358000809309022BC08091B00080648093B000CA |
:103590008CEB90E0909308028093070280910902DF |
:1035A00090910A0284549F4F90930A0280930902DB |
:1035B0008091FC01882331F08091EF02853B10F06F |
:1035C000469801C0469A80910B028F5F80930B0250 |
:1035D0009091F506981710F410920B0281E08093F9 |
:1035E0000602209107023091080241E02F3734078C |
:1035F00030F08FEF8093B3002F5F30400FC02F3F2C |
:103600003105C9F0C0F0A9014F5F50404F37510557 |
:1036100050F480E88093B300205830403093080283 |
:103620002093070212C08FEF8093B30050930802DB |
:10363000409307020AC0809107028093B300109262 |
:1036400008021092070210920602FF91EF91DF919B |
:10365000CF91BF91AF919F918F917F916F915F912A |
:103660004F913F912F910F900FBE0F901F90189583 |
:1036700010927C008FEC80937A0008950F931F9333 |
:10368000CF93DF9303E010E0D8010E948570802D76 |
:10369000C82FDD27C531D10508F02A97C7BD109284 |
:1036A000150284E690E00E94121780911B01909110 |
:1036B0001C018052934010F4C0E0D0E0CA3FD10515 |
:1036C000F8F4C7BD82E390E00E94121789EE94E0FF |
:1036D0009F938F9387E293E19F938F93E091FE03F3 |
:1036E000F091FF03099580911B0190911C010F90AF |
:1036F0000F900F900F908052934010F02196DECFE4 |
:10370000D8010C2E0E949270C0931F068CE291E0AB |
:103710000E941217DF91CF911F910F910895EF92A0 |
:10372000FF921F93CF93C0E0C0931002C0930F028B |
:10373000C0930E0280ED97E00E94F0167C011CE819 |
:10374000C33019F41B3008F019E0C0E08091250265 |
:10375000909126028C5F934024F480911A0181504D |
:103760000AC080912502909126028750944034F03F |
:1037700080911A018F5F80931A0101C0C1E080918E |
:103780002302909124028C5F934024F480911901CC |
:1037900081500AC080912302909124028750944066 |
:1037A00034F0809119018F5F8093190101C0CF5FC0 |
:1037B00080912102909122028C5F934024F48091A9 |
:1037C000180181500AC080912102909122028750F5 |
:1037D0009440C4F0809118018F5F8093180113C04A |
:1037E0008BEE94E09F938F9387E293E19F938F9367 |
:1037F000E091FE03F091FF0309950F900F900F9059 |
:103800000F904DC0CF5F88E080934A020E94E82A63 |
:1038100080911A018A3030F481E0809310028AE0AE |
:1038200080931A0180911A01863F30F081E08093E5 |
:10383000100285EF80931A01809119018A3030F4CB |
:1038400081E080930F028AE0809319018091190131 |
:10385000863F30F081E080930F0285EF809319015D |
:10386000809118018A3030F481E080930E028AE062 |
:103870008093180180911801863F30F081E0809399 |
:103880000E0285EF8093180180914A02882339F057 |
:10389000C7010E94F916882309F0A2CFF5CF109234 |
:1038A00017018FEC80937A00809117018823E1F350 |
:1038B0001A3020F48AE090E00E941217115009F0AB |
:1038C0003FCF86E490E00E941217CF911F91FF90A6 |
:1038D000EF9008951F920F920FB60F921124AF929E |
:1038E000BF92CF92DF92EF92FF920F931F932F938D |
:1038F0003F934F935F936F937F938F939F93AF9378 |
:10390000BF93EF93FF9380912E02282F33274427F4 |
:1039100055278F5F80932E02F9012231310508F07F |
:10392000FAC3E25CFF4F0C947F7080917800909115 |
:10393000790046C080917800909179009AC1809179 |
:103940007800909179009093300280932F02C5C146 |
:10395000809147039091480320917800309179003D |
:10396000821B930B90931406809313068091130689 |
:103970009091140690933A0280933902CCC18091C1 |
:103980007800909179002091490330914A03821B7D |
:10399000930B90931E0680931D0680911D069091B7 |
:1039A0001E0690933C0280933B02B7C38091330282 |
:1039B000909134022091780030917900820F931F0A |
:1039C000909334028093330281E0A8C38091310246 |
:1039D000909132022091780030917900820F931FEC |
:1039E000909332028093310284E098C38091250144 |
:1039F000909126019C01220F331F280F391F8091BF |
:103A000078009091790063E070E00E94E46F260FE7 |
:103A1000371F3695279536952795309326012093A5 |
:103A2000250185E07BC38091780090917900AA27D9 |
:103A300097FDA095BA2FBC01CD010E943F6F7B017D |
:103A40008C018091410390914203A0914303B09176 |
:103A500044039C01AD01C801B7010E94DF6EDC0187 |
:103A6000CB01BC01CD010E94226FDC01CB01909300 |
:103A70001C0280931B0280911B0290911C020297F2 |
:103A80000CF446C08091410390914203A0914303FE |
:103A9000B091440320E030E84BE354E4BC01CD0195 |
:103AA0000E94496F88230CF088C080914103909157 |
:103AB0004203A0914303B09144032AE037ED43EA67 |
:103AC0005CE3BC01CD010E94E06EDC01CB01809380 |
:103AD000410390934203A0934303B0934403809126 |
:103AE000BF029091C002845F914008F066C080914F |
:103AF000410390914203A0914303B09144032DEC04 |
:103B00003CEC4CEC5DE3BC01CD010E94E06E4BC08F |
:103B100080911B0290911C028F5F9F4F0CF04DC053 |
:103B20008091410390914203A0914303B0914403DB |
:103B300020E030E849E054E4BC01CD010E944C6F24 |
:103B40001816DCF58091410390914203A091430344 |
:103B5000B09144032AE037ED43EA5CE3BC01CD01B8 |
:103B60000E94DF6EDC01CB018093410390934203FE |
:103B7000A0934303B09344038091BF029091C0028D |
:103B8000845F9140D0F48091410390914203A091D1 |
:103B90004303B09144032DEC3CEC4CEC5DE3BC01E1 |
:103BA000CD010E94DF6EDC01CB0180934103909335 |
:103BB0004203A0934303B093440381E080931A022D |
:103BC0008091780090917900909316068093150665 |
:103BD00080911B0290911C029C01442737FD409567 |
:103BE000542F8091030390910403A0910503B09199 |
:103BF0000603820F931FA41FB51F809303039093A6 |
:103C00000403A0930503B0930603209103033091AE |
:103C10000403409105035091060357FF04C021504F |
:103C20003C4F4F4F5F4F0AE0559547953795279585 |
:103C30000A95D1F78091030390910403A0910503A5 |
:103C4000B0910603821B930BA40BB50B8093030367 |
:103C500090930403A0930503B09306032EC18091B3 |
:103C60003102909132022091780030917900820FD8 |
:103C7000931F909332028093310210922D0250C212 |
:103C8000809102018A3071F48091780090917900DE |
:103C900020912F0230913002820F931F019696954A |
:103CA000879517C040912F0250913002843159F40A |
:103CB0002091780030917900240F351F8FEF97E025 |
:103CC000821B930B06C08091780090917900840F3D |
:103CD000951F909322028093210286E01FC280915B |
:103CE0004703909148032091780030917900821B1E |
:103CF000930B909314068093130680911306909172 |
:103D000014062091390230913A02820F931F90934A |
:103D1000200280931F0287E001C280917800909179 |
:103D200079002091490330914A03821B930B9093B1 |
:103D30001E0680931D0680911D0690911E062091FF |
:103D40003B0230913C02820F931F90931E0280939E |
:103D50001D02E3C12091330230913402809178003A |
:103D600090917900280F391F309334022093330249 |
:103D7000809102018A3019F4220F331F04C0220FF0 |
:103D8000331F220F331F30933402209333022091CC |
:103D9000330230913402C90137FD0796A3E09595AF |
:103DA0008795AA95E1F7909326028093250280914A |
:103DB000350290913602820F931F97FD01969595DB |
:103DC000879590933602809335022091530330916A |
:103DD0005403821B930B9093240180932301209121 |
:103DE0002B0230912C028091230190912401280F05 |
:103DF000391F37FF02C02F5F3F4F3595279530930E |
:103E00002C0220932B02E0CD20913102309132021E |
:103E10008091780090917900280F391F30933202F9 |
:103E200020933102809102018A3019F4220F331F4E |
:103E300004C0220F331F220F331F3093320220930E |
:103E400031022091310230913202C90137FD0796CB |
:103E500063E0959587956A95E1F7909324028093A6 |
:103E600023028091370290913802820F931F97FDB1 |
:103E7000019695958795909338028093370220910B |
:103E8000510330915203821B930B90932201809334 |
:103E900021012091290230912A02809121019091E3 |
:103EA0002201280F391F37FF02C02F5F3F4F359582 |
:103EB000279530932A022093290283E02FC1109284 |
:103EC0002E0281E0809317018091110290911202DD |
:103ED0000196909312028093110280917800909144 |
:103EE000790090931C0180931B0180911B0190919C |
:103EF0001C01AA27BB27A0903D02B0903E02C090B3 |
:103F00003F02D0904002A80EB91ECA1EDB1EA0922E |
:103F10003D02B0923E02C0923F02D0924002809198 |
:103F200041028F5F80934102823108F4F6C0809194 |
:103F30001D0190911E01A0911F01B09120017C01F3 |
:103F40008D0123E0EE0CFF1C001F111F2A95D1F7F5 |
:103F5000E81AF90A0A0B1B0BEA0CFB1C0C1D1D1DB1 |
:103F600080911502992787FD9095A92FB92FBC0143 |
:103F7000CD0126EC34E240E050E00E94B96FDC0154 |
:103F8000CB01E81AF90A0A0B1B0BD801C7010496EA |
:103F9000A11DB11DB7FF05C0D801C7010B96A11D1A |
:103FA000B11D13E0B595A795979587951A95D1F70B |
:103FB00080931D0190931E01A0931F01B0932001D7 |
:103FC00080911706909118067C010027F7FC009558 |
:103FD000102F80911D0190911E01A0911F01B091A1 |
:103FE0002001E81AF90A0A0B1B0BE092E102F09299 |
:103FF000E2020093E3021093E40220911602309152 |
:104000001702409118025091190257FF04C0215F16 |
:104010003F4F4F4F5F4FF4E05595479537952795A4 |
:10402000FA95D1F78091160290911702A09118028B |
:10403000B0911902821B930BA40BB50B809316024F |
:1040400090931702A0931802B09319028091160260 |
:1040500090911702A0911802B09119028E0D9F1D28 |
:10406000A01FB11F8093160290931702A09318020D |
:10407000B09319028091130290911402AC01E4E014 |
:10408000440F551FEA95E1F7481B590B8091160222 |
:1040900090911702A0911802B0911902B7FF03C0C6 |
:1040A0000F96A11DB11D74E0B595A79597958795BD |
:1040B0007A95D1F72091E1023091E202281B390B69 |
:1040C00063E0220F331F6A95E1F7240F351F37FF96 |
:1040D00002C0215F3F4F44E0359527954A95E1F7AF |
:1040E0003093140220931302D601C501D7FE03C0FA |
:1040F0000196A11DB11DB595A795979587958093BC |
:104100003D0290933E02A0933F02B093400289E0AB |
:104110008093410202C010922E0282E080932D0211 |
:1041200080912D0280937C0080912E02882319F0CB |
:104130008FEC80937A00FF91EF91BF91AF919F91A7 |
:104140008F917F916F915F914F913F912F911F912F |
:104150000F91FF90EF90DF90CF90BF90AF900F90B6 |
:104160000FBE0F901F90189590E2E8E2F1E08FE407 |
:104170009193815087FFFCCF089590914402E8E22B |
:10418000F1E0E90FF11D80839F5F90934402089551 |
:10419000EF92FF920F931F93CF93DF9320914202F0 |
:1041A00020FF0AC080914302882311F0815002C091 |
:1041B000809127018093430221FF0CC0909143021C |
:1041C00080912701981719F41092430203C09F5F52 |
:1041D00090934302822F992780FF04C081FF02C081 |
:1041E000109243020E94B42080914302282F33276B |
:1041F000CDEBEC2EC0E2FC2EC091FE03D091FF036C |
:104200008A3098F481E1809344023F932F9382E2B5 |
:1042100095E09F938F93FF92EF92FE0109952DB742 |
:104220003EB72A5F3F4F2DBF11C080E1809344020B |
:104230003F932F9387E295E09F938F93FF92EF92A6 |
:10424000FE0109958DB79EB706968DBF209143025A |
:10425000822F9927AA27BB27FC01419710F00C94C5 |
:10426000D22AE05BFF4FBDEBEB2EB0E2FB2EC091FC |
:10427000FE03D091FF030C947F70109244028CE2F5 |
:1042800095E09F938F93FF92EF92FE01099584E151 |
:10429000809344020F900F900F900F9082E690E071 |
:1042A0009F938F938EE490E09F938F931F921F9222 |
:1042B000809102016AE00E94D86F892F99279F930D |
:1042C0008F93809102010E94D86F99279F938F93BB |
:1042D0008CE395E09F938F93FF92EF92E091FE0322 |
:1042E000F091FF03099588E2809344022DB73EB711 |
:1042F000225F3F4F2DBF81E094E09F938F930E94F8 |
:10430000150799279F938F9381E595E09F938F934E |
:10431000FF92EF92E091FE03F091FF0309958091E7 |
:104320009F019091A0012DB73EB7285F3F4F2DBF51 |
:10433000069730F48CE3809344028FE595E0CDC07E |
:1043400090914702992311F40C94DB2A8CE380931B |
:104350004402892F99279F938F938CE695E09F9332 |
:104360008F938DEB90E29F938F9377C08091CE06D1 |
:10437000ADEBEA2EA0E2FA2EC091FE03D091FF032E |
:1043800080FF74C0109244028091E1029091E20299 |
:10439000A091E302B091E402BC01CD0125E030E040 |
:1043A00040E050E00E942D703F932F9381E895E00C |
:1043B0009F938F93FF92EF92FE01099584E1809382 |
:1043C00044022DB73EB72A5F3F4F2DBF8091DD02DB |
:1043D0009091DE02A091DF02B091E002BC01CD011C |
:1043E00025E030E040E050E00E942D703F932F9395 |
:1043F0008EE895E09F938F93FF92EF92E091FE03FA |
:10440000F091FF03099588E2809344028DB79EB72F |
:1044100006968DBF80911B0190911C019F938F93F5 |
:104420008BE995E09F938F93FF92EF92E091FE03CB |
:10443000F091FF0309958CE3809344022DB73EB7BA |
:104440002A5F3F4F2DBF87B599279F938F9388EAA7 |
:1044500095E09F938F93FF92EF92E091FE03F0918E |
:10446000FF0309958DB79EB7069639C7109244028F |
:1044700085EB95E09F938F93FF92EF92FE01099554 |
:1044800084E1809344020F900F900F900F9084EC82 |
:1044900095E09F938F93FF92EF92E091FE03F0914E |
:1044A000FF03099588E2809344020F900F900F90CC |
:1044B0000F908DEC95E09F938F93FF92EF92E09198 |
:1044C000FE03F091FF0309958CE3809344020F9063 |
:1044D0000F900F900F908CED95E09F938F93FF922C |
:1044E000EF92EFC71092440285EE95E09F938F9371 |
:1044F0000DEB10E2FF92EF92FE01099584E18093AB |
:1045000044020F900F900F900F9080913B03909179 |
:104510003C03A0913D03B0913E03B7FF04C081501E |
:104520009C4FAF4FBF4FFAE0B595A79597958795EC |
:10453000FA95D1F7BF93AF939F938F9382EF95E056 |
:104540009F938F931F930F93E091FE03F091FF03CE |
:10455000099588E2809344022DB73EB7285F3F4F0C |
:104560002DBF8091330390913403A0913503B09116 |
:104570003603B7FF04C081509C4FAF4FBF4FEAE0F6 |
:10458000B595A79597958795EA95D1F7BF93AF9382 |
:104590009F938F9381E096E09F938F931F930F9348 |
:1045A000E091FE03F091FF0309958CE380934402B0 |
:1045B0008DB79EB708968DBF80910103909102033D |
:1045C0009F938F9380E196E09F938F931F930F9318 |
:1045D000EEC31092440280915706909158069F9323 |
:1045E0008F9380915506909156069F938F938FE1FC |
:1045F00096E09F938F93FF92EF92FE01099584E1DD |
:10460000809344028DB79EB708968DBF80915B065C |
:1046100090915C069F938F938091590690915A06D2 |
:104620009F938F938FE296E09F938F93FF92EF92E9 |
:10463000E091FE03F091FF03099588E28093440224 |
:104640002DB73EB7285F3F4F2DBF80915F069091F9 |
:1046500060069F938F9380915D0690915E069F9375 |
:104660008F938FE396E09F938F93FF92EF92E09169 |
:10467000FE03F091FF0309958CE3809344028DB70C |
:104680009EB708968DBF80916306909164069F93B4 |
:104690008F9380916106909162069F938F938FE430 |
:1046A00096E076C5109244028091C306E82FFF275A |
:1046B000EE0FFF1FED5AF94F808191819F938F93E9 |
:1046C0008091C206E82FFF27EE0FFF1FED5AF94F2A |
:1046D000808191819F938F938FE596E09F938F9335 |
:1046E000FF92EF92FE01099584E1809344028DB719 |
:1046F0009EB708968DBF8091C506E82FFF27EE0F65 |
:10470000FF1FED5AF94F808191819F938F93809184 |
:10471000C406E82FFF27EE0FFF1FED5AF94F8081E7 |
:10472000918188589F4F9F938F938FE696E09F9338 |
:104730008F93FF92EF92E091FE03F091FF030995B2 |
:1047400088E2809344022DB73EB7285F3F4F2DBFCC |
:104750008091C706E82FFF27EE0FFF1FED5AF94F94 |
:104760008081918182599F4F9F938F938091C6063C |
:10477000E82FFF27EE0FFF1FED5AF94F808191813F |
:1047800082599F4F9F938F938FE796E09F938F93CC |
:10479000FF92EF92E091FE03F091FF0309958CE305 |
:1047A000809344028DB79EB708968DBF8091C9064D |
:1047B000E82FFF27EE0FFF1FED5AF94F80819181FF |
:1047C00082599F4F9F938F938091C806E82FFF27B0 |
:1047D000EE0FFF1FED5AF94F8081918182599F4F53 |
:1047E0009F938F938FE896E0D3C4109244028FE991 |
:1047F00096E09F938F930DEB10E2FF92EF92FE01F4 |
:104800000995809102010F900F900F900F908A30C0 |
:1048100009F0A1C084E180934402809153039091F8 |
:1048200054039C0197FF02C0295F3F4F287F821BE2 |
:10483000930B9F938F93809153039091540397FD13 |
:10484000079673E0959587957A95E1F79F938F93F7 |
:10485000209153033091540337FF02C0295F3F4F2B |
:1048600063E0359527956A95E1F78091250290914F |
:104870002602821B930B9F938F938DEA96E09F9362 |
:104880008F931F930F93E091FE03F091FF0309951F |
:1048900088E2809344028DB79EB70A968DBF8091BF |
:1048A0005103909152039C0197FF02C0295F3F4F33 |
:1048B000287F821B930B9F938F938091510390913C |
:1048C000520397FD079653E0959587955A95E1F722 |
:1048D0009F938F93209151033091520337FF02C071 |
:1048E000295F3F4F43E0359527954A95E1F7809141 |
:1048F000230290912402821B930B9F938F938EEB44 |
:1049000096E09F938F931F930F93E091FE03F09196 |
:10491000FF0309958CE3809344022DB73EB7265FD1 |
:104920003F4F2DBF80914F03909150039F938F93E2 |
:1049300080914F03909150032091210230912202E7 |
:10494000821B930B9F938F938FEC96E09F938F9393 |
:104950001F930F93B6C38B3019F0843109F0ADC0AB |
:1049600084E18093440280915303909154039C010D |
:1049700097FF02C0215F3F4F207F821B930B97FD63 |
:104980000196959587959F938F938091530390916E |
:10499000540397FD0F9624E0959587952A95E1F7A6 |
:1049A0009F938F93209153033091540337FF02C09C |
:1049B000295F3F4F83E0359527958A95E1F78091F0 |
:1049C000250290912602821B930B9F938F938DED6E |
:1049D00096E09F938F931F930F93E091FE03F091C6 |
:1049E000FF03099588E2809344022DB73EB7265F06 |
:1049F0003F4F2DBF80915103909152039C0197FF2F |
:104A000002C0215F3F4F207F821B930B97FD0196D1 |
:104A1000959587959F938F93809151039091520321 |
:104A200097FD0F96B4E095958795BA95E1F79F931A |
:104A30008F93209151033091520337FF02C0295FB9 |
:104A40003F4FA3E035952795AA95E1F78091230282 |
:104A500090912402821B930B9F938F938FEE96E08D |
:104A60009F938F931F930F93E091FE03F091FF03A9 |
:104A700009958CE3809344028DB79EB70A968DBF4B |
:104A800080914F039091500397FD019695958795DE |
:104A90009F938F9380914F03909150032091210217 |
:104AA00030912202821B930B9F938F9381E097E0BA |
:104AB0009F938F931F930F936FC38D3009F07BC526 |
:104AC00084E18093440280911A0199279F938F93E8 |
:104AD000809153039091540397FD0F96E4E09595D0 |
:104AE0008795EA95E1F79F938F9320915303309137 |
:104AF000540337FF02C0295F3F4F73E03595279578 |
:104B00007A95E1F78091250290912602821B930B02 |
:104B10009F938F9380E197E09F938F931F930F93C1 |
:104B2000E091FE03F091FF03099588E2809344022F |
:104B30008DB79EB70A968DBF8091190199279F93D3 |
:104B40008F93809151039091520397FD0F9664E0EB |
:104B5000959587956A95E1F79F938F9320915103DF |
:104B60003091520337FF02C0295F3F4F53E0359524 |
:104B700027955A95E1F78091230290912402821B98 |
:104B8000930B9F938F9384E297E09F938F931F9350 |
:104B90000F93E091FE03F091FF0309958CE380935E |
:104BA00044022DB73EB7265F3F4F2DBF80911801BD |
:104BB00099279F938F9380914F039091500397FD76 |
:104BC0000196959587959F938F9380914F03909130 |
:104BD00050032091210230912202821B930B9F935C |
:104BE0008F9388E397E09F938F931F930F93E091A8 |
:104BF000FE03F091FF0309958DB79EB70A966FC328 |
:104C0000109244028CE497E09F938F93FF92EF926F |
:104C1000FE01099584E1809344020F900F900F905C |
:104C20000F908091490390914A039F938F938091B5 |
:104C30001D0290911E029F938F9389E597E09F93A9 |
:104C40008F93FF92EF92E091FE03F091FF0309959D |
:104C500088E2809344022DB73EB7285F3F4F2DBFB7 |
:104C600080914703909148039F938F9380911F02F7 |
:104C7000909120029F938F9388E697E09F938F9364 |
:104C8000FF92EF92E091FE03F091FF0309958CE310 |
:104C9000809344028DB79EB708968DBF80914103E3 |
:104CA00090914203A0914303B0914403BC01CD0114 |
:104CB0000E94226FDC01CB019F938F9380914A0762 |
:104CC00090914B079F938F9387E797E061C2109273 |
:104CD000440280912501909126016AE070E00E94D3 |
:104CE000F86F9F938F9380912501909126016AE040 |
:104CF00070E00E94F86F7F936F9386E897E09F9330 |
:104D00008F93FF92EF92FE01099584E18093440214 |
:104D10008DB79EB708968DBF8091FF0790910008D0 |
:104D20006AE070E00E94E46F9F938F938091FF0789 |
:104D3000909100086AE070E00E94E46F7F936F93A7 |
:104D40008AE997E09F938F93FF92EF92E091FE03A1 |
:104D5000F091FF03099588E2809344022DB73EB796 |
:104D6000285F3F4F2DBF80910108909102089F93CB |
:104D70008F938EEA97E09F938F93FF92EF92E0914B |
:104D8000FE03F091FF0309958CE3809344028DB7F5 |
:104D90009EB706968DBF80910308909104089F935B |
:104DA0008F938EEB97E09F938F93FF92EF92E0911A |
:104DB000FE03F091FF0309952DB73EB72A5F3F4FE1 |
:104DC000F4C11092440280ED97E09F938F93FF927D |
:104DD000EF92FE01099584E1809344020F900F90B9 |
:104DE0000F900F9080915306909154069F938F934C |
:104DF00089ED97E09F938F93FF92EF92E091FE03EE |
:104E0000F091FF03099588E2809344028DB79EB725 |
:104E100006968DBF8091EF0299279F938F9389EE1D |
:104E200097E09F938F93FF92EF92E091FE03F091B2 |
:104E3000FF0309958CE3809344022DB73EB72A5FA8 |
:104E40003F4F2DBF80915206992701979F938F93D3 |
:104E500089EF97E0FECA1092440289E098E09F93A0 |
:104E60008F93FF92EF92FE01099584E180934402B3 |
:104E70000F900F900F900F908091FD029091FE0285 |
:104E80009F938F9381E198E09F938F93FF92EF928E |
:104E9000E091FE03F091FF03099588E280934402BC |
:104EA0002DB73EB72A5F3F4F2DBF809101039091F0 |
:104EB00002039F938F938FE198E09F938F93FF92CC |
:104EC000EF92E091FE03F091FF0309958CE380934C |
:104ED00044028DB79EB706968DBF8091FF029091D8 |
:104EE00000039F938F938DE298E05DCF1092440270 |
:104EF0008091F00299279F938F938BE398E09F9383 |
:104F00008F93FF92EF92FE01099584E18093440212 |
:104F10008DB79EB706968DBF8091F10299279F931A |
:104F20008F9387E498E09F938F93FF92EF92E091A5 |
:104F3000FE03F091FF03099588E2809344022DB7A8 |
:104F40003EB72A5F3F4F2DBF8091F20299279F9372 |
:104F50008F9383E598E09F938F93FF92EF92E09178 |
:104F6000FE03F091FF0309958CE3809344028DB713 |
:104F70009EB706968DBF8091F30299279F938F93DA |
:104F80008FE598E010CF109244028091F4029927A7 |
:104F90009F938F938BE698E09F938F93FF92EF926E |
:104FA000FE01099584E1809344028DB79EB7069671 |
:104FB0008DBF8091F50299279F938F9387E798E0A3 |
:104FC0009F938F93FF92EF92E091FE03F091FF0386 |
:104FD000099588E2809344022DB73EB72A5F3F4F80 |
:104FE0002DBF8091F60299279F938F9383E898E0D5 |
:104FF0009F938F93FF92EF92E091FE03F091FF0356 |
:1050000009958CE3809344028DB79EB706968DBFB9 |
:105010008091F70299279F938F938FE898E0C3CEF2 |
:10502000109244028BE998E09F938F93FF92EF9246 |
:10503000FE01099584E1809344020F900F900F9038 |
:105040000F908091850199279F938F9383EA98E031 |
:105050009F938F93FF92EF92E091FE03F091FF03F5 |
:10506000099588E2809344028DB79EB706968DBF5E |
:105070008091FA019091FB019F938F9381EB98E0CF |
:105080009F938F93FF92EF92E091FE03F091FF03C5 |
:1050900009958CE3809344022DB73EB72A5F3F4FBA |
:1050A0002DBF8091F00699279F938F938091EF06F3 |
:1050B00099279F938F938FEB98E09F938F93FF9205 |
:1050C000EF92E091FE03F091FF0309958DB79EB733 |
:1050D000089605C1109244028DEC98E09F938F933F |
:1050E000FF92EF92FE01099584E1809344020F90B4 |
:1050F0000F900F900F9080918504992787FD9095D0 |
:105100009F938F9380918404992787FD90959F9317 |
:105110008F938DED98E09F938F93FF92EF92E091A4 |
:10512000FE03F091FF03099588E2809344022DB7B6 |
:105130003EB7285F3F4F2DBF80918604992787FD9A |
:1051400090959F938F938091870499279F938F9336 |
:105150008DEE98E09F938F93FF92EF92E091FE0384 |
:10516000F091FF0309958CE3809344028DB79EB7BD |
:1051700008968DBF80918B0499279F938F93809180 |
:105180008804992787FD90959F938F938DEF98E0E2 |
:105190009F938F93FF92EF92E091FE03F091FF03B4 |
:1051A00009952DB73EB7285F3F4F2DBF04C210921F |
:1051B00044028DE099E09F938F93FF92EF92FE015E |
:1051C000099584E1809344020F900F900F900F9007 |
:1051D00080912F0699278F7790709F938F9380915E |
:1051E0002B0699278F7790709F938F938091270636 |
:1051F00099278F7790709F938F938091230699279B |
:105200008F7790709F938F938DE199E09F938F9309 |
:10521000FF92EF92E091FE03F091FF03099588E27F |
:10522000809344028DB79EB70C968DBF80913F0648 |
:1052300099278F7790709F938F9380913B06992742 |
:105240008F7790709F938F938091370699278F77F0 |
:1052500090709F938F938091330699278F779070EA |
:105260009F938F938EE299E09F938F93FF92EF929B |
:10527000E091FE03F091FF0309958CE380934402D3 |
:105280002DB73EB7245F3F4F2DBF80914F06992722 |
:105290008F7790709F938F9380914B0699278F778C |
:1052A00090709F938F938091470699278F77907086 |
:1052B0009F938F938091430699278F7790709F9348 |
:1052C0008F938FE399E09F938F93FF92EF92E091FA |
:1052D000FE03F091FF0309958DB79EB70C968DBF25 |
:1052E0006AC11092440280E599E09F938F930DEB81 |
:1052F00010E2FF92EF92FE01099584E1809344024F |
:105300000F900F900F900F9080912F06881F882785 |
:10531000881F97E0899FC00111248D969F938F93DA |
:1053200080912B06881F8827881F96E0899FC001DF |
:1053300011248D969F938F9380912706881F88272D |
:10534000881F95E0899FC00111248D969F938F93AC |
:1053500080912306881F8827881F9927880F991F07 |
:10536000880F991F8D969F938F938FE599E09F9358 |
:105370008F93FF92EF92E091FE03F091FF03099566 |
:1053800088E2809344022DB73EB7245F3F4F2DBF84 |
:1053900080913F06881F8827881F9BE0899FC00156 |
:1053A00011248D969F938F9380913B06881F8827A9 |
:1053B000881F9AE0899FC00111248D969F938F9337 |
:1053C00080913706881F8827881F99E0899FC00130 |
:1053D00011248D969F938F9380913306881F882781 |
:1053E000881F992723E0880F991F2A95E1F78D964A |
:1053F0009F938F9383E799E09F938F93FF92EF9210 |
:10540000E091FE03F091FF0309958CE38093440241 |
:105410008DB79EB70C968DBF80914306881F882755 |
:10542000881F9CE0899FC00111248D969F938F93C4 |
:1054300087E899E09F938F93FF92EF92E091FE03AC |
:10544000F091FF030995809147062DB73EB72A5F7B |
:105450003F4F2DBF87FF12C080E48093440288E94C |
:1054600099E09F938F93FF92EF92E091FE03F0916A |
:10547000FF0309950F900F900F900F9080914B06AE |
:1054800087FF12C084E4809344028BE999E09F93E4 |
:105490008F931F930F93E091FE03F091FF03099503 |
:1054A0000F900F900F900F9080914F0687FF83C051 |
:1054B00088E4809344028EE999E09F938F931F9331 |
:1054C0000F93E091FE03F091FF0309950F900F9069 |
:1054D0000F900F9070C01092440281EA99E09F9360 |
:1054E0008F93FF92EF92FE01099584E1809344022D |
:1054F0000F900F900F900F908091D2019091D30157 |
:105500009F938F938FEA99E09F938F93FF92EF92EF |
:10551000E091FE03F091FF03099588E28093440235 |
:105520008DB79EB706968DBF8091D4019091D5011D |
:105530009F938F938CEB99E09F938F93FF92EF92C1 |
:10554000E091FE03F091FF03099589E48093440202 |
:105550002DB73EB72A5F3F4F2DBF89EC99E09F934F |
:105560008F93FF92EF92E091FE03F091FF03099574 |
:10557000809142020F900F900F900F9083FF1BC0FD |
:105580001092D5011092D401AEE0B0E080E0082E78 |
:105590000E949270AFE0B0E08091D401082E0E948A |
:1055A000927009C080912701281719F42150209387 |
:1055B00027011092430210924202E6E0CDB7DEB717 |
:1055C0000C9470701092B9008AE28093B80008952C |
:1055D00085EA8093BC00089584E98093BC00089517 |
:1055E0001092B9008093BB0085E88093BC000895B9 |
:1055F0000E94EC2A10924A028091BB00109249024C |
:1056000080E88093BC001092BD001092BA00109206 |
:10561000BB001092B9001092B8000E94E22A0E94CA |
:10562000E82A80E00E94F02A08958093BB0085E874 |
:105630008093BC00089585EC8093BC00089585E8B4 |
:105640008093BC0008951F920F920FB60F92112401 |
:105650002F933F934F935F936F937F938F939F937A |
:10566000AF93BF93EF93FF9380914A02282F332784 |
:10567000442755278F5F80934A02F901273131056E |
:1056800008F0F2C0EF59FF4F0C947F70209149024F |
:10569000E22FFF27EE0FFF1FEE0FFF1FE050FC4F22 |
:1056A00085851816A4F02C3090F4922F9F5FE92F77 |
:1056B000FF27EE0FFF1FEE0FFF1FE050FC4F858509 |
:1056C00018161CF0292F9C3080F39093490280918A |
:1056D00049028C3051F41092490283E080934A02CF |
:1056E00080914802880F8D5AB4C0880F8E5AB1C07D |
:1056F00080914902E82FFF27EE0FFF1FEE0FFF1FDB |
:10570000EE5DF94F8F5F809349028081A2C0809146 |
:10571000B9008033E1F480914B02882321F4809119 |
:10572000490280934B0280914902E82FFF27EE0F38 |
:10573000FF1FEE0FFF1FE15EF94F2081822F992797 |
:105740008F7790708F37910514F42F5F20830E941C |
:10575000EC2A8AE090E09093A00180939F01109240 |
:105760004A026CC08091B900909148028034C1F027 |
:10577000E92FFF27EE0FFF1FEE0FFF1FEE5DF94F22 |
:1057800081818F778183892F8F5F809348028C304E |
:1057900010F0109248020E94EC2A10924A020DC0AA |
:1057A000E92FFF27EE0FFF1FEE0FFF1FEE5DF94FF2 |
:1057B0008181806881830E941B2B80914B028093A2 |
:1057C000470210924B0252C080914802E82FFF27F7 |
:1057D000EE0FFF1FEE0FFF1FEE5DF94F8091BB0034 |
:1057E00082830E941F2B42C090914802E92FFF271D |
:1057F000EE0FFF1FEE0FFF1FEE5DF94F8091BB0014 |
:105800008383892F8F5F809348028C3010F0109231 |
:1058100048020E94EC2A28C080E11BC080911A0136 |
:1058200018C082E116C08091190113C00E94EC2AB1 |
:105830008AE090E09093A00180939F010E94E82A63 |
:1058400015C088E906C084E104C08091180101C038 |
:1058500080E80E94F02A0AC00E94EC2A8AE090E0C8 |
:105860009093A00180939F0110924A028091BC0006 |
:1058700080688093BC00FF91EF91BF91AF919F91A1 |
:105880008F917F916F915F914F913F912F910F90E9 |
:105890000FBE0F901F90189589E1A7E8B6E0E3E5E9 |
:1058A000F6E011821082329611961C921E92129688 |
:1058B000815087FFF6CF1092500310924F03109241 |
:1058C00052031092510310925403109253030895FF |
:1058D0001F920F920FB60F9211240F931F932F93C5 |
:1058E0003F934F935F936F937F938F939F93AF9368 |
:1058F000BF93CF93DF93EF93FF938091210782FDB6 |
:10590000C8C0409186005091870080914D029091CF |
:105910004E02481B590B809186009091870090930E |
:105920004E0280934D02CA018D549440A0914F02C3 |
:10593000B0915002835F9A4178F480914F02809336 |
:105940005206149714F01092780181E090E0909341 |
:10595000500280934F02FCC1AD30B1050CF0F8C18C |
:10596000CA018B5F9040845B914008F074C0425D37 |
:105970005140FD01EA0FFB1FED5AF94F80819181E3 |
:10598000FA01E81BF90BCF01F7FF03C09095819551 |
:105990009F4F06975CF48091EF02883C20F4809141 |
:1059A000EF02865F01C088EC8093EF02FD01EA0FF1 |
:1059B000FB1FED5AF94F808191819C01220F331F0B |
:1059C000280F391F240F351F37FF02C02D5F3F4FAF |
:1059D000E901D595C795D595C795CA0101968C174C |
:1059E0009D0714F4219706C041505040C417D507B5 |
:1059F0000CF421968091EF02833CE0F08D010A0FB8 |
:105A00001B1FF801ED5AF94F808191819E01281BDF |
:105A1000390BC90163E070E00E94F86FCB01880F79 |
:105A2000991F860F971F0957194FD80111969C93FC |
:105A30008E9307C0AA0FBB1FA957B94F11961C928E |
:105A40001E92E0914F02F0915002EE0FFF1FED5AAF |
:105A5000F94FD183C08380914F02909150020196FB |
:105A60009093500280934F02059711F45D9A01C004 |
:105A70005D9880914F02909150028630910511F40B |
:105A80005C9A01C05C98079711F45B9A61C15B98BE |
:105A90005FC14091860050918700809151029091A2 |
:105AA0005202481B590B8091860090918700909379 |
:105AB000520280935102CA018D5494406091BB02FE |
:105AC000835F9A4108F07AC060934C0280914C0247 |
:105AD000843008F453C09091520680914C0298177C |
:105AE00009F04CC05091BC025B3008F43FC01092EA |
:105AF00078011092BB0240E05F31C0F0E42FFF2735 |
:105B0000EE0FFF1F9F0129573D4FDF01AD5AB94FDF |
:105B10008D919C91D9018D939C93DF01A957B94F29 |
:105B20008D919C91EF55FD4F91838083E42FFF274A |
:105B3000EE0FFF1F9F012D5A394FDF01AD5ABD4FA8 |
:105B40008D919C91D90111969C938E93DF01A3595D |
:105B5000BD4F8D919C91E957F94F91838083842F9C |
:105B60008F5F482F8D3040F28093BB028091BC0242 |
:105B70008F3FB9F08F5F8093BC0213C08091BC024D |
:105B8000853620F08AE08093BC0202C01092BC02ED |
:105B9000809102018A3011F0843111F4289A01C0F9 |
:105BA000289881E08093BB028091E502882309F068 |
:105BB000CFC080914C0280935206CAC06D3008F06D |
:105BC0009FC0CA018B5F9040845B914008F07EC00B |
:105BD000425D5140E62FFF27EE0FFF1FED5AFD4FAC |
:105BE00080819181FA01E81BF90BCF0105960B9793 |
:105BF000B0F48091BC028A3120F08091EF02865F80 |
:105C000005C08B3028F08091EF028E5F8093EF0209 |
:105C10008091EF02893C18F088EC8093EF02E62F28 |
:105C2000FF27EE0FFF1FED5AFD4F808191819C01F0 |
:105C3000220F331F280F391F240F351F37FF02C0D3 |
:105C40002D5F3F4FE901D595C795D595C795CA01F9 |
:105C500001968C179D0714F4219706C041505040BF |
:105C6000C417D5070CF421968091EF028E3BD8F033 |
:105C7000E62FFF27EE0FFF1FDF01AD5ABD4F8D91BD |
:105C80009C919E01281B390BC90163E070E00E94C2 |
:105C9000F86FCB01880F991F860F971FE359FD4FAF |
:105CA0009183808308C0E62FFF27EE0FFF1FE35983 |
:105CB000FD4F118210828091BB02E82FFF27EE0F6B |
:105CC000FF1FED5AFD4FD183C08309C080910201AF |
:105CD0008A3011F0843111F4289A01C028988091FB |
:105CE000BB02853011F45D9A05C05D98863011F4D1 |
:105CF0005C9A05C05C98873011F45B9A01C05B9890 |
:105D00008091BB02843120F48F5F8093BB0220C05E |
:105D10008431F1F4809102018A3011F0843111F460 |
:105D2000289A01C028988EE18093BB022CE0C7E836 |
:105D3000D6E0A7E8B2E0E3E5F6E08D919D9191838E |
:105D400080833296198218822296215027FFF5CF40 |
:105D5000FF91EF91DF91CF91BF91AF919F918F9183 |
:105D60007F916F915F914F913F912F911F910F9173 |
:105D70000F900FBE0F901F90189581E08093C4067E |
:105D800082E08093C30683E08093C20684E0809320 |
:105D9000C50685E08093C60686E08093C70687E047 |
:105DA0008093C80688E08093C90689E08093CA067C |
:105DB0008AE08093CB068BE08093CC068CE08093C6 |
:105DC000CD0608951F938AE68093CE0661E0609326 |
:105DD00021075EE15093CF068FEF8093D1068AE0D2 |
:105DE0008093D2065093D0065093D40685E08093DA |
:105DF000D50680E48093D6061092D70684E180937E |
:105E0000D3068EE08093D806F0E1F093D9061CE02B |
:105E10001093DA06A8E0A093DB0686EE8093DC06FA |
:105E20005093DD0680E88093DE0640E54093DF0670 |
:105E300096E99093E00683E08093E1064093E206C2 |
:105E40009093E30681E28093E40683E28093E50683 |
:105E50005093E60670E27093E8061092E9061092FD |
:105E6000EA061092EB061092EC06109204071092CC |
:105E70000507109206071092070724E62093ED0607 |
:105E800038E23093EE06609320071092EF0697EF0A |
:105E90009093F006E6E0E093F5068DE78093F60632 |
:105EA0008093F7068093F8062093F1063093F2066C |
:105EB0001092F3069093F40682E38093F9069AE534 |
:105EC0009093FA068093FB0610921F079093FC06AE |
:105ED0004093FD066093FE0685E58093FF06809360 |
:105EE0000007F093010770930207209303078FE5E3 |
:105EF0008093080783EF80930A078AEA80930C0750 |
:105F000080930D078FE08093090780930B078EEF36 |
:105F100080930E0720930F0790931007909311071B |
:105F2000909312078BE48093130780931407809358 |
:105F3000150710921607E0931707A0931807909380 |
:105F4000190750931A0720931B0720931C0784E01E |
:105F500080931D076093E706A1EAB1E0E2E2F7E073 |
:105F60000D9001921A95E1F71F9108958AE68093AA |
:105F7000CE06E1E0E09321076EE16093CF068FEF5C |
:105F80008093D1069AE09093D2066093D0066093F6 |
:105F9000D40685E08093D50680E48093D6061092DF |
:105FA000D7068FE08093D3069093D80680E1809344 |
:105FB000D90676E07093DA06F8E0F093DB0686EE19 |
:105FC0008093DC066093DD0680E88093DE062AE598 |
:105FD0002093DF0698E79093E00683E08093E10644 |
:105FE0002093E2069093E30681E28093E40683E245 |
:105FF0008093E5066093E60650E25093E80610921F |
:10600000E9061092EA061092EB061092EC06109246 |
:10601000040710920507109206071092070744E63E |
:106020004093ED0638E23093EE06E093200710929D |
:10603000EF0697EF9093F0067093F5068DE7809347 |
:10604000F6068093F7068093F8064093F1063093A6 |
:10605000F2061092F3069093F40682E38093F90619 |
:106060002093FA068093FB0610921F072093FC06EC |
:1060700080E58093FD068CE38093FE0685E58093A2 |
:10608000FF068093000750930107509302079BE49B |
:10609000909303078FE58093080783EF80930A07A7 |
:1060A0008AEA80930C0780930D0784E180930907A7 |
:1060B00080930B078EEF80930E0740930F0720937A |
:1060C00010072093110720931207909313079093C2 |
:1060D0001407909315071092160770931707F09303 |
:1060E00018072093190760931A0740931B074093E2 |
:1060F0001C0784E080931D07E093E7068CE0A8EA84 |
:10610000B1E0E2E2F7E00D9001928A95E1F708959F |
:106110008AE68093CE0671E0709321074EE14093AA |
:10612000CF068FEF8093D1068AE08093D20640930A |
:10613000D0064093D40685E08093D50680E4809312 |
:10614000D6061092D7068FE08093D30668E060935E |
:10615000D80620E12093D90656E05093DA066093E2 |
:10616000DB0686EE8093DC064093DD0680E88093B4 |
:10617000DE0634E63093DF0698E79093E00683E08E |
:106180008093E1063093E2069093E30681E28093E8 |
:10619000E40683E28093E50684E18093E60620939B |
:1061A000E8061092E9061092EA061092EB061092A9 |
:1061B000EC06109204071092050710920607109241 |
:1061C00007073093ED0628E22093EE067093200730 |
:1061D0001092EF0697EF9093F0065093F5068DE737 |
:1061E0008093F6068093F7068093F8063093F106C5 |
:1061F0002093F2061092F3069093F40692E39093A4 |
:10620000F9062AE52093FA069093FB0610921F07E1 |
:106210002093FC0680E58093FD0686E48093FE06CD |
:1062200085E58093FF068093000780E28093010755 |
:1062300080930207909303078FE58093080783EF0D |
:1062400080930A078AEA80930C0780930D07409396 |
:10625000090740930B078EEF80930E0730930F07CB |
:106260002093100720931107209312078BE480934B |
:106270001307809314078093150710921607509305 |
:106280001707609318072093190740931A07309354 |
:106290001B0730931C0784E080931D077093E7066B |
:1062A0008CE0A0EBB1E0E2E2F7E00D9001928A957C |
:1062B000E1F708956817790754F4680F791F77FF9D |
:1062C00002C06F5F7F4FCB01959587950895681B3E |
:1062D000790B861B970B08951F93CF93DF93182F8D |
:1062E000EB018091E5028823A1F411501F3F89F052 |
:1062F000D093FF01C093FE018091FE019091FF01B8 |
:10630000892BD1F7CE018C0F9D1F0E9405171150CC |
:1063100078F7DF91CF911F910895A3E1B0E0E3E911 |
:10632000F1E30C94487080914F03909150032091B9 |
:10633000210230912202821B930B9093830780935A |
:10634000820780912B0290912C0297FD07969C0169 |
:1063500053E0359527955A95E1F730934007209300 |
:106360003F078091290290912A0297FD079643E00A |
:10637000959587954A95E1F790933107809330077B |
:1063800030934D0720934C07909343078093420727 |
:1063900080917D0790917E07AA2797FDA095BA2F3F |
:1063A0007C018D01EE0CFF1C001F111FE80EF91E71 |
:1063B0000A1F1B1F80911D0290911E029C01442701 |
:1063C00037FD4095542FDA01C901F2E0880F991F7B |
:1063D000AA1FBB1FFA95D1F7820F931FA41FB51FE9 |
:1063E000820F931FA41FB51FE80EF91E0A1F1B1F63 |
:1063F00017FF08C023E030E040E050E0E20EF31E5B |
:10640000041F151FE2E015950795F794E794EA95A8 |
:10641000D1F7F0927E07E0927D0780918D079091F1 |
:106420008E07AA2797FDA095BA2F7C018D01EE0C4F |
:10643000FF1C001F111FE80EF91E0A1F1B1F809171 |
:106440001F02909120029C01442737FD4095542F54 |
:10645000DA01C90162E0880F991FAA1FBB1F6A9564 |
:10646000D1F7820F931FA41FB51F820F931FA41F84 |
:10647000B51FE80EF91E0A1F1B1F17FF08C083E097 |
:1064800090E0A0E0B0E0E80EF91E0A1F1B1F82E0BA |
:1064900015950795F794E7948A95D1F7F0928E07B2 |
:1064A000E0928D0780914A0790914B07AA2797FDAC |
:1064B000A095BA2F9C01AD01220F331F441F551F19 |
:1064C000280F391F4A1F5B1F80911B0290911C02ED |
:1064D000AA2797FDA095BA2F280F391F4A1F5B1FC7 |
:1064E00057FF04C02D5F3F4F4F4F5F4FF2E0559570 |
:1064F000479537952795FA95D1F730934B07209319 |
:106500004A0720911D0230911E02C901880F991F70 |
:10651000880F991F820F931F820F931F9C0144279E |
:1065200037FD4095542F80912B0390912C03A0911F |
:106530002D03B0912E03820F931FA41FB51F8093CC |
:106540002B0390932C03A0932D03B0932E03209143 |
:106550001F0230912002C901880F991F880F991FCF |
:10656000820F931F820F931F9C01442737FD409594 |
:10657000542F8091270390912803A0912903B09173 |
:106580002A03820F931FA41FB51F809327039093A4 |
:106590002803A0932903B0932A0380915607909172 |
:1065A000570720911D0230911E02820F931F909376 |
:1065B0005707809356078091850790918607209111 |
:1065C0001F0230912002820F931F909386078093C1 |
:1065D0008507809145039091460301969093460369 |
:1065E000809345038091230390912403A091250378 |
:1065F000B0912603BC01CD010E943F6F5B016C018D |
:106600008091150690911606AA2797FDA095BA2F9E |
:10661000BC01CD010E943F6F7B018C018091410341 |
:1066200090914203A0914303B09144039C01AD01BA |
:10663000C801B7010E94DF6EDC01CB019C01AD01F6 |
:10664000C601B5010E94E06EDC01CB01BC01CD01A9 |
:106650000E94226FDC01CB018093230390932403DB |
:10666000A0932503B09326038FEC80937A001092B9 |
:106670001701209113033091140340911503509199 |
:10668000160329873A874B875C8729543B4641404C |
:1066900050402CF028E43BE641E050E00DC08985F5 |
:1066A0009A85AB85BC85885B9449AE4FBF4F4CF44F |
:1066B00028EB34E94EEF5FEF2D833E834F835887FD |
:1066C00008C089859A85AB85BC858D839E83AF8301 |
:1066D000B88720911B0330911C0340911D035091FA |
:1066E0001E032D873E874F87588B29543B464140D8 |
:1066F00050402CF028E43BE641E050E00DC08D8591 |
:106700009E85AF85B889885B9449AE4FBF4F4CF4E6 |
:1067100028EB34E94EEF5FEF29833A834B835C83A8 |
:1067200008C08D859E85AF85B88989839A83AB83A0 |
:10673000BC83A0918207B0918307BA8BA98BFD011E |
:10674000CF01AA2797FDA095BA2FA0900B03B09078 |
:106750000C03C0900D03D0900E03A80EB91ECA1EE4 |
:10676000DB1EA0920B03B0920C03C0920D03D092DB |
:106770000E03E0908907F0908A0700918B07109133 |
:106780008C07E80EF91E0A1F1B1FE0928907F09282 |
:106790008A0700938B0710938C07F091D802FB8B2C |
:1067A000FF2309F098C18091D702882309F093C193 |
:1067B0008091CE0686FF8FC180913007909131077E |
:1067C000AA2797FDA095BA2FBC01CD0129813A8156 |
:1067D0004B815C810E94B96F9B01AC0197FF04C0A3 |
:1067E0002150384F4F4F5F4F6BE055954795379588 |
:1067F00027956A95D1F780918101682E77248824A6 |
:106800009924CA01B901A40193010E94B96FDC0166 |
:10681000CB0180935F0390936003A0936103B093D7 |
:106820006203B7FF04C08150904FAF4FBF4F1C01B0 |
:106830002D013CE055944794379427943A95D1F72D |
:1068400020925F0330926003409261035092620392 |
:1068500080913F0790914007AA2797FDA095BA2FF6 |
:10686000BC01CD012D813E814F8158850E94B96FB9 |
:1068700097FF04C06150784F8F4F9F4F2BE0959545 |
:106880008795779567952A95D1F7A40193010E9482 |
:10689000B96FDC01CB018093630390936403A093F1 |
:1068A0006503B0936603B7FF04C08150904FAF4FAC |
:1068B000BF4F9C01AD018CE05595479537952795C5 |
:1068C0008A95D1F720936303309364034093650363 |
:1068D0005093660380915F03909160039093BC0690 |
:1068E0008093BB0680916303909164039093C006EC |
:1068F0008093BF0622193309440955092093630385 |
:10690000309364034093650350936603E20EF31ED5 |
:10691000041F151FE0928907F0928A0700938B07E6 |
:1069200010938C07809180018823B1F457FF04C035 |
:106930002F5F3F4F4F4F5F4F5595479537952795A1 |
:10694000A21AB30AC40AD50AA0920B03B0920C0390 |
:10695000C0920D03D0920E0329893A89790100274C |
:10696000F7FC0095102F8091630390916403A09130 |
:106970006503B0916603E80EF91E0A1F1B1FC801CC |
:10698000B70129813A814B815C810E94B96F9B01DB |
:10699000AC0197FF04C02150384F4F4F5F4FBBE011 |
:1069A0005595479537952795BA95D1F780918201EE |
:1069B000A82EBB24CC24DD24CA01B901A60195016F |
:1069C0000E94B96FDC01CB01809357039093580369 |
:1069D000A0935903B0935A03B7FF04C08150904F5E |
:1069E000AF4FBF4F3C014D01ACE095948794779435 |
:1069F0006794AA95D1F760925703709258038092DA |
:106A0000590390925A03C801B7012D813E814F81ED |
:106A100058850E94B96F97FF04C06150784F8F4F1F |
:106A20009F4FFBE09595879577956795FA95D1F7F8 |
:106A3000A60195010E94B96FDC01CB0180935B0335 |
:106A400090935C03A0935D03B0935E03B7FF04C013 |
:106A50008150904FAF4FBF4FAC01BD01ECE0759539 |
:106A6000679557954795EA95D1F740935B03509307 |
:106A70005C0360935D0370935E0329893A8937FF55 |
:106A800003C0309521953F4F21343105E4F1D40105 |
:106A9000C30197FE07C0B095A095909581959F4F33 |
:106AA000AF4FBF4F81389105A105B10584F4DB01DB |
:106AB000CA0177FF07C0B095A095909581959F4F2B |
:106AC000AF4FBF4F81389105A105B105E4F081E0DA |
:106AD0008093FB0218C01092C0061092BF0610925D |
:106AE000BC061092BB0610925B0310925C031092DE |
:106AF0005D0310925E031092570310925803109298 |
:106B0000590310925A0380915B0390915C03A0910A |
:106B10005D03B0915E03BC01CD0124E630E040E0AE |
:106B200050E00E942D70E0905703F0905803E21A55 |
:106B3000F30AF0923E07E0923D078091570390914F |
:106B40005803A0915903B0915A03BC01CD0124E62A |
:106B500030E040E050E00E942D70DA01C901209140 |
:106B60005B0330915C038C01021B130B1093330702 |
:106B7000009332078091790190917A01A0917B0175 |
:106B8000B0917C01BC01CD0128E631E040E050E04D |
:106B90000E94B96F2091890730918A0740918B0735 |
:106BA00050918C07261737074807590764F0261BB2 |
:106BB000370B480B590B2093890730938A07409372 |
:106BC0008B0750938C072091890730918A07409159 |
:106BD0008B0750918C0757FF0CC0260F371F481F9B |
:106BE000591F2093890730938A0740938B0750934E |
:106BF0008C0760913007709131076E0D7F1D9B01EE |
:106C0000442737FD4095542F80910F039091100336 |
:106C1000A0911103B0911203820F931FA41FB51FFF |
:106C200080930F0390931003A0931103B09312036A |
:106C30008091DB029091DC02681B790BCB01AA27C3 |
:106C400097FDA095BA2F29853A854B855C85820FE3 |
:106C5000931FA41FB51F8093130390931403A09355 |
:106C60001503B0931603C0909501D0909601E09063 |
:106C70009701F0909801C816D906EA06FB06C4F4FD |
:106C800088EA91E6A0E0B0E08C199D09AE09BF0941 |
:106C90008093130390931403A0931503B0931603EA |
:106CA00080930F0390931003A0931103B0931203EA |
:106CB00022273327A9012C193D094E095F0980912C |
:106CC000130390911403A0911503B091160382173A |
:106CD0009307A407B507B4F4D701C601885A9146B3 |
:106CE000A040B0408093130390931403A093150326 |
:106CF000B093160380930F0390931003A093110396 |
:106D0000B093120360913F0770914007600F711FAD |
:106D10009B01442737FD4095542F80911703909194 |
:106D20001803A0911903B0911A03820F931FA41F97 |
:106D3000B51F8093170390931803A0931903B09382 |
:106D40001A038091D9029091DA02681B790BCB016A |
:106D5000AA2797FDA095BA2F2D853E854F85588986 |
:106D6000820F931FA41FB51F80931B0390931C03D6 |
:106D7000A0931D03B0931E03E0909901F0909A0137 |
:106D800000919B0110919C01E816F9060A071B0768 |
:106D9000C4F488EA91E6A0E0B0E08E199F09A00B48 |
:106DA000B10B80931B0390931C03A0931D03B0931E |
:106DB0001E038093170390931803A0931903B093B5 |
:106DC0001A0322273327A9012E193F09400B510B23 |
:106DD00080911B0390911C03A0911D03B0911E0391 |
:106DE00082179307A407B507B4F4D801C701885ADE |
:106DF0009146A040B04080931B0390931C03A09346 |
:106E00001D03B0931E038093170390931803A09360 |
:106E10001903B0931A0380910B0390910C03A09176 |
:106E20000D03B0910E0380931F0390932003A09352 |
:106E30002103B093220380911B0390911C03A09126 |
:106E40001D03B0911E0380933B0390933C03A093DA |
:106E50003D03B0933E038091130390911403A091DE |
:106E60001503B09116038093330390933403A093DA |
:106E70003503B09336038091170390911803A091C6 |
:106E80001903B0911A038093370390933803A093AA |
:106E90003903B0933A0380910F0390911003A091AE |
:106EA0001103B091120380932F0390933003A093AA |
:106EB0003103B0933203809123019091240197FD17 |
:106EC000079633E0959587953A95E1F790934007BB |
:106ED00080933F07809121019091220197FD0796B1 |
:106EE00023E0959587952A95E1F790933107809354 |
:106EF000300780912502909126020F9734F488E1A3 |
:106F00009CEF9093400780933F07809125029091DA |
:106F10002602079734F480E398EF9093400780931C |
:106F20003F07209102012A30A9F480912502909117 |
:106F30002602835F934034F088EE93E090934007FD |
:106F400080933F0780912502909126028A5F9340AB |
:106F5000DCF014C08091250290912602815D97405B |
:106F600034F088EE93E09093400780933F07809140 |
:106F7000250290912602805E974034F080ED97E0E4 |
:106F80009093400780933F078091230290912402C1 |
:106F90000F9734F488E19CEF90933107809330078A |
:106FA0008091230290912402079734F480E398EFB4 |
:106FB00090933107809330072A30A9F480912302FF |
:106FC00090912402835F934034F088EE93E0909395 |
:106FD00031078093300780912302909124028A5FC9 |
:106FE0009340DCF014C08091230290912402815DD3 |
:106FF000974034F088EE93E0909331078093300708 |
:107000008091230290912402805E974034F080EDBD |
:1070100097E09093310780933007E0918C01EE2345 |
:1070200009F4B7C040912301509124018091670376 |
:1070300090916803481B590B50936E0340936D0366 |
:107040002091230130912401280F391F37FF02C0FE |
:107050002F5F3F4F35952795309368032093670343 |
:10706000413851051CF080E890E005C040585F4F62 |
:1070700034F480E89FEF90936E0380936D038E2F1E |
:107080009927A0916D03B0916E03A89FA001A99FBD |
:10709000500DB89F500D112457FF02C0415F5F4F44 |
:1070A00084E0559547958A95E1F780913F07909147 |
:1070B0004007840F951F9093400780933F0760918E |
:1070C0002101709122018091690390916A03681BEC |
:1070D000790B70936C0360936B0340912101509185 |
:1070E0002201480F591F57FF02C04F5F5F4F559550 |
:1070F000479550936A0340936903613871051CF00A |
:1071000080E890E005C060587F4F34F480E89FEF3E |
:1071100090936C0380936B032E2F332780916B0326 |
:1071200090916C03829FB001839F700D929F700DB0 |
:107130001124AB0177FF02C0415F5F4F14E055950A |
:1071400047951A95E1F78091300790913107840FA8 |
:10715000951F9093310780933007A29FC001A39F92 |
:10716000900DB29F900D11249C018091230190916C |
:107170002401820F931F9093240180932301809117 |
:10718000210190912201860F971F909322018093F5 |
:10719000210100914207109143078091BB06909115 |
:1071A000BC06101611065CF59C0197FF04C022274F |
:1071B0003327281B390BC901AA2797FDA095BA2FA1 |
:1071C00020918001332744275527BC01CD010E941F |
:1071D000B96F9B01AC0197FF04C0215C3F4F4F4F3B |
:1071E0005F4FF6E05595479537952795FA95D1F776 |
:1071F00080913D0790913E07820F931F27C097FF14 |
:1072000003C0909581959F4FAA2797FDA095BA2F0F |
:1072100020918001332744275527BC01CD010E94CE |
:10722000B96F9B01AC0197FF04C0215C3F4F4F4FEA |
:107230005F4FE6E05595479537952795EA95D1F745 |
:1072400080913D0790913E07821B930B90933E07E0 |
:1072500080933D07E0904C07F0904D078091BF066A |
:107260009091C0061E141F045CF59C0197FF04C09A |
:1072700022273327281B390BC901AA2797FDA09580 |
:10728000BA2F20918001332744275527BC01CD0117 |
:107290000E94B96F9B01AC0197FF04C0215C3F4F76 |
:1072A0004F4F5F4F76E055954795379527957A95DF |
:1072B000D1F78091320790913307820F931F27C037 |
:1072C00097FF03C0909581959F4FAA2797FDA095A2 |
:1072D000BA2F20918001332744275527BC01CD01C7 |
:1072E0000E94B96F9B01AC0197FF04C0215C3F4F26 |
:1072F0004F4F5F4F66E055954795379527956A95AF |
:10730000D1F78091320790913307821B930B9093B2 |
:107310003307809332078091CE0687FF44C09B8954 |
:10732000992309F040C08091D7028823E1F5A1E0BC |
:10733000EA16A1E0FA064CF080913F0790914007D1 |
:107340008E0D9F1D805091400DC0B0E0EB16BFEF39 |
:10735000FB0664F480913F07909140078E0D9F1DBE |
:1073600080509F4F9093400780933F07E1E00130AA |
:107370001E074CF08091300790913107800F911FCC |
:10738000805091400CC0FFEF00301F0764F48091E3 |
:10739000300790913107800F911F80509F4F90933D |
:1073A000310780933007A0EFB2E066EC76E057E05B |
:1073B000FB018191BF01E82FFF27EE0FFF1FED5A60 |
:1073C000F94F0190F081E02DE259FF4FEF3FF105B9 |
:1073D00021F01CF0EFEFF0E004C0F7FF02C0E0E0A6 |
:1073E000F0E04C91242F3327E217F307B1F0CF01DF |
:1073F000821B930B97FD079633E0959587953A95F9 |
:10740000E1F7242F280F2C93822F9927E817F907EB |
:1074100014F4215001C02F5F2C935150119657FF47 |
:10742000C7CFE2E1CD5E0C946470CF93DF9380917F |
:1074300002018D3011F40E948F1B10927A0080910E |
:107440002502909126029093400780933F078091F8 |
:10745000230290912402909331078093300780910A |
:10746000210290912202909383078093820780915A |
:107470001D0290911E029C01442737FD4095542F18 |
:10748000DA01C90172E0880F991FAA1FBB1F7A9504 |
:10749000D1F7820F931FA41FB51F820F931FA41F44 |
:1074A000B51F90937E0780937D0780911F02909176 |
:1074B00020029C01442737FD4095542FDA01C90171 |
:1074C00062E0880F991FAA1FBB1F6A95D1F7820F30 |
:1074D000931FA41FB51F820F931FA41FB51F909366 |
:1074E0008E0780938D0780911B0290911C029093D0 |
:1074F0004B0780934A078FEC80937A00A0EFB2E0AD |
:10750000C6ECD6E097E08991E82FFF27EE0FFF1F2A |
:10751000ED5AF94F0190F081E02DE259FF4F1E1610 |
:107520001F061CF0E0E0F0E005C0EF3FF10514F0AD |
:10753000EFEFF0E08C91282F3327E217F30714F4D4 |
:10754000815004C02E173F0714F48F5F8C93915025 |
:10755000119697FFD8CF8091FF069927AA27BB27BE |
:10756000BC01CD0124EC39E040E050E00E94B96F4D |
:10757000DC01CB018093990190939A01A0939B0128 |
:10758000B0939C01809100079927AA27BB27BC01D3 |
:10759000CD010E94B96FDC01CB01809395019093DE |
:1075A0009601A0939701B0939801DF91CF91089530 |
:1075B000A0E0B0E0EEEDFAE30C944C70C0E0D0E057 |
:1075C0007E016E01469AD0934A03C0934903D0933B |
:1075D0004803C093470380E090E0A0E0B0E08093D0 |
:1075E000410390934203A0934303B0934403D09389 |
:1075F0005403C0935303D0935203C0935103D093C9 |
:107600005003C0934F03D0935E07C0935D07109261 |
:10761000820110928101109215020E94153A84E6AF |
:1076200090E00E9412170E94153A8091CE0680FFCA |
:1076300010C080911B0190911C01875B934038F42E |
:1076400080911B0190911C018E5E924010F40E946B |
:107650003E1B1FE18AE090E00E94121780912102F8 |
:1076600090912202C80FD91F809125029091260285 |
:10767000E80EF91E8091230290912402C80ED91EB3 |
:10768000115017FFE7CFA701405F5F4F5695479511 |
:107690005695479550935403409353039601205FAA |
:1076A0003F4F369527953695279530935203209373 |
:1076B0005103CE01409615E0969587951A95E1F70E |
:1076C0009093500380934F0390935E0780935D07E0 |
:1076D00030934E0320934D0350934C0340934B0340 |
:1076E00044E050E0DA010E948570802D853038F149 |
:1076F00080918D0790918E0797FF03C0909581959B |
:107700009F4F6CE070E00E94F86F709348036093A5 |
:10771000470380917D0790917E0797FF03C0909566 |
:1077200081959F4F6CE070E00E94F86F70934A0360 |
:1077300060934903809115069091160634C0DA01D2 |
:107740000E948570802D9927982F8827DA0111963D |
:107750000E948570202D820F911D90934A03809383 |
:107760004903DA0112960E948570802D9927982F7F |
:107770008827DA0113960E948570202D820F911DB3 |
:107780009093480380934703DA0114960E94857012 |
:10779000802D9927982F8827DA0115960E948570E9 |
:1077A000202D820F911DAA2797FDA095BA2FBC010D |
:1077B000CD010E943F6FDC01CB0180934103909388 |
:1077C0004203A0934303B0934403109240071092E6 |
:1077D0003F071092310710923007109283071092E2 |
:1077E000820784E690E00E94121780911D0290911A |
:1077F0001E02AA2797FDA095BA2F9C01AD01F2E0C9 |
:10780000220F331F441F551FFA95D1F7280F391F38 |
:107810004A1F5B1F280F391F4A1F5B1F30937E07CB |
:1078200020937D0780911F0290912002AA2797FD47 |
:10783000A095BA2F7C018D01E2E0EE0CFF1C001F29 |
:10784000111FEA95D1F7E80EF91E0A1F1B1FE80E5B |
:10785000F91E0A1F1B1FF0928E07E0928D07809180 |
:10786000DD06682E772488249924C9019C014427C9 |
:1078700037FD4095542FC401B3010E94B96F5B01DD |
:107880006C0160933B0370933C0380933D039093A2 |
:107890003E039701442737FD4095542FC401B3019F |
:1078A0000E94B96FDC01CB018093330390933403C2 |
:1078B000A0933503B0933603A0921703B092180338 |
:1078C000C0921903D0921A0380930F039093100370 |
:1078D000A0931103B093120310920B0310920C03A8 |
:1078E00010920D0310920E0380911D0190911E01C4 |
:1078F000A0911F01B0912001909318068093170664 |
:1079000010921402109213021092030310920403B7 |
:1079100010920503109206038091010390910203D7 |
:10792000909300038093FF020E94B25B82E390E099 |
:107930009093FF018093FE018091FF069927AA276B |
:10794000BB27BC01CD0124EC39E040E050E00E94AF |
:10795000B96FDC01CB018856954CAF4FBF4F809378 |
:10796000990190939A01A0939B01B0939C018091FF |
:1079700000079927AA27BB27BC01CD010E94B96F38 |
:10798000DC01CB018856954CAF4FBF4F80939501DA |
:1079900090939601A0939701B093980110927E0165 |
:1079A00010927D018091010390910203AA2797FD17 |
:1079B000A095BA2F2091790130917A0140917B01F5 |
:1079C00050917C01BC01CD010E94B96FDC01CB015B |
:1079D0008093890790938A07A0938B07B0938C07B5 |
:1079E0001092FA021092F90281E0809301010E9444 |
:1079F000D15F8091BE0284608093BE028FEF80933E |
:107A0000FA071092FB0780E28093FC07C0EFD2E0F8 |
:107A1000A6ECB6E017E08D91E82FFF27EE0FFF1FD1 |
:107A2000ED5AF94F8081918182598993115017FF46 |
:107A3000F2CF84E68093EF028091FC01882311F05D |
:107A4000469A579AEEE0CDB7DEB70C9468708091F5 |
:107A5000E5028823F9F48091BE028C7F8093BE02F8 |
:107A6000A2E2B6E0E9E6F4E09BE08091DF01882342 |
:107A700009F4808381918C931496915097FFF5CFF0 |
:107A80008091DF01882359F08091DF01815080933C |
:107A9000DF0105C08091BE0281608093BE028091AB |
:107AA000220699279093EB058093EA05809126069C |
:107AB00099279093ED058093EC0580912A069927EC |
:107AC0009093EF058093EE0580912E069927909371 |
:107AD000F1058093F00510924A02109249020E942B |
:107AE000E82A08958091D006883F38F0EFEFF0E063 |
:107AF000E81BF109E051FD4F808180939201809154 |
:107B00009201882329F0843618F084E6809392014C |
:107B10008091D206883F38F0EFEFF0E0E81BF109E2 |
:107B2000E051FD4F808180939001809190018823E6 |
:107B300029F0843618F084E6809390018091DF0666 |
:107B4000883F38F0EFEFF0E0E81BF109E051FD4F1E |
:107B5000808180938B0180918B018B3010F48AE0BF |
:107B600002C08F3F11F480938B0180910907883FF9 |
:107B700038F0EFEFF0E0E81BF109E051FD4F8081B4 |
:107B80008093580780915807823010F481E002C03A |
:107B90008F3F11F48093580780910B07883F38F08E |
:107BA000EFEFF0E0E81BF109E051FD4F8081809399 |
:107BB000800780918007823010F481E002C08F3FFF |
:107BC00011F4809380078091F606883F38F0EFEF3C |
:107BD000F0E0E81BF109E051FD4F808180935507EB |
:107BE0008091F706883F38F0EFEFF0E0E81BF109ED |
:107BF000E051FD4F80818093C1068091F806883F57 |
:107C000038F0EFEFF0E0E81BF109E051FD4F808123 |
:107C100080935F079091D106983F18F4909391015B |
:107C200009C0EFEFF0E0E91BF109E051FD4F808161 |
:107C300080939101983F18F49093910109C0EFEF60 |
:107C4000F0E0E91BF109E051FD4F80818093910143 |
:107C50008091D406883F38F0EFEFF0E0E81BF1099F |
:107C6000E051FD4F808180938F018091D606883F3F |
:107C700038F0EFEFF0E0E81BF109E051FD4F8081B3 |
:107C800080938D018091DE06883F38F0EFEFF0E0C1 |
:107C9000E81BF109E051FD4F808180938E018091B6 |
:107CA000E006883F38F0EFEFF0E0E81BF109E05123 |
:107CB000FD4F808180938A018091E106883F38F0F2 |
:107CC000EFEFF0E0E81BF109E051FD4F8081809378 |
:107CD0008C018091E206883F38F0EFEFF0E0E81B7E |
:107CE000F109E051FD4F8081809389018091E30685 |
:107CF000883F38F0EFEFF0E0E81BF109E051FD4F6D |
:107D00008081809388018091E806883F38F0EFEF0A |
:107D1000F0E0E81BF109E051FD4F8081809386017E |
:107D20008091E906883F38F0EFEFF0E0E81BF109B9 |
:107D3000E051FD4F80818093D2028091EA06883F16 |
:107D400038F0EFEFF0E0E81BF109E051FD4F8081E2 |
:107D50008093D1028091EB06883F38F0EFEFF0E09E |
:107D6000E81BF109E051FD4F80818093D0028091A2 |
:107D7000EC06883F38F0EFEFF0E0E81BF109E05146 |
:107D8000FD4F80818093CF0280910407883F38F0B7 |
:107D9000EFEFF0E0E81BF109E051FD4F80818093A7 |
:107DA000CE0280910507883F38F0EFEFF0E0E81B46 |
:107DB000F109E051FD4F80818093CD02809106074B |
:107DC000883F38F0EFEFF0E0E81BF109E051FD4F9C |
:107DD00080818093CC0280910707883F38F0EFEFD5 |
:107DE000F0E0E81BF109E051FD4F80818093CB0268 |
:107DF0008091ED06883F38F0EFEFF0E0E81BF109E5 |
:107E0000E051FD4F8081809385018091F106883F8C |
:107E100038F0EFEFF0E0E81BF109E051FD4F808111 |
:107E2000809384018091F906883F38F0EFEFF0E00D |
:107E3000E81BF109E051FD4F80818093830180911F |
:107E4000FC06883F38F0EFEFF0E0E81BF109E05165 |
:107E5000FD4F8081809382018091FD06883F38F03C |
:107E6000EFEFF0E0E81BF109E051FD4F80818093D6 |
:107E700081018091FE06883F38F0EFEFF0E0E81BCB |
:107E8000F109E051FD4F80818093800180910307CB |
:107E9000883F38F0EFEFF0E0E81BF109E051FD4FCB |
:107EA000808180937F0180911E07883F38F0EFEF3B |
:107EB000F0E0E81BF109E051FD4F808180939007CD |
:107EC00080918601282F33272F5F3F4F8CE398E264 |
:107ED000B9010E94F86F70939401609393018091AF |
:107EE000DC06809381078091DB0680934407089528 |
:107EF000A4E1B0E0EEE7FFE30C9448708091BD028E |
:107F000081508093BD02882319F485E08093BD02DF |
:107F10000E948D31309102013C3010F4299A01C049 |
:107F20002998E090E602F090E702FA82E9828091D7 |
:107F3000440799270A96E816F90614F49A83898368 |
:107F40008091EF02843608F05CC080918B039091A1 |
:107F50008C03009731F0019790938C0380938B03EF |
:107F600007C01092E5028091BE028F7E8093BE0210 |
:107F70003A3011F0343111F4289A01C028988091D8 |
:107F8000BF029091C002895E9340C0F18091E506E6 |
:107F9000282F33273A8329838091BE028061809302 |
:107FA000BE028091C206A82FBB27AA0FBB1FFD01EE |
:107FB000E957F94F118210828091C306282F332789 |
:107FC000220F331FC9018957994FFC01118210827A |
:107FD000AD5AB94F11961C921E922D5A394FD901A4 |
:107FE00011961C921E928091C506E82FFF27EE0F76 |
:107FF000FF1FED5AF94F11821082E8C21092E5027C |
:10800000E5C28091EF028D3808F4E0C28091BE0293 |
:108010008F7E8093BE029091E60682E3989FC00116 |
:10802000112490938C0380938B03E981FA81B99793 |
:108030008CF08091E502882369F08091BF029091D5 |
:10804000C002FFEF8F3F9F0729F001969093C00277 |
:108050008093BF028091BF029091C0028F3F910533 |
:1080600009F038F510926F031092700310927103AB |
:10807000109272031092730310927403109275039E |
:10808000109276038A3F9105C9F481E080939103B1 |
:1080900010927703109278031092790310927A036A |
:1080A00010920B0310920C0310920D0310920E030A |
:1080B00005C08091BE0282608093BE028091C4069A |
:1080C000E82FFF27EE0FFF1FED5AF94F80819181B6 |
:1080D000813591050CF4A6C12091E502222309F017 |
:1080E000A1C18091C506E82FFF27EE0FFF1FED5AB3 |
:1080F000F94F808191818C3491050CF404C18091F9 |
:108100008D038F5F80938D03893C08F48BC13C30D5 |
:1081100010F4299801C0299A1092E50210928D035B |
:108120001092C0021092BF023091C206E32FFF27C7 |
:10813000EE0FFF1FED5AF94F808191818734910531 |
:10814000B4F48091C306E82FFF27EE0FFF1FED5A0E |
:10815000F94F808191810190F081E02DF7FF03C0FC |
:10816000F095E195FF4FE734F1050CF478C041E05C |
:108170002091C306A22FBB27AA0FBB1FAD5AB94F30 |
:108180008D919C9111978734910544F0E32FFF273F |
:10819000EE0FFF1FED5AF94F808191818D919C91D7 |
:1081A0008734910574F08091C206E82FFF27EE0F07 |
:1081B000FF1FED5AF94F80819181873491050CF0B2 |
:1081C00042E0E22FFF27EE0FFF1FED5AF94F8081AB |
:1081D00091818634910574F48091C206E82FFF27BF |
:1081E000EE0FFF1FED5AF94F808191818734910581 |
:1081F0000CF043E0E22FFF27EE0FFF1FED5AF94F7F |
:10820000808191818A5B9F4F74F48091C206E82F30 |
:10821000FF27EE0FFF1FED5AF94F808191818734C0 |
:1082200091050CF044E0E22FFF27EE0FFF1FED5AFF |
:10823000F94F808191818A5B9F4F74F48091C206CF |
:10824000E82FFF27EE0FFF1FED5AF94F8081918134 |
:10825000863491050CF445E0842F0E94DA06809163 |
:10826000C306E82FFF27EE0FFF1FED5AF94F80815D |
:1082700091810190F081E02DF7FF03C0F095E19529 |
:10828000FF4F7E97BCF48091C206E82FFF27EE0FC8 |
:10829000FF1FED5AF94F808191818A5B9F4F54F403 |
:1082A00081E080937F0488EE93E09093FF018093B8 |
:1082B000FE01B8C00E9415074CE662EC76E00E9411 |
:1082C000BD0680E00E945C070E942A688091CE066D |
:1082D00080FF10C080911B0190911C01875B93402F |
:1082E00038F480911B0190911C018E5E924010F435 |
:1082F0000E943E1B1092FC010E94D83A81E08093BC |
:10830000FC01579A86C080819181855B9F4F0CF05C |
:1083100087C080918D038F5F80938D03893C08F423 |
:1083200081C03C3010F4299801C0299AA4E0B0E043 |
:108330008FEF082E0E9492701092E50210928D032A |
:108340001092C0021092BF020E94D83AA4E0B0E09E |
:108350008091490390914A0397FF02C081509F4F3B |
:10836000892F990F990B082E0E949270A5E0B0E01A |
:108370008091490390914A03082E0E949270A6E0D2 |
:10838000B0E0809147039091480397FF02C081506D |
:108390009F4F892F990F990B082E0E949270A7E08A |
:1083A000B0E08091470390914803082E0E9492709C |
:1083B00008E010E08091410390914203A0914303B3 |
:1083C000B0914403BC01CD010E94226FDC01CB01BE |
:1083D0009C0197FF02C021503F4F832F992787FDB3 |
:1083E0009A95D801082E0E94927009E010E08091C1 |
:1083F000410390914203A0914303B0914403BC0117 |
:10840000CD010E94226FDC01CB01D801082E0E9411 |
:1084100092700E94150768E770E00E946C3102C0FC |
:1084200020938D038091C406E82FFF27EE0FFF1FD6 |
:10843000ED5AF94F808191818B5A9F4F0CF0C6C045 |
:108440002091E502E091C506222309F0A3C0FF2791 |
:10845000EE0FFF1FED5AF94F80819181855B9F4F91 |
:108460000CF095C080918E038F5F80938E03893CC2 |
:1084700008F4ACC020938E0381E090E09093C0029A |
:108480008093BF0281E08093E502109277031092FF |
:1084900078031092790310927A0310920B031092D2 |
:1084A0000C0310920D0310920E031092070310920A |
:1084B00008031092090310920A038091DD06E82E4A |
:1084C000FF240027112780917D0790917E079C0152 |
:1084D000442737FD4095542FC801B7010E94B96F5A |
:1084E000DC01CB0180931B0390931C03A0931D031D |
:1084F000B0931E0380918D0790918E079C014427B5 |
:1085000037FD4095542FC801B7010E94B96FDC01B7 |
:10851000CB018093130390931403A0931503B0939E |
:10852000160380913B0390913C03A0913D03B091D1 |
:108530003E038093170390931803A0931903B093FD |
:108540001A038091330390913403A0913503B091C5 |
:10855000360380930F0390931003A0931103B093FD |
:10856000120310926F031092700310927103109215 |
:108570007203109273031092740310927503109299 |
:1085800076038091BE0288608093BE021FC0209354 |
:108590008E031CC0FF27EE0FFF1FED5AF94F80819D |
:1085A00091818C34910584F080918F038F5F80934B |
:1085B0008F03893C58F01092E50210928F031092BD |
:1085C000C0021092BF0202C010928F038091780106 |
:1085D000815080937801809178018F3F21F08091C4 |
:1085E000BE0284FFD5C20E94723D80919A03909191 |
:1085F0009B03AC01440F551F480F591F0091C20641 |
:10860000A02FBB27AA0FBB1FFD01ED5AF94FF09019 |
:10861000D806CF2CDD24808191818C9D90018D9D89 |
:10862000300D9C9D300D1124420F531F57FF02C087 |
:108630004D5F5F4F5595479555954795A957B94F4C |
:108640008091D906682F77278D919C91869FD001C4 |
:10865000879FB00D969FB00D11244A0F5B1F50935A |
:108660009B0340939A038091D1039091D203209170 |
:10867000CD033091CE03820F931F481B590B5093AB |
:10868000ED024093EC0280919C0390919D03AC011C |
:10869000440F551F480F591F1091C306A12FBB2728 |
:1086A000AA0FBB1FFD01ED5AF94F808191818C9D6E |
:1086B000F0018D9DF00D9C9DF00D11244E0F5F1F5C |
:1086C00057FF02C04D5F5F4F5595479555954795AC |
:1086D000A957B94F8D919C91869F9001879F300D2E |
:1086E000969F300D1124420F531F50939D034093CA |
:1086F0009C038091CF039091D0032091CB033091C4 |
:10870000CC03820F931F481B590B5093EB024093ED |
:10871000EA028091C506E82FFF27EE0FFF1FED5AF2 |
:10872000F94F80819181909581959F4F9093E902B7 |
:108730008093E8028330910514F0029705C03FEF63 |
:108740008E3F930734F402969093E9028093E802F7 |
:1087500004C01092E9021092E8028091C406E82F4A |
:10876000FF27EE0FFF1FED5AF94FC080D18048E779 |
:1087700050E0C40ED51ED092E702C092E60280916E |
:108780008B019927AA2797FDA095BA2FBC01CD018F |
:108790000E943F6FDC01CB0120E030E040E251E479 |
:1087A000BC01CD010E94E06EDC01CB01BC01CD011A |
:1087B0000E94226FDC01CB018093870780918A01A0 |
:1087C00080936007809189019927AA2797FDA0953A |
:1087D000BA2FBC01CD010E943F6FDC01CB0120E02C |
:1087E00030E040E251E4BC01CD010E94E06EDC01CA |
:1087F000CB01BC01CD010E94226FDC01CB01809333 |
:1088000037078091880180934E0780918B0480FF09 |
:1088100061C080919007813808F45CC08091840425 |
:10882000992787FD90954F2D5527849F9001859F0F |
:10883000300D949F300D11248091EC029091ED0247 |
:10884000820F931F9093ED028093EC028091850438 |
:10885000992787FD9095849F9001859F300D949F67 |
:10886000300D11248091EA029091EB02820F931F48 |
:108870009093EB028093EA0280918604282F33279D |
:1088800027FD30958091E8029091E902820F931FB5 |
:108890009093E9028093E80280918804282F33277F |
:1088A00027FD30958091D3069927289FB001299FF5 |
:1088B000700D389F700D112470937E0160937D01BF |
:1088C0008091870499278C159D0524F49093E702E5 |
:1088D0008093E6028091E6029091E70297FF04C040 |
:1088E0001092E7021092E6028091CE0682FF02C04B |
:1088F000109260074091EC025091ED02CA0157FDC1 |
:1089000003969C01359527953595279537FF03C02C |
:10891000309521953F4F8091C3029091C4028217F8 |
:108920009307B4F4CA0157FF03C0909581959F4FF8 |
:1089300097FD039695958795959587959093C40295 |
:108940008093C3028536910544F084E690E001C02F |
:1089500001979093C4028093C3024091EA02509120 |
:10896000EB02CA0157FD03969C0135952795359575 |
:10897000279537FF03C0309521953F4F8091C10265 |
:108980009091C20282179307B4F4CA0157FF03C043 |
:10899000909581959F4F97FD039695958795959511 |
:1089A00087959093C2028093C1028536910544F069 |
:1089B00084E690E001C001979093C2028093C102C7 |
:1089C0008091BE0284FF08C01092C4021092C302BC |
:1089D0001092C2021092C102E12FFF27EE0FFF1F7B |
:1089E000ED5AF94F4091FA06242F33278081918167 |
:1089F0002817390744F480911F0782FF04C081E0E3 |
:108A00008093D60213C0E12FFF27EE0FFF1FED5A10 |
:108A1000F94F842F99272091FB06821B9109208111 |
:108A200031812817390714F41092D6024091C306F9 |
:108A3000E42FFF27EE0FFF1FED5AF94F5091FA0672 |
:108A4000852F992722273327281B390B8081918175 |
:108A50008217930744F480911F0783FF04C081E0CD |
:108A60008093D50216C08091D502882391F0E42F1F |
:108A7000FF27EE0FFF1FED5AF94F8091FB06992754 |
:108A8000851B9109208131818217930714F410927C |
:108A9000D502E02FFF27EE0FFF1FED5AF94F40914F |
:108AA000FA06242F3327808191812817390744F44F |
:108AB00080911F0780FF04C081E08093D30217C01C |
:108AC0008091D302882399F0E02FFF27EE0FFF1F3C |
:108AD000ED5AF94F842F99272091FB06821B9109AB |
:108AE000208131812817390714F41092D302409164 |
:108AF000C206E42FFF27EE0FFF1FED5AF94F5091EA |
:108B0000FA06852F992722273327281B390B8081C6 |
:108B100091818217930744F480911F0781FF04C05D |
:108B200081E08093D40216C08091D402882391F012 |
:108B3000E42FFF27EE0FFF1FED5AF94F8091FB0640 |
:108B40009927851B9109208131818217930714F49D |
:108B50001092D4028091D602882319F48091D50214 |
:108B6000811181E08093D7028091D302882321F480 |
:108B70008091D402882351F081E08093D802109232 |
:108B8000D7021092D6021092D50202C08093D8026A |
:108B90008091D702882321F48091D802882369F03C |
:108BA0008091F9069927A981BA818A179B0714F445 |
:108BB0009A83898381E08093FB028091BE0284FFC7 |
:108BC0001AC01092E9021092E8021092ED0210927F |
:108BD000EC021092EB021092EA029AE5909387075A |
:108BE00088E7809360079093370780934E07109231 |
:108BF000D7021092D8028091510790915207A0910C |
:108C00005307B091540720913B0330913C034091AE |
:108C10003D0350913E03820F931FA41FB51F809305 |
:108C2000510790935207A0935307B0935407809134 |
:108C3000590790915A07A0915B07B0915C0720906B |
:108C40003303309034034090350350903603820D47 |
:108C5000931DA41DB51D8093590790935A07A093A7 |
:108C60005B07B0935C078091460790914707A091FE |
:108C70004807B0914907E0903703F090380300911E |
:108C8000390310913A03EB82FC820D831E838E0D13 |
:108C90009F1DA01FB11F8093460790934707A09385 |
:108CA0004807B09349078091380790913907A09100 |
:108CB0003A07B0913B07E0902F03F090300300910A |
:108CC000310310913203EF82F88609871A878E0DDF |
:108CD0009F1DA01FB11F8093380790933907A09361 |
:108CE0003A07B0933B07F090D802FB86FF2029F4A7 |
:108CF0008091D702882309F460C010922B03109250 |
:108D00002C0310922D0310922E0310922703109221 |
:108D100028031092290310922A03109251071092EF |
:108D2000520710925307109254071092590710924D |
:108D30005A0710925B0710925C0710924607109238 |
:108D4000470710924807109249071092380710926F |
:108D5000390710923A0710923B0780911B039091BC |
:108D60001C03A0911D03B0911E03809317039093E1 |
:108D70001803A0931903B0931A03809113039091E1 |
:108D80001403A0911503B091160380930F039093E1 |
:108D90001003A0931103B0931203109212021092C9 |
:108DA00011021092DA021092D9021092DC02109293 |
:108DB000DB020B85002309F0F2C18091D7028823E2 |
:108DC00009F0EDC1809115069091160681509240F0 |
:108DD0002CF48091E502882309F4E1C19090FA0710 |
:108DE000A090DD0660917D0770917E077C8B6B8B78 |
:108DF00080918D0790918E079A8B898B9FEF9916A2 |
:108E000009F4D9C0BB24CC24DD24CA01B901A601D0 |
:108E100095010E942D7079018A01EB89FC89CF01AF |
:108E2000AA2797FDA095BA2FE81AF90A0A0B1B0B7F |
:108E3000C201B101A60195010E942D7059016A017C |
:108E400029893A89C901AA2797FDA095BA2FA81A9E |
:108E5000B90ACA0ADB0A292C332427FC3094432C94 |
:108E6000532CC801B701A20191010E94B96F97FF6D |
:108E700004C061507E4F8F4F9F4F3B014C0109E072 |
:108E800095948794779467940A95D1F7C601B501B4 |
:108E9000A20191010E94B96F97FF04C061507E4FFB |
:108EA0008F4F9F4F5B016C0119E0D594C794B79425 |
:108EB000A7941A95D1F78091C3029091C40281348E |
:108EC00091053CF48091C1029091C20281349105D8 |
:108ED000D4F0D401C30197FE03C00196A11DB11DBA |
:108EE0003C014D019594879477946794D601C50110 |
:108EF000D7FE03C00196A11DB11D5C016D01D59483 |
:108F0000C794B794A7948091C506E82FFF27EE0F6A |
:108F1000FF1FED5AF94F808191810190F081E02D82 |
:108F2000F7FF03C0F095E195FF4F7A97A4F0C401D5 |
:108F3000B30123E030E040E050E00E942D703901A1 |
:108F40004A01C601B50123E030E040E050E00E9454 |
:108F50002D7059016A018091FC07282F332727FDC6 |
:108F60003095432F532F261537054805590514F41E |
:108F700039014A01992787FD9095909581959F4FDA |
:108F8000AA2797FDA095BA2F681679068A069B0630 |
:108F900014F43C014D012A153B054C055D0514F404 |
:108FA00059016A01A816B906CA06DB060CF0CFC043 |
:108FB0005C016D01CCC0EA2CFF2400271127CA01F7 |
:108FC000B901A80197010E942D7039014A014B890E |
:108FD0005C89CA01AA2797FDA095BA2F681A790A59 |
:108FE0008A0A9B0AC201B101A80197010E942D7053 |
:108FF00059016A0169897A89CB01AA2797FDA09551 |
:10900000BA2FA81AB90ACA0ADB0AD401C30197FE0B |
:1090100003C00F96A11DB11D3C014D01F4E09594D4 |
:10902000879477946794FA95D1F7D601C501D7FE56 |
:1090300003C00F96A11DB11D5C016D01E4E0D59444 |
:10904000C794B794A794EA95D1F78091C302909101 |
:10905000C402813491053CF48091C1029091C20216 |
:1090600081349105A4F0C401B30123E030E040E075 |
:1090700050E00E942D7039014A01C601B50123E07C |
:1090800030E040E050E00E942D7059016A0180916B |
:10909000C506E82FFF27EE0FFF1FED5AF94F80811D |
:1090A00091810190F081E02DF7FF03C0F095E195EB |
:1090B000FF4F7A97A4F0C401B30123E030E040E011 |
:1090C00050E00E942D7039014A01C601B50123E02C |
:1090D00030E040E050E00E942D7059016A0171E2D9 |
:1090E00067167104810491042CF070E2672E712CD4 |
:1090F000812C912C80EE68168FEF78068FEF880612 |
:109100008FEF980644F460EE662E6FEF762E6FEFC9 |
:10911000862E6FEF962E91E2A916B104C104D104F8 |
:109120002CF050E2A52EB12CC12CD12CA0EEAA1609 |
:10913000AFEFBA06AFEFCA06AFEFDA0644F440EE7F |
:10914000A42E4FEFB42E4FEFC42E4FEFD42E8091AC |
:109150001B0390911C03A0911D03B0911E0386195F |
:109160009709A809B90980931B0390931C03A09346 |
:109170001D03B0931E038091130390911403A091DB |
:109180001503B09116038A199B09AC09BD09809398 |
:10919000130390931403A0931503B09316038091C7 |
:1091A0001102909112028F3F910509F008F4DEC57B |
:1091B000BB85BB2309F068C58091D702882309F0DD |
:1091C00063C58091FB02882309F05EC5E091020728 |
:1091D000EC87EE2309F458C580915107909152070E |
:1091E000A0915307B0915407B7FF04C081509F4F1F |
:1091F000AF4FBF4FE92EFA2E0B2F112707FD1A95FF |
:10920000E0925107F09252070093530710935407CE |
:109210008091590790915A07A0915B07B0915C0724 |
:10922000B7FF04C081509F4FAF4FBF4F892F9A2F78 |
:10923000AB2FBB27A7FDBA958D879E87AF87B88BCD |
:109240008093590790935A07A0935B07B0935C07EC |
:109250008091DD06A82EBB24CC24DD2420912B0395 |
:1092600030912C0340912D0350912E03C601B5017E |
:109270000E94B96F97FF04C061507F4F8F4F9F4F7F |
:10928000672E782E892E992487FC9A9460922B035E |
:1092900070922C0380922D0390922E03209127032D |
:1092A000309128034091290350912A03C601B5014A |
:1092B0000E94B96F97FF04C061507F4F8F4F9F4F3F |
:1092C000272E382E492E552447FC5A9420922703E6 |
:1092D000309228034092290350922A03809123035D |
:1092E00090912403A0912503B0912603B7FF04C0F9 |
:1092F00081509F4FAF4FBF4F892F9A2FAB2FBB2766 |
:10930000A7FDBA958093230390932403A09325038C |
:10931000B0932603D801C70186199709A809B9098E |
:109320008093830390938403A0938503B093860373 |
:1093300020910107E22EFF2400271127BC01CD0157 |
:10934000A80197010E942D7059016A012093920390 |
:109350003093930340939403509395038D859E859A |
:10936000AF85B88982199309A409B5098093870349 |
:1093700090938803A0938903B0938A03BC01CD0125 |
:10938000A80197010E942D702093960330939703B4 |
:109390004093980350939903D601C501D7FE04C0AA |
:1093A00081509F4FAF4FBF4F892F9A2FAB2FBB27B5 |
:1093B000A7FDBA959093DA028093D90257FF04C0B3 |
:1093C00021503F4F4F4F5F4FBB2757FDBA95A52FF9 |
:1093D000942F832F9093DC028093DB028091C30251 |
:1093E0009091C40281349105DCF48091C102909186 |
:1093F000C20281349105A4F48091C506E82FFF27AD |
:10940000EE0FFF1FED5AF94F808191810190F0819D |
:10941000E02DF7FF03C0F095E195FF4F7A97E4F058 |
:109420008091FA078F3FC1F48091D9029091DA02BE |
:1094300097FD0196959587959093DA028093D902CE |
:109440008091DB029091DC0297FD019695958795BE |
:109450009093DC028093DB0280914607909147074E |
:10946000A0914807B0914907B7FF04C081509F4FB2 |
:10947000AF4FBF4F892F9A2FAB2FBB27A7FDBA95B0 |
:109480008093460790934707A0934807B0934907F6 |
:109490008091380790913907A0913A07B0913B0726 |
:1094A000B7FF04C081509F4FAF4FBF4F892F9A2FF6 |
:1094B000AB2FBB27A7FDBA95809338079093390748 |
:1094C000A0933A07B0933B0780913B0390913C03F4 |
:1094D000A0913D03B0913E032B813C814D815E8183 |
:1094E000281B390B4A0B5B0B20937B0330937C03C7 |
:1094F00040937D0350937E03809133039091340316 |
:10950000A0913503B0913603EF80F88409851A8560 |
:10951000E81AF90A0A0B1B0BE0927F03F092800312 |
:109520000093810310938203209383033093840379 |
:109530004093850350938603E0928703F09288035B |
:109540000093890310938A03809117039091180365 |
:10955000A0911903B0911A03821B930BA40BB50BB6 |
:109560008093170390931803A0931903B0931A03E1 |
:1095700080910F0390911003A0911103B0911203F9 |
:109580008E199F09A00BB10B80930F0390931003CA |
:10959000A0931103B0931203FC85FF2371F1209176 |
:1095A000F9023091FA022138310594F080914F038D |
:1095B0009091500301969093500380934F038091B4 |
:1095C0005D0790915E07019690935E0780935D071B |
:1095D00020583F4F94F480914F039091500301978E |
:1095E0009093500380934F0380915D0790915E07A5 |
:1095F000019790935E0780935D071092FA02109294 |
:10960000F90281E090E090939F0380939E03E090A5 |
:109610008303F09084030091850310918603D801A1 |
:10962000C70117FF07C088279927DC018E199F09FA |
:10963000A00BB10B81509240A040B04034F084E0C8 |
:1096400090E090939F0380939E038091A403909158 |
:10965000A503A091A603B091A703209151073091D3 |
:1096600052074091530750915407821B930BA40B50 |
:10967000B50B815E914BAF4FBF4F8F539C49A040BC |
:10968000B04028F08091FB0789310CF4FFC041E025 |
:10969000E41640E1F40640E0040740E014070CF44F |
:1096A00073C08091A003882309F46AC0D801C70160 |
:1096B00017FF07C088279927DC018E199F09A00B87 |
:1096C000B10B9C01AD01B7FF04C021503E4F4F4F7D |
:1096D0005F4FF9E05595479537952795FA95D1F75E |
:1096E00080919E0390919F03820F931F90939F03FD |
:1096F00080939E03D801C70117FF03C00796A11DE1 |
:10970000B11DE3E0B595A79597958795EA95D1F7B3 |
:109710008093920390939303A0939403B093950343 |
:1097200089589341A040B04064F088E893E1A0E0FC |
:10973000B0E08093920390939303A0939403B0932B |
:10974000950320919203309193034091940350919B |
:10975000950357FF04C021503F4F4F4F5F4F232FBA |
:10976000342F452F552747FD5A958091D902909166 |
:10977000DA02820F931F9093DA028093D90206C017 |
:1097800081E08093A00302C01092A00360E0E6167F |
:1097900060EFF6066FEF06076FEF16070CF073C069 |
:1097A0008091A103882309F46AC0D801C70117FF7B |
:1097B00007C088279927DC018E199F09A00BB10BE0 |
:1097C0009C01AD01B7FF04C021503E4F4F4F5F4F8A |
:1097D00069E055954795379527956A95D1F780911A |
:1097E0009E0390919F03820F931F90939F038093FA |
:1097F0009E03D801C70117FF03C00796A11DB11D25 |
:1098000023E0B595A795979587952A95D1F78093ED |
:10981000920390939303A0939403B0939503885776 |
:109820009C4EAF4FBF4F64F488E79CEEAFEFBFEFA5 |
:109830008093920390939303A0939403B093950322 |
:10984000209192033091930340919403509195039A |
:1098500057FF04C021503F4F4F4F5F4F232F342FEE |
:10986000452F552747FD5A958091D9029091DA02EC |
:10987000820F931F9093DA028093D90211C081E086 |
:109880008093A1030DC01092A1030AC010929F0300 |
:1098900010929E0388EE93E090939E0180939D0129 |
:1098A0008C85282F332780919E0390919F03281742 |
:1098B000390724F430939F0320939E031091FB07F4 |
:1098C000112379F0212F332727FD309580919E03B6 |
:1098D00090919F032817390724F430939F03209316 |
:1098E0009E0340918303509184036091850370919E |
:1098F0008603413851056105710574F08091530369 |
:109900009091540320919E0330919F03820F931FE7 |
:10991000909354038093530340585F4F6F4F7F4F92 |
:1099200074F4809153039091540320919E033091DD |
:109930009F03821B930B909354038093530381E006 |
:1099400090E090939F0380939E03C0908703D090F4 |
:109950008803E0908903F0908A03D701C601F7FEDF |
:1099600007C088279927DC018C199D09AE09BF091A |
:1099700081509240A040B04034F084E090E0909359 |
:109980009F0380939E031092960310929703109268 |
:109990009803109299038091A8039091A903A09134 |
:1099A000AA03B091AB032091590730915A07409117 |
:1099B0005B0750915C07821B930BA40BB50B815E78 |
:1099C000914BAF4FBF4F8F539C49A040B04018F010 |
:1099D00019310CF4FFC001E0C01600E1D00600E030 |
:1099E000E00600E0F0060CF473C08091A203882327 |
:1099F00009F46AC0D701C601F7FE07C08827992776 |
:109A0000DC018C199D09AE09BF099C01AD01B7FFAE |
:109A100004C021503E4F4F4F5F4F09E05595479589 |
:109A2000379527950A95D1F780919E0390919F03D2 |
:109A3000820F931F90939F0380939E03D701C601CB |
:109A4000F7FE03C00796A11DB11D13E0B595A795BC |
:109A5000979587951A95D1F78093960390939703DE |
:109A6000A0939803B093990389589341A040B040C4 |
:109A700064F088E893E1A0E0B0E0809396039093CF |
:109A80009703A0939803B093990320919603309184 |
:109A90009703409198035091990357FF04C02150B8 |
:109AA0003F4F4F4F5F4F232F342F452F552747FDF3 |
:109AB0005A958091DB029091DC02820F931F909364 |
:109AC000DC028093DB0206C081E08093A20302C027 |
:109AD0001092A20320E0C21620EFD2062FEFE2067A |
:109AE0002FEFF2060CF073C08091A303882309F4D2 |
:109AF0006AC0D701C601F7FE07C088279927DC0195 |
:109B00008C199D09AE09BF099C01AD01B7FF04C0C6 |
:109B100021503E4F4F4F5F4FE9E0559547953795A0 |
:109B20002795EA95D1F780919E0390919F03820F2C |
:109B3000931F90939F0380939E03D701C601F7FE66 |
:109B400003C00796A11DB11D73E0B595A795979524 |
:109B500087957A95D1F78093960390939703A09376 |
:109B60009803B093990388579C4EAF4FBF4F64F44E |
:109B700088E79CEEAFEFBFEF809396039093970337 |
:109B8000A0939803B0939903209196033091970383 |
:109B9000409198035091990357FF04C021503F4FC3 |
:109BA0004F4F5F4F232F342F452F552747FD5A9591 |
:109BB0008091DB029091DC02820F931F9093DC0274 |
:109BC0008093DB0211C081E08093A3030DC010924B |
:109BD000A3030AC010929F0310929E0388EE93E0A5 |
:109BE00090939E0180939D014C85242F3327809173 |
:109BF0009E0390919F032817390724F430939F0305 |
:109C000020939E038091FB07882379F0282F332728 |
:109C100027FD309580919E0390919F032817390767 |
:109C200024F430939F0320939E0340918703509127 |
:109C300088036091890370918A0341385105610559 |
:109C4000710574F0809151039091520320919E030D |
:109C500030919F03820F931F90935203809351037F |
:109C600040585F4F6F4F7F4FCCF4809151039091DC |
:109C7000520320919E0330919F03821B930B90937C |
:109C80005203809351030AC01092DC021092DB024F |
:109C90001092DA021092D9021092FB0280916007B2 |
:109CA000882341F41092DC021092DB021092DA0257 |
:109CB0001092D9028091510790915207A0915307B9 |
:109CC000B09154078093A4039093A503A093A60397 |
:109CD000B093A7038091590790915A07A0915B0711 |
:109CE000B0915C078093A8039093A903A093AA0363 |
:109CF000B093AB0310922B0310922C0310922D0300 |
:109D000010922E0310922703109228031092290319 |
:109D100010922A0310922303109224031092250319 |
:109D20001092260310925107109252071092530777 |
:109D3000109254071092590710925A0710925B071D |
:109D400010925C071092460710924707109248073E |
:109D500010924907109238071092390710923A076B |
:109D600010923B071092120210921102E090E8024A |
:109D7000F090E902C701F7FE04C0882799278E19E1 |
:109D80009F0940976CF088EE93E090939E0180933A |
:109D90009D018091CE0684FD03C081E080939103F4 |
:109DA0001091DA06A12EBB24CC24DD24B70188272C |
:109DB00077FD8095982F9701F7FE04C0222733275F |
:109DC0002E193F09442737FD4095542F0E94B96F43 |
:109DD0009B01AC01C601B5010E94B96F97FF04C099 |
:109DE00061507E4F8F4F9F4F59E09595879577959E |
:109DF00067955A95D1F79B01812F99278E9DD001A8 |
:109E00008F9DB00D9E9DB00D1124CD01B7FD039621 |
:109E10009595879595958795280F391F442737FD88 |
:109E20004095542F20937703309378034093790320 |
:109E300050937A0380910B0390910C03A0910D0332 |
:109E4000B0910E03821B930BA40BB50B80930B03F5 |
:109E500090930C03A0930D03B0930E038155934C84 |
:109E6000A040B04064F080E593ECA0E0B0E08093C7 |
:109E70000B0390930C03A0930D03B0930E038091FA |
:109E80000B0390910C03A0910D03B0910E03805B26 |
:109E90009C43AF4FBF4F64F480EB9CE3AFEFBFEF49 |
:109EA00080930B0390930C03A0930D03B0930E03C8 |
:109EB00040900103509002034114510409F488C1F9 |
:109EC0008091CE0683FF84C180913B0390913C0337 |
:109ED000A0913D03B0913E03B7FF04C081509E4F57 |
:109EE000AF4FBF4F09E0B595A795979587950A9510 |
:109EF000D1F76C0197FF04C0D094C194D108D394DA |
:109F00008091330390913403A0913503B0913603CF |
:109F1000B7FF04C081509E4FAF4FBF4F19E0B595BA |
:109F2000A795979587951A95D1F7BC0197FF03C020 |
:109F3000709561957F4FC616D7060CF46B01B6017C |
:109F4000D7FE02C0695F7F4F3B01B3E07594679411 |
:109F5000BA95E1F70894611C711CACE1EA2EA2E00D |
:109F6000FA2E4E0C5F1C72010027F7FC0095102F93 |
:109F700024EE3DEF420E531E8091890790918A078F |
:109F8000A0918B07B0918C078090790190907A0115 |
:109F9000A0907B01B0907C01BC01CD01A501940192 |
:109FA0000E942D70E21AF30A040B150BC801B701C9 |
:109FB00028E631E040E050E00E942D70DC01CB014A |
:109FC0008C01045B1040809182079091830797FF7A |
:109FD00003C0909581959F4F8138910514F000E062 |
:109FE00010E0E0909D01F0909E01E114F10489F5EC |
:109FF00039E1C316D1046CF58091F9029091FA020F |
:10A00000800F911F9093FA028093F902809191033F |
:10A010008823F9F0C201AA2797FDA095BA2FBC01A9 |
:10A02000CD01A50194010E94B96FDC01CB018093A1 |
:10A03000890790938A07A0938B07B0938C07BC0184 |
:10A04000CD010E942D70309300032093FF021092E7 |
:10A050009103C801F3E0880F991FFA95E1F7B30166 |
:10A060000E94F86FCB01AA2797FDA095BA2F2091E7 |
:10A07000890730918A0740918B0750918C07280FF0 |
:10A08000391F4A1F5B1F2093890730938A0740932B |
:10A090008B0750938C0710918E01612F7727C69EF6 |
:10A0A000C001C79E900DD69E900D112497FD4F962E |
:10A0B0006C01E5E0D594C794EA95E1F76C197D0948 |
:10A0C0006B0177FD7FC0E114F10409F073C0E090EB |
:10A0D000C302F090C4028091C1029091C202E80EC6 |
:10A0E000F91EF7FE04C067E070E0E60EF71E63E0BD |
:10A0F000F594E7946A95E1F780E490E0E80EF91EA4 |
:10A10000CA01B901A50194010E942D70DA01C901AB |
:10A110002091FF0230910003442737FD4095542FD2 |
:10A12000821B930BA40BB50B845E9D4FAF4FBF4FAB |
:10A13000BC01CD0128E631E040E050E00E942D70E6 |
:10A14000DC01CB01845B90408C9DD0018D9DB00DD6 |
:10A150009C9DB00D1124CD01B7010E94F86F83E0E2 |
:10A16000189F60011124C616D70614F4B60108C062 |
:10A17000882799278C199D09681779070CF4BC0169 |
:10A180009B01442737FD4095542F80910B039091FC |
:10A190000C03A0910D03B0910E03820F931FA41F17 |
:10A1A000B51F80930B0390930C03A0930D03B09302 |
:10A1B0000E030EC00894E108F108F0929E01E092AF |
:10A1C0009D0106C084EF91E090939E0180939D01D4 |
:10A1D000809190038150809390038F3F09F0DCC001 |
:10A1E00088E1809390038091DD069927880F991F5D |
:10A1F000880F991F7C010027F7FC0095102F809194 |
:10A200003B0390913C03A0913D03B0913E03BC0100 |
:10A21000CD01A80197010E942D703093D3052093A2 |
:10A22000D2058091330390913403A0913503B0910E |
:10A230003603BC01CD01A80197010E942D70309317 |
:10A24000D5052093D40580917D0790917E0797FDD9 |
:10A25000039695958795959587959093D7058093C7 |
:10A26000D60580918D0790918E0797FD0396959561 |
:10A270008795959587959093D9058093D80580917A |
:10A280008207909183079093DB058093DA05809194 |
:10A29000E1029091E202A091E302B091E402BC01DC |
:10A2A000CD0125E030E040E050E00E942D70309379 |
:10A2B000DD052093DC05809115069091160690939C |
:10A2C000DF058093DE055092E3054092E205809120 |
:10A2D0002501909126019093E5058093E4058091F6 |
:10A2E000EF0299279093E7058093E605809189070F |
:10A2F00090918A07A0918B07B0918C0720917901EA |
:10A3000030917A0140917B0150917C01BC01CD01DB |
:10A310000E942D703093E9052093E8058091130287 |
:10A32000909114029093F7058093F60580917F0435 |
:10A3300099279093F9058093F8058091FA019091FF |
:10A34000FB019093FB058093FA058091FF079091A4 |
:10A3500000089093FF058093FE058091030890917B |
:10A36000040890930106809300068091FD079927C9 |
:10A3700090930D0680930C068091D1039091D203A7 |
:10A3800090930F0680930E068091CF039091D00397 |
:10A3900090931106809310068091FB02882381F030 |
:10A3A0001092730310927403109275031092760347 |
:10A3B00010926F0310927003109271031092720347 |
:10A3C000F090D802FF20F1F480916007282F332706 |
:10A3D0004427552780913B0390913C03A0913D0376 |
:10A3E000B0913E03BC01CD010E94B96FDC01CB01ED |
:10A3F000BC01CD0128EF3AE240E050E00E942D7010 |
:10A40000490102C088249924E090D702EE20F1F49B |
:10A4100080916007282F33274427552780913303E5 |
:10A4200090913403A0913503B0913603BC01CD0166 |
:10A430000E94B96FDC01CB01BC01CD0128EF3AE2EB |
:10A4400040E050E00E942D70390102C0662477245C |
:10A450008091320790913307893C91051CF088EC7C |
:10A4600090E005C088539F4F34F488E39FEF9093AA |
:10A4700033078093320780913D0790913E07893CD6 |
:10A4800091051CF088EC90E005C088539F4F34F490 |
:10A4900088E39FEF90933E0780933D0780913F07AD |
:10A4A00090914007AA2797FDA095BA2F2091870782 |
:10A4B000A22EBB24CC24DD24BC01CD01A601950134 |
:10A4C0000E94B96F9B01AC018091320790913307D4 |
:10A4D000AA2797FDA095BA2F17E0880F991FAA1FEA |
:10A4E000BB1F1A95D1F7280F391F4A1F5B1F57FF53 |
:10A4F00004C0215C3F4F4F4F5F4FA6E055954795F5 |
:10A5000037952795AA95D1F78401020F131F109351 |
:10A51000400700933F078091300790913107AA27A9 |
:10A5200097FDA095BA2FBC01CD01A60195010E940F |
:10A53000B96F9B01AC0180913D0790913E07AA271E |
:10A5400097FDA095BA2FF7E0880F991FAA1FBB1F90 |
:10A55000FA95D1F7280F391F4A1F5B1F57FF04C018 |
:10A56000215C3F4F4F4F5F4FE6E05595479537953C |
:10A570002795EA95D1F72301420E531E50923107D9 |
:10A58000409230078091820790918307880F991F2E |
:10A59000AA2797FDA095BA2F209137073327442784 |
:10A5A0005527BC01CD010E94B96F5B016C0197FF7B |
:10A5B00008C02FE330E040E050E0A20EB31EC41EFE |
:10A5C000D51E76E0D594C794B794A7947A95D1F721 |
:10A5D00080914E07282F33274427552780911F034A |
:10A5E00090912003A0912103B0912203BC01CD01E1 |
:10A5F0000E94B96FDC01CB01BC01CD0120EF35E534 |
:10A6000040E050E00E942D70B501620F731F7093FF |
:10A610008307609382070150104434F080E090E497 |
:10A620009093400780933F0780913F0790914007A8 |
:10A630008050904C34F480E090EC909340078093ED |
:10A640003F0751E0451650E4550634F080E090E4B1 |
:10A6500090933107809330078091300790913107B4 |
:10A660008050904C34F480E090EC909331078093CC |
:10A6700030076150704434F080E090E49093830799 |
:10A680008093820780918207909183078050904C3D |
:10A6900034F480E090EC909383078093820780915C |
:10A6A0000001482F552780912501909126014817D8 |
:10A6B000590794F4209125013091260109811A81CE |
:10A6C000049FC001059F900D149F900D1124B901A6 |
:10A6D0000E94E46F7A83698329813A81220F331FB4 |
:10A6E000220F331F3A8329834091CE0640FF7AC55B |
:10A6F000EE2009F077C5FF2009F074C58091B00302 |
:10A700009091B1039093FD058093FC058091130215 |
:10A71000909114029093F7058093F60520915503CC |
:10A72000309156032115310509F03FC080911B017E |
:10A7300090911C018959934058F087B5853F20F4CA |
:10A7400080911502815011C081E08093B9034EC001 |
:10A7500080911B0190911C018436910508F587B505 |
:10A760008B30D0F0809115028F5F809315029AE0B4 |
:10A7700089029001112480911F06821B87BD8CE203 |
:10A7800091E09093FF018093FE018EE591E090931C |
:10A790005603809355032AC081E08093B80326C0F6 |
:10A7A000F092B803F092B90321C08091E102909138 |
:10A7B000E202A091E302B091E40254E0880F991FF5 |
:10A7C000AA1FBB1F5A95D1F78093160290931702C8 |
:10A7D000A0931802B093190210921402109213025F |
:10A7E000215030403093560320935503209191011E |
:10A7F00041FF24C02233D8F48091BE018150809360 |
:10A80000BE018F3FD9F51092FC028091E102909138 |
:10A81000E202A091E302B091E4028093DD02909302 |
:10A82000DE02A093DF02B093E00281E004C081E089 |
:10A830008093FC0288EC8093BE0120C080917D0152 |
:10A8400090917E01820F911D2091D3063327829F24 |
:10A85000A001839F500D929F500D1124CA01AA2779 |
:10A8600097FDA095BA2F8093DD029093DE02A0930E |
:10A87000DF02B093E00281E08093FC0280913B0311 |
:10A8800090913C03A0913D03B0913E03E09079018B |
:10A89000F0907A0100917B0110917C01BC01CD0107 |
:10A8A000A80197010E942D7059016A01809133031C |
:10A8B00090913403A0913503B0913603BC01CD01D2 |
:10A8C000A80197010E942D70B901C5010E949B6EDD |
:10A8D0007C01CC971CF04CE3E42EF12CC7010E94C4 |
:10A8E0007F637C018091FC02882309F407C3809177 |
:10A8F000BE0299279C012071307084FDFFC26091D7 |
:10A90000210760FD04C08091CE0681FD07C0C9808B |
:10A91000DA803093AD032093AC0356C18091BE0220 |
:10A9200081FF2EC14091BA015091BB01CA010F961F |
:10A930002091E6023091E7028217930784F5809117 |
:10A94000B803882361F58091BA0381FF13C08D7F1E |
:10A950008093BA038091E1029091E202A091E30218 |
:10A96000B091E4028093DD029093DE02A093DF02B7 |
:10A97000B093E0028091BA0381608093BA03241BF4 |
:10A98000350B2F50304037FF03C0309521953F4F96 |
:10A990008091AC039091AD03820F931F34C0CA0124 |
:10A9A0000F9728173907A4F58091B903882381F5FB |
:10A9B0008091BA0380FF13C08E7F8093BA03809189 |
:10A9C000E1029091E202A091E302B091E40280934F |
:10A9D000DD029093DE02A093DF02B093E00280914B |
:10A9E000BA0382608093BA03241B350B215F3F4F6B |
:10A9F00037FF03C0309521953F4F8091AC03909174 |
:10AA0000AD03821B930B9093AD038093AC0327C0DF |
:10AA10002091BA03822F992783709070892BF9F0C7 |
:10AA20002C7F2093BA031092AD031092AC03809157 |
:10AA3000E1029091E202A091E302B091E4028093DE |
:10AA4000DD029093DE02A093DF02B093E00261FF8B |
:10AA500006C084EF91E09093FF018093FE01209166 |
:10AA6000AC033091AD03C90137FF04C08827992793 |
:10AA7000821B930B815092400CF46BC08091D306E3 |
:10AA80009927289FD001299FB00D389FB00D112420 |
:10AA9000CD0160E075E00E94F86F9B01442737FD0F |
:10AAA0004095542F8091DD029091DE02A091DF024B |
:10AAB000B091E002820F931FA41FB51F8093DD02A7 |
:10AAC0009093DE02A093DF02B093E0021092AD03F8 |
:10AAD0001092AC038091210781FF06C08BE490E0C7 |
:10AAE0009093FF018093FE018091D706882389F51A |
:10AAF0004091B0035091B10357FF02C04D5F5F4FCB |
:10AB0000559547955595479580912501909126013A |
:10AB1000209100013327489FF001499FF00D589F75 |
:10AB2000F00D1124CF01B9010E94F86F7093BB01A1 |
:10AB30006093BA01663471051CF486E490E005C0A8 |
:10AB40006739710534F086E990E09093BB018093FA |
:10AB5000BA018091550390915603892B89F1809118 |
:10AB6000E1029091E202A091E302B091E4028093AD |
:10AB7000DD029093DE02A093DF02B093E00220C0DA |
:10AB80008091E1029091E202A091E302B091E4028F |
:10AB900080599140A040B0408093DD029093DE0246 |
:10ABA000A093DF02B093E0028091D706882311F0D2 |
:10ABB000992702C088E790E09093BB018093BA0187 |
:10ABC000C090B003D090B1032091E1023091E20235 |
:10ABD0004091E3025091E4028091DD029091DE0207 |
:10ABE000A091DF02B091E00282179307A407B50796 |
:10ABF00024F08091210780FDC3C10091E1021091F2 |
:10AC0000E2028091DD029091DE02081B190B809117 |
:10AC100090019927089F9001099F300D189F300DD2 |
:10AC20001124C90137FD0F9624E0959587952A9543 |
:10AC3000E1F7C81AD90A209113023091140237FFA4 |
:10AC400002C0295F3F4FB3E035952795BA95E1F7EC |
:10AC50002930310514F028E030E0229FA001239F25 |
:10AC6000500D329F500D11241216130674F4CA01B0 |
:10AC700057FD039695958795959587952091130295 |
:10AC800030911402280F391F0DC0CA0157FD0396D9 |
:10AC9000959587959595879520911302309114028B |
:10ACA000281B390B809192019927AA27BB2744279B |
:10ACB00037FD4095542FBC01CD010E94B96F97FF1D |
:10ACC00004C061587F4F8F4F9F4FE7E09595879560 |
:10ACD00077956795EA95D1F79B014FEF6238740736 |
:10ACE0001CF421E83FEF05C06F3F710514F02FEF12 |
:10ACF00030E0C21AD30A209003033090040340903E |
:10AD000005035090060357FE08C06FE770E080E02F |
:10AD100090E0260E371E481E591E57E05594479462 |
:10AD2000379427945A95D1F780918F01282F332794 |
:10AD300044275527C201B1010E94B96F97FF04C093 |
:10AD4000615E7F4F8F4F9F4F45E095958795779533 |
:10AD500067954A95D1F79B017FEF223837071CF49E |
:10AD600021E83FEF05C02F3F310514F02FEF30E011 |
:10AD7000C21AD30A0B561F4F0B521140E0F48091B8 |
:10AD8000AC039091AD03892BB1F48091B003909105 |
:10AD9000B103181619067CF48091B2039091B303A5 |
:10ADA0008C159D053CF48091BC019091BD01C816A5 |
:10ADB000D9060CF06C018091550390915603892BB4 |
:10ADC00021F0C090B003D090B10380918D019927FC |
:10ADD000AA27BB272091FE07332727FD3095432F55 |
:10ADE000532FBC01CD010E94B96F97FF04C0615879 |
:10ADF0007F4F8F4F9F4F37E0959587957795679554 |
:10AE00003A95D1F79B019FEF223839071CF421E8CE |
:10AE10003FEF05C02F3F310514F02FEF30E0C21A8D |
:10AE2000D30AC601AA2797FDA095BA2F2DE0880F57 |
:10AE3000991FAA1FBB1F2A95D1F79701442737FDF9 |
:10AE40004095542FBC01CD010E942D7020937F03AB |
:10AE5000309380034093810350938203C0907F031B |
:10AE6000D09080038091AE039091AF039C01220F9C |
:10AE7000331F280F391F2C0D3D1D37FF02C02D5FDA |
:10AE80003F4FA90155954795559547955093AF0369 |
:10AE90004093AE038091CF06282F3327220F331F14 |
:10AEA000220F331F241735076CF480918107282F58 |
:10AEB0003327220F331F220F331F205530404217F4 |
:10AEC000530724F03093AF032093AE038091210702 |
:10AED00080FF0DC08091AE039091AF03A981BA812C |
:10AEE000A817B90724F4B093AF03A093AE03E09181 |
:10AEF000AE03F091AF03FA83E98342C08091D70695 |
:10AF0000882301F56091B0037091B10377FF02C00F |
:10AF10006D5F7F4F75956795759567954091250194 |
:10AF20005091260180910001282F3327649FC00192 |
:10AF3000659F900D749F900D1124B9010E94F86FC8 |
:10AF4000CB0101C099279093BB018093BA018091F6 |
:10AF5000BA019091BB01863491051CF486E490E01F |
:10AF600005C08739910534F086E990E09093BB01E4 |
:10AF70008093BA0109811A811093AF030093AE0345 |
:10AF80008091BE0281FF2EC18091BE0284FD2AC144 |
:10AF90008091B4039091B503A091B603B091B7032B |
:10AFA0000097A105B105B1F429813A81C901AA2709 |
:10AFB00097FDA095BA2FECE0880F991FAA1FBB1F21 |
:10AFC000EA95D1F78093B4039093B503A093B603A9 |
:10AFD000B093B703809113029091140280911302F1 |
:10AFE0009091140297FF03C0909581959F4F8436EE |
:10AFF00091050CF0F7C049815A81CA01AA2797FD33 |
:10B00000A095BA2F9701442737FD4095542FBC01D6 |
:10B01000CD010E94B96FDC01CB0180937F03909337 |
:10B020008003A0938103B0938203B7FF04C08150D3 |
:10B03000904EAF4FBF4F7C018D017DE01595079578 |
:10B04000F794E7947A95D1F7E0927F03F09280032A |
:10B0500000938103109382038091BF029091C002FC |
:10B0600057E0803D9507F8F48091B4039091B503C3 |
:10B07000A091B603B091B7039C01AD0169E056956C |
:10B080004795379527956A95D1F7821B930BA40BAB |
:10B09000B50BA801970113E0220F331F441F551F62 |
:10B0A0001A95D1F722C06FE0803A960758F5809143 |
:10B0B000B4039091B503A091B603B091B7039C017E |
:10B0C000AD01FAE05695479537952795FA95D1F752 |
:10B0D000821B930BA40BB50BA8019701E2E0220F92 |
:10B0E000331F441F551FEA95D1F7820F931FA41FEA |
:10B0F000B51F8093B4039093B503A093B603B093A8 |
:10B10000B7033CC02091B4033091B5034091B6031E |
:10B110005091B70380549F41C0F4DA01C9017BE02C |
:10B12000B695A795979587957A95D1F7281B390BF2 |
:10B130004A0B5B0BD801C7018E0D9F1DA01FB11FCD |
:10B14000280F391F4A1F5B1F11C0DA01C9016CE0CB |
:10B15000B695A795979587956A95D1F7281B390BD2 |
:10B160004A0B5B0B2E0D3F1D401F511F2093B40354 |
:10B170003093B5034093B6035093B7038091B40363 |
:10B180009091B503A091B603B091B7035CE0B6957A |
:10B19000A795979587955A95D1F79093B10380938A |
:10B1A000B0034091D506442399F055279C01BA017C |
:10B1B0000E94F86FC901861B970B9093B30380938D |
:10B1C000B203260F371F3093BD012093BC010AC084 |
:10B1D0001092B3031092B2038FEF93E09093BD01EE |
:10B1E0008093BC0130904407232D3327C901880F79 |
:10B1F000991F880F991F8896A981BA818A179B0782 |
:10B2000014F09A83898340908107842D9927880FB1 |
:10B21000991F880F991F80559040E981FA818E17F8 |
:10B220009F0714F49A838983809147028823A1F0B1 |
:10B230008091BF029091C0020297C09768F4E980A4 |
:10B24000FA801E141F0444F481E090E09093C00241 |
:10B250008093BF023A83298309811A811093E10503 |
:10B260000093E0058091770390917803A091790392 |
:10B27000B0917A0312E0880F991FAA1FBB1F1A957D |
:10B28000D1F70091820710918307081B190B2981C0 |
:10B290003A81213A31058CF0C90137FD0196959527 |
:10B2A0008795801791070CF48C01909581959F4F9D |
:10B2B000081719076CF48C010BC00135110514F047 |
:10B2C00000E510E03FEF003B130714F400EB1FEF25 |
:10B2D000242D3327220F331F220F331FC901498129 |
:10B2E0005A81841B950B801791070CF48C0169819E |
:10B2F0007A81621B730B061717070CF48B01809180 |
:10B300003F07909140076091EC027091ED02861B1F |
:10B31000970B9093500780934F07D0906007209130 |
:10B320006F03309170034091710350917203DD20DF |
:10B3300041F0861A970AC401AA2797FDA095BA2F53 |
:10B3400004C0AA2797FDA095BA2F280F391F4A1FBE |
:10B350005B1F20936F0330937003409371035093EE |
:10B36000720380916F0390917003A0917103B0916B |
:10B37000720381509A4FA040B04064F080E09AEF91 |
:10B38000A0E0B0E080936F0390937003A0937103EB |
:10B39000B093720380916F0390917003A091710339 |
:10B3A000B091720380509640AF4FBF4F64F480E07D |
:10B3B00096E0AFEFBFEF80936F0390937003A0937D |
:10B3C0007103B09372038090930190909401940163 |
:10B3D000442737FD4095542F80916F03909170035F |
:10B3E000A0917103B0917203BC01CD010E942D7038 |
:10B3F000E0904F07F0905007E20EF31EB0907F01EF |
:10B400006B2D772788279927980117FF04C02227DB |
:10B410003327201B310B37FF02C02F5F3F4F35957D |
:10B42000279549815A81240F351F442737FD4095C0 |
:10B43000542F0E94B96F97FF04C0615C7F4F8F4FFC |
:10B440009F4F56E095958795779567955A95D1F7D3 |
:10B450009B016E157F050CF47B01309521953F4FC4 |
:10B46000E216F3060CF479018091300790913107D0 |
:10B470006091EA027091EB02861B970B90932F0765 |
:10B4800080932E07209173033091740340917503CC |
:10B4900050917603DD2041F0661A770AC301AA278E |
:10B4A00097FDA095BA2F04C0AA2797FDA095BA2FA3 |
:10B4B000280F391F4A1F5B1F2093730330937403B7 |
:10B4C00040937503509376038091730390917403B6 |
:10B4D000A0917503B091760381509A4FA040B0407F |
:10B4E00064F080E09AEFA0E0B0E080937303909363 |
:10B4F0007403A0937503B0937603809173039091C6 |
:10B500007403A0917503B091760380509640AF4FBD |
:10B51000BF4F64F480E096E0AFEFBFEF809373031A |
:10B5200090937403A0937503B0937603940144271A |
:10B5300037FD4095542F8091730390917403A0912F |
:10B540007503B0917603BC01CD010E942D70C090AF |
:10B550002E07D0902F07C20ED31E6B2D772788277A |
:10B560009927980117FF04C022273327201B310B8E |
:10B5700037FF02C02F5F3F4F35952795A981BA81CC |
:10B580002A0F3B1F442737FD4095542F0E94B96F67 |
:10B5900097FF04C0615C7F4F8F4F9F4F26E09595CA |
:10B5A0008795779567952A95D1F79B016C157D0551 |
:10B5B0000CF46B01309521953F4FC216D3060CF465 |
:10B5C000690182E2682E86E0782EB0E0AB2EB4E00E |
:10B5D000BB2EABE05A2EF1E68F2EF7E09F2EF50141 |
:10B5E000258512160CF0ABC049815A81CA01AA27E1 |
:10B5F00097FDA095BA2F332727FD3095432F532F62 |
:10B60000BC01CD010E94B96F97FF04C0615C7F4F00 |
:10B610008F4F9F4FE6E09595879577956795EA95CB |
:10B62000D1F77C8B6B8BC701AA2797FDA095BA2F0A |
:10B63000F5012685332727FD3095432F532FBC0175 |
:10B64000CD010E94B96F97FF04C0615C7F4F8F4F9F |
:10B650009F4F56E095958795779567955A95D1F7C1 |
:10B660002B893C89260F371F3C8B2B8BC601AA27C1 |
:10B6700097FDA095BA2FF5012785332727FD309533 |
:10B68000432F532FBC01CD010E94B96F97FF04C017 |
:10B69000615C7F4F8F4F9F4F46E0959587957795DB |
:10B6A00067954A95D1F72B893C89260F371F3C8B2C |
:10B6B0002B8BC801AA2797FDA095BA2FF5012089E9 |
:10B6C000332727FD3095432F532FBC01CD010E9416 |
:10B6D000B96FDC01CB01B7FF03C0CF96A11DB11D2F |
:10B6E00036E0B595A795979587953A95D1F7F401EA |
:10B6F000608171812B893C89820F931F0E945A318E |
:10B70000D4018D939C9397FD039695958795959578 |
:10B7100087959C8B8B8B832D9927EB89FC89E81768 |
:10B72000F9073CF0842D99272B893C8982179307D0 |
:10B7300014F49C8B8B8BEB89D301EC9302C0D30167 |
:10B740001C925A94E2E0F0E08E0E9F1E24E030E05E |
:10B75000A20EB31E620E731E57FE41CFE2E1CC5E15 |
:10B760000C9464708091C7039091C803A091C903A1 |
:10B77000B091CA038093BF039093C003A093C10309 |
:10B78000B093C2038091C3039091C403A091C503F9 |
:10B79000B091C6038093BB039093BC03A093BD03F9 |
:10B7A000B093BE0308951092D2031092D103109269 |
:10B7B000D0031092CF03089584B1806A84B93D9A72 |
:10B7C00082E58CBD1DBC459A81E0809393078AEA8F |
:10B7D0008093A30783E88093A4078AE08093A5075A |
:10B7E0001092A7071092A6071092A9071092A80717 |
:10B7F0001092FD071092C5070895EF92FF920F93E4 |
:10B800001F938091DD069927880F991F880F991F34 |
:10B810007C010027F7FC0095102F80913B0390914D |
:10B820003C03A0913D03B0913E03BC01CD01A801B2 |
:10B8300097010E942D703093A7072093A60780914F |
:10B84000330390913403A0913503B0913603BC01CA |
:10B85000CD01A80197010E942D703093A907209374 |
:10B86000A8072091890730918A0740918B07509152 |
:10B870008C07DA01C901E3E0880F991FAA1FBB1FDB |
:10B88000EA95D1F7820F931FA41FB51F820F931F54 |
:10B89000A41FB51F2091790130917A0140917B015D |
:10B8A00050917C01BC01CD010E942D703093AF07F7 |
:10B8B0002093AE07E0914503F0914603809156072F |
:10B8C00090915707BF010E94F86FCB019B01220F97 |
:10B8D000331F220F331F280F391F280F391F37FF3F |
:10B8E00002C02D5F3F4F35952795359527953093AD |
:10B8F000AB072093AA078091850790918607BF0127 |
:10B900000E94F86F9B01220F331F220F331F260F57 |
:10B91000371F260F371F37FF02C02D5F3F4F35956A |
:10B920002795359527953093AD072093AC07109256 |
:10B930004603109245031092570710925607109233 |
:10B940008607109285078091A50799278D3091056C |
:10B9500009F463C08E3091055CF48B30910509F4D5 |
:10B960008BC08C3091050CF00CC10A9761F08BC133 |
:10B970008F30910509F45FC18F3091050CF44BC1F4 |
:10B98000409781F180C18091D2028093B607809167 |
:10B99000D1028093B7078091D0028093B80780913D |
:10B9A000CF028093B9078091CE028093BA0780912D |
:10B9B000CD028093BB078091CC028093BC0780911D |
:10B9C000CB028093BD078091BE028093BE07809119 |
:10B9D000BE02837F8093BE02A2E0B0E00E94857029 |
:10B9E000802D4FC18091FF07909100089093B70779 |
:10B9F0008093B60780910308909104089093B9074B |
:10BA00008093B80780912501909126018093BA0711 |
:10BA1000809100018093BB0736C180910E0780930F |
:10BA2000B60780910F078093B70780911007809326 |
:10BA3000B807809111078093B9078091120780930E |
:10BA4000BA07809116078093BB07809117078093F0 |
:10BA5000BC07809118078093BD0780911B078093D6 |
:10BA6000BE07809119078093BF0780911A078093C2 |
:10BA7000C00780911C07CCC0F8948091C406E82FC1 |
:10BA8000FF27EE0FFF1FED5AF94F0190F081E02DD7 |
:10BA9000E038F1051CF0EFE7F0E006C02FEFE138E9 |
:10BAA000F20714F4E1E8FFEFE093B6078091C506D2 |
:10BAB000E82FFF27EE0FFF1FED5AF94F0190F0819D |
:10BAC000E02DE038F1051CF0EFE7F0E006C06FEF85 |
:10BAD000E138F60714F4E1E8FFEFE093B70780914F |
:10BAE000C306E82FFF27EE0FFF1FED5AF94F019015 |
:10BAF000F081E02DE038F1051CF0EFE7F0E006C042 |
:10BB00008FEFE138F80714F4E1E8FFEFE093B807AE |
:10BB10008091C206E82FFF27EE0FFF1FED5AF94F65 |
:10BB20000190F081E02DE038F1051CF0EFE7F0E046 |
:10BB300006C02FEFE138F20714F4E1E8FFEF789444 |
:10BB4000E093B9078091F0028093BA078091F102E7 |
:10BB50008093BB078091F2028093BC078091F3022F |
:10BB60008093BD078091F4028093BE078091F50217 |
:10BB70008093BF078091F6028093C0078091F702FF |
:10BB800047C080917F04863018F010927F0485E0D2 |
:10BB90008093B60780911D078093B7078091DC05DD |
:10BBA0009091DD059093B9078093B8078091DD02ED |
:10BBB0009091DE02A091DF02B091E002BC01CD01C4 |
:10BBC00025E030E040E050E00E942D703093BB074C |
:10BBD0002093BA07809113078093BC0780911407C4 |
:10BBE0008093BD07809115078093BE078091EF0277 |
:10BBF0008093BF078091EE028093C0078091E0059B |
:10BC00009091E10597FD0396959587959595879574 |
:10BC10008093C10738C01092B6078EE48093B707AF |
:10BC200081E08093B8078CE08093B907809102018E |
:10BC30008093BA0728C08091F5068093B60780915B |
:10BC400020078093B707809185018093B807809182 |
:10BC5000EE068093B9078091EF068093BA07809132 |
:10BC6000F0068093BB07809184018093BC0780918C |
:10BC7000F2068093BD078091F3068093BE07809102 |
:10BC8000F4068093BF078091C507882309F4B0C0EC |
:10BC90004091C7075091C807CA0181509E4F8F5FDE |
:10BCA0009340C8F42091C9073091CA07C901815057 |
:10BCB0009E4F8F5F934078F48091CE0685FF0BC036 |
:10BCC0005093D2034093D1033093D0032093CF03FA |
:10BCD0008AEF8093D4038091CD079091CE0721E025 |
:10BCE0008936920724F49093020380930103809194 |
:10BCF0000103909102032091FF0230910003821B07 |
:10BD0000930B845E9D4F68E671E00E94F86F845B40 |
:10BD100090409093FE028093FD022091D1073091D4 |
:10BD2000D2078091FE019091FF018217930740F4A2 |
:10BD300080917F04882321F43093FF012093FE013A |
:10BD40008091C60799278836910501F189369105BA |
:10BD500024F48736910529F053C08936910559F1AD |
:10BD60004FC08091D3078093FA078091D4078093C6 |
:10BD7000FC078091D5078093FB078091D6078093BD |
:10BD8000FD078091D7078093FE073AC08091D307C3 |
:10BD900080939D078091D40780939E078091D5075B |
:10BDA00080939F078091D6078093A0078091D70743 |
:10BDB0008093A10725C08091D30780939407809139 |
:10BDC000D407809395078091D5078093960780913B |
:10BDD000D7079091D8079093980780939707809101 |
:10BDE000D9079091DA0790939A078093990708C032 |
:10BDF0001092D2031092D1031092D0031092CF036D |
:10BE00001F910F91FF90EF900895809193078823E1 |
:10BE100009F43BC0459883EA97E090939C07809390 |
:10BE20009B079091D303E92FFF27E154FE4F9F5FBB |
:10BE30009093D30380818093A507993010F01092DE |
:10BE4000D303109293070E94FD5B81E08093A207C9 |
:10BE500000000000000000000000000000000000E2 |
:10BE600000000000000000000000000000000000D2 |
:10BE700000000000000000000000000000000000C2 |
:10BE80008091A3078093C2078EBD089530919307D8 |
:10BE9000332309F085C00DB407FE82C084E080938F |
:10BEA000FD01459A2EB58091D503992781309105E2 |
:10BEB00089F0823091051CF4892B21F03EC0029755 |
:10BEC000B9F03BC03093C4072093D6032138A9F5BD |
:10BED00081E008C0253549F48091D603820F809314 |
:10BEE000D60382E08093D50328C03093D50325C0C4 |
:10BEF0008091C407E82FFF27E052F84F20838F5F1F |
:10BF00008093C4079091D6038A31A0F0291769F471 |
:10BF10008AE1A0EEB7E0E6ECF7E00D9001928A9599 |
:10BF2000E1F781E08093C50702C03093C507109206 |
:10BF3000D50303C0920F9093D6032091A20720321D |
:10BF400008F028C045980000000000000000000034 |
:10BF500000000000000000000000000000000000E1 |
:10BF600000000000000000000000000000000000D1 |
:10BF7000000000000000E0919B07F0919C07E20F99 |
:10BF8000F11D80818EBD8091C2079081890F8093C1 |
:10BF9000C20703C081E0809393072F5F2093A2071D |
:10BFA000089587B18C6087B9429843981092D8035E |
:10BFB00080E88093C9011092D7038093C801089547 |
:10BFC0008091DD0381508093DD038F3F09F0F4C041 |
:10BFD00094E09093DD038091BE02807BE1F080913C |
:10BFE0000C07882349F08091E003882311F4909393 |
:10BFF000D80381E08093E00380910D078823B9F096 |
:10C000008091E103882319F484E08093D70381E0D1 |
:10C010008093E1030CC08093E0038093E10380915F |
:10C0200008078093DE0380910A078093DF038091E5 |
:10C03000E003882309F040C080911F07282F332791 |
:10C0400024FF07C08091E502882319F425FD4DC027 |
:10C050004EC090910907983F50F0809158078D3D50 |
:10C0600030F08091DE0388230CF43FC040C0983F3D |
:10C0700048F0809158078A3028F48091DE038823A5 |
:10C08000B4F133C08091D80381508093D8038F3F9F |
:10C0900079F58091580781508093D8038091C90128 |
:10C0A000813011F480E801C086958093C9018091A8 |
:10C0B000C9019091DE0317C08091D803815080930D |
:10C0C000D8038F3FA9F489E08093D8038091C901F8 |
:10C0D000813011F480E801C086958093C901809178 |
:10C0E000C90190910C07892311F0429A01C042982E |
:10C0F0008091E103882309F043C080911F07282F16 |
:10C10000332724FF07C08091E502882319F426FD18 |
:10C1100050C034C090910B07983F50F08091800739 |
:10C12000873E30F08091DF0388230CF442C026C0A4 |
:10C13000983F48F0809180078A3028F48091DF038F |
:10C140008823E4F036C08091D70381508093D703D1 |
:10C150008F3F91F58091800781508093D703809124 |
:10C16000C801813011F480E801C086958093C80130 |
:10C170008091C8019091DF038923D9F443980895F1 |
:10C180008091D70381508093D7038F3FA9F489E032 |
:10C190008093D7038091C801813011F480E801C0F9 |
:10C1A00086958093C8018091C80190910D078923DD |
:10C1B00011F0439A0895439808954FB724E130E071 |
:10C1C000F8948091C9008F778093C9008091C9004D |
:10C1D0008F7B8093C9008091C9008F7D8093C900B7 |
:10C1E0005A9A52985B9A539A832F99278093CD003D |
:10C1F0002093CC008091C80082608093C80080E1C9 |
:10C200008093C9008091CA008F778093CA00809183 |
:10C21000CA008F7B8093CA008091CA008F7D809373 |
:10C22000CA008091CA008F7E8093CA008091CA00A4 |
:10C23000877F8093CA008091C9008B7F8093C9005B |
:10C240008091CA0084608093CA008091CA00826095 |
:10C250008093CA008091C80087FF03C08091CE0000 |
:10C26000F9CF8091C90080688093C9004FBF0895BD |
:10C27000FF920F931F93CF93DF9380E197E20E9489 |
:10C28000F016EC01FF248091C9008F778093C900DC |
:10C290008091C9008F7E8093C9005A9881ED99E002 |
:10C2A0009F938F9307E213E11F930F93E091FE0397 |
:10C2B000F091FF0309950F900F900F900F9002C01F |
:10C2C0004A996CC0CE010E94F9168823C9F3E09107 |
:10C2D000FE03F091FF03FF2009F468C087E09AE0B5 |
:10C2E0009F938F931F930F930995529A0F900F90DE |
:10C2F0000F900F90CE010E94F9168823D9F383E6A0 |
:10C3000090E05A9A019797FFFCCF8FE891E05A98F6 |
:10C31000019797FFFCCF89E090E05A9A019797FF29 |
:10C32000FCCF89E090E05A98019797FFFCCF8FE807 |
:10C3300091E05A9A019797FFFCCF8FE891E05A98C5 |
:10C34000019797FFFCCF89E090E05A9A019797FFF9 |
:10C35000FCCF89E090E05A98019797FFFCCF8FE8D7 |
:10C3600091E05A9A019797FFFCCF8FE891E05A9895 |
:10C37000019797FFFCCF89E090E05A9A019797FFC9 |
:10C38000FCCF89E090E05A98019797FFFCCF8FE8A7 |
:10C3900091E05A9A019797FFFCCF13C08AE590E08D |
:10C3A0000E94F016EC0191E0F92E91CF8DE09AE019 |
:10C3B0009F938F931F930F9309950F900F900F905A |
:10C3C0000F9052985A980E94DD60E5E0CDB7DEB735 |
:10C3D0000C947170EF92FF920F931F93CF93DF93A2 |
:10C3E000482F00E010E08091CA01813061F4109282 |
:10C3F000CA0184E48093E2031092E4031092E30301 |
:10C400001092E5032BC18091E203882319F421E007 |
:10C4100030E001C098019091E303992371F4232B3C |
:10C4200011F081E010C084E48093E2039093E40370 |
:10C430009093E3039093E503FAC0913069F4232BC2 |
:10C4400009F0EBC082E08093E3038091E4038F5F07 |
:10C450008093E40383E0E9C09230D1F4232B09F008 |
:10C46000DCC083E08093E2034093E5039091E40312 |
:10C47000923039F41092E60347FF03C081E08093C5 |
:10C48000E60383E08093E3039F5F9093E403CFC0D0 |
:10C49000933009F0C2C0232B09F0BFC09093E20390 |
:10C4A00082E08093E3038091E4038F5F8093E40351 |
:10C4B0002091E503822F9927782F6627842F9927CB |
:10C4C000682B792B8091E706813049F47370CB019A |
:10C4D0008050924063E070E00E94F86F17C0823095 |
:10C4E00061F47770CB018050944066E070E00E9468 |
:10C4F000F86F2695269526950BC073706856714087 |
:10C50000CB0177FD0196BC0175956795269526951B |
:10C51000022F11270F7010700F5F1F4F0D30110584 |
:10C5200008F074C07801E00EF11EF701ED5AF94FE2 |
:10C53000808191819B01281B390BC90137FF03C002 |
:10C54000909581959F4F069794F48091EF02883CD7 |
:10C5500030F48091EF02865F8093EF0208C088EC90 |
:10C560008093EF0280916F008F7D80936F00F701C1 |
:10C57000ED5AF94F808191819C01220F331F280FC2 |
:10C58000391F260F371F37FF02C02D5F3F4FE901CC |
:10C59000D595C795D595C795CB0101968C179D0765 |
:10C5A00014F4219706C061507040C617D7070CF4E9 |
:10C5B00021968091EF02843BD0F0F701ED5AF94FBC |
:10C5C00080819181FE01E81BF90BCF0163E070E0EF |
:10C5D0000E94F86FCB01880F991F860F971F27E8DD |
:10C5E00036E0E20EF31EF7019183808307C027E84F |
:10C5F00036E0E20EF31EF70111821082000F111FC8 |
:10C600000D5A194FF801D183C08311C002311105B1 |
:10C6100070F081E08093CA010AC081E08093CA0172 |
:10C620001092E4031092E60384E48093E203809185 |
:10C63000E403803198F08091E603882331F48091FF |
:10C64000CA01882311F4809378011092E4031092B8 |
:10C65000E6031092E30384E48093E203E6E0CDB7BF |
:10C66000DEB70C947070CF93FC0197FF05C0CFEF3D |
:10C67000F095E195FF4F01C0C1E028E631E0CF0120 |
:10C68000B9010E94F86FFC018B35910554F08B5570 |
:10C6900090408A35910538F484EB90E08E1B9F0B17 |
:10C6A000FC0141E00DC0CF01855B90408A359105CA |
:10C6B00018F4E45BF04003C02E1B3F0BF9014FEF71 |
:10C6C000EE0FFF1FE85EF54F259134918C2F9927CF |
:10C6D00087FD9095289FB001299F700D389F700DA0 |
:10C6E0001124842F992787FD9095689FA001699F49 |
:10C6F000500D789F500D1124CA01CF9108952AE55D |
:10C7000030E0281B390BC9010E9433630895CF9391 |
:10C71000DF9380E00E94EB668091250190912601D5 |
:10C720006AE070E00E94F86F9F938F9380912501DB |
:10C73000909126016AE070E00E94F86F7F936F93FA |
:10C7400086EE9AE09F938F93CEEDD6E6DF93CF935C |
:10C75000E091FE03F091FF0309952DB73EB7285FE6 |
:10C760003F4F2DBF8091D403882339F187E00E9489 |
:10C77000EB668FED90E09F938F9380919907909156 |
:10C780009A079F938F9380919707909198076AE0FB |
:10C7900070E00E94E46F7F936F938FEE9AE09F9317 |
:10C7A0008F93DF93CF93E091FE03F091FF03099500 |
:10C7B0008DB79EB70A968DBF12C087E00E94EB66C8 |
:10C7C0008CEF9AE09F938F93DF93CF93E091FE03DA |
:10C7D000F091FF0309950F900F900F900F9080E15B |
:10C7E0000E94EB668091D0019091D1016CE370E0E2 |
:10C7F0000E94E46F9F938F938091D0019091D1011B |
:10C800006CE370E00E94E46F7F936F938091030864 |
:10C81000909104089F938F9383E09BE09F938F9365 |
:10C82000DF93CF93E091FE03F091FF030995809190 |
:10C83000CE062DB73EB7265F3F4F2DBF80FF24C0E9 |
:10C840008BE10E94EB668091E1029091E202A0915F |
:10C85000E302B091E402BC01CD0124E630E040E007 |
:10C8600050E00E942D703F932F9381E19BE09F93B6 |
:10C870008F93DF93CF93E091FE03F091FF0309952F |
:10C880008DB79EB706968DBFDF91CF910895CF9358 |
:10C89000DF9380E00E94EB6686E19BE09F938F939D |
:10C8A000CEEDD6E6DF93CF93E091FE03F091FF0348 |
:10C8B000099580E10E94EB660F900F900F900F900A |
:10C8C0008091890790918A07A0918B07B0918C077E |
:10C8D0002091790130917A0140917B0150917C0146 |
:10C8E000BC01CD010E942D703F932F9380913303A3 |
:10C8F00090913403A0913503B0913603B7FF04C083 |
:10C9000081509C4FAF4FBF4F3AE0B595A795979593 |
:10C9100087953A95D1F79F938F9380913B039091A0 |
:10C920003C03A0913D03B0913E03B7FF04C081508A |
:10C930009C4FAF4FBF4F2AE0B595A7959795879528 |
:10C940002A95D1F79F938F9385E29BE09F938F93D6 |
:10C95000DF93CF93E091FE03F091FF0309958DB72C |
:10C960009EB70A968DBFDF91CF9108950F931F93C5 |
:10C9700080E00E94EB662AE030E08091FF07909112 |
:10C980000008B9010E94E46F9F938F938091FF0785 |
:10C9900090910008B9010E94E46F7F936F9380919A |
:10C9A000250190912601B9010E94F86F9F938F9302 |
:10C9B0008091250190912601B9010E94F86F7F9323 |
:10C9C0006F9381E39BE09F938F930EED16E61F9389 |
:10C9D0000F93E091FE03F091FF03099580E10E941F |
:10C9E000EB668DB79EB70C968DBF80910308909132 |
:10C9F00004089F938F9380910108909102089F9360 |
:10CA00008F9384E49BE09F938F931F930F93E09108 |
:10CA1000FE03F091FF0309958DB79EB708968DBF71 |
:10CA20001F910F9108950F931F93CF93DF938091E0 |
:10CA3000D403CEEDD6E6882309F490C080E00E94AE |
:10CA4000EB668091950799279F938F9380E59BE0F4 |
:10CA50009F938F938E01DF93CF93E091FE03F0912C |
:10CA6000FF0309958DB79EB706968DBF80919607F7 |
:10CA700099278230910579F0833091051CF4892B38 |
:10CA800021F019C0039789F016C087E00E94EB6679 |
:10CA900089E59BE005C087E00E94EB668FE59BE09F |
:10CAA0009F938F93DF93CF930FC087E00E94EB6635 |
:10CAB00085E69BE0F5CF87E00E94EB668BE69BE086 |
:10CAC0009F938F931F930F93E091FE03F091FF03C9 |
:10CAD00009950F900F900F900F908091940781FF10 |
:10CAE00014C089E00E94EB6681E79BE09F938F93DF |
:10CAF0008EED96E69F938F93E091FE03F091FF03F6 |
:10CB000009950F900F900F900F9080E10E94EB66B7 |
:10CB10008FED90E09F938F938091990790919A0762 |
:10CB20009F938F9380919707909198076AE070E0A8 |
:10CB30000E94E46F7F936F9387E79BE09F938F93AF |
:10CB40008EED96E69F938F93E091FE03F091FF03A5 |
:10CB500009958DB79EB70A968DBF12C082E00E94DC |
:10CB6000EB6689E89BE09F938F93DF93CF93E091EF |
:10CB7000FE03F091FF0309950F900F900F900F9017 |
:10CB8000DF91CF911F910F910895CF93C82F2091DE |
:10CB9000E7032093E80399278F329105E1F0803372 |
:10CBA00091051CF44F9779F027C08F349105D9F087 |
:10CBB0008F38910509F586E0289FF0011124E25392 |
:10CBC000F54F849117C086E0289FF0011124E153AE |
:10CBD000F54F84910FC086E0289FF0011124E053A7 |
:10CBE000F54F849107C086E0289FF0011124EF5291 |
:10CBF000F54F84918093E7039091E7038091E803D8 |
:10CC00009813C0E00E94F1669091E70386E0989F38 |
:10CC1000F0011124EE52F54F259134918C2FF9013A |
:10CC20000995CF910895109200081092FF07109275 |
:10CC300004081092030810920208109201088AE07A |
:10CC400090E00E94F0169093EA038093E903089520 |
:10CC5000CF93DF938091E9039091EA030E94F91644 |
:10CC6000882309F4A8C08091E9039091EA030A9609 |
:10CC70009093EA038093E903E0E0F0E09F0190E005 |
:10CC8000A2E2B6E04BE0ED01898187FF07C09F5F1C |
:10CC90008A81E80FF11D8C91280F311D41501496A7 |
:10CCA00047FFF1CF232B41F52091EF033091F003A3 |
:10CCB0004091F1035091F203BB27A52F942F832FAE |
:10CCC0009093EE038093ED03AA27BB27281B390B13 |
:10CCD0004A0B5B0BCF01AA27BB27280F391F4A1F1E |
:10CCE0005B1F2093EF033093F0034093F1035093C5 |
:10CCF000F203E5E0F0E013C02091ED033091EE0384 |
:10CD00002E173F0718F4E21BF30B02C0E0E0F0E03F |
:10CD1000892F9927880F991FE80FF91F3596F093EF |
:10CD20000008E093FF07EF3FF10578F480912501BB |
:10CD3000909126018E9F90018F9F300D9E9F300D08 |
:10CD40001124C90164E670E013C0CF019695879560 |
:10CD5000969587952091250130912601289FA00165 |
:10CD6000299F500D389F500D1124CA0169E170E0D0 |
:10CD70000E94E46F70930208609301082091EB0316 |
:10CD80003091EC032E0F3F1F3093EC032093EB0305 |
:10CD90005EE02131350778F0809103089091040816 |
:10CDA0000196909304088093030820513E403093ED |
:10CDB000EC032093EB03DF91CF9108959091F4035E |
:10CDC000933240F4E92FFF27EB5FF74F80839F5F9B |
:10CDD0009093F4030895833218F48D5F8093F403E5 |
:10CDE000089590E2E8E0F8E08FE19193815087FFA9 |
:10CDF000FCCF0895CF93CFB723E031E0F894809132 |
:10CE0000C9008F778093C9008091C9008F7B809380 |
:10CE1000C9008091C9008F7D8093C9005A9A5298A9 |
:10CE20005B9A539A832F99278093CD002093CC004F |
:10CE30008091C80082608093C80088E18093C90017 |
:10CE40008091CA008F778093CA008091CA008F7B3F |
:10CE50008093CA008091CA0080628093CA0080914A |
:10CE6000CA0080618093CA008091CA008860809364 |
:10CE7000CA008091C90084608093C9008091CA0073 |
:10CE800084608093CA008091CA0082608093CA0047 |
:10CE90008091C80087FF03C08091CE00F9CF8091B8 |
:10CEA000C90080688093C9008091C9008064809324 |
:10CEB000C9000E94F166CFBFCF910895282F99270E |
:10CEC0008F709070892B31F420958091F303822B21 |
:10CED0008093F30308958091CB01882309F43FC028 |
:10CEE0008091BE0285FF0AC082E98093050883E233 |
:10CEF0008093060885E58093070802C01092050814 |
:10CF00008091F303882321F480910508882339F167 |
:10CF10008091CC018F3021F48091F3030E94C5658C |
:10CF20001092CB018091C80085FFFCCF8091C90091 |
:10CF30008F7E8093C9008091C9008E7F8093C90045 |
:10CF400080910508882311F48EEF01C08EE780934D |
:10CF5000CE008091F3038093CC011092F3030895E7 |
:10CF60001F920F920FB60F9211248F939F93EF93FE |
:10CF7000FF939091CB019923E1F58091F5038823EC |
:10CF800041F480910508882399F483E08093F503A8 |
:10CF90000FC0833099F480910508882349F090935D |
:10CFA00005088091C9008E7F8093C9008EEF1EC056 |
:10CFB0008091C90081608093C9000EC0833261F402 |
:10CFC0008091C9008E7F8093C9008FEF8093CE003F |
:10CFD00081E08093CB0114C08091F503E82FFF27F7 |
:10CFE000EB5FF74F8F5F8093F50380818093CE00D6 |
:10CFF00007C01092F5038091C90080618093C90039 |
:10D00000FF91EF919F918F910F900FBE0F901F9006 |
:10D0100018959FB7F8948091C900877F8093C900C5 |
:10D020008091C9008F7E8093C9008091C9008F775D |
:10D030008093C9008091C9008F7B8093C900809143 |
:10D04000C9008F7D8093C90052985A9A53985B9A71 |
:10D050009FBF0895CF93DF938091F603882309F44F |
:10D060009FC09091E7068091CF01981709F498C06E |
:10D070008091CE01823071F48091C800803241F4F9 |
:10D080008091CA00863021F481E08093CE0102C0F5 |
:10D090001092CE0182E89CE09F938F93C7E2D3E188 |
:10D0A000DF93CF93E091FE03F091FF0309950F907A |
:10D0B0000F900F900F908091E7069927823091058D |
:10D0C00001F1833091052CF4009761F0019769F02C |
:10D0D00024C084309105D9F084309105ACF00597D7 |
:10D0E000C9F01BC082E79CE002C080E69CE09F93F1 |
:10D0F0008F93DF93CF93E091FE03F091FF030995A7 |
:10D1000019C087E49CE0F3CF84E29CE0F0CF86E195 |
:10D110009CE0EDCF8EE09CE0EACF8FE89CE09F930F |
:10D120008F93DF93CF93E091FE03F091FF03099576 |
:10D130001092E7060F900F900F900F908091CE0104 |
:10D140008823A9F00E9409689091E706892F8150F1 |
:10D15000833018F40E94DD601FC0943019F40E94DF |
:10D16000FA661AC09530C1F40E94CF6915C080914B |
:10D17000E706882389F085EA9CE09F938F9387E2F6 |
:10D1800093E19F938F93E091FE03F091FF03099544 |
:10D190000F900F900F900F908091E7068093CF0132 |
:10D1A000DF91CF9108950F931F9381E08093F60351 |
:10D1B0004091CD01EEEBFBE020E030E05FE48491B4 |
:10D1C00099272F5F3F4F829FB001839F700D929FE1 |
:10D1D000700D112446275150319657FFF0CF4093E0 |
:10D1E000CD01E6E9FBE020E030E057E284919927A9 |
:10D1F0002F5F3F4F829FB001839F700D929F700DF4 |
:10D20000112446275150319657FFF0CF4093CD015E |
:10D21000433459F088E190E029E20FB6F894A895DC |
:10D22000809360000FBE209360008DEC9BE690938E |
:10D23000FF038093FE0380EC9CE09F938F9307E2B3 |
:10D2400013E11F930F93E091FE03F091FF03099503 |
:10D250000F900F900F900F9082E690E09F938F9326 |
:10D260008EE490E09F938F931F921F928091020112 |
:10D270006AE00E94D86F892F99279F938F9380919E |
:10D2800002010E94D86F99279F938F9386EE9CE0AE |
:10D290009F938F931F930F93E091FE03F091FF03F1 |
:10D2A00009958EEB9BE09F938F931F930F93E091D3 |
:10D2B000FE03F091FF03099586E99BE09F938F930E |
:10D2C0001F930F93E091FE03F091FF0309958DB733 |
:10D2D0009EB746968DBF8AE19DE09F938F931F93E3 |
:10D2E0000F93E091FE03F091FF03099583EC809387 |
:10D2F000810080916F00806280936F000F900F908B |
:10D300000F900F901F910F9108958091F60388233D |
:10D3100061F08091E706843011F40E946B67809180 |
:10D32000CD01833411F01092F60308951F920F92ED |
:10D330000FB60F9211242F933F934F935F936F93E8 |
:10D340007F938F939F93AF93BF93EF93FF9320911E |
:10D35000CE009091E706892F8150833020F4822FF0 |
:10D360000E94EA610BC0943021F4822F0E945E6714 |
:10D3700005C0953019F4822F0E943B6BFF91EF910D |
:10D38000BF91AF919F918F917F916F915F914F91DD |
:10D390003F912F910F900FBE0F901F9018954FB790 |
:10D3A00020E430E0F8948091C9008F778093C90021 |
:10D3B0008091C9008F7B8093C9008091C9008F7DC7 |
:10D3C0008093C9005A9A52985B9A539A832F99274F |
:10D3D0008093CD002093CC008091C8008260809320 |
:10D3E000C80088E18093C9008091CA008F7780933C |
:10D3F000CA008091CA008F7B8093CA008091CA00C6 |
:10D400008F7D8093CA008091CA008F7E8093CA006E |
:10D410008091CA00877F8093CA008091C9008B7F6A |
:10D420008093C9008091CA0084608093CA00809173 |
:10D43000CA0082608093CA008091C80087FF03C041 |
:10D440008091CE00F9CF8091C90080688093C90097 |
:10D450004FBF08950F931F93CF93DF93482F4F5FD4 |
:10D46000893108F089C080915206841710F44093E6 |
:10D470005206CB0183539B4268E170E00E94F86F33 |
:10D48000A42FBB27FD01EA0FFB1FED5AF94F808146 |
:10D4900091819B01281B390BC90137FF03C090956F |
:10D4A00081959F4F069794F48091EF02883C30F469 |
:10D4B0008091EF02865F8093EF0208C088EC809332 |
:10D4C000EF0280916F008F7D80936F00FD01EA0F66 |
:10D4D000FB1FED5AF94F808191819C01220F331F70 |
:10D4E000280F391F260F371F37FF02C02D5F3F4F10 |
:10D4F000E901D595C795D595C795CB0101968C17B0 |
:10D500009D0714F4219706C061507040C617D707D5 |
:10D510000CF421968091EF02843BD8F08D010A0F24 |
:10D520001B1FF801ED5AF94F80819181FE01E81B24 |
:10D53000F90BCF0163E070E00E94F86FCB01880F18 |
:10D54000991F860F971F0957194FF8019183808300 |
:10D5500007C0AA0FBB1FA957B94F11961C921E9264 |
:10D56000E42FFF27EE0FFF1FED5AF94FD183C08341 |
:10D57000443011F410927801DF91CF911F910F91F7 |
:10D580000895CF93DF9320912808822F9927807FD9 |
:10D590009070409709F06CC02F3109F046C080911F |
:10D5A00029088093F70320912B082093F903809199 |
:10D5B0002C088093F803822F992790935406809328 |
:10D5C0005306222309F054C08091C206282F332726 |
:10D5D000220F331FF901E957F94F11821082809110 |
:10D5E000C306A82FBB27AA0FBB1FFD01E957F94FA0 |
:10D5F000118210828091C506E82FFF27EE0FFF1FD2 |
:10D60000CF018957994FEC01198218822D5A394F51 |
:10D61000E90119821882AD5AB94F11961C921E92D7 |
:10D62000ED5AF94F1182108223C0C22FCF70CA3039 |
:10D63000F8F48091290880932F0880912A0880931C |
:10D640002E0880912B088093310880912C088093BC |
:10D65000300860912E0870912F088C2F0E942A6A42 |
:10D6600060913008709131088C2F8F5F0E942A6A78 |
:10D67000DF91CF910895CF93C82F8F3F49F48091C8 |
:10D68000FA038F3F29F41092FC031092FB0332C07F |
:10D690002091FC03222339F4CF3111F485E001C03D |
:10D6A00084E08093FD038091FD039091FB0382173A |
:10D6B000A0F4892F80958093FB038F3F19F48EEFA0 |
:10D6C0008093FB038091FB03C81711F40E94C16A89 |
:10D6D0001092FC031092FB030BC0E22FFF27E85DC2 |
:10D6E000F74FC0832F5F2093FC039C0F9093FB03A5 |
:10D6F000C093FA03CF910895EF92FF920F931F9377 |
:10D70000CF93DF937C018B01EA01452B39F0F801BF |
:10D7100081918F01F70109952197C9F7E6E0CDB70F |
:10D72000DEB70C947070EF92FF920F931F93CF931C |
:10D73000DF937C018B01EA01452B41F0F8010F5F7B |
:10D740001F4F8491F70109952197C1F7E6E0CDB706 |
:10D75000DEB70C9470700F931F93CF938C01C62F7C |
:10D76000161634F480E2F8010995C1501C16D4F362 |
:10D77000CF911F910F9108950F931F93CF938C0119 |
:10D78000C62F161634F480E3F8010995C1501C1613 |
:10D79000D4F3CF911F910F910895A2E3B0E0E3ED90 |
:10D7A000FBE60C94487029962EAC3FAC29971DA639 |
:10D7B0001EA61FA618AAFBE46F2E712C6C0E7D1EF0 |
:10D7C0002B96AEACBFAC2B978091F603882329F43F |
:10D7D00085B7816085BF82E085BFB50105C0053290 |
:10D7E00039F00894A11CB11CF50104910023B9F78C |
:10D7F000A501461B570B19F0C1010E94936B002332 |
:10D8000009F43FC20894A11CB11C552459AA5CA676 |
:10D810001FEF59A6F5010894A11CB11C049105370E |
:10D8200021F0802F80628837F1F450FE0EC0F301A2 |
:10D8300024E030E0620E731E80819181A281B38169 |
:10D840008DA79EA7AFA7B8AB0EC0F301A2E0B0E0D2 |
:10D850006A0E7B1E808191819C01442755272DA74C |
:10D860003EA74FA758AB003221F489A5882391F633 |
:10D870001DC0033211F438E083C00A3211F00D32BA |
:10D8800099F40A3261F4F30142E050E0640E751E2F |
:10D89000E081ECA7EE230CF0BDCFE195ECA750E1C1 |
:10D8A000552A8FED5822B6CF0B3211F409A7B2CF0B |
:10D8B0000E32C1F5F5010894A11CB11C04910A3285 |
:10D8C00079F4F301A2E0B0E06A0E7B1E4081518141 |
:10D8D000BFEF4F3F5B0714F44FEF5FEF142F9ACF6A |
:10D8E00040E050E0802F80538A30A0F4CA01E3E08A |
:10D8F000880F991FEA95E1F7840F951F480F591F6C |
:10D90000400F511D40535040F5010894A11CB11C1B |
:10D910000491E8CFEFEF4F3F5E0714F44FEF5FEF56 |
:10D92000142F7DCF003329F454FC74CFF0E25F2A2A |
:10D9300071CF802F81538930D8F440E050E0CA0184 |
:10D9400073E0880F991F7A95E1F7840F951F480FB0 |
:10D95000591F400F511D40535040F5010894A11C20 |
:10D96000B11C0491802F80538A3048F34CA757CFC5 |
:10D97000083619F424E0522A4DCF0C3619F431E060 |
:10D98000532A48CF033661F44E010894811C911C40 |
:10D99000F30142E050E0640E751E808189831CC152 |
:10D9A000043421F0043611F00936B1F5043411F4D1 |
:10D9B00051E0552A50FE0AC0F30184E090E0680E61 |
:10D9C000791E20813181428153810CC0F30142E0F4 |
:10D9D00050E0640E751E808191819C01442737FDC3 |
:10D9E0004095542F2DA73EA74FA758AB8DA59EA5B8 |
:10D9F000AFA5B8A9B7FF0DC0B095A095909581953A |
:10DA00009F4FAF4FBF4F8DA79EA7AFA7B8AB8DE27B |
:10DA100089A76AE0462E7BC00F3411F00F3639F427 |
:10DA20000F3411F491E0592A58E0452E6FC00037A9 |
:10DA3000A1F4F301A2E0B0E06A0E7B1E8081918127 |
:10DA40009C01442755272DA73EA74FA758AB40E17F |
:10DA5000442E30E4532A08E759C00337C1F5F301D7 |
:10DA600042E050E0640E751E808091808114910424 |
:10DA700089F44E010894811C911C88E289838EE60A |
:10DA8000F401818385E78B838CE68C838D8389E227 |
:10DA90008E831F8217FD13C0812F992787FD9095D4 |
:10DAA000AC0160E070E0C4010E94D26E009729F0E2 |
:10DAB000D82ED8181D150CF091C0D12E8FC0F401AE |
:10DAC00001900020E9F73197DE2ED81887C0053580 |
:10DAD00011F0053739F4053511F4F1E05F2A3AE029 |
:10DAE000432E14C0083519F0083709F06DC020E145 |
:10DAF000422E53FE0BC02DA53EA54FA558A92115BA |
:10DB000031054105510511F030E4532A19A619AB2E |
:10DB100017FD02C04FED542299E2892E912C8C0EF4 |
:10DB20009D1E8DA59EA5AFA5B8A90097A105B1051D |
:10DB300021F499A9992309F440C0C42CDD24EE24D2 |
:10DB4000FF241AAA2DA53EA54FA558A92C153D05C1 |
:10DB50004E055F0510F031E03AAB6DA57EA58FA5AF |
:10DB600098A9A70196010E940B70DC01CB01182F28 |
:10DB70008A3010F4105D04C0195A083509F41F7D6D |
:10DB8000D4011E934D016DA57EA58FA598A9A7016F |
:10DB900096010E940B702DA73EA74FA758ABBAA9BC |
:10DBA000BB2379F6E8E04E1641F453FE06C010336D |
:10DBB00021F080E3D4018E934D01CE010196D82E41 |
:10DBC000D818B8E2DB0E0BC0002309F45AC04E018E |
:10DBD0000894811C911C098381E0D82E19A61D2D63 |
:10DBE000C9A8CD18C7FCCC2489A5882311F01F5FD4 |
:10DBF00002C056FC1E5F1C0DE52CFF24C70180737C |
:10DC00009070892B31F48CA5811B682FC1010E9473 |
:10DC1000AB6B89A5882331F041E050E0BE01675D20 |
:10DC20007F4F0AC0E6FE0BC080E38AA70BA742E045 |
:10DC300050E0BE01665D7F4FC1010E947C6BC70151 |
:10DC400080739070809731F48CA5811B682FC1017F |
:10DC50000E94BC6B6C2DC1010E94BC6B8D2D99275D |
:10DC600087FD9095AC01B401C1010E947C6BE4FE7C |
:10DC7000B4CDECA5E11BECA76E2FC1010E94AB6BEC |
:10DC8000ACCDE2E1CE5C0C946470002422273327F3 |
:10DC9000442751E0BB27EE27FF27A0E1660F771F3F |
:10DCA000881F991F001C221F331F441F660F771FF8 |
:10DCB000881F991F001C221F331F441F2AF4050EC2 |
:10DCC0002B1F3E1F4F1F04C0051A2B0B3E0B4F0B83 |
:10DCD000550FBB1FEE1F587F556047FD5250AA9548 |
:10DCE000E9F6E695B7955795E695B7955795852F3B |
:10DCF0009B2F08952227332741E0552768E0880F9E |
:10DD0000991F221F331F880F991F221F331F1AF4D8 |
:10DD1000240F351F02C0241B350B440F551F487FAD |
:10DD2000456037FD42506A9551F75695479556958F |
:10DD30004795842F0895AA2797FF04C08095909552 |
:10DD40008A1F9A1F77FF04C0609570956A1F7A1F1B |
:10DD5000669F9001779FA001679F300D411D5A1F5C |
:10DD6000300D411D5A1F889FF001999F2E0F3F1FB4 |
:10DD7000401D511D899F300D411D5A1F300D411D01 |
:10DD80005A1FCA01B901112480CFFB01DC0140FFF9 |
:10DD900005C002C005900D9205900D924250504072 |
:10DDA000C8F70895FC014150504030F0019006162C |
:10DDB000D1F73197CF0108958827992708955058B2 |
:10DDC000192EA6D001D08CC0BA176207730784073A |
:10DDD0009507B1F188F40EF410940B2EBA2FA02DF4 |
:10DDE000062E622F202D072E732F302D082E842F04 |
:10DDF000402D092E952F502DFF275523B9F0591B83 |
:10DE000049F0573E98F0469537952795A795F040ED |
:10DE10005395C9F776F0BA0F621F731F841F30F451 |
:10DE2000879577956795B795F040939517FA0F2EDC |
:10DE30000895BF1BBB27BA0B620B730B840BF6CF85 |
:10DE4000DEF692C097FB70D09F3738F0FEE9F91BE1 |
:10DE5000982F872F762F6B2F05C083C096958795B7 |
:10DE600077956795F150D0F73EF490958095709531 |
:10DE700061957F4F8F4F9F4F0895E89403C097FBA4 |
:10DE80000EF4F3DFB62F672F782F892F9EE9002439 |
:10DE900027C00ED05EF004C00BD026F001C008D021 |
:10DEA00019F020F48FEF089580E0089581E008953F |
:10DEB00097FB092E052600F868942DD0E89407FCFE |
:10DEC00007C0621773078407950721F008F40094D0 |
:10DED0000794989408959A95BB0F661F771F881F23 |
:10DEE00011249923A1F08823B2F79F3F59F0BB0F6B |
:10DEF00048F421F4002011F460FF04C06F5F7F4FED |
:10DF00008F4F9F4F881F9795879597F9089529C040 |
:10DF1000052E092607FA440F551F5F3F79F0AA27FF |
:10DF2000A51708F051E04795880F991F9F3F31F0E2 |
:10DF3000BB27B91708F091E0879508959F919F91AD |
:10DF4000112414C097FB880F991F9F3F31F0BB2706 |
:10DF5000B91708F091E0879508959F919F9111243A |
:10DF600005C0662777278827992708959FEF80ECBB |
:10DF70000895629FD001739FF001829FE00DF11D13 |
:10DF8000649FE00DF11D929FF00D839FF00D749F33 |
:10DF9000F00D659FF00D9927729FB00DE11DF91FDF |
:10DFA000639FB00DE11DF91FBD01CF01112408953C |
:10DFB000991B79E004C0991F961708F0961B881FDB |
:10DFC0007A95C9F780950895AA1BBB1B51E107C03C |
:10DFD000AA1FBB1FA617B70710F0A61BB70B881FF9 |
:10DFE000991F5A95A9F780959095BC01CD01089588 |
:10DFF00097FB092E07260AD077FD04D0E5DF06D06F |
:10E0000000201AF4709561957F4F0895F6F790956A |
:10E0100081959F4F0895A1E21A2EAA1BBB1BFD01FB |
:10E020000DC0AA1FBB1FEE1FFF1FA217B307E407F7 |
:10E03000F50720F0A21BB30BE40BF50B661F771F4F |
:10E04000881F991F1A9469F760957095809590952F |
:10E050009B01AC01BD01CF01089597FB092E052658 |
:10E060000ED057FD04D0D7DF0AD0001C38F45095ED |
:10E070004095309521953F4F4F4F5F4F0895F6F7EC |
:10E0800090958095709561957F4F8F4F9F4F089524 |
:10E090002F923F924F925F926F927F928F929F92B8 |
:10E0A000AF92BF92CF92DF92EF92FF920F931F93A6 |
:10E0B000CF93DF93CDB7DEB7CA1BDB0B0FB6F89457 |
:10E0C000DEBF0FBECDBF09942A88398848885F8497 |
:10E0D0006E847D848C849B84AA84B984C884DF8008 |
:10E0E000EE80FD800C811B81AA81B981CE0FD11DEC |
:10E0F0000FB6F894DEBF0FBECDBFED010895EE0F51 |
:10E10000FF1F0590F491E02D0994F999FECFB2BD5F |
:10E11000A1BDF89A119600B40895F7DF01921A9400 |
:10E12000E1F70895F999FECFB2BDA1BD00BC1196EB |
:10E130000FB6F894FA9AF99A0FBE08950190F2DF9B |
:06E140001A94E1F70895B6 |
:10E146005E010A0151756164726F00000164FF018E |
:10E15600FFFF01FC01FC0101737373FF03007D00E7 |
:10E1660000C409C40964001048616C6C6F205765CF |
:10E176006C740000000000000000000000000000B9 |
:10E186000000000000000000000000000000000089 |
:10E196000000000000000000000000000000000079 |
:10E1A6000000000000000000000000000000000069 |
:10E1B6000000000000000000010B050000ECFF64F9 |
:10E1C60040415A4664640A02969696960840403A3A |
:10E1D60010FB30380190D0030090D00300F40164A6 |
:10E1E6000053706F727400004E6F726D616C0000A8 |
:10E1F600426567696E6E657200007800FF03640B06 |
:10E206000A0D0B0C0E0B0F10010101010F7002FF1E |
:00000001FF |
/tags/V0.78b/Hex-Files/Flight-Ctrl_MEGA644_V0_78b_S3D.hex |
---|
0,0 → 1,3571 |
:100000000C94A0060C94BB060C94BB060C94BB0687 |
:100010000C94BB060C94BB060C94BB060C94BB065C |
:100020000C94BB060C9470170C94BB060C94BB0686 |
:100030000C94682C0C94BB060C94BB060C94BB0669 |
:100040000C94BB060C94BB060C9405160C94BB06D2 |
:100050000C947D0D0C94BB060C94470D0C94BB06C0 |
:100060000C946A1C0C94BB060C94232B0C94BB06BA |
:100070000C9419680C94BB060C943366951C9A1C5E |
:100080009F1CA81CBF1CD61CE61CF61C131D6D1F54 |
:10009000D61C2F1E401E6F1E8D1EAA1E041F5F1F22 |
:1000A0003D21B6217222E9225223F523002667263C |
:1000B000E1262B277627C32710286A28D7287129FD |
:1000C0006B2A462B782B872BB22BE42BF42B342C6A |
:1000D000342C212C0C2C0E2C282C162C212C112CE1 |
:1000E000132C282C162C212C232C252C282C2C2CA2 |
:1000F0000A0D426174743A0020332043656C6C73BE |
:1001000020200020342043656C6C73202000204C9C |
:100110006F77207761726E696E67206C6576656CAB |
:100120003A2025642E2564000A0D47656E657261CC |
:1001300074696E672064656661756C74204D6978BA |
:100140006572205461626C65000A0D4D69786572B4 |
:100150002D436F6E6669673A20272573272028256F |
:1001600075204D6F746F727329000A0D466F756E9E |
:100170006420424C2D4374726C3A200025642000A8 |
:100180000A0D0A0D2121204D495353494E47204263 |
:100190004C2D4354524C3A202564202121000A0D55 |
:1001A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7F |
:1001B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D6F |
:1001C0003D3D3D000A0D496E69742E204545505253 |
:1001D0004F4D003A2047656E65726174696E672005 |
:1001E00044656661756C742D506172616D657465EE |
:1001F00072207573696E67206F6C64205374696335 |
:100200006B2053657474696E6773000A0D466C69E0 |
:100210006768742D74696D65202575206D696E2081 |
:1002200020546F74616C3A2575206D696E000A0D5B |
:10023000414343206E6F742063616C696272617424 |
:1002400065642021000A0D5573696E672070617224 |
:10025000616D65746572736574202564000A0D43D1 |
:10026000616C6962726174696E6720707265737324 |
:100270007572652073656E736F722E2E004F4B0A78 |
:100280000D000A0D436F6E74726F6C3A2000486562 |
:100290006164696E67486F6C64004E6F726D616C6B |
:1002A00020284143432D4D6F646529000A0D3D3DD3 |
:1002B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D6E |
:1002C0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D5E |
:1002D0003D0A0D00416E676C654E69636B202020FE |
:1002E00020202020416E676C65526F6C6C202020AE |
:1002F000202020204163634E69636B202020202052 |
:1003000020202020416363526F6C6C20202020202D |
:10031000202020205961774779726F2020202020EB |
:10032000202020204865696768742056616C7565D7 |
:10033000202020204163635A2020202020202020DC |
:1003400020202020476173202020202020202020F2 |
:1003500020202020436F6D706173732056616C758F |
:1003600065202020566F6C74616765205B302E31EC |
:10037000565D20205265636569766572204C65760E |
:10038000656C20204779726F20436F6D70617373C5 |
:10039000202020204D6F746F7220312020202020DB |
:1003A000202020204D6F746F7220322020202020CA |
:1003B000202020204D6F746F7220332020202020B9 |
:1003C000202020204D6F746F7220342020202020A8 |
:1003D000202020202020202020202020202020201D |
:1003E000202020202020202020202020202020200D |
:1003F00020202020566172696F4D6574657220203F |
:10040000202020204D4B334D61672043616C537495 |
:1004100061746520536572766F2020202020202093 |
:1004200020202020486F766572676173202020208D |
:100430002020202043757272656E74205B302E314F |
:10044000415D20204361706163697479205B6D4177 |
:10045000685D202020202020202020202020202017 |
:10046000202020202020202020202020202020208C |
:10047000202020202020202020202020202020207C |
:10048000202020202020202020202020202020206C |
:10049000202020204932432D4572726F7220202087 |
:1004A000202020202020202020202020202020204C |
:1004B000202020204750535F4E69636B202020206E |
:1004C000202020204750535F526F6C6C202020204A |
:1004D0002020202021212120494E434F4D504154BE |
:1004E00049424C4520212121002E000A0D20444183 |
:1004F00043206F7220493243204552524F522120EF |
:10050000436865636B204932432C2033567265661D |
:100510002C2044414320616E6420424C2D43747270 |
:100520006C005B25695D005B25695D002B204D69D2 |
:100530006B726F4B6F70746572202B0048573A5680 |
:1005400025642E25642053573A25642E256425639F |
:100550000053657474696E673A25642025730049F9 |
:100560003243204552524F52212121004D6973736D |
:10057000696E6720424C2D4374726C3A25642121C8 |
:10058000004865696768743A20202535690053651D |
:1005900074706F696E743A253569005072657373B3 |
:1005A0007572653A253569004F66667365743A2041 |
:1005B000202535690048656967687420636F6E742B |
:1005C000726F6C0044495341424C45440048656990 |
:1005D00067687420636F6E74726F6C004449534196 |
:1005E000424C4544006163742E2062656172696EFD |
:1005F00067004E69636B3A20202020202025356952 |
:1006000000526F6C6C3A2020202020202535690094 |
:10061000436F6D706173733A202020253569004B5C |
:10062000313A25346920204B323A25346920004B79 |
:10063000333A25346920204B343A25346920004B65 |
:10064000353A25346920204B363A25346920004B51 |
:10065000373A25346920204B383A25346920004E3A |
:10066000693A2534692020526F3A253469200047C1 |
:10067000733A253469202047693A253469200050AF |
:10068000313A253469202050323A2534692000500F |
:10069000333A253469202050343A25346920004704 |
:1006A00079726F202D2053656E736F72004E6963EF |
:1006B0006B25346920282533692E25692900526F5E |
:1006C0006C6C25346920282533692E25692900475B |
:1006D000696572253469202825336929004E6963CC |
:1006E0006B2025346920282533692E25782900526E |
:1006F0006F6C6C2025346920282533692E257829D4 |
:100700000059617720202534692028253369290084 |
:100710004E69636B202534692028253369292825F3 |
:1007200033692900526F6C6C2025346920282533E9 |
:1007300069292825336929005961772020253469E2 |
:10074000202825336929282533692900414343207E |
:100750002D2053656E736F72004E69636B202534D4 |
:100760006920282533692900526F6C6C2025346973 |
:10077000202825336929005A20202020253469208B |
:10078000282533692900566F6C746167653A20200B |
:10079000202533692E253169560043757272656EC6 |
:1007A000743A2020202533692E2531694100506F8D |
:1007B0007765723A2020202020253469570044694B |
:1007C000736368617267653A202535696D41680019 |
:1007D00052656365697665720052432D52535349E1 |
:1007E0003A202020202534690052432D5175616C38 |
:1007F0006974793A202534690052432D4368616E4B |
:100800006E656C733A25346900436F6D7061737364 |
:100810000048656164696E673A2020253569005695 |
:10082000616C75653A20202020253569005374617C |
:1008300072743A2020202025356900506F74693188 |
:100840003A202025336900506F7469323A20202500 |
:10085000336900506F7469333A20202533690050A2 |
:100860006F7469343A202025336900506F746935FC |
:100870003A202025336900506F7469363A202025CC |
:10088000336900506F7469373A202025336900506E |
:100890006F7469383A202025336900536572766F8A |
:1008A000202000536574706F696E742020253369B1 |
:1008B00000506F736974696F6E3A20253369005276 |
:1008C000616E67653A2533692D2533690045787473 |
:1008D00065726E436F6E74726F6C2020004E693AC1 |
:1008E0002534692020526F3A253469200047733A35 |
:1008F000253469202047693A253469200048693A3F |
:10090000253469202043663A2534692000424C2D65 |
:100910004374726C204572726F72732000253364C9 |
:1009200020253364202533642025336420002533BB |
:10093000642025336420253364202533642000257A |
:10094000336420253364202533642025336420005C |
:10095000424C2D4374726C20666F756E64200020CB |
:1009600025632020202563202020256320202025AA |
:10097000632000202563202020256320202025637C |
:10098000202020256320002025632020202D2020EA |
:10099000202D2020202D2000313000313100313237 |
:1009A00000466C696768742D54696D652020005499 |
:1009B0006F74616C3A2535756D696E004163743AE8 |
:1009C00020202535756D696E002872657365742960 |
:1009D000000A0D506C6561736520636F6E6E656310 |
:1009E00074205370656B7472756D207265636569F0 |
:1009F00076657220666F722062696E64696E672028 |
:100A00004E4F572E2E2E006F6B2E0A0D0054696D1F |
:100A1000656F75742E0A0D0000008F001E01AD0178 |
:100A20003B02CA025803E603740402058F051B0645 |
:100A3000A7063307BE074808D2085B09E3096B0A1B |
:100A4000F20A780BFD0B810C040D860D070E870E44 |
:100A5000060F840F00107B10F5106E11E5115B126C |
:100A6000CF124213B31323149214FE146A15D31534 |
:100A70003B16A11605176717C81727188318DE1825 |
:100A800037198E19E319361A871AD61A231B6E1BCB |
:100A9000B61BFD1B411C831CC31C001D3C1D751D8A |
:100AA000AB1DE01D121E421E6F1E9A1EC31EE91EC4 |
:100AB0000D1F2E1F4D1F691F841F9B1FB01FC31FBB |
:100AC000D31FE11FEC1FF51FFB1FFF1F00200301B9 |
:100AD00000000A6200020101CA62010302023963D6 |
:100AE0000200030396632532692E253169560025DD |
:100AF0003033646D20253033642563005374617492 |
:100B000075730025346920202532693A2530326911 |
:100B1000002534696D004E69636B20526F6C6C2048 |
:100B200020596177002534692025346920253469EE |
:100B3000002532692E2531695620202533692E255E |
:100B40003169410025346957202536696D416800B7 |
:100B50005361743A25303264004E6F466978003232 |
:100B600044466978003344466978003F3F466978D7 |
:100B7000002F4447505300486F6D653A2530336469 |
:100B80006D20253033642563004E6F204E617669F9 |
:100B90004374726C21000A0D7777772E4D696B7262 |
:100BA0006F4B6F707465722E64652028632920482E |
:100BB0006953797374656D7320476D6248000A0D3F |
:100BC00074686520757365206F662074686973208A |
:100BD000736F667477617265206973206F6E6C79CC |
:100BE000207065726D6974746564200A0D6F6E20E3 |
:100BF0006F726967696E616C204D696B726F4B6FC4 |
:100C0000707465722D48617264776172650041434A |
:100C1000542044534C004A65746920736174656CB8 |
:100C20006C6974005370656B7472756D20736174B8 |
:100C3000656C6C697420284C6F77207265736F6CDB |
:100C40007574696F6E29005370656B7472756D20D1 |
:100C5000736174656C6C69742028323034382900F3 |
:100C60005370656B7472756D20736174656C6C691B |
:100C700074004D756C74697369676E616C205050B7 |
:100C80004D000A0D52656365697665723A200075FC |
:100C90006E6B6E6F776E2E205573696E67205050A5 |
:100CA0004D2E2E2E006E6F7420737570706F7274DF |
:100CB00065642062792068617264776172652100E1 |
:100CC0000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB7 |
:100CD0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D44 |
:100CE0003D3D3D3D3D000A0D466C69676874436FAC |
:100CF0006E74726F6C0A0D48617264776172653A46 |
:100D000025642E25640A0D536F6674776172653A07 |
:100D10005625642E2564256320000A0D3D3D3D3D8A |
:100D20003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DF3 |
:100D30003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0020 |
:100D400011241FBECFEFD0E1DEBFCDBF11E0A0E088 |
:100D5000B1E0ECE4FEED02C005900D92A03DB107BC |
:100D6000D9F717E0A0EDB1E001C01D92A63CB10794 |
:100D7000E1F70C94E7070C940000282FFB01815049 |
:100D8000853008F023E0842F992733272150304005 |
:100D9000829FD001839FB00D929FB00D1124AC595A |
:100DA000BF4F019724F00E94086F0192FACF0E9472 |
:100DB000545E0895863010F085E002C0882329F043 |
:100DC000A2E0B0E0082E0E94156F0895582F8630DB |
:100DD00010F055E002C0882339F1842F9927252F80 |
:100DE000332721503040829FD001839FB00D929FC6 |
:100DF000B00D1124AC59BF4FFB01019724F00190B5 |
:100E00000E94156FFACFA2E6B0E0042E0E94156F83 |
:100E1000A0E5B0E08CE0FB01182E0E94216F852F29 |
:100E20000E94DA060E94545E0895CF93A2E0B0E0DB |
:100E30000E94086F802DC82F8150853020F0C3E0BC |
:100E40008C2F0E94DA068C2F9927CF9108958091DC |
:100E50005606E82FFF27EE0FFF1FE951FA4F80815A |
:100E600091818D5E9F4F14F01092030180819181DA |
:100E70008A5B9F4FCCF4809103018823A9F481E021 |
:100E800080930301809113048F5F80931304853056 |
:100E900038F088EE93E09093FF018093FE0104C048 |
:100EA00066E970E00E94EF2F8091130499279093D8 |
:100EB0008D0580938C0508951F93CF93DF93182F92 |
:100EC000882389F080EF90E09F938F9387E293E1EE |
:100ED0009F938F93E0919203F091930309950F9064 |
:100EE0000F900F900F9080917806823308F046C0E3 |
:100EF00084EF91E00E94F016EC01112329F0CE015D |
:100F00000E94F9168823D9F380912501909126013A |
:100F1000209178068238910584F433E0239FC00144 |
:100F2000112480930001112359F168EC70E0832FA4 |
:100F30000E94EF2F88EF90E011C0822F9927880F31 |
:100F4000991F880F991F809300011123C9F068EC45 |
:100F500070E084E00E94EF2F83E091E09F938F93F5 |
:100F600087E293E19F938F93E0919203F091930333 |
:100F700009950F900F900F900F9002C08093000181 |
:100F8000112309F1809100016AE00E945B6E892FB4 |
:100F900099279F938F93809100010E945B6E992700 |
:100FA0009F938F938EE091E09F938F9387E293E1DD |
:100FB0009F938F93E0919203F091930309958DB7DE |
:100FC0009EB708968DBFDF91CF911F910895CFEF07 |
:100FD000D0E1DEBFCDBF6624772410E014B915B987 |
:100FE00087EEC82E83E0D82E8EEC9FEFC80ED91E58 |
:100FF000D7FEFACF189B06C0199B02C08DE007C030 |
:101000008BE005C0199B02C084E101C08AE0809397 |
:10101000020181E887B93E9A8FEF88B98BE184B9E4 |
:1010200081E085B98EE38AB987E48BB9469A84B7A3 |
:10103000877F84BF809160008861809360001092F8 |
:10104000600080ED97E09093FF018093FE01109285 |
:101050007D0210927C021092EC051092EB0510922A |
:101060007F0210927E0210928102109280022091E3 |
:101070000201243128F088E894E0A0E0B0E004C048 |
:101080008BE095E0A0E0B0E08093790190937A0145 |
:10109000A0937B01B0937C012A3011F0243111F42C |
:1010A000289801C0289A0E9459170E942A170E9466 |
:1010B0002F130E944C2C0E94381B0E94E22A0E948F |
:1010C0005F5A0E9496640E945667809102018C309C |
:1010D00010F4299A01C0299878944DE066E576E0ED |
:1010E00083E00E94BD06C8EED3E0DE010E94086FD7 |
:1010F000802D8130D9F4DE01A75EB3400E94086FD5 |
:10110000802D8F3F99F0E4E9F3E08DE4DE01182EA5 |
:101110000E94106FE1EAF3E09FE080813496181698 |
:101120000CF41F5F915097FFF8CF51C088E291E017 |
:101130009F938F9387E293E19F938F93E091920324 |
:10114000F091930309950F900F900F900F9024E961 |
:1011500033E0F9018FE0158616861786108A8150D4 |
:10116000349687FFF8CF80E48093A1038093A20395 |
:101170001092A3038093A4038093A50390EC909313 |
:10118000A6031092A7038093A8038093A90310924B |
:10119000AA039093AB039093AC038093AD0310929A |
:1011A000AE038093AF039093B00381E080939403E8 |
:1011B0008BE0A4E0B1E0E5E9F3E00D9001928A95BF |
:1011C000E1F78DE4DE01F901182E0E94216F812FD5 |
:1011D00099279F938F9385E993E09F938F9389E459 |
:1011E00091E09F938F9307E2A02E03E1B02EBF9270 |
:1011F000AF92E0919203F091930309958DB79EB75A |
:1012000008968DBF8AE691E09F938F93BF92AF922D |
:10121000E0919203F0919303099510924802109285 |
:1012200002020E94AA3B0F900F900F900F908091A6 |
:1012300002028823E1F31092480280ED97E00E94B9 |
:10124000F0166C01C0E0D0E017EBE12E15E0F12EB6 |
:101250008E01109202020E94AA3B80910202882312 |
:10126000E1F3F801EC56FC4F85851816ACF408C084 |
:10127000909302020E94AA3B809102028823E1F32C |
:10128000C6010E94F916982F882331F4F801EA5418 |
:10129000FA4F8181882364F7F701808187FF13C0AB |
:1012A0002196DF93CF9321978CE791E09F938F93C3 |
:1012B000BF92AF92E0919203F091930309958DB79D |
:1012C0009EB706968DBF21960C5F1F4FE4E0F0E0BD |
:1012D000EE0EFF1ECC30D10508F4BBCFC0E0D0E04D |
:1012E00006EB15E0B1EAEB2EB3E0FB2EF8018181AD |
:1012F00087FD1CC0F70180811816C4F42196DF9386 |
:10130000CF93219780E891E09F938F9387E293E1B9 |
:101310009F938F93E0919203F0919303099581E05D |
:101320008093FC018DB79EB706968DBFF801818131 |
:1013300080788183219684E090E0E80EF91E080F02 |
:10134000191FCC30D10590F28EE991E09F938F93D5 |
:10135000A7E2EA2EA3E1FA2EFF92EF92E091920328 |
:10136000F091930309950E94AA3B0F900F900F9064 |
:101370000F9001E010E0D8010E94086F802D8235A7 |
:1013800009F4DAC00E94652D84EC91E09F938F935D |
:10139000FF92EF92E0919203F09193030995C1E0DF |
:1013A0000F900F900F900F90C23039F0C33019F4A6 |
:1013B0000E940B2F04C0C43010F00E94392E80917F |
:1013C0000201843168F085E08093750610929606DC |
:1013D0008BE1809371068EE480939306809394064C |
:1013E000A0E5B0E0AD010E94086F802D8C3008F0C0 |
:1013F0008FC0DA011196FD010E94086F802D8C309C |
:1014000008F086C0DA011296BD010E94086F802D97 |
:101410008C3008F07DC0DA0113969D010E94086FA0 |
:10142000802D8C3008F074C0DA010E94086F802D86 |
:1014300080935606DF010E94086F802D8093570627 |
:10144000DB010E94086F802D80935806D9010E940D |
:10145000086F802D80935906DA0114960E94086F58 |
:10146000802D80935A06DA0115960E94086F802D10 |
:1014700080935B06DA0116960E94086F802D809398 |
:101480005C06DA0117960E94086F802D80935D0636 |
:10149000DA0118969D010E94086F802D8F3FD1F0D0 |
:1014A000D9010E94086F802D80935E06DA0119969B |
:1014B0000E94086F802D80935F06DA011A960E94C1 |
:1014C000086F802D80936006DA011B960E94086FDA |
:1014D000802D0AC089E080935E068AE080935F06D3 |
:1014E0008BE0809360068CE080936106C13091F4BC |
:1014F00083ED91E09F938F93FF92EF92E09192039F |
:10150000F091930309950F900F900F900F9002C0E8 |
:101510000E94402D4CE666E576E08C2F0E94E606A0 |
:10152000CF5FC63008F440CF83E00E94DA0682E540 |
:10153000D801082E0E94156F0EE010E0D8010E941D |
:10154000086F802D9927582F442748010894811C43 |
:10155000911CD4010E94086F802D480F511D50939B |
:10156000D5014093D401ECEFAE2EEFEFBE2EA00ECE |
:10157000B11ED5010E94086F802D9927982F8827CA |
:101580006DEFE62E6FEFF62EE00EF11ED7010E94F2 |
:10159000086F202D820F911D9093D3018093D2016B |
:1015A0008F5F9F4F19F04F5F5F4F41F41092D5014D |
:1015B0001092D4011092D3011092D2018091D201E5 |
:1015C0009091D3019F938F938091D4019091D501F5 |
:1015D0009F938F938BE092E09F938F93C7E2D3E129 |
:1015E000DF93CF93E0919203F091930309958DB728 |
:1015F0009EB708968DBFA4E0B0E00E94086F802DD2 |
:10160000853078F08EE292E09F938F93DF93CF93B3 |
:10161000E0919203F091930309950F900F900F9032 |
:101620000F900E9415074CE666E576E00E94BD0625 |
:101630000E94150799279F938F9385E492E09F93CB |
:101640008F93DF93CF93E0919203F09193030995E9 |
:10165000EDB7FEB73696EDBF8DE592E09F938F9381 |
:10166000DF93CF93E0919203F0919303099588EE75 |
:1016700093E00E94F0166C010E943E1B0F900F90A9 |
:101680000F900F90C6010E94F9168823D9F38DE7B9 |
:1016900092E09F938F93DF93CF93E0919203F09129 |
:1016A000930309950E945B39809102010F900F907E |
:1016B0000F900F908A3011F0843111F4289801C0F6 |
:1016C000289A80ED97E09093FF018093FE0185E5D5 |
:1016D0008093150482E892E09F938F93DF93CF93DA |
:1016E000E0919203F09193030995809162060F9027 |
:1016F0000F900F900F90E0919203F091930382FF6F |
:1017000007C08EE892E09F938F93DF93CF9308C03A |
:101710008AE992E09F938F9387E293E19F938F935F |
:1017200009950F900F900F900F900E94B42088E8B9 |
:1017300093E19093A00180939F0181E08093140432 |
:101740000E945C070E94AD668CEA92E09F938F93A3 |
:10175000DF93CF93E0919203F0919303099580ED8D |
:1017600097E00E94F0166C018AEF90E00E94F0165C |
:10177000EC010F900F900F900F90CE010E94F91680 |
:10178000882339F084E690E00E94F016EC010E9474 |
:10179000086880910202882309F471C180911701C1 |
:1017A000882309F46CC110920202809113048823EB |
:1017B00019F00E94270702C00E94FB3D0E94AA3B2D |
:1017C000209102012A3011F0243111F4289801C02F |
:1017D000289A80918302882331F08091830281507E |
:1017E0008093830205C080916F00806280936F00B8 |
:1017F00080919F019091A00101979093A001809307 |
:101800009F0180919F019091A001892B21F08091EF |
:1018100047028823A1F180919F019091A001892B1B |
:10182000B1F40E94F82A85E090E09093A0018093A3 |
:101830009F0180919E0590919F05019690939F0531 |
:1018400080939E058091520280688093520280911D |
:101850001001909111018F5F9F4F19F580917902CE |
:101860008823F9F080E197E29093FF018093FE01D5 |
:1018700080E890E0909311018093100112C02A300B |
:1018800011F0243111F4289801C0289A8091FE01AA |
:101890009091FF01892B29F4809152028F778093D8 |
:1018A000520280910202882321F0809179028823DC |
:1018B00011F40E946A130E94BB0FC6010E94F91620 |
:1018C000882309F4D8C084E190E0C80ED91E809125 |
:1018D0000D01882321F0815080930D0125C0809354 |
:1018E0001F0410925E0210925D0210925C02109230 |
:1018F0005B0210925A02109259028091100190914D |
:1019000011018F5F9F4F81F480918302882361F4DE |
:1019100088E99AE39093FF018093FE0180E09CE0C8 |
:10192000909311018093100180916803882339F00E |
:10193000815080936803809152028F7B11C0109276 |
:101940006603109265031092640310926303809102 |
:10195000FE019091FF01892B29F48091520280644D |
:101960008093520280910001282F33278091250116 |
:101970009091260182179307CCF4809152028062E5 |
:101980008093520280911001909111018F5F9F4FBF |
:10199000C1F480E797E19093FF018093FE0180E01E |
:1019A00093E090931101809310010BC08091FE0190 |
:1019B0009091FF01892B29F4809152028F7D8093B1 |
:1019C00052020E94885D84E08093FD01809179023B |
:1019D000882329F45AEA652E55E0752E12C08091AD |
:1019E000D6018F5F8093D601813359F41092D601CE |
:1019F0008091D0019091D10101969093D101809373 |
:101A0000D0010894611C711C22E762162BE072065B |
:101A100091F5662477242091D4013091D5012F5F70 |
:101A20003F4F3093D5012093D4018091D201909102 |
:101A3000D30101969093D3018093D201832F9927EC |
:101A4000D801082E0E94156F8091D401D401082E70 |
:101A50000E94156F8091D301D501082E0E94156F49 |
:101A60008091D201D701082E0E94156F84E190E089 |
:101A70000E94F0166C010E94635E0E94AB6480912C |
:101A8000FD01882309F079CE0E94C95D76CE1F92B0 |
:101A90000F920FB60F9211248F939F93EF93FF93A2 |
:101AA00080910F018823E1F48091F0019091F10180 |
:101AB00001969093F1018093F001FC01EC53FB4FF0 |
:101AC000E081ED3019F0803A910539F41092F1017E |
:101AD0001092F00181E080930F01E093C60004C0F2 |
:101AE0001092F1011092F001FF91EF919F918F916F |
:101AF0000F900FBE0F901F9018951F920F920FB668 |
:101B00000F9211242F933F934F935F936F937F9383 |
:101B10008F939F93AF93BF93CF93EF93FF9390E0F7 |
:101B20008091C6008093E8015091F601503A10F080 |
:101B30009093F7018091E8018D3009F065C08091A4 |
:101B4000F701823009F060C09093F701852F992743 |
:101B50008E5D9B4FFC01329740812091F2013091C4 |
:101B6000F301241B3109DC0111978C91281B3109E9 |
:101B7000C9019F709093F3018093F20146E096951E |
:101B800087954A95E1F7982F935C9093F4012F7312 |
:101B90003070235C2093F5018081981729F48C9193 |
:101BA000281711F491E006C090E08091E5018F5F65 |
:101BB0008093E501C091E701CC2309F074C099231B |
:101BC00009F471C081E08093E701580F5093E4015C |
:101BD0005150E52FFF27EE5DFB4F8DE08083809114 |
:101BE0002404823509F05FC00E94B42088E190E0AF |
:101BF0002CE00FB6F894A895809360000FBE209358 |
:101C00006000C093FC014FC02091F701822F9927FB |
:101C100081309105F9F0823091051CF4892B21F077 |
:101C200040C0029711F13DC08091E801833239F440 |
:101C30008091E701882319F481E08093F701809176 |
:101C4000E8018093220481E08093F6018091E8010D |
:101C5000992722C02F5F2093F701E52FFF27EE5D24 |
:101C6000FB4F8091E801808309C0E52FFF27EE5DDF |
:101C7000FB4F8091E8018083503A20F45F5F5093DE |
:101C8000F60102C01092F7012091E8018091F20163 |
:101C90009091F301820F911D9093F3018093F201D3 |
:101CA00002C01092F701FF91EF91CF91BF91AF91D8 |
:101CB0009F918F917F916F915F914F913F912F9164 |
:101CC0000F900FBE0F901F901895AC01A0E0B0E0F0 |
:101CD0009D01A817B90748F4E4ECF4E08191280FBE |
:101CE000311D1196A417B507C8F33F70FD01EC53E1 |
:101CF000FB4FC90156E0969587955A95E1F7835CAD |
:101D000080831196FD01EC53FB4F2F733070822FAF |
:101D1000835C8083AB53BB4F8DE08C9310920F019B |
:101D20008091C4048093C6000895A0E0B0E0EBE980 |
:101D3000FEE00C94D46E2C859D850E85BB2483E239 |
:101D40008093C4049F599093C5042093C60433E044 |
:101D5000E32EF12C002309F49EC0CF84D888BE0165 |
:101D60006D5E7F4FA989BA890150109709F493C01D |
:101D70001097B9F0F601EB0DF11DB3949081119716 |
:101D800091F4002349F1FB016E5F7F4FDB01C080BE |
:101D9000D1806E5F7F4F0D90BC91A02DBB24015070 |
:101DA00002C090E019C01097B9F0F601EB0DF11DDB |
:101DB000B3944081119791F4002341F1FB016E5FD0 |
:101DC0007F4FDB01C080D1806E5F7F4F0D90BC9153 |
:101DD000A02DBB24015002C040E018C01097B1F004 |
:101DE000F601EB0DF11DB3941081119781F40023DE |
:101DF00071F0FB013296DB01CD90DC90BF016E5F8C |
:101E00007F4FA081B181BB24015001C010E0F701D8 |
:101E1000EC53FB4F892F86958695835C80830894CD |
:101E2000E11CF11CF701EC53FB4F892F99278370BC |
:101E3000907024E0880F991F2A95E1F755279A01A1 |
:101E400094E0369527959A95E1F7822B835C808301 |
:101E50000894E11CF11CF701EC53FB4F4F705070DC |
:101E6000440F551F440F551F812F992726E0969543 |
:101E700087952A95E1F7842B835C80830894E11C85 |
:101E8000F11CF701EC53FB4F1F73135C1083089494 |
:101E9000E11CF11C6ACFC7010E94650EE9E00C94B9 |
:101EA000F06EA3E07A2F4091E4014650442309F4F8 |
:101EB00058C0E72FFF27EE5DFB4F80818D537F5F7A |
:101EC000E72FFF27EE5DFB4F20812D537F5FE72F2C |
:101ED000FF27EE5DFB4F30813D537F5FE72FFF27EC |
:101EE000EE5DFB4F60816D537F5F9927880F991FCF |
:101EF000880F991F522F52955F70582B822F992768 |
:101F00008F709070F4E0880F991FFA95E1F7232FF6 |
:101F100026952695282B832F992783709070E6E0CD |
:101F2000880F991FEA95E1F7682B41504F3FC9F0A0 |
:101F3000EA2FFF27EE5DFB4F5083AF5F41504F3FCD |
:101F400081F0EA2FFF27EE5DFB4F2083AF5F41500A |
:101F50004F3F39F0EA2FFF27EE5DFB4F6083AF5F05 |
:101F6000A5CF85E294E09093E3018093E201A35032 |
:101F7000A093E1010895A2E0B0E0E1ECFFE00C9451 |
:101F8000DB6E8091E701882309F45DC30E94510F45 |
:101F900080912304823609F01FC28091240499277E |
:101FA0008037910509F4ACC081379105A4F48636D9 |
:101FB000910509F470C18736910524F48B3491059D |
:101FC000F1F00AC28D36910509F468C08E3691058C |
:101FD00009F453C001C28337910509F4EDC0843779 |
:101FE00091052CF48137910509F491C0F5C184372E |
:101FF000910511F18937910509F48AC1EDC1E0918C |
:10200000E201F091E30180819181909396028093A7 |
:1020100095022091930230919402821B930B845E6F |
:102020009D4F68E671E00E947B6E845B90409093C8 |
:10203000920280939102D0C18091E401A091E201CB |
:10204000B091E301853140F080E1EDEFF3E00D90D8 |
:1020500001928A95E1F70DC08D919D910D90BC91F3 |
:10206000A02D8093FD039093FE03A093FF03B093F4 |
:10207000000480EF8093DF0146C080910F01882328 |
:10208000E1F38DE490E09F938F9384E993E09F9335 |
:102090008F9381E08F938F938EE42AC080910F01FC |
:1020A0008823E1F34091E2015091E301DA019C9130 |
:1020B000913089F464E973E08DE4FB01282F0D90E1 |
:1020C00001922A95E1F7A8EEB3E0FB01182E0E94D9 |
:1020D000216F998301C0198281E090E09F938F93D3 |
:1020E000CE0101969F938F9381E08F938F938DE420 |
:1020F0008F930E94950E8DB79EB707968DBF6CC1CA |
:1021000081E08093EA018FEF80930D0165C1E0913A |
:10211000E201F091E30180818F3F39F40E941507BD |
:10212000E091E201F091E3018083E091E201F0911E |
:10213000E3018081882311F481E003C0863010F030 |
:1021400085E08083E091E201F091E3014CE666E5F1 |
:1021500076E080810E94BD0680910F018823E1F323 |
:10216000E091E201F091E3018081898382E58A8335 |
:102170008CE690E09F938F9386E596E09F938F93F4 |
:1021800021E030E03F932F93CE0102969F938F93EF |
:102190003F932F93CE01820F931F9F938F9383E0E2 |
:1021A0008F9381E08F9381E58F930E94950EADB759 |
:1021B000BEB71F96ADBF10C12091E2013091E3017F |
:1021C000F90180818150853008F04CC081818235D1 |
:1021D00009F048C066E576E08CE62E5F3F4FDB01F4 |
:1021E000F901982F01900D929A95E1F72250304015 |
:1021F000482FD9018C910E94E60680919306992779 |
:10220000AA27BB27BC01CD0124EC39E040E050E017 |
:102210000E943C6EDC01CB018093990190939A015E |
:10222000A0939B01B0939C01809194069927AA27C3 |
:10223000BB27BC01CD010E943C6EDC01CB01809329 |
:10224000950190939601A0939701B0939801E09126 |
:10225000E201F091E30180810E94DA060E941507F5 |
:10226000898301C0198280910F018823E1F381E005 |
:1022700090E09F938F93CE0101969F938F9381E07F |
:102280008F938F9383E58F930E94950EEDB7FEB7E2 |
:102290003796EDBF2EC0E091E201F091E301E081BD |
:1022A0008E2F8150853018F48E2F0E94DA06E0912F |
:1022B000E201F091E301808189834CE666E576E0F6 |
:1022C0000E94BD0680910F018823E1F381E090E038 |
:1022D0009F938F93CE0101969F938F9381E08F936D |
:1022E0008F9386E48F930E94950E8DB79EB70796C5 |
:1022F0008DBF80917902882329F46EE670E0898190 |
:102300000E94EF2F80E00E945C070E94AD6664C0CF |
:10231000E091E201F091E3018081992787FD90959A |
:1023200090930206809301068181992787FD9095FD |
:1023300090930406809303068281992787FD9095E8 |
:1023400090930606809305068381992787FD9095D3 |
:1023500090930806809307068481992787FD9095BE |
:1023600090930A06809309068581992787FD9095A9 |
:1023700090930C0680930B068681992787FD909594 |
:1023800090930E0680930D068781992787FD90957F |
:102390009093100680930F068085992787FD90956E |
:1023A00090931206809311068185992787FD909559 |
:1023B00090931406809313068285992787FD909544 |
:1023C00090931606809315068385992787FD90952F |
:1023D00090931806809317068091240499278436D9 |
:1023E000910509F4C5C085369105ACF48136910597 |
:1023F00009F479C0823691052CF48B34910509F4E7 |
:1024000055C019C18236910509F47AC08336910509 |
:1024100009F489C010C18C36910509F4F7C08D36D6 |
:1024200091054CF48736910509F402C1883691056F |
:1024300009F4BCC000C18437910529F086379105A5 |
:1024400009F4F2C0F8C08091E401A091E201B091DA |
:10245000E301853140F080E1EDEFF3E00D90019272 |
:102460008A95E1F70DC08D919D910D90BC91A02DA5 |
:102470008093FD039093FE03A093FF03B0930004A9 |
:1024800080910F018823E1F31F9280910C018F93BB |
:1024900084E58F930E94950E8AEF8093DF018FEF82 |
:1024A00080930D010F900F900F90C5C0E091E20155 |
:1024B000F091E3018081918190939602809395023F |
:1024C0002091930230919402821B930B845E9D4F66 |
:1024D00068E671E00E947B6E845B9040909392026C |
:1024E00080939102A8C0E091E201F091E301808124 |
:1024F00080930E01803298F08FE180930E010FC01F |
:10250000A091E201B091E3018BE0E5E1F4E00D90F0 |
:1025100001928A95E1F780911E048093A6058FEFC2 |
:1025200080930D0188C08091DB019091DC01892BA3 |
:1025300089F4E091E201F091E301E081EE2351F0B2 |
:102540008AE0E89FC00111240E94F0169093F003E6 |
:102550008093EF03E091E201F091E30190818AE042 |
:10256000989FC00111249093DC018093DB0115C07A |
:102570008FEF80930D01E091E201F091E3019081F2 |
:102580008AE0989FC00111249093DE018093DD01C1 |
:10259000892B19F081E08093EC0180EA9FE00E9492 |
:1025A000F0169093D8018093D70145C08FEF8093A8 |
:1025B0000D01E091E201F091E301908197FD08C0E7 |
:1025C00082E08093E9011092DA011092D9011AC0D9 |
:1025D000909580914202892B8093420291818AE0FA |
:1025E000989FC00111249093DA018093D90184E06F |
:1025F0008093E90180EA9FE00E94F0169093D80151 |
:102600008093D70181E08093ED0115C08FEF809317 |
:102610000D01E091E201F091E3018081809343029A |
:1026200081E08093EE0107C081E08093EB0103C05D |
:1026300081E08093EF011092E7011092E301109284 |
:10264000E2011092E101E2E0CE5F0C94F76E982F68 |
:102650008091C00085FFFCCF9093C600089588E16B |
:102660008093C1008091C00082608093C0008091FF |
:10267000C10080688093C1008091C1008064809314 |
:10268000C1008AE28093C4008091DD019091DE0157 |
:102690000E94F0169093F2038093F1038CED90E08A |
:1026A0000E94F01690932104809320041092F3036B |
:1026B0008EE48093F40381E08093F7038BE08093B2 |
:1026C000F5031092F6031092E3011092E2011092CA |
:1026D000E1010895A0E1B0E0E0E7F3E10C94D76EEA |
:1026E00080910F01882309F48CC28091D7019091C9 |
:1026F000D8010E94F916882361F01092DA01109235 |
:10270000D9011092DE011092DD011092DC011092CD |
:10271000DB018091D9019091DA01892B41F0809100 |
:10272000C2049091C3040E94F916882329F4809171 |
:10273000ED01882309F460C080910F01882309F41A |
:102740005BC08091E90108E211E08430A8F00E94AA |
:10275000C82080E590E09F938F931F930F9381E0B3 |
:102760008F938F9388E48F930E94950E2DB73EB779 |
:10277000295F3F4F2DBF34C01092440284ED94E096 |
:102780009F938F938DEB90E29F938F93E0919203B1 |
:10279000F0919303099584E190E09F938F931F93A9 |
:1027A0000F9381E090E09F938F9389EE91E09F9348 |
:1027B0008F9382E08F9381E08F9388E48F930E94C0 |
:1027C000950E8091E901982F8F5F8093E9012DB7D5 |
:1027D0003EB7215F3F4F2DBF943010F01092E901BA |
:1027E0008091D9019091DA010E94F0169093C30470 |
:1027F0008093C2041092ED018091EE01882351F183 |
:1028000080910F01882331F10E94C82080E590E07B |
:102810009F938F9388E291E09F938F9321E030E024 |
:102820003F932F9387E291E09F938F933F932F9352 |
:1028300083E492E09F938F9383E08F9381E08F9363 |
:102840008CE48F930E94950E1092EE018DB79EB787 |
:102850000F968DBF8091EB018823D1F080910F01FD |
:102860008823B1F08AE090E09F938F9383EF93E009 |
:102870009F938F9381E08F938F9386E58F930E9430 |
:10288000950E1092EB012DB73EB7295F3F4F2DBF3C |
:102890008091EF018823D9F080910F018823B9F04E |
:1028A0008BE090E09F938F9385E194E09F938F93CB |
:1028B00081E08F9380910C018F9387E48F930E9426 |
:1028C000950E1092EF018DB79EB707968DBF809140 |
:1028D0002004909121040E94F916882309F461C014 |
:1028E00080910F01882309F45CC0809171069927BB |
:1028F000880F991F880F991F7C010027F7FC00950E |
:10290000102F8091CF029091D002A091D102B0916E |
:10291000D202BC01CD01A80197010E94B06E309394 |
:102920000E0420930D048091C7029091C802A091DB |
:10293000C902B091CA02BC01CD01A80197010E9451 |
:10294000B06E3093100420930F0480916602809340 |
:102950001104809165028093120488E090E09F93B7 |
:102960008F938DE094E09F938F9381E08F9383E02A |
:102970008F9387E78F930E94950E809113042DB754 |
:102980003EB7295F3F4F2DBF853018F086E080931A |
:10299000130483E690E00E94F01690932104809344 |
:1029A00020048091DD019091DE01892B41F080911E |
:1029B000F1039091F2030E94F916882321F480918B |
:1029C000EC01882329F180910F01882309F182E429 |
:1029D00090E09F938F9384E695E09F938F9381E09F |
:1029E0008F938F9384E48F930E94950E1092EC0145 |
:1029F0008DB79EB707968DBF8091DD019091DE0166 |
:102A0000009731F00E94F0169093F2038093F10347 |
:102A10008091DB019091DC01892B09F485C08091C4 |
:102A2000EF039091F0030E94F916882309F47CC00B |
:102A300080910F01882309F477C08091710699274E |
:102A4000880F991F880F991F7C010027F7FC0095BC |
:102A5000102F8091CF029091D002A091D102B0911D |
:102A6000D202BC01CD01A80197010E94B06E309343 |
:102A7000E2032093E1038091C7029091C802A091E4 |
:102A8000C902B091CA02BC01CD01A80197010E9400 |
:102A9000B06E3093E4032093E30320911D0730913F |
:102AA0001E0740911F0750912007DA01C90103E07A |
:102AB000880F991FAA1FBB1F0A95D1F7820F931F7A |
:102AC000A41FB51F820F931FA41FB51F209179016A |
:102AD00030917A0140917B0150917C01BC01CD0184 |
:102AE0000E94B06E3093E6032093E5038EE090E001 |
:102AF0009F938F9381EE93E09F938F9381E08F93C9 |
:102B00008F9383E48F930E94950E8091DB019091C7 |
:102B1000DC010E94F0169093F0038093EF032DB731 |
:102B20003EB7295F3F4F2DBF80910E018F3F71F15E |
:102B3000992714E0880F991F1A95E1F78C529D4F41 |
:102B400040E150E0BC01CE0101960E94486D80E159 |
:102B500090E09F938F93CE0101969F938F9381E096 |
:102B600090E09F938F938EE091E09F938F9382E00C |
:102B70008F9381E08F9381E48F930E94950E8FEF66 |
:102B800080930E018DB79EB70B968DBF8091A605E1 |
:102B90008823D1F080910F018823B1F081E090E08B |
:102BA0009F938F9386EA95E09F938F9381E08F9315 |
:102BB0008F9382E48F930E94950E1092A6052DB7F5 |
:102BC0003EB7295F3F4F2DBF8091EA018823C9F0AE |
:102BD00080910F018823A9F084E390E09F938F9365 |
:102BE00087EE95E09F938F9381E08F938F9380E59D |
:102BF0008F930E94950E1092EA018DB79EB70796AB |
:102C00008DBFE6E0C05F0C94F36E1F920F920FB67B |
:102C10000F9211242F933F935F936F937F938F9322 |
:102C20009F93AF93BF93EF93FF938091FD01882310 |
:102C300029F08091FD0181508093FD018091760300 |
:102C4000882319F08150809376038091050281508A |
:102C5000809305028F3FB9F489E08093050280914B |
:102C600012018F5F817080931201882319F481E033 |
:102C70008093020280910302909104020196909346 |
:102C80000402809303028091FE019091FF01892B41 |
:102C9000C9F08091FE019091FF0101979093FF018F |
:102CA0008093FE018091FE019091FF01209110011F |
:102CB0003091110182239323892B11F021E009C067 |
:102CC00020E007C020E08FEF9FEF909311018093E9 |
:102CD000100180910201222331F08A3011F45A9AB6 |
:102CE00007C0479A05C08A3011F45A9801C0479826 |
:102CF00080916803882309F063C08091620683FF96 |
:102D00005FC086B19927FC01E071F07084FF0AC0B2 |
:102D100080910002909101020196909301028093AC |
:102D200000024EC08091000290910102892B09F4AB |
:102D300043C080910002909101028A569140E0F5D3 |
:102D4000809100029091010269E270E00E94676E3A |
:102D50008091000290910102860F971F90930102CB |
:102D60008093000280910002909101020B9750F035 |
:102D700080910002909101020A97909396028093AD |
:102D8000950204C0F0939602E0939502809195021B |
:102D9000909196022091930230919402821B930BA2 |
:102DA000845E9D4F68E671E00E947B6E845B90407C |
:102DB000909392028093910210920102109200026D |
:102DC000FF91EF91BF91AF919F918F917F916F9103 |
:102DD0005F913F912F910F900FBE0F901F9018950C |
:102DE0002091030230910402280F391FC901019676 |
:102DF00008952091030230910402821B930B892FC6 |
:102E000099278695807490700895CF93DF930E94E0 |
:102E1000F016EC01CE010E94F9168823D9F3DF9158 |
:102E2000CF910895CF93DF930E94F016EC0109C073 |
:102E300080911701882329F0909317018FEC8093DC |
:102E40007A00CE010E94F916982F882389F3DF912A |
:102E5000CF9108959FB7F8945F983E9A469A8091D3 |
:102E6000B0008F708093B0008091B0008360809339 |
:102E7000B0008091B1008B738093B1008091B1005C |
:102E80008B608093B1001092B2008FEF8093B300FB |
:102E90008091B00080688093B000809170008A7F3C |
:102EA00080937000809170008260809370009FBF5B |
:102EB00008958AE090E00E94F01690930D028093AE |
:102EC0000C0282E085BD83EA84BD17BC88E788BD1B |
:102ED00086E086BD80916E00816080936E000895CB |
:102EE0001F920F920FB60F9211242F933F934F937F |
:102EF0005F936F937F938F939F93AF93BF93CF9382 |
:102F0000DF93EF93FF938091020190910602843149 |
:102F100008F011C1992309F064C38091B00086FFC5 |
:102F2000ECC08091B0008F7B8093B00089EA93E081 |
:102F300090930802809307028091130190911401ED |
:102F40009C01220F331F280F391F8091850199277B |
:102F5000880F991F880F991F280F391F37FF02C04C |
:102F60002D5F3F4FC90195958795959587959093CE |
:102F70001401809313019093FB018093FA018091D7 |
:102F8000B406609182062091CF023091D002409128 |
:102F9000D1025091D20280FF2CC077278827992731 |
:102FA000EA01D90157FF04C0A158BF4FCF4FDF4FEF |
:102FB000E7E0D595C795B795A795EA95D1F79D0117 |
:102FC000AE010E943C6E9B01AC0197FF04C0215CE6 |
:102FD0003F4F4F4F5F4F66E0559547953795279583 |
:102FE0006A95D1F78091FA019091FB01820F931FAE |
:102FF0002BC0772788279927EA01D90157FF04C0FA |
:10300000A158BF4FCF4FDF4F27E0D595C795B79554 |
:10301000A7952A95D1F79D01AE010E943C6E9B01B8 |
:10302000AC0197FF04C0215C3F4F4F4F5F4FF6E06C |
:103030005595479537952795FA95D1F78091FA01DF |
:103040009091FB01821B930B9093FB018093FA01FB |
:1030500080918306282F3327220F331F220F331F1F |
:103060008091FA019091FB01821793077CF0809187 |
:103070008406282F3327220F331F220F331F8091FE |
:10308000FA019091FB012817390724F43093FB01D2 |
:103090002093FA0120910702309108028091FA01F1 |
:1030A0009091FB01280F391F2050324030930802C5 |
:1030B000209307028091FA019091FB0197FD0396FE |
:1030C00095958795959587959093FB018093FA0147 |
:1030D00045E02D3D340718F08CED95E005C02757ED |
:1030E000314030F487E791E0909308028093070223 |
:1030F000809107029091080241C28091B0008064E3 |
:103100008093B00080918906282F33278DED96E0BB |
:10311000289FA001299F500D389F500D1124CA01EE |
:103120002091090230910A02821B930B90930802AE |
:103130008093070253C2992309F053C28091B000D3 |
:1031400086FF21C28091B0008F7B8093B000E09118 |
:103150000B02EE23F1F480918906282F33278DEDA1 |
:1031600096E0289FA001299F500D389F500D1124F3 |
:10317000CA012091090230910A02821B930B90939D |
:1031800008028093070210920A0210920902469ADE |
:1031900025C289EA93E090930802809307028E2F5C |
:1031A00099278330910509F4A4C1843091053CF43A |
:1031B0008130910561F0029709F4D2C0A8C1843032 |
:1031C000910509F499C1059709F49EC1A0C18091A8 |
:1031D0001301909114019C01220F331F280F391FF6 |
:1031E000809185019927880F991F880F991F280FB3 |
:1031F000391F37FF02C02D5F3F4FC9019595879555 |
:103200009595879590931401809313019093FB01FA |
:103210008093FA018091B406609182062091CF02DA |
:103220003091D0024091D1025091D20280FF2CC047 |
:10323000772788279927EA01D90157FF04C0A158A9 |
:10324000BF4FCF4FDF4F27E0D595C795B795A795CF |
:103250002A95D1F79D01AE010E943C6E9B01AC0105 |
:1032600097FF04C0215C3F4F4F4F5F4FA6E055953D |
:10327000479537952795AA95D1F78091FA019091B6 |
:10328000FB01820F931F27C077278827992757FFB5 |
:1032900004C021583F4F4F4F5F4FF7E0559547957A |
:1032A00037952795FA95D1F70E943C6E9B01AC01AA |
:1032B00097FF04C0215C3F4F4F4F5F4FE6E05595AD |
:1032C000479537952795EA95D1F78091FA01909126 |
:1032D000FB01821B930B9093FB018093FA01809179 |
:1032E0008306282F3327220F331F220F331F80918D |
:1032F000FA019091FB01821793077CF0809184067C |
:10330000282F3327220F331F220F331F8091FA01FA |
:103310009091FB012817390724F43093FB01209387 |
:10332000FA0180910702909108022091FA013091F0 |
:10333000FB01820F931F805092409093080280936C |
:1033400007028091FA019091FB0197FD03969595F4 |
:103350008795959587959093FB018093FA01EAC034 |
:1033600080911501909116019C01220F331F280FA7 |
:10337000391F809184019927880F991F880F991F01 |
:10338000280F391F37FF02C02D5F3F4FC9019595A8 |
:103390008795959587959093160180931501909345 |
:1033A000F9018093F8018091B40660918606A0919E |
:1033B000C702B091C802C091C902D091CA0281FF70 |
:1033C0002AC07727882799279D01AE01D7FF04C01F |
:1033D00021583F4F4F4F5F4FA7E055954795379581 |
:1033E0002795AA95D1F70E943C6E9B01AC0197FFEF |
:1033F00004C0215C3F4F4F4F5F4FF6E05595479516 |
:1034000037952795FA95D1F78091F8019091F901B8 |
:10341000820F931F29C07727882799279D01AE0126 |
:10342000D7FF04C021583F4F4F4F5F4FE7E05595FE |
:10343000479537952795EA95D1F70E943C6E9B01F9 |
:10344000AC0197FF04C0215C3F4F4F4F5F4F66E0D8 |
:1034500055954795379527956A95D1F78091F8014D |
:103460009091F901821B930B9093F9018093F801DD |
:1034700080918706282F3327220F331F220F331FF7 |
:103480008091F8019091F901821793077CF0809167 |
:103490008806282F3327220F331F220F331F8091D6 |
:1034A000F8019091F9012817390724F43093F901B4 |
:1034B0002093F80180910702909108022091F80171 |
:1034C0003091F901820F931F80509240909308022F |
:1034D000809307028091F8019091F90197FD03967E |
:1034E00095958795959587959093F9018093F80127 |
:1034F00021C08091E90602C0809155069927880F66 |
:10350000991F87559C4F12C08091F306F7CFFF2774 |
:10351000EE0FFF1FE951FA4F20813181220F331F37 |
:103520008091070290910802820F931F90930802E6 |
:1035300080930702809107029091080255E08D3D2B |
:10354000950718F08CED95E005C08757914030F451 |
:1035500087E791E090930802809307022091070289 |
:10356000309108022C5B3040309308022093070210 |
:103570008091090290910A02820F931F90930A0290 |
:10358000809309022BC08091B00080648093B000CA |
:103590008CEB90E0909308028093070280910902DF |
:1035A00090910A0284549F4F90930A0280930902DB |
:1035B0008091FC01882331F080918302853B10F0DB |
:1035C000469801C0469A80910B028F5F80930B0250 |
:1035D00090918906981710F410920B0281E0809365 |
:1035E0000602209107023091080241E02F3734078C |
:1035F00030F08FEF8093B3002F5F30400FC02F3F2C |
:103600003105C9F0C0F0A9014F5F50404F37510557 |
:1036100050F480E88093B300205830403093080283 |
:103620002093070212C08FEF8093B30050930802DB |
:10363000409307020AC0809107028093B300109262 |
:1036400008021092070210920602FF91EF91DF919B |
:10365000CF91BF91AF919F918F917F916F915F912A |
:103660004F913F912F910F900FBE0F901F90189583 |
:1036700010927C008FEC80937A0008950F931F9333 |
:10368000CF93DF9303E010E0D8010E94086F802DF4 |
:10369000C82FDD27C531D10508F02A97C7BD109284 |
:1036A000150284E690E00E94121780911B01909110 |
:1036B0001C018052934010F4C0E0D0E0CA3FD10515 |
:1036C000F8F4C7BD82E390E00E94121789EE94E0FF |
:1036D0009F938F9387E293E19F938F93E09192035F |
:1036E000F0919303099580911B0190911C010F901B |
:1036F0000F900F900F908052934010F02196DECFE4 |
:10370000D8010C2E0E94156FC093B3058CE291E096 |
:103710000E941217DF91CF911F910F910895EF92A0 |
:10372000FF921F93CF93C0E0C0931002C0930F028B |
:10373000C0930E0280ED97E00E94F0167C011CE819 |
:10374000C33019F41B3008F019E0C0E08091250265 |
:10375000909126028C5F934024F480911A0181504D |
:103760000AC080912502909126028750944034F03F |
:1037700080911A018F5F80931A0101C0C1E080918E |
:103780002302909124028C5F934024F480911901CC |
:1037900081500AC080912302909124028750944066 |
:1037A00034F0809119018F5F8093190101C0CF5FC0 |
:1037B00080912102909122028C5F934024F48091A9 |
:1037C000180181500AC080912102909122028750F5 |
:1037D0009440C4F0809118018F5F8093180113C04A |
:1037E0008BEE94E09F938F9387E293E19F938F9367 |
:1037F000E0919203F091930309950F900F900F9031 |
:103800000F904DC0CF5F88E080934A020E94E82A63 |
:1038100080911A018A3030F481E0809310028AE0AE |
:1038200080931A0180911A01863F30F081E08093E5 |
:10383000100285EF80931A01809119018A3030F4CB |
:1038400081E080930F028AE0809319018091190131 |
:10385000863F30F081E080930F0285EF809319015D |
:10386000809118018A3030F481E080930E028AE062 |
:103870008093180180911801863F30F081E0809399 |
:103880000E0285EF8093180180914A02882339F057 |
:10389000C7010E94F916882309F0A2CFF5CF109234 |
:1038A00017018FEC80937A00809117018823E1F350 |
:1038B0001A3020F48AE090E00E941217115009F0AB |
:1038C0003FCF86E490E00E941217CF911F91FF90A6 |
:1038D000EF9008951F920F920FB60F921124AF929E |
:1038E000BF92CF92DF92EF92FF920F931F932F938D |
:1038F0003F934F935F936F937F938F939F93AF9378 |
:10390000BF93EF93FF9380912E02282F33274427F4 |
:1039100055278F5F80932E02F9012231310508F07F |
:10392000FAC3E25CFF4F0C94026F80917800909193 |
:10393000790046C080917800909179009AC1809179 |
:103940007800909179009093300280932F02C5C146 |
:103950008091DB029091DC02209178003091790017 |
:10396000821B930B9093A8058093A7058091A705D0 |
:103970009091A80590933A0280933902CCC180912E |
:103980007800909179002091DD023091DE02821B57 |
:10399000930B9093B2058093B1058091B1059091FE |
:1039A000B20590933C0280933B02B7C380913302EF |
:1039B000909134022091780030917900820F931F0A |
:1039C000909334028093330281E0A8C38091310246 |
:1039D000909132022091780030917900820F931FEC |
:1039E000909332028093310284E098C38091250144 |
:1039F000909126019C01220F331F280F391F8091BF |
:103A000078009091790063E070E00E94676E260F65 |
:103A1000371F3695279536952795309326012093A5 |
:103A2000250185E07BC38091780090917900AA27D9 |
:103A300097FDA095BA2FBC01CD010E94C26D7B01FC |
:103A40008C018091D5029091D602A091D702B091BD |
:103A5000D8029C01AD01C801B7010E94626DDC0172 |
:103A6000CB01BC01CD010E94A56DDC01CB0190937F |
:103A70001C0280931B0280911B0290911C020297F2 |
:103A80000CF446C08091D5029091D602A091D70245 |
:103A9000B091D80220E030E84BE354E4BC01CD0102 |
:103AA0000E94CC6D88230CF088C08091D502909143 |
:103AB000D602A091D702B091D8022AE037ED43EAAE |
:103AC0005CE3BC01CD010E94636DDC01CB018093FE |
:103AD000D5029093D602A093D702B093D8028091DA |
:103AE000530290915402845F914008F066C0809127 |
:103AF000D5029091D602A091D702B091D8022DECB8 |
:103B00003CEC4CEC5DE3BC01CD010E94636D4BC00D |
:103B100080911B0290911C028F5F9F4F0CF04DC053 |
:103B20008091D5029091D602A091D702B091D8028F |
:103B300020E030E849E054E4BC01CD010E94CF6DA3 |
:103B40001816DCF58091D5029091D602A091D7028B |
:103B5000B091D8022AE037ED43EA5CE3BC01CD0125 |
:103B60000E94626DDC01CB018093D5029093D60256 |
:103B7000A093D702B093D80280915302909154023F |
:103B8000845F9140D0F48091D5029091D602A091AB |
:103B9000D702B091D8022DEC3CEC4CEC5DE3BC01BB |
:103BA000CD010E94626DDC01CB018093D502909320 |
:103BB000D602A093D702B093D80281E080931A0274 |
:103BC00080917800909179009093AA058093A9053F |
:103BD00080911B0290911C029C01442737FD409567 |
:103BE000542F8091970290919802A0919902B091E0 |
:103BF0009A02820F931FA41FB51F80939702909380 |
:103C00009802A0939902B0939A0220919702309162 |
:103C100098024091990250919A0257FF04C0215096 |
:103C20003C4F4F4F5F4F0AE0559547953795279585 |
:103C30000A95D1F78091970290919802A0919902EC |
:103C4000B0919A02821B930BA40BB50B8093970241 |
:103C500090939802A0939902B0939A022EC18091FA |
:103C60003102909132022091780030917900820FD8 |
:103C7000931F909332028093310210922D0250C212 |
:103C8000809102018A3071F48091780090917900DE |
:103C900020912F0230913002820F931F019696954A |
:103CA000879517C040912F0250913002843159F40A |
:103CB0002091780030917900240F351F8FEF97E025 |
:103CC000821B930B06C08091780090917900840F3D |
:103CD000951F909322028093210286E01FC280915B |
:103CE000DB029091DC022091780030917900821BF8 |
:103CF000930B9093A8058093A7058091A7059091B9 |
:103D0000A8052091390230913A02820F931F9093B7 |
:103D1000200280931F0287E001C280917800909179 |
:103D200079002091DD023091DE02821B930B90938B |
:103D3000B2058093B1058091B1059091B2052091B3 |
:103D40003B0230913C02820F931F90931E0280939E |
:103D50001D02E3C12091330230913402809178003A |
:103D600090917900280F391F309334022093330249 |
:103D7000809102018A3019F4220F331F04C0220FF0 |
:103D8000331F220F331F30933402209333022091CC |
:103D9000330230913402C90137FD0796A3E09595AF |
:103DA0008795AA95E1F7909326028093250280914A |
:103DB000350290913602820F931F97FD01969595DB |
:103DC000879590933602809335022091E7023091D7 |
:103DD000E802821B930B909324018093230120918E |
:103DE0002B0230912C028091230190912401280F05 |
:103DF000391F37FF02C02F5F3F4F3595279530930E |
:103E00002C0220932B02E0CD20913102309132021E |
:103E10008091780090917900280F391F30933202F9 |
:103E200020933102809102018A3019F4220F331F4E |
:103E300004C0220F331F220F331F3093320220930E |
:103E400031022091310230913202C90137FD0796CB |
:103E500063E0959587956A95E1F7909324028093A6 |
:103E600023028091370290913802820F931F97FDB1 |
:103E7000019695958795909338028093370220910B |
:103E8000E5023091E602821B930B9093220180930E |
:103E900021012091290230912A02809121019091E3 |
:103EA0002201280F391F37FF02C02F5F3F4F359582 |
:103EB000279530932A022093290283E02FC1109284 |
:103EC0002E0281E0809317018091110290911202DD |
:103ED0000196909312028093110280917800909144 |
:103EE000790090931C0180931B0180911B0190919C |
:103EF0001C01AA27BB27A0903D02B0903E02C090B3 |
:103F00003F02D0904002A80EB91ECA1EDB1EA0922E |
:103F10003D02B0923E02C0923F02D0924002809198 |
:103F200041028F5F80934102823108F4F6C0809194 |
:103F30001D0190911E01A0911F01B09120017C01F3 |
:103F40008D0123E0EE0CFF1C001F111F2A95D1F7F5 |
:103F5000E81AF90A0A0B1B0BEA0CFB1C0C1D1D1DB1 |
:103F600080911502992787FD9095A92FB92FBC0143 |
:103F7000CD0126EC34E240E050E00E943C6EDC01D2 |
:103F8000CB01E81AF90A0A0B1B0BD801C7010496EA |
:103F9000A11DB11DB7FF05C0D801C7010B96A11D1A |
:103FA000B11D13E0B595A795979587951A95D1F70B |
:103FB00080931D0190931E01A0931F01B0932001D7 |
:103FC0008091AB059091AC057C010027F7FC009532 |
:103FD000102F80911D0190911E01A0911F01B091A1 |
:103FE0002001E81AF90A0A0B1B0BE0927502F09205 |
:103FF0007602009377021093780220911602309196 |
:104000001702409118025091190257FF04C0215F16 |
:104010003F4F4F4F5F4FF4E05595479537952795A4 |
:10402000FA95D1F78091160290911702A09118028B |
:10403000B0911902821B930BA40BB50B809316024F |
:1040400090931702A0931802B09319028091160260 |
:1040500090911702A0911802B09119028E0D9F1D28 |
:10406000A01FB11F8093160290931702A09318020D |
:10407000B09319028091130290911402AC01E4E014 |
:10408000440F551FEA95E1F7481B590B8091160222 |
:1040900090911702A0911802B0911902B7FF03C0C6 |
:1040A0000F96A11DB11D74E0B595A79597958795BD |
:1040B0007A95D1F72091750230917602281B390B41 |
:1040C00063E0220F331F6A95E1F7240F351F37FF96 |
:1040D00002C0215F3F4F44E0359527954A95E1F7AF |
:1040E0003093140220931302D601C501D7FE03C0FA |
:1040F0000196A11DB11DB595A795979587958093BC |
:104100003D0290933E02A0933F02B093400289E0AB |
:104110008093410202C010922E0282E080932D0211 |
:1041200080912D0280937C0080912E02882319F0CB |
:104130008FEC80937A00FF91EF91BF91AF919F91A7 |
:104140008F917F916F915F914F913F912F911F912F |
:104150000F91FF90EF90DF90CF90BF90AF900F90B6 |
:104160000FBE0F901F90189590E2E8E2F1E08FE407 |
:104170009193815087FFFCCF089590914402E8E22B |
:10418000F1E0E90FF11D80839F5F90934402089551 |
:10419000EF92FF920F931F93CF93DF9320914202F0 |
:1041A00020FF0AC080914302882311F0815002C091 |
:1041B000809127018093430221FF0CC0909143021C |
:1041C00080912701981719F41092430203C09F5F52 |
:1041D00090934302822F992780FF04C081FF02C081 |
:1041E000109243020E94B42080914302282F33276B |
:1041F000CDEBEC2EC0E2FC2EC0919203D091930344 |
:104200008A3098F481E1809344023F932F9382E2B5 |
:1042100095E09F938F93FF92EF92FE0109952DB742 |
:104220003EB72A5F3F4F2DBF11C080E1809344020B |
:104230003F932F9387E295E09F938F93FF92EF92A6 |
:10424000FE0109958DB79EB706968DBF209143025A |
:10425000822F9927AA27BB27FC01419710F00C94C5 |
:10426000D22AE05BFF4FBDEBEB2EB0E2FB2EC091FC |
:104270009203D09193030C94026F109244028CE24B |
:1042800095E09F938F93FF92EF92FE01099584E151 |
:10429000809344020F900F900F900F9082E690E071 |
:1042A0009F938F938EE490E09F938F931F921F9222 |
:1042B000809102016AE00E945B6E892F99279F938B |
:1042C0008F93809102010E945B6E99279F938F9339 |
:1042D0008CE395E09F938F93FF92EF92E09192038E |
:1042E000F0919303099588E2809344022DB73EB77D |
:1042F000225F3F4F2DBF85E993E09F938F930E94EC |
:10430000150799279F938F9381E595E09F938F934E |
:10431000FF92EF92E0919203F091930309958091BF |
:104320009F019091A0012DB73EB7285F3F4F2DBF51 |
:10433000069730F48CE3809344028FE595E0CDC07E |
:1043400090914702992311F40C94DB2A8CE380931B |
:104350004402892F99279F938F938CE695E09F9332 |
:104360008F938DEB90E29F938F9377C0809162063D |
:10437000ADEBEA2EA0E2FA2EC0919203D091930306 |
:1043800080FF74C010924402809175029091760271 |
:10439000A0917702B0917802BC01CD0125E030E018 |
:1043A00040E050E00E94B06E3F932F9381E895E08B |
:1043B0009F938F93FF92EF92FE01099584E1809382 |
:1043C00044022DB73EB72A5F3F4F2DBF8091710247 |
:1043D00090917202A0917302B0917402BC01CD0160 |
:1043E00025E030E040E050E00E94B06E3F932F9314 |
:1043F0008EE895E09F938F93FF92EF92E091920366 |
:10440000F0919303099588E2809344028DB79EB79B |
:1044100006968DBF80911B0190911C019F938F93F5 |
:104420008BE995E09F938F93FF92EF92E091920337 |
:10443000F091930309958CE3809344022DB73EB726 |
:104440002A5F3F4F2DBF87B599279F938F9388EAA7 |
:1044500095E09F938F93FF92EF92E0919203F091FA |
:10446000930309958DB79EB7069639C710924402FB |
:1044700085EB95E09F938F93FF92EF92FE01099554 |
:1044800084E1809344020F900F900F900F9084EC82 |
:1044900095E09F938F93FF92EF92E0919203F091BA |
:1044A0009303099588E2809344020F900F900F9038 |
:1044B0000F908DEC95E09F938F93FF92EF92E09198 |
:1044C0009203F091930309958CE3809344020F903B |
:1044D0000F900F900F908CED95E09F938F93FF922C |
:1044E000EF92EFC71092440285EE95E09F938F9371 |
:1044F0000DEB10E2FF92EF92FE01099584E18093AB |
:1045000044020F900F900F900F908091CF029091E6 |
:10451000D002A091D102B091D202B7FF04C0815065 |
:104520009C4FAF4FBF4FFAE0B595A79597958795EC |
:10453000FA95D1F7BF93AF939F938F9382EF95E056 |
:104540009F938F931F930F93E0919203F0919303A6 |
:10455000099588E2809344022DB73EB7285F3F4F0C |
:104560002DBF8091C7029091C802A091C902B0915D |
:10457000CA02B7FF04C081509C4FAF4FBF4FEAE063 |
:10458000B595A79597958795EA95D1F7BF93AF9382 |
:104590009F938F9381E096E09F938F931F930F9348 |
:1045A000E0919203F091930309958CE38093440288 |
:1045B0008DB79EB708968DBF809195029091960217 |
:1045C0009F938F9380E196E09F938F931F930F9318 |
:1045D000EEC3109244028091EB059091EC059F93FD |
:1045E0008F938091E9059091EA059F938F938FE1D6 |
:1045F00096E09F938F93FF92EF92FE01099584E1DD |
:10460000809344028DB79EB708968DBF8091EF05C9 |
:104610009091F0059F938F938091ED059091EE0519 |
:104620009F938F938FE296E09F938F93FF92EF92E9 |
:10463000E0919203F0919303099588E280934402FC |
:104640002DB73EB7285F3F4F2DBF8091F305909166 |
:10465000F4059F938F938091F1059091F2059F93BC |
:104660008F938FE396E09F938F93FF92EF92E09169 |
:104670009203F091930309958CE3809344028DB7E4 |
:104680009EB708968DBF8091F7059091F8059F938E |
:104690008F938091F5059091F6059F938F938FE40A |
:1046A00096E076C51092440280915706E82FFF27C6 |
:1046B000EE0FFF1FE951FA4F808191819F938F93F5 |
:1046C00080915606E82FFF27EE0FFF1FE951FA4FA2 |
:1046D000808191819F938F938FE596E09F938F9335 |
:1046E000FF92EF92FE01099584E1809344028DB719 |
:1046F0009EB708968DBF80915906E82FFF27EE0FD1 |
:10470000FF1FE951FA4F808191819F938F93809190 |
:104710005806E82FFF27EE0FFF1FE951FA4F80815F |
:10472000918188589F4F9F938F938FE696E09F9338 |
:104730008F93FF92EF92E0919203F091930309958A |
:1047400088E2809344022DB73EB7285F3F4F2DBFCC |
:1047500080915B06E82FFF27EE0FFF1FE951FA4F0C |
:104760008081918182599F4F9F938F9380915A06A8 |
:10477000E82FFF27EE0FFF1FE951FA4F808191814B |
:1047800082599F4F9F938F938FE796E09F938F93CC |
:10479000FF92EF92E0919203F091930309958CE3DD |
:1047A000809344028DB79EB708968DBF80915D06B9 |
:1047B000E82FFF27EE0FFF1FE951FA4F808191810B |
:1047C00082599F4F9F938F9380915C06E82FFF271C |
:1047D000EE0FFF1FE951FA4F8081918182599F4F5F |
:1047E0009F938F938FE896E0D3C4109244028FE991 |
:1047F00096E09F938F930DEB10E2FF92EF92FE01F4 |
:104800000995809102010F900F900F900F908A30C0 |
:1048100009F0A1C084E1809344028091E702909165 |
:10482000E8029C0197FF02C0295F3F4F287F821B4F |
:10483000930B9F938F938091E7029091E80297FDED |
:10484000079673E0959587957A95E1F79F938F93F7 |
:104850002091E7023091E80237FF02C0295F3F4F05 |
:1048600063E0359527956A95E1F78091250290914F |
:104870002602821B930B9F938F938DEA96E09F9362 |
:104880008F931F930F93E0919203F09193030995F7 |
:1048900088E2809344028DB79EB70A968DBF8091BF |
:1048A000E5029091E6029C0197FF02C0295F3F4F0D |
:1048B000287F821B930B9F938F938091E5029091A9 |
:1048C000E60297FD079653E0959587955A95E1F78F |
:1048D0009F938F932091E5023091E60237FF02C04B |
:1048E000295F3F4F43E0359527954A95E1F7809141 |
:1048F000230290912402821B930B9F938F938EEB44 |
:1049000096E09F938F931F930F93E0919203F09102 |
:10491000930309958CE3809344022DB73EB7265F3D |
:104920003F4F2DBF8091E3029091E4029F938F93BC |
:104930008091E3029091E4022091210230912202C1 |
:10494000821B930B9F938F938FEC96E09F938F9393 |
:104950001F930F93B6C38B3019F0843109F0ADC0AB |
:1049600084E1809344028091E7029091E8029C01E7 |
:1049700097FF02C0215F3F4F207F821B930B97FD63 |
:104980000196959587959F938F938091E7029091DB |
:10499000E80297FD0F9624E0959587952A95E1F713 |
:1049A0009F938F932091E7023091E80237FF02C076 |
:1049B000295F3F4F83E0359527958A95E1F78091F0 |
:1049C000250290912602821B930B9F938F938DED6E |
:1049D00096E09F938F931F930F93E0919203F09132 |
:1049E0009303099588E2809344022DB73EB7265F72 |
:1049F0003F4F2DBF8091E5029091E6029C0197FF09 |
:104A000002C0215F3F4F207F821B930B97FD0196D1 |
:104A1000959587959F938F938091E5029091E602FB |
:104A200097FD0F96B4E095958795BA95E1F79F931A |
:104A30008F932091E5023091E60237FF02C0295F93 |
:104A40003F4FA3E035952795AA95E1F78091230282 |
:104A500090912402821B930B9F938F938FEE96E08D |
:104A60009F938F931F930F93E0919203F091930381 |
:104A700009958CE3809344028DB79EB70A968DBF4B |
:104A80008091E3029091E40297FD019695958795B8 |
:104A90009F938F938091E3029091E40220912102F1 |
:104AA00030912202821B930B9F938F9381E097E0BA |
:104AB0009F938F931F930F936FC38D3009F07BC526 |
:104AC00084E18093440280911A0199279F938F93E8 |
:104AD0008091E7029091E80297FD0F96E4E09595AA |
:104AE0008795EA95E1F79F938F932091E7023091A4 |
:104AF000E80237FF02C0295F3F4F73E035952795E5 |
:104B00007A95E1F78091250290912602821B930B02 |
:104B10009F938F9380E197E09F938F931F930F93C1 |
:104B2000E0919203F0919303099588E28093440207 |
:104B30008DB79EB70A968DBF8091190199279F93D3 |
:104B40008F938091E5029091E60297FD0F9664E0C5 |
:104B5000959587956A95E1F79F938F932091E5024C |
:104B60003091E60237FF02C0295F3F4F53E0359591 |
:104B700027955A95E1F78091230290912402821B98 |
:104B8000930B9F938F9384E297E09F938F931F9350 |
:104B90000F93E0919203F091930309958CE3809336 |
:104BA00044022DB73EB7265F3F4F2DBF80911801BD |
:104BB00099279F938F938091E3029091E40297FD50 |
:104BC0000196959587959F938F938091E30290919D |
:104BD000E4022091210230912202821B930B9F93C9 |
:104BE0008F9388E397E09F938F931F930F93E091A8 |
:104BF0009203F091930309958DB79EB70A966FC300 |
:104C0000109244028CE497E09F938F93FF92EF926F |
:104C1000FE01099584E1809344020F900F900F905C |
:104C20000F908091DD029091DE029F938F9380918F |
:104C30001D0290911E029F938F9389E597E09F93A9 |
:104C40008F93FF92EF92E0919203F0919303099575 |
:104C500088E2809344022DB73EB7285F3F4F2DBFB7 |
:104C60008091DB029091DC029F938F9380911F02D1 |
:104C7000909120029F938F9388E697E09F938F9364 |
:104C8000FF92EF92E0919203F091930309958CE3E8 |
:104C9000809344028DB79EB708968DBF8091D50250 |
:104CA0009091D602A091D702B091D802BC01CD015B |
:104CB0000E94A56DDC01CB019F938F938091DE064E |
:104CC0009091DF069F938F9387E797E061C21092E0 |
:104CD000440280912501909126016AE070E00E94D3 |
:104CE0007B6E9F938F9380912501909126016AE0BE |
:104CF00070E00E947B6E7F936F9386E897E09F93AE |
:104D00008F93FF92EF92FE01099584E18093440214 |
:104D10008DB79EB708968DBF8091930790919407A9 |
:104D20006AE070E00E94676E9F938F938091930773 |
:104D3000909194076AE070E00E94676E7F936F9392 |
:104D40008AE997E09F938F93FF92EF92E09192030D |
:104D5000F0919303099588E2809344022DB73EB702 |
:104D6000285F3F4F2DBF80919507909196079F93A5 |
:104D70008F938EEA97E09F938F93FF92EF92E0914B |
:104D80009203F091930309958CE3809344028DB7CD |
:104D90009EB706968DBF80919707909198079F9335 |
:104DA0008F938EEB97E09F938F93FF92EF92E0911A |
:104DB0009203F091930309952DB73EB72A5F3F4FB9 |
:104DC000F4C11092440280ED97E09F938F93FF927D |
:104DD000EF92FE01099584E1809344020F900F90B9 |
:104DE0000F900F908091E7059091E8059F938F9326 |
:104DF00089ED97E09F938F93FF92EF92E09192035A |
:104E0000F0919303099588E2809344028DB79EB791 |
:104E100006968DBF8091830299279F938F9389EE89 |
:104E200097E09F938F93FF92EF92E0919203F0911E |
:104E3000930309958CE3809344022DB73EB72A5F14 |
:104E40003F4F2DBF8091E605992701979F938F9340 |
:104E500089EF97E0FECA1092440289E098E09F93A0 |
:104E60008F93FF92EF92FE01099584E180934402B3 |
:104E70000F900F900F900F9080919102909192025D |
:104E80009F938F9381E198E09F938F93FF92EF928E |
:104E9000E0919203F0919303099588E28093440294 |
:104EA0002DB73EB72A5F3F4F2DBF8091950290915D |
:104EB00096029F938F938FE198E09F938F93FF9239 |
:104EC000EF92E0919203F091930309958CE3809324 |
:104ED00044028DB79EB706968DBF80919302909144 |
:104EE00094029F938F938DE298E05DCF10924402DD |
:104EF0008091840299279F938F938BE398E09F93EF |
:104F00008F93FF92EF92FE01099584E18093440212 |
:104F10008DB79EB706968DBF8091850299279F9386 |
:104F20008F9387E498E09F938F93FF92EF92E091A5 |
:104F30009203F0919303099588E2809344022DB780 |
:104F40003EB72A5F3F4F2DBF8091860299279F93DE |
:104F50008F9383E598E09F938F93FF92EF92E09178 |
:104F60009203F091930309958CE3809344028DB7EB |
:104F70009EB706968DBF8091870299279F938F9346 |
:104F80008FE598E010CF1092440280918802992713 |
:104F90009F938F938BE698E09F938F93FF92EF926E |
:104FA000FE01099584E1809344028DB79EB7069671 |
:104FB0008DBF8091890299279F938F9387E798E00F |
:104FC0009F938F93FF92EF92E0919203F09193035E |
:104FD000099588E2809344022DB73EB72A5F3F4F80 |
:104FE0002DBF80918A0299279F938F9383E898E041 |
:104FF0009F938F93FF92EF92E0919203F09193032E |
:1050000009958CE3809344028DB79EB706968DBFB9 |
:1050100080918B0299279F938F938FE898E0C3CE5E |
:10502000109244028BE998E09F938F93FF92EF9246 |
:10503000FE01099584E1809344020F900F900F9038 |
:105040000F908091850199279F938F9383EA98E031 |
:105050009F938F93FF92EF92E0919203F0919303CD |
:10506000099588E2809344028DB79EB706968DBF5E |
:105070008091FA019091FB019F938F9381EB98E0CF |
:105080009F938F93FF92EF92E0919203F09193039D |
:1050900009958CE3809344022DB73EB72A5F3F4FBA |
:1050A0002DBF8091840699279F938F9380918306CB |
:1050B00099279F938F938FEB98E09F938F93FF9205 |
:1050C000EF92E0919203F091930309958DB79EB70B |
:1050D000089605C1109244028DEC98E09F938F933F |
:1050E000FF92EF92FE01099584E1809344020F90B4 |
:1050F0000F900F900F9080911904992787FD90953C |
:105100009F938F9380911804992787FD90959F9383 |
:105110008F938DED98E09F938F93FF92EF92E091A4 |
:105120009203F0919303099588E2809344022DB78E |
:105130003EB7285F3F4F2DBF80911A04992787FD06 |
:1051400090959F938F9380911B0499279F938F93A2 |
:105150008DEE98E09F938F93FF92EF92E0919203F0 |
:10516000F091930309958CE3809344028DB79EB729 |
:1051700008968DBF80911F0499279F938F938091EC |
:105180001C04992787FD90959F938F938DEF98E04E |
:105190009F938F93FF92EF92E0919203F09193038C |
:1051A00009952DB73EB7285F3F4F2DBF04C210921F |
:1051B00044028DE099E09F938F93FF92EF92FE015E |
:1051C000099584E1809344020F900F900F900F9007 |
:1051D0008091C30599278F7790709F938F938091CB |
:1051E000BF0599278F7790709F938F938091BB0510 |
:1051F00099278F7790709F938F938091B705992708 |
:105200008F7790709F938F938DE199E09F938F9309 |
:10521000FF92EF92E0919203F0919303099588E257 |
:10522000809344028DB79EB70C968DBF8091D305B5 |
:1052300099278F7790709F938F938091CF059927AF |
:105240008F7790709F938F938091CB0599278F775D |
:1052500090709F938F938091C70599278F77907057 |
:105260009F938F938EE299E09F938F93FF92EF929B |
:10527000E0919203F091930309958CE380934402AB |
:105280002DB73EB7245F3F4F2DBF8091E30599278F |
:105290008F7790709F938F938091DF0599278F77F9 |
:1052A00090709F938F938091DB0599278F779070F3 |
:1052B0009F938F938091D70599278F7790709F93B5 |
:1052C0008F938FE399E09F938F93FF92EF92E091FA |
:1052D0009203F091930309958DB79EB70C968DBFFD |
:1052E0006AC11092440280E599E09F938F930DEB81 |
:1052F00010E2FF92EF92FE01099584E1809344024F |
:105300000F900F900F900F908091C305881F8827F2 |
:10531000881F97E0899FC00111248D969F938F93DA |
:105320008091BF05881F8827881F96E0899FC0014C |
:1053300011248D969F938F938091BB05881F88279A |
:10534000881F95E0899FC00111248D969F938F93AC |
:105350008091B705881F8827881F9927880F991F74 |
:10536000880F991F8D969F938F938FE599E09F9358 |
:105370008F93FF92EF92E0919203F091930309953E |
:1053800088E2809344022DB73EB7245F3F4F2DBF84 |
:105390008091D305881F8827881F9BE0899FC001C3 |
:1053A00011248D969F938F938091CF05881F882716 |
:1053B000881F9AE0899FC00111248D969F938F9337 |
:1053C0008091CB05881F8827881F99E0899FC0019D |
:1053D00011248D969F938F938091C705881F8827EE |
:1053E000881F992723E0880F991F2A95E1F78D964A |
:1053F0009F938F9383E799E09F938F93FF92EF9210 |
:10540000E0919203F091930309958CE38093440219 |
:105410008DB79EB70C968DBF8091D705881F8827C2 |
:10542000881F9CE0899FC00111248D969F938F93C4 |
:1054300087E899E09F938F93FF92EF92E091920318 |
:10544000F091930309958091DB052DB73EB72A5F54 |
:105450003F4F2DBF87FF12C080E48093440288E94C |
:1054600099E09F938F93FF92EF92E0919203F091D6 |
:10547000930309950F900F900F900F908091DF0587 |
:1054800087FF12C084E4809344028BE999E09F93E4 |
:105490008F931F930F93E0919203F09193030995DB |
:1054A0000F900F900F900F908091E30587FF83C0BE |
:1054B00088E4809344028EE999E09F938F931F9331 |
:1054C0000F93E0919203F091930309950F900F9041 |
:1054D0000F900F9070C01092440281EA99E09F9360 |
:1054E0008F93FF92EF92FE01099584E1809344022D |
:1054F0000F900F900F900F908091D2019091D30157 |
:105500009F938F938FEA99E09F938F93FF92EF92EF |
:10551000E0919203F0919303099588E2809344020D |
:105520008DB79EB706968DBF8091D4019091D5011D |
:105530009F938F938CEB99E09F938F93FF92EF92C1 |
:10554000E0919203F0919303099589E480934402DA |
:105550002DB73EB72A5F3F4F2DBF89EC99E09F934F |
:105560008F93FF92EF92E0919203F091930309954C |
:10557000809142020F900F900F900F9083FF1BC0FD |
:105580001092D5011092D401AEE0B0E080E0082E78 |
:105590000E94156FAFE0B0E08091D401082E0E9408 |
:1055A000156F09C080912701281719F42150209305 |
:1055B00027011092430210924202E6E0CDB7DEB717 |
:1055C0000C94F36E1092B9008AE28093B8000895AB |
:1055D00085EA8093BC00089584E98093BC00089517 |
:1055E0001092B9008093BB0085E88093BC000895B9 |
:1055F0000E94EC2A10924A028091BB00109249024C |
:1056000080E88093BC001092BD001092BA00109206 |
:10561000BB001092B9001092B8000E94E22A0E94CA |
:10562000E82A80E00E94F02A08958093BB0085E874 |
:105630008093BC00089585EC8093BC00089585E8B4 |
:105640008093BC0008951F920F920FB60F92112401 |
:105650002F933F934F935F936F937F938F939F937A |
:10566000AF93BF93EF93FF9380914A02282F332784 |
:10567000442755278F5F80934A02F901273131056E |
:1056800008F0F2C0EF59FF4F0C94026F20914902CD |
:10569000E22FFF27EE0FFF1FEE0FFF1FEC56FC4F10 |
:1056A00085851816A4F02C3090F4922F9F5FE92F77 |
:1056B000FF27EE0FFF1FEE0FFF1FEC56FC4F8585F7 |
:1056C00018161CF0292F9C3080F39093490280918A |
:1056D00049028C3051F41092490283E080934A02CF |
:1056E00080914802880F8D5AB4C0880F8E5AB1C07D |
:1056F00080914902E82FFF27EE0FFF1FEE0FFF1FDB |
:10570000EA54FA4F8F5F809349028081A2C0809152 |
:10571000B9008033E1F480914B02882321F4809119 |
:10572000490280934B0280914902E82FFF27EE0F38 |
:10573000FF1FEE0FFF1FED54FA4F2081822F992794 |
:105740008F7790708F37910514F42F5F20830E941C |
:10575000EC2A8AE090E09093A00180939F01109240 |
:105760004A026CC08091B900909148028034C1F027 |
:10577000E92FFF27EE0FFF1FEE0FFF1FEA54FA4F2E |
:1057800081818F778183892F8F5F809348028C304E |
:1057900010F0109248020E94EC2A10924A020DC0AA |
:1057A000E92FFF27EE0FFF1FEE0FFF1FEA54FA4FFE |
:1057B0008181806881830E941B2B80914B028093A2 |
:1057C000470210924B0252C080914802E82FFF27F7 |
:1057D000EE0FFF1FEE0FFF1FEA54FA4F8091BB0040 |
:1057E00082830E941F2B42C090914802E92FFF271D |
:1057F000EE0FFF1FEE0FFF1FEA54FA4F8091BB0020 |
:105800008383892F8F5F809348028C3010F0109231 |
:1058100048020E94EC2A28C080E11BC080911A0136 |
:1058200018C082E116C08091190113C00E94EC2AB1 |
:105830008AE090E09093A00180939F010E94E82A63 |
:1058400015C088E906C084E104C08091180101C038 |
:1058500080E80E94F02A0AC00E94EC2A8AE090E0C8 |
:105860009093A00180939F0110924A028091BC0006 |
:1058700080688093BC00FF91EF91BF91AF919F91A1 |
:105880008F917F916F915F914F913F912F910F90E9 |
:105890000FBE0F901F90189589E1ABE1B6E0E7EEDF |
:1058A000F5E011821082329611961C921E92129689 |
:1058B000815087FFF6CF1092E4021092E30210921B |
:1058C000E6021092E5021092E8021092E7020895B3 |
:1058D0001F920F920FB60F9211240F931F932F93C5 |
:1058E0003F934F935F936F937F938F939F93AF9368 |
:1058F000BF93CF93DF93EF93FF9340918600509136 |
:10590000870080914D0290914E02481B590BCA01AD |
:1059100057FD0196AC015595479580918600909171 |
:10592000870090934E0280934D02CA018959984096 |
:10593000A0914F02B0915002875E954338F41497BE |
:1059400014F01092780181E090E081C0AD30B10593 |
:105950000CF081C0CA018B5F90408356944008F0E0 |
:1059600071C0425C5340FD01EA0FFB1FE951FA4F41 |
:1059700080819181FA01E81BF90BCF01F7FF03C089 |
:10598000909581959F4F06974CF480918302883CB7 |
:1059900028F480918302865F80938302FD01EA0FE1 |
:1059A000FB1FE951FA4F808191819C01220F331F27 |
:1059B000280F391F240F351F37FF02C02D5F3F4FBF |
:1059C000E901D595C795D595C795CA0101968C175C |
:1059D0009D0714F4219706C041505040C417D507C5 |
:1059E0000CF4219680918302833CD8F08D010A0F3C |
:1059F0001B1FF801E951FA4F808191819E01281BFC |
:105A0000390BC90163E070E00E947B6ECB01880F07 |
:105A1000991F860F971F055E194FF80191838083A8 |
:105A200007C0AA0FBB1FA55EB94F11961C921E920C |
:105A3000E0914F02F0915002EE0FFF1FE951FA4F33 |
:105A4000D183C08380914F02909150020196909330 |
:105A5000500280934F02FF91EF91DF91CF91BF9160 |
:105A6000AF919F918F917F916F915F914F913F91F6 |
:105A70002F911F910F910F900FBE0F901F901895AF |
:105A800081E08093580682E08093570683E08093FC |
:105A9000560684E08093590685E080935A0686E096 |
:105AA00080935B0687E080935C0688E080935D06C8 |
:105AB00089E080935E068AE080935F068BE08093A6 |
:105AC00060068CE08093610608951F938AE68093B8 |
:105AD000620661E06093B5065EE1509363068FEF66 |
:105AE000809365068AE0809366065093640650931F |
:105AF000680685E08093690680E480936A061092C8 |
:105B00006B0684E1809367068EE080936C06F0E17B |
:105B1000F0936D061CE010936E06A8E0A0936F064C |
:105B200086EE809370065093710680E8809372062B |
:105B300040E54093730696E99093740683E0809362 |
:105B40007506409376069093770681E280937806F7 |
:105B500083E28093790650937A0670E270937C0614 |
:105B600010927D0610927E0610927F06109280069B |
:105B7000109298061092990610929A0610929B061F |
:105B800024E62093810638E2309382066093B406BF |
:105B90001092830697EF90938406E6E0E0938906DF |
:105BA0008DE780938A0680938B0680938C062093E2 |
:105BB000850630938606109287069093880682E3C6 |
:105BC00080938D069AE590938E0680938F061092AF |
:105BD000B30690939006409391066093920685E5F4 |
:105BE0008093930680939406F0939506709396069F |
:105BF000209397068FE580939C0683EF80939E0603 |
:105C00008AEA8093A0068093A1068FE080939D0688 |
:105C100080939F068EEF8093A2062093A306909315 |
:105C2000A4069093A5069093A6068BE48093A706FE |
:105C30008093A8068093A9061092AA06E093AB066B |
:105C4000A093AC069093AD065093AE062093AF069A |
:105C50002093B00684E08093B10660937B06A1EAAE |
:105C6000B1E0E6EBF6E00D9001921A95E1F71F9195 |
:105C700008958AE680936206E1E0E093B5066EE15E |
:105C8000609363068FEF809365069AE090936606B3 |
:105C9000609364066093680685E08093690680E4FB |
:105CA00080936A0610926B068FE08093670690934C |
:105CB0006C0680E180936D0676E070936E06F8E0E6 |
:105CC000F0936F0686EE809370066093710680E80D |
:105CD000809372062AE52093730698E790937406E2 |
:105CE00083E080937506209376069093770681E291 |
:105CF0008093780683E28093790660937A0650E277 |
:105D000050937C0610927D0610927E0610927F06BC |
:105D100010928006109298061092990610929A0698 |
:105D200010929B0644E64093810638E23093820647 |
:105D3000E093B4061092830697EF909384067093D5 |
:105D400089068DE780938A0680938B0680938C0664 |
:105D500040938506309386061092870690938806B6 |
:105D600082E380938D0620938E0680938F06109297 |
:105D7000B3062093900680E5809391068CE3809390 |
:105D8000920685E58093930680939406509395063A |
:105D9000509396069BE4909397068FE580939C061C |
:105DA00083EF80939E068AEA8093A0068093A106E3 |
:105DB00084E180939D0680939F068EEF8093A206D8 |
:105DC0004093A3062093A4062093A5062093A6063D |
:105DD0009093A7069093A8069093A9061092AA06FE |
:105DE0007093AB06F093AC062093AD066093AE06BD |
:105DF0004093AF064093B00684E08093B106E093F1 |
:105E00007B068CE0A8EAB1E0E6EBF6E00D900192AB |
:105E10008A95E1F708958AE68093620671E07093AF |
:105E2000B5064EE1409363068FEF809365068AE0E6 |
:105E300080936606409364064093680685E08093ED |
:105E4000690680E480936A0610926B068FE0809367 |
:105E5000670668E060936C0620E120936D0656E0CB |
:105E600050936E0660936F0686EE809370064093A3 |
:105E7000710680E88093720634E63093730698E7E3 |
:105E80009093740683E08093750630937606909322 |
:105E9000770681E28093780683E28093790684E135 |
:105EA00080937A0620937C0610927D0610927E06DF |
:105EB00010927F0610928006109298061092990612 |
:105EC00010929A0610929B063093810628E2209346 |
:105ED00082067093B4061092830697EF909384061F |
:105EE000509389068DE780938A0680938B06809372 |
:105EF0008C06309385062093860610928706909331 |
:105F0000880692E390938D062AE520938E0690935F |
:105F10008F061092B3062093900680E58093910639 |
:105F200086E48093920685E5809393068093940699 |
:105F300080E28093950680939606909397068FE56E |
:105F400080939C0683EF80939E068AEA8093A00646 |
:105F50008093A10640939D0640939F068EEF809309 |
:105F6000A2063093A3062093A4062093A5062093AF |
:105F7000A6068BE48093A7068093A8068093A906C3 |
:105F80001092AA065093AB066093AC062093AD0620 |
:105F90004093AE063093AF063093B00684E0809312 |
:105FA000B10670937B068CE0A0EBB1E0E6EBF6E087 |
:105FB0000D9001928A95E1F708956817790754F4D6 |
:105FC000680F791F77FF02C06F5F7F4FCB019595F8 |
:105FD00087950895681B790B861B970B08951F936F |
:105FE000CF93DF93182FEB01809179028823A1F4DE |
:105FF00011501F3F89F0D093FF01C093FE018091A3 |
:10600000FE019091FF01892BD1F7CE018C0F9D1FCE |
:106010000E940517115078F7DF91CF911F910895D5 |
:10602000A3E1B0E0E6E1F0E30C94CB6E8091E302F3 |
:106030009091E4022091210230912202821B930B65 |
:10604000909317078093160780912B0290912C0252 |
:1060500097FD07969C0153E0359527955A95E1F7F2 |
:106060003093D4062093D3068091290290912A027E |
:1060700097FD079643E0959587954A95E1F79093AC |
:10608000C5068093C4063093E1062093E006909302 |
:10609000D7068093D6068091110790911207AA2700 |
:1060A00097FDA095BA2F7C018D01EE0CFF1C001FFF |
:1060B000111FE80EF91E0A1F1B1F80911D029091EF |
:1060C0001E029C01442737FD4095542FDA01C90177 |
:1060D000F2E0880F991FAA1FBB1FFA95D1F7820F14 |
:1060E000931FA41FB51F820F931FA41FB51FE80E97 |
:1060F000F91E0A1F1B1F17FF08C023E030E040E015 |
:1061000050E0E20EF31E041F151FE2E015950795FF |
:10611000F794E794EA95D1F7F0921207E09211070D |
:106120008091210790912207AA2797FDA095BA2F69 |
:106130007C018D01EE0CFF1C001F111FE80EF91EE3 |
:106140000A1F1B1F80911F02909120029C0144276F |
:1061500037FD4095542FDA01C90162E0880F991F7D |
:10616000AA1FBB1F6A95D1F7820F931FA41FB51FEB |
:10617000820F931FA41FB51FE80EF91E0A1F1B1FD5 |
:1061800017FF08C083E090E0A0E0B0E0E80EF91E41 |
:106190000A1F1B1F82E015950795F794E7948A95CF |
:1061A000D1F7F0922207E09221078091DE069091CC |
:1061B000DF06AA2797FDA095BA2F9C01AD01220FFB |
:1061C000331F441F551F280F391F4A1F5B1F809123 |
:1061D0001B0290911C02AA2797FDA095BA2F280FA9 |
:1061E000391F4A1F5B1F57FF04C02D5F3F4F4F4FA2 |
:1061F0005F4FF2E05595479537952795FA95D1F77A |
:106200003093DF062093DE0620911D0230911E029E |
:10621000C901880F991F880F991F820F931F820F42 |
:10622000931F9C01442737FD4095542F8091BF0256 |
:106230009091C002A091C102B091C202820F931F3F |
:10624000A41FB51F8093BF029093C002A093C10208 |
:10625000B093C20220911F0230912002C901880F21 |
:10626000991F880F991F820F931F820F931F9C0104 |
:10627000442737FD4095542F8091BB029091BC027A |
:10628000A091BD02B091BE02820F931FA41FB51F43 |
:106290008093BB029093BC02A093BD02B093BE0258 |
:1062A0008091EA069091EB0620911D0230911E022A |
:1062B000820F931F9093EB068093EA068091190753 |
:1062C00090911A0720911F0230912002820F931F94 |
:1062D00090931A07809319078091D9029091DA025E |
:1062E00001969093DA028093D9028091B70290913F |
:1062F000B802A091B902B091BA02BC01CD010E94CE |
:10630000C26D5B016C018091A9059091AA05AA2735 |
:1063100097FDA095BA2FBC01CD010E94C26D7B01F3 |
:106320008C018091D5029091D602A091D702B091B4 |
:10633000D8029C01AD01C801B7010E94626DDC0169 |
:10634000CB019C01AD01C601B5010E94636DDC016A |
:10635000CB01BC01CD010E94A56DDC01CB01809376 |
:10636000B7029093B802A093B902B093BA028FEC2F |
:1063700080937A00109217012091A7023091A80211 |
:106380004091A9025091AA0229873A874B875C87DE |
:1063900029543B46414050402CF028E43BE641E084 |
:1063A00050E00DC089859A85AB85BC85885B944992 |
:1063B000AE4FBF4F4CF428EB34E94EEF5FEF2D8327 |
:1063C0003E834F83588708C089859A85AB85BC85F5 |
:1063D0008D839E83AF83B8872091AF023091B00246 |
:1063E0004091B1025091B2022D873E874F87588B62 |
:1063F00029543B46414050402CF028E43BE641E024 |
:1064000050E00DC08D859E85AF85B889885B944925 |
:10641000AE4FBF4F4CF428EB34E94EEF5FEF2983CA |
:106420003A834B835C8308C08D859E85AF85B88990 |
:1064300089839A83AB83BC83A0911607B091170719 |
:10644000BA8BA98BFD01CF01AA2797FDA095BA2F82 |
:10645000A0909F02B090A002C090A102D090A20292 |
:10646000A80EB91ECA1EDB1EA0929F02B092A00207 |
:10647000C092A102D092A202E0901D07F0901E07E8 |
:1064800000911F0710912007E80EF91E0A1F1B1F1D |
:10649000E0921D07F0921E0700931F07109320073C |
:1064A000F0916C02FB8BFF2309F098C180916B0285 |
:1064B000882309F093C18091620686FF8FC1809185 |
:1064C000C4069091C506AA2797FDA095BA2FBC01D6 |
:1064D000CD0129813A814B815C810E943C6E9B01F8 |
:1064E000AC0197FF04C02150384F4F4F5F4F6BE016 |
:1064F00055954795379527956A95D1F780918101F4 |
:10650000682E772488249924CA01B901A401930133 |
:106510000E943C6EDC01CB018093F3029093F40265 |
:10652000A093F502B093F602B7FF04C08150904FDC |
:10653000AF4FBF4F1C012D013CE055944794379459 |
:1065400027943A95D1F72092F3023092F4024092C8 |
:10655000F5025092F6028091D3069091D406AA27B4 |
:1065600097FDA095BA2FBC01CD012D813E814F81B1 |
:1065700058850E943C6E97FF04C06150784F8F4F42 |
:106580009F4F2BE095958795779567952A95D1F73D |
:10659000A40193010E943C6EDC01CB018093F702C1 |
:1065A0009093F802A093F902B093FA02B7FF04C0E7 |
:1065B0008150904FAF4FBF4F9C01AD018CE055957E |
:1065C0004795379527958A95D1F72093F702309311 |
:1065D000F8024093F9025093FA028091F3029091ED |
:1065E000F4029093500680934F068091F7029091A9 |
:1065F000F8029093540680935306221933094409F4 |
:1066000055092093F7023093F8024093F902509312 |
:10661000FA02E20EF31E041F151FE0921D07F0920E |
:106620001E0700931F071093200780918001882385 |
:10663000B1F457FF04C02F5F3F4F4F4F5F4F559549 |
:10664000479537952795A21AB30AC40AD50AA0928E |
:106650009F02B092A002C092A102D092A202298908 |
:106660003A8979010027F7FC0095102F8091F702F5 |
:106670009091F802A091F902B091FA02E80EF91E89 |
:106680000A1F1B1FC801B70129813A814B815C8118 |
:106690000E943C6E9B01AC0197FF04C02150384F13 |
:1066A0004F4F5F4FBBE05595479537952795BA9566 |
:1066B000D1F780918201A82EBB24CC24DD24CA010D |
:1066C000B901A60195010E943C6EDC01CB018093CB |
:1066D000EB029093EC02A093ED02B093EE02B7FFB1 |
:1066E00004C08150904FAF4FBF4F3C014D01ACE013 |
:1066F0009594879477946794AA95D1F76092EB026A |
:106700007092EC028092ED029092EE02C801B70105 |
:106710002D813E814F8158850E943C6E97FF04C0B9 |
:106720006150784F8F4F9F4FFBE0959587957795F8 |
:106730006795FA95D1F7A60195010E943C6EDC01A0 |
:10674000CB018093EF029093F002A093F102B093FB |
:10675000F202B7FF04C08150904FAF4FBF4FAC0162 |
:10676000BD01ECE07595679557954795EA95D1F78A |
:106770004093EF025093F0026093F1027093F202A3 |
:1067800029893A8937FF03C0309521953F4F21343D |
:106790003105E4F1D401C30197FE07C0B095A0957F |
:1067A000909581959F4FAF4FBF4F81389105A105BF |
:1067B000B10584F4DB01CA0177FF07C0B095A0954D |
:1067C000909581959F4FAF4FBF4F81389105A1059F |
:1067D000B105E4F081E080938F0218C01092540656 |
:1067E000109253061092500610924F061092EF022C |
:1067F0001092F0021092F1021092F2021092EB024B |
:106800001092EC021092ED021092EE028091EF02D3 |
:106810009091F002A091F102B091F202BC01CD0181 |
:1068200024E630E040E050E00E94B06EE090EB02E1 |
:10683000F090EC02E21AF30AF092D206E092D1064E |
:106840008091EB029091EC02A091ED02B091EE02EA |
:10685000BC01CD0124E630E040E050E00E94B06E83 |
:10686000DA01C9012091EF023091F0028C01021B84 |
:10687000130B1093C7060093C6068091790190917F |
:106880007A01A0917B01B0917C01BC01CD0128E689 |
:1068900031E040E050E00E943C6E20911D073091B5 |
:1068A0001E0740911F0750912007261737074807FA |
:1068B000590764F0261B370B480B590B20931D0713 |
:1068C00030931E0740931F075093200720911D0708 |
:1068D00030911E0740911F075091200757FF0CC0B1 |
:1068E000260F371F481F591F20931D0730931E077F |
:1068F00040931F07509320076091C4067091C5060E |
:106900006E0D7F1D9B01442737FD4095542F8091CC |
:10691000A3029091A402A091A502B091A602820FB9 |
:10692000931FA41FB51F8093A3029093A402A0936A |
:10693000A502B093A60280916F0290917002681B2D |
:10694000790BCB01AA2797FDA095BA2F29853A8507 |
:106950004B855C85820F931FA41FB51F8093A702F0 |
:106960009093A802A093A902B093AA02C0909501A7 |
:10697000D0909601E0909701F0909801C816D90642 |
:10698000EA06FB06C4F488EA91E6A0E0B0E08C19C0 |
:106990009D09AE09BF098093A7029093A802A09316 |
:1069A000A902B093AA028093A3029093A402A09399 |
:1069B000A502B093A60222273327A9012C193D096D |
:1069C0004E095F098091A7029091A802A091A902A7 |
:1069D000B091AA0282179307A407B507B4F4D701B0 |
:1069E000C601885A9146A040B0408093A702909378 |
:1069F000A802A093A902B093AA028093A302909345 |
:106A0000A402A093A502B093A6026091D306709150 |
:106A1000D406600F711F9B01442737FD4095542F0A |
:106A20008091AB029091AC02A091AD02B091AE0208 |
:106A3000820F931FA41FB51F8093AB029093AC02EB |
:106A4000A093AD02B093AE0280916D0290916E0260 |
:106A5000681B790BCB01AA2797FDA095BA2F2D852E |
:106A60003E854F855889820F931FA41FB51F8093C1 |
:106A7000AF029093B002A093B102B093B202E09043 |
:106A80009901F0909A0100919B0110919C01E816E8 |
:106A9000F9060A071B07C4F488EA91E6A0E0B0E013 |
:106AA0008E199F09A00BB10B8093AF029093B00297 |
:106AB000A093B102B093B2028093AB029093AC0268 |
:106AC000A093AD02B093AE0222273327A9012E195D |
:106AD0003F09400B510B8091AF029091B002A09101 |
:106AE000B102B091B20282179307A407B507B4F4BC |
:106AF000D801C701885A9146A040B0408093AF02A8 |
:106B00009093B002A093B102B093B2028093AB0213 |
:106B10009093AC02A093AD02B093AE0280919F021D |
:106B20009091A002A091A102B091A2028093B30221 |
:106B30009093B402A093B502B093B6028091AF02D5 |
:106B40009091B002A091B102B091B2028093CF02B5 |
:106B50009093D002A093D102B093D2028091A70269 |
:106B60009091A802A091A902B091AA028093C702B5 |
:106B70009093C802A093C902B093CA028091AB025D |
:106B80009091AC02A091AD02B091AE028093CB0285 |
:106B90009093CC02A093CD02B093CE028091A30239 |
:106BA0009091A402A091A502B091A6028093C30285 |
:106BB0009093C402A093C502B093C60280912301B2 |
:106BC0009091240197FD079633E0959587953A9526 |
:106BD000E1F79093D4068093D306809121019091A0 |
:106BE000220197FD079623E0959587952A95E1F771 |
:106BF0009093C5068093C406809125029091260249 |
:106C00000F9734F488E19CEF9093D4068093D306D9 |
:106C10008091250290912602079734F480E398EF43 |
:106C20009093D4068093D306209102012A30A9F4D0 |
:106C30008091250290912602835F934034F088EE84 |
:106C400093E09093D4068093D3068091250290918F |
:106C500026028A5F9340DCF014C080912502909157 |
:106C60002602815D974034F088EE93E09093D4063D |
:106C70008093D3068091250290912602805E9740F2 |
:106C800034F080ED97E09093D4068093D306809102 |
:106C90002302909124020F9734F488E19CEF9093A3 |
:106CA000C5068093C4068091230290912402079721 |
:106CB00034F480E398EF9093C5068093C4062A309D |
:106CC000A9F48091230290912402835F934034F0D1 |
:106CD00088EE93E09093C5068093C40680912302CA |
:106CE000909124028A5F9340DCF014C080912302CB |
:106CF00090912402815D974034F088EE93E0909368 |
:106D0000C5068093C4068091230290912402805E80 |
:106D1000974034F080ED97E09093C5068093C406C9 |
:106D2000E0918C01EE2309F4B7C04091230150910A |
:106D300024018091FB029091FC02481B590B509357 |
:106D40000203409301032091230130912401280F75 |
:106D5000391F37FF02C02F5F3F4F3595279530937E |
:106D6000FC022093FB02413851051CF080E890E0C2 |
:106D700005C040585F4F34F480E89FEF90930203C2 |
:106D8000809301038E2F9927A0910103B0910203F4 |
:106D9000A89FA001A99F500DB89F500D112457FF27 |
:106DA00002C0415F5F4F84E0559547958A95E1F7B2 |
:106DB0008091D3069091D406840F951F9093D406AA |
:106DC0008093D30660912101709122018091FD0290 |
:106DD0009091FE02681B790B709300036093FF0291 |
:106DE0004091210150912201480F591F57FF02C0C5 |
:106DF0004F5F5F4F559547955093FE024093FD02BC |
:106E0000613871051CF080E890E005C060587F4F44 |
:106E100034F480E89FEF909300038093FF022E2FBD |
:106E200033278091FF0290910003829FB001839FDE |
:106E3000700D929F700D1124AB0177FF02C0415F6E |
:106E40005F4F14E0559547951A95E1F78091C40678 |
:106E50009091C506840F951F9093C5068093C40634 |
:106E6000A29FC001A39F900DB29F900D11249C0181 |
:106E70008091230190912401820F931F909324010C |
:106E8000809323018091210190912201860F971F09 |
:106E900090932201809321010091D6061091D7068C |
:106EA00080914F0690915006101611065CF59C01DA |
:106EB00097FF04C022273327281B390BC901AA27B3 |
:106EC00097FDA095BA2F209180013327442755279D |
:106ED000BC01CD010E943C6E9B01AC0197FF04C038 |
:106EE000215C3F4F4F4F5F4FF6E0559547953795E3 |
:106EF0002795FA95D1F78091D1069091D206820F0D |
:106F0000931F27C097FF03C0909581959F4FAA2795 |
:106F100097FDA095BA2F209180013327442755274C |
:106F2000BC01CD010E943C6E9B01AC0197FF04C0E7 |
:106F3000215C3F4F4F4F5F4FE6E0559547953795A2 |
:106F40002795EA95D1F78091D1069091D206821BC0 |
:106F5000930B9093D2068093D106E090E006F090D8 |
:106F6000E10680915306909154061E141F045CF5AF |
:106F70009C0197FF04C022273327281B390BC90126 |
:106F8000AA2797FDA095BA2F209180013327442787 |
:106F90005527BC01CD010E943C6E9B01AC0197FFBF |
:106FA00004C0215C3F4F4F4F5F4F76E055954795AA |
:106FB000379527957A95D1F78091C6069091C706A7 |
:106FC000820F931F27C097FF03C0909581959F4F15 |
:106FD000AA2797FDA095BA2F209180013327442737 |
:106FE0005527BC01CD010E943C6E9B01AC0197FF6F |
:106FF00004C0215C3F4F4F4F5F4F66E0559547956A |
:10700000379527956A95D1F78091C6069091C70666 |
:10701000821B930B9093C7068093C60680916206ED |
:1070200087FF44C09B89992309F040C080916B027F |
:107030008823E1F5A1E0EA16A1E0FA064CF0809180 |
:10704000D3069091D4068E0D9F1D805091400DC0A7 |
:10705000B0E0EB16BFEFFB0664F48091D30690918D |
:10706000D4068E0D9F1D80509F4F9093D406809321 |
:10707000D306E1E001301E074CF08091C4069091E8 |
:10708000C506800F911F805091400CC0FFEF00306B |
:107090001F0764F48091C4069091C506800F911F6C |
:1070A00080509F4F9093C5068093C406A4E8B2E039 |
:1070B0006AE576E057E0FB018191BF01E82FFF27E9 |
:1070C000EE0FFF1FE951FA4F0190F081E02DE259D8 |
:1070D000FF4FEF3FF10521F01CF0EFEFF0E004C0AF |
:1070E000F7FF02C0E0E0F0E04C91242F3327E217D5 |
:1070F000F307B1F0CF01821B930B97FD079633E0A6 |
:10710000959587953A95E1F7242F280F2C93822F98 |
:107110009927E817F90714F4215001C02F5F2C9329 |
:107120005150119657FFC7CFE2E1CD5E0C94E76E48 |
:10713000CF93DF93809102018D3011F40E948F1B59 |
:1071400010927A0080912502909126029093D406A5 |
:107150008093D30680912302909124029093C506D8 |
:107160008093C40680912102909122029093170788 |
:107170008093160780911D0290911E029C01442766 |
:1071800037FD4095542FDA01C90172E0880F991F2D |
:10719000AA1FBB1F7A95D1F7820F931FA41FB51F9B |
:1071A000820F931FA41FB51F90931207809311079E |
:1071B00080911F02909120029C01442737FD409549 |
:1071C000542FDA01C90162E0880F991FAA1FBB1F63 |
:1071D0006A95D1F7820F931FA41FB51F820F931FCB |
:1071E000A41FB51F909322078093210780911B0253 |
:1071F00090911C029093DF068093DE068FEC8093C3 |
:107200007A00A4E8B2E0CAE5D6E097E08991E82FD9 |
:10721000FF27EE0FFF1FE951FA4F0190F081E02D9B |
:10722000E259FF4F1E161F061CF0E0E0F0E005C01B |
:10723000EF3FF10514F0EFEFF0E08C91282F3327AA |
:10724000E217F30714F4815004C02E173F0714F41B |
:107250008F5F8C939150119697FFD8CF80919306B2 |
:107260009927AA27BB27BC01CD0124EC39E040E0D7 |
:1072700050E00E943C6EDC01CB0180939901909319 |
:107280009A01A0939B01B0939C0180919406992749 |
:10729000AA27BB27BC01CD010E943C6EDC01CB01BB |
:1072A0008093950190939601A0939701B0939801D4 |
:1072B000DF91CF910895A0E0B0E0E1E6F9E30C940E |
:1072C000CF6EC0E0D0E07E016E01469AD093DE0220 |
:1072D000C093DD02D093DC02C093DB0280E090E03B |
:1072E000A0E0B0E08093D5029093D602A093D7029D |
:1072F000B093D802D093E802C093E702D093E6029D |
:10730000C093E502D093E402C093E302D093F20667 |
:10731000C093F10610928201109281011092150221 |
:107320000E94983884E690E00E9412170E949838D4 |
:107330008091620680FF10C080911B0190911C011A |
:10734000875B934038F480911B0190911C018E5E05 |
:10735000924010F40E943E1B1FE18AE090E00E94E0 |
:1073600012178091210290912202C80FD91F80919B |
:10737000250290912602E80EF91E80912302909139 |
:107380002402C80ED91E115017FFE7CFA701405F96 |
:107390005F4F56954795569547955093E802409311 |
:1073A000E7029601205F3F4F369527953695279542 |
:1073B0003093E6022093E502CE01409615E09695C3 |
:1073C00087951A95E1F79093E4028093E3029093F6 |
:1073D000F2068093F1063093E2022093E10250938B |
:1073E000E0024093DF0244E050E0DA010E94086FBF |
:1073F000802D853038F1809121079091220797FFE9 |
:1074000003C0909581959F4F6CE070E00E947B6E69 |
:107410007093DC026093DB02809111079091120758 |
:1074200097FF03C0909581959F4F6CE070E00E949C |
:107430007B6E7093DE026093DD028091A9059091CE |
:10744000AA0534C0DA010E94086F802D9927982F71 |
:107450008827DA0111960E94086F202D820F911D56 |
:107460009093DE028093DD02DA0112960E94086F8B |
:10747000802D9927982F8827DA0113960E94086F8C |
:10748000202D820F911D9093DC028093DB02DA01A4 |
:1074900014960E94086F802D9927982F8827DA016B |
:1074A00015960E94086F202D820F911DAA2797FD27 |
:1074B000A095BA2FBC01CD010E94C26DDC01CB01A9 |
:1074C0008093D5029093D602A093D702B093D802AE |
:1074D0001092D4061092D3061092C5061092C406DC |
:1074E000109217071092160784E690E00E94121778 |
:1074F00080911D0290911E02AA2797FDA095BA2F98 |
:107500009C01AD01F2E0220F331F441F551FFA9575 |
:10751000D1F7280F391F4A1F5B1F280F391F4A1F39 |
:107520005B1F309312072093110780911F029091E7 |
:107530002002AA2797FDA095BA2F7C018D01E2E0D9 |
:10754000EE0CFF1C001F111FEA95D1F7E80EF91E83 |
:107550000A1F1B1FE80EF91E0A1F1B1FF0922207AD |
:10756000E092210780917106682E7724882499245F |
:10757000C9019C01442737FD4095542FC401B30134 |
:107580000E943C6E5B016C016093CF027093D0024D |
:107590008093D1029093D2029701442737FD409502 |
:1075A000542FC401B3010E943C6EDC01CB018093D7 |
:1075B000C7029093C802A093C902B093CA02A092D6 |
:1075C000AB02B092AC02C092AD02D092AE028093F8 |
:1075D000A3029093A402A093A502B093A6021092D6 |
:1075E0009F021092A0021092A1021092A20280911A |
:1075F0001D0190911E01A0911F01B0912001909357 |
:10760000AC058093AB0510921402109213021092F5 |
:107610009702109298021092990210929A02809109 |
:1076200095029091960290939402809393020E9407 |
:10763000355A82E390E09093FF018093FE018091A0 |
:1076400093069927AA27BB27BC01CD0124EC39E07A |
:1076500040E050E00E943C6EDC01CB018856954C26 |
:10766000AF4FBF4F8093990190939A01A0939B01D4 |
:10767000B0939C01809194069927AA27BB27BC014F |
:10768000CD010E943C6EDC01CB018856954CAF4F7A |
:10769000BF4F8093950190939601A0939701B0936B |
:1076A000980110927E0110927D0180919502909137 |
:1076B0009602AA2797FDA095BA2F209179013091C3 |
:1076C0007A0140917B0150917C01BC01CD010E9467 |
:1076D0003C6EDC01CB0180931D0790931E07A093A5 |
:1076E0001F07B093200710928E0210928D0281E046 |
:1076F000809301010E94545E8091520284608093C5 |
:1077000052028FEF80938E0710928F0780E2809352 |
:107710009007C4E8D2E0AAE5B6E017E08D91E82F23 |
:10772000FF27EE0FFF1FE951FA4F808191818259A7 |
:107730008993115017FFF2CF84E6809383028091E2 |
:10774000FC01882311F0469A579AEEE0CDB7DEB7D8 |
:107750000C94EB6E809179028823F9F480915202A7 |
:107760008C7F80935202A6EBB5E0EDEFF3E09BE057 |
:107770008091DF01882309F4808381918C93149692 |
:10778000915097FFF5CF8091DF01882359F08091C8 |
:10779000DF0181508093DF0105C08091520281603A |
:1077A000809352028091B605992790937F0580932C |
:1077B0007E058091BA059927909381058093800575 |
:1077C0008091BE05992790938305809382058091CF |
:1077D000C2059927909385058093840510924A02EB |
:1077E000109249020E94E82A089580916406883F19 |
:1077F00038F0EFEFF0E0E81BF109EC57FD4F808126 |
:107800008093920180919201882329F0843618F0A8 |
:1078100084E68093920180916606883F38F0EFEF0E |
:10782000F0E0E81BF109EC57FD4F80818093900157 |
:1078300080919001882329F0843618F084E68093A3 |
:10784000900180917306883F38F0EFEFF0E0E81B7D |
:10785000F109EC57FD4F808180938B0180918B0162 |
:107860008B3010F48AE002C08F3F11F480938B01BB |
:1078700080919D06883F38F0EFEFF0E0E81BF109BA |
:10788000EC57FD4F80818093EC068091EC068230AE |
:1078900010F481E002C08F3F11F48093EC068091D8 |
:1078A0009F06883F38F0EFEFF0E0E81BF109EC5756 |
:1078B000FD4F80818093140780911407823010F46B |
:1078C00081E002C08F3F11F48093140780918A06F3 |
:1078D000883F38F0EFEFF0E0E81BF109EC57FD4F7F |
:1078E00080818093E90680918B06883F38F0EFEF26 |
:1078F000F0E0E81BF109EC57FD4F808180935506BD |
:1079000080918C06883F38F0EFEFF0E0E81BF1093A |
:10791000EC57FD4F80818093F30690916506983F68 |
:1079200018F49093910109C0EFEFF0E0E91BF10921 |
:10793000EC57FD4F808180939101983F18F490930C |
:10794000910109C0EFEFF0E0E91BF109EC57FD4FA1 |
:1079500080818093910180916806883F38F0EFEF35 |
:10796000F0E0E81BF109EC57FD4F808180938F0117 |
:1079700080916A06883F38F0EFEFF0E0E81BF109EC |
:10798000EC57FD4F808180938D0180917206883F76 |
:1079900038F0EFEFF0E0E81BF109EC57FD4F808184 |
:1079A00080938E0180917406883F38F0EFEFF0E00D |
:1079B000E81BF109EC57FD4F808180938A0180918B |
:1079C0007506883F38F0EFEFF0E0E81BF109EC575F |
:1079D000FD4F808180938C0180917606883F38F03E |
:1079E000EFEFF0E0E81BF109EC57FD4F8081809349 |
:1079F000890180917706883F38F0EFEFF0E0E81BCF |
:107A0000F109EC57FD4F80818093880180917C06BD |
:107A1000883F38F0EFEFF0E0E81BF109EC57FD4F3D |
:107A200080818093860180917D06883F38F0EFEF5A |
:107A3000F0E0E81BF109EC57FD4F8081809366026E |
:107A400080917E06883F38F0EFEFF0E0E81BF10907 |
:107A5000EC57FD4F80818093650280917F06883FBF |
:107A600038F0EFEFF0E0E81BF109EC57FD4F8081B3 |
:107A70008093640280918006883F38F0EFEFF0E059 |
:107A8000E81BF109EC57FD4F8081809363028091E0 |
:107A90009806883F38F0EFEFF0E0E81BF109EC576B |
:107AA000FD4F80818093620280919906883F38F073 |
:107AB000EFEFF0E0E81BF109EC57FD4F8081809378 |
:107AC000610280919A06883F38F0EFEFF0E0E81B02 |
:107AD000F109EC57FD4F80818093600280919B06F5 |
:107AE000883F38F0EFEFF0E0E81BF109EC57FD4F6D |
:107AF000808180935F0280918106883F38F0EFEFAC |
:107B0000F0E0E81BF109EC57FD4F8081809385017F |
:107B100080918506883F38F0EFEFF0E0E81BF1092F |
:107B2000EC57FD4F80818093840180918D06883FC2 |
:107B300038F0EFEFF0E0E81BF109EC57FD4F8081E2 |
:107B40008093830180919006883F38F0EFEFF0E05A |
:107B5000E81BF109EC57FD4F8081809382018091F1 |
:107B60009106883F38F0EFEFF0E0E81BF109EC57A1 |
:107B7000FD4F80818093810180919206883F38F08B |
:107B8000EFEFF0E0E81BF109EC57FD4F80818093A7 |
:107B9000800180919706883F38F0EFEFF0E0E81B16 |
:107BA000F109EC57FD4F808180937F018091B206EF |
:107BB000883F38F0EFEFF0E0E81BF109EC57FD4F9C |
:107BC00080818093240780918601282F33272F5F9F |
:107BD0003F4F8CE398E2B9010E947B6E7093940151 |
:107BE00060939301809170068093150780916F06D2 |
:107BF0008093D8060895A4E1B0E0E1E0FEE30C94A0 |
:107C0000CB6E80915102815080935102882319F4E8 |
:107C100085E0809351020E941030309102013C3087 |
:107C200010F4299A01C02998E0907A02F0907B0222 |
:107C3000FA82E9828091D80699270A96E816F90611 |
:107C400014F49A83898380918302843608F05CC09F |
:107C500080911F0390912003009731F0019790933A |
:107C6000200380931F0307C0109279028091520273 |
:107C70008F7E809352023A3011F0343111F4289AF9 |
:107C800001C028988091530290915402895E9340DC |
:107C9000C0F180917906282F33273A832983809178 |
:107CA000520280618093520280915606A82FBB2712 |
:107CB000AA0FBB1FFD01E55EF94F11821082809172 |
:107CC0005706282F3327220F331FC901855E994F8E |
:107CD000FC0111821082A951BA4F11961C921E927A |
:107CE00029513A4FD90111961C921E928091590642 |
:107CF000E82FFF27EE0FFF1FE951FA4F1182108284 |
:107D0000E8C210927902E5C2809183028D3808F4AE |
:107D1000E0C2809152028F7E8093520290917A0647 |
:107D200082E3989FC00111249093200380931F0346 |
:107D3000E981FA81B9978CF080917902882369F002 |
:107D40008091530290915402FFEF8F3F9F0729F0DB |
:107D50000196909354028093530280915302909124 |
:107D600054028F3F910509F038F5109203031092E9 |
:107D70000403109205031092060310920703109259 |
:107D800008031092090310920A038A3F9105C9F46F |
:107D900081E08093250310920B0310920C03109244 |
:107DA0000D0310920E0310929F021092A0021092E7 |
:107DB000A1021092A20205C08091520282608093BB |
:107DC000520280915806E82FFF27EE0FFF1FE9515E |
:107DD000FA4F80819181813591050CF4A6C12091E3 |
:107DE0007902222309F0A1C180915906E82FFF27CB |
:107DF000EE0FFF1FE951FA4F808191818C3491057C |
:107E00000CF404C1809121038F5F80932103893C8E |
:107E100008F48BC13C3010F4299801C0299A1092C3 |
:107E20007902109221031092540210925302309161 |
:107E30005606E32FFF27EE0FFF1FE951FA4F80810F |
:107E4000918187349105B4F480915706E82FFF277C |
:107E5000EE0FFF1FE951FA4F808191810190F0816F |
:107E6000E02DF7FF03C0F095E195FF4FE734F105F2 |
:107E70000CF478C041E020915706A22FBB27AA0F2F |
:107E8000BB1FA951BA4F8D919C91119787349105D1 |
:107E900044F0E32FFF27EE0FFF1FE951FA4F8081D7 |
:107EA00091818D919C918734910574F08091560653 |
:107EB000E82FFF27EE0FFF1FE951FA4F80819181D4 |
:107EC000873491050CF042E0E22FFF27EE0FFF1FF1 |
:107ED000E951FA4F808191818634910574F4809143 |
:107EE0005606E82FFF27EE0FFF1FE951FA4F80815A |
:107EF0009181873491050CF043E0E22FFF27EE0FCC |
:107F0000FF1FE951FA4F808191818A5B9F4F74F482 |
:107F100080915606E82FFF27EE0FFF1FE951FA4F19 |
:107F200080819181873491050CF044E0E22FFF2796 |
:107F3000EE0FFF1FE951FA4F808191818A5B9F4FBD |
:107F400074F480915606E82FFF27EE0FFF1FE951CA |
:107F5000FA4F80819181863491050CF445E0842F9D |
:107F60000E94DA0680915706E82FFF27EE0FFF1FC9 |
:107F7000E951FA4F808191810190F081E02DF7FF66 |
:107F800003C0F095E195FF4F7E97BCF480915606B3 |
:107F9000E82FFF27EE0FFF1FE951FA4F80819181F3 |
:107FA0008A5B9F4F54F481E08093130488EE93E042 |
:107FB0009093FF018093FE01B8C00E9415074CE624 |
:107FC00066E576E00E94BD0680E00E945C070E94A4 |
:107FD000AD668091620680FF10C080911B01909178 |
:107FE0001C01875B934038F480911B0190911C0128 |
:107FF0008E5E924010F40E943E1B1092FC010E9483 |
:108000005B3981E08093FC01579A86C08081918121 |
:10801000855B9F4F0CF087C0809121038F5F809319 |
:108020002103893C08F481C03C3010F4299801C038 |
:10803000299AA4E0B0E08FEF082E0E94156F1092ED |
:1080400079021092210310925402109253020E945E |
:108050005B39A4E0B0E08091DD029091DE0297FFF1 |
:1080600002C081509F4F892F990F990B082E0E94B3 |
:10807000156FA5E0B0E08091DD029091DE02082E40 |
:108080000E94156FA6E0B0E08091DB029091DC02C7 |
:1080900097FF02C081509F4F892F990F990B082E8F |
:1080A0000E94156FA7E0B0E08091DB029091DC02A6 |
:1080B000082E0E94156F08E010E08091D502909183 |
:1080C000D602A091D702B091D802BC01CD010E9486 |
:1080D000A56DDC01CB019C0197FF02C021503F4FF1 |
:1080E000832F992787FD9A95D801082E0E94156F36 |
:1080F00009E010E08091D5029091D602A091D702BC |
:10810000B091D802BC01CD010E94A56DDC01CB016C |
:10811000D801082E0E94156F0E94150768E770E0CD |
:108120000E94EF2F02C02093210380915806E82F70 |
:10813000FF27EE0FFF1FE951FA4F808191818B5A83 |
:108140009F4F0CF0C6C020917902E091590622237E |
:1081500009F0A3C0FF27EE0FFF1FE951FA4F8081FE |
:108160009181855B9F4F0CF095C0809122038F5FBA |
:1081700080932203893C08F4ACC02093220381E061 |
:1081800090E0909354028093530281E080937902AF |
:1081900010920B0310920C0310920D0310920E0319 |
:1081A00010929F021092A0021092A1021092A202BD |
:1081B00010929B0210929C0210929D0210929E02BD |
:1081C00080917106E82EFF24002711278091110766 |
:1081D000909112079C01442737FD4095542FC80108 |
:1081E000B7010E943C6EDC01CB018093AF029093FB |
:1081F000B002A093B102B093B20280912107909196 |
:1082000022079C01442737FD4095542FC801B70130 |
:108210000E943C6EDC01CB018093A7029093A802E0 |
:10822000A093A902B093AA028091CF029091D002AC |
:10823000A091D102B091D2028093AB029093AC0294 |
:10824000A093AD02B093AE028091C7029091C80294 |
:10825000A091C902B091CA028093A3029093A40294 |
:10826000A093A502B093A6021092030310920403F8 |
:108270001092050310920603109207031092080350 |
:108280001092090310920A03809152028860809331 |
:1082900052021FC0209322031CC0FF27EE0FFF1FB6 |
:1082A000E951FA4F808191818C34910584F080915D |
:1082B00023038F5F80932303893C58F01092790247 |
:1082C00010922303109254021092530202C0109293 |
:1082D0002303809178018150809378018091780107 |
:1082E0008F3F21F08091520284FFD5C20E94F53B5E |
:1082F00080912E0390912F03AC01440F551F480F1E |
:10830000591F00915606A02FBB27AA0FBB1FFD01C6 |
:10831000E951FA4FF0906C06CF2CDD2480819181D9 |
:108320008C9D90018D9D300D9C9D300D1124420F30 |
:10833000531F57FF02C04D5F5F4F559547955595A9 |
:108340004795A55EB94F80916D06682F77278D916F |
:108350009C91869FD001879FB00D969FB00D1124F0 |
:108360004A0F5B1F50932F0340932E0380916503A8 |
:10837000909166032091610330916203820F931FF5 |
:10838000481B590B50938102409380028091300327 |
:1083900090913103AC01440F551F480F591F1091A4 |
:1083A0005706A12FBB27AA0FBB1FFD01E951FA4FAA |
:1083B000808191818C9DF0018D9DF00D9C9DF00D33 |
:1083C00011244E0F5F1F57FF02C04D5F5F4F559541 |
:1083D000479555954795A55EB94F8D919C91869F80 |
:1083E0009001879F300D969F300D1124420F531F2F |
:1083F0005093310340933003809163039091640361 |
:1084000020915F0330916003820F931F481B590B2B |
:1084100050937F0240937E0280915906E82FFF27F8 |
:10842000EE0FFF1FE951FA4F808191819095819560 |
:108430009F4F90937D0280937C028330910514F0CE |
:10844000029705C03FEF8E3F930734F40296909356 |
:108450007D0280937C0204C010927D0210927C0207 |
:1084600080915806E82FFF27EE0FFF1FE951FA4FC2 |
:10847000C080D18048E750E0C40ED51ED0927B0268 |
:10848000C0927A0280918B019927AA2797FDA09527 |
:10849000BA2FBC01CD010E94C26DDC01CB0120E0EE |
:1084A00030E040E251E4BC01CD010E94636DDC018B |
:1084B000CB01BC01CD010E94A56DDC01CB018093F5 |
:1084C0001B0780918A018093F40680918901992786 |
:1084D000AA2797FDA095BA2FBC01CD010E94C26DBD |
:1084E000DC01CB0120E030E040E251E4BC01CD01F1 |
:1084F0000E94636DDC01CB01BC01CD010E94A56D22 |
:10850000DC01CB018093CB06809188018093E20649 |
:1085100080911F0480FF61C080912407813808F496 |
:108520005CC080911804992787FD90954F2D5527A1 |
:10853000849F9001859F300D949F300D1124809170 |
:10854000800290918102820F931F90938102809309 |
:10855000800280911904992787FD9095849F90014E |
:10856000859F300D949F300D112480917E02909153 |
:108570007F02820F931F90937F0280937E028091EF |
:108580001A04282F332727FD309580917C02909183 |
:108590007D02820F931F90937D0280937C028091D5 |
:1085A0001C04282F332727FD3095809167069927D3 |
:1085B000289FB001299F700D389F700D1124709372 |
:1085C0007E0160937D0180911B0499278C159D0588 |
:1085D00024F490937B0280937A0280917A029091A6 |
:1085E0007B0297FF04C010927B0210927A02809166 |
:1085F000620682FF02C01092F40640918002509100 |
:108600008102CA0157FD03969C0135952795359542 |
:10861000279537FF03C0309521953F4F8091570232 |
:108620009091580282179307B4F4CA0157FF03C010 |
:10863000909581959F4F97FD039695958795959574 |
:10864000879590935802809357028536910544F0A0 |
:1086500084E690E001C001979093580280935702FE |
:1086600040917E0250917F02CA0157FD03969C0102 |
:10867000359527953595279537FF03C0309521957A |
:108680003F4F809155029091560282179307B4F4A0 |
:10869000CA0157FF03C0909581959F4F97FD0396A0 |
:1086A0009595879595958795909356028093550259 |
:1086B0008536910544F084E690E001C001979093DF |
:1086C0005602809355028091520284FF08C0109296 |
:1086D0005802109257021092560210925502E12F42 |
:1086E000FF27EE0FFF1FE951FA4F40918E06242F0E |
:1086F0003327808191812817390744F48091B3068C |
:1087000082FF04C081E080936A0213C0E12FFF273B |
:10871000EE0FFF1FE951FA4F842F992720918F0602 |
:10872000821B9109208131812817390714F4109296 |
:108730006A0240915706E42FFF27EE0FFF1FE95111 |
:10874000FA4F50918E06852F992722273327281B11 |
:10875000390B808191818217930744F48091B3068D |
:1087600083FF04C081E08093690216C08091690292 |
:10877000882391F0E42FFF27EE0FFF1FE951FA4FF6 |
:1087800080918F069927851B91092081318182175D |
:10879000930714F410926902E02FFF27EE0FFF1FDA |
:1087A000E951FA4F40918E06242F33278081918121 |
:1087B0002817390744F48091B30680FF04C081E094 |
:1087C0008093670217C080916702882399F0E02F99 |
:1087D000FF27EE0FFF1FE951FA4F842F99272091B1 |
:1087E0008F06821B9109208131812817390714F4E3 |
:1087F0001092670240915606E42FFF27EE0FFF1FED |
:10880000E951FA4F50918E06852F99272227332759 |
:10881000281B390B808191818217930744F4809142 |
:10882000B30681FF04C081E08093680216C0809186 |
:108830006802882391F0E42FFF27EE0FFF1FE95114 |
:10884000FA4F80918F069927851B910920813181EC |
:108850008217930714F41092680280916A028823A9 |
:1088600019F480916902811181E080936B028091FB |
:108870006702882321F480916802882351F081E007 |
:1088800080936C0210926B0210926A02109269023D |
:1088900002C080936C0280916B02882321F4809146 |
:1088A0006C02882369F080918D069927A981BA818D |
:1088B0008A179B0714F49A83898381E080938F023F |
:1088C0008091520284FF1AC010927D0210927C02A5 |
:1088D000109281021092800210927F0210927E020A |
:1088E0009AE590931B0788E78093F4069093CB0654 |
:1088F0008093E20610926B0210926C028091E50662 |
:108900009091E606A091E706B091E8062091CF028B |
:108910003091D0024091D1025091D202820F931F28 |
:10892000A41FB51F8093E5069093E606A093E70683 |
:10893000B093E8068091ED069091EE06A091EF06C7 |
:10894000B091F0062090C7023090C8024090C90252 |
:108950005090CA02820D931DA41DB51D8093ED0693 |
:108960009093EE06A093EF06B093F0068091DA069E |
:108970009091DB06A091DC06B091DD06E090CB0281 |
:10898000F090CC020091CD021091CE02EB82FC82DD |
:108990000D831E838E0D9F1DA01FB11F8093DA06CD |
:1089A0009093DB06A093DC06B093DD068091CC06A5 |
:1089B0009091CD06A091CE06B091CF06E090C30273 |
:1089C000F090C4020091C5021091C602EF82F886B1 |
:1089D00009871A878E0D9F1DA01FB11F8093CC069B |
:1089E0009093CD06A093CE06B093CF06F0906C0284 |
:1089F000FB86FF2029F480916B02882309F460C074 |
:108A00001092BF021092C0021092C1021092C202D4 |
:108A10001092BB021092BC021092BD021092BE02D4 |
:108A20001092E5061092E6061092E7061092E8060C |
:108A30001092ED061092EE061092EF061092F006DC |
:108A40001092DA061092DB061092DC061092DD0618 |
:108A50001092CC061092CD061092CE061092CF0640 |
:108A60008091AF029091B002A091B102B091B20298 |
:108A70008093AB029093AC02A093AD02B093AE0290 |
:108A80008091A7029091A802A091A902B091AA0298 |
:108A90008093A3029093A402A093A502B093A60290 |
:108AA000109212021092110210926E0210926D0238 |
:108AB0001092700210926F020B85002309F0F2C130 |
:108AC00080916B02882309F0EDC18091A9059091F6 |
:108AD000AA05815092402CF480917902882309F4F0 |
:108AE000E1C190908E07A09071066091110770917E |
:108AF00012077C8B6B8B80912107909122079A8BB8 |
:108B0000898B9FEF991609F4D9C0BB24CC24DD24AE |
:108B1000CA01B901A60195010E94B06E79018A01CE |
:108B2000EB89FC89CF01AA2797FDA095BA2FE81AF7 |
:108B3000F90A0A0B1B0BC201B101A60195010E94A3 |
:108B4000B06E59016A0129893A89C901AA2797FD9E |
:108B5000A095BA2FA81AB90ACA0ADB0A292C33240D |
:108B600027FC3094432C532CC801B701A20191017A |
:108B70000E943C6E97FF04C061507E4F8F4F9F4F05 |
:108B80003B014C0109E095948794779467940A958A |
:108B9000D1F7C601B501A20191010E943C6E97FF79 |
:108BA00004C061507E4F8F4F9F4F5B016C0119E0F5 |
:108BB000D594C794B794A7941A95D1F7809157028A |
:108BC00090915802813491053CF480915502909126 |
:108BD000560281349105D4F0D401C30197FE03C03D |
:108BE0000196A11DB11D3C014D0195948794779488 |
:108BF0006794D601C501D7FE03C00196A11DB11D22 |
:108C00005C016D01D594C794B794A79480915906DF |
:108C1000E82FFF27EE0FFF1FE951FA4F8081918166 |
:108C20000190F081E02DF7FF03C0F095E195FF4F33 |
:108C30007A97A4F0C401B30123E030E040E050E0B3 |
:108C40000E94B06E39014A01C601B50123E030E04F |
:108C500040E050E00E94B06E59016A018091900797 |
:108C6000282F332727FD3095432F532F26153705FF |
:108C70004805590514F439014A01992787FD909553 |
:108C8000909581959F4FAA2797FDA095BA2F6816BA |
:108C900079068A069B0614F43C014D012A153B0512 |
:108CA0004C055D0514F459016A01A816B906CA06F7 |
:108CB000DB060CF0CFC05C016D01CCC0EA2CFF24B8 |
:108CC00000271127CA01B901A80197010E94B06EBF |
:108CD00039014A014B895C89CA01AA2797FDA095F1 |
:108CE000BA2F681A790A8A0A9B0AC201B101A8013F |
:108CF00097010E94B06E59016A0169897A89CB0196 |
:108D0000AA2797FDA095BA2FA81AB90ACA0ADB0AA2 |
:108D1000D401C30197FE03C00F96A11DB11D3C01F4 |
:108D20004D01F4E09594879477946794FA95D1F780 |
:108D3000D601C501D7FE03C00F96A11DB11D5C0170 |
:108D40006D01E4E0D594C794B794A794EA95D1F760 |
:108D50008091570290915802813491053CF48091A2 |
:108D600055029091560281349105A4F0C401B301DB |
:108D700023E030E040E050E00E94B06E39014A014B |
:108D8000C601B50123E030E040E050E00E94B06E43 |
:108D900059016A0180915906E82FFF27EE0FFF1F46 |
:108DA000E951FA4F808191810190F081E02DF7FF28 |
:108DB00003C0F095E195FF4F7A97A4F0C401B30189 |
:108DC00023E030E040E050E00E94B06E39014A01FB |
:108DD000C601B50123E030E040E050E00E94B06EF3 |
:108DE00059016A0171E267167104810491042CF043 |
:108DF00070E2672E712C812C912C80EE68168FEF1B |
:108E000078068FEF88068FEF980644F460EE662EA2 |
:108E10006FEF762E6FEF862E6FEF962E91E2A916EA |
:108E2000B104C104D1042CF050E2A52EB12CC12C08 |
:108E3000D12CA0EEAA16AFEFBA06AFEFCA06AFEF7D |
:108E4000DA0644F440EEA42E4FEFB42E4FEFC42EBA |
:108E50004FEFD42E8091AF029091B002A091B10259 |
:108E6000B091B20286199709A809B9098093AF0297 |
:108E70009093B002A093B102B093B2028091A70286 |
:108E80009091A802A091A902B091AA028A199B0907 |
:108E9000AC09BD098093A7029093A802A093A902F0 |
:108EA000B093AA0280911102909112028F3F910516 |
:108EB00009F008F4DEC5BB85BB2309F068C58091C5 |
:108EC0006B02882309F063C580918F02882309F023 |
:108ED0005EC5E0919606EC87EE2309F458C58091B3 |
:108EE000E5069091E606A091E706B091E806B7FF87 |
:108EF00004C081509F4FAF4FBF4FE92EFA2E0B2F6A |
:108F0000112707FD1A95E092E506F092E606009318 |
:108F1000E7061093E8068091ED069091EE06A09189 |
:108F2000EF06B091F006B7FF04C081509F4FAF4FDE |
:108F3000BF4F892F9A2FAB2FBB27A7FDBA958D87DF |
:108F40009E87AF87B88B8093ED069093EE06A09333 |
:108F5000EF06B093F00680917106A82EBB24CC24B6 |
:108F6000DD242091BF023091C0024091C102509196 |
:108F7000C202C601B5010E943C6E97FF04C0615059 |
:108F80007F4F8F4F9F4F672E782E892E992487FC15 |
:108F90009A946092BF027092C0028092C102909235 |
:108FA000C2022091BB023091BC024091BD0250919F |
:108FB000BE02C601B5010E943C6E97FF04C061501D |
:108FC0007F4F8F4F9F4F272E382E492E552447FC19 |
:108FD0005A942092BB023092BC024092BD02509241 |
:108FE000BE028091B7029091B802A091B902B091EF |
:108FF000BA02B7FF04C081509F4FAF4FBF4F892FB8 |
:109000009A2FAB2FBB27A7FDBA958093B7029093F9 |
:10901000B802A093B902B093BA02D801C701861969 |
:109020009709A809B9098093170390931803A0938F |
:109030001903B0931A0320919506E22EFF2400270E |
:109040001127BC01CD01A80197010E94B06E590102 |
:109050006A012093260330932703409328035093FB |
:1090600029038D859E85AF85B88982199309A40946 |
:10907000B50980931B0390931C03A0931D03B09329 |
:109080001E03BC01CD01A80197010E94B06E209380 |
:109090002A0330932B0340932C0350932D03D601C6 |
:1090A000C501D7FE04C081509F4FAF4FBF4F892FDE |
:1090B0009A2FAB2FBB27A7FDBA9590936E02809392 |
:1090C0006D0257FF04C021503F4F4F4F5F4FBB27EA |
:1090D00057FDBA95A52F942F832F909370028093FC |
:1090E0006F02809157029091580281349105DCF40F |
:1090F000809155029091560281349105A4F480919B |
:109100005906E82FFF27EE0FFF1FE951FA4F808124 |
:1091100091810190F081E02DF7FF03C0F095E1957A |
:10912000FF4F7A97E4F080918E078F3FC1F48091D2 |
:109130006D0290916E0297FD01969595879590939B |
:109140006E0280936D0280916F029091700297FD84 |
:109150000196959587959093700280936F02809108 |
:10916000DA069091DB06A091DC06B091DD06B7FF30 |
:1091700004C081509F4FAF4FBF4F892F9A2FAB2F05 |
:10918000BB27A7FDBA958093DA069093DB06A093E0 |
:10919000DC06B093DD068091CC069091CD06A091BF |
:1091A000CE06B091CF06B7FF04C081509F4FAF4F9E |
:1091B000BF4F892F9A2FAB2FBB27A7FDBA9580935E |
:1091C000CC069093CD06A093CE06B093CF068091A7 |
:1091D000CF029091D002A091D102B091D2022B8106 |
:1091E0003C814D815E81281B390B4A0B5B0B209320 |
:1091F0000F03309310034093110350931203809197 |
:10920000C7029091C802A091C902B091CA02EF8032 |
:10921000F88409851A85E81AF90A0A0B1B0BE092F3 |
:109220001303F09214030093150310931603209375 |
:109230001703309318034093190350931A03E092D5 |
:109240001B03F0921C0300931D0310931E038091D7 |
:10925000AB029091AC02A091AD02B091AE02821B24 |
:10926000930BA40BB50B8093AB029093AC02A0932D |
:10927000AD02B093AE028091A3029091A402A0919E |
:10928000A502B091A6028E199F09A00BB10B809385 |
:10929000A3029093A402A093A502B093A602FC851A |
:1092A000FF2371F120918D0230918E02213831051A |
:1092B00094F08091E3029091E40201969093E4028D |
:1092C0008093E3028091F1069091F20601969093CB |
:1092D000F2068093F10620583F4F94F48091E30208 |
:1092E0009091E40201979093E4028093E3028091CD |
:1092F000F1069091F20601979093F2068093F106A1 |
:1093000010928E0210928D0281E090E090933303D0 |
:1093100080933203E0901703F09018030091190333 |
:1093200010911A03D801C70117FF07C08827992792 |
:10933000DC018E199F09A00BB10B81509240A04017 |
:10934000B04034F084E090E0909333038093320394 |
:109350008091380390913903A0913A03B0913B0377 |
:109360002091E5063091E6064091E7065091E80627 |
:10937000821B930BA40BB50B815E914BAF4FBF4F7C |
:109380008F539C49A040B04028F080918F078931CD |
:109390000CF4FFC041E0E41640E1F40640E00407AD |
:1093A00040E014070CF473C080913403882309F45F |
:1093B0006AC0D801C70117FF07C088279927DC01B9 |
:1093C0008E199F09A00BB10B9C01AD01B7FF04C022 |
:1093D00021503E4F4F4F5F4FF9E0559547953795D8 |
:1093E0002795FA95D1F78091320390913303820F3C |
:1093F000931F9093330380933203D801C70117FF63 |
:1094000003C00796A11DB11DE3E0B595A7959795FB |
:109410008795EA95D1F78093260390932703A0932D |
:109420002803B093290389589341A040B04064F0C9 |
:1094300088E893E1A0E0B0E08093260390932703AF |
:10944000A0932803B093290320912603309127038A |
:10945000409128035091290357FF04C021503F4FEA |
:109460004F4F5F4F232F342F452F552747FD5A95D8 |
:1094700080916D0290916E02820F931F90936E0205 |
:1094800080936D0206C081E08093340302C0109285 |
:10949000340360E0E61660EFF6066FEF06076FEF45 |
:1094A00016070CF073C080913503882309F46AC055 |
:1094B000D801C70117FF07C088279927DC018E193B |
:1094C0009F09A00BB10B9C01AD01B7FF04C0215057 |
:1094D0003E4F4F4F5F4F69E055954795379527951C |
:1094E0006A95D1F78091320390913303820F931FD5 |
:1094F0009093330380933203D801C70117FF03C051 |
:109500000796A11DB11D23E0B595A7959795879561 |
:109510002A95D1F78093260390932703A0932803DD |
:10952000B093290388579C4EAF4FBF4F64F488E730 |
:109530009CEEAFEFBFEF8093260390932703A09399 |
:109540002803B093290320912603309127034091EB |
:1095500028035091290357FF04C021503F4F4F4F1C |
:109560005F4F232F342F452F552747FD5A95809164 |
:109570006D0290916E02820F931F90936E02809302 |
:109580006D0211C081E0809335030DC01092350348 |
:109590000AC0109233031092320388EE93E0909346 |
:1095A0009E0180939D018C85282F33278091320363 |
:1095B000909133032817390724F430933303209311 |
:1095C000320310918F07112379F0212F332727FDC4 |
:1095D000309580913203909133032817390724F492 |
:1095E00030933303209332034091170350911803B3 |
:1095F0006091190370911A03413851056105710595 |
:1096000074F08091E7029091E8022091320330914A |
:109610003303820F931F9093E8028093E702405830 |
:109620005F4F6F4F7F4F74F48091E7029091E80293 |
:109630002091320330913303821B930B9093E80205 |
:109640008093E70281E090E09093330380933203AC |
:10965000C0901B03D0901C03E0901D03F0901E03EC |
:10966000D701C601F7FE07C088279927DC018C19AE |
:109670009D09AE09BF0981509240A040B04034F02E |
:1096800084E090E0909333038093320310922A0396 |
:1096900010922B0310922C0310922D0380913C0307 |
:1096A00090913D03A0913E03B0913F032091ED06C0 |
:1096B0003091EE064091EF065091F006821B930B1D |
:1096C000A40BB50B815E914BAF4FBF4F8F539C499D |
:1096D000A040B04018F019310CF4FFC001E0C016F2 |
:1096E00000E1D00600E0E00600E0F0060CF473C0F4 |
:1096F00080913603882309F46AC0D701C601F7FEBA |
:1097000007C088279927DC018C199D09AE09BF097C |
:109710009C01AD01B7FF04C021503E4F4F4F5F4F3A |
:1097200009E055954795379527950A95D1F780918A |
:10973000320390913303820F931F909333038093EE |
:109740003203D701C601F7FE03C00796A11DB11D64 |
:1097500013E0B595A795979587951A95D1F78093BE |
:109760002A0390932B03A0932C03B0932D038958C5 |
:109770009341A040B04064F088E893E1A0E0B0E0FD |
:1097800080932A0390932B03A0932C03B0932D0373 |
:1097900020912A0330912B0340912C0350912D03EB |
:1097A00057FF04C021503F4F4F4F5F4F232F342F9F |
:1097B000452F552747FD5A9580916F029091700271 |
:1097C000820F931F9093700280936F0206C081E016 |
:1097D0008093360302C01092360320E0C21620EFB9 |
:1097E000D2062FEFE2062FEFF2060CF073C0809145 |
:1097F0003703882309F46AC0D701C601F7FE07C002 |
:1098000088279927DC018C199D09AE09BF099C01A5 |
:10981000AD01B7FF04C021503E4F4F4F5F4FE9E00D |
:109820005595479537952795EA95D1F7809132035D |
:1098300090913303820F931F9093330380933203ED |
:10984000D701C601F7FE03C00796A11DB11D73E045 |
:10985000B595A795979587957A95D1F780932A0323 |
:1098600090932B03A0932C03B0932D0388579C4E09 |
:10987000AF4FBF4F64F488E79CEEAFEFBFEF80932C |
:109880002A0390932B03A0932C03B0932D032091D4 |
:109890002A0330912B0340912C0350912D0357FF45 |
:1098A00004C021503F4F4F4F5F4F232F342F452F80 |
:1098B000552747FD5A9580916F0290917002820F53 |
:1098C000931F9093700280936F0211C081E0809388 |
:1098D00037030DC0109237030AC010923303109261 |
:1098E000320388EE93E090939E0180939D014C8516 |
:1098F000242F33278091320390913303281739079F |
:1099000024F4309333032093320380918F0788230C |
:1099100079F0282F332727FD3095809132039091DD |
:1099200033032817390724F4309333032093320389 |
:1099300040911B0350911C0360911D0370911E0305 |
:10994000413851056105710574F08091E5029091EF |
:10995000E6022091320330913303820F931F9093DC |
:10996000E6028093E50240585F4F6F4F7F4FCCF483 |
:109970008091E5029091E602209132033091330309 |
:10998000821B930B9093E6028093E5020AC010922B |
:10999000700210926F0210926E0210926D0210927D |
:1099A0008F028091F406882341F410927002109285 |
:1099B0006F0210926E0210926D028091E5069091F6 |
:1099C000E606A091E706B091E806809338039093ED |
:1099D0003903A0933A03B0933B038091ED06909135 |
:1099E000EE06A091EF06B091F00680933C039093B1 |
:1099F0003D03A0933E03B0933F031092BF02109229 |
:109A0000C0021092C1021092C2021092BB021092C8 |
:109A1000BC021092BD021092BE021092B7021092C8 |
:109A2000B8021092B9021092BA021092E506109292 |
:109A3000E6061092E7061092E8061092ED061092E4 |
:109A4000EE061092EF061092F0061092DA061092CF |
:109A5000DB061092DC061092DD061092CC06109206 |
:109A6000CD061092CE061092CF06109212021092DE |
:109A70001102E0907C02F0907D02C701F7FE04C065 |
:109A8000882799278E199F0940976CF088EE93E0FC |
:109A900090939E0180939D018091620684FD03C096 |
:109AA00081E08093250310916E06A12EBB24CC2467 |
:109AB000DD24B701882777FD8095982F9701F7FE61 |
:109AC00004C0222733272E193F09442737FD40952C |
:109AD000542F0E943C6E9B01AC01C601B5010E944F |
:109AE0003C6E97FF04C061507E4F8F4F9F4F59E0EF |
:109AF00095958795779567955A95D1F79B01812F15 |
:109B000099278E9DD0018F9DB00D9E9DB00D112483 |
:109B1000CD01B7FD03969595879595958795280F67 |
:109B2000391F442737FD4095542F20930B03309362 |
:109B30000C0340930D0350930E0380919F0290916C |
:109B4000A002A091A102B091A202821B930BA40BD0 |
:109B5000B50B80939F029093A002A093A102B093B3 |
:109B6000A2028155934CA040B04064F080E593EC94 |
:109B7000A0E0B0E080939F029093A002A093A10286 |
:109B8000B093A20280919F029091A002A091A102A5 |
:109B9000B091A202805B9C43AF4FBF4F64F480EB57 |
:109BA0009CE3AFEFBFEF80939F029093A002A0933E |
:109BB000A102B093A20240909502509096024114E7 |
:109BC000510409F488C18091620683FF84C18091A9 |
:109BD000CF029091D002A091D102B091D202B7FFF2 |
:109BE00004C081509E4FAF4FBF4F09E0B595A79578 |
:109BF000979587950A95D1F76C0197FF04C0D0948B |
:109C0000C194D108D3948091C7029091C802A091C9 |
:109C1000C902B091CA02B7FF04C081509E4FAF4F36 |
:109C2000BF4F19E0B595A795979587951A95D1F7E8 |
:109C3000BC0197FF03C0709561957F4FC616D7068C |
:109C40000CF46B01B601D7FE02C0695F7F4F3B0188 |
:109C5000B3E075946794BA95E1F70894611C711CA0 |
:109C6000ACE1EA2EA2E0FA2E4E0C5F1C7201002736 |
:109C7000F7FC0095102F24EE3DEF420E531E80910D |
:109C80001D0790911E07A0911F07B091200780909B |
:109C9000790190907A01A0907B01B0907C01BC0189 |
:109CA000CD01A50194010E94B06EE21AF30A040BE3 |
:109CB000150BC801B70128E631E040E050E00E94F2 |
:109CC000B06EDC01CB018C01045B10408091160763 |
:109CD0009091170797FF03C0909581959F4F81380A |
:109CE000910514F000E010E0E0909D01F0909E01DD |
:109CF000E114F10489F539E1C316D1046CF58091C2 |
:109D00008D0290918E02800F911F90938E0280930E |
:109D10008D02809125038823F9F0C201AA2797FDBF |
:109D2000A095BA2FBC01CD01A50194010E943C6E03 |
:109D3000DC01CB0180931D0790931E07A0931F07A2 |
:109D4000B0932007BC01CD010E94B06E3093940205 |
:109D50002093930210922503C801F3E0880F991F06 |
:109D6000FA95E1F7B3010E947B6ECB01AA2797FD1C |
:109D7000A095BA2F20911D0730911E0740911F0713 |
:109D800050912007280F391F4A1F5B1F20931D0782 |
:109D900030931E0740931F075093200710918E01A8 |
:109DA000612F7727C69EC001C79E900DD69E900D4D |
:109DB000112497FD4F966C01E5E0D594C794EA9580 |
:109DC000E1F76C197D096B0177FD7FC0E114F104A7 |
:109DD00009F073C0E0905702F0905802809155024C |
:109DE00090915602E80EF91EF7FE04C067E070E09D |
:109DF000E60EF71E63E0F594E7946A95E1F780E4D8 |
:109E000090E0E80EF91ECA01B901A50194010E9473 |
:109E1000B06EDA01C9012091930230919402442777 |
:109E200037FD4095542F821B930BA40BB50B845E1A |
:109E30009D4FAF4FBF4FBC01CD0128E631E040E060 |
:109E400050E00E94B06EDC01CB01845B90408C9DA1 |
:109E5000D0018D9DB00D9C9DB00D1124CD01B70199 |
:109E60000E947B6E83E0189F60011124C616D706FE |
:109E700014F4B60108C0882799278C199D09681722 |
:109E800079070CF4BC019B01442737FD4095542F02 |
:109E900080919F029091A002A091A102B091A20294 |
:109EA000820F931FA41FB51F80939F029093A0025F |
:109EB000A093A102B093A2020EC00894E108F10899 |
:109EC000F0929E01E0929D0106C084EF91E0909394 |
:109ED0009E0180939D0180912403815080932403EF |
:109EE0008F3F09F0DCC088E18093240380917106E4 |
:109EF0009927880F991F880F991F7C010027F7FC6D |
:109F00000095102F8091CF029091D002A091D102A4 |
:109F1000B091D202BC01CD01A80197010E94B06EA0 |
:109F200030936705209366058091C7029091C8021F |
:109F3000A091C902B091CA02BC01CD01A80197014C |
:109F40000E94B06E309369052093680580911107D7 |
:109F50009091120797FD039695958795959587950E |
:109F600090936B0580936A05809121079091220759 |
:109F700097FD0396959587959595879590936D0593 |
:109F800080936C05809116079091170790936F0549 |
:109F900080936E058091750290917602A091770270 |
:109FA000B0917802BC01CD0125E030E040E050E006 |
:109FB0000E94B06E30937105209370058091A905C1 |
:109FC0009091AA059093730580937205509277053E |
:109FD0004092760580912501909126019093790514 |
:109FE0008093780580918302992790937B058093D5 |
:109FF0007A0580911D0790911E07A0911F07B091CF |
:10A0000020072091790130917A0140917B01509194 |
:10A010007C01BC01CD010E94B06E30937D05209380 |
:10A020007C05809113029091140290938B0580938C |
:10A030008A0580911304992790938D0580938C0550 |
:10A040008091FA019091FB0190938F0580938E058A |
:10A050008091930790919407909393058093920534 |
:10A060008091970790919807909395058093940518 |
:10A070008091910799279093A1058093A0058091E5 |
:10A080006503909166039093A3058093A205809148 |
:10A090006303909164039093A5058093A405809138 |
:10A0A0008F02882381F01092070310920803109208 |
:10A0B000090310920A0310920303109204031092F2 |
:10A0C000050310920603F0906C02FF20F1F48091DA |
:10A0D000F406282F3327442755278091CF029091EB |
:10A0E000D002A091D102B091D202BC01CD010E9458 |
:10A0F0003C6EDC01CB01BC01CD0128EF3AE240E02F |
:10A1000050E00E94B06E490102C088249924E0907A |
:10A110006B02EE20F1F48091F406282F33274427B8 |
:10A1200055278091C7029091C802A091C902B091B1 |
:10A13000CA02BC01CD010E943C6EDC01CB01BC0116 |
:10A14000CD0128EF3AE240E050E00E94B06E3901C4 |
:10A1500002C0662477248091C6069091C706893C88 |
:10A1600091051CF088EC90E005C088539F4F34F4B3 |
:10A1700088E39FEF9093C7068093C6068091D1062F |
:10A180009091D206893C91051CF088EC90E005C0C6 |
:10A1900088539F4F34F488E39FEF9093D2068093C7 |
:10A1A000D1068091D3069091D406AA2797FDA09559 |
:10A1B000BA2F20911B07A22EBB24CC24DD24BC0186 |
:10A1C000CD01A60195010E943C6E9B01AC018091DE |
:10A1D000C6069091C706AA2797FDA095BA2F17E04B |
:10A1E000880F991FAA1FBB1F1A95D1F7280F391F77 |
:10A1F0004A1F5B1F57FF04C0215C3F4F4F4F5F4F0B |
:10A20000A6E05595479537952795AA95D1F78401EE |
:10A21000020F131F1093D4060093D3068091C40637 |
:10A220009091C506AA2797FDA095BA2FBC01CD0134 |
:10A23000A60195010E943C6E9B01AC018091D10664 |
:10A240009091D206AA2797FDA095BA2FF7E0880F24 |
:10A25000991FAA1FBB1FFA95D1F7280F391F4A1F54 |
:10A260005B1F57FF04C0215C3F4F4F4F5F4FE6E03D |
:10A270005595479537952795EA95D1F72301420ED5 |
:10A28000531E5092C5064092C406809116079091C5 |
:10A290001707880F991FAA2797FDA095BA2F20911D |
:10A2A000CB06332744275527BC01CD010E943C6EC5 |
:10A2B0005B016C0197FF08C02FE330E040E050E005 |
:10A2C000A20EB31EC41ED51E76E0D594C794B794D3 |
:10A2D000A7947A95D1F78091E206282F3327442757 |
:10A2E00055278091B3029091B402A091B502B0912C |
:10A2F000B602BC01CD010E943C6EDC01CB01BC0169 |
:10A30000CD0120EF35E540E050E00E94B06EB50190 |
:10A31000620F731F70931707609316070150104464 |
:10A3200034F080E090E49093D4068093D30680913B |
:10A33000D3069091D4068050904C34F480E090EC99 |
:10A340009093D4068093D30651E0451650E4550609 |
:10A3500034F080E090E49093C5068093C406809129 |
:10A36000C4069091C5068050904C34F480E090EC87 |
:10A370009093C5068093C4066150704434F080E029 |
:10A3800090E4909317078093160780911607909199 |
:10A3900017078050904C34F480E090EC90931707AE |
:10A3A0008093160780910001482F55278091250141 |
:10A3B000909126014817590794F420912501309176 |
:10A3C000260109811A81049FC001059F900D149FE9 |
:10A3D000900D1124B9010E94676E7A8369832981E7 |
:10A3E0003A81220F331F220F331F3A832983409172 |
:10A3F000620640FF7AC5EE2009F077C5FF2009F01C |
:10A4000074C5809144039091450390939105809386 |
:10A410009005809113029091140290938B05809384 |
:10A420008A052091E9023091EA022115310509F0EF |
:10A430003FC080911B0190911C018959934058F0B5 |
:10A4400087B5853F20F480911502815011C081E0CD |
:10A4500080934D034EC080911B0190911C01843666 |
:10A46000910508F587B58B30D0F0809115028F5F8C |
:10A47000809315029AE08902900111248091B3051E |
:10A48000821B87BD8CE291E09093FF018093FE01D7 |
:10A490008EE591E09093EA028093E9022AC081E080 |
:10A4A00080934C0326C0F0924C03F0924D0321C0E0 |
:10A4B0008091750290917602A0917702B091780216 |
:10A4C00054E0880F991FAA1FBB1F5A95D1F780939C |
:10A4D000160290931702A0931802B09319021092DB |
:10A4E000140210921302215030403093EA0220935C |
:10A4F000E9022091910141FF24C02233D8F48091D8 |
:10A50000BE0181508093BE018F3FD9F51092900219 |
:10A510008091750290917602A0917702B0917802B5 |
:10A520008093710290937202A0937302B0937402AD |
:10A5300081E004C081E08093900288EC8093BE01AA |
:10A5400020C080917D0190917E01820F911D20910C |
:10A5500067063327829FA001839F500D929F500D65 |
:10A560001124CA01AA2797FDA095BA2F80937102E2 |
:10A5700090937202A0937302B093740281E080936F |
:10A5800090028091CF029091D002A091D102B0911F |
:10A59000D202E0907901F0907A0100917B01109154 |
:10A5A0007C01BC01CD01A80197010E94B06E590148 |
:10A5B0006A018091C7029091C802A091C902B0912E |
:10A5C000CA02BC01CD01A80197010E94B06EB90179 |
:10A5D000C5010E941E6D7C01CC971CF04CE3E42E5B |
:10A5E000F12CC7010E9402627C01809190028823B5 |
:10A5F00009F407C38091520299279C0120713070A1 |
:10A6000084FDFFC26091B50660FD04C080916206C2 |
:10A6100081FD07C0C980DA80309341032093400355 |
:10A6200056C18091520281FF2EC14091BA015091D2 |
:10A63000BB01CA010F9620917A0230917B028217EA |
:10A64000930784F580914C03882361F580914E0334 |
:10A6500081FF13C08D7F80934E038091750290918E |
:10A660007602A0917702B091780280937102909364 |
:10A670007202A0937302B093740280914E038160C2 |
:10A6800080934E03241B350B2F50304037FF03C0FF |
:10A69000309521953F4F8091400390914103820F67 |
:10A6A000931F34C0CA010F9728173907A4F580916A |
:10A6B0004D03882381F580914E0380FF13C08E7F68 |
:10A6C00080934E038091750290917602A09177025B |
:10A6D000B09178028093710290937202A0937302FA |
:10A6E000B093740280914E03826080934E03241BCA |
:10A6F000350B215F3F4F37FF03C0309521953F4F0A |
:10A700008091400390914103821B930B90934103EE |
:10A710008093400327C020914E03822F9927837096 |
:10A720009070892BF9F02C7F20934E0310924103F7 |
:10A73000109240038091750290917602A091770269 |
:10A74000B09178028093710290937202A093730289 |
:10A75000B093740261FF06C084EF91E09093FF0113 |
:10A760008093FE012091400330914103C90137FFDE |
:10A7700004C088279927821B930B815092400CF4C8 |
:10A780006BC0809167069927289FD001299FB00D43 |
:10A79000389FB00D1124CD0160E075E00E947B6E02 |
:10A7A0009B01442737FD4095542F80917102909171 |
:10A7B0007202A0917302B0917402820F931FA41FC2 |
:10A7C000B51F8093710290937202A0937302B093AD |
:10A7D000740210924103109240038091B50681FFEC |
:10A7E00006C08BE490E09093FF018093FE0180917E |
:10A7F0006B06882389F5409144035091450357FF28 |
:10A8000002C04D5F5F4F559547955595479580918F |
:10A81000250190912601209100013327489FF001E6 |
:10A82000499FF00D589FF00D1124CF01B9010E94EE |
:10A830007B6E7093BB016093BA01663471051CF4A2 |
:10A8400086E490E005C06739710534F086E990E050 |
:10A850009093BB018093BA018091E9029091EA0242 |
:10A86000892B89F18091750290917602A0917702EF |
:10A87000B09178028093710290937202A093730258 |
:10A88000B093740220C08091750290917602A091DD |
:10A890007702B091780280599140A040B0408093F7 |
:10A8A000710290937202A0937302B093740280912C |
:10A8B0006B06882311F0992702C088E790E09093F7 |
:10A8C000BB018093BA01C0904403D090450320910E |
:10A8D0007502309176024091770250917802809112 |
:10A8E000710290917202A0917302B091740282176A |
:10A8F0009307A407B50724F08091B50680FDC3C176 |
:10A90000009175021091760280917102909172020D |
:10A91000081B190B809190019927089F9001099FAE |
:10A92000300D189F300D1124C90137FD0F9624E01A |
:10A93000959587952A95E1F7C81AD90A20911302AF |
:10A940003091140237FF02C0295F3F4FB3E03595C5 |
:10A950002795BA95E1F72930310514F028E030E069 |
:10A96000229FA001239F500D329F500D11241216DB |
:10A97000130674F4CA0157FD03969595879595952E |
:10A9800087952091130230911402280F391F0DC0B2 |
:10A99000CA0157FD039695958795959587952091C2 |
:10A9A000130230911402281B390B809192019927D0 |
:10A9B000AA27BB27442737FD4095542FBC01CD0162 |
:10A9C0000E943C6E97FF04C061587F4F8F4F9F4F8E |
:10A9D000E7E09595879577956795EA95D1F79B017F |
:10A9E0004FEF623874071CF421E83FEF05C06F3F5A |
:10A9F000710514F02FEF30E0C21AD30A20909702AD |
:10AA0000309098024090990250909A0257FE08C0E8 |
:10AA10006FE770E080E090E0260E371E481E591E5A |
:10AA200057E055944794379427945A95D1F78091DD |
:10AA30008F01282F332744275527C201B1010E94D7 |
:10AA40003C6E97FF04C0615E7F4F8F4F9F4F45E084 |
:10AA500095958795779567954A95D1F79B017FEFF7 |
:10AA6000223837071CF421E83FEF05C02F3F31059E |
:10AA700014F02FEF30E0C21AD30A0B561F4F0B52BF |
:10AA80001140E0F48091400390914103892BB1F48F |
:10AA90008091440390914503181619067CF4809127 |
:10AAA0004603909147038C159D053CF48091BC01B1 |
:10AAB0009091BD01C816D9060CF06C018091E90295 |
:10AAC0009091EA02892B21F0C0904403D090450375 |
:10AAD00080918D019927AA27BB27209192073327C0 |
:10AAE00027FD3095432F532FBC01CD010E943C6EB2 |
:10AAF00097FF04C061587F4F8F4F9F4F37E0959568 |
:10AB00008795779567953A95D1F79B019FEF223806 |
:10AB100039071CF421E83FEF05C02F3F310514F041 |
:10AB20002FEF30E0C21AD30AC601AA2797FDA095DD |
:10AB3000BA2F2DE0880F991FAA1FBB1F2A95D1F7A6 |
:10AB40009701442737FD4095542FBC01CD010E9449 |
:10AB5000B06E209313033093140340931503509366 |
:10AB60001603C0901303D090140380914203909178 |
:10AB700043039C01220F331F280F391F2C0D3D1D4D |
:10AB800037FF02C02D5F3F4FA90155954795559559 |
:10AB90004795509343034093420380916306282FC7 |
:10ABA0003327220F331F220F331F241735076CF46E |
:10ABB00080911507282F3327220F331F220F331FB1 |
:10ABC000205530404217530724F03093430320931D |
:10ABD00042038091B50680FF0DC0809142039091A1 |
:10ABE0004303A981BA81A817B90724F4B09343039A |
:10ABF000A0934203E0914203F0914303FA83E98377 |
:10AC000042C080916B06882301F5609144037091E6 |
:10AC1000450377FF02C06D5F7F4F7595679575950A |
:10AC20006795409125015091260180910001282FC0 |
:10AC30003327649FC001659F900D749F900D112470 |
:10AC4000B9010E947B6ECB0101C099279093BB0193 |
:10AC50008093BA018091BA019091BB01863491052D |
:10AC60001CF486E490E005C08739910534F086E94C |
:10AC700090E09093BB018093BA0109811A811093EF |
:10AC80004303009342038091520281FF2EC18091C1 |
:10AC9000520284FD2AC18091480390914903A091FA |
:10ACA0004A03B0914B030097A105B105B1F4298186 |
:10ACB0003A81C901AA2797FDA095BA2FECE0880F29 |
:10ACC000991FAA1FBB1FEA95D1F780934803909361 |
:10ACD0004903A0934A03B0934B03809113029091D0 |
:10ACE0001402809113029091140297FF03C0909573 |
:10ACF00081959F4F843691050CF0F7C049815A81A8 |
:10AD0000CA01AA2797FDA095BA2F9701442737FDBE |
:10AD10004095542FBC01CD010E943C6EDC01CB015B |
:10AD20008093130390931403A0931503B093160319 |
:10AD3000B7FF04C08150904EAF4FBF4F7C018D01D3 |
:10AD40007DE015950795F794E7947A95D1F7E09211 |
:10AD50001303F092140300931503109316038091CC |
:10AD600053029091540257E0803D9507F8F480918A |
:10AD7000480390914903A0914A03B0914B039C0171 |
:10AD8000AD0169E056954795379527956A95D1F7B6 |
:10AD9000821B930BA40BB50BA801970113E0220FA4 |
:10ADA000331F441F551F1A95D1F722C06FE0803A18 |
:10ADB000960758F58091480390914903A0914A0362 |
:10ADC000B0914B039C01AD01FAE05695479537953C |
:10ADD0002795FA95D1F7821B930BA40BB50BA8010D |
:10ADE0009701E2E0220F331F441F551FEA95D1F768 |
:10ADF000820F931FA41FB51F8093480390934903AC |
:10AE0000A0934A03B0934B033CC020914803309178 |
:10AE1000490340914A0350914B0380549F41C0F431 |
:10AE2000DA01C9017BE0B695A795979587957A9544 |
:10AE3000D1F7281B390B4A0B5B0BD801C7018E0DCC |
:10AE40009F1DA01FB11F280F391F4A1F5B1F11C074 |
:10AE5000DA01C9016CE0B695A795979587956A9533 |
:10AE6000D1F7281B390B4A0B5B0B2E0D3F1D401FE2 |
:10AE7000511F209348033093490340934A03509352 |
:10AE80004B038091480390914903A0914A03B091EC |
:10AE90004B035CE0B695A795979587955A95D1F7A2 |
:10AEA000909345038093440340916906442399F0AD |
:10AEB00055279C01BA010E947B6EC901861B970B26 |
:10AEC0009093470380934603260F371F3093BD01AD |
:10AED0002093BC010AC010924703109246038FEFE3 |
:10AEE00093E09093BD018093BC013090D806232D50 |
:10AEF0003327C901880F991F880F991F8896A98148 |
:10AF0000BA818A179B0714F09A83898340901507AA |
:10AF1000842D9927880F991F880F991F805590407D |
:10AF2000E981FA818E179F0714F49A8389838091AF |
:10AF300047028823A1F08091530290915402029716 |
:10AF4000C09768F4E980FA801E141F0444F481E07D |
:10AF500090E090935402809353023A8329830981AD |
:10AF60001A81109375050093740580910B039091DD |
:10AF70000C03A0910D03B0910E0312E0880F991FEE |
:10AF8000AA1FBB1F1A95D1F700911607109117073A |
:10AF9000081B190B29813A81213A31058CF0C9012E |
:10AFA00037FD019695958795801791070CF48C01D4 |
:10AFB000909581959F4F081719076CF48C010BC071 |
:10AFC0000135110514F000E510E03FEF003B1307D9 |
:10AFD00014F400EB1FEF242D3327220F331F220F11 |
:10AFE000331FC90149815A81841B950B8017910732 |
:10AFF0000CF48C0169817A81621B730B06171707A9 |
:10B000000CF48B018091D3069091D406609180025C |
:10B0100070918102861B970B9093E4068093E30660 |
:10B02000D090F4062091030330910403409105036E |
:10B0300050910603DD2041F0861A970AC401AA2721 |
:10B0400097FDA095BA2F04C0AA2797FDA095BA2F07 |
:10B05000280F391F4A1F5B1F2093030330930403FB |
:10B0600040930503509306038091030390910403DA |
:10B07000A0910503B091060381509A4FA040B040C3 |
:10B0800064F080E09AEFA0E0B0E080930303909337 |
:10B090000403A0930503B0930603809103039091EA |
:10B0A0000403A0910503B091060380509640AF4F72 |
:10B0B000BF4F64F480E096E0AFEFBFEF80930303EF |
:10B0C00090930403A0930503B0930603809093012B |
:10B0D000909094019401442737FD4095542F80911E |
:10B0E000030390910403A0910503B0910603BC01F2 |
:10B0F000CD010E94B06EE090E306F090E406E20E0F |
:10B10000F31EB0907F016B2D772788279927980130 |
:10B1100017FF04C022273327201B310B37FF02C043 |
:10B120002F5F3F4F3595279549815A81240F351F51 |
:10B13000442737FD4095542F0E943C6E97FF04C072 |
:10B14000615C7F4F8F4F9F4F56E095958795779520 |
:10B1500067955A95D1F79B016E157F050CF47B011D |
:10B16000309521953F4FE216F3060CF4790180915A |
:10B17000C4069091C50660917E0270917F02861B85 |
:10B18000970B9093C3068093C206209107033091DA |
:10B1900008034091090350910A03DD2041F0661A2B |
:10B1A000770AC301AA2797FDA095BA2F04C0AA2742 |
:10B1B00097FDA095BA2F280F391F4A1F5B1F2093B8 |
:10B1C0000703309308034093090350930A038091C7 |
:10B1D000070390910803A0910903B0910A038150DD |
:10B1E0009A4FA040B04064F080E09AEFA0E0B0E059 |
:10B1F0008093070390930803A0930903B0930A0375 |
:10B200008091070390910803A0910903B0910A036C |
:10B2100080509640AF4FBF4F64F480E096E0AFEFB0 |
:10B22000BFEF8093070390930803A0930903B093A3 |
:10B230000A039401442737FD4095542F809107035A |
:10B2400090910803A0910903B0910A03BC01CD01BC |
:10B250000E94B06EC090C206D090C306C20ED31E2C |
:10B260006B2D772788279927980117FF04C022277D |
:10B270003327201B310B37FF02C02F5F3F4F35951F |
:10B280002795A981BA812A0F3B1F442737FD409596 |
:10B29000542F0E943C6E97FF04C0615C7F4F8F4F1C |
:10B2A0009F4F26E095958795779567952A95D1F7D5 |
:10B2B0009B016C157D050CF46B01309521953F4F7A |
:10B2C000C216D3060CF4690186EB682E85E0782E51 |
:10B2D000B4E9AB2EB3E0BB2EABE05A2EF5EF8F2EC8 |
:10B2E000F6E09F2EF501258512160CF0ABC04981C2 |
:10B2F0005A81CA01AA2797FDA095BA2F332727FDA7 |
:10B300003095432F532FBC01CD010E943C6E97FF17 |
:10B3100004C0615C7F4F8F4F9F4FE6E09595879506 |
:10B3200077956795EA95D1F77C8B6B8BC701AA2738 |
:10B3300097FDA095BA2FF5012685332727FD309577 |
:10B34000432F532FBC01CD010E943C6E97FF04C0D8 |
:10B35000615C7F4F8F4F9F4F56E09595879577950E |
:10B3600067955A95D1F72B893C89260F371F3C8B5F |
:10B370002B8BC601AA2797FDA095BA2FF50127852B |
:10B38000332727FD3095432F532FBC01CD010E9459 |
:10B390003C6E97FF04C0615C7F4F8F4F9F4F46E02C |
:10B3A00095958795779567954A95D1F72B893C892F |
:10B3B000260F371F3C8B2B8BC801AA2797FDA09522 |
:10B3C000BA2FF5012089332727FD3095432F532FBE |
:10B3D000BC01CD010E943C6EDC01CB01B7FF03C074 |
:10B3E000CF96A11DB11D36E0B595A7959795879588 |
:10B3F0003A95D1F7F401608171812B893C89820FE4 |
:10B40000931F0E94DD2FD4018D939C9397FD03968B |
:10B4100095958795959587959C8B8B8B832D9927F3 |
:10B42000EB89FC89E817F9073CF0842D99272B89D3 |
:10B430003C898217930714F49C8B8B8BEB89D30187 |
:10B44000EC9302C0D3011C925A94E2E0F0E08E0E1D |
:10B450009F1E24E030E0A20EB31E620E731E57FE44 |
:10B4600041CFE2E1CC5E0C94E76E80915B0390915A |
:10B470005C03A0915D03B0915E03809353039093AE |
:10B480005403A0935503B0935603809157039091B2 |
:10B490005803A0915903B0915A0380934F0390939E |
:10B4A0005003A0935103B093520308951092660382 |
:10B4B000109265031092640310926303089584B19F |
:10B4C000806A84B93D9A82E58CBD1DBC459A81E0B5 |
:10B4D000809327078AEA8093370783E880933807A9 |
:10B4E0008AE08093390710923B0710923A07109236 |
:10B4F0003D0710923C07109291071092590708954A |
:10B50000EF92FF920F931F93809171069927880FF6 |
:10B51000991F880F991F7C010027F7FC0095102FB9 |
:10B520008091CF029091D002A091D102B091D2022D |
:10B53000BC01CD01A80197010E94B06E30933B077A |
:10B5400020933A078091C7029091C802A091C90246 |
:10B55000B091CA02BC01CD01A80197010E94B06E52 |
:10B5600030933D0720933C0720911D0730911E0723 |
:10B5700040911F0750912007DA01C901E3E0880FCD |
:10B58000991FAA1FBB1FEA95D1F7820F931FA41F13 |
:10B59000B51F820F931FA41FB51F20917901309111 |
:10B5A0007A0140917B0150917C01BC01CD010E9448 |
:10B5B000B06E3093430720934207E091D902F09197 |
:10B5C000DA028091EA069091EB06BF010E947B6E41 |
:10B5D000CB019B01220F331F220F331F280F391F6E |
:10B5E000280F391F37FF02C02D5F3F4F3595279534 |
:10B5F0003595279530933F0720933E078091190793 |
:10B6000090911A07BF010E947B6E9B01220F331F8E |
:10B61000220F331F260F371F260F371F37FF02C099 |
:10B620002D5F3F4F359527953595279530934107E9 |
:10B63000209340071092DA021092D9021092EB0682 |
:10B640001092EA0610921A07109219078091390792 |
:10B6500099278D30910509F463C08E3091055CF413 |
:10B660008B30910509F48BC08C3091050CF00CC126 |
:10B670000A9761F08BC18F30910509F45FC18F305B |
:10B6800091050CF44BC1409781F180C18091660215 |
:10B6900080934A078091650280934B0780916402F2 |
:10B6A00080934C078091630280934D0780916202E2 |
:10B6B00080934E078091610280934F0780916002D2 |
:10B6C0008093500780915F028093510780915202CE |
:10B6D0008093520780915202837F80935202A2E0AE |
:10B6E000B0E00E94086F802D4FC180919307909128 |
:10B6F000940790934B0780934A0780919707909106 |
:10B70000980790934D0780934C0780912501909165 |
:10B71000260180934E078091000180934F0736C128 |
:10B720008091A20680934A078091A30680934B07DD |
:10B730008091A40680934C078091A50680934D07C5 |
:10B740008091A60680934E078091AA0680934F07AA |
:10B750008091AB06809350078091AC06809351078F |
:10B760008091AF06809352078091AD068093530776 |
:10B770008091AE06809354078091B006CCC0F894B7 |
:10B7800080915806E82FFF27EE0FFF1FE951FA4F6F |
:10B790000190F081E02DE038F1051CF0EFE7F0E0DA |
:10B7A00006C02FEFE138F20714F4E1E8FFEFE09371 |
:10B7B0004A0780915906E82FFF27EE0FFF1FE95136 |
:10B7C000FA4F0190F081E02DE038F1051CF0EFE731 |
:10B7D000F0E006C06FEFE138F60714F4E1E8FFEFA0 |
:10B7E000E0934B0780915706E82FFF27EE0FFF1FCE |
:10B7F000E951FA4F0190F081E02DE038F1051CF09D |
:10B80000EFE7F0E006C08FEFE138F80714F4E1E865 |
:10B81000FFEFE0934C0780915606E82FFF27EE0FCD |
:10B82000FF1FE951FA4F0190F081E02DE038F1055A |
:10B830001CF0EFE7F0E006C02FEFE138F20714F458 |
:10B84000E1E8FFEF7894E0934D07809184028093C4 |
:10B850004E078091850280934F07809186028093E6 |
:10B8600050078091870280935107809188028093CE |
:10B870005207809189028093530780918A028093B6 |
:10B88000540780918B0247C080911304863018F0D2 |
:10B890001092130485E080934A078091B10680934B |
:10B8A0004B07809170059091710590934D0780939F |
:10B8B0004C078091710290917202A0917302B09135 |
:10B8C0007402BC01CD0125E030E040E050E00E9470 |
:10B8D000B06E30934F0720934E078091A706809358 |
:10B8E00050078091A806809351078091A906809304 |
:10B8F0005207809183028093530780918202809344 |
:10B900005407809174059091750597FD0396959560 |
:10B910008795959587958093550738C010924A076B |
:10B920008EE480934B0781E080934C078CE08093FA |
:10B930004D078091020180934E0728C080918906AF |
:10B9400080934A078091B40680934B0780918501CC |
:10B9500080934C078091820680934D0780918306E7 |
:10B9600080934E078091840680934F0780918401D5 |
:10B9700080935007809186068093510780918706B7 |
:10B9800080935207809188068093530780915907CE |
:10B99000882309F4B0C040915B0750915C07CA014D |
:10B9A00081509E4F8F5F9340C8F420915D07309186 |
:10B9B0005E07C90181509E4F8F5F934078F480915C |
:10B9C000620685FF0BC05093660340936503309376 |
:10B9D0006403209363038AEF809368038091610777 |
:10B9E0009091620721E08936920724F490939602A1 |
:10B9F00080939502809195029091960220919302F6 |
:10BA000030919402821B930B845E9D4F68E671E037 |
:10BA10000E947B6E845B904090939202809391028F |
:10BA200020916507309166078091FE019091FF019A |
:10BA30008217930740F480911304882321F43093F4 |
:10BA4000FF012093FE0180915A07992788369105BE |
:10BA500001F18936910524F48736910529F053C008 |
:10BA60008936910559F14FC08091670780938E0701 |
:10BA700080916807809390078091690780938F0772 |
:10BA800080916A078093910780916B07809392075A |
:10BA90003AC080916707809331078091680780934F |
:10BAA0003207809169078093330780916A078093FA |
:10BAB000340780916B078093350725C08091670715 |
:10BAC00080932807809168078093290780916907F0 |
:10BAD00080932A0780916B0790916C0790932C07B5 |
:10BAE00080932B0780916D0790916E0790932E079E |
:10BAF00080932D0708C01092660310926503109280 |
:10BB00006403109263031F910F91FF90EF900895CB |
:10BB100080912707882309F43BC0459887E397E085 |
:10BB20009093300780932F0790916703E92FFF27A9 |
:10BB3000E154FE4F9F5F90936703808180933907A4 |
:10BB4000993010F010926703109227070E94805AD4 |
:10BB500081E0809336070000000000000000000034 |
:10BB600000000000000000000000000000000000D5 |
:10BB700000000000000000000000000000000000C5 |
:10BB800000000000000080913707809356078EBDAB |
:10BB9000089530912707332309F085C00DB407FEBF |
:10BBA00082C084E08093FD01459A2EB5809169039F |
:10BBB00099278130910589F0823091051CF4892BF9 |
:10BBC00021F03EC00297B9F03BC030935807209354 |
:10BBD0006A032138A9F581E008C0253549F4809130 |
:10BBE0006A03820F80936A0382E08093690328C00E |
:10BBF0003093690325C080915807E82FFF27EC5840 |
:10BC0000F84F20838F5F8093580790916A038A31A1 |
:10BC1000A0F0291769F48AE1A4E7B7E0EAE5F7E0C4 |
:10BC20000D9001928A95E1F781E08093590702C057 |
:10BC3000309359071092690303C0920F90936A03DF |
:10BC400020913607203208F028C0459800000000F7 |
:10BC500000000000000000000000000000000000E4 |
:10BC600000000000000000000000000000000000D4 |
:10BC7000000000000000000000000000E0912F071D |
:10BC8000F0913007E20FF11D80818EBD8091560743 |
:10BC90009081890F8093560703C081E08093270726 |
:10BCA0002F5F20933607089587B18C6087B942983B |
:10BCB000439810926C0380E88093C90110926B0343 |
:10BCC0008093C8010895809171038150809371031E |
:10BCD0008F3F09F0F4C094E0909371038091520279 |
:10BCE000807BE1F08091A006882349F08091740365 |
:10BCF000882311F490936C0381E080937403809106 |
:10BD0000A1068823B9F080917503882319F484E093 |
:10BD100080936B0381E0809375030CC08093740360 |
:10BD20008093750380919C068093720380919E0698 |
:10BD30008093730380917403882309F040C080913D |
:10BD4000B306282F332724FF07C080917902882368 |
:10BD500019F425FD4DC04EC090919D06983F50F0BE |
:10BD60008091EC068D3D30F08091720388230CF4B5 |
:10BD70003FC040C0983F48F08091EC068A3028F4DC |
:10BD8000809172038823B4F133C080916C03815099 |
:10BD900080936C038F3F79F58091EC0681508093FE |
:10BDA0006C038091C901813011F480E801C086954F |
:10BDB0008093C9018091C9019091720317C080914D |
:10BDC0006C03815080936C038F3FA9F489E08093CA |
:10BDD0006C038091C901813011F480E801C086951F |
:10BDE0008093C9018091C9019091A006892311F027 |
:10BDF000429A01C0429880917503882309F043C09C |
:10BE00008091B306282F332724FF07C08091790241 |
:10BE1000882319F426FD50C034C090919F06983FA6 |
:10BE200050F080911407873E30F08091730388238F |
:10BE30000CF442C026C0983F48F0809114078A3025 |
:10BE400028F4809173038823E4F036C080916B035B |
:10BE5000815080936B038F3F91F58091140781503F |
:10BE600080936B038091C801813011F480E801C098 |
:10BE700086958093C8018091C801909173038923AE |
:10BE8000D9F44398089580916B03815080936B039C |
:10BE90008F3FA9F489E080936B038091C8018130C2 |
:10BEA00011F480E801C086958093C8018091C80193 |
:10BEB0009091A106892311F0439A0895439808951B |
:10BEC0004FB724E130E0F8948091C9008F778093D8 |
:10BED000C9008091C9008F7B8093C9008091C900FF |
:10BEE0008F7D8093C9005A9A52985B9A539A832FF8 |
:10BEF00099278093CD002093CC008091C800826068 |
:10BF00008093C80080E18093C9008091CA008F7738 |
:10BF10008093CA008091CA008F7B8093CA00809171 |
:10BF2000CA008F7D8093CA008091CA008F7E809363 |
:10BF3000CA008091CA00877F8093CA008091C9009F |
:10BF40008B7F8093C9008091CA0084608093CA006F |
:10BF50008091CA0082608093CA008091C80087FFE8 |
:10BF600003C08091CE00F9CF8091C9008068809392 |
:10BF7000C9004FBF0895FF920F931F93CF93DF9394 |
:10BF800080E197E20E94F016EC01FF248091C90045 |
:10BF90008F778093C9008091C9008F7E8093C900FC |
:10BFA0005A9881ED99E09F938F9307E213E11F93D5 |
:10BFB0000F93E0919203F091930309950F900F90E6 |
:10BFC0000F900F9002C04A996CC0CE010E94F916E2 |
:10BFD0008823C9F3E0919203F0919303FF2009F4C1 |
:10BFE00068C087E09AE09F938F931F930F93099502 |
:10BFF000529A0F900F900F900F90CE010E94F91659 |
:10C000008823D9F383E690E05A9A019797FFFCCFF3 |
:10C010008FE891E05A98019797FFFCCF89E090E074 |
:10C020005A9A019797FFFCCF89E090E05A980197C0 |
:10C0300097FFFCCF8FE891E05A9A019797FFFCCFCA |
:10C040008FE891E05A98019797FFFCCF89E090E044 |
:10C050005A9A019797FFFCCF89E090E05A98019790 |
:10C0600097FFFCCF8FE891E05A9A019797FFFCCF9A |
:10C070008FE891E05A98019797FFFCCF89E090E014 |
:10C080005A9A019797FFFCCF89E090E05A98019760 |
:10C0900097FFFCCF8FE891E05A9A019797FFFCCF6A |
:10C0A00013C08AE590E00E94F016EC0191E0F92EB1 |
:10C0B00091CF8DE09AE09F938F931F930F930995F3 |
:10C0C0000F900F900F900F9052985A980E94605FB7 |
:10C0D000E5E0CDB7DEB70C94F46EEF92FF920F93CC |
:10C0E0001F93CF93DF93482F00E010E08091CA01A7 |
:10C0F000813061F41092CA0184E480937603109237 |
:10C10000780310927703109279032BC18091760304 |
:10C11000882319F421E030E001C098019091770361 |
:10C12000992371F4232B11F081E010C084E48093F3 |
:10C130007603909378039093770390937903FAC0F2 |
:10C14000913069F4232B09F0EBC082E080937703F0 |
:10C15000809178038F5F8093780383E0E9C0923009 |
:10C16000D1F4232B09F0DCC083E080937603409365 |
:10C17000790390917803923039F410927A0347FF53 |
:10C1800003C081E080937A0383E0809377039F5F0D |
:10C1900090937803CFC0933009F0C2C0232B09F0ED |
:10C1A000BFC09093760382E08093770380917803F9 |
:10C1B0008F5F8093780320917903822F9927782FBE |
:10C1C0006627842F9927682B792B80917B068130F5 |
:10C1D00049F47370CB018050924063E070E00E949C |
:10C1E0007B6E17C0823061F47770CB018050944031 |
:10C1F00066E070E00E947B6E2695269526950BC022 |
:10C20000737068567140CB0177FD0196BC0175953E |
:10C21000679526952695022F11270F7010700F5FD6 |
:10C220001F4F0D30110508F074C07801E00EF11EAB |
:10C23000F701E951FA4F808191819B01281B390B4D |
:10C24000C90137FF03C0909581959F4F069794F4DD |
:10C2500080918302883C30F480918302865F8093D2 |
:10C26000830208C088EC8093830280916F008F7DE9 |
:10C2700080936F00F701E951FA4F808191819C0111 |
:10C28000220F331F280F391F260F371F37FF02C019 |
:10C290002D5F3F4FE901D595C795D595C795CB0142 |
:10C2A00001968C179D0714F4219706C061507040C9 |
:10C2B000C617D7070CF4219680918302843BD0F0F7 |
:10C2C000F701E951FA4F80819181FE01E81BF90BDA |
:10C2D000CF0163E070E00E947B6ECB01880F991F55 |
:10C2E000860F971F2BE136E0E20EF31EF7019183D4 |
:10C2F000808307C02BE136E0E20EF31EF7011182C6 |
:10C300001082000F111F09511A4FF801D183C08309 |
:10C3100011C00231110570F081E08093CA010AC09A |
:10C3200081E08093CA011092780310927A0384E42A |
:10C330008093760380917803803198F080917A031E |
:10C34000882331F48091CA01882311F48093780105 |
:10C350001092780310927A031092770384E480930A |
:10C360007603E6E0CDB7DEB70C94F36ECF93FC0115 |
:10C3700097FF05C0CFEFF095E195FF4F01C0C1E0F9 |
:10C3800028E631E0CF01B9010E947B6EFC018B35BC |
:10C39000910554F08B5590408A35910538F484EB23 |
:10C3A00090E08E1B9F0BFC0141E00DC0CF01855B2F |
:10C3B00090408A35910518F4E45BF04003C02E1BD1 |
:10C3C0003F0BF9014FEFEE0FFF1FE85EF54F259190 |
:10C3D00034918C2F992787FD9095289FB001299F34 |
:10C3E000700D389F700D1124842F992787FD90952B |
:10C3F000689FA001699F500D789F500D1124CA01BC |
:10C40000CF9108952AE530E0281B390BC9010E941D |
:10C41000B6610895CF93DF9380E00E946E658091AE |
:10C420002501909126016AE070E00E947B6E9F9347 |
:10C430008F9380912501909126016AE070E00E941F |
:10C440007B6E7F936F9386EE9AE09F938F93C1E606 |
:10C45000D5E6DF93CF93E0919203F0919303099592 |
:10C460002DB73EB7285F3F4F2DBF809168038823CB |
:10C4700039F187E00E946E658FED90E09F938F9376 |
:10C4800080912D0790912E079F938F9380912B077A |
:10C4900090912C076AE070E00E94676E7F936F9323 |
:10C4A0008FEE9AE09F938F93DF93CF93E091920367 |
:10C4B000F091930309958DB79EB70A968DBF12C070 |
:10C4C00087E00E946E658CEF9AE09F938F93DF93D5 |
:10C4D000CF93E0919203F091930309950F900F9001 |
:10C4E0000F900F9080E10E946E658091D001909135 |
:10C4F000D1016CE370E00E94676E9F938F938091EF |
:10C50000D0019091D1016CE370E00E94676E7F933F |
:10C510006F9380919707909198079F938F9383E0F3 |
:10C520009BE09F938F93DF93CF93E0919203F091E1 |
:10C5300093030995809162062DB73EB7265F3F4F62 |
:10C540002DBF80FF24C08BE10E946E658091750233 |
:10C5500090917602A0917702B0917802BC01CD0152 |
:10C5600024E630E040E050E00E94B06E3F932F930D |
:10C5700081E19BE09F938F93DF93CF93E0919203B0 |
:10C58000F091930309958DB79EB706968DBFDF9105 |
:10C59000CF910895CF93DF9380E00E946E6586E18E |
:10C5A0009BE09F938F93C1E6D5E6DF93CF93E09115 |
:10C5B0009203F0919303099580E10E946E650F90BC |
:10C5C0000F900F900F9080911D0790911E07A091E2 |
:10C5D0001F07B09120072091790130917A01409195 |
:10C5E0007B0150917C01BC01CD010E94B06E3F9354 |
:10C5F0002F938091C7029091C802A091C902B09177 |
:10C60000CA02B7FF04C081509C4FAF4FBF4F3AE002 |
:10C61000B595A795979587953A95D1F79F938F9361 |
:10C620008091CF029091D002A091D102B091D2021C |
:10C63000B7FF04C081509C4FAF4FBF4F2AE0B59564 |
:10C64000A795979587952A95D1F79F938F9385E224 |
:10C650009BE09F938F93DF93CF93E0919203F091B0 |
:10C66000930309958DB79EB70A968DBFDF91CF9141 |
:10C6700008950F931F9380E00E946E652AE030E0DA |
:10C680008091930790919407B9010E94676E9F93E0 |
:10C690008F938091930790919407B9010E94676EE0 |
:10C6A0007F936F938091250190912601B9010E949B |
:10C6B0007B6E9F938F938091250190912601B90104 |
:10C6C0000E947B6E7F936F9381E39BE09F938F9398 |
:10C6D00001E615E61F930F93E0919203F091930307 |
:10C6E000099580E10E946E658DB79EB70C968DBF4F |
:10C6F00080919707909198079F938F9380919507CA |
:10C70000909196079F938F9384E49BE09F938F93E0 |
:10C710001F930F93E0919203F091930309958DB7C6 |
:10C720009EB708968DBF1F910F9108950F931F9389 |
:10C73000CF93DF9380916803C1E6D5E6882309F49F |
:10C7400090C080E00E946E658091290799279F9391 |
:10C750008F9380E59BE09F938F938E01DF93CF9320 |
:10C76000E0919203F091930309958DB79EB70696D9 |
:10C770008DBF80912A0799278230910579F0833007 |
:10C7800091051CF4892B21F019C0039789F016C07C |
:10C7900087E00E946E6589E59BE005C087E00E9406 |
:10C7A0006E658FE59BE09F938F93DF93CF930FC0D0 |
:10C7B00087E00E946E6585E69BE0F5CF87E00E94EA |
:10C7C0006E658BE69BE09F938F931F930F93E09191 |
:10C7D0009203F091930309950F900F900F900F9093 |
:10C7E0008091280781FF14C089E00E946E6581E76F |
:10C7F0009BE09F938F9381E695E69F938F93E091C3 |
:10C800009203F091930309950F900F900F900F9062 |
:10C8100080E10E946E658FED90E09F938F938091F1 |
:10C820002D0790912E079F938F9380912B079091C6 |
:10C830002C076AE070E00E94676E7F936F9387E732 |
:10C840009BE09F938F9381E695E69F938F93E09172 |
:10C850009203F091930309958DB79EB70A968DBF09 |
:10C8600012C082E00E946E6589E89BE09F938F93DF |
:10C87000DF93CF93E0919203F091930309950F908A |
:10C880000F900F900F90DF91CF911F910F9108950E |
:10C89000CF93C82F20917B0320937C0399278F325D |
:10C8A0009105E1F0803391051CF44F9779F027C092 |
:10C8B0008F349105D9F08F38910509F586E0289FCE |
:10C8C000F0011124E253F54F849117C086E0289FB0 |
:10C8D000F0011124E153F54F84910FC086E0289FA9 |
:10C8E000F0011124E053F54F849107C086E0289FA2 |
:10C8F000F0011124EF52F54F849180937B039091C6 |
:10C900007B0380917C039813C0E00E947465909132 |
:10C910007B0386E0989FF0011124EE52F54F25919C |
:10C9200034918C2FF9010995CF91089510929407B5 |
:10C9300010929307109298071092970710929607FB |
:10C94000109295078AE090E00E94F01690937E0383 |
:10C9500080937D030895CF93DF9380917D03909121 |
:10C960007E030E94F916882309F4A8C080917D03F4 |
:10C9700090917E030A9690937E0380937D03E0E07E |
:10C98000F0E09F0190E0A6EBB5E04BE0ED0189817E |
:10C9900087FF07C09F5F8A81E80FF11D8C91280FE8 |
:10C9A000311D4150149647FFF1CF232B41F52091C3 |
:10C9B0008303309184034091850350918603BB2704 |
:10C9C000A52F942F832F9093820380938103AA270E |
:10C9D000BB27281B390B4A0B5B0BCF01AA27BB27B0 |
:10C9E000280F391F4A1F5B1F209383033093840352 |
:10C9F0004093850350938603E5E0F0E013C0209157 |
:10CA00008103309182032E173F0718F4E21BF30BCA |
:10CA100002C0E0E0F0E0892F9927880F991FE80F06 |
:10CA2000F91F3596F0939407E0939307EF3FF105D4 |
:10CA300078F480912501909126018E9F90018F9F1F |
:10CA4000300D9E9F300D1124C90164E670E013C0C3 |
:10CA5000CF019695879596958795209125013091E0 |
:10CA60002601289FA001299F500D389F500D1124A9 |
:10CA7000CA0169E170E00E94676E70939607609347 |
:10CA8000950720917F03309180032E0F3F1F309335 |
:10CA9000800320937F035EE02131350778F0809199 |
:10CAA000970790919807019690939807809397071E |
:10CAB00020513E403093800320937F03DF91CF913C |
:10CAC000089590918803933240F4E92FFF27E756A9 |
:10CAD000F84F80839F5F909388030895833218F402 |
:10CAE0008D5F80938803089590E2ECE9F7E08FE191 |
:10CAF0009193815087FFFCCF0895CF93CFB723E068 |
:10CB000031E0F8948091C9008F778093C9008091BB |
:10CB1000C9008F7B8093C9008091C9008F7D80936D |
:10CB2000C9005A9A52985B9A539A832F99278093F7 |
:10CB3000CD002093CC008091C80082608093C80013 |
:10CB400088E18093C9008091CA008F778093CA00E2 |
:10CB50008091CA008F7B8093CA008091CA00806256 |
:10CB60008093CA008091CA0080618093CA0080913E |
:10CB7000CA0088608093CA008091C9008460809355 |
:10CB8000C9008091CA0084608093CA008091CA0065 |
:10CB900082608093CA008091C80087FF03C08091A3 |
:10CBA000CE00F9CF8091C90080688093C900809140 |
:10CBB000C90080648093C9000E947465CFBFCF9183 |
:10CBC0000895282F99278F709070892B31F4209524 |
:10CBD00080918703822B8093870308958091CB01F6 |
:10CBE000882309F43FC08091520285FF0AC082E980 |
:10CBF0008093990783E280939A0785E580939B074A |
:10CC000002C01092990780918703882321F48091B4 |
:10CC10009907882339F18091CC018F3021F48091DC |
:10CC200087030E9448641092CB018091C80085FF61 |
:10CC3000FCCF8091C9008F7E8093C9008091C9008C |
:10CC40008E7F8093C90080919907882311F48EEF1D |
:10CC500001C08EE78093CE00809187038093CC0142 |
:10CC60001092870308951F920F920FB60F9211240E |
:10CC70008F939F93EF93FF939091CB019923E1F5CD |
:10CC800080918903882341F480919907882399F43E |
:10CC900083E0809389030FC0833099F480919907D2 |
:10CCA000882349F0909399078091C9008E7F8093E3 |
:10CCB000C9008EEF1EC08091C90081608093C900B9 |
:10CCC0000EC0833261F48091C9008E7F8093C900C9 |
:10CCD0008FEF8093CE0081E08093CB0114C08091D0 |
:10CCE0008903E82FFF27E756F84F8F5F809389036A |
:10CCF00080818093CE0007C0109289038091C90083 |
:10CD000080618093C900FF91EF919F918F910F9067 |
:10CD10000FBE0F901F9018959FB7F8948091C9008F |
:10CD2000877F8093C9008091C9008F7E8093C9005E |
:10CD30008091C9008F778093C9008091C9008F7B53 |
:10CD40008093C9008091C9008F7D8093C90052985B |
:10CD50005A9A53985B9A9FBF0895CF93DF9380911F |
:10CD60008A03882309F49FC090917B068091CF01AC |
:10CD7000981709F498C08091CE01823071F48091A7 |
:10CD8000C800803241F48091CA00863021F481E0ED |
:10CD90008093CE0102C01092CE0182E89CE09F9366 |
:10CDA0008F93C7E2D3E1DF93CF93E0919203F091A9 |
:10CDB000930309950F900F900F900F9080917B0631 |
:10CDC00099278230910501F1833091052CF4009769 |
:10CDD00061F0019769F024C084309105D9F0843066 |
:10CDE0009105ACF00597C9F01BC082E79CE002C03A |
:10CDF00080E69CE09F938F93DF93CF93E091920323 |
:10CE0000F0919303099519C087E49CE0F3CF84E285 |
:10CE10009CE0F0CF86E19CE0EDCF8EE09CE0EACF95 |
:10CE20008FE89CE09F938F93DF93CF93E0919203E1 |
:10CE3000F0919303099510927B060F900F900F903D |
:10CE40000F908091CE018823A9F00E948C6690916A |
:10CE50007B06892F8150833018F40E94605F1FC0C9 |
:10CE6000943019F40E947D651AC09530C1F40E9477 |
:10CE7000526815C080917B06882389F085EA9CE082 |
:10CE80009F938F9387E293E19F938F93E091920317 |
:10CE9000F091930309950F900F900F900F90809150 |
:10CEA0007B068093CF01DF91CF9108950F931F935D |
:10CEB00081E080938A034091CD01EEEBFBE020E01E |
:10CEC00030E05FE4849199272F5F3F4F829FB0014C |
:10CED000839F700D929F700D1124462751503196FB |
:10CEE00057FFF0CF4093CD01E6E9FBE020E030E0D2 |
:10CEF00057E2849199272F5F3F4F829FB001839F14 |
:10CF0000700D929F700D112446275150319657FF96 |
:10CF1000F0CF4093CD01433459F088E190E029E20D |
:10CF20000FB6F894A895809360000FBE2093600020 |
:10CF300080E59AE6909393038093920380EC9CE0C3 |
:10CF40009F938F9307E213E11F930F93E091920356 |
:10CF5000F091930309950F900F900F900F9082E638 |
:10CF600090E09F938F938EE490E09F938F931F9216 |
:10CF70001F92809102016AE00E945B6E892F9927BF |
:10CF80009F938F93809102010E945B6E99279F93DC |
:10CF90008F9386EE9CE09F938F931F930F93E09166 |
:10CFA0009203F091930309958EEB9BE09F938F93EF |
:10CFB0001F930F93E0919203F0919303099586E9F3 |
:10CFC0009BE09F938F931F930F93E0919203F091B7 |
:10CFD000930309958DB79EB746968DBF8AE19DE074 |
:10CFE0009F938F931F930F93E0919203F09193037C |
:10CFF000099582EC8093810080916F00806280931C |
:10D000006F000F900F900F900F901F910F91089548 |
:10D0100080918A03882361F080917B06843011F42B |
:10D020000E94EE658091CD01833411F010928A0345 |
:10D0300008951F920F920FB60F9211242F933F93D2 |
:10D040004F935F936F937F938F939F93AF93BF9310 |
:10D05000EF93FF932091CE0090917B06892F815012 |
:10D06000833020F4822F0E946D600BC0943021F435 |
:10D07000822F0E94E16505C0953019F4822F0E942D |
:10D08000BE69FF91EF91BF91AF919F918F917F9179 |
:10D090006F915F914F913F912F910F900FBE0F9025 |
:10D0A0001F9018954FB720E430E0F8948091C900A4 |
:10D0B0008F778093C9008091C9008F7B8093C900CE |
:10D0C0008091C9008F7D8093C9005A9A52985B9ACB |
:10D0D000539A832F99278093CD002093CC00809181 |
:10D0E000C80082608093C80088E18093C900809165 |
:10D0F000CA008F778093CA008091CA008F7B80938B |
:10D10000CA008091CA008F7D8093CA008091CA00B6 |
:10D110008F7E8093CA008091CA00877F8093CA0067 |
:10D120008091C9008B7F8093C9008091CA00846080 |
:10D130008093CA008091CA0082608093CA00809167 |
:10D14000C80087FF03C08091CE00F9CF8091C9004D |
:10D1500080688093C9004FBF08950F931F93CF93AA |
:10D16000DF93482F4F5F893108F089C08091E60531 |
:10D17000841710F44093E605CB0183539B4268E18A |
:10D1800070E00E947B6EA42FBB27FD01EA0FFB1FFE |
:10D19000E951FA4F808191819B01281B390BC9010C |
:10D1A00037FF03C0909581959F4F069794F4809127 |
:10D1B0008302883C30F480918302865F80938302EF |
:10D1C00008C088EC8093830280916F008F7D8093EC |
:10D1D0006F00FD01EA0FFB1FE951FA4F8081918139 |
:10D1E0009C01220F331F280F391F260F371F37FFCF |
:10D1F00002C02D5F3F4FE901D595C795D595C795DD |
:10D20000CB0101968C179D0714F4219706C061503D |
:10D210007040C617D7070CF4219680918302843B97 |
:10D22000D8F08D010A0F1B1FF801E951FA4F8081D8 |
:10D230009181FE01E81BF90BCF0163E070E00E94D1 |
:10D240007B6ECB01880F991F860F971F055E194FC4 |
:10D25000F8019183808307C0AA0FBB1FA55EB94F59 |
:10D2600011961C921E92E42FFF27EE0FFF1FE9512B |
:10D27000FA4FD183C083443011F410927801DF91CA |
:10D28000CF911F910F910895CF93DF932091BC0709 |
:10D29000822F9927807F9070409709F06CC02F31C2 |
:10D2A00009F046C08091BD0780938B032091BF0792 |
:10D2B00020938D038091C00780938C03822F992740 |
:10D2C0009093E8058093E705222309F054C08091EC |
:10D2D0005606282F3327220F331FF901E55EF94F39 |
:10D2E0001182108280915706A82FBB27AA0FBB1F5F |
:10D2F000FD01E55EF94F1182108280915906E82FF9 |
:10D30000FF27EE0FFF1FCF01855E994FEC011982B9 |
:10D31000188229513A4FE90119821882A951BA4F4E |
:10D3200011961C921E92E951FA4F1182108223C06D |
:10D33000C22FCF70CA30F8F48091BD078093C30725 |
:10D340008091BE078093C2078091BF078093C50775 |
:10D350008091C0078093C4076091C2077091C30792 |
:10D360008C2F0E94AD686091C4077091C5078C2F07 |
:10D370008F5F0E94AD68DF91CF910895CF93C82F42 |
:10D380008F3F49F480918E038F3F29F410929003D0 |
:10D3900010928F0332C020919003222339F4CF31B1 |
:10D3A00011F485E001C084E08093910380919103A2 |
:10D3B00090918F038217A0F4892F809580938F031B |
:10D3C0008F3F19F48EEF80938F0380918F03C817DE |
:10D3D00011F40E9444691092900310928F030BC0C5 |
:10D3E000E22FFF27E454F84FC0832F5F2093900370 |
:10D3F0009C0F90938F03C0938E03CF910895EF926B |
:10D40000FF920F931F93CF93DF937C018B01EA016F |
:10D41000452B39F0F80181918F01F701099521978A |
:10D42000C9F7E6E0CDB7DEB70C94F36EEF92FF924A |
:10D430000F931F93CF93DF937C018B01EA01452B60 |
:10D4400041F0F8010F5F1F4F8491F7010995219773 |
:10D45000C1F7E6E0CDB7DEB70C94F36E0F931F93E0 |
:10D46000CF938C01C62F161634F480E2F80109958B |
:10D47000C1501C16D4F3CF911F910F9108950F93B3 |
:10D480001F93CF938C01C62F161634F480E3F80156 |
:10D490000995C1501C16D4F3CF911F910F91089597 |
:10D4A000A2E3B0E0E6E5FAE60C94CB6E29962EAC4A |
:10D4B0003FAC29971DA61EA61FA618AAFBE46F2E37 |
:10D4C000712C6C0E7D1E2B96AEACBFAC2B97809151 |
:10D4D0008A03882329F485B7816085BF82E085BFF0 |
:10D4E000B50105C0053239F00894A11CB11CF50145 |
:10D4F00004910023B9F7A501461B570B19F0C10190 |
:10D500000E94166A002309F43FC20894A11CB11CB2 |
:10D51000552459AA5CA61FEF59A6F5010894A11C31 |
:10D52000B11C0491053721F0802F80628837F1F417 |
:10D5300050FE0EC0F30124E030E0620E731E8081C5 |
:10D540009181A281B3818DA79EA7AFA7B8AB0EC072 |
:10D55000F301A2E0B0E06A0E7B1E808191819C0104 |
:10D56000442755272DA73EA74FA758AB003221F4DB |
:10D5700089A5882391F61DC0033211F438E083C0D9 |
:10D580000A3211F00D3299F40A3261F4F30142E0EB |
:10D5900050E0640E751EE081ECA7EE230CF0BDCFC9 |
:10D5A000E195ECA750E1552A8FED5822B6CF0B320A |
:10D5B00011F409A7B2CF0E32C1F5F5010894A11CF0 |
:10D5C000B11C04910A3279F4F301A2E0B0E06A0ED2 |
:10D5D0007B1E40815181BFEF4F3F5B0714F44FEF3B |
:10D5E0005FEF142F9ACF40E050E0802F80538A30B5 |
:10D5F000A0F4CA01E3E0880F991FEA95E1F7840FD0 |
:10D60000951F480F591F400F511D40535040F501C1 |
:10D610000894A11CB11C0491E8CFEFEF4F3F5E07C7 |
:10D6200014F44FEF5FEF142F7DCF003329F454FC37 |
:10D6300074CFF0E25F2A71CF802F81538930D8F404 |
:10D6400040E050E0CA0173E0880F991F7A95E1F736 |
:10D65000840F951F480F591F400F511D40535040D4 |
:10D66000F5010894A11CB11C0491802F80538A30CD |
:10D6700048F34CA757CF083619F424E0522A4DCF6F |
:10D680000C3619F431E0532A48CF033661F44E01C9 |
:10D690000894811C911CF30142E050E0640E751E59 |
:10D6A000808189831CC1043421F0043611F00936CD |
:10D6B000B1F5043411F451E0552A50FE0AC0F301CB |
:10D6C00084E090E0680E791E20813181428153818F |
:10D6D0000CC0F30142E050E0640E751E8081918120 |
:10D6E0009C01442737FD4095542F2DA73EA74FA7F7 |
:10D6F00058AB8DA59EA5AFA5B8A9B7FF0DC0B09535 |
:10D70000A095909581959F4FAF4FBF4F8DA79EA736 |
:10D71000AFA7B8AB8DE289A76AE0462E7BC00F3475 |
:10D7200011F00F3639F40F3411F491E0592A58E012 |
:10D73000452E6FC00037A1F4F301A2E0B0E06A0EFD |
:10D740007B1E808191819C01442755272DA73EA7F0 |
:10D750004FA758AB40E1442E30E4532A08E759C0A4 |
:10D760000337C1F5F30142E050E0640E751E80807E |
:10D7700091808114910489F44E010894811C911CBC |
:10D7800088E289838EE6F401818385E78B838CE6CA |
:10D790008C838D8389E28E831F8217FD13C0812FB6 |
:10D7A000992787FD9095AC0160E070E0C4010E946C |
:10D7B000556D009729F0D82ED8181D150CF091C082 |
:10D7C000D12E8FC0F40101900020E9F73197DE2EB1 |
:10D7D000D81887C0053511F0053739F4053511F42F |
:10D7E000F1E05F2A3AE0432E14C0083519F00837FB |
:10D7F00009F06DC020E1422E53FE0BC02DA53EA5C1 |
:10D800004FA558A9211531054105510511F030E406 |
:10D81000532A19A619AB17FD02C04FED542299E205 |
:10D82000892E912C8C0E9D1E8DA59EA5AFA5B8A905 |
:10D830000097A105B10521F499A9992309F440C0E5 |
:10D84000C42CDD24EE24FF241AAA2DA53EA54FA545 |
:10D8500058A92C153D054E055F0510F031E03AAB97 |
:10D860006DA57EA58FA598A9A70196010E948E6E31 |
:10D87000DC01CB01182F8A3010F4105D04C0195A56 |
:10D88000083509F41F7DD4011E934D016DA57EA5B9 |
:10D890008FA598A9A70196010E948E6E2DA73EA77D |
:10D8A0004FA758ABBAA9BB2379F6E8E04E1641F46E |
:10D8B00053FE06C0103321F080E3D4018E934D0156 |
:10D8C000CE010196D82ED818B8E2DB0E0BC000238B |
:10D8D00009F45AC04E010894811C911C098381E00F |
:10D8E000D82E19A61D2DC9A8CD18C7FCCC2489A5F2 |
:10D8F000882311F01F5F02C056FC1E5F1C0DE52C33 |
:10D90000FF24C70180739070892B31F48CA5811B93 |
:10D91000682FC1010E942E6A89A5882331F041E059 |
:10D9200050E0BE01675D7F4F0AC0E6FE0BC080E39A |
:10D930008AA70BA742E050E0BE01665D7F4FC101A0 |
:10D940000E94FF69C70180739070809731F48CA5A5 |
:10D95000811B682FC1010E943F6A6C2DC1010E948A |
:10D960003F6A8D2D992787FD9095AC01B401C101C7 |
:10D970000E94FF69E4FEB4CDECA5E11BECA76E2F7D |
:10D98000C1010E942E6AACCDE2E1CE5C0C94E76E40 |
:10D99000002422273327442751E0BB27EE27FF2707 |
:10D9A000A0E1660F771F881F991F001C221F331FDD |
:10D9B000441F660F771F881F991F001C221F331FEB |
:10D9C000441F2AF4050E2B1F3E1F4F1F04C0051ACB |
:10D9D0002B0B3E0B4F0B550FBB1FEE1F587F556097 |
:10D9E00047FD5250AA95E9F6E695B7955795E69505 |
:10D9F000B7955795852F9B2F08952227332741E010 |
:10DA0000552768E0880F991F221F331F880F991F21 |
:10DA1000221F331F1AF4240F351F02C0241B350B9D |
:10DA2000440F551F487F456037FD42506A9551F7B6 |
:10DA30005695479556954795842F0895AA2797FFA1 |
:10DA400004C0809590958A1F9A1F77FF04C0609547 |
:10DA500070956A1F7A1F669F9001779FA001679F4C |
:10DA6000300D411D5A1F300D411D5A1F889FF00176 |
:10DA7000999F2E0F3F1F401D511D899F300D411D45 |
:10DA80005A1F300D411D5A1FCA01B901112480CF00 |
:10DA9000FB01DC0140FF05C002C005900D9205901E |
:10DAA0000D9242505040C8F70895FC01415050403B |
:10DAB00030F001900616D1F73197CF0108958827ED |
:10DAC000992708955058192EA6D001D08CC0BA17A6 |
:10DAD0006207730784079507B1F188F40EF4109478 |
:10DAE0000B2EBA2FA02D062E622F202D072E732F5E |
:10DAF000302D082E842F402D092E952F502DFF27D5 |
:10DB00005523B9F0591B49F0573E98F04695379583 |
:10DB10002795A795F0405395C9F776F0BA0F621F85 |
:10DB2000731F841F30F4879577956795B795F040FC |
:10DB3000939517FA0F2E0895BF1BBB27BA0B620BE4 |
:10DB4000730B840BF6CFDEF692C097FB70D09F3735 |
:10DB500038F0FEE9F91B982F872F762F6B2F05C021 |
:10DB600083C09695879577956795F150D0F73EF4E9 |
:10DB700090958095709561957F4F8F4F9F4F089539 |
:10DB8000E89403C097FB0EF4F3DFB62F672F782FCE |
:10DB9000892F9EE9002427C00ED05EF004C00BD070 |
:10DBA00026F001C008D019F020F48FEF089580E02E |
:10DBB000089581E0089597FB092E052600F86894E2 |
:10DBC0002DD0E89407FC07C06217730784079507F8 |
:10DBD00021F008F400940794989408959A95BB0F47 |
:10DBE000661F771F881F11249923A1F08823B2F79D |
:10DBF0009F3F59F0BB0F48F421F4002011F460FF5F |
:10DC000004C06F5F7F4F8F4F9F4F881F97958795F9 |
:10DC100097F9089529C0052E092607FA440F551FC4 |
:10DC20005F3F79F0AA27A51708F051E04795880FC4 |
:10DC3000991F9F3F31F0BB27B91708F091E08795F6 |
:10DC400008959F919F91112414C097FB880F991FED |
:10DC50009F3F31F0BB27B91708F091E087950895F1 |
:10DC60009F919F91112405C06627772788279927C0 |
:10DC700008959FEF80EC0895629FD001739FF0019B |
:10DC8000829FE00DF11D649FE00DF11D929FF00D4C |
:10DC9000839FF00D749FF00D659FF00D9927729F83 |
:10DCA000B00DE11DF91F639FB00DE11DF91FBD010E |
:10DCB000CF0111240895991B79E004C0991F96178C |
:10DCC00008F0961B881F7A95C9F780950895AA1BBE |
:10DCD000BB1B51E107C0AA1FBB1FA617B70710F057 |
:10DCE000A61BB70B881F991F5A95A9F78095909589 |
:10DCF000BC01CD01089597FB092E07260AD077FDB8 |
:10DD000004D0E5DF06D000201AF4709561957F4FAE |
:10DD10000895F6F7909581959F4F0895A1E21A2EE8 |
:10DD2000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FBF |
:10DD3000A217B307E407F50720F0A21BB30BE40B0F |
:10DD4000F50B661F771F881F991F1A9469F7609556 |
:10DD50007095809590959B01AC01BD01CF01089510 |
:10DD600097FB092E05260ED057FD04D0D7DF0AD029 |
:10DD7000001C38F450954095309521953F4F4F4FFA |
:10DD80005F4F0895F6F790958095709561957F4F58 |
:10DD90008F4F9F4F08952F923F924F925F926F92B5 |
:10DDA0007F928F929F92AF92BF92CF92DF92EF922B |
:10DDB000FF920F931F93CF93DF93CDB7DEB7CA1BAC |
:10DDC000DB0B0FB6F894DEBF0FBECDBF09942A88D7 |
:10DDD000398848885F846E847D848C849B84AA847F |
:10DDE000B984C884DF80EE80FD800C811B81AA810C |
:10DDF000B981CE0FD11D0FB6F894DEBF0FBECDBFD7 |
:10DE0000ED010895EE0FFF1F0590F491E02D0994A8 |
:10DE1000F999FECFB2BDA1BDF89A119600B408954C |
:10DE2000F7DF01921A94E1F70895F999FECFB2BD98 |
:10DE3000A1BD00BC11960FB6F894FA9AF99A0FBEDC |
:0CDE400008950190F2DF1A94E1F70895B4 |
:10DE4C005E010A0151756164726F00000164FF018B |
:10DE5C00FFFF01FC01FC0101737373FF03007D00E4 |
:10DE6C0000C409C40964001048616C6C6F205765CC |
:10DE7C006C740000000000000000000000000000B6 |
:10DE8C000000000000000000000000000000000086 |
:10DE9C000000000000000000000000000000000076 |
:10DEAC000000000000000000000000000000000066 |
:10DEBC000000000000000000010B050000ECFF64F6 |
:10DECC0040415A4664640A02969696960840403A37 |
:10DEDC0010FB30380190D0030090D00300F40164A3 |
:10DEEC000053706F727400004E6F726D616C0000A5 |
:10DEFC00426567696E6E657200007800FF03640B03 |
:10DF0C000A0D0B0C0E0B0F10010101010F7002FF1B |
:00000001FF |
/tags/V0.78b/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.78b/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.78b/Settings.h |
---|
--- V0.78b/Spektrum.c (nonexistent) |
+++ V0.78b/Spektrum.c (revision 1543) |
@@ -0,0 +1,407 @@ |
+/*####################################################################################### |
+Decodieren eines RC Summen Signals oder Spektrum Empfänger-Satellit |
+#######################################################################################*/ |
+ |
+#include "Spektrum.h" |
+#include "main.h" |
+//#define RECEIVER_SPEKTRUM_EXP |
+ |
+unsigned char SpektrumTimer = 0; |
+ |
+#ifdef RECEIVER_SPEKTRUM_EXP |
+unsigned char sexcnt; // Counter for Spektrum-Expander |
+unsigned char sexparity; // Parity Bit for Spektrum-Expander |
+signed char sexdata[7]; // Data for Spektrum-Expander |
+#endif |
+//--------------------------------------------------------------// |
+//--------------------------------------------------------------// |
+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); |
+ |
+ SpektrumUartInit(); // init Uart again |
+} |
+ |
+//############################################################################ |
+// USART1 initialisation from killagreg |
+void SpektrumUartInit(void) |
+//############################################################################ |
+ { |
+ // -- Start of USART1 initialisation for Spekturm seriell-mode |
+ // USART1 Control and Status Register A, B, C and baud rate register |
+ uint8_t sreg = SREG; |
+ |
+ uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * 115200) - 1); |
+ |
+ // disable all interrupts before reconfiguration |
+ cli(); |
+ // 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); |
+ |
+ // set TXD1 (PD3) as an output pin |
+ PORTD |= (1 << PORTD3); |
+ DDRD |= (1 << DDD3); |
+ |
+ // 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 |
+ // restore global interrupt flags |
+ |
+ SREG = sreg; |
+ 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 |
+ |
+ |
+//############################################################################ |
+// Wird im UART-Interrupt aufgerufen |
+//############################################################################ |
+void SpektrumParser(unsigned char c) |
+{ |
+ static unsigned char Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0; |
+ unsigned int Channel, index = 0; |
+ signed int signal = 0, tmp; |
+ int bCheckDelay; |
+// 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 ++; |
+ Channel = ((unsigned int)ByteHigh << 8) | c; |
+ if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM) |
+ { |
+ signal = Channel & 0x3ff; |
+ signal -= 0x200; // Offset, range 0x000..0x3ff? |
+ signal = signal/3; // scaling to fit PPM resolution |
+ index = (ByteHigh >> 2) & 0x0f; |
+ } |
+ else |
+ if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_HI_RES) |
+ { |
+ signal = Channel & 0x7ff; |
+ signal -= 0x400; // Offset, range 0x000..0x7ff? |
+ signal = signal/6; // scaling to fit PPM resolution |
+ index = (ByteHigh >> 3) & 0x0f; |
+ } |
+ else |
+ //if(EE_Parameter.Receiver == RECEIVER_SPEKTRUM_LOW_RES) |
+ { |
+ signal = Channel & 0x3ff; |
+ signal -= 360; // Offset, range 0x000..0x3ff? |
+ signal = signal/2; // scaling to fit PPM resolution |
+ index = (ByteHigh >> 2) & 0x0f; |
+ } |
+ |
+ index++; |
+ if(index < 13) |
+ { |
+ // Stabiles Signal |
+#ifdef RECEIVER_SPEKTRUM_EXP |
+ if (index == 2) index = 4; // Analog channel reassigment (2 <-> 4) for logical numbering (1,2,3,4) |
+ else if (index == 4) index = 2; |
+#endif |
+ 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++; |
+ |
+#ifdef RECEIVER_SPEKTRUM_EXP |
+ if(index == 6) // FLIGHT-MODE - The channel used for our data uplink |
+ { |
+ if (signal > 100) // SYNC received |
+ { |
+ sexcnt = 0; // Reset bitcounter |
+ sexparity = 0; // Reset parity bit |
+ } |
+ |
+ if (signal < 10) |
+ { |
+ sexcnt++; // Increase counter only for non-sync bits |
+ sexdata[sexcnt] = -113; // Bit = 0 -> value = -113 (min) |
+ } |
+ |
+ if (sexcnt == 7) sexcnt = 0; // Overflow protection |
+ |
+ if (signal < -100) |
+ { |
+ sexdata[sexcnt] = 114; // Bit = 1 -> value = 114 (max) |
+ if (sexcnt < 6) sexparity = ~sexparity; // Bit = 1 -> Invert parity bit (without itself) |
+ } |
+ |
+ if (sexcnt == 6) // Wait for complete frame |
+ { |
+ if ((sexparity != 0 && sexdata[6] == -113) || (sexparity == 0 && sexdata[6] == 114)) // Parity check |
+ { |
+ if (sexdata[1] == 114 && sexdata[2] == -113) PPM_in[5] = -113;// Reconstruct tripole Flight-Mode value (CH5) |
+ if (sexdata[1] == -113 && sexdata[2] == -113) PPM_in[5] = 0; // Reconstruct tripole Flight-Mode value (CH5) |
+ if (sexdata[1] == -113 && sexdata[2] == 114) PPM_in[5] = 114; // Reconstruct tripole Flight-Mode value (CH5) |
+ PPM_in[6] = sexdata[3]; // Elevator (CH6) |
+ PPM_in[9] = sexdata[4]; // Aileron (CH9) |
+ PPM_in[10] = sexdata[5]; // Rudder (CH10) |
+ } |
+ } |
+ } |
+#endif |
+ if(SenderOkay >= 180) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
+ |
+ else PPM_diff[index] = 0; |
+ |
+#ifdef RECEIVER_SPEKTRUM_EXP |
+ if (index < 5 ) PPM_in[index] = tmp; // Update normal potis (CH1-4) |
+ if (index == 5) PPM_in[7] = signal; // Gear (CH7) |
+ if (index == 7) PPM_in[8] = signal; // AUX2 (CH8) |
+#else |
+ PPM_in[index] = tmp; |
+#endif |
+ } |
+ 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.78b/Spektrum.h |
---|
0,0 → 1,12 |
/*####################################################################################### |
Dekodieren eines Spektrum Signals |
#######################################################################################*/ |
#ifndef _SPEKTRUM_H |
#define _SPEKTRUM_H |
void SpektrumUartInit(void); |
void SpektrumBinding(void); |
extern unsigned char SpektrumTimer; |
extern void SpektrumParser(unsigned char c); |
#endif //_RC_H |
/tags/V0.78b/_Settings.h |
---|
0,0 → 1,29 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// 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 |
#define K_POTI5 8 |
#define K_POTI6 9 |
#define K_POTI7 10 |
#define K_POTI8 11 |
/tags/V0.78b/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.78b/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.78b/capacity.c |
---|
0,0 → 1,139 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) Holger Buss, Ingo Busker |
// + Thanks to Marcel Haller (Lion) for the nice idea and first implementation |
// + Nur für den privaten Gebrauch |
// + 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 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
// + POSSIBILITY OF SUCH DAMAGE. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "capacity.h" |
#include "twimaster.h" |
#include "main.h" |
#include "timer0.h" |
#include "analog.h" |
#define CAPACITY_UPDATE_INTERVAL 10 // 10 ms |
#define FC_OFFSET_CURRENT 5 // calculate with a current of 0.5A |
#define BL_OFFSET_CURRENT 2 // calculate with a current of 0.2A |
// global varialbles |
unsigned short update_timer = 0; |
Capacity_t Capacity; |
// initialize capacity calculation |
void Capacity_Init(void) |
{ |
Capacity.ActualCurrent = 0; |
Capacity.UsedCapacity = 0; |
Capacity.ActualPower = 0; |
update_timer = SetDelay(CAPACITY_UPDATE_INTERVAL); |
} |
// called in main loop at a regular interval |
void Capacity_Update(void) |
{ |
unsigned short Current, SetSum; // max value will be 255 * 12 = 3060 |
static unsigned short SubCounter = 0; |
static unsigned short CurrentOffset = 0; |
static unsigned long SumCurrentOffset = 0; |
unsigned char i, NumOfMotors; |
if(CheckDelay(update_timer)) |
{ |
update_timer += CAPACITY_UPDATE_INTERVAL; // do not use SetDelay to avoid timing leaks |
// determine sum of all present BL currents and setpoints |
Current = 0; |
SetSum = 0; |
NumOfMotors = 0; |
for(i = 0; i < MAX_MOTORS; i++) |
{ |
if(Motor[i].State & MOTOR_STATE_PRESENT_MASK) |
{ |
NumOfMotors++; |
Current += (unsigned int)(Motor[i].Current); |
SetSum += (unsigned int)(Motor[i].SetPoint); |
} |
} |
if(SetSum == 0) // if all setpoints are 0 |
{ // determine offsets of motor currents |
#define CURRENT_AVERAGE 8 // 8bit = 256 * 10 ms = 2.56s average time |
CurrentOffset = (unsigned int)(SumCurrentOffset>>CURRENT_AVERAGE); |
SumCurrentOffset -= CurrentOffset; |
SumCurrentOffset += Current; |
// after averaging set current to static offset |
Current = FC_OFFSET_CURRENT; |
} |
else // some motors are running, includes also motor test condition, where "MotorRunning" is false |
{ // subtract offset |
if(Current > CurrentOffset) Current -= CurrentOffset; |
else Current = 0; |
// add the FC and BL Offsets |
Current += FC_OFFSET_CURRENT + NumOfMotors * BL_OFFSET_CURRENT; |
} |
// update actual Current |
Capacity.ActualCurrent = Current; |
// update actual Power |
if(Current < 255) Capacity.ActualPower = (UBat * Current) / 100; // in W higher resolution |
else Capacity.ActualPower = (UBat * (Current/4)) / 25; // in W |
// update used capacity |
SubCounter += Current; |
// 100mA * 1ms * CAPACITY_UPDATE_INTERVAL = 1 mA * 100 ms * CAPACITY_UPDATE_INTERVAL |
// = 1mA * 0.1s * CAPACITY_UPDATE_INTERVAL = 1mA * 1min / (600 / CAPACITY_UPDATE_INTERVAL) |
// = 1mAh / (36000 / CAPACITY_UPDATE_INTERVAL) |
#define SUB_COUNTER_LIMIT (36000 / CAPACITY_UPDATE_INTERVAL) |
if(SubCounter > SUB_COUNTER_LIMIT) |
{ |
Capacity.UsedCapacity++; // we have one mAh more |
SubCounter -= SUB_COUNTER_LIMIT; // keep the remaining sub part |
} |
} // EOF check delay update timer |
} |
/tags/V0.78b/capacity.h |
---|
0,0 → 1,17 |
#ifndef _CAPACITY_H |
#define _CAPACITY_H |
typedef struct |
{ |
unsigned short ActualCurrent; // in 0.1A Steps |
unsigned short ActualPower; // in 0.1W |
unsigned short UsedCapacity; // in mAh |
} __attribute__((packed)) Capacity_t; |
extern Capacity_t Capacity; |
void Capacity_Init(void); |
void Capacity_Update(void); |
#endif //_CAPACITY_H |
/tags/V0.78b/eeprom.c |
---|
0,0 → 1,290 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-247 -> normale Werte |
// + 255 -> Poti1 |
// + 254 -> Poti2 |
// + 253 -> Poti3 |
// + 252 -> Poti4 |
// + 251 -> Poti5 |
// + 247 -> Poti6 |
// + 249 -> Poti7 |
// + 248 -> Poti8 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
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; |
EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
EE_Parameter.Kanalbelegung[K_POTI6] = 10; |
EE_Parameter.Kanalbelegung[K_POTI7] = 11; |
EE_Parameter.Kanalbelegung[K_POTI8] = 12; |
} |
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 = 255; // Wert : 0-247 255 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-247 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-247 |
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-247 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-247 |
EE_Parameter.Hoehe_StickNeutralPoint = 0; // Wert : 0-247 (0 = Hover-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-247 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-247 |
EE_Parameter.Gyro_P = 80; // Wert : 0-247 |
EE_Parameter.Gyro_I = 150; // Wert : 0-247 |
EE_Parameter.Gyro_D = 3; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_P = 80; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_I = 150; // Wert : 0-247 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-247 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-247 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // Wert : 0-247 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
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-247 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoCompInvert = 1; // Wert : 0-247 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickMax = 247; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickRefresh = 6; |
EE_Parameter.Servo3 = 125; |
EE_Parameter.Servo4 = 125; |
EE_Parameter.Servo5 = 125; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-247 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoRollMax = 247; // Wert : 0-247 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-247 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 = 254; // 254 -> Poti 2 |
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; |
EE_Parameter.Receiver = RECEIVER_SPEKTRUM; |
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 = 255; // Wert : 0-247 255 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-247 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-247 |
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-247 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-247 |
EE_Parameter.Hoehe_StickNeutralPoint = 0;// Wert : 0-247 (0 = Hover-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-247 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-247 |
EE_Parameter.Gyro_P = 90; // Wert : 0-247 |
EE_Parameter.Gyro_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_D = 3; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_P = 90; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-247 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-247 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-247 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // Wert : 0-247 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
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-247 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoCompInvert = 1; // Wert : 0-247 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickMax = 247; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickRefresh = 6; |
EE_Parameter.Servo3 = 125; |
EE_Parameter.Servo4 = 125; |
EE_Parameter.Servo5 = 125; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-247 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoRollMax = 247; // Wert : 0-247 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-247 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 = 254; // 254 -> Poti 2 |
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; |
EE_Parameter.Receiver = RECEIVER_SPEKTRUM; |
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 = 255; // Wert : 0-247 255 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-247 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-247 |
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-247 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-247 |
EE_Parameter.Hoehe_StickNeutralPoint = 0;// Wert : 0-247 (0 = Hover-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-247 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-247 |
EE_Parameter.Gyro_P = 100; // Wert : 0-247 |
EE_Parameter.Gyro_I = 120; // Wert : 0-247 |
EE_Parameter.Gyro_D = 3; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_P = 100; // Wert : 0-247 |
EE_Parameter.Gyro_Gier_I = 120; // Wert : 0-247 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-247 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-247 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-247 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
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-247 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoCompInvert = 1; // Wert : 0-247 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickMax = 247; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoNickRefresh = 6; |
EE_Parameter.Servo3 = 125; |
EE_Parameter.Servo4 = 125; |
EE_Parameter.Servo5 = 125; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-247 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-247 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-247 // Anschlag |
EE_Parameter.ServoRollMax = 247; // Wert : 0-247 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-247 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 = 254; // 254 -> Poti 2 |
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; |
EE_Parameter.Receiver = RECEIVER_SPEKTRUM; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/tags/V0.78b/fc.c |
---|
0,0 → 1,1615 |
/*####################################################################################### |
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, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0; |
unsigned char Poti[9] = {0,0,0,0,0,0,0,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; |
unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5; |
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 FCFlags = 0; |
long GIER_GRAD_FAKTOR = 1291; |
signed int KopplungsteilNickRoll,KopplungsteilRollNick; |
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(); |
FCFlags |= FCFLAG_CALIBRATE; |
FromNaviCtrl_Value.Kalman_K = -1; |
FromNaviCtrl_Value.Kalman_MaxDrift = 0; |
FromNaviCtrl_Value.Kalman_MaxFusion = 32; |
for(i=0;i<8;i++) |
{ |
Poti[i] = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 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; |
unsigned char i; |
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); |
} |
for(i=0;i<8;i++) |
{ |
int tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110; |
if(tmp > 255) tmp = 255; else if(tmp < 0) tmp = 0; |
if(tmp != Poti[i]) |
{ |
Poti[i] += (tmp - Poti[i]) / 8; |
if(Poti[i] > tmp) Poti[i]--; |
else Poti[i]++; |
} |
} |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
unsigned char i; |
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; |
for(i=0;i<8;i++) |
{ |
int tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1 + i]] + 110; |
LIMIT_MIN_MAX(tmp, 0, 255); |
if(Poti[i] > tmp) Poti[i]--; else if(Poti[i] < tmp) Poti[i]++; |
} |
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) |
{ |
FCFlags &= ~(FCFLAG_MOTOR_RUN | FCFLAG_FLY); |
for(i=0;i<MAX_MOTORS;i++) |
{ |
if(!PC_MotortestActive) MotorTest[i] = 0; |
Motor[i].SetPoint = MotorTest[i]; |
} |
if(PC_MotortestActive) PC_MotortestActive--; |
} |
else FCFlags |= FCFLAG_MOTOR_RUN; |
DebugOut.Analog[12] = Motor[0].SetPoint; |
DebugOut.Analog[13] = Motor[1].SetPoint; |
DebugOut.Analog[14] = Motor[2].SetPoint; |
DebugOut.Analog[15] = Motor[3].SetPoint; |
//Start I2C Interrupt Mode |
twi_state = 0; |
motor = 0; |
i2c_start(); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI(b,a) {if(a < 248) b = a; else b = Poti[255 - a];} |
#define CHK_POTI_MM(b,a,min,max) {CHK_POTI(b,a); LIMIT_MIN_MAX(b, min, max);} |
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_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255); |
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255); |
CHK_POTI(Parameter_Servo3,EE_Parameter.Servo3); |
CHK_POTI(Parameter_Servo4,EE_Parameter.Servo4); |
CHK_POTI(Parameter_Servo5,EE_Parameter.Servo5); |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe); |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung); |
CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I); |
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D); |
CHK_POTI(Parameter_Gyro_Gier_P,EE_Parameter.Gyro_Gier_P); |
CHK_POTI(Parameter_Gyro_Gier_I,EE_Parameter.Gyro_Gier_I); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl); |
CHK_POTI(Parameter_ServoRollControl,EE_Parameter.ServoRollControl); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1); |
CHK_POTI(Parameter_AchsKopplung2, EE_Parameter.AchsKopplung2); |
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection); |
// CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability); |
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl); |
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; |
FCFlags &= ~FCFLAG_NOTLANDUNG; |
} |
ROT_ON; |
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
FCFlags |= FCFLAG_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) |
{ |
FCFlags &= ~FCFLAG_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 FCFlags |= FCFLAG_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); |
LipoDetection(0); |
LIBFC_ReceiverInit(); |
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) |
{ |
// Motoren Starten |
if(!MotorenEin) |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 0; |
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; |
FCFlags |= FCFLAG_START; |
} |
} |
else delay_einschalten = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
else // only if motors are running |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 0; |
modell_fliegt = 0; |
} |
} |
else delay_ausschalten = 0; |
} |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || (FCFlags & FCFLAG_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(FCFlags & FCFLAG_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(FCFlags & FCFLAG_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] = Capacity.ActualCurrent; |
DebugOut.Analog[23] = Capacity.UsedCapacity; |
// 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 && !(FCFlags & FCFLAG_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(FCFlags & FCFLAG_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 FCFlags & MKFCFLAG_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((FCFlags & FCFLAG_FLY) && !(FCFlags & FCFLAG_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].SetPoint = tmp_int; |
} |
else Motor[i].SetPoint = 0; |
} |
} |
/tags/V0.78b/fc.h |
---|
0,0 → 1,213 |
/*####################################################################################### |
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 FCFLAG_MOTOR_RUN 0x01 |
#define FCFLAG_FLY 0x02 |
#define FCFLAG_CALIBRATE 0x04 |
#define FCFLAG_START 0x08 |
#define FCFLAG_NOTLANDUNG 0x10 |
#define FCFLAG_LOWBAT 0x20 |
#define FCFLAG_SPI_RX_ERR 0x40 |
#define FCFLAG_I2CERR 0x80 |
#define Poti1 Poti[0] |
#define Poti2 Poti[1] |
#define Poti3 Poti[2] |
#define Poti4 Poti[3] |
#define Poti5 Poti[4] |
#define Poti6 Poti[5] |
#define Poti7 Poti[6] |
#define Poti8 Poti[7] |
#define CHECK_MIN_MAX(wert,min,max) {if(wert < min) wert = min; else if(wert > max) wert = max;} |
extern volatile unsigned char FCFlags; |
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 unsigned char Poti[9]; |
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 int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
extern void DefaultKonstanten3(void); |
extern void DefaultStickMapping(void); |
extern unsigned char Parameter_Servo3,Parameter_Servo4,Parameter_Servo5; |
#define STRUCT_PARAM_LAENGE sizeof(EE_Parameter) |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[12]; // 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 Receiver; // 0= Summensignal, 1= Spektrum, 2 =Jeti, 3=ACT DSL, 4=ACT S3D |
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; // Speed of the Servo |
unsigned char Servo3; // Value or mapping of the Servo Output |
unsigned char Servo4; // Value or mapping of the Servo Output |
unsigned char Servo5; // Value or mapping of the Servo Output |
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]; |
#endif //_FC_H |
/tags/V0.78b/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="jeti.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="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="mymath.c"></File><File path="mymath.h"></File><File path="isqrt.S"></File><File path="Spektrum.c"></File><File path="Spektrum.h"></File></Project> |
/tags/V0.78b/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/tags/V0.78b/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.78b/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.78b/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.78b/jetimenu.c |
---|
0,0 → 1,148 |
#include "jetimenu.h" |
#include "libfc.h" |
#include "printf_P.h" |
#include "main.h" |
#include "spi.h" |
#include "capacity.h" |
#define JETIBOX_KEY_RIGHT 0x1F |
#define JETIBOX_KEY_UP 0x2F |
#define JETIBOX_KEY_DOWN 0x4F |
#define JETIBOX_KEY_LEFT 0x8F |
#define JETIBOX_KEY_NONE 0x0F |
#define JETIBOX_KEY_UNDEF 0x00 |
#define JetiBox_printfxy(x,y,format, args...) { LIBFC_JetiBox_SetPos(y * 16 + x); _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);} |
#define JetiBox_printf(format, args...) { _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);} |
// ----------------------------------------------------------- |
// the menu functions |
// ----------------------------------------------------------- |
void Menu_Status(uint8_t key) |
{ //0123456789ABCDEF |
JetiBox_printfxy(0,0,"%2i.%1iV",UBat/10, UBat%10); |
if(NaviDataOkay) |
{ |
JetiBox_printfxy(7,0,"%03dm %03d%c", GPSInfo.HomeDistance/10,GPSInfo.HomeBearing, 0xDF); |
} |
else |
{ |
JetiBox_printfxy(7,0,"Status"); |
} |
JetiBox_printfxy(0,1,"%4i %2i:%02i",Capacity.UsedCapacity,FlugSekunden/60,FlugSekunden%60); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
JetiBox_printfxy(11,1,"%4im", (int16_t)(HoehenWert/100)); |
} |
} |
void Menu_Attitude(uint8_t key) |
{ //0123456789ABCDEF |
JetiBox_printfxy(0,0,"Nick Roll Yaw"); |
JetiBox_printfxy(0,1,"%4i %4i %4i", (int16_t)(IntegralNick/1024), (int16_t)(IntegralRoll/1024), (int16_t)(ErsatzKompass / GIER_GRAD_FAKTOR)); |
} |
void Menu_Battery(uint8_t key) |
{ //0123456789ABCDEF |
JetiBox_printfxy(0,0,"%2i.%1iV %3i.%1iA", UBat/10, UBat%10, Capacity.ActualCurrent/10, Capacity.ActualCurrent%10); |
JetiBox_printfxy(0,1,"%4iW %6imAh",Capacity.ActualPower, Capacity.UsedCapacity); |
} |
void Menu_PosInfo(uint8_t key) |
{ |
if(NaviDataOkay) |
{ |
JetiBox_printfxy(0,0,"Sat:%02d", GPSInfo.NumOfSats); |
switch (GPSInfo.SatFix) |
{ |
case SATFIX_NONE: |
JetiBox_printfxy(7,0,"NoFix"); |
break; |
case SATFIX_2D: |
JetiBox_printfxy(7,0,"2DFix"); |
break; |
case SATFIX_3D: |
JetiBox_printfxy(7,0,"3DFix"); |
break; |
default: |
JetiBox_printfxy(7,0,"??Fix"); |
break; |
} |
if(GPSInfo.Flags & FLAG_DIFFSOLN) |
{ |
JetiBox_printfxy(9,0,"/DGPS"); |
} |
JetiBox_printfxy(0,1,"Home:%03dm %03d%c", GPSInfo.HomeDistance/10, GPSInfo.HomeBearing, 0xDF); |
} |
else |
{ //0123456789ABCDEF |
JetiBox_printfxy(2,0,"No NaviCtrl!"); |
} |
} |
// ----------------------------------------------------------- |
// the menu topology |
// ----------------------------------------------------------- |
typedef void (*pFctMenu) (uint8_t); // the menu item handler function pointer |
typedef struct{ |
int8_t left; |
int8_t right; |
int8_t up; |
int8_t down; |
pFctMenu pHandler; |
} MENU_ENTRY; |
// the menu navigation structure |
/* | |
3 - 0 - 1 - 2 - 3 - 0 |
*/ |
const MENU_ENTRY JetiBox_Menu[] PROGMEM= |
{ // l r u d pHandler |
{3, 1, 0, 0, &Menu_Status }, // 0 |
{0, 2, 1, 1, &Menu_Attitude }, // 1 |
{1, 3, 2, 2, &Menu_Battery }, // 2 |
{2, 0, 3, 3, &Menu_PosInfo }, // 3 |
}; |
// ----------------------------------------------------------- |
// Update display buffer |
// ----------------------------------------------------------- |
void JetiBox_Update(unsigned char key) |
{ |
static uint8_t item = 0, last_item = 0; // the menu item |
// navigate within the menu by key action |
last_item = item; |
switch(key) |
{ |
case JETIBOX_KEY_LEFT: |
item = pgm_read_byte(&JetiBox_Menu[item].left); //trigger to left menu item |
break; |
case JETIBOX_KEY_RIGHT: |
item = pgm_read_byte(&JetiBox_Menu[item].right); //trigger to right menu item |
break; |
case JETIBOX_KEY_UP: |
item = pgm_read_byte(&JetiBox_Menu[item].up); //trigger to up menu item |
break; |
case JETIBOX_KEY_DOWN: |
item = pgm_read_byte(&JetiBox_Menu[item].down); //trigger to down menu item |
break; |
default: |
break; |
} |
// if the menu item has been changed, do not pass the key to the item handler |
// to avoid jumping over to items |
if(item != last_item) key = JETIBOX_KEY_UNDEF; |
LIBFC_JetiBox_Clear(); |
//execute menu item handler |
((pFctMenu)(pgm_read_word(&(JetiBox_Menu[item].pHandler))))(key); |
} |
/tags/V0.78b/jetimenu.h |
---|
0,0 → 1,6 |
#ifndef _JETIMENU_H |
#define _JETIMENU_H |
extern void JetiBox_Update(unsigned char key); |
#endif //_JETIMENU_H |
/tags/V0.78b/led.c |
---|
0,0 → 1,99 |
#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; |
static unsigned char J16Warn = 0, J17Warn = 0; |
if(!delay--) // 10ms Intervall |
{ |
delay = 4; |
if(FCFlags & (FCFLAG_LOWBAT | FCFLAG_NOTLANDUNG | FCFLAG_I2CERR)) |
{ |
if(EE_Parameter.WARN_J16_Bitmask) |
{ |
if(!J16Warn) J16Blinkcount = 4; |
J16Warn = 1; |
} |
if(EE_Parameter.WARN_J17_Bitmask) |
{ |
if(!J17Warn) J17Blinkcount = 4; |
J17Warn = 1; |
} |
} |
else |
{ |
J16Warn = 0; |
J17Warn = 0; |
J16Bitmask = EE_Parameter.J16Bitmask; |
J17Bitmask = EE_Parameter.J17Bitmask; |
} |
if(!J16Warn) |
{ |
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 > 247) && (Parameter_J16Timing > 220)) {if(J16Bitmask & 128) J16_ON; else J16_OFF;} |
else |
if((EE_Parameter.J16Timing > 247) && (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; |
} |
} |
else |
if(!J16Blinkcount--) |
{ |
J16Blinkcount = 10-1; |
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2; |
if(J16Mask & EE_Parameter.WARN_J16_Bitmask) J16_ON; else J16_OFF; |
} |
if(!J17Warn) |
{ |
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 > 247) && (Parameter_J17Timing > 230)) {if(J17Bitmask & 128) J17_ON; else J17_OFF;} |
else |
if((EE_Parameter.J17Timing > 247) && (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; |
} |
} |
else |
if(!J17Blinkcount--) |
{ |
J17Blinkcount = 10-1; |
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2; |
if(J17Mask & EE_Parameter.WARN_J17_Bitmask) J17_ON; else J17_OFF; |
} |
} |
} |
/tags/V0.78b/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.78b/libfc.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/tags/V0.78b/libfc.h |
---|
0,0 → 1,12 |
#ifndef _LIBFC_H |
#define _LIBFC_H |
extern void LIBFC_Init(void); |
extern void LIBFC_Polling(void); |
extern void LIBFC_ReceiverInit(void); |
extern void LIBFC_JetiBox_Putchar(char c); |
extern void LIBFC_JetiBox_SetPos(unsigned char index); |
extern void LIBFC_JetiBox_Clear(void); |
#endif //_LIBFC_H |
/tags/V0.78b/main.c |
---|
0,0 → 1,489 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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; |
unsigned int FlugSekunden = 0; |
pVoidFnct_pVoidFnctChar_const_fmt _printf_P; |
// -- 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], 12); // 12 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, timerPolling; |
unsigned char RequiredMotors = 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(); |
Capacity_Init(); |
LIBFC_Init(); |
GRN_ON; |
sei(); |
ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 13); // 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; |
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) && !(Motor[i].State & MOTOR_STATE_PRESENT_MASK) ) {UpdateMotor = 0; SendMotorData(); while(!UpdateMotor);}; |
} |
if(Motor[i].State & MOTOR_STATE_PRESENT_MASK) printf("%d ",i+1); |
} |
for(i=0; i < MAX_MOTORS; i++) |
{ |
if(!(Motor[i].State & MOTOR_STATE_PRESENT_MASK) && 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 |
} |
Motor[i].State &= ~MOTOR_STATE_ERROR_MASK; // clear error counter |
} |
printf("\n\r==================================="); |
SendMotorData(); |
//printf("\n size: %u",STRUCT_PARAM_LAENGE); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]) < 255) |
{ |
EE_Parameter.Kanalbelegung[K_POTI5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]); |
EE_Parameter.Kanalbelegung[K_POTI6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+9]); |
EE_Parameter.Kanalbelegung[K_POTI7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+10]); |
EE_Parameter.Kanalbelegung[K_POTI8] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+11]); |
} |
else |
{ |
EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
EE_Parameter.Kanalbelegung[K_POTI6] = 10; |
EE_Parameter.Kanalbelegung[K_POTI7] = 11; |
EE_Parameter.Kanalbelegung[K_POTI8] = 12; |
} |
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); |
LIBFC_ReceiverInit(); |
printf("\n\r===================================\n\r"); |
//SpektrumBinding(); |
timer = SetDelay(2000); |
timerPolling = SetDelay(250); |
while (1) |
{ |
if(CheckDelay(timerPolling)) |
{ |
timerPolling = SetDelay(100); |
LIBFC_Polling(); |
} |
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(!--I2CTimeout || MissingMotor) |
{ |
if(!I2CTimeout) |
{ |
i2c_reset(); |
I2CTimeout = 5; |
DebugOut.Analog[28]++; // I2C-Error |
FCFlags |= FCFLAG_I2CERR; |
} |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
ROT_OFF; |
if(!beeptime) FCFlags &= ~FCFLAG_I2CERR; |
} |
if(SIO_DEBUG && (!UpdateMotor || !MotorenEin)) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
static unsigned char second; |
timer += 20; // 20 ms interval |
if(PcZugriff) PcZugriff--; |
else |
{ |
ExternControl.Config = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
if(BeepMuster == 0xffff && SenderOkay == 0) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(NaviDataOkay) |
{ |
NaviDataOkay--; |
FCFlags &= ~FCFLAG_SPI_RX_ERR; |
} |
else |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
if(!beeptime) FCFlags |= FCFLAG_SPI_RX_ERR; |
} |
if(UBat < BattLowVoltageWarning) |
{ |
FCFlags |= FCFLAG_LOWBAT; |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
else if(!beeptime) FCFlags &= ~FCFLAG_LOWBAT; |
SPI_StartTransmitPacket(); |
SendSPI = 4; |
if(!MotorenEin) timer2 = 1450; // 0,5 Minuten aufrunden |
else |
if(++second == 49) |
{ |
second = 0; |
FlugSekunden++; |
} |
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(); |
Capacity_Update(); |
} |
if(!SendSPI) { SPI_TransmitByte(); } |
} |
return (1); |
} |
/tags/V0.78b/main.h |
---|
0,0 → 1,134 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define QUADRO |
//#define ACT_S3D_SUMMENSIGNAL |
// 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 SYSCLK F_CPU |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EE_DATENREVISION 82 // Parameter fürs Koptertool; 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 RECEIVER_PPM 0 |
#define RECEIVER_SPEKTRUM 1 |
#define RECEIVER_SPEKTRUM_HI_RES 2 |
#define RECEIVER_SPEKTRUM_LOW_RES 3 |
#define RECEIVER_JETI 4 |
#define RECEIVER_ACT_DSL 5 |
#define RECEIVER_UNKNOWN 0xFF |
#define J3High PORTD |= 0x20 |
#define J3Low PORTD &= ~0x20 |
#define J4High PORTD |= 0x10 |
#define J4Low PORTD &= ~0x10 |
#define J5High PORTD |= 0x08 |
#define J5Low PORTD &= ~0x08 |
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,FlugSekunden; |
#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" |
#include "spektrum.h" |
#include "capacity.h" |
#include "libfc.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.78b/makefile |
---|
0,0 → 1,458 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644p |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
VERSION_MAJOR = 0 |
VERSION_MINOR = 78 |
VERSION_PATCH = 0 |
VERSION_SERIAL_MAJOR = 11 # Serial Protocol |
VERSION_SERIAL_MINOR = 0 # Serial Protocol |
NC_SPI_COMPATIBLE = 12 # Navi-Kompatibilität |
#------------------------------------------------------------------- |
# get SVN revision |
REV := $(shell sh -c "cat .svn/entries | sed -n '4p'") |
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_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 8) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 9) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 10) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 11) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)L_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 12) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 13) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 14) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 15) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p_SVN$(REV) |
endif |
ifeq ($(VERSION_PATCH), 16) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q_SVN$(REV) |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
#OPT = 2 |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c spi.c led.c Spektrum.c |
SRC += mymath.c jetimenu.c capacity.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 |
# shrink code size |
CFLAGS += -mtiny-stack |
#CFLAGS += -fno-inline-functions |
CFLAGS += -mcall-prologues |
CFLAGS += -DF_CPU=$(F_CPU) -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 += libfc.a |
##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 |
LIMITS = $(SIZE) --mcu=atmega644 -C $(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 sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE); $(HEXSIZE); $(LIMITS); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE); $(HEXSIZE); $(LIMITS); 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) Flight-Ctrl_*.hex |
$(REMOVE) Flight-Ctrl_*.eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) Flight-Ctrl_*.elf |
$(REMOVE) Flight-Ctrl_*.map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) Flight-Ctrl_*.sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
$(REMOVE) $(SRC:.c=.o) |
# 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.78b/menu.c |
---|
0,0 → 1,192 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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" |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char MaxMenue = 16; |
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_Putchar(char c) |
{ |
DisplayBuff[DispPtr++] = c; |
} |
void Menu(void) |
{ |
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) |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Height: %5i",(int)(HoehenWert/5)); |
LCD_printfxy(0,1,"Setpoint:%5i",(int)(SollHoehe/5)); |
LCD_printfxy(0,2,"Pressure:%5i",MessLuftdruck); |
LCD_printfxy(0,3,"Offset: %5i",OCR0A); |
} |
else |
{ |
LCD_printfxy(0,0,"Height control"); |
LCD_printfxy(0,1,"DISABLED"); |
LCD_printfxy(0,2,"Height control"); |
LCD_printfxy(0,3,"DISABLED"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"act. bearing"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Compass: %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,"Yaw %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,"Yaw %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,"Z %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,0,"Voltage: %3i.%1iV",UBat/10, UBat%10); |
LCD_printfxy(0,1,"Current: %3i.%1iA",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10); |
LCD_printfxy(0,2,"Power: %4iW",Capacity.ActualPower); |
LCD_printfxy(0,3,"Discharge: %5imAh", Capacity.UsedCapacity); |
break; |
case 8: |
LCD_printfxy(0,0,"Receiver"); |
LCD_printfxy(0,1,"RC-RSSI: %4i", PPM_in[0]); |
LCD_printfxy(0,2,"RC-Quality: %4i", SenderOkay); |
LCD_printfxy(0,3,"RC-Channels:%4i", Channels-1); |
break; |
case 9: |
LCD_printfxy(0,0,"Compass"); |
LCD_printfxy(0,1,"Heading: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Value: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 10: |
LCD_printfxy(0,0,"Poti1: %3i",Poti[0]); |
LCD_printfxy(0,1,"Poti2: %3i",Poti[1]); |
LCD_printfxy(0,2,"Poti3: %3i",Poti[2]); |
LCD_printfxy(0,3,"Poti4: %3i",Poti[3]); |
break; |
case 11: |
LCD_printfxy(0,0,"Poti5: %3i",Poti[4]); |
LCD_printfxy(0,1,"Poti6: %3i",Poti[5]); |
LCD_printfxy(0,2,"Poti7: %3i",Poti[6]); |
LCD_printfxy(0,3,"Poti8: %3i",Poti[7]); |
break; |
case 12: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Position: %3i",ServoNickValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 13: |
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 14: |
LCD_printfxy(0,0,"BL-Ctrl Errors " ); |
LCD_printfxy(0,1,"%3d %3d %3d %3d ",Motor[0].State & MOTOR_STATE_ERROR_MASK,Motor[1].State & MOTOR_STATE_ERROR_MASK,Motor[2].State & MOTOR_STATE_ERROR_MASK,Motor[3].State & MOTOR_STATE_ERROR_MASK); |
LCD_printfxy(0,2,"%3d %3d %3d %3d ",Motor[4].State & MOTOR_STATE_ERROR_MASK,Motor[5].State & MOTOR_STATE_ERROR_MASK,Motor[6].State & MOTOR_STATE_ERROR_MASK,Motor[7].State & MOTOR_STATE_ERROR_MASK); |
LCD_printfxy(0,3,"%3d %3d %3d %3d ",Motor[8].State & MOTOR_STATE_ERROR_MASK,Motor[9].State & MOTOR_STATE_ERROR_MASK,Motor[10].State & MOTOR_STATE_ERROR_MASK,Motor[11].State & MOTOR_STATE_ERROR_MASK); |
break; |
case 15: |
LCD_printfxy(0,0,"BL-Ctrl found " ); |
LCD_printfxy(0,1," %c %c %c %c ",'-' + 4 * (Motor[0].State>>7),'-' + 5 * (Motor[1].State>>7),'-' + 6 * (Motor[2].State>>7),'-' + 7 * (Motor[3].State>>7)); |
LCD_printfxy(0,2," %c %c %c %c ",'-' + 8 * (Motor[4].State>>7),'-' + 9 * (Motor[5].State>>7),'-' + 10 * (Motor[6].State>>7),'-' + 11 * (Motor[7].State>>7)); |
LCD_printfxy(0,3," %c - - - ",'-' + 12 * (Motor[8].State>>7)); |
if(Motor[9].State>>7) LCD_printfxy(4,3,"10"); |
if(Motor[10].State>>7) LCD_printfxy(8,3,"11"); |
if(Motor[11].State>>7) LCD_printfxy(12,3,"12"); |
break; |
case 16: |
LCD_printfxy(0,0,"Flight-Time " ); |
LCD_printfxy(0,1,"Total:%5umin",FlugMinutenGesamt); |
LCD_printfxy(0,2,"Act: %5umin",FlugMinuten); |
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); |
} |
break; |
default: |
if(MenuePunkt == MaxMenue) MaxMenue--; |
MenuePunkt = 0; |
break; |
} |
RemoteKeys = 0; |
} |
/tags/V0.78b/menu.h |
---|
0,0 → 1,17 |
#ifndef _MENU_H |
#define _MENU_H |
extern void Menu(void); |
extern void LcdClear(void); |
extern void Menu_Putchar(char c); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char MaxMenue; |
extern unsigned char MenuePunkt; |
extern unsigned char RemoteKeys; |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(&Menu_Putchar,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(&Menu_Putchar, PSTR(format) , ## args);} |
#endif //_MENU_H |
/tags/V0.78b/mymath.c |
---|
0,0 → 1,41 |
#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)); |
} |
/tags/V0.78b/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.78b/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.78b/printf_P.h |
---|
0,0 → 1,69 |
// 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. |
*/ |
/******************************************************************************/ |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
// function pointer to external callback function |
typedef void (*pVoidFnctChar) (char ); |
typedef void (*pVoidFnct_pVoidFnctChar_const_fmt) (pVoidFnctChar, char const *fmt0, ...); |
extern pVoidFnct_pVoidFnctChar_const_fmt _printf_P; |
#endif //_PRINTF_P_H_ |
/tags/V0.78b/rc.c |
---|
0,0 → 1,213 |
/*####################################################################################### |
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" |
volatile int PPM_in[26]; |
volatile int PPM_diff[26]; // 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) |
//############################################################################ |
{ |
unsigned char i; |
for(i=0;i<26;i++) |
{ |
PPM_in[i] = 0; |
PPM_diff[i] = 0; |
} |
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 < 13) |
{ |
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[13]; |
static int ppm_diff[13]; |
static int old_ppm_in[13]; |
static int old_ppm_diff[13]; |
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 < 13; 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 < 13) |
{ |
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<13;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 < 13) |
{ |
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.78b/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[26]; |
extern volatile int PPM_diff[26]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
extern volatile char Channels,tmpChannels; |
#endif //_RC_H |
/tags/V0.78b/spi.c |
---|
0,0 → 1,318 |
// ######################## 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 NC_Version; |
struct str_GPSInfo GPSInfo; |
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_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_PARAMETER1, SPI_FCCMD_STICK, SPI_FCCMD_MISC, SPI_FCCMD_VERSION, SPI_FCCMD_STICK, SPI_FCCMD_SERVOS, SPI_FCCMD_ACCU}; |
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_FCCMD_USER; |
ToNaviCtrl.IntegralNick = 0; |
ToNaviCtrl.IntegralRoll = 0; |
FromNaviCtrl_Value.SerialDataOkay = 0; |
SPI_RxDataValid = 0; |
} |
//------------------------------------------------------ |
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_FCCMD_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) FCFlags; |
FCFlags &= ~(FCFLAG_CALIBRATE | FCFLAG_START); |
ToNaviCtrl.Param.Byte[9] =(unsigned char) eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
break; |
case SPI_FCCMD_ACCU: |
ToNaviCtrl.Param.Int[0] = Capacity.ActualCurrent; // 0.1A |
ToNaviCtrl.Param.Int[1] = Capacity.UsedCapacity; // mAh |
ToNaviCtrl.Param.Byte[4] = (unsigned char) UBat; // 0.1V |
ToNaviCtrl.Param.Byte[5] = (unsigned char) BattLowVoltageWarning; //0.1V |
break; |
case SPI_FCCMD_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_FCCMD_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) Poti[0]; |
ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti[1]; |
ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti[2]; |
ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti[3]; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) Poti[4]; |
ToNaviCtrl.Param.Byte[9] = (unsigned char) Poti[5]; |
ToNaviCtrl.Param.Byte[10] = (unsigned char) Poti[6]; |
ToNaviCtrl.Param.Byte[11] = (unsigned char) Poti[7]; |
break; |
case SPI_FCCMD_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; |
ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderOkay; |
ToNaviCtrl.Param.Byte[10] = (unsigned char) SenderRSSI; |
ToNaviCtrl.Param.Byte[11] = DebugOut.Analog[7] / 4; //GasMischanteil |
break; |
case SPI_FCCMD_VERSION: |
ToNaviCtrl.Param.Byte[0] = VERSION_MAJOR; |
ToNaviCtrl.Param.Byte[1] = VERSION_MINOR; |
ToNaviCtrl.Param.Byte[2] = VERSION_PATCH; |
ToNaviCtrl.Param.Byte[3] = NC_SPI_COMPATIBLE; |
ToNaviCtrl.Param.Byte[4] = PlatinenVersion; |
break; |
case SPI_FCCMD_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_NCCMD_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; |
case SPI_NCCMD_VERSION: |
NC_Version.Major = FromNaviCtrl.Param.Byte[0]; |
NC_Version.Minor = FromNaviCtrl.Param.Byte[1]; |
NC_Version.Patch = FromNaviCtrl.Param.Byte[2]; |
NC_Version.Compatible = FromNaviCtrl.Param.Byte[3]; |
NC_Version.Hardware = FromNaviCtrl.Param.Byte[4]; |
break; |
case SPI_NCCMD_GPSINFO: |
GPSInfo.Flags = FromNaviCtrl.Param.Byte[0]; |
GPSInfo.NumOfSats = FromNaviCtrl.Param.Byte[1]; |
GPSInfo.SatFix = FromNaviCtrl.Param.Byte[2]; |
GPSInfo.HomeDistance = FromNaviCtrl.Param.Int[2]; |
GPSInfo.HomeBearing = FromNaviCtrl.Param.sInt[3]; |
break; |
default: |
break; |
} |
} |
else |
{ |
// KompassValue = 0; |
// KompassRichtung = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
#endif |
/tags/V0.78b/spi.h |
---|
0,0 → 1,175 |
// ######################## 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_FCCMD_USER 10 |
#define SPI_FCCMD_STICK 11 |
#define SPI_FCCMD_MISC 12 |
#define SPI_FCCMD_PARAMETER1 13 |
#define SPI_FCCMD_VERSION 14 |
#define SPI_FCCMD_SERVOS 15 |
#define SPI_FCCMD_ACCU 16 |
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 |
{ |
unsigned char Byte[12]; |
char sByte[12]; |
unsigned int Int[6]; |
int sInt[6]; |
unsigned long Long[3]; |
long sLong[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
#define SPI_NCCMD_KALMAN 103 |
#define SPI_NCCMD_VERSION 104 |
#define SPI_NCCMD_GPSINFO 105 |
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 |
{ |
unsigned char Byte[12]; |
char sByte[12]; |
unsigned int Int[6]; |
int sInt[6]; |
unsigned long Long[3]; |
long sLong[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; |
unsigned char Hardware; |
}; |
// Satfix types for GPSData.SatFix |
#define SATFIX_NONE 0x00 |
#define SATFIX_DEADRECKOING 0x01 |
#define SATFIX_2D 0x02 |
#define SATFIX_3D 0x03 |
#define SATFIX_GPS_DEADRECKOING 0x04 |
#define SATFIX_TIMEONLY 0x05 |
// Flags for interpretation of the GPSData.Flags |
#define FLAG_GPSFIXOK 0x01 // (i.e. within DOP & ACC Masks) |
#define FLAG_DIFFSOLN 0x02 // (is DGPS used) |
#define FLAG_WKNSET 0x04 // (is Week Number valid) |
#define FLAG_TOWSET 0x08 // (is Time of Week valid) |
struct str_GPSInfo |
{ |
unsigned char Flags; // Status Flags |
unsigned char NumOfSats; // number of satelites |
unsigned char SatFix; // type of satfix |
unsigned int HomeDistance; // distance to Home in dm |
int HomeBearing; // bearing to home in deg |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_GPSInfo GPSInfo; |
extern struct str_SPI_VersionInfo NC_Version; |
extern struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
extern unsigned char SPI_CommandCounter,NaviDataOkay; |
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.78b/timer0.c |
---|
0,0 → 1,403 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
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(!NaviDataOkay && 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; |
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; |
case 3: RemainingPulse += 2 * Parameter_Servo3; |
break; |
case 4: RemainingPulse += 2 * Parameter_Servo4; |
break; |
case 5: RemainingPulse += 2 * Parameter_Servo5; |
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.78b/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.78b/twimaster.c |
---|
0,0 → 1,222 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
volatile unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0,MissingMotor = 0; |
MotorData_t Motor[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++].SetPoint); |
break; |
case 2: |
if(TWSR == 0x30) |
{ |
if(!missing_motor) missing_motor = motor; |
if((Motor[motor-1].State & MOTOR_STATE_ERROR_MASK) < MOTOR_STATE_ERROR_MASK) Motor[motor-1].State++; // increment error counter and handle overflow |
} |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
i2c_start(); |
break; |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Reading Data |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
case 3: |
//Transmit 1st byte for reading |
if(TWSR != 0x40) // Error? |
{ |
Motor[motorread].State &= ~MOTOR_STATE_PRESENT_MASK; // clear present bit |
motorread++; |
if(motorread >= MAX_MOTORS) motorread = 0; |
i2c_stop(); |
twi_state = 0; |
} |
else |
{ |
Motor[motorread].State |= MOTOR_STATE_PRESENT_MASK; // set present bit |
I2C_ReceiveByte(); |
} |
MissingMotor = missing_motor; |
missing_motor = 0; |
break; |
case 4: //Read 1st byte and transmit 2nd Byte |
Motor[motorread].Current = TWDR; |
I2C_ReceiveLastByte(); //nack |
break; |
case 5: |
//Read 2nd byte |
Motor[motorread].MaxPWM = TWDR; |
motorread++; // next motor |
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.78b/twimaster.h |
---|
0,0 → 1,46 |
/*############################################################################ |
############################################################################*/ |
#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; |
#define MAX_MOTORS 12 |
#define MOTOR_STATE_PRESENT_MASK 0x80 |
#define MOTOR_STATE_ERROR_MASK 0x7F |
typedef struct |
{ |
unsigned char SetPoint; // written by attitude controller |
unsigned char State; // 7 bit for I2C error counter, highest bit indicates if motor is present |
unsigned char Current; // in 0.1 A steps, read back from BL |
unsigned char MaxPWM; // read back from BL is less than 255 if BL is in current limit |
} __attribute__((packed)) MotorData_t; |
extern MotorData_t Motor[MAX_MOTORS]; |
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.78b/uart.c |
---|
0,0 → 1,612 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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 <avr/pgmspace.h> |
#include "main.h" |
#include "uart.h" |
#include "libfc.h" |
#define FC_ADDRESS 1 |
#define NC_ADDRESS 2 |
#define MK3MAG_ADDRESS 3 |
#define ABO_TIMEOUT 4000 // disable abo after 4 seconds |
#define MAX_SENDE_BUFF 160 |
#define MAX_EMPFANGS_BUFF 160 |
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 NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char TxdBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
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 Display_Timer, Debug_Timer,Kompass_Timer,Timer3D; |
unsigned int DebugDataIntervall = 0, Intervall3D = 0, Display_Interval = 0; |
unsigned int AboTimeOut = 0; |
const unsigned char ANALOG_TEXT[32][16] PROGMEM = |
{ |
//1234567890123456 |
"AngleNick ", //0 |
"AngleRoll ", |
"AccNick ", |
"AccRoll ", |
"YawGyro ", |
"Height Value ", //5 |
"AccZ ", |
"Gas ", |
"Compass Value ", |
"Voltage [0.1V] ", |
"Receiver Level ", //10 |
"Gyro Compass ", |
"Motor 1 ", |
"Motor 2 ", |
"Motor 3 ", |
"Motor 4 ", //15 |
" ", |
" ", |
"VarioMeter ", |
"MK3Mag CalState ", |
"Servo ", //20 |
"Hovergas ", |
"Current [0.1A] ", |
"Capacity [mAh] ", |
" ", |
" ", //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 = TxdBuffer[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_SENDE_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') |
{ |
LcdClear(); |
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 += TxdBuffer[i]; |
} |
tmpCRC %= 4096; |
TxdBuffer[i++] = '=' + tmpCRC / 64; |
TxdBuffer[i++] = '=' + tmpCRC % 64; |
TxdBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = TxdBuffer[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; |
TxdBuffer[pt++] = '#'; // Startzeichen |
TxdBuffer[pt++] = 'a' + address; // Adresse (a=0; b=1,...) |
TxdBuffer[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; |
TxdBuffer[pt++] = '=' + (a >> 2); |
TxdBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
TxdBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
TxdBuffer[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; |
PcZugriff = 255; |
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(); |
} |
else |
{ |
tempchar1 = 0; // mark in response an invlid setting |
} |
while(!UebertragungAbgeschlossen); |
SendOutData('S', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
if(!MotorenEin) Piep(tempchar1,110); |
LipoDetection(0); |
LIBFC_ReceiverInit(); |
break; |
case 'f': // auf anderen Parametersatz umschalten |
if((1 <= pRxData[0]) && (pRxData[0] <= 5)) SetActiveParamSetNumber(pRxData[0]); |
tempchar1 = pRxData[0]; |
ReadParameterSet(tempchar1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
while(!UebertragungAbgeschlossen); |
SendOutData('F', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
if(!MotorenEin) Piep(tempchar1,110); |
LipoDetection(0); |
LIBFC_ReceiverInit(); |
break; |
case 'y':// serial Potis |
PPM_in[13] = (signed char) pRxData[0]; PPM_in[14] = (signed char) pRxData[1]; PPM_in[15] = (signed char) pRxData[2]; PPM_in[16] = (signed char) pRxData[3]; |
PPM_in[17] = (signed char) pRxData[4]; PPM_in[18] = (signed char) pRxData[5]; PPM_in[19] = (signed char) pRxData[6]; PPM_in[20] = (signed char) pRxData[7]; |
PPM_in[21] = (signed char) pRxData[8]; PPM_in[22] = (signed char) pRxData[9]; PPM_in[23] = (signed char) pRxData[10]; PPM_in[24] = (signed char) pRxData[11]; |
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; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
break; |
case 'd': // Poll the debug data |
PcZugriff = 255; |
DebugDataIntervall = (unsigned int)pRxData[0] * 10; |
if(DebugDataIntervall > 0) DebugDataAnforderung = 1; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
break; |
case 'h':// x-1 Displayzeilen |
PcZugriff = 255; |
if((pRxData[0] & 0x80) == 0x00) // old format |
{ |
DisplayLine = 2; |
Display_Interval = 0; |
} |
else // new format |
{ |
RemoteKeys |= ~pRxData[0]; |
Display_Interval = (unsigned int)pRxData[1] * 10; |
DisplayLine = 4; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
} |
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 |
void 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; |
} |
//############################################################################ |
//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(CheckDelay(AboTimeOut)) |
{ |
Display_Interval = 0; |
DebugDataIntervall = 0; |
Intervall3D = 0; |
} |
if(((Display_Interval>0 && CheckDelay(Display_Timer)) || DebugDisplayAnforderung) && UebertragungAbgeschlossen) |
{ |
if(DisplayLine > 3)// new format |
{ |
Menu(); |
SendOutData('H', FC_ADDRESS, 1, (uint8_t *)DisplayBuff, 80); |
} |
else // old format |
{ |
LCD_printfxy(0,0,"!!! INCOMPATIBLE !!!"); |
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), (uint8_t *)DisplayBuff, 20); |
if(DisplayLine++ > 3) DisplayLine = 0; |
} |
Display_Timer = SetDelay(Display_Interval); |
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 |
{ |
unsigned char label[16]; // local sram buffer |
memcpy_P(label, ANALOG_TEXT[DebugTextAnforderung], 16); // read lable from flash to sra |
SendOutData('A', FC_ADDRESS, 2, (unsigned char *)&DebugTextAnforderung, sizeof(DebugTextAnforderung),label, 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.78b/uart.h |
---|
0,0 → 1,135 |
#ifndef _UART_H |
#define _UART_H |
#define printf_P(format, args...) _printf_P(&uart_putchar, format , ## args) |
#define printf(format, args...) _printf_P(&uart_putchar, PSTR(format) , ## args) |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
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 void 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.78b/version.txt |
---|
0,0 → 1,364 |
------- |
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 |
0.77a H.Buss 11.11.2009 |
- Erweiterung auf 12 Kanäle |
- Bei Koptertool-Kanalabfrage kein Empfangsausfall-Piepsen |
- serielle Kanalerweiterung eingebaut -> PPM_in auf 25 erweitert |
- Servos3-5 einstellbar |
- neues Kommando "f" -> schaltet auf anderen Parametersatz um |
0.77b H.Buss 09.12.2009 |
- JetiBox: Menü wird übertragen |
- neu: FCFlags |= FCFLAG_I2CERR; |
- LED-Warn-Blinken nun mit festem Timing und abschaltbar |
0.77c H.Buss 07.01.2010 |
- zwei weitere Spektrum-Varianten implementiert |
0.77d H.Buss 25.01.2010 |
- Strom-Messung eingebaut |
0.78a H.Buss 03.02.2010 |
- Bugfix: Settingsumschaltung im Flug |
/tags/V0.78b |
---|
Property changes: |
Added: tsvn:logminsize |
+8 |
\ No newline at end of property |