ADD: abs for current measure

This commit is contained in:
Niklas Fauth 2018-02-17 00:19:10 +01:00
parent 6842f7b7fe
commit b988e09e3e
3 changed files with 291 additions and 282 deletions

View File

@ -13,7 +13,7 @@
#define PWM_FREQ 16000 // PWM frequency in Hz
#define DEAD_TIME 32 // PWM deadtime
#define DC_CUR_LIMIT 32 // Motor DC current limit in amps
#define DC_CUR_LIMIT 34 // Motor DC current limit in amps
//#define DEBUG_SERIAL_SERVOTERM
#define DEBUG_SERIAL_ASCII

View File

@ -153,9 +153,9 @@ void DMA1_Channel1_IRQHandler() {
return;
}
batteryVoltage = batteryVoltage * 0.99 + ((float)adc_buffer.batt1 * ADC_BATTERY_VOLT) * 0.01;
batteryVoltage = batteryVoltage * 0.999 + ((float)adc_buffer.batt1 * ADC_BATTERY_VOLT) * 0.001;
if((adc_buffer.dcl - offsetdcl) * MOTOR_AMP_CONV_DC_AMP > DC_CUR_LIMIT || timeout > 50 || enable == 0) {
if(ABS((adc_buffer.dcl - offsetdcl) * MOTOR_AMP_CONV_DC_AMP) > DC_CUR_LIMIT || timeout > 50 || enable == 0) {
LEFT_TIM->BDTR &= ~TIM_BDTR_MOE;
//HAL_GPIO_WritePin(LED_PORT, LED_PIN, 1);
} else {
@ -163,7 +163,7 @@ void DMA1_Channel1_IRQHandler() {
//HAL_GPIO_WritePin(LED_PORT, LED_PIN, 0);
}
if((adc_buffer.dcr - offsetdcr) * MOTOR_AMP_CONV_DC_AMP > DC_CUR_LIMIT || timeout > 50 || enable == 0) {
if(ABS((adc_buffer.dcr - offsetdcr) * MOTOR_AMP_CONV_DC_AMP) > DC_CUR_LIMIT || timeout > 50 || enable == 0) {
RIGHT_TIM->BDTR &= ~TIM_BDTR_MOE;
} else {
RIGHT_TIM->BDTR |= TIM_BDTR_MOE;

View File

@ -1,23 +1,23 @@
:020000040800F2
:1000000000C0002025390008E5380008E93800085C
:10001000ED380008F1380008F5380008000000004D
:10002000000000000000000000000000F938000897
:10003000FD380008000000000139000805390008FB
:100040006D3900086D3900086D3900086D390008F8
:100050006D3900086D3900086D3900086D390008E8
:100060006D390008113900086D390008A9330008FE
:100070006D3900086D3900086D3900086D390008C8
:100080006D3900086D3900086D3900086D390008B8
:100090006D3900086D3900086D3900086D390008A8
:1000A0006D3900086D3900086D3900086D39000898
:1000B0006D3900086D3900086D3900086D39000888
:1000C0006D3900086D3900086D3900086D39000878
:1000D0006D3900086D3900086D3900086D39000868
:1000E0006D3900086D3900086D3900086D39000858
:1000F0006D3900086D3900086D3900086D39000848
:100100006D3900086D3900086D3900086D39000837
:100110006D3900086D3900086D3900086D39000827
:100120006D3900086D3900086D3900086D39000817
:1000000000C00020A9390008693900086D390008CE
:1000100071390008753900087939000800000000BE
:100020000000000000000000000000007D39000812
:10003000813900080000000085390008893900086E
:10004000F1390008F1390008F1390008F1390008E8
:10005000F1390008F1390008F1390008F1390008D8
:10006000F139000895390008F1390008A933000872
:10007000F1390008F1390008F1390008F1390008B8
:10008000F1390008F1390008F1390008F1390008A8
:10009000F1390008F1390008F1390008F139000898
:1000A000F1390008F1390008F1390008F139000888
:1000B000F1390008F1390008F1390008F139000878
:1000C000F1390008F1390008F1390008F139000868
:1000D000F1390008F1390008F1390008F139000858
:1000E000F1390008F1390008F1390008F139000848
:1000F000F1390008F1390008F1390008F139000838
:10010000F1390008F1390008F1390008F139000827
:10011000F1390008F1390008F1390008F139000817
:10012000F1390008F1390008F1390008F139000807
:1001300000000000000000000000000000000000BF
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
@ -36,10 +36,10 @@
:10021800034B03B118477047840000208400002076
:100228000000000010B5064C237843B9FFF7D8FF4B
:10023800044B13B10448AFF300800123237010BDB1
:1002480084000020000000002042000808B5084B88
:100248008400002000000000A442000808B5084B04
:100258001BB108480849AFF300800848036813B980
:10026800BDE80840CCE7064B002BF9D09847F7E7E4
:1002780000000000204200088800002084000020C0
:1002780000000000A442000888000020840000203C
:100288000000000081F0004102E000BF83F000435D
:1002980030B54FEA41044FEA430594EA050F08BF19
:1002A80090EA020F1FBF54EA000C55EA020C7FEADD
@ -314,7 +314,7 @@
:10137800C2F3834306A90B4413F8103C12F4803FD0
:101388000CD00B4A5268C2F340420A4412F8140CBB
:10139800084AB2FBF0F003FB00F004E0064800FB4B
:1013A80003F000E0034806B030BC7047384200083C
:1013A80003F000E0034806B030BC7047BC420008B8
:1013B8000010024000127A0000093D0070B55C4B35
:1013C8001B6803F007038B420BD2594A136823F0BA
:1013D80007030B431360136803F007038B4240F0C5
@ -339,12 +339,12 @@
:10150800D8400E4B1860002000F08EFD002070BD02
:10151800012070BD012070BD012070BD012070BD8B
:10152800032070BD032070BD032070BD012070BD75
:1015380000200240001002404C4200080000002039
:101538000020024000100240D042000800000020B5
:10154800014B1868704700BF0000002008B5FFF77E
:10155800F7FF044B5B68C3F30223034AD35CD8400C
:1015680008BD00BF001002405C42000808B5FFF744
:1015680008BD00BF00100240E042000808B5FFF7C0
:10157800E7FF044B5B68C3F3C223034AD35CD8403C
:1015880008BD00BF001002405C42000830B4036A86
:1015880008BD00BF00100240E042000830B4036A02
:1015980023F001030362036A4468826922F073023C
:1015A8000D682A4323F002038D682B43104DA8428F
:1015B80003D005F50065A84205D123F00803CD68DE
@ -810,8 +810,8 @@
:103278004FF4487604F132039D4212DA323CA542FB
:103288000FDD08F132039E420BDAA8F132084645F9
:1032980007DD384B1B68312B03D8374B1E60374B83
:1032A8001D600020314600F0DFFA0120294600F0B9
:1032B800DBFA00F0DFFA2F4A136801331360304855
:1032A8001D600020314600F021FB0120294600F076
:1032B8001DFB00F021FB2F4A1368013313603048CF
:1032C8000221FEF713FE88B100242E4B1C7005E086
:1032D8002D4B1C706420FEF7DDFE0134072CF7DD52
:1032E800274820210022FEF709FEFEE7274B1C682D
@ -826,257 +826,266 @@
:1033780032E600BF04000020B8000020B0000020A2
:1033880000080140D5000020D40000201C020020C5
:103398000000104200000442BC0000200000F04180
:1033A800F8B502229C4B5A609C4B1B68B3F57A7F98
:1033B8003ADA0133994A1360994A938899B299483D
:1033A800F8B502227E4B5A607E4B1B68B3F57A7FD4
:1033B8003ADA01337B4A13607B4A938899B27B4897
:1033C80003680B4403EBD3735B100360D38899B293
:1033D800954803680B4403EBD3735B1003601388B1
:1033E80099B2924803680B4403EBD3735B100360F4
:1033F800538899B28E4803680B4403EBD3735B1070
:103408000360538999B28B4803680B4403EBD37369
:103418005B10036013899AB287490B68134403EB66
:10342800D3735B100B60F8BD844D2868FDF78EF8E8
:1034380071A3D3E90023FDF7DDF806460F46784C63
:10344800A08980B2FDF79EFCFDF780F86CA3D3E954
:103458000023FDF7CFF86CA3D3E90023FDF7CAF8E2
:1033D800774803680B4403EBD3735B1003601388CF
:1033E80099B2744803680B4403EBD3735B10036012
:1033F800538899B2704803680B4403EBD3735B108E
:103408000360538999B26D4803680B4403EBD37387
:103418005B10036013899AB269490B68134403EB84
:10342800D3735B100B60F8BD664D2868FDF78EF806
:1034380053A3D3E90023FDF7DDF806460F465A4C9F
:10344800A08980B2FDF79EFCFDF780F84EA3D3E972
:103458000023FDF7CFF84EA3D3E90023FDF7CAF800
:1034680002460B4630463946FCF712FFFDF784FB4F
:10347800286063899BB26F4A1068181AFDF754F8E0
:1034880063A3D3E90023FDF7B5F800226C4BFDF7E1
:1034980041FB30B96B4B1B68322B02D86A4B1B7847
:1034A8002BB96A4A536C23F40043536404E0674A17
:1034B800536C43F400435364594B1B899BB25E4AD7
:1034C8001068181AFDF730F851A3D3E90023FDF767
:1034D80091F800225A4BFDF71DFB30B9594B1B6878
:1034E800322B02D8584B1B782BB9594A536C23F40A
:1034F8000043536404E0564A536C43F40043536456
:10350800544A936813F0200F0CBF012100219368DF
:1035180013F0400F0CBF01230023926812F0800FB4
:103528000CBF012400244C4A906810F4806F0CBF33
:1035380001200020956815F4006F0CBF01260026B5
:10354800926812F4805F03EB440301EB4303434D9D
:10355800EB5C43490B600B6803F102030B600C68DA
:10356800404B83FB0472A2EBE47202EB42024FEA87
:103578004202A4EB02020A600CBF0222002232447B
:1035880000EB4202A85C384A1060106802301060F4
:10359800106883FB0043A3EBE07303EB43035B007A
:1035A800C31A13600B681E4CA28892B21D490968A1
:1035B800501AE28892B21C4C2468121B052B57D86B
:1035C800DFE803F003070A0D1013821A274B1A606D
:1035D80051E0264B18604EE0244B18604BE0234B1B
:1035E8001A6048E0214B1A6045E0121A1F4B1A6016
:1035F80041E000BFAFF30080AE47E17A14AEEF3F81
:10360800F5E4E827181C9B3F7B14AE47E17A843F1A
:103618007B14AE47E17A943F00000240B4000020DA
:1036280088010020080000200C000020180000205D
:103638001C00002010000020140000201C020020A4
:103648000000404004000020D50000200034014064
:10365800002C0140000C01400010014064420008A9
:10366800C0000020ABAAAA2AC8000020CC00002075
:1036780000226E4B1A606E4B9A8893B2591A00D585
:1036880007310220C91000F0EFF8694BDB889BB2C4
:10369800684A1168591A00D507310320014100F022
:1036A800E3F8654A136801331360644A13880133E9
:1036B8009BB21380624A1478ACB1624AA2FB03122F
:1036C800520961490978013192FBF1F001FB10229E
:1036D8004AB993FBF4F204FB12334BB95B4810214F
:1036E800FEF712FC04E0594810210022FEF706FC00
:1036F800574B1A68574B1B68052B1AD8DFE803F09D
:1037080003070B0E111514465242002514E05542CA
:103718001446002210E0554200240DE054420025D2
:103728000AE054421546002206E01546524200249B
:1037380002E0002214461546474B1B6847490968B2
:1037480005291AD8DFE801F003070B0E11151946F1
:103758005B42002014E058421946002310E058420A
:1037680000210DE0594200200AE059421846002382
:1037780006E018465B42002102E00023194618467D
:1037880005F57A7540F2C676B54203DC0A2DB8BF56
:103798000A2501E040F2C675314E756304F57A7466
:1037A80040F2C675AC4203DC0A2CB8BF0A2401E01B
:1037B80040F2C6742A4DAC6302F57A7240F2C674C0
:1037C800A24203DC0A2AB8BF0A2201E040F2C6720C
:1037D800234CE26300F57A7240F2C670824203DC41
:1037E8000A2AB8BF0A2201E040F2C6721D484263A5
:1037F80001F57A7240F2C6718A4203DC0A2AB8BF20
:103808000A2201E040F2C67216498A6303F57A7308
:1038180040F2C672934203DC0A2BB8BF0A2301E0C8
:1038280040F2C6730F4AD363F8BD00BFCC00002036
:10383800880100200C000020D0000020C4000020D7
:10384800D4000020F1197605BC00002000080140D2
:10385800B0000020C0000020B8000020C8000020F0
:1038680000340140002C0140014B23F81010704730
:103878008402002030B583B0144C20460021642215
:1038880000F098F812490A884B888888C98800B2DD
:10389800009009B2019120460E4912B21BB200F005
:1038A80091F80D4B5B6873B90B4C236823F0010347
:1038B8002360064D284600F0A9F86060E56023689B
:1038C80043F00103236003B030BD00BF2002002095
:1038D800840200206C4200081C000240704700BFB0
:1038E800FEE700BFFEE700BFFEE700BFFEE700BF40
:1038F800704700BF704700BF704700BF08B5FEF7AC
:10390800BBFBFEF7F5F908BD08B5FFF745FA082235
:10391800014B5A6108BD00BF00040140002103E0CB
:103928000B4B5B58435004310A480B4B42189A42E0
:10393800F6D30A4A02E0002342F8043B084B9A42B5
:10394800F9D3FEF7DBFE00F00FF8FFF7D5FA704762
:10395800BC420008000000208400002084000020F1
:10396800D8020020FEE700000E4B70B51E460E4C34
:103978000025E41AA410A54204D056F8253098472B
:103988000135F8E700F048FC084B094C1E46E41ADC
:10399800A4100025A54204D056F8253098470135D3
:1039A800F8E770BDB4420008B4420008B442000809
:1039B800B842000803460244934202D003F8011BB0
:1039C800FAE770470EB400B54FF402719CB0ADF839
:1039D80014106FF00041049107914FF6FF711DAB71
:1039E800ADF81610084953F8042B029006900868A1
:1039F80002A9019300F06CF8029B00221A701CB017
:103A08005DF804EB03B0704780000020034613F80C
:103A1800012B002AFBD1181A013870472DE9F0470D
:103A28008E688246B3420C469046994640D38A89AE
:103A380012F4906F3AD02568096902236F1A6569F4
:103A480005EB450595FBF3F57B1C4B449D4238BFC0
:103A58001D4653050FD5294600F03AFB064698B196
:103A680021693A4600F0CAFAA38923F4906343F027
:103A78008003A38113E02A4600F080FB064670B954
:103A88005046216900F0E0FA0C23CAF80030A389F7
:103A98004FF0FF3043F04003A381BDE8F087266173
:103AA8003E4426604E466561ED1BA560B14500D2D7
:103AB8004E4632462068414600F0ABFAA368002023
:103AC8009B1BA36023681E442660BDE8F0870000A6
:103AD8002DE9F0439DB003938B8906461C060D46DD
:103AE80090460CD50B6953B9402100F0F1FA2860D3
:103AF800286110B90C233360CCE040236B610023AC
:103B0800099320238DF8293030238DF82A30434635
:103B18001C4613F8012B1AB9B4EB08090FD002E0C0
:103B2800252AF5D1F8E73046294642464B46FFF7A5
:103B380075FF013000F0A980099B4B440993237855
:103B4800002B00F0A28000234FF0FF32049307936C
:103B5800059206938DF853301A9304F101084446F0
:103B6800DFF8489121784846052200F039FA08F133
:103B78000108049B30B1C9EB0000012282401343C5
:103B88000493ECE7D80644BF20228DF85320190788
:103B980044BF2B228DF8532022782A2A02D0079975
:103BA80023460EE0039A0134111D12680391002A7E
:103BB800BBBF524243F0020307920792B8BF049377
:103BC8000AE01C4622780133303A092A03D80A2031
:103BD80000FB0121F5E7079123782E2B1AD1637892
:103BE8002A2B0AD1039B02341A1D1B680392002B4F
:103BF800B8BF4FF0FF3305930CE0611C00220C4660
:103C080023780131303B092B03D80A2000FB02320C
:103C1800F5E70592DFF8988021784046032200F006
:103C2800DFF938B1049AC8EB0000402383401343FE
:103C38000493013421781A48062204F101088DF80A
:103C4800281000F0CDF988B1164B33B9039B073320
:103C580023F007030833039313E003AB00933046C4
:103C680004A92A46104BAFF3008007E003AB00938A
:103C7800304604A92A460C4B00F092F8421C07462D
:103C880003D0099B3B44099341E7AB895B0601D408
:103C9800099801E04FF0FF301DB0BDE8F08300BF88
:103CA8008842000800000000253A00087E4200080B
:103CB800844200082DE9F84391461F468A680B693B
:103CC80006469342B8BF1346C9F8003091F843201E
:103CD8000C46DDF8208012B10133C9F800302368A2
:103CE800990642BFD9F800300233C9F80030256878
:103CF80015F006051CD094F843302268003318BF2D
:103D0800012392061FD5E118302081F843005A1C80
:103D180094F845102244023382F8431013E03046E9
:103D2800394604F119020123C047013007D0013593
:103D3800E368D9F800209B1A9D42F0DBDBE74FF0DF
:103D4800FF30BDE8F8833046394604F14302C047E6
:103D58000130F4D02268D9F80050E36802F0060276
:103D6800042A08BF5D1B2269A3680CBF25EAE57514
:103D780000259342C4BF9B1AED184FF00009A945CE
:103D88000ADA3046394604F11A020123C0470130E5
:103D9800D5D009F10109F2E70020BDE8F883000059
:103DA8002DE9FF410C461746227E98466E2A0646A4
:103DB8000A9B01F1430100F0B08012D8632A23D096
:103DC8000AD8002A00F0BD80582A40F0CC8084F838
:103DD8004520DFF804E257E0642A1ED0692A1CD087
:103DE800C1E0732A00F0B18009D86F2A2ED0702A5A
:103DF80040F0B980226842F0200222603FE0752A34
:103E080024D0782A3BD0AEE01A6804F14205111D8F
:103E18001960136884F84230A9E020681A6810F025
:103E2800800F02D0101D186008E010F0400F02F15A
:103E38000400186002D0B2F9003000E01368002BCB
:103E48003EDA2D225B4284F8432039E020681A6864
:103E580010F0800F02D0101D186007E010F0400F1E
:103E680002F10400186001D0138800E01368227E74
:103E7800DFF864E16F2A0CBF08220A221CE07822CE
:103E8800DFF858E184F845202268186812F0800F9E
:103E980000F104051D6003D1550601D5038800E033
:103EA8000368D00744BF42F0200222601BB9226891
:103EB80022F0200222601022002084F8430002E051
:103EC800DFF814E10A226568002DA8BF2068A56004
:103ED800A4BF20F00400206003B965B10D46B3FB10
:103EE800F2F002FB10331EF8033005F8013D0346DB
:103EF8000028F4D100E00D46082A0BD12368DA0720
:103F080008D5236962689A42DEBF302305F8013C70
:103F180005F1FF35491B21612EE025681A6815F067
:103F2800800F606903D0151D1D60136808E015F047
:103F3800400F02F104051D60136801D0188000E0ED
:103F48001860002323610D4616E01A68111D1960D8
:103F5800156800212846626800F042F808B1401B45
:103F68006060636804E004F1420584F8422001239C
:103F78002361002384F84330CDF800803046214681
:103F880003AA3B46FFF796FE013002D14FF0FF30FF
:103F98001FE0304639462A462369C0470130F5D02C
:103FA80023689B0705D4E068039B9842B8BF18466E
:103FB8000FE00025E368039A9B1A9D42F3DA304626
:103FC800394604F119020123C0470130DED001351A
:103FD800F0E704B0BDE8F0818F420008A042000875
:103FE80010B5C9B202449042034605D01C7801308E
:103FF8008C42F8D1184610BD002010BD10B5431EE4
:104008000A44914204D011F8014B03F8014FF8E734
:1040180010BD814210B501EB020301D3421E0BE033
:104028009842FBD28118D21AD34204D013F8014D1A
:1040380001F8014DF8E710BD994204D011F8014B81
:1040480002F8014FF8E710BD30B500293CD051F80F
:10405800042C0B1F1D49002AB8BF9B180A680C4680
:1040680012B95A600B6030BD93420DD219685818C6
:10407800904201BF5A5852181A60426823605A6029
:1040880030BD994203D80A4651680029F9D114680D
:1040980015199D420AD11B682344D0188842136021
:1040A80012D10868034413604B680CE002D90C2352
:1040B800036030BD1C681819884201BF0868496848
:1040C800001918605960536030BD00BFDC00002043
:1040D80070B5CC1C24F0030408340C2C38BF0C2415
:1040E800002C064603DA0C233360002070BD8C4296
:1040F800F9D3204A136810461946A1B10A68121B61
:104108000ED40B2A03D90A608B188C501FE08B42FF
:104118000BBF5A684A6802605A6018BF0B4616E01F
:104128000B464968E9E7144D2B681BB9304600F087
:104138004BF828603046214600F046F8421C0346FA
:10414800D1D0C51C25F0030585420AD11C6003F1B6
:104158000B001A1D20F00700821A0AD0514299500C
:1041680070BD3046E91A00F02FF80130BBD02B465D
:10417800ECE770BDDC000020D8000020F8B5074649
:1041880015460E4621B91146BDE8F840FFF7A0BF15
:104198001AB9FFF759FF2846F8BD00F025F8A842DC
:1041A8000ED238462946FFF793FF044650B13146F0
:1041B8002A46FFF723FF38463146FFF745FF01E05F
:1041C8003046F8BD2046F8BD38B5064C00230546F4
:1041D8000846236000F012F8431C02D1236803B19B
:1041E8002B6038BDD402002051F8040C0028BEBF53
:1041F800091851F8043CC01804387047044A0549A6
:104208001368002B08BF0B46184410601846704707
:10421800E0000020D8020020F8B500BFF8BC08BCB8
:104228009E467047F8B500BFF8BC08BC9E4670476C
:1042380002030405060708090A0B0C0D0E0F1010DF
:104248000102000000000000000000000102030459
:10425800060708090000000001020304000002012B
:104268000405030025693B25693B25693B25690A47
:104278000D0000004300232D302B2000686C4C00FB
:10428800656667454647003031323334353637384E
:1042980039414243444546003031323334353637AC
:0C42A80038396162636465660000000044
:0442B40055020008A7
:0442B8002D020008CB
:1042BC0000A24A0464000000D0070000D0070000F0
:1042CC00D0070000D0070000D0070000D007000086
:1042DC0000000000000000000000000000000000D2
:1042EC0000000000000000000000000000000000C2
:1042FC007C420008000000000000000000000000EC
:10430C0000000000000000000000000000000000A1
:10431C000000000000000000000000000000000091
:10432C000000000000000000000000000000000081
:04433C00200000203D
:040000050800392591
:103478002860608980B2514B1C68001BFDF754F826
:1034880045A3D3E90023FDF7B5F800220023FDF793
:1034980023FB80B1444B588980B2001BFDF744F8E8
:1034A8003DA3D3E90023FDF7A5F80022464BFDF71D
:1034B80013FBB8B90FE03C4B588980B2001BFDF7ED
:1034C80033F835A3D3E90023FDF794F800223F4BE6
:1034D800FDF720FB30B93E4B1B68322B02D83D4B21
:1034E8001B782BB93C4A536C23F40043536404E023
:1034F800394A536C43F4004353642B4B188980B208
:103508002F4B1C68001BFDF70FF823A3D3E90023FA
:10351800FDF770F800220023FDF7DEFA80B1224B98
:10352800188980B2001BFCF7FFFF1BA3D3E9002317
:10353800FDF760F80022244BFDF7CEFAB8B90FE08A
:10354800194B188980B2001BFCF7EEFF12A3D3E9D0
:103558000023FDF74FF800221C4BFDF7DBFA30B9CA
:103568001B4B1B68322B02D81A4B1B78C3BB1B4A58
:10357800536C23F40043536437E000BFAFF300807B
:103588002B8716D9CEF7EF3FF5E4E827181C9B3FA9
:10359800FCA9F1D24D62503F7B14AE47E17A943FCB
:1035A80000000240B400002088010020080000202C
:1035B8000C000020180000201C0000201000002033
:1035C800140000201C020020000041C000004140FF
:1035D80004000020D500002000340140002C0140E8
:1035E8009C4A536C43F4004353649B4A936813F01A
:1035F800200F0CBF01210021936813F0400F0CBF6E
:1036080001230023926812F0800F0CBF01240024CC
:10361800924A906810F4806F0CBF012000209568D2
:1036280015F4006F0CBF01260026926812F4805F23
:1036380003EB440301EB4303894DEB5C89490B60C1
:103648000B6803F102030B600C68874B83FB047261
:10365800A2EBE47202EB42024FEA4202A4EB02023E
:103668000A600CBF02220022324400EB4202A85C2E
:103678007E4A1060106802301060106883FB0043B7
:10368800A3EBE07303EB43035B00C31A13600B68FF
:10369800774CA28892B277490968501AE28892B2A8
:1036A800754C2468121B052B18D8DFE803F00307B4
:1036B8000A0D1013821A714B1A6012E06F4B1860D2
:1036C8000FE06E4B18600CE06C4B1A6009E06B4B16
:1036D8001A6006E0121A694B1A6002E00022674B72
:1036E8001A60634B9A8893B2591A00D507310220A1
:1036F800C91000F0FBF85E4BDB889BB25E4A11688C
:10370800591A00D507310320014100F0EFF85C4A4F
:103718001368013313605B4A138801339BB213802B
:10372800594A1478ACB1594AA2FB031252095849B4
:103738000978013192FBF1F001FB10224AB993FBA1
:10374800F4F204FB12334BB952481021FEF7DCFBAC
:1037580004E0504810210022FEF7D0FB4E4B1A68B7
:10376800404B1B68052B1AD8DFE803F003070B0E44
:10377800111514465242002514E055421446002201
:1037880010E0554200240DE0544200250AE054425E
:103798001546002206E015465242002402E00022A7
:1037A800144615463D4B1B683049096805291AD847
:1037B800DFE801F003070B0E111519465B420020E4
:1037C80014E058421946002310E0584200210DE049
:1037D800594200200AE059421846002306E01846DC
:1037E8005B42002102E000231946184605F57A7568
:1037F80040F2C676B54203DC0A2DB8BF0A2501E0BF
:1038080040F2C675264E756304F57A7440F2C675A3
:10381800AC4203DC0A2CB8BF0A2401E040F2C674AB
:103828001F4DAC6302F57A7240F2C674A24203DC03
:103838000A2AB8BF0A2201E040F2C672184CE263B5
:1038480000F57A7240F2C67082422BDC0A2AB8BFB1
:103858000A2229E0002C0140000C01400010014020
:10386800E8420008C0000020ABAAAA2AC80000202D
:1038780088010020080000200C000020CC00002057
:10388800D0000020C4000020D4000020F1197605E3
:10389800BC00002000080140B0000020B800002053
:1038A8000034014040F2C6720F48426301F57A7253
:1038B80040F2C6718A4203DC0A2AB8BF0A2201E034
:1038C80040F2C67208498A6303F57A7340F2C672F9
:1038D800934203DC0A2BB8BF0A2301E040F2C67307
:1038E800014AD363F8BD00BF002C0140014B23F807
:1038F800101070478402002030B583B0144C204665
:103908000021642200F098F812490A884B888888B8
:10391800C98800B2009009B2019120460E4912B23E
:103928001BB200F091F80D4B5B6873B90B4C236820
:1039380023F001032360064D284600F0A9F86060D3
:10394800E560236843F00103236003B030BD00BF86
:103958002002002084020020F04200081C000240DF
:10396800704700BFFEE700BFFEE700BFFEE700BFED
:10397800FEE700BF704700BF704700BF704700BF39
:1039880008B5FEF779FBFEF7B3F908BD08B5FFF7F0
:1039980003FA0822014B5A6108BD00BF0004014028
:1039A800002103E00B4B5B58435004310A480B4B92
:1039B80042189A42F6D30A4A02E0002342F8043B2E
:1039C800084B9A42F9D3FEF799FE00F00FF8FFF77B
:1039D80093FA70474043000800000020840000204C
:1039E80084000020D8020020FEE700000E4B70B5CE
:1039F8001E460E4C0025E41AA410A54204D056F821
:103A0800253098470135F8E700F048FC084B094C89
:103A18001E46E41AA4100025A54204D056F8253005
:103A280098470135F8E770BD384300083843000867
:103A3800384300083C43000803460244934202D03E
:103A480003F8011BFAE770470EB400B54FF4027192
:103A58009CB0ADF814106FF00041049107914FF637
:103A6800FF711DABADF81610084953F8042B0290EE
:103A78000690086802A9019300F06CF8029B0022E6
:103A88001A701CB05DF804EB03B07047800000208A
:103A9800034613F8012B002AFBD1181A0138704786
:103AA8002DE9F0478E688246B3420C469046994607
:103AB80040D38A8912F4906F3AD0256809690223A5
:103AC8006F1A656905EB450595FBF3F57B1C4B44BF
:103AD8009D4238BF1D4653050FD5294600F03AFBD5
:103AE800064698B121693A4600F0CAFAA38923F438
:103AF800906343F08003A38113E02A4600F080FB23
:103B0800064670B95046216900F0E0FA0C23CAF85D
:103B18000030A3894FF0FF3043F04003A381BDE894
:103B2800F08726613E4426604E466561ED1BA56020
:103B3800B14500D24E4632462068414600F0ABFA05
:103B4800A36800209B1BA36023681E442660BDE871
:103B5800F08700002DE9F0439DB003938B8906465A
:103B68001C060D4690460CD50B6953B9402100F050
:103B7800F1FA2860286110B90C233360CCE04023A7
:103B88006B610023099320238DF8293030238DF8A9
:103B98002A3043461C4613F8012B1AB9B4EB08091E
:103BA8000FD002E0252AF5D1F8E7304629464246EB
:103BB8004B46FFF775FF013000F0A980099B4B4485
:103BC80009932378002B00F0A28000234FF0FF32E6
:103BD80004930793059206938DF853301A9304F1D2
:103BE80001084446DFF8489121784846052200F04C
:103BF80039FA08F10108049B30B1C9EB0000012231
:103C0800824013430493ECE7D80644BF20228DF882
:103C18005320190744BF2B228DF8532022782A2AD3
:103C280002D0079923460EE0039A0134111D126849
:103C38000391002ABBBF524243F002030792079246
:103C4800B8BF04930AE01C4622780133303A092AA7
:103C580003D80A2000FB0121F5E7079123782E2BD2
:103C68001AD163782A2B0AD1039B02341A1D1B68C8
:103C78000392002BB8BF4FF0FF3305930CE0611C93
:103C880000220C4623780131303B092B03D80A2047
:103C980000FB0232F5E70592DFF89880217840466C
:103CA800032200F0DFF938B1049AC8EB0000402382
:103CB800834013430493013421781A48062204F1FF
:103CC80001088DF8281000F0CDF988B1164B33B9EA
:103CD800039B073323F007030833039313E003AB75
:103CE8000093304604A92A46104BAFF3008007E042
:103CF80003AB0093304604A92A460C4B00F092F817
:103D0800421C074603D0099B3B44099341E7AB8912
:103D18005B0601D4099801E04FF0FF301DB0BDE803
:103D2800F08300BF0C43000800000000A93A000817
:103D380002430008084300082DE9F84391461F464E
:103D48008A680B6906469342B8BF1346C9F8003023
:103D580091F843200C46DDF8208012B10133C9F8F0
:103D680000302368990642BFD9F800300233C9F8F9
:103D78000030256815F006051CD094F843302268F9
:103D8800003318BF012392061FD5E118302081F8AF
:103D980043005A1C94F845102244023382F8431019
:103DA80013E03046394604F119020123C0470130B7
:103DB80007D00135E368D9F800209B1A9D42F0DB53
:103DC800DBE74FF0FF30BDE8F8833046394604F1B1
:103DD8004302C0470130F4D02268D9F80050E368A4
:103DE80002F00602042A08BF5D1B2269A3680CBF03
:103DF80025EAE57500259342C4BF9B1AED184FF0DC
:103E08000009A9450ADA3046394604F11A020123A5
:103E1800C0470130D5D009F10109F2E70020BDE81B
:103E2800F88300002DE9FF410C461746227E98468C
:103E38006E2A06460A9B01F1430100F0B08012D8B1
:103E4800632A23D00AD8002A00F0BD80582A40F0FF
:103E5800CC8084F84520DFF804E257E0642A1ED0BD
:103E6800692A1CD0C1E0732A00F0B18009D86F2AF2
:103E78002ED0702A40F0B980226842F020022260D9
:103E88003FE0752A24D0782A3BD0AEE01A6804F1C6
:103E98004205111D1960136884F84230A9E02068B2
:103EA8001A6810F0800F02D0101D186008E010F09A
:103EB800400F02F10400186002D0B2F9003000E0AF
:103EC8001368002B3EDA2D225B4284F8432039E048
:103ED80020681A6810F0800F02D0101D186007E0E3
:103EE80010F0400F02F10400186001D0138800E0C0
:103EF8001368227EDFF864E16F2A0CBF08220A22C9
:103F08001CE07822DFF858E184F845202268186818
:103F180012F0800F00F104051D6003D1550601D58C
:103F2800038800E00368D00744BF42F02002226003
:103F38001BB9226822F0200222601022002084F897
:103F4800430002E0DFF814E10A226568002DA8BFEB
:103F58002068A560A4BF20F00400206003B965B103
:103F68000D46B3FBF2F002FB10331EF8033005F8E0
:103F7800013D03460028F4D100E00D46082A0BD184
:103F88002368DA0708D5236962689A42DEBF3023BE
:103F980005F8013C05F1FF35491B21612EE0256834
:103FA8001A6815F0800F606903D0151D1D6013682D
:103FB80008E015F0400F02F104051D60136801D0F8
:103FC800188000E01860002323610D4616E01A6887
:103FD800111D1960156800212846626800F042F832
:103FE80008B1401B6060636804E004F1420584F88E
:103FF800422001232361002384F84330CDF8008058
:104008003046214603AA3B46FFF796FE013002D10F
:104018004FF0FF301FE0304639462A462369C04733
:104028000130F5D023689B0705D4E068039B9842CC
:10403800B8BF18460FE00025E368039A9B1A9D4213
:10404800F3DA3046394604F119020123C04701303A
:10405800DED00135F0E704B0BDE8F0811343000875
:104068002443000810B5C9B202449042034605D063
:104078001C7801308C42F8D1184610BD002010BDC4
:1040880010B5431E0A44914204D011F8014B03F8BD
:10409800014FF8E710BD814210B501EB020301D3CF
:1040A800421E0BE09842FBD28118D21AD34204D0A8
:1040B80013F8014D01F8014DF8E710BD994204D0FD
:1040C80011F8014B02F8014FF8E710BD30B500298F
:1040D8003CD051F8042C0B1F1D49002AB8BF9B186F
:1040E8000A680C4612B95A600B6030BD93420DD273
:1040F80019685818904201BF5A5852181A604268F5
:1041080023605A6030BD994203D80A465168002995
:10411800F9D1146815199D420AD11B682344D01897
:104128008842136012D10868034413604B680CE09E
:1041380002D90C23036030BD1C681819884201BFDE
:1041480008684968001918605960536030BD00BF9D
:10415800DC00002070B5CC1C24F0030408340C2CBF
:1041680038BF0C24002C064603DA0C2333600020E9
:1041780070BD8C42F9D3204A136810461946A1B184
:104188000A68121B0ED40B2A03D90A608B188C50AC
:104198001FE08B420BBF5A684A6802605A6018BF1A
:1041A8000B4616E00B464968E9E7144D2B681BB926
:1041B800304600F04BF828603046214600F046F8BB
:1041C800421C0346D1D0C51C25F0030585420AD1FF
:1041D8001C6003F10B001A1D20F00700821A0AD098
:1041E8005142995070BD3046E91A00F02FF801305D
:1041F800BBD02B46ECE770BDDC000020D8000020C7
:10420800F8B5074615460E4621B91146BDE8F840EF
:10421800FFF7A0BF1AB9FFF759FF2846F8BD00F00D
:1042280025F8A8420ED238462946FFF793FF0446E0
:1042380050B131462A46FFF723FF38463146FFF78B
:1042480045FF01E03046F8BD2046F8BD38B5064CBC
:10425800002305460846236000F012F8431C02D1EB
:10426800236803B12B6038BDD402002051F8040C38
:104278000028BEBF091851F8043CC018043870471C
:10428800044A05491368002B08BF0B461844106000
:1042980018467047E0000020D8020020F8B500BF9B
:1042A800F8BC08BC9E467047F8B500BFF8BC08BC0F
:0442B8009E46704767
:1042BC0002030405060708090A0B0C0D0E0F10105B
:1042CC0001020000000000000000000001020304D5
:1042DC0006070809000000000102030400000201A7
:1042EC000405030025693B25693B25693B25690AC3
:1042FC000D0000004300232D302B2000686C4C0077
:10430C0065666745464700303132333435363738C9
:10431C003941424344454600303132333435363727
:0C432C00383961626364656600000000BF
:044338005502000822
:04433C002D02000846
:1043400000A24A0464000000D0070000D00700006B
:10435000D0070000D0070000D0070000D007000001
:10436000000000000000000000000000000000004D
:10437000000000000000000000000000000000003D
:1043800000430008000000000000000000000000E2
:10439000000000000000000000000000000000001D
:1043A000000000000000000000000000000000000D
:1043B00000000000000000000000000000000000FD
:0443C00020000020B9
:04000005080039A90D
:00000001FF