From d6fd98757a07c8506a73b4c1c9b920bcea553daf Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Sun, 17 Oct 2021 02:38:42 +0000 Subject: [PATCH] Auto-generated configs and docs --- ...ngine_configuration_generated_structures.h | 687 +++--- .../controllers/algo/rusefi_generated.h | 1041 ++++----- ...ngine_configuration_generated_structures.h | 683 +++--- .../controllers/algo/rusefi_generated.h | 1013 ++++----- ...ngine_configuration_generated_structures.h | 687 +++--- .../controllers/algo/rusefi_generated.h | 1041 ++++----- ...ngine_configuration_generated_structures.h | 687 +++--- .../generated/fsio_enums_generated.def | 2 +- .../controllers/generated/fsio_getters.def | 2 +- firmware/controllers/generated/fsio_names.def | 2 +- .../controllers/generated/fsio_strings.def | 2 +- .../controllers/generated/rusefi_generated.h | 1041 ++++----- .../controllers/generated/signature_all.h | 4 +- .../controllers/generated/signature_atlas.h | 4 +- .../generated/signature_f429-discovery.h | 4 +- .../generated/signature_frankenso_na6.h | 4 +- .../generated/signature_hellen-nb1.h | 4 +- .../generated/signature_hellen121nissan.h | 4 +- .../generated/signature_hellen121vag.h | 4 +- .../generated/signature_hellen128.h | 4 +- .../generated/signature_hellen154hyundai.h | 4 +- .../generated/signature_hellen72.h | 4 +- .../generated/signature_hellen88bmw.h | 4 +- .../generated/signature_hellenNA6.h | 4 +- .../generated/signature_hellen_cypress.h | 4 +- .../controllers/generated/signature_kin.h | 4 +- .../controllers/generated/signature_mre_f4.h | 4 +- .../controllers/generated/signature_mre_f7.h | 4 +- .../generated/signature_prometheus_405.h | 4 +- .../generated/signature_prometheus_469.h | 4 +- .../generated/signature_proteus_f4.h | 4 +- .../generated/signature_proteus_f7.h | 4 +- .../generated/signature_subaru_eg33_f7.h | 4 +- firmware/tunerstudio/generated/cache.zip | Bin 2090181 -> 2090328 bytes firmware/tunerstudio/generated/rusefi.ini | 1012 ++++----- .../tunerstudio/generated/rusefi_atlas.ini | 1012 ++++----- .../generated/rusefi_f429-discovery.ini | 1012 ++++----- .../generated/rusefi_frankenso_na6.ini | 1012 ++++----- .../generated/rusefi_hellen-nb1.ini | 1012 ++++----- .../generated/rusefi_hellen121nissan.ini | 1012 ++++----- .../generated/rusefi_hellen121vag.ini | 1012 ++++----- .../generated/rusefi_hellen128mercedes.ini | 1012 ++++----- .../generated/rusefi_hellen154hyundai.ini | 1012 ++++----- .../tunerstudio/generated/rusefi_hellen72.ini | 1012 ++++----- .../generated/rusefi_hellen88bmw.ini | 1012 ++++----- .../generated/rusefi_hellenNA6.ini | 1012 ++++----- .../generated/rusefi_hellen_cypress.ini | 1012 ++++----- .../tunerstudio/generated/rusefi_kinetis.ini | 988 ++++----- .../tunerstudio/generated/rusefi_mre_f4.ini | 1012 ++++----- .../tunerstudio/generated/rusefi_mre_f7.ini | 1012 ++++----- .../generated/rusefi_prometheus_405.ini | 1012 ++++----- .../generated/rusefi_prometheus_469.ini | 1012 ++++----- .../generated/rusefi_proteus_f4.ini | 1012 ++++----- .../generated/rusefi_proteus_f7.ini | 1012 ++++----- .../generated/rusefi_subaru_eg33_f7.ini | 1012 ++++----- .../com/rusefi/config/generated/Fields.java | 1887 +++++++++-------- java_console/rusefi.xml | 68 +- 57 files changed, 15118 insertions(+), 15037 deletions(-) diff --git a/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h index 5bbfbd76a0..06273defbd 100644 --- a/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Oct 17 01:28:14 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Oct 17 02:37:18 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -2884,897 +2884,912 @@ struct engine_configuration_s { */ float unusedEL1; /** - * Band rate for primary TTL - BPs + coeff * offset 2064 */ - uint32_t uartConsoleSerialSpeed; + float unusedEL2; /** roc * offset 2068 */ - float tpsDecelEnleanmentThreshold; + float unusedEL3; /** coeff * offset 2072 */ + float unusedEL4; + /** + * Band rate for primary TTL + BPs + * offset 2076 + */ + uint32_t uartConsoleSerialSpeed; + /** + roc + * offset 2080 + */ + float tpsDecelEnleanmentThreshold; + /** + coeff + * offset 2084 + */ float tpsDecelEnleanmentMultiplier; /** * ExpAverage alpha coefficient coeff - * offset 2076 + * offset 2088 */ float slowAdcAlpha; /** * See http://rusefi.com/s/debugmode * * set debug_mode X - * offset 2080 + * offset 2092 */ debug_mode_e debugMode; /** BPs - * offset 2084 + * offset 2096 */ uint32_t auxSerialSpeed; /** voltage - * offset 2088 + * offset 2100 */ float throttlePedalSecondaryUpVoltage; /** * Pedal in the floor voltage - * offset 2092 + * offset 2104 */ float throttlePedalSecondaryWOTVoltage; /** * set can_baudrate - * offset 2096 + * offset 2108 */ can_baudrate_e canBaudRate; /** * Override the Y axis (load) value used for the VE table. * Advanced users only: If you aren't sure you need this, you probably don't need this. - * offset 2097 + * offset 2109 */ ve_override_e veOverrideMode; /** - * offset 2098 + * offset 2110 */ can_baudrate_e can2BaudRate; /** * Override the Y axis (load) value used for the AFR table. * Advanced users only: If you aren't sure you need this, you probably don't need this. - * offset 2099 + * offset 2111 */ afr_override_e afrOverrideMode; /** - * offset 2100 + * offset 2112 */ uint32_t verboseCan2BaseAddress; /** * CAN broadcast using custom rusEFI protocol * enable can_broadcast/disable can_broadcast - offset 2104 bit 0 */ + offset 2116 bit 0 */ bool enableVerboseCan2Tx : 1; /** * enable can_read/disable can_read - offset 2104 bit 1 */ + offset 2116 bit 1 */ bool can2ReadEnabled : 1; /** * enable can_write/disable can_write - offset 2104 bit 2 */ + offset 2116 bit 2 */ bool can2WriteEnabled : 1; /** * Enable if DC-motor driver (H-bridge) inverts the signals (eg. RZ7899 on Hellen boards) - offset 2104 bit 3 */ + offset 2116 bit 3 */ bool stepperDcInvertedPins : 1; /** - offset 2104 bit 4 */ + offset 2116 bit 4 */ bool unused1127 : 1; /** - offset 2104 bit 5 */ + offset 2116 bit 5 */ bool unused1128 : 1; /** - offset 2104 bit 6 */ + offset 2116 bit 6 */ bool unused1129 : 1; /** - offset 2104 bit 7 */ + offset 2116 bit 7 */ bool unused1130 : 1; /** - offset 2104 bit 8 */ - bool unusedBit_507_8 : 1; + offset 2116 bit 8 */ + bool unusedBit_510_8 : 1; /** - offset 2104 bit 9 */ - bool unusedBit_507_9 : 1; + offset 2116 bit 9 */ + bool unusedBit_510_9 : 1; /** - offset 2104 bit 10 */ - bool unusedBit_507_10 : 1; + offset 2116 bit 10 */ + bool unusedBit_510_10 : 1; /** - offset 2104 bit 11 */ - bool unusedBit_507_11 : 1; + offset 2116 bit 11 */ + bool unusedBit_510_11 : 1; /** - offset 2104 bit 12 */ - bool unusedBit_507_12 : 1; + offset 2116 bit 12 */ + bool unusedBit_510_12 : 1; /** - offset 2104 bit 13 */ - bool unusedBit_507_13 : 1; + offset 2116 bit 13 */ + bool unusedBit_510_13 : 1; /** - offset 2104 bit 14 */ - bool unusedBit_507_14 : 1; + offset 2116 bit 14 */ + bool unusedBit_510_14 : 1; /** - offset 2104 bit 15 */ - bool unusedBit_507_15 : 1; + offset 2116 bit 15 */ + bool unusedBit_510_15 : 1; /** - offset 2104 bit 16 */ - bool unusedBit_507_16 : 1; + offset 2116 bit 16 */ + bool unusedBit_510_16 : 1; /** - offset 2104 bit 17 */ - bool unusedBit_507_17 : 1; + offset 2116 bit 17 */ + bool unusedBit_510_17 : 1; /** - offset 2104 bit 18 */ - bool unusedBit_507_18 : 1; + offset 2116 bit 18 */ + bool unusedBit_510_18 : 1; /** - offset 2104 bit 19 */ - bool unusedBit_507_19 : 1; + offset 2116 bit 19 */ + bool unusedBit_510_19 : 1; /** - offset 2104 bit 20 */ - bool unusedBit_507_20 : 1; + offset 2116 bit 20 */ + bool unusedBit_510_20 : 1; /** - offset 2104 bit 21 */ - bool unusedBit_507_21 : 1; + offset 2116 bit 21 */ + bool unusedBit_510_21 : 1; /** - offset 2104 bit 22 */ - bool unusedBit_507_22 : 1; + offset 2116 bit 22 */ + bool unusedBit_510_22 : 1; /** - offset 2104 bit 23 */ - bool unusedBit_507_23 : 1; + offset 2116 bit 23 */ + bool unusedBit_510_23 : 1; /** - offset 2104 bit 24 */ - bool unusedBit_507_24 : 1; + offset 2116 bit 24 */ + bool unusedBit_510_24 : 1; /** - offset 2104 bit 25 */ - bool unusedBit_507_25 : 1; + offset 2116 bit 25 */ + bool unusedBit_510_25 : 1; /** - offset 2104 bit 26 */ - bool unusedBit_507_26 : 1; + offset 2116 bit 26 */ + bool unusedBit_510_26 : 1; /** - offset 2104 bit 27 */ - bool unusedBit_507_27 : 1; + offset 2116 bit 27 */ + bool unusedBit_510_27 : 1; /** - offset 2104 bit 28 */ - bool unusedBit_507_28 : 1; + offset 2116 bit 28 */ + bool unusedBit_510_28 : 1; /** - offset 2104 bit 29 */ - bool unusedBit_507_29 : 1; + offset 2116 bit 29 */ + bool unusedBit_510_29 : 1; /** - offset 2104 bit 30 */ - bool unusedBit_507_30 : 1; + offset 2116 bit 30 */ + bool unusedBit_510_30 : 1; /** - offset 2104 bit 31 */ - bool unusedBit_507_31 : 1; + offset 2116 bit 31 */ + bool unusedBit_510_31 : 1; /** * set can_mode X - * offset 2108 + * offset 2120 */ can_nbc_e can2NbcType; /** * set_can2_tx_pin X - * offset 2112 + * offset 2124 */ brain_pin_e can2TxPin; /** * set_can2_rx_pin X - * offset 2113 + * offset 2125 */ brain_pin_e can2RxPin; /** - * offset 2114 + * offset 2126 */ pin_output_mode_e starterControlPinMode; /** - * offset 2115 + * offset 2127 */ adc_channel_e wastegatePositionSensor; /** * Override the Y axis (load) value used for the ignition table. * Advanced users only: If you aren't sure you need this, you probably don't need this. - * offset 2116 + * offset 2128 */ afr_override_e ignOverrideMode; /** * Select which fuel pressure sensor measures the pressure of the fuel at your injectors. - * offset 2117 + * offset 2129 */ injector_pressure_type_e injectorPressureType; /** - * offset 2118 + * offset 2130 */ output_pin_e hpfpValvePin; /** - * offset 2119 + * offset 2131 */ pin_output_mode_e hpfpValvePinMode; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. kPa (absolute) - * offset 2120 + * offset 2132 */ float boostCutPressure; /** counter - * offset 2124 + * offset 2136 */ float mapAccelTaperBins[MAP_ACCEL_TAPER]; /** mult - * offset 2156 + * offset 2168 */ float mapAccelTaperMult[MAP_ACCEL_TAPER]; /** * todo: rename to fsioAnalogInputs - * offset 2188 + * offset 2200 */ adc_channel_e fsioAdc[AUX_ANALOG_INPUT_COUNT]; /** * Fixed timing, useful for TDC testing deg - * offset 2192 + * offset 2204 */ float fixedTiming; /** * MAP voltage for low point v - * offset 2196 + * offset 2208 */ float mapLowValueVoltage; /** * MAP voltage for low point v - * offset 2200 + * offset 2212 */ float mapHighValueVoltage; /** * EGO value correction value - * offset 2204 + * offset 2216 */ float egoValueShift; /** - * offset 2208 + * offset 2220 */ output_pin_e auxPidPins[CAM_INPUTS_COUNT]; /** - * offset 2212 + * offset 2224 */ spi_device_e cj125SpiDevice; /** - * offset 2213 + * offset 2225 */ pin_output_mode_e cj125CsPinMode; /** - * offset 2214 + * offset 2226 */ pin_output_mode_e sdCardCsPinMode; /** * need 4 byte alignment units - * offset 2215 + * offset 2227 */ - uint8_t alignmentFill_at_2215[1]; + uint8_t alignmentFill_at_2227[1]; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. percent - * offset 2216 + * offset 2228 */ int crankingIACposition; /** mult - * offset 2220 + * offset 2232 */ float tChargeMinRpmMinTps; /** mult - * offset 2224 + * offset 2236 */ float tChargeMinRpmMaxTps; /** mult - * offset 2228 + * offset 2240 */ float tChargeMaxRpmMinTps; /** mult - * offset 2232 + * offset 2244 */ float tChargeMaxRpmMaxTps; /** - * offset 2236 + * offset 2248 */ fsio_pwm_freq_t auxPidFrequency[CAMS_PER_BANK]; /** * Additional idle % when fan #1 is active % - * offset 2240 + * offset 2252 */ uint8_t fan1ExtraIdle; /** * need 4 byte alignment units - * offset 2241 + * offset 2253 */ - uint8_t alignmentFill_at_2241[3]; + uint8_t alignmentFill_at_2253[3]; /** Hz - * offset 2244 + * offset 2256 */ int alternatorPwmFrequency; /** units - * offset 2248 + * offset 2260 */ int unused2260; /** * Narrow Band WBO Approximation V - * offset 2252 + * offset 2264 */ float narrowToWideOxygenBins[NARROW_BAND_WIDE_BAND_CONVERSION_SIZE]; /** ratio - * offset 2284 + * offset 2296 */ float narrowToWideOxygen[NARROW_BAND_WIDE_BAND_CONVERSION_SIZE]; /** * set vvt_mode X - * offset 2316 + * offset 2328 */ vvt_mode_e vvtMode[CAMS_PER_BANK]; /** - * offset 2318 + * offset 2330 */ uint8_t vvtModePadding[CAMS_PER_BANK_padding]; /** * Additional idle % when fan #2 is active % - * offset 2318 + * offset 2330 */ uint8_t fan2ExtraIdle; /** units - * offset 2319 + * offset 2331 */ uint8_t unusedOldBiquad[9]; /** - * offset 2328 + * offset 2340 */ output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; /** * CLT-based timing correction C - * offset 2340 + * offset 2352 */ float cltTimingBins[CLT_TIMING_CURVE_SIZE]; /** degree - * offset 2372 + * offset 2384 */ float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; /** - * offset 2404 + * offset 2416 */ tle8888_mode_e tle8888mode; /** - * offset 2405 + * offset 2417 */ pin_output_mode_e LIS302DLCsPinMode; /** * None = I have a MAP-referenced fuel pressure regulator * Fixed rail pressure = I have an atmosphere-referenced fuel pressure regulator (returnless, typically) * Sensed rail pressure = I have a fuel pressure sensor - * offset 2406 + * offset 2418 */ injector_compensation_mode_e injectorCompensationMode; /** - * offset 2407 + * offset 2419 */ pin_output_mode_e fan2PinMode; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. kPa - * offset 2408 + * offset 2420 */ float fuelReferencePressure; /** units - * offset 2412 + * offset 2424 */ float unused244_2; /** units - * offset 2416 + * offset 2428 */ float unused244_3; /** units - * offset 2420 + * offset 2432 */ float unused2432; /** * Fuel multiplier (enrichment) immediately after engine start mult - * offset 2424 + * offset 2436 */ float postCrankingFactor; /** * Time over which to taper out after start enrichment seconds - * offset 2428 + * offset 2440 */ float postCrankingDurationSec; /** - * offset 2432 + * offset 2444 */ ThermistorConf auxTempSensor1; /** - * offset 2464 + * offset 2476 */ ThermistorConf auxTempSensor2; /** * Apply nonlinearity correction below a pulse of this duration. Pulses longer than this duration will receive no adjustment. ms - * offset 2496 + * offset 2508 */ uint16_t applyNonlinearBelowPulse; /** - * offset 2498 + * offset 2510 */ InjectorNonlinearMode injectorNonlinearMode; /** units - * offset 2499 + * offset 2511 */ uint8_t unused2508; /** Deg - * offset 2500 + * offset 2512 */ int16_t knockSamplingDuration; /** Hz - * offset 2502 + * offset 2514 */ int16_t etbFreq; /** - * offset 2504 + * offset 2516 */ pid_s etbWastegatePid; /** * For micro-stepping, make sure that PWM frequency (etbFreq) is high enough - * offset 2524 + * offset 2536 */ stepper_num_micro_steps_e stepperNumMicroSteps; /** * Use to limit the current when the stepper motor is idle, not moving (100% = no limit) % - * offset 2525 + * offset 2537 */ uint8_t stepperMinDutyCycle; /** * Use to limit the max.current through the stepper motor (100% = no limit) % - * offset 2526 + * offset 2538 */ uint8_t stepperMaxDutyCycle; /** units - * offset 2527 + * offset 2539 */ uint8_t unused2536; /** * per-cylinder timing correction deg - * offset 2528 + * offset 2540 */ angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; /** seconds - * offset 2576 + * offset 2588 */ float idlePidActivationTime; /** - * offset 2580 + * offset 2592 */ spi_device_e sdCardSpiDevice; /** units - * offset 2581 + * offset 2593 */ uint8_t unusedSpiPadding4[3]; /** - * offset 2584 + * offset 2596 */ pin_mode_e spi1SckMode; /** * Modes count be used for 3v<>5v integration using pull-ups/pull-downs etc. - * offset 2585 + * offset 2597 */ pin_mode_e spi1MosiMode; /** - * offset 2586 + * offset 2598 */ pin_mode_e spi1MisoMode; /** - * offset 2587 + * offset 2599 */ pin_mode_e spi2SckMode; /** - * offset 2588 + * offset 2600 */ pin_mode_e spi2MosiMode; /** - * offset 2589 + * offset 2601 */ pin_mode_e spi2MisoMode; /** - * offset 2590 + * offset 2602 */ pin_mode_e spi3SckMode; /** - * offset 2591 + * offset 2603 */ pin_mode_e spi3MosiMode; /** - * offset 2592 + * offset 2604 */ pin_mode_e spi3MisoMode; /** - * offset 2593 + * offset 2605 */ pin_output_mode_e stepperEnablePinMode; /** * ResetB - * offset 2594 + * offset 2606 */ brain_pin_e mc33816_rstb; /** - * offset 2595 + * offset 2607 */ brain_pin_e mc33816_driven; /** * Brake pedal switch - * offset 2596 + * offset 2608 */ switch_input_pin_e brakePedalPin; /** * lambda input - * offset 2597 + * offset 2609 */ adc_channel_e cj125ua; /** * heater input - * offset 2598 + * offset 2610 */ adc_channel_e cj125ur; /** - * offset 2599 + * offset 2611 */ pin_input_mode_e brakePedalPinMode; /** - * offset 2600 + * offset 2612 */ pid_s auxPid[CAMS_PER_BANK]; /** - * offset 2640 + * offset 2652 */ float injectorCorrectionPolynomial[8]; /** units - * offset 2672 + * offset 2684 */ uint8_t unused1366[8]; /** - * offset 2680 + * offset 2692 */ linear_sensor_s oilPressure; /** - * offset 2700 + * offset 2712 */ spi_device_e accelerometerSpiDevice; /** - * offset 2701 + * offset 2713 */ output_pin_e fan2Pin; /** * Cooling fan turn-on temperature threshold, in Celsius deg C - * offset 2702 + * offset 2714 */ uint8_t fan2OnTemperature; /** * Cooling fan turn-off temperature threshold, in Celsius deg C - * offset 2703 + * offset 2715 */ uint8_t fan2OffTemperature; /** x - * offset 2704 + * offset 2716 */ float fsioCurve1Bins[FSIO_CURVE_16]; /** y - * offset 2768 + * offset 2780 */ float fsioCurve1[FSIO_CURVE_16]; /** x - * offset 2832 + * offset 2844 */ float fsioCurve2Bins[FSIO_CURVE_16]; /** y - * offset 2896 + * offset 2908 */ float fsioCurve2[FSIO_CURVE_16]; /** x - * offset 2960 + * offset 2972 */ float fsioCurve3Bins[FSIO_CURVE_8]; /** y - * offset 2992 + * offset 3004 */ float fsioCurve3[FSIO_CURVE_8]; /** x - * offset 3024 + * offset 3036 */ float fsioCurve4Bins[FSIO_CURVE_8]; /** y - * offset 3056 + * offset 3068 */ float fsioCurve4[FSIO_CURVE_8]; /** * Continental/GM flex fuel sensor, 50-150hz type - * offset 3088 + * offset 3100 */ brain_input_pin_e flexSensorPin; /** - * offset 3089 + * offset 3101 */ brain_pin_e test557pin; /** - * offset 3090 + * offset 3102 */ pin_output_mode_e stepperDirectionPinMode; /** - * offset 3091 + * offset 3103 */ uint8_t unused3103; /** - * offset 3092 + * offset 3104 */ output_pin_e stepperEnablePin; /** - * offset 3093 + * offset 3105 */ brain_pin_e tle8888_cs; /** - * offset 3094 + * offset 3106 */ pin_output_mode_e tle8888_csPinMode; /** - * offset 3095 + * offset 3107 */ brain_pin_e mc33816_cs; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) RPM - * offset 3096 + * offset 3108 */ float crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) deg - * offset 3112 + * offset 3124 */ float crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; /** * todo: more comments - * offset 3128 + * offset 3140 */ brain_pin_e servoOutputPins[SERVO_COUNT]; /** * This sets the RPM above which fuel cut is active. rpm - * offset 3136 + * offset 3148 */ int16_t coastingFuelCutRpmHigh; /** * This sets the RPM below which fuel cut is deactivated, this prevents jerking or issues transitioning to idle rpm - * offset 3138 + * offset 3150 */ int16_t coastingFuelCutRpmLow; /** * Throttle position below which fuel cut is active. % - * offset 3140 + * offset 3152 */ int16_t coastingFuelCutTps; /** * Fuel cutoff is disabled when the engine is cold. C - * offset 3142 + * offset 3154 */ int16_t coastingFuelCutClt; /** * Increases PID reaction for RPM5v integration using pull-ups/pull-downs etc. - * offset 2577 + * offset 2589 */ pin_mode_e spi1MosiMode; /** - * offset 2578 + * offset 2590 */ pin_mode_e spi1MisoMode; /** - * offset 2579 + * offset 2591 */ pin_mode_e spi2SckMode; /** - * offset 2580 + * offset 2592 */ pin_mode_e spi2MosiMode; /** - * offset 2581 + * offset 2593 */ pin_mode_e spi2MisoMode; /** - * offset 2582 + * offset 2594 */ pin_mode_e spi3SckMode; /** - * offset 2583 + * offset 2595 */ pin_mode_e spi3MosiMode; /** - * offset 2584 + * offset 2596 */ pin_mode_e spi3MisoMode; /** - * offset 2585 + * offset 2597 */ pin_output_mode_e stepperEnablePinMode; /** * ResetB - * offset 2586 + * offset 2598 */ brain_pin_e mc33816_rstb; /** - * offset 2587 + * offset 2599 */ brain_pin_e mc33816_driven; /** * Brake pedal switch - * offset 2588 + * offset 2600 */ switch_input_pin_e brakePedalPin; /** * lambda input - * offset 2589 + * offset 2601 */ adc_channel_e cj125ua; /** * heater input - * offset 2590 + * offset 2602 */ adc_channel_e cj125ur; /** - * offset 2591 + * offset 2603 */ pin_input_mode_e brakePedalPinMode; /** - * offset 2592 + * offset 2604 */ pid_s auxPid[CAMS_PER_BANK]; /** - * offset 2612 + * offset 2624 */ float injectorCorrectionPolynomial[8]; /** units - * offset 2644 + * offset 2656 */ uint8_t unused1366[8]; /** - * offset 2652 + * offset 2664 */ linear_sensor_s oilPressure; /** - * offset 2672 + * offset 2684 */ spi_device_e accelerometerSpiDevice; /** - * offset 2673 + * offset 2685 */ output_pin_e fan2Pin; /** * Cooling fan turn-on temperature threshold, in Celsius deg C - * offset 2674 + * offset 2686 */ uint8_t fan2OnTemperature; /** * Cooling fan turn-off temperature threshold, in Celsius deg C - * offset 2675 + * offset 2687 */ uint8_t fan2OffTemperature; /** x - * offset 2676 + * offset 2688 */ float fsioCurve1Bins[FSIO_CURVE_16]; /** y - * offset 2740 + * offset 2752 */ float fsioCurve1[FSIO_CURVE_16]; /** x - * offset 2804 + * offset 2816 */ float fsioCurve2Bins[FSIO_CURVE_16]; /** y - * offset 2868 + * offset 2880 */ float fsioCurve2[FSIO_CURVE_16]; /** x - * offset 2932 + * offset 2944 */ float fsioCurve3Bins[FSIO_CURVE_8]; /** y - * offset 2964 + * offset 2976 */ float fsioCurve3[FSIO_CURVE_8]; /** x - * offset 2996 + * offset 3008 */ float fsioCurve4Bins[FSIO_CURVE_8]; /** y - * offset 3028 + * offset 3040 */ float fsioCurve4[FSIO_CURVE_8]; /** * Continental/GM flex fuel sensor, 50-150hz type - * offset 3060 + * offset 3072 */ brain_input_pin_e flexSensorPin; /** - * offset 3061 + * offset 3073 */ brain_pin_e test557pin; /** - * offset 3062 + * offset 3074 */ pin_output_mode_e stepperDirectionPinMode; /** - * offset 3063 + * offset 3075 */ uint8_t unused3103; /** - * offset 3064 + * offset 3076 */ output_pin_e stepperEnablePin; /** - * offset 3065 + * offset 3077 */ brain_pin_e tle8888_cs; /** - * offset 3066 + * offset 3078 */ pin_output_mode_e tle8888_csPinMode; /** - * offset 3067 + * offset 3079 */ brain_pin_e mc33816_cs; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) RPM - * offset 3068 + * offset 3080 */ float crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) deg - * offset 3084 + * offset 3096 */ float crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; /** * todo: more comments - * offset 3100 + * offset 3112 */ brain_pin_e servoOutputPins[SERVO_COUNT]; /** * This sets the RPM above which fuel cut is active. rpm - * offset 3108 + * offset 3120 */ int16_t coastingFuelCutRpmHigh; /** * This sets the RPM below which fuel cut is deactivated, this prevents jerking or issues transitioning to idle rpm - * offset 3110 + * offset 3122 */ int16_t coastingFuelCutRpmLow; /** * Throttle position below which fuel cut is active. % - * offset 3112 + * offset 3124 */ int16_t coastingFuelCutTps; /** * Fuel cutoff is disabled when the engine is cold. C - * offset 3114 + * offset 3126 */ int16_t coastingFuelCutClt; /** * Increases PID reaction for RPM5v integration using pull-ups/pull-downs etc. - * offset 2585 + * offset 2597 */ pin_mode_e spi1MosiMode; /** - * offset 2586 + * offset 2598 */ pin_mode_e spi1MisoMode; /** - * offset 2587 + * offset 2599 */ pin_mode_e spi2SckMode; /** - * offset 2588 + * offset 2600 */ pin_mode_e spi2MosiMode; /** - * offset 2589 + * offset 2601 */ pin_mode_e spi2MisoMode; /** - * offset 2590 + * offset 2602 */ pin_mode_e spi3SckMode; /** - * offset 2591 + * offset 2603 */ pin_mode_e spi3MosiMode; /** - * offset 2592 + * offset 2604 */ pin_mode_e spi3MisoMode; /** - * offset 2593 + * offset 2605 */ pin_output_mode_e stepperEnablePinMode; /** * ResetB - * offset 2594 + * offset 2606 */ brain_pin_e mc33816_rstb; /** - * offset 2595 + * offset 2607 */ brain_pin_e mc33816_driven; /** * Brake pedal switch - * offset 2596 + * offset 2608 */ switch_input_pin_e brakePedalPin; /** * lambda input - * offset 2597 + * offset 2609 */ adc_channel_e cj125ua; /** * heater input - * offset 2598 + * offset 2610 */ adc_channel_e cj125ur; /** - * offset 2599 + * offset 2611 */ pin_input_mode_e brakePedalPinMode; /** - * offset 2600 + * offset 2612 */ pid_s auxPid[CAMS_PER_BANK]; /** - * offset 2640 + * offset 2652 */ float injectorCorrectionPolynomial[8]; /** units - * offset 2672 + * offset 2684 */ uint8_t unused1366[8]; /** - * offset 2680 + * offset 2692 */ linear_sensor_s oilPressure; /** - * offset 2700 + * offset 2712 */ spi_device_e accelerometerSpiDevice; /** - * offset 2701 + * offset 2713 */ output_pin_e fan2Pin; /** * Cooling fan turn-on temperature threshold, in Celsius deg C - * offset 2702 + * offset 2714 */ uint8_t fan2OnTemperature; /** * Cooling fan turn-off temperature threshold, in Celsius deg C - * offset 2703 + * offset 2715 */ uint8_t fan2OffTemperature; /** x - * offset 2704 + * offset 2716 */ float fsioCurve1Bins[FSIO_CURVE_16]; /** y - * offset 2768 + * offset 2780 */ float fsioCurve1[FSIO_CURVE_16]; /** x - * offset 2832 + * offset 2844 */ float fsioCurve2Bins[FSIO_CURVE_16]; /** y - * offset 2896 + * offset 2908 */ float fsioCurve2[FSIO_CURVE_16]; /** x - * offset 2960 + * offset 2972 */ float fsioCurve3Bins[FSIO_CURVE_8]; /** y - * offset 2992 + * offset 3004 */ float fsioCurve3[FSIO_CURVE_8]; /** x - * offset 3024 + * offset 3036 */ float fsioCurve4Bins[FSIO_CURVE_8]; /** y - * offset 3056 + * offset 3068 */ float fsioCurve4[FSIO_CURVE_8]; /** * Continental/GM flex fuel sensor, 50-150hz type - * offset 3088 + * offset 3100 */ brain_input_pin_e flexSensorPin; /** - * offset 3089 + * offset 3101 */ brain_pin_e test557pin; /** - * offset 3090 + * offset 3102 */ pin_output_mode_e stepperDirectionPinMode; /** - * offset 3091 + * offset 3103 */ uint8_t unused3103; /** - * offset 3092 + * offset 3104 */ output_pin_e stepperEnablePin; /** - * offset 3093 + * offset 3105 */ brain_pin_e tle8888_cs; /** - * offset 3094 + * offset 3106 */ pin_output_mode_e tle8888_csPinMode; /** - * offset 3095 + * offset 3107 */ brain_pin_e mc33816_cs; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) RPM - * offset 3096 + * offset 3108 */ float crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) deg - * offset 3112 + * offset 3124 */ float crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; /** * todo: more comments - * offset 3128 + * offset 3140 */ brain_pin_e servoOutputPins[SERVO_COUNT]; /** * This sets the RPM above which fuel cut is active. rpm - * offset 3136 + * offset 3148 */ int16_t coastingFuelCutRpmHigh; /** * This sets the RPM below which fuel cut is deactivated, this prevents jerking or issues transitioning to idle rpm - * offset 3138 + * offset 3150 */ int16_t coastingFuelCutRpmLow; /** * Throttle position below which fuel cut is active. % - * offset 3140 + * offset 3152 */ int16_t coastingFuelCutTps; /** * Fuel cutoff is disabled when the engine is cold. C - * offset 3142 + * offset 3154 */ int16_t coastingFuelCutClt; /** * Increases PID reaction for RPM5v integration using pull-ups/pull-downs etc. - * offset 2585 + * offset 2597 */ pin_mode_e spi1MosiMode; /** - * offset 2586 + * offset 2598 */ pin_mode_e spi1MisoMode; /** - * offset 2587 + * offset 2599 */ pin_mode_e spi2SckMode; /** - * offset 2588 + * offset 2600 */ pin_mode_e spi2MosiMode; /** - * offset 2589 + * offset 2601 */ pin_mode_e spi2MisoMode; /** - * offset 2590 + * offset 2602 */ pin_mode_e spi3SckMode; /** - * offset 2591 + * offset 2603 */ pin_mode_e spi3MosiMode; /** - * offset 2592 + * offset 2604 */ pin_mode_e spi3MisoMode; /** - * offset 2593 + * offset 2605 */ pin_output_mode_e stepperEnablePinMode; /** * ResetB - * offset 2594 + * offset 2606 */ brain_pin_e mc33816_rstb; /** - * offset 2595 + * offset 2607 */ brain_pin_e mc33816_driven; /** * Brake pedal switch - * offset 2596 + * offset 2608 */ switch_input_pin_e brakePedalPin; /** * lambda input - * offset 2597 + * offset 2609 */ adc_channel_e cj125ua; /** * heater input - * offset 2598 + * offset 2610 */ adc_channel_e cj125ur; /** - * offset 2599 + * offset 2611 */ pin_input_mode_e brakePedalPinMode; /** - * offset 2600 + * offset 2612 */ pid_s auxPid[CAMS_PER_BANK]; /** - * offset 2640 + * offset 2652 */ float injectorCorrectionPolynomial[8]; /** units - * offset 2672 + * offset 2684 */ uint8_t unused1366[8]; /** - * offset 2680 + * offset 2692 */ linear_sensor_s oilPressure; /** - * offset 2700 + * offset 2712 */ spi_device_e accelerometerSpiDevice; /** - * offset 2701 + * offset 2713 */ output_pin_e fan2Pin; /** * Cooling fan turn-on temperature threshold, in Celsius deg C - * offset 2702 + * offset 2714 */ uint8_t fan2OnTemperature; /** * Cooling fan turn-off temperature threshold, in Celsius deg C - * offset 2703 + * offset 2715 */ uint8_t fan2OffTemperature; /** x - * offset 2704 + * offset 2716 */ float fsioCurve1Bins[FSIO_CURVE_16]; /** y - * offset 2768 + * offset 2780 */ float fsioCurve1[FSIO_CURVE_16]; /** x - * offset 2832 + * offset 2844 */ float fsioCurve2Bins[FSIO_CURVE_16]; /** y - * offset 2896 + * offset 2908 */ float fsioCurve2[FSIO_CURVE_16]; /** x - * offset 2960 + * offset 2972 */ float fsioCurve3Bins[FSIO_CURVE_8]; /** y - * offset 2992 + * offset 3004 */ float fsioCurve3[FSIO_CURVE_8]; /** x - * offset 3024 + * offset 3036 */ float fsioCurve4Bins[FSIO_CURVE_8]; /** y - * offset 3056 + * offset 3068 */ float fsioCurve4[FSIO_CURVE_8]; /** * Continental/GM flex fuel sensor, 50-150hz type - * offset 3088 + * offset 3100 */ brain_input_pin_e flexSensorPin; /** - * offset 3089 + * offset 3101 */ brain_pin_e test557pin; /** - * offset 3090 + * offset 3102 */ pin_output_mode_e stepperDirectionPinMode; /** - * offset 3091 + * offset 3103 */ uint8_t unused3103; /** - * offset 3092 + * offset 3104 */ output_pin_e stepperEnablePin; /** - * offset 3093 + * offset 3105 */ brain_pin_e tle8888_cs; /** - * offset 3094 + * offset 3106 */ pin_output_mode_e tle8888_csPinMode; /** - * offset 3095 + * offset 3107 */ brain_pin_e mc33816_cs; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) RPM - * offset 3096 + * offset 3108 */ float crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) deg - * offset 3112 + * offset 3124 */ float crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; /** * todo: more comments - * offset 3128 + * offset 3140 */ brain_pin_e servoOutputPins[SERVO_COUNT]; /** * This sets the RPM above which fuel cut is active. rpm - * offset 3136 + * offset 3148 */ int16_t coastingFuelCutRpmHigh; /** * This sets the RPM below which fuel cut is deactivated, this prevents jerking or issues transitioning to idle rpm - * offset 3138 + * offset 3150 */ int16_t coastingFuelCutRpmLow; /** * Throttle position below which fuel cut is active. % - * offset 3140 + * offset 3152 */ int16_t coastingFuelCutTps; /** * Fuel cutoff is disabled when the engine is cold. C - * offset 3142 + * offset 3154 */ int16_t coastingFuelCutClt; /** * Increases PID reaction for RPMZ95go#cw7qVKQdbN1A~%%fqp&a2Aj^({(O=>BAUs3G<8*YnjmuJ$3V>@R;fQ>ISb zdJtrLc+S^Smvp{fFx4`XDNFJ(nh89S&kigm#{VP!H3jP>X-g} zG8GFy4qq(b4+Qjq{kXn*h0nocvj(43 zclDd@@!q^I_eec6-+S(;QuqS+MYfDh0z1}E!=<@5K z97AkRi(z0YuETe9K($^%WiasAP4=VOf}6^CSQBFB+wbKgVcV4&PW~wUUTM5dqs3zO zAdWQeO73J`tv_?=wUARG6eUuTwSJ5i9|T&wQl9rua>Y_G{@Q!L|65hB_7_gS9Y<@q zdT@pMHocXx(UI*`tks$oht{$&9cFq0jlWL|?+j7rShuc)h;%PlnP)v-=VCXJts zA}4pq@-*BVyj&a1l3o{?z|@(NaA@sGr&Gs&G#%^Pc1xwlXHP^|hl57^@a7|%#n~vP z8!dxyW53q!5%t;#Z2f+^E z9;FXDM%%>3t_qLYUk!H{d10FAaPO_9(#}kVk1cZ!rGm5{M2n7SoT0OOe3W#pe4a!5 z(f+UBlFZH?7LBUE;#3|wDE(Dlea}`!y7&J5PyF}c?!@~&z0Ai}<2w=-_-yZ!-t*=0 zLiB+tEKK%eYPw||LkmV!yX*Yhp6~i_>7b|qbA`>OjuK4J?7=YcL;BCwU)jD{XFr2g z+e2o3x3KMe9tmF6U8EE0Qv!9{PCotQ;nJPyJl-^*>U9t2H2%~79K{ySBu8C+HF6#x%zbh^Z^0>1=ZuEUvN8(VR{5Lg&z)$C5 z>eqFoY%n@3#QpWk^H;f*CX;@ely~p1!+5x-q(lwlMXdU2;Z~E+A_~a2!Pm^nomb1?$VMQnFM*9nID@tF;_}FTnFn{-` z_2K-uO~+l%g0Lhx3fgZ^-%LETo~~wp@7gCTzo~Nnu3f1`7Y?m;e9HT2jahT8d7X0T zk=DjnZAYnc86Dd$w-+CldF0vEaC=9Yi+)g1kjjR6TweFLN(pYvD{<-M9uJ+pDF24Q8){jVp-9y%1B*dc%0VB$`y{{aEs4TbX##q6?lyh+A& z!(wuF3^aZZd6zqByoNnxVDLeBNc`8($+t%Y6MHO7q}L>9 z?YXbtrfYLww64c0&)CLtu5o+4H~Sk`*%us7EP{(LlWF@;%8K+x(c&_nXW8?IKTU3~ zWT?-@xHvzrcriAdYm_%t;32;Coo`)Pdakwwjeqgb)sh3!hoY@2L{5F&eoiK0j5FX} z_mkmQTC6i^pQ7e9cj;I5oYI_>RZLbs&2r_cj<(PU=lE4=@l7cc^;d7Y_S+XYzLbiJ z4HPqe5V#vt80}*JYQ3vrKF%PK9P^O(v0mfc1xAI;lf&toxa{^DztQ>l@wpZX{U@d^;>$uO)zDrV;nJwww8VXF%r&wF&{NZ7xd)r)sa&&_HpRhEak!);! z)v(=~t!gqS<^Ek2RwnrLehw=IfLXN)_h!vdY!{!W4Ds0F%}I&94L9o`z;zdS({t zDd~2Bmv6msXO5~}_C(o(khS8Qt2ru0huf_}bdKMt3bZ{tcGmlPhvwdD*M#Zy-}e=5 z4Zdo9Fy&zS_o;>1+g)q93%Y4d9S^I9;4Z6LOQo6oAQ!qB5qFthHD=26WS(d0VCMIm zAu-V*dALsN-G|H%$6UFwtF?9G)(eL}-j&qAhV1H$lu18nF><;fx9K}u#1D7_ zf2_$3)r&dC z!?EtlxhGBCm&(q()#;Meau}%j47WE}E~7 zSynu7SUWkAUovxkD93_E61~S?4J+<`Fr1hcmHy0Fw}`$vWoL;Qb570l4~>vxJ#-7>_J#gaB_(U# zYR`{-Q@AF$?unRi!OMr_RC)8R$_-xnz2Cg*eYv5RnIa}Ysjw41#HCis79mDO5C8Pi86HZoaQxmjh!Tq>Z z?;Dk{j|;f0_dohoaW-T9 z#i+#mxE|6{`mm|f<^xHYm%9CADH@L~kBJj9= zgv}9?gF&a6?%^y#ns+{B&>)*2Q_3Fq$ux^HX&}85l)u&9Ve^*gx!YoiW|6+rMpL6H zgS7k$BW4P7?GDeZRCFTiA2eUo{ux%zk37=3)}?YeIUDN}^N6Qa1}BzSh(WoKuaOw7-Z&J+e1`TGs3HS`L#%^5D%2+>KhYJq=p=6{Gz1%Gd94 zew0&hH9EuaYqp4{>U0K!gNf#T?X^_B&Gcgw$V2Bzrxzdk4(1e78pyGnZ@YYW4RhsZ znGg1EvcF0Vb2qa$0xY$nWEW?XQf(Q2S4 za9`yb(=CyY_DoIu#Q8T_+;$ZewHtN*_{-p(0K*<52CU?)!`zRL!;`;~kDH%;y-kyR z@At3vUy2NN_@y3oAkTQeUHp|v!JAnor_X*NH)l%=9Rj9YJ7!-dB7Sb|bGIu`%&-^d zDwOPfJz$@(E;f_b`_}2KZJK*#=aLfHjWssCX>d%PJLklE*qs(?ODolwO}-9QT_# z8|C&y>`Ta_L~G3Vi+*+U)S7owQ_I)W_VsyW&4*n0aCo!koZ*|VXZ-x{j9WCx*gp?= z-<0@3f@O=C#tBo=eSC>OPWX!k%3g{dc_EqQpwINxTQtPXm;Yg~fS8tsu)*WO+ob;S z@7dQdoY(h>Sx4Q>c2n_XCFyB*Tx7|xfWYa~I^ibM4_;ky4K6Vk8NG?ou`#7e+96po zHh()@y6cPbn~^ndoy=$59*?B^Px;TzU(-|`@OfY4-I~k(SXxyhLfY4#JB|8b%Qq*A z2_4QyR|dIizfU#ywmzv>bJ!!6c}MVme6?05a`b?hUCV-=JNq?l-{Tef^{uaQ@^VI= zjjW!dcR%YeAvep?Vr%a_9>)C4n~W`Vbk9+J|Frmf#&w>1QD3&jXq-}cnrCuK^@VZo zW3QB>uI**#{kkhXvT}ounANr?yOFNswC`xb4hP$K!uXEiA@kHrON%6EHCv0EAn zKHQd-_l$0zlap|Tjpi%Mjvf`pD-F`)&zm9a%)*;c|0j4IRJ7iAG z37(jheRttX*F&zs?8s~$O^4d>BUPKO_#ju558+Od8f&k&;+kb0^3n4R8LpdD;}o&E zyB*hi&SgEsbj{($dn}h7f4XGSFndzXn%&Qb&gN#Q zV8hSuw9~per+n1Ta<`p&1#fm@$a(eWyAH^DmtOZhsF9JBcrJRsu~dy*%nzZ!34IUW z+DwXB1>D}KNv0^OgAdqBzA&VD@Yy%1tBc2C_%93Wp01eOV%;?nY;l7%?1Jb4O-XTy zO9j6&#ZsU1gni_iro3Oj!MG9=!Z@PZU+wpBPfUgV{+~ZK;nMeXoikI=kGb4^?ty%= zX*fw-{)PuN@zDaKin?cCwr=A1!)){K0XglT?pjAS>_xV|pZR`Frbl@q@Xj{hteNOTj*cW*29*pX z0p|ifDPL0A?e6ud@4&%h*#cCu&0fu84{5RVTh(Haxl7ymL^^V&*^*3~nvOLWD*Wg+ z>Pp$sJf^-6SFap6DgU4fOFCCuqL4@FAnGiweR=R`?RbLQYbq^=A3PE^)x60ZO2?ux z#kX&3h%HD=-;CN&*I?ZH#7_CMe3{gzpr`%0Z1-HJF}%lukIxs}Iqtgk&a1urEw>Vn zi{GK$k@ND_HO&1ehF|(WtENtmuz!-UsIYmIM|V!Zb*QWw*F2cIUwPQ9OT;{p(NC?42Aus>jX4 zDg^Z7*UAUo2vKYgu9VU|(L|l0k`*;E7}5T=)5IiIr0A}rup;8&L@VZ@E*TM^e%OYd z+V$N_l1!!2uFqoQ!S8XQL*aw^KIy-VT%_DH_x0@f#oKjwp|2#`<#n`k;uM3-QY<=*RI>x>%)KFujE@@u=Q8881 zX!)0~=+}^Jo(1vjNu*Qw`nOc`_^1z0 zM`Mi4?Vn+t=NfRYhIFGnA3EGP`sv=GLh=ELkhq&ps@wJ38sw)k@5U$YzI=ICduDLq z&B2e1`TO(5ryp4#-?Jy~%?$3|r+f2H;@vemW za()(+&$Fh=uHR?vcqhXsvPyVi=usu8DeuJ!Y-IFJG*Cl$Yw6 zMDfbr-GSd6$FfP-^g9^U`@R|Ycbs|Ut$%H1UecDEK5)D&+{Bh)ghpY12=A}Ro?92_ zcMj|*y(^J*nq(rW=Y{F7=!BX$d)((8G%7#b+yzv5x(bf&_k7-}qj1lS#HL!SR&Pzi zIo#!o1L9IA&PR)?c}^Qi6k8Uu9zL@5O?Q-`pkF~8o2!vhTiP>nRjiWOPuV+8!)Kpe z9irx!yS{s7tS{KWtFL+Nm-LS-`A^oJ(7vK*<^Kee8~5EfBI<61;bG4L$)^GNia6f} z$r}SZs!g^9dVl*=^~89n$kO%`S$3L^RhX8UveIiFU)@9WN7hzV(&}^ullqEC-S$=C zukx5m{6xy|gQ|6)D+DPs}kRhG7;-_l`QLyoOE*p^&3{)tYwcJ)WxZ zIlF&I_du=HfUxj;DY1afBZ!PvJbkYLZl0>uS?#-ywb04ft~(W+whND~?TZ{bZ&;gC zxeLd}%@^8t@` zOn4HPk$98;=d&AV>PB(&y@PsHG1TWO15X6Y1VtHso|e`3?0hE>q{-7_b@kL$QneFg z13JMPHHHpNX2*6OyllCBeQH9b_#?e_^&We19UWUgY`AcTt0K@tX5Y2U49c==8ZR2h z$E#^>>^viqm%;YY{}69Xc1%XJm&6Tcx}z8GR|@V4YAn+@yPNf8Hc7F_t$n0jNXi^t z^BIcklU!8%M$Pt=16zZ_B($Hhp4i)dov}UsiiCC7;I4r|sH0Y7W$s*k$ z7dv+CsDKe}M}=N}nM_;6W@(8c3t2HPbIxw9JCySb=! z%o_toZ-fT+Z8)arSLMzjQ9$BUF_Wn0!SvQPsBpY8YFao)cD+oD(7l?g2ZIA{PxoK& zuKsYc;zRw%`g1n5XLalknW)UTPG2~&Q~r>AMQ`)7b!}3(va!*bwH1Nyr&S-FzS`F2 zhdrVBZHvZhLGg%iuOq#Jl#Q0Myf-;^-`bVBhptCW=(I`6kFOincZH@gPMf^jwb!Py zB534nT^V~oN)n6_0P0w{9pPo8S zsEee#kyT-s^@i-!(*)nK(lbd3y5Zl~s-|a}(Z-pzhEo;DiJbE^=*=Ur8TB;KQJ-2d@k2hnPD`tb>Qnu6$Dp01qDT8GRxdw-d<@25Re%z0Ba>-}BH0NLTwi8#zd>)z+L8w#2N z;{wI7`VmyZ>)%a>SqYnZ7F@7DPDSZ(_Cl*AWw+M>-CwN3dIvN>l4wdbRF_gL*w{T2(V-7@!^XW!nxWTI3UyuJL`q2SG3 zK}_2|&A(nas1#1ebxLBp+*91C#;1;N?zZryj}@PaFv;+`ZuZ7Ia;Ew2o+r1r#P&4d z4juBiZk4mO-DUSTojJ3djfS0W!|c9iH>lNY{Zex+H-x*Yq)Kpd&vpgvV}?F@?oA0c zshu`QJLnZXQun1D++vy6ET>A6Q26sX^Zv5Lv55RF_B&Ne?#h*UY{Gt!Ot}C zl;EwM7gRTLHF`eI(uzuX5#OFp+lD)Lh?I3*qITg?nknZCm#Mi1x~_6~oi@KN(9`X9 zES^n@HcPY_caAQY?MC=rOudx;IiF#an`Z-9N#=ecE;BI;dOUu}%f~Im(O%9SeY235g z^QmX57OKBVe5BScxjZnYc)9jrosWTkeW9z~gx`6Ax6|z``}b`>cW~6MSufK#o;$Am z_4SOT&rGGCc8mapVD$a@r(g=t6(8;coJ4e+pqDPm|S7H0^^W%FrD&=WR zE|@7(d6g&TY-uFB=B?Z=qj#4ol`zA-N65*o<8QIr8QOJq7n|F~$ z0+@!^Au^b$1zZ_ObT&lRjNr9%^$vls#mDqt@0qw6m>Uh|jQN zyKd)I8tUfaeX%r8pL;bF9h8=-7UdT)?5Me_>UYmPIE!Mc+lWO*mDZb_$XJ z-1U%d(xm5sUb*y>hnenI%aWP!-K@1$ZA~ZB>|o}VE4Dt{N#^KskLn2RwXAPExl;RG z=S*2*@7L@uHb}pyX7g6#g6{`crGRon*?@JMK1|QLq*7H$Si8G@;;TvWd(-Tjy636L z;J1wx_fEh1K2xE!$47bBaGylC}xTv|D8(V3}#5)8CJ;fzok2BBo`cgW!K215B?gRa|7Nt3l6mR_};WhC;iUbetiNb z>-j|`*@tpY!-J6@tQuCD!RIg2Jg|M2|-K4u~#a-z|#HvfR-%315rk}NU zlusWPAGV_Vxur+a_p+9?1*zANoDcD*9Ep~rYpG_-&d+}~p{}pVk}CbZ zWRF9c=);RRXP%UGwp9_1cIaIeg?G=B4f2_+jwh~Vow}#|O7U=ulj6*)Aj!=c%wbWt zavMqBn^#{8|C&3nzn$}(k|gs?J=aUdGSc2!<@A1sujd{5?r;1?CHTR~bX@dXABHrV zOzOaBy^VuZ8_DDP=(r0NcZ899!RC~KHBsF%cEWGxSf_B6H?Lh_G7v81d=uMb@9r0M zBx7XFmyHH%Bh^`+#L0eE-h-3gUU@pSCc(GNMpBmhy)8HCr7yh4ANL`*pZNyN-N<-Z z7BxGZWaJ`z(Co+4twwJ|w|!TXF}!~<-&6g{#etlxa_U$2rNoM)whWBkp%7t`i{q3X zXMPfYd!R+w)&hgOC{$?NCG>-2?JHkd&NBiCZASim6@_bEG72ogYK$+9j?Z`(3Ukae z`P-N=q>8A1+dgJo^x2<%?CH5pJL6`&vh_+WA8ZHXe9SfDgMemudXpmuIlJHP zfa`NIJB_Jn%%2QKb_9@+=w^|U>@+6!DI_E$h{6v_ZTded=e*yji`~~<6@E71Oz+ZsB0Dl4g0{jK|3-A}< zFTh`bzW{#${sR03_zUnC;4i>mfWQ0$f4PFbo(0ceEN{@WAw%n_*VF%@DZdR2idGt= zs4a-minuhjG#y^EnBJi0LMVhO*pWa#GB)BAf{;N|?rTsR69*VIsdY&y@C_q7MJTwC zqgvEh;y6LdgkzAmgVdYpq){nD*g(pFlmRINQU;_9NEwhaAZ0+xfRq6#15yU03`iM} zG9YC@%7BysDFadlqzp(IkTM`;K+1rW0VxAg2BZu~8IUp{WkAY+l=%lK6TT#6COY}p z5Jn#w>ewM_HYCNLi-rD=QTa_~P`$$8Mzfn(ulTyroT4E^1EZaMT=)t$5Jwla3d4Ghk=H&VZc(I|FtG>XmtQd(V7GBhCT%E*Ou zNm9@uJ4&%UcwFzh5(hdX+arbPmK`Wy=>jTN*Na;3M5y#KW1Ah49Nve+ri@QWYUKp0GI(V17HTg41gH`Gyec)qL;vok|YB+;(mjE=@***_>|vt29+zp;tbZra^;ga z!&WjfG$1RKKX`{3~sqQ{i7()59Q4 zr-mXK!UjkNkPILhKr(=20LcK70VD%R29OLO89*|CWB|zkk^v+GNCuD$AQ?b1fMfv4 z0FnVD14sst3?LamGJs?N$pDf8Bm+nWkjy_I8N5p&At6DOTp2l#xJTF}B=g6o{6;b{ z7-YpYK#%M?!czcXdhZJ8z%5~I^Vi40)_A_GJQhzt-JATmH?fXD!m0U`rL28aw086Yx1WPr#3kpUtDL@)%*3)F^KDpm zCPotKKSbrXl0gN_hcqTjV!Wc4&Xh<^h6dgaQgb1{vYEt*qXa60Ms*9Awi5^93YZK? z@x|WVVNxRw5U9*G43dyV#f60KT_Z}TjZzuH22=*93{V-MGC*a3$^exCDg#sos0>gU zpfW&ZfXV=s0V)Gj2B-{B8K5#iWq`^6l>sUPR0gOFP#K^yKxKf+0F?nM15^g6%s)_> zYfDtd68~#Um2cLpr~gA!eiIo~uB7&_u_Hz+bZ^%U$NfMo#70G0tP16T&I3}6|+GJs_O%K(-EECW~uunb@s zz%qbk0LuWD0W1Sp2CxiZnSa1C*O#!&uEVUX(N7tekmNQjHIm}b#X|qbsQgwls9uo} zW6?xB_*s~U3Cm$yRtXw1G+HFWVniGmbYvAI#Rt%0+lT^)y))}K{QjMXSvjL=8JUoP zNgghugc1U^K{FbpSagX4({8MKi&biQuyP{K&#-)WX!ED9OVB1BgA8@DY@#zjp$%aJ zXamp&pbbD9fHnYa0NMbw0cZoz2A~Z<8-O+dZ2;N;v;k-X&<3ClKpTKI0Br!;0JH&U z1JDMb4L}=!HUMn^+5ofxXamsZAD~VAA83O?HrlYRqyIxwe)}2}tDoLU}nI~fSCa^17-%y444@(Ghk-G%z&8z zGXrJ@%nXDoL|6pbkmtH~B z)QZuj|D#fVQyJ8&JZr@WA&(reEJ&aq85^-&A^aW_nzEq>V?-1{a6Om{Waxg{UW_Ku z{v`vGx@ceokg^NxB6K@Y2t(Ka!T^K;2m=rXAPhhlfG_}I0Kx!-0SE&S1|SST7=SPU zVF1DagaHTx5C$L&Kp2290AT>a0E7Vu0}uuv3_uuwFaTiy!T^N%2MCk;2f}dUX$lA7 z?J<9R%5M^b@)eZC2t&*qzyEu3{SQ?1`QO?^5_x; z2=WEpFFePiK(xPvAYX1_kep0jb-I11d?9QgUqHTqd;$3a@&)7z$QO_=AYVYffP4Y@ z0`djq3&**1>_6J7mzO?UqHV6gM7KQ zBws#=@~IN56oPL-xr(|Z-!9@nyd+;O85tTlAj79j93TLfEDSQ*$)`(ahXNPE2EYY? z3jh}YE&yBrxBzeg-~zw}fC~T@04@Mr0Js2f0pJ3_1%L|x7XU5*TmZNLZ~@=~zy*K{ z02cr*09*jL0B`}|0>A};%Rc~@tR>)*?nuXmtS6)3K?42A*ob`!fx4h@CES+(6j6Zi zDi?HrLKYPlVr0iJN)%jrpGyt~sihUrrE@^J3t;4Z*jfV%*90qz3a1-J`v7vL_yU4Xj)cLDAK+y%G`a2Mb%z+Hg50CxfI0^H>v zxJ%9wccHo{piQh&2*?HHDsd4421rhrz#8IcO_;z-QZhnx7ja-ZLco@6DPVvkM=vjS zKU$z*G3pX4u&mg#Sb?O)`VLs%Y-HRR%Y)1sVVO#v8eu&hkpmyF0_2}hP$F6S*mZoAB-GfTBlbIuNy#uI z7!n#98j{OsL*`EgBRi1Icd+c_Q>Q2qtsj(Y5syOb8rJow*;$^9ynTV?BUhVV%#veA zD_kW|#m0mIQa11hpuTs&C2A?H^pZZmDw%s zy{zNGkN#?N_5nIcf7gNtl%ivhs6y0Bu`;qN<54T7M|xQ+kB-EaVMP~bM^JPC>HvXbOq(2~lme-}aw%h2(YkJ2HjPL#Tc%ojR({6wvi*nm%bF-3=% zI#RMD3uRcLRr_Fn#m+$rog-m%j&zpwL1`Y@S&lVatrI!rXx;A@=#bmalmd$mesPPD$y)4Cq_i@EOtF2;lQ}~phTO1!dc?C;q?+}qHVcyKKf zGLnhqBAi1SD<&Zpg9tpv4=;TwYw;XfB@2gUkqO;G5+7p?SXYUsyhdvgEMP*a4pZ_I z)|$VwOwILD>iHzlGeiyj9Bo`SsK8<-q$vw4i3AofG2$oh@8XE+E3^~X669?)Rzh}V z{MzqvuX+`}ZI5iKL9fEvD<Ry{SRR_wnNzWZ^Pa36Xh%UW!-A zTD%mOd|iW7UcwSC#j9nN;xE`7-%Rw!MAV`O zd3zFbbQJ>zNp8b($m*^bB0iUR4PE~6IL{wl$-s^;Nlh61-^G#5PtmUU3nR?Z6w-(X zKg;4`x=LOiK5s#SkT?Al%dl!+)?c->Y(a0mM9}*&rDf-Umn5O6p))JJ0(uJk-Nf?M zY57P>rI6G*^n?C)DWty+?HGpwzV@|9pBpRVf7MR>p~EigTb3eX{|qb2y|VWBWk-Tc zsSlB|VdY!An#mcgI1>2W|2`7#wycP>4XZf*nd6O_^imxrL5CwY-{iry}uKePu%j`MvGf) z(fOQ$i;L-MZ9Hf~+bGFfY(os$8AiIeZ2sK_B82|}Ws%Q@v@lTc5-u7mvl9O|Q|Nax z4l-*@bQLcj;gVszVx|%?gl}ZxuL((uSBzDX@L$Qu#d}1m)>EJ z{Rgq)$euG~i-TAtaq)ZD;rAG1Gdmd{va<#K4ze;Um3R>BWOG-L$QG;u>y8xzNL?C$ z79$6ee}R21;ZU!VwKxI|R*vXVbTJQ@(nxg1c*#$#Fvi#ny)#!hvnUR5)SccVlB!|ELyYKj4COx8M z$jOACu)iBa7H<}|nQ5EBZssTtuWV$P~m(O*W!7xN?rJS0&-3p&gh=CT!_aj z^t4!+l(BqnGs(G-GyYsy!q+j26_cAmm|U`tK?rjPR*rR*IDSgW`pzSs9at^dzvKVk zR61V5mr@|i;@?FP{4A1@hvSo^|2KiF6 z7e8cje5p@8U=^zKxpa$Z!`{aR4qBWC!oy5nv7e^=ichd6FEuXl) zS;Vv(ow&bCAy>N5POFgdBDvjI`PC9e@d-E3gf%@_;lJ9&zdo9HNXutcIuEh$K__e9 ziXowIk52AEt352qhuB-9&-Cz5l2*%_!)MjX@kPJgAc`E9)*94zhDb4JF?#t zk%(Tb828Fj_Wg|LqejtY)<84{}iW3`XdAw@GI-zbs%c*uzaLr$maK0W&FeA|4O@!rje5+5La3d zE5Pty9UCt#e*`vCA`W$&GF?7er$o>53;WEK)dWt5_mLPfSbBrQU+D>6cRkWC~csgPMJ zS-SU4588gu7DSOQT+}y6);Xb6zAxqkVwvVp zd6ts4rqy_GceK#QS5G!2VggM6Yb}sE-PJL^DnTu_ETwaNKM9wW zEZ<0k*))!-PSmAc`r%UT#eGfG6u)8{1M=&$?#oR0oc0y5`Jm6qZ$kUEQ|?gk=swx7 z-Br)9=W}m6ypYyt$j#jp#G;h$@QSOn(=J)3Dk~XdxLh>*zBM3a=b<)|VN2=mQ+mO{ zsv;V)i?m{ipkHchQEN)&PP?7!{9kt(Xq1d^Nc`r8K z7}LvmIH@Q@z41rop@+R^9)x$v|GM0LL9uGtE2gX_TvlB8HoZtxSZIUUjn?I3jrzUQ z*Qb^4G=-^+E(T~ec^xjkuY2{%r;a$`Oi2p<-2Ups+sgc@}Zxm<=aQk;ijy_Ts|awZukEYoB%6&Hrz7gQigHc}M!)0D(0H#g7IlwoG-PUXLi$wP>%oru zR;`~hTLVT9EH`}`pQoXYlhb}36&>jDNN;9yEUZiiA(q^F4&682+5Po%HE|kXOu(`zh zemz4`hXJ1bddIFuZ3O}}5u z1=2>|iEq6DOlDuzJ0ET;?{s&#Z&2nvUt+d_{9vHh(UXluOng4N=N-m3h_ak1t={Ew z&L@r1%yaS9cgF-DN48rUKeyKVr=0DHJTh1EYm2vAjxS&Jz~sqia%!2)xN)x-oN85O z?=D=+M6i)}Q%TxmrpIAHS6wG+PJPLFg1dQQ@$;P`PkA@K&3ma>-o{sqohY3-EB&mu z*4-oc)WiIIgZ<16CXI3Gjo9pKvAGHUY;UsD3v+wu?0Fh1_s(g-K;$o8Z75e!5eg)5UUDmN{J8YB=xE4Ene!WL$ zciC_5;H@nq{zXDL-@9h^(~Sjc$Zoc}>T=0-GsEWLUU`{d&{dYaX@t~l{);K~oho#>vlyp z`WDrG$qD0!Q*K*oL|M0G*gn?ekH_g=59dyCknCu=6n1r}&*7ruwEN)pgeS8JM@=2V z^O%17bV~X^cX}mO9BMK1Duc#VU`T%9No7o5Ax`AG@oUk=u>9y#)!#xV+`V=De+X@q zj67w~FaJr>d3&(l*hR^$z4edXUgzx=ktMN8JwkF%!b`mKQGw0dB&S$SN{Qp@5xDbd z^UOS6+os={9#yEVPc6rF(cfyJUcQ;Nz#*x2QNr-xLQ<8=4dI#`_kCy8>{4#h)H>b@ zq2XX>k({;4f1=K=Z++?WozJR60m+_8-m1&h->HWmFJ~RCNlGX!FL;+dPEPji6}??+ zv5UqD>PMAUzj)?E=R*AN2yS>!wW+_B6xXSd-1!2dewF`Wer>Oc;N-}SEKfrb12q%X z^!#?)2-%v2ukRg>$F*E2+%}Zk-X6wqNZ>~$^{8OhS&`N~_5~lwZ&xb+eBRLVP~Ar8 zxlwW}*>~%*eszaiUiBk0w^VMjrT@HXwR3EvMdN(h@}2J^_RUE~NKc2!-sk~Q+XaRk z-2F%4UgbX+hO;voQspx{FJF4%;uvw;e1zePmh*nINb?Sa?FLuSv3z?s0Ws}^SSktf z*Rl@;ocj8F52SaH+eMPkM+;vgb4a_MjF4zvePX0G)IWb9_`Veh-6uhc`7kSndfY=< z>yB~;EkS;y)xzM|P`_U0|_TVc@ctvfb_Muv&t^u_y|HkEmj8yahl z7TKTe;uGO~&RcZoObJO}9J@JZ@=dlO`*%$08rG?0b^*0J#*PNin{GcHB^x@}ce|J_ z^3$F(Bo8(WQI0DWhux3r)%a%fvD!P4O0x8Y-b<6=>E$`sd!|Zmm8>@!+m6t22b4G( zUHyWiG_Vv@<>ovhHJvr(IAqXnHN2HxTAY6Oa#`u!S2=A`JQlaJZyrowYJcVFa9oG( zcA2oN$#h=-PdA6mVR3WoRJW4GIrp?6X`W^&HYN01aNJKPEJ%|=1Sv4f4fw<5nw9Y=4z8uabW zWOQOTl`fl-%d>y~^%D#0`2^C|FDDukcxYoXD>;vnJ&vqpj>=AZ+@LVCKq*oBhIfSZ z%yuOqpJR7kxEk+v3b~N4H1T^ZXlpJmPw9$6uvgB!??{5@z1Yr~R_XHs4gvc&ZQ5kh zz9U3c3+E9w7v|7_EBG{{-WggjTo4-Y)MR47*?*R?b9di%|0`J?fuA-j+gU}8=1rY` z&H7~GYx`5xu${GJX&WvwQkLwQz&*ZwAhrKGrgoQ>qeMl9)9Ie?oj=rXc;0*-a&t$4 z_lp-d7lSATl4rbj3zo&vclV5Z9yiK3y?fs~&GAo#eYpL1kMwC7i<%}QQQn+U`q%w# z3hX-nZR7;qa25N~=f__2Q~v(gN8t-Yz55jO&7!T0+-{wqq;p*C^-CR#t{EO0Q*7%D z^5U(^9%9aGUfQ!QZVUG$pGv+<`-?=)ZRf?`WE%N8XnmW_ZyA=#6{~$&^d_bI_zhOd zp=uclj<1vaI0~OT=P2TL<+VkWdW@fKbGUYQb~n%5vf9z%2eCu;OOs8x)+b61x$ZpJ z(DZ=TsMOPRckQmEbU@6Xje&xnuz zsAcb}iDj$08F=+ck-aFW(xGS=kJEdg7dyJpcPr&%`w_i@ zYtq}(>|0trmdDIL@rP$;eoLK^WkEq95sfa z+|lRG!^KhG8wSij%NWZuw~4(exUCystaan#yYT=MKF7Qy<(A*)Kl*pKO&9&-3#K!c z(wq1ZaI3VwYsM-OCm(utW^2y4aR^=f-R%O8b#!G7ruZe#bSE=%wVVrA|8AiD&{O{H zVvq8idXLY+a2v}fgDQL9l95l%(T1e)G}ijD__hQnWgb8G`hyk+`!@HAjpH71rQ$dH z!m4G5`*t-H)e66D(5BM-#(rGgjdRMd!{*~8$H@m_SCu<`GtR%nacVox)h6Dje4NVi zn3A^6UN@|AesSsZyAA=hg+O9JsoD`<`xZZu(K?;EfyX zF>$;a`MI_7Gx;8aBkytcG?qtn;(Hh)?O9*Z3|4e3_qt+x}u1o^IX#pVm_6>55+dXGtu)Elrtg@hQKFFv0w5GyH zr6v2xFEgI+q56Gu-*~Z0xNF(Fr(aeL`ipZ!h6-WJmc!!@cuUA{dGu4=DZfroD8w$keT+q|&)AZ|bq4xfq zsKSq$ww_k}O^3&9U7EfnRUG1z*u8spLJ+I2;3OqIcq!%ZZ0>Fh%|QE%Gr3h-{88_W zAN`}nsTsK)e4Fe1MSp($u+cTty3dvZo2s0&e22Y#>+{^cZn34DC5P_KOg^V^fo7jE zK}w2WVh+)q(<$D?dopq-i z%h@yO+PdXv>ic(`Qa5x-ete#EP$~GG8537`viOFvWq#T=%{rIglTX^VPAOe7Hk?7~ zPXrh%D65_sH?i3>n8i9_aVRi$O3Megz2u(Xv&{jT-!|v6J`}uId0O)aje?_8bnmVO zhwh8xeBWMb9XVz=f3myxPGEb{XAx#KrrmqOFEbY3aG1x$^V$VJE-IZf+H!KMVAnSj zwuEgQ!Mp-nYp8Y_nUSUNYbKOOdh;jV(9F-!ytUE7@SXa{tP9jhxeg0Y%~~b0n4ZPs zv}_AnV^i|q=6FkZXFohXm^HcEysM!iWoB+xQtV8&GquFmzTSLek&B&5HPhUoMI|?) zsU5yo8Q7EAM|HQhDZiQ0dj9J|cG3-}vx_znF%}U8Y~i)Z+|@yw3i~dP2{8;jk_>uZ zt9;(TwZK%zljCy3?2!2W%eE~~4^EBe70ThV@_+1nrxwnvdo4rZrYD0^G*uPX@BWet zZ))#E*6)ewE9vxGj$QD!?AZ}wA@Jw{R^R7=`N7F7-^~}?Q#>ANUJ{gQEBL`474B!7 zMX7P5o*}8~e5z|l^7(dJXI&~j-3uCfvV!GJs(iBZqvF%1ha9K24fS~rZRK{UXJLB9 zz5!Pk@tZI4%5|-o2TjK2sR!Dx{(Ku^owW1KxW?5jM@E~9hTat3>lNORT1A#)Kk|$6 zncZ`VnA{VQ;?rk#-T5sbE!p&ZNTA~lqvtYxFLJSqGk!A4CwEZLDxj0=LZ)91zXRi~ zeftJQy0_CFwiFGcatmX=d}UgaWSI{6_~1-7i34up$++ej30~7QWk#!LQDe%iv%6|1 z7nxIoHw*5(6(M}%Wg4SJ^edsSOC#pqccS)gGC4_7H1mo@A=3Tv35H(^u9LfN`g5gi zUThlpk{W!y!_r1n_^5kPnT*2`yBAUoxH{p#Fnp}4NynR7q6(l6(qC7}!C3k>yt^qe$l+py>I z9#+$rvp!1^`%>=Q;r;%VZgWMFS{`elwiPl%|Neoc-xSVNuWowW(l=af$BO>JD6?Oo{fB3V~+XmyS*P*aIG-XOkLTUTg8P0ik{F(4b$Dw!|H#d9EL)bHjjX6g`h&B? z&zURMu^dM-zN@@{>MKhXX}|x__cqUR-d)v}tt#yFC;TpDpzj|(DK(hu=+>KYRz!#P z-E@5RkzXvLAjp4|p{(=df)+`+>ykJ37ghG})jOG+%D!ss+{s!?{^5{xm0gXat~j-p zz|VbezU6k#Y}_mRvsE>{q)M~(a(0o3+Yv>l*zF!dB(_wJmP94y#>JmidYn(vk+`L1_esh`Sg3o8q8rJu@i6)F{r2VWmt z)>Tmtcr8CE9ksV3@sQX|>f`*)GR1X95_DTQQypY(ZTBd7QTN(j``pKG54M)-mI)hL zR9W2l)uWN|oILHl2k$Y#D)X0KKgbU_++yXp^^qqy(X3OCc{Wp0z_f{}IQ@la%+Bh} zVt$to7rP|rRWl>{TkiR^i__8K_C!RS)IAb5kY8wbwClhbW1Cuq2MZOp;FD3t z_Sbj4XY`s(U!UJ>`89psP3h)ueN)Sv)RPP9*KPXL0~cy(!?Ju8srjshU+;8Pq_~~4 zz>=L^;J@9GSEix#s&s6>l7(bd`xK6q^_p{a$f4;Z&BBXF<*EF%dBbh~ZKevmCv!tEWDmksejoG`HI-m?i{rBos_L-VK86^V7>DwpDFm~gwO zuG|bRn2dZ=r?88w&^}nQE9GIvInSHA$kdzu`b8>=Yj3k-ez!MJ{NA88!>s8PDw6x? zmEywr+1AEDss%~Lr5z+o!i-Bd8J_&Ir>EYQ~CBCElW5dQCjiG2C+R(ADr-KYb+idT-sC&GC%@+@hD=NqlRM+#q_jIJylmWAJ6X3#h#z_-&wO5q_sy&-%N)%f z8C;aSz&i`hPm=o|%6T;_e_L2kFp%8gW-dKq6yn-ra??k2#3OTy7 zedu=?&8u&{LTVPhI|6F5XP)z!r@&zHd8IPe`DUz@Fl!jrY`!^AkR&;lw(5ON`XeER&O@)@pA-UuMQM_ zdULl8PI{V2rgVn>{^dtk<4iV&pA)u^6E95>XSsUy`~~tIvmAEY!Y0V``8-?#Kl})q5(+ zA}(K&WWH<}+o60Z?$oh55$XtffzVq*?|(+~(z{M&MAFFArx%|TXTEHBA9?>(yTqgR zg%sT@3(s@1ilW@t2YhujZuBW^x*}hBr1FS+>hv{h`ySS~le=|<_);v>FBGc>D!mMB z@YAkYIw$`gckE=-B>(Vtl>y33t9ctnH8Yxzd;2b_n~~gMZ;ZMX$>Fo}OR7P|wio^F zvYY2=qRVf18!jauW4GfdDSkgMFyj}AmH0(cU(vZ_eVy@kRgA7_sjO7*>(^bnI454L|*SZhV}M{m>5bvI7i;ZqlD8s2EQ& zetY`4NBGKoAZBvnf*$|DQ{=4Amjx8r^n1w-Vvm1U5O?EEdWxw@`!2>3Iju#D*MM_$u@P9qCt*+fhG!TC93@B=r3b<2q*GHXgZu+vt6n z80>|47ja|x)T7_VlyC*g*TmkxG-b{Xr;0vSJ9N=(2d~VY?#ue&-2yl6?j$+d*WFSZ zq19^7SSgqrlz2(bxPa}YYDvm-?o2)*POft`^cch+JjZuf-pYh=llx<7OsUT2Y-T-jpVc$oiNX;1k972I?0(1ZLRS@%2V zbd)=1>)idiYkDlvv*Mep1Gm$sPO0tpF72weuItF(y1hK(L}dT_Xa>bLO+~TW?j}5T;Dt?YB=md(4JwM^oW} zM!9!Ql$&TNU6zIJGQ2h`$I;hM&Fpd~RXnXmZo(FImf2(aEnAwG`2g#S)N4sg;?@?Y zw`g9$pY4Wo&Ugp@+W+B|bJ`xyiv>PR&tr0ZGffj}bmVigC^O%-H=Ie756SB1axFT~ z`WowxICNZ`jFjWmKfzBW#kMDoenY_JL!j*jCY@mXfaw$v$97#XClt->B+c|uI%b`xLc%?zIBmyQh1|!#;>76 z@3HVk z7z&jAPsLMU$}GyJ-M!tWmT`xwx6F~W$O<3Vrq4PoKa**5b>;w%&E|pYrpHbOk=xtZ z3UV)Ssy3_BeLnxsqs(_OIelAaX%h?dy-9AlFKH{kN1tH7~v_WTG8qB3m@YPVJseMAy?5D|TJIG|5SHoc*t#N5=pO;yp8;p#Y>yA+8|#df2H z3*Ncs%J+vIXC*o1nj?7h)IMc59N*ZZuuEhU3K!~G&)zDvi~F8;s#*1kiKT3pTluN< zON9>|NxgikH~7-p@5b$j5S1(4RoLo%W81D{j5qj0cE@7VIp*n?&~#;F zY@#d`A5gpN@}=vr`SI%5;_)l@YHBB&yZD-n3egq8R57}v)b8AXYAoQa3yOf@Af3g+qdV@H{4w$lxI?CqQv3URdx)~(8v{AwRm zab!@!KbN zG+%JuA{bnqvuWqV(I5OH?+RNM;^_@>cGI&9({jpKr#e#?=4%_}6l`wucUrWSwmI#* zy;NEId@-}F7+T<0L)(8;ON7P9YoD^JeU+Sh(}i>FCB=5!`%UK3B$LRku2R z=Z>wtCt$%O8IdI-C9Pclt3%Y_S{u1ut&O4(=ckC>8nHfS4VtBiAXB6uWUI z@f>dAY5C27Zl0?jH;&9du8M6n6R|QX6>FS(-F4N1b?SE7vi55W7QY+5yjFXKe)~vGhO7EDP#+&%tA<7>}7NpDHZHPPk#Xs{%| zzK!f&+vVE6f^(5|hOVh>hTi7ePS`H6jEA@yFB~3ZNXa>wDV12XbAqAf((xOgu&jYi&VERizi2-EtCxF}y{Bv9=&1XTwlYQDN{f1@oUjWcwV& zCK@7@qF+c|NKSfy7BQKl5JY(IU0wxjVLz}2Z)f2KW*wHr9KTA%3}x%@EG7Rz+-^N0FMD413U(J4DcA>F~DPh z#{iE39s@iEcnt6u;4#2sfX4uj0UiT926znc7~nC$V}Qp1j{zP7JO+3S@EG7Rf5T(^ zSMwN4KPq)%l|tY#{5OqMLWe(FKMY7aJG#gMZLs)>z0G9zS16&5U z3~(9XGQeek%K(=FE(2T!xD0R^;4;8vfXe`v0WJev2Dl7x8Q?O&Wq`{7mjNyVTn4xd za2en-z-55T0GIh2E^~M_msu>J)+AOb1TKSem8nu{H{yU}8Fe!yDH@nApcX>5R#A%( zM+sI2jV9Dl+Ytw*>!{JMl0gG%523^aU&bODQJ+TTr6Gk#3g3pG$Jn(u#(G#WaiUK z(9oi2hOhvd0W2G9(k89+0DW&q6qngKKeXa>*>pcz0jfMx*A0Ga_b184@&44@f6 zGk|6Q%>bGKGy`Y`&sUPR0gOFP#K^y zKxKf+0F?nM15^g63{V-MGC*a3$^exCDg#sos0>gUpfW&ZfXV=s0V)Gj=5MIX(bZID zQ5K~#OoNOP#59FKWl*>>JEA6 zGmJXK(bF@GD40Q`hmFt<$m6g~$rG2Di8F}gOb9KaKfuh19J<0JLc@W|8Nvc`2ILIL z8IUs|XF$$?oB=rlat7oK$Qh6`AZI|%fSdt219ArB49FRfGazR`&VZZ&IRkPAK+b@i0XYM52IS1&$eEDUa;D0Ug%-)@V-_Q(DFiu#!j*6tW*ww>FAD>4bU=t% zii#AC(n>RLAr81oGYgR5186f#q5x8NkYyadzQ~V-6X}y(Js5%7piv=ZW<#P@75>W1 zMl0QA2BFOwRhY5FQ6gb;d_~x3(Qu)-hOhvx0bB#P25=4F8o)JxYXH{(t^r&FxCU?y z;2OX+fNKEP0ImUC1Golo4d5EUHGpdX*8r{oTm!fUa1G!Zz%_tt0M`Jn0bKJpxaRmD zxP~5a9AIWe1mq~0iG2z|*r0Ib@Lm>6;s62Hpn-3`EL(^J1YARCp@Y=PFf$NE3Bm>q zqQYh~(fW!NTtkkZ7UC>Nu83?7WMLwX6O0Yo5H&Vx!~r5+bAlF;6ks)=;X!!~VF6wP zyasp;@EYJXz-xfl0IvaF1H1-!4e%P^HNb0t*8r~pUIV-acn$Cx;5EQ&fY$)80bT>V z26zqd8sIg+Yk=1PuK`{IyykCs&56~#=0F}R8{*`Or9%{&uh zSQ@Z2U}?b8fTaOT1C|CX4OkkmG+=4K(txD_O9Pe$EDcy1ury$4z|w%F0ZRjx1}qI& zn!m9$p{p&89X$ujzdVJK@O3prMumWBP{m?F&%uv4w_-)`+J-2B@FPxWLLn!bP~d@O zMy$h0d5D|~Lc+yyjug#^;X*UEv6C_;Ph4UqN+9+!r&hd-A&mgaWC#l|8DKKNWPr&4 zlL00JOa_kV!DKcOs}ur^LAeSFV+4}~=#XuFgm0oDk}CuogXW+%W(!ec zf`~!aqasF!Xgx8638zJ{k2!Q{gi#1XSOCHRgaHTx5C$L&Kp2290AT>a0E7Vu0}uuv z3_uuwFaTiy!T^K;2m=rXAPhhlfG_}I0Kx!-0SE&S1|SST7=SPUVF1Dag!vl?6TTY4 zES~0KM0z{0!uT(OA<`)X5QDN6#&|9sG3AsYBPGgGT$9ic!)354 zK^WN@&&5paV7%kGPOqd)pGHSI-}T2-2<`?Q#4?RA6)psq#>GV3M|v6;FA07g!Va98 z!~vq;ZaT9>|;BdgOocY7ys1mCb zg1lq&)nj=z6s#ZdIc7#J}|v zNsBx@wo!vd8YM7<1qcif7$7h}V1U2?fdK*o1O^BU5EvjZKwyBt0D%Dl0|W*L3=kL~ zFhF2{zyN^(0s{mF2n-MyATU5+fWQEO0RjUA1_%rgn7<(~k*f&|`LB&~#43eAU{J0y zwy;r?I6%-ZXuyb+$B-yM&@brvQc@meqV>f3C5jf&EacIqkwx_jVFCRD`UUh0=oip0 zpkF}0fPMk}0{R8?3+NZnFQ8vQzkq%L{Q~+0^b6=0&@Z50K)--~0sR8{1@sH(7tk-D zUqHWregXXg`sHu*OVn!p5-!85M66N>$OYvpZHl}*i35sCyw6BU(ZHMvuR3vn=x2`3 z(IR?&R9wiF0bXeu1(doF7N9ObU4Xg(bph%E)CH&uP#2&sKwW^k0CfTC0@MYl3s4uJ zEH^dSs0&aRpe{gNfVu#60qO$O1*i*97oaXcUH*o;oLfy@I$ZcR5vvpe zbwSOFj0ax`QGoD$F6jDZ4?Z2D^~B%ja-J61%gAp?ql6+C!UD(zkP9FeKrVn>0J#8i z0ptS61&|9M7eFq6TmZQMaslK5$OVuKAQwO`fLs8%0CEB30>}lB3m_LjE`VGBxd3tj z7wEB`XOGm-$zI>b%?`xP@4(}5J!6o{cER-(eu0(;nt`T*Ktm0oCe3v#Fh z%Rw4Qf!NJa2qSvev5YK>Cw$$lEl5b&Fl-nqDk{tYTI69HmX}oMJCaj|Rb4Nx*ox&P z6PTkw6t7@e5$qkTAoriW*w|vwKT$XHRD$w%K_)#GxqT~ulSO67=^16vOwjBr4;(nq-+(zfMdWex=q@@C@thnC9 zJUxx7#Yiw1EExu)xoTn-q5lk88%{<4zqTtjEaAFbJ_h3^N`?_#)qFIJ3Skf<--y)R z$1*Fd9s2N^YRax^8!C}niB(b9u%?jsM#P1bU)AV-F4{jgXX4 zTjGnoPL50!nlp2k8hI#A&W2c5QS;-A{b!<$ZF`@VlQ>#7bh9yftEORBg_KlbO@^3{D|7!H;OY)*Y1jcAY2?spYno1m@MP8$wku?vmWGUl6 zoiZYY#yaSuJ5BTMChup42tWuCElMDR<+IeMuXURQLrPU zHCREGKieXF574=h%&m-|fkZFStn5F3Cfe8%?>~~O1}XkclR_)A-i8JITd9AJ#MSML zZ=xr|+gNU-IG>gk-<)<$?eNWs_af<4!-k2_{iiu4VQ2cY1LS@!`bi#>L`v$g@<_`; z3R;Az4$Hu@PNqT~S_%;vI>g$K0zJJQ!Llm+nPp>pdH!mTG`c?tqWhD^stH9Z;z!Y4 zuWyoibQa>u2(}(8t+=+=pfyzzTh;6RK00LZ6qWne8_0Q9YOr3`2tModk(Itw@yFet zJ+0nf1XpblcOY`;5mthGZL8pa>wuI#La#)*{K$((Sa}wvHJcnvi}bxg%h{iaj|&h! z`E`G2pMaYkNETpRL4SZ^^uz7?DPIMk)Mxj&;qJ9{uN< zd%1Tdhj7hR{4>kOmM{N&w#5bvW|0SjFpUpa-a{MiA5zaEqA z`^<>QVaYj>ZGBj-b%&XLY`9$t-S;)oeP4IgFwegJcNkt|?ipI3b%w!Tw#ob^(9~Eg zC%!=Vqke5($iD^p=cFOBYM{k5rsRioY)AqlKP$dw9BXP8f}-i?=-#2gm0VB9j!*mN z+^|lf%nLM8j1NhaVU|OR_p;Fbj}FuDd3mBMdD>f43NQE0^e zx2o&ptyJ~A*Gk^1s{Wb#|5bH)AHE0e^=5)EDVfoJ7NpLPMe=`a%}QCX`QiKcZ(0AG z0kTq7(p^M_GU447rO7G%`bsWjcj{0YFgsufY1e$obh*c7Qrd*p7 z`foMy&sFSXr)}AiAM)@b0uF2|M?T-0+JzDxt;im<{U`6ALw}u2{6iLL^&7;h6@3U> zCmz#|P7d40hFtYPpLMLmNxATaS|@Sk`DzhO)MqE<{r8-|Ht*ExElE7bj=XO}_qUZt zM1eKiaq6E(#70VFpbeefI`Nf9#8-42$x~R~m9zDFNh_Nm$HIYFdt)V${#NvqyiQju z^QU9wKn57dc@YKlp^kfPR``Erzj9r^_5eBDfnJw|*UUTopX>4)ZKS0GtGHfVryH$$ zt3IOGiQXoy)4mWNw>QSem64@xEZurZ)17G2tQkH@4%ys=K83E+6aKPJ+GdHI>{@>& z54+H~(sq0&!U!&nYh@>0r=OKedZsNW@_s+|KbQ2id1qD?h)i~gGg)7P3%TaPLO9G> z#MYGR453tH9${SnX0qe=uXXb9B_ne=&6S)eEreKSU}=$(7%mDV9$%bw((x4}8;)F^ z&hS6_##fT;^m(G>m2$4r?aEz}Yb+PCn8YRfKYGKLl&mg^(A&QyU8k>=l1inZ^@+lA zt(;2n2mji{i2u~Ic`u!5AaQ8SpIB2N32;tgx!|nk~mSCEjx3RUM#r zp$CEWPei*9E45zy7#b(LwXhN4$;JvHm3`E+_;lJ{k zcoSEDLRWJU%YO6|!v8Ee@jEB;8jhR6qnaljlXI?6K?!R+V?fD{sv_|p&^MUtWR>8v;t~j1dit^ks+<0MPyA=TjqS7LhNKkqe%Or;gV9;F zi*8N+XDsvu@491M8bZf%N&P2l;(uf@enhjJ)BefY`w`2cxZXUP3p}v}=*`M!^chBF z)jWFASK3P9-w89Vx6Sy^gY?%WglQNnN2(NxJSfG=kX - + @@ -10,20 +10,20 @@ RUSEFI rusEfi rusEfi - 19988 + 20000 -
- @@ -32,15 +32,15 @@
-
- @@ -49,15 +49,15 @@
-
- @@ -66,16 +66,16 @@
-
-
@@ -83,16 +83,16 @@ -
-
@@ -100,16 +100,16 @@ -
-
@@ -117,16 +117,16 @@ -
-
@@ -134,15 +134,15 @@ -
+
- +
@@ -162,40 +162,40 @@ -
+
- -
+
- -
+
- -
+