UPD: usart control now with steer and speed as control values. Btw this is not tested yet but I don't see why it shouldn't work ;)

This commit is contained in:
Niklas Fauth 2018-06-11 14:48:58 +02:00
parent b3fe48a832
commit 2d2a9c4d11
3 changed files with 380 additions and 377 deletions

View File

@ -21,7 +21,8 @@
#define DEBUG_SERIAL_ASCII // human readable output. i.e. "345;1337;0;0\n\r"
#define CONTROL_SERIAL_USART2
#define CONTROL_BAUD 9600
#define CONTROL_BAUD 9600 // control via usart from eg an Arduino or raspberry
// for Arduino, use: while(1) {Serial.write((int16_t) steer); Serial.write((int16_t) speed); delay(10);} or so
//#define DEBUG_I2C_LCD // standard 16x2 or larger text-lcd via i2c-converter on right sensor board cable

View File

@ -42,8 +42,8 @@ int cmd3;
typedef struct{
int16_t motorR;
int16_t motorL;
int16_t steer;
int16_t speed;
//uint32_t crc;
} Serialcommand;
@ -151,10 +151,10 @@ int main(void) {
//TODO while(1);
}
LCD_ClearDisplay(&lcd);
LCD_ClearDisplay(&lcd);
HAL_Delay(5);
LCD_SetLocation(&lcd, 0, 0);
LCD_WriteString(&lcd, "Hover V2.0");
LCD_WriteString(&lcd, "Hover V2.0");
LCD_SetLocation(&lcd, 0, 1);
LCD_WriteString(&lcd, "Initializing...");
#endif
@ -193,8 +193,10 @@ int main(void) {
#endif
#ifdef CONTROL_SERIAL_USART2
cmd1 = CLAMP((int16_t)command.motorR, -1000, 1000);
cmd2 = CLAMP((int16_t)command.motorL, -1000, 1000);
cmd1 = CLAMP((int16_t)command.steer, -1000, 1000);
cmd2 = CLAMP((int16_t)command.speed, -1000, 1000);
timeout = 0;
#endif

View File

@ -1,23 +1,23 @@
:020000040800F2
:1000000000C00020694000081D4000082140000891
:1000100025400008294000082D400008000000008D
:100020000000000000000000000000003140000857
:100030003540000800000000394000083D4000083D
:10004000B9400008B9400008B9400008B9400008AC
:10005000B9400008B9400008B9400008B94000089C
:10006000B9400008B9400008B9400008B938000894
:10007000B9400008B9400008B9400008B94000087C
:100080004940000859400008B9400008B94000083C
:10009000B9400008B9400008B9400008B94000085C
:1000A000B9400008B9400008B9400008B94000084C
:1000B000B9400008B9400008B9400008B94000083C
:1000C000B9400008B9400008B9400008B94000082C
:1000D000B9400008B9400008B9400008B94000081C
:1000E000B9400008B9400008B9400008B94000080C
:1000F000B9400008B9400008B9400008B9400008FC
:10010000B9400008B9400008B9400008B9400008EB
:10011000B9400008B9400008B9400008B9400008DB
:10012000B9400008B9400008B9400008B9400008CB
:1000000000C0002071400008254000082940000879
:100010002D40000831400008354000080000000075
:10002000000000000000000000000000394000084F
:100030003D40000800000000414000084540000825
:10004000C1400008C1400008C1400008C14000088C
:10005000C1400008C1400008C1400008C14000087C
:10006000C1400008C1400008C1400008C138000874
:10007000C1400008C1400008C1400008C14000085C
:100080005140000861400008C1400008C14000081C
:10009000C1400008C1400008C1400008C14000083C
:1000A000C1400008C1400008C1400008C14000082C
:1000B000C1400008C1400008C1400008C14000081C
:1000C000C1400008C1400008C1400008C14000080C
:1000D000C1400008C1400008C1400008C1400008FC
:1000E000C1400008C1400008C1400008C1400008EC
:1000F000C1400008C1400008C1400008C1400008DC
:10010000C1400008C1400008C1400008C1400008CB
:10011000C1400008C1400008C1400008C1400008BB
:10012000C1400008C1400008C1400008C1400008AB
:1001300000000000000000000000000000000000BF
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
@ -32,9 +32,9 @@
:0401E0005FF8E0F1F3
:1001E80010B5054C237833B9044B13B10448AFF369
:1001F80000800123237010BD88000020000000004B
:100208005449000808B5064B1BB106480649AFF328
:100208005C49000808B5064B1BB106480649AFF320
:1002180000800648036813B1054B03B1984708BD31
:1002280000000000544900088C00002088000020CD
:10022800000000005C4900088C00002088000020C5
:100238000000000081F0004102E000BF83F00043AD
:1002480030B54FEA41044FEA430594EA050F08BF69
:1002580090EA020F1FBF54EA000C55EA020C7FEA2D
@ -311,7 +311,7 @@
:1013480013F4803F0CD00B4B5B68C3F340430B4452
:1013580013F8143C0848B0FBF3F002FB00F004E07B
:10136800064800FB02F000E0034806B030BC7047B6
:101378006C4900080010024000127A0000093D0084
:10137800744900080010024000127A0000093D007C
:101388002DE9F04104460D46614B1B6803F0070345
:101398008B420BD25E4B1A6822F007020A431A608E
:1013A8001B6803F007038B4240F09980236813F011
@ -337,12 +337,12 @@
:1014E800BDE8F0810120BDE8F0810120BDE8F08170
:1014F8000120BDE8F0810320BDE8F0810320BDE8AC
:10150800F0810320BDE8F0810120BDE8F08100BF33
:10151800002002400010024080490008000000201E
:101518000020024000100240884900080000002016
:10152800014B1868704700BF0000002008B5FFF79E
:10153800F7FF044B5B68C3F30223034AD35CD8402C
:1015480008BD00BF001002409049000808B5FFF729
:1015480008BD00BF001002409849000808B5FFF721
:10155800E7FF044B5B68C3F3C223034AD35CD8405C
:1015680008BD00BF001002409049000830B4036A6B
:1015680008BD00BF001002409849000830B4036A63
:1015780023F001030362026A4368856925F0730555
:101588000C68254322F002028C682243104CA042CA
:1015980003D004F50064A04205D122F00802CC680B
@ -842,7 +842,7 @@
:10347800FEF716FDFEF754F8084BA3FB0020800961
:10348800FEF7CCFB0420FEF7DFFB4FF0FF302146B0
:103498002246FEF785FB17B030BD00BFD34D621042
:1034A8002DE9F04F83B0FEF7A3FD9D4CA36943F0CF
:1034A8002DE9F04F83B0FEF7A3FD9F4CA36943F0CD
:1034B8000103A361A36903F001030193019B0320A6
:1034C800FEF75CFB6FF00B0000210A46FEF768FB75
:1034D8006FF00A0000210A46FEF762FB6FF0090050
@ -851,348 +851,348 @@
:103508006FF0010000210A46FEF74AFB4FF0FF303A
:1035180000210A46FEF744FBFFF788FF636923F0A2
:1035280001036361FFF792FCFFF79CFDFFF792FE32
:10353800FFF724FFFFF73EFC7A4820210122FEF71F
:10354800A5FC7948FEF764FE7848FEF761FE08247A
:10355800774E642504E034702846FEF769FD013C87
:10356800002CF8DA4FF0000A714B83F800A071487C
:1035780004210122FEF78AFCFFF78EFB6E486F4993
:103588000422FFF7A3F801226D4B1A70D34601E01D
:10359800C346A2460520FEF74BFD684B1B881BB2AD
:1035A800B3F57A7F0CDC654B1B881BB213F57A7F69
:1035B80003DB624B1B881BB200E0624B984601E0BC
:1035C8004FF47A78604BC3F800805C4B5B881BB281
:1035D800B3F57A7F0BDC594B5B881BB213F57A7F06
:1035E80003DB564B5E8836B203E0564E01E04FF4DB
:1035F8007A76564B1E60564F3868FCF76DFF42A32B
:10360800D3E90023FCF7CEFF04460D464046FCF7FD
:1036180063FF3FA3D3E90023FCF7C4FF02460B4630
:1036280020462946FCF70CFEFDF756FA804638601E
:10363800484F3868FCF750FF33A3D3E90023FCF761
:10364800B1FF04460D463046FCF746FF30A3D3E9E8
:103658000023FCF7A7FF02460B4620462946FCF745
:10366800EFFDFDF739FA3860FCF736FF00223A4BD8
:10367800FCF798FF06460F464046FCF72DFF002250
:10368800354BFCF78FFF04460D4630463946224637
:103698002B46FCF7D3FD8046894600222F4BFDF7C9
:1036A80011FA80B9404649461BA3D3E90023FDF728
:1036B800EBF928B940464946FDF70EFA804604E082
:1036C800DFF8808001E04FF47A78304639462246A8
:1036D8002B46FCF7B5FD04460D4600221F4BFDF7AF
:1036E800F1F900283CD1204629460BA3D3E9002351
:1036F800FDF7CAF928B920462946FDF7EDF9044631
:1037080030E0104C2EE000BFCDCCCCCCCCCCEC3F84
:103718009A9999999999B93F0000000000408FC083
:103728000010024000080140740200202801002017
:10373800C4000020000C0140FC0200207C03002093
:10374800BC00002018FCFFFF980300208403002021
:1037580088030020900300200000E03F00408F40D5
:103768004FF47A740220414600F01AFC03202146E7
:1037780000F016FC0AF132039C4215DAAAF1320A6B
:10378800544511DD0BF1320398450DDAABF1320BDC
:10379800D84509DD3A4B1B68042B05D8C8F100024F
:1037A800384B1A60384B1C6000F000FC3748022187
:1037B800FEF764FBF8B10022354B1A70334D022432
:1037C80028462146FEF75AFB0028F9D10024314B40
:1037D8001C70314B1C702F4E642504E03470284651
:1037E800FEF726FC0134072CF8DD284820210022AA
:1037F800FEF74CFBFEE7294B1D6828462849FDF7D4
:103808003FFB58B128462749FDF758FB30B1052240
:10381800204B1A700822204B1A70B9E62846214915
:10382800FDF72EFB58B128461F49FDF747FB30B17D
:103838000522184B1A700122174B1A70A8E6284661
:103848001949FDF71DFBA0B10024134B1C70104B48
:103858001C70104E642504E034702846FEF7E8FB1F
:103868000134072CF8DD094820210022FEF70EFB61
:10387800FEE70023074A1370074A137088E600BF63
:1038880004000020C8000020C000002000080140FB
:10389800BC000020C4000020A80000201800002060
:1038A80000001042000004420000F841AFF300801D
:1038B8002DE9F8430222844B5A60844B1B68B3F508
:1038C8007A7F3BDA0133814A1360814B998889B248
:1038D800804A1068014401EBD17149101160D98800
:1038E80089B27D4A1068014401EBD1714910116019
:1038F800198889B2794A1068014401EBD1714910DD
:103908001160598889B2764A1068014401EBD17177
:1039180049101160598989B2724A1068014401EB53
:10392800D171491011601A8992B26F4B19680A4413
:1039380002EBD27252101A60BDE8F8836B4B1E88F6
:103948006B4BA3FB06135B09642202FB13639BB258
:1039580023BB684F3868FCF7D1FD53A3D3E9002394
:10396800FCF720FE04460D46594B988980B2FDF7B6
:10397800E1F9FCF7C3FD4EA3D3E90023FCF712FEDF
:103988004DA3D3E90023FCF70DFE02460B46204663
:103998002946FCF755FCFDF7C7F838604C4B5889A9
:1039A80080B2504B1C68001BFCF796FD44A3D3E97A
:1039B8000023FCF7F7FD00220023FDF765F880B12E
:1039C800434B588980B2001BFCF786FD3CA3D3E922
:1039D8000023FCF7E7FD0022474BFDF755F8B8B97F
:1039E8000FE03B4B588980B2001BFCF775FD34A3F0
:1039F800D3E90023FCF7D6FD0022404BFDF762F81F
:103A080030B93F4B1B68052B02D83E4B1B782BB9AE
:103A18003D4B5A6C22F400425A6404E03A4B5A6C0B
:103A280042F400425A642A4B188980B22E4B1C6813
:103A3800001BFCF751FD22A3D3E90023FCF7B2FDDC
:103A480000220023FDF720F880B1214B188980B2AD
:103A5800001BFCF741FD1AA3D3E90023FCF7A2FDE4
:103A68000022254BFDF710F8C0B90FE0184B188954
:103A780080B2001BFCF730FD11A3D3E90023FCF74B
:103A880091FD00221D4BFDF71DF838B91C4B1B6832
:103A9800052B03D81B4B1B78002B39D11B4B5A6CB9
:103AA80022F400425A6438E02B8716D9CEF7EF3F4C
:103AB800F5E4E827181C9B3FFCA9F1D24D62503F62
:103AC8007B14AE47E17A943F00000240A400002036
:103AD800E80200200C00002008000020140000204C
:103AE800100000201C00002020000020CC00002036
:103AF8001F85EB511800002000002EC000002E404A
:103B080004000020BC00002000340140002C0140CB
:103B18008E4B5A6C42F400425A648D4B9A6812F0EC
:103B2800200F14BF00220122996811F0400F14BF22
:103B3800002101219B6813F0800F14BF0020012091
:103B4800844B9C6814F4806F14BF002501259C6881
:103B580014F4006F14BF002701279B6813F4805FDB
:103B680001EB400302EB43037B4CE25C7B4B1A60A6
:103B78001A6802F102021A601868794981FB00820A
:103B8800A2EBE07202EB42024FEA4202C2EB0002F1
:103B98001A600CBF022200223A4405EB4202A05CE4
:103BA800704A1060106802301060106881FB009144
:103BB800A1EBE07101EB41014900411A11601B685A
:103BC800694A908880B269490968441AD18889B2DB
:103BD800674802688A1A052B18D8DFE803F003073C
:103BE8000A0D1013A21A634B1A6012E0614B1C6095
:103BF8000FE0604B1C600CE05E4B1A6009E05D4B07
:103C08001A6006E0121B5B4B1A6002E00022594B57
:103C18001A600136B6B2584B1E80584B1B78ABB1B0
:103C28005749A1FB0621090B564A1278013291FB2C
:103C3800F2F002FB10124AB996FBF3F203FB12668C
:103C48004EB951481021FEF727F904E04E481021DB
:103C58000022FEF71BF94D4B1A68404B1B68052BD9
:103C68001AD8DFE803F003070B0E11151546524268
:103C7800002614E056421546002210E05642002560
:103C88000DE0554200260AE055421646002206E09D
:103C980016465242002502E00022154616463C4BC5
:103CA8001868304B1B68052B1ED8DFE803F00308A3
:103CB8000D111519074640424FF0000C17E0C0F1EE
:103CC800000C0746002012E0C0F1000C00270EE0AF
:103CD80047424FF0000C0AE047428446002006E0C5
:103CE80084464042002702E0002007468446274BCE
:103CF8001968002950DD274B1968184B1C680534D2
:103D0800174B83FB0493A3EBE47303EB43035B00C0
:103D1800E31A052B6FD8DFE803F003070B0E111524
:103D28000B46494200246BE04C420B46002167E0F9
:103D38004C42002364E04B42002461E04B420C46B5
:103D480000215DE00C464942002359E0002C014067
:103D5800000C01400010014098490008B000002004
:103D6800ABAAAA2AB8000020E80200200C00002014
:103D780008000020D0000020CC000020C400002053
:103D88005917B7D1A800002000080140C000002042
:103D9800C8000020AC000020784B19684B42784CD2
:103DA800246804F10108774C84FB0894A4EBE874B8
:103DB80004EB44046400C4EB0804052C04D8DFE8D1
:103DC80004F01E070A0E131700210B460C4617E0D5
:103DD8000C46002114E00C461946002310E01C464E
:103DE8000B46214600240BE01C460B46002107E049
:103DF8001C46002304E000210B460C4600E000248A
:103E080026441D4401EB02085F4B1B68002B2ADD8A
:103E18005E4B1A685E4B1C6805345A4B83FB04934F
:103E2800A3EBE47303EB43035B00E31A052B47D8CA
:103E3800DFE803F003070B0E111513465242002169
:103E480043E05142134600223FE0514200233CE048
:103E58005342002139E053421146002235E0114611
:103E68005242002331E0494B1A68534248490C68D2
:103E78000134444981FB0491A1EBE47101EB410158
:103E88004900611A052904D8DFE801F01E070A0E67
:103E9800131700221346114617E01146002214E0BA
:103EA80011461A46002310E0194613460A46002117
:103EB8000BE019461346002207E01946002304E0E8
:103EC80000221346114600E0002161443B440244AD
:103ED80006F57A7640F2C670864203DC0A2EB8BF31
:103EE8000A2601E040F2C6762A48466305F57A7547
:103EF80040F2C670854203DC0A2DB8BF0A2501E0EE
:103F080040F2C6752348856308F57A7440F2C67096
:103F1800844203DC0A2CB8BF0A2401E040F2C674CC
:103F28001C48C46301F57A7140F2C670814203DC13
:103F38000A29B8BF0A2101E040F2C6711648416358
:103F480003F57A7340F2C6718B4203DC0A2BB8BFC3
:103F58000A2301E040F2C6730F498B6302F57A72B7
:103F680040F2C6739A4203DC0A2AB8BF0A2201E06B
:103F780040F2C672084BDA63BDE8F883AC00002053
:103F8800B0000020ABAAAA2AC8000020B400002074
:103F9800B800002000340140002C0140AFF300803D
:103FA800014B23F8101070470004002030B583B08F
:103FB800144C20460021642200F0A2F812490A8815
:103FC8004B888888C98800B2009009B201912046C0
:103FD8000E4912B21BB200F09BF80D4B5B6873B927
:103FE8000B4C236823F001032360064D284600F09C
:103FF800B3F86060E560236843F00103236003B011
:1040080030BD00BF9C03002000040020A049000828
:104018001C000240704700BFFEE700BFFEE700BF7C
:10402800FEE700BFFEE700BF704700BF704700BF54
:10403800704700BF08B5FDF7EDFFFDF717FE08BD97
:1040480008B50248FEF790FC08BD00BFE400002058
:1040580008B50248FEF788FC08BD00BFA40200208E
:10406800002100F004B80D4B5B58435004310C4854
:104078000C4B42189A42FFF4F6AF0B4A00F003B813
:10408800002342F8043B094B9A42FFF4F9AFFEF7CC
:10409800DDFD00F00FF8FFF703FA7047F04900085C
:1040A8000000002088000020880000201404002060
:1040B800FFF7FEBF70B50E4B0E4D0024ED1AAD1084
:1040C8001E46AC4204D056F8242090470134F8E745
:1040D80000F03CFC084D094B0024ED1AAD101E46BB
:1040E800AC4204D056F8242090470134F8E770BD5C
:1040F800E8490008E8490008EC490008E8490008D0
:1041080002440346934202D003F8011BFAE77047C2
:104118000EB400B54FF402719CB0ADF814106FF0F6
:104128000041049107914FF6FF711DABADF81610D1
:10413800084953F8042B02900690086802A90193D5
:1041480000F06EF8029B00221A701CB05DF804EBB8
:1041580003B0704784000020034613F8012B002A9F
:10416800FBD1181A013870472DE9F0478D68814650
:10417800AB420C4692461F4643D38B8913F4906F8B
:104188003DD0266809690222C1EB0608666906EB7C
:10419800460696FBF2F608F101023A44964238BF09
:1041A80016465B050FD5314600F022FB054698B14F
:1041B8002169424600F0B4FAA38923F4906343F0DE
:1041C8008003A38113E0324600F066FB054670B910
:1041D8004846216900F0C8FA0C23C9F80030A389C1
:1041E8004FF0FF3043F04003A381BDE8F08725611D
:1041F80066614544C8EB06062560A6603D46AF42A9
:1042080000D23D462A462068514600F092FAA3683B
:1042180000205B1BA36023681D442560BDE8F08770
:104228002DE9F0439DB003938B8907461C060D4684
:1042380016460CD50B6953B9402100F0D9FA28600D
:10424800286110B90C233B60C7E040236B61002351
:10425800099320238DF8293030238DF82A303346EE
:104268001C4613F8012B1AB9B4EB06090FD002E06B
:10427800252AF5D1F8E73846294632464B46FFF756
:1042880073FF013000F0A480099B4B440993237805
:10429800002B00F09D8000234FF0FF32049307931A
:1042A800059206938DF853301A9304F101094D4E87
:1042B8004C4630462178052200F024FA09F101091C
:1042C800049B28B1861B0120B04003430493EEE70A
:1042D800D90644BF20228DF853201A0744BF2B2249
:1042E8008DF8532022782A2A02D0079B21460EE017
:1042F800039A111D12680391002A01DB079204E05A
:10430800524243F002030792049301340AE00C4638
:1043180022780131303A092A03D80A2000FB032306
:10432800F5E7079323782E2B19D163782A2B09D127
:10433800039B02341A1D1B680392002BB8BF4FF071
:10434800FF330BE0611C00230C4622780131303A20
:10435800092A03D80A2000FB0323F5E70593224E18
:1043680021783046032200F0CDF930B1861B402079
:10437800B040049B01340343049321781B48062270
:10438800661C8DF8281000F0BDF988B1184B33B9B8
:10439800039B073323F007030833039314E003ABAD
:1043A8000093384604A92A46124BAFF3008007E071
:1043B80003AB0093384604A92A460E4B00F08EF84A
:1043C800B0F1FF3F804603D0099B4344099346E779
:1043D800AB895B0601D4099801E04FF0FF301DB0AE
:1043E800BDE8F083B2490008B8490008BC49000894
:1043F80000000000714100082DE9F84315461F46EA
:104408008A680B6906469A42A8BF13462B6091F842
:1044180043200C46DDF820800AB101332B60236865
:10442800990602D52B6802332B60236813F006091E
:104438001DD094F843302268003318BF0123920638
:104448001FD5E118302081F843005A1C94F8451014
:104458002244023382F8431013E03046394604F10F
:1044680019020123C047013007D009F10109E268A8
:104478002B68D31A9945F0DBDBE74FF0FF30BDE836
:10448800F8833046394604F14302C0470130F4D07E
:1044980023682A6803F00603E168042B08BFC2EB0F
:1044A80001052369A2680CBF25EAE57500259A4233
:1044B800C4BFC3EB0203ED184FF00009A9450ADA9F
:1044C8003046394604F11A020123C0470130D4D0DE
:1044D80009F10109F2E70020BDE8F8832DE9FF475B
:1044E8000E7E80466E2E0C4691469A460C9D01F132
:1044F800430000F0A58011D8632E22D009D8002EE1
:1045080000F0AF80582E40F0BF8081F845607B4AAC
:104518004FE0642E1ED0692E1CD0B5E0732E00F03B
:10452800A48009D86F2E2BD0702E40F0AD800B6878
:1045380043F020030B6038E0752E21D0782E34D05C
:10454800A2E02B6801F142071A1D1B682A6081F856
:1045580042309DE022682B6812F0800F03D01A1DAC
:104568002A601D6805E05106F9D51A1D2A60B3F9BD
:104578000050002D39DA2D236D4284F8433034E0A1
:1045880022682B6812F0800F03D01A1D2A601D685C
:1045980004E05206F9D51A1D2A601D88237E574A61
:1045A8006F2B14BF0A2308231BE07823544A84F88E
:1045B80045302368296813F0800F01F104062E6046
:1045C80001D00D6802E05F06FBD50D88DE0744BF09
:1045D80043F0200323601DB9236823F020032360E0
:1045E8001023002184F8431001E0444A0A23666836
:1045F800002EA66003DB216821F00401216005B9C3
:104608006EB104F14201B5FBF3F603FB1655555D97
:104618000F4601F801593546002EF4D100E007464F
:10462800082B0AD12368DD0707D5626823699A42F7
:1046380003DC302307F8013C013FC01B20612CE05C
:1046480009682B6811F0800F626904D0191D296070
:104658001B681A6005E04906F8D5191D29601B6812
:104668001A8000232361074617E02B681A1D2A6069
:104678001F683846FFF770FD63682061984288BF5D
:1046880023612369636005E004F1420784F842600E
:1046980001232361002384F84330CDF800A040466D
:1046A800214603AA4B46FFF7A7FE013002D14FF07F
:1046B800FF301FE0404649463A462369D04701305B
:1046C800F5D023689B0705D4E068039B9842B8BFE0
:1046D80018460FE00025E268039BD31A9D42F3DADF
:1046E8004046494604F119020123D0470130DED083
:1046F8000135F0E704B0BDE8F08700BFC349000802
:10470800D449000810B5C9B202449042034605D006
:104718001C7801308C42F8D1184610BD002010BD1D
:1047280010B50023934203D0CC5CC4540133F9E79D
:1047380010BD814270B501D300230EE08C18A04251
:10474800FAD28518134613F1FF3305D35142661880
:10475800F65C2944CE54F6E770BD934203D0CC5C96
:10476800C4540133F9E770BD30B500293CD051F885
:10477800042C0B1F1D49002AB8BF9B180A680C4659
:1047880012B95A600B6030BD93420DD2196858189F
:10479800904203D15A581144426819605A60236004
:1047A80030BD994203D80A4651680029F9D11468E6
:1047B80015199D420AD11B682344D01888421360FA
:1047C80012D10868034413604B680CE002D90C232B
:1047D800036030BD18681C188C4203D10C68496806
:1047E800204418605960536030BD00BFD8000020D5
:1047F80070B5CD1C25F0030508350C2D38BF0C25E8
:10480800002D06463FDB8D423DD3214B1C681846E0
:104818002146A1B10B685B1B0ED40B2B03D90B608F
:10482800CC18CD501FE08C4202D1626802601AE0B9
:104838004B6863600C4616E00C464968E9E7154C7E
:1048480023681BB9304600F04DF8206029463046F1
:1048580000F048F8431C014615D0C41C24F003049A
:1048680084420AD1256004F10B00231D20F00700C3
:10487800C31A0BD05A42E25070BD3046611A00F09C
:1048880031F80130EED10C233360002070BD00BF39
:10489800D8000020D4000020F8B5064614460D467E
:1048A80021B91146BDE8F840FFF7A2BF1AB9FFF7D2
:1048B8005BFF2046F8BD00F025F8A0420ED2304636
:1048C8002146FFF795FF074650B129462246FFF7D4
:1048D80027FF30462946FFF747FF01E02846F8BD85
:1048E8003846F8BD38B5064C00230546084623600F
:1048F80000F012F8431C02D1236803B12B6038BDC5
:104908001004002051F8040C002802DA04390B586E
:104918001844043870470000094A136863B1184402
:104928006946884202D8106018467047054B0C2229
:104938001A604FF0FF307047034B1360EFE700BF7A
:10494800DC0000201004002018040020F8B500BF87
:10495800F8BC08BC9E467047F8B500BFF8BC08BC58
:044968009E467047B0
:10496C0002030405060708090A0B0C0D0E0F1010A4
:10497C00010200000000000000000000010203041E
:10498C0006070809000000000102030400000201F0
:10499C000405030025693B25693B25693B25690A0C
:1049AC000D0000004300232D302B2000686C4C00C0
:1049BC006566674546470030313233343536373813
:1049CC003941424344454600303132333435363771
:0C49DC0038396162636465660000000009
:0449E8000D020008B4
:0449EC00E9010008D5
:1049F00000A24A0464000000D0070000D0070000B5
:104A0000D0070000D007000000002042D0070000BF
:104A1000D0070000000000000000000000000000BF
:104A20000000000000000000000000000000000086
:104A300000000000B0490008000000000000000075
:104A40000000000000000000000000000000000066
:104A50000000000000000000000000000000000056
:104A60000000000000000000000000000000000046
:084A70000000000024000020FA
:040000050800406946
:10353800FFF724FFFFF73EFC7C4820210122FEF71D
:10354800A5FC7B48FEF764FE7A48FEF761FE082476
:10355800794E642504E034702846FEF769FD013C85
:10356800002CF8DA4FF0000A734B83F800A0734878
:1035780004210122FEF78AFCFFF78EFB704871498F
:103588000422FFF7A3F801226F4B1A70D34601E01B
:10359800C346A2460520FEF74BFD6A4B1B881BB2AB
:1035A800B3F57A7F0CDC674B1B881BB213F57A7F67
:1035B80003DB644B1B881BB200E0644B984601E0B8
:1035C8004FF47A78624BC3F800805E4B5B881BB27D
:1035D800B3F57A7F0BDC5B4B5B881BB213F57A7F04
:1035E80003DB584B5E8836B203E0584E01E04FF4D7
:1035F8007A76584B1E600022574B1A60574F38682E
:10360800FCF76AFF42A3D3E90023FCF7CBFF04468B
:103618000D464046FCF760FF3FA3D3E90023FCF7C3
:10362800C1FF02460B4620462946FCF709FEFDF776
:1036380053FA804638604A4F3868FCF74DFF34A388
:10364800D3E90023FCF7AEFF04460D463046FCF7ED
:1036580043FF31A3D3E90023FCF7A4FF02460B463E
:1036680020462946FCF7ECFDFDF736FA3860FCF7F2
:1036780033FF00223B4BFCF795FF06460F464046BA
:10368800FCF72AFF0022374BFCF78CFF04460D4657
:103698003046394622462B46FCF7D0FD80468946FF
:1036A8000022314BFDF70EFA80B9404649461CA36B
:1036B800D3E90023FDF7E8F928B940464946FDF764
:1036C8000BFA804604E0DFF8848001E04FF47A7852
:1036D8003046394622462B46FCF7B2FD04460D46D5
:1036E8000022214BFDF7EEF900283FD1204629465C
:1036F8000BA3D3E90023FDF7C7F928B920462946CB
:10370800FDF7EAF9044633E0104C31E0AFF30080EE
:10371800CDCCCCCCCCCCEC3F9A9999999999B93F1E
:103728000000000000408FC0001002400008014067
:103738007402002028010020C4000020000C014071
:10374800FC0200207C030020BC00002018FCFFFFC6
:103758009803002084030020040000208803002030
:10376800900300200000E03F00408F404FF47A743F
:103778000220414600F018FC0320214600F014FC0A
:103788000AF132039C4215DAAAF1320A544511DDD6
:103798000BF1320398450DDAABF1320BD84509DD50
:1037A8003A4B1B68042B05D8C8F10002384B1A6045
:1037B800384B1C6000F0FEFB37480221FEF75EFB29
:1037C800F8B10022354B1A70334D022428462146A1
:1037D800FEF754FB0028F9D10024314B1C70314B03
:1037E8001C702F4E642504E034702846FEF720FC38
:1037F8000134072CF8DD284820210022FEF746FB7B
:10380800FEE7294B1D6828462849FDF739FB58B1C2
:1038180028462749FDF752FB30B10522204B1A7084
:103828000822204B1A70B3E628462149FDF728FBE9
:1038380058B128461F49FDF741FB30B10522184B06
:103848001A700122174B1A70A2E628461949FDF78B
:1038580017FBA0B10024134B1C70104B1C70104EAA
:10386800642504E034702846FEF7E2FB0134072C97
:10387800F8DD094820210022FEF708FBFEE70023B7
:10388800074A1370074A137082E600BF040000203D
:10389800C8000020C000002000080140BC00002033
:1038A800C4000020A80000201800002000001042DA
:1038B800000004420000F8412DE9F8430222844B3D
:1038C8005A60844B1B68B3F57A7F3BDA0133814A2F
:1038D8001360814B998889B2804A1068014401EBD2
:1038E800D17149101160D98889B27D4A10680144A4
:1038F80001EBD17149101160198889B2794A1068B1
:10390800014401EBD17149101160598889B2764A96
:103918001068014401EBD17149101160598989B2CD
:10392800724A1068014401EBD171491011601A897B
:1039380092B26F4B19680A4402EBD27252101A60A5
:10394800BDE8F8836B4B1E886B4BA3FB06135B0922
:10395800642202FB13639BB223BB684F3868FCF7F1
:10396800CDFD53A3D3E90023FCF71CFE04460D4606
:10397800594B988980B2FDF7DDF9FCF7BFFD4EA3DE
:10398800D3E90023FCF70EFE4DA3D3E90023FCF78F
:1039980009FE02460B4620462946FCF751FCFDF776
:1039A800C3F838604C4B588980B2504B1C68001BD8
:1039B800FCF792FD44A3D3E90023FCF7F3FD0022B2
:1039C8000023FDF761F880B1434B588980B2001B92
:1039D800FCF782FD3CA3D3E90023FCF7E3FD0022BA
:1039E800474BFDF751F8B8B90FE03B4B588980B207
:1039F800001BFCF771FD34A3D3E90023FCF7D2FDCB
:103A08000022404BFDF75EF830B93F4B1B68052B91
:103A180002D83E4B1B782BB93D4B5A6C22F400421E
:103A28005A6404E03A4B5A6C42F400425A642A4BF6
:103A3800188980B22E4B1C68001BFCF74DFD22A391
:103A4800D3E90023FCF7AEFD00220023FDF71CF8A4
:103A580080B1214B188980B2001BFCF73DFD1AA3E9
:103A6800D3E90023FCF79EFD0022254BFDF70CF857
:103A7800C0B90FE0184B188980B2001BFCF72CFD69
:103A880011A3D3E90023FCF78DFD00221D4BFDF7A0
:103A980019F838B91C4B1B68052B03D81B4B1B782E
:103AA800002B39D11B4B5A6C22F400425A6438E07F
:103AB8002B8716D9CEF7EF3FF5E4E827181C9B3F74
:103AC800FCA9F1D24D62503F7B14AE47E17A943F96
:103AD80000000240A4000020E80200200C000020A2
:103AE8000800002014000020100000201C00002006
:103AF80020000020CC0000201F85EB51180000207A
:103B080000002EC000002E4004000020BC00002051
:103B180000340140002C01408E4B5A6C42F40042A4
:103B28005A648D4B9A6812F0200F14BF00220122AC
:103B3800996811F0400F14BF002101219B6813F010
:103B4800800F14BF00200120844B9C6814F4806F00
:103B580014BF002501259C6814F4006F14BF0027CA
:103B680001279B6813F4805F01EB400302EB4303DA
:103B78007B4CE25C7B4B1A601A6802F102021A6005
:103B88001868794981FB0082A2EBE07202EB4202DD
:103B98004FEA4202C2EB00021A600CBF0222002266
:103BA8003A4405EB4202A05C704A1060106802308B
:103BB8001060106881FB0091A1EBE07101EB4101FD
:103BC8004900411A11601B68694A908880B26949A6
:103BD8000968441AD18889B2674802688A1A052B8D
:103BE80018D8DFE803F003070A0D1013A21A634B75
:103BF8001A6012E0614B1C600FE0604B1C600CE027
:103C08005E4B1A6009E05D4B1A6006E0121B5B4BC5
:103C18001A6002E00022594B1A600136B6B2584BBE
:103C28001E80584B1B78ABB15749A1FB0621090BE5
:103C3800564A1278013291FBF2F002FB10124AB98F
:103C480096FBF3F203FB12664EB951481021FEF7BA
:103C580023F904E04E4810210022FEF717F94D4BD6
:103C68001A68404B1B68052B1AD8DFE803F00307D6
:103C78000B0E111515465242002614E05642154601
:103C8800002210E0564200250DE0554200260AE0C9
:103C980055421646002206E016465242002502E02A
:103CA8000022154616463C4B1868304B1B68052BFE
:103CB8001ED8DFE803F003080D1115190746404226
:103CC8004FF0000C17E0C0F1000C0746002012E08E
:103CD800C0F1000C00270EE047424FF0000C0AE04C
:103CE80047428446002006E084464042002702E01E
:103CF800002007468446274B1968002950DD274BCA
:103D08001968184B1C680534174B83FB0493A3EB05
:103D1800E47303EB43035B00E31A052B6FD8DFE87A
:103D280003F003070B0E11150B46494200246BE004
:103D38004C420B46002167E04C42002364E04B42B2
:103D4800002461E04B420C4600215DE00C464942EC
:103D5800002359E0002C0140000C014000100140F4
:103D6800A0490008B0000020ABAAAA2AB800002089
:103D7800E80200200C00002008000020D0000020ED
:103D8800CC000020C40000205917B7D1A80000209B
:103D980000080140C0000020C8000020AC0000203E
:103DA800784B19684B42784C246804F10108774C29
:103DB80084FB0894A4EBE87404EB44046400C4EBAB
:103DC8000804052C04D8DFE804F01E070A0E1317B0
:103DD80000210B460C4617E00C46002114E00C4667
:103DE8001946002310E01C460B46214600240BE030
:103DF8001C460B46002107E01C46002304E0002176
:103E08000B460C4600E0002426441D4401EB020842
:103E18005F4B1B68002B2ADD5E4B1A685E4B1C68E3
:103E280005345A4B83FB0493A3EBE47303EB43037E
:103E38005B00E31A052B47D8DFE803F003070B0EF6
:103E4800111513465242002143E051421346002205
:103E58003FE0514200233CE05342002139E0534205
:103E68001146002235E011465242002331E0494B09
:103E78001A68534248490C680134444981FB04914B
:103E8800A1EBE47101EB41014900611A052904D84D
:103E9800DFE801F01E070A0E131700221346114629
:103EA80017E01146002214E011461A46002310E0DC
:103EB800194613460A4600210BE01946134600220C
:103EC80007E01946002304E000221346114600E0EB
:103ED800002161443B44024406F57A7640F2C670FC
:103EE800864203DC0A2EB8BF0A2601E040F2C676F5
:103EF8002A48466305F57A7540F2C670854203DCA8
:103F08000A2DB8BF0A2501E040F2C675234885632B
:103F180008F57A7440F2C670844203DC0A2CB8BFF4
:103F28000A2401E040F2C6741C48C46301F57A71A2
:103F380040F2C670814203DC0A29B8BF0A2101E0B9
:103F480040F2C6711648416303F57A7340F2C671B0
:103F58008B4203DC0A2BB8BF0A2301E040F2C67388
:103F68000F498B6302F57A7240F2C6739A4203DCFA
:103F78000A2AB8BF0A2201E040F2C672084BDA6387
:103F8800BDE8F883AC000020B0000020ABAAAA2A44
:103F9800C8000020B4000020B80000200034014010
:103FA800002C0140AFF30080014B23F8101070473C
:103FB8000004002030B583B0144C20460021642250
:103FC80000F0A2F812490A884B888888C98800B28C
:103FD800009009B2019120460E4912B21BB200F0BE
:103FE8009BF80D4B5B6873B90B4C236823F00103F6
:103FF8002360064D284600F0B3F86060E56023684A
:1040080043F00103236003B030BD00BF9C030020D0
:1040180000040020A84900081C000240704700BFA7
:10402800FEE700BFFEE700BFFEE700BFFEE700BFF8
:10403800704700BF704700BF704700BF08B5FDF765
:10404800E9FFFDF713FE08BD08B50248FEF78CFC32
:1040580008BD00BFE400002008B50248FEF784FC54
:1040680008BD00BFA4020020002100F004B80D4BD9
:104078005B58435004310C480C4B42189A42FFF4E9
:10408800F6AF0B4A00F003B8002342F8043B094B93
:104098009A42FFF4F9AFFEF7D9FD00F00FF8FFF7E9
:1040A800FFF97047F8490008000000208800002048
:1040B8008800002014040020FFF7FEBF70B50E4BE7
:1040C8000E4D0024ED1AAD101E46AC4204D056F831
:1040D800242090470134F8E700F03CFC084D094BD8
:1040E8000024ED1AAD101E46AC4204D056F8242028
:1040F80090470134F8E770BDF0490008F04900081E
:10410800F4490008F049000802440346934202D0EB
:1041180003F8011BFAE770470EB400B54FF40271BB
:104128009CB0ADF814106FF00041049107914FF660
:10413800FF711DABADF81610084953F8042B029017
:104148000690086802A9019300F06EF8029B00220D
:104158001A701CB05DF804EB03B0704784000020AF
:10416800034613F8012B002AFBD1181A01387047AF
:104178002DE9F0478D688146AB420C4692461F46B2
:1041880043D38B8913F4906F3DD0266809690222C6
:10419800C1EB0608666906EB460696FBF2F608F1DF
:1041A80001023A44964238BF16465B050FD53146A0
:1041B80000F022FB054698B12169424600F0B4FAA6
:1041C800A38923F4906343F08003A38113E032466C
:1041D80000F066FB054670B94846216900F0C8FA48
:1041E8000C23C9F80030A3894FF0FF3043F0400397
:1041F800A381BDE8F087256166614544C8EB0606E2
:104208002560A6603D46AF4200D23D462A4620685A
:10421800514600F092FAA36800205B1BA360236854
:104228001D442560BDE8F0872DE9F0439DB0039358
:104238008B8907461C060D4616460CD50B6953B9E3
:10424800402100F0D9FA2860286110B90C233B609E
:10425800C7E040236B610023099320238DF82930A0
:1042680030238DF82A3033461C4613F8012B1AB92F
:10427800B4EB06090FD002E0252AF5D1F8E7384655
:10428800294632464B46FFF773FF013000F0A48001
:10429800099B4B4409932378002B00F09D80002351
:1042A8004FF0FF3204930793059206938DF853302D
:1042B8001A9304F101094D4E4C46304621780522E7
:1042C80000F024FA09F10109049B28B1861B01209A
:1042D800B04003430493EEE7D90644BF20228DF88B
:1042E80053201A0744BF2B228DF8532022782A2AFC
:1042F80002D0079B21460EE0039A111D1268039114
:10430800002A01DB079204E0524243F002030792BD
:10431800049301340AE00C4622780131303A092A24
:1043280003D80A2000FB0323F5E7079323782E2BF5
:1043380019D163782A2B09D1039B02341A1D1B68F3
:104348000392002BB8BF4FF0FF330BE0611C002332
:104358000C4622780131303A092A03D80A2000FB9A
:104368000323F5E70593224E21783046032200F017
:10437800CDF930B1861B4020B040049B0134034383
:10438800049321781B480622661C8DF8281000F03B
:10439800BDF988B1184B33B9039B073323F00703E2
:1043A8000833039314E003AB0093384604A92A4664
:1043B800124BAFF3008007E003AB0093384604A923
:1043C8002A460E4B00F08EF8B0F1FF3F804603D02E
:1043D800099B4344099346E7AB895B0601D40998D6
:1043E80001E04FF0FF301DB0BDE8F083BA49000886
:1043F800C0490008C44900080000000079410008CD
:104408002DE9F84315461F468A680B6906469A4205
:10441800A8BF13462B6091F843200C46DDF8208096
:104428000AB101332B602368990602D52B68023341
:104438002B60236813F006091DD094F843302268D6
:10444800003318BF012392061FD5E118302081F8E8
:1044580043005A1C94F845102244023382F8431052
:1044680013E03046394604F119020123C0470130F0
:1044780007D009F10109E2682B68D31A9945F0DBE6
:10448800DBE74FF0FF30BDE8F8833046394604F1EA
:104498004302C0470130F4D023682A6803F00603BA
:1044A800E168042B08BFC2EB01052369A2680CBFB1
:1044B80025EAE57500259A42C4BFC3EB0203ED184F
:1044C8004FF00009A9450ADA3046394604F11A02C4
:1044D8000123C0470130D4D009F10109F2E70020D7
:1044E800BDE8F8832DE9FF470E7E80466E2E0C4608
:1044F80091469A460C9D01F1430000F0A58011D821
:10450800632E22D009D8002E00F0AF80582E40F03C
:10451800BF8081F845607B4A4FE0642E1ED0692E2B
:104528001CD0B5E0732E00F0A48009D86F2E2BD0D4
:10453800702E40F0AD800B6843F020030B6038E02C
:10454800752E21D0782E34D0A2E02B6801F14207D5
:104558001A1D1B682A6081F842309DE022682B688A
:1045680012F0800F03D01A1D2A601D6805E051065D
:10457800F9D51A1D2A60B3F90050002D39DA2D2318
:104588006D4284F8433034E022682B6812F0800FC3
:1045980003D01A1D2A601D6804E05206F9D51A1DB9
:1045A8002A601D88237E574A6F2B14BF0A230823CD
:1045B8001BE07823544A84F845302368296813F0AF
:1045C800800F01F104062E6001D00D6802E05F063D
:1045D800FBD50D88DE0744BF43F0200323601DB9D7
:1045E800236823F0200323601023002184F843105C
:1045F80001E0444A0A236668002EA66003DB2168AE
:1046080021F00401216005B96EB104F14201B5FB46
:10461800F3F603FB1655555D0F4601F8015935466B
:10462800002EF4D100E00746082B0AD12368DD07E5
:1046380007D5626823699A4203DC302307F8013CF6
:10464800013FC01B20612CE009682B6811F0800F26
:10465800626904D0191D29601B681A6005E04906C3
:10466800F8D5191D29601B681A80002323610746A5
:1046780017E02B681A1D2A601F683846FFF770FD7F
:1046880063682061984288BF23612369636005E0FD
:1046980004F1420784F8426001232361002384F86F
:1046A8004330CDF800A04046214603AA4B46FFF709
:1046B800A7FE013002D14FF0FF301FE040464946C7
:1046C8003A462369D0470130F5D023689B0705D4C3
:1046D800E068039B9842B8BF18460FE00025E268DF
:1046E800039BD31A9D42F3DA4046494604F1190266
:1046F8000123D0470130DED00135F0E704B0BDE832
:10470800F08700BFCB490008DC49000810B5C9B2E2
:1047180002449042034605D01C7801308C42F8D1FF
:10472800184610BD002010BD10B50023934203D0D9
:10473800CC5CC4540133F9E710BD814270B501D394
:1047480000230EE08C18A042FAD28518134613F104
:10475800FF3305D351426618F65C2944CE54F6E778
:1047680070BD934203D0CC5CC4540133F9E770BDEB
:1047780030B500293CD051F8042C0B1F1D49002AE4
:10478800B8BF9B180A680C4612B95A600B6030BD56
:1047980093420DD219685818904203D15A581144BF
:1047A800426819605A60236030BD994203D80A46AE
:1047B80051680029F9D1146815199D420AD11B685E
:1047C8002344D0188842136012D108680344136048
:1047D8004B680CE002D90C23036030BD18681C1824
:1047E8008C4203D10C6849682044186059605360B2
:1047F80030BD00BFD800002070B5CD1C25F00305E2
:1048080008350C2D38BF0C25002D06463FDB8D42A0
:104818003DD3214B1C6818462146A1B10B685B1B90
:104828000ED40B2B03D90B60CC18CD501FE08C4253
:1048380002D1626802601AE04B6863600C4616E0B9
:104848000C464968E9E7154C23681BB9304600F067
:104858004DF820602946304600F048F8431C0146D0
:1048680015D0C41C24F0030484420AD1256004F145
:104878000B00231D20F00700C31A0BD05A42E25048
:1048880070BD3046611A00F031F80130EED10C23CA
:104898003360002070BD00BFD8000020D400002085
:1048A800F8B5064614460D4621B91146BDE8F8404C
:1048B800FFF7A2BF1AB9FFF75BFF2046F8BD00F06B
:1048C80025F8A0420ED230462146FFF795FF07464D
:1048D80050B129462246FFF727FF30462946FFF701
:1048E80047FF01E02846F8BD3846F8BD38B5064C04
:1048F800002305460846236000F012F8431C02D145
:10490800236803B12B6038BD1004002051F8040C53
:10491800002802DA04390B5818440438704700009C
:10492800094A136863B118446946884202D810607E
:1049380018467047054B0C221A604FF0FF3070473D
:10494800034B1360EFE700BFDC00002010040020D9
:1049580018040020F8B500BFF8BC08BC9E46704794
:0C496800F8B500BFF8BC08BC9E467047C4
:1049740002030405060708090A0B0C0D0E0F10109C
:104984000102000000000000000000000102030416
:1049940006070809000000000102030400000201E8
:1049A4000405030025693B25693B25693B25690A04
:1049B4000D0000004300232D302B2000686C4C00B8
:1049C400656667454647003031323334353637380B
:1049D4003941424344454600303132333435363769
:0C49E40038396162636465660000000001
:0449F0000D020008AC
:0449F400E9010008CD
:1049F80000A24A0464000000D0070000D0070000AD
:104A0800D0070000D007000000002042D0070000B7
:104A1800D0070000000000000000000000000000B7
:104A2800000000000000000000000000000000007E
:104A380000000000B8490008000000000000000065
:104A4800000000000000000000000000000000005E
:104A5800000000000000000000000000000000004E
:104A6800000000000000000000000000000000003E
:084A78000000000024000020F2
:04000005080040713E
:00000001FF