diff --git a/.mxproject b/.mxproject index 8a5436a8efff22287450b64a738634e525c61817..4c07ff9878341d47b4ff6a81ce196237f24d62fa 100644 --- a/.mxproject +++ b/.mxproject @@ -2,13 +2,13 @@ LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f427xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; [PreviousUsedKeilFiles] -SourceFiles=..\Src\main.c;..\Src\gpio.c;..\Src\adc.c;..\Src\can.c;..\Src\dma.c;..\Src\spi.c;..\Src\usart.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;..\\Src/system_stm32f4xx.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;..\\Src/system_stm32f4xx.c;..\Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;; +SourceFiles=..\Src\main.c;..\Src\gpio.c;..\Src\adc.c;..\Src\can.c;..\Src\dma.c;..\Src\spi.c;..\Src\tim.c;..\Src\usart.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;..\\Src/system_stm32f4xx.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;..\Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;..\\Src/system_stm32f4xx.c;..\Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;; HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Inc; CDefines=USE_HAL_DRIVER;STM32F427xx;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousGenFiles] HeaderPath=C:/Users/sfaguet/Documents/RobotMaster_allRobots/Inc -HeaderFiles=gpio.h;adc.h;can.h;dma.h;spi.h;usart.h;stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h; +HeaderFiles=gpio.h;adc.h;can.h;dma.h;spi.h;tim.h;usart.h;stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h; SourcePath=C:/Users/sfaguet/Documents/RobotMaster_allRobots/Src -SourceFiles=gpio.c;adc.c;can.c;dma.c;spi.c;usart.c;stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c; +SourceFiles=gpio.c;adc.c;can.c;dma.c;spi.c;tim.c;usart.c;stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c; diff --git a/Inc/main.h b/Inc/main.h index fb8260bee6db7a775b4ce2659588fa12ab46e2e4..9ba91db4a31befe913a593b6e126fd70525baf5c 100644 --- a/Inc/main.h +++ b/Inc/main.h @@ -33,6 +33,8 @@ extern "C" { /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "BoardA_handle.h" +#include "traitement.h" +#include "robot_configuration.h" /* USER CODE END Includes */ diff --git a/Inc/motors.h b/Inc/motors.h index fa3d6906090cd1764f6db286f4bb7a617a6723d6..d9e3a64431e2636728ebe18681c9975428ac456a 100644 --- a/Inc/motors.h +++ b/Inc/motors.h @@ -10,6 +10,7 @@ #include "PID.h" #include "can.h" #include "leds.h" +#include "tim.h" #include "robot_configuration.h" #include <stdlib.h> #include <stdio.h> @@ -43,7 +44,6 @@ typedef struct uint16_t can_tx_id; motor_info_t info; // Specific info about the motor int type; // Type du moteur, ex:GM6020 - //pid_struct_t pid_pos; // Controler struct pid_controller pid; // Controler float consigne; float command; @@ -62,9 +62,18 @@ void can_send_command(void); void can_motors_callback_handler(int16_t rx_id, uint8_t* rx_buff); /* Modifie la consigne tout en vérifiant les limites de postion */ -void add_consigne_position(motor_t* motor, float value); +void add_consigne_position(motor_t* motor, float value, float coeff); /* Initialise le CAN 1 */ void can1_init(void); +/* Initialise le TIMER 1 pour les PWM */ +void PWM_init(void); + +/* Set le duty cycle de tous les channels PWM */ +void PWM_SetAllDuty(TIM_HandleTypeDef *tim, float duty_ch1, float duty_ch2); + +/* scales all PWM duty cycles between 0 and 1 */ +void PWM_ScaleAll(TIM_HandleTypeDef *tim); + #endif diff --git a/Inc/stm32f4xx_hal_conf.h b/Inc/stm32f4xx_hal_conf.h index 73c9af65b32d79d6b600deda41127d5b947d3057..f384e69091f8648b3f2bd4470943288e7c166dd6 100644 --- a/Inc/stm32f4xx_hal_conf.h +++ b/Inc/stm32f4xx_hal_conf.h @@ -62,7 +62,7 @@ /* #define HAL_SD_MODULE_ENABLED */ /* #define HAL_MMC_MODULE_ENABLED */ #define HAL_SPI_MODULE_ENABLED -/* #define HAL_TIM_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED #define HAL_UART_MODULE_ENABLED /* #define HAL_USART_MODULE_ENABLED */ /* #define HAL_IRDA_MODULE_ENABLED */ diff --git a/Inc/tim.h b/Inc/tim.h new file mode 100644 index 0000000000000000000000000000000000000000..d9b335e04cbedc5aeb6962731fc028c1c5aaff67 --- /dev/null +++ b/Inc/tim.h @@ -0,0 +1,60 @@ +/** + ****************************************************************************** + * File Name : TIM.h + * Description : This file provides code for the configuration + * of the TIM instances. + ****************************************************************************** + * @attention + * + * <h2><center>© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.</center></h2> + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __tim_H +#define __tim_H +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern TIM_HandleTypeDef htim1; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_TIM1_Init(void); + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ tim_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/MDK-ARM/RobotMaster_allRobots.uvoptx b/MDK-ARM/RobotMaster_allRobots.uvoptx index 75a57c3edc3576f5e08f453504db6b1aea1e8a37..bf268d5c572e030d201e428835bc053d2399cf98 100644 --- a/MDK-ARM/RobotMaster_allRobots.uvoptx +++ b/MDK-ARM/RobotMaster_allRobots.uvoptx @@ -160,6 +160,16 @@ <WinNumber>1</WinNumber> <ItemText>motors[TOURELLE_YAW].info.angle</ItemText> </Ww> + <Ww> + <count>2</count> + <WinNumber>1</WinNumber> + <ItemText>motors</ItemText> + </Ww> + <Ww> + <count>3</count> + <WinNumber>1</WinNumber> + <ItemText>\\RobotMaster_allRobots\../Src/robot_configuration.c\motors[5].MAX_POSITION</ItemText> + </Ww> </WatchWindow1> <WatchWindow2> <Ww> @@ -310,8 +320,8 @@ <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <bDave2>0</bDave2> - <PathWithFileName>..\Src\stm32f4xx_hal_msp.c</PathWithFileName> - <FilenameWithoutPath>stm32f4xx_hal_msp.c</FilenameWithoutPath> + <PathWithFileName>..\Src\tim.c</PathWithFileName> + <FilenameWithoutPath>tim.c</FilenameWithoutPath> <RteFlg>0</RteFlg> <bShared>0</bShared> </File> @@ -322,8 +332,8 @@ <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <bDave2>0</bDave2> - <PathWithFileName>..\Src\stm32f4xx_it.c</PathWithFileName> - <FilenameWithoutPath>stm32f4xx_it.c</FilenameWithoutPath> + <PathWithFileName>..\Src\usart.c</PathWithFileName> + <FilenameWithoutPath>usart.c</FilenameWithoutPath> <RteFlg>0</RteFlg> <bShared>0</bShared> </File> @@ -334,8 +344,8 @@ <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <bDave2>0</bDave2> - <PathWithFileName>..\Src\system_stm32f4xx.c</PathWithFileName> - <FilenameWithoutPath>system_stm32f4xx.c</FilenameWithoutPath> + <PathWithFileName>..\Src\stm32f4xx_hal_msp.c</PathWithFileName> + <FilenameWithoutPath>stm32f4xx_hal_msp.c</FilenameWithoutPath> <RteFlg>0</RteFlg> <bShared>0</bShared> </File> @@ -346,8 +356,20 @@ <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <bDave2>0</bDave2> - <PathWithFileName>..\Src\usart.c</PathWithFileName> - <FilenameWithoutPath>usart.c</FilenameWithoutPath> + <PathWithFileName>..\Src\stm32f4xx_it.c</PathWithFileName> + <FilenameWithoutPath>stm32f4xx_it.c</FilenameWithoutPath> + <RteFlg>0</RteFlg> + <bShared>0</bShared> + </File> + <File> + <GroupNumber>1</GroupNumber> + <FileNumber>11</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <bDave2>0</bDave2> + <PathWithFileName>..\Src\system_stm32f4xx.c</PathWithFileName> + <FilenameWithoutPath>system_stm32f4xx.c</FilenameWithoutPath> <RteFlg>0</RteFlg> <bShared>0</bShared> </File> @@ -355,13 +377,13 @@ <Group> <GroupName>Startup</GroupName> - <tvExp>0</tvExp> + <tvExp>1</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> <File> <GroupNumber>2</GroupNumber> - <FileNumber>11</FileNumber> + <FileNumber>12</FileNumber> <FileType>2</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -381,7 +403,7 @@ <RteFlg>0</RteFlg> <File> <GroupNumber>3</GroupNumber> - <FileNumber>12</FileNumber> + <FileNumber>13</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -393,7 +415,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>13</FileNumber> + <FileNumber>14</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -405,7 +427,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>14</FileNumber> + <FileNumber>15</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -417,7 +439,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>15</FileNumber> + <FileNumber>16</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -429,7 +451,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>16</FileNumber> + <FileNumber>17</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -441,7 +463,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>17</FileNumber> + <FileNumber>18</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -453,7 +475,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>18</FileNumber> + <FileNumber>19</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -465,7 +487,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>19</FileNumber> + <FileNumber>20</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -477,7 +499,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>20</FileNumber> + <FileNumber>21</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -489,7 +511,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>21</FileNumber> + <FileNumber>22</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -501,7 +523,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>22</FileNumber> + <FileNumber>23</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -513,7 +535,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>23</FileNumber> + <FileNumber>24</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -525,7 +547,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>24</FileNumber> + <FileNumber>25</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -537,7 +559,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>25</FileNumber> + <FileNumber>26</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -549,7 +571,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>26</FileNumber> + <FileNumber>27</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -561,7 +583,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>27</FileNumber> + <FileNumber>28</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -573,7 +595,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>28</FileNumber> + <FileNumber>29</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -585,7 +607,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>29</FileNumber> + <FileNumber>30</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -597,7 +619,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>30</FileNumber> + <FileNumber>31</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -609,7 +631,7 @@ </File> <File> <GroupNumber>3</GroupNumber> - <FileNumber>31</FileNumber> + <FileNumber>32</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -629,7 +651,7 @@ <RteFlg>0</RteFlg> <File> <GroupNumber>4</GroupNumber> - <FileNumber>32</FileNumber> + <FileNumber>33</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -643,13 +665,13 @@ <Group> <GroupName>BoardA</GroupName> - <tvExp>0</tvExp> + <tvExp>1</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> <File> <GroupNumber>5</GroupNumber> - <FileNumber>33</FileNumber> + <FileNumber>34</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -669,7 +691,7 @@ <RteFlg>0</RteFlg> <File> <GroupNumber>6</GroupNumber> - <FileNumber>34</FileNumber> + <FileNumber>35</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -681,7 +703,7 @@ </File> <File> <GroupNumber>6</GroupNumber> - <FileNumber>35</FileNumber> + <FileNumber>36</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -693,7 +715,7 @@ </File> <File> <GroupNumber>6</GroupNumber> - <FileNumber>36</FileNumber> + <FileNumber>37</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -705,7 +727,7 @@ </File> <File> <GroupNumber>6</GroupNumber> - <FileNumber>37</FileNumber> + <FileNumber>38</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -717,7 +739,7 @@ </File> <File> <GroupNumber>6</GroupNumber> - <FileNumber>38</FileNumber> + <FileNumber>39</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -729,7 +751,7 @@ </File> <File> <GroupNumber>6</GroupNumber> - <FileNumber>39</FileNumber> + <FileNumber>40</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> @@ -749,7 +771,7 @@ <RteFlg>0</RteFlg> <File> <GroupNumber>7</GroupNumber> - <FileNumber>40</FileNumber> + <FileNumber>41</FileNumber> <FileType>1</FileType> <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> diff --git a/MDK-ARM/RobotMaster_allRobots.uvprojx b/MDK-ARM/RobotMaster_allRobots.uvprojx index 894e7e443ffb02ed618c8409c6ddccfe9af1d59d..415dbc7820bd0ca65aedce3d51e9f700368b35e2 100644 --- a/MDK-ARM/RobotMaster_allRobots.uvprojx +++ b/MDK-ARM/RobotMaster_allRobots.uvprojx @@ -339,7 +339,7 @@ <MiscControls></MiscControls> <Define>USE_HAL_DRIVER,STM32F427xx,USE_HAL_DRIVER,STM32F427xx</Define> <Undefine></Undefine> - <IncludePath>../Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/CMSIS/Include</IncludePath> + <IncludePath>../Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/CMSIS/Include</IncludePath> </VariousControls> </Cads> <Aads> @@ -482,6 +482,16 @@ <FileType>1</FileType> <FilePath>..\Src\spi.c</FilePath> </File> + <File> + <FileName>tim.c</FileName> + <FileType>1</FileType> + <FilePath>..\Src\tim.c</FilePath> + </File> + <File> + <FileName>usart.c</FileName> + <FileType>1</FileType> + <FilePath>..\Src\usart.c</FilePath> + </File> <File> <FileName>stm32f4xx_hal_msp.c</FileName> <FileType>1</FileType> @@ -497,11 +507,6 @@ <FileType>1</FileType> <FilePath>..\Src\system_stm32f4xx.c</FilePath> </File> - <File> - <FileName>usart.c</FileName> - <FileType>1</FileType> - <FilePath>..\Src\usart.c</FilePath> - </File> </Files> </Group> <Group> diff --git a/MDK-ARM/bin/RobotMaster_allRobots.hex b/MDK-ARM/bin/RobotMaster_allRobots.hex index bea800c4ab941255faa78282a61baae9bf92f106..bee464b19352562a1a5ef76c4522d8e967429636 100644 --- a/MDK-ARM/bin/RobotMaster_allRobots.hex +++ b/MDK-ARM/bin/RobotMaster_allRobots.hex @@ -1,1109 +1,1264 @@ :020000040800F2 -:1000000080180020C5010008F72600089D2300087D -:10001000F526000869070008B52B0008000000005D -:10002000000000000000000000000000E9270008B8 -:100030005908000800000000F9260008EB27000816 +:10000000C0180020C5010008D72B0008B927000838 +:10001000D52B0008DD080008693300080000000047 +:10002000000000000000000000000000352D000866 +:10003000CD09000800000000452C0008372D0008FD :10004000DF010008DF010008DF010008DF01000810 :10005000DF010008DF010008DF010008DF01000800 :10006000DF010008DF010008DF010008DF010008F0 :10007000DF010008DF010008DF010008DF010008E0 -:10008000DF010008DF010008DF0100087907000830 -:100090006D070008DF010008DF010008DF0100082C +:10008000DF010008DF010008DF010008ED080008BB +:10009000E1080008DF010008DF010008DF010008B7 :1000A000DF010008DF010008DF010008DF010008B0 :1000B000DF010008DF010008DF010008DF010008A0 :1000C000DF010008DF010008DF010008DF01000890 -:1000D000DF010008F52A0008DF010008DF01000841 +:1000D000DF010008A9320008DF010008DF01000885 :1000E000DF010008DF010008DF010008DF01000870 :1000F000DF010008DF010008DF010008DF01000860 :10010000DF010008DF010008DF010008DF0100084F :10011000DF010008DF010008DF010008DF0100083F -:10012000DF0100088507000891070008DF010008CB +:10012000DF010008F908000805090008DF010008E0 :10013000DF010008DF010008DF010008DF0100081F :10014000DF010008DF010008DF010008DF0100080F -:10015000DF0100089D070008A9070008592B0008C7 +:10015000DF010008110900081D0900080D3300081F :10016000DF010008DF010008DF010008DF010008EF :10017000DF010008DF010008DF01000800000000C7 :10018000DF010008DF010008DF010008DF010008CF :10019000DF010008DF010008DF010008DF010008BF :1001A0000000000000000000DF010008DFF810D0B0 -:1001B00000F034FA00480047552E0008AFF30080E5 -:1001C000801800200648804706480047FEE7FEE703 +:1001B00000F0EEFA0048004711360008AFF3008067 +:1001C000C01800200648804706480047FEE7FEE7C3 :1001D000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7F7 -:1001E00089280008AD0100082DE9F05F05460020D0 +:1001E000D52D0008AD0100082DE9F05F054600207F :1001F00092469B4688460646814640241BE0284698 -:1002000041464746224600F065F953465A46C01A11 -:10021000914110D311461846224600F04CF92D1A90 -:1002200067EB01084F4622460120002100F043F908 +:1002000041464746224600F00CFA53465A46C01A69 +:10021000914110D311461846224600F0F3F92D1AE9 +:1002200067EB01084F4622460120002100F0EAF961 :1002300017EB00094E41201EA4F10104DFDC484603 :1002400031462A464346BDE8F09F40EA01039B073A :1002500003D009E008C9121F08C0042AFAD203E03B :1002600011F8013B00F8013B521EF9D270470346DA :1002700011F8012B00F8012B002AF9D1184670471C -:100280002DE9FE4F81EA030404F0004421F000410F -:1002900000944FF0000B23F0004350EA01045ED0BD -:1002A00052EA03045BD0C3F30A54C1F30A552C4449 -:1002B000A4F2F3340194A0FB0254C1F3130141F4FE -:1002C0008011C3F3130343F4801301FB024400FBCA -:1002D000034E840A970A44EA815447EA8357A4FBF1 -:1002E000076802958D0A05FB07854FEA932C04FBEE -:1002F0000C542705029D4FEA065847EA1637B5EB1E -:1003000008056EEB070C870E920E47EA811742EA4A -:100310008312A7FB0201B6EB0B0164EB00042B0D6B -:1003200043EA0C335E1844EB1C50DA465146E7FBB7 -:100330000201C5F313044FEA0B3343EA14534FEAA7 -:100340000432019C43EA0603A4F10C040294009CCD -:10035000CDE900B400F014F903B0BDE8F08F00203F -:100360000146F9E72DE9F04D81EA030404F0004B62 -:1003700021F0004514464FF0000A23F0004150EAF6 -:10038000050220D054EA01021DD0C5F30A570246E7 -:10039000C5F31303C1F31300C1F30A5640F48015EB -:1003A00043F48013A7EB0608101BD64608F2FD386D -:1003B00073EB050002D308F1010801E092185B41DC -:1003C000B8F1000F03DA00200146BDE8F08D0020EF -:1003D0004FF48011064684460EE0171B73EB0507A9 -:1003E00005D3121B63EB050306434CEA010C4908D5 -:1003F0004FEA300092185B4150EA0107EDD152EA12 -:10040000030012D082EA040083EA0501084305D004 -:10041000101BAB4106D20122002306E000224FF060 -:10042000004302E06FF0010253101AEB06004CEBA0 -:10043000085110EB0A0041EB0B01BDE8F04D00F054 -:1004400090B80EB5C10F80EAE0700844CA070021D9 -:1004500040F233438DE80E000A460B4600F090F858 -:1004600003B000BD0EB540F2334102910021CDE949 -:1004700000110A460B4600F083F803B000BD01F0FE -:10048000004330B421F0004150EA010206D00A0DC9 -:10049000A2F56072C1F31301002A02DC30BC002017 -:1004A0007047440F44EAC104C100E01830BC00EBBF -:1004B000C25000F01FB8202A04DB203A00FA02F1F3 -:1004C000002070479140C2F1200320FA03F3194342 -:1004D00090407047202A04DB203A21FA02F00021E4 -:1004E000704721FA02F3D040C2F120029140084344 -:1004F000194670470029A8BF7047401C490008BF33 -:1005000020F00100704710B4B0FA80FC00FA0CF043 -:1005100050EA010404BF10BC704749B1CCF120047B -:1005200021FA04F411FA0CF118BF01212143084308 -:10053000A3EB0C01CB1D4FEA00614FEA102042BF34 -:10054000002010BC704700EBC35010440029A4BF2A -:1005500010BC7047401C490008BF20F0010010BCCF -:10056000704710B5141E73F1000408DA401C41F105 -:10057000000192185B411A4301D120F0010010BD27 -:100580002DE9F04D92469B4611B1B1FA81F202E09D -:10059000B0FA80F220329046FFF78DFF04460F46F6 -:1005A00040EA0A0041EA0B0153465A46084313D079 -:1005B000114653EA010019D0C8F140025046FFF736 -:1005C00089FF05460E46504659464246FFF773FFDF -:1005D000084305D0012004E020463946BDE8F08DEF -:1005E0000020054346EAE0762C4337430A9863052A -:1005F000E40AA0EB08000022FD0A44EA47540A304E -:1006000002D500200146E9E7010510196941DDE93D -:10061000084500196941BDE8F04DA2E7064C074DB9 -:1006200006E0E06840F0010394E8070098471034C2 -:10063000AC42F6D3FFF7BEFDD8440008F8440008EA -:10064000464910B54A6822F440324A604A68436815 -:100650001A434A6001684A6822F480724A6001685D -:100660004A68036942EA03224A6001684A6822F044 -:1006700040724A6001684A6883681A434A600168A8 -:100680008A6822F400628A6001688A68C3681A4333 -:100690008A60816A6FF07062D14201688A6822F0D4 -:1006A00070628A6001688A680CD0836A1A438A6023 -:1006B00001688A6822F040528A6001688A68C36AC9 -:1006C0001A4301E022F040528A6001688A6822F0F1 -:1006D00002028A6001688A68037E42EA43028A60F5 -:1006E00090F82010002901684A680FD042F4006297 -:1006F0004A6001684A6822F460424A6001684A68B8 -:10070000174C436A04EB43331A4301E022F40062BE -:100710004A600168CA6A22F47002CA620168CA6A41 -:10072000838B104C04EB03531A43CA6201688A6836 -:1007300022F400728A6001688A6890F8303042EAD8 -:1007400043228A6001688A6822F480628A600168B4 -:100750008A68406942EA8020886010BD0023014019 -:1007600000E0FFFF0000F0FFFEE70000014800F09E -:10077000FCBA000070000020014800F0F6BA00004A -:1007800070000020014800F031BD00007002002020 -:10079000014800F02BBD0000B0010020014800F02E -:1007A00025BD0000D0020020014800F01FBD000060 -:1007B0001002002001681823CAB2103AB2FBF3F20B -:1007C000054B6FF30901032A9B5CC36500D9091D22 -:1007D00081650846704700004E3C000810B5014690 -:1007E00000208B698A6A4FF0C07453B1B3F5005F83 -:1007F00015D072B1012A0CD0022A0AD0032A09D1DD -:1008000004E01AB1012A06D0022A03D1C96AC9013B -:1008100000D5012010BDC96AA142FAD010BD002A3E -:10082000F7D0012AF2D0022AF3D0032AF3D010BD68 -:1008300030B50468256825F4802525600468636068 -:100840008368402B036803D099600068C26030BDA4 -:100850009A600068C16030BD7047704778B5002469 -:10086000009490F83C20012A19D0012280F83C2005 -:100870000A6807230568092A13D9EE680A3A02EBC9 -:10088000420293409E43EE600B788A680A3B03EB7A -:1008900043039A400368DD682A43DA6010E00220CF -:1008A00078BD2E6902EB420293409E432E610B7885 -:1008B0008A6803EB43039A4003681D692A431A615F -:1008C0004A681F23072A13D205686E6B521E02EB7B -:1008D000820293409E436E630A8893B20A79521E45 -:1008E00002EB820293400268556B2B43536327E06F -:1008F00005680D2A12D22E6BD21F02EB82029340A2 -:100900009E432E630B790A88DB1F92B203EB8303AD -:100910009A4003681D6B2A431A6311E0EE6A0D3A90 -:1009200002EB820293409E43EE620B790A880D3BF4 -:1009300092B203EB83039A400368DD6A2A43DA62CA -:100940001B4B0568194A9D420AD10D68122D07D12B -:10095000556825F400055560556845F480055560D7 -:1009600005689D421DD1134D0B68AB4201D0112B80 -:1009700017D1536823F480035360536843F4000392 -:1009800053600968A9420CD10B490C4A0968B1FBB4 -:10099000F2F101EB8101490000E0491E00910029BC -:1009A000FBD180F83C40002078BD000000230140CE -:1009B00000200140120000100000002040420F0003 -:1009C00070B504004FF0000503D0206C002610B174 -:1009D00007E0012070BD204600F01CF8666484F832 -:1009E0003C60206CC00610D4206C20F4885040F08D -:1009F000020020642046FFF723FE6664206C20F08E -:100A0000020040F00100206400E0012584F83C6011 -:100A1000284670BD00B587B0002102910391049172 -:100A2000059106910068A0F18041B1F5903119D18E -:100A30000D48016841F480710160006800F4807025 -:100A400001900A48016841F001010160006800F06E -:100A500001000190402002900320039002A9044865 -:100A600000F034FD07B000BD443802403038024089 -:100A70000000024090F82020012A07D0022A05D069 -:100A8000416A41F480214162012070470068426957 -:100A90000A43426100207047F0B590F82050046886 -:100AA000A468012D05D0022D03D0416A41F48021B4 -:100AB0005DE014F0406F01D1E50055D5C4F3016449 -:100AC000022C03D9416A41F4000150E00125A54000 -:100AD0001D608D684FF4C0739DB1CE6835434E687C -:100AE00045EAC605066803EB0417F5514FF4C275D5 -:100AF000076805EB04150E697E51097D012905D0B3 -:100B000009E00E88CD6845EA4655EBE701684E5985 -:100B100046F480764E511179D579567941EA0561CE -:100B200095792D0445EA062529434FF4C6760568D4 -:100B300006EB0416A9511178D57841EA056195783C -:100B400052782D0445EA022211434FF4C47502681D -:100B500005EB04155151006803EB0411425842F0B3 -:100B6000010242500020F0BD416A41F4001141628F -:100B70000120F0BD10B590F82020012A07D0022AEC -:100B800005D0416A41F480214162012010BD3B48FB -:100B9000D0F8002242F00102C0F80022D0F8002272 -:100BA00022F47C52C0F80022D0F800224B6A42EABC -:100BB0000322C0F800220A7D02F01F0301229A409E -:100BC000D0F81C329343C0F81C32CB69B3B9D0F8CB -:100BD0000C329343C0F80C328C894B6864F31F438A -:100BE0004C6900EBC404C4F840320C890B6864F310 -:100BF0001F434C6900EBC404C4F84432CB69012B99 -:100C000016D1D0F80C321343C0F80C320C884B6864 -:100C100064F31F434C6900EBC404C4F840320C89F0 -:100C2000CB6864F31F434C6900EBC404C4F844323E -:100C30008B69002BD0F804320ED01343C0F8043275 -:100C40000B69002BD0F8143208D01343C0F81432CB -:100C5000096A012904D008E09343EFE79343F5E7DD -:100C6000D0F81C121143C0F81C12D0F8001221F069 -:100C70000101C0F80012002010BD00000064004017 -:100C8000704730B590F82040012C05D0022C03D0DD -:100C9000416A41F480215DE00468002955D024694F -:100CA000A40754D04FF4D874056804EB01142D59EF -:100CB00015F00405956005682D594ED0ED08556076 -:100CC00005682C5904F00204D4604FF4DA74056806 -:100CD00004EB01142D5905F00F05156105682D5918 -:100CE000C5F30725956105682C59240C54614FF410 -:100CF000DC72046802EB0112A4581C700468A4584A -:100D0000240A5C700468A458240C9C700468A258DF -:100D1000120EDA704FF4DE72046802EB0112A4586E -:100D20001C710468A458240A5C710468A458240C3B -:100D30009C710468A258120EDA71006881B10169D1 -:100D400041F020010161002030BDE468A8E7416A5C -:100D500041F400114162012030BD6D0D1560AFE717 -:100D6000C16841F02001C160EDE72DE9F05F054663 -:100D7000006800244669D0F804908768D0F80CB069 -:100D8000D0F810A0D0F81880F10748D0F90714D097 -:100D900001218160B80703D5284600F00EFA0CE067 -:100DA000780702D54FF4006407E0380702D54FF406 -:100DB000805402E0284600F0FFF9F80516D52968AE -:100DC0004FF480708860B80503D5284600F0F7F925 -:100DD0000CE0780502D544F4005407E0380502D54C -:100DE00044F4804402E0284600F0E8F9F80316D500 -:100DF00029684FF480308860B80303D5284600F096 -:100E0000E0F90CE0780302D544F4004407E038032D -:100E100002D544F4803402E0284600F0D1F93007CE -:100E200007D55FEACB6004D52968102044F400742C -:100E3000C86070074FF0080707D55FEA0B7004D54C -:100E40002868C760284600F05FF9B00706D5286813 -:100E5000C068800702D0284600F058F9700607D510 -:100E60005FEACA6004D52968102044F480640861F0 -:100E7000B00607D55FEA0A7004D5286807612846DE -:100E800000F06AF9F00606D528680069800702D0EC -:100E9000284600F062F9B00308D55FEAC96005D5BD -:100EA000296810204860284600F058F9F00307D55B -:100EB0005FEA097004D528684760284600F082F987 -:100EC000300446D55FEA497040D5F00504D55FEAA5 -:100ED000C87001D044F00104B00504D55FEA887001 -:100EE00001D544F00204700504D55FEA487001D5CD -:100EF00044F00404300529D518F0700F26D008F00E -:100F00007000402815D006DC102809D020280AD00F -:100F1000302816D10AE050280ED0602811D10EE0FA -:100F200044F008040DE044F010040AE044F020040A -:100F300007E044F0400404E044F0800401E044F49D -:100F400080742868816921F070018161296804201A -:100F50004860002C05D0686A204368622846FFF785 -:100F60008FFEBDE8F09F70B5040003D094F8200018 -:100F700010B104E0012070BD204600F081F8206827 -:100F8000016821F00201016000F090FB0546052692 -:100F900004E000F08BFB401B0A2811D82068406851 -:100FA0008007F6D42068016841F00101016000F07B -:100FB0007DFB05460BE000F079FB401B0A2806D9B3 -:100FC000606A40F40030606284F82060D2E72068F4 -:100FD0004068C007EFD0207E0128206801683DD01E -:100FE00021F080010160607E01282068016838D00E -:100FF00021F040010160A07E01282068016833D003 -:1010000021F020010160E07E0128206801682ED0D7 -:1010100041F010010160207F01282068016829D07B -:1010200021F008010160607F01282068016824D058 -:1010300021F004010160D4E902010843D4E904125B -:10104000114308436168491E08432168C8610020B4 -:101050006062012084F82000002070BD41F0800112 -:10106000C0E741F04001C5E741F02001CAE721F0A7 -:101070001001CFE741F00801D4E741F00401D9E7BE -:1010800000B587B00021029103910491059106916A -:101090000068A0F18041B1F5C8412CD11748016822 -:1010A00041F000710160006800F000700190144888 -:1010B000016841F008010160006800F0080001903B -:1010C000032002900221039105900920069002A9B5 -:1010D0000C4800F0FBF900221146132000F056FBEB -:1010E000132000F045FB00221146142000F04EFBB7 -:1010F000142000F03DFB07B000BD00004038024066 -:1011000030380240000C02407047000010B58AB031 -:1011100004462068D0F8B001400D01902068A0F18D -:101120008041B1F5C84113D10198A0F201201028E7 -:101130000ED800F0BBFA0749086008AB01AA0021ED -:101140002046FFF79EFD019808A900B201F0A8FD16 -:101150000AB010BD180000207047704770470000AB -:1011600070B5044690F82000012804D0606A40F46D -:101170000020606218E0022084F8200020680168E6 -:1011800021F00101016000F091FA05460EE000BF78 -:1011900000F08CFA401B0A2808D9606A40F400303D -:1011A0006062052084F82000012070BD206840683E -:1011B000C007EDD1606270BD7047704770477047DF -:1011C00070477047704790F83510022903D080218E -:1011D000416501207047052180F8351000680168DD -:1011E00021F0010101600020704700002DE9F84363 -:1011F00004464FF00009CDF8009063484FF41651B3 -:10120000A56D0068B0FBF1F72E6894F85C1008201B -:1012100000FA01F131420FD021680A6852070BD55C -:101220000A6822F004020A6094F85C108840A86002 -:10123000606D40F00100606594F85C104FF00108AB -:1012400008FA01F0304208D021684969090604D53E -:10125000A860606D40F00200606594F85C100420A6 -:101260008840304208D021680968890704D5A86001 -:10127000606D40F00400606594F85C1010208840B8 -:10128000304218D021680968090714D5A860206881 -:101290000168490304D50068000308D5A16C07E084 -:1012A0000168C90503D4016821F008010160216CBF -:1012B00009B12046884794F85C10202088403042CD -:1012C00031D021680968C9062DD5A86094F8350089 -:1012D00005282068016806D0490347D50068000347 -:1012E0001DD4616C1CE021F0160101602068416989 -:1012F00021F080014161206C08B9A06C20B1206808 -:10130000016821F00801016094F85C103F208840DA -:10131000A86084F8349084F83580216D1FE0E16B7B -:1013200009B120468847606D00282BD0606DC0074A -:1013300014D0052084F835002068016821F00101EF -:1013400001600098401C0090B84203D820680068F3 -:10135000C007F6D184F8349084F83580E16C002918 -:1013600010D001B02046BDE8F04308470168C90528 -:10137000D5D4016821F01001016084F8349084F81C -:101380003580CCE7BDE8F883000000202DE9F0416E -:10139000044600F08BF906465CB1002584F8345011 -:1013A000022084F835002068016821F00101016005 -:1013B0000DE00120BDE8F08100F078F9801B0528E0 -:1013C00005D920206065032084F83500F2E7206805 -:1013D0000068C007F0D12268116820480140D4E9B4 -:1013E00001031843D4E903363343184363691843B0 -:1013F000A3691843E3691843236A18430843616AE1 -:10140000042903D1D4E90B13194308431060206861 -:101410004069666A20F0070130460E430127042820 -:101420000CD1A06A0643E06A40B12046FFF7D6F926 -:1014300020B14020606584F83570BAE720684661C5 -:101440002046FFF7B7F994F85C203F219140816076 -:10145000656584F835700020ACE700003F8010F02F -:1014600070B5044690F83400002501280CD0012006 -:1014700084F8340094F835600020012E06D084F8FA -:1014800034000225284670BD022070BD022684F873 -:10149000356060652046FFF7CBF92068016841F0B0 -:1014A00001010160EEE7000070B5044600F0FEF8AF -:1014B0000546601C02D004480078044400F0F6F8A9 -:1014C000401BA042FAD370BD040000202DE9F84F64 -:1014D00000224FF0010803254FF00F0E0B6808FAA9 -:1014E00002F42340A3426ED14E68012E05D0022E95 -:1014F00003D0112E01D0122E12D186684FEA420C71 -:1015000005FA0CF7BE43CF6807FA0CF7374387603C -:101510004668A6430C79C4F30014944034434460F5 -:10152000C668570005FA07FC8C6826EA0C06BC4022 -:101530003443C4604C68022C01D0122C13D1D4085F -:1015400000EB8404A346D4F8209054074FEAD46AF1 -:101550000EFA0AF629EA06090E6906FA0AF646EABA -:101560000906CBF8206004680E7924EA0C0406F022 -:101570000306BE40264306604C68E4006FD53B4C32 -:10158000266846F480462660246822F0030604F4A8 -:1015900080440094364C3444A446D4F80848960756 -:1015A000360F0EFA06F7BC43324FB84201D100277E -:1015B0002EE0314FB84201D1012729E02F4FB84228 -:1015C00002D1022724E04AE02D4FB84201D103277F -:1015D0001EE02C4FB84201D1042719E02A4FB8422F -:1015E00001D1052714E0294FB84201D106270FE0A9 -:1015F000274FB84201D107270AE0264FB84201D150 -:10160000082705E0244FB84201D1092700E00A2746 -:10161000B7402743CCF80878204E34684F689C4385 -:10162000FF0300D51C4334601C4E361D34684F68E0 -:101630009C43BF0300D51C433460184E0836346801 -:101640004F689C43FF0200D51C433460134E0C3698 -:1016500034684F689C43BF0200D51C433460521C61 -:10166000102AFFF43BAFBDE8F88F00004438024079 -:101670000030014000000240000402400008024027 -:10168000000C02400010024000140240001802400A -:10169000001C02400020024000240240003C0140A7 -:1016A0000AB1816170470904FBE7000001488068C6 -:1016B000704700000400002002488168027811444D -:1016C00081607047040000200B4810B5016841F4A8 -:1016D00000710160016841F480610160016841F4BA -:1016E00080710160032000F071F8002000F006F81E -:1016F00000F024F8002010BD003C024070B50D4DF4 -:1017000004464FF47A712878B1FBF0F00A49096871 -:10171000B1FBF0F000F03CFC48B9102C07D20022DD -:101720002146501E00F032F800206C6070BD012090 -:1017300070BD0000040000200000002081B00A48B5 -:10174000016841F480410160006800F4804000902D -:101750000648016841F080510160006800F0805047 -:10176000009001B070470000443802404038024009 -:10177000002809DB00F01F02012191404009800090 -:1017800000F1E020C0F8001170470000F0B40E4BEB -:101790001B680C46C3F30223C3F10705042D00D9CF -:1017A0000425191D072901D2002300E0DB1E0126B4 -:1017B00006FA05F1491E214099409E40761E1640CA -:1017C0003143F0BC01F0F7B90CED00E0064900F040 -:1017D000070208684FF6FF03184040EA0220034A58 -:1017E00010430860704700000CED00E00000FA05AF -:1017F0002DE9F0470E46050065D0DFF81481D8F8D2 -:101800000000F7B200F00F00B04207D288F8007075 -:10181000D8F8000000F00F00B04254D128683D4CC9 -:10182000810712D5400703D5206840F4E0502060BE -:101830002878000703D5206840F4604020602068C5 -:10184000A96820F0F000084320602878C0072DD058 -:10185000304968680839012812D0022813D00328BB -:1018600011D00968890700292DDA216821F00301C8 -:1018700001432160FFF71AFF814641F2883A0EE0EA -:1018800009688903EFE709688901ECE7FFF70EFFB4 -:10189000A0EB0901514502D90320BDE8F08720687B -:1018A000696800F00C00B0EB810FEFD1D8F80010A0 -:1018B000404601F00F01B14207D90770006800F0FF -:1018C0000F00B04201D00120E7E72878400705D596 -:1018D0002068E96820F4E050084320602878000779 -:1018E00006D52068296920F4604040EAC1002060E4 -:1018F00000F038F82168084AC1F30311515CC84070 -:101900000649086006480068FFF7F8FE0020C4E7B3 -:10191000003C024008380240363C0008000000202D -:10192000080000200448054900680968044AC1F31A -:101930008221515CC84070470000002008380240F6 -:10194000463C00080448054900680968044AC1F398 -:101950004231515CC8407047000000200838024006 -:10196000463C0008154810B5006810F00C021448F9 -:1019700013D01449042A0FD0082A0ED10F4C241F6B -:101980002268236802F03F025B0207D52068C0F39B -:101990008810A0FB010106E0084610BD2168C1F3D4 -:1019A0008811A1FB00010023FEF71EFC2168C1F392 -:1019B0000141491C4900B0FBF1F010BD083802405C -:1019C0000024F400001BB7002DE9F84F04006ED08E -:1019D0002078DFF83C93C007A9F104054AD009F14B -:1019E00004000168C1F38101012908D00068C0F337 -:1019F000810002280AD1D9F80000400206D52868E3 -:101A0000800337D560680028E1D033E06068B0F526 -:101A1000803F10D0B0F5A02F286810D020F480307F -:101A20002860286820F4802028606068A8B1FFF74B -:101A30003DFE06460DE0286840F48030F4E740F4AF -:101A400080202860F7E700BFFFF730FE801B642886 -:101A500073D828688003F7D50CE0FFF727FE064609 -:101A600005E000BFFFF722FE801B6428F0D828683D -:101A70008003F7D42078DFF89C8280074FF0000ABB -:101A80003ED5A348001D016811F00C0F08D0006876 -:101A9000C0F3810002280BD1D9F80000400207D41E -:101AA0002868800716D5E068012800D112E02BE1F4 -:101AB000E068B8B10120C8F80000FFF7F7FD06465E -:101AC00005E000BFFFF7F2FD801B0228C0D82868A0 -:101AD0008007F7D52868216920F0F80040EAC100A6 -:101AE00028600DE0C8F800A0FFF7E0FD064604E01E -:101AF000FFF7DCFD801B02281FD828688007F7D479 -:101B00002078000722D5824E83486169703671B112 -:101B100001210160FFF7CAFD074604E0FFF7C6FD9B -:101B2000C01B022809D830688007F7D50EE0C0F83E -:101B300000A0FFF7BBFD074605E082E0FFF7B6FD1A -:101B4000C01B02287DD830688007F7D42078400772 -:101B500068D5DFF8BCB100270BF13C0BDBF80000C7 -:101B6000C0000BD4DBF8001041F08051CBF800101E -:101B7000DBF80000012700F080500090674E3068CD -:101B8000C00510D4306840F480703060FFF78EFDDF -:101B9000009005E0FFF78AFD0099401A022850D80E -:101BA0003068C005F6D55A4EA0686C3601280FD0B3 -:101BB0000528306810D020F001003060306820F037 -:101BC00004003060A068B8B1FFF770FD00900FE02E -:101BD000306840F00100F4E740F004003060F7E7BF -:101BE000FFF764FD0099411A41F28830814266D8BE -:101BF00030688007F4D50EE0FFF758FD009007E04D -:101C0000FFF754FD0099411A41F28830814256D8BD -:101C100030688007F4D42FB1DBF8001021F0805138 -:101C2000CBF80010A069C8B33949091D0968C1F390 -:101C3000810102294AD00228504607D0C8F8600026 -:101C400000E03CE0FFF732FD04463BE04746C8F8C1 -:101C50006000FFF72BFD064605E000BFFFF726FDFD -:101C6000801B02282BD828688001F7D4D4E907010B -:101C70000843A16A2A4A490802EB0141626A41EA23 -:101C80008211084394F82C1040EA0161C9F8001051 -:101C900001203866FFF70AFD044606E036E000BF83 -:101CA000FFF704FD001B022809D828688001F7D53A -:101CB0002CE000BFFFF7FAFC001B022802D903202A -:101CC000BDE8F88F28688001F4D41FE00128F7D020 -:101CD000D9F80000E26900F48001914214D1226A2F -:101CE00000F03F0191420FD147F6C071626A014096 -:101CF000914209D1A26A00F44031914204D1E16AD3 -:101D000000F07060884201D00120D9E70020D7E7B9 -:101D10000438024000004742800E474200700040F5 -:101D20000000FFFF70B5040005D00025A56294F8FF -:101D3000510010B106E0012070BD84F850502046DB -:101D400000F030F8022084F851002068016821F08A -:101D500040010160D4E901010843D4E903121143B1 -:101D6000084361690843218B01F400710843E1696C -:101D70000843216A0843A16A084321680860A069F2 -:101D8000042101EA1040616A084321684860206824 -:101D9000C16921F40061C1616565012084F85100C9 -:101DA000002070BDF0B587B0002402940394049421 -:101DB000059406940068A0F18041B1F598312FD1C7 -:101DC0001848016841F480510160006800F48050B7 -:101DD00001901548016841F002010160016801F0BD -:101DE00002010191016841F001010160006800F009 -:101DF0000100019008200290022603960325059514 -:101E00000527069702A90948FFF760FB802002908A -:101E1000039604940595069702A90548FFF756FB1B -:101E200007B0F0BD443802403038024000040240A0 -:101E3000000002402DE9F84F044690F850000027BA -:101E40001D461646894601280DD04FF0010B84F837 -:101E500050B0FFF72BFC804694F85100BA46012899 -:101E600004D002278EE00220BDE8F88FB9F1000F00 -:101E70007DD0002E7BD0032084F85100C4F854A0FC -:101E8000C4F83090A686E686C4F838A0A4F83CA032 -:101E9000A4F83EA0C4F844A0C4F840A0A068B0F5DF -:101EA000004F04D12068016841F48041016020683E -:101EB0000168490603D4016841F040010160E0680F -:101EC000B0F5006F606803D030B3012E24D040E03D -:101ED00008B1012E1CD1206B21680088C86006E083 -:101EE00020688168890709D5216B0988C160206B4A -:101EF000801C2063E08E401EE08609E0FFF7D6FBE1 -:101F0000A0EB0800A84202D3681C01D031E07DB3E9 -:101F1000E08E0028E4D11FE0206B21680078087370 -:101F200006E020688168890709D5216B097801736B -:101F3000206B401C2063E08E401EE08609E0FFF726 -:101F4000B5FBA0EB0800A84202D3681C01D010E04A -:101F500075B1E08E0028E4D142462946204600F0C3 -:101F6000CDFB08B120206065A06820B107E008E043 -:101F7000FFE7032706E02068C16880680090606D75 -:101F800000B1012784F851B084F850A038466BE7BF -:101F900010B5401EB0F1807F01D3012010BD4FF07D -:101FA000E02460610F21601700F005FE0020A061B1 -:101FB00007202061002010BD7047000070B5026846 -:101FC00004461068D168536910F00F0F52D003F027 -:101FD000010501F490762E435FD0C20705D0CA05F3 -:101FE00003D5E26B42F00102E263420705D5DA074E -:101FF00003D0E26B42F00202E263820705D5DA0702 -:1020000003D0E26B42F00402E263020707D501F05D -:1020100020022A4303D0E26B42F00802E263E26B43 -:10202000002A33D0800604D5880602D5204600F069 -:102030004FFC20684069E16BC0F38010090700D4B1 -:1020400028B3204600F036FC2068416949061AD5BD -:10205000416921F040014161606BA0B11B490165FC -:10206000606BFFF7B0F8002810D0606B016DBDE821 -:1020700070400847830610D58B060ED52046BDE874 -:10208000704000F025BC2046FFF796FF70BD20464B -:10209000FFF792FF0020E06370BD030606D50B0634 -:1020A00004D52046BDE8704000F0F2BC4006F3D5F0 -:1020B0004806F1D5D168204621F04001D1602021A9 -:1020C00084F8391000F069F970BD0000A5280008F7 -:1020D00070B5040004D094F83900002510B106E072 -:1020E000012070BD84F83850204600F023F82420E9 -:1020F00084F839002068C16821F40051C16020468D -:1021000000F032FC2068016921F4904101612068EF -:10211000416921F02A0141612068C16841F4005100 -:10212000C160E563202084F8390084F83A0000207B -:1021300070BD00002DE9F04786B0044600250195EA -:102140000295039504950595206882490322022390 -:102150000826A0F1804CBCF5F84C70D0DFF8F8C12F -:102160000F15A0F180494FF4807A4FF04008B9F57F -:1021700088397DD0A0F18049B9F58A395BD1DCF886 -:10218000000040F02000CCF80000DCF8000000F077 -:1021900020000090086840F040000860086800F0E7 -:1021A000400000904FF48440019002930492059601 -:1021B00001A96A48FFF78AF96A4E694830604FF012 -:1021C0002069C6F80490B560F56037617561B56146 -:1021D000C6F81CA0356275623046FFF7D7F808B123 -:1021E000FEF73BFB6663B463604E5F483060C6F841 -:1021F0000490C6F80880F56037617561B561F561D6 -:10220000356275623046FFF7C1F808B1FEF725FB6D -:102210002663B463002211464720FFF7B7FA472030 -:10222000FFF7A6FA52480068016841680091C1684A -:1022300041F01001C16006B0BDE8F087FFE74D48EE -:10224000D0F800C04CF0004CC0F800C0006800F0AE -:1022500000400090086840F010000860086800F036 -:10226000100000900192029301200390049200E07C -:1022700010E0059601A94048FFF728F93F4800689B -:10228000016841680091C16841F01001C16006B069 -:10229000BDE8F087DCF8000040F01000CCF800004A -:1022A000DCF8000000F010000090086840F0020028 -:1022B0000860086800F002000090C02001900293BE -:1022C00004920720059001A92D48FFF7FFF82E4E34 -:1022D0002C4830604FF00069C6F80490B560F56096 -:1022E00037617561B561C6F81CA03562756230460C -:1022F000FFF74CF808B1FEF7B0FA6663B463244EFA -:1023000022483060C6F80490C6F80880F56037614E -:102310007561B561F561356275623046FFF736F873 -:1023200008B1FEF79AFA2663B4630022114625200D -:10233000FFF72CFA2520FFF71BFA16480068016802 -:1023400041680091C16841F01001C16006B0BDE86C -:10235000F087000030380240443802400018024044 -:102360002864024070020020A0640240D0020020D5 -:10237000700100204038024000100240F0000020B0 -:102380000004024040640240B0010020B8640240F2 -:10239000100200203001002070477047FEE7000067 -:1023A00030B585B00024009401940294039414483D -:1023B000124901604FF48031416084600461047609 -:1023C00080F82040C4620F498162C4600125C56164 -:1023D00080F830404561FEF7F3FA08B1FEF73DFAA8 -:1023E000062000900195029469460548FEF736FAEA -:1023F000002801D0FEF731FA05B030BD00200140C1 -:10240000280000200100000F10B510480E4901609F -:102410000321416000218160C1604FF4002202610C -:102420004FF4401242610176012242768176C176F4 -:1024300001774177FEF797FD002803D0BDE81040F3 -:10244000FEF70BBA10BD00000064004070000020D1 -:1024500008B51548016841F480010160006800F486 -:1024600080000090002211463920FFF78FF93920B3 -:10247000FFF77EF9002211463A20FFF787F93A204C -:10248000FFF776F9002211464520FFF77FF9452036 -:10249000FFF76EF9002211464620FFF777F9BDE8F5 -:1024A00008404620FFF764B9303802402DE9F04774 -:1024B00086B000240194029403940494059448483F -:1024C000016841F010010160016801F01001009104 -:1024D000016841F040010160016801F04001009194 -:1024E000016841F002010160016801F00201009100 -:1024F000016841F001010160016801F001010091F2 -:10250000016841F008010160016801F008010091D3 -:10251000016841F080010160016801F080010091D3 -:10252000016841F020010160006800F02000009087 -:102530002C4E00224FF4C0613046FFF7B1F82A4F0D -:1025400000223C213846FFF7ABF8DFF8A0800022DC -:102550004FF4FF714046FFF7A3F8DFF89490002294 -:10256000F1144846FFF79CF8DFF888A000224FF4EA -:1025700080415046FFF794F84FF4C0600190012568 -:1025800002950394049401A93046FEF79FFF3C2076 -:10259000019002950394049401A93846FEF796FF32 -:1025A0004FF4FF70019002950394049401A94046F2 -:1025B000FEF78CFFE802019002950394049401A9B0 -:1025C0004846FEF783FFA803019002950394049404 -:1025D00001A95046FEF77AFF06B0BDE8F08700007B -:1025E0003038024000040240001C02400018024043 -:1025F000001002400014024010B511480F4901605C -:102600004FF4827141604FF4004181600021C1604C -:10261000016141614FF4007282612822C26101624E -:10262000416281620A21C162FFF77CFB002803D06E -:10263000BDE81040FEF711B910BD000000300140A8 -:102640009800002010B50C480A4901604FF4E131B0 -:10265000416000218160C16001610C2242618161A1 -:10266000C161FFF735FD002803D0BDE81040FEF73B -:10267000F4B810BD007C0040F000002010B50D48FB -:102680000B4901600C49416000218160C1604FF439 -:10269000806202610C2242618161C161FFF718FD15 -:1026A000002803D0BDE81040FEF7D7B810BD0000E9 -:1026B0000010014030010020A086010010B50C4838 -:1026C0000A4901604FF4E131416000218160C1603D -:1026D00001610C2242618161C161FFF7F9FC0028B0 -:1026E00003D0BDE81040FEF7B8B810BD001401409B -:1026F00070010020FEE770477047000038B50446BF -:102700001248134B0068B0FBF3F04FF47A73584350 -:1027100000906068B0F5827F0DD10B4600920022D8 -:102720008021204600F016F870B1606D40F0200066 -:102730006065032038BD009830B1401E00902068CD -:102740008068C0430006F6D5002038BD0000002098 -:1027500000366E012DE9F0411D4617460E4604462F -:10276000DDF8188008E0681C06D0FEF79FFFA0EB9C -:102770000800A8420BD255B12068806836EA0000F4 -:1027800030D00020B842EED10020BDE8F0812068B2 -:10279000416821F0E00141606068B0F5827F0BD1B3 -:1027A000A068B0F5004F02D0B0F5806F04D120686A -:1027B000016821F040010160A06AB0F5005F09D115 -:1027C0002068016821F4005101602068016841F42B -:1027D00000510160012084F85100002084F850006D -:1027E0000320D2E70120CDE77047FEF765BF000068 -:1027F00030B593B00024089409940A940B94019482 -:1028000002940394049405941D48016841F080519A -:102810000160006800F0805000901A48016841F49F -:1028200040410160006800F44040009001200690A3 -:102830000004079002250C9580010D9006200E9053 -:10284000A8200F9010950420119006A8FFF7BCF85F -:1028500008B1FEF702F80F200190029503944FF49F -:10286000A05004904FF480500590052101A8FEF778 -:10287000BFFF002801D0FDF7F0FF13B030BD00000E -:1028800040380240007000400448016841F4700183 -:10289000016003494FF000600860704788ED00E078 -:1028A00008ED00E010B5806B0021C185C184FFF701 -:1028B00083FB10BD0168CA6822F49072CA60016887 -:1028C0004A6922F001024A61202180F83A107047DB -:1028D00010B590F83A10222901D0022010BD81686D -:1028E000B1F5805F11D00169002901681FD04968E6 -:1028F00001F07F03816A4A1C82620B70C18D491E00 -:102900000904090CC18518D02BE00269816A002AEC -:102910000268526805D0D2B20A80816A491C81627D -:10292000ECE7C2F308020A80816A891CF7E74A686B -:10293000816A4B1C83620A70E0E70168CA6822F072 -:102940002002CA600168CA6822F48072CA60016805 -:102950004A6922F001024A61202180F83A10FFF70B -:102960001BFD002010BD00002DE9F0410446006869 -:102970000169E26821F44051114301612169A068B5 -:10298000E26908436169114308432168CA6849F252 -:102990000C639A430243CA6020684169A26921F42A -:1029A000407111434161E069192764253226B0F571 -:1029B000004F354A354920684FF0000806D088425C -:1029C00001D0904236D1FEF7BDFF35E0884201D0FC -:1029D000904202D1FEF7B6FF01E0FEF7A3FF616867 -:1029E0004A18A0FB070148EB0803FDF7FDFB014671 -:1029F000B0FBF5F00201B1FBF5F06FF0180358439E -:102A000001EB800006EBC000B0FBF5F000F0F80031 -:102A100002EB4002B1FBF5F0584301EB800006EBFE -:102A2000C000B0FBF5F000F007002168104488609A -:102A3000BDE8F081FEF776FF61688B0F8A00A0FB8E -:102A40000701FDF7D1FB0146B0FBF5F06FF018026E -:102A5000504301EB800006EB0010B0FBF5F000F0F6 -:102A6000F002B1FBF5F002EB0012B1FBF5F06FF0F4 -:102A70001803584301EB800006EB0010B0FBF5F0A3 -:102A800000F00F00D1E700000014014000100140E9 -:102A900090F83910212901D0022070478168B1F5E2 -:102AA000805F016A0BD04A1C02620268097851609B -:102AB000C18C491E0904090CC1840ED017E0098895 -:102AC0000268C1F30801516001690029016A02D05E -:102AD000491C0162ECE7891CFBE70168CA6822F027 -:102AE0008002CA600068C16841F04001C1600020F6 -:102AF0007047000038B5174D2868016811F0100FB5 -:102B000022D0C16811F0100F1ED0016840680090FB -:102B1000686B0068016821F001010160686B006862 -:102B2000406884B2202C01D100F0B0FC322C01D1DD -:102B300001F03AF8696B322009684860686B0068F8 -:102B4000016841F001010160BDE838400148FFF72C -:102B500035BA00003001002038B5154C20680168F6 -:102B600011F0100F1FD0C16811F0100F1BD00168B9 -:102B700040680090606B0068016821F0010101600D -:102B8000606B0068406880B2C0F11E0040B200F087 -:102B900049FD616B1E2009684860606B0068016830 -:102BA00041F001010160BDE838400148FFF706BA75 -:102BB00070010020FEE70907090E002804DB00F180 -:102BC000E02080F80014704700F00F0000F1E020D2 -:102BD00080F8141D704702E008C8121F08C1002ABF -:102BE000FAD170477047002001E001C1121F002A8E -:102BF000FBD17047D0ED160A184A30EE800ADFED9F -:102C0000180A10EE101A914201DD30EE600AB5EE9E -:102C1000C00AF1EE10FA01D230EE200AD0ED180A07 -:102C2000F5EEC00AF1EE10FA06DDF4EEC00AF1EEA0 -:102C300010FA01D2B0EE600AD0ED190AF5EEC00A22 -:102C4000F1EE10FA06DDF4EEC00AF1EE10FA01DD45 -:102C5000B0EE600A80ED160A704700000000B44331 -:102C60000000B44300B58BB000200121CDE906017E -:102C70000590009001900290039004900E20CDE901 -:102C8000081069460548FDF775FF0448FEF768FA25 -:102C900002210248FDF7EEFE0BB000BD70000020DF -:102CA00070B51E4E0D46002404EB840106EB411165 -:102CB000098881422DD1FEF7F9FC04EB840106EB73 -:102CC0004114A066A06918B1012801D002281FD1C3 -:102CD000288840BA2081FDF7C5FB9FED111B53ECFE -:102CE000112BFDF7CDFA9FED101B53EC112BFDF7C7 -:102CF00039FBFDF7C4FBE060688840BA00B200EE23 -:102D0000100AB8EEC00A84ED040AA88840BAA0826E -:102D100070BD641C142CC7DB70BD0000FC070020D4 -:102D200000000000008076400000000000FFBF406F -:102D30002DE9F041434C90B0206810B9FEF7B6FC85 -:102D40002060FEF7B3FC2168401A0A2876D33E4A79 -:102D50000DAF002407CA87E807003C4E25464FF018 -:102D6000080809950A9557F82420CDE904580192DE -:102D700003958DF81850002101EB810006EB4010FF -:102D80004388934212D1B0F804C0BCF1010F0DD1B9 -:102D900090ED170ABDEEC00A10EE10CA4FEA1C2CC7 -:102DA0008DF824C010EE10CA8DF825C0934212D1C0 -:102DB000B0F804C0BCF1020F0DD190ED170ABDEEC2 -:102DC000C00A10EE10CA4FEA1C2C8DF826C010EE77 -:102DD00010CA8DF827C0934212D1B0F804C0BCF1DC -:102DE000030F0DD190ED170ABDEEC00A10EE10CA08 -:102DF0004FEA1C2C8DF828C010EE10CA8DF829C09F -:102E000093420FD18388042B0CD190ED170ABDEEAD -:102E1000C00A10EE100A000A8DF82A0010EE100AFF -:102E20008DF82B00491C1429A6DB012309AA01A94E -:102E30000748FDF731FE641C032C92DB10B0BDE89F -:102E4000F081000024000020CC440008FC07002092 -:102E500070000020FEF738FCFFF7CAFCFFF726FBE6 -:102E6000FFF7F6FAFFF79CFAFFF7C6FBFFF706FC41 -:102E7000FFF724FCFFF7C8FAFFF7E4FB01223C212F -:102E80002448FEF70DFC0122D1022348FEF708FC7E -:102E9000012291032148FEF703FC214C012211027B -:102EA0002046FEF7FDFB012280212046FEF7F8FBBD -:102EB000012240212046FEF7F3FB0122202120467B -:102EC000FEF7EEFB012210212046FEF7E9FB01226E -:102ED00008212046FEF7E4FB012204212046FEF7EC -:102EE000DFFB012202212046FEF7DAFB00F090F81A -:102EF00000F05AFE00F06CFEFFF7B4FE032000F075 -:102F0000DDFB00F07FFD00F0E3FD00F037FEFFF792 -:102F10000FFFF6E7001C02400010024000140240C0 -:102F2000001802402DE9F047002000F02DF8DFF8EE -:102F3000549000245FF0000609EBC60000EBD400BB -:102F4000002507784FFA86F8380604EB050041B2F1 -:102F500001D5012200E00022404600F035F8780655 -:102F60006D1C070EEDB2082DEED3761CF6B2802E46 -:102F7000E2D30834E4B2402CDCD3BDE8F04700F0E3 -:102F8000DDB80000CA400008F0B500210D4BFF2657 -:102F90000C46002201280FD003EBC20580B16F5C04 -:102FA000C7F1FF076F54521CD2B2802AF2D9491CD4 -:102FB000C9B20829EDD3F0BD03EBC2056E54F2E7A8 -:102FC0006C54F0E73003002070B5802817D2002938 -:102FD00015DB3F2913DCCB1701EB5375C5F3C70392 -:102FE00025F007050124094E491B8C4006EBC00063 -:102FF000012A05D0C15C022A05D0A143C15470BD8D -:10300000C15C2143FAE76140F8E70000300300208B -:1030100070B5494D4FF48064002221462846FEF7E2 -:103020003FFB4FF4FA70FEF73FFA01222146284693 -:10303000FEF736FB0021AE2000F0B0F80021084674 -:1030400000F0ACF80021102000F0A8F8002140208A -:1030500000F0A4F80021812000F0A0F80021CF208A -:1030600000F09CF80021A12000F098F80021C82071 -:1030700000F094F80021A62000F090F80021A8208C -:1030800000F08CF800213F2000F088F80021D320C8 -:1030900000F084F80021084600F080F80021D520D7 -:1030A00000F07CF80021802000F078F80021D92081 -:1030B00000F074F80021F12000F070F80021DA200F -:1030C00000F06CF80021122000F068F80021DB20ED -:1030D00000F064F80021402000F060F8002120207A -:1030E00000F05CF80021022000F058F800218D204B -:1030F00000F054F80021142000F050F80021A42022 -:1031000000F04CF80021A62000F048F80021AF2084 -:1031100000F044F80021AF2000F040F80020FFF755 -:1031200033FF0021084600F023F8FFF7FBFEBDE85F -:10313000704000F003B800000004024070B50B4E70 -:1031400000242146002000F013F8002506EBC500FE -:103150000121005D00F022F86D1CEDB2802DF5D349 -:10316000641CE4B2082CECD370BD000030030020D6 -:1031700010B5801CC4B2B031C8B2002100F00EF806 -:10318000102040EA1410002100F008F804F0F000CC -:10319000BDE81040002100F001B8000013B5084858 -:1031A0004FF4007309B1012200E000221946FEF736 -:1031B00077FA0A23012269460248FEF73BFE1CBD4E -:1031C000000402409800002090F8301000291CD123 -:1031D000416891ED000A80ED080A0168D1ED000A0E -:1031E000C0ED090AD0ED070AB4EEE00AF1EE10FADC -:1031F00006DCD0ED060AB4EEE00AF1EE10FA01D2D8 -:10320000C0ED080A012180F83010704780ED0D0AEA -:10321000704710B5044690F83000002864D020684C -:10322000D0ED001AA06890ED000A70EE610A94EDEE -:103230000D0AB5EEC00AF1EE10FA13DDB6EE001A73 -:1032400020EE011AF4EEC10AF1EE10FA01DD70EE83 -:10325000C00AB1EE411AF4EEC10AF1EE10FA01D241 -:1032600070EE200A94ED080A94ED041A01EE200A8B -:1032700084ED080A94ED071AB4EEC10AF1EE10FAD3 -:1032800002DD84ED081A08E094ED062AB4EEC20AC5 -:10329000F1EE10FA01D284ED082A94ED090AD4ED7A -:1032A000032A31EEC02A94ED080A02EEA00AD4EDFA -:1032B000050A00EEC20AB4EEC01AF1EE10FA02D20C -:1032C000B0EE410A08E0D4ED060AF4EEC00AF1EED1 -:1032D00010FA01DDB0EE600A606880ED000AC4ED0E -:1032E000091AFEF7E3F9A06210BD000010B504460C -:1032F0002DED028B002084E80E009FED188AB0EEC1 -:10330000602AF0EE402A84F83000F0EE411ADFED3A -:10331000120AB0EE480A204600F03EF80A20E062A9 -:103320000021204600F01CF8B0EE611AF0EE420ACF -:10333000B0EE620A204600F075F8FEF7B7F9E16AD0 -:10334000401AA0622046FFF73FFF84ED0D8A204619 -:10335000BDEC028B10BD000000007F4300000000A8 -:1033600090F83020AAB190F838208A4211D090ED20 -:10337000030AB1EE400A80ED030A90ED040AB1EEB3 -:10338000400A80ED040A90ED050AB1EE400A80ED96 -:10339000050A80F838107047B4EEE00AF1EE10FA32 -:1033A0002BDA80ED060AC0ED070A90F830100029EC -:1033B00023D0416891ED001AB4EEE01AF1EE10FA54 -:1033C00002DDC1ED000A06E0B4EEC01AF1EE10FA1B -:1033D00001D281ED000A90ED080AD0ED070AB4EEA3 -:1033E000E00AF1EE10FA06DCD0ED060AB4EEE00ACF -:1033F000F1EE10FA01D2C0ED080A704710B590ED59 -:10340000030A0446B5EEC00AF1EE10FA08D0FEF742 -:103410004DF9A16A401AE16A884201D3012010BD2A -:10342000002010BDB5EEC00AF1EE10FA2BD3F5EE78 -:10343000C00AF1EE10FA26D3B5EEC01AF1EE10FA7A -:1034400021D3D0ED0B1ADFED102A80ED030AB8EE80 -:10345000612AC2EE221A81EE212A60EEA10AC0ED95 -:10346000040A80ED052A90F8381001290BD1B1EE3D -:10347000400A80ED030AB1EE600A80ED040AB1EE65 -:10348000420A80ED050A704700007A442DE9F05F9A -:103490002DED028BFEF70AF95E49282208605E498D -:1034A00001F12800FCF7D1FEDFF86CB15A4CABF10A -:1034B000140B0026BBF80000C0F30A05A5F58065D3 -:1034C00025809BF80100C2089BF8020042EA4012E6 -:1034D000C2F30A02A2F5806262809BF80330800981 -:1034E00040EA83009BF80430521D40EA8320C0F379 -:1034F0000A00A0F58060A0805B089BF805700A2A8E -:1035000043EAC711C1F30A01A1F58061E18000D847 -:103510006680401D0A2800D8A680491D0A2900D8C7 -:10352000E6802846FCF78DFF9FED3C8B53EC182B73 -:10353000FCF718FFFCF7A3FFA060B4F90200824675 -:10354000FCF77FFF53EC182BFCF70CFFFCF797FF01 -:10355000E060B4F904008146FCF773FF53EC182BCC -:10356000FCF700FFFCF78BFF2061B4F906008046F2 -:10357000FCF767FF53EC182BFCF7F4FEFCF77FFF1A -:103580006061B9092176C7F3011161764FF4A56135 -:1035900005F5257558468D4200D926800AF5257215 -:1035A0008A4200D9668009F525728A4200D9A68030 -:1035B00008F525728A4200D9E680C18861830189B5 -:1035C000A1834189E183017B84F82010417B84F849 -:1035D0002110C1896184BBF810004FF42571A0F55A -:1035E000806000B2A084884205DC4042A084BDEC2B -:1035F000028BBDE8F09F4FF4257210FB02F043F6FA -:10360000C61290FBF2F000B2A0848842EFDDA184E4 -:10361000EDE70000100000204407002066666666A3 -:1036200066661A4070B5234D2878B5F80110A528B4 -:103630004CBA3DD1FEF73AF81F490860B5F80500CD -:1036400043BA042B25D00BDC012B19D01948323892 -:10365000022B1AD0032B2BD1E91D2246001D0BE0B3 -:10366000052B1BD0A3F58073013B1CD0012B1FD170 -:103670001048E91D2246001FBDE87040FCF7E5BD7B -:103680000C48E91D22463238F6E7E91D2246C01CE7 -:10369000F2E70848E91D22460E38EDE70548E91D26 -:1036A00022460B38E8E70348E91D22460838E3E7DD -:1036B00070BD0000CA070020140000202DE9F0476B -:1036C00064282DED068B01D96438C0B2032803D0DD -:1036D000042801D005287DD1A3A1A648FCF7C7FD89 -:1036E000A44C00256C3C40F20120A561461E2080C0 -:1036F00066800127A7809FEDA08A04F158031A1D58 -:10370000A2F14C0101F10C00B0EE481AF6EE000AED -:10371000B7EE000A8046FFF7E9FDDFED988AF0EE8C -:10372000680A9FED979A4046B0EE490AFFF734FECB -:1037300094A104F58670FCF79AFDB01CC4F8B8504B -:10374000A4F8A00004F1F8031A1DA2F14C01A4F89A -:10375000A2604FF0020801F10C00A4F8A480B0EEC2 -:10376000481AF6EE000AB7EE000A8146FFF7BEFDE2 -:10377000F0EE680AB0EE490A4846FFF70DFE84A154 -:1037800004F5D670FCF773FDF01CC4F85851A4F88A -:10379000400104F5CC731A1DA2F14C01A4F842615A -:1037A0004FF0030901F10C00A4F84491B0EE481A5F -:1037B000F6EE000AB7EE000A8246FFF797FDF0EE3C -:1037C000680AB0EE490A5046FFF7E6FD73A104F51A -:1037D000137000E0C3E0FCF74AFD301DC4F8F85157 -:1037E000A4F8E00104F50E73A4F8E26104201A1DA8 -:1037F000A4F8E401A2F14C0101F10C00B0EE481A6A -:10380000F6EE000AB7EE000A0546FFF76FFDF0EE90 -:10381000680AB0EE490A2846FFF7BEFD62A104F52A -:103820006370FCF724FD701DC4F83873A4F82003FE -:10383000851FA4F82253A4F824739FED5F0A84ED3A -:10384000E10A9FED5E0A84EDE00A9FED5D0AB0EEAD -:10385000481A84EDDE0ADFED5B8A04F55E739FEDA6 -:103860005A9A1A1DA2F1500101F11000F0EE680AF7 -:10387000B0EE490A0646FFF739FDDFED549A3046AF -:10388000B0EE690AFFF7C2FC9FED51AAF0EE4A0ABA -:10389000DFED50AA3046B0EE6A0AFFF77DFD4EA17B -:1038A00004F53B70FCF7E3FCE81DC4F89872A4F83B -:1038B0008002A4F88252A4F884829FED4B0A84ED22 -:1038C000B90A9FED4A0A84EDB80A9FED490A04F54A -:1038D00036731A1DA2F1500184EDB60A01F11000F1 -:1038E000B0EE481AF0EE680AB0EE490A0646FFF755 -:1038F000FDFCB0EE690A3046FFF788FCF0EE4A0A9C -:10390000B0EE6A0A3046FFF747FD3AA104F22C40B8 -:10391000FCF7ADFC40F20720C4F8D883A4F8C0033C -:1039200004F583631A1DA4F8C253A2F14C01A4F854 -:10393000C49301F10C00B0EE481AF6EE000AB6EEA0 -:10394000000A0446FFF7D2FCBDEC068B2046BDE81A -:10395000F047DFED2A0A9FED2A0AFFF71DBDBDECF7 -:10396000068BBDE8F087000046524F4E545F4C4531 -:103970004654000068080020000000000000804657 -:10398000000080C646524F4E5420524947485400CA -:103990004241434B20524947485400004241434B67 -:1039A000204C454654000000544F5552454C4C4560 -:1039B00020504954434800007B9474435C2F924349 -:1039C000B83E88430000C842000048430000B443AA -:1039D0000060EA460060EAC6544F5552454C4C45DB -:1039E0002059415700000000856BDD4252389A4350 -:1039F0008FC25043464545444552000000401C4696 -:103A000000401CC610B50E4CE06810B9FDF74EFE24 -:103A1000E060FDF74BFEE168401AB0F57A7F07D908 -:103A2000FDF744FEE0600748416981F400614161AF -:103A300000F00AF800F036F8BDE8104000F01CB8BD -:103A4000100000200010024010B5FDF72FFE0849BD -:103A50000968421A07484FF48071B2F5FA7F01D223 -:103A6000002200E00122BDE81040FDF719BE000071 -:103A7000100000200018024010B5FDF717FE07499E -:103A80008968411A0648642901D2002200E0012217 -:103A9000BDE810404021FDF703BE000010000020EB -:103AA0000018024010B5FDF701FE07494968411AA8 -:103AB0000648B1F5FA6F01D2002200E00122BDE80C -:103AC00010408021FDF7ECBD1000002000180240DE -:103AD00010B5244C24482DED028BB2EE0E8AD4EDA5 -:103AE000030A80EE880AFFF785F8D4ED020A1E4823 -:103AF00080EE880AA038FFF77DF81B48217EE03071 -:103B0000012904D0022929D0032907D102E09FED21 -:103B1000170A01E09FED160A80ED060AB4F90420A9 -:103B2000B4F90610501800EB40004000511A01EBA8 -:103B3000410100EE100A490000EE901AB8EEC00AEA -:103B40000C48F8EEE00A80ED160AC0ED3E0A80ED62 -:103B5000660AC0ED8E0ABDEC028B10BD9FED060A11 -:103B6000DAE70000440700201C0B002000000000E2 -:103B700000409C45FC07002000401C4670B5094EE3 -:103B8000002400BF04EB840006EB40151C352846DA -:103B9000FFF734FC10B12846FFF73BFB641C142CE4 -:103BA000F0DB70BDFC070020074882B000680168A8 -:103BB00041680091C16841F01001C160322203499F -:103BC000014802B000F018B8300100203007002092 -:103BD000074882B00068016841680091C16841F0FF -:103BE0001001C1601E220349014802B000F004B870 -:103BF00070010020CA07002070B5044690F83A0012 -:103C0000202801D0022070BD99B192B1A162A28595 -:103C10000020E063134620680A46656B011D2846B4 -:103C2000FDF71EFC2068416941F040014161002020 -:103C300070BD012070BD0000000000000000010206 -:103C4000030406070809000000000102030400063F -:103C50001016000610160000000000000000000012 -:103C60000000000000003F400000000000000000D5 -:103C70003000400030004000000009000BC03D0053 -:103C80000BC03D00090018C024407FE02240318075 -:103C90000000180024C01B000D803240018003800A -:103CA0001C4027401C8007400040100060000000BE -:103CB0000000000000000000000000001F80204005 -:103CC00040200000402020401F800000000009002C -:103CD00006001F80060009000000040004003F8069 -:103CE000040004000000001000600000000000005C -:103CF00000000400040004000400040000000000B0 -:103D000000400000000000000000002001C006008C -:103D10003800400000001F802040204020401F80CD -:103D20000000000010403FC000400000000018C02C -:103D300021402240244018400000108020402440B0 -:103D400024401B80000002000D0011003FC0014014 -:103D500000003C80244024402440238000001F8039 -:103D6000244024403440038000003000200027C05D -:103D70003800200000001B802440244024401B8089 -:103D800000001C0022C0224022401F8000000000D2 -:103D90000000084000000000000000000000046077 -:103DA000000000000000000004000A001100208054 -:103DB0004040090009000900090009000000000056 -:103DC0004040208011000A00040018002000234019 -:103DD0002400180000001F802040274029401F4079 -:103DE0000000004007C039000F0001C00040204023 -:103DF0003FC0244024401B8000001F802040204002 -:103E000020403080000020403FC0204020401F80E4 -:103E1000000020403FC024402E4030C00000204021 -:103E20003FC024402E00300000000F0010802040D2 -:103E300022403380020020403FC0040004003FC005 -:103E40002040204020403FC0204020400000006033 -:103E5000202020203FC02000200020403FC02440E0 -:103E60000B0030C0204020403FC0204000400040B8 -:103E700000C03FC03C0003C03C003FC000002040E9 -:103E80003FC00C4023003FC020001F802040204046 -:103E900020401F80000020403FC024402400180024 -:103EA00000001F802140214020E01FA00000204092 -:103EB0003FC02440260019C0004018C024402440C0 -:103EC000224031800000300020403FC020403000C0 -:103ED000000020003F80004000403F802000200084 -:103EE0003E0001C0070038002000380007C03C0039 -:103EF00007C038000000204039C0060039C020400B -:103F000000002000384007C038402000000030404A -:103F100021C02640384020C00000000000007FE0A3 -:103F2000402040200000000070000C000380004092 -:103F300000000000402040207FE000000000000062 -:103F400020004000200000000000001000100010C1 -:103F500000100010001000000000400000000000F1 -:103F60000000000002800540054003C00040200022 -:103F70003FC0044004400380000000000380044070 -:103F800004400640000000000380044024403FC07D -:103F90000040000003800540054003400000000091 -:103FA00004401FC0244024402000000002E00550CF -:103FB00005500650042020403FC00440040003C0C8 -:103FC00000400000044027C0004000000000001036 -:103FD0000010041027E00000000020403FC0014016 -:103FE000070004C00440204020403FC00040004083 -:103FF000000007C0040007C0040003C00000044024 -:1040000007C00440040003C00040000003800440D7 -:10401000044003800000041007F0045004400380B3 -:104020000000000003800440045007F0001004402A -:1040300007C00240040004000000000006400540E4 -:10404000054004C00000000004001F800440004040 -:104050000000040007800040044007C00040040046 -:10406000070004C0018006000400060001C007002C -:1040700001C006000000044006C0010006C0044064 -:1040800000000410071004E0018006000400000096 -:10409000044005C006400440000000000000040089 -:1040A0007BE040200000000000000000FFF0000066 -:1040B0000000000040207BE0040000000000400001 -:1040C00080004000200020004000000000000000B0 -:1040D00000000000000000000000000000000000E0 -:1040E00000000000000000000000000000000000D0 -:1040F00000000000000000000000000000000000C0 -:1041000000000000000000000000000000000000AF -:104110000006000000000000001E0000000000007B -:1041200000DE00000000000000D8000000000000D9 -:1041300000D800000000000000D8000000000000CF -:1041400000DE00000000000000FE00000000000093 -:1041500000F60000000000000072000000000000F7 -:104160000000000000000000007C000000000000D3 -:1041700000FE00000000000000C60000000000007B -:1041800000C600000000000000C6000000000000A3 -:1041900000FE000000000000007C000000000000A5 -:1041A0000000000000000000001E000000000000F1 -:1041B00000DE00000000000000D60000000000004B -:1041C00000D600000000000000D600000000000043 -:1041D00000D600000000000000DE400000000000EB -:1041E00000FE600000000010006C70000000003055 -:1041F00000007800000000F0007C7C00000007F068 -:1042000000FE7E0000003FF000C67F000001FFF0CE -:1042100000C67F80000FFFF000C67FC0007FFFF068 -:1042200000FE7FE003FFFFF0007C7FF03FFFFFF028 -:1042300000027FF83FFFFFF000067FFC3FFFFFF02A -:10424000001E7FFE3FFFFFF000BC7FFF3FFFFFF03F -:1042500000E07FFFBFFFFF8000F87FFFFFFFFC0053 -:10426000003E7FFFFFFFE000000E7FFFFFFF00002A -:1042700000B87FFFFFF8000000E07FFFFFF00000C4 -:1042800000FE7FFFFFF00000001E7FFFFFF0000038 -:1042900000027FFFFFF0000000007FEFFFF0020050 -:1042A00000067FE7FFF00200000E7FE3FFF0020050 -:1042B000001C7FE1FFF8030000BA7FE0FFFC030071 -:1042C00000F67FE07FFE038000E67FE03FFF038093 -:1042D00000F67FE03FFF83C0003E7FE03FFFC3C0AA -:1042E000000E7FE03FFFE3E000027FE03FFFF3E0EE -:1042F00000007FE03FFFFBF000027FE03FFFFFF0A8 -:1043000000667FE03FFFFFF800F67FE03FFFFFF829 -:1043100000D67FE03FFFFFFC00D67FF07FFFFFFC71 -:1043200000D67FF8FFF7FFFE00D67FFFFFF3FFFE0A -:1043300000DE3FFFFFE1FFFF008C3FFFFFE0FFCF0C -:1043400000401FFFFFC07FC780C01FFFFFC03FC3EB -:1043500080C00FFFFF801FC1C0FE07FFFF000FC01E -:10436000C0FE03FFFE0007C060C001FFFC0003C0E9 -:1043700020C0007FF00001C00086000F800000C058 -:10438000001600000000004000D600000000000001 -:1043900000D600000000000000D600000000000071 -:1043A00000D600000000000000D600000000000061 -:1043B00000D000000000000000C00000000000006D -:1043C0000006000000000000001E000000000000C9 -:1043D00000DE00000000000000D800000000000027 -:1043E00000D800000000000000D80000000000001D -:1043F00000DE00000000000000DE00000000000001 -:1044000000F6000000000000007200000000000044 -:10441000000000000000000000620000000000003A -:1044200000F600000000000000F6000000000000A0 -:1044300000D600000000000000D6000000000000D0 -:1044400000D600000000000000DE000000000000B8 -:10445000008C0000000000000000000000000000D0 -:10446000000000000000000000000000000000004C -:10447000000000000000000000000000000000003C -:10448000000000000000000000000000000000002C -:10449000000000000000000000000000000000001C -:1044A000000000000000000000000000000000000C -:1044B00000000000000000000000000000000000FC -:1044C00000000000000000000000000000020000EA -:1044D000FF010000FF020000F84400080000002077 -:1044E00028000000D62B00082045000828000020E6 -:1044F00058180000E62B00080024F400010000001A -:10450000100000000000000000000000000000009B -:10451000000000000000000000000000000000009B +:100280002DE9FE4F804681EA0300C00F0C46009026 +:1002900021F0004123F00045B8EB0200A94105D24E +:1002A0004046214690461C460B46024623F000403D +:1002B000104347D0270DC7F30A00C3F30A51029039 +:1002C000401A019040286BDAC3F3130040F4801BFE +:1002D0000098924620B10023D2EB030A63EB0B0B8C +:1002E00001985946C0F14002504600F08BF906468D +:1002F0000D4650465946019A00F0A3F910EB08004C +:100300006141002487EA115284EAE7731A4340D01E +:10031000009A62B3019A012A4FEA075215DC001BCA +:1003200061EB02014FF0004202EA0752CDE90042C0 +:10033000001C41F5801132462B4600F0DAF903B07B +:10034000BDE8F08F40462146F9E7001B61EB020152 +:10035000001C41F5801300185B412018A2F500171E +:1003600047EB030140EAD570B6196D4111E06D0805 +:100370004FEA360645EAC0754FEA0752001B61EBAB +:100380000201001C41F5801149084FEA30000019B4 +:10039000514132462B4603B0BDE8F04F00F09AB908 +:1003A0000098012240000023D0EB020263EBE073CF +:1003B000009821464FEAE074B8EB000061EB0401BD +:1003C000E9E783F000435BE781F0004158E72DE95E +:1003D000FE4F81EA030404F0004421F00041009440 +:1003E0004FF0000B23F0004350EA01045ED052EAC4 +:1003F00003045BD0C3F30A54C1F30A552C44A4F29E +:10040000F3340194A0FB0254C1F3130141F48011B1 +:10041000C3F3130343F4801301FB024400FB034EB8 +:10042000840A970A44EA815447EA8357A4FB076881 +:1004300002958D0A05FB07854FEA932C04FB0C54AB +:100440002705029D4FEA065847EA1637B5EB08051F +:100450006EEB070C870E920E47EA811742EA831271 +:10046000A7FB0201B6EB0B0164EB00042B0D43EA82 +:100470000C335E1844EB1C50DA465146E7FB020190 +:10048000C5F313044FEA0B3343EA14534FEA043223 +:10049000019C43EA0603A4F10C040294009CCDE9FC +:1004A00000B400F026F903B0BDE8F08F002001464B +:1004B000F9E72DE9F04D81EA030404F0004B21F047 +:1004C000004514464FF0000A23F0004150EA0502AF +:1004D00020D054EA01021DD0C5F30A570246C5F3E5 +:1004E0001303C1F31300C1F30A5640F4801543F41B +:1004F0008013A7EB0608101BD64608F2FD3873EBF5 +:10050000050002D308F1010801E092185B41B8F13F +:10051000000F03DA00200146BDE8F08D00204FF403 +:100520008011064684460EE0171B73EB050705D3C2 +:10053000121B63EB050306434CEA010C49084FEA22 +:10054000300092185B4150EA0107EDD152EA0300F6 +:1005500012D082EA040083EA0501084305D0101B8B +:10056000AB4106D20122002306E000224FF00043F7 +:1005700002E06FF0010253101AEB06004CEB085139 +:1005800010EB0A0041EB0B01BDE8F04D00F0A2B802 +:100590000EB5C10F80EAE0700844CA07002140F29E +:1005A00033438DE80E000A460B4600F0A2F803B074 +:1005B00000BD0EB540F2334102910021CDE900119A +:1005C0000A460B4600F095F803B000BD01F0004369 +:1005D00030B421F0004150EA010206D00A0DA2F524 +:1005E0006072C1F31301002A02DC30BC00207047A6 +:1005F000440F44EAC104C100E01830BC00EBC25013 +:1006000000F031B8202A04DB203A00FA02F1002081 +:1006100070479140C2F1200320FA03F31943904040 +:100620007047202A04DB203A21FA02F000217047AB +:1006300021FA02F3D040C2F120029140084319464A +:100640007047202A06DBCB17203A41FA02F043EA32 +:10065000E07306E041FA02F3D040C2F1200291407B +:100660000843194670470029A8BF7047401C49003D +:1006700008BF20F00100704710B4B0FA80FC00FA07 +:100680000CF050EA010404BF10BC704749B1CCF132 +:10069000200421FA04F411FA0CF118BF01212143BE +:1006A0000843A3EB0C01CB1D4FEA00614FEA102079 +:1006B00042BF002010BC704700EBC350104400291B +:1006C000A4BF10BC7047401C490008BF20F00100C7 +:1006D00010BC704710B5141E73F1000408DA401CFA +:1006E00041F1000192185B411A4301D120F0010051 +:1006F00010BD2DE9F04D92469B4611B1B1FA81F241 +:1007000002E0B0FA80F220329046FFF77BFF044609 +:100710000F4640EA0A0041EA0B0153465A46084395 +:1007200013D0114653EA010019D0C8F140025046D7 +:10073000FFF777FF05460E46504659464246FFF7FB +:1007400061FF084305D0012004E020463946BDE89A +:10075000F08D0020054346EAE0762C4337430A98A3 +:100760006305E40AA0EB08000022FD0A44EA4754AE +:100770000A3002D500200146E9E701051019694158 +:10078000DDE9084500196941BDE8F04DA2E7000028 +:10079000064C074D06E0E06840F0010394E80700CE +:1007A00098471034AC42F6D3FFF704FD804E0008A2 +:1007B000A04E0008464910B54A6822F440324A600B +:1007C0004A6843681A434A6001684A6822F48072A2 +:1007D0004A6001684A68036942EA03224A60016884 +:1007E0004A6822F040724A6001684A6883681A4386 +:1007F0004A6001688A6822F400628A6001688A6837 +:10080000C3681A438A60816A6FF07062D1420168DE +:100810008A6822F070628A6001688A680CD0836AF4 +:100820001A438A6001688A6822F040528A6001682F +:100830008A68C36A1A4301E022F040528A60016864 +:100840008A6822F002028A6001688A68037E42EAAE +:1008500043028A6090F82010002901684A680FD08E +:1008600042F400624A6001684A6822F460424A60C9 +:1008700001684A68174C436A04EB43331A4301E0AA +:1008800022F400624A600168CA6A22F47002CA62F5 +:100890000168CA6A838B104C04EB03531A43CA6283 +:1008A00001688A6822F400728A6001688A6890F898 +:1008B000303042EA43228A6001688A6822F480620A +:1008C0008A6001688A68406942EA8020886010BDB9 +:1008D0000023014000E0FFFF0000F0FFFEE7000002 +:1008E000014800F0FCBA000070000020014800F050 +:1008F000F6BA000070000020014800F031BD000091 +:10090000B0020020014800F02BBD0000F0010020E3 +:10091000014800F025BD000010030020014800F050 +:100920001FBD00005002002001681823CAB2103A0F +:10093000B2FBF3F2054B6FF30901032A9B5CC3651D +:1009400000D9091D8165084670470000F64500087A +:1009500010B5014600208B698A6A4FF0C07453B10C +:10096000B3F5005F15D072B1012A0CD0022A0AD06B +:10097000032A09D104E01AB1012A06D0022A03D1C0 +:10098000C96AC90100D5012010BDC96AA142FAD0C7 +:1009900010BD002AF7D0012AF2D0022AF3D0032A90 +:1009A000F3D010BD30B50468256825F48025256096 +:1009B000046863608368402B036803D09960006813 +:1009C000C26030BD9A600068C16030BD704770473A +:1009D00078B50024009490F83C20012A19D0012217 +:1009E00080F83C200A6807230568092A13D9EE68B5 +:1009F0000A3A02EB420293409E43EE600B788A680B +:100A00000A3B03EB43039A400368DD682A43DA603C +:100A100010E0022078BD2E6902EB420293409E4313 +:100A20002E610B788A6803EB43039A4003681D69C3 +:100A30002A431A614A681F23072A13D205686E6B7E +:100A4000521E02EB820293409E436E630A8893B269 +:100A50000A79521E02EB820293400268556B2B43C7 +:100A6000536327E005680D2A12D22E6BD21F02EBCA +:100A7000820293409E432E630B790A88DB1F92B259 +:100A800003EB83039A4003681D6B2A431A6311E04A +:100A9000EE6A0D3A02EB820293409E43EE620B79BE +:100AA0000A880D3B92B203EB83039A400368DD6A28 +:100AB0002A43DA621B4B0568194A9D420AD10D6828 +:100AC000122D07D1556825F400055560556845F489 +:100AD0008005556005689D421DD1134D0B68AB42E2 +:100AE00001D0112B17D1536823F48003536053684E +:100AF00043F4000353600968A9420CD10B490C4A26 +:100B00000968B1FBF2F101EB8101490000E0491EE7 +:100B100000910029FBD180F83C40002078BD000006 +:100B200000230140002001401200001000000020BE +:100B300040420F0070B504004FF0000503D0206C58 +:100B4000002610B107E0012070BD204600F01CF81F +:100B5000666484F83C60206CC00610D4206C20F4DD +:100B6000885040F0020020642046FFF723FE6664B0 +:100B7000206C20F0020040F00100206400E001251C +:100B800084F83C60284670BD00B587B00021029112 +:100B900003910491059106910068A0F18041B1F59F +:100BA000903119D10D48016841F4807101600068ED +:100BB00000F4807001900A48016841F00101016071 +:100BC000006800F001000190402002900320039093 +:100BD00002A9044800F034FD07B000BD44380240CB +:100BE000303802400000024090F82020012A07D04F +:100BF000022A05D0416A41F48021416201207047F8 +:100C0000006842690A43426100207047F0B590F8DD +:100C100020500468A468012D05D0022D03D0416A3C +:100C200041F480215DE014F0406F01D1E50055D51D +:100C3000C4F30164022C03D9416A41F4000150E07D +:100C40000125A5401D608D684FF4C0739DB1CE682D +:100C500035434E6845EAC605066803EB0417F551AF +:100C60004FF4C275076805EB04150E697E51097DC6 +:100C7000012905D009E00E88CD6845EA4655EBE725 +:100C800001684E5946F480764E511179D5795679DE +:100C900041EA056195792D0445EA062529434FF47B +:100CA000C676056806EB0416A9511178D57841EA95 +:100CB0000561957852782D0445EA022211434FF4DC +:100CC000C475026805EB04155151006803EB04116B +:100CD000425842F0010242500020F0BD416A41F406 +:100CE000001141620120F0BD10B590F82020012ACA +:100CF00007D0022A05D0416A41F4802141620120D7 +:100D000010BD3B48D0F8002242F00102C0F800229A +:100D1000D0F8002222F47C52C0F80022D0F8002241 +:100D20004B6A42EA0322C0F800220A7D02F01F0348 +:100D300001229A40D0F81C329343C0F81C32CB6990 +:100D4000B3B9D0F80C329343C0F80C328C894B689D +:100D500064F31F434C6900EBC404C4F840320C89AF +:100D60000B6864F31F434C6900EBC404C4F84432BD +:100D7000CB69012B16D1D0F80C321343C0F80C32DA +:100D80000C884B6864F31F434C6900EBC404C4F83F +:100D900040320C89CB6864F31F434C6900EBC404F8 +:100DA000C4F844328B69002BD0F804320ED01343C0 +:100DB000C0F804320B69002BD0F8143208D013436A +:100DC000C0F81432096A012904D008E09343EFE720 +:100DD0009343F5E7D0F81C121143C0F81C12D0F869 +:100DE000001221F00101C0F80012002010BD000027 +:100DF00000640040704730B590F82040012C05D0C9 +:100E0000022C03D0416A41F480215DE0046800298E +:100E100055D02469A40754D04FF4D874056804EB66 +:100E200001142D5915F00405956005682D594ED013 +:100E3000ED08556005682C5904F00204D4604FF4A5 +:100E4000DA74056804EB01142D5905F00F051561DE +:100E500005682D59C5F30725956105682C59240CA3 +:100E600054614FF4DC72046802EB0112A4581C7048 +:100E70000468A458240A5C700468A458240C9C706C +:100E80000468A258120EDA704FF4DE72046802EBA6 +:100E90000112A4581C710468A458240A5C710468E7 +:100EA000A458240C9C710468A258120EDA710068D0 +:100EB00081B1016941F020010161002030BDE46889 +:100EC000A8E7416A41F400114162012030BD6D0D77 +:100ED0001560AFE7C16841F02001C160EDE72DE981 +:100EE000F05F0546006800244669D0F804908768E2 +:100EF000D0F80CB0D0F810A0D0F81880F10748D086 +:100F0000F90714D001218160B80703D5284600F005 +:100F10000EFA0CE0780702D54FF4006407E03807BA +:100F200002D54FF4805402E0284600F0FFF9F8059E +:100F300016D529684FF480708860B80503D5284617 +:100F400000F0F7F90CE0780502D544F4005407E00E +:100F5000380502D544F4804402E0284600F0E8F960 +:100F6000F80316D529684FF480308860B80303D59C +:100F7000284600F0E0F90CE0780302D544F4004480 +:100F800007E0380302D544F4803402E0284600F03C +:100F9000D1F9300707D55FEACB6004D52968102066 +:100FA00044F40074C86070074FF0080707D55FEA83 +:100FB0000B7004D52868C760284600F05FF9B007B9 +:100FC00006D52868C068800702D0284600F058F986 +:100FD000700607D55FEACA6004D52968102044F47A +:100FE00080640861B00607D55FEA0A7004D52868F6 +:100FF0000761284600F06AF9F00606D528680069FE +:10100000800702D0284600F062F9B00308D55FEAF5 +:10101000C96005D5296810204860284600F058F9B5 +:10102000F00307D55FEA097004D5286847602846B1 +:1010300000F082F9300446D55FEA497040D5F005EA +:1010400004D55FEAC87001D044F00104B00504D5AE +:101050005FEA887001D544F00204700504D55FEAA8 +:10106000487001D544F00404300529D518F0700FFC +:1010700026D008F07000402815D006DC102809D0D2 +:1010800020280AD0302816D10AE050280ED0602837 +:1010900011D10EE044F008040DE044F010040AE021 +:1010A00044F0200407E044F0400404E044F08004ED +:1010B00001E044F480742868816921F07001816145 +:1010C000296804204860002C05D0686A20436862C3 +:1010D0002846FFF78FFEBDE8F09F70B5040003D0EF +:1010E00094F8200010B104E0012070BD204600F00B +:1010F00081F82068016821F00201016000F090FB96 +:101100000546052604E000F08BFB401B0A2811D899 +:10111000206840688007F6D42068016841F001012A +:10112000016000F07DFB05460BE000F079FB401B01 +:101130000A2806D9606A40F40030606284F82060B2 +:10114000D2E720684068C007EFD0207E01282068E1 +:1011500001683DD021F080010160607E0128206897 +:10116000016838D021F040010160A07E012820688C +:10117000016833D021F020010160E07E0128206861 +:1011800001682ED041F010010160207F0128206805 +:10119000016829D021F008010160607F01282068E2 +:1011A000016824D021F004010160D4E90201084360 +:1011B000D4E90412114308436168491E08432168B9 +:1011C000C86100206062012084F82000002070BD0A +:1011D00041F08001C0E741F04001C5E741F0200146 +:1011E000CAE721F01001CFE741F00801D4E741F050 +:1011F0000401D9E700B587B0002102910391049161 +:10120000059106910068A0F18041B1F5C8412CD14B +:101210001748016841F000710160006800F000703B +:1012200001901448016841F008010160006800F075 +:1012300008000190032002900221039105900920EB +:10124000069002A90C4800F0FBF900221146132079 +:1012500000F056FB132000F045FB0022114614203D +:1012600000F04EFB142000F03DFB07B000BD000075 +:101270004038024030380240000C02407047000005 +:1012800010B58AB004462068D0F8B001400D019036 +:101290002068A0F18041B1F5C84113D10198A0F2B6 +:1012A000012010280ED800F0BBFA0749086008ABEF +:1012B00001AA00212046FFF79EFD019808A900B26F +:1012C00002F0C8F80AB010BD200000207047704737 +:1012D0007047000070B5044690F82000012804D043 +:1012E000606A40F40020606218E0022084F8200068 +:1012F0002068016821F00101016000F091FA0546C3 +:101300000EE000BF00F08CFA401B0A2808D9606A82 +:1013100040F400306062052084F82000012070BD98 +:1013200020684068C007EDD1606270BD70477047AB +:101330007047704770477047704790F83510022922 +:1013400003D08021416501207047052180F83510C8 +:101350000068016821F00101016000207047000071 +:101360002DE9F84304464FF00009CDF8009063489A +:101370004FF41651A56D0068B0FBF1F72E6894F894 +:101380005C10082000FA01F131420FD021680A6890 +:1013900052070BD50A6822F004020A6094F85C1028 +:1013A0008840A860606D40F00100606594F85C10B2 +:1013B0004FF0010808FA01F0304208D0216849696D +:1013C000090604D5A860606D40F00200606594F8DD +:1013D0005C1004208840304208D0216809688907E1 +:1013E00004D5A860606D40F00400606594F85C105E +:1013F00010208840304218D021680968090714D5A8 +:10140000A86020680168490304D50068000308D576 +:10141000A16C07E00168C90503D4016821F0080147 +:101420000160216C09B12046884794F85C102020A7 +:101430008840304231D021680968C9062DD5A8609E +:1014400094F8350005282068016806D0490347D57F +:10145000006800031DD4616C1CE021F016010160DE +:101460002068416921F080014161206C08B9A06CBD +:1014700020B12068016821F00801016094F85C1037 +:101480003F208840A86084F8349084F83580216D2E +:101490001FE0E16B09B120468847606D00282BD022 +:1014A000606DC00714D0052084F8350020680168FD +:1014B00021F0010101600098401C0090B84203D85F +:1014C00020680068C007F6D184F8349084F835802D +:1014D000E16C002910D001B02046BDE8F043084778 +:1014E0000168C905D5D4016821F01001016084F8B4 +:1014F000349084F83580CCE7BDE8F8830000002004 +:101500002DE9F041044600F08BF906465CB1002558 +:1015100084F83450022084F835002068016821F0F6 +:10152000010101600DE00120BDE8F08100F078F9D3 +:10153000801B052805D920206065032084F835002C +:10154000F2E720680068C007F0D1226811682048DF +:101550000140D4E901031843D4E903363343184367 +:1015600063691843A3691843E3691843236A18435E +:101570000843616A042903D1D4E90B1319430843D2 +:10158000106020684069666A20F0070130460E430B +:10159000012704280CD1A06A0643E06A40B1204626 +:1015A000FFF7D6F920B14020606584F83570BAE7BE +:1015B000206846612046FFF7B7F994F85C203F2188 +:1015C00091408160656584F835700020ACE70000CB +:1015D0003F8010F070B5044690F8340000250128D3 +:1015E0000CD0012084F8340094F835600020012EDE +:1015F00006D084F834000225284670BD022070BD54 +:10160000022684F8356060652046FFF7CBF9206834 +:10161000016841F001010160EEE7000070B5044689 +:1016200000F0FEF80546601C02D00448007804442F +:1016300000F0F6F8401BA042FAD370BD0400002071 +:101640002DE9F84F00224FF0010803254FF00F0E4F +:101650000B6808FA02F42340A3426ED14E68012EB3 +:1016600005D0022E03D0112E01D0122E12D1866881 +:101670004FEA420C05FA0CF7BE43CF6807FA0CF7A5 +:10168000374387604668A6430C79C4F3001494403E +:1016900034434460C668570005FA07FC8C6826EAA4 +:1016A0000C06BC403443C4604C68022C01D0122CA0 +:1016B00013D1D40800EB8404A346D4F82090540737 +:1016C0004FEAD46A0EFA0AF629EA06090E6906FA02 +:1016D0000AF646EA0906CBF8206004680E7924EA87 +:1016E0000C0406F00306BE40264306604C68E40086 +:1016F0006FD53B4C266846F480462660246822F06D +:10170000030604F480440094364C3444A446D4F8D0 +:1017100008489607360F0EFA06F7BC43324FB84218 +:1017200001D100272EE0314FB84201D1012729E035 +:101730002F4FB84202D1022724E04AE02D4FB84291 +:1017400001D103271EE02C4FB84201D1042719E034 +:101750002A4FB84201D1052714E0294FB84201D1E0 +:1017600006270FE0274FB84201D107270AE0264F8E +:10177000B84201D1082705E0244FB84201D109271A +:1017800000E00A27B7402743CCF80878204E346899 +:101790004F689C43FF0300D51C4334601C4E361D2C +:1017A00034684F689C43BF0300D51C433460184E17 +:1017B000083634684F689C43FF0200D51C433460F0 +:1017C000134E0C3634684F689C43BF0200D51C434F +:1017D0003460521C102AFFF43BAFBDE8F88F0000C4 +:1017E0004438024000300140000002400004024042 +:1017F00000080240000C02400010024000140240A9 +:1018000000180240001C0240002002400024024058 +:10181000003C01400AB1816170470904FBE7000008 +:101820000148806870470000040000200248816879 +:101830000278114481607047040000200B4810B505 +:10184000016841F400710160016841F48061016048 +:10185000016841F480710160032000F071F80020FC +:1018600000F006F800F024F8002010BD003C024013 +:1018700070B50D4D04464FF47A712878B1FBF0F045 +:101880000A490968B1FBF0F000F03CFC48B9102CA3 +:1018900007D200222146501E00F032F800206C6072 +:1018A00070BD012070BD0000040000200000002079 +:1018B00081B00A48016841F480410160006800F489 +:1018C000804000900648016841F080510160006846 +:1018D00000F08050009001B0704700004438024092 +:1018E00040380240002809DB00F01F02012191402E +:1018F0004009800000F1E020C0F8001170470000AE +:10190000F0B40E4B1B680C46C3F30223C3F107056A +:10191000042D00D90425191D072901D2002300E058 +:10192000DB1E012606FA05F1491E214099409E4022 +:10193000761E16403143F0BC01F017BD0CED00E0FF +:10194000064900F0070208684FF6FF03184040EA16 +:101950000220034A10430860704700000CED00E0CD +:101960000000FA052DE9F0470E46050065D0DFF8C6 +:101970001481D8F80000F7B200F00F00B04207D28F +:1019800088F80070D8F8000000F00F00B04254D181 +:1019900028683D4C810712D5400703D5206840F4E4 +:1019A000E05020602878000703D5206840F46040AC +:1019B00020602068A96820F0F000084320602878A3 +:1019C000C0072DD0304968680839012812D0022894 +:1019D00013D0032811D00968890700292DDA21685E +:1019E00021F0030101432160FFF71AFF814641F214 +:1019F000883A0EE009688903EFE709688901ECE796 +:101A0000FFF70EFFA0EB0901514502D90320BDE805 +:101A1000F0872068696800F00C00B0EB810FEFD10F +:101A2000D8F80010404601F00F01B14207D9077005 +:101A3000006800F00F00B04201D00120E7E72878ED +:101A4000400705D52068E96820F4E050084320608D +:101A50002878000706D52068296920F4604040EA0C +:101A6000C100206000F038F82168084AC1F3031172 +:101A7000515CC8400649086006480068FFF7F8FE58 +:101A80000020C4E7003C024008380240DE45000860 +:101A9000000000200800002004480549006809688B +:101AA000044AC1F38221515CC84070470000002005 +:101AB00008380240EE4500080448054900680968F6 +:101AC000044AC1F34231515CC84070470000002015 +:101AD00008380240EE450008154810B5006810F0BF +:101AE0000C02144813D01449042A0FD0082A0ED12E +:101AF0000F4C241F2268236802F03F025B0207D5C7 +:101B00002068C0F38810A0FB010106E0084610BD64 +:101B10002168C1F38811A1FB00010023FEF764FBDB +:101B20002168C1F30141491C4900B0FBF1F010BD2F +:101B3000083802400024F400001BB7002DE9F84FDC +:101B400004006ED02078DFF83C93C007A9F10405AB +:101B50004AD009F104000168C1F38101012908D0CC +:101B60000068C0F3810002280AD1D9F800004002C1 +:101B700006D52868800337D560680028E1D033E0B7 +:101B80006068B0F5803F10D0B0F5A02F286810D065 +:101B900020F480302860286820F480202860606865 +:101BA000A8B1FFF73DFE06460DE0286840F48030FE +:101BB000F4E740F480202860F7E700BFFFF730FE2D +:101BC000801B642873D828688003F7D50CE0FFF7E2 +:101BD00027FE064605E000BFFFF722FE801B6428B3 +:101BE000F0D828688003F7D42078DFF89C8280073B +:101BF0004FF0000A3ED5A348001D016811F00C0FFC +:101C000008D00068C0F3810002280BD1D9F8000089 +:101C1000400207D42868800716D5E068012800D163 +:101C200012E02BE1E068B8B10120C8F80000FFF72E +:101C3000F7FD064605E000BFFFF7F2FD801B022816 +:101C4000C0D828688007F7D52868216920F0F800F7 +:101C500040EAC10028600DE0C8F800A0FFF7E0FDF1 +:101C6000064604E0FFF7DCFD801B02281FD8286829 +:101C70008007F7D42078000722D5824E8348616917 +:101C8000703671B101210160FFF7CAFD074604E01B +:101C9000FFF7C6FDC01B022809D830688007F7D5BA +:101CA0000EE0C0F800A0FFF7BBFD074605E082E0AC +:101CB000FFF7B6FDC01B02287DD830688007F7D437 +:101CC0002078400768D5DFF8BCB100270BF13C0B4A +:101CD000DBF80000C0000BD4DBF8001041F08051AD +:101CE000CBF80010DBF80000012700F080500090D6 +:101CF000674E3068C00510D4306840F480703060A2 +:101D0000FFF78EFD009005E0FFF78AFD0099401A6D +:101D1000022850D83068C005F6D55A4EA0686C36F7 +:101D200001280FD00528306810D020F00100306065 +:101D3000306820F004003060A068B8B1FFF770FD93 +:101D400000900FE0306840F00100F4E740F004003C +:101D50003060F7E7FFF764FD0099411A41F28830DF +:101D6000814266D830688007F4D50EE0FFF758FD51 +:101D7000009007E0FFF754FD0099411A41F28830C6 +:101D8000814256D830688007F4D42FB1DBF80010B8 +:101D900021F08051CBF80010A069C8B33949091D62 +:101DA0000968C1F3810102294AD00228504607D0B0 +:101DB000C8F8600000E03CE0FFF732FD04463BE07D +:101DC0004746C8F86000FFF72BFD064605E000BF58 +:101DD000FFF726FD801B02282BD828688001F7D446 +:101DE000D4E907010843A16A2A4A490802EB0141E4 +:101DF000626A41EA8211084394F82C1040EA0161BA +:101E0000C9F8001001203866FFF70AFD044606E015 +:101E100036E000BFFFF704FD001B022809D8286840 +:101E20008001F7D52CE000BFFFF7FAFC001B022869 +:101E300002D90320BDE8F88F28688001F4D41FE0A0 +:101E40000128F7D0D9F80000E26900F4800191423E +:101E500014D1226A00F03F0191420FD147F6C071C0 +:101E6000626A0140914209D1A26A00F44031914274 +:101E700004D1E16A00F07060884201D00120D9E706 +:101E80000020D7E70438024000004742800E474256 +:101E9000007000400000FFFF70B5040005D0002571 +:101EA000A56294F8510010B106E0012070BD84F8DD +:101EB0005050204600F030F8022084F8510020688D +:101EC000016821F040010160D4E901010843D4E92F +:101ED00003121143084361690843218B01F4007127 +:101EE0000843E1690843216A0843A16A084321685D +:101EF0000860A069042101EA1040616A0843216872 +:101F000048602068C16921F40061C16165650120F4 +:101F100084F85100002070BDF0B587B00024029411 +:101F200003940494059406940068A0F18041B1F5EF +:101F300098312FD11848016841F480510160006840 +:101F400000F4805001901548016841F002010160E1 +:101F5000016801F002010191016841F00101016095 +:101F6000006800F00100019008200290022603960C +:101F7000032505950527069702A90948FFF760FB89 +:101F800080200290039604940595069702A90548BF +:101F9000FFF756FB07B0F0BD44380240303802402E +:101FA00000040240000002402DE9F84F044690F87A +:101FB000500000271D461646894601280DD04FF0D7 +:101FC000010B84F850B0FFF72BFC804694F85100C9 +:101FD000BA46012804D002278EE00220BDE8F88F1F +:101FE000B9F1000F7DD0002E7BD0032084F8510082 +:101FF000C4F854A0C4F83090A686E686C4F838A089 +:10200000A4F83CA0A4F83EA0C4F844A0C4F840A0A2 +:10201000A068B0F5004F04D12068016841F4804108 +:10202000016020680168490603D4016841F040015D +:102030000160E068B0F5006F606803D030B3012E36 +:1020400024D040E008B1012E1CD1206B216800880B +:10205000C86006E020688168890709D5216B098876 +:10206000C160206B801C2063E08E401EE08609E08A +:10207000FFF7D6FBA0EB0800A84202D3681C01D0F2 +:1020800031E07DB3E08E0028E4D11FE0206B2168B1 +:102090000078087306E020688168890709D5216BFC +:1020A00009780173206B401C2063E08E401EE0869F +:1020B00009E0FFF7B5FBA0EB0800A84202D3681CBB +:1020C00001D010E075B1E08E0028E4D142462946E7 +:1020D000204600F0B9FD08B120206065A06820B15D +:1020E00007E008E0FFE7032706E02068C168806892 +:1020F0000090606D00B1012784F851B084F850A0C1 +:1021000038466BE710B5401EB0F1807F01D3012047 +:1021100010BD4FF0E02460610F21601701F025F938 +:102120000020A06107202061002010BD10B590F8AC +:102130003C20012A22D0012280F83C20CA688C6809 +:1021400022F4407222434C6822F4806222430C68DD +:1021500022F4006222430C6922F4805222434C692B +:1021600022F400522243C969002322F480420A4328 +:1021700001684A6480F83C30002010BD022010BD88 +:1021800070B590F83C20012A32D0012480F83C4000 +:10219000022280F83D2003685A689D6822F070068C +:1021A0000A6832435A60134B02689A4214D0B2F163 +:1021B000804F11D0104B9A420ED0104B9A420BD048 +:1021C0000F4B9A4208D00F4B9A4205D00E4B9A42C1 +:1021D00002D00E4B9A4204D1496825F0800319437E +:1021E000916080F83D40002180F83C10084670BDA9 +:1021F000022070BD000001400004004000080040C3 +:10220000000C004000040140004001400018004064 +:1022100000B587B0002102910391049105910691C8 +:102220000068A0F18041B1F5803113D10A480168FE +:1022300041F001010160006800F0010001904FF4DD +:1022400040700290022003900120069002A90348EA +:10225000FFF7F6F907B000BD303802400000024039 +:1022600070B5044690F83C000D4601280DD00126BB +:1022700084F83C60022084F83D0042B1042A18D062 +:10228000082A2AD00C2A4DD139E0022070BD2068DE +:1022900000F020FE2068816941F00801816120681A +:1022A000816921F004018161206881692A691143F3 +:1022B00011E0206800F03EFE2068816941F4006171 +:1022C00081612068816921F4806181612068816970 +:1022D0002A6941EA0221816124E0206800F060FE61 +:1022E0002068C16941F00801C1612068C16921F01D +:1022F0000401C1612068C1692A69114311E02068A5 +:1023000000F082FE2068C16941F40061C16120686B +:10231000C16921F48061C1612068C1692A6941EA0B +:102320000221C16184F83D60002084F83C0070BD4A +:1023300010B5040003D094F83D0010B107E001206F +:1023400010BD002084F83C00204600F00DF802206B +:1023500084F83D00211D206800F04AFD012084F82A +:102360003D00002010BD000081B00068A0F1804158 +:10237000B1F5803108D10548016841F001010160E3 +:10238000006800F00100009001B07047443802403E +:1023900010B504460068012200F08EFD0B4920684C +:1023A000884202D00A49884203D1416C41F400417D +:1023B00041642068816801F00701062903D00168A3 +:1023C00041F001010160002010BD0000000001404B +:1023D000000401407047000070B5026804461068B0 +:1023E000D168536910F00F0F52D003F0010501F4CA +:1023F00090762E435FD0C20705D0CA0503D5E26BA5 +:1024000042F00102E263420705D5DA0703D0E26B2E +:1024100042F00202E263820705D5DA0703D0E26BDD +:1024200042F00402E263020707D501F020022A43CA +:1024300003D0E26B42F00802E263E26B002A33D081 +:10244000800604D5880602D5204600F01BFE2068D1 +:102450004069E16BC0F38010090700D428B320461F +:1024600000F002FE2068416949061AD5416921F051 +:1024700040014161606BA0B11B490165606BFEF7D3 +:102480005CFF002810D0606B016DBDE8704008470C +:10249000830610D58B060ED52046BDE8704000F0AF +:1024A000F1BD2046FFF796FF70BD2046FFF792FF73 +:1024B0000020E06370BD030606D50B0604D5204658 +:1024C000BDE8704000F0BEBE4006F3D54806F1D529 +:1024D000D168204621F04001D160202184F83910D4 +:1024E00000F069F970BD00005930000870B50400B3 +:1024F00004D094F83900002510B106E0012070BD29 +:1025000084F83850204600F023F8242084F839005D +:102510002068C16821F40051C160204600F0FEFD32 +:102520002068016921F4904101612068416921F02E +:102530002A0141612068C16841F40051C160E5632E +:10254000202084F8390084F83A00002070BD000093 +:102550002DE9F04786B004460025019502950395C4 +:102560000495059520688249032202230826A0F1DC +:10257000804CBCF5F84C70D0DFF8F8C10F15A0F115 +:1025800080494FF4807A4FF04008B9F588397DD002 +:10259000A0F18049B9F58A395BD1DCF8000040F040 +:1025A0002000CCF80000DCF8000000F020000090D3 +:1025B000086840F040000860086800F040000090A3 +:1025C0004FF48440019002930492059601A96A4851 +:1025D000FFF736F86A4E694830604FF02069C6F858 +:1025E0000490B560F56037617561B561C6F81CA0EF +:1025F000356275623046FEF783FF08B1FEF7E7F9F2 +:102600006663B463604E5F483060C6F80490C6F8F5 +:102610000880F56037617561B561F5613562756295 +:102620003046FEF76DFF08B1FEF7D1F92663B463BB +:10263000002211464720FFF763F94720FFF752F9C0 +:1026400052480068016841680091C16841F010017A +:10265000C16006B0BDE8F087FFE74D48D0F800C084 +:102660004CF0004CC0F800C0006800F00040009042 +:10267000086840F010000860086800F01000009042 +:102680000192029301200390049200E010E005966D +:1026900001A94048FEF7D4FF3F480068016841683F +:1026A0000091C16841F01001C16006B0BDE8F0873B +:1026B000DCF8000040F01000CCF80000DCF800006E +:1026C00000F010000090086840F002000860086800 +:1026D00000F002000090C0200190029304920720B5 +:1026E000059001A92D48FEF7ABFF2E4E2C48306017 +:1026F0004FF00069C6F80490B560F5603761756108 +:10270000B561C6F81CA0356275623046FEF7F8FE6A +:1027100008B1FEF75CF96663B463244E224830606A +:10272000C6F80490C6F80880F56037617561B56138 +:10273000F561356275623046FEF7E2FE08B1FEF7DC +:1027400046F92663B463002211462520FFF7D8F826 +:102750002520FFF7C7F81648006801684168009116 +:10276000C16841F01001C16006B0BDE8F08700000B +:1027700030380240443802400018024028640240C9 +:10278000B0020020A064024010030020B00100202D +:102790004038024000100240300100200004024096 +:1027A00040640240F0010020B86402405002002062 +:1027B0007001002070477047FEE7000030B585B01B +:1027C0000024009401940294039414481249016077 +:1027D0004FF48031416084600461047680F82040C9 +:1027E000C4620F498162C4600125C56180F8304030 +:1027F0004561FEF79FF908B1FEF7E9F80620009061 +:102800000195029469460548FEF7E2F8002801D0D8 +:10281000FEF7DDF805B030BD0020014028000020A3 +:102820000100000F10B510480E49016003214160FE +:1028300000218160C1604FF4002202614FF4401218 +:1028400042610176012242768176C1760177417735 +:10285000FEF743FC002803D0BDE81040FEF7B7B8F0 +:1028600010BD0000006400407000002008B515484D +:10287000016841F480010160006800F4800000906C +:10288000002211463920FFF73BF83920FFF72AF8DC +:10289000002211463A20FFF733F83A20FFF722F8DA +:1028A000002211464520FFF72BF84520FFF71AF8C4 +:1028B000002211464620FFF723F8BDE808404620D5 +:1028C000FFF710B8303802402DE9F04786B00024F9 +:1028D000019402940394049405944848016841F0DB +:1028E00010010160016801F010010091016841F0E0 +:1028F00040010160016801F040010091016841F070 +:1029000002010160016801F002010091016841F0DB +:1029100001010160016801F001010091016841F0CD +:1029200008010160016801F008010091016841F0AF +:1029300080010160016801F080010091016841F0AF +:1029400020010160006800F0200000902C4E002261 +:102950004FF4C0613046FEF75DFF2A4F00223C2154 +:102960003846FEF757FFDFF8A08000224FF4FF71D2 +:102970004046FEF74FFFDFF894900022F1144846DE +:10298000FEF748FFDFF888A000224FF48041504650 +:10299000FEF740FF4FF4C0600190012502950394BB +:1029A000049401A93046FEF74BFE3C2001900295AD +:1029B0000394049401A93846FEF742FE4FF4FF70D9 +:1029C000019002950394049401A94046FEF738FE55 +:1029D000E802019002950394049401A94846FEF789 +:1029E0002FFEA803019002950394049401A9504678 +:1029F000FEF726FE06B0BDE8F08700003038024042 +:102A000000040240001C0240001802400010024076 +:102A10000014024010B511480F4901604FF4827153 +:102A200041604FF4004181600021C160016141615A +:102A30004FF4007282612822C261016241628162A8 +:102A40000A21C162FFF728FA002803D0BDE8104030 +:102A5000FDF7BDBF10BD0000003001409800002010 +:102A600010B592B000241094119409940A940B9418 +:102A70000C940D940E940F9400940194029403947A +:102A80000494059406940794254824490160A721DD +:102A90004160846042F20F71C160046144618461ED +:102AA000FFF746FC08B1FDF792FF1094119410A9AE +:102AB0001B48FFF765FB08B1FDF789FF602009900F +:102AC0004FF47A700A900B940C940D940E940F941A +:102AD000002209A91248FFF7C3FB08B1FDF777FFF1 +:102AE000042209A90E48FFF7BBFB08B1FDF76FFFF1 +:102AF000009401940294039404944FF400500590C0 +:102B0000079469460648FFF711FB08B1FDF75FFF20 +:102B10000348FFF77DFB12B010BD0000000001402C +:102B2000F000002010B50C480A4901604FF4E13173 +:102B3000416000218160C16001610C2242618161BC +:102B4000C161FFF7D3FC002803D0BDE81040FDF7BA +:102B50003EBF10BD007C00403001002010B50D4884 +:102B60000B4901600C49416000218160C1604FF454 +:102B7000806202610C2242618161C161FFF7B6FC93 +:102B8000002803D0BDE81040FDF721BF10BD0000B4 +:102B90000010014070010020A086010010B50C4813 +:102BA0000A4901604FF4E131416000218160C16058 +:102BB00001610C2242618161C161FFF797FC00282D +:102BC00003D0BDE81040FDF702BF10BD0014014066 +:102BD000B0010020FEE77047F2EE041A026880EEB2 +:102BE000211A9FED0F0A80EEA12ADFED0E1A31EEB9 +:102BF000001A72EE000AB7EE000AB0EE402A11EE9B +:102C0000212ABCEEC21A11EE101A516310EEA10A6D +:102C10000068BCEEC00A10EE101A81637047000015 +:102C2000CDCCCC3D00401C4610B500210448FFF738 +:102C3000AFFBBDE8104004210148FFF7A9BB00002D +:102C4000F00000207047000038B504461248134BCE +:102C50000068B0FBF3F04FF47A735843009060685B +:102C6000B0F5827F0DD10B460092002280212046D4 +:102C700000F016F870B1606D40F020006065032030 +:102C800038BD009830B1401E009020688068C04375 +:102C90000006F6D5002038BD0000002000366E0189 +:102CA0002DE9F0411D4617460E460446DDF8188012 +:102CB00008E0681C06D0FEF7B3FDA0EB0800A842B0 +:102CC0000BD255B12068806836EA000030D0002071 +:102CD000B842EED10020BDE8F0812068416821F0C3 +:102CE000E00141606068B0F5827F0BD1A068B0F56B +:102CF000004F02D0B0F5806F04D12068016821F048 +:102D000040010160A06AB0F5005F09D12068016848 +:102D100021F4005101602068016841F40051016014 +:102D2000012084F85100002084F850000320D2E7ED +:102D30000120CDE77047FEF779BD000030B593B0B4 +:102D40000024089409940A940B9401940294039427 +:102D5000049405941D48016841F0805101600068A9 +:102D600000F0805000901A48016841F44041016031 +:102D7000006800F440400090012006900004079095 +:102D800002250C9580010D9006200E90A8200F9032 +:102D900010950420119006A8FEF7D0FE08B1FDF7AB +:102DA00016FE0F200190029503944FF4A05004905A +:102DB0004FF480500590052101A8FEF7D3FD0028AF +:102DC00001D0FDF704FE13B030BD000040380240D2 +:102DD000007000400448016841F47001016003493B +:102DE0004FF000600860704788ED00E008ED00E0FB +:102DF000F0B50268254C264D264E274F274B4FF045 +:102E0000804CA04209D0604507D0A84205D0B0420E +:102E100003D0B84201D0984204D122F0700E4A6823 +:102E200042EA0E02A0421BD0604519D0A84217D03A +:102E3000B04215D0B84213D0984211D0184DA842D4 +:102E40000ED0184DA8420BD0174DA84208D0174DF0 +:102E5000A84205D0164DA84202D0164DA84203D173 +:102E600022F44075CA682A434D6922F080022A4341 +:102E700002608A68C2620A688262A04201D09842F7 +:102E800001D10969016301214161F0BD00000140E8 +:102E90000004004000080040000C00400004014015 +:102EA000004001400044014000480140001800403B +:102EB000001C00400020004010B501F01F0301215C +:102EC000046A99408C430462016A9A40114301628A +:102ED00010BD0000F0B5026A22F001020262036A2E +:102EE00042688469124E24F073050C682C4323F069 +:102EF00002058B682B430D4DA84201D0B04205D18D +:102F000023F00807CB683B4323F00403A84201D019 +:102F1000B04205D14D6922F4407215438A692A43B3 +:102F200042608461496841630362F0BD0000014072 +:102F300000040140F0B5026A22F010020262026A47 +:102F4000436884690D6824F4E64444EA05248D68E6 +:102F500022F0200242EA05120F4D104EA84201D085 +:102F6000B04206D1CF6822F0800242EA071222F076 +:102F70004002A84201D0B04207D14D6923F440631A +:102F800043EA85038D6943EA8503436084614968A8 +:102F900081630262F0BD00000000014000040140B6 +:102FA000F0B5026A22F480720262026A4368C46960 +:102FB00022F4007224F073050C68124E2C438D68C5 +:102FC00042EA05220E4DA84201D0B04206D1CF6898 +:102FD00022F4006242EA072222F48062A84201D071 +:102FE000B04207D14D6923F4405343EA05138D697C +:102FF00043EA05134360C4614968C1630262F0BDDE +:10300000000001400004014030B5026A22F4805201 +:103010000262046A4268C3690D6823F4E64343EA26 +:1030200005238D6824F4005444EA0534084DA84271 +:1030300002D0084DA84204D14D6922F4804242EAF0 +:1030400085124260C36149680164046230BD0000BA +:10305000000001400004014010B5806B0021C185D3 +:10306000C184FFF7B7F910BD0168CA6822F49072F5 +:10307000CA6001684A6922F001024A61202180F891 +:103080003A10704710B590F83A10222901D002206A +:1030900010BD8168B1F5805F11D001690029016818 +:1030A0001FD0496801F07F03816A4A1C82620B705D +:1030B000C18D491E0904090CC18518D02BE0026995 +:1030C000816A002A0268526805D0D2B20A80816AF9 +:1030D000491C8162ECE7C2F308020A80816A891CFC +:1030E000F7E74A68816A4B1C83620A70E0E701686F +:1030F000CA6822F02002CA600168CA6822F480729D +:10310000CA6001684A6922F001024A61202180F800 +:103110003A10FFF74FFB002010BD00002DE9F041F1 +:10312000044600680169E26821F4405111430161DD +:103130002169A068E2690843616911430843216875 +:10314000CA6849F20C639A430243CA602068416925 +:10315000A26921F4407111434161E0691927642596 +:103160003226B0F5004F354A354920684FF0000847 +:1031700006D0884201D0904236D1FEF79DFC35E062 +:10318000884201D0904202D1FEF796FC01E0FEF7A2 +:1031900083FC61684A18A0FB070148EB0803FDF7B0 +:1031A00023F80146B0FBF5F00201B1FBF5F06FF03A +:1031B0001803584301EB800006EBC000B0FBF5F0AC +:1031C00000F0F80002EB4002B1FBF5F0584301EBD0 +:1031D000800006EBC000B0FBF5F000F007002168AE +:1031E00010448860BDE8F081FEF756FC61688B0FE3 +:1031F0008A00A0FB0701FCF7F7FF0146B0FBF5F0E2 +:103200006FF01802504301EB800006EB0010B0FB9A +:10321000F5F000F0F002B1FBF5F002EB0012B1FBAB +:10322000F5F06FF01803584301EB800006EB001037 +:10323000B0FBF5F000F00F00D1E7000000140140F2 +:103240000010014090F83910212901D00220704768 +:103250008168B1F5805F016A0BD04A1C0262026886 +:1032600009785160C18C491E0904090CC1840ED033 +:1032700017E009880268C1F308015160016900295B +:10328000016A02D0491C0162ECE7891CFBE7016876 +:10329000CA6822F08002CA600068C16841F040013B +:1032A000C16000207047000038B5174D28680168DC +:1032B00011F0100F22D0C16811F0100F1ED001685C +:1032C00040680090686B0068016821F001010160AE +:1032D000686B0068406884B2202C01D100F0B8FC13 +:1032E000322C01D101F034F9696B32200968486051 +:1032F000686B0068016841F001010160BDE8384079 +:103300000148FFF769B800007001002038B5154C7E +:103310002068016811F0100F1FD0C16811F0100F64 +:103320001BD0016840680090606B0068016821F064 +:1033300001010160606B0068406880B2C0F11E004E +:1033400040B200F051FD616B1E2009684860606B5F +:103350000068016841F001010160BDE838400148A2 +:10336000FFF73AB8B0010020FEE70907090E002870 +:1033700004DB00F1E02080F80014704700F00F003B +:1033800000F1E02080F8141D704702E008C8121F09 +:1033900008C1002AFAD170477047002001E001C13E +:1033A000121F002AFBD1704790ED161A184A00EE42 +:1033B000201A9FED180A11EE101A914201DD31EE2C +:1033C000401AB5EEC01AF1EE10FA01D231EE001A31 +:1033D00090ED180AB5EEC00AF1EE10FA06DDB4EE73 +:1033E000C10AF1EE10FA01D2B0EE401A90ED190ABE +:1033F000B5EEC00AF1EE10FA06DDB4EEC10AF1EE48 +:1034000010FA01DDB0EE401A80ED161A7047000088 +:103410000000B4430000B44300B58BB0002001218C +:10342000CDE9060105900090019002900390049070 +:103430000E20CDE9081069460548FDF755FC044803 +:10344000FDF748FF02210248FDF7CEFB0BB000BD9F +:103450007000002070B51E4E0D46002404EB840160 +:1034600006EB4111098881422DD1FEF7D9F904EB11 +:10347000840106EB4114A066A06918B1012801D0AF +:1034800002281FD1288840BA2081FDF792F89FEDCD +:10349000111B53EC112BFCF79AFF9FED101B53EC03 +:1034A000112BFDF706F8FDF791F8E060688840BA47 +:1034B00000B200EE100AB8EEC00A84ED040AA88833 +:1034C00040BAA08270BD641C142CC7DB70BD000024 +:1034D0003C08002000000000008076400000000052 +:1034E00000FFBF402DE9F041454C90B0206810B975 +:1034F000FEF796F92060FEF793F92168401A0A2832 +:103500007AD3FEF78DF920603E480DAF002407C83E +:1035100087E807003C4E25464FF0080809950A95B4 +:1035200057F82420CDE90458019203958DF81850DE +:103530005FF0000101EB810006EB401043889342ED +:1035400012D1B0F804C0BCF1010F0DD190ED170AF3 +:10355000BDEEC00A10EE10CA4FEA1C2C8DF824C034 +:1035600010EE10CA8DF825C0934212D1B0F804C0F5 +:10357000BCF1020F0DD190ED170ABDEEC00A10EE9E +:1035800010CA4FEA1C2C8DF826C010EE10CA8DF818 +:1035900027C0934212D1B0F804C0BCF1030F0DD183 +:1035A00090ED170ABDEEC00A10EE10CA4FEA1C2CAF +:1035B0008DF828C010EE10CA8DF829C093420FD1A3 +:1035C0008388042B0CD190ED170ABDEEC00A10EED3 +:1035D000100A000A8DF82A0010EE100A8DF82B0050 +:1035E000491C1429A6DB012309AA01A90748FDF7F4 +:1035F0000DFB641C032C91DB10B0BDE8F0810000D2 +:1036000024000020744E00083C08002070000020B8 +:10361000FEF714F9FFF792FBFFF756F9FFF726F9CB +:10362000FFF7CCF8FFF7F6F9FFF798FAFFF7B6FACD +:10363000FFF7F8F8FFF776FAFFF712FAFFF7F4FA58 +:1036400001223C212448FEF7E5F80122D10223485B +:10365000FEF7E0F8012291032148FEF7DBF8214C48 +:10366000012211022046FEF7D5F8012280212046D2 +:10367000FEF7D0F8012240212046FEF7CBF80122C8 +:1036800020212046FEF7C6F8012210212046FEF731 +:10369000C1F8012208212046FEF7BCF801220421CE +:1036A0002046FEF7B7F8012202212046FEF7B2F8C5 +:1036B00000F090F800F04CFF00F05EFFFFF7ACFE6A +:1036C000032000F0DDFB00F087FD00F031FE00F08C +:1036D00029FFFFF707FFF6E7001C02400010024039 +:1036E00000140240001802402DE9F047002000F0CD +:1036F0002DF8DFF8549000245FF0000609EBC600B7 +:1037000000EBD400002507784FFA86F8380604EB62 +:10371000050041B201D5012200E00022404600F040 +:1037200035F878066D1C070EEDB2082DEED3761C29 +:10373000F6B2802EE2D30834E4B2402CDCD3BDE8EC +:10374000F04700F0DDB80000724A0008F0B5002133 +:103750000D4BFF260C46002201280FD003EBC205BB +:1037600080B16F5CC7F1FF076F54521CD2B2802A40 +:10377000F2D9491CC9B20829EDD3F0BD03EBC2054B +:103780006E54F2E76C54F0E77003002070B58028A7 +:1037900017D2002915DB3F2913DCCB1701EB53753A +:1037A000C5F3C70325F007050124094E491B8C40CA +:1037B00006EBC000012A05D0C15C022A05D0A14356 +:1037C000C15470BDC15C2143FAE76140F8E70000D5 +:1037D0007003002070B5494D4FF4806400222146EB +:1037E0002846FEF717F84FF4FA70FDF717FF01228D +:1037F00021462846FEF70EF80021AE2000F0B0F872 +:103800000021084600F0ACF80021102000F0A8F8D4 +:103810000021402000F0A4F80021812000F0A0F851 +:103820000021CF2000F09CF80021A12000F098F8A2 +:103830000021C82000F094F80021A62000F090F8A4 +:103840000021A82000F08CF800213F2000F088F82B +:103850000021D32000F084F80021084600F080F811 +:103860000021D52000F07CF80021802000F078F8BD +:103870000021D92000F074F80021F12000F070F848 +:103880000021DA2000F06CF80021122000F068F826 +:103890000021DB2000F064F80021402000F060F8F7 +:1038A0000021202000F05CF80021022000F058F8F0 +:1038B00000218D2000F054F80021142000F050F871 +:1038C0000021A42000F04CF80021A62000F048F8C8 +:1038D0000021AF2000F044F80021AF2000F040F8B4 +:1038E0000020FFF733FF0021084600F023F8FFF720 +:1038F000FBFEBDE8704000F003B800000004024089 +:1039000070B50B4E00242146002000F013F800256E +:1039100006EBC5000121005D00F022F86D1CEDB240 +:10392000802DF5D3641CE4B2082CECD370BD0000EC +:103930007003002010B5801CC4B2B031C8B20021A1 +:1039400000F00EF8102040EA1410002100F008F8F2 +:1039500004F0F000BDE81040002100F001B80000C4 +:1039600013B508484FF4007309B1012200E00022AA +:103970001946FDF74FFF0A23012269460248FEF768 +:1039800013FB1CBD000402409800002090F830108A +:1039900000291CD1416891ED000A80ED080A0168F8 +:1039A000D1ED000AC0ED090AD0ED070AB4EEE00A35 +:1039B000F1EE10FA06DCD0ED060AB4EEE00AF1EE04 +:1039C00010FA01D2C0ED080A012180F830107047CA +:1039D00080ED0D0A704710B5044690F830000028BD +:1039E00064D02068D0ED001AA06890ED000A70EE57 +:1039F000610A94ED0D0AB5EEC00AF1EE10FA13DD7E +:103A0000B6EE001A20EE011AF4EEC10AF1EE10FA39 +:103A100001DD70EEC00AB1EE411AF4EEC10AF1EE1A +:103A200010FA01D270EE200A94ED080A94ED041AFF +:103A300001EE200A84ED080A94ED071AB4EEC10ADB +:103A4000F1EE10FA02DD84ED081A08E094ED062A82 +:103A5000B4EEC20AF1EE10FA01D284ED082A94ED18 +:103A6000090AD4ED032A31EEC02A94ED080A02EEC9 +:103A7000A00AD4ED050A00EEC20AB4EEC01AF1EEB7 +:103A800010FA02D2B0EE410A08E0D4ED060AF4EED4 +:103A9000C00AF1EE10FA01DDB0EE600A606880ED58 +:103AA000000AC4ED091AFDF7BBFEA06210BD0000BC +:103AB00010B504462DED028B002084E80E009FED2A +:103AC000188AB0EE602AF0EE402A84F83000F0EE5A +:103AD000411ADFED120AB0EE480A204600F03EF827 +:103AE0000A20E0620021204600F01CF8B0EE611AC6 +:103AF000F0EE420AB0EE620A204600F075F8FDF7DB +:103B00008FFEE16A401AA0622046FFF73FFF84ED76 +:103B10000D8A2046BDEC028B10BD000000007F43E3 +:103B20000000000090F83020AAB190F838208A42B6 +:103B300011D090ED030AB1EE400A80ED030A90ED3A +:103B4000040AB1EE400A80ED040A90ED050AB1EED8 +:103B5000400A80ED050A80F838107047B4EEE00A9C +:103B6000F1EE10FA2BDA80ED060AC0ED070A90F8A4 +:103B70003010002923D0416891ED001AB4EEE01A0C +:103B8000F1EE10FA02DDC1ED000A06E0B4EEC01A53 +:103B9000F1EE10FA01D281ED000A90ED080AD0EDA5 +:103BA000070AB4EEE00AF1EE10FA06DCD0ED060AE0 +:103BB000B4EEE00AF1EE10FA01D2C0ED080A704747 +:103BC00010B590ED030A0446B5EEC00AF1EE10FA06 +:103BD00008D0FDF725FEA16A401AE16A884201D3A8 +:103BE000012010BD002010BDB5EEC00AF1EE10FAA4 +:103BF0002BD3F5EEC00AF1EE10FA26D3B5EEC01ABB +:103C0000F1EE10FA21D3D0ED0B1ADFED102A80ED82 +:103C1000030AB8EE612AC2EE221A81EE212A60EE72 +:103C2000A10AC0ED040A80ED052A90F83810012998 +:103C30000BD1B1EE400A80ED030AB1EE600A80EDCF +:103C4000040AB1EE420A80ED050A704700007A448A +:103C50002DE9F05F2DED028BFDF7E2FD5E49282294 +:103C600008605E4901F12800FCF7EFFADFF86CB15B +:103C70005A4CABF1140B0026BBF80000C0F30A0548 +:103C8000A5F5806525809BF80100C2089BF802001D +:103C900042EA4012C2F30A02A2F5806262809BF8F7 +:103CA0000330800940EA83009BF80430521D40EA4B +:103CB0008320C0F30A00A0F58060A0805B089BF819 +:103CC00005700A2A43EAC711C1F30A01A1F5806110 +:103CD000E18000D86680401D0A2800D8A680491DD2 +:103CE0000A2900D8E6802846FCF752FC9FED3C8B61 +:103CF00053EC182BFCF7DDFBFCF768FCA060B4F973 +:103D000002008246FCF744FC53EC182BFCF7D1FB75 +:103D1000FCF75CFCE060B4F904008146FCF738FC79 +:103D200053EC182BFCF7C5FBFCF750FC2061B4F9F1 +:103D300006008046FCF72CFC53EC182BFCF7B9FB73 +:103D4000FCF744FC6061B9092176C7F30111617683 +:103D50004FF4A56105F5257558468D4200D926809A +:103D60000AF525728A4200D9668009F525728A42D1 +:103D700000D9A68008F525728A4200D9E680C1885C +:103D800061830189A1834189E183017B84F820104B +:103D9000417B84F82110C1896184BBF810004FF485 +:103DA0002571A0F5806000B2A084884205DC404205 +:103DB000A084BDEC028BBDE8F09F4FF4257210FB90 +:103DC00002F043F6C61290FBF2F000B2A0848842E3 +:103DD000EFDDA184EDE70000100000208407002043 +:103DE0006666666666661A4070B5234D2878B5F833 +:103DF0000110A5284CBA3DD1FDF712FD1F490860FE +:103E0000B5F8050043BA042B25D00BDC012B19D0E3 +:103E100019483238022B1AD0032B2BD1E91D224628 +:103E2000001D0BE0052B1BD0A3F58073013B1CD0BC +:103E3000012B1FD11048E91D2246001FBDE870402C +:103E4000FCF703BA0C48E91D22463238F6E7E91DB3 +:103E50002246C01CF2E70848E91D22460E38EDE76D +:103E60000548E91D22460B38E8E70348E91D2246CC +:103E70000838E3E770BD00000A08002014000020A5 +:103E80002DE9F04764282DED068B01D96438C0B2C6 +:103E9000B0EE009AF6EE008A9FEDA68A032803D0C2 +:103EA000042801D005287DD1A3A1A648FCF7DFF99D +:103EB000A44C00256C3C40F20120A5612080461EE8 +:103EC00004F158031A1DA2F14C016680012701F18B +:103ED0000C00A780B0EE481AF0EE680AB0EE490A6E +:103EE0008046FFF7E5FDDFED989AF0EE690A9FED59 +:103EF00097AA4046B0EE4A0AFFF730FE94A104F5B7 +:103F00008670FCF7B4F9B01CC4F8B850A4F8A0004F +:103F100004F1F8031A1DA2F14C01A4F8A2604FF0BD +:103F2000020801F10C00A4F8A480B0EE481AF0EEEB +:103F3000680AB0EE490A8146FFF7BAFDF0EE690A59 +:103F4000B0EE4A0A4846FFF709FE84A104F5D67090 +:103F5000FCF78DF9F01CC4F85851A4F8400104F5A1 +:103F6000CC731A1DA2F14C01A4F842614FF0030971 +:103F700001F10C00A4F84491B0EE481AF0EE680A82 +:103F8000B0EE490A8246FFF793FDF0EE690AB0EE03 +:103F90004A0A5046FFF7E2FD73A104F51370FCF7DF +:103FA00066F900E0C1E0301DC4F8F851A4F8E00162 +:103FB00004F50E73A4F8E26104201A1DA4F8E401CC +:103FC000A2F14C0101F10C00B0EE481AF0EE680AC3 +:103FD000B0EE490A0546FFF76BFDF0EE690AB0EE58 +:103FE0004A0A2846FFF7BAFD62A104F56370FCF7A0 +:103FF0003EF9701DC4F83873A4F82003851FA4F897 +:104000002253A4F824739FED5F0A84EDE10A9FED2B +:104010005E0A84EDE00A9FED5D0A84EDDE0A9FED05 +:104020005C8AB0EE481ADFED5B8AF0EE680A9FED1D +:104030005A0A04F55E731A1DA2F1500101F1100035 +:104040000646FFF735FD9FED559A3046B0EE490A1A +:10405000FFF7BEFCDFED529AF0EE690A9FED51AA20 +:104060003046B0EE4A0AFFF779FD4FA104F53B70E8 +:10407000FCF7FDF8E81DC4F89872A4F88002A4F8D3 +:104080008252A4F884829FED4C0A84EDB90A9FED18 +:104090004B0A84EDB80A9FED4A0AB0EE481A84ED47 +:1040A000B60AF0EE680A9FED470A04F536731A1D4A +:1040B000A2F1500101F110000646FFF7F9FCB0EE45 +:1040C000490A3046FFF784FCF0EE690AB0EE4A0A6E +:1040D0003046FFF743FD3CA104F22C40FCF7C7F843 +:1040E00040F20720C4F8D883A4F8C00304F5836322 +:1040F0001A1DA4F8C253A2F14C01A4F8C49301F113 +:104100000C00B0EE481AF6EE000AB6EE000A0446BD +:10411000FFF7CEFCBDEC068B2046BDE8F047DFED97 +:104120002C0A9FED2C0AFFF719BDBDEC068BBDE8EC +:10413000F08700000AD7233C46524F4E545F4C454F +:1041400046540000A808002000008046000080C6F9 +:1041500046524F4E54205249474854004241434B27 +:1041600020524947485400004241434B204C4546A9 +:1041700054000000544F5552454C4C452050495472 +:1041800043480000000075430080924300007A43DA +:10419000000000000000C8420000C8430000B44313 +:1041A0000060EA460060EAC6544F5552454C4C4503 +:1041B0002059415700000000856BDD4252389A4378 +:1041C0000000504300004843464545444552000026 +:1041D00000401C4600401CC610B50E4CA06810B92B +:1041E000FDF71EFBA060FDF71BFBA168401AB0F5B0 +:1041F0007A7F07D9FDF714FBA0600748416981F475 +:104200000061416100F00AF800F07CF8BDE8104060 +:1042100000F01CB8100000200010024010B5FDF79F +:10422000FFFA08490968421A07484FF48071B2F54D +:10423000FA7F01D2002200E00122BDE81040FDF724 +:10424000E9BA0000100000200018024070B5FDF728 +:10425000E7FA2A4C2A4DD4F8E812401A642801D211 +:10426000002200E0012240212846FDF7D3FAFDF7A5 +:10427000D7FAD4F88813401A642801D2002200E04B +:10428000012220212846FDF7C5FAFDF7C9FAD4F826 +:104290000811401A642801D2002200E001221021F6 +:1042A0002846FDF7B7FAFDF7BBFAA16E401A64285D +:1042B00001D2002200E0012208212846FDF7AAFAD7 +:1042C000FDF7AEFAD4F8A811401A642801D20022F2 +:1042D00000E0012204212846FDF79CFAFDF7A0FA30 +:1042E000D4F84812401A642801D2002200E00122CA +:1042F0002846BDE870400221FDF78CBA3C0800203A +:104300000018024010B5FDF78BFA07494968411AB9 +:104310000648B1F5FA6F01D2002200E00122BDE8A3 +:1043200010408021FDF776BA1000002000180240EE +:104330002DE9F0476A4C2DED068B94ED030ADFED75 +:10434000690A6948FFF730F894ED020ADFED670A61 +:104350006548A038FFF728F8654E664B6648D6F8E2 +:104360002C234FF480419A4201DD002200E001221B +:10437000FDF750FA5C48217EE0309FED600A01298C +:1043800004D0022908D003290AD102E080ED060AF0 +:1043900006E0DFED5B0A01E0DFED5A0AC0ED060A38 +:1043A000607E012804D002287ED003280AD102E0D2 +:1043B000F0EE400A03E0F5EE000AB5EE000A5248BE +:1043C000FEF70AFCB4F92400FCF7E2F8894649EC50 +:1043D000100B05469FED4D8B51EC100B53EC182B39 +:1043E000FBF7F5FFB4F90680B4F9047041EC190B42 +:1043F000A8EB0700FCF7CCF88A464AEC100B044601 +:1044000053EC192B51EC100BFBF7DBFF9FED41AB8D +:1044100053EC1A2BFBF7DBFFFCF7D8F849EC105BE9 +:10442000B06553EC182B51EC100BFBF7D0FF41ECAF +:10443000190B08EB0700FCF7ABF8884648EC100BAB +:10444000074653EC192B51EC100BFBF719FF9FEDAE +:10445000339B53EC192BFBF7BAFFFCF7B7F849EC89 +:10446000105BC6F8F80053EC182B51EC100BFBF75F +:10447000AEFF41EC100B4AEC114B53EC102B51ECFE +:10448000110BFBF7FDFE53EC192BFBF7A0FFFCF71C +:104490009DF849EC105BC6F8980153EC182B51ECD1 +:1044A000100BFBF794FF00E015E041EC110B48EC1A +:1044B000107B53EC112B51EC100BFBF782FF53ECEC +:1044C0001A2BFBF784FFFCF781F8C6F83802BDEC25 +:1044D000068BBDE8F087F6EE000AB6EE000A6EE73E +:1044E0008407002017B751385C0B002017B751B86C +:1044F0003C080020008092430014024000000000AD +:1045000000409C4500401C46F0000020333333330C +:104510003333D33F000000000000244000000000BF +:10452000000024C070B5094E002400BF04EB8400D5 +:1045300006EB40151C352846FFF742FB10B1284614 +:10454000FFF749FA641C142CF0DB70BD3C08002016 +:10455000074882B00068016841680091C16841F075 +:104560001001C16032220349014802B000F018B8BE +:104570007001002070070020074882B000680168C1 +:1045800041680091C16841F01001C1601E220349D9 +:10459000014802B000F004B8B00100200A08002071 +:1045A00070B5044690F83A00202801D0022070BD72 +:1045B00099B192B1A162A2850020E0631346206800 +:1045C0000A46656B011D2846FDF704F8206841691D +:1045D00041F040014161002070BD012070BD00002C +:1045E00000000000000001020304060708090000A3 +:1045F0000000010203040006101600061016000059 +:1046000000000000000000000000000000003F402B +:1046100000000000000000003000400030004000BA +:10462000000009000BC03D000BC03D00090018C090 +:1046300024407FE0224031800000180024C01B008D +:104640000D803240018003801C4027401C800740C1 +:1046500000401000600000000000000000000000AA +:10466000000000001F80204040200000402020402B +:104670001F8000000000090006001F8006000900DE +:104680000000040004003F8004000400000000104B +:1046900000600000000000000000040004000400AE +:1046A00004000400000000000040000000000000C2 +:1046B0000000002001C006003800400000001F80FC +:1046C0002040204020401F800000000010403FC0DC +:1046D00000400000000018C0214022402440184043 +:1046E000000010802040244024401B800000020075 +:1046F0000D0011003FC0014000003C8024402440D8 +:104700002440238000001F80244024403440038044 +:1047100000003000200027C03800200000001B806F +:104720002440244024401B8000001C0022C0224062 +:1047300022401F8000000000000008400000000030 +:104740000000000000000460000000000000000005 +:1047500004000A00110020804040090009000900FF +:1047600009000900000000004040208011000A00FC +:1047700004001800200023402400180000001F80BF +:104780002040274029401F400000004007C039005A +:104790000F0001C0004020403FC0244024401B8047 +:1047A00000001F802040204020403080000020403A +:1047B0003FC0204020401F80000020403FC02440D8 +:1047C0002E4030C0000020403FC024402E0030006A +:1047D00000000F0010802040224033800200204063 +:1047E0003FC0040004003FC02040204020403FC0A4 +:1047F0002040204000000060202020203FC02000FA +:10480000200020403FC024400B0030C0204020400A +:104810003FC020400040004000C03FC03C0003C0FB +:104820003C003FC0000020403FC00C4023003FC080 +:1048300020001F802040204020401F80000020409A +:104840003FC024402400180000001F802140214068 +:1048500020E01FA0000020403FC02440260019C0D7 +:10486000004018C024402440224031800000300025 +:1048700020403FC020403000000020003F8000402A +:1048800000403F80200020003E0001C007003800AB +:104890002000380007C03C0007C03800000020405E +:1048A00039C0060039C0204000002000384007C051 +:1048B000384020000000304021C02640384020C051 +:1048C0000000000000007FE04020402000000000C9 +:1048D00070000C00038000400000000040204020D9 +:1048E0007FE00000000000002000400020000000E9 +:1048F0000000001000100010001000100010000058 +:1049000000004000000000000000000002800540A0 +:10491000054003C0004020003FC004400440038025 +:104920000000000003800440044006400000000036 +:104930000380044024403FC0004000000380054045 +:10494000054003400000000004401FC024402440F4 +:104950002000000002E005500550065004202040D1 +:104960003FC00440040003C000400000044027C0D2 +:1049700000400000000000100010041027E00000BC +:10498000000020403FC00140070004C00440204018 +:1049900020403FC000400040000007C0040007C0A6 +:1049A000040003C00000044007C00440040003C02A +:1049B0000040000003800440044003800000041015 +:1049C00007F004500440038000000000038004400E +:1049D000045007F00010044007C002400400040027 +:1049E0000000000006400540054004C00000000033 +:1049F00004001F80044000400000040007800040C5 +:104A0000044007C000400400070004C00180060005 +:104A10000400060001C0070001C0060000000440B9 +:104A200006C0010006C0044000000410071004E0A6 +:104A30000180060004000000044005C00640044058 +:104A400000000000000004007BE0402000000000A7 +:104A500000000000FFF000000000000040207BE0AC +:104A60000400000000004000800040002000200002 +:104A700040000000000000000000000000000000F6 +:104A80000000000000000000000000000000000026 +:104A90000000000000000000000000000000000016 +:104AA0000000000000000000000000000000000006 +:104AB00000000000000000000006000000000000F0 +:104AC000001E00000000000000DE000000000000EA +:104AD00000D800000000000000D800000000000026 +:104AE00000D800000000000000DE00000000000010 +:104AF00000FE00000000000000F6000000000000C2 +:104B00000072000000000000000000000000000033 +:104B1000007C00000000000000FE0000000000001B +:104B200000C600000000000000C6000000000000F9 +:104B300000C600000000000000FE000000000000B1 +:104B4000007C0000000000000000000000000000E9 +:104B5000001E00000000000000DE00000000000059 +:104B600000D600000000000000D600000000000099 +:104B700000D600000000000000D600000000000089 +:104B800000DE40000000000000FE60000000001099 +:104B9000006C70000000003000007800000000F0A1 +:104BA000007C7C00000007F000FE7E0000003FF06B +:104BB00000C67F000001FFF000C67F80000FFFF0FD +:104BC00000C67FC0007FFFF000FE7FE003FFFFF024 +:104BD000007C7FF03FFFFFF000027FF83FFFFFF017 +:104BE00000067FFC3FFFFFF0001E7FFE3FFFFFF04F +:104BF00000BC7FFF3FFFFFF000E07FFFBFFFFF80B3 +:104C000000F87FFFFFFFFC00003E7FFFFFFFE0009A +:104C1000000E7FFFFFFF000000B87FFFFFF80000DD +:104C200000E07FFFFFF0000000FE7FFFFFF00000CC +:104C3000001E7FFFFFF0000000027FFFFFF000007A +:104C400000007FEFFFF0020000067FE7FFF00200A8 +:104C5000000E7FE3FFF00200001C7FE1FFF803007D +:104C600000BA7FE0FFFC030000F67FE07FFE0380D8 +:104C700000E67FE03FFF038000F67FE03FFF83C058 +:104C8000003E7FE03FFFC3C0000E7FE03FFFE3E058 +:104C900000027FE03FFFF3E000007FE03FFFFBF01A +:104CA00000027FE03FFFFFF000667FE03FFFFFF87C +:104CB00000F67FE03FFFFFF800D67FE03FFFFFFCFC +:104CC00000D67FF07FFFFFFC00D67FF8FFF7FFFEE6 +:104CD00000D67FFFFFF3FFFE00DE3FFFFFE1FFFF97 +:104CE000008C3FFFFFE0FFCF00401FFFFFC07FC7EA +:104CF00080C01FFFFFC03FC380C00FFFFF801FC1E8 +:104D0000C0FE07FFFF000FC0C0FE03FFFE0007C08C +:104D100060C001FFFC0003C020C0007FF00001C0A4 +:104D20000086000F800000C0001600000000004058 +:104D300000D600000000000000D6000000000000C7 +:104D400000D600000000000000D6000000000000B7 +:104D500000D600000000000000D0000000000000AD +:104D600000C000000000000000060000000000007D +:104D7000001E00000000000000DE00000000000037 +:104D800000D800000000000000D800000000000073 +:104D900000D800000000000000DE0000000000005D +:104DA00000DE00000000000000F60000000000002F +:104DB0000072000000000000000000000000000081 +:104DC000006200000000000000F60000000000008B +:104DD00000F600000000000000D600000000000007 +:104DE00000D600000000000000D600000000000017 +:104DF00000DE000000000000008C00000000000049 +:104E000000000000000000000000000000000000A2 +:104E10000000000000000000000000000000000092 +:104E20000000000000000000000000000000000082 +:104E30000000000000000000000000000000000072 +:104E40000000000000000000000000000000000062 +:104E50000000000000000000000000000000000052 +:104E60000000000000000000000000000000000042 +:104E70000000000000020000FF010000FF0200002F +:104E8000A04E000800000020280000008A3300081F +:104E9000C84E000828000020981800009A33000827 +:104EA0000024F400010000001000000000000000D9 +:104EB00000000000000000000000000000000000F2 +:084EC0000000000000000000EA :04000005080001AD41 :00000001FF diff --git a/MDK-ARM/bin/startup_stm32f427xx._ia b/MDK-ARM/bin/startup_stm32f427xx._ia new file mode 100644 index 0000000000000000000000000000000000000000..7bf361fc7b0a8e3d6edb5a8ffe8bed2575f2b953 --- /dev/null +++ b/MDK-ARM/bin/startup_stm32f427xx._ia @@ -0,0 +1,6 @@ +--cpu Cortex-M4.fp.sp --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" +-I.\RTE\_RobotMaster_allRobots +-IC:\Users\sfaguet\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include +-IC:\Users\sfaguet\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\2.15.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include +--pd "__UVISION_VERSION SETA 532" --pd "_RTE_ SETA 1" --pd "STM32F427xx SETA 1" --pd "_RTE_ SETA 1" +--list ..\..\startup_stm32f427xx.lst --xref -o .\bin\startup_stm32f427xx.o --depend .\bin\startup_stm32f427xx.d "startup_stm32f427xx.s" \ No newline at end of file diff --git a/RobotMaster_allRobots.ioc b/RobotMaster_allRobots.ioc index bd8c7dee4f8f9742bf5a51fc9cfe935b9c9fe2b3..6331b3fe005646c0a529c6896c106f04a63997e4 100644 --- a/RobotMaster_allRobots.ioc +++ b/RobotMaster_allRobots.ioc @@ -13,6 +13,7 @@ SPI1.VirtualType=VM_MASTER Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE UART8.IPParameters=VirtualMode PG2.Signal=GPIO_Output +TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2 PE11.GPIO_Label=BOARD_LED_RED USART1.BaudRate=100000 PG8.Signal=GPIO_Output @@ -32,8 +33,10 @@ RCC.RTCFreq_Value=32000 PA6.GPIO_Label=OLED_Analog PB6.GPIO_Label=ReceiverRC_TX PD0.Locked=true +TIM1.Pulse-PWM\ Generation1\ CH1=1000 PH5.GPIO_Label=BOARD_POWER4_CTRL PG14.GPIOParameters=GPIO_Label +SH.S_TIM1_CH1.ConfNb=1 USART1.IPParameters=VirtualMode,BaudRate,Parity,Mode PG5.GPIO_Label=BOARD_LED_D PG2.GPIOParameters=GPIO_Label @@ -54,6 +57,7 @@ Mcu.IP0=ADC1 Mcu.IP1=CAN1 PH4.GPIOParameters=GPIO_Label PH5.Signal=GPIO_Output +TIM1.Prescaler=167 Mcu.UserConstants= PH3.Locked=true Dma.USART6_TX.3.Priority=DMA_PRIORITY_LOW @@ -62,7 +66,7 @@ Mcu.ThirdPartyNb=0 SPI1.Direction=SPI_DIRECTION_1LINE PH0/OSC_IN.Mode=HSE-External-Oscillator RCC.HCLKFreq_Value=168000000 -Mcu.IPNb=10 +Mcu.IPNb=11 RCC.I2SClocksFreq_Value=192000000 ProjectManager.PreviousToolchain= RCC.APB2TimFreq_Value=168000000 @@ -95,6 +99,7 @@ RCC.HSE_VALUE=12000000 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false PB3.Mode=Simplex_Bidirectional_Master +Mcu.IP10=USART6 PD1.GPIOParameters=GPIO_Label NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true PD1.GPIO_Label=CAN1_TX @@ -106,12 +111,14 @@ MxDb.Version=DB.6.0.0 PE0.GPIOParameters=GPIO_Label ProjectManager.BackupPrevious=false RCC.VCOInputFreq_Value=2000000 +TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 PA14.Mode=Serial_Wire File.Version=6 PG4.GPIO_Label=BOARD_LED_E PB3.GPIOParameters=GPIO_Label PH3.GPIOParameters=GPIO_Label PB7.Signal=USART1_RX +PA8.Signal=S_TIM1_CH1 PE1.Locked=true NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false SH.ADCx_IN6.ConfNb=1 @@ -132,6 +139,7 @@ PA6.Signal=ADCx_IN6 NVIC.DMA2_Stream7_IRQn=true\:0\:0\:false\:false\:true\:false\:true PA7.Locked=true PG5.GPIOParameters=GPIO_Label +TIM1.Pulse-PWM\ Generation2\ CH2=1000 USART6.VirtualMode=VM_ASYNC ProjectManager.ToolChainLocation= RCC.LSI_VALUE=32000 @@ -152,6 +160,7 @@ Dma.Request3=USART6_TX NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false Dma.USART1_RX.0.Mode=DMA_CIRCULAR Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW +TIM1.Period=9999 PB10.GPIOParameters=GPIO_Label NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true Dma.Request0=USART1_RX @@ -174,7 +183,7 @@ PG7.Signal=GPIO_Output PA7.Mode=Simplex_Bidirectional_Master Dma.USART1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE PB9.GPIO_Label=OLED_DC -Mcu.PinsNb=32 +Mcu.PinsNb=34 ProjectManager.NoMain=false SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler PG3.Signal=GPIO_Output @@ -207,6 +216,7 @@ NVIC.USART6_IRQn=true\:0\:0\:false\:false\:true\:true\:true PB9.GPIOParameters=GPIO_Label PG8.GPIO_Label=BOARD_LED_A PA13.Signal=SYS_JTMS-SWDIO +SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 PH4.Signal=GPIO_Output CAN1.BS2=CAN_BS2_4TQ Dma.USART6_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode @@ -217,7 +227,9 @@ PB10.GPIO_Label=OLED_RST Dma.USART6_RX.2.MemInc=DMA_MINC_ENABLE PB7.GPIOParameters=GPIO_Label Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY +PA9.Signal=S_TIM1_CH2 USART1.Parity=PARITY_EVEN +TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 RCC.VcooutputI2SQ=192000000 PB9.Locked=true Dma.USART6_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE @@ -229,6 +241,7 @@ NVIC.DMA2_Stream6_IRQn=true\:0\:0\:false\:false\:true\:false\:true PE11.Signal=GPIO_Output RCC.LSE_VALUE=32768 Dma.USART1_RX.0.PeriphInc=DMA_PINC_DISABLE +SH.S_TIM1_CH2.ConfNb=1 CAN1.ABOM=ENABLE PB10.Signal=GPIO_Output RCC.VCOI2SOutputFreq_Value=384000000 @@ -253,13 +266,16 @@ RCC.APB2Freq_Value=84000000 MxCube.Version=6.0.1 USART1.Mode=MODE_TX_RX PG4.GPIOParameters=GPIO_Label +SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 SPI1.Mode=SPI_MODE_MASTER PG7.GPIO_Label=BOARD_LED_B -Mcu.Pin30=PB10 +Mcu.Pin30=PA7 VP_SYS_VS_Systick.Mode=SysTick RCC.EthernetFreq_Value=168000000 +Mcu.Pin33=VP_SYS_VS_Systick Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE -Mcu.Pin31=VP_SYS_VS_Systick +Mcu.Pin31=PF14 +Mcu.Pin32=PB10 NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false PF14.Locked=true PA13.Mode=Serial_Wire @@ -271,28 +287,28 @@ ProjectManager.AskForMigrate=true Mcu.Name=STM32F427I(G-I)Hx PE0.Signal=UART8_RX PD0.Mode=Master -Mcu.Pin26=PA6 -Mcu.Pin27=PE11 +Mcu.Pin26=PG2 +Mcu.Pin27=PG1 RCC.RTCHSEDivFreq_Value=6000000 -Mcu.Pin24=PG2 +Mcu.Pin24=PG4 ProjectManager.UnderRoot=false -Mcu.Pin25=PG1 -Mcu.IP8=USART1 -Mcu.IP9=USART6 -Mcu.Pin28=PA7 +Mcu.Pin25=PG3 +Mcu.IP8=UART8 +Mcu.IP9=USART1 +Mcu.Pin28=PA6 Mcu.IP6=SYS -Mcu.Pin29=PF14 -Mcu.IP7=UART8 +Mcu.Pin29=PE11 +Mcu.IP7=TIM1 ProjectManager.CoupleFile=true RCC.48MHZClocksFreq_Value=84000000 PB3.Signal=SPI1_SCK RCC.SYSCLKFreq_VALUE=168000000 -Mcu.Pin22=PG4 -Mcu.Pin23=PG3 -Mcu.Pin20=PG6 +Mcu.Pin22=PG6 +Mcu.Pin23=PG5 +Mcu.Pin20=PH5 PA7.GPIO_Label=OLED_MOSI ADC1.master=1 -Mcu.Pin21=PG5 +Mcu.Pin21=PG7 NVIC.ForceEnableDMAVector=true KeepUserPlacement=false Dma.USART1_TX.1.Mode=DMA_NORMAL @@ -302,27 +318,27 @@ ProjectManager.CompilerOptimize=6 PB7.Mode=Asynchronous PA14.Signal=SYS_JTCK-SWCLK ProjectManager.HeapSize=0x200 -Mcu.Pin15=PH1/OSC_OUT +Mcu.Pin15=PH0/OSC_IN Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -Mcu.Pin16=PH4 +Mcu.Pin16=PH3 PH5.Locked=true -Mcu.Pin13=PH0/OSC_IN -Mcu.Pin14=PH3 +Mcu.Pin13=PH2 +Mcu.Pin14=PA8 Dma.USART6_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE -Mcu.Pin19=PG7 +Mcu.Pin19=PG8 Dma.USART6_TX.3.Instance=DMA2_Stream6 ProjectManager.ComputerToolchain=false -Mcu.Pin17=PG8 +Mcu.Pin17=PH1/OSC_OUT RCC.HSI_VALUE=16000000 -Mcu.Pin18=PH5 +Mcu.Pin18=PH4 PH2.Locked=true NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 ADC1.NbrOfConversionFlag=1 Mcu.Pin11=PD1 PH3.Signal=GPIO_Output PD0.GPIOParameters=GPIO_Label -Mcu.Pin12=PH2 +Mcu.Pin12=PA9 RCC.PLLM=6 RCC.PLLN=168 Mcu.Pin10=PG9 diff --git a/Src/BoardA_handle.c b/Src/BoardA_handle.c index cdbec47ece7c5d631da39872003f5c2b23a6dd9c..e478e9b212c0a571127b6d6a3d7d417f159499cd 100644 --- a/Src/BoardA_handle.c +++ b/Src/BoardA_handle.c @@ -58,11 +58,36 @@ void signOfLife_refereeSystem(){ /* Gère le signe de vie, LED C: Si on recoit des données sur le bus CAN1 */ void signOfLife_can1(){ - if ((HAL_GetTick() - signOfLife_CAN1_tick) < 100){ + if ((HAL_GetTick() - motors[TOURELLE_YAW].signOfLife_tick) < 100){ BOARD_LED_C_ON(); }else{ BOARD_LED_C_OFF(); } + if ((HAL_GetTick() - motors[TOURELLE_PITCH].signOfLife_tick) < 100){ + BOARD_LED_D_ON(); + }else{ + BOARD_LED_D_OFF(); + } + if ((HAL_GetTick() - motors[FRONT_RIGHT].signOfLife_tick) < 100){ + BOARD_LED_E_ON(); + }else{ + BOARD_LED_E_OFF(); + } + if ((HAL_GetTick() - motors[FRONT_LEFT].signOfLife_tick) < 100){ + BOARD_LED_F_ON(); + }else{ + BOARD_LED_F_OFF(); + } + if ((HAL_GetTick() - motors[BACK_RIGHT].signOfLife_tick) < 100){ + BOARD_LED_G_ON(); + }else{ + BOARD_LED_G_OFF(); + } + if ((HAL_GetTick() - motors[BACK_LEFT].signOfLife_tick) < 100){ + BOARD_LED_H_ON(); + }else{ + BOARD_LED_H_OFF(); + } } /* Permet d'afficher ce que l'on souhaite debuger sur l'uart diff --git a/Src/main.c b/Src/main.c index 31d211d71b3faf0c629449061b25eca592e4a307..97d7549d8614c59e4f7bd357413917aa843ad952 100644 --- a/Src/main.c +++ b/Src/main.c @@ -23,13 +23,13 @@ #include "can.h" #include "dma.h" #include "spi.h" +#include "tim.h" #include "usart.h" #include "gpio.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "main.h" -#include "traitement.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -97,7 +97,10 @@ int main(void) MX_USART6_UART_Init(); MX_CAN1_Init(); MX_UART8_Init(); + MX_TIM1_Init(); /* USER CODE BEGIN 2 */ + PWM_init(); + //PWM_ScaleAll(&htim1); //etalonnage du PWM entre 0 et 1 (a faire uniquement lors de l'installation des moteurs la 1ere fois) info: motors.c HAL_GPIO_WritePin(GPIOH, BOARD_POWER1_CTRL_Pin|BOARD_POWER2_CTRL_Pin|BOARD_POWER3_CTRL_Pin|BOARD_POWER4_CTRL_Pin, GPIO_PIN_SET); // switch on 24v power BOARD_LED_ALL_OFF oled_init(); @@ -105,6 +108,7 @@ int main(void) uart6_init(); can1_init(); robotInit(3); //Initialise le robot comme un standard, l'objectif c'est que l'initialisation de fasse par le referee system + extern motor_t motors[MAX_MOTORS]; /* USER CODE END 2 */ @@ -118,6 +122,7 @@ int main(void) traitement_1(); //Calcul les consignes des moteurs traitement_pids_compute(); //Calcul les commandes des moteurs can_send_command(); //Envoie des commandes des moteurs + /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ diff --git a/Src/motors.c b/Src/motors.c index 196c6e0d24dd3d525c333205bc371f7725c96756..1cbee49d8d0751fa48537ab2f9f24cdca29e0d22 100644 --- a/Src/motors.c +++ b/Src/motors.c @@ -17,6 +17,7 @@ void can_send_command(){ if((HAL_GetTick() - tickstart) < 10){ return; } + tickstart = HAL_GetTick(); int32_t trams[3] = {0x200, 0x1FF, 0x2FF}; for(int i = 0 ; i < 3 ; i++){ @@ -74,9 +75,8 @@ void can_motors_callback_handler(int16_t rx_id, uint8_t* rx_buff){ } /* Modifie la consigne tout en vérifiant les limites de postion */ -void add_consigne_position(motor_t* motor, float value){ - float consigne_position = motor->consigne; - consigne_position += value; +void add_consigne_position(motor_t* motor, float value, float coeff){ + float consigne_position = motor->consigne + (value * coeff); if(consigne_position > 360) consigne_position -= (float) 360.0; if(consigne_position < 0) consigne_position += (float) 360.0; if(motor->MAX_POSITION > 0 && consigne_position > motor->MAX_POSITION) consigne_position = motor->MAX_POSITION; @@ -103,3 +103,49 @@ void can1_init(){ HAL_CAN_Start(&hcan1); // start can HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING); // enable can rx interrupt } + + + + + +/* Initialise le TIMER 1 pour les PWM */ +void PWM_init(void) +{ + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); // start pwm output + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); +} + +/* Set le duty cycle de tous les channels PWM */ +void PWM_SetAllDuty(TIM_HandleTypeDef *tim, float duty_ch1, float duty_ch2){ + duty_ch1 = duty_ch1/10 + 0.10f; //rescale before send + duty_ch2 = duty_ch2/10 + 0.10f; + tim->Instance->CCR1 = (10000*duty_ch1) - 1; + tim->Instance->CCR2 = (10000*duty_ch2) - 1; +} + +/* scales all PWM duty cycles between 0 and 1 +Cette fonction permet d'étalonner le snail pour que ca commande 0 = min, et 1 = max + +Pour utiliser cette fonction, il faut le faire moteur PWM par moteur PWM + 1- Débrancher l'alimentation de tous les moteurs PWM + 2- Brancher l'alimentation du moteur PWM a étalonner sur la sortie XT30 de la BOARD A - POWER 1 + 2- Envoyer sur la board A grâce au ST LINK un programe avec cette fonction appelé dans le main.c, avant la boucle infinie + 3- Brancher l'alimentation 24V de la board A, le programme va se lancer : + a) va couper l'alimentation 24V du snail + b) Met l'impulsion PWM au max + c) Attends, allume le snail, attends + d) Coupe tous le signal PWM + +*/ +void PWM_ScaleAll(TIM_HandleTypeDef *tim){ //il faudrait jouer sur l'allumage des ports d'alimentation des snails (voir Nathan pour plus de détails) + HAL_GPIO_WritePin(GPIOH, BOARD_POWER1_CTRL_Pin, GPIO_PIN_RESET); // switch off 24v power + PWM_SetAllDuty(&htim1,1,1); + HAL_Delay(10); + + HAL_GPIO_WritePin(GPIOH, BOARD_POWER1_CTRL_Pin, GPIO_PIN_SET); // switch on 24v power + HAL_Delay(3500); + + PWM_SetAllDuty(&htim1,0,0); + HAL_Delay(500); + while(1); +} diff --git a/Src/robot_configuration.c b/Src/robot_configuration.c index 5944e8c7d22356148abb596d0307fc432e484377..1f8b2f7f12fd43bb6a6b2d92511c18ce47b0afb2 100644 --- a/Src/robot_configuration.c +++ b/Src/robot_configuration.c @@ -53,6 +53,9 @@ void robotInit(uint8_t robot_id){ 109: Blue Radar Station. */ if(robot_id > 100) robot_id -= 100; + float pid_chassis_p = 2; + float pid_chassis_i = 0.5; + float pid_chassis_d = 0.01; switch(robot_id){ /* Standard */ case 3: @@ -67,8 +70,9 @@ void robotInit(uint8_t robot_id){ &motors[FRONT_LEFT].info.speed, //input : le retour sur la quelle ont veut atteintre la consigne &motors[FRONT_LEFT].command, //output: la commande que l'on envoie au moteur &motors[FRONT_LEFT].consigne, //consigne: On veut que le moteur soit à cette position ou tourne a cette vitesse - 1, 0.5, 0); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ + pid_chassis_p, pid_chassis_i, pid_chassis_d); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ pid_limits(&motors[FRONT_LEFT].pid, -16384, 16384); //Minimum et maximum de la commande envoyable au moteur + strcpy(motors[FRONT_RIGHT].debug_name, "FRONT RIGHT"); motors[FRONT_RIGHT].type = M3508; @@ -79,9 +83,9 @@ void robotInit(uint8_t robot_id){ &motors[FRONT_RIGHT].info.speed, //input : le retour sur la quelle ont veut atteintre la consigne &motors[FRONT_RIGHT].command, //output: la commande que l'on envoie au moteur &motors[FRONT_RIGHT].consigne, //consigne: On veut que le moteur soit à cette position ou tourne a cette vitesse - 1, 0.5, 0); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ + pid_chassis_p, pid_chassis_i, pid_chassis_d); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ pid_limits(&motors[FRONT_RIGHT].pid, -16384, 16384); //Minimum et maximum de la commande envoyable au moteur - + strcpy(motors[BACK_RIGHT].debug_name, "BACK RIGHT"); motors[BACK_RIGHT].type = M3508; motors[BACK_RIGHT].can_rx_id = 0x200+3; // ID = 3 @@ -91,9 +95,9 @@ void robotInit(uint8_t robot_id){ &motors[BACK_RIGHT].info.speed, //input : le retour sur la quelle ont veut atteintre la consigne &motors[BACK_RIGHT].command, //output: la commande que l'on envoie au moteur &motors[BACK_RIGHT].consigne, //consigne: On veut que le moteur soit à cette position ou tourne a cette vitesse - 1, 0.5, 0); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ + pid_chassis_p, pid_chassis_i, pid_chassis_d); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ pid_limits(&motors[BACK_RIGHT].pid, -16384, 16384); //Minimum et maximum de la commande envoyable au moteur - + strcpy(motors[BACK_LEFT].debug_name, "BACK LEFT"); motors[BACK_LEFT].type = M3508; motors[BACK_LEFT].can_rx_id = 0x200+4; // ID = 4 @@ -103,7 +107,7 @@ void robotInit(uint8_t robot_id){ &motors[BACK_LEFT].info.speed, //input : le retour sur la quelle ont veut atteintre la consigne &motors[BACK_LEFT].command, //output: la commande que l'on envoie au moteur &motors[BACK_LEFT].consigne, //consigne: On veut que le moteur soit à cette position ou tourne a cette vitesse - 1, 0.5, 0); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ + pid_chassis_p, pid_chassis_i, pid_chassis_d); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ pid_limits(&motors[BACK_LEFT].pid, -16384, 16384); //Minimum et maximum de la commande envoyable au moteur strcpy(motors[TOURELLE_PITCH].debug_name, "TOURELLE PITCH"); @@ -111,17 +115,17 @@ void robotInit(uint8_t robot_id){ motors[TOURELLE_PITCH].can_rx_id = 0x204+1; // ID = 1 motors[TOURELLE_PITCH].can_tx_frame = 0x1FF; motors[TOURELLE_PITCH].can_tx_id = 1; - motors[TOURELLE_PITCH].MIN_POSITION = 244.58; //en deg - motors[TOURELLE_PITCH].MAX_POSITION = 292.37; //en deg - motors[TOURELLE_PITCH].consigne = 272.49; //en deg //Valeur initiale + motors[TOURELLE_PITCH].MIN_POSITION = 245; //en deg + motors[TOURELLE_PITCH].MAX_POSITION = 293; //en deg + motors[TOURELLE_PITCH].consigne = 250; //en deg //Valeur initiale pid_create(&motors[TOURELLE_PITCH].pid, &motors[TOURELLE_PITCH].info.angle_360, //input : le retour sur la quelle ont veut atteintre la consigne &motors[TOURELLE_PITCH].command, //output: la commande que l'on envoie au moteur &motors[TOURELLE_PITCH].consigne, //consigne: On veut que le moteur soit à cette position ou tourne a cette vitesse - 200, 100, 0); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ + 400, 100, 0); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ pid_circulaire(&motors[TOURELLE_PITCH].pid, 360); //Asservissement circulaire, permet, comme on fait une régulation en position, quand on est a position = 350 degrée, que la consigne est à 10deg, de ne pas faire tout le tour pid_limits(&motors[TOURELLE_PITCH].pid, -30000, 30000); //Minimum et maximum de la commande envoyable au moteur - + strcpy(motors[TOURELLE_YAW].debug_name, "TOURELLE YAW"); motors[TOURELLE_YAW].type = GM6020; motors[TOURELLE_YAW].can_rx_id = 0x204+2; // ID = 2 @@ -129,7 +133,7 @@ void robotInit(uint8_t robot_id){ motors[TOURELLE_YAW].can_tx_id = 2; motors[TOURELLE_YAW].MIN_POSITION = 110.71; //en deg motors[TOURELLE_YAW].MAX_POSITION = 308.44; //en deg - motors[TOURELLE_YAW].consigne = 208.76; //en deg //Valeur initiale + motors[TOURELLE_YAW].consigne = 208; //en deg //Valeur initiale pid_create(&motors[TOURELLE_YAW].pid, &motors[TOURELLE_YAW].info.angle_360, //input : le retour sur la quelle ont veut atteintre la consigne &motors[TOURELLE_YAW].command, //output: la commande que l'on envoie au moteur @@ -137,7 +141,7 @@ void robotInit(uint8_t robot_id){ 200, 100, 0); //k, i, d : les coefficient de régulation : http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/ pid_circulaire(&motors[TOURELLE_YAW].pid, 360); //Asservissement circulaire, permet, comme on fait une régulation en position, quand on est a position = 350 degrée, que la consigne est à 10deg, de ne pas faire tout le tour pid_limits(&motors[TOURELLE_YAW].pid, -30000, 30000); //Minimum et maximum de la commande envoyable au moteur - + strcpy(motors[FEEDER].debug_name, "FEEDER"); motors[FEEDER].type = M2006; motors[FEEDER].can_rx_id = 0x200+7; // ID = 7 diff --git a/Src/tim.c b/Src/tim.c new file mode 100644 index 0000000000000000000000000000000000000000..f3aa9079fe1ffc0210ad177031a07073b502fc6c --- /dev/null +++ b/Src/tim.c @@ -0,0 +1,147 @@ +/** + ****************************************************************************** + * File Name : TIM.c + * Description : This file provides code for the configuration + * of the TIM instances. + ****************************************************************************** + * @attention + * + * <h2><center>© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.</center></h2> + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "tim.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +TIM_HandleTypeDef htim1; + +/* TIM1 init function */ +void MX_TIM1_Init(void) +{ + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_OC_InitTypeDef sConfigOC = {0}; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; + + htim1.Instance = TIM1; + htim1.Init.Prescaler = 167; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 9999; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = 1000; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) + { + Error_Handler(); + } + HAL_TIM_MspPostInit(&htim1); + +} + +void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle) +{ + + if(tim_pwmHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* TIM1 clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + /* USER CODE BEGIN TIM1_MspInit 1 */ + + /* USER CODE END TIM1_MspInit 1 */ + } +} +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(timHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspPostInit 0 */ + + /* USER CODE END TIM1_MspPostInit 0 */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM1 GPIO Configuration + PA9 ------> TIM1_CH2 + PA8 ------> TIM1_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_8; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM1_MspPostInit 1 */ + + /* USER CODE END TIM1_MspPostInit 1 */ + } + +} + +void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle) +{ + + if(tim_pwmHandle->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspDeInit 0 */ + + /* USER CODE END TIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM1_CLK_DISABLE(); + /* USER CODE BEGIN TIM1_MspDeInit 1 */ + + /* USER CODE END TIM1_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Src/traitement.c b/Src/traitement.c index f4d0f0912eb4cff5e6950bd7ef4372e9916099a3..7b218bc65c55bf7f27cd24bf158bb0cf391bcb76 100644 --- a/Src/traitement.c +++ b/Src/traitement.c @@ -6,7 +6,7 @@ #include "traitement.h" -#define MAX_BASE_SPEED_COEFF 6 +#define MAX_BASE_SPEED_COEFF 10 /* On récupère les variables exterieurs */ extern receiver_RadioController_t receiver_RadioController; @@ -24,9 +24,16 @@ void traitement_pids_compute(){ /* Fonctions qui fait les liens entre les entrées (capteurs, radio controller, CV, ...) et les sorties (consignes moteurs), on peut créer plusieurs traitements */ void traitement_1(){ - add_consigne_position(&motors[TOURELLE_PITCH], (float)receiver_RadioController.data.ch2_float/15); - add_consigne_position(&motors[TOURELLE_YAW], (float)receiver_RadioController.data.ch1_float/15); - + add_consigne_position(&motors[TOURELLE_PITCH], (float)receiver_RadioController.data.ch2_float, 0.00005); + add_consigne_position(&motors[TOURELLE_YAW], (float)receiver_RadioController.data.ch1_float, -0.00005); + + if(motors[TOURELLE_PITCH].info.angle_360 > 293){ + BOARD_LED_GREEN_ON(); + }else{ + BOARD_LED_GREEN_OFF(); + } + + switch(receiver_RadioController.data.sw1){ case 1: motors[FEEDER].consigne = 0; @@ -38,9 +45,21 @@ void traitement_1(){ motors[FEEDER].consigne = 10000; break; } + switch(receiver_RadioController.data.sw2){ + case 1: + PWM_SetAllDuty(&htim1, 0.0, 0.0); + break; + case 3: + PWM_SetAllDuty(&htim1, 0.25, 0.25); + break; + case 2: + PWM_SetAllDuty(&htim1, 0.50, 0.50); + break; + } + - motors[FRONT_LEFT].consigne = MAX_BASE_SPEED_COEFF*(+ receiver_RadioController.data.ch3 + receiver_RadioController.data.ch4); - motors[FRONT_RIGHT].consigne = MAX_BASE_SPEED_COEFF*(+ receiver_RadioController.data.ch3 - receiver_RadioController.data.ch4); - motors[BACK_RIGHT].consigne = motors[FRONT_LEFT].consigne; - motors[BACK_LEFT].consigne = motors[FRONT_RIGHT].consigne; + motors[FRONT_LEFT].consigne = MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 - receiver_RadioController.data.ch3 - 0.3*receiver_RadioController.data.wheel); + motors[FRONT_RIGHT].consigne = -MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 + receiver_RadioController.data.ch3 + 0.3*receiver_RadioController.data.wheel); + motors[BACK_RIGHT].consigne = -MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 - receiver_RadioController.data.ch3 + 0.3*receiver_RadioController.data.wheel); + motors[BACK_LEFT].consigne = MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 + receiver_RadioController.data.ch3 - 0.3*receiver_RadioController.data.wheel); }