From 74cdab3021713589b2dcc603f231fde30140d07c Mon Sep 17 00:00:00 2001 From: hjjeon0608 Date: Mon, 27 Jul 2015 10:02:03 +0900 Subject: [PATCH 01/19] Change I2C using GPIO. --- .../TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c | 846 +++++++----------- .../TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.h | 219 +---- .../TARGET_WIZwiki_W7500/PeripheralPins.c | 6 + .../TARGET_WIZwiki_W7500/objects.h | 4 +- .../hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c | 342 +++---- 5 files changed, 445 insertions(+), 972 deletions(-) diff --git a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c index e2d2750a55..91f03f3786 100644 --- a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c +++ b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c @@ -1,589 +1,353 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2015 WIZnet Co.,Ltd. All rights reserved. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of ARM Limited nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ +/*include -------------------------------------*/ +#include #include "W7500x.h" -/** @defgroup I2C_Private_Functions - * @{ - */ - GPIO_InitTypeDef GPIO_InitDef; -void i2c_loop_us(int us); -#define SCL GPIO_Pin_9 -#define SDA GPIO_Pin_10 -uint16_t buf[] ={0x00,0x01}; - -/** - * @brief Initializes the I2Cx peripheral according to the specified - * parameters in the I2C_InitStruct. - * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. - * @param I2C_InitStruct: pointer to a I2C_InitTypeDef structure that - * contains the configuration information for the specified I2C peripheral. - * @retval None - */ - -uint32_t I2C_Init(I2C_TypeDef* I2Cx, I2C_ConfigStruct conf) +uint32_t I2C_Init(I2C_ConfigStruct* conf) { - uint32_t mode; - uint8_t prescale; - uint16_t timeout; - uint16_t slave_address; + uint32_t scl_port_num; + uint32_t scl_pin_index; + uint32_t sda_port_num; + uint32_t sda_pin_index; + scl_port_num = I2C_PORT(conf->scl); + scl_pin_index = I2C_PIN_INDEX(conf->scl); - mode = conf.mode; - slave_address = conf.slave_address; - if(mode == I2C_Master) - { - prescale = conf.master.prescale; - timeout = conf.master.timeout; + sda_port_num = I2C_PORT(conf->sda); + sda_pin_index = I2C_PIN_INDEX(conf->sda); + + //SCL setting + GPIO_InitDef.GPIO_Pin = scl_pin_index; + GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; - I2C_CoreEn(I2Cx,ENABLE); - I2C_MasterSlave(I2Cx,ENABLE); - - I2C_Prescale(I2Cx,prescale); // 0x61 //When PLL clk is 20MHz and Prescale value set 0x61, SCL is 100KHz - I2C_TimeoutSet(I2Cx,timeout); // 0xFFFF - - I2C_CoreEn(I2Cx,DISABLE); - } - else if(conf.mode == I2C_Slave) + if(scl_port_num == 0) { - I2C_AcknowledgeConfig(I2Cx,ENABLE); - I2C_SetSlavAddress(I2Cx,slave_address); + HAL_GPIO_Init(GPIOA, &GPIO_InitDef); + HAL_GPIO_SetBits(GPIOA, scl_pin_index); + } + else if(scl_port_num == 1) + { + HAL_GPIO_Init(GPIOB, &GPIO_InitDef); + HAL_GPIO_SetBits(GPIOB, scl_pin_index); + } + else if(scl_port_num == 2) + { + HAL_GPIO_Init(GPIOC, &GPIO_InitDef); + HAL_GPIO_SetBits(GPIOC, scl_pin_index); + } + else if(scl_port_num == 3) + { + HAL_GPIO_Init(GPIOD, &GPIO_InitDef); + HAL_GPIO_SetBits(GPIOD, scl_pin_index); } else - return ERROR; + { + printf("SCL pin Port number error\r\n"); + return 1; + } + + //SDA setting + GPIO_InitDef.GPIO_Pin = sda_pin_index; + GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN; + if(sda_port_num == 0) + { + HAL_GPIO_Init(GPIOA, &GPIO_InitDef); + HAL_GPIO_ResetBits(GPIOA, sda_pin_index); + } + else if(sda_port_num == 1) + { + HAL_GPIO_Init(GPIOB, &GPIO_InitDef); + HAL_GPIO_ResetBits(GPIOB, sda_pin_index); + } + else if(sda_port_num == 2) + { + HAL_GPIO_Init(GPIOC, &GPIO_InitDef); + HAL_GPIO_ResetBits(GPIOC, sda_pin_index); + } + else if(sda_port_num == 3) + { + HAL_GPIO_Init(GPIOD, &GPIO_InitDef); + HAL_GPIO_ResetBits(GPIOD, sda_pin_index); + } + else + { + printf("SDA pin Port number error\r\n"); + return 1; + } + + HAL_PAD_AFConfig(scl_port_num, scl_pin_index, PAD_AF1); + HAL_PAD_AFConfig(sda_port_num, sda_pin_index, PAD_AF1); - - I2C_AcknowledgeConfig(I2Cx,ENABLE); - - return SUCCESS; + return 0; } - -void I2C_DeInit(I2C_TypeDef* I2Cx) +void I2C_WriteBitSCL(I2C_ConfigStruct* conf, uint8_t data) { - I2C_InterRst(I2Cx,ENABLE); - I2C_CoreEn(I2Cx, ENABLE); - I2C_InterRst(I2Cx,DISABLE); - I2C_CoreEn(I2Cx, DISABLE); + uint32_t scl_port_num = I2C_PORT(conf->scl); + uint32_t scl_pin_index = I2C_PIN_INDEX(conf->scl); + + if(scl_port_num == 0) + { + if(data == 1) + HAL_GPIO_SetBits(GPIOA, scl_pin_index); + else + HAL_GPIO_ResetBits(GPIOA, scl_pin_index); + } + else if(scl_port_num == 1) + { + if(data == 1) + HAL_GPIO_SetBits(GPIOB, scl_pin_index); + else + HAL_GPIO_ResetBits(GPIOB, scl_pin_index); + } + else if(scl_port_num == 2) + { + if(data == 1) + HAL_GPIO_SetBits(GPIOC, scl_pin_index); + else + HAL_GPIO_ResetBits(GPIOC, scl_pin_index); + } + else if(scl_port_num == 3) + { + if(data == 1) + HAL_GPIO_SetBits(GPIOD, scl_pin_index); + else + HAL_GPIO_ResetBits(GPIOD, scl_pin_index); + } } - -ErrorStatus I2C_Start(I2C_TypeDef* I2Cx, uint16_t slave_address, I2C_CTR ctr) +void I2C_WriteBitSDA(I2C_ConfigStruct* conf, uint8_t data) { - ErrorStatus ret; - - I2C_GenerateSTART(I2Cx,ENABLE); - I2C_SendSlaveAddress(I2Cx,slave_address,(I2C_CTR)ctr); - I2C_GenerateSTART(I2Cx,DISABLE); - - ret=I2C_CheckEvent(I2Cx,I2C_ACKR); + uint32_t sda_port_num = I2C_PORT(conf->sda); + uint32_t sda_pin_index = I2C_PIN_INDEX(conf->sda); + if(sda_port_num == 0) + { + if(data == 1) + GPIOA->OUTENCLR = sda_pin_index; + else + GPIOA->OUTENSET = sda_pin_index; + } + else if(sda_port_num == 1) + { + if(data == 1) + GPIOB->OUTENCLR = sda_pin_index; + else + GPIOB->OUTENSET = sda_pin_index; + } + else if(sda_port_num == 2) + { + if(data == 1) + GPIOC->OUTENCLR = sda_pin_index; + else + GPIOC->OUTENSET = sda_pin_index; + } + else if(sda_port_num == 3) + { + if(data == 1) + GPIOD->OUTENCLR = sda_pin_index; + else + GPIOD->OUTENSET = sda_pin_index; + } +} + +uint8_t I2C_ReadBitSDA(I2C_ConfigStruct* conf) +{ + uint32_t sda_port_num = I2C_PORT(conf->sda); + uint32_t sda_pin_index = I2C_PIN_INDEX(conf->sda); + + if(sda_port_num == 0) + { + if(GPIOA->DATA & sda_pin_index) + return 1; + else + return 0; + } + else if(sda_port_num == 1) + { + if(GPIOB->DATA & sda_pin_index) + return 1; + else + return 0; + } + else if(sda_port_num == 2) + { + if(GPIOC->DATA & sda_pin_index) + return 1; + else + return 0; + } + else if(sda_port_num == 3) + { + if(GPIOD->DATA & sda_pin_index) + return 1; + else + return 0; + } + + return 0; +} + +void I2C_Start(I2C_ConfigStruct* conf) +{ + I2C_WriteBitSCL(conf, 1); + I2C_WriteBitSDA(conf, 1); + + I2C_WriteBitSDA(conf, 0); + I2C_WriteBitSCL(conf, 0); +} + +void I2C_Stop(I2C_ConfigStruct* conf) +{ + I2C_WriteBitSCL(conf, 0); + I2C_WriteBitSDA(conf, 0); + + I2C_WriteBitSCL(conf, 1); + I2C_WriteBitSDA(conf, 1); +} + +uint8_t I2C_WriteByte(I2C_ConfigStruct* conf, uint8_t data) +{ + int i; + uint8_t ret; + + //Write byte + for(i=0; i<8; i++) + { + if((data << i) & 0x80) + I2C_WriteBitSDA(conf, 1); + else + I2C_WriteBitSDA(conf, 0); + + I2C_WriteBitSCL(conf, 1); + I2C_WriteBitSCL(conf, 0); + } + //Make clk for receiving ack + I2C_WriteBitSDA(conf, 1); + I2C_WriteBitSCL(conf, 1); + //Read Ack/Nack + ret = I2C_ReadBitSDA(conf); + + I2C_WriteBitSCL(conf, 0); + return ret; } -void I2C_Stop(I2C_TypeDef* I2Cx) +void I2C_SendACK(I2C_ConfigStruct* conf) { - I2C_GenerateSTOP(I2Cx,ENABLE); - I2C_GenerateSTOP(I2Cx,DISABLE); - GPIO_InitDef.GPIO_Pin = GPIO_Pin_9; // Set to Pin_9 (SCL0)) - GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; // Set to Mode Output - HAL_GPIO_Init(GPIOA, &GPIO_InitDef); - HAL_PAD_AFConfig(PAD_PA,GPIO_Pin_9, PAD_AF0); // PAD Config - LED used 2nd Function + I2C_WriteBitSDA(conf, 0); + I2C_WriteBitSCL(conf, 1); + + I2C_WriteBitSCL(conf, 0); +} + +void I2C_SendNACK(I2C_ConfigStruct* conf) +{ + I2C_WriteBitSDA(conf, 1); + I2C_WriteBitSCL(conf, 1); + + I2C_WriteBitSCL(conf, 0); } -void I2C_Reset(I2C_TypeDef* I2Cx) +uint8_t I2C_ReadByte(I2C_ConfigStruct* conf) { - I2C_CoreEn(I2Cx,ENABLE); - // Maybe, it needs a little delay - I2C_CoreEn(I2Cx,DISABLE); -} - -void I2C_SendData(I2C_TypeDef* I2Cx,uint16_t Data) -{ - I2Cx -> TXR = (uint16_t)Data; -} - -int8_t I2C_SendDataAck(I2C_TypeDef* I2Cx,uint16_t Data) -{ - buf[0] = Data; - if(buf[0] == buf[1]) + int i; + uint8_t ret = 0; + + I2C_WriteBitSDA(conf, 1); //out enable clear(GPIO is input) + + //Read byte + for(i=0; i<8; i++) { - I2C_GPIO(); - WriteByte(Data); - i2c_loop_us(1); - GPIO_I2C(); + I2C_WriteBitSCL(conf, 1); + ret = (ret << 1) | (I2C_ReadBitSDA(conf)); + I2C_WriteBitSCL(conf, 0); } - else + + return ret; +} + +int I2C_Write(I2C_ConfigStruct* conf, uint8_t addr, uint8_t* data, uint32_t len) +{ + int i; + + I2C_Start(conf); + + //Write addr + if(I2C_WriteByte(conf, addr) != 0) { - I2Cx -> TXR = (uint16_t)Data; - if(I2C_CheckEvent(I2Cx,I2C_ACKR) == ERROR) - { - return ERROR; - } - } - buf[1] = buf[0]; - return SUCCESS; -} - -int I2C_ReceiveData(I2C_TypeDef* I2Cx, int last) -{ - if(last) - { - I2C_AcknowledgeConfig(I2Cx,DISABLE); - if( I2C_CheckEvent(I2Cx,I2C_ACKT) == ERROR ) { - return -1; - } - } - else if( I2C_CheckEvent(I2Cx,I2C_ACKT) == ERROR ) { - return -1; - } - - return (uint8_t)I2Cx -> RXR; -} - - -int I2C_Burst_Read(I2C_TypeDef* I2Cx, uint16_t address, uint8_t *data, int length, int stop) -{ - int recv_cnt; - - if( I2C_Start(I2Cx,address,I2C_READ_SA7) == ERROR){ + printf("Address is wrong!!\r\n"); return -1; } - for(recv_cnt=0;recv_cntCMDR = I2C_CMDR_STA; - } - else - { - I2Cx->CMDR = I2C_CMDR_STA; - } - } -/** - * @brief Generates I2Cx communication STOP condition. - * @param I2Cx: where x can be 0 or 1 to select the I2C peripheral. - * @param NewState: NewState of the I2C STOP condition generation. - * This parameter can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState) -{ - if(NewState != DISABLE) - { - - I2Cx->CMDR = I2C_CMDR_STO; - - } - else - { - I2Cx->CMDR = I2C_CMDR_STO; - } -} - -/** - * @brief Enables or disables the specified I2C acknowledge feature. - * @param I2Cx: where x can be 0 or 1 to select the I2C peripheral. - * @param NewState: NewState of the I2C Acknowledgement. - * This parameter can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState) -{ - if(NewState != DISABLE) I2Cx -> CMDR = I2C_CMDR_ACK; - else I2Cx -> CMDR = I2C_CMDR_ACK; -} - -/** - * @brief Generates I2Cx communication REGenerateSTART condition - * @param I2Cx: where x can be 0 or 1 to select the I2C peripheral. - * @param NewState: NewState of the I2C Acknowledgement. - * This parameter can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_RESTART(I2C_TypeDef * I2Cx, FunctionalState NewState) -{ - if(NewState != DISABLE) I2Cx->CMDR = I2C_CMDR_RESTA; - else I2Cx->CMDR = I2C_CMDR_RESTA; -} - -/** - * @brief Enable or disable the specified I2C Core_en feature - * @param I2Cx: where x can be 0 or 1 to select the I2C peripheral. - * @param NewState: NewState of the I2C Acknowledgement. - * This parameter can be: ENABLE or DISABLE. - * @retval None. - */ -void I2C_CoreEn(I2C_TypeDef* I2Cx,FunctionalState NewState) -{ - /*Control*/ - if(NewState != DISABLE) I2Cx -> CTR = I2C_CTR_COREEN; - else I2Cx -> CTR = I2C_CTR_COREEN; -} - - -void I2C_InterEn(I2C_TypeDef* I2Cx,FunctionalState NewState) -{ - /*Control Interrupt Enable*/ - if(NewState != DISABLE) I2Cx -> CTR = I2C_CTR_INTEREN; - else I2Cx -> CTR = I2C_CTR_INTEREN; -} - - -void I2C_MasterSlave(I2C_TypeDef* I2Cx,FunctionalState NewState) -{ - /*Control MasterSlave select*/ - if(NewState == ENABLE) - { - if( (I2Cx->CTR & I2C_CTR_MODE) != I2C_CTR_MODE ) - { - I2Cx->CTR = I2C_CTR_MODE; - } - } - else // DISABLE - { - if( (I2Cx->CTR & I2C_CTR_MODE) == I2C_CTR_MODE ) - { - I2Cx->CTR = I2C_CTR_MODE; - } - } -} - - -void I2C_ControlRW(I2C_TypeDef* I2Cx,FunctionalState NewState) -{ - /*Control Read(receive)*/ - if(NewState == ENABLE) - { - if( (I2Cx->CTR & I2C_CTR_CTRRWN) != I2C_CTR_CTRRWN ) - { - I2Cx->CTR = I2C_CTR_CTRRWN; - } - } - else // DISABLE - { - if( (I2Cx->CTR & I2C_CTR_CTRRWN) == I2C_CTR_CTRRWN ) - { - I2Cx->CTR = I2C_CTR_CTRRWN; - } - } -} - - -void I2C_ControlEn(I2C_TypeDef* I2Cx,FunctionalState NewState) -{ - /*Control*/ - if(NewState == ENABLE) - { - if( (I2Cx->CTR & I2C_CTR_CTEN) != I2C_CTR_CTEN ) - { - I2Cx->CTR = I2C_CTR_CTEN; - } - } - else // DISABLE - { - if( (I2Cx->CTR & I2C_CTR_CTEN) == I2C_CTR_CTEN ) - { - I2Cx->CTR = I2C_CTR_CTEN; - } - } -} - - -void I2C_InterRst(I2C_TypeDef* I2Cx,FunctionalState NewState) -{ - /*Control*/ - if(NewState == ENABLE) - { - if( (I2Cx->ISCR & I2C_ISCR_RST) != I2C_ISCR_RST ) - { - I2Cx->ISCR = I2C_ISCR_RST; - } - } - else // DISABLE - { - if( (I2Cx->ISCR & I2C_ISCR_RST) == I2C_ISCR_RST ) - { - I2Cx->ISCR = I2C_ISCR_RST; - } - } -} - -void I2C_Prescale(I2C_TypeDef* I2Cx,uint16_t Data) -{ - I2Cx -> PRER = (uint16_t)Data; -} - -void I2C_TimeoutSet(I2C_TypeDef* I2Cx,uint16_t Data) -{ - I2Cx -> TSR = (uint16_t)Data; -} -void I2C_SetSlavAddress(I2C_TypeDef* I2Cx,uint16_t Data) -{ - I2Cx -> SADDR = (uint16_t)Data; -} - - -uint8_t I2C_StatusRead(I2C_TypeDef* I2Cx) -{ - return (uint8_t)I2Cx -> SR; -} - - -ErrorStatus WaitEvent(I2C_TypeDef* I2Cx, uint32_t flag, FlagStatus status) -{ - int Timeout=0,loopcnt=0; - Timeout = I2Cx->TSR; - if(status == SET) - { - for(loopcnt=Timeout; loopcnt>0; loopcnt--) - { - if( ((I2Cx->SR) & flag) == flag ) - return SUCCESS; - } - } - else - { - for(loopcnt=Timeout; loopcnt>0; loopcnt--) - { - if( ((I2Cx->SR) & flag) != flag ) - return SUCCESS; - } - } - - - return ERROR; -} - - -/** - * @brief Checks whether the specified I2C flag is set or not. - * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. - * @param I2C_EVENT: specifies the event to be checked. - */ -ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx,I2C_SR sr) -{ - switch(sr) - { - case(I2C_ACKR): - if( WaitEvent(I2Cx, I2C_SR_ACKR, SET) == ERROR) return ERROR; - if( WaitEvent(I2Cx, I2C_SR_ACKR, RESET) == ERROR) return ERROR; - break; - - case(I2C_ACKT ): - if( WaitEvent(I2Cx, I2C_SR_ACKT, SET) == ERROR) return ERROR; - if( WaitEvent(I2Cx, I2C_SR_ACKT, RESET) == ERROR) return ERROR; - break; - - case(I2C_OACKR): - if( WaitEvent(I2Cx, I2C_SR_ACKR, SET) == ERROR) return ERROR; - break; - - case(I2C_SACKR ): - if( WaitEvent(I2Cx, I2C_SR_ACKR, RESET) == ERROR) return ERROR; - break; - - case(I2C_BT ): - if( WaitEvent(I2Cx, I2C_SR_BT, RESET) == ERROR) return ERROR; - break; - - default: - return ERROR; - } - - return SUCCESS; -} - - -void I2C_SendSlaveAddress(I2C_TypeDef* I2Cx, uint8_t SlaveAddress,I2C_CTR Ctr) -{ - switch(Ctr) - { - case(I2C_READ_SA7): - I2C_SendData(I2Cx,SlaveAddress|I2C_READ); - break; - - - case(I2C_WRITE_SA7): - I2C_SendData(I2Cx,SlaveAddress|I2C_WRITE); - break; - - case(I2C_CTRWRITE_SA7): - case(I2C_CTRREAD_SA7): - I2C_SendData(I2Cx,SlaveAddress); - break; - - default: - return; - - } -} - - int8_t I2C_Restart_Structure(I2C_TypeDef * I2Cx,uint32_t SlaveAddress,I2C_CTR Ctr) -{ - - I2C_RESTART(I2Cx,ENABLE); - I2C_SendSlaveAddress(I2Cx,SlaveAddress,Ctr); - if((I2C_CheckEvent(I2Cx,I2C_OACKR)) == ERROR ) - { - return 0; - } - I2C_RESTART(I2Cx,DISABLE); - if((I2C_CheckEvent(I2Cx,I2C_SACKR)) == ERROR) - { - return 0; - } - return 1; -} + I2C_Stop(conf); -/** - * @brief Reads the specified I2C register and returns its value. - * @param I2C_Register: specifies the register to read. - * This parameter can be one of the following values: - * @arg I2C_Register_CR1: CR1 register. - * @arg I2C_Register_CR2: CR2 register. - * @arg I2C_Register_OAR1: OAR1 register. - * @arg I2C_Register_OAR2: OAR2 register. - * @arg I2C_Register_DR: DR register. - * @arg I2C_Register_SR1: SR1 register. - * @arg I2C_Register_SR2: SR2 register. - * @arg I2C_Register_CCR: CCR register. - * @arg I2C_Register_TRISE: TRISE register. - * @retval The value of the read register. - */ -uint16_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register) -{ - __IO uint32_t tmp = 0; - - - tmp = (uint32_t) I2Cx; - tmp += I2C_Register; - - /* Return the selected register value */ - return (*(__IO uint16_t *) tmp); + return 0;//success } +int I2C_Read(I2C_ConfigStruct* conf, uint8_t addr, uint8_t* data, uint32_t len) +{ + int i; -void I2C_GPIO(void ) -{ - GPIO_InitDef.GPIO_Pin = GPIO_Pin_9; // Set to Pin_9 (SCL0)) - GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; // Set to Mode Output - HAL_GPIO_Init(GPIOA, &GPIO_InitDef); - HAL_PAD_AFConfig(PAD_PA,GPIO_Pin_9, PAD_AF1); // PAD Config - LED used 2nd Function - - GPIO_InitDef.GPIO_Pin = GPIO_Pin_10; // Set to Pin_9 (SCL0)) - GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; // Set to Mode Output - HAL_GPIO_Init(GPIOA, &GPIO_InitDef); - HAL_PAD_AFConfig(PAD_PA,GPIO_Pin_10, PAD_AF1); // PAD Config - LED used 2nd Function - -} -void GPIO_I2C(void ) -{ - GPIO_InitDef.GPIO_Pin = GPIO_Pin_9; // Set to Pin_9 (SCL0)) - GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; // Set to Mode Output - HAL_GPIO_Init(GPIOA, &GPIO_InitDef); - HAL_PAD_AFConfig(PAD_PA,GPIO_Pin_9, PAD_AF0); // PAD Config - LED used 2nd Function - - GPIO_InitDef.GPIO_Pin = GPIO_Pin_10; // Set to Pin_10 (SDA0)) - GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN; // Set to Mode Output - HAL_GPIO_Init(GPIOA, &GPIO_InitDef); - HAL_PAD_AFConfig(PAD_PA,GPIO_Pin_10, PAD_AF0); // PAD Config - LED used 2nd Functio - -} - - -void WriteByte(uint8_t val) -{ - int i; - GPIO_TypeDef* GPIOx; - GPIOx = GPIOA; - - for(i=0;i<8;i++) - { - if((val << i) & 0x80){ - digitalWrite(GPIOx,SDA, Bit_SET); - }else{ - digitalWrite(GPIOx,SDA, Bit_RESET); - } - i2c_loop_us(1); - digitalWrite(GPIOx,SCL, Bit_SET); - i2c_loop_us(2); - digitalWrite(GPIOx,SCL, Bit_RESET); - } - digitalWrite(GPIOx,SDA, Bit_SET); - i2c_loop_us(1); - digitalWrite(GPIOx,SCL, Bit_SET); - i2c_loop_us(2); - digitalWrite(GPIOx,SCL, Bit_RESET); -} - - -void digitalWrite(GPIO_TypeDef* GPIOx,uint16_t pin, uint16_t val) -{ + I2C_Start(conf); - if(val == Bit_SET) + //Write addr | read command + if(I2C_WriteByte(conf, (addr | 1)) != 0) { - GPIOx -> OUTENCLR = pin; + printf("Address is wrong!!\r\n"); + return -1; } - else + + //Read data + for(i=0; i OUTENSET |= pin; + data[i] = I2C_ReadByte(conf); + if( i == (len - 1) ) + I2C_SendNACK(conf); + else + I2C_SendACK(conf); } -} - - -void i2c_loop_us(int us) -{ - volatile uint32_t delay = us; // approximate loops per ms at 24 MHz, Debug config - for(; delay != 0; delay--) - __NOP(); -} -void i2c_loop_ms(int count) { - i2c_loop_us(count*1000); + + I2C_Stop(conf); + + return 0;//success } diff --git a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.h b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.h index eff835bfb9..f17ee3b3c9 100644 --- a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.h +++ b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.h @@ -27,210 +27,53 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ - +/*include -------------------------------------*/ #include "W7500x.h" -typedef enum -{ - I2C_WRITE_SA7=0, - I2C_READ_SA7, - I2C_CTRWRITE_SA7, - I2C_CTRREAD_SA7, -} I2C_CTR; - -typedef enum -{ - I2C_ACKR=0, - I2C_ACKT, - I2C_OACKR, - I2C_SACKR, - I2C_BT, -} I2C_SR; +#ifndef __W7500X_I2C_H +#define __W7500X_I2C_H -typedef enum -{ - INT_ACKR=-1, - INT_ACKT=-2, - INT_NACKR=-3, - INT_NACKT=-4, - INT_BT=-5, -} I2C_ERROR; - - -/** -*@ -*/ -/** @defgroup I2C_registers - * @{ - */ - -#define I2C_Register_PRER ((uint8_t)0x00) -#define I2C_Register_CTR ((uint8_t)0x04) -#define I2C_Register_CMDR ((uint8_t)0x08) -#define I2C_Register_SR ((uint8_t)0x0C) -#define I2C_Register_TSR ((uint8_t)0x10) -#define I2C_Register_SADDR ((uint8_t)0x14) -#define I2C_Register_TXR ((uint8_t)0x18) -#define I2C_Register_RXR ((uint8_t)0x1C) -#define I2C_Register_ISR ((uint8_t)0x20) -#define I2C_Register_ISCR ((uint8_t)0x24) -#define I2C_Register_ISMR ((uint8_t)0x28) -#define IS_I2C_REGISTER(REGISTER) (((REGISTER) == I2C_Register_PRER) || \ - ((REGISTER) == I2C_Register_CTR) || \ - ((REGISTER) == I2C_Register_CMDR) || \ - ((REGISTER) == I2C_Register_SR) || \ - ((REGISTER) == I2C_Register_TSR) || \ - ((REGISTER) == I2C_Register_SADDR) || \ - ((REGISTER) == I2C_Register_TXR) || \ - ((REGISTER) == I2C_Register_RXR) || \ - ((REGISTER) == I2C_Register_ISR)|| \ - ((REGISTER) == I2C_Register_ISCR)| \ - ((REGISTER) == I2C_Register_ISMR)) - -/** @defgroup I2C_Private_Defines - * @{ - */ -/* I2C COREEN mask */ -#define I2C_CTR_COREEN_DIS ((uint16_t)0xFF7F) - -/* I2C INTEREN mask */ -#define I2C_CTR_INTEREN_DIS ((uint16_t)0xFFBF) - -/* I2C MODE(M/SN) mask */ -#define I2C_CTR_MODE_SLAVE ((uint16_t)0xFFDF) - -/* I2C ADDR10(10/7N) mask */ -#define I2C_CTR_ADDR10_7BIT ((uint16_t)0xFFEF) - -/* I2C CTRRWN(R/WN) mask */ -#define I2C_CTR_CTRRWN_DIS ((uint16_t)0xFFF7) - -/* I2C CTREN mask */ -#define I2C_CTR_CTEN_DIS ((uint16_t)0xFFFB) - - -/* I2C START mask */ -#define I2C_CMDR_START_DIS ((uint16_t)0xFF7F) - -/* I2C STOP mask */ -#define I2C_CMDR_STOP_DIS ((uint16_t)0xFFBF) - -/* I2C ACK mask */ -#define I2C_CMDR_ACK_NAK ((uint16_t)0xFFDF) - -/* I2C RESTART mask */ -#define I2C_CMDR_RESTA_DIS ((uint16_t)0xFFEF) - -/* I2C INTERRUPT RESET mask */ -#define I2C_ISCR_RST_DIS ((uint16_t)0xFFFE) -/** - * @} - */ - - - -#define I2C_WRITE 0 -#define I2C_READ 1 -#define I2C_RWSEL(NewState) (((NewState) == I2C_WRITE)|| \ - ((NewState) == I2C_READ)) - - -#define I2C_Ack_Enable (0x01ul << 5) -#define I2C_Ack_Disable (0x00ul << 5) -#define IS_I2C_ACK_NewState(NewState) (((NewState) == I2C_Ack_Enable) || \ - ((NewState) == I2C_Ack_Disable)) - -#define I2C_MASTER_MODE (0x01ul << 5 ) // 0x20 -#define I2C_SLAVE_MODE (0x00ul << 5 ) // 0x20 -#define IS_I2C_MODE(MODE) ((MODE) == I2C_MASTER_MODE)|| \ - (MODE) == I2C_SLAVE_MODE)) - -#define I2C_CTR_MODE (0x01ul << 5 ) // 0x20 - -#define SLAVE_ADDR10 0x208 - - -typedef enum - { - I2C_Master = I2C_MASTER_MODE, - I2C_Slave = I2C_SLAVE_MODE - }I2C_MODE; - - -typedef struct -{ - uint8_t prescale; - uint16_t timeout; - I2C_CTR control; -}I2C_MasterConfStruct; - +typedef enum { + I2C_PA_5 = 0x05, + I2C_PA_6 = 0x06, + I2C_PA_9 = 0x09, + I2C_PA_10 = 0x0A, + I2C_PC_4 = 0x24, + I2C_PC_5 = 0x25, + I2C_PC_8 = 0x28, + // Not connected + I2C_NC = (int)0xFFFFFFFF +} I2C_PinName; typedef struct { - uint32_t mode; - uint16_t slave_address; // only on slave mode - I2C_MasterConfStruct master; + I2C_PinName scl; + I2C_PinName sda; }I2C_ConfigStruct; -/** @defgroup I2C_Exported_Functions - * @{ - */ +#define I2C_PORT(X) (((uint32_t)(X) >> 4) & 0xF) // port number (0=A, 1=B, 2=C, 3=D) +#define I2C_PIN_INDEX(X) (1 << ((uint32_t)(X) & 0xF)) // pin index : flag bit -uint32_t I2C_Init (I2C_TypeDef* I2Cx, I2C_ConfigStruct conf); -void setFrequency (I2C_TypeDef* I2Cx, uint8_t prescale); -void I2C_DeInit (I2C_TypeDef* I2Cx); +uint32_t I2C_Init(I2C_ConfigStruct* conf); -ErrorStatus I2C_Start (I2C_TypeDef* I2Cx, uint16_t slave_address, I2C_CTR ctr); -void I2C_Stop (I2C_TypeDef* I2Cx); -void I2C_Reset (I2C_TypeDef* I2Cx); +void I2C_WriteBitSDA(I2C_ConfigStruct* conf, uint8_t data); +void I2C_WriteBitSCL(I2C_ConfigStruct* conf, uint8_t data); +uint8_t I2C_ReadBitSDA(I2C_ConfigStruct* conf); -void I2C_SendData (I2C_TypeDef* I2Cx,uint16_t Data); -int8_t I2C_SendDataAck (I2C_TypeDef* I2Cx,uint16_t Data); -int I2C_ReceiveData (I2C_TypeDef* I2Cx, int last); +void I2C_SendACK(I2C_ConfigStruct* conf); +void I2C_SendNACK(I2C_ConfigStruct* conf); -int I2C_Burst_Read (I2C_TypeDef* I2Cx, uint16_t address, uint8_t *data, int length, int stop); -int I2C_Burst_Write (I2C_TypeDef* I2Cx, uint16_t address, uint8_t *data, int length, int stop); +uint8_t I2C_WriteByte(I2C_ConfigStruct* conf, uint8_t data); +uint8_t I2C_ReadByte(I2C_ConfigStruct* conf); -void I2C_GenerateSTART (I2C_TypeDef* I2Cx, FunctionalState NewState); -void I2C_GenerateSTOP (I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_Start(I2C_ConfigStruct* conf); +void I2C_Stop(I2C_ConfigStruct* conf); -void I2C_AcknowledgeConfig (I2C_TypeDef* I2Cx, FunctionalState NewState); -void I2C_RESTART (I2C_TypeDef * I2Cx, FunctionalState NewState); +int I2C_Write(I2C_ConfigStruct* conf, uint8_t addr, uint8_t* data, uint32_t len); +int I2C_Read(I2C_ConfigStruct* conf, uint8_t addr, uint8_t* data, uint32_t len); -void I2C_CoreEn (I2C_TypeDef* I2Cx,FunctionalState NewState); -void I2C_InterEn (I2C_TypeDef* I2Cx,FunctionalState NewState); -void I2C_MasterSlave(I2C_TypeDef* I2Cx,FunctionalState NewState); -void I2C_ControlRW (I2C_TypeDef* I2Cx,FunctionalState NewState); -void I2C_ControlEn (I2C_TypeDef* I2Cx,FunctionalState NewState); -void I2C_InterRst (I2C_TypeDef* I2Cx,FunctionalState NewState); -void I2C_Prescale (I2C_TypeDef* I2Cx,uint16_t Data); -void I2C_TimeoutSet (I2C_TypeDef* I2Cx,uint16_t Data); -void I2C_SetSlavAddress (I2C_TypeDef* I2Cx,uint16_t Data); -uint8_t I2C_StatusRead (I2C_TypeDef* I2Cx); - -ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx,I2C_SR sr); - -void I2C_MasterInit (I2C_TypeDef * I2Cx,uint8_t Prescale,uint16_t Timeout,I2C_CTR Ctr); -void I2C_SlaveInit (I2C_TypeDef * I2Cx,FunctionalState NewState, uint16_t data); -void I2C_SendSlaveAddress (I2C_TypeDef* I2Cx, uint8_t SlaveAddress,I2C_CTR Ctr); - -int8_t I2C_Restart_Structure(I2C_TypeDef * I2Cx,uint32_t SlaveAddress,I2C_CTR Ctr); -uint16_t I2C_ReadRegister (I2C_TypeDef* I2Cx, uint8_t I2C_Register); - -void I2C_GPIO(void); -void GPIO_I2C(void ); - -void WriteByte(uint8_t val); - -void digitalWrite(GPIO_TypeDef* GPIOx,uint16_t pin, uint16_t val); -uint16_t digitalRead(GPIO_TypeDef* GPIOx,uint16_t pin); -void i2c_loop_us(int us); -void i2c_loop_ms(int count) ; - -/** - * @} - */ + #endif //__W7500X_I2C_H diff --git a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/PeripheralPins.c b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/PeripheralPins.c index bf8cd2976f..6c5c5ae6d4 100644 --- a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/PeripheralPins.c +++ b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/PeripheralPins.c @@ -63,11 +63,17 @@ const PinMap PinMap_UART_RX[] = { //*** I2C *** const PinMap PinMap_I2C_SDA[] = { {PA_10, I2C_0, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF0)}, + {PC_9, I2C_0, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF2)}, + {PC_5, I2C_1, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF0)}, + {PA_6, I2C_1, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF2)}, {NC, NC, 0} }; const PinMap PinMap_I2C_SCL[] = { {PA_9, I2C_0, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF0)}, + {PC_8, I2C_0, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF2)}, + {PC_4, I2C_1, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF0)}, + {PC_5, I2C_1, WIZ_PIN_DATA(WIZ_MODE_AF, WIZ_GPIO_NOPULL, Px_AFSR_AF2)}, {NC, NC, 0} }; diff --git a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/objects.h b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/objects.h index 5c3842cae5..8b75ce9588 100644 --- a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/objects.h +++ b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/objects.h @@ -81,7 +81,9 @@ struct spi_s { }; struct i2c_s { - I2CName i2c; + I2CName I2Cx; + PinName sda; + PinName scl; uint16_t ADDRESS; uint16_t is_setAddress; }; diff --git a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c index 3a4adb8594..15c5fc6e2a 100644 --- a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c +++ b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c @@ -47,303 +47,161 @@ #define FLAG_TIMEOUT ((int)0x1000) #define LONG_TIMEOUT ((int)0xFFFF) -I2C_TypeDef * I2cHandle; - -int i2c0_inited = 0; -int i2c1_inited = 0; void i2c_init(i2c_t *obj, PinName sda, PinName scl) { - // Determine the I2C to use + I2C_ConfigStruct conf; + + //Determine the I2C to use I2CName i2c_sda = (I2CName)pinmap_peripheral(sda, PinMap_I2C_SDA); I2CName i2c_scl = (I2CName)pinmap_peripheral(scl, PinMap_I2C_SCL); - - obj->i2c = (I2CName)pinmap_merge(i2c_sda, i2c_scl); - MBED_ASSERT(obj->i2c != (I2CName)NC); - - // Enable I2C1 clock and pinout if not done - if ((obj->i2c == I2C_0) && !i2c0_inited) { - i2c0_inited = 1; - // Configure I2C pins - pinmap_pinout(sda, PinMap_I2C_SDA); - pinmap_pinout(scl, PinMap_I2C_SCL); - pin_mode(sda, PullUp); - pin_mode(scl, PullUp); - } - - // Enable I2C2 clock and pinout if not done - if ((obj->i2c == I2C_1) && !i2c1_inited) { - i2c1_inited = 1; - // Configure I2C pins - pinmap_pinout(sda, PinMap_I2C_SDA); - pinmap_pinout(scl, PinMap_I2C_SCL); - pin_mode(sda, PullUp); - pin_mode(scl, PullUp); - } - - // Reset to clear pending flags if any - i2c_reset(obj); - - // I2C configuration - i2c_frequency(obj, 100000); // 100 kHz per default + obj->I2Cx = (I2CName)pinmap_merge(i2c_sda, i2c_scl); + MBED_ASSERT(obj->I2Cx != (I2CName)NC); + + obj->sda = sda; + obj->scl = scl; + obj->ADDRESS = 0x0; obj->is_setAddress = 0; + + conf.sda = (I2C_PinName)obj->sda; + conf.scl = (I2C_PinName)obj->scl; + + I2C_Init(&conf); } void i2c_frequency(i2c_t *obj, int hz) { - //MBED_ASSERT((hz == 100000) || (hz == 400000) || (hz == 1000000)); - MBED_ASSERT((hz == 100000)); - I2cHandle = (I2C_TypeDef *)(obj->i2c); - - // wait before init - I2C_ConfigStruct conf; - - conf.mode = I2C_Master; - conf.master.timeout = LONG_TIMEOUT; - conf.master.prescale = 0x61; // Standard mode with Rise Time = 400ns and Fall Time = 100ns - - // Common settings: I2C clock = 48 MHz, Analog filter = ON, Digital filter coefficient = 0 -// switch (hz) { -// case 100000: -// conf.master.prescale = 0x61; // Standard mode with Rise Time = 400ns and Fall Time = 100ns -// break; -// case 400000: -// break; -// case 1000000: -// break; -// default: -// break; -// } - - // I2C configuration - I2C_Init(I2cHandle, conf); + } inline int i2c_start(i2c_t *obj) { - obj->is_setAddress = 0; - + I2C_ConfigStruct conf; + conf.sda = (I2C_PinName)obj->sda; + conf.scl = (I2C_PinName)obj->scl; + + I2C_Start(&conf); + return 0; } inline int i2c_stop(i2c_t *obj) -{ - I2cHandle = (I2C_TypeDef *)(obj->i2c); - - // Generate the STOP condition - I2C_Stop(I2cHandle); - I2C_Reset(I2cHandle); +{ + I2C_ConfigStruct conf; + conf.sda = (I2C_PinName)obj->sda; + conf.scl = (I2C_PinName)obj->scl; - obj->is_setAddress = 0; + I2C_Stop(&conf); return 0; } int i2c_read(i2c_t *obj, int address, char *data, int length, int stop) { - I2cHandle = (I2C_TypeDef *)(obj->i2c); - int count; - int value; + I2C_ConfigStruct conf; + int i; - if(!obj->is_setAddress) - { - if( I2C_Start(I2cHandle, address, I2C_READ_SA7) == ERROR ) - { - return -1; - } - obj->is_setAddress = 1; - obj->ADDRESS = address; + conf.sda = (I2C_PinName)obj->sda; + conf.scl = (I2C_PinName)obj->scl; + + + if(stop) + { + if(I2C_Read(&conf, address, data, length) != 0) + return -1; } else { - I2C_Restart_Structure(I2cHandle, address, I2C_READ_SA7); - obj->ADDRESS = address; - } - - // Read all bytes - for (count = 0; count < (length-1); count++) { - if( (value = i2c_byte_read(obj, 0)) == -1) { - return value; + I2C_Start(&conf); + + //Write addr | read command + if(I2C_WriteByte(&conf, (address | 1)))//Nack is 1 + return -1; + + //Read data + for(i=0; iis_setAddress =1; - count++; - } - else{ - if( (value = i2c_byte_read(obj, 0)) == -1) { - - return value; - } - data[count] = (char)value; - count++; } - return count; + return length; } int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop) { - I2cHandle = (I2C_TypeDef *)(obj->i2c); - int count =0; + I2C_ConfigStruct conf; + int i; - if(!obj->is_setAddress) - { - if( I2C_Start(I2cHandle, address, I2C_WRITE_SA7) == ERROR ) - { - return -1; - } - obj->is_setAddress = 1; - obj->ADDRESS = address; - } + conf.sda = (I2C_PinName)obj->sda; + conf.scl = (I2C_PinName)obj->scl; + + + if(stop) + { + if(I2C_Write(&conf, address, data, length) != 0) + return -1; + } else { - I2C_Restart_Structure(I2cHandle, address, I2C_WRITE_SA7); - obj->ADDRESS = address; - - } - - for (count = 0; count < length; count++) { - i2c_byte_write(obj, data[count]); - wait_us(1); - } - - - if(length == 0x00) - { - I2C_GPIO(); - i2c_byte_write(obj, 0xff); - GPIO_I2C(); - } - // If not repeated start, send stop - if (stop) { - i2c_stop(obj); - } - else - { - i2c_reset(obj); + I2C_Start(&conf); + //Write addr | read command + if(I2C_WriteByte(&conf, address))//Nack is 1 + return -1; + + //Write data + for(i=0; ii2c); - - return I2C_ReceiveData(I2cHandle, last); + uint8_t ret; + I2C_ConfigStruct conf; + + conf.sda = (I2C_PinName)obj->sda; + conf.scl = (I2C_PinName)obj->scl; + + ret = I2C_ReadByte(&conf); + + if(last) + I2C_SendNACK(&conf); + else + I2C_SendACK(&conf); + + return (int)ret; } int i2c_byte_write(i2c_t *obj, int data) { - I2cHandle = (I2C_TypeDef *)(obj->i2c); - return I2C_SendDataAck(I2cHandle,(uint8_t)data); + I2C_ConfigStruct conf; + + conf.sda = (I2C_PinName)obj->sda; + conf.scl = (I2C_PinName)obj->scl; + + if(I2C_WriteByte(&conf, (uint8_t)data)) // NACK + return 0; + else //ack + return 1; } void i2c_reset(i2c_t *obj) { - I2cHandle = (I2C_TypeDef *)(obj->i2c); - - I2C_Reset(I2cHandle); + } -//#if DEVICE_I2CSLAVE -// -//void i2c_slave_address(i2c_t *obj, int idx, uint32_t address, uint32_t mask) -//{ -// I2C_TypeDef *i2c = (I2C_TypeDef *)(obj->i2c); -// uint16_t tmpreg = 0; -// -// // disable -// i2c->OAR1 &= (uint32_t)(~I2C_OAR1_OA1EN); -// // Get the old register value -// tmpreg = i2c->OAR1; -// // Reset address bits -// tmpreg &= 0xFC00; -// // Set new address -// tmpreg |= (uint16_t)((uint16_t)address & (uint16_t)0x00FE); // 7-bits -// // Store the new register value -// i2c->OAR1 = tmpreg; -// // enable -// i2c->OAR1 |= I2C_OAR1_OA1EN; -//} -// -//void i2c_slave_mode(i2c_t *obj, int enable_slave) -//{ -// I2C_TypeDef *i2c = (I2C_TypeDef *)(obj->i2c); -// uint16_t tmpreg; -// -// // Get the old register value -// tmpreg = i2c->OAR1; -// -// // Enable / disable slave -// if (enable_slave == 1) { -// tmpreg |= I2C_OAR1_OA1EN; -// } else { -// tmpreg &= (uint32_t)(~I2C_OAR1_OA1EN); -// } -// -// // Set new mode -// i2c->OAR1 = tmpreg; -//} -// -//// See I2CSlave.h -//#define NoData 0 // the slave has not been addressed -//#define ReadAddressed 1 // the master has requested a read from this slave (slave = transmitter) -//#define WriteGeneral 2 // the master is writing to all slave -//#define WriteAddressed 3 // the master is writing to this slave (slave = receiver) -// -//int i2c_slave_receive(i2c_t *obj) -//{ -// I2cHandle.Instance = (I2C_TypeDef *)(obj->i2c); -// int retValue = NoData; -// -// if (__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_BUSY) == 1) { -// if (__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_ADDR) == 1) { -// if (__HAL_I2C_GET_FLAG(&I2cHandle, I2C_FLAG_DIR) == 1) -// retValue = ReadAddressed; -// else -// retValue = WriteAddressed; -// -// __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_ADDR); -// } -// } -// -// return (retValue); -//} -// -//int i2c_slave_read(i2c_t *obj, char *data, int length) -//{ -// char size = 0; -// -// while (size < length) data[size++] = (char)i2c_byte_read(obj, 0); -// -// return size; -//} -// -//int i2c_slave_write(i2c_t *obj, const char *data, int length) -//{ -// char size = 0; -// I2cHandle.Instance = (I2C_TypeDef *)(obj->i2c); -// -// do { -// i2c_byte_write(obj, data[size]); -// size++; -// } while (size < length); -// -// return size; -//} -// -// -//#endif // DEVICE_I2CSLAVE #endif // DEVICE_I2C From 641ecd065addbb589909fde934c149fcd212e575 Mon Sep 17 00:00:00 2001 From: hjjeon0608 Date: Mon, 27 Jul 2015 11:22:04 +0900 Subject: [PATCH 02/19] Add Repeated read/write functions. --- .../TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c | 54 ++++++++++++++++++- .../TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.h | 2 + .../hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c | 30 ++--------- 3 files changed, 57 insertions(+), 29 deletions(-) diff --git a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c index 91f03f3786..9ce41f55b8 100644 --- a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c +++ b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c @@ -306,7 +306,7 @@ int I2C_Write(I2C_ConfigStruct* conf, uint8_t addr, uint8_t* data, uint32_t len) //Write addr if(I2C_WriteByte(conf, addr) != 0) { - printf("Address is wrong!!\r\n"); + printf("Received NACK at address phase!!\r\n"); return -1; } @@ -322,6 +322,29 @@ int I2C_Write(I2C_ConfigStruct* conf, uint8_t addr, uint8_t* data, uint32_t len) return 0;//success } +int I2C_WriteRepeated(I2C_ConfigStruct* conf, uint8_t addr, uint8_t* data, uint32_t len) +{ + int i; + + I2C_Start(conf); + + //Write addr + if(I2C_WriteByte(conf, addr) != 0) + { + printf("Received NACK at address phase!!\r\n"); + return -1; + } + + //Write data + for(i=0; i Date: Mon, 27 Jul 2015 11:45:47 +0200 Subject: [PATCH 03/19] Enable LPC8xx usart when configuring it --- .../hal/TARGET_NXP/TARGET_LPC81X/serial_api.c | 14 ++++++++++++-- .../hal/TARGET_NXP/TARGET_LPC82X/serial_api.c | 12 +++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/serial_api.c index 19473496ec..fa5127d298 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/serial_api.c @@ -196,8 +196,18 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b default: break; } - - obj->uart->CFG = (data_bits << 2) + + // First disable the the usart as described in documentation and then enable while updating CFG + + // 24.6.1 USART Configuration register + // Remark: If software needs to change configuration values, the following sequence should + // be used: 1) Make sure the USART is not currently sending or receiving data. 2) Disable + // the USART by writing a 0 to the Enable bit (0 may be written to the entire register). 3) + // Write the new configuration value, with the ENABLE bit set to 1. + obj->uart->CFG &= ~(1 << 0); + + obj->uart->CFG = (1 << 0) // this will enable the usart + | (data_bits << 2) | (paritysel << 4) | (stop_bits << 6); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC82X/serial_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC82X/serial_api.c index a6fa658d04..db17ab026c 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC82X/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC82X/serial_api.c @@ -230,7 +230,17 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b break; } - obj->uart->CFG = (data_bits << 2) + // First disable the the usart as described in documentation and then enable while updating CFG + + // 24.6.1 USART Configuration register + // Remark: If software needs to change configuration values, the following sequence should + // be used: 1) Make sure the USART is not currently sending or receiving data. 2) Disable + // the USART by writing a 0 to the Enable bit (0 may be written to the entire register). 3) + // Write the new configuration value, with the ENABLE bit set to 1. + obj->uart->CFG &= ~(1 << 0); + + obj->uart->CFG = (1 << 0) // this will enable the usart + | (data_bits << 2) | (paritysel << 4) | (stop_bits << 6); } From e50305122dabf313736a2bebaee65b41f69c5012 Mon Sep 17 00:00:00 2001 From: James Devine Date: Tue, 21 Jul 2015 13:20:04 +0100 Subject: [PATCH 04/19] Wallbot: update wallbot to use standard I2C definitions Unlike other Nordic platforms, the wallbot doesn't use numbered I2C ports. This makes it difficult to refer to a platforms's I2C pins from common code. This fix leaves the original wallbot definitions, but adds the more 'standard' ones too. Signed-off-by: Jonathan Austin --- .../TARGET_MCU_NRF51822/TARGET_WALLBOT_BLE/PinNames.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_WALLBOT_BLE/PinNames.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_WALLBOT_BLE/PinNames.h index 5b3e5f92d2..498759646e 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_WALLBOT_BLE/PinNames.h +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_WALLBOT_BLE/PinNames.h @@ -158,6 +158,9 @@ typedef enum { I2C_SCL = P0_21, I2C_SDA = P0_22, + I2C_SCL0 = P0_21, //required definition for the i2c patch + I2C_SDA0 = P0_22, //required definition for the i2c patch + // Not connected NC = (int)0xFFFFFFFF From 668644c604b89a2ff9ac69b6bdf09bca22e3477a Mon Sep 17 00:00:00 2001 From: James Devine Date: Tue, 21 Jul 2015 13:15:35 +0100 Subject: [PATCH 05/19] Nordic: fix for Nordic PAN56 - reset twi master This commit is based on Nordic's fix for an abnormality in some releases of the nrf51822 silicon. Without this fix, the I2C bus locks up and doesn't reset properly. The fix resets the TWI master on powerup. For more information see https://www.nordicsemi.com/eng/nordic/download_resource/24634/6/47696154 Nordic Product Anomaly ID 56. --- .../TARGET_MCU_NRF51822/i2c_api.c | 4 +- .../TARGET_MCU_NRF51822/twi_config.h | 20 ++ .../TARGET_MCU_NRF51822/twi_master.c | 303 ++++++++++++++++++ .../TARGET_MCU_NRF51822/twi_master.h | 99 ++++++ 4 files changed, 425 insertions(+), 1 deletion(-) create mode 100755 libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_config.h create mode 100755 libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.c create mode 100644 libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/i2c_api.c b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/i2c_api.c index 1b1e7e95bf..3dbe466824 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/i2c_api.c +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/i2c_api.c @@ -17,6 +17,7 @@ #include "i2c_api.h" #include "cmsis.h" #include "pinmap.h" +#include "twi_master.h" #include "mbed_error.h" // nRF51822's I2C_0 and SPI_0 (I2C_1, SPI_1 and SPIS1) share the same address. @@ -53,7 +54,8 @@ void twi_master_init(i2c_t *obj, PinName sda, PinName scl, int frequency) void i2c_init(i2c_t *obj, PinName sda, PinName scl) { - NRF_TWI_Type *i2c; + twi_master_init_and_clear(); + NRF_TWI_Type *i2c = NULL; if (i2c0_spi0_peripheral.usage == I2C_SPI_PERIPHERAL_FOR_I2C && i2c0_spi0_peripheral.sda_mosi == (uint8_t)sda && diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_config.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_config.h new file mode 100755 index 0000000000..a5ad887d14 --- /dev/null +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_config.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is property of Nordic Semiconductor ASA. + * Terms and conditions of usage are described in detail in NORDIC + * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. + * + * Licensees are granted free, non-transferable use of the information. NO + * WARRANTY of ANY KIND is provided. This heading must NOT be removed from + * the file. + * + */ +#ifndef TWI_MASTER_CONFIG +#define TWI_MASTER_CONFIG + +#include "PinNames.h" + +#define TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER (I2C_SCL0) +#define TWI_MASTER_CONFIG_DATA_PIN_NUMBER (I2C_SDA0) + +#endif diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.c b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.c new file mode 100755 index 0000000000..a909cd7ab2 --- /dev/null +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.c @@ -0,0 +1,303 @@ +/* Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is property of Nordic Semiconductor ASA. + * Terms and conditions of usage are described in detail in NORDIC + * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. + * + * Licensees are granted free, non-transferable use of the information. NO + * WARRANTY of ANY KIND is provided. This heading must NOT be removed from + * the file. + * + */ + +#include "twi_master.h" +#include "twi_config.h" +#include +#include +#include "nrf.h" +#include "nrf_delay.h" + +/* Max cycles approximately to wait on RXDREADY and TXDREADY event, + * This is optimized way instead of using timers, this is not power aware. */ +#define MAX_TIMEOUT_LOOPS (20000UL) /**< MAX while loops to wait for RXD/TXD event */ + +static bool twi_master_write(uint8_t * data, uint8_t data_length, bool issue_stop_condition) +{ + uint32_t timeout = MAX_TIMEOUT_LOOPS; /* max loops to wait for EVENTS_TXDSENT event*/ + + if (data_length == 0) + { + /* Return false for requesting data of size 0 */ + return false; + } + + NRF_TWI1->TXD = *data++; + NRF_TWI1->TASKS_STARTTX = 1; + + /** @snippet [TWI HW master write] */ + while (true) + { + while (NRF_TWI1->EVENTS_TXDSENT == 0 && NRF_TWI1->EVENTS_ERROR == 0 && (--timeout)) + { + // Do nothing. + } + + if (timeout == 0 || NRF_TWI1->EVENTS_ERROR != 0) + { + // Recover the peripheral as indicated by PAN 56: "TWI: TWI module lock-up." found at + // Product Anomaly Notification document found at + // https://www.nordicsemi.com/eng/Products/Bluetooth-R-low-energy/nRF51822/#Downloads + NRF_TWI1->EVENTS_ERROR = 0; + NRF_TWI1->ENABLE = TWI_ENABLE_ENABLE_Disabled << TWI_ENABLE_ENABLE_Pos; + NRF_TWI1->POWER = 0; + nrf_delay_us(5); + NRF_TWI1->POWER = 1; + NRF_TWI1->ENABLE = TWI_ENABLE_ENABLE_Enabled << TWI_ENABLE_ENABLE_Pos; + + (void)twi_master_init_and_clear(); + + return false; + } + NRF_TWI1->EVENTS_TXDSENT = 0; + if (--data_length == 0) + { + break; + } + + NRF_TWI1->TXD = *data++; + } + /** @snippet [TWI HW master write] */ + + if (issue_stop_condition) + { + NRF_TWI1->EVENTS_STOPPED = 0; + NRF_TWI1->TASKS_STOP = 1; + /* Wait until stop sequence is sent */ + while(NRF_TWI1->EVENTS_STOPPED == 0) + { + // Do nothing. + } + } + return true; +} + + +/** @brief Function for read by twi_master. + */ +static bool twi_master_read(uint8_t * data, uint8_t data_length, bool issue_stop_condition) +{ + uint32_t timeout = MAX_TIMEOUT_LOOPS; /* max loops to wait for RXDREADY event*/ + + if (data_length == 0) + { + /* Return false for requesting data of size 0 */ + return false; + } + else if (data_length == 1) + { + NRF_PPI->CH[0].TEP = (uint32_t)&NRF_TWI1->TASKS_STOP; + } + else + { + NRF_PPI->CH[0].TEP = (uint32_t)&NRF_TWI1->TASKS_SUSPEND; + } + + NRF_PPI->CHENSET = PPI_CHENSET_CH0_Msk; + NRF_TWI1->EVENTS_RXDREADY = 0; + NRF_TWI1->TASKS_STARTRX = 1; + + /** @snippet [TWI HW master read] */ + while (true) + { + while (NRF_TWI1->EVENTS_RXDREADY == 0 && NRF_TWI1->EVENTS_ERROR == 0 && (--timeout)) + { + // Do nothing. + } + NRF_TWI1->EVENTS_RXDREADY = 0; + + if (timeout == 0 || NRF_TWI1->EVENTS_ERROR != 0) + { + // Recover the peripheral as indicated by PAN 56: "TWI: TWI module lock-up." found at + // Product Anomaly Notification document found at + // https://www.nordicsemi.com/eng/Products/Bluetooth-R-low-energy/nRF51822/#Downloads + NRF_TWI1->EVENTS_ERROR = 0; + NRF_TWI1->ENABLE = TWI_ENABLE_ENABLE_Disabled << TWI_ENABLE_ENABLE_Pos; + NRF_TWI1->POWER = 0; + nrf_delay_us(5); + NRF_TWI1->POWER = 1; + NRF_TWI1->ENABLE = TWI_ENABLE_ENABLE_Enabled << TWI_ENABLE_ENABLE_Pos; + + (void)twi_master_init_and_clear(); + + return false; + } + + *data++ = NRF_TWI1->RXD; + + /* Configure PPI to stop TWI master before we get last BB event */ + if (--data_length == 1) + { + NRF_PPI->CH[0].TEP = (uint32_t)&NRF_TWI1->TASKS_STOP; + } + + if (data_length == 0) + { + break; + } + + // Recover the peripheral as indicated by PAN 56: "TWI: TWI module lock-up." found at + // Product Anomaly Notification document found at + // https://www.nordicsemi.com/eng/Products/Bluetooth-R-low-energy/nRF51822/#Downloads + nrf_delay_us(20); + NRF_TWI1->TASKS_RESUME = 1; + } + /** @snippet [TWI HW master read] */ + + /* Wait until stop sequence is sent */ + while(NRF_TWI1->EVENTS_STOPPED == 0) + { + // Do nothing. + } + NRF_TWI1->EVENTS_STOPPED = 0; + + NRF_PPI->CHENCLR = PPI_CHENCLR_CH0_Msk; + return true; +} + + +/** + * @brief Function for detecting stuck slaves (SDA = 0 and SCL = 1) and tries to clear the bus. + * + * @return + * @retval false Bus is stuck. + * @retval true Bus is clear. + */ +static bool twi_master_clear_bus(void) +{ + uint32_t twi_state; + bool bus_clear; + uint32_t clk_pin_config; + uint32_t data_pin_config; + + // Save and disable TWI hardware so software can take control over the pins. + twi_state = NRF_TWI1->ENABLE; + NRF_TWI1->ENABLE = TWI_ENABLE_ENABLE_Disabled << TWI_ENABLE_ENABLE_Pos; + + clk_pin_config = \ + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER]; + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER] = \ + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) \ + | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) \ + | (GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) \ + | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) \ + | (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos); + + data_pin_config = \ + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_DATA_PIN_NUMBER]; + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_DATA_PIN_NUMBER] = \ + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) \ + | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) \ + | (GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) \ + | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) \ + | (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos); + + TWI_SDA_HIGH(); + TWI_SCL_HIGH(); + TWI_DELAY(); + + if ((TWI_SDA_READ() == 1) && (TWI_SCL_READ() == 1)) + { + bus_clear = true; + } + else + { + uint_fast8_t i; + bus_clear = false; + + // Clock max 18 pulses worst case scenario(9 for master to send the rest of command and 9 + // for slave to respond) to SCL line and wait for SDA come high. + for (i=18; i--;) + { + TWI_SCL_LOW(); + TWI_DELAY(); + TWI_SCL_HIGH(); + TWI_DELAY(); + + if (TWI_SDA_READ() == 1) + { + bus_clear = true; + break; + } + } + } + + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER] = clk_pin_config; + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_DATA_PIN_NUMBER] = data_pin_config; + + NRF_TWI1->ENABLE = twi_state; + + return bus_clear; +} + + +/** @brief Function for initializing the twi_master. + */ +bool twi_master_init_and_clear(void) +{ + /* To secure correct signal levels on the pins used by the TWI + master when the system is in OFF mode, and when the TWI master is + disabled, these pins must be configured in the GPIO peripheral. + */ + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER] = \ + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) \ + | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) \ + | (GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) \ + | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) \ + | (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos); + + NRF_GPIO->PIN_CNF[TWI_MASTER_CONFIG_DATA_PIN_NUMBER] = \ + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) \ + | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) \ + | (GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) \ + | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) \ + | (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos); + + NRF_TWI1->EVENTS_RXDREADY = 0; + NRF_TWI1->EVENTS_TXDSENT = 0; + NRF_TWI1->PSELSCL = TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER; + NRF_TWI1->PSELSDA = TWI_MASTER_CONFIG_DATA_PIN_NUMBER; + NRF_TWI1->FREQUENCY = TWI_FREQUENCY_FREQUENCY_K100 << TWI_FREQUENCY_FREQUENCY_Pos; + NRF_PPI->CH[0].EEP = (uint32_t)&NRF_TWI1->EVENTS_BB; + NRF_PPI->CH[0].TEP = (uint32_t)&NRF_TWI1->TASKS_SUSPEND; + NRF_PPI->CHENCLR = PPI_CHENCLR_CH0_Msk; + NRF_TWI1->ENABLE = TWI_ENABLE_ENABLE_Enabled << TWI_ENABLE_ENABLE_Pos; + + return twi_master_clear_bus(); +} + + +/** @brief Function for transfer by twi_master. + */ +bool twi_master_transfer(uint8_t address, + uint8_t * data, + uint8_t data_length, + bool issue_stop_condition) +{ + bool transfer_succeeded = false; + if (data_length > 0 && twi_master_clear_bus()) + { + NRF_TWI1->ADDRESS = (address >> 1); + + if ((address & TWI_READ_BIT)) + { + transfer_succeeded = twi_master_read(data, data_length, issue_stop_condition); + } + else + { + transfer_succeeded = twi_master_write(data, data_length, issue_stop_condition); + } + } + return transfer_succeeded; +} + +/*lint --flb "Leave library region" */ diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h new file mode 100644 index 0000000000..10dea52b84 --- /dev/null +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h @@ -0,0 +1,99 @@ + /* Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved. + * + * The information contained herein is property of Nordic Semiconductor ASA. + * Terms and conditions of usage are described in detail in NORDIC + * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. + * + * Licensees are granted free, non-transferable use of the information. NO + * WARRANTY of ANY KIND is provided. This heading must NOT be removed from + * the file. + * + */ + +#ifndef TWI_MASTER_H +#define TWI_MASTER_H + +/*lint ++flb "Enter library region" */ + +#include +#include + +/** @file +* @brief Software controlled TWI Master driver. +* +* +* @defgroup lib_driver_twi_master Software controlled TWI Master driver +* @{ +* @ingroup nrf_drivers +* @brief Software controlled TWI Master driver. +* +* Supported features: +* - Repeated start +* - No multi-master +* - Only 7-bit addressing +* - Supports clock stretching (with optional SMBus style slave timeout) +* - Tries to handle slaves stuck in the middle of transfer +*/ + +#define TWI_READ_BIT (0x01) //!< If this bit is set in the address field, transfer direction is from slave to master. + +#define TWI_ISSUE_STOP ((bool)true) //!< Parameter for @ref twi_master_transfer +#define TWI_DONT_ISSUE_STOP ((bool)false) //!< Parameter for @ref twi_master_transfer + +/* These macros are needed to see if the slave is stuck and we as master send dummy clock cycles to end its wait */ +/*lint -e717 -save "Suppress do {} while (0) for these macros" */ +/*lint ++flb "Enter library region" */ +#define TWI_SCL_HIGH() do { NRF_GPIO->OUTSET = (1UL << TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER); } while(0) /*!< Pulls SCL line high */ +#define TWI_SCL_LOW() do { NRF_GPIO->OUTCLR = (1UL << TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER); } while(0) /*!< Pulls SCL line low */ +#define TWI_SDA_HIGH() do { NRF_GPIO->OUTSET = (1UL << TWI_MASTER_CONFIG_DATA_PIN_NUMBER); } while(0) /*!< Pulls SDA line high */ +#define TWI_SDA_LOW() do { NRF_GPIO->OUTCLR = (1UL << TWI_MASTER_CONFIG_DATA_PIN_NUMBER); } while(0) /*!< Pulls SDA line low */ +#define TWI_SDA_INPUT() do { NRF_GPIO->DIRCLR = (1UL << TWI_MASTER_CONFIG_DATA_PIN_NUMBER); } while(0) /*!< Configures SDA pin as input */ +#define TWI_SDA_OUTPUT() do { NRF_GPIO->DIRSET = (1UL << TWI_MASTER_CONFIG_DATA_PIN_NUMBER); } while(0) /*!< Configures SDA pin as output */ +#define TWI_SCL_OUTPUT() do { NRF_GPIO->DIRSET = (1UL << TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER); } while(0) /*!< Configures SCL pin as output */ +/*lint -restore */ + +#define TWI_SDA_READ() ((NRF_GPIO->IN >> TWI_MASTER_CONFIG_DATA_PIN_NUMBER) & 0x1UL) /*!< Reads current state of SDA */ +#define TWI_SCL_READ() ((NRF_GPIO->IN >> TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER) & 0x1UL) /*!< Reads current state of SCL */ + +#define TWI_DELAY() nrf_delay_us(4) /*!< Time to wait when pin states are changed. For fast-mode the delay can be zero and for standard-mode 4 us delay is sufficient. */ + + +/** + * @brief Function for initializing TWI bus IO pins and checks if the bus is operational. + * + * Both pins are configured as Standard-0, No-drive-1 (open drain). + * + * @return + * @retval true TWI bus is clear for transfers. + * @retval false TWI bus is stuck. + */ +bool twi_master_init_and_clear(void); + +/** + * @brief Function for transferring data over TWI bus. + * + * If TWI master detects even one NACK from the slave or timeout occurs, STOP condition is issued + * and the function returns false. + * Bit 0 (@ref TWI_READ_BIT) in the address parameter controls transfer direction; + * - If 1, master reads data_length number of bytes from the slave + * - If 0, master writes data_length number of bytes to the slave. + * + * @note Make sure at least data_length number of bytes is allocated in data if TWI_READ_BIT is set. + * @note @ref TWI_ISSUE_STOP + * + * @param address Data transfer direction (LSB) / Slave address (7 MSBs). + * @param data Pointer to data. + * @param data_length Number of bytes to transfer. + * @param issue_stop_condition If @ref TWI_ISSUE_STOP, STOP condition is issued before exiting function. If @ref TWI_DONT_ISSUE_STOP, STOP condition is not issued before exiting function. If transfer failed for any reason, STOP condition will be issued in any case. + * @return + * @retval true Data transfer succeeded without errors. + * @retval false Data transfer failed. + */ +bool twi_master_transfer(uint8_t address, uint8_t *data, uint8_t data_length, bool issue_stop_condition); + +/** + *@} + **/ + +/*lint --flb "Leave library region" */ +#endif //TWI_MASTER_H From 585fe6245fac8a0838ca230f6276b7ee15606f03 Mon Sep 17 00:00:00 2001 From: James Devine Date: Tue, 21 Jul 2015 13:58:16 +0100 Subject: [PATCH 06/19] Add BBC microbit platform: NRF51_MICROBIT This adds the BBC micro:bit platform, based on NRF51822 Initially, add the platform to use whatever version of softdevice is the default for the NRF51822-based platforms. Originally written by James, modified for new target inheritance by Jonathan Austin: Signed-off-by: Jonathan Austin --- .../TARGET_MCU_NRF51822/system_nrf51.c | 2 +- .../TARGET_NRF51_MICROBIT/PinNames.h | 198 ++++++++++++++++++ .../TARGET_NRF51_MICROBIT/device.h | 57 +++++ workspace_tools/build_release.py | 1 + workspace_tools/targets.py | 50 +++++ 5 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/PinNames.h create mode 100644 libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/device.h diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c index cb98405feb..76857bb161 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c @@ -83,7 +83,7 @@ void SystemInit(void) // Start the external 32khz crystal oscillator. -#if defined(TARGET_DELTA_DFCM_NNN40) || defined(TARGET_HRM1017) +#if defined(TARGET_DELTA_DFCM_NNN40) || defined(TARGET_HRM1017) || defined(TARGET_NRF_LFCLK_RC) NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_RC << CLOCK_LFCLKSRC_SRC_Pos); #else NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos); diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/PinNames.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/PinNames.h new file mode 100644 index 0000000000..ac930c2ddd --- /dev/null +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/PinNames.h @@ -0,0 +1,198 @@ +/* mbed Microcontroller Library + * Copyright (c) 2013 Nordic Semiconductor + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 3 + +typedef enum { + p0 = 0, + p1 = 1, + p2 = 2, + p3 = 3, + p4 = 4, + p5 = 5, + p6 = 6, + p7 = 7, + p8 = 8, + p9 = 9, + p10 = 10, + p11 = 11, + p12 = 12, + p13 = 13, + p14 = 14, + p15 = 15, + p16 = 16, + p17 = 17, + p18 = 18, + p19 = 19, + p20 = 20, + p21 = 21, + p22 = 22, + p23 = 23, + p24 = 24, + p25 = 25, + p26 = 26, + p27 = 27, + p28 = 28, + p29 = 29, + p30 = 30, + + //NORMAL PINS... + P0_0 = p0, + P0_1 = p1, + P0_2 = p2, + P0_3 = p3, + P0_4 = p4, + P0_5 = p5, + P0_6 = p6, + P0_7 = p7, + + P0_8 = p8, + P0_9 = p9, + P0_10 = p10, + P0_11 = p11, + P0_12 = p12, + P0_13 = p13, + P0_14 = p14, + P0_15 = p15, + + P0_16 = p16, + P0_17 = p17, + P0_18 = p18, + P0_19 = p19, + P0_20 = p20, + P0_21 = p21, + P0_22 = p22, + P0_23 = p23, + + P0_24 = p24, + P0_25 = p25, + P0_26 = p26, + P0_27 = p27, + P0_28 = p28, + P0_29 = p29, + P0_30 = p30, + + //PADS + PAD3 = p1, + PAD2 = p2, + PAD1 = p3, + + + //LED MATRIX COLS + COL1 = p4, + COL2 = p5, + COL3 = p6, + COL4 = p7, + COL5 = p8, + COL6 = p9, + COL7 = p10, + COL8 = p11, + COL9 = p12, + + //LED MATRIX ROWS + ROW1 = p13, + ROW2 = p14, + ROW3 = p15, + + //NORMAL PIN (NO SPECIFIED FUNCTIONALITY) + //PIN_16 + + // BUTTON A + BUTTON_A = p17, + + + //NORMAL PIN (NO SPECIFIED FUNCTIONALITY) + //PIN_18 + + //TARGET RESET + TGT_NRESET = p19, + + //NORMAL PIN (NO SPECIFIED FUNCTIONALITY) + //PIN_20 + + //MASTER OUT SLAVE IN + MOSI = p21, + + //MASTER IN SLAVE OUT + MISO = p22, + + //SERIAL CLOCK + SCK = p23, + + // RX AND TX PINS + TGT_TX = p24, + TGT_RX = p25, + + //BUTTON B + BUTTON_B = p26, + + //ACCEL INTERRUPT PINS (MMA8653FC) + ACCEL_INT2 = p27, + ACCEL_INT1 = p28, + + //MAGENETOMETER INTERRUPT PIN (MAG3110) + MAG_INT1 = p29, + + // Not connected + NC = (int)0xFFFFFFFF, + + RX_PIN_NUMBER = TGT_RX, + TX_PIN_NUMBER = TGT_TX, + CTS_PIN_NUMBER = 31, //unused ** REQUIRES A PROPER FIX ** + RTS_PIN_NUMBER = 31, //unused + + // mBed interface Pins + USBTX = TX_PIN_NUMBER, + USBRX = RX_PIN_NUMBER, + + LED1 = PAD1, + LED2 = PAD2, + LED3 = PAD3, + LED4 = P0_16, + + //SDA (SERIAL DATA LINE) + I2C_SDA0 = p30, + + //SCL (SERIAL CLOCK LINE) + I2C_SCL0 = p0 + +} PinName; + +typedef enum { + PullNone = 0, + PullDown = 1, + PullUp = 3, + PullDefault = PullUp +} PinMode; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/device.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/device.h new file mode 100644 index 0000000000..9d5a5e2109 --- /dev/null +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/TARGET_NRF51_MICROBIT/device.h @@ -0,0 +1,57 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + +#define DEVICE_PORTIN 1 +#define DEVICE_PORTOUT 1 +#define DEVICE_PORTINOUT 1 + +#define DEVICE_INTERRUPTIN 1 + +#define DEVICE_ANALOGIN 1 +#define DEVICE_ANALOGOUT 0 + +#define DEVICE_SERIAL 1 + +#define DEVICE_I2C 1 +#define DEVICE_I2CSLAVE 0 + +#define DEVICE_SPI 1 +#define DEVICE_SPISLAVE 1 + +#define DEVICE_CAN 0 + +#define DEVICE_RTC 0 + +#define DEVICE_ETHERNET 0 + +#define DEVICE_PWMOUT 1 + +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 + +#define DEVICE_SLEEP 1 + +#define DEVICE_DEBUG_AWARENESS 0 + +#define DEVICE_STDIO_MESSAGES 0 + +#define DEVICE_ERROR_PATTERN 1 + +#include "objects.h" + +#endif diff --git a/workspace_tools/build_release.py b/workspace_tools/build_release.py index 1ea1765749..6eea308dbf 100755 --- a/workspace_tools/build_release.py +++ b/workspace_tools/build_release.py @@ -85,6 +85,7 @@ OFFICIAL_MBED_LIBRARY_BUILD = ( ('NRF51_DK', ('ARM', 'GCC_ARM', 'IAR')), ('NRF51_DONGLE', ('ARM', 'GCC_ARM', 'IAR')), ('HRM1017', ('ARM', 'GCC_ARM', 'IAR')), + ('NRF51_MICROBIT', ('ARM')), ('ARCH_BLE', ('ARM', 'GCC_ARM', 'IAR')), ('SEEED_TINY_BLE', ('ARM', 'GCC_ARM', 'IAR')), ('RBLAB_NRF51822', ('ARM', 'GCC_ARM')), diff --git a/workspace_tools/targets.py b/workspace_tools/targets.py index 3c57e91da8..78d4b1670f 100755 --- a/workspace_tools/targets.py +++ b/workspace_tools/targets.py @@ -1247,6 +1247,53 @@ class NRF51_DONGLE_OTA(MCU_NRF51_32K_OTA): self.extra_labels = ['NRF51_DONGLE'] self.macros += ['TARGET_NRF51_DONGLE'] +class NRF51_MICROBIT(MCU_NRF51_16K): + def __init__(self): + MCU_NRF51_16K.__init__(self) + self.EXPECTED_SOFTDEVICES_WITH_OFFSETS = [ + { + 'name' : 's110_nrf51822_8.0.0_softdevice.hex', + 'boot' : 's110_nrf51822_8.0.0_bootloader.hex', + 'offset' : 0x18000 + }, + { + 'name' : 's110_nrf51822_7.1.0_softdevice.hex', + 'boot' : 's110_nrf51822_7.1.0_bootloader.hex', + 'offset' : 0x16000 + } + ] + self.macros += ['TARGET_NRF_LFCLK_RC'] + +class NRF51_MICROBIT_BOOT(MCU_NRF51_16K_BOOT): + def __init__(self): + MCU_NRF51_16K_BOOT.__init__(self) + self.extra_labels += ['NRF51_MICROBIT'] + self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC'] + +class NRF51_MICROBIT_OTA(MCU_NRF51_16K_OTA): + def __init__(self): + MCU_NRF51_16K_OTA.__init__(self) + self.extra_labels += ['NRF51_MICROBIT'] + self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC'] + +class NRF51_MICROBIT_B(MCU_NRF51_16K): + def __init__(self): + MCU_NRF51_16K.__init__(self) + self.extra_labels += ['NRF51_MICROBIT'] + self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC'] + +class NRF51_MICROBIT_B_BOOT(MCU_NRF51_16K_BOOT): + def __init__(self): + MCU_NRF51_16K_BOOT.__init__(self) + self.extra_labels += ['NRF51_MICROBIT'] + self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC'] + +class NRF51_MICROBIT_B_OTA(MCU_NRF51_16K_OTA): + def __init__(self): + MCU_NRF51_16K_OTA.__init__(self) + self.extra_labels += ['NRF51_MICROBIT'] + self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC'] + ### ARM ### @@ -1547,6 +1594,9 @@ TARGETS = [ NRF51_DONGLE(), # nRF51_32K NRF51_DONGLE_BOOT(), # nRF51_32K NRF51_DONGLE_OTA(), # nRF51_32K + NRF51_MICROBIT(), # nRF51_16K - S110 + NRF51_MICROBIT_B(), # nRF51_16K - default + ### ARM ### ARM_MPS2_M0(), From ee4c83b34f5dc88b8ebd95f2196c960a5030c8c3 Mon Sep 17 00:00:00 2001 From: Mihail Stoyanov Date: Wed, 22 Jul 2015 15:06:32 +0300 Subject: [PATCH 07/19] Nordic: Support multiple SoftDevices for NRF51822 based platforms Move microbit S110 to Nordic default SoftDevice location Remove obsolete S110 bootloader --- .../s110_nrf51822_8.0.0_licence_agreement.txt | 90 + .../s110_nrf51822_8.0.0_softdevice.hex | 5649 +++++++++++++++++ 2 files changed, 5739 insertions(+) create mode 100644 libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_licence_agreement.txt create mode 100644 libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_softdevice.hex diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_licence_agreement.txt b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_licence_agreement.txt new file mode 100644 index 0000000000..b01ccf590e --- /dev/null +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_licence_agreement.txt @@ -0,0 +1,90 @@ +S110/S120/S130 license agreement + +NORDIC SEMICONDUCTOR ASA SOFTDEVICE LICENSE AGREEMENT + +License Agreement for the Nordic Semiconductor ASA ("Nordic") S110, S120 and S130 Bluetooth SoftDevice software packages ("SoftDevice"). +You ("You" "Licensee") must carefully and thoroughly read this License Agreement ("Agreement"), and accept to adhere to this Agreement before +downloading, installing and/or using any software or content in the SoftDevice provided herewith. + +YOU ACCEPT THIS LICENSE AGREEMENT BY (A) CLICKING ACCEPT OR AGREE TO THIS LICENSE AGREEMENT, WHERE THIS +OPTION IS MADE AVAILABLE TO YOU; OR (B) BY ACTUALLY USING THE SOFTDEVICE, IN THIS CASE YOU AGREE THAT THE USE OF +THE SOFTDEVICE CONSTITUTES ACCEPTANCE OF THE LICENSING AGREEMENT FROM THAT POINT ONWARDS. + +IF YOU DO NOT AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL/COMPLETE +INSTALLATION OF, OR IN ANY OTHER WAY MAKE USE OF THE SOFTDEVICE. + +1. Grant of License +Subject to the terms in this Agreement Nordic grants Licensee a limited, non-exclusive, non-transferable, non-sub licensable, revocable license +("License"): (a) to use the SoftDevice solely in connection with a Nordic integrated circuit, and (b) to distribute the SoftDevice solely as integrated +in Licensee Product. Licensee shall not use the SoftDevice for any purpose other than specifically authorized herein. It is a material breach of this +agreement to use or modify the SoftDevice for use on any wireless connectivity integrated circuit other than a Nordic integrated circuit. + +2. Title +Nordic retains full rights, title, and ownership to the SoftDevice and any and all patents, copyrights, trade secrets, trade names, trademarks, and +other intellectual property rights in and to the SoftDevice. + +3. No Modifications or Reverse Engineering +Licensee shall not, modify, reverse engineer, disassemble, decompile or otherwise attempt to discover the source code of any non-source code +parts of the SoftDevice including, but not limited to pre-compiled hex files, binaries and object code. + +4. Distribution Restrictions +Except as set forward in Section 1 above, the Licensee may not disclose or distribute any or all parts of the SoftDevice to any third party. +Licensee agrees to provide reasonable security precautions to prevent unauthorized access to or use of the SoftDevice as proscribed herein. +Licensee also agrees that use of and access to the SoftDevice will be strictly limited to the employees and subcontractors of the Licensee +necessary for the performance of development, verification and production tasks under this Agreement. The Licensee is responsible for making +such employees and subcontractors comply with the obligations concerning use and non-disclosure of the SoftDevice. + +5. No Other Rights +Licensee shall use the SoftDevice only in compliance with this Agreement and shall refrain from using the SoftDevice in any way that may be +contrary to this Agreement. + +6. Fees +Nordic grants the License to the Licensee free of charge provided that the Licensee undertakes the obligations in the Agreement and warrants to +comply with the Agreement. + +7. DISCLAIMER OF WARRANTY +THE SOFTDEVICE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EXPRESS OR IMPLIED AND NEITHER NORDIC, ITS +LICENSORS OR AFFILIATES NOR THE COPYRIGHT HOLDERS MAKE ANY REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR +THAT THE SOFTDEVICE WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. THERE +IS NO WARRANTY BY NORDIC OR BY ANY OTHER PARTY THAT THE FUNCTIONS CONTAINED IN THE SOFTDEVICE WILL MEET THE +REQUIREMENTS OF LICENSEE OR THAT THE OPERATION OF THE SOFTDEVICE WILL BE UNINTERRUPTED OR ERROR-FREE. +LICENSEE ASSUMES ALL RESPONSIBILITY AND RISK FOR THE SELECTION OF THE SOFTDEVICE TO ACHIEVE LICENSEE’S +INTENDED RESULTS AND FOR THE INSTALLATION, USE AND RESULTS OBTAINED FROM IT. + +8. No Support +Nordic is not obligated to furnish or make available to Licensee any further information, software, technical information, know-how, show-how, +bug-fixes or support. Nordic reserves the right to make changes to the SoftDevice without further notice. + +9. Limitation of Liability +In no event shall Nordic, its employees or suppliers, licensors or affiliates be liable for any lost profits, revenue, sales, data or costs of +procurement of substitute goods or services, property damage, personal injury, interruption of business, loss of business information or for any +special, direct, indirect, incidental, economic, punitive, special or consequential damages, however caused and whether arising under contract, +tort, negligence, or other theory of liability arising out of the use of or inability to use the SoftDevice, even if Nordic or its employees or suppliers, +licensors or affiliates are advised of the possibility of such damages. Because some countries/states/jurisdictions do not allow the exclusion or +limitation of liability, but may allow liability to be limited, in such cases, Nordic, its employees or licensors or affiliates’ liability shall be limited to +USD 50. + +10. Breach of Contract +Upon a breach of contract by the Licensee, Nordic and its licensor are entitled to damages in respect of any direct loss which can be reasonably +attributed to the breach by the Licensee. If the Licensee has acted with gross negligence or willful misconduct, the Licensee shall cover both +direct and indirect costs for Nordic and its licensors. + +11. Indemnity +Licensee undertakes to indemnify, hold harmless and defend Nordic and its directors, officers, affiliates, shareholders, licensors, employees and +agents from and against any claims or lawsuits, including attorney's fees, that arise or result of the Licensee’s execution of the License and which +is not due to causes for which Nordic is responsible. + +12. Governing Law +This Agreement shall be construed according to the laws of Norway, and hereby submits to the exclusive jurisdiction of the Oslo tingrett. + +13. Assignment +Licensee shall not assign this Agreement or any rights or obligations hereunder without the prior written consent of Nordic. + +14. Termination +Without prejudice to any other rights, Nordic may cancel this Agreement if Licensee does not abide by the terms and conditions of this +Agreement. Upon termination Licensee must promptly cease the use of the License and destroy all copies of the Licensed Technology and any +other material provided by Nordic or its affiliate, or produced by the Licensee in connection with the Agreement or the Licensed Technology. + +15. Third party beneficiaries +Nordic’s licensors are intended third party beneficiaries under this Agreement. \ No newline at end of file diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_softdevice.hex b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_softdevice.hex new file mode 100644 index 0000000000..7551e41c5b --- /dev/null +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_8_0_0/s110_nrf51822_8.0.0_softdevice.hex @@ -0,0 +1,5649 @@ +:020000040000FA +:10000000C0070000D1060000D1000000B1060000CA +:1000100000000000000000000000000000000000E0 +:100020000000000000000000000000005107000078 +:100030000000000000000000DB000000E500000000 +:10004000EF000000F9000000030100000D010000B6 +:1000500017010000210100002B0100003501000004 +:100060003F01000049010000530100005D01000054 +:1000700067010000710100007B01000085010000A4 +:100080008F01000099010000A3010000AD010000F4 +:10009000B7010000C1010000CB010000D501000044 +:1000A000DF010000E9010000F3010000FD01000094 +:1000B00007020000110200001B02000025020000E0 +:1000C0001FB5C046C04600F0EFFA04B00FB41FBD24 +:1000D00008205A49096809580847382057490968CB +:1000E000095808473C2055490968095808474020E5 +:1000F0005249096809580847442050490968095875 +:10010000084748204D490968095808474C204B4981 +:10011000096809580847502048490968095808479C +:100120005420464909680958084758204349096836 +:10013000095808475C204149096809580847602068 +:100140003E4909680958084764203C49096809582C +:100150000847682039490968095808476C20374919 +:100160000968095808477020344909680958084740 +:100170007420324909680958084778202F490968CE +:10018000095808477C202D490968095808478020EC +:100190002A490968095808478420284909680958E4 +:1001A0000847882025490968095808478C202349B1 +:1001B00009680958084790202049096809580847E4 +:1001C00094201E4909680958084798201B49096866 +:1001D000095808479C201949096809580847A02070 +:1001E0001649096809580847A4201449096809589C +:1001F0000847A8201149096809580847AC200F4949 +:10020000096809580847B0200C4909680958084787 +:10021000B4200A49096809580847B82007490968FD +:1002200009580847BC2005490968095808470000D3 +:1002300003480449024A034B7047000000000020B5 +:10024000C0070000C00700000122D84B5A6000BF61 +:10025000D74A1268002AFBD0016000BFD44A126856 +:10026000002AFBD00022D14B5A6000BFD04A12684E +:10027000002AFBD07047F0B505460E46174600240D +:1002800006E0A200B158A2005019FFF7DDFF641C80 +:10029000BC42F6D30020F0BD0120C043C549086030 +:1002A000401048607047014601229204086890425D +:1002B00001D9102070470020FCE7F0B505460C4638 +:1002C0001646002706E028462168FFF7BDFF2D1DD2 +:1002D000241D7F1CB742F6D3F0BD70B505460C4611 +:1002E0002E460BE0304600F075F9FF2C01D80024B3 +:1002F00001E0FF3C013C012080023618002CF1D1C6 +:1003000070BD0146012292044868904201D909203B +:100310007047A9484069401C01D10F20F8E7002030 +:10032000F6E7FEB504462068030000F037FA05043E +:100330002B4249598B00201DFFF7E3FF0546002D96 +:1003400001D02846FEBDFFF7A7FF0120C00200F044 +:1003500041F9042221469948FFF78DFF002801D07A +:100360000320EFE708222146944800F06DF90028A9 +:1003700006D1002192480068FFF766FF00F00CF9F3 +:100380000320DFE7A768E6686068019031463846D9 +:10039000FFF7A3FF324638460199FFF78EFFB20000 +:1003A0003846019900F050F9002800D1CAE703202F +:1003B000C8E700F0E3F9834800688349086041E03A +:1003C00060680190E668A0680090B200009901980A +:1003D00000F03AF90746002F00D1B3E70E20B1E74D +:1003E000201DFFF760FF0546002D01D02846A9E734 +:1003F0006068002807D1FFF74FFF0320800200F05C +:10040000E9F800F0C9F8FFF747FF0120C00200F04B +:10041000E1F8042221466948FFF72DFF002801D0AA +:1004200003208FE708222146644800F00DF90028D8 +:1004300006D1002162480068FFF706FF00F0ACF823 +:1004400003207FE700BF00207CE770B505460C461F +:10045000182D04D12068FFF764FF206002E001201E +:10046000206000BF00BF70BDF0B589B05248406940 +:1004700003905248806881000398081802900398FE +:10048000000B01900121090302984018401E000B47 +:1004900000900124002520462946019A00F0C4F866 +:1004A0000022401E91410791069001260027304608 +:1004B0003946009A00F0B8F80022401E914105919B +:1004C0000490049BDB43059AD2430698184307998E +:1004D00011430791069037490698086007984860CD +:1004E00009B0F0BD70B53448446934488568466841 +:1004F000AA003146204600F0A7F8002801D00020CD +:1005000070BD0120FCE72D484068002801D0012083 +:1005100000E000200546FFF7E5FF002807D0FFF7C1 +:10052000BBFE0320800200F055F800F035F8FFF71D +:100530009BFF002D0ED020484669204884684768FC +:1005400021463046FFF7C9FE224639463046FFF7BE +:10055000B4FE00BF00F020F810B5184844681A48EF +:100560000460204600F0DCF810BD15480068006803 +:10057000401C01D100BFFEE710480068002802D0EF +:10058000042806D101E0FFF7BEFFFFF7E5FF00BF3B +:10059000FEE700BF00BFFEE7BFF34F8F0B480C49DB +:1005A000C860BFF34F8F00BFFEE7000000E50140C9 +:1005B00000E40140000600400010001000080000A8 +:1005C000B8070000BC070000000000200400FA0586 +:1005D00000ED00E010B50146104B1A6808460223F2 +:1005E0000F4C636000BF0F4B1B68002BFBD0531CEC +:1005F00004D0904202D20A4B186101E0084B986087 +:1006000000BF084B1B68002BFBD00023044C636029 +:1006100000BF044B1B68002BFBD010BD0010001066 +:1006200000E5014000E4014010B5202A04DB01464A +:10063000203A9140002010BD914020239C1A03468F +:10064000E3401943904010BD034610B50B439B0790 +:100650000FD1042A0DD308C810C9121FA342F8D025 +:1006600018BA21BA884201D9012010BD0020C04328 +:1006700010BD002A03D0D30703D0521C07E000208E +:1006800010BD03780C78401C491C1B1B07D1037854 +:100690000C78401C491C1B1B01D1921EF1D118463D +:1006A00010BD70477047704710B500F007F810BDD7 +:1006B000014B1B68DB6818470000002019481A49E5 +:1006C0007047FFF7FBFFFFF7FBFC00BD20BFFDE716 +:1006D0001649174C24688C420BD1164B1B68994263 +:1006E0000CD1154B154A1360186810498842EDD09B +:1006F0000AE0134880F30888124B18470F4A13602A +:1007000018680A498842E1D080F308880E49884277 +:1007100004DD0E48026802210A4302605B68184744 +:100720000346DFE7C0070000C0070000FFFFFFFF30 +:10073000000C000014100010001000000000002049 +:10074000000400206B05000000200020240500406C +:100750000D48704502D1EFF3098101E0EFF3088104 +:10076000886902380078182802D1C046074A104725 +:10077000074A12682C3212681047000000B5054B7A +:10078000054A9B58984700BDFDFFFFFF4B04000042 +:1007900000000020001000000400000030B4744687 +:1007A000641E2578641CAB4204D3635D5B00E318D0 +:1007B00030BC18471D46F8E7000C00000010000090 +:1010000000150020CD64010025220000336401009A +:1010100000000000000000000000000000000000D0 +:101020000000000000000000000000003D6501001D +:101030000000000000000000252200002522000022 +:10104000A9650100AF6501002522000025220000EE +:101050002522000025220000252200002522000074 +:10106000B56501002522000025220000BB650100B6 +:1010700025220000C1650100C7650100CD650100A2 +:101080002522000025220000252200002522000044 +:101090002522000025220000252200002522000034 +:1010A000D3650100D965010025220000252200003A +:1010B0002522000025220000252200002522000014 +:1010C00000F002F815F0E3F90CA030C80838241835 +:1010D0002D18A246671EAB4654465D46AC4201D170 +:1010E00015F0D5F97E460F3E0FCCB64601263342A9 +:1010F00000D0FB1AA246AB4633431847B456010052 +:10110000E4560100103A02D378C878C1FAD85207E1 +:1011100001D330C830C101D504680C6070470000AD +:101120000023002400250026103A01D378C1FBD803 +:10113000520700D330C100D50B6070471FB5C046C1 +:10114000C04615F063F904B00FB41FBDF0B44046BB +:10115000494652465B460FB402A0013001B506482D +:10116000004700BF01BC86460FBC804689469246B8 +:101170009B46F0BC70470000C11000008269024924 +:101180008161024810447047911100000100000085 +:1011900001B41EB400B50BF0E6FF01B40198864619 +:1011A00001BC01B01EBD0000401E00BF00BF00BF5B +:1011B00000BF00BF00BF00BF00BF00BF00BF00BF37 +:1011C00000BFF1D17047000070B505460C461646C9 +:1011D00002E00FCC0FC5103E102EFAD2082E02D31B +:1011E00003CC03C5083E042E07D301CC01C5361F2E +:1011F00003E021782970641C6D1C761EF9D270BD45 +:101200008307FF22DB0E9A408907090E99400028C8 +:101210000BDA0007000F0838830828489B001818CD +:10122000C36993430B43C3617047830824489B0001 +:101230001B181868904308431860704710B504469F +:1012400000210120FFF7DCFF00211820FFF7D8FF65 +:1012500000210B20FFF7D4FF02211920FFF7D0FF58 +:1012600002210D20FFF7CCFF02210E20FFF7C8FF5F +:1012700002210F20FFF7C4FF0221C81FFFF7C0FFA4 +:1012800003211620FFF7BCFF03211520FFF7B8FF4D +:10129000204600F019F8002010BD6421018070473D +:1012A00010B500F020F810BD0648704710B500F0EA +:1012B00022F810BD704770477047000000ED00E055 +:1012C00000E400E003F9004370B505462D4C07200B +:1012D0002070A01CFFF7E1FF5920A080294620467E +:1012E00000F099FB70BD10B500F09EFB2549002071 +:1012F000891E087010BDF8B5224E0446B61E30781F +:1013000001270D46002807D0204660380B2808D852 +:10131000204600F03DFF2BE0602CF9D01A48086011 +:10132000F8BD20466C38032803D8204600F071FF32 +:101330001EE0204670381F2803D8204600F045F9EB +:1013400016E0204690380F2803D8204600F0E8F831 +:101350000EE02046A0380F2803D8204600F074F88D +:1013600006E02046B0380F2804D8204600F0CAF91D +:10137000286000E02F60602CD2D128680028CFD1EF +:101380003770F8BD1A000020013000000120244908 +:10139000C003086023490020087007202249C005C7 +:1013A0008860704770B51F4D04462878A04207D06A +:1013B000002C05D0002803D01CA14D2015F033F8D7 +:1013C0002878A0420ED000211D4A17482C70002C0E +:1013D00019D01C4B012C06D0022C0BD013A1682075 +:1013E00015F021F870BD11600221116053610321D5 +:1013F000090605E011600321116053610121C9054F +:101400008160416070BD116011600721C905816074 +:1014100070BD10B505A1712015F005F810BD0000D4 +:1014200080E100E02000002000F501407372635C61 +:1014300068616C5F63636D5F6161722E63000000C1 +:1014400000F500404001002010B5A038030015F061 +:10145000DBF80B070E172028313A414B525C650030 +:101460004B6808788A68194603F0E6F910BD888849 +:101470008A6883B20888194680B203F0ECF910BD7F +:1014800008884C68CB688A6880B2214603F0E7F987 +:1014900010BD08884B688A6880B2194603F0FBF9D2 +:1014A00010BD88888A6883B20888194680B203F024 +:1014B00007FA10BD88888A6883B20888194680B206 +:1014C00003F041FA10BD08884A6880B2114603F063 +:1014D00080FA10BD088982B2888883B208881946CC +:1014E00080B203F081FA10BD08884A6880B21146C4 +:1014F00003F09EFA10BD08894C6882B20888CB6858 +:1015000080B2214603F018FB10BD08884C68CB68F8 +:101510008A6880B2214603F02AFC10BD012010BD6C +:1015200010B59038030015F06FF809060F161D244A +:101530002C363F464E0088888A6883B20888194650 +:1015400080B204F031F910BD08884A6880B21146B3 +:1015500004F065F910BD08884A6880B2114604F0AD +:101560006AF910BD08884A6880B2114604F070F923 +:1015700010BD08884B688A6880B2194604F07BF970 +:1015800010BD088982B2888883B20888194680B263 +:1015900004F07AF910BD08894B6882B208881946B0 +:1015A00080B204F090F910BD08884A6880B21146F4 +:1015B00004F09BF910BD888882B20888114680B279 +:1015C00004F0EFF910BD012010BD10B57038030014 +:1015D00015F01AF81B0F15192125282F363B40440A +:1015E000484C53585F688D707980888D8D8D8D8FB4 +:1015F00096004A680878114608F0FDFD10BD08689D +:1016000008F04AFE10BD0C790B7B8A6808682146F9 +:1016100008F053FE10BD086808F011FF10BD08F077 +:1016200065FB10BD08884A6880B2114609F043F88E +:1016300010BD0A790888114680B209F0D3F810BDB0 +:10164000087840B209F0DCF810BD088880B209F0D3 +:10165000F0F810BD086809F0FEF810BD086801F048 +:10166000D2FB10BD086801F0FCFB10BD088982B2F6 +:1016700009C9194609F007F910BD05C9114609F055 +:1016800051F910BD08884A6880B211460AF0A6F9DF +:1016900010BD0C790888CB688A6880B221460AF0B0 +:1016A000C5FA10BD0B7908888A6880B219460AF01D +:1016B0006DFC10BD08884C68CB688A6880B22146F2 +:1016C0000AF0D5FC10BD08884A6880B211460AF0BD +:1016D00018FD10BD0B7908880A7A80B2194609F006 +:1016E00044F910BD088880B209F044F910BD062005 +:1016F00010BD08884A6880B2114609F042F910BD51 +:10170000012010BD10B5B02805D0B12808D0B228EE +:101710000BD0012010BD088880B20BF0FBF810BD83 +:10172000088880B20BF015F910BD08884B688A68EC +:1017300080B219460BF01EF910BD000010B5030071 +:1017400014F062FF0A0609060C0C0F0F06060612BB +:1017500008F0F4FA10BD0AF0C5FE10BD01F03EFA23 +:1017600010BD06F09FFA10BDFAA1FE4814F05BFE12 +:1017700010BD3EB5FC49054603C900900191FF200C +:10178000C33069460881F94A092310460A212838DE +:101790000BF0BFFD0024F6480BF0D9FD641CE4B249 +:1017A0000A2CF8D3F14801231A4602A990300BF015 +:1017B000A0F9002804D0FF20E6A13D3014F033FE4C +:1017C000686800F024FC00211E22084604F06CF931 +:1017D00008F0C3FC02222421E64801F07DFBE54825 +:1017E00001222C214C3001F077FBE2490B20B0396B +:1017F00001F0FEF9002804D0FF20D6A1513014F0EA +:1018000012FE0AF03EFE02F097F96B460022082114 +:10181000D9A008F07DFB002804D0FF20CDA15730CF +:1018200014F001FE284602F0E7FC002804D0FF2057 +:10183000C8A1593014F0F7FDF3218900D14814F004 +:10184000D3FCD04801214171022181710721C1716E +:101850003EBD10B5CB4CA0780A2804D3FF20BDA113 +:10186000903014F0E0FD20786021484300190021F9 +:101870000173417BF722C908C900C91C1140EF223E +:10188000114041730121E1700C3010BD70B50E465E +:1018900000211C4619801546030014F0B5FE0723ED +:1018A000050B1711231D23002246294630460AF056 +:1018B00037FE70BD22462946304608F095F870BDC7 +:1018C00022462946304601F0E2FF70BD22462946F5 +:1018D000304603F0EAFD70BD22462946304600F04E +:1018E00010FC70BDFF209BA1EF3014F09CFD032085 +:1018F00070BD70B5A34CE078002818D02078602126 +:1019000048430019407B00254007400F0119087922 +:10191000401E08712078401CC0B220700A2800D1F7 +:101920002570A078401CA0700BF097FEE57070BD8C +:101930009448C079002800D08BE7704770B5914D6E +:10194000A86800280CD0FFF7F3FF002862D06022BF +:10195000A968FFF739FCFFF7CCFF0020A860EFE78C +:101960006879002856D0FFF774FF044681484C3050 +:1019700001F0C2FA6060002804D17A4875A14A30AB +:1019800014F051FD606801F01AFB00280DD02046CC +:1019900007F00BFF6078010703D5C008C000401CAA +:1019A0002BE0744861684C302DE0724861684C301F +:1019B00001F0ABFA00F05AFB00282BD1FFF749FFEA +:1019C00004466C4801F098FA6060002804D1332086 +:1019D00060A1000114F027FD606801F0F4FA00280E +:1019E00014D060680088608020460AF0CCFD6078E2 +:1019F000010706D5C008C000801C6070FFF779FFA2 +:101A00009EE75C48616801F080FA99E7594861688F +:101A100001F07BFA70BD10B55B4CE160A0605B48E3 +:101A200000F032FC607010BD57490020087070470C +:101A300070B5574E0546706A94B00C46401C04D1F0 +:101A4000B06AC0430004000C0BD0306AC007C00F5E +:101A50002870706A14F0DBFBB06A2071000A6071B4 +:101A600014E02B206946087009A9684601F07BFA4A +:101A7000002804D03B4837A17E3814F0D4FC012064 +:101A8000287006220AA9204614F04FFB2878002867 +:101A900003D06079C0210843607114B070BDF0B507 +:101AA0003B4C0646206895B00D4637460837401C2B +:101AB00008D16068401C05D1A068401C02D1E068D4 +:101AC000401C11D02068314614F0A1FB6068311D24 +:101AD00014F09DFBA068394614F099FBE06831468C +:101AE0000C3114F094FB25E02B206946087009A9FD +:101AF000684601F038FA002804D01A4815A1553874 +:101B000014F091FC08220AA9304614F00EFB2B2099 +:101B10006946087009A9684601F025FA002804D032 +:101B200010480CA14E3814F07EFC08220AA9384651 +:101B300014F0FBFA20692E460836401C08D1606973 +:101B4000401C05D1A069401C02D1E069401C33D083 +:101B500020691FE07372635C686F73745F636F72F8 +:101B6000652E6300C3020000F866010094010020A6 +:101B70003D170000640800206E524635313832327D +:101B800000000000E8030020240000203D190000B0 +:101B900080000010294614F03AFB6069291D14F0FA +:101BA00036FBA069314614F032FBE06929460C315E +:101BB00014F02DFB15B0F0BD2B246846047009A964 +:101BC00001F0D1F9002803D0F649F74814F02BFCB6 +:101BD000082209AF28460AA914F0A7FA684604703B +:101BE00009A901F0C0F9002804D0EF48ED49C01D53 +:101BF00014F019FC0822391D304614F096FAD9E782 +:101C000070B5EA4C0546A068002804D0E648E549CE +:101C1000563014F008FCA56070BD10B50146E448CC +:101C200001F073F9E1498879401CC0B2887101283C +:101C300003D1E048407800F04BFB10BD70B504467E +:101C4000DD4816460D46814204D1D748D549CB30F0 +:101C500014F0E9FB012E05D0D348D249DA3014F054 +:101C6000E2FB70BD6620207000202072A58101205B +:101C7000A07370BD70B515460C460646FFF758FEBA +:101C800000280CD066210170468001210172216874 +:101C90000161A18881820573FFF72BFE70BD1321BE +:101CA000304608F09FFD70BDC2494968884201D2A4 +:101CB00010207047072101700020704770B5BD4C9F +:101CC00005462078002694B0002801D00820E4E6DC +:101CD000BA4A6260954201D21020DEE668680028A8 +:101CE00009D00921D82804D3C31C9B089B00834238 +:101CF00005D00846D1E60720000268600EE0012109 +:101D000009074B6B896B4B43AD49511A0122591A94 +:101D1000D202891A814201D20421EAE700F050FF81 +:101D20006178A06806F052F8E068401E07280BD8DA +:101D3000302269460A708870684607F007F9002863 +:101D400002D009A806F07CFA2846FFF712FD012010 +:101D500020703046A1E6F8B5044696480F46406824 +:101D6000814208D3002C01D0844204D3E01C8008B7 +:101D70008000A04201D01020F8BD8C488178002955 +:101D800011D0398800914178602251430D18287B89 +:101D90000C350007000F3B4600222946FFF776FD71 +:101DA000060004D015E0002038800520F8BD002C86 +:101DB00013D039880098814201D90C260DE028788B +:101DC0003B460007000F22462946FFF75FFD06004D +:101DD00005D00C2E01D0002038803046F8BD734C61 +:101DE0006078401CC0B260700A2801D10020607089 +:101DF000A078401EA07068784107490F01290ED0D5 +:101E0000022906D003291AD066496E4814F00BFB4C +:101E1000E3E7C006E1D46868FFF7FFFEDDE764484A +:101E200069684C3001F071F86079401CC0B2607193 +:101E30000128D2D15F48407800F04AFACDE7E07936 +:101E4000401CE071C9E7604A10B5904209D3594A75 +:101E50000124A4045268A04201D3904201D39142CC +:101E600001D2102010BD00F0FCFE10BD564B10B585 +:101E7000994209D34F4B0124A4045B68A14201D3CA +:101E8000994201D39A4201D2102010BD022803D0FA +:101E9000102801D0092010BD00F009FF0028FAD059 +:101EA000052010BD484B10B598420DD3414B01247D +:101EB000A4045B68A04201D3984205D3994203D39E +:101EC000002A03D09A4201D2102010BD00F015FF65 +:101ED0000028FAD0072010BD10B50446354894B04C +:101EE0004068844202D2102014B010BD0F2008A90F +:101EF000087369460BA801F036F80028F4D168464B +:101F0000007A207068464089608068468089A08099 +:101F10000020E9E710B500290BD0264A526891420B +:101F200002D30B68934201D2102010BD8A88002A88 +:101F300002D001F05AFE10BD092010BD10B5224A92 +:101F400094B091420ED31B4A01239B0452689942DC +:101F500001D3914206D3441E1E2C41D8994203D38B +:101F6000914201D21020BFE7012837D10878002420 +:101F7000C007C00F002803D003206946887001E025 +:101F80006846847038206946087009A9684600F0E0 +:101F9000EAFF002804D041200CA1C00014F043FA4D +:101FA0002046A1E7541B000093020000E803002034 +:101FB0006408002024000020FFFF0000001900201A +:101FC000000000200A040000008001007372635CBE +:101FD000686F73745F636F72652E6300072083E719 +:101FE0000246203A1F2AF9D807F0F9FF7CE710B51E +:101FF0005F4A5268914201D2102010BD0246203A39 +:102000001F2A02D808F065F810BD072010BD70B572 +:102010000546584C0020207020464619544846601A +:10202000E01C80088000A04204D0FF2052491330F9 +:1020300014F0F9F901200007C06AC0430006000E41 +:1020400003D14E480068401C03D04D484D49301A1A +:10205000C862A8B20122214604F039F9002804D050 +:10206000FF204549233014F0DEF970BDF0B595B07E +:102070003B2008A9087369460BA800F074FF0028EC +:1020800004D0FF203C496B3014F0CDF93E4E0024C3 +:102090006D4630E02F19B87DC10706D0400704D443 +:1020A00060004019C0880AF08DFB3848807900280C +:1020B0001FD0B87D80071CD560004019C088002261 +:1020C00006210AF09CFB002813D03C2108A80173CC +:1020D00060004019C1886846C18569460BA800F0B8 +:1020E00042FF06000BD0FF2023497F3014F09BF9FC +:1020F00005E0641CE4B268460079A042CAD83046C4 +:1021000058E5F7B505460078002700090C463E461D +:10211000062804D0FF201849A83014F084F9287A42 +:1021200000280ED0012814D0FF201349C93014F024 +:102130007AF90298002C068001D027806680002062 +:10214000FEBD02270926002C0ED0A889A080A87BFE +:1021500008E003271426002C06D02869E060A88A2E +:102160002082287B2072E4E702980680E7E70000DF +:102170002400002000190020CC1F000000100010D7 +:10218000000000200005004004300000E8030020AB +:1021900010B56038030014F037FA0A060A0F131856 +:1021A0001F252930353A0868FFF788FD10BD05C99D +:1021B0001146FFF7D0FD10BD0868FFF775FD10BD93 +:1021C00005C91146FFF73FFE10BD4B6808788A68C5 +:1021D0001946FFF74BFE10BD8A6809C91946FFF77B +:1021E00061FE10BD0868FFF777FE10BD08884A68D9 +:1021F00080B21146FFF78EFE10BD05C91146FFF7EC +:102200009DFE10BD05C91146FFF7F1FE10BD01206E +:1022100010BD0120704700000E4A12680C498A4226 +:102220000AD118470B4A1268094B9A4204D101B5EA +:102230000AF090FF03BC8E46074909680958084711 +:1022400006480749054A064B704700000000000099 +:10225000BEBAFECA7800002004000020001500204D +:102260000015002001203F49400608603E490860F3 +:102270003E490A68FF231B029A4383121A430A60ED +:10228000384980390860704710B502460420384943 +:1022900004E0C3005B181B79002B0AD00346401EE4 +:1022A000C0B2002BF5D133A1432014F0BCF8FF20BD +:1022B00010BDC300CA50002259184A718A71012208 +:1022C0000A7110BD2A4A0021C000801801717047B0 +:1022D00010B50446042803D326A1522014F0A3F815 +:1022E0002348E1000C182079012803D021A15320B4 +:1022F00014F099F86079A179401CC0B2814200D0F5 +:1023000060710120174940068031086010BD70B52A +:10231000164804250068164E0004800F1B4C022846 +:102320001AD014A1692014F07EF815E02078C100BD +:1023300088190279012A07D1427983799A4203D018 +:1023400042798271705880472078401CC0B220705A +:10235000042801D30020207028466D1EEDB200280D +:10236000E4D170BD80E100E080E200E018E400E02C +:10237000E00800207372635C736F635F7369676E5C +:10238000616C6C696E672E630000000034000020F1 +:1023900010B5EFF31080C407E40F72B6D24841784D +:1023A000491C41704078012801D10BF07BF9002CC9 +:1023B00000D162B610BD70B5CB4CE07800280AD1D0 +:1023C0000125E570FFF7E4FF0BF074F9002804D055 +:1023D00000200BF047F9002070BDC44865714560CE +:1023E000F9E770B5EFF31080C507ED0F72B6BE4C7C +:1023F0006078002803D1BEA18F2014F014F8607813 +:10240000401E60706078002801D10BF04FF9002D5C +:1024100000D162B670BD10B5B348C178002904D0B0 +:1024200000214171C170FFF7DCFF002010BD10B525 +:1024300004460BF03FF9AC49C978084000D00120B0 +:102440002060002010BDF8B50246A74C0026A671FA +:102450000820042101251027130014F0D5F80D08D9 +:102460000A0C0E101214161E262123252800257191 +:1024700022E0022001E021711EE020711CE02771A2 +:102480001AE02020F9E7012616E0FFF781FF0BF0A4 +:1024900011F90028FBD002260EE02171A5710BE096 +:1024A0002771FBE7202000E040202071F6E7FF20A5 +:1024B0008FA1763013F0B7FF0BF008F9002809D090 +:1024C0000BF00AF9B04205D130460BF008F90028AC +:1024D000FAD02CE001208007C560894900224A60BB +:1024E000884A9661814B02225A608560864802695B +:1024F000D243D206D517026910231A4302610F4650 +:102500006D1C00E020BF78680028FBD030460BF03F +:10251000E6F80028FAD0002D04D17B48026910218A +:102520008A43026171490220886000207860A079A6 +:1025300000280CD00BF0BEF805460BF01BF8734AD0 +:10254000002D02D0A260E06001E0E260A060002EF9 +:1025500001D100F0A5F8F8BD10B504460BF0B0F8B5 +:10256000002805D060490120C8704A78521C4A7082 +:102570002046FFF768FF10BDF8B5614DA86800263A +:10258000012802D1AE600BF06DF86868012800D117 +:102590006E6028680127544C012812D12E606079A2 +:1025A000002803D000200BF05DF866712078002829 +:1025B00007D00BF07FF8002803D0012080070761C7 +:1025C000A770286901282AD12E6100F05FF8012048 +:1025D00080074761A079002815D00BF06BF80090B8 +:1025E0000AF0C8FF0099002901D0E16800E0A16865 +:1025F000411A022901DA8A1C11DC0099002901D054 +:10260000E06000E0A060FFF7C3FE0BF053F8002885 +:1026100004D0012080070761A77000E02770E868F8 +:10262000012812D100F032F800F030F800F02EF856 +:10263000A078002804D1FF202DA1033013F0F3FE71 +:10264000EE60A6702670FFF7CCFEF8BD10B5264CE4 +:10265000E078002801D10BF029F80120810788617A +:1026600000F014F8A07800280BD0254CE068002872 +:1026700003D10BF034F80028F8D10020E06000F01E +:1026800005F800201949C043886010BD08B55020E6 +:10269000694608806A461088411E1180FAD208BD3A +:1026A000F8B5124819278760154900200860C860EE +:1026B0000BF000F8BE0701240B4D002802D0346156 +:1026C000AC7000E02C70FFF763FE084847600D49CE +:1026D00028798863FFF7DAFFB461FFF7D7FF08496D +:1026E000002008617461F8BD38000020000300403C +:1026F0007372635C736F635F636C6F636B2E6300F5 +:10270000000100400005004000ED00E0FFFFFF7FFA +:102710008107C90E002808DA0007000F0838800872 +:102720002E4A80008018C06904E080082C4A80008E +:1027300080180068C8400006800F704710B50D2053 +:10274000FFF7E6FFC4B20420C043FFF7E1FFC0B2C9 +:10275000844203D023A11A2013F065FE26490120EC +:10276000486010BD0121254A48031060244B002217 +:102770001A60244A5160244A1060244A11601F499B +:1027800080390860704701211C4A480310601F4AC5 +:1027900051601B4A002111601B490860704710B549 +:1027A00017490868012804D00EA1572013F03BFEFA +:1027B00010BD114880680022C0B20A600AF020FCF7 +:1027C00010BD10B50E4801680029FCD0FFF7E7FFE7 +:1027D00001200D494003086010BD000000ED00E03D +:1027E00000E400E07372635C736F635F68616C5F49 +:1027F000726E672E6300000000D5004080E100E0AB +:1028000000D1004000D3004080E200E000D0004052 +:1028100030B40121BC48C9020160CD1005604A03F3 +:102820000260BA4803681B021B0A036004680023A5 +:10283000240A24020460B6480468240A24020460BE +:10284000B448012444608460B34C23606360A36097 +:10285000B24B19601D601A60B14B19601A600121FA +:10286000016030BC704710B40121A748CA02026061 +:102870000B0203600C060460A64841608160A94811 +:1028800041680029FCD1A4490020086048608860A4 +:10289000A24802600360046010BC704701219F4899 +:1028A000C9020160C91001607047002805D00128E5 +:1028B00005D0022805D19C4870479C4870479C4829 +:1028C000704710B59BA18B2013F0ADFD002010BD0B +:1028D00070B500219E4C9F4D9F4A8F4B002808D019 +:1028E00001281DD0022822D092A1B32013F09BFD15 +:1028F00070BD01200004A060A86011601960974BB2 +:10290000C2039A60964A90607F4A00121060954810 +:10291000016086480160944801609448017070BD70 +:1029200001204004A060A8605160596070BD012082 +:102930008004A060A8609160996070BDF8B594466D +:10294000834A8B4F834D00240126002808D001289C +:1029500032D0022840D077A1E82013F064FDF8BD02 +:10296000891E0902090A0120000490603C64686025 +:102970006C4A1164012B1DD000217C4A7D4B5170A3 +:102980006146DC63DE637C4B5C6002249C60042453 +:102990001C61744B3D31196073490E605F4B8915A2 +:1029A00019606F4B58605E4801606C49C005486013 +:1029B0001670F8BD0121E0E70120704E4004704F11 +:1029C000012B04D13464506068603964F8BD9060B4 +:1029D000346468603964F8BD01206A4E80046A4F2F +:1029E000012BF4D1EEE74F484068704770B54A4D6F +:1029F00028680026564C012806D1A068C00303D5DC +:102A000001200004A0602E606868012809D1A06838 +:102A1000800306D501204004A0606E6001200BF009 +:102A200041FEA868012809D1A068400306D501200D +:102A30008004A060AE6002200BF034FE70BD10B5C3 +:102A40004A490878002818D00120444AC0079060FD +:102A5000434AC00B90602C4A00121060414A00208B +:102A60001060324A1060404A106008704A78002AAC +:102A700002D048700BF016FE10BD0320FAE70120CB +:102A8000424900060860704701202449000608609A +:102A9000704701203D4940050860704701201F49EB +:102AA00040050860704733490020C86388151B49FA +:102AB00008607047410A364AC005C00D5043801C6B +:102AC0005143400A0818704710B4324C430B63431B +:102AD0001B0C5C020C602E4C6343C31A2E485C0234 +:102AE00058432B4B400D4343E31A0124DB032404DA +:102AF0001B191B1613700A681018086010BC704769 +:102B000010B50BF0A2FE10BD80E100E008E400E08B +:102B100018E400E000B0004040B1004080E200E076 +:102B200000E100E000B5004048B1004040810040B5 +:102B300044B100407372635C72656D5F68616C5F85 +:102B40006576656E745F74696D65722E6300000052 +:102B500000B3004040B3004040B5004000F50140E4 +:102B60000083004040850040008200404800002073 +:102B700000B10040C08F00400085004004B100401B +:102B800004B5004008B1004008B5004000E200E094 +:102B9000093D0000378600006F0C010010B50BF0F6 +:102BA00040FE10BD00200449C8630120012181407E +:102BB000024A116000BF7047C01F004080E200E081 +:102BC00010B50CF097FA0AF059F9FEF7DFFB12F096 +:102BD00063FA0CF0F5FF0CF081FF10BD70B50C46E8 +:102BE000054603F0D5FA214628460EF026F870BDBA +:102BF00070B50D46040012D0002D10D021012846DA +:102C000013F0F0FA10225449284613F08EFA524875 +:102C100001210838018044804560002070BD0120FA +:102C200070BD70B54C4E00240546083E11E0716839 +:102C300020014018817BAA7B914209D1C17BEA7BAC +:102C4000914205D10C22294613F042FA002806D001 +:102C5000641C30888442EADB0020C04370BD2046FB +:102C600070BD70B50D4606000AD0002D08D03A4C54 +:102C7000083C20886188401C884203D9042070BD2C +:102C8000102070BD3046FFF7CCFF002801DB401C50 +:102C90000AE020886168000140181022314613F0D4 +:102CA00044FA2088401C20802870002070BD70B538 +:102CB00014460D001FD0002C1DD00021A170022849 +:102CC00002D0102817D108E068782978000208435C +:102CD00011D00121A17010800BE02846FFF7A1FF61 +:102CE000002808DB401CA070687B297B0002084399 +:102CF0002080002070BD012070BD70B505461446CF +:102D00000E000AD000203070A878012807D004D91E +:102D1000114908390A8890420BD9012070BD002C56 +:102D200004D0287820702888000A5070022008708B +:102D300010E0002C0CD049680001411810222046F8 +:102D4000103913F0F2F9287820732888000A60738C +:102D500010203070002070BD540000205A4910B57A +:102D6000884207D301218904884205D3574909685D +:102D7000884201D2102010BD0146012006F0E4FA7D +:102D800010BD30B5044693B000200D4607901421C5 +:102D90000BA813F029FA1C21684613F025FA6A469D +:102DA000112010770020507710780221084310700E +:102DB00007A80C90012008AA907245486A46108521 +:102DC0000AA80B902088108460885084A088908482 +:102DD000E088D084907FF9210840801C40084000A2 +:102DE000907708209086108708A80F9010AA0BA94A +:102DF000684600F083FF002803D110A800882880CF +:102E0000002013B030BD3EB5044608206946088056 +:102E10002D48844207D301208004844205D32B48E7 +:102E20000068844201D210203EBD2146012006F0F8 +:102E30008BFA0028F8D12088694688806088C8808D +:102E4000A0880881E088488107F05FF801AB6A46F6 +:102E5000002101F0E1FB694609880829E4D003203C +:102E60003EBD1FB504460020029008206946088137 +:102E700015480391844207D301208004844206D37D +:102E800012480068844202D2102004B010BD07F03E +:102E90003CF8014602AA0F4801F055FD0028F4D184 +:102EA00069460989082901D00320EEE769460988A7 +:102EB000218069464988618069468988A180694680 +:102EC000C988E180E1E700000080010028000020BF +:102ED000042A0000FFFF000010B5031D036000205E +:102EE000521E04E05C181C60401C2346C0B2904295 +:102EF000F8DB0020186010BD01460A680020002A97 +:102F000002D0104612680A60704702680A600160C9 +:102F10007047000000B51E2823D00BDC0C281CD005 +:102F20001FDC030013F070FB090F1D111D1D171787 +:102F300013151D00302814DD3A38030013F064FB2C +:102F4000030F11091100002000BD214800BD04201D +:102F500000BD0D2000BD0F2000BD082000BD1120C8 +:102F600000BD032000BD10B50C4605F0EFFF0028A2 +:102F70001ED0204605F064F9002816D022780E2ACB +:102F80000DD00F2A0BD0022A09D0032A07D0102A0D +:102F900009D010A17C2013F046FA002010BDA078C3 +:102FA000FFF7B8FF10BD112010BD0AA18220F2E783 +:102FB00008A18820EFE710B504F083FF10BD10B51D +:102FC00005F03EF910BD10B504F0D9FF10BD0000AA +:102FD000023000007372635C686F73745F686369CA +:102FE0002E63000070477047704770477047704706 +:102FF00070477047704770477047704770470000D0 +:1030000010FFFFFFDBE5B151008001006400FFFF0E +:1030100003B40148019001BD09000020002803D03D +:103020008178012939D101E0102070470188FE4ADA +:10303000881A914233D01BDCFC4A881A91422ED068 +:103040000BDC00292BD00320C002081A27D001284E +:1030500025D001210903401A07E001281FD00228CA +:103060001DD0FF281BD0FF380138002815D116E0ED +:10307000FF220132811A904211D008DC01280ED0C3 +:1030800002280CD0FE280AD0FF2806D107E001292B +:1030900005D0022903D0032901D0002070470F205A +:1030A000704700B50B2826D009DC030013F0ACFAFA +:1030B0000B1D2125251B25292325271F1B00112832 +:1030C0001BD008DC0C2816D00D281CD00F2814D0DB +:1030D000102808D10FE0822809D084280FD0852835 +:1030E0000FD0872811D0032000BD002000BD05208F +:1030F00000BDCF4800BD072000BD0F2000BD04204B +:1031000000BD062000BD0C2000BD0D20800200BDCA +:1031100070B500290BD0CB1FFA3B81241E46CDB2DF +:10312000112B1BD2012805D0022806D009E000206F +:1031300010701DE0FF20043001E0FF2003308142C9 +:1031400018D0330013F060FA111613131613161665 +:103150001316161613131313161316000846FF380A +:1031600081381F2803D9FF39FE39022902D815708A +:10317000002070BD1470072070BD00B5030013F06F +:1031800043FA060406040C080A0C002000BD1120B6 +:1031900000BD072000BD082000BD032000BD007851 +:1031A0000207120F04D0012A05D0022A0AD10EE02C +:1031B000000907D108E00009012805D0022803D042 +:1031C000032801D0072070470870002070470620B0 +:1031D0007047002807D0012807D0022807D003280D +:1031E00007D007207047002004E0112002E02120D2 +:1031F00000E0312008700020704738B50C4605000B +:103200004FD06946FFF7CBFF002822D12088032149 +:1032100089028843694609788907090D0843208097 +:103220006946681CFFF7BBFF002812D121880320E4 +:1032300000038143684600788007800C01432180A9 +:10324000A8784007820F2020012A03D0022A03D049 +:10325000072038BD814300E00143218088B2010589 +:10326000890F08D0012189038843A9780907C90F6C +:1032700089030843208080B28104890F0AD0A9788D +:103280004004C906C90F400CC903084320808004CC +:10329000800F02D12088400403D5208840210843B4 +:1032A0002080002038BD70B50446002008801546F7 +:1032B0006068FFF7A2FF002815D12189A08981420B +:1032C00010D861688978C90708D00121490288426D +:1032D00008D8491C12F0A3FF298009E0FF21FF3123 +:1032E000884201D90C2070BDFF30FF3003302880A8 +:1032F000002070BD10B5137804785B08E4075B000C +:10330000E40F23431370FD2423400478A407E40F43 +:10331000640023431370FB24234004786407E40F04 +:10332000A40023431370F724234004782407E40FF8 +:10333000E40023431370EF2423400478E406E40FF1 +:10334000240123431370DF2423400478A406E40FF0 +:103350006401234313700078BF244006C00F23404C +:10336000800103431370002906D00878C10701D1FA +:10337000800701D5012000E00020C0015906490E58 +:103380000843107010BD30B50A8803239B020488DF +:103390009A4323059D0F02D1A3049C0F01D09B0FDC +:1033A00000E001239B021A4303230A801B039A4374 +:1033B00003889804840F02D11805830F01D0800F71 +:1033C00000E00120000302430A8030BDF3B593B052 +:1033D0000D000FD0139800280FD01221284612F0AC +:1033E00001FF03AAFF21012003F0E7F8002426468D +:1033F00037467AE0102015B0F0BD0720FBE768469D +:10340000807D01280BD16846818A0520C002081AF8 +:1034100010D0012810D0022812D0032812D0042C7A +:1034200014D0052C15D113E002290000012800005A +:1034300003300000012400E002246846468A08E0C8 +:10344000032406E068460424478A02E0052400E0DD +:1034500006246846418A1398814246D12C74002E76 +:1034600041D00DAA0EA905200292019100901023CF +:103470000022FF21304603F041F9002823D168469D +:10348000808E2A46C0B20EA9FFF711FC00281AD17F +:10349000AE81002F27D00DA9052008AE0291009023 +:1034A000132300220196FF21384603F027F9002854 +:1034B00009D16846808EF11CC01EC0B22A1DFFF7DC +:1034C000F6FB002801D0032095E708A88178427810 +:1034D00008021043E881062C05D16846807DA87259 +:1034E0006846808A2881002085E703A803F06EF8EB +:1034F000002884D0FFF7D5FD7DE7002805D0F94AE4 +:10350000012903D0022903D003207047518800E02D +:103510009188814201D1002070470720704770B523 +:103520000C4605461C21204612F05CFE002020803F +:10353000002D08D0012D04D0EBA1F04812F073FF4C +:1035400070BD062000E00520A07070BD70B592B07F +:103550001546064601206A461071107453740846D9 +:1035600008300395029048889082FEF7E1F9040044 +:1035700019D06580172069468883203600940AABED +:103580007178023307AA01A80DF05FF9064660784A +:10359000000701D5FEF7ADF9002E0AD03046FFF73F +:1035A000ECFD12B070BD1321284607F01BF9032073 +:1035B000F7E708A800906846838B0422012128467B +:1035C00008F035FEEDE770B506468AB000200D46DE +:1035D00007900590069003A90490052402460291E5 +:1035E0000190102300942946304603F087F8002804 +:1035F0000DD108A804A9009102900194684683891E +:1036000000222946304602F095FE002801D0FFF73F +:1036100048FD0AB070BD10B50DF01DFB10BDF0B532 +:1036200089B000260546059600780C460827030059 +:1036300012F0EAFF0CFD070C3A0B77779EC2FCD81C +:10364000E8FD68680A38FEF7E8FA0DE1A88800236B +:1036500080B201220321009009F08CFA0290002C24 +:1036600004D0A648A0A16E3012F0DDFE029800281A +:1036700004D1A2489CA16F3012F0D5FE02980099A7 +:1036800008300CF017FDFEF753F9040007D06078FE +:103690003843607000986080FEF72BF9E6E0132154 +:1036A000009807F09FF8EFE0002C04D1BD208EA118 +:1036B000800012F0B8FE608800230122032109F087 +:1036C00059FA0090002804D18C4887A1883012F064 +:1036D000AAFE0099002008802A7994461EE0C300C3 +:1036E0005B199B6807936B469B8B1A0708D5DA0614 +:1036F00006D56046C20050194038C08F088006E0E9 +:103700005B0409D50871C2005019C08848806078F0 +:10371000384360700226A7E0401CC0B28445DED862 +:10372000A2E0E888694608800090002C04D1734824 +:103730006DA1983012F077FE2878062814D10098F1 +:10374000C00B11D0608800230122032109F012FA76 +:10375000060004D1694864A1A23012F064FE002082 +:103760003071A88870803BE06078384360707BE0FF +:10377000002C04D161485CA1B43012F054FE608882 +:1037800000230122032109F0F5F90090002804D15B +:103790005A4855A1B73012F046FE009808300DF097 +:1037A000ACFA0121484002D1E888C00B5CD00098F7 +:1037B00061880226C180D7E7002C04D14F484AA176 +:1037C000D03012F030FE608800230122032109F07E +:1037D000D1F9002804D1494843A1D33012F023FE87 +:1037E0000226C1E7002C04D144483FA1DC3012F08E +:1037F0001AFE0226618801222046FEF71FFA0120E8 +:103800000590B1E7A889002380B20122032100902E +:1038100009F0B0F90746002C04D0384832A1EE3048 +:1038200012F001FE002F07D12FA101E00FE016E0FA +:103830003248EF3012F0F7FD686802902889694637 +:103840008881012202A90098FEF714FA0CE0002CEE +:103850008AD16D2024A1C00012F0E5FD84E727483D +:1038600021A1FE3012F0DFFD002C0DD060780007A2 +:103870000AD50598002807D18420207020465822B8 +:1038800029460830FDF7A0FC304609B0F0BDF7B579 +:103890000C460546007A224688B00A320292921CF3 +:1038A00004920027811E16323E4601920B0012F050 +:1038B000ABFE08F605F548488DD1F4F5688800237D +:1038C0000122032109F056F90190002803D106A135 +:1038D0000B4812F0A8FD01980088002812D052274A +:1038E000072601E1000900207372635C676174744C +:1038F000735F636F72652E63000000006F0200004B +:103900008603000051271E26002C7DD06888A080E9 +:103910000120A071019802990079C0004019C08966 +:10392000FFF754FD002870D101980079C0004019BC +:10393000C089208101980079C0004019408AA08385 +:10394000F2E0698A0091062820D1E889C00B1DD0D9 +:1039500008462230512786B2002CD6D0A889049977 +:10396000FFF734FD002873D16888A0800220A07181 +:10397000A88920810120A072288AE08300982084F1 +:103980006969009A019812F0D0FBCDE0084620301A +:10399000502786B2002CB8D0A8890299FFF716FDEF +:1039A000002855D16888A080A889E080287A062858 +:1039B0000AD002202072288AA0830098E083204643 +:1039C00069692030009ADEE70120F3E76888002368 +:1039D0000122032109F0CEF80690688A009006982B +:1039E000002803D1FD49FE4812F01DFD069808305D +:1039F0000DF083F90121484002D1E889C00B26D09F +:103A00000098223086B201E073E021E05127002CBB +:103A100079D06888A080A8890499FFF7D7FC00288E +:103A200016D10220A071A88920810420A072288AC2 +:103A3000E083009820846969009A019812F075FB70 +:103A40000699002008710698A98941806CE003203E +:103A50000BB0F0BD688805F0D2FB019068880023A8 +:103A60000122032109F086F800900198002804D172 +:103A7000DB48DA492C3012F0D6FC0098002804D13B +:103A8000D748D6492D3012F0CEFC0098D549C088D1 +:103A9000884205D05127222604E01EE03FE035E0B1 +:103AA00050272026002C2ED06888A080502F07D0C9 +:103AB0000220A0712146287B0831FFF730FD33E05A +:103AC000287BA11DFFF72BFD6A8800230099019830 +:103AD000FFF73CFD0028BBD126E0C349A889C9886F +:103AE000814207D154270626002C0CD06888A0807C +:103AF0001AE008E053270826002C04D06888A0802C +:103B0000A889E08010E00A98068013E05527072670 +:103B1000002CF8D0A889A0800020A07104E08D209E +:103B2000AE49C00012F07FFC0A98002C068001D03C +:103B30002780668000208BE7AB4900200870704723 +:103B400030B585B00C4601F0E0F90546FF2804D1F8 +:103B5000A348A249953012F066FC00202080207115 +:103B60006080401EE0802046294608300CF096FA1E +:103B70006A462946012002F020FD102412E0684622 +:103B8000808800070ED56846C0882946FFF71BFDD0 +:103B900068468188FF2321438180C0882946019A95 +:103BA00002F036FE684602F011FD0028E7D005B0AD +:103BB00030BD0A46014610B5104608300CF082FAB6 +:103BC00010BD70B5002305461A46032108F0D2FF48 +:103BD000040004D182488149B73012F024FC204609 +:103BE000294608300CF066FA70BDF0B591B00C466D +:103BF000074605F004FB050005D02878222804D2EA +:103C0000082011B0F0BD7948FBE700231A460321D4 +:103C1000384608F0AFFF0646002C02D0A0880028E6 +:103C20000CD00120694608710220087400204874F5 +:103C3000002C05D0A0880883206802E00920E0E776 +:103C4000088305903046083003970290FDF770FE18 +:103C5000040018D0678017206946888320350094B7 +:103C60000AAB6978023307AA01A80CF0EEFD0546FD +:103C70006078000701D5FDF73CFE002D09D02846ED +:103C8000FFF77BFABDE71321384606F0ABFD0320B2 +:103C9000B7E708A800906846838B042201213846C4 +:103CA00008F0C5FA0021C943F180AAE7FFB585B045 +:103CB0000E9E7788384605F0A2FA054600231A467C +:103CC0000321384608F056FF0446002D03D143492E +:103CD000474812F0A8FB002C04D145483F49401C3E +:103CE00012F0A1FB0834089869460394C1C105A8E5 +:103CF0000DC8203569780CF017FAC6E5F0B5044612 +:103D0000002099B00D4601460D9010A881811646FD +:103D100001818180344A68469180018510A8018024 +:103D200068460187818581841078012808D002289F +:103D300006D0032804D0042802D0082019B0F0BD12 +:103D40002C4A944273D32C4F0121890438688C4249 +:103D500001D3844278D3274A954275D3012189043F +:103D60008D4201D385426FD36168002913D0214A67 +:103D7000914269D301229204914201D3814263D3DB +:103D800060892189884203D801225202914201D9D7 +:103D90000C20D3E70D9016AA0EA92846FFF783FA48 +:103DA0000028CBD1686880784007800F02280AD1AC +:103DB0006846008F8004800F05D02869002802D053 +:103DC0003968884240D30AA92069FFF716FA00280B +:103DD000B4D1206900281CD060780FE0E8380000DA +:103DE000EE030000FFFF0000000900200230000089 +:103DF0000C050000008001002800002080076846B4 +:103E0000008D03D58004800F68D002E08004800F0D +:103E100064D16846008D810618D58004800F6068E3 +:103E200006D0002812D0396888420DD302E00BE09A +:103E300000280BD0FE49884206D30121890488421C +:103E400004D33968884201D2102077E709A9606954 +:103E5000FFF7D3F900289CD16069002808D0684694 +:103E6000808C0105890F012938D18004800F35D05D +:103E70000BA9A069FFF7C1F900288AD16846808C98 +:103E800080062BD46846808D810627D4A16900293D +:103E900006D00105890F012920D18004800F1DD093 +:103EA000E068002804D00078002817D01C2815D21C +:103EB00004AA611C2046FFF71DFA0121890210A8FF +:103EC0000180012768468773DA49818104AA033299 +:103ED00017A92868FEF711FF002801D007202DE759 +:103EE00010A8007F15A9C01CC2B200200C9201903E +:103EF000FF32009003460291FF3203A8033210996B +:103F000002F0B3FA002826D110A9888A0F902A89D6 +:103F10002969C94801910092029010A90A8B6B8906 +:103F200028680E9902F0A1FA01007DD1C24800254F +:103F3000001F818868464174090A8174052104A81C +:103F40006A4623C210A82A46FF21808A0C9B02F0F1 +:103F5000F1F9002802D0FFF7A4F8EFE66846007CEC +:103F60000322C1090020920290430122920280188C +:103F70001490002928D0014610A801806846292104 +:103F8000877309028181058608A8007C0023410807 +:103F900060784900C007C00F014308A80174FD20E4 +:103FA00001406078A54A8007C00F4000014308A87F +:103FB00001740CA9022001910090029503A81099A8 +:103FC00002F053FA01002FD16068002828D0206940 +:103FD00000280DD10AA90EA8FFF7D5F9607880074F +:103FE00006D46946088D032109038843694608857C +:103FF000904968468773FE31818190492089891EE6 +:1040000012F00DF962680D9811AB019200900293C5 +:104010000A46002303A80A9902F027FA010003D1F7 +:104020002078C10603D400E086E080062AD56846E1 +:104030000586606900280DD109A90EA8FFF7A3F92C +:104040006846818C03208002814301208002091888 +:10405000684681846946888CC821084369468884FB +:1040600074488F73FF30888112AA0CA90220029233 +:10407000019100900023714A03A8099902F0F5F913 +:10408000010059D12078C00729D068460586A0696B +:1040900000280DD10BA90EA8FFF775F96846818D90 +:1040A000032080028143012080020918684681852F +:1040B0006846818D40200143684681858773604949 +:1040C000818113AA0CA90220029201910090002381 +:1040D0005A4A03A80B9902F0C8F901002CD1E068F4 +:1040E00000282DD010A8149901805549684687737F +:1040F000491C8181E16808A80A78027449784174F2 +:10410000E0684122418868464186E06800230179E1 +:1041100008A80175E068D200C18808A84175090A9D +:1041200081750CA8072101900091029503A81099B0 +:1041300002F09BF9010003D00F9800F0EAFEFDE5C4 +:104140003D480321001F0170002E0AD08088308076 +:1041500010A88088708010A80089B08010A880897D +:10416000F0800020EAE530B501248BB015460B46FF +:10417000012802D002281CD104E06846052184737E +:10418000C90203E02B4968468473891E8181002B94 +:1041900012D003210020890288430121890240189E +:1041A0006946888405AA04A91846FEF7A6FD0028DA +:1041B00004D007200BB030BD1020FBE76A46127C0C +:1041C0001D480092801E05A9FF3201910290FF3226 +:1041D000002303A80332099902F047F9002802D00E +:1041E000FEF75FFFE6E71448001F002D01D041886D +:1041F000298004700020DDE770B592B004460126E6 +:1042000008A886700F496846018410AA08A930469C +:10421000FFF7A9FF00284DD12078074DC0070024E3 +:104220002D1F002848D01C21684611F0DDFF0BE04F +:1042300000800100032800000409002003020000A0 +:10424000032900000118000068460178202001437E +:104250006846017008A88670F9496846018411947F +:104260000794817FF92001406846891C81770020EE +:1042700001466846017700200146684641770421DF +:104280008185C485018607A80A9011A80D9008A809 +:1042900009900EAA09A96846FFF730FD002809D148 +:1042A0006846008FE8806846808F2881401C6881BE +:1042B0002C70002012B070BDEC802C8110A80088FA +:1042C000F4E7F7B5DF4900260A789EB0012A04D04A +:1042D000022A02D0082021B0F0BD4A88824201D0D3 +:1042E0000620F8E71F98824201D10720F3E7012258 +:1042F00010A98A75D4488882002003239B020146B6 +:1043000099439302CB1810A90B8669468A81CF4A3C +:10431000CA8118A9887110A9888419A904916946CD +:10432000CA820690FF20087503A802F072F90024E3 +:104330002546274608AA052103A802F06DF90028A2 +:1043400010D082286FD1002C6FD0002D6DD010A816 +:104350008480C5800021017418A8807B11AC0128DD +:1043600065D06DE008A88079002F21D0012857D1B1 +:104370006846818CB44881421CD113AA0DA905203E +:104380006B4607C36846408C10230022FF2102F0D1 +:10439000B5F9002868D110A88089042801D0062822 +:1043A0004CD16846818E1F98814239D10F2092E707 +:1043B000012835D16846808C0521C902884202D087 +:1043C000491C88422CD19F4841886846408C8142D4 +:1043D00001D1012700E00027002C01D0002D10D0D2 +:1043E0001F9988421CD113AB0DAA05216E460EC63B +:1043F000044610230022FF2102F080F9002833D167 +:1044000001E035460CE010A88089022801D0102870 +:1044100014D1C0B21BAA0DA9FEF749FC00280DD18A +:104420006846468C86E71FE0FFE7052053E714A99E +:104430001BA8221DFEF761FC002801D003204AE7DB +:1044400010A8007C0023001DC2B210A8027420989E +:1044500002900194009215A81C9902F006F8002819 +:1044600002D1784902220A70FEF71BFE33E710B52D +:104470000B46401E86B084B203AA00211846FEF700 +:1044800039FF04AA052103A802920191009001239B +:104490000022FF21204601F04DFF04466846008AB5 +:1044A000012804D06D206A49000111F0BCFF2046AC +:1044B000FEF7F7FD06B010BDF0B5624F0446387840 +:1044C00087B00E46032804D0042802D0082007B085 +:1044D000F0BD04AA03A92046FEF7E5FE0500F6D1CB +:1044E000606880784007800F02280DD16846808977 +:1044F0008004800F08D02069002805D0554909683C +:10450000884201D21020E2E7208905AA6B46216982 +:1045100007C369460A8A63892068039901F0A5FFE9 +:10452000002802D0FEF7BDFDD1E7002E02D068467C +:10453000808A3080042038702846C8E738B50C00DF +:10454000054609D000236A46FF2102F039F9002808 +:1045500004D0FEF7A6FD38BD102038BD69462046C0 +:10456000FEF74BFE0028F8D1A078FF21C307DB0F30 +:104570002846009A02F04CF9EBE73EB50C0009D052 +:1045800002AB6A46FF2102F01BF9002804D0FEF7B7 +:1045900088FD3EBD10203EBD0321204611F022FEC5 +:1045A0006846008801A90005800FFEF712FE00286A +:1045B0000BD16846007920706846008801A9800404 +:1045C000800FFEF706FE002801D003203EBD68469E +:1045D00000796070A278EF20024068460088C10B25 +:1045E00009010A43F7210A404104C90FC9000A43DF +:1045F000A270F9210A40800601D5022000E00120C6 +:10460000400069460243097A50084000C907C90FB3 +:104610000843A07000203EBD7FB5144605220192DC +:1046200003AD029500930A462388FF2101F082FE24 +:10463000694689892180FEF734FD04B070BD000011 +:10464000052A00000009002002280000FFFF0000EA +:10465000E838000028000020F3B5002799B068462C +:104660000C4607873D4600291ED0E068002806D08A +:10467000A068002818D001886A4611870780199819 +:1046800004F0BDFD002812D0007822287ED31998AE +:1046900000F03BFC002300901A460321199808F013 +:1046A00069FA060009D104E010201BB0F0BDFD48F6 +:1046B000FBE7FD49FD4811F0B6FEA078012803D0C4 +:1046C000022801D00720F0E72088002808D0401EEB +:1046D00080B203AA009901F070FF002859D11DE0B3 +:1046E000F048401CE1E76946498A228891420BD292 +:1046F0006846807D0025012810D16846808AEC49F3 +:1047000088420BD1012509E0914203D1002D2AD026 +:104710006D1C01E0022D0BD0032D04D203A801F083 +:1047200055FF0028DFD082281BD0002831D11DE0A2 +:104730006946897D0129F1D16946DD4B8A8A5B1E74 +:10474000D11A9A420FD005DCDA48101A0BD0012892 +:10475000E4D108E0012906D0FF390129DED1032583 +:10476000E1E7022D15D10D2080029EE7E0680028C8 +:1047700016D00EA9052202910192009069460B8F76 +:10478000A2882088FF2101F0D5FD00E01EE000286E +:1047900002D0FEF786FC88E76846A168008F088093 +:1047A0006846008AC00601D5C3487EE707980028FE +:1047B00003D06846008B022801D0032075E70798D4 +:1047C000A1780078012903D0800710D408206CE775 +:1047D000C007FBD000220721199808F010F8002824 +:1047E00002D00725022004E0AE48801C5DE70225C8 +:1047F000032008A908702188684681851998083621 +:104800000A90099617216846818712AB02330FAAD6 +:10481000052108A800970CF018F8002802D0FEF730 +:10482000ACFC42E710A800906846838F042229461A +:10483000199807F0FCFC38E770B5064615460C469B +:104840000846FEF7EBFB002804D12A4621463046F5 +:10485000FFF789FCF2E610B5FFF733FD10BD70B528 +:104860001E4614460D0014D0002C12D06168002999 +:104870000FD00121FEF741FE002809D12068FEF784 +:10488000CDFB002804D1324621462846FFF736FAF0 +:10489000D4E61020D2E670B515460C000ED00221E9 +:1048A000FEF72BFE002808D12068FEF7B7FB002892 +:1048B00003D129462046FFF7FFFDBFE61020BDE6E5 +:1048C000F8B506467D480D46016814468A4231D344 +:1048D0006068002808D07A4A90422BD301229204C3 +:1048E000904201D3884225D37648864204D0304690 +:1048F00004F085FC00280CD0304600F006FB06468C +:10490000284600F0BFFA002804D16068002802D0D1 +:1049100012E06448F8BD00236A463146284601F09B +:104920004FFF002802D0FEF7BCFBF8BD68460088A8 +:10493000800601D41020F8BD6188224628466368AD +:10494000FFF76AFEF8BDF7B55C4E0746306886B0E3 +:104950001446824202D2102009B0F0BD384600F061 +:10496000D4FA05465748874201D0FF2D08D00023CE +:1049700004AA2946079801F023FF002826D101E068 +:104980004848E9E76846008AC00601D54A48E3E797 +:1049900003A9002002910527019000976288494BE6 +:1049A0002946079801F0AAFE00280FD161683268F5 +:1049B000914208D30191029000972388628829468A +:1049C000079801F09BFE694689892180FEF769FB03 +:1049D000C2E7002907D03C4B0A881B899A4202D8BB +:1049E0003048401C704737E610B586B004236C464B +:1049F000A382354BDC88002C07D01B898B4201D267 +:104A0000914204D92748401C54E5062052E56B46E4 +:104A100019825A820021009101911C800221997013 +:104A200005A9029104A903916946FFF715FE41E526 +:104A3000F3B50C4685B0812069460873002C1BD065 +:104A4000059804F0DCFB070018D03878222869D3D9 +:104A5000059800F05AFA049000220121059807F009 +:104A6000CEFE00280CD000231A460321059808F03A +:104A700081F805000AD105E0102028E5094826E55F +:104A8000112024E50849114811F0CDFC28460830D2 +:104A90000BF032FB06462078012819D0022838D0C6 +:104AA000072014E502300000E8380000E1080000AB +:104AB0000328000000280000013400002800002026 +:104AC00000800100FFFF000000090020840A0000B0 +:104AD000A18803AAFEF71CFB0028CED1B00721D580 +:104AE0006846007B00281FD1A079C0071CD0E06871 +:104AF000002205216B4607C36389228968880499CF +:104B000001F018FC6946087300280DD0FEF7C9FAB9 +:104B1000DDE4A18803AAFEF7FBFA0028ADD134201A +:104B2000064201D10820D2E46846037B2946384674 +:104B3000059AFEF70BFDCAE4FFB597B0002001907F +:104B40001F4615460C460E46179804F058FB0028E1 +:104B500004D00078222803D20820A6E5F448A4E572 +:104B6000B80801D00720A0E5032F00D1002717982F +:104B700000F0CBF90890002C1BD0022D77D3ED4824 +:104B8000006884427CD361190091012902D0491E3A +:104B9000814275D3AD1EAAB22146E74810F036F81F +:104BA00000991E394A7F0B7F11021943884267D151 +:104BB000ADB2E248B90702D50189491C00E00121E4 +:104BC00089B20091F90701D0078900E0DA4F03AA02 +:104BD0000899009801F0F1FC0DE0F078B17800023E +:104BE000084310284CD80199091D401880B2019043 +:104BF000A84245D82618002E60D07078317800027F +:104C0000084300998842E8D358E06946098A0A07B0 +:104C100054D5002C3FD0019AA618121D92B20992C9 +:104C2000F278B37812021A439446102A28D8099AC7 +:104C30006244AA4224D87278337812021A4390420E +:104C40001ED1C8061ED509980AAA052120186B4650 +:104C500007C3707831780002084363460022089940 +:104C600001F068FB002803D0FEF71BFA1DE507E002 +:104C7000F078B178000208436946098D884201D076 +:104C80000B2012E5F078B17800020843099940182A +:104C900080B2019006E0C90604D50899FEF793FC9E +:104CA0000028E3D16946088A1021884369460882B2 +:104CB000488AFF23049A089901F0AAFD03A801F08D +:104CC00085FC002803D16846408AB8429DD900235C +:104CD0001A460321179807F04DFF040003D19849A5 +:104CE000984811F0A0FB20880028BFD0012108A817 +:104CF00001700173002646732188684601862046AC +:104D00000830099017980A90FCF712FE05001BD096 +:104D10001798688017206946888010AB023301AA73 +:104D2000052108A800950BF090FD0746687800075C +:104D300004D584488249223011F075FB002F09D038 +:104D40003846FEF71AFAB0E41321179805F04AFD29 +:104D50000320AAE40EA8009068468388042201215B +:104D6000179807F064FA00288BD126809DE4F0B5EF +:104D700000248DB01F4615460E46002A04D0B908FF +:104D800004D007200DB0F0BD1020FBE7032F00D1A9 +:104D9000002700F0BAF80390FF2804D06749B8074D +:104DA00003D5488902E06248ECE70120FA0702D007 +:104DB0004989491E00E0604906AA8FB2039901F0B3 +:104DC000FCFB38E06946898B090734D504AB052123 +:104DD0000022029300910192574B039901F08EFC3F +:104DE000002821D1002E21D06A46128A2988A218D3 +:104DF0003019121D914234D36946CA8B0270120ACF +:104E000042700A8A8270120AC27004A90522001D2B +:104E10000092029101906946C88B0B8A0022039987 +:104E200001F06CFC002801D00320ABE76846008A43 +:104E30002018001D84B206A801F0C8FB002804D089 +:104E4000822806D0FEF72DF99CE76846C08BB84251 +:104E5000B8D9002C07D0002E10D02988A01C814280 +:104E600003D20C208EE705208CE7224631463248DB +:104E70000FF0CCFE31190870000A4870A41C2C8079 +:104E800000207FE700B585B06946FEF79FFA00284D +:104E90000AD16846007C030011F0B6FB08052F2FED +:104EA0002F2F08080531032005B000BD6846807823 +:104EB000012807D1684600880321C902401A1CD086 +:104EC00001281AD068468079012806D16846808872 +:104ED00015214902401A05280FD96846807A012811 +:104EE00011D16846018929200002081A05D002283C +:104EF00003D0032801D0042805D10F20D4E712A144 +:104F0000164811F090FA0020CEE710B507F028FE01 +:104F100010BD10B50C4601F023FB002803D00AA1F8 +:104F20000F4811F080FA2046FEF7BBF810BD0000D4 +:104F30000230000028000020FFFF000000090020D0 +:104F4000E83800003F0B00007372635C67617474A3 +:104F5000735F636F72652E63000000002202000021 +:104F6000BB060000F8B500780C46164610340E3625 +:104F7000069F022809D0032836D005287ED0FF20BE +:104F8000F6A1E53011F04FFAF8BDCD890A2068434B +:104F90000E30188031203880002AF5D0087B9581AA +:104FA000801FC7B21AE020886168308048780A788C +:104FB00000021043F080C8788A78000210433081E4 +:104FC000B21C3846091DFDF772FE002F01D00028E3 +:104FD00002D000203071708008340A3628466D1ED9 +:104FE000ADB20028DFD1F8BDCD890A2068430E306C +:104FF000188032203880002AF5D0087B9581401F28 +:10500000C7B243E0616822880878F2803279C3072A +:1050100052085200DB0F1A43FD231A408307DB0FAF +:105020005B001A43FB231A404307DB0F9B001A4324 +:10503000F7231A400307DB0FDB001A43EF231A4064 +:10504000C306DB0F1B011A43DF231A408306DB0F65 +:105050005B011A43BF231A404306DB0F9B011A432F +:105060003271C00970718A784B7810021843308110 +:1050700032463846C91CFDF71AFE00E00CE0002855 +:1050800002D00020B070308008340A3628466D1EE9 +:10509000ADB20028B6D1F8BD087BCD89801E86B29E +:1050A0003046083068431030188034203880002A99 +:1050B000F1D0174695811037E800D681C0190090CD +:1050C0000DE020883880009878603246616800984A +:1050D00011F02BF800980834801908370090284602 +:1050E0006D1EADB20028ECD1F8BDFFB581B00A9DB0 +:1050F0001E460C46002A05D0607AFF300130D08071 +:10510000E089108101980E270078030011F07CFAE5 +:105110000B7E0719293541536C7878787E00009210 +:10512000087B082805D0032803D091A1954811F0E9 +:105130007AF9378030200FE000990020888105B08F +:10514000F0BD0092087B042804D08E4888A114305A +:1051500011F069F937803120288000980028EBD1C0 +:10516000EDE70092087B042804D0932080A1800002 +:1051700011F059F937803220EEE70092087B0228BF +:1051800004D080487AA13A3011F04DF937803320AD +:10519000E2E7087B1746042804D07A4874A14C3013 +:1051A00011F041F91020308034202880002FC6D023 +:1051B0000020B88116E0207B1746052806D0062877 +:1051C00004D070486AA1603011F02DF912203080AF +:1051D00035202880002FB2D0E089B88100203882A5 +:1051E00001984088F881AAE70092087B072804D03C +:1051F00064485FA1713011F016F937803620ABE7B3 +:1052000033460095019800F00EFC98E72F2053A13B +:10521000000111F008F992E770B50C46054603F05D +:10522000EEFF002804D00078222803D2082070BDA9 +:10523000554870BD00231A460421284607F09AFC01 +:105240002060002801D0002070BD032070BDFFB594 +:105250008BB00D4607461720694608850E98032631 +:105260001446002805D10EA93846FFF7D5FF0028BF +:1052700034D1002D0BD000220321384607F0BFFAAD +:10528000002834D00E980078002830D108E020782B +:10529000092819D00F2823D030A13C4811F0C3F8B9 +:1052A0000E98A760801D03AA606002320AA92046FA +:1052B00000F00FFC002827D0030011F0A5F9071A11 +:1052C000182323211C1E23000726002231463846BE +:1052D00007F095FA0028E3D12B48801C0FB0F0BDF1 +:1052E00000220321384607F08AFA0028D8D111207D +:1052F000F4E70020F2E70820F0E72348401CEDE740 +:105300000720EBE70320E9E701A800906846038D3A +:1053100004223146384606F08AFF0028DED1002DEF +:10532000DCD00E990D70D9E730B587B01D460C461C +:10533000002A11D0042369460B7013888B81528890 +:10534000CA81A2788A7422880A8200236A46294682 +:10535000FFF77DFF07B030BD1020FBE77372635C81 +:1053600067617474635F636F72652E630000000091 +:105370007372635C67617474635F636F72652E63DD +:105380000000000025020000023000004F03000072 +:10539000F3B581B001980C4600780826030011F09F +:1053A00033F9125F47471B134B0A0A0A0A0A0A0A13 +:1053B0000A0A0A0A0A5F002C02D1F849F84808E0F4 +:1053C0006078304360703CE0002CF9D1F448F34938 +:1053D000083011F028F8F3E70198002380880122B3 +:1053E00087B20421384607F0C5FB0546002C04D0DF +:1053F0007520EA49C00011F016F8002D04D1E848E4 +:10540000E649143011F00FF83946A81D00F058FB9A +:10541000FCF78EFA040006D0607830436070678035 +:10542000FCF767FA0FE01321384605F0DBF915E0C9 +:10543000DB48DA49283002E0D948D8492D3010F04D +:10544000F2FF002C0AD06078000707D59320207067 +:105450002046582208300199FBF7B6FE0020FEBD19 +:10546000CF48CE493130EAE710B500210170801DE8 +:1054700000F023FB10BD0A4610B50146901D00F058 +:1054800027FB10BD70B5002305461A46042107F01E +:1054900071FB040004D1F920C049800010F0C3FF63 +:1054A0002946A01D00F00CFB70BDF7B5054684B081 +:1054B0000C4600206946088188806F8803460122D7 +:1054C0000421384607F056FB060004D1FD20B349FD +:1054D000800010F0A8FF002C03D0A7800020E080FF +:1054E0002081297A20461230C91E142700900B0013 +:1054F00011F08AF80FFEFDFC3809A95E657A2FB21B +:10550000C9E99191FC003078012804D0A3497020AA +:10551000143110F088FFA9896A46C8000E309080C7 +:1055200030201081002C13D0A18100200DE0C1009B +:10553000327909190A747288CA8182005319DA898A +:105540004A821A8A401C8A8280B2A1898142EED89E +:10555000F1E002A8009001AB22462946304600F057 +:105560002BFAE8E03078042804D08C49BD201431AF +:1055700010F059FFA8890622014650436A460E30B2 +:10558000908033201081002CE2D0A18100200BE01C +:10559000062141434F190919FA89CA81BA7C8A74D4 +:1055A0003A8A401C0A8280B2A1898142F0D8C2E0C6 +:1055B000307806280BD079491431D72005E03078AF +:1055C000062804D07549EB20143110F02CFFE8892F +:1055D00069461230888035200881002CB8D0A9890E +:1055E000A1817188E18126E03078072804D06B49D9 +:1055F000FF20143110F017FFA8896A4601460E30CB +:10560000908036201081002CA2D0A1812046AA894A +:105610000E30296954E0E8896946123080B2382298 +:1056200088800A81002C7ED0A989A181287A10283F +:1056300007D00221A173E9892182EA8929690098AA +:105640003EE00121F6E702A8009001AB2246294680 +:105650003046FFF787FC6EE03078082805D04F49C8 +:10566000FF201431EE3010F0DEFE684637218780CF +:105670000181002C5FD0A989A18100206082208255 +:105680000120A07357E03078092805D04349FF2056 +:105690001431FF3010F0C7FE288A69461430888024 +:1056A00037200881002C46D00421A173A989A1814B +:1056B000E9892182298A618220462A8A143069690F +:1056C00010F033FD37E030780A2804D033493548EC +:1056D000143110F0A8FE6846372187800181002C24 +:1056E00029D00521A1730020A08102E01EE003E083 +:1056F0000CE0208260821EE002A8009001AB2246EE +:1057000029463046FFF7F1FC15E00CE00D20694614 +:10571000392288800A81002C05D00120E0800020F9 +:105720002081207307E00699088019E01C481B4976 +:10573000A43010F078FE6846069980880880002C16 +:105740000ED0684600892080684680886080287A6C +:10575000032805D0102803D0112801D00020307074 +:10576000002007B0F0BDF7B5568815460F46002358 +:1057700082B01A460421304607F0FCF9040004D137 +:1057800007480649C43010F04EFEA41D33462A4691 +:1057900039460094029800F022FBD0E45C530000EC +:1057A0009503000013020000F7B58CB00D461446B7 +:1057B00007A90C98FFF730FD002812D1B64E01273B +:1057C000002C0FD00321684601701021818208A8A7 +:1057D00002460690204605A9FDF78FFA00280BD057 +:1057E00007207BE50821684601708581C681052177 +:1057F0008774C90201820BE00798A17801712188A2 +:105800004180684605218774C90201828581C6816D +:1058100002460121079B0C98FFF719FD5EE508B5CC +:1058200001236A4693709D4B13800A460223694602 +:10583000FFF77AFD08BD08B501236A469370974BC0 +:105840005B1C13800A4603236946FFF76DFD08BD04 +:1058500000B587B000290CD002236A4613700B886C +:1058600093814988D18100230421FFF7F0FC07B020 +:1058700000BD1020FBE710B5002903D00523FFF77A +:1058800053FD10BD072010BD70B588B00D461446FD +:10589000064607A9FFF7C0FC00280DD1002C0DD04B +:1058A0000621684601708581C481079B02465C80A1 +:1058B00006213046FFF7CBFC08B070BD05216846D5 +:1058C00001708581F1E710B588B000290BD007245D +:1058D0006B461C709A81049100236A462146FFF7AB +:1058E000B6FC08B010BD1020FBE770B500241722ED +:1058F00088B0002914D00D782B0010F085FE062307 +:10590000050519041B231522D21E93B2CA88002A4A +:1059100002D08E68002E03D09A4203D90C20CBE728 +:105920001020C9E7042D05D08A88002A0AD101E099 +:105930000620C1E7012D11D0022D05D0042D18D06D +:10594000052D23D00720B7E709236A4613704B883B +:105950009381CB88D381896804911DE00C236A462A +:1059600013704B889381CB88D38189680824049174 +:1059700012E00D236A4613704B8893818B88D38184 +:10598000CB88138289680924059105E00E236A46B5 +:105990001370497811730A2400232146FFF757FC3E +:1059A0008AE700B587B00F236A4613709181002300 +:1059B0001946FFF74CFC5AE7FEB50078089D1C46D7 +:1059C00016460F46012803D03549912010F02BFDD3 +:1059D000F889C0000E30208030202880387B001FDE +:1059E000C0B20190002E1DD0F889B081002516E0CC +:1059F000E8008419C0190090224641690E320198CE +:105A0000FDF755F9002802D000202074E0810098AD +:105A10006D1C008A60820098ADB2408AA082B08975 +:105A2000A842E5D8FEBD70B514461425049A1D8021 +:105A300037231380002C0ED0CA89A28100226282F3 +:105A40000078082808D0092810D00A2819D014494D +:105A5000144810F0E8FC70BD087B0C2804D01148F5 +:105A60000F490C3810F0DFFC012008E0087B0D28FE +:105A700004D00C480A49083810F0D5FC0420A07363 +:105A800070BD087B0E2804D006480549001F10F0A1 +:105A9000CAFC0520F3E70000FFFF00000228000019 +:105AA00070530000BB02000010B5FE4B5860197225 +:105AB0001A80C90010F098FB10BD002101807047CA +:105AC00010B50022D2430280032007F0F8FC10BD7D +:105AD0007047F0B50E460446017801208840F2492F +:105AE00099B008400090616815460888EF4A9042D6 +:105AF00006D0009A002A06D0EB4A521E104202D06D +:105B0000012019B0F0BD009A10430880002D12D07A +:105B1000002028702178EA1C0027681C01920B00E5 +:105B200010F072FD10F30E16233A59616F3CB4B0B9 +:105B30008AB8F2F1F0F320780B28EBD00420E0E7EC +:105B400002212970A1890170090A4170032097E0A0 +:105B500004212970A1890170090A41700198E18925 +:105B60000170090A417005208AE006212970A18987 +:105B70000170090A41700199E2890A70120A4A709B +:105B8000218A0171090A4171A28AE81DA16910F0F8 +:105B9000CCFAA08AC01D73E0082129702178082959 +:105BA00001D110212970A1890170090A4170019861 +:105BB000E1890170090A41700520308020466A1D84 +:105BC00002A91030FDF799F800287DD16946308888 +:105BD000097A401854E00A212970A1890170090A44 +:105BE000417003200BE00C212970A1890170090A82 +:105BF00041700198E1890170090A417005203080E7 +:105C00009CE0A08984464000401C81B230888842D4 +:105C10005AD3052958D30E202870002008E02369A4 +:105C200042009B5A521953701B0A401C937080B259 +:105C30006045F4D33180B9E09A48417A002973D0A5 +:105C4000491E4172217B4068C9004518A98828680F +:105C5000082240180838216910F067FA02216846C6 +:105C600001710021417128680390A988684601816B +:105C7000002101A8FFF78CFB0020A880002E00D097 +:105C8000308093E0297880221143297029784022BE +:105C90001143297029788909890112312970A18954 +:105CA0000170090A4170E289E81C216910F03DFA8F +:105CB000E089C01C3080287841063FD5C00975D0E6 +:105CC00001216846017200E02CE000214172318818 +:105CD000091D81810495E189019808180590001D2E +:105CE00006907048017A68460177002102A8FFF704 +:105CF0004FFB074630880C303080022F06D0002F33 +:105D000054D065E03DE033E01CE05EE06548694664 +:105D1000097F4268CB00D218037A994202D2918857 +:105D2000002902D0042753E02FE0417A491C417238 +:105D30001560308890800020308049E06168A0893B +:105D4000888033E029788909890116312970A18971 +:105D50000170090A41700198E1890170090A4170D6 +:105D6000228A681D616910F0E0F9208A401D46E72B +:105D700028788009800118302870207B6870022004 +:105D80007EE760680188090401D4052720E0C08807 +:105D9000A189884201D006271AE01E202870012020 +:105DA0003080606801884904490C0180009800280F +:105DB0000ED03C4800220088A1688300032007F031 +:105DC000D9FA61682078887007E0002030800327C6 +:105DD0006068009902888A430280384691E6FFB5E0 +:105DE0009FB0289D0E46002805D0172803D82A8882 +:105DF0002E4B9A4202D1072023B0F0BD32785306D1 +:105E000001D4D20901D00820F6E700226B461A71AE +:105E10005A7114463278431E1D939BB2189303ABFC +:105E20001A939706CB1CBF0E1B93821E711C3B005E +:105E300010F0EAFB209011EE66EE74EEB0EED4EEB8 +:105E4000EDEEECEEEBEEEAEEE9EEEEEEE8EEE7EE8E +:105E5000E6EEE5EE90EE05287CD10421684601715E +:105E6000A9780172F078B278010211436846418145 +:105E70003179417170788006800E0C282ED009DCB3 +:105E8000801E030010F0C0FB0919661C6621662401 +:105E90006627660012282AD00ADC0E2821D0102896 +:105EA000DAD121E00C090020FF710000FFFF0000A3 +:105EB00016281FD01828CFD11FE02878800701E0CE +:105EC00028784007002845DA45E128780007F9E7F7 +:105ED0002878C006F6E728788006F3E72878400699 +:105EE000F0E728780006EDE72888C005EAE728886B +:105EF000C004E7E728888004E4E728884004E1E755 +:105F00002A78920726D50328A6D105206A46107163 +:105F1000487809780002084310811CE12978490774 +:105F2000F0D5062816D3717890B2012902D0022943 +:105F300092D101E0022100E01021189106216A4669 +:105F400011710021118102AF189AB11C0237921C05 +:105F50001B921AE0B3E04A780B7812021A433A8097 +:105F6000801E891C1790BA1C1A911898FCF79FFE86 +:105F70001A991898189A091817986B46801A1A894E +:105F800080B2521C1A811B9ABF1D8242E3D900289D +:105F900086D1E0E028780007B4D51D98694682B222 +:105FA0000720087100200881701C0A3111E0437835 +:105FB00007781B023B430B80C37887781B023B4367 +:105FC0004B806F463B89121F5B1C001D92B23B81C8 +:105FD000091D042AEBD2002A71D1BCE02978C90638 +:105FE0006DD502286BD308206946087100204881CE +:105FF00070780872844692B2B01C1A9919E089E050 +:1060000090E07EE067E05BE030E025E019E013E03F +:10601000BCE0437807781B023B430B80831C4B603A +:106020006346D21A6F467B8960445B1C92B27B81C7 +:1060300008319445EDD9CEE7287880063FD509226E +:1060400003E0287840063AD50A2268460271AA88F9 +:106050000281189A428107E0287800062FD50B208C +:106060006A46107118981081039174E02988C90557 +:1060700025D5022823D30C206946087100204881C9 +:1060800070780872844692B2B01C1A9914E0437872 +:1060900007781B023B430B80C37887781B023B4386 +:1060A0004B80031D4B606346D21A6F467B89604468 +:1060B0005B1C92B27B8108319445E8D98BE763E0A1 +:1060C0002988C90460D501285ED10D216846017177 +:1060D000A98801813FE02988890455D5052853D333 +:1060E0000E2269460A71AA880A811B99401F4A78C4 +:1060F000097812020A4369464A818881701D04901A +:1061000029E0298849043FD501283DD10F2069465F +:10611000087120E02A88120436D44A780B781202DB +:106120001A43EA8003282FD332789206920E1B2A54 +:1061300026D011226B461A712A880123DB031A43E9 +:106140002A804A78097812020A4369460A81C01EE9 +:1061500048811B98039030788006800E1B2809D058 +:106160001D2807D00320229907F0A9F92888C00B21 +:10617000C003288001A82199FFF70AF920463BE6D1 +:1061800010226B461A71DCE70724F7E70824F5E7CD +:1061900000B597B0032806D16A461070019100211E +:1061A0006846FFF7F5F817B000BD000010B58B7812 +:1061B000002B11D082789A4207D10B88002B0BD08C +:1061C00003E08B79091D002B08D08B789A42F8D117 +:1061D00003880C88A342F4D1002010BD812010BD9B +:1061E000052826D0002A02D0012A0DD102E0098814 +:1061F000090501E009888904890F07D0012918D011 +:10620000022909D003290ED081207047002A01D02D +:10621000032070470220704703280AD0042808D0C2 +:10622000002804D007E0042803D0022803D005206A +:106230007047002070470F20704770B513880546DF +:1062400014460B8018061DD5FE481022807AA842FD +:1062500003D813430B80002070BDA06893430078DF +:10626000E840C007C00E03430B802078A178800768 +:10627000800D0843F4490FF0D2FFA0686943081865 +:10628000401C70BD906870BD37B569468B8813801F +:1062900019061BD5EB4C0125A47A9168844209D8D4 +:1062A000FE280FD1D80602D5A5406D1E00E00025BE +:1062B0000D7007E085400C78DB06DB0FAC438340B4 +:1062C0001C430C7010881021884310803EBDF8B527 +:1062D0000746C81C80080E468000B04201D08620C8 +:1062E000F8BD082A01D90E20F8BDD64D00202E6039 +:1062F000AF802881AA723446E88016E0E988491CFC +:10630000E980810610D48007A178800D0843CE492A +:106310000FF085FF206800F0BAFA2989401880B292 +:106320002881381A8019A0600C3420884107E5D4F0 +:106330000020F8BDFFB589B09F041646139DBF0C21 +:106340000193099800F095FA04000AD0207800061D +:1063500009D5BC48817A0A98814204D887200DB0BB +:10636000F0BD0120FBE7224669460A98FFF765FF6A +:106370000690002069460872052D14D0012221469E +:106380002846FFF72DFF0028E9D1207840060AD5DE +:10639000022168460172099981810188C1810682C2 +:1063A0004782129805900198000404D500273E46C4 +:1063B0000125079709E02078A1788007800D084320 +:1063C000A14907900FF02BFF0D46019840040AD514 +:1063D0000798A84207D12088E1788005800F000245 +:1063E0000843B04201D3AE4201D90720B7E7B8193C +:1063F00080B20190A84201D90D20B0E76846007A2A +:10640000002804D002A8FDF706F90028A7D10798B4 +:10641000A8420BD1208803210902884301998905EC +:10642000890F0902084320800198E0701498002821 +:1064300000D007801298002815D006983A46801997 +:1064400012990FF072FE224669460A98FFF7F5FE90 +:1064500069460888102188436946088022460099C9 +:106460000A98FFF711FF002079E7FFB5754D0C2260 +:10647000E8882968504383B00C180D9F724905982D +:106480000FF0CDFE0091049800F001FA29682A89E6 +:106490008E46611A0C310918944651188AB2A9889F +:1064A000914202D8842007B0F0BD6A46168A3206AF +:1064B00003D5B20601D58520F5E7EA88521C92B2D1 +:1064C000EA800E9B002B00D01A80B20601D5A7608F +:1064D00006E0604480B22881091A70460818A0605E +:1064E0002246FE200499FFF7CFFE0598A070009881 +:1064F000E07020880599800889058000890F08438D +:1065000003210902884300998905890F090208437C +:1065100004210843208003988078A07103980088A4 +:10652000A08000202073310601D5AC7A00E0012460 +:10653000B10600D5002700260EE0052100200191BC +:1065400002900097E88831460C9B069AFFF7F2FE0E +:106550000028A8D1761CF6B2A642EED30020A2E70E +:10656000F1B5009800F085F9060002D00025009CE6 +:1065700014E00120F8BD204600F07BF907460078C2 +:1065800031498007820DB87810430FF048FE386813 +:1065900000F07DF94019641C85B2A4B22948C18875 +:1065A000601E8142E7DC00992648491EC1800189AE +:1065B000491B018100203070F8BD002804D0401E26 +:1065C00010809170002070470120704710B504467C +:1065D00001881C48C288914201D3822010BD006806 +:1065E0000C22514342189079A07290882081108823 +:1065F000D1788005800F00020843A081A078211D7A +:10660000FFF71BFE20612088401C2080E0800020D6 +:1066100010BD012101827047F7B50546002084B006 +:10662000C043108068681746817868468170686842 +:1066300001886846018000218171288A2C88A04247 +:1066400005D303E0180900200102000004462C8253 +:1066500035E0288A401C2882301D6968FFF7A6FDB6 +:1066600000282AD139889248814201D1601E3880A1 +:106670006888A04228D33088F1788005800F000216 +:10668000084302906946301DFFF790FD002814D1A1 +:106690006989874881421BD0002231460598FFF75F +:1066A0009FFD002809D16A890298824205D1E968D4 +:1066B000B0680FF00DFD00280AD0641CA4B220467B +:1066C00000F0D7F80600C4D1641E2C828220EAE6CE +:1066D0007C80B079B871B088B8803078B1788007A4 +:1066E000800D084378810298B8813946287A32466D +:1066F0000831FFF7A2FD38610020D4E6FFB585B070 +:106700001C460F46059800F0B4F8050009D028781B +:10671000000608D56748807AB84204D8872009B0B7 +:10672000F0BD0120FBE707982A468605B60D6946AD +:106730003846FFF782FD07460E98052816D000223E +:106740002946FFF74DFD0028E9D1287840060DD5F0 +:106750000121684601710599018101884181868185 +:10676000C48101A8FCF757FF0028D8D12888AA784F +:106770008107890D11438005800FEA7800021043DC +:10678000079A964207D04C4A914204D3611E814237 +:1067900001DD0B20C3E7864201D90720BFE7801B3C +:1067A00082B2A24200D922461098002800D002806E +:1067B0000F98002802D0B9190FF0B7FC0020AEE7FF +:1067C000F8B51D4617460E4600F053F8040008D0F1 +:1067D0002078000607D53748807AB04203D8872052 +:1067E000F8BD0120F8BD224639463046FFF725FDA9 +:1067F000002D0BD02078A1788007800D08432E490A +:10680000884201D2012000E0002028700020F8BD5D +:10681000F8B51E4617460D4600F02BF8040008D0C8 +:106820002078000607D52348807AA84203D887201D +:10683000F8BD0120F8BD224639462846FFF724FD61 +:10684000FF2E14D02588A178A807800D08431A4987 +:106850000FF0E5FC002E03D1FF31FF31033189B287 +:10686000A170A80880008905890F084320800020B6 +:10687000F8BD1049CA88824207D3002805D00C22EF +:10688000096850430C38081870470020704703B55A +:106890000846694609888A0607D4090604D50549C9 +:1068A000897A4143491C88B20CBD00200CBD000010 +:1068B000FFFF00001809002001020000F8B507786A +:1068C0000D460446012F19D0072F02D00C2F19D1E5 +:1068D00014E0A068216906780B2E0BD0052006F085 +:1068E000EEFD052E0ED0782300220520216906F04A +:1068F00041FD07E0782300220620F8E70520216902 +:1069000006F0DDFD002D0ED000202870294620461F +:1069100004F0AEF9FE482978C05D884201D1032019 +:10692000F8BD0220F8BD0021204604F0A1F90020A6 +:10693000F8BD70B50E460C462036317901208AB07C +:106940001546002909D0012905D12978042902D149 +:106950000520107000200AB070BD6068019005A885 +:1069600002900D21C01C0FF03DFC032205A8A16878 +:106970000FF0DBFB01203071062069460870206AA9 +:10698000049029466846FFF799FFE4E770B50C4686 +:10699000154620310A790120062686B0002A2CD01F +:1069A000012A28D12978042925D169681022A068F4 +:1069B00001F0B4F96868C07B000606D5D44AA06827 +:1069C0001023103A014601F09EF91022A168E068F8 +:1069D00001F0A4F9A068C07B000606D5CC4AE068A7 +:1069E0001023103A014601F08EF92E70A0686860FD +:1069F000E068A860002006B070BD60680190C448DF +:106A0000203802900120087168460670206A0490C0 +:106A100029466846FFF752FFEDE7027B032A06D0BE +:106A2000002224235A540B78092B02D003E00420BF +:106A300070470A76CA61027B9300521C0273C150F0 +:106A400003207047F0B50E4615460C462036024628 +:106A500031790120072393B000290CD0012924D0DB +:106A600002292ED0032904D12978042901D12B70C1 +:106A7000002013B0F0BD01203071606800280DD0F7 +:106A8000A1690B7060684860206988606069C860AF +:106A9000206A08621046FFF7C0FFEAE70620287068 +:106AA000206968606069A86009E029780629E0D15A +:106AB0000220307104202870954820386860032037 +:106AC000D7E729780429D4D1A08910280AD9103809 +:106AD00080B2A081A1681023091805A86A6801F096 +:106AE00012F923E010282FD0C2B21020801AA1681A +:106AF0000DAF1190C0190FF018FB11980006000E91 +:106B000006D0401EC1B28020785438460FF06AFB90 +:106B1000626910230DA909A801F0F5F8102309A94D +:106B200005A86A6801F0EFF80320307160680190F1 +:106B300005A80290062069460870206A049029463C +:106B40006846FFF7BBFE94E710232269A168E2E7DD +:106B5000F0B50E460C4620363179012006278FB05D +:106B6000154600290BD0012932D0022905D12978F8 +:106B7000042902D10820107000200FB0F0BD217D43 +:106B800008A8CA07D20F02718807C10F08A80171AF +:106B90006846027041700722801CE1680FF0C5FA58 +:106BA00002A80722013021690FF0BFFA6068059042 +:106BB0000AA8069010236A46A16801F0A4F80120F3 +:106BC000307168460774206A0890294604A820E0BE +:106BD00029780429D1D1062205A8E1690FF0A5FA88 +:106BE00006A806220230A1690FF09FFA0020089043 +:106BF0006068019009A80290102305AA696801F055 +:106C000082F80220307168460770206A0490294695 +:106C10006846FFF753FEB0E770B50D460C462035C9 +:106C2000297901208CB01646002909D0012905D107 +:106C30003178042902D10920107000200CB070BDF9 +:106C40006068019006A802900822E1680FF06DFAD2 +:106C5000082208A8A1680FF068FA01202871062010 +:106C600069460870206A049031466846FFF726FEA0 +:106C7000E4E770B50D460C462035297901208CB02B +:106C80001646002908D00129D8D131780429D5D158 +:106C90000A2010700020D1E76068019006A80290D9 +:106CA0000822A1680FF041FA002008900990012005 +:106CB0002871062069460870206A049031466846AB +:106CC000FFF7FCFDBAE730B50B4620331C790120F5 +:106CD0008BB0002C09D0012C05D11178042902D1E8 +:106CE0000B20107000200BB030BD4868019005A843 +:106CF00002908C6868462578057564784475CC6880 +:106D0000257885756478C47500200690079001E0A9 +:106D10002867010008900120187106236846037057 +:106D2000086A049011466846FFF7C8FDDBE770B5B6 +:106D30000C462034034625790120002D0AD0012D70 +:106D400014D0022D05D111780A2902D10C2010701F +:106D5000002070BD01202071C868052202704A68B9 +:106D60004260F84A8260921CC2600BE015780B2DDD +:106D7000EFD102202071C868042404705268426078 +:106D80008A688260096A016201461846FFF745FE7B +:106D900070BD30B5011D02463132947803258379E8 +:106DA000ED432C4323408371DB070DD04B7954799D +:106DB00023404B710B79127913400B718278C9789B +:106DC0008A4200D9817030BD00224A710A71F5E70C +:106DD000F7B50C4686B00020694626460870203676 +:106DE000317901271E2015461F2977D24B007B449D +:106DF0009B885B009F441E0017023E0256026902F8 +:106E000088029A02D102F5022E03590371037F030F +:106E1000AE03C303CC03F7031A0464049A04AB045F +:106E2000DF04FE0410052A0565059B05C6058305DC +:106E300087058B056069002802D0007813287DD073 +:106E4000A0680590002849D0012168460170206A99 +:106E500004900321684601710A214171E0690290A2 +:106E600020790028EFD0059909780029E7D00C296E +:106E700064D20B000FF0C8FB0CFD1A4B90B5E8FC78 +:106E8000FBFAF9F807FD022828D16069002802D032 +:106E90000078082852D1022168460170206A0490C7 +:106EA00005984178684601710021B9E20620216AFF +:106EB00006F005FB20790728E6D1606900F050FF55 +:106EC00002280CD0606900F04BFF042807D06069ED +:106ED0000028B8D000780128D6D103E01BE2616910 +:106EE0000120087005980079C11F0A2901D30A20E2 +:106EF00050E06169072288706069059930300FF0B1 +:106F000014F90120307161690320087034E007280A +:106F1000BAD16069002896D001780929B4D10599C1 +:106F2000C978890707D1059949790029DFD10599E1 +:106F300089790029DBD105994A7900E04EE20146C2 +:106F400020314B7D9A43D2D1059A8B7D92799A4319 +:106F5000CDD1059A1279D31F0A2BC8D20979914253 +:106F600036D80722C01C05990FF0DFF801203071D8 +:106F700061690A200870032069460870206A04903D +:106F80006069313001906069001D029060691C30B9 +:106F90000390A1E22076F2E311288DD1606900F020 +:106FA000DFFE042804D0606900F0DAFE0B2893D1DC +:106FB0006069059910223730491C0FF0B6F86069F6 +:106FC000017804297CD12421095C8278914201D97D +:106FD0000620DFE70521017003203071684601704B +:106FE000E2E3112894D1606900F0BAFE062804D0CB +:106FF000606900F0B5FE0C288AD1E068002813D043 +:107000002069002810D060690178062910D00D2170 +:1070100001706069059910225730491C0FF085F8FE +:107020006069573009218CE100206946087072E1DF +:10703000072101706069059910224730491C0FF043 +:1070400074F860694730EDE70228F0D1606900F01C +:1070500087FE0028EBD0606900F082FE0128E6D0B0 +:10706000606900F07DFE05E0B1E08DE06CE02AE0B3 +:107070000AE0D6E00828DAD00521684601710598B3 +:1070800041786846417146E11128D0D160690028F5 +:10709000CDD001780E29CAD1C16A4078022810D01B +:1070A0000020142250431430085805991022491C1E +:1070B0000FF03BF80520216A00F040FE0F205EE053 +:1070C000F1E10120EDE70B28B1D160690028AED0D5 +:1070D00001780F29ABD1C16A4078022826D0002060 +:1070E000142250430C300958059842780A70807871 +:1070F00048706069C16A4078022819D000201422C3 +:1071000050431030085805990822C91C0FF00DF89B +:107110000520216A00F012FE60694178022909D039 +:1071200000220832825C5208520073E00120D7E747 +:107130000120E4E70122F4E7012100E00021083109 +:107140004254BCE30267010011289CD16069002809 +:1071500099D00178102996D1C16A4078022811D0BF +:107160000020142250431830085805991022491C59 +:107170000EF0DBFF0520216A00F0E0FD11206169BF +:107180000870B4E30120ECE7082884D16069002886 +:107190009DD00178112997D10599C06A497801706D +:1071A00060690599C06A0622401C891C0EF0BDFF6B +:1071B0000520216A00F0C2FD60694178022904D0EF +:1071C00000220832825CFD2323E00122F9E7112826 +:1071D000BBD160690028BBD001781229B5D1C16A42 +:1071E0004078022819D00020142250431C3008583F +:1071F00005991022491C0EF098FF0520216A00F025 +:107200009DFD60694178022909D000220832825C24 +:10721000FB231A40022991D18EE70120E4E70122E5 +:10722000F4E70720B6E6287801288ED160696968FE +:1072300014221C30F9F7C8FF6069017F002901D0D2 +:107240002176ACE30178032901D0032037E002273F +:10725000C77081794907490F8171017A4907490F40 +:107260000172417A4907490F41726069FFF791FD48 +:10727000377196E228780F28E3D107206946087015 +:10728000216A049191680291694608716169072237 +:10729000C91C02980EF049FF6169042008700020A3 +:1072A0003071BBE028780328CBD1606901780529CB +:1072B000696807D0082247300EF037FF042030718C +:1072C00005206FE208225730F6E728780328B8D166 +:1072D000606901780529696811D008224F300EF0E5 +:1072E00024FF052030716069006A00280AD002205E +:1072F0002870002028716069006AA860F9E00822FF +:107300005F30ECE704204DE22878022899D12879F3 +:10731000002801D0207642E36069A96801626069B3 +:10732000002901D1F949016206200BE228780F28D3 +:1073300087D1A868E0616069017805292BD04730C2 +:1073400007213171E16802220A706269126A4A609B +:10735000886060693030C8606069C01C086162691B +:10736000087D926A400812784000D207D20F10437D +:1073700008756269926A521C8A61FD221040626936 +:10738000D26A1278D207920F104308756069C06AFA +:10739000401CC86153E25730D2E728780828BAD198 +:1073A0006069017805291AD00B2101700720694610 +:1073B0000870206A0490E069029011200871029818 +:1073C0000321017051681022401C0EF0AEFE002116 +:1073D0006846FFF773FA00203071E06187E206210A +:1073E000E3E728780F2896D1072069460870206ABD +:1073F0000490A8680290112008710298042101707D +:1074000061690A78072A0ED0002232710C220A70B4 +:1074100061691022401C47310EF087FE002168464A +:10742000FFF74CFA63E21022401C57310EF07DFE4C +:1074300000216846FFF742FA0A203071E168032014 +:1074400008706069006A48606069573088606069E8 +:107450004730F3E128780828A1D1606969681022D3 +:1074600037300EF035FE002801D0042092E5606927 +:107470000078072817D00A203071E16803200870CF +:107480006069006A486060695730886060694730A9 +:10749000C860206A08620698FFF7BFFA074660696D +:1074A000FFF777FC6BE208207AE1287809289AD167 +:1074B0000B20307161696868897810224018511A70 +:1074C0000EF090FE082069460870206A04906868F3 +:1074D000019060698078087268E129780D29BBD134 +:1074E00061698979C90703D00C20307109203EE019 +:1074F0003071032770E228780E28ADD1606914221C +:10750000291D1C30F9F760FE6069018DC06A417267 +:10751000090A817260698178C06AC1716169CA6A49 +:10752000081D117AC909C9011172437962691943A9 +:107530008378D26A9B079B0F012B00D00023007930 +:107540009B01C00003431943117260694078012810 +:1075500076D0B4E160694178022901D0012100E0D0 +:1075600000210831405CC00707D00E20EAE06946E0 +:107570000870206A1146049019E11320B8E72878B2 +:107580000F2894D1A868E0610F2030710520EEE744 +:10759000287803288BD16069C16A4078022801D01D +:1075A000012000E000201422504310300858082227 +:1075B00069680EF0BAFD10203071E168062022697A +:1075C00008706069406A48606069C36A4078022850 +:1075D00001D0012000E00020142778431030185813 +:1075E000CA6088602BE128780C2886D16069C26A5D +:1075F0004078022801D0012000E0002014214843F7 +:107600000C30105802230932696800F07CFB11200D +:107610003071E168052008706069006A486060693F +:10762000C06A093088603948001F07E128780B28B4 +:10763000A7D161694878CA6A022802D0012001E016 +:1076400059E1002014235843143010588A7869688F +:107650000EF06BFD60694178C26A022901D00121F8 +:1076600000E00021142359431431525881785018F6 +:107670001022511A0EF0B6FD072069460870206AE4 +:107680000490E069029011200871029806210170AF +:107690006169CA6A4978022901D0012100E000210C +:1076A00014235943143151581022401C0EF03DFD53 +:1076B00000216846FFF702F90020E06112206FE028 +:1076C00028780F2891D1072168460170206A04901C +:1076D000906802900B2268460271029801706169FD +:1076E000CA6A4978022901D0012100E0002114234F +:1076F00059430C3151580A78427049788170616958 +:10770000CA6A4978022903D0012102E00867010012 +:10771000002114235943103151580822C01C0EF087 +:1077200004FD00216846FFF7C9F826E76069417843 +:10773000022901D0012100E000210831405C8007CE +:1077400003D5142030710A2011E71620D0E62878DE +:107750000F287AD1A868E061072069460870206A7E +:107760000490E069029011200871029808210170CC +:107770006169CA6A4978022902D0012101E011E158 +:10778000002114235943183151581022401C0EF087 +:10779000CCFC00216846FFF791F80020E06115203D +:1077A00030710A2069460870206A049029466846AC +:1077B000FFF784F82BE028780F2846D10720694688 +:1077C0000870206A0490906802900820087102985E +:1077D0000921017061690622C969097841706169EE +:1077E000801CC969491C0EF0A0FC00216846FFF707 +:1077F00065F8AAE760694178022901D0012200E01A +:1078000000220832805C400703D51720C8E70746EE +:10781000B5E0012953D070E028780F2815D1A86869 +:10782000E06118203071E168052008706069006A25 +:1078300048606069C06A09308860F848C860206A9A +:1078400008620698FFF7E9F8E1E76FE028780B286F +:107850006CD16069C16A4078022801D0012000E043 +:107860000020142250431C300858102269680EF082 +:107870005CFC072069460870206A0490E069029069 +:107880001120087102980A2101706169CA6A497859 +:10789000022901D0012100E00021142359431C31A9 +:1078A00051581022401C0EF040FC00216846FFF7A2 +:1078B00005F80020E0616069407801281DD1192099 +:1078C00016E660694278022A09D000210831411881 +:1078D000097800290DD0CA0703D00E2106E0012146 +:1078E000F4E7890701D5102100E01221017000277B +:1078F00072E0012A01D00D20FAE51C20F8E51D20D8 +:1079000030710B2033E62978102948D1F0E5606901 +:107910000178012943D0082941D00021317100F0BC +:1079200019FA0C2069460870206A049037E028781C +:107930000F2805D01020107003271B2030714BE05A +:10794000072168460170206A0490A868029002210D +:1079500068460171029805210170217E4170002165 +:107960006846FEF7ABFF0B2168460170206A049061 +:1079700029466846FEF7A2FF07461B203071012FFB +:107980000DD029E0012168460170206A049004218D +:1079900068460171217E41710020207612E0207E30 +:1079A00000280FD06169132008701A2030710A2056 +:1079B00069460870206A049029466846FEF77EFFF3 +:1079C000074609E06069002801D01421017068466B +:1079D0000078002800D021E5384609B0F0BDF7B5A1 +:1079E0000F4620373879012686B00C46002804D08F +:1079F000012828D002281CD197E02079012804D042 +:107A0000022811D0032814D10AE0A0684078012888 +:107A10000ED10620216A05F02CFD00287FD10CE054 +:107A2000A1681320087008E0A0684178022901D0FD +:107A3000052674E00078082871D1012038710A20E9 +:107A40006946087033E0089800780F2867D107214D +:107A500068460170206A049008988568029522792A +:107A60000220012A04D0022A29D0032A57D10FE08C +:107A70000646684606710B202870207B00214007CF +:107A8000400F68706846FEF719FFA068067045E071 +:107A900006466846067105202870207B6870002124 +:107AA0006846FEF70BFF3E710B2168460170206AA5 +:107AB000049068460899FEF701FF06462FE06846E5 +:107AC000017101202870207C6870607CC007C00FA5 +:107AD000A870A07C4007400FE870E17C2971C007C6 +:107AE0001FD0207D4007400F6871607D4007400F28 +:107AF000A87100216846FEF7E1FEA068072229462A +:107B000030300EF012FBE068017AA068203001717D +:107B1000A16828798870A16809200870002630467D +:107B20005BE70020A8716871E3E7A1681420087082 +:107B3000012168460170206A0490042168460171A1 +:107B4000217B41710021FEF7B9FEE7E7F0B585B072 +:107B50000F4605460124287B800040198038C66FF7 +:107B60003078411E0A290AD22C498000323140184F +:107B70008038C36F3A463146284698470446002C61 +:107B800001D0012C11D1287B401E0006000E287365 +:107B900001D00324DFE70D2069460870306A0490A5 +:107BA000002101966846FEF789FE032CD3D02046BB +:107BB00005B0F0BD70B515460A4604462946104684 +:107BC000FFF7C4FF0646002C0FD0207814280CD1F4 +:107BD000207E002806D000202870204629460C3040 +:107BE000FFF7B4FF204600F0B5F8304670BD70478F +:107BF00010B5012903D0022901D0052010BD417024 +:107C000000F0A8F8002010BD002809D0027E002A4C +:107C100006D00A4601460C31CCE700000667010099 +:107C20000120704730B5044687B00D46062005F0A8 +:107C300046FC2946052005F042FC2078142805D092 +:107C40000020694608702046FFF7DEFF07B030BD10 +:107C50007FB50E4600216A4611730178092903D0C9 +:107C60000A2903D0002407E0446900E08468002C5E +:107C700002D0217E002912D0154601462846FEF783 +:107C8000CCFE032809D1324629462046FFF792FF51 +:107C90006946097B002900D0042004B070BD254648 +:107CA0000C35EAE700B50023012285B005280CD089 +:107CB000062808D1684602700491022101714371BF +:107CC0000021FEF7FBFD05B000BD6846027004917F +:107CD0000271F4E710B590B00C4605216A461170A8 +:107CE000019022480290001D03900AA96846FFF700 +:107CF000AFFF002805D1102220460B990EF015FA8F +:107D0000002010B010BD30B505E05B1EDBB2CC5CCE +:107D1000D55C6C40C454002BF7D130BD10B50024A5 +:107D200009E00B78521E5B00234303700B78401C64 +:107D3000DC09D2B2491C002AF3D110BD70B50C4643 +:107D4000054605F0BCFB782300222146284605F0B5 +:107D500011FB70BD4178012900D0082101707047E6 +:107D6000002801D0007870470820704700670100A4 +:107D700038B50446002069460870204609F053FDD6 +:107D8000002803D1FBA1A3200EF04DFB204609F0F3 +:107D900099FC002803D1F7A1A8200EF044FB684607 +:107DA000007838BD70B5F84D002428462C77203077 +:107DB0008471C47101F09AF928464038047020306B +:107DC0008473847484772C75AC7170BD10B50C46C7 +:107DD000EE4982888A8042884A8000780870084686 +:107DE0000E38847009F050FC08F0FDFFFFF7DAFF51 +:107DF00020460BF013F8E449A8310846813809F011 +:107E0000ADFEE2480CF021FBE0480A3808F0FEFF26 +:107E1000002803D0D7A1C5200EF005FB01F066F9BC +:107E200010BD7CB50E461D46144601A909F008F8A0 +:107E3000002807D10AF091FB022803D1D248007D27 +:107E4000002801D001207CBD01988030807C09F0A1 +:107E50004DFC00280CD0684609F052FC0028F2D0F6 +:107E6000002C03D009F011FCA04206D200207CBDFA +:107E7000C0A1C7480EF0D7FAF8E7009809F0D8F883 +:107E80003146009809F0DBF8E2B22946009809F083 +:107E9000F0F909F045FC002804D1BD48B5A11E3019 +:107EA0000EF0C1FAB94C00250E3C6068A030417953 +:107EB000002902D045710BF0D8F860688030458306 +:107EC000C0E730B40179002904D0012907D030BCC3 +:107ED00000207047831D42880488022103E0428805 +:107EE0000488831D0121204630BC9AE7F8B51D4661 +:107EF00014460E4607460AF030FB022803D0A2487B +:107F0000007D002823D0A1480E3841684988398077 +:107F100040688030807C09F069FD002804D153203E +:107F200094A1C0000EF07FFA684609F069FD0028B0 +:107F30000DD0009809F0BAF83070022808D0012856 +:107F400006D093488BA167300EF06DFA0020F8BD83 +:107F50002946009809F0A4F92080002804D1552072 +:107F600084A1C0000EF05FFA09F05DFD002804D185 +:107F7000874880A160300EF056FA0120F8BD38B570 +:107F80000446831D821C6946FFF7B0FF00280DD010 +:107F90000020607168460078012808D0022806D0C9 +:107FA000FF2074A101300EF03EFA012038BD20718F +:107FB000FBE7F8B50AF0D1FA744D734C0E3D022878 +:107FC00002D0207D00287DD0207F0026102818D1E7 +:107FD000A079002803D067A16E480EF024FA6868E3 +:107FE00001464030827F92070BD526724988618115 +:107FF000C17F2173018CE181408C20820120A0711E +:108000002677614F203FB87C00285ED168686946BA +:108010008030807C09F007FC002805D0694668782C +:1080200009784018687004E05A4852A119300EF0DF +:10803000FAF9207D00283AD06868418852484038D3 +:10804000806D4088814204D00F204AA1C0010EF00B +:10805000EAF968688030807C09F0C8FC002804D107 +:108060004C4844A124300EF0DEF909F0EEFC002863 +:108070001DD068688030807CFFF77AFE69784018F0 +:10808000687041484038806D4030417A01290DD1F7 +:108090002670696849886180807A20710120B877EC +:1080A000207F102801D0282800D1267726756978EE +:1080B00000290AD06868428833484038C286018760 +:1080C000012000E001E0B8746E700AF029FA00287F +:1080D00005D1207D002802D0A878FAF7F9F8F8BD7C +:1080E000F8B50446FFF765FF274D0026203DA87E22 +:1080F000002808D0667010202070E87EA070287FCD +:10810000E070AE769AE0204F403F3878002808D0E3 +:108110002C22B91C20460EF008F80E2020703E706C +:108120008CE0A87B184F002815D0387F102808D085 +:10813000282806D0002804D0FF200EA1C2300EF05F +:1081400072F90120E070E87BA070287C60700F203D +:108150002070AE7372E00121204609F099FC0028DE +:108160001AD0387D002857D10021204609F090FC14 +:10817000F8BD00007372635C6C6C5F6374726C2E8C +:1081800073302E630000000094090020720000206C +:108190004F02000062070000A97CF8480090F848F0 +:1081A000002910D0017805290DD2491C0170667094 +:1081B0000D202070012028750622A01C00990DF0CA +:1081C000B4FFAE743AE0EE480670B879002812D0D9 +:1081D000387F002804D00120EA4940020EF023F93C +:1081E00066700120E54920700A221431A01C0DF0B0 +:1081F0009CFFBE7122E020460CF083F800281DD1C0 +:10820000A87C002802D0DE480178CEE7A87F0028AD +:1082100002D0387D002801D00020A9E7387F00284F +:1082200003D0D849D8480EF0FEF866700A202070B6 +:1082300006223946A01C0DF078FFAE77012097E7A3 +:108240004EE710B5CD4C343C2178002904D01321E1 +:108250000E2000F052FF10BDC9490088091D08F02A +:10826000EFFD002801D0022007E0C5484068014624 +:1082700020318A79012A02D00C20207105E00022E9 +:108280002271097E21724088E080012060711321F3 +:10829000E1700E21A170207010BDB84810B53438BF +:1082A0000178002904D024210E2000F026FF10BD03 +:1082B000012101702422C2700C220271417110BD93 +:1082C00070B5AE4C0546343C2078002804D03E21E1 +:1082D0000E2000F012FF70BD0AF03FF9002808D10F +:1082E0000AF03EF9002804D1A4480C30007F002891 +:1082F00001D00C2003E0287809F033FD0020207124 +:10830000012060713E21E170207070BD9B4810B566 +:1083100034380178002904D03C210E2000F0EDFE15 +:1083200010BD00210171012141713C22C270017018 +:1083300010BDF8B5914C343C2078002804D03B2186 +:108340000E2000F0DAFE13E70020A0710AF005F914 +:108350008A4E01250C36022802D0307D002840D0FC +:10836000874F694678688030807C09F073FA00286E +:1083700003D1844985480EF056F8307D002806D098 +:10838000A06D4030407A002801D0012600E0002690 +:1083900078688030807C09F029FB002804D17B4874 +:1083A000784908300EF03FF809F04FFB684031463D +:1083B000014316D07968FD2249882181217E400041 +:1083C000490849003143114001432176684600784D +:1083D000002802D00420014301E0FB200140217667 +:1083E000A5710020207165713B20E0702570BFE60B +:1083F00010B5624C343C2078002804D00E21084689 +:1084000000F07BFE10BD5E4906220831A01D0DF074 +:108410008CFE00202071012060710E21E17020701F +:1084200010BD70B5554C0546343C2078002804D06A +:1084300038210E2000F061FE70BD50480C30007FE6 +:10844000002807D00C202071012060713821E170D4 +:10845000207070BD287809F072FC28780CF05BF968 +:108460000020F0E770B5454D0446343D28780028DB +:1084700004D037210E2000F040FE70BD3F480C3084 +:10848000007F002801D00C200AE03D4E2188706852 +:108490004088884203D10AF060F8022807D0022001 +:1084A0002871012068713721E970287070BD7168EA +:1084B0007F2020310876487600208876A2788A715D +:1084C000E278CA7122790A72EAE710B52B4C343C83 +:1084D0002078002804D039210E2000F00EFE10BDB7 +:1084E0000AF03BF8032808D00AF03AF8032804D031 +:1084F00022480C30007F002801D00C2003E01F49E7 +:1085000000202C31C8712071012060713921E17087 +:10851000207010BD70B5194C0646343C20780028F8 +:1085200004D03A210E2000F0E8FD70BD0AF015F8E5 +:10853000032808D00AF014F8032804D00F480C30A0 +:10854000007F002801D00C2011E00C4D2C35E8797B +:1085500008280BD20001001910223146683000F0C3 +:10856000D6FDE879401CE871002000E0072020716A +:10857000012060713A21E170207070BD88090020EF +:108580006400002074810000210200001708000030 +:10859000F8B5FA4E04463078002804D03D210E206C +:1085A00000F0ABFDE4E5F5484030007F002801D045 +:1085B0000C2034E0F24D218868684088884203D15D +:1085C00009F0CBFF022801D0022028E06F68648800 +:1085D000FD883A896800B988401C844218D3E9486C +:1085E00041431046E84A50430DF019FE401EFF215A +:1085F00080B2F531884200D90846844200D2204634 +:10860000691C401C0DF00BFE6D1C6843401E85B2BA +:10861000E620C05D002800D1BD84F58000203071C7 +:10862000012070713D21F1703070A1E5F8B5D34C97 +:1086300005462078002804D035210E2000F05DFD8D +:1086400096E5CE484030007F002801D00C2016E08F +:10865000A878002801D0012804D1A888FF21F5318D +:10866000884201D912200AE0C54F298878684088DD +:10867000884203D109F071FF022807D0022020713F +:10868000012060713521E170207071E57968002664 +:108690000846C0310E70AA884A800122A0300271BB +:1086A000AA78012A00D000220A704079002801D05F +:1086B0000AF0DBFC2671E3E770B5B04C0546207884 +:1086C000002804D030210E2000F017FD55E709F0F6 +:1086D00044FF002804D1A9484030007F002801D081 +:1086E0000C2003E028780AF0E0FB00202071012034 +:1086F00060713021E17020703FE770B59F4C0546F6 +:108700002078002804D033210E2000F0F6FC34E756 +:1087100009F023FF002804D198484030007F00284A +:1087200001D00C2018E02978002911D00A290FD097 +:1087300014290DD01E290BD0282909D0322907D0A1 +:108740004B2905D0642903D0FF2901D0122003E072 +:1087500028460AF023FC002020710120607133219B +:10876000E170207009E770B5844C06462078251D1D +:10877000002804D032210E2000F0BFFCFDE6314677 +:10878000002009F0AEFA2870002805D17C480622A6 +:10879000314608300DF0C9FC012060713221E170D2 +:1087A0002070EAE670B5754C2178002904D031219B +:1087B0000E2000F0A2FCE0E600214156012504292C +:1087C00012D0002910D0081D0ED0001D0CD0001DA5 +:1087D0000AD0001D08D0001D06D00A3004D00A308F +:1087E00002D01220207103E0084606F079FD657181 +:1087F0003120E0702570C0E6FEB5604C0746207859 +:10880000002804D025210E2000F077FCFEBD38881A +:10881000694608F015FB594D01460020083500292E +:1088200004D002212171286028710FE00098009E79 +:108830000A30019060360020B07105222846019967 +:108840000DF073FCB0790028F5D13888E0800E2057 +:10885000A0702520E070012060712070FEBD10B571 +:10886000464C2078002804D005210E2000F045FC5D +:1088700010BD0020207108F008FFE08008F0D1FF53 +:108880002072012060710521E170207010BDF1B5EA +:108890003A4C2034A07B002804D010210F2000F097 +:1088A0002CFC65E4354D4035A8790C2610270028AE +:1088B00016D1287F002813D109F04FFE022824D1B9 +:1088C0002F4800994068098842888A421DD1014694 +:1088D000C0310A7A002A05D04030807F80070DD44D +:1088E000E6730EE05E22125C920707D406220A723B +:1088F000A0304079002801D00AF0B7FB2F77002084 +:10890000E07327740120A07332E40220F8E710B569 +:108910001A480178002904D00F210E2000F0EDFB49 +:1089200010BD00210171FF2181710021C943018126 +:1089300013490E310A7882728A8882814988C181FE +:10894000012141710E2282700F22C270017010BD90 +:1089500010B50A4C2078002804D02B210E2000F0FE +:10896000CCFB10BD0821A01D04F024FB00202071C9 +:10897000012060712B21E170207010BD540900208E +:1089800064000020C40900001027000070B5FA4DF3 +:1089900004462878002804D02A210E2000F0ADFBE0 +:1089A000EBE5F54810222146303800F0B0FBF248E4 +:1089B0001022A118203800F0AAFBEF4830380CF044 +:1089C000BCFBED49102210392C46A81D00F09FFB7E +:1089D000002020710E20A0702A20E070012060711C +:1089E0002070CAE5F8B50546E348E34C40300090F6 +:1089F000007F0C2628272034002801D0E6733EE0B3 +:108A0000A07B002804D028210F2000F076FB04E48E +:108A1000A87805280DD013280BD0142809D01528C4 +:108A200007D01A2805D0292803D03D2801D03B289B +:108A300003D12888D149884201D912201EE009F0CB +:108A40008CFD0228DAD1CE482A88406841889142BC +:108A500013D10146C0310A79002ACFD1AA784A71D0 +:108A600001220A710099A0300F770021E17340794B +:108A7000002804D00AF0F9FA01E00220E07327741C +:108A80000120A0735FE4F8B5BB4F064638783D1D62 +:108A9000002804D017210E2000F02FFB53E43146AC +:108AA000012009F01EF901242870002807D1B248DE +:108AB00006226030314605460DF037FBAC717C7103 +:108AC0001720F8703C703EE470B5AB4C0646207839 +:108AD000002804D00B210E2000F00FFB4DE509F01B +:108AE0003CFD032808D009F03BFD032804D0A24830 +:108AF0004030007F002801D00C2016E03378002B96 +:108B000003D0012B01D012200FE09B4DE035297AD4 +:108B1000082909D22846721C0C3006F097FB287AE7 +:108B2000401C2872002000E00720207101206071A5 +:108B30000B21E170207020E510B58F4C20780028C3 +:108B400004D00A210E2000F0D8FA16E709F005FD3E +:108B5000032808D009F004FD032804D086484030DB +:108B6000007F002801D00C2002E000F0BFFA0020B6 +:108B70002071012060710A21E1702070FDE610B5BE +:108B80000AF032F9002803D07E497F480DF04BFCF3 +:108B900008F04BFD0BF051FC002804D01720794958 +:108BA00040010DF040FC08F0ACFF002804D0B920D3 +:108BB000744980000DF037FC00F098FAFFF7F2F8E6 +:108BC0006D4800210171012141710222C2700170C2 +:108BD000D3E610B5684C2178002904D020210E205E +:108BE00000F08BFAC9E601781F290ED8411C0CD081 +:108BF000002121710278411C104609F08FF80120F4 +:108C000060712021E1702070B7E612202071F6E734 +:108C1000F8B5594C2178002904D01B210E2000F012 +:108C20006CFABFE401216171534E0C212171403671 +:108C3000317F00296FD10078514F0025012804D0E1 +:108C400000284AD01220207165E009F086FC002837 +:108C500003D109F085FC002804D009F07EFC02282D +:108C600022D058E008F08FFF002854D0307D002833 +:108C700051D1786801224580032108F0B4FB78685F +:108C800009F05AF97868923008F001FD002803D104 +:108C90003C493E480DF0C7FB0AF00BF9002839D0DB +:108CA00085203849C00015E009F05AFC002832D16F +:108CB000707F00282FD001282DD004282BD008F059 +:108CC00062FF002827D00AF0F4F8002822D02F48AD +:108CD0002C4918300DF0A7FB1CE009F03EFC0328DE +:108CE00004D009F03DFC03280FD014E000200AF066 +:108CF00005F800280FD12571307D00280BD1786848 +:108D00008030807CFFF734F805E0002009F0F6FFA2 +:108D1000002800D125711B20E0700120207041E463 +:108D200010B5154C2178002904D01A210E2000F02E +:108D3000E4F922E601781F290ED8411C0CD000214D +:108D400021710278411C104608F0FDFF012060717E +:108D50001A21E170207010E612202071F6E770B53C +:108D6000054E044630780C25002811D018210E201D +:108D700000F0C3F9AAE4000054090020FF0E00002F +:108D80006400002074810000D3020000240400006D +:108D900009F0E3FB03285AD009F0E2FB032856D080 +:108DA000E14A107F002852D16079002801D00128C3 +:108DB0002DD1A079002801D0012828D1A07B00283E +:108DC00005D0012803D0022801D003281FD1607BE1 +:108DD00000281CD0C0081AD161880120800381427C +:108DE00002D82388834203D9207901280FD119E0C2 +:108DF0002079002806D0012814D0022805D00328A5 +:108E000005D102E020290BD30CE0A02B0AD2207957 +:108E1000042805D12088202802D36188884201D9FE +:108E2000122514E0207950776079002802D00128BB +:108E300003D00CE0BD4A002105E0BB4A2032907906 +:108E4000002804D00121204608F0CEFE054601206E +:108E5000357170711821F170307037E470B5B24C13 +:108E60000546403C2078002804D02E210E2000F03A +:108E700044F92BE409F071FB0C22022815D1AA4811 +:108E8000007F002811D1A9482B88083841684888FC +:108E900083421AD10846C030037A002B05D1203115 +:108EA000C97E0F2903D0102901D0227103E00521CA +:108EB0000172002020710E20A0702E20E070288802 +:108EC000E08001206071207016E40220F2E770B5A6 +:108ED000954C0546403C2078002804D02D210E20DA +:108EE00000F00BF908E409F038FB0C21022814D13A +:108EF0008D48007F002810D18C4E2A88083E70686B +:108F000043889A4220D1C822125C002A05D13B2214 +:108F1000125C0F2A03D0102A01D021710AE010221E +:108F2000A91CD6300DF001F970680421C03001721F +:108F3000002020710E20A0702D20E0702888E08095 +:108F40000120607120700DE40220F2E710B5017875 +:108F50000B000DF059FB3F9E9E399E9E599E9E9E92 +:108F60009E3C3F9E9E8752559E9E999E9E9E432963 +:108F70009E2D319E9E9E9E359E9E9E955C9E9E47FA +:108F80009E4B4F9E21259E6C6064689E709E7F83E1 +:108F90007C788A8D74919E00801CFFF798FF76E0A4 +:108FA000801CFFF75BFF72E0801CFFF7D8FE6EE0CD +:108FB000801CFFF7B5FE6AE0801CFFF729FE66E023 +:108FC000801CFFF706FE62E0FFF7D9FD5FE0FFF7C8 +:108FD000B3FD5CE0801CFFF777FD58E0801CFFF7D5 +:108FE00052FD54E0801CFFF7FDFC50E0801CFFF7B1 +:108FF000CDFC4CE0FFF7ACFC49E0FFF788FC46E015 +:10900000801CFFF744FC42E0FFF729FC3FE0801C96 +:10901000FFF7F2FB3BE0801CFFF7C4FB37E0801C4E +:10902000FFF7A1FB33E0801CFFF767FB2FE0801CFC +:10903000FFF742FB2BE0801CFFF7F8FA27E0801CCB +:10904000FFF7A6FA23E0801CFFF764FA1FE0FFF7A2 +:109050003CFA1CE0801CFFF705FA18E0801CFFF7C3 +:10906000E0F914E0FFF7C4F911E0FFF762F90EE050 +:10907000801CFFF74BF90AE0801CFFF721F906E09E +:10908000801CFFF70AF902E0801CFFF7DAF80120E4 +:1090900073E4002071E470B52349244C054640393F +:1090A000083C0A460126403260682B000DF0ACFAFD +:1090B00005171A1A04171A000122002108F093F963 +:1090C000616800220846C0310A724A7209F067FFDF +:1090D000002803D016A11B480DF0A5F960E4167511 +:1090E00088655DE4174812A13330F5E70E4900208A +:1090F000C031C8612039087270470B4A203A937E0C +:10910000002B03D1D076117701209076704730B5CF +:10911000134606E0CC18203CE47FD51A44555B1E6C +:10912000DBB2002BF6D130BD940900206C0000208A +:109130007372635C6C6C5F6374726C2E73302E633D +:10914000000000005108000070B5FD4D040008D07B +:10915000012C10D0022C07D0032C05D0F9A17020CF +:1091600007E0F8A1672004E02878012803D0F5A1E2 +:109170006D200DF058F92C7070BD70B5F04D04469F +:1091800010280AD0112C16D028468178122C07D02E +:10919000132C0AD0EBA19F200BE0EAA1942008E059 +:1091A000112908D0E7A1992003E0112903D0E5A1F6 +:1091B0009C200DF038F9AC7070BD10B5E04894B04B +:1091C000007B002819D0172069460870DC4900A8E8 +:1091D00006220D3102300CF0A8FF09A96846F9F704 +:1091E000C2FE0446112805D0002C03D0D5A1BB2017 +:1091F0000DF019F9204614B010BD3220E4E710B587 +:1092000001220023114603F0B5FC10BDFFB595B057 +:109210001D460E460746FFF7F2FF04000AD02078ED +:10922000222804D3A07F8006C00FA84204D10820C2 +:1092300019B0F0BDC748FBE7372168460170478089 +:10924000002D05D00121017146711799817102E04D +:1092500000206946087109A96846F9F784FEA07FD5 +:10926000DF21084069010843A0770020E0E770B5DE +:109270000446084620380D4603000DF0C5F90A06DD +:109280000A11232C334249505761FF20ADA1083009 +:1092900052E02078202851D1FF20AAA10B304BE0CA +:1092A000A7480178032949D08078132846D0207830 +:1092B000242843D0252841D023283FD0FF20A1A136 +:1092C0000E3039E02078222838D0232836D8FF20E5 +:1092D0009CA1153030E0207822282FD0FF2099A1C2 +:1092E000193029E02078222828D0242826D02628C2 +:1092F00024D0272822D0292820D0FF2091A11C305B +:109300001AE02078252819D0FF208EA1233013E001 +:109310002078252812D0FF208AA126300CE0207862 +:1093200025280BD0FF2087A1293005E020782828A8 +:1093300004D0FF2083A12C300DF075F8257070BD8E +:10934000FF2080A12F30F7E730B5834C0B88834A8C +:10935000022801D0934204D09D1FA54225D20228A5 +:1093600002D04D88954203D04D88AD1FA5421CD236 +:109370004C88A34219D88B88FF25F435AB4214D80A +:10938000022802D0C888904205D0C888724D0A3899 +:109390002D1FA84209D2C888904208D0944206D016 +:1093A0005B1C63438000834201DB072030BD00204B +:1093B00030BDF0B56A49884245D36A4A0125AD04FB +:1093C0001368A84201D398423DD30279002A06D0FF +:1093D000082A02D8067B082E05D90720F0BD047B99 +:1093E000002CFAD0F6E7002A06D004688C422AD373 +:1093F000AC4201D39C4226D3002E06D084688C4216 +:1094000021D3AC4201D39C421DD300240CE005685B +:10941000A700ED598D4216D30127BF04BD4201D3E9 +:109420009D4210D3641CE4B2A242F0D80022012570 +:10943000AD040CE084689700E4598C4203D3AC423D +:1094400003D39C4201D21020F0BD521CD2B29642EE +:10945000F0D80020F0BDFFB50022099B002802D003 +:10946000994205DC58E0002902D1002004B0F0BD8B +:109470000920FBE7845C002C12D087187D78112D21 +:1094800043D010DC2B000DF0BFF80A401726262C25 +:109490002C2E2E363640835C002B30D1521CD2B29B +:1094A0008A42F8DBE1E71C2D2FDA123D2B000DF08C +:1094B000ABF8042C2C121A2C022CD9D1BB78039CAB +:1094C000072B237001D25B0701D40A20CEE7029B51 +:1094D00001241B7816E0E343DB0708E0012C08D0E9 +:1094E00013E00620C2E70F2523072D075B19002B89 +:1094F000F4D03046BAE7029B1B789C0701D50B20BD +:10950000B4E702242343029C2370835C521C9A1804 +:10951000D2B28A4202DDABE7192676028A42A9DB83 +:10952000A3E710B504780B46002C1FD001210E4A8A +:10953000012C1ED0022C22D0032C2AD125E00000C1 +:10954000740A00207372635C6761705F636F726599 +:109550002E630000023000007B0C0000FFFF0000C3 +:109560000080010028000020023200000021197054 +:1095700011E019708179890903290AD10BE019706A +:1095800081798909012904D105E019708179890956 +:1095900001D0104610BD411C0622581C0CF0C5FD20 +:1095A000002010BD08B51346002806D0FEA00068B4 +:1095B000009048796A468009105C18700622581C91 +:1095C0000CF0B3FD08BD30B50C46097895B02229E2 +:1095D00002D2082015B030BD282369460B704880A0 +:1095E000132A03D03B2A01D00720F3E708460A716B +:1095F00009A9F9F7B8FC050003D121212046FFF79E +:1096000036FE2846E6E700B595B0232369460B7081 +:109610004880108888805088C880D0884881908889 +:10962000088100208881C88109A96846F9F79BFC58 +:1096300015B000BD70B50C00064610D0FFF7DFFD79 +:10964000050003D1D949DA480CF0EDFEA68028893F +:10965000E0802889208168896081A889A08170BD07 +:1096600070B50E46050003D00021092003F027FF46 +:109670000120D04C022E207324D0032E04D0CC48DD +:10968000CA491E300CF0CFFECA4806210D3003F047 +:1096900091FCA07C8006800EA074FFF78EFDA08B4D +:1096A00000280ED0002D0CD08300012200210920BB +:1096B00003F060FE092804D0BD48BC4928300CF0F6 +:1096C000B2FE70BDBB480321103003F073FCA07CD8 +:1096D00040218006800E0843A074B6480C3002F08A +:1096E00015F9DAE77FB501A9012003F0C3FA0028D4 +:1096F00004D0AF48AD4967300CF095FEAE4E01A8DE +:1097000003F0C6FA050002D0052D4CD048E0029CBB +:10971000A07F01072CD520462230009068462346C2 +:10972000628E80882146343301F07BFA0546A07FA3 +:10973000F7210840A077002D05D0B5422FD09C48D6 +:109740009A49783029E0E17F480889074000C90F2D +:1097500008432021095D4007400FC9000843E07716 +:10976000207828281CD129212046FFF780FD17E00A +:109770004007C4D568462246808821460E32FFF74E +:1097800042FF0546A07FFB210840A077002D07D0AF +:10979000B54204D08648854992300CF044FE00253D +:1097A000284604B070BD0020FBE7F8B5040004D1E2 +:1097B000ED207E4980000CF036FE7220207060683B +:1097C00008250178091F0B000CF01EFF11F90A3D56 +:1097D0005FF83D0EF8F83E3D3D3D3DF986F93D0010 +:1097E00073487249AA3074E087883846FFF707FD4E +:1097F000060004D16E486D49B2300CF014FE60785A +:109800000421284360706B4CA07F0843A07721217E +:109810003046FFF72CFDB07F8007800F012801D173 +:10982000801EA080384602F057FE3846FBF72AFE1D +:109830003846FAF7C6F93946022003F040FEB07FF9 +:10984000EF210840B077F8BD86883046FFF7D7FC97 +:10985000002804D156485549D0300CF0E4FD60682A +:109860008078012804D052485049D2300CF0DBFDFA +:1098700060688179304602F04EFF0028E3D06178BD +:10988000294361706168C880F8BD87883846FFF752 +:10989000B6FC060004D146484449E3300CF0C3FD51 +:1098A00060783946284360706068C088308160689D +:1098B0000089708160684089B081022003F0FFFD5B +:1098C0000020B075FFF70EFF0028DDD001203749DA +:1098D00080020CF0A8FDF8BD80783C2815D0002748 +:1098E000022815D00026002804D031482F49F8302E +:1098F0000CF099FD0021084603F0E1FD002107204E +:1099000003F0DDFD002E05D046E001270026F1E73B +:109910000126EAE76078284360702648817F294362 +:109920008177002F38D160688688304601F055F87D +:109930000546807F6168800889798000012900D010 +:1099400002210843A87760680622C08A28816068DF +:10995000008B68816068408BA8816068C079E87579 +:1099600061682846183008310CF0DFFB6068062279 +:10997000807B68706168A81C0F310CF0D6FBA87F53 +:109980008107890F304602F090FDA87F8007800F85 +:10999000012801D10748868006480178032913D0A1 +:1099A0008078132814D00BE00302FF0144950000D7 +:1099B00013030000740A0020023000000CE00FE0E6 +:1099C000FF20FCA1453084E70120FFF7BDFBF8BD77 +:1099D0001120FFF7D2FBF8BD204601F02AFCF8BDAC +:1099E000607828436070F8BDF7B505460078002719 +:1099F00000090C463E4601287ED00022F14902288B +:109A00007BD0072804D00A2878D0EAA1EE482DE1BF +:109A1000686803780D2B31D006DC042B6FD0072B40 +:109A200036D00A2B6AD106E0122B38D0132B40D047 +:109A3000142BF7D1B2E011270726002C72D08088B2 +:109A4000A0806968FB238979A171E04905468A7F76 +:109A50001A408A77032103F0C5F80421284603F051 +:109A6000C1F80021284603F0BDF80221284603F082 +:109A7000B9F80121284603F0B5F8F9E001270926D5 +:109A8000002CDBD08088A080686880792072EFE0AD +:109A900012270E2680882146FFF7CCFDE8E01A2722 +:109AA0000726002CCAD04088A08068680079A07181 +:109AB000DEE081783C2936D010271E26002CBDD050 +:109AC0008088A0806868C08A20836868C08AE08235 +:109AD0006868008B60836868408BA0836968207D1C +:109AE000497F4008C9074000C90F084320756968CD +:109AF000C007C00F497F03E05FE08AE0ADE01CE0F3 +:109B000049084900084320756968A21DC8790831D1 +:109B1000FFF748FD69682246887B0D320F31FFF759 +:109B200041FD05E074E019270726002C70D0A271D2 +:109B3000A648F722817F11407DE01B272E26002CAE +:109B400066D0A1806968A21D0879491DFFF72AFD2A +:109B500068682030C07A60736868C0780428A07B89 +:109B600019D040084000A073F921084069681F22FD +:109B7000C9788907490F0843A07369684007C97A03 +:109B8000400FC9000843A073696820460F300C31AC +:109B90000CF0CBFA6CE001210843E4E71E270E2607 +:109BA000002C6DD0A1806868E21D407AA0716968C0 +:109BB0008878C91CFFF7F6FC5AE0287A012805D0FE +:109BC000022815D080487BA132384FE01D270E2691 +:109BD000002C55D06888A080A889E080E889208181 +:109BE000288A6081688AA0817848DF22817FA2E785 +:109BF00012270E266888FFF71DFD002C40D06878DC +:109C00004007400F032833D17048FD22817F92E73F +:109C100036E0287A03000CF0F7FC06041010202030 +:109C2000202619270726002C2AD0A1806748A27178 +:109C3000817F4908490081771AE019270726002CFF +:109C40001ED0A180287A012805D00320A0715F488A +:109C5000EF22817F6FE70220F8E721462846029A2B +:109C600001F04BFCFEBD532052A100010CF0DBFBC8 +:109C70000298002C068001D0278066800020FEBD5F +:109C800002980680FAE710B5504894B080781328FF +:109C900002D0082014B010BD22206946087009A91E +:109CA0006846F9F760F904460021072003F007FC35 +:109CB0002046EFE700B5454895B08078122801D0DE +:109CC0000820B5E41E216846017000218170C17032 +:109CD00009A9F9F748F90028F3D10021072003F07A +:109CE000EEFB1120FFF749FA0020A1E400B5374848 +:109CF00095B00078022801D0032818D11B2108A8AC +:109D000001730021817369460BA8F9F72CF900282B +:109D100004D1684640781B2801D0032088E4002144 +:109D2000084603F0CCFB68468078002801D0082064 +:109D30007EE40120FFF708FA002079E4F8B5234C0F +:109D400003000CF061FC0A068017808080804B3590 +:109D50006E80FFF7CBFF00282AD1F7F7E9FD002836 +:109D600026D02221017000210172F7F7C2FDA07FE9 +:109D7000012152E08EB23046FFF741FA050004D1CE +:109D800011480CA12E300CF04EFB287821280FD062 +:109D9000F7F7CEFD00281BD01221017002270772B1 +:109DA00046800020A875F7F7A4FDA07F3843A07770 +:109DB000F8BD00007372635C6761705F636F72650A +:109DC0002E630000FFFF000036050000740A00202B +:109DD000132229463046FFF7F6FBE9E7A578122D56 +:109DE00006D0132D07D0FA49FA480CF01CFBDFE728 +:109DF000FFF760FF01E0FFF746FF0028D8D1F7F733 +:109E000097FD0028D4D022210170122D07D0022105 +:109E10000172F7F76EFDA07F10210843C7E701210B +:109E2000F6E7A07C810901290BD0800904D0E9481C +:109E3000E74922300CF0F7FA03210020FFF710FC6D +:109E4000B6E70221F9E7E348E1492930CDE7F7B564 +:109E500014460D0004D1DF48DD4931300CF0E3FA3F +:109E600028780827012807D002281FD0D948D849C8 +:109E700062300CF0D8FAFEBD0098FFF7C0F906007A +:109E800004D1D448D24938300CF0CDFA0220B07554 +:109E90001030207060783843607007CD083407C4F4 +:109EA000CD482022817F11438177FEBD0098FFF7C6 +:109EB000A6F9060004D1C748C54946300CF0B3FAEC +:109EC000A988C648814208D1EA88824205D1132276 +:109ED00031460098FFF777FBFEBD814202D1E8884A +:109EE000002809D01220207060783843607007CDB8 +:109EF000083407C4002006E07823002202200099DD +:109F000003F038FA0120B075FEBDB34840897047B0 +:109F1000FFB591B01498F8F721FF00285DD1012416 +:109F2000684603218471C9028180002201A920466C +:109F3000FAF719F9002850D16846152184714902B1 +:109F4000818000261C2102A800960CF04DF901200A +:109F50000146684610310170002001466846417094 +:109F60008178F9273940891C21438170017A0225C3 +:109F70002943017212998186C6861F2101870C90A0 +:109F800011980F9001A80B9009AA0BA902A8F9F744 +:109F9000B5FE002821D168468F4E808CF08068463F +:109FA00084718F498180807809AA3840801C4108DB +:109FB0004900684681708586058713A80F900BA914 +:109FC00002A8F9F79BFE002807D16846808C3081F3 +:109FD00031460A311498F8F7D4FE15B0F0BD30B50B +:109FE0000C46804995B08C4241D37F4901229204AE +:109FF0000968944201D38C4239D3203800220125CC +:10A0000003000CF001FB06042F494D535C64002152 +:10A01000082003F02EFA002802D0112015B030BD20 +:10A0200024206946087000A80522A11C02300CF00B +:10A030007CF809A96846F8F796FF050002D0082DBC +:10A040000ED031E0082300221146184603F092F9A1 +:10A05000082829D05F485E49D6300CF0E4F923E0A7 +:10A060000620DBE76068002803D0884201D2102078 +:10A07000D4E73D2168460170218841806188818054 +:10A0800009A9F8F770FF05000ED1606800280BD011 +:10A090006946098D018007E0206801F079FC02E043 +:10A0A000204600F0D8FC05462846B7E73E2007E0EA +:10A0B000857000E0827009A9F8F755FFF3E73420B6 +:10A0C000694608702078C0076846F3D0F0E707209B +:10A0D000A4E730B50C46444995B009688C4201D2DA +:10A0E00010209BE7203803000CF08EFA0504212194 +:10A0F000232132002088FFF782F8002804D000785E +:10A10000222803D2082089E7384887E725216846B6 +:10A1100001702188418009A9F8F725FF050015D1B4 +:10A120000AA905220231A01C0BF0FFFF0EE0062554 +:10A130000CE02068002805D0884201D2102505E0F7 +:10A1400001F01BFC24480025808BA080284665E791 +:10A15000072063E720481330704710B520211E48C0 +:10A160000CF040F80120FEF7EFFF1120FFF705F893 +:10A1700000211948C943818000218176E1218900AD +:10A18000818301460C300D310446F7F751FC12482B +:10A190000722214613300BF0C8FFFFF70EF8002806 +:10A1A00003D00B4912480CF03EF900F0D5FF10BD6A +:10A1B00010B504463C210CF015F8A07F8008800003 +:10A1C000A077202020700020A0752034607010BD82 +:10A1D000B49D00008C050000740A0020FFFF000001 +:10A1E000012A000000800100280000200230000049 +:10A1F000FB0600007047FEB50546FF480C4681424D +:10A2000007D301208004844205D3FC4800688442BF +:10A2100001D21020FEBD002D02D0012D32D126E04A +:10A22000F74908220F4668460BF07FFF3946204663 +:10A23000FFF777F90028EDD1FEF7BFFF060006D043 +:10A240000722694638460BF070FF3046FEBD207885 +:10A25000002801D0012805D1E94807223946C01D50 +:10A260000BF063FF0021092003F029F90FE00978C2 +:10A27000002907D0012905D0022905D0032903D0E0 +:10A28000E048FEBD0720FEBD0120FFF7E9F9DC48EC +:10A290000C3885760020FEBD10B5D8490968884283 +:10A2A00001D2102093E7D64902460C390B7B0D31C1 +:10A2B0001846FFF777F9002089E7FFB599B0054602 +:10A2C000002069460871087208A9087408751446C8 +:10A2D000CA480122C849920400681E46002D05D0D4 +:10A2E0008D420BD3954201D3854207D3002C08D071 +:10A2F0008C4203D3944204D3844202D210201DB076 +:10A30000F0BD2846204318D01F270CAB01AA0097A8 +:10A3100028461A99FFF79FF80028F0D10DAB02AA42 +:10A32000314620460097FFF796F80028E7D16846A7 +:10A33000007AC10703D00A20E1E70720DFE78007A2 +:10A3400005D568460079800701D50B20D7E703AF14 +:10A35000002D0FD01A20694608731A988873294671 +:10A36000F81C1A9A0BF0E1FE0EA903A8F8F7FBFD02 +:10A370000028C4D1002C0ED02021684601738673BA +:10A3800032462146F81C0BF0D0FE0EA903A8F8F7C0 +:10A39000EAFD0028B3D19A4908A8007C0C3948701E +:10A3A0000020ACE770B504460A2020700D46204618 +:10A3B000F8F7D9FD002805D139202070294620461C +:10A3C000F8F7D1FD70BDF7B500260C4605460B2702 +:10A3D0001AE02968B00009580978002903D001293A +:10A3E00001D00720FEBDA170296806220958E01C93 +:10A3F000491C0BF09AFE277020460299F8F7B3FD2E +:10A400000028EFD1761CF6B22879B042E1D80026B8 +:10A410003A270FE0A868B10041581022A01C0BF0A9 +:10A4200084FE277020460299F8F79DFD0028D9D1B7 +:10A43000761CF6B2287BB042ECD80020FEBDF0B509 +:10A44000044671A003C897B06B4B00271591149078 +:10A450009C4211D369480125AD040268AC4201D386 +:10A46000944209D32078012809D16168994203D325 +:10A47000A94204D3914202D2102017B0F0BD604926 +:10A480000C390A78012A0CD18A88614B9A4203D090 +:10A49000002806D0012804D08A7F13079B0F06D11D +:10A4A00001E00820E9E7D30701D1910701D5112088 +:10A4B000E3E7218A574B0A46203A9A4207D30128FC +:10A4C00075D1002973D1628A002A70D111E0022867 +:10A4D00001D0032801D1A02969D3012809D0484A15 +:10A4E0000C3A5278D20704D0628A002A5FD0B42A8C +:10A4F0005DD8002806D0012808D0022804D00328FF +:10A5000055D117E0002518E0022516E0002902D1F8 +:10A51000608A00280CD004256068007800280CD0E0 +:10A52000012809D0022807D0032805D03548A4E720 +:10A530000125F1E7032500E00127207A002806D055 +:10A54000012806D0022806D003287CD105E0002689 +:10A5500004E0012602E0022600E00326002D01D0DF +:10A56000022D14D1002E12D0E068FEF722FF002841 +:10A5700083D123480C384078800702D02148401E00 +:10A580007BE7022D03D1022E5DD0032E5BD0182174 +:10A5900068460170218A4180218A8180857118482E +:10A5A0000C38007B002803D001286FD104E04AE07A +:10A5B00000216846C17102E001206946C871684601 +:10A5C000077221780930012937D006210BF00AFEE5 +:10A5D00069460E74207D8207C107D20F4007C90F5C +:10A5E0005200C00F11438000014314A8405C69462B +:10A5F000C873002827D00FE0008001002800002049 +:10A60000800A002002320000070605040302010050 +:10A61000FFFF0000E13F000009A96846F8F7A3FC2E +:10A62000002884D109A96846FFF7BCFE0028A7D1FD +:10A63000002D0AD0022D08D010E061680622491CC6 +:10A640000BF073FDC4E7072017E7002E06D009AA18 +:10A650006946E068FFF7B7FE002891D11B206946E4 +:10A6600008700120887009A96846F8F77CFC00286A +:10A6700086D108A840791B2819D12B000BF0C4FF04 +:10A680000504040707040A00032001E00FE002208C +:10A69000FEF75AFD012D0CD0608A002809D0002257 +:10A6A00083001146104602F065FE002801D0032009 +:10A6B000E3E60020E1E6F3B5032687B00D46002966 +:10A6C0000AD0FA4885426FD301208004854203D323 +:10A6D000F7480068854267D30798FEF790FD0400AD +:10A6E00005D02078222804D2082009B0F0BDF14816 +:10A6F000FBE7A07F8707BF0F002D05D0294638460E +:10A70000FEF722FE0600F0D139460027EA4801296B +:10A7100007D0022931D0E949E9480BF084FE3046E0 +:10A72000E3E7A27D2946012A02D0827F920701D564 +:10A730001120DAE700291BD108216A46049711820B +:10A740000592418904AADF48FAF7FDF80028CCD128 +:10A750006846008A082801D00320C6E768460188B9 +:10A7600001814188418181888181C188C18102A99B +:10A77000079801F061FF0646D1E7A17D022916D1B5 +:10A78000807F800613D4002D04D0A07F40070CD416 +:10A79000002100E00121079801F08FFF0600BED1E3 +:10A7A000A775002DBBD004E01AE01126B7E7002DF5 +:10A7B00016D02A4621460798FEF725FF064611289F +:10A7C000ADD1A07F4007AAD42046082229460E30EA +:10A7D0000BF0ABFCA07F04210843A07700269EE786 +:10A7E000102082E770B50C460546FEF708FD010013 +:10A7F00004D022462846FEF7E6FE70BDAD4870BD87 +:10A8000000B50146143195B0192901D2810707D04E +:10A8100001461E3104D00A3102D0072015B000BD18 +:10A82000312269460A70887009A96846F8F79BFBCF +:10A83000F4E701B582B00220694608809E4802AB69 +:10A8400000896A460021F9F7E7FE6946098802296E +:10A8500000D003200EBD1CB50021009102216A46E4 +:10A860001180934901900968884201D210201CBDD3 +:10A87000914801899348FAF766F8694609880229E0 +:10A88000F5D003201CBDF0B50E46884985B01746AB +:10A8900005468E4207D386480122920400689642FC +:10A8A00004D3864202D2102005B0F0BD1F2F01D97B +:10A8B0000C20F9E7804C8D4226D3954201D3854286 +:10A8C00022D3E08803A9F9F758FE0028ECD12878B4 +:10A8D00069464873E08803A9F9F730FE0028E3D100 +:10A8E0006946009008780221084369460870497B50 +:10A8F000090703D00821084369460870E0886946C3 +:10A90000F9F7B5FD0028CFD169468F80E08833463E +:10A9100001AA0021F9F780FE69468988B942C3D0AF +:10A920000320C1E71CB50C4600210091019122884B +:10A9300069460A805E4901900968002801D0884272 +:10A9400001D38C4201D210201CBD002801D0002A66 +:10A9500009D059486A46C1885A48F9F7F4FF694650 +:10A96000098821801CBD0C201CBD10B50123FEF7F9 +:10A970004DFC2CE4002310B51A461946FEF746FCA0 +:10A9800025E430B505464A4895B000680C4681423A +:10A9900002D2102015B030BD2846FEF730FC00284A +:10A9A00007D00178222902D3807F800603D40820B3 +:10A9B000F0E74048EEE7132168460170458009A999 +:10A9C000F8F7D1FA0028E5D108AA0A2151567F29C3 +:10A9D00001D02170DEE70520DCE7F8B5012304464D +:10A9E0001A46194602F0C6F8074601231A46022104 +:10A9F000204602F0BFF8064601231A4604212046ED +:10AA000002F0B8F8054601231A460321204602F059 +:10AA1000B1F80446002F03D128492B480BF003FD61 +:10AA2000002E04D1AD20254980000BF0FCFC002D48 +:10AA300004D125482149801C0BF0F5FC002C04D1E1 +:10AA400021481E49C01C0BF0EEFC22213846FEF7BF +:10AA50000EFC3846F8BD10B50446006800280CD03E +:10AA60001249884207D301218904884205D310493D +:10AA70000968884201D2102014E400F071FFA08818 +:10AA80000D4CA083A07E01280DD10021092002F0E9 +:10AA9000F0FC002800D00120A17C8909012915D0F3 +:10AAA0000321FEF7DDFD002006E400000080010028 +:10AAB0002800002002300000740A0020B49D00002D +:10AAC000C6090000FFFF0000B30200000221E8E712 +:10AAD00030B5F74B9A4207D301239B049A4205D322 +:10AAE000F44B1B689A4201D2102030BD1578EB065A +:10AAF0005B0F042B07D85478072C04D39378102BC2 +:10AB000001D8A34201D2072030BDD3785B0702D41D +:10AB100013795B0701D5062030BDC37FAC075B0806 +:10AB20005B00E40F2343C3770878EF2318401378C2 +:10AB30009B06DB0F1B0118430870F12318401378A4 +:10AB4000DB065B0F5B001843087050780873002029 +:10AB500030BD30B500240C70C378DB07DB0F0B7001 +:10AB6000C578AD07ED0F6D002B430B70C5786D07F1 +:10AB7000ED0FAD002B430B7014700179C907C90F9D +:10AB8000117003799B07DB0F5B001943117000798B +:10AB90004007C00F80000143117030BD70B51446EE +:10ABA0000D460646F6F7C4FE002809D0A221017022 +:10ABB000142221460830F6F707FBF6F79AFE70BD1F +:10ABC000132229463046FEF7FEFC70BD70B51446D0 +:10ABD0000E460546F6F7ACFE002809D0222101708A +:10ABE00045802178017261784172F6F782FE70BD6E +:10ABF000132231462846FEF7E6FC70BD10B5AE4C78 +:10AC0000207C00280CD1204621461038FDF762F840 +:10AC1000002803D0A9A1F2200BF005FC012020742C +:10AC200010BD70B594B015460C462C226946189E8E +:10AC30000A704880002B17D00822194601A80BF093 +:10AC400074FA68468581102231460E300BF06DFA99 +:10AC500009A96846F8F787F9002803D1A17F1022D7 +:10AC60001143A17714B070BD002001900290E8E775 +:10AC7000F0B50646008A97B080B20D460190FEF707 +:10AC8000BEFA04468C48317848380746E8370990C0 +:10AC90000B000BF0B9FC0EFCFB48085F8798B8D995 +:10ACA000FAF9F8F7F6FC002301221946019801F0A1 +:10ACB00061FF050004D1FF2080A130300BF0B3FB11 +:10ACC000002C04D1FF207DA131300BF0ACFB387E8D +:10ACD000C00904D078486030C06DA86112E02B2014 +:10ACE000694608720BA902A8F8F73DF9002804D0BC +:10ACF000FF2072A13C300BF096FB74490C980BF0CE +:10AD00008EFAA9617068A862B068E862A07F8007C7 +:10AD1000800F012820780DD0252804D0FF2067A1BE +:10AD20004D300BF080FB324621460198FFF736FF8D +:10AD300017B0F0BD2528F6D0222806D0242804D04C +:10AD4000FF205EA146300BF06EFB25212046FEF76A +:10AD50008EFAE8E7002301221946019801F00AFF64 +:10AD6000060004D1FF2055A158300BF05CFB002CED +:10AD700004D1FF2051A159300BF055FB2078252834 +:10AD800004D03078012108433070D1E702202870C8 +:10AD9000B068A860B068002802D000202871C7E71A +:10ADA0000120FBE72B2069460870434968464C396F +:10ADB000F8F7D9F8002804D0FF2040A178300BF034 +:10ADC00032FB03201BE02A206946087000A81022ED +:10ADD000023071680BF0A9F904A810220230B168A2 +:10ADE0000BF0A3F9344968464C39F8F7BCF8002851 +:10ADF00004D0FF2031A189300BF015FB042028700E +:10AE00000998686094E7B068002804D1FF202BA15E +:10AE100095300BF008FBE07F400704D5FF2027A109 +:10AE200096300BF000FBB06806220A3800903379A8 +:10AE30000421019801F0FBF90028A6D0FF201FA1F2 +:10AE40009B300BF0F0FA73E7002C04D1FF201BA11C +:10AE5000A3300BF0E8FA2046223010220546716834 +:10AE60000BF063F928212046FEF701FAA07F800746 +:10AE7000800F022814D100231A462146009501981C +:10AE800006E04BE1BAE0B0E095E03FE071E05FE161 +:10AE9000FFF7C7FE11281BD029212046FEF7E7F94E +:10AEA000E07F317A4007400FC9000843E0773FE771 +:10AEB0000080010028000020400B00207372635CBA +:10AEC0006761705F7365632E6300000040420F008E +:10AED000A07F000704D5FF20FD49B0300BF0A3FA96 +:10AEE000A07F08210843A0770020608620463430E8 +:10AEF0000BF078F9E07FFD220146C9071040890F69 +:10AF00000843E077307A2034207011E700230122D3 +:10AF10001946019801F02EFE040004D1FF20EC49EF +:10AF2000CD300BF080FA2B2069460872E94902A85F +:10AF3000F8F719F8002804D0FF20E549D2300BF0CB +:10AF400072FAE4488188204621300176090A417668 +:10AF50000E2129702146FC316960017E2974407EF2 +:10AF60006874DC482C30A860103030346C61E860C4 +:10AF7000DEE6002C04D1FF20D549E6300BF053FA71 +:10AF80002078212893D93079012802D0022808D1CD +:10AF900003E0E07F04210843E077387E0121084385 +:10AFA0003876324621460198FFF7F8FD23212046E6 +:10AFB000FEF75DF9BCE601220421019801F01FFCB7 +:10AFC0000028A2D0002301221946019801F0D2FDE9 +:10AFD000040003D1BE49C0480BF025FA0F202870A9 +:10AFE000172028716E34AC60A2E60421019801F0AC +:10AFF00056FC002889D11020287099E600230122F0 +:10B000001946019801F0B6FD050004D18720B0492A +:10B0100080000BF008FA2E462036307E41064DD5D2 +:10B02000A17F8F07BF0FC00713D029468031486F1B +:10B0300000280ED0027CF37DD207D20F5B001A43AA +:10B040000274486F5108E27F4900D207D20F1143C2 +:10B050000174307E000713D52A468032116F002913 +:10B060000ED0087CF37DC007C00F5B001843087446 +:10B07000116FE27F40084000D207D20F10430874DE +:10B08000307E80070BD5F8204259002A07D0012FC7 +:10B0900005D02946307C31311032FEF783FA307EFC +:10B0A000C0060BD5F8204259002A07D0012F05D140 +:10B0B0002946307C31311032FEF774FA0523684698 +:10B0C0000370357E4570834822216038019A0170F3 +:10B0D0004178C908C900C91C417042800372457299 +:10B0E000F6F78EFD2078252809D021280BD07A4844 +:10B0F00077495B300BF097F92078222803D9222179 +:10B100002046FEF7B4F80021019801F06BFD0028FD +:10B1100000D10DE670486E49633092E674686D4D5B +:10B1200020786035092802D00A28F2D10BE0E168C6 +:10B13000002902D02846F7F7E8FE2169002902D04D +:10B140002846F7F7E2FE21462846F7F7DEFEEFE550 +:10B1500061485F49883074E65E4810B504222821B2 +:10B160006030F7F7B9FE5B480024EC30017E4906F9 +:10B17000490E01764038C465FCF739FD55493C312C +:10B1800008461038F6F78BFC52484C30047410BD5A +:10B1900070B50D46FEF733F8040004D14E484C4913 +:10B1A000A7300BF040F9FF21053128460BF01CF8C1 +:10B1B000A07F8007800F01280CD00221284688300C +:10B1C000FCF716FD002804D043484149AC300BF091 +:10B1D0002AF970BD0121F1E70A46014610B5104673 +:10B1E0008830FCF71FFD10BD70B5054611200C46D8 +:10B1F0000870002161702121495D002908D00329D0 +:10B200000ED0042910D034483149C6300BF00BF968 +:10B2100020780009012802D9E87FC008607070BD5D +:10B220000007000F203002E00007000F30302070D0 +:10B23000EEE7F0B504464068082601789BB008297F +:10B240000DD00B2903D00C294BD1012181716068ED +:10B2500087883846FDF7D3FF05004CD147E0478883 +:10B260003846FDF7CCFF050004D1172018494001EE +:10B270000BF0D9F82878212833D0282833D16068FA +:10B2800002210C3000F050FF00282CD0606808210B +:10B29000001D00F049FF002825D02D2168460170CF +:10B2A000478029461022223101A80AF03EFF0FA94B +:10B2B0006846F7F758FE002804D007480449EF30E5 +:10B2C0000BF0B1F8A87F10210843A877292105E0E9 +:10B2D000BCAE0000F40A0020030200002846FDF77F +:10B2E000C6FF1BB0F0BD607830436070F9E7FE49DF +:10B2F000FE480BF098F8A87FEF210840A87729783E +:10B3000021290FD061688A79002A02D08978002922 +:10B3100012D08007800F022849D0F448F249343017 +:10B320000BF081F8FEF7DEF90028DAD0EF48EE499D +:10B330003F300BF078F8D4E7607830436070E87FF6 +:10B34000C00701D0042100E00321212041552878C5 +:10B3500029280BD03946062002F0B1F82878242895 +:10B36000E0D122212846FDF782FFDBE700230122FE +:10B370001946384601F0FEFB040004D1C920DA4921 +:10B3800080000BF050F825212846FDF770FF0D20B6 +:10B3900008A90871204609A98830FCF735FC022865 +:10B3A000C0D00028BED0D148CF491D30B8E7607862 +:10B3B00030436070B6E7F7B58AB015460646FDF72C +:10B3C0001EFF002841D0017822293ED323293CD0FA +:10B3D000C17F490739D4807F8007800F01280DD0B5 +:10B3E000002301220021304601F0C4FB0746C0487B +:10B3F0000290F7F781FD040007D101E00123F0E797 +:10B40000BA48B94959300BF00EF8002F1FD08837D1 +:10B4100067610298F7F770FD07460298F7F76CFD31 +:10B4200009212170266225710B99E760A1602061D6 +:10B4300003A92046FCF70CFC022806D0002804D003 +:10B44000AA48A94975300AF0EEFF0DB0F0BD002002 +:10B4500007466061E4E730B5002387B00546012266 +:10B46000194601F087FB04462846FDF7C8FE007820 +:10B4700022281BD9002C04D19C489B4981300AF01A +:10B48000D2FF0F21684601701721017120466E30EE +:10B49000029069461A30FCF7B7FB022806D0002854 +:10B4A00004D0E520904980000AF0BDFF07B030BD10 +:10B4B00030B5002387B005460122194601F05AFB3A +:10B4C00004462846FDF79BFE00782228EED9002C82 +:10B4D00004D18648844993300AF0A5FF10206946BC +:10B4E000087020468830FCF78FFB0028DED0E9206A +:10B4F0007D4980000AF097FFD8E7F7B50546007848 +:10B500000027000982B00C463E4602287ED007285C +:10B5100002D00A284AD14AE068680178082907D091 +:10B520000B2930D00C292ED070486F49D33060E100 +:10B5300014271A26002C6AD04088A080FDF75FFEF1 +:10B540000090002804D169486749AF300AF06BFFCA +:10B5500000980099C07DA21D1831FEF723F8686895 +:10B5600008228089E081696820461030091D0AF0B0 +:10B57000DCFD207E01210843F92108402076009857 +:10B580004021807F47E018270826002CD3D08088F0 +:10B59000A080FDF734FE050004D1F7205249800059 +:10B5A0000AF041FFA11D2846FFF71EFE23E1002CF3 +:10B5B00001D0288BA080287A01287DD0022804D0D1 +:10B5C00003282FD048494B4813E11C270726002C9D +:10B5D000B1D0A088FDF713FE0090002804D1FD2013 +:10B5E000414980000AF01FFF287B8007800F012857 +:10B5F000A07914D040084000A071FD210840297BAB +:10B600004907C90F49000843A07101E0E3E0DFE00A +:10B6100000988021807F084300998877EBE0012122 +:10B620000843E9E713270B26002C84D0A088FDF7F8 +:10B63000E6FD00900023A0880122194601F09AFA45 +:10B6400005460098002804D12A48274960380AF0A6 +:10B65000EAFE002D04D181202349C0000AF0E3FE58 +:10B660000098807F8007800F012859D0E86A817890 +:10B670008907890F0129A17954D049084900A1718E +:10B680008278FD255207D20F294052001143A17143 +:10B69000E322114002785207D20E1143A171DF223A +:10B6A00011404278D207920E1143A1710021E1713D +:10B6B000C1782172427900E037E00179607AD307DE +:10B6C00040084000DB0F18439307DB0F28405B0066 +:10B6D00018435207FB23D20F1840920010436072A8 +:10B6E000A07A4008400007E0BCAE00000E03000056 +:10B6F000540B002067040000CA07D20F10438A07CA +:10B70000D20F2840520049071043C90F1840890042 +:10B710000843A0720098007823286CD92621AFE056 +:10B72000A86AA4E701221143A9E7297BFE48022960 +:10B7300010D017270C26002C4AD0012911D003293C +:10B740001ED004291FD005291DD0F849F8480AF059 +:10B750006AFE23E019270726002C4CD00121A17195 +:10B7600005E00121A171E17989088900E171017E7B +:10B77000CA094906D201890E49000A4302760DE042 +:10B780000220A07106E0687B0007000F8030A071E6 +:10B79000052918D0E07980088000E071A088FDF7C5 +:10B7A0002EFD05460078212825D0232804D0E04826 +:10B7B000DE490C300AF037FEA088002101F012FAB1 +:10B7C000222128465DE0E07980088000401CE4E703 +:10B7D0000498068015E0002C01D06888A080287AA3 +:10B7E000032828D004280FD005284DD0D048CF49B1 +:10B7F00064300AF018FE0498002C068001D02780DF +:10B800006680002005B0F0BD15270C26002CDFD087 +:10B810000023A0880122194601F0ACF9050004D1EB +:10B82000C348C2492A300AF0FEFD0622A11DA869BC +:10B8300009F0DCF9DFE716270726002CC8D0A0881E +:10B84000FDF7DDFC00900023A0880122194601F0DD +:10B8500091F905460098002801D0002D04D1B44884 +:10B86000B24938300AF0DFFD2878C00601D5022041 +:10B8700000E00120A071009800782328BBD927217F +:10B880000098FDF7F4FCB6E717270C26002C9FD094 +:10B89000A088FDF7B4FC00906D7A002804D1A4487C +:10B8A000A2494B300AF0BFFD0621A01D0AF09AFC08 +:10B8B0000020A071207A032108432072FB21084058 +:10B8C0000099C97FC907490F08432072680692D5BD +:10B8D000E07904210843E071A07AE90740084000BC +:10B8E000C90F0843E17A2A0749084900D20F1143DA +:10B8F000FD22AB07DB0F10405B001843A072E80687 +:10B90000C00F114040000143E17274E710B50446D6 +:10B91000807990B08009012804D04D20834900012E +:10B920000AF081FDFFF76AF90120694608707E4838 +:10B930000AA9A0380190201D0290601C0B90684657 +:10B94000FCF786F9002804D07948784987300AF056 +:10B950006AFD0322601C0B990AF0E7FB10B010BDD2 +:10B9600010B5714CA03C002805D00146102220469D +:10B970000AF0DBFB0120207410BD10B50446FFF770 +:10B980003DF969491022A03920460AF0CEFB10BDCE +:10B9900070B50025644C00281CD06649884207D346 +:10B9A00001218904884205D363490968884201D28C +:10B9B00010250DE0062109F003F9411C07D05A4972 +:10B9C0004039C865207E80210843207600E00725A5 +:10B9D000284670BD207E4006400EF6E7F3B50020F5 +:10B9E00089B00D46029000290AD0524885421CD3E6 +:10B9F00001208004854203D34F480068854214D358 +:10BA00000998FDF7FCFB060003D03078222815D1F9 +:10BA100002E04A480BB0F0BD002D08D1B07FC1094B +:10BA200003D08007800F022801D01020F2E7B07FFA +:10BA3000C10601D4000703D5002D01D00820E9E795 +:10BA40003948007EC00712D1F07F400701D50D2094 +:10BA5000E0E7002201231146099801F08BF8070066 +:10BA600005D0B07F8007800F022802D00BE01120A4 +:10BA7000D0E7002D07D02A4639463046FFF728F890 +:10BA800002900028C6D128488C38F7F735FA040010 +:10BA900003D126492A480AF0C6FC0A2020700998DA +:10BAA000206238468830A060B07FFB218007800F7D +:10BAB000012829D0002D4CD002202071381DE060D3 +:10BAC00038780007400F20743878C006C00F6074C3 +:10BAD000A07C2A788008D2078000D20F1043A0747F +:10BAE0000840F17F01AAC907490F0843A074A8784C +:10BAF000E07469462846FFF72CF8684600792075FF +:10BB000068460078607528E001202071207B2A7843 +:10BB10008008D2078000D20F104320730840297894 +:10BB20008907C90F89000DE0E00B0020BCAE0000C2 +:10BB300053040000008001002800002002300000B3 +:10BB4000630500000843207324213046FDF78FFB76 +:10BB50000BE0032020710520207325213046FDF7DE +:10BB600086FBB07F4006400EB07703A92046FCF765 +:10BB70006FF8022805D0002803D0FD49FD480AF0DF +:10BB800052FC029846E7FFB581B00A9D06461C4666 +:10BB90001746142128460AF027FB0B980021016064 +:10BBA000F8070ED0F44920680968884239D312306A +:10BBB00028602068143068602068A8600B982168AD +:10BBC0000160B80726D56068002803D0EA490968F3 +:10BBD000884226D3029900290AD0FC3600280ED0CC +:10BBE00031461030FDF79DFC00281BD1606810E045 +:10BBF000002816D0E86080366068B0670AE0FEF77B +:10BC0000A9FA0146072230460AF08FFAFEF7F6FF3E +:10BC1000DA48E860780707D5D749A06809688842FC +:10BC200001D21020EEE528610020EBE5FFB5D44AF3 +:10BC30000E4607CA97B002AB07C3002700970197CB +:10BC40001798FDF7DCFA050005D02878262804D0DF +:10BC500008201BB0F0BDCB48FBE700231A4619466D +:10BC6000179800F087FF040004D1C248C049803013 +:10BC70000AF0D9FBA87F8007800F1690012814D006 +:10BC8000022824D0BB48BA4999300AF0CCFB0121E4 +:10BC90000022852E31D01EDC002E26D0812E26D00B +:10BCA000822E26D0832E1ED125E0002EEFD12146F4 +:10BCB0002846199AFEF70CFF0028CAD119988078F7 +:10BCC000009019980078C007C00F0190DFE719981D +:10BCD000002808D1DBE7862E11D0882E11D0892EBE +:10BCE00011D08A2E11D00720B3E710460EE0084687 +:10BCF0000CE002200AE0032008E0052006E0062010 +:10BD000004E0082002E0092000E00A20002222715D +:10BD100001216A461176211D0791002801D020716A +:10BD2000FAE0169801280CD0A66AE06A02220121E6 +:10BD300010900020A0602846173002291AD0012157 +:10BD400019E0E66AA06A1090032030702078FB2387 +:10BD5000C006C00F7070B07801221840009BF370CD +:10BD60008008019B800018430221B0700020707190 +:10BD70003071DEE70021890009190861681C022A78 +:10BD800001D0012100E00021890009190861B07883 +:10BD90008007800F01285ED1109880788007800F7F +:10BDA000012858D110980079844610984079009065 +:10BDB000169801281DD0317908A801747179017590 +:10BDC00008A8027C6046024008A8007D009908404F +:10BDD000139010433FD06C491A98884207D3012131 +:10BDE0008904884215D364490968884211D2102019 +:10BDF0002FE70CAA0DA91998FEF7ABFE08A8007C46 +:10BE000061460840307108A8007D009908407071B3 +:10BE1000D6E720463C3021460090F031169801913B +:10BE2000022834D000211A9B20460C33FFF7ABFECA +:10BE30000028DDD12046503021460090F43116987C +:10BE40000191012825D0002120461A9B139AFFF763 +:10BE50009AFE0028CCD110988078400702D4E87F61 +:10BE6000C0072BD0169902A8012914D0109909787F +:10BE70004900405A21780907490F4900C8408707FF +:10BE8000BF0F2AD0012F14D0022F0FD113E00121B0 +:10BE9000C9E70121D8E721780907490F4900405A2D +:10BEA000109909784900C8408707BF0F032F04D0B5 +:10BEB00004E0022711E001270FE00227169801286D +:10BEC0000BD1B078FB210840E97FC907490F08432F +:10BED000B07020780007400F3070207810224008A2 +:10BEE000400020701099D2434978C907C90E114308 +:10BEF00008402070C00623D4022F21D0012F21D06A +:10BF00000020A061E0612062606220461830A060DD +:10BF1000E87F40084000E877204606A98830FBF714 +:10BF200073FE002806D0022804D06F2010490001BB +:10BF30000AF079FA25212846FDF799F9002088E6CC +:10BF4000032008E020460D211B300AF04BF9204663 +:10BF50001830A060042069460875E87F0121084375 +:10BF6000E87705AA29461798FEF730FED4E70000C7 +:10BF7000BCAE00008E05000028000020400B002011 +:10BF8000606701000230000000800100F0B587B05A +:10BF900015460E0004460DD06A48854207D301209D +:10BFA0008004854206D368480068854202D210208A +:10BFB00007B0F0BD2046FDF722F9070004D038781D +:10BFC000272803D00820F3E76048F1E700231A464A +:10BFD0001946204600F0CEFD040003D15C495D48BF +:10BFE0000AF021FA0020002E05D0022E08D0012EE2 +:10BFF00011D00720DCE701216A461171A06018E02A +:10C00000234618336946A360087110222946184652 +:10C010000AF08BF80DE021461831A16069460871DD +:10C02000A061E061206260620621284608F0C8FD38 +:10C03000A0612078C10714D0400840002070022081 +:10C04000694608702046183002907030FBF7DCFD1E +:10C05000022806D0002804D03E483D4923300AF08B +:10C06000E2F925213846FDF702F90020A0E770B576 +:10C0700094B00D460646002B02D0072014B070BDC8 +:10C08000FDF7BDF8040007D02078222802D3A07F56 +:10C09000400603D40820F1E72C48EFE7002D19D023 +:10C0A0002D216846017046801022294601A80AF019 +:10C0B0003CF8E07F297C4008C9074000C90F0843CD +:10C0C000E077297C40078906400FC90EC900084364 +:10C0D000E07703E02E2168460170468009A9684692 +:10C0E000F6F741FF694609782D2905D1002803D1CB +:10C0F000A17F10221143A177A17FBF221140A17718 +:10C10000BCE710B50C46FDF77AF8002805D00E49BB +:10C1100009688C4203D2102010BD0C4810BD214686 +:10C12000FFF762F8002010BD05E00278401C002AED +:10C1300001D0002070470A46491E89B2002AF4D176 +:10C14000012070470080010028000020023000001C +:10C15000BCAE00000F07000030B50346072903D02E +:10C160000820DA781C7916E00720FAE707290BD0B7 +:10C170005500ED186D79072D01D0401EC0B2521C3C +:10C18000D2B20F2A07D105E05500ED186D79072DC1 +:10C19000F3D0F4E700222546641EE4B2002DE5D179 +:10C1A00030BDFFB581B00C461646114620460A9FA9 +:10C1B0000B9DFFF7D1FF00280AD020790F2803D369 +:10C1C000FEA1A0200AF02FF9A078C00907D019E03D +:10C1D000072E02D0112005B0F0BDFD48FBE7019805 +:10C1E0002880381D6880002068712871EF800498CD +:10C1F00028812846F6F7DFFE002803D1EFA1AD2005 +:10C200000AF011F9E07821794018491CC0B2217177 +:10C210000F2801D30F38C0B2400000194671817950 +:10C22000F12249084900114081710020D3E7FFB590 +:10C2300083B01C4616460F4600231A4602210C9D69 +:10C24000039800F097FC010008D033463A46019568 +:10C2500000940398FFF7A5FF07B0F0BDDC48801EEF +:10C26000FAE7F0B5054616460F4650888DB0002314 +:10C270000122022100F07EFC040003D1CFA1DF20C7 +:10C280000AF0D1F8002069460871A078400603D171 +:10C29000CAA1E3200AF0C7F8042F5ED32A78D0079A +:10C2A000C017401C06D161786B78994255D121782E +:10C2B000090752D00121142A46DA012A42D0122A53 +:10C2C00002D0132A40D128E00C2F3DD1A27852068B +:10C2D000520E012A38D0207800090001401C20703D +:10C2E000687860706846017168792A7901021143A3 +:10C2F00068460181E879AA790102114368464181C3 +:10C30000687A2A7A0102114368468181E87AAA7A1A +:10C31000010211436846C1811AE0062F14D120782A +:10C320000009000120707188012001F0C8F8022185 +:10C3300068460171C91E018168792A790102114399 +:10C3400068461FE0062F0AD06A461279002A1BD0E1 +:10C350007088324601A9FDF77AFD0DB0F0BD207856 +:10C360000009000120707188012001F0A8F8022165 +:10C370006846017168792A79010211436846018192 +:10C380000021C9434181E3E70028E6D0748868466C +:10C3900081766978C176022181830021C18304A856 +:10C3A00005220090062311462046FFF740FF002893 +:10C3B000D3D088A1D6200AF036F8CEE7F7B58CB0F6 +:10C3C00015460C990D98F9F7CEF9C0B2082851D14D +:10C3D000002069468885688800230122022100F038 +:10C3E000C9FB040004D1FF2074A163300AF01BF8DC +:10C3F00001230021E07822790BE046003619767996 +:10C400009E4201D1491CC9B2401CC0B20F2800D1C4 +:10C4100000201646521ED2B2002EEED1002902D1C3 +:10C4200017206946888504AB02330BAA00950C9946 +:10C430000D98F7F73BFC0006000E07D002281BD032 +:10C44000032817D0FF205DA1893011E06846808D58 +:10C4500000280FD002A901910090688804230122CE +:10C460002146FFF79EFE002804D0FF2053A176301E +:10C4700009F0D9FF0FB0F0BD68781021084368704B +:10C48000F8E70020584902464300401CCA520828D9 +:10C49000FAD3704700218170017809090901017000 +:10C4A00000214170C1700171704770B50D460023C5 +:10C4B0000122022100F05EFB040004D1FF203FA115 +:10C4C000CF3009F0B0FFA0786906C009C001490E5D +:10C4D0000843A07070BD704710B50146012000F000 +:10C4E000EEFF10BD3EB58DB2002301220221284689 +:10C4F00000F040FB040004D1FF2030A1E43009F03B +:10C5000092FF20786946000900012070022008701F +:10C5100036488880C88000222846FDF798FC3EBD3A +:10C52000F7B505460078002700090C463E4601286D +:10C5300004D0FF2021A1F33009F075FF287A0328E9 +:10C540000CD041201DA1C00009F06DFF0298002C05 +:10C55000068001D0278066800020FEBDEA89702712 +:10C5600010460A3086B2002C0AD06888A080A889BC +:10C570002081E28020460A30296909F0D6FDE5E7EE +:10C5800002980680E8E7F8B543680246D9799C79B5 +:10C59000090221435C7A1E7A25025C88981D354386 +:10C5A000241FA14238D11B79022B35D1042D34D060 +:10C5B000052D3DD0062D34D0402D19E07372635CFB +:10C5C0006C326361705F636F72652E630000000000 +:10C5D000043000007372635C6C326361705F636F80 +:10C5E00072652E6300000000000C0020FFFF0000B9 +:10C5F00012D3061D0F461446284600F0E9F9082814 +:10C600000AD01120207003202072A581E7812661C5 +:10C610006078082108436070F8BD001DFFF7CEFE6A +:10C62000F8BD031D50880A461946FEF7C4FEF8BD42 +:10C63000001DFFF716FEF8BD70B50D4600238CB047 +:10C6400006461A46022100F095FA040031D02078FF +:10C650000007000F01282ED01220694688746078E8 +:10C660000523801CC874082088822888C8826888AE +:10C670000883A8884883E888888302A90C20019150 +:10C6800000901A4621463046FFF78BFD00280ED158 +:10C69000F02300223146012000F06CFE20780009D2 +:10C6A0000001401C20706078801C607000200CB07D +:10C6B00070BDCD48FBE71120F9E770B50D460023AA +:10C6C0008CB006461A46022100F054FA040006D047 +:10C6D00020780007000F012803D00820E7E7C248B0 +:10C6E000E5E71321684681746178C1740221818273 +:10C6F000C58202A906200523019100901A46214611 +:10C700003046FFF74EFD0028D1D120780009000106 +:10C7100020700020CBE7F3B581B00D460023012245 +:10C720000221019800F026FA00260446002803D1D1 +:10C73000AE49AF4809F077FE2079A8423BD2AC4819 +:10C74000AA49401C09F06FFE35E0E07841000F195E +:10C75000401C7979C0B20091E0700F2801D100200F +:10C76000E0702079401E2071B879C00708D0009889 +:10C770000199042815D09D498220183109F053FEF3 +:10C78000B8790007410F08D0400F019904280CD058 +:10C7900096498F20183109F046FE009807280AD1E3 +:10C7A00007E00846FEF784FEEAE70846FEF753FE78 +:10C7B000F3E7761CF6B228466D1EEDB20028C4D110 +:10C7C0003046FEBD10B500230122022100F0D2F94F +:10C7D000040004D1B5208549800009F024FEE078EA +:10C7E00021794018C0B2E0700F2801D30F38E070F3 +:10C7F00000202071A07880210843A07010BDF8B5FA +:10C8000017460D4600231A46022100F0B3F9040032 +:10C8100005D0002D0CD0002F07D0062006E0072DF4 +:10C8200001D00820F8BD0720F8BD0820A84204D890 +:10C830006F486E49423009F0F6FD29462046FFF761 +:10C840008BFC0646002F28D0002E26D1E0782179D7 +:10C850001CE0420012195379072B03D093791B0770 +:10C860005B0F04D0401CC0B20F280CD00CE040007D +:10C8700000198079F12318406B071B0F1843907142 +:10C8800000290AD104E00020491EC9B20029E0D1E4 +:10C89000574856495A3009F0C6FD3046F8BDF8B53C +:10C8A0000D4600231A46022100F064F9040004D169 +:10C8B0004F484E49683009F0B6FD681E052804D37C +:10C8C0004B484A49693009F0AEFD0F21E2782079E2 +:10C8D000002310E0560036197779AF4206D1B179BE +:10C8E00049084900B1715B1CDBB21146521CD2B23F +:10C8F0000F2A00D100220646401EC0B2002EE9D108 +:10C900000F2905D248000019817901221143817154 +:10C910001846F8BD10B50446402801D2072010BDC6 +:10C9200000F056F8082802D03120000210BD002186 +:10C93000304802E0491C082903D24A00825A002AE2 +:10C94000F8D1082903D049004452002010BD04202A +:10C9500010BD10B5402801D2072010BD00F038F8F6 +:10C96000082805D00021234A40001152084610BD76 +:10C97000052010BDF0B58BB016460C00074607D059 +:10C98000002E05D06188402904D207200BB0F0BDED +:10C990001020FBE72088002801D0172801D90C209F +:10C9A000F4E7084600F014F808280FD0258803A8FB +:10C9B0002A463146023009F0B8FB01A8009062888F +:10C9C0002B4607213846FFF732FCDFE70520DDE77D +:10C9D00001460020074A02E0401C082803D2430019 +:10C9E000D35A8B42F8D1704702300000BCC500001A +:10C9F000AD020000000C0020F8B50546E54C079E8E +:10CA0000069821706270A370E6702071681C42085D +:10CA10005200E14B0021880000198446C261605C2D +:10CA200040008218002D0AD0002005E0664647002D +:10CA3000F669401CF353C0B2665C8642F6D8491CC6 +:10CA4000C9B20529E7D30026D21C9708B000BF0061 +:10CA500000198760304600F042F9A15D761C48431A +:10CA6000C219F6B2052EEFD3501B80B2F8BDF0B557 +:10CA70000546C84F8C460020FF247E5DA9009646DF +:10CA80000346CF190CE0F9695A008A5AC2498A4212 +:10CA900004D1401CC0B2FF2C00D11C465B1CDBB291 +:10CAA0009E42F0D86146002909D100280BD0002D04 +:10CAB00007D0B84949788E4203D2401EC0B2002840 +:10CAC00001D071460C70F0BD70B5B24C8D000023E2 +:10CAD0002D19615C09E0EC695E00A45B844202D11F +:10CAE0001370012070BD5B1CDBB29942F3D80020AB +:10CAF00070BDFEB51C4617460D46060008D0002D39 +:10CB000006D0F01C80088000B04203D01020FEBD8B +:10CB10000E20FEBD002F03D0002C01D0A74201D96A +:10CB20000720FEBD0094234622463946002001948A +:10CB3000FFF762FF2988814207D0814201D2042198 +:10CB400000E0092128800846FEBD009423462246C5 +:10CB5000394630460194FFF74FFF28800020FEBD84 +:10CB600010B5044600F0C5F8002801D0E0B210BDB1 +:10CB7000FF2010BDFFB50546874881B01E460C4614 +:10CB8000854204D0052C02D20398022802D300204B +:10CB900005B0F0BD002769460F7028466A46214659 +:10CBA000FFF792FF00280ED068460178204600F07B +:10CBB000A8F8002EECD00028EAD1284600F099F819 +:10CBC000002809D103E03846002EF6D1E0E7FF2027 +:10CBD00072A15C3009F027FC21462846039A00F038 +:10CBE0009CF8D5E7F8B505460C4600206A4E694624 +:10CBF0006E4F0870B5423BD0052C01D30720F8BD1D +:10CC00000A4621462846FFF75FFF002830D06846D5 +:10CC10000178204600F075F8230009F0F5FC0504C2 +:10CC2000090C11161B0001462846FEF7D5FA15E03F +:10CC3000FDF7E0FA12E001462846FFF74CFC0DE054 +:10CC400001462846F6F7B5FF08E001462846F8F702 +:10CC500012FC03E056A17B2009F0E5FB4D4A684633 +:10CC6000A10000788918C96940000E520020F8BD63 +:10CC70003846F8BD524A1268914201D210207047DE +:10CC8000052801D3072070470872002048727047BA +:10CC9000F8B504464A480068844201D21020F8BD25 +:10CCA000207A3C4A83009B18617A3B4D125C11E06C +:10CCB000DE694F00F65BAE420AD04A1C6272DA6946 +:10CCC0004B00D25A228000F01CF860600020F8BDB2 +:10CCD000491CC9B28A42EBD861720520F8BD0EB575 +:10CCE000384B40000ECB0091029301926946085ADE +:10CCF0000EBD28494978814201D9012070470020A2 +:10CD0000704770B50C460546FFF7E9FF214AA900B8 +:10CD1000891889686043401870BDF8B50C4606460E +:10CD200000206946134608706A4619462046FFF7F8 +:10CD30009EFE002500282BD0164A6846A1000078E8 +:10CD40008918C96940000E52684601782046FFF7ED +:10CD5000D8FF0546230009F057FC0504090C0F1401 +:10CD6000170029463046FEF713FA11E0FDF720FAC6 +:10CD70000EE0FFF78FFB0BE029463046F6F7E0FEAA +:10CD800006E0F8F771FB03E009A1622009F04BFB14 +:10CD90002846F8BD100C0020FFFF00007372635C92 +:10CDA000686F73745F636D2E6300000002300000D3 +:10CDB0007372635C686F73745F636D2E6300000051 +:10CDC000280000206C67010010B5014620220948A8 +:10CDD00009F0ABF907490020C877084610BD06499D +:10CDE000012048610548064A0168914201D10021AD +:10CDF00001607047400C00200005004078000020D2 +:10CE0000BEBAFECA8107C90E002808DA0007000F63 +:10CE100008388008C24A80008018C06904E0800891 +:10CE2000C04A800080180068C8400006800F704724 +:10CE3000BD4948788978884201D3401A02E021220E +:10CE4000511A0818C0B27047B74923314878897819 +:10CE5000884201D3401A02E02122511A0818C0B2B8 +:10CE60007047B149463148788978884201D3401AE1 +:10CE700002E02122511A0818C0B27047A94910B522 +:10CE80000C310868FF22120290430122D2031043A2 +:10CE90000860A54900202331487088702339487004 +:10CEA0008870463148708870A04808F0C8F89F48DC +:10CEB000401C08F0C4F8F5F741FC00F028F910BD5B +:10CEC00020207047B4E770B50C4605460026FFF7F2 +:10CED000AFFF9549A04214D30A46203A00232046CA +:10CEE000641EE4B200280BD08878105C2870887823 +:10CEF0006D1C401CC0B288702128F0D18B70EEE709 +:10CF0000012600F004F9304670BD202070479BE7F1 +:10CF100070B50C4605460026FFF796FF824923317F +:10CF2000A04214D30A46203A00232046641EE4B2ED +:10CF300000280BD08878105C287088786D1C401C05 +:10CF4000C0B288702128F0D18B70EEE7012600F086 +:10CF5000DEF8304670BD202101700020704710B50A +:10CF60000446FFF77EFF2070002010BD70B50C4610 +:10CF70000546FFF776FF6C494631A04215D30A46B5 +:10CF8000203A00232046641EE4B200280BD08878A3 +:10CF9000105C287088786D1C401CC0B288702128F5 +:10CFA000F0D18B70EEE7002400E0614C00F0AFF8A8 +:10CFB000204670BD70B50C460546212904D9FF20D6 +:10CFC0005CA1473009F02FFA55484068103840B24C +:10CFD000FFF718FFC6B20D20FFF714FFC0B286425C +:10CFE00007D2FF2053A14D3009F01DFA01E0F5F7FB +:10CFF000E8FB21462846FFF766FF0028F7D070BD02 +:10D00000F8B507464948484C401E474E007825462B +:10D0100046362335002806D1A9786878212200F009 +:10D020006BF800280ED0A1786078212200F064F817 +:10D03000002814D0B1787078212200F05DF8002823 +:10D0400028D033E038496878C91C0F546878401CF0 +:10D05000C0B26870212829D10020687026E03249CA +:10D06000607820390F546078401CC0B2607021286D +:10D0700001D1002060702D4F7F1E3878002815D018 +:10D08000A1786078212200F037F800280ED0002027 +:10D0900038700BE02449707826310F547078401CAA +:10D0A000C0B27070212801D100207070A978687812 +:10D0B000212200F021F800281DD0A17860782122DB +:10D0C00000F01AF8002816D0B1787078212200F00C +:10D0D00013F800280FD0F5F756FB144807F0B7FFF8 +:10D0E00001214903884203D016A1C12009F09BF910 +:10D0F0000E4807F0C4FFF8BD401C884205D090429E +:10D1000001D1002901D0002070470120704710B5DF +:10D11000064807F09CFF002801D1F5F723FB10BD5E +:10D1200000ED00E000E400E0800C00207D00002025 +:10D13000072000007372635C736F635F72616E64DB +:10D140002E6300007372635C736F635F72616E6461 +:10D150002E6300000C4908784A78401CC0B2904207 +:10D1600000D008707047094A074820BF40BF20BF61 +:10D170004178037843701368002B02D103788B4207 +:10D18000F3D00020704700007F00002000E200E0A4 +:10D19000FEB5F34C07466068FF213E0181552178BA +:10D1A000FF2913D00901083141583246491E08327F +:10D1B00009020192090A805800F0C8F9002802D03B +:10D1C0002478254615E06168207888552770FEBDD3 +:10D1D000E34842680198115828010090083010581F +:10D1E00000F0B4F9002806D1DD482C4641680098CB +:10D1F0000D5CFF2DECD1DA4821014068855547547C +:10D20000FEBD70B5D64A04460020157A53680AE080 +:10D210000201561C9E5DA64203D10C329A588A42E6 +:10D2200004D0401CC0B28542F2D8FF2070BDF8B5D2 +:10D23000CB4F3E7801F013FE0146FF2E68D034013B +:10D24000254678680835405900F080F9022802D94F +:10D25000786840595AE0C2494868025D0A70A11CCA +:10D26000425C002A0CD0521E425441590122D20580 +:10D2700089180902090A41513046FFF789FF30E059 +:10D28000631CC25C0092221D94468258002A10D072 +:10D2900001239B029A420FD99205920D43595703DD +:10D2A000DB191B021B0A43516346C3589A1A920AA0 +:10D2B00009E0FF21C1540AE0435952039A181202AF +:10D2C000120A4251002242543046FFF761FFA4483F +:10D2D0000C344168C26800980959800012580098BF +:10D2E00090479F4C2078FF2812D001F0B8FD0146EE +:10D2F0002078626800010830105800F027F90128F2 +:10D3000096D92078616800010830085801F09AFD2C +:10D31000F8BDF8B51C4615460E460746FF2B03D34D +:10D3200090A1D32009F07FF88D48FF21C7604560A8 +:10D3300004720674017000224270104604E002017B +:10D34000521C401CA954C0B2A042F8D3F8BD70B51D +:10D35000834C06466578207C854203D381A1E62074 +:10D3600009F061F8E068A90046506078401C6070E0 +:10D37000284670BDFFB581B01D46FF2401F06FFD4A +:10D38000774F064679780198814203D875A1F42039 +:10D3900009F049F872480021037A406810E00A0158 +:10D3A0009446521C825CFF2A24D0019FBA4205D1C8 +:10D3B00062460C328758029A97421DD0491CC9B266 +:10D3C0008B42ECD8FF2C17D021014B1C019AC25480 +:10D3D0000B33029AC250039B614F0022012B0ED0E7 +:10D3E0000B1DC25001239B029D4216D9AA05920D26 +:10D3F00008D008E00C46E1E7FF2005B0F0BD0B1DAA +:10D40000C550EFE71A4653039B190E461B02083618 +:10D410001B0AAA1A8351920A09E0002D00D10125A6 +:10D420006B039B191D022D0A0B460833C550891C3E +:10D4300042543D463E782046FFF7AAFE2878B04287 +:10D4400015D001F00CFD014628786A68000108300B +:10D45000105800F07BF8012807D928786968000186 +:10D460000830085801F0EEFC01E0FFF7E0FE0198FB +:10D47000C3E770B50C46054601F0F1FC06462146AF +:10D480002846FFF7BEFEFF2817D0354D0401204681 +:10D49000696808300858314600F058F8012109033E +:10D4A00040186968A41C095D400B002901D089025D +:10D4B0000818002800D1012070BD002070BDF3B510 +:10D4C00081B00F460198FFF79CFEFF282AD0244D1B +:10D4D0002E7869683246344604E0844205D02646F8 +:10D4E0002301CC5CFF2CF8D11CE0FF2C1AD0A64203 +:10D4F0001FD11001085C2870FF2818D001F0AFFC84 +:10D500002A780146120168680832805800F01EF837 +:10D51000012809D92878696800010830085801F005 +:10D5200091FC06E00020FEBDFFF781FE01E001F066 +:10D5300091FC39460198FFF79CFF22016968FF239F +:10D54000541C0B558A5C3301CA54FEBD401A0002BC +:10D550000121000AC905884200D900207047000057 +:10D56000CC0C00207372635C736F635F74696D65CC +:10D57000722E6300F0B500241C4A01211C4B0803E5 +:10D58000546018601B4B1C601B4C20601B480469D6 +:10D59000E443E406E617046910252C430461184CA3 +:10D5A0006160184D2960761C00E020BF1F68002FC5 +:10D5B000FBD0002E03D107691026B743076190689E +:10D5C0008005906801D5104A10436960A160002170 +:10D5D00019600121084A09031160F0BD10B5044625 +:10D5E000FFF7C8FF2060002010BD000000C500400C +:10D5F00080E100E000C1004080E200E000ED00E0DA +:10D6000000C3004000C0004000FCFFFF70B51F4990 +:10D610000A68002A17D000231D4601244A68521CBC +:10D620004A60092A00D34D600E792246B2400E6846 +:10D6300016420AD072B60B6893430B6062B6496813 +:10D640000160002070BD052070BD5B1C092BE5D377 +:10D650000FA1362008F0E7FEF5E70120104980050C +:10D6600008607047EFF31081CA07D20F72B601212C +:10D6700081400648036819430160002A00D162B660 +:10D68000EBE7024800210160416070478400002000 +:10D690007372635C736F635F6576742E6300000062 +:10D6A00000E200E001208107086070470120810747 +:10D6B000486070471048C068C00700D0012070471C +:10D6C0000D488068C00700D0012070470A484069B3 +:10D6D000C00700D0012070470748C069704706495D +:10D6E0008A69D20306D589698907890F814201D1E8 +:10D6F000012070470020704700040040F8B5F84C46 +:10D70000207BE17A88421CD00126F64D0027E07A82 +:10D71000215C14200A4642435019037C052B11D08A +:10D72000037C062B1CD0037C072B28D0437C012BC9 +:10D7300033D0EDA1EF4808F076FE207BE17A8842F5 +:10D74000E5D1F8BD0674E07A0A2807D0E07A401CDB +:10D75000E072491CC8B2AA5802210CE00020F7E789 +:10D760000674E07A0A2808D0E07A401CE072491C6E +:10D77000C8B2AA5803219047DFE70020F6E70674F5 +:10D78000E07A0A2807D0E07A401CE072491CC8B24F +:10D79000AA580821EFE70020F7E74774E07A0A2843 +:10D7A00007D0E07A401CE072491CC8B2AA58072191 +:10D7B000E1E70020F7E770B50024CF4E0620707235 +:10D7C000CE4825464477047738300473C472CC4879 +:10D7D00007F035FCCB480575F572CB49601E8860B3 +:10D7E0007571B570F57035717570C848643905701C +:10D7F00045701420604340180574641CE4B2052C85 +:10D80000F7D30120F5F764F80020F5F761F801205F +:10D81000B071F4F727FDBE48F4F736FDBD4C20701B +:10D82000BD48F4F731FD6070F4F7F2FF70BD10B53C +:10D83000F5F719F8B74C2078F4F744FD6078F4F761 +:10D8400041FDAD4C207A002803D0F4F7CAFD00203A +:10D85000207210BD70B5A84CA079002804D0A2A1F8 +:10D86000AE4808F0E0FD70BDE07A002803D19EA12B +:10D87000AB4808F0D8FD0126A6710025E572607A54 +:10D88000042114225043974A801801749E488168ED +:10D89000491C04D0691E81600120F5F719F80020A9 +:10D8A000F5F716F8F4F7FAFF07F00AFDF5F7FBF8BD +:10D8B0009C480560056001209B49C0030860F5F79E +:10D8C00071F992480078022804D0032804D1E07846 +:10D8D000002801D0A67000E0A570F5F7D0F870BD63 +:10D8E000034680490520142242435218203A127FF1 +:10D8F000002A04D0401E0006000EF4D17047142206 +:10D90000424351180A46803AD366012220390A77E9 +:10D910007047012805D0032805D1002903D1002034 +:10D9200070470029FBD010B4734C00236370774A12 +:10D93000002890700CD002280AD007291AD20800BB +:10D9400078440079001887441505070D0F1113005E +:10D95000D37003E01B2000E03A20D07001206070FB +:10D9600010BC70475820F8E77720F6E79620F4E7D8 +:10D97000B520F2E710BC0020704710B5634840782E +:10D98000F5F798F880B210BD411E1422504310B52F +:10D99000544A8418203C042902D8207F002803D14F +:10D9A00051A1624808F03FFD207F012804D0B32038 +:10D9B0004DA1800008F037FD0020207710BD70B524 +:10D9C0004E4C607F217F884201D1012500E0002577 +:10D9D000F5F709F8F5F76EF8617F227F914201D1E2 +:10D9E000012100E00021A942EBD170BDF7B5074647 +:10D9F000481E84468EB0C0B2142205905043394A66 +:10DA000085180495287C2D1D07282AD1344C002622 +:10DA1000E07A227B824221D0235C059A934201D195 +:10DA2000012601E0002E04D00A2811D0421CA25C7D +:10DA300022540A280ED0401C227BC0B28242EBD175 +:10DA4000002E0BD0207B002806D0207B401E04E057 +:10DA50000022ECE70020EFE70A202073049A01205F +:10DA600010746046244C042813D8142041431D48E8 +:10DA700008182038007F00280BD00498007C01286B +:10DA80000BD00498007C012803D01098807A0128DC +:10DA900007D015A1264808F0C6FC1098807A012806 +:10DAA0006FD104980F4B007C022845D00C4C207B92 +:10DAB0000A2872D0207BE17A401C884203D10AA157 +:10DAC0001C4808F0B0FC049901204874217B05989B +:10DAD0006054207B0A2864D0207B401C20731CE10A +:10DAE000D80D0020E80D00207372635C72656D2E06 +:10DAF00063000000CF0500006C0E0020A00D002088 +:10DB0000780E0020C00D00204C0E00208E0000205A +:10DB10002FD200008C000020FDD600007D02000006 +:10DB20005E02000000F5004080E200E0CB02000051 +:10DB30001503000022030000607A059A0146904216 +:10DB400006D0014614267043C018807C9042F8D15C +:10DB5000627A824208D1617A14225143C918897CC1 +:10DB600061720121A17207E014224243D2181426E7 +:10DB70007143927CC9188A74142206215043C0183C +:10DB800081741098007A062819D201007944097925 +:10DB900049188F440812100E0C0AE07A00288ED023 +:10DBA00091E700209AE700200FE0B4200DE07320F9 +:10DBB0000BE0322009E00A2007E0062005E0FF2004 +:10DBC000FDA1E03008F02FFC0020029010980168C1 +:10DBD0000298081A28601099097A002912D00221A7 +:10DBE000401A0102090A296010980268406810185A +:10DBF0000002000A68601098807A0228109803D00A +:10DC0000007B74E00421EBE7007A002813D00222A5 +:10DC1000029810188446109842686046083016181A +:10DC2000E848029A4078904202D9E278002A04D06B +:10DC30003046083005E00422EAE7029A801A80198B +:10DC40000830627A062A1CD0627A14235A43DE4BCB +:10DC5000D2185268914214D0DC4B0793617A142297 +:10DC60005143D94A89184A688968D21BC91B1202D4 +:10DC70000902120A090A90423AD89A4238D89942BF +:10DC800036D83818801B0002000A286010996044BA +:10DC9000CF4AC9680002000A9446421A01239B0534 +:10DCA00007929A4201D2104614E00A1A09929A4247 +:10DCB00001D207980EE0079A6346624503D9591AC4 +:10DCC0000818401C06E0099A624506D9181A40183F +:10DCD000401C4042002860DC03E0B7A1BD4808F0CA +:10DCE000A2FB286880190002000A686000202872E0 +:10DCF0006868082608300002000A68601098407AB8 +:10DD0000A8721098007A687203280ED200280CD0EE +:10DD1000FFF7D0FC002803D007E0002011B0F0BDD1 +:10DD200002983A210E1A32200290A6480178012961 +:10DD300001D0032909D141780298814205D9E078C0 +:10DD4000002802D10298081A861928689F4AC01B29 +:10DD5000844601026868090AC01B03021B0A029379 +:10DD60008E421AD81346914217D80299994214D874 +:10DD7000617A062915D0667A6146062203920092DE +:10DD80001422914B7243D2189368DB1B8B4216D836 +:10DD90000396967C062EF3D177E0059801F055F9AD +:10DDA000BBE70499022205980A74627A062A00D019 +:10DDB000627A8A7460720120A07211B0F0BD062EE2 +:10DDC00063D000223146944614227F4B4A43D21836 +:10DDD0005368DB1B834229D2917BAB7A99421FD8CF +:10DDE00004980521059C01747B4D287B0A2811D0DD +:10DDF000287BE97A401C884203D16FA1774808F05C +:10DE000012FB287B2C54287B0A2807D0287B401C37 +:10DE1000287382E7E87A0028EFD0F2E70020F7E7DE +:10DE200001218C46917C0629CED102E06046002873 +:10DE30002AD03546009114202A46424362480621E2 +:10DE4000171839741038007B0A28634816D0017BF4 +:10DE5000C07A491C814203D157A1614808F0E3FA16 +:10DE60005D48017B4554017B0A290BD0017B491C8D +:10DE70000173BD7C0098A842DDD106E0C07A00287D +:10DE8000EAD0EDE70021F3E70096049902204E4D19 +:10DE90000874607AB04207D1049900988874059894 +:10DEA00060720120A07221E00398062E0FD0062890 +:10DEB00003D141A14B4808F0B6FA0398142250430D +:10DEC0004019059981740499009888740EE0062819 +:10DED00003D139A1444808F0A6FA0398142250430C +:10DEE000401905998174049906208874012011B0A5 +:10DEF000F0BD70B50D463D4A441900210B46101A7D +:10DF00008B4103D22CA13A4808F08DFA394885425A +:10DF100003DD29A1384808F086FA3848854203DA3B +:10DF200025A1374808F07FFA3648844205DA002CEC +:10DF300001DB204670BD334800E03348201870BD37 +:10DF4000401E70B5C0B2142148431F494418607B7D +:10DF5000062813D201007944097949188F44020C2C +:10DF60000A080604002068E0B42010E073200EE0E8 +:10DF700032200CE00A200AE0062008E0FF200EA173 +:10DF8000E03008F050FA617B0020002955D00221D2 +:10DF90004018616840180002000AF4F78BFD0C2558 +:10DFA0006557124A441900210B46101A8B412FD293 +:10DFB00001A10F482AE000007372635C72656D2E48 +:10DFC000630000008E000020E80D0020FFFF3F00EE +:10DFD000FFFFFF000E070000D80D00200702000021 +:10DFE000C5030000DD030000E3030000FF7F841E83 +:10DFF000F50300000020A107F603000000E05EF832 +:10E00000F70300000080841E00807BE108F00BFA1B +:10E01000FB48854203DDFB49FB4808F004FAFB4856 +:10E02000854203DAF749FA4808F0FDF9F9488442D5 +:10E0300007DA002C03DB204670BD0421A8E7F54871 +:10E0400000E0F548201870BDF0B5064683B0F348EF +:10E050000190457A029534687068001B0702F04809 +:10E060003F0A001B0090062D2DD014202946414365 +:10E07000EC480122081884464168E9489205864622 +:10E08000081B904210D3631A93420DD30246704688 +:10E09000724503D900984018401C05E073450ED91D +:10E0A000411A0819401C404200280CDA60460295CB +:10E0B000857C0198C0790028D5D003B0F0BDD14946 +:10E0C000D94808F0B0F90298854226D01421484377 +:10E0D000D4490123401802908068D1499B058C46A1 +:10E0E000011B8646994210D3221A9A420DD36346E9 +:10E0F000614503D900997144491C06E019466245FF +:10E100002DD9091A0819401C4142002905DD029841 +:10E11000B17A807B814200D37446062D15D0C14967 +:10E120001420454368184268121B1202120ABA42B0 +:10E130000BD2B37A827B934200D38468857C0198AA +:10E14000C0790028B9D1062DEAD13068A042B4D0F8 +:10E15000E0190002000A3460706003B0F0BDA94904 +:10E16000B14808F060F9D8E7F0B5B049044648680E +:10E1700085B0C005C00D1CD0103840B200280CDAA4 +:10E180000207120F083A920892005118C9698007D5 +:10E19000C00EC1400806800F09E08108A44A89002A +:10E1A000891809688007C00EC1400806800F002842 +:10E1B00008D000272078002806D0012804D00020AD +:10E1C00005B0F0BD0127F5E72079062813D201003C +:10E1D0007944097949188F44020C0A080604002082 +:10E1E00018E0B42010E073200EE032200CE00A208A +:10E1F0000AE0062008E0FF208249E03008F013F929 +:10E2000021790020002905D002214618834D002FD6 +:10E2100002D003E00421F8E70020E871694602AA71 +:10E22000A068F4F751FC694608228A56E06801A903 +:10E2300080180122C01C1F2801DA019209E003AAFC +:10E24000F4F742FC6846007B002802D00198401C8D +:10E25000019000990198401808300002000A0190CE +:10E26000881B0002000A0090607969468872009855 +:10E270000390F4F7B8FB009A019B121A181A6D4923 +:10E2800012020002120A000A8A4216D8884214D8E2 +:10E290006846FFF7D9FE00990398814205D0881996 +:10E2A0000002000AF4F706FCA0600120E9790029C9 +:10E2B00086D0002FB0D005B0F0BD0020F6E7F3B552 +:10E2C0008FB05D480C460B9006F0C1FE5B4A0F997B +:10E2D000524F56185A4D203E00280BD05948007D09 +:10E2E000002803D058A15B4808F09DF82078012849 +:10E2F0007ED060E1687F0A280CD0687F297F401CAF +:10E30000884203D150A1544808F08DF820780128A4 +:10E3100004D00CE0287F0028F4D0F7E7F07F002835 +:10E3200003D049A14D4808F07EF80120F077697FBD +:10E330000F9814224A4E51438919087420780228F4 +:10E3400022D0687F14214843861920793072607981 +:10E35000707232460C323146A068F4F7B5FB0C20DF +:10E3600030560F2804DD1F3830733068401C306091 +:10E370000C217156301DE26801905018C01C1F28F6 +:10E3800070DA01200199FDE028494868C005C00DF8 +:10E3900021D0103840B200280CDA0207120F083AD8 +:10E3A000920892005118C9698007C00EC140080642 +:10E3B000800F09E081081E4A8900891809688007D2 +:10E3C000C00EC1400806800F002804D105201EA100 +:10E3D000000208F028F8687F1421484386190021BC +:10E3E000E0686A460691117006A9F4F76DFB00E03B +:10E3F000D7E06A46002010560F2834DD012033E0B4 +:10E400000020A107B8DF0000F603000000E05EF87E +:10E41000F70300000080841E00807BE16C0E00206A +:10E42000FFFFFF00E80D00200E07000000ED00E0F8 +:10E4300000E400E0FFFF3F00780E00209200002083 +:10E44000A00D0020C00D00207372635C72656D2EFC +:10E450006300000011050000EF040000F404000058 +:10E46000E00C002082E0002006994018079002206E +:10E47000B0722079307260797072A068311DC01C52 +:10E4800006911F2801DA012009E0F4F71DFB684618 +:10E490000078002804D0069806990068401C08609F +:10E4A000307A062813D201007944097949188F443B +:10E4B000020C0A08060400200FE0B4200DE07320CF +:10E4C0000BE0322009E00A2007E0062005E0FF20EB +:10E4D000FD49E03007F0A7FF00202179002943D053 +:10E4E00002214018069071680830081807990890B2 +:10E4F00009180698081A0C900020F871F4F773FABE +:10E5000004463060079820180002000AF060787A0C +:10E51000062825D0797A14204143EC480818406831 +:10E520000899029040180002000A0390707A694628 +:10E53000887402A8FFF788FD0299039A091B121B31 +:10E5400009021202E24B090A120A0C98994207D8F2 +:10E55000824205D80299069808180002000A306025 +:10E56000F8790028C8D110E00421BAE704AA01997B +:10E57000F4F7AAFA6846007C002804D001980199B3 +:10E580000068401C08602078B072687F0A2806D0B6 +:10E59000687F401C68770B9806F071FD47E000200B +:10E5A000F8E7F07F002804D0A320CAA1C00007F03C +:10E5B0003AFF0120F077CA490F98087420780228A2 +:10E5C00003D1C4A1C74807F02EFFC54E2079307291 +:10E5D0006079707232460C323146A068F4F774FAF2 +:10E5E0000C2030560F2804DD1F3830733068401C73 +:10E5F00030600C22B256301DE16801908818C01CB2 +:10E600001F2802DA012001990BE003AA0199F4F70F +:10E610005BFA6846007B002804D0019801990068E5 +:10E62000401C08602078B072AD4901200875687FF1 +:10E63000297F884224D07C7A062C23D0F4F7D3F9A2 +:10E6400014214C43A14961180A7C042A18D00A7C81 +:10E65000032A15D04B6889681B1A081A1B0200028E +:10E660009B4A1B0A000A082B0AD31146934207D87B +:10E67000884205D8687F297F884201D0F4F7FFF9E6 +:10E6800011B0F0BD687F297F8842F7D111B0F0BD8D +:10E6900010B50020F4F709F910BD10B50120F4F70A +:10E6A00004F910BDF1B5009802281ED08E4C607A96 +:10E6B000062803D187A18D4807F0B5FE0026A67174 +:10E6C0000125E572607A03211422804F5043C0195E +:10E6D0000174F4F7D9F9009800280BD0012829D04B +:10E6E000032879D07BA1824844E082480078F3F780 +:10E6F000EFFDF8BD8048007F002803D075A17F485A +:10E7000007F091FE65717C4D00202E60F4F7E0F873 +:10E71000A968481C04D0012300221846F4F70EF91A +:10E72000607A617A401CC0B2142251437A580121A8 +:10E730009047F8BD0120F4F7CBF8607900280DD0A0 +:10E740006D488068401C09D0607A617A401CC0B274 +:10E75000142251437A5806219047F8BD6648007F3D +:10E7600001280AD0022812D0032822D0042834D04D +:10E7700058A1634807F057FEF8BD2079002803D060 +:10E780002671F4F786F9E5705B480677F8BD207AC4 +:10E79000002802D1F3F7FCFD2572607A617A401CF3 +:10E7A000C0B2142251437A5800219047524806774C +:10E7B000F8BD514F0123397B78680022411A184671 +:10E7C000F4F7BCF82079002803D02671F4F761F93A +:10E7D000E57002203877F8BD19E0474E217870685F +:10E7E0000123411A00221846F4F7A8F8207A0028DD +:10E7F00002D1F3F7CDFD2572607A617A401CC0B278 +:10E80000142251437A58002190473577F8BD607A39 +:10E81000617A401CC0B2142251437A5805219047B6 +:10E82000F8BD10B5304C607A062803D129A13548CF +:10E8300007F0F9FD607A617A401CC0B2142251439E +:10E84000224A52580421904710BDF0B583B00620EB +:10E850000290F4F7C8F8244C0090617A2A4801909D +:10E86000062920D0617A1420414318480918097CF0 +:10E87000042918D0617A142251430818007C032817 +:10E880007BD0019900980B6849681B1A081A1B0273 +:10E8900000020F4A1B0A000A082B6ED3114693424E +:10E8A0006BD8884269D814488068401C03D009A1FD +:10E8B000164807F0B8FD00206071607A06282CD158 +:10E8C0006078002829D023E0B8DF0000E80D0020A0 +:10E8D000FFFF3F007372635C72656D2E6300000082 +:10E8E000C00D00201E0500006C0E00204F0500002A +:10E8F000A20500008C0000204C0E00205B050000EB +:10E9000096050000A90500005C0E0020E50500004A +:10E91000FE48C178417081780170607A062815D070 +:10E92000607A1421FA4A48438018007C04280DD1EB +:10E93000607A0290607A0121142358438018017490 +:10E94000607A58438018807C6072A172F14D687FB4 +:10E95000297FF14F884233D0F04E287F142148435D +:10E960008019007CC05D0128287F07D048438019AA +:10E97000007CC05D02282FD044E0FDE11421484313 +:10E980008019807A01280AD0287F0221142250435E +:10E990008019007CC155287F0A2808D009E0287F0B +:10E9A0000021142250438019007CC1552AE0002028 +:10E9B00001E0287F401C2877687F297F8842CCD1DE +:10E9C000D74D287D00284CD0287CC15D012928D056 +:10E9D000C05D022830D03AE0287F142148438019D6 +:10E9E000807A012803D0CFA1D14807F01CFD297FF0 +:10E9F00000201422514389198872297F51438919B3 +:10EA0000097CC855287F142148438219287F484330 +:10EA10008019017C0098FEF7E9FF287F0A28C8D1F9 +:10EA2000C5E7A97A012904D00221C1550020287523 +:10EA30000DE00021C1550AE0A87A012803D0B9A150 +:10EA4000BC4807F0F0FC0020A872297CC855287D3E +:10EA5000002806D0297CB24A0098FEF7C7FF0020A4 +:10EA60002875029806281ED014214843A84940184A +:10EA7000017C012917D107210174AF4D287B0A2899 +:10EA80003CD0287BE97A401C884203D1A5A1AB4841 +:10EA900007F0C9FC297B02986854287B0A2831D0EA +:10EAA000287B401C2873607A06287DD0A07A002835 +:10EAB0007BD00020A072617A1420414394480E1844 +:10EAC0009F49B56873680A46F6687C32CB679660E2 +:10EAD00055609C4D697E002916D00226617A142269 +:10EAE0008B4851430818407B06281BD2010079440B +:10EAF000097949188F440A1412100E0CE87A00287C +:10EB0000C4D0C7E70020CDE70426E7E700210FE0E7 +:10EB1000B4210DE073210BE0322109E00A2107E066 +:10EB2000062105E0FF208849E03007F07CFC002149 +:10EB30002973687E022801D0012810D12869009A23 +:10EB40004018821A1202120A3A2A08D932380321CE +:10EB500000026976000A28613220287308E0322911 +:10EB600006D2207A00280AD1F3F712FC012005E032 +:10EB7000207A002803D0F3F734FC00202072634988 +:10EB80000822487820700978012901D0032906D18C +:10EB900001212171297B884201D9421A0832A378C8 +:10EBA000002B00D0921C01E08DE09BE02179002930 +:10EBB00001D1002B5DD09446644A00990092019ADD +:10EBC000176852687F1A511A3F0209023F0A090A60 +:10EBD000BC451BD85D4A974218D8009A914215D877 +:10EBE000297B884223D92B69421A9A1A1202120AE7 +:10EBF000101880190002000A2A616860002914D0E8 +:10EC0000032028770006000E3ED14CE00020207142 +:10EC1000A070297B002925D028694018801900029E +:10EC2000000A6860022028772EE00120E9E781428F +:10EC30000BD92A69511889190902090A6960002843 +:10EC400001D00420DDE70220DBE7002B03D135A152 +:10EC50003F4807F0E8FB286980190002000A686055 +:10EC6000002004E0296989190902090A69602877E6 +:10EC700019E0287B00280FD02969081880190002A4 +:10EC8000000A686002202877286901238119002280 +:10EC90001846F3F753FE09E0286980190002000ABC +:10ECA0006860002028770120F3F712FE607A1421B3 +:10ECB000484317490C2240188256012300206968F6 +:10ECC000F3F73CFE0EE00120F3F702FE0020F3F71D +:10ECD000FFFDF3F7E3FD207A002803D0F3F781FB73 +:10ECE00000202072A078002804D0F3F7D2FE002084 +:10ECF000E070A0706078002804D00448C1784170AA +:10ED000081780170207900282BD023E08E0000202C +:10ED1000E80D0020A00D002091000020E00C002054 +:10ED2000C00D00207372635C72656D2E630000007D +:10ED30000706000023060000D80D0020350600005D +:10ED4000E00D00204C0E0020B8DF0000FFFF3F0068 +:10ED5000870600000020CF49E0700978002900D123 +:10ED60002071CD48017BC07A814203D0CB484078E6 +:10ED7000F3F7AEFA0120E07103B0F0BDF0B5C84C76 +:10ED80000746607A83B0062803D1C6A1C84807F0B9 +:10ED90004AFB607A1421C74E48438019007C03283F +:10EDA00003D0C0A1C44807F03EFBC44DA868401C76 +:10EDB00003D0BCA1C24807F036FB607A1421484357 +:10EDC00081190C20085600216A4600911171C01962 +:10EDD00001AA6946F3F778FE6A46042010560F2808 +:10EDE00001DD012000E0002000994018696840180A +:10EDF0000102090AA9606079002804D001230022D9 +:10EE00001846F3F79BFD03B0F0BD70B5AE4CAD4AAC +:10EE10000B1AA34214D3451AA54211D3934203D926 +:10EE2000101A43185B1C0BE0954204D9511A0818BC +:10EE3000401C434204E0A549A54807F0F4FA00232A +:10EE4000184670BD10B50146012300220220F3F7D9 +:10EE500075FD10BD10B50220F3F73AFD10BD10B5D9 +:10EE6000F3F7C1FD10BDF0B58D4D0446E87A83B0CF +:10EE7000002803D18BA1974807F0D5FA642C4DD315 +:10EE8000954900200246091B824147D39348417FA0 +:10EE9000007F814242D19248007D00283ED1687AAD +:10EEA0001421844F4843854EC519306801AA0019C2 +:10EEB0006946F3F709FE694604200856002802DD7A +:10EEC0000098401C0090A96800986B680A18D21A34 +:10EED0001202844B120A9A4220D8AA7C062A08D031 +:10EEE00014235A43D2195268511A0902090A81425D +:10EEF00014D3B068401C05D00120F3F7E9FC0020D2 +:10EF0000C043B060306800193060A86800994018AC +:10EF10000002000A7061012003B0F0BD002003B0C0 +:10EF2000F0BDF8B50646401EC5B2142061496843DD +:10EF30004418207C002803D15AA16B4807F073FACB +:10EF40006648017F407F81420CD0684A14234B43BE +:10EF50009B181B7CB3420CD00A290CD0491CC9B2A7 +:10EF60008142F3D15E48017D002964D0007CB0422B +:10EF700061D10020F8BD0021F1E7217C052905D0F1 +:10EF8000217C062902D0217C072928D10121217466 +:10EF9000C17A0023027B8A4221D00246565CAE42EF +:10EFA00001D1012301E0002B04D00A2911D04E1C0D +:10EFB000965D56540A290ED0491C167BC9B28E4262 +:10EFC000ECD1002B0BD0117B002906D0117B491E00 +:10EFD00004E00026ECE70021EFE70A211173617CD1 +:10EFE00000292AD06774C17A0023027B8A4224D088 +:10EFF000425CAA4201D1012301E0002B04D00A297E +:10F0000012D04A1C825C42540A290FD0491C027B50 +:10F01000C9B28A42ECD1002B0FD0027B0146002AF4 +:10F0200006D00A7B521E04E00022EBE70021EEE747 +:10F030000A220A7301E018480027217C01299CD18B +:10F04000617C002999D10120F8BD70B505461420D6 +:10F05000184A05216843801801740F4C207B0A2848 +:10F0600011D0207BE17A401C884203D11749204807 +:10F0700007F0D9F9207B2554207B0A2807D0207B74 +:10F08000401C207370BDE07A0028EFD0F2E700202A +:10F09000F7E700008E000020D80D00208C00002033 +:10F0A0006C0E00207372635C72656D2E630000004D +:10F0B000EA060000E80D0020EB0600004C0E0020E0 +:10F0C000EC060000FF7F841E0020A107B8DF0000CF +:10F0D0000E0700002D070000FF1FA107A00D002054 +:10F0E000C00D0020FFFF3F006A070000E00C002079 +:10F0F0000702000070B5FF4D00246C702C70AC61ED +:10F1000000F0CEFC284620304470C473AC6214304A +:10F110002C6305F094FF002804D0FF20F6A14E30A8 +:10F1200007F081F92C7770BD0B23DB4310B5C21AB1 +:10F13000F54998421FD008DC1C3222D00A2A20D080 +:10F14000142A1CD0182A08D117E0083011D004283E +:10F150000DD0082809D00C2805D0FF20E6A1753075 +:10F1600007F061F910BD04200CE000200AE0FC204B +:10F1700008E0F82006E0F42004E0F02002E0EC20B3 +:10F1800000E0D820C86010BD70B50125DF49022617 +:10F190000E60DF490022CA63CD63DE49C96A0907F0 +:10F1A0000ED4DC494031CB6ADB4A53620B6B93626D +:10F1B0004B6BD3628B6B1363C96BD30519435163DC +:10F1C000D14C002826D0012828D0FF20CAA1A13088 +:10F1D00007F029F9D148A063FF200430606325635C +:10F1E00003202061C849962040314860C1491C2055 +:10F1F0000856FFF799FFCB49C9488860C948CA49F2 +:10F2000080304160C9490160C9480660C949102081 +:10F21000486070BDC8486061C84803E0C848606184 +:10F22000C648801FA061D5E770B50C46B14D0146B8 +:10F230000622A81C06F079FF2C7270BDAD48203064 +:10F2400040787047AB4A517010707047F8B504466B +:10F250000D465079117900020843690009190884A4 +:10F260001F461646501C06F0C1FF317800020843C5 +:10F27000A90060502846083001268640002F0ED095 +:10F28000012F04D0FF209CA1E83007F0CCF8206BC0 +:10F29000304301460120A84001432163F8BD206BA3 +:10F2A000B043F6E770B50D460446082904D9FF209F +:10F2B00091A1F93007F0B7F80022A24809E09100C7 +:10F2C000635809180B6053001B191B8C0B62521CEE +:10F2D000D2B2AA42F3D3206B9A494031086070BD84 +:10F2E00010B50446FFF720FF8248047710BD81481F +:10F2F0002030007B704710B5834CC178616206F006 +:10F3000075FF0002E06110BD252808D0262808D02E +:10F31000272808D041000A2807D8091D06E0022145 +:10F3200005E01A2103E0502101E0891DC9B2764AA7 +:10F33000916075494031486170476E4988617047F6 +:10F3400070B5002818D002226A4C784B0320A272B4 +:10F35000F0331860734D72486860002001262075F4 +:10F3600000290BD0012910D002291BD0952062A1C1 +:10F37000800007F058F870BD0122E5E77248012AC5 +:10F3800001D0466070BD066070BD5A48012A006B0E +:10F3900005D00121490508432063696070BD012142 +:10F3A0000905F8E7A069002803D153A1674807F0D1 +:10F3B0003AF8A169A06A40186549886059486549CA +:10F3C0008030816060491031C1600120216BC00331 +:10F3D00001432163686047482030C67370BD08B59B +:10F3E0000C20694608705148002110380161564AC6 +:10F3F000012111610BE000BF00BF00BF00BF00BFD3 +:10F4000000BF00BF00BF6A461178491E11706946EF +:10F410000978002902D001690029ECD068460078FB +:10F42000002804D1494834A1203006F0FCFF08BD73 +:10F43000F8B53E4CF034206886083E48B600416876 +:10F44000C906CD0F10218160002727603549344857 +:10F450008860FFF7C4FF35481038076100F020FBD3 +:10F460002660002D02D0334910204860F8BD10B549 +:10F4700006F0BCFE00022449000AC86310BD2349FF +:10F48000022008602A49086070472049022080391C +:10F4900008607047304908707047164810B534301E +:10F4A00005F0D5FD002804D0284813A15A3006F0F5 +:10F4B000BAFF10BD0F4810B5343005F0E0FD10BDA7 +:10F4C00011494860704770B50A4D0446A86AA042C9 +:10F4D00004D31E4808A16B3006F0A5FF0120287355 +:10F4E0001C49002008392C6148601948446000F02C +:10F4F000DEFA70BD7C0E00207372635C68616C5F25 +:10F500007263732E630000000015004080E100E08C +:10F51000C01F004080000010001700405B06000084 +:10F520000040000400F50140408000401011004000 +:10F5300080E200E000130040060102002500030203 +:10F5400005010300001600400010004047020000C3 +:10F5500040850040488100409700002010B5FF48DA +:10F5600002210173C6210161FD4A00215160806AB8 +:10F57000FC49C630486000F09AFA10BD0121FA48F3 +:10F5800089058160F548026B8A430021026301739B +:10F590007047F64801214160C160F1490020486090 +:10F5A000F0494860ED4988627047F149402008629F +:10F5B000F0490A6802430A607047EE480168402239 +:10F5C00091430160EA49002008627047E9480168F8 +:10F5D000102291430160E849012088617047E749A2 +:10F5E0000020C861E34801681022114301607047A0 +:10F5F000E249CA69012A01D000207047DC4A9268BA +:10F600005206520E524202700020C861012070471B +:10F6100070B5D248D24D017B002902D0696801291A +:10F6200009D00024D5490A69012A06D00023807A2E +:10F63000012804D006E00124F4E74023F7E7CA6874 +:10F64000012A04D000221A43012802D004E020221B +:10F65000F9E74B68012B05D000231343C84A022861 +:10F6600002D007E01023F8E71668012E02D1CE6819 +:10F67000012E04D000261E43022802D007E00826EF +:10F68000F9E71268002A02D1CA68012A04D00022D0 +:10F690003243022802D005E00422F9E7002C01D011 +:10F6A000022300E000231343022807D14868012801 +:10F6B00004D16868012801D0012600E00026B14885 +:10F6C0001E4302681206120E02D04A69012A00D0B7 +:10F6D0000022A24C2034227300680006000E02D0E3 +:10F6E0008869012800D000206073A148006A0028C2 +:10F6F00003D000F0A8FA012800D00020A07300F089 +:10F70000C7F9002068603046F3E670B50C00054686 +:10F7100003D19D499D4806F086FEE00706D0012CE6 +:10F7200004D06D209849C00006F07DFE002D0ED05B +:10F7300002218A4801294172C4728E4809D00229E7 +:10F740000AD0924890491A3006F06DFED1E60121A8 +:10F75000EFE70168042201E001680822114301601B +:10F76000C7E670B57D4C0022E37A990701D54107C1 +:10F7700014D47A49DD062031002D05DA4D7B002DA9 +:10F7800002D08D7B002D09D01D0702D50D78002DEC +:10F7900004D15B0703D54978002900D10122637A9F +:10F7A0007449002B06D00225284010430CD0FFF7E7 +:10F7B0003FFE9EE66C4A76489060086880088000AC +:10F7C000086000F06DF994E6012B07D0022B0ED0F3 +:10F7D0006E486D496B3006F026FE8AE60868042202 +:10F7E0009043086000F05CF90120A07281E608688F +:10F7F00008229043086000F053F9A57279E6574952 +:10F8000008757047F8B5554F544D2037FA7B564C64 +:10F810000021286B002A31D00122D203A26090433C +:10F820002A46544D10632E685A4A102090600020DA +:10F8300028601014A060FFF7D2FD00F029F92E60B7 +:10F84000281460605349102048604448817A4A482F +:10F8500001290DD002290ED04C484FA1801F06F07F +:10F86000E2FD0020F8733D48007D022874D0F8BD09 +:10F8700001210160F5E701214160F2E73A4A906019 +:10F880000E462963FFF7C4FE044636482E754168CC +:10F8900069620068A862AA7A022A0AD16A78002AF4 +:10F8A00007D0334B403B5B681B7813402A789A4360 +:10F8B00008D03E70E20708D0084603F04AFD012157 +:10F8C000A86A09E001223A70F4E7A10601D50221F5 +:10F8D00002E0A10702D5002103F04BFD2448403887 +:10F8E00041680622A81C093106F0F2FB002809D164 +:10F8F0001F48297A403840680078C009814201D108 +:10F90000012000E0002078702046FFF72AFF2648FB +:10F91000007800280DD001284AD002285BD00328A7 +:10F9200078D01DA1214806F07EFDA87A022870D06B +:10F93000A3E0A00701D502F0EDFB200702D50120CE +:10F9400002F020FC600702D5002002F01BFCA0069C +:10F95000EBD502F07CFBE8E793E000007C0E002092 +:10F96000408100404085004000F50140008000409B +:10F9700040150040001200400010004000110040FF +:10F980000014004040160040F8F40000630300003B +:10F9900000400004001300407372635C68616C5F98 +:10F9A0007263732E6300000097000020E6040000DD +:10F9B000A00701D504F0BBFF200702D5012004F009 +:10F9C00021FF600702D5002004F01CFFA006ACD583 +:10F9D00004F0A4FEA9E7A007BF27002802DA3C40F4 +:10F9E000F3F702FB200703D53C400120F3F7FBFAB5 +:10F9F000600703D53C400020F3F7F5FAA00602D5D6 +:10FA00003C40F3F7EFFA60068FD5F3F7EEFA8CE798 +:10FA100000E012E0A00701D5F3F7EAFA200702D5CB +:10FA20000120F3F7E4FA600702D50020F3F7DFFACC +:10FA3000A00690D5F3F7DAFA77E7287B00281CD0E8 +:10FA40001F494E6002281FD0012803D01D491E48BF +:10FA500006F0E9FCA96A2869884204D81A481949BD +:10FA6000401C06F0E0FC2969184841600120296B20 +:10FA700080050143296316494860287D012800D08C +:10FA8000F5E6F3F7C5FAF8BD2969A86A4118EBE76E +:10FA900010480021C160016141604161816170478E +:10FAA0000D480021417281720121C17270470A48DC +:10FAB0000121026B89050A430263054841607047D2 +:10FAC0004081004098F90000FB04000040850040A0 +:10FAD00000F50140001100407C0E00202E4800215E +:10FAE00001704170704770B5064614460D460120FE +:10FAF000F1F758FC28490120284B08709E60DC6013 +:10FB00001D6170BDF8B504460120F1F74BFC224998 +:10FB10000120087021494C60214900264E600321D4 +:10FB2000204D0906A960204F002C0AD0012C03D0DB +:10FB30001EA1412006F077FC3E60032000066860AD +:10FB4000F8BD386001200006F9E710B512480178C9 +:10FB500000290ED00321134A0906916010494A6812 +:10FB60000021002A03D0154A1268427000E041705B +:10FB700001700020F1F716FC10BD0748017800293C +:10FB800007D007484068002802D00C480068C0B27F +:10FB900070474078704700009800002000F5004052 +:10FBA00000F1004000F5014000F200407372635C18 +:10FBB00068616C5F63636D2E6300000000F40040B9 +:10FBC0003A4800210170417010218170704770B572 +:10FBD000064614460D460220F1F7E4FB01203349A6 +:10FBE000334A0870E41E14619660556070BD10B50C +:10FBF0000220F1F7D7FB2D49012008702D48002184 +:10FC000001604160816001202B49C005486010BD42 +:10FC100010B5264C2078002811D001202649C005B7 +:10FC2000886000F034F80021002804D001206070C2 +:10FC30002248006801E061701020A070217000204F +:10FC4000F1F7B0FB10BD10B51848017800290BD0B2 +:10FC500018480068002805D000F019F8002800D0E6 +:10FC6000012010BD022010BD407810BD10B50F4816 +:10FC70000178002909D000F00AF8002803D00F48C5 +:10FC80000068C0B210BD102010BD807810BD0948BA +:10FC90000168002905D04168002902D08068002849 +:10FCA00001D0002070470120704700009A0000201A +:10FCB00000F5004000F1004000F5014000F4004074 +:10FCC000FFB593B0044600201D9E049015981C9D1E +:10FCD0001027082806D0E06901F014F8002809D0A0 +:10FCE0003770CCE028880921384328801F980227E4 +:10FCF000017016E0E169012088710521E269C902FD +:10FD00009180E1698872E169F9480881E169002020 +:10FD10008873288820210843288011211F980427F0 +:10FD200001701F980225801C0390307810900A20E3 +:10FD30003070204618301190F6F76BFC00206FE011 +:10FD40001598102809D1022D07D06846828A049997 +:10FD50000398401A8270110AC1706846C08A1699C9 +:10FD6000884203D9E349097A149106E0884204D114 +:10FD70001099002901D0317021E003990870000A20 +:10FD800048701E980088401BC01B83B2FF20C01B18 +:10FD9000984200D203460398149AC0190CA9009205 +:10FDA000019002912020015D6846C08A0022F6F78A +:10FDB000A5FC3070002806D0C0B2832862D0684607 +:10FDC000C08A208345E00F98002805D0C948006804 +:10FDD00000790A2830D33CE06846008EC119C9B2C8 +:10FDE0000491022D0FD01F99049A4978914203D1B2 +:10FDF0006A46128C824209D0BE480491006801789C +:10FE0000032909D027E008461F994870B9480068BF +:10FE10000178042906D008E000790A281BD20120C5 +:10FE20000F9009E06946C98A8180039904980818EF +:10FE300003900498281885B205AA14991198F6F72A +:10FE4000EBFB002805D11E980088401BB84200DB60 +:10FE500076E7022D0ED01598102807D1049A039941 +:10FE60006846808A891A8870000AC8701E980580C2 +:10FE7000002030709F4800680078032802D00020DE +:10FE800017B0F0BD0220FBE7F8B50446406B002632 +:10FE9000134600282BD0491F8DB2618F2A460832A5 +:10FEA000278F8A18BA4221D89A7840185F781102B1 +:10FEB00039430170090A41701A79DF781102394318 +:10FEC0008170090AC1700571290A41712A46591DBC +:10FED000801D06F02AF9608FAD1D401980B2608741 +:10FEE000626B002110180170417000E00926304655 +:10FEF000F8BD30B50B88048F9C4212D9446BE018D2 +:10FF00004478057824022C430BD0447905792402E7 +:10FF10002C436404640CA41D1B190B80106000208A +:10FF200030BD822030BDF7B588B000256846058217 +:10FF300005275DE00398417802780E021643417967 +:10FF4000027908021043000452D40A980123068063 +:10FF500005A802905B02002200970195304609999E +:10FF6000F6F7CCFB04004AD16846018A0183039866 +:10FF70004179027909021143437802781C02144343 +:10FF8000B4421ED10A041CD44B0401215B0C89032A +:10FF900000950B4301970295C17880780A020243CD +:10FFA00020460999F6F7C6F9040011D1039948795A +:10FFB0000A79000210430122D20310430871000A9B +:10FFC000487103AA06A90898FFF793FF0400CED052 +:10FFD0000399009501970295487809780002084333 +:10FFE00069468B8A00220999F6F7A4F9822C06D17A +:10FFF00003AA04A90898FFF77CFF04009AD068467A +:020000040001F9 +:10000000058209E003984179027909021143490404 +:10001000490C0171090A417103AA04A90898FFF764 +:1000200068FF0028EED0822C02D020460BB0F0BD35 +:100030000020FBE730B50446406B002597B0002850 +:100040000DD00B2268460270228F0281606B0391F3 +:10005000019000216846F3F7E2FA6846057065638F +:100060006587258717B030BDF8B50F460546696B23 +:100070000020069E144600290FD0012B0DD13246D8 +:1000800039462846FFF74FFF002806D1002C04D040 +:1000900032463946284600F044FEF8BD0022028070 +:1000A000C262831D0263C3614263428702872030BC +:1000B0000170704710B50022D24302800420FDF782 +:1000C000FEF910BD10B596B00446FFF7B3FF208EC1 +:1000D000002808D0012069460870E06A01900021DC +:1000E0006846F3F79CFA0020E062206316B010BD6A +:1000F00001280000B40E00200146098800200A07EC +:1001000000D501200A06120F01D002221043CA05B1 +:1001100001D5042210438A0501D510221043490558 +:1001200001D5202108437047FFB5A9B00600329DD4 +:10013000359C2B981F46229016D0007841060FD48C +:100140008106890E1E2909D021884A05520E0BD13D +:100150003A88172A08D3FE4A914205D0C10906D031 +:100160008006800E122802D003202DB0F0BD20465C +:100170002C302690F7492A980872002018AA03907C +:1001800010726A46107404AA0A60339A4A6020AA60 +:10019000908090812298007801908106681C1C90C4 +:1001A000701F1D902B98890EC21C2492224620326B +:1001B0001B92083A401C02920B0006F025FA1FFD24 +:1001C000FD11FD1FFD8EFDFCFDFBFDFAFDF9FDFCA3 +:1001D000FDF8FDFDFDF7FDF6FDFDFDFDFDF5FD0066 +:1001E000032E76D102E018A9087219E303202870C3 +:1001F0001C9917220A7000224A70CFE2052EF0D116 +:100200004178027808021043208320A98880249A2C +:100210005178127809021143618300287ED0884208 +:100220007CD800202072E080401E60840298F6F79F +:10023000F0F905202870A81C0190022000901BAA4C +:100240002A990298F6F7E8F9002868D118A8807C66 +:10025000012803D002206870102002E0012068709D +:1002600002202490002225A91CA8F2F746FD0028B0 +:100270002BD120A8007D2499814226D13A8800996B +:10028000801C511A814220DB10A8C18D0198017099 +:10029000090A417001991CA8891C01910099019AD1 +:1002A000891C009125A9F2F728FD20A8007D01995D +:1002B0001BAA091801910099081880B200902A9988 +:1002C0000298F6F7A9F90028CCD00098022826D089 +:1002D00064E272E018A9087261E2072E6DD34178DA +:1002E0000346027808021043208320A98880249ABC +:1002F0005178127809021143618300280ED0884298 +:100300000CD8012020725879197900020843E08046 +:1003100000202073E06900F0F5FC01E098E0A9E01E +:1003200000280ED1E169012088710521E269C90226 +:100330009180E1698872E16987480881E16900205C +:100340008873F01F60842298C01D60620298F6F7DF +:1003500060F907202870681C00900120019000209F +:1003600010A9C8852FE00198012814D0E069807990 +:10037000012830D000981E38417F007F09020143D8 +:1003800000980170090A41700098801C0090019843 +:10039000801C80B2019010A8C18D00980170090ADC +:1003A00041700098801C09E00AE296E13BE1DFE041 +:1003B00004E29BE077E036E016E2AFE000900198BF +:1003C000801C80B201901BAA2A990298F6F724F9A2 +:1003D000002803D007E010A8818DD1E73988019863 +:1003E000081A0428BFDA0198012843D0E06980790F +:1003F000012804D010A8818D5548814206D110A84B +:10040000818D00980170090A417009E000981E383A +:10041000417F027F0802009910430870000A48706B +:100420000198801CBAE1072E01D0152E76D14178B3 +:10043000027808021043208320A98880249A5178EA +:100440001278090211436183002801D0884201D942 +:1004500001203FE7012020720020E0802073052E5C +:100460000AD01D982299E269C0B2491DF2F71FFC1B +:10047000002801D00A202DE70020C04360841AA87C +:10048000019023A9229802970395009100780023F8 +:100490008206920E20462A99FFF712FC0390208BC9 +:1004A00020A988807BE1032EC0D1402220A98A8127 +:1004B0004178027808021043208320A988802A9975 +:1004C0001EAB1C9A02930192009139880022491EAA +:1004D0008BB21B990978F6F711F918A90872002850 +:1004E00033D10B20287010A8008F3FE0052E9DD13E +:1004F000802220A98A814178027808021043208353 +:10050000249984464A78097812020A43628420A911 +:1005100088801248824202D30720DBE6AFE03F200A +:100520008002024362842A981FAB1C9902930191B6 +:1005300000903888401E83B21B9801786046F6F719 +:10054000DDF818A9087200280CD08328AAD107E08A +:10055000FFFF0000B40E002001280000010200008F +:100560000220B8E00D20287010A8808F401C15E1F3 +:1005700001990C22C9095143C91CB14204D90198FF +:1005800040067CD5002009E1427803781002184328 +:1005900020AA9080844622980078400609D505203C +:1005A0006A46107422980078C00905D000201074A3 +:1005B0001DE106206A46107424981F902A9A009024 +:1005C0000023701A029383B21E9001921B9800229E +:1005D00001786046F5F7AEFE18A908720022694658 +:1005E0000A74832801D102200390229800784006E3 +:1005F0000DD52088C00506D520A9208B8988884282 +:1006000001D100206062002018A90872C6E0FF2115 +:10061000013120A88181808820831E9860841F98E2 +:1006200060621320B8E0052E29D3417802780802D1 +:10063000104320A98880218F002902D0FE4A9142D0 +:1006400006D10A216A4611740121C943218702E0BB +:1006500007216A46117422992A9A491D0192009134 +:1006600001221D990023D203029311438BB22499D6 +:100670004A78097812020A431B99097800E0C9E018 +:10068000F5F758FE18A90872002269460A7401227B +:10069000520220A98A81832808D0002809D0218FFE +:1006A000E54881427ED10020208778E08888208339 +:1006B0004DE7606B002808D031462046229AFFF7AC +:1006C000E3FB18A90872002869D12B463A46304648 +:1006D000229900F056FB039061E02298022E4078A8 +:1006E00001907DD1002801D0012879D108206946E8 +:1006F00008740198087521A800901B9800220178C1 +:100700002046019BFFF7B0FC6946002248758A75B8 +:10071000002802D10198012809D0208F002806D096 +:10072000002008740120800220A988810EE004A81E +:100730003399F2F774FF0390002069460874012092 +:10074000800220A988810398022807D0BB4800684E +:100750008079002805D018A908722BE00198208321 +:100760001DE00398002803D0812018A9087240E0FA +:1007700021A800901B98012201782046019BFFF7D9 +:1007800073FC18A9087220463499FFF753FC18A986 +:10079000087A002803D11920287001203880684683 +:1007A000007C00E03CE0002804D004A83399F2F774 +:1007B00036FF0390039800282ED01AE0062012E599 +:1007C0002078000713D5012E11D109216846017444 +:1007D000A188818204203499FCF771FE082100E091 +:1007E00005E020A88181CDE60198400612D50320BE +:1007F000039020A9208889890843208020A988891E +:100800004005400E04D026992B98086026988680D3 +:100810000398AAE40420E6E418A8007A00280ED081 +:100820000120287022980078687020A88088A8701D +:10083000000AE87018A8007A28710520388020A9DD +:100840002088898988432080E2E7FFB50746A1B068 +:1008500000201C903A7801209040794A7C68104032 +:1008600010AA1087744B22885B1C9A4203D0002880 +:1008700004D0100702D5012025B0F0BD249E002031 +:10088000307023980025028810A8028518A80575E5 +:100890006A4B68461972057404A8186020462C300B +:1008A0001B902A985860249E94463878721C052123 +:1008B000039201282DD0022808D003287DD130785A +:1008C000800980011D303070B889A08038780228F6 +:1008D00004D13078800980011B303070F01C1FAAD1 +:1008E00001900292009110A8008D0022C01E83B2D8 +:1008F0002020015DB889F5F701FF0028DED10398BB +:10090000B9890170090A417010A9888FC01C088537 +:1009100028E1787B18AA10753A7B012A02D0022AB6 +:10092000CCD1FCE022887F231B011A4010AB1A8730 +:10093000802A4AD006DC102A10D0202A0ED0402A65 +:100940000AD124E0FF3A013A65D0FF3A013A79D062 +:10095000FF3AFF3A022A76D00525A2E02078C006A9 +:1009600001D5082000E010201C9004206A46107475 +:10097000002090821AA81DAA1EAB03960192029035 +:1009800000933B8A20461C9AFFF79AF984E0228B59 +:100990003B8A9646934268D10A221C92002839D19C +:1009A000039801906046401E1FAA83B20292202045 +:1009B0000091015D0022704600E0BAE0F5F79EFE6E +:1009C000014618A801750B201AE0228B3B8A964637 +:1009D00093424AD10C221C92002862D103980190C4 +:1009E00060461FAA401E0292009183B22020015D42 +:1009F000628C7046F5F782FE014618A801750D203D +:100A0000307010A8818F491C01850421684601744B +:100A1000218B818245E0238B3A8A9C469A4224D1DD +:100A200012221C9200283CD1606A002813D00022B8 +:100A30006B4607C3638C07E0FEFF0000B40E002086 +:100A400009F800000DE04BE02020015D6046F5F75D +:100A500071FC18A9087513203070012010A90885B1 +:100A60001FE0398A228B914201D00425B6E016217D +:100A70001C91002815D11B98818802682046FFF739 +:100A800003FA18A9087500280BD11B983346016892 +:100A900080881AAA00F075F9054602281BD0042D9B +:100AA00019D01B988088002811D06846007C002847 +:100AB00004D004A82A99F2F7B2FD05460120694640 +:100AC00008741B981B990068059000208880002DF1 +:100AD00048D0052D2ED06846007C032878D07DE0D4 +:100AE00018211C91002806D0388A20832046B96836 +:100AF000FFF7A0FAD5E72046183000902020015DCE +:100B0000237E01222046FFF7AFFA18A908750028B6 +:100B1000ECD119203070012010A90885E6E7208863 +:100B200001214902084010A90887FF38FF38022830 +:100B300006D0052510A92088098F884320804DE024 +:100B4000208F9849884290D116201C90386900283F +:100B500005D06063B88A20870020608702E000200B +:100B6000C043208710A8008F7F21090102468A43D5 +:100B70000DD0782300220420B968FCF7FBFB3878FD +:100B8000A07010A92088098F0843208002E02188E6 +:100B9000814321806846007C002805D08248416856 +:100BA00004A8F2F73CFD054618A8007D002815D0E2 +:100BB0001C98707001203070208BB070000AF070AB +:100BC00018A8007D3071052110A8018506E0FFE717 +:100BD0007548416804A8F2F722FD05467248017A7B +:100BE00020884005400E22D11B98808800281ED006 +:100BF000239A0026138810AA1385249A2A9B6F46ED +:100C00004CC71B9A039412681AABFFF78DFA05467E +:100C100002280CD00120694608741B982A990068A4 +:100C2000059004A8F2F7FBFC05461B98868010A8E7 +:100C3000018D2398018028461EE600B597B0042850 +:100C400007D102206A461070019100216846F2F730 +:100C5000E6FC17B000BD10B5534C037800222168A4 +:100C6000012B02D0022B42D126E00B78002B01D0C1 +:100C7000042B03D10A712268032111702168838833 +:100C80000A79D200921D8B5221680A79D20008326B +:100C90008918C2880A80216803890A79D2000A3239 +:100CA0008B52428920680179C9000C314252216877 +:100CB0000879401C08711EE00A7482888A802168C5 +:100CC000C288CA80226801891181226841895181C4 +:100CD000C1682068C1606168F2F7A1FC0146022882 +:100CE00007D02068007C002802D1002903D0812091 +:100CF00010BD832010BD002010BD406B002800D027 +:100D0000012070478178012909D100880521C90295 +:100D1000884202D0491C884201D10020704705203A +:100D20007047F7B586B00024684615460F468481A3 +:100D300005261AE0049841780278090211432980B7 +:100D4000811D019602940091417902790B021343AF +:100D5000C178827809020A43417800780902084381 +:100D60003946F5F7E7FA002806D104AA03A9069840 +:100D7000FFF7BFF80028DDD0822800D1002009B09D +:100D8000F0BD10B51488844201D2052010BD17248F +:100D90001C701080421E581C491C05F0C6F900202A +:100DA00010BD0000FEFF0000B40E002010B540484A +:100DB00004F04DF9002801D00C2010BDFF211131A5 +:100DC0003C4805F011FA3B4901200870002048809A +:100DD000E03188718874887520310871344804F0D6 +:100DE0004EF9002010BD10B5314804F028F9002854 +:100DF00003D031A1312005F016FBFFF7D7FF002803 +:100E000003D02DA1382005F00EFB10BD10B504460F +:100E1000274804F01CF9002801D00C2010BD2549FA +:100E20000878002807D0002008702148216004F0CD +:100E300026F9002010BD1E4804F021F91F2010BD26 +:100E400070B505460C461A4804F001F9002801D097 +:100E50000C2070BD174A5088A84202D11078002893 +:100E600004D0134804F00BF9122070BD1048226022 +:100E700004F005F9002070BD10B504460C4804F0DC +:100E8000E6F8002801D00C2010BD0A48017800299E +:100E900007D00020C0432080054804F0F0F812205D +:100EA00010BD40882080024804F0E9F8002010BD01 +:100EB0009D000020C00E00207372635C6C6C5F6448 +:100EC000622E630010B5282105F08CF910BD70B5B5 +:100ED000054600780A0700090001120F1043287028 +:100EE0000B0005F091FB07050705070509050B0039 +:100EF000062408E00C2406E0222404E00024F2A1E9 +:100F0000572005F090FA68788009800120436870C6 +:100F100070BD00780007000F704710B50622C01C96 +:100F200005F003F910BD10B50622093005F0FDF8F3 +:100F300010BD0278BF23C9071A40490E0A43027048 +:100F4000704702785206520EC9010A430270704778 +:100F500070B515460E4604461F2A03D9DAA1A8200B +:100F600005F061FA20462A463146093005F0DDF8E1 +:100F70006078AD1D80098001A906890E0843607064 +:100F800070BD70B515460E4604461F2A03D9CEA182 +:100F9000CC2005F048FA20462A463146093005F0B3 +:100FA000C4F86078AD1D80098001A906890E084348 +:100FB000607070BD70B501780907090F03292ED044 +:100FC000052931D1411C827E0C46437E1102194312 +:100FD000037FC27D1D02037EC67E1B021343827DFA +:100FE000407835438006800E22281DD106291BD368 +:100FF0001920C001814217D8FF26F436B54213D814 +:10100000002A11D0082A0FD88A420DD28B420BD861 +:10101000617F227F09021143814207D904E04078B1 +:101020008006800E0C2801D0002070BD012070BD0C +:1010300000210A464254491C2229FBDB704710B5A7 +:1010400002788B07920892009B0F1A430270427835 +:10105000520952014270012908D0022906D0032901 +:1010600005D0FF2098A1EE3005F0DDF910BD01217B +:101070000A43427010BD10B502788B0792089200A7 +:101080009B0F1A43027042785209520142700129A3 +:1010900007D0022905D0032904D08BA18E4805F082 +:1010A000C2F910BD01210A43427010BD00788007CB +:1010B000800F70470278EF23C9071A40C90E0A4310 +:1010C0000270704770B50546C1700B0005F09CFAC0 +:1010D0000E080A0C0E1012120C14141212160C1810 +:1010E0000C2413E0082411E002240FE017240DE083 +:1010F0000D240BE0012409E0092407E0062405E0A3 +:101100007548002470A1A03005F08DF96878400979 +:1011100040012043687070BDC0787047017AC27981 +:10112000080210437047817A427A080210437047E0 +:10113000017BC27A08021043704781794279080224 +:101140001043704700797047817B427B080210434F +:10115000704770B5017AC37909021943431C857A37 +:101160001C46467A2B023343657926792C02344398 +:10117000C21C5A4E00798D1FB54214D8FF25F43594 +:10118000AB4210D800280ED008280CD888420AD2CA +:101190008C4208D8507A117A00020843B11D884267 +:1011A00001D8012070BD002070BD0B4610B5011D97 +:1011B0000522184604F0B9FF10BD817A427A080270 +:1011C0001043704701717047007970470B4610B5A6 +:1011D000011D0822184604F0A8FF10BD027B0A700A +:1011E000407B487070470B46014610B508220E310F +:1011F000184604F09AFF10BD0B46014610B50422B4 +:101200001631184604F091FF10BD10B50822001DDC +:1012100004F08BFF10BD10B504220C3004F085FFE4 +:1012200010BD017170474171090A81717047C17128 +:10123000090A017270470079704781794279080282 +:1012400010437047017AC279080210437047017158 +:101250007047017170470B4610B5011D08221846F2 +:1012600004F063FF10BD10B50822001D04F05DFFFF +:1012700010BD70B515460E4604461B2A03D912A1AF +:10128000174805F0D0F82A463146E01C04F04DFF1F +:101290006078E90640094001C90E0843607070BDDE +:1012A00070B5054640780E46C406E40E1B2C04D9E2 +:1012B0000B4805A10C3005F0B6F82246E91C304673 +:1012C00004F033FF204670BD7372635C756C5F7011 +:1012D00064752E6300000000070200007A0C000015 +:1012E000F7030000C1074008C207C90FD20F511809 +:1012F0004008C207D20F51184008C207D20F511838 +:101300004008C207D20F51184208D007C00F40183A +:101310005208D107C90F0918500840187047002219 +:1013200002808271C271C2720273427382738270D0 +:10133000C270027142714276828303464284203336 +:101340009A7102859A72C2750276C2730274DA7259 +:101350001A739A7319750284FF21603081709A752F +:10136000704770B504460020A083208C1E46484379 +:101370001546114604F061FF2084F000294604F070 +:101380004EFF401C80B20146192269439202E0835D +:10139000914201DD401EE0837D202946000204F0D9 +:1013A0003EFF401CA08470BD70B50546087B0E460C +:1013B000C006C00E08730020A87504463019007AD4 +:1013C000FFF790FF29194874A97D641C0818E4B23E +:1013D000A875052CF2D3C0B2252803D979A18A209B +:1013E00005F021F870BDF8B5044630302646274692 +:1013F0002546C036A03780350090032909D0002942 +:101400001AD0012924D0022902D1A11CFFF7CCFF58 +:10141000F8BD1146FFF783FF002028836883A88367 +:10142000E883288468847871E88538732621085514 +:10143000A08430703071F8BD0020E885B871A188B3 +:1014400023890A460098FFF78CFFA11C0098DDE76E +:101450000020E885B38A328AA1880098FFF781FFCF +:10146000F8BD70B5867D0D460446002E01D0252EB0 +:1014700001D9122070BD002A18D0287EE17D50438A +:101480000818252104F0CBFE0846E1754207520FEB +:10149000C908504B69189A5C097A8A4368D031466A +:1014A00004F0BDFE491CCAB2002007E0002070BD58 +:1014B000002803D02118097C511ACAB22118497C8E +:1014C00091423AD32918097AC943CB07DB17D21ABC +:1014D000521E1206120E35D08B07DB17D21A521E7F +:1014E0001206120E30D04B07DB17D21A521E12060C +:1014F000120E2CD00B07DB17D21A521E1206120E38 +:1015000028D0CB06DB17D21A521E1206120E24D098 +:101510008B06DB17D21A521E1206120E20D04B0673 +:10152000DB17D21A521E1206120E1CD00906C9175A +:10153000511A491E0A06120E18D0401C0528B7DBA6 +:101540001F2070BDC00013E0C000401C10E0C000B0 +:10155000801C0DE0C000C01C0AE0C000001D07E0B8 +:10156000C000401D04E0C000801D01E0C000C01D9F +:1015700020769BE738B505460C466846FEF738F8F6 +:1015800000281ED0694600200856207209216156A5 +:101590000022411A00D5494220356B798B420FDC7D +:1015A000FF2B0DD0A17A491CC9B2A172AB79994227 +:1015B00002D8617A7F2903D160720020A0720122D3 +:1015C000104638BD7372635C6C6C5F7574696C2E09 +:1015D000630000007667010010B5040004D0FF200E +:1015E000FAA1AB3004F01FFFFB4821464143FB4802 +:1015F000FF230918FF330022581C5A544254C81DB7 +:10160000FF30FA3002704270F448001FC378A342E2 +:1016100002D18270FF23C370EF48EF4BC01E081841 +:101620009B1EC91802700A7010BD70B5EB480026E9 +:10163000001F8670FF24C47035462846FFF7CCFF94 +:101640006D1C2D062D0EF8D00020E4490B229201CE +:10165000E14B43435B189B181E74401C0006000EB0 +:10166000F6D0DF48FFF7E4FC0021DD48FFF722FD5C +:101670000121DB48FFF7E3FCDA4804704470847012 +:10168000C4700471447170BDCFE71B20704730B542 +:101690000021D24A0B239B01CF4C4C43A418E418E1 +:1016A000247C002C05D0491C0906090EF4D000202A +:1016B00030BDC94C01254C43A218D21815740170D5 +:1016C000284630BD10B5044600F0D0F900280CD0F3 +:1016D0002046FFF781FFC0490B224C43BF49002041 +:1016E0006118920189180874012010BD10B50446D4 +:1016F00000F0BCF9002802D0BA484471012010BDA6 +:10170000034610B5B748B44940794843B349421835 +:101710001046FF30E130C17F807F04F0D5FF10BD5F +:1017200010B5B048AC4940790F224843AB49401846 +:10173000A949D239095CFF30FF3004F09FFF10BD8A +:1017400010B5044600F092F9002802D0A5480471B3 +:10175000012010BD034610B5A2489F4900794843B7 +:101760009E4942181046FF30E130C17F807F04F06F +:1017700098FF10BD70B59B4C97492079974D484311 +:101780004019C11DFF31F931FF30E130807F0F2258 +:1017900004F064FF002813D020798F494843401992 +:1017A000FF30FF3002300178491C01700178407829 +:1017B000814204D1884885A1773804F034FE0120A5 +:1017C00070BD884884490079484384494018FF30F7 +:1017D000E130C17F807F814201D10120704700202C +:1017E000704770B57F487C49007948437B49401871 +:1017F000FF30E130867FC57F0F242946304604F054 +:1018000026FF002801D0204670BD70066906400EF4 +:10181000490E884201D3401A01E0081A201AC0B2CA +:1018200070BD0F20704770B50C46054600F01EF9DC +:1018300000280ED0002020706748454367482818CC +:10184000FF30FF300230017842788A1A22704170EE +:10185000012070BD70B50C46054600F007F9002860 +:101860000BD05D4845435D482818FF30FF300230FB +:1018700001784078081A2070012070BD5849016035 +:10188000704710B5044600F0F1F8002802D0554822 +:101890000470012010BD5149091FCA78FF2A02D0E7 +:1018A0000021016007E08A784C492439012A02D0DE +:1018B000016001207047002070474848801E017871 +:1018C000012908D001210170464801784348001FD2 +:1018D000C170012070470020704710B5044600F029 +:1018E000C5F8002802D03F484470012010BD3B4994 +:1018F0003C4B091FCA785B789A4206D18A78203916 +:10190000002A02D001600120704700207047334850 +:10191000344A001FC1785278914209D1FF21C17029 +:10192000801C0178002903D000210170012070473C +:101930000020704729482B4A001FC17852789142F5 +:1019400004D18078002801D0002070470120704722 +:1019500010B5044600F08AF8002802D02148C4706F +:10196000012010BD034610B51E481B49C0784843EE +:101970001A494018C21DFF320B21FC328901401860 +:10198000C17B807B04F0A0FE10BD10B51548124944 +:10199000C0784843114940180B2189014118C97B7F +:1019A0000D4AD21E8018062204F068FE10BD0D48B4 +:1019B0000949C0784843094941180B20800108189B +:1019C000C17B807B81420FD1012070477372635CC1 +:1019D000646D5F712E630000D1020000F40F0020DF +:1019E000C51200209E0000200020EEE710B504463E +:1019F00000F03CF8002802D021488470012010BD7E +:101A0000034610B51E481F49807848431E494018B8 +:101A1000C21DFF320B21FC3289014018C17B807B43 +:101A200004F03FFE10BD10B51548164980780B2212 +:101A300048431549920140181249891E41188018DF +:101A4000807B062204F00AFE10BD0D480D49807807 +:101A500048430D4941180B2080010818C17B807B49 +:101A6000814201D10120B0E70020AEE7002805D176 +:101A70000648007C002801D00120A6E70020A4E74A +:101A80009E000020D1020000F40F0020B4120020BC +:101A9000F8B5FF4E0446B079002500280AD0002989 +:101AA0002DD1657010202070F079A070307AE07030 +:101AB000B57124E0F64F203F387A012804D0707ABF +:101AC000012810D00020F8BD002918D1657013201E +:101AD000EF4920701C221639A01C04F026FB0120BF +:101AE000A0713D720BE0002909D165701420E8490E +:101AF000207008220A31A01C04F017FB7572012027 +:101B0000F8BDF8B5E3480178002902D00C2630462C +:101B1000F8BD0026DE4D3446403D2E756E75EE75DF +:101B20002E76AE75294620396E730F464E734037B8 +:101B30007E717F218170687E002804D0FDF73DFD15 +:101B4000FEF766F86C763C72D14884711430FFF76A +:101B5000B9F9CF483C30FFF7B5F9D8E710B5CD4B10 +:101B600000221A70CA4B203B1A711A46603A11665D +:101B7000D065FFF7C6FF002804D0FF20C6A187303C +:101B800004F051FC10BDC2484038007D7047C04988 +:101B900010B54039C87B897B42078307D20FDB0F22 +:101BA000D218C007C00F101840000B0004F02CFD25 +:101BB000050B060B04080F00BB4906E0BB4810BD2F +:101BC000B949083101E0B8490839085A10BDFF2069 +:101BD000B1A1A73004F027FC002010BDAC48B449E7 +:101BE0004038008A48437047F8B5A94C0646407B08 +:101BF000403CE07337791346A773012F26D0308815 +:101C00002082A348B27B203882710546603D29704E +:101C100006221946681C04F088FAB0796873062217 +:101C2000F11DE81D04F081FA607B0126002800D038 +:101C3000667597486038407B002800D0A6753B0049 +:101C400004F0E2FC0506082549084B000020D7E710 +:101C500000211DE08E4801211430FFF738F98C482F +:101C6000E91D1430FFF75FF9687B002807D00128D1 +:101C700007D0FF2088A1EE3004F0D5FB0CE0002156 +:101C800000E0012182481430FFF75BF904E00621EF +:101C90007F481430FFF71BF90020E07520767C4860 +:101CA000691C1430FFF739F9794829781430FFF7A7 +:101CB00040F9774804213C30FFF709F97448691C62 +:101CC0003C30FFF72AF9724829783C30FFF731F9A8 +:101CD00026750020F8BD0221DAE7FF206EA1F8305A +:101CE000CAE770B56A4C0125403C0346257620467C +:101CF0002030007A002801D03A2070BD64480022CC +:101D0000803806789E4206D1E2750622401C04F017 +:101D10000CFAE57500E02276002070BD70B504462F +:101D20005B4D0020403DA87528462246323804F01D +:101D3000FCF92846203844730120A87570BD544929 +:101D400020390871704710B5514C0022403C627533 +:101D5000607302462046123804F0E7F901206075EE +:101D600010BD4B49203948717047F8B500F0A4FB0D +:101D7000474C0025403C607E002804D0FDF71DFC48 +:101D8000FDF746FF6576434F3D70FDF793FBA07B63 +:101D9000012804D00021084601F0A6FAF8BD002170 +:101DA000022001F0A1FA3A4C203C207A002809D008 +:101DB000374881790029F1D11321C17105720121C0 +:101DC0008171F8BD78780028FBD0314E0622803E24 +:101DD000707BE0733078A0753046F11D703004F0F0 +:101DE000A4F930460622711C773004F09EF93C209D +:101DF000A072012020727D70F8BD10B5244C403CCB +:101E0000E17BA07CCA0701D0C2070BD08A070FD59F +:101E100082070DD42620FDF777FAA07C0221084323 +:101E2000A07410BD2520FDF76FFAA07C0121F6E714 +:101E30004907F6D54007F4D42720FDF765FAA07CC2 +:101E40000421ECE770B5134E3078002872D1104CA5 +:101E5000403C207D00286DD0FDF71FFB0025A574B8 +:101E6000E57475702846FDF715FB0020FDF78CF929 +:101E70000D480D38FDF73FFA0B481038FDF7F7FA1B +:101E8000FDF76CFBFFF7B9FFFDF7FFFA012111E049 +:101E900068130020A40000207372635C6C6C5F61A7 +:101EA00064762E63000000008E6701009A8913009B +:101EB000710200000020FDF743FA0F210520FDF715 +:101EC000C1F92646403E3178701CFDF7ADF9A07B84 +:101ED00001280CD004280AD0607D002807D02146B4 +:101EE00012390846627B6630FFF732F86575A07DCF +:101EF000002807D0FE480146427B12399C30FFF78C +:101F000040F8A575306E0178002903D00178001DD6 +:101F1000FDF7C8F9F06D0178002906D0F44A401C9D +:101F2000C732FDF754FE01206076FDF7C3FA0020AA +:101F300070BDFFE70C20FBE7EE494860704770B5C5 +:101F4000050001D0FFF759FFE94C2034E07C002860 +:101F50000AD0A07B012804D19920E749C00004F0F1 +:101F600062FAFFF702FFE3E7002D0DD00221002007 +:101F7000FDF7E6F9DE4840300079032801D001285A +:101F800002D10220FDF73BFCE07D002600280DD0A9 +:101F9000D74D203D2846691C9430FEF7BEFF2846E9 +:101FA000691CBC30FEF7B9FFE6752676D048743060 +:101FB000FDF786FAA07B030004F026FB0504040469 +:101FC0000D04090001210846FDF79FFB03E0CA4903 +:101FD000CA4804F028FAE17BA07C81430120002953 +:101FE00003D1A17B012903D0E074C24908709FE7A7 +:101FF000A674FAE710B5FDF750FABE48007800283D +:1020000018D1BB482030007D002813D00020FFF7F6 +:1020100096FFB74840300079002809D001280FD03A +:10202000022805D003280BD0B349B54804F0FBF9CA +:10203000002010BD00F040FAFDF73CFA0C2010BD66 +:10204000F0F7E6FFF4E7AB49012048707047F8B5B8 +:10205000002400F0E0FF002824D0FF202D30FDF701 +:102060006CF9A44D2878A24F403701281DD00228D2 +:1020700001D0032834D0A2489F496B3004F0D3F933 +:10208000287800280DD0387900280AD0012808D0F7 +:10209000022838D0032836D099489749803004F078 +:1020A000C2F9F8BDFFF761FEF8BD914E2036B07B56 +:1020B000032815D0707E002803D0FDF798FDFDF7AA +:1020C00074FA8B48C430FDF7FBF9B07B012812D0BD +:1020D000042810D0B879012806D0032804D004E0E1 +:1020E0000120FFF72CFFCBE7102421460E200143EF +:1020F0000020FDF70AFB7879012801D1FDF76FFA7E +:1021000002202870BCE728780228CDD10120FDF7F5 +:1021100076FBF8BD70B5764840304079012801D192 +:1021200000F0D4F9724C2034607E002803D0FDF713 +:1021300044FAFDF76DFD00F06EFF00280CD06D4DE8 +:102140002878022804D06E486B49A33004F06BF95C +:10215000A07B012803D006E0FFF707FEE8E6992000 +:102160008000FDF7EAF80120FFF7E9FE2878002853 +:10217000F4D028780128F1D039205F49000104F01B +:1021800052F9D5E6F0B5074689B000200690FDF774 +:10219000AEF800900020019056480078022804D044 +:1021A00057485549F03004F03EF9514D40356879B3 +:1021B000012801D100F08AF94D48C430FEF7A9FE8C +:1021C0004B4E04462036002F70D03046A430FEF728 +:1021D000F1FE0028F8D0FDF731F80028F4D0707E29 +:1021E00000280AD005277F1EFFB2FDF72CFD02282C +:1021F0000FD0012800D0002001903D492046C43175 +:102200000C46643C030004F0FFF906A4A4A40CA44B +:1022100056A4002FE7D177203AA1C00004F003F9BB +:10222000E9E7B07B012841D004283FD0019A00980B +:10223000104304D1A879002801D0022836D168794A +:1022400001281DD1607A00281AD101206072087817 +:1022500006224006C00FA0722548C91C6B3003F04F +:1022600064FF244C224FA07871377F2804D1A92025 +:1022700024A1C00004F0D7F8A07838707F20A070A7 +:102280001B489C30FDF71CF91A480321017028797E +:10229000002860D001280AD002285CD0032806D08C +:1022A000164818A1E03804F0BEF854E051E00120CF +:1022B000FDF7A5FA4FE00E480F462038C978C079DF +:1022C000814230D10A4839792038027A91422AD1A4 +:1022D0007979427A914226D1B979827A914222D192 +:1022E000F979C27A91421ED1397A027B914211E08A +:1022F00008130020A4000020981E0100F60400002E +:10230000DE0200007372635C6C6C5F6164762E6346 +:102310000000000007D13978407B4906C90F81428F +:1023200001D1012100E00021B07B012801D0042867 +:1023300001D100290AD100280BD101990098084346 +:1023400004D1A879002801D0012802D1307E0028CC +:102350001FD001200690707E002803D0FDF72DF9D4 +:10236000FDF756FC0698002802D00120FFF7E7FD94 +:102370005D48017800290AD00178012907D000784A +:10238000032804D095205949C00004F04CF809B046 +:10239000F0BD55480422406855490F3003F0C5FE92 +:1023A000387806224006C10F4F4840680177F91C73 +:1023B0001D3003F0BAFE4C484D4940680322091D08 +:1023C000133003F0B2FE4848494A4068B97D817530 +:1023D0000F3A117ED37D09021943018311468B7E8A +:1023E0004F7E1B023B438380137FD77E1A023A4302 +:1023F000C2808A7F4B7F1102194301813C4905222B +:1024000010310A3003F091FE3948374A1130017912 +:102410005768C906C90EB97600794009F876287A56 +:10242000002809D0A07900283AD11320E0710020BB +:1024300020720120A07133E00020A8727888B08556 +:10244000387FE8732A48394606221D31833803F065 +:102450006CFE27490622F3390878A87508467730BC +:10246000491C03F062FEB888F087F888208038891C +:102470006080F87E20710198002860790BD00121DE +:1024800008436071FDF7F2FB61794000C907C90F8D +:102490000143617102E04008400060710120287230 +:1024A000114C0020207000F007F8FDF703F8012020 +:1024B000616800F019FF4EE710B5FDF76AF8FDF707 +:1024C0005DF8FCF7B5FFFCF7DAFF10BD064810B564 +:1024D000801CFDF78DF8002802D103497F20887009 +:1024E000FDF774F810BD0000A400002004230100D3 +:1024F000DB1300208107C90E002808DA0007000F4F +:1025000008388008F74A80008018C06904E0800815 +:10251000F54A800080180068C8400006800F7047A8 +:1025200010B500F03BFF10BD70B5F04C0546626879 +:10253000002908D0002A04D0FF20EDA10C3003F0C0 +:1025400072FF656070BD002A04D1FF20E8A112303F +:1025500003F069FF0020606070BDE948C07E7047ED +:10256000E7482830C07E704738B5E04C20680168E5 +:102570004978012925D001216846FAF7C9FC684647 +:102580000078E049000203F04AFE2068426AC06811 +:1025900012685118FBF7ADFC2168C860D84A206862 +:1025A00028320321904218D0028B002A15D0012234 +:1025B0004272017200210171021D017F00F0FBFED9 +:1025C00038BD7D21C068C900FBF793FC2168C86055 +:1025D000FFF7DDFA21680861E0E7028B521C0283F5 +:1025E0004172E6E7FFB5C64E85B0706A346805688B +:1025F00060680190306A0390298E0798401A80B273 +:1026000002900898002804D02746383720464830E2 +:1026100002E0371D2846A830009003203871059845 +:10262000002820D001287DD002285ED003287AD04F +:10263000AFA1B54803F0F7FE0898002807D0387915 +:10264000032804D0B048AAA1093003F0ECFEA16A27 +:102650007069FBF74EFCB860616A206A88427DD9D8 +:10266000009801601FE1306A002804D1A648A0A1AB +:102670007A3803F0D8FEA449288B373948434018EC +:10268000069900F0A6FEA0619F49A8883739484303 +:10269000069900F09EFEE061316A9B48891CA162A8 +:1026A0002A8B37384243A069974B121AE63BD2185F +:1026B0005118A162944BAA7D373B5A4340008018C1 +:1026C000FF30193020626062306A081AED21FF384D +:1026D000C90015388842AFD28C49884204D28A4852 +:1026E00083A15D3803F09FFEB6E0874A288B373A16 +:1026F000E16850430818069900F06BFEA06182491A +:10270000A88837394843069900F063FEE061306AD3 +:10271000002804D17C4876A1553803F084FEAE2011 +:10272000405B01E02CE05AE00028288B784AE16801 +:102730001DD050430818A169401AA0622169A06801 +:10274000734A4843A1694018A97D4000514340188D +:10275000FF3017302062A888504300E0A1E0E16913 +:10276000411A6F20C000081A6062A06A34E050432A +:102770000818A169401A3168D63849684018DCE762 +:10278000284680300190C08D002802D0306A002891 +:1027900004D15F4856A1401F03F045FEA8885C495C +:1027A000E3694843C01AA06201999C46CA8D216919 +:1027B000A368521A4B43A169591863465343C91879 +:1027C000AA7D534B49005A438918FF3117312162C2 +:1027D0006F21C900411A6162316A401A35E00898D8 +:1027E000002803D03420005D002878D1A88848490B +:1027F0004843E169401A02994843A0622846803064 +:102800000490C08D0028019829D0002804D03E48AB +:1028100037A1163803F007FE04983D4AC18D02988F +:102820000818E16948434000FF3017302062A8884B +:102830005043411A6F20C000081A606200F0AEFDDC +:1028400000281CD0A16A0398081AED21FF38C9009E +:102850005538884200D3EFE601203871ECE60028B5 +:1028600002D00398002804D1294821A11A3003F08E +:10287000DAFD0198A16AD6380818A062CCE7FBF708 +:102880009EF8726901461046FCF7BFFAA16A081A61 +:10289000ED21FF38C90050388842DCD2012009B050 +:1028A000F0BD0099086000981A4900688035081842 +:1028B000F860298B0798081A00B2002804DD0598F3 +:1028C000022801D0032000E00120787108983870B8 +:1028D0000898002820D03420005D00281CD0022059 +:1028E000DDE7000000ED00E000E400E0B4000020BF +:1028F0007372635C6C6C5F6C6D2E73302E630000C2 +:10290000F413002010270000190500002902000020 +:10291000E20400004B1700000898012148402034D1 +:102920006075317F3A46304600F045FD0020B6E73D +:1029300010B5FE4900280A68516A096807D0126874 +:102940008988FB4BD2695943891A03F068FC10BD92 +:10295000F8B5F64F38680468416A26460D68203697 +:10296000717D00290AD0618E2A8E914206D1407A6B +:10297000012803D1EF49F04803F055FDFBF71FF89C +:10298000014638684069FCF740FAFFF7D1FF2A8E0C +:10299000618E1318994202DB491C618602E0401CDB +:1029A00010186086B07D002806D19C21608E495B9E +:1029B000884201D1401C6086DC480168088B0328EE +:1029C00002D2401C088302E0618E982041532846C1 +:1029D00040300646C1898089081A298E401E401859 +:1029E00087B218E0D148EB7E00685B00406A00794E +:1029F0004100D248415AC05A401881B2207D00237C +:102A0000FFF7F0FD00280FD001280ED0CA48C949B1 +:102A10003A3003F008FD628EB81A00B20028E1DAFD +:102A20000820B07200F010FEF8BD608E401C608679 +:102A3000F1E770B5BD4D002168680162C27E1300E8 +:102A400003F0E2FD045656034A56426A14680268CF +:102A500011700268516000682030407D002808D164 +:102A6000FAF7ADFF69680968096CFCF7CEF9002830 +:102A700018DC6868228E0168498E914206D1214691 +:102A800080318B8B9A1ACA83238605E0891A9E228D +:102A900011530168498E21860268C1681164C168BA +:102AA000416111E068680168098E228E8B1A224606 +:102AB0008032D3830168098E218601680B6CC36064 +:102AC0000B6C4361886C9062204601F0D8FC0028B2 +:102AD0000DD098499A4808E0C1684161FFF7B2F902 +:102AE000002804D096489349801D03F09CFC70BDDB +:102AF000934890490D30F8E710B58C4A0B001268E6 +:102B000003F082FD0906090F1F0C2E2E082B2E0044 +:102B1000FFF78FFF10BD00F068FC10BDFCF772FEE0 +:102B200010BDD07E022806D0D07E032806D0FF201C +:102B30008049A3300EE0FFF70BFF10BDFFF714FD37 +:102B400010BDD07E0228F6D0D07E0328F6D0FF201C +:102B50007849AE3003F067FCF0E7FAF715FF10BDD7 +:102B6000FF207449BC3003F05EFC10BDF3B581B0AA +:102B70000E4601276D4D734C0B0003F045FD090611 +:102B80002F39392F40403939400001216D48FFF776 +:102B9000CBFC31460198FFF7AFFFE07E022826D13B +:102BA00068680568406A0668FAF7E7FEB188604A17 +:102BB0005143EA69891AD639E962B72802D26248D4 +:102BC000081803E0081A6049B7314018E8625F4806 +:102BD000E96A814200D80846E86205E00198FFF7FB +:102BE0008BFFE07E022802D1206820300775FEBDF1 +:102BF0002C600198FFF780FF00202860FEBDFF20B9 +:102C00004C495C3003F00FFCFEBD70B50C46064627 +:102C10000B0003F0F9FC09060D10100D1A1A101024 +:102C20001A00484801212830FFF77EFC2146304633 +:102C3000FFF762FF70BD43483C4D283028603046A6 +:102C4000FFF75AFF0020286070BDFF20394982300D +:102C500003F0E9FB70BDF0B5344C0020216885B06D +:102C600003258D76CA7E0746032A03D0C97E002934 +:102C700029D029E0087F002803D12E49344803F0E9 +:102C8000D2FB2068067F684605714571FAF797FE0A +:102C90000290FF20F53003900121684601706946DB +:102CA0003046FBF70CFB00E020BF2068007FFCF7FC +:102CB00038F90028F8D02068007FFAF765FE206810 +:102CC000077700F072FB012021688F7605B0F0BD18 +:102CD00016490A68907600E020BF0A68D07E002876 +:102CE00003D0D07E937E9842F6D0D07E002803D0C9 +:102CF00000200021917670470120FAE770B5114954 +:102D00000024CA7E094D032A03D02831CA7E032A33 +:102D10002ED12960002827D0012821D00C48054950 +:102D2000973003F080FB0020296813E0B4000020F6 +:102D3000E2040000F0280100F70500009E67010092 +:102D4000A1030000F4130020C4F8FFFF38120000B4 +:102D500072020000086048622860002C08D070BD34 +:102D60000320FFF7B5FF01E0FFF775FF0446DAE740 +:102D70000C2070BDF8B5F94F04461F25E67E3300E0 +:102D800003F042FC042920031B20F548844204D0B0 +:102D9000FF20F449FC3003F046FB02203C60FFF7C3 +:102DA00097FF002805D03968002008604862386025 +:102DB00011E00C25002038600AE00120FFF79EFF9B +:102DC000054603E0E749E84803F02DFB002D02D05B +:102DD000E07EB042D2D1E07E002804D0E248E14952 +:102DE000801D03F020FBF8BD10B5DD48FFF7C2FFE2 +:102DF000DB482830FFF7BEFFD94900205031087565 +:102E0000D649C91F4870D64948610A4628325061E0 +:102E100088769076D1494860086010BD70B5044648 +:102E20000120FFF767FBC5B20B20FFF763FBC0B2C1 +:102E3000854204D0FF20CB49C63003F0F4FA0120CC +:102E4000FFF758FBC5B21820FFF754FBC0B285420C +:102E500004D0FF20C349C73003F0E5FA0420C04383 +:102E6000FFF748FBC5B21920FFF744FBC0B285420B +:102E700004D0FF20BB49C83003F0D5FAB748B849A1 +:102E8000083804700020C87688760A462832D07642 +:102E90009076B24B012408331C711860486250626E +:102EA00008601060FFF7A0FF70BDAC4908310871E1 +:102EB0007047FEB5AA49CA7E08462830A74C002AAA +:102EC00002D1C27E002A03D0C97E022903D005E0C8 +:102ED000A648216006E0C17E002901D00C20FEBD7D +:102EE0002060A348FAF7FCFC216808779B4920681A +:102EF000C91F0160C91C4162007F002804D1AD20B8 +:102F00009849800003F08FFAFAF737FD9949884213 +:102F100000D20846FF30C83086B220680325C57647 +:102F2000FEF735FE21680861FEF758FE00270028ED +:102F300027D0FEF753FE21684A6A10600968012015 +:102F4000087001466846F9F7E3FF684600788A4949 +:102F5000000203F064F90191FAF731FD019971184B +:102F6000FAF7C7FF2168C8602068057245720771CB +:102F7000021D017F00F01FFA2068078300202760F0 +:102F8000FEBDFAF71CFD3146FAF7B3FF2168C860B1 +:102F900008680770096801204870E5E77047F8B5D0 +:102FA0006F4EF17E002904D131462831C97E0029B7 +:102FB00001D00C20F8BD0221F176694C674F5034E6 +:102FC0000837776234600025386025753979C07E0E +:102FD0004A006A4940008A5A085A2B46101881B2A2 +:102FE0002A462846FFF7FEFA002804D0CF205D4984 +:102FF000800003F018FA25610120A5602075658620 +:1030000025865748703085753968088E401E0886B9 +:1030100035830020F8BD10B5504801244068817EFA +:1030200003290CD001684978002906D0006A544968 +:10303000884202D90024FFF706F8204610BD00247C +:10304000FBE74648406802681178491C1170016A24 +:103050000068C26A914204D8007D012801D0012095 +:1030600070470020704700207047F8B53B4C3C4843 +:103070002060416A00680D68002634210E54A621A4 +:10308000495D00294BD1007D032848D1FAF797FC10 +:10309000014620684069FBF7B8FE00283FDDFFF7D6 +:1030A00047FC298E401C4118206802681186006880 +:1030B000018E9C22525B511A09B200292FDD012199 +:1030C0002030817528464030C1898089081A298EB0 +:1030D000401E401887B21BE0496A09794A00274917 +:1030E0008B5A028E007D9446EA7E5200895AC91896 +:1030F00089B201236246FFF775FA00280FD0012834 +:103100000FD002280BD01B481649193803F08BF951 +:1031100021680868028EBA1A12B2002ADCDA266028 +:10312000F8BD20680068018E491C0186F0E7F8B5FB +:103130000A4D00266A680128516A0C6853D1087943 +:103140000E4940000B5A1068077D032F1AD0027DEC +:10315000022A24D0007D012834D044E0B4000020AD +:10316000F4130020F0280100070200006D2B01007D +:103170000B2C0100F6050000102700009E670100DF +:10318000D98213000661106886609C20025BE07E95 +:103190004000085AC01881B2002303201BE02246D9 +:1031A0008032D78D0761E07E928B4000085AC018AC +:1031B00081B200230220FFF715FA6A680121126824 +:1031C00011750AE09C20025BE07E4000085AC0189E +:1031D00081B200230120FFF705FA002803D09C49A3 +:1031E0009C4803F020F9FAF735FB9B480078EFF78D +:1031F0006FF8686806830268218E51860068203067 +:103200008675F8BD38B5944C0021083460680D46C9 +:1032100000684278002A01D045701FE0007800283D +:1032200009D001216846F9F773FE684600788B499A +:10323000000202F0F4FF6068426AC0681268511828 +:10324000FAF757FE01466068C160057103214172BB +:10325000021D017F00F0AFF860680583FAF7FAFA03 +:103260007D480078EFF734F838BD7B4A10B5014649 +:10327000083250680B0003F0C7F9060D1504081753 +:103280000C31012100F0D1F807E00021106800F0B6 +:10329000CCF810BD0120FFF74AFF00210846FFF7D8 +:1032A00043F910BD032116E0416A02680968D36939 +:1032B00093608A886A4B5A430368DA600A46C032D0 +:1032C000D3890B83137B8B75138A8B80538ACB80B6 +:1032D000928A0A8102210068017510BD5D485C492F +:1032E000913003F0A0F810BD70B500280BD05A4CF7 +:1032F000083401280ED002281ED056485449B43054 +:1033000003F091F870BDFFF77DFF00210846FFF73D +:103310000BF970BD6068002501684D7000F045F83C +:103320000320F5F7B8FEFAF795FA4B486560007888 +:10333000EEF7CEFF656070BDFFF764FF606800F0D8 +:1033400034F800210846FFF7EFF80420F5F7A3FE54 +:1033500070BD414908314968CA7E022A08D10A680D +:103360001378002B04D150600968CA6A1018C8622B +:103370007047394A10B50832526800290CD001292B +:1033800007D0022907D033483149D93003F04BF830 +:1033900010BD801E00E0401F106210BD2E48083096 +:1033A0004068002800D0012070470021C176817656 +:1033B00001604162704710B50B46C17E847EA14218 +:1033C00004D011461846FAF77AFF10BDFFF7EDFF5B +:1033D00010BD024610B50020002905D00846504314 +:1033E000204902F01CFF401C10BD1B4810B50830DE +:1033F0004068C07E030003F007F9041515030B15A0 +:1034000001F05EF900280CD00F2017A1800106E022 +:10341000FEF7F0FD002804D0F12013A1800003F096 +:1034200002F810BD10A11448F9E710B504460029B0 +:1034300003D00020FFF77BFE03E007480078EEF79B +:1034400047FF2046FFF7B1FF0020F5F724FE10BD2F +:10345000F028010092060000AC00002010270000B8 +:10346000E204000040420F007372635C6C6C5F6C9E +:103470006D2E73302E630000CB030000F8B5FEF70D +:10348000B0F90446FEF756FAF84E0546706920304A +:10349000407D002809D0012827D002282AD00328FF +:1034A00032D0FF20F2A19A3037E0F0481830FEF712 +:1034B0001EFA002801D003200FE0EC481830FEF778 +:1034C00049F9002804D070695B21095C002908D003 +:1034D000E6481830FEF7D2F90120716920314875AD +:1034E0001DE002212030417519E0E0481830FEF758 +:1034F000C5F914E0DD481830FEF72CF900280ED18C +:10350000FF20DBA18C3008E0D8481830FEF7EFF937 +:10351000002804D1FF20D6A1943002F084FFB069C6 +:10352000F72201781140017072692032937DDB0728 +:103530001B0F1943FB2319400170D37DDB075B0F81 +:1035400019430170577DEF23022F04D0012F07D0BC +:10355000032F07D00CE0012C06D8002D04D007E083 +:103560006D1E2C43002C03D019401023194300E09A +:1035700019400170D17F002916D0517D012913D047 +:10358000BF48FBF79DFFBE480021283001767269D5 +:10359000916ED26E42610161B949B269FCF7A3FA3A +:1035A0000020FCF7AFFA03E0FBF78AFFFCF7CDFA47 +:1035B000B0690078C00606D4F0690078C00602D46D +:1035C000F079002806D0B079002803D101210846FF +:1035D000FCF79BF8032030703079002803D1FBF70B +:1035E000BDFF01203071F8BD70B5A0481C30FEF75A +:1035F000B9F901259D4C002802D00020607002E03E +:1036000065709F48E061606940300078002802D012 +:103610006078002805D0E069FBF752FFFCF795FAC7 +:1036200070BD9748FBF74CFF9548283005766269D6 +:10363000116F526F42610161914AE169FCF753FADF +:103640000120FCF75FFA70BD10B588490023486976 +:1036500002462030C3768377012049239854A03254 +:103660009279002A03D008700021022001E0002195 +:103670000320FFF7FAFD10BD70B57C4C6079C206DF +:103680002046406901468031002A01DA002202E02A +:10369000CA8DCB8BD218CA850246C0321379002B53 +:1036A00005D0034640331D8AC98B69181982617A97 +:1036B000002903D03D2001F051F94AE003462033B0 +:1036C000D97E042945D0217A002913D0480701D496 +:1036D000C80601D51E2030E0080701D53D202CE0AA +:1036E000C80705D1880703D461A1664802F09BFE94 +:1036F0002A2022E04030817D002905D0418A4D1CDE +:103700004582858AA9420FD2517A062902D0117AC0 +:10371000062905D1018B4A1C0283828A914203D279 +:10372000028AC1898A4201D3222006E09A7F8089D9 +:10373000002A0AD088420FD3082001F00FF96069EF +:103740002030C07E042804D006E0062804D33E20A2 +:10375000F3E7FFF779FF70BD0120207000210846D4 +:10376000FFF783FD70BD10B5404840690146203128 +:103770008A7F002A29D0012A27D0022A06D0032ACC +:1037800004D03BA1404802F04EFE10BDC97E032983 +:103790000FD0082919D001464031CA898989511AA8 +:1037A000891E89B2032900D303218030828B5118EE +:1037B00009E0014640318A89032A06D3028EC9896D +:1037C00080305118491C018310BD8030818BFAE78D +:1037D00000B5030002F018FF0604070B0F121217C2 +:1037E00000290ED00FE0891E02290AD90BE0891F9B +:1037F000012906D907E0082903D004E00B390C2978 +:1038000001D8012000BD002000BDFEB505461748C7 +:103810001830FEF740F8002804D11B4814A1D13815 +:1038200002F001FE114CA069FDF702FC0321A06922 +:10383000FDF721FCA069EF220178114001702946B3 +:10384000FDF740FC002601272B0002F0DDFE0E5C98 +:103850005C085C2C6060255C4C5C603C375C60699B +:103860006521095C002911D0062111E0C400002067 +:103870007372635C6C6C5F736C6176652E630000C1 +:1038800090140020430200005C080000C030417921 +:10389000A069FDF797FC3AE060698030417CA0693F +:1038A000FDF7D7FC33E06169A069B831FDF7ADFCE5 +:1038B0006169A0698C31FDF7AEFC28E00621A069A2 +:1038C000FDF7C5FC23E020690178A069FDF7A9FC9C +:1038D00020698188A069FDF7A6FC20694188A0695C +:1038E000FDF7A5FC13E00096019660696030007951 +:1038F000002803D069460878384308706946A069F3 +:10390000FDF7B1FC03E0F949F94802F08CFDFDF741 +:10391000D4FF002804D1F648F449801D02F083FD4D +:103920000C2D06D0072D03D0606940304682877584 +:10393000FEBD606940300683FEBDF0B5ED4CC82089 +:1039400061698DB0405C04280AD0052835D15C201F +:10395000405C00282AD0012060314871022026E016 +:1039600010226846D63101F030F86169102204A8AF +:10397000B03101F02AF8684601F0DFFB08AE8DCEC9 +:10398000616984250E4678360DC66F5000250D6797 +:103990004D67012540267554D74D88318DC5284681 +:1039A0000822093002F0C1FB052000E00D20FFF7DE +:1039B0002CFF61690020C03108720DB0F0BDF8B570 +:1039C000CC481830FDF767FF002848D0C94C207A52 +:1039D000002844D16069C421095C002500290ED06B +:1039E0002030C17E0120FFF7F3FE002807D1606977 +:1039F0002030C17E0420FFF7EBFE002806D060696E +:103A0000C921095C0126062907D00DE06069502113 +:103A10000D526030457102204EE02030C17E0420FE +:103A2000FFF7D6FE002813D0616908462030C27E19 +:103A3000921E130002F0E8FD166262621D6262626D +:103A400060621F6262622843626262626262466210 +:103A500060695E21095CC90702D0C0304572F8BDBB +:103A60000C20FFF7D2FE60694030817F31438177BF +:103A7000F8BD072020E0FDF79AFF0028F8D0606924 +:103A8000403005700B2017E0F9F741FA0C28EFD30E +:103A900060690821B830F9F73BFA002806D0606960 +:103AA00004218C30F9F734FA002804D1C72093A1FF +:103AB000C00002F0B8FC0420FFF7A7FEF8BDFFF736 +:103AC0003CFFF8BD00228A66CA66C6770A4678318E +:103AD000C8C9894878322838D26842632830C8C0BB +:103AE00008220D30091D02F020FB0620FFF78DFE95 +:103AF000606940308575F8BD0920DDE700F036FFCC +:103B0000F8BD70B57B4C3B216069095C08292FD159 +:103B10000146028EC0314B89521C9A4228D1227A2A +:103B2000002A25D10A8A83889A4207D14B8AC58800 +:103B3000AB4203D18B8A0589AB4209D043884B85C0 +:103B40008A854A8ACA858A8A0A860122E6210A5417 +:103B500001221146FDF747FC00210420FFF785FBF9 +:103B600060690021C92211542030C1760321817778 +:103B700070BD70B55F4C60692030C07E172803D0DF +:103B80005EA1624802F04FFC616900220B4640339F +:103B9000DA7608469A75E030867D0B240125002EE2 +:103BA00006D0837C002B14D1C4740275857410E098 +:103BB0001E7F002E07D01A774C88FA235C520276BB +:103BC0000C23837505E04E88FA235E520276057752 +:103BD00084752031CA7670BD70B5464CA0798007D7 +:103BE00036D5207A002833D160692030C17E01208B +:103BF000FFF7EEFD00282BD1A0690126C078002533 +:103C0000030002F001FD0E8585088537465F0A85B1 +:103C1000168526625285032152E060692030C07EFD +:103C2000052804D0394835A1333802F0FCFB60691F +:103C30000CE060692030C07E092804D033482FA1F1 +:103C40002D3802F0F0FB606956210D542030C57606 +:103C500070BD60692030C07E0B2804D02B4827A19E +:103C6000263802F0E0FB60695B210E540C21203005 +:103C7000C17670BD60692030C07E0F2804D0234813 +:103C80001EA11F3802F0CFFB60695B210E5410218A +:103C9000EDE760692030C07E102804D01B4817A1D2 +:103CA000183802F0C0FB12210AE060692030C07EA3 +:103CB000102804D0154811A1123802F0B4FB1421C9 +:103CC0006069D4E7FFF755FF70BD60690146C030F9 +:103CD000027A062A04D14031897F890700D505720E +:103CE000417A0629F0D1457270BD0000703801009C +:103CF000CD070000C4000020B81400207372635C7C +:103D00006C6C5F736C6176652E6300004C0500007F +:103D1000FD49FE4802F087FBE6E710B5FC4C606900 +:103D20002030C17E0020FFF753FD002803D1207A08 +:103D3000012108432072207A002808D1E069FDF7AC +:103D4000EBF961699122505405202031C87610BDED +:103D500010B5EF4C60690146C0314A7A002A06D09E +:103D6000097A062903D0217A012211432172217A8E +:103D7000002928D14030807F800715D4E069FDF705 +:103D80005AFA61694031C877E069FDF756FA61690E +:103D900040310884E069FDF755FA6169022240313B +:103DA0004884887F10438877606900220146C031CB +:103DB0000B7A062B00D10A724030837FDB0702D1D9 +:103DC00006234B72028310BDF8B5D14C60692030D8 +:103DD000C17E0020FFF7FCFC0125002807D16069A7 +:103DE0004030007F002802D1207A28432072207AB8 +:103DF000002830D160690026014640304682857532 +:103E0000B031E069FDF7EFF96169E0698831FDF7EC +:103E1000F3F960690146E030827D0827002A06D068 +:103E2000817C002913D1C774067585740FE04A8818 +:103E3000F8204252FA31E069FDF7C8F96169E0699A +:103E4000FF310331FDF7CAF96069E03087756069B9 +:103E50000F212030C176F8BD10B5AD4C606920301F +:103E6000C17E0020FFF7B4FC002803D1207A012195 +:103E700008432072207A002812D1E069FDF769F921 +:103E800000280ED0E069FDF75FF96169CA2250523F +:103E9000098E00F0D6FD002806D0282000F05EFD37 +:103EA00010BDFFF73AFF10BDE069FDF74BF96169FE +:103EB000C0310873E069FDF740F96169C031C8811C +:103EC000E069FDF72BF96169C0310882E069FDF70F +:103ED0002AF96169C0314882E069FDF729F9616911 +:103EE000D422505208202031C87610BDF8B5884C35 +:103EF000A079C00776D0207A002873D1606920307D +:103F0000C17E0120FFF764FC002863D1E069002531 +:103F1000C178022701260B0002F076FB0D1613086C +:103F2000415A5A445C575A192F545A00FDF74CF91C +:103F30006169C62250543B20475440314D828E75F2 +:103F400048E000F093FD45E0FFF786FF42E060693E +:103F50002030C17E0020FFF73BFC002802D1207AF0 +:103F600030432072207A002834D160690146403104 +:103F70004D828E750B2120300FE0606901462030A4 +:103F8000C27E0C2A02D0227A3A432272227A002A76 +:103F900020D1C57740310E770D21C1761AE0FFF7A9 +:103FA00013FF17E0606901462030C27E122A02D05A +:103FB000227A3A432272227A002A0BD140318D753F +:103FC0001721EAE7FFF7C4FE04E000F00DFD01E071 +:103FD000FFF7A3FE62690023106F516F401C594127 +:103FE00051671067F8BDF8B5494C05466069203047 +:103FF0008079012801D1FBF7E9FA012D14D160691C +:104000004021095C002903D12030C07F002801D065 +:10401000FBF79BFDFBF7BDFAFBF7B0FAFBF708FADD +:10402000FBF72DFAFBF746FA60790225C107012656 +:10403000002901D180070ED560692030817F0029D9 +:1040400002D0032902D006E0867700E085770021C0 +:104050000120FFF70AF960692030817F012903D12F +:104060006179090700D58577607A002803D100F0CF +:1040700027FDFFF7A4FC207900250028606902D005 +:104080008030058403E08030018C491C0184607914 +:10409000C00705D06069AC210D544030858104E033 +:1040A000616940318889401C8881E079002806D008 +:1040B0006169A031087B022806D8401C087360693A +:1040C000A030007B022806D9606901468030058453 +:1040D0004584A0310D7360692030C17E0020FFF758 +:1040E00077FB002804D160692030C07E072855D1B5 +:1040F00060690146C0310A7A062A4FD0497A0629FA +:104100004CD03E21095C05E0FC3C0100BA050000F2 +:10411000C4000020022941D1A030007B00283DD1FD +:10412000FDF74FFB002839D0FDF704FC002835D0FF +:1041300061690A468032508B01282FD90846A03089 +:10414000844646716038C7898389B81E834201DB83 +:10415000012002E0F81A401E80B2138CA789BB42EE +:1041600001D3012302E0FB1A5B1C9BB2984200D9E9 +:104170001846012801D163465D71C0310B78002BD0 +:1041800010D0528C49888A4201D3012102E0891A59 +:10419000491C89B2884205D9084603E061690120BB +:1041A000A0314D7161690A8E803110188883FFF744 +:1041B000DAFAFFF761FAFEF756FF002809D06069C6 +:1041C0000146FF3001300279002A02D14988C180BE +:1041D00006716069A0308571F8BD70B5F84C6069F2 +:1041E0002030407D00283ED0022810D1FDF7C2FAD1 +:1041F000002804D17120F349000102F014F962692A +:104200000023916ED06E491C58419166D06660695A +:10421000002520304575017D012904D10575A1795E +:1042200010221143A171C17C012915D1C574A07957 +:1042300008210843A071FDF76AFB002804D1E5209E +:10424000E049C00002F0EFF860690023816EC26EA1 +:10425000491C5A41C266816660692030817D01290E +:1042600002D0012181753FE585753DE570B5D44CDF +:104270000026E169012508788207920F0420012AAF +:1042800015D0022A13D0032A03D0217A01432172C8 +:104290002AE560780028FBD1606920308574A17917 +:1042A0002943A17122E0C6751EE5C5751CE5497854 +:1042B000CA0624D06278002AEAD1C906C90E1B2991 +:1042C00018D8617901436171FDF75FFB002804D1C3 +:1042D0003B20BC49400102F0A6F860690023016F51 +:1042E000426F491C5A41426701672030C17D012954 +:1042F000DBD1D8E7207A102108432072F4E460690A +:10430000F3E77CB504460020C0436946888001A8D5 +:10431000FCF7B2FD00287AD169468888FCF790FD49 +:10432000002803D0A749A84802F07DF8009801466C +:10433000E030827C0025002A08D0657010212170B1 +:10434000C17CA170017DE170857472E082799C4E20 +:10435000002A13D065700720207008E07169E620FC +:104360008D8445540A22A01CE83101F0DEFE00983D +:10437000E03080790028F1D1A5705AE0827D002AD2 +:1043800038D0827D130002F03FF90D2F2F2F2F2FF1 +:104390002F2F2F112F2F24082F0065700C21217033 +:1043A000017EA17071694988A18010E065700820C4 +:1043B00020707069082240886080201DFA3101F069 +:1043C000B4FEFF2100980331095AA181E0308575C0 +:1043D0002FE065700B212170017EA1707169498801 +:1043E000A180017FA171F2E7774876495D3002F044 +:1043F0001AF81EE0C81DF9300279002A08D01122EF +:1044000065702270811C89886180057111E012E05D +:10441000027A002A0FD012226570FF312270033118 +:1044200004E005720A8962804A89A280027A002A21 +:10443000F7D101207CBD00207CBD614800780128B7 +:1044400001D00C2070470020704770B55C4C0546C9 +:104450002078002804D05C485A49933001F0E3FFEB +:1044600000202561A07201202070FFF7E6FF0028E0 +:1044700004D0554853499E3001F0D5FF34E4F8B5D7 +:104480004F4F3978012901D00C20F8BD0126A62113 +:1044900078610E548030807CFDF752F900282FD0CF +:1044A00078698030807CFDF753FA002828D078693D +:1044B0008030807CFDF7E5F9002821D078698030D4 +:1044C000807CFDF70AFA00281AD0FAF7E6FF78692F +:1044D00000258030408B002827D039481830FDF760 +:1044E000DAF9002821D07869C421095C00291CD0A0 +:1044F0002030C17E0120FFF76BF9002802D014E0C4 +:104500001220F8BD78692030C17E0420FFF760F9E1 +:1045100000280AD1786950210D526030457102207F +:10452000FFF773F97869A03045717869E621095C75 +:10453000002903D1818CC288914200D8C188B981F9 +:1045400001468031CA8B521E93B20A8CD21892B2A5 +:104550000A8494460246A0321479002C02D04D847D +:10456000157102E04C8CE4184C8404464034A78951 +:10457000FF18A7814C8B012C01D8641C4C83002BA5 +:1045800000D015732030C07E0D4C04281ED0507909 +:1045900000281DD0A1898C451AD2FDF712F90028F8 +:1045A00016D060690146C0310A78002A10D08030E8 +:1045B000408C498888420BD3A570E6700AE0000061 +:1045C000C4000020FC3C010081080000A67001E04E +:1045D000A570E5706069A5210D543B21095C062991 +:1045E00001D0072918D1CA21028E095A511A09B2DD +:1045F000002911DB01460522CC310A3001F095FD7E +:10460000012202216069FCF7EEFE6069C9210D54A8 +:104610003B210D546030867160699E210A5A811CCD +:104620003030FCF71EFFA07800283DD16069C02122 +:10463000095C002901D0803045840120FAF7A4FDEF +:1046400060691330FAF713FF60690F30FAF753FE11 +:104650000120FAF71FFF61694020405C002803D168 +:104660003F20405C00280DD00A467831C8C9F9487F +:104670007832D26842632830C8C008220D30091D44 +:1046800001F053FDFAF701FF01210846FAF758FE41 +:1046900060698030806AFAF716FFFEF7A5FF60694F +:1046A0004030007AFAF730FE6571E571A571257228 +:1046B0006572257102202070FAF7FCFE0020F8BD1B +:1046C00010B5E54C2078022801D00C2010BDA07850 +:1046D000002803D00020FFF786FC17E0FAF7DDFE84 +:1046E00000F033F9606920308079012801D1FAF7B0 +:1046F00076FFA07A002809D0012807D0022807D029 +:10470000032805D0D549D64801F08DFE002010BD04 +:10471000EEF77EFCFAE7D0498872704710B5CE4CB0 +:104720002078032804D0CE48CC49293001F07BFE04 +:10473000606901212030827C002A06D00022827428 +:104740000175A27904231A43A271A2691378DB438D +:104750009B0707D1C37C002B04D1C174A07902212F +:104760000843A0711078C00606D4E0690078C0063E +:1047700002D4E07900280CD06078002809D1A07913 +:10478000002806D1FEF75DFC002802D0207A002820 +:1047900003D00120FFF727FC03E0FEF725FF00F020 +:1047A000D4F8207801280DD0A07A00280AD001285A +:1047B00008D0022807D0032805D0A948A7496830A7 +:1047C00001F031FE10BD0120FBF719F810BD10B546 +:1047D000A14C606920308079012812D1FAF7F6FEE9 +:1047E0006169881C3031FCF7C5FE002809D060697A +:1047F000C21D4388F93253812030007E107301209E +:10480000107210BD70B5944C05462078042804D071 +:1048100093489249803001F006FE617910200143EF +:104820006171002D50D0FBF7A8F96178012508438C +:10483000002811D160694021095C00290CD0E16990 +:104840004A78D20608D0097820300907C07DC90F00 +:10485000814201D165724EE0E078002809D0E0691C +:104860004178C90605D10078C00602D4FFF7AFFF32 +:1048700041E0FFF7ACFFE06900784007C10F6069D5 +:104880002030807D814205D0FFF7A7FC60790821A8 +:1048900008436071E06900780007C10F606920304B +:1048A000C07D814201D1FFF7E1FC6079284360714E +:1048B0000020E071A079000704D560692030C07E37 +:1048C000032818D0207A14E0022001436171E079B6 +:1048D000401CC0B2E07101280DD8606940300078FA +:1048E00000280CD05B484078C106C90E052906D2C5 +:1048F000C006002803D00120FFF775FB01E0FEF79A +:10490000BDFD207801280DD0A07A00280AD001280A +:1049100009D0022806D0032805D051484F49E2307B +:1049200001F081FD9FE40120FAF769FF9BE410B5D7 +:1049300049480078042804D049484849EA3001F041 +:1049400072FD0120FFF74FFB10BD10B501210020C3 +:10495000FAF7DBFE40490420087010BD3E494A22A8 +:104960004969505404202031C876704710B53A4C3C +:10497000C8206169405C00281CD0062806D0203180 +:10498000C97E0020FEF724FF002813D0606901468D +:10499000C0310A7A130001F037FE070D0D0D0D0D21 +:1049A0000D050D004030807FC20704D0C043800752 +:1049B00000D1087210BD0C20FEF727FF60690122AC +:1049C0004030817F1143817710BD10B5002A0AD095 +:1049D000002306E0D41A6418203CE47FC4545B1C16 +:1049E000DBB29342F6D310BD7CB51B4C606920301E +:1049F000C17E0020FEF7ECFE0125002802D1207ABE +:104A000028432072207A00281AD16946E069FCF711 +:104A100022FC684600780022C107C90F6846017071 +:104A20006069002902D06030057101E060300271D8 +:104A30006069014640304282857509202031C87680 +:104A40007CBD401A074900B2884201DC00280BDC1B +:104A50000120704790140020C4000020FC3C01009D +:104A6000F4090000FE7F00000020F2E710B5534C6F +:104A700060692030C17E0020FEF7AAFE0028207A5F +:104A800010D000280DD1E069FCF797FB6169CA22BC +:104A90005052098EFFF7D5FF002807D02820FFF7D6 +:104AA0005DFF10BD01210843207210BD6169E069FE +:104AB000CC31FCF77AFB606906212030C17610BD4D +:104AC00010B500F04EF83D4C607940070BD5606999 +:104AD0002030C17E0520FEF77BFE002803D0207A1F +:104AE000082108432072FFF701FA00F018F8FFF7D9 +:104AF00073F8A079C0060FD5207A00280CD1606920 +:104B00002030C17E0B0001F07FFD07070707070774 +:104B1000070507000721C176FEF7F3FF10BD10B5AA +:104B200026488179490715D5017A002912D14069B3 +:104B30003B21095C891E0B0001F066FD07050C0C8A +:104B40000C0D0C0F0C00002256210A54C030807945 +:104B5000FFF704FF10BD012100E00221C0304172C7 +:104B600010BD10B515488179090720D5017A0029B3 +:104B70001DD1406902462032D47EA41E230001F0DC +:104B800043FD13160B1616161616161616161616BF +:104B90001616161616171600562211546030407954 +:104BA000002801D0062000E01620FFF7D7FE10BD38 +:104BB0004030C1768175D17610BD0000C400002060 +:104BC00030B50346002002460DE09C5C2546303D92 +:104BD0000A2D02D30020C04330BD0A256843303877 +:104BE0002018521CD2B28A42EFD330BD70B50D46A8 +:104BF000144608E00A2101F012FB2A193031203A4C +:104C0000641ED177E4B2002CF4D170BD10B500233E +:104C100010E0040A00020443A0B2CC5C4440200629 +:104C2000000F60400407240C44402006C00C604084 +:104C30005B1C9BB29342ECD310BD000010B572B662 +:104C400000F0DCF800280BD0ECF72AFBF8F7EFFDBA +:104C500000F0A5FD6E490020C86288626D490860B9 +:104C600062B6002010BDF3B5002501200007C06A20 +:104C700081B0C0430006000E04D167480068401CA4 +:104C800000D1012572B600F0B9F8002802D062B652 +:104C90000820FEBDECF75AFAECF706FB5F4B604EBE +:104CA00000211A68CA40D2071FD00246CA40D20764 +:104CB00018D14AB2002A07DA1407240F083CA408C6 +:104CC000A400A419E46904E09408564FA400E41970 +:104CD00024689207D20ED4402206920F012A04D0F3 +:104CE000032A02D062B65048FEBD491C2029D8D301 +:104CF0000198030001F088FC14212323232323239C +:104D000023230B0D0F11131F1517191B1D2E002424 +:104D100016E0012414E0022412E0032410E004242D +:104D20000EE008240CE009240AE00A2408E00B2421 +:104D300006E00C2404E0052402E0072400E0062439 +:104D4000F06901210002000AC9070843F061002D43 +:104D500004D009E062B601200003FEBD2C4D3348AB +:104D6000E862ECF7A1FAA8622A49314808603149A3 +:104D700002980860ECF798FA214600F0F7FCF8F783 +:104D80001AFD00F0FDFE00F073FD0198ECF756FAF5 +:104D9000040062B603D0FFF751FF2046FEBD00209D +:104DA000FEBD10B5044600F029F8002800D001200F +:104DB0002070002010BD204908600020704710B509 +:104DC0000C46102808D011280BD012280CD013281C +:104DD0000ED00120086010BD03CC083CFFF743FF54 +:104DE0000AE0FFF72BFF07E02068FFF7DAFF03E098 +:104DF0001149206808600020206010BD05480C495A +:104E00000068884201D101207047002070470000EF +:104E100000050040780000200010001000E100E0D4 +:104E200000ED00E000E400E00110000000190000C7 +:104E3000BEBAFECAE40000200400002010B52038ED +:104E40000C46030001F0E0FB33A6AAAEB2B8BCC02A +:104E5000C5E0DBE41B1F23272C31373C41474D5075 +:104E600054585C606D71656974787C8084888C901E +:104E700094989C9FA2CACFE9F0F3D3D7F80020689A +:104E800000F0DDF8D6E0206800F0E1F8D2E020681C +:104E900000F0F5F8CEE0207840B200F0D7FAC9E093 +:104EA000207840B200F0F5FAC4E02078616840B2A2 +:104EB00000F008FBBEE0207840B200F018FBB9E03B +:104EC000207840B200F023FBB4E02078217940B292 +:104ED00000F02EFBAEE02078616840B200F058FB95 +:104EE000A8E000F064FBA5E0206800F068FBA1E00A +:104EF000207800F07DFB9DE02068F8F72CF899E021 +:104F00002068F8F72CF895E021792068F8F72EF85A +:104F100090E0206800F0E6F98CE0206800F0E7F906 +:104F200088E0207800F0E7F984E000F0F1F981E012 +:104F3000207800F0F3F97DE0207800F005FA79E0C0 +:104F4000206800F01EFA75E0206800F020FA71E099 +:104F5000206800F022FA6DE0206800F023FA69E092 +:104F6000206800F025FA65E0206800F027FA61E08B +:104F7000206800F028FA5DE00846ECF7FFF859E0F9 +:104F8000EDF719FA56E0EDF746FA53E02068EDF731 +:104F90004EFA4FE0206800F0E1F84BE0206800F0A6 +:104FA000E9F847E0206800F0F0F843E02078A268D4 +:104FB000616800F0F5F83DE0207800F006F939E08E +:104FC000207800F017F935E02078616800F027F9C3 +:104FD00030E02078616800F03AF92BE02179207800 +:104FE00000F016FC26E0206800F06BF822E0206854 +:104FF000F8F70CFB1EE02068F8F7F0FA1AE007CC8F +:105000000C3C00F0FFFC15E0206800F052FD11E0C0 +:1050100003CC083C00F07DFD0CE0206800F06EFF42 +:1050200008E009E003E0FFE700F080FF02E020680D +:1050300000F0B8FF206010BD0120086010BD002105 +:105040000170084670470146002008707047EFF372 +:105050001081C907C90F72B60278012A01D0012256 +:1050600000E0002201230370002900D162B6002A6B +:1050700001D000207047012040037047E7E7EFF3BD +:105080001081C907C90F72B600220270002900D131 +:1050900062B600207047F2E710B52848FFF7CFFF4F +:1050A000002803D026A11D2001F0BDF92348401C93 +:1050B000FFF7C5FF002803D021A1212001F0B3F99B +:1050C00010BDF1B5224D6F6801261C48FFF7BFFFE8 +:1050D0001A4C002803D10026601CFFF7D0FF1D4AA0 +:1050E0001D490120506000BF00BF00BF00BF00BFCE +:1050F00000230B604B60009B6B60106000BF00BF23 +:1051000000BF00BF00BF0868002802D1486800281F +:10511000F9D048680028E4D1002E04D06F60601CEC +:10512000FFF795FF07E0601CFFF791FF0028D3D140 +:105130000248FFF7A4FF0020F8BDC2E7E800002006 +:105140007372635C736F635F6563622E630000005C +:1051500000E5004000E0004000E100405A495B4BA0 +:105160000A685B499A42096801D18904890C016087 +:10517000002070475449554B0A6855499A4201D15D +:105180008004800C4860002070474F494F4B0A68EC +:105190004F499A4201D18004800C886000207047FA +:1051A00030B5494B494D1C684A4BAC4202D01028DF +:1051B00002D203E00E2801D3184630BDC300444894 +:1051C000181801614261002030BD3F493F4B0A6819 +:1051D0004049491C9A4202D0042802D203E0022826 +:1051E00001D3084670473C4A0121C0008018016085 +:1051F000002070473449354B0A683649491C9A42A9 +:1052000002D0042802D203E0022801D308467047E6 +:10521000314A0121C000801841600020704770B5FC +:10522000294A2C4B14682D4E284D82005B1C921984 +:10523000AC4203D0042803D2116006E0022801D357 +:10524000184670BD8804800C1060002070BD70B5D9 +:105250001D4A204B1468214E1C4D82005B1C921984 +:10526000AC4203D0042803D2106806E0022801D320 +:10527000184670BD10688004800C0860002070BD66 +:1052800010B5134A164890600E200021C3009B18E9 +:1052900019615961401C1028F8D300200F4A05E01D +:1052A000022803D383009B18196005E083009B1834 +:1052B0001C68A404A40C1C60401C0428F0D310BD7E +:1052C000034907488860704778000020BEBAFECACC +:1052D00000F501400820000000F0014000F8014006 +:1052E00000C0FFFF47490968016000207047454939 +:1052F0000860002070470121434A002803D001289C +:1053000003D042487047916300E0D16300207047AA +:105310003F49012008603D48801C704704223D4BF6 +:105320003B49002805D05A600869012210430861F2 +:1053300008E008694008400008619A60324900208E +:10534000C03188600020704731490622002808D00B +:10535000012809D002280DD003280FD02B48401C6B +:1053600070470869904302E008699043801C086117 +:105370000020704708699043001DF8E70869104352 +:10538000F5E723494A6A02434A62002070472049F0 +:105390004A6A82434A62002070471D49496A016097 +:1053A000002070471A49CA690243CA610020704749 +:1053B0001749CA698243CA61002070471449C96904 +:1053C0000160002070471249024600204031002A47 +:1053D00003D0012A01D0072070478A6370470D4926 +:1053E0000420886008490020C03188600A480168AC +:1053F0008022090A0902114301600849012008605E +:1054000070470000000400404000004004200000FD +:10541000000500400003004000E400E000E100E07F +:105420008107C90E002808DA0007000F0838800835 +:10543000814A80008018C06904E080087F4A8000AB +:1054400080180068C8400006800F704710B50446F9 +:1054500000F0DBF8002813D02046FFF7E1FFC0B2D0 +:1054600000F0E1F800280DD07549E2060B78D20E65 +:1054700001209040002B08D04A681043486006E0A5 +:10548000704810BD6F48401C10BD6F490860002077 +:1054900010BD10B5044600F0B8F800280BD06849DC +:1054A000E2060B78D20E01209040002B05D04A680E +:1054B00082434A6004E0634810BD6349803108605C +:1054C000002010BD70B50D46044600F09EF800287F +:1054D0000BD05E480068E206D20E012191400840E0 +:1054E00000D001202860002070BD564870BD10B566 +:1054F000044600F08AF8002807D0E106C90E012012 +:10550000884052490860002010BD4E4810BD10B5BB +:10551000044600F07AF8002808D0E106C90E012000 +:1055200088404A4980310860002010BD454810BDC0 +:1055300070B50D46044600F068F8002819D02846DA +:1055400000F071F8002816D0A007C10EFF228A4093 +:10555000A807000E8840002C10DA2107090F08392F +:105560008B0835499B005B18D96991430143D96188 +:105570000CE0344870BD3348401C70BDA3082F496F +:105580009B005B181968914301431960002070BDAE +:1055900070B50C46054600F038F8002805D02846BE +:1055A000FFF73EFF2070002070BD264870BDBFF39E +:1055B0004F8F21492648C860BFF34F8FFEE770B573 +:1055C0001F4C05462178012000290ED1207072B6AB +:1055D00000F0F4F81C4E803631688143616000F0C1 +:1055E000EDF8C043306062B600202870002070BD26 +:1055F00013490A78002A06D0002804D1124A4868C4 +:105600001060002008700020704710B50446202864 +:1056100007DA00F0D3F80121A140084201D10120AE +:1056200010BD002010BD012803D0032801D00020A8 +:10563000704701207047000000ED00E000E400E04A +:10564000EC0000200120000000E100E000E200E0AA +:105650000400FA05F8B50446800700250126002855 +:1056600004DA5848C563C66302208443E00404D5C5 +:105670005548C563C66380148443600003D553480E +:10568000456080058443E00504D55148C563C66381 +:1056900080158443A00404D54E48C563C6634014F6 +:1056A000844360042704C00FF90F884203D04AA145 +:1056B000612000F0B8FEB80F0AD04C49CD634C48C9 +:1056C000C563C563CE63C663C6630320800384439A +:1056D00020050AD5474FFD632F20EBF765FDFE63DC +:1056E0002F20EBF761FDF8148443FFF7C9FD424812 +:1056F000044203D038A18D2000F095FEF8BDF0B52E +:1057000000210A46FF230446CC40E4072AD04CB2CD +:10571000E606F60E0125B540384E3560384E356048 +:10572000002C11DA25072D0F083DAE08354DB600C7 +:105730007719FD69A407E60E1C46B440A54314463C +:10574000B4402543FD610DE0A6082F4DB600761943 +:105750003568A407E70E1C46BC40A5431446BC4070 +:1057600025433560491C2029CDD3F0BD70B5274CA9 +:105770000D462060FFF76EFF2068FFF7C0FF284648 +:10578000ECF7EAFEFFF788FCF7F778FBFFF778FD08 +:10579000FFF725FEECF766FD00F06AF870BD10B566 +:1057A0001A4C2068FFF756FF2068FFF7A8FFFFF7A5 +:1057B00067FDECF74BFF0020206010BD1348006828 +:1057C00070470000C01F0040C0CF004000E501400E +:1057D000C08F0040C0DF00407372635C736F635F13 +:1057E000636F6E6669672E6300000000C0EF0040C3 +:1057F000C0FF0040C0BF0040FEFF0FFC80E100E0A2 +:1058000080E200E000ED00E000E400E0F4000020B1 +:1058100070B5002402460D4620462146002A1ED0BF +:10582000012A04D0022A04D0032A1ED103E0012059 +:1058300002E0022013E003202B0000F0E5FE071633 +:105840000507090B0D0F1600012108E0022106E0F3 +:10585000032104E0042102E0052100E00621F8F71D +:1058600058F8002801D0204670BD0724FBE700004F +:10587000B348002101708170704770B5B14D0123AC +:105880006B60B14B1C68002CFCD0002407E00E6854 +:1058900006601E68002EFCD0001D091D641C944289 +:1058A000F5D30020686018680028FCD070BD70B582 +:1058B000A34C0E466178884203D0A4A16F2000F06B +:1058C000B2FD0325330000F09FFE09520624245246 +:1058D0005252524952002078022803D09BA17320D3 +:1058E00000F0A1FD2570A078022802D0012804D084 +:1058F00008E0A06800F0D2FB04E02046083007C8AA +:10590000FFF7BBFF0020A070F7F7A4FF0420207072 +:1059100070BDF8F754F801466068F9F776FA064664 +:105920002078022803D089A1872000F07CFD8B4AD3 +:105930008B498C48964205D86269032A02D2521CD0 +:10594000626102E0864207D84D71801BC8608449BD +:105950006078F8F7B4FC70BD032003E0A07800285D +:10596000FAD10220F7F77EFE00F0E1F870BD77A1D2 +:10597000B12000F058FD70BD70B50546F8F71FF86E +:105980006F4C60602078012803D070A1B82000F02F +:105990004AFD73490220087000220A718D600422BA +:1059A0004A71704ACA6020706078F8F788FC70BD50 +:1059B00010B5634CA078002802D12078002801D0CF +:1059C000112010BD6848F7F78BFF607060780028E1 +:1059D00004D0012020700020606110BD032010BDA4 +:1059E00010B50124020B64040121604BA04202D2D5 +:1059F0009140186802E0203A58689140084000D071 +:105A0000012010BDF8B50E46910005464F19144609 +:105A10003F1F009100F053FB009980028919091F74 +:105A2000B14201D2012200E00022002C03D0FF216C +:105A300001318C4201D90920F8BD4D498D4219D35D +:105A4000AF4217D3854205D2874203D2284630435E +:105A5000800701D01020F8BD8E420BD3002A09D157 +:105A60002846FFF7BDFF002804D13846FFF7B8FFEE +:105A7000002801D00F20F8BD3E483F490068884209 +:105A800005D0224631462846FFF7F7FE0FE0FFF724 +:105A90008FFF0028EFD12A480121C660856004618C +:105AA00081702046302148431830FFF765FF002001 +:105AB000F8BD10B504462E48800A84420BD300F08E +:105AC000FEFAA04201D8102010BDA0020446FFF744 +:105AD00087FF002801D00F2010BD26482649006806 +:105AE000884203D0204600F0D9FA0AE0FFF760FFB1 +:105AF0000028F1D112480221846081701F48FFF70D +:105B00003BFF002010BD1A48010B01208840401EB9 +:105B1000704700B50B460246FFF7F5FF104201D073 +:105B20000F2000BD114802604360002000BD10B589 +:105B3000034C6078F7F728FF00202070A07010BD9C +:105B4000F800002000E5014000E401407372635C4E +:105B5000736F635F666C6173682E6300307500005D +:105B6000E0140020D0FB0100AF5801000006004007 +:105B70000080010078000020BEBAFECA3A5600003C +:105B8000F74805218170002101704170C17081606A +:105B9000704710B5F3490A78022A07D0CA6810186E +:105BA000C860C8689638F9F7E9F810BD8A68101817 +:105BB00088608868F6E70378EB49EC4A002B02D04E +:105BC000012B10D014E00379002B01D0012B0FD151 +:105BD0004379002B01D0012B0AD18368643B8B42AF +:105BE00006D2C06810E00379002B03D0012B01D04E +:105BF000002070474379002B01D0012BF8D1C368F6 +:105C0000643B8B42F4D280689042F1D80120704707 +:105C1000F8B504460226F8F740FD0068002803D0D6 +:105C2000D3A1BD2000F0FFFB0127CD4D002C08D0F3 +:105C30002078002817D0012805D0022811D0032889 +:105C400013D02F710DE06068C82808D3F9F70BF95D +:105C5000002804D06068FFF79CFF012603E00026BF +:105C600001E000F0F9F93046F8BD28780028F8D1B5 +:105C70006068FFF7A0FF0028E3D060680078002884 +:105C800026D0A878042803D0B9A1F72000F0CBFBD8 +:105C9000B44F0020387060680079012800D00020DF +:105CA000387160684079002837D0042078716068C6 +:105CB0008168E868F8F71DF9B8606068C0689630D8 +:105CC000F8600320A870A749E878F8F7F8FAC8E761 +:105CD000A4480221017061680979012919D00021C5 +:105CE000017161684979002915D004214171616809 +:105CF0008968963181606168C968C160C068984CE4 +:105D000014346060F7F75BFE20606F700220A870AB +:105D1000A7E70321E4E70321E8E70320C6E7F8B596 +:105D20008F4C0D46E178884204D0FF2090A11930B5 +:105D300000F079FB28468A4F00250126143703001E +:105D400000F062FC090612375A7C8D97C4A0C4008B +:105D5000A078032807D0A078022804D0FF2084A1CF +:105D60001D3000F060FBF8BDA078032807D0A078B4 +:105D7000022804D0FF207EA1213000F054FB042033 +:105D8000A07025712078002810D1FFF702FFE0787D +:105D9000F8F7D6F8E0607D49886A7D4A02402261C2 +:105DA0007B4AD24310408862002050E000F054F952 +:105DB000F8BDA078032807D0A078022804D0FF20DF +:105DC0006BA1423000F02FFB2078002802D000F0B9 +:105DD0004FF9F8BDA07803281FD104202AE0091A42 +:105DE0006048C1600146E078F8F769FAF8BD042020 +:105DF000F7F738FCA570F8BDA078032807D0A07885 +:105E0000022804D0FF205AA1633000F00CFB207858 +:105E10000028DCD1A07803280BD0F7F7D0FD01468D +:105E20003868F8F7F2FF0028E1DB79688142DEDBB1 +:105E3000D5E70520F7F716FCA670F8BDA078042872 +:105E400004D0FF204AA1843000F0EDFA0220A168BE +:105E50008847FFF7DDFEFF260546BD3642E0A07805 +:105E6000042804D0FF2042A1893000F0DCFA012090 +:105E7000EDE7A078042899D0FF203DA18E3000F0F6 +:105E8000D2FA93E7A07804280AD06078002802D0DC +:105E9000A078022804D0FF2035A1933000F0C3FA87 +:105EA0002078002893D12079002804D00620F7F725 +:105EB000D9FB2571C0E76078002805D02949E07832 +:105EC000F8F7FDF96570F8BD0720B3E7FF2028A1BA +:105ED000AE3046E7002D0AD0012D06D024A1304671 +:105EE00000F0A1FA022DF5D1F8BD042000E0032056 +:105EF000A1688847FFF78CFE0546F3E770B50500FB +:105F000005D0174CA078052803D0112070BD1020B3 +:105F100070BD2048F7F7E4FCE070E078002803D07B +:105F2000A5600020A07070BD032070BD10B50C48A6 +:105F30000178002901D0112010BD817805292BD0CE +:105F4000817801292AD08178002927D00121017088 +:105F50008178012922D0807800281FD020E000001D +:105F600010010020F01400203D860100FF1FA10752 +:105F70007372635C736F635F726164696F5F74698E +:105F80006D65736C6F742E630000000000050040A7 +:105F9000028100001F5D01000F2010BD00F068F8B5 +:105FA000002010BDF8B5394E0446B078002801D065 +:105FB00001280DD1002C0DD02046FFF7FCFD002854 +:105FC0000AD02078324D002808D0B078012823D09C +:105FD0000F20F8BD1020F8BD0720F8BD02272F7054 +:105FE0002079012814D0002028716079002811D070 +:105FF00004206871A0689630A860E068E860E868EE +:10600000224C14346060F7F7DAFC2060B77019E0B6 +:106010000320E9E70320ECE700202870207901281D +:1060200016D0002028716079002813D004206871F0 +:10603000A168F068F7F75DFFA860E0689630E86057 +:106040000320B0701249F078F8F739F90020F8BD54 +:106050000320E7E70320EAE710B50E48816A0E4AFD +:1060600011400A4A126911438162F7F7F3FB10BD30 +:1060700010B5064CE078F7F787FC0820F7F7F2FA3E +:106080000520A07000202070607010BD100100205D +:10609000F014002000050040FD7EFFFF0A4A0221A7 +:1060A00051600A490B68002BFCD0906008680028FA +:1060B000FCD00020506008680028FCD07047012008 +:1060C000000740697047000000E5014000E401401E +:1060D000034610B50B439B070FD1042A0DD308C804 +:1060E00010C9121FA342F8D018BA21BA884201D9A8 +:1060F000012010BD0020C04310BD002A03D0D307EB +:1061000003D0521C07E0002010BD03780C78401C1F +:10611000491C1B1B07D103780C78401C491C1B1B16 +:1061200001D1921EF1D1184610BDF8B5042A2CD326 +:10613000830712D00B78491C0370401C521E830742 +:106140000BD00B78491C0370401C521E830704D0EF +:106150000B78491C0370401C521E8B079B0F05D007 +:10616000C91ADF002023DE1B08C90AE0EBF72CF870 +:10617000F8BD1D4608C9FD401C46B4402C4310C064 +:10618000121F042AF5D2F308C91A521EF0D40B7854 +:10619000491C0370401C521EEAD40B78491C037042 +:1061A000401C012AE4D409780170F8BD01E004C064 +:1061B000091F0429FBD28B0701D50280801CC90767 +:1061C00000D00270704700290BD0C30702D00270C4 +:1061D000401C491E022904D3830702D50280801C7B +:1061E000891EE3E70022EEE70022DFE70378C278AA +:1061F0001946437812061B0219438378C0781B04A2 +:10620000194311430902090A000608437047020AAC +:1062100008704A70020C8A70020ECA707047002221 +:1062200003098B4273D3030A8B4258D3030B8B426F +:106230003CD3030C8B4221D312E003460B437FD4A3 +:10624000002243088B4274D303098B425FD3030AB5 +:106250008B4244D3030B8B4228D3030C8B420DD3C8 +:10626000FF22090212BA030C8B4202D31212090256 +:1062700065D0030B8B4219D300E0090AC30B8B4294 +:1062800001D3CB03C01A5241830B8B4201D38B0342 +:10629000C01A5241430B8B4201D34B03C01A5241E7 +:1062A000030B8B4201D30B03C01A5241C30A8B422A +:1062B00001D3CB02C01A5241830A8B4201D38B0215 +:1062C000C01A5241430A8B4201D34B02C01A5241B9 +:1062D000030A8B4201D30B02C01A5241CDD2C3092B +:1062E0008B4201D3CB01C01A524183098B4201D3A7 +:1062F0008B01C01A524143098B4201D34B01C01A92 +:10630000524103098B4201D30B01C01A5241C30809 +:106310008B4201D3CB00C01A524183088B4201D378 +:106320008B00C01A524143088B4201D34B00C01A64 +:106330005241411A00D201465241104670475DE079 +:10634000CA0F00D04942031000D3404253400022FC +:106350009C4603098B422DD3030A8B4212D3FC22A5 +:10636000890112BA030A8B420CD3890192118B4224 +:1063700008D3890192118B4204D389013AD092113A +:1063800000E08909C3098B4201D3CB01C01A5241F5 +:1063900083098B4201D38B01C01A524143098B42BE +:1063A00001D34B01C01A524103098B4201D30B01A7 +:1063B000C01A5241C3088B4201D3CB00C01A5241CC +:1063C00083088B4201D38B00C01A5241D9D24308B3 +:1063D0008B4201D34B00C01A5241411A00D20146F0 +:1063E000634652415B10104601D34042002B00D55A +:1063F0004942704763465B1000D3404201B500201C +:10640000C046C04602BD70477047704710B500F0E7 +:106410003BF810BD012308CB134B1860134B1960D8 +:10642000134B1A607047134A134B13607246053AB8 +:10643000F0E7114A0F4B1B689A420ED10D4B00201A +:10644000186001980D4B04B598470CBC9E46024657 +:10645000029800990A4B1B68184706980599094B42 +:106460001B68DB6818470000340100203801002059 +:106470003C0100202C010020EFBEADDEC9CD0000A4 +:10648000E4000020040000201D481E497047FFF76B +:10649000FBFFEAF753FE00BD01200007C06AC0B24F +:1064A000FF2804D1184819490968884202D01848C1 +:1064B00018490160184819490968884203D1184AE7 +:1064C00013605B68184700BD20BFFDE71248134901 +:1064D000096888420ED1134B18680B498842F3D0E3 +:1064E00080F308881049884204DD104802680221C0 +:1064F0000A4302600E4880470E4880470E48004716 +:106500000015002000150020FFFFFFFF0010001005 +:106510002C050040080000000010000000000020D2 +:10652000040000200080010000200020240500401D +:10653000DFCD000099640100156401001348704527 +:1065400002D1EFF3098101E0EFF308818869023895 +:106550000078102814DB202810DB2B280BDB0C4ADA +:1065600012680C4B9A4203D1602804DB0A4A104798 +:10657000022008607047094A10470000084A104787 +:10658000084A12682C32126810470000FDFFFFFF16 +:1065900078000020BEBAFECAAD1200003D4E0100D8 +:1065A000BF4D0100040000200D4B0E4908470E4B63 +:1065B0000C4908470D4B0B4908470D4B0949084743 +:1065C0000C4B084908470C4B064908470B4B05493B +:1065D00008470B4B034908470A4B0249084700008C +:1065E00079250000192200009D2B00003F2A0000A1 +:1065F000ED2900009F270000B912000013140000CD +:10660000012B00000F23000030B47446641E25786F +:10661000641CAB4200D21D46635D5B00E31830BCD6 +:10662000184703B5684600784006400E401C884273 +:1066300005D269460878401CC0B208700CBD684697 +:106640000078000601D500200CBD80200CBD414023 +:10665000802901D0002070470120704737B50878A5 +:106660000C4669460978884206D020781146FFF723 +:10667000D8FF207001203EBD00203EBD37B5044646 +:106680000078154669460979FFF7E1FF002801D037 +:1066900000203EBD20782946FFF7C3FF207001206F +:1066A0003EBD0FB568460179007881420AD0684640 +:1066B000007922214006400E4843801818600120CE +:1066C00004B000BD0020FBE77FB5684601791C4699 +:1066D00015460078FFF7BBFF002802D0002004B069 +:1066E00070BD6846007822214006400E484340199C +:1066F00020600120F3E70000FFFFFFFF0000FFFF25 +:106700000100030000000100000000000000000084 +:1067100000000000000000008700000000000000F2 +:10672000000000000000000000000001020304005F +:106730000D0E0F100000000033690000516B0000C7 +:10674000196C0000736C0000C76C00002F6D000016 +:106750008D690000456A0000D16D0000DF790000FE +:10676000100110013A0200001A02000004013C006E +:10677000230044000E0001020408102040805555FB +:1067800055D6BE898E0000007006120DB4130000AD +:1067900014035A06A00900006004F208840DF401F5 +:1067A000FA00960064004B0032001E001400000046 +:1067B000E067010008000020100000000411000044 +:1067C000F0670100180000202801000004110000FB +:1067D0001869010040010020C013000020110000D2 +:1067E0000249022208681042FCD0704700E200E033 +:1067F0000000000000000000000000000000000099 +:106800000000000000000000000000000000000088 +:106810000000000000000000000000000000000078 +:10682000000000000100010054000020FB349B5FC9 +:106830008000008000100000000000000000000048 +:106840000000000000000000000000000000000048 +:106850000000000001000000000000000000000037 +:106860000000000000000000000000000000000028 +:106870000000000000000000000000000000000018 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000000000F8 +:1068A00000000000000000000000000000000000E8 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000000000000000000000C8 +:1068D00000000000000000000000000000000000B8 +:1068E00000000000000000000000000000000000A8 +:1068F0000000000000000000000000000000000098 +:106900000000000000000000196401000000000009 +:0869100000000000000000007F +:00000001FF From 382f7334fb87c7430a0810ce65ac79747913ad82 Mon Sep 17 00:00:00 2001 From: Jonathan Austin Date: Thu, 16 Jul 2015 15:59:54 +0300 Subject: [PATCH 08/19] Nordic: added the s110 scatter files This commit adds the ability for a compile flag to be set from targets.py which changes the soft device to s110. The compile flag is: MCU_NRF51_16K_S110. In order to avoid duplication of the startup file, for the 16K parts we introduce an S110 or S130 scatter file. This means all 16K platforms must define MCU_NRF51_16K and ONE of MCU_NRF51_16K_S110 or MCU_NRF51_16K_S130 Based on an earlier commit by Mihail but modified to avoid copy/paste of the startup code for S110/S130 Signed-off-by: Jonathan Austin --- .../TARGET_MCU_NRF51_16K_S110/nRF51822.sct | 24 +++ .../nRF51822.sct | 0 .../TARGET_MCU_NRF51_16K_S110/NRF51822.ld | 151 ++++++++++++++++++ .../NRF51822.ld | 0 workspace_tools/targets.py | 69 ++++++-- 5 files changed, 233 insertions(+), 11 deletions(-) create mode 100644 libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S110/nRF51822.sct rename libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/{TARGET_MCU_NORDIC_16K => TARGET_MCU_NRF51_16K_S130}/nRF51822.sct (100%) create mode 100644 libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NRF51_16K_S110/NRF51822.ld rename libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/{TARGET_MCU_NORDIC_16K => TARGET_MCU_NRF51_16K_S130}/NRF51822.ld (100%) diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S110/nRF51822.sct b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S110/nRF51822.sct new file mode 100644 index 0000000000..62638400f2 --- /dev/null +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S110/nRF51822.sct @@ -0,0 +1,24 @@ +;WITHOUT SOFTDEVICE: +;LR_IROM1 0x00000000 0x00040000 { +; ER_IROM1 0x00000000 0x00040000 { +; *.o (RESET, +First) +; *(InRoot$$Sections) +; .ANY (+RO) +; } +; RW_IRAM1 0x20000000 0x00004000 { +; .ANY (+RW +ZI) +; } +;} +; +;WITH SOFTDEVICE: + +LR_IROM1 0x18000 0x0028000 { + ER_IROM1 0x18000 0x0028000 { + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x20002000 0x00002000 { + .ANY (+RW +ZI) + } +} diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NORDIC_16K/nRF51822.sct b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S130/nRF51822.sct similarity index 100% rename from libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NORDIC_16K/nRF51822.sct rename to libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S130/nRF51822.sct diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NRF51_16K_S110/NRF51822.ld b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NRF51_16K_S110/NRF51822.ld new file mode 100644 index 0000000000..43e0ac80da --- /dev/null +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NRF51_16K_S110/NRF51822.ld @@ -0,0 +1,151 @@ +/* Linker script to configure memory regions. */ + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x00016000, LENGTH = 0x2A000 + RAM (rwx) : ORIGIN = 0x20002000, LENGTH = 0x2000 +} + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be defined in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __end__ + * end + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + */ +ENTRY(Reset_Handler) + +SECTIONS +{ + .text : + { + KEEP(*(.Vectors)) + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + + KEEP(*(.eh_frame*)) + } > FLASH + + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + __etext = .; + + .data : AT (__etext) + { + __data_start__ = .; + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + *(.jcr) + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __end__ = .; + end = __end__; + *(.heap*) + __HeapLimit = .; + } > RAM + + /* .stack_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later */ + .stack_dummy (COPY): + { + *(.stack*) + } > RAM + + /* Set stack top to end of RAM, and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(RAM) + LENGTH(RAM); + __StackLimit = __StackTop - SIZEOF(.stack_dummy); + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") +} diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NORDIC_16K/NRF51822.ld b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NRF51_16K_S130/NRF51822.ld similarity index 100% rename from libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NORDIC_16K/NRF51822.ld rename to libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NRF51_16K_S130/NRF51822.ld diff --git a/workspace_tools/targets.py b/workspace_tools/targets.py index 78d4b1670f..08266b75be 100755 --- a/workspace_tools/targets.py +++ b/workspace_tools/targets.py @@ -1017,30 +1017,77 @@ class MCU_NRF51(Target): binh.tofile(f, format='hex') +# 16KB Nordic targets are tight on SRAM using S130 (default) so we +# introduce two possible options: +# 1) Use S130 (default) - for this derive from MCU_NRF51_16K +# 2) Use S110 - for this derive from MCU_NRF51_16K_S110 +# Note that the 'default' option will track the default choice +# for other Nordic targets, and so can take advantage of other +# future SoftDevice improvements + +# The *_BASE targets should *not* be inherited from, as they do not +# specify enough for building a target + # 16KB MCU version, e.g. Nordic nRF51822, Seeed Arch BLE, etc. -class MCU_NRF51_16K(MCU_NRF51): +class MCU_NRF51_16K_BASE(MCU_NRF51): def __init__(self): MCU_NRF51.__init__(self) self.extra_labels += ['MCU_NORDIC_16K', 'MCU_NRF51_16K'] self.macros += ['TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K'] # derivative class used to create softdevice+bootloader enabled images -class MCU_NRF51_16K_BOOT(MCU_NRF51_16K): +class MCU_NRF51_16K_BOOT_BASE(MCU_NRF51_16K_BASE): def __init__(self): - MCU_NRF51_16K.__init__(self) + MCU_NRF51_16K_BASE.__init__(self) self.extra_labels += ['MCU_NRF51_16K_BOOT'] self.macros += ['TARGET_MCU_NRF51_16K_BOOT', 'TARGET_OTA_ENABLED'] self.MERGE_SOFT_DEVICE = True self.MERGE_BOOTLOADER = True # derivative class used to create program only images for use with FOTA -class MCU_NRF51_16K_OTA(MCU_NRF51_16K): +class MCU_NRF51_16K_OTA_BASE(MCU_NRF51_16K_BASE): def __init__(self): - MCU_NRF51_16K.__init__(self) + MCU_NRF51_16K_BASE.__init__(self) self.extra_labels += ['MCU_NRF51_16K_OTA'] self.macros += ['TARGET_MCU_NRF51_16K_OTA', 'TARGET_OTA_ENABLED'] self.MERGE_SOFT_DEVICE = False +class MCU_NRF51_16K(MCU_NRF51_16K_BASE): + def __init__(self): + MCU_NRF51_16K_BASE.__init__(self) + self.extra_labels += ['MCU_NRF51_16K_S130'] + self.macros += ['TARGET_MCU_NRF51_16K_S130'] + +class MCU_NRF51_16K_S110(MCU_NRF51_16K_BASE): + def __init__(self): + MCU_NRF51_16K_BASE.__init__(self) + self.extra_labels += ['MCU_NRF51_16K_S110'] + self.macros += ['TARGET_MCU_NRF51_16K_S110'] + +class MCU_NRF51_16K_BOOT(MCU_NRF51_16K_BOOT_BASE): + def __init__(self): + MCU_NRF51_16K_BOOT_BASE.__init__(self) + self.extra_labels += ['MCU_NRF51_16K_S130'] + self.macros += ['TARGET_MCU_NRF51_16K_S130'] + +class MCU_NRF51_16K_BOOT_S110(MCU_NRF51_16K_BOOT_BASE): + def __init__(self): + MCU_NRF51_16K_BOOT_BASE.__init__(self) + self.extra_labels += ['MCU_NRF51_16K_S110'] + self.macros += ['TARGET_MCU_NRF51_16K_S110'] + +class MCU_NRF51_16K_OTA(MCU_NRF51_16K_OTA_BASE): + def __init__(self): + MCU_NRF51_16K_OTA_BASE.__init__(self) + self.extra_labels += ['MCU_NRF51_16K_S130'] + self.macros += ['TARGET_MCU_NRF51_16K_S130'] + +class MCU_NRF51_16K_OTA_S110(MCU_NRF51_16K_OTA_BASE): + def __init__(self): + MCU_NRF51_16K_OTA_BASE.__init__(self) + self.extra_labels += ['MCU_NRF51_16K_S110'] + self.macros += ['TARGET_MCU_NRF51_16K_S110'] + # 32KB MCU version, e.g. Nordic nRF51-DK, nRF51-Dongle, etc. class MCU_NRF51_32K(MCU_NRF51): @@ -1247,9 +1294,9 @@ class NRF51_DONGLE_OTA(MCU_NRF51_32K_OTA): self.extra_labels = ['NRF51_DONGLE'] self.macros += ['TARGET_NRF51_DONGLE'] -class NRF51_MICROBIT(MCU_NRF51_16K): +class NRF51_MICROBIT(MCU_NRF51_16K_S110): def __init__(self): - MCU_NRF51_16K.__init__(self) + MCU_NRF51_16K_S110.__init__(self) self.EXPECTED_SOFTDEVICES_WITH_OFFSETS = [ { 'name' : 's110_nrf51822_8.0.0_softdevice.hex', @@ -1264,15 +1311,15 @@ class NRF51_MICROBIT(MCU_NRF51_16K): ] self.macros += ['TARGET_NRF_LFCLK_RC'] -class NRF51_MICROBIT_BOOT(MCU_NRF51_16K_BOOT): +class NRF51_MICROBIT_BOOT(MCU_NRF51_16K_BOOT_S110): def __init__(self): - MCU_NRF51_16K_BOOT.__init__(self) + MCU_NRF51_16K_BOOT_S110.__init__(self) self.extra_labels += ['NRF51_MICROBIT'] self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC'] -class NRF51_MICROBIT_OTA(MCU_NRF51_16K_OTA): +class NRF51_MICROBIT_OTA(MCU_NRF51_16K_OTA_S110): def __init__(self): - MCU_NRF51_16K_OTA.__init__(self) + MCU_NRF51_16K_OTA_S110.__init__(self) self.extra_labels += ['NRF51_MICROBIT'] self.macros += ['TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC'] From 0ee410d831c2662bd5cf78e6b95da32e9d5ef116 Mon Sep 17 00:00:00 2001 From: Jonathan Austin Date: Fri, 24 Jul 2015 16:08:45 +0100 Subject: [PATCH 09/19] Move HRM and DELTA targets to use LFCLK define After this change it will no longer be necessary to list all the platforms that require the LFCKL to be the internal RC oscillator, instead we specify it as a property of the platform. Applications and libraries can use the TARGET_NRF_LFCLK_RC symbol to filter for platforms that don't have an external crystal. Signed-off-by: Jonathan Austin --- workspace_tools/targets.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/workspace_tools/targets.py b/workspace_tools/targets.py index 08266b75be..8b22539b6a 100755 --- a/workspace_tools/targets.py +++ b/workspace_tools/targets.py @@ -1172,18 +1172,19 @@ class SEEED_TINY_BLE_OTA(MCU_NRF51_16K_OTA): class HRM1017(MCU_NRF51_16K): def __init__(self): MCU_NRF51_16K.__init__(self) + self.macros += ['TARGET_NRF_LFCLK_RC'] class HRM1017_BOOT(MCU_NRF51_16K_BOOT): def __init__(self): MCU_NRF51_16K_BOOT.__init__(self) self.extra_labels += ['HRM1017'] - self.macros += ['TARGET_HRM1017'] + self.macros += ['TARGET_HRM1017', 'TARGET_NRF_LFCLK_RC'] class HRM1017_OTA(MCU_NRF51_16K_OTA): def __init__(self): MCU_NRF51_16K_OTA.__init__(self) self.extra_labels += ['HRM1017'] - self.macros += ['TARGET_HRM1017'] + self.macros += ['TARGET_HRM1017', 'TARGET_NRF_LFCLK_RC'] class RBLAB_NRF51822(MCU_NRF51_16K): def __init__(self): @@ -1243,18 +1244,19 @@ class WALLBOT_BLE_OTA(MCU_NRF51_16K_OTA): class DELTA_DFCM_NNN40(MCU_NRF51_16K): def __init__(self): MCU_NRF51_16K.__init__(self) + self.macros += ['TARGET_NRF_LFCLK_RC'] class DELTA_DFCM_NNN40_BOOT(MCU_NRF51_16K_BOOT): def __init__(self): MCU_NRF51_16K_BOOT.__init__(self) self.extra_labels += ['DELTA_DFCM_NNN40'] - self.macros += ['TARGET_DELTA_DFCM_NNN40'] + self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC'] class DELTA_DFCM_NNN40_OTA(MCU_NRF51_16K_OTA): def __init__(self): MCU_NRF51_16K_OTA.__init__(self) self.extra_labels += ['DELTA_DFCM_NNN40'] - self.macros += ['TARGET_DELTA_DFCM_NNN40'] + self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC'] class NRF51_DK(MCU_NRF51_32K): def __init__(self): From c285f2e1d3e714f5b8675b15cb4cc8fea20dbb91 Mon Sep 17 00:00:00 2001 From: Jonathan Austin Date: Tue, 21 Jul 2015 13:56:24 +0100 Subject: [PATCH 10/19] Nordic: refactor the way we select the LFCLKSRC Rather than indefinitely adding platforms to a #define list that use the internal RC oscillator instead of an external crystal, let platforms define this and the 'core code' can be platform agnostic. Note, that this also allows people to use this symbol in libraries. There's one notable example in the BLE_API that can now be refactored to the same method, hopefully saving someone some unpleasant debugging when their platform doesn't work because of a missing platform dependent define in the high level API. Signed-off-by: Jonathan Austin --- .../cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c index 76857bb161..dd4fc2bf4f 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c +++ b/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51.c @@ -83,7 +83,8 @@ void SystemInit(void) // Start the external 32khz crystal oscillator. -#if defined(TARGET_DELTA_DFCM_NNN40) || defined(TARGET_HRM1017) || defined(TARGET_NRF_LFCLK_RC) + /* for Nordic devices without an external LF crystal */ +#if defined(TARGET_NRF_LFCLK_RC) NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_RC << CLOCK_LFCLKSRC_SRC_Pos); #else NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos); From 50fca30a2f54ca32990d087a1c8ca5f65f260964 Mon Sep 17 00:00:00 2001 From: James Devine Date: Fri, 24 Jul 2015 13:36:21 +0100 Subject: [PATCH 11/19] microbit: Added NRF51_MICROBIT_B to build_release.py Added NRF51_MICROBIT_B to build_release.py so this platform can be built for release. --- workspace_tools/build_release.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workspace_tools/build_release.py b/workspace_tools/build_release.py index 6eea308dbf..d8946d81b5 100755 --- a/workspace_tools/build_release.py +++ b/workspace_tools/build_release.py @@ -85,13 +85,14 @@ OFFICIAL_MBED_LIBRARY_BUILD = ( ('NRF51_DK', ('ARM', 'GCC_ARM', 'IAR')), ('NRF51_DONGLE', ('ARM', 'GCC_ARM', 'IAR')), ('HRM1017', ('ARM', 'GCC_ARM', 'IAR')), - ('NRF51_MICROBIT', ('ARM')), ('ARCH_BLE', ('ARM', 'GCC_ARM', 'IAR')), ('SEEED_TINY_BLE', ('ARM', 'GCC_ARM', 'IAR')), ('RBLAB_NRF51822', ('ARM', 'GCC_ARM')), ('RBLAB_BLENANO', ('ARM', 'GCC_ARM')), ('WALLBOT_BLE', ('ARM', 'GCC_ARM')), ('DELTA_DFCM_NNN40', ('ARM', 'GCC_ARM')), + ('NRF51_MICROBIT', ('ARM')), + ('NRF51_MICROBIT_B', ('ARM')), ('LPC11U68', ('ARM', 'uARM','GCC_ARM','GCC_CR', 'IAR')), ('OC_MBUINO', ('ARM', 'uARM', 'GCC_ARM', 'IAR')), From 633b57e2091e85d367e278e19fdf862f2a361ff0 Mon Sep 17 00:00:00 2001 From: James Devine Date: Fri, 24 Jul 2015 16:34:43 +0100 Subject: [PATCH 12/19] Nordic: Enabled the invocation of twi_master.h functions from a cpp context In a previous commit, the content of twi_master.h did not allow the invocation of the c functions specified by the file from a cpp context. This commit wraps the contents of the header file with the appropriate ifdefs. --- .../hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h index 10dea52b84..6eba24dfb2 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/twi_master.h @@ -13,6 +13,11 @@ #ifndef TWI_MASTER_H #define TWI_MASTER_H + +#ifdef __cplusplus +extern "C" { +#endif + /*lint ++flb "Enter library region" */ #include @@ -95,5 +100,9 @@ bool twi_master_transfer(uint8_t address, uint8_t *data, uint8_t data_length, bo *@} **/ +#ifdef __cplusplus +} +#endif + /*lint --flb "Leave library region" */ #endif //TWI_MASTER_H From 20888331af4ec78e15683b854e1999a64e866d42 Mon Sep 17 00:00:00 2001 From: hjjeon0608 Date: Tue, 28 Jul 2015 11:19:08 +0900 Subject: [PATCH 13/19] Deleted not used variable. Deleted else if and using GPIO offset address. Added GPIO out enable set/clear functions. --- .../TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.c | 12 +- .../TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.h | 5 +- .../TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c | 155 +++--------------- .../hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c | 4 +- 4 files changed, 37 insertions(+), 139 deletions(-) diff --git a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.c b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.c index 2ff35ac88d..7ee38aa721 100644 --- a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.c +++ b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.c @@ -176,7 +176,7 @@ uint8_t HAL_GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) return bitstatus; } -uint8_t HAL_GPIO_ReadInputData(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +uint16_t HAL_GPIO_ReadInputData(GPIO_TypeDef* GPIOx) { assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); return ((uint16_t)GPIOx->DATA); @@ -286,3 +286,13 @@ void HAL_PAD_AFConfig(PAD_Type Px, uint16_t GPIO_Pin, PAD_AF_TypeDef P_AF) } } +void GPIO_OutEnClr(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +{ + GPIOx->OUTENCLR = GPIO_Pin; +} + +void GPIO_OutEnSet(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +{ + GPIOx->OUTENSET = GPIO_Pin; +} + diff --git a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.h b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.h index bb8ae38a09..b8dad4332b 100644 --- a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.h +++ b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_gpio.h @@ -117,7 +117,7 @@ void HAL_GPIO_DeInit(GPIO_TypeDef* GPIOx); void HAL_GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); void HAL_GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); uint8_t HAL_GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); -uint8_t HAL_GPIO_ReadInputData(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +uint16_t HAL_GPIO_ReadInputData(GPIO_TypeDef* GPIOx); uint8_t HAL_GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); uint16_t HAL_GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); void HAL_GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); @@ -126,6 +126,9 @@ void HAL_GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal) void HAL_GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); void HAL_PAD_AFConfig(PAD_Type Px, uint16_t Pnum, PAD_AF_TypeDef P_AF); +void GPIO_OutEnClr(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_OutEnSet(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); + #ifdef __cplusplus } diff --git a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c index 9ce41f55b8..01ea720476 100644 --- a/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c +++ b/libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_i2c.c @@ -50,61 +50,17 @@ uint32_t I2C_Init(I2C_ConfigStruct* conf) GPIO_InitDef.GPIO_Pin = scl_pin_index; GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; - if(scl_port_num == 0) - { - HAL_GPIO_Init(GPIOA, &GPIO_InitDef); - HAL_GPIO_SetBits(GPIOA, scl_pin_index); - } - else if(scl_port_num == 1) - { - HAL_GPIO_Init(GPIOB, &GPIO_InitDef); - HAL_GPIO_SetBits(GPIOB, scl_pin_index); - } - else if(scl_port_num == 2) - { - HAL_GPIO_Init(GPIOC, &GPIO_InitDef); - HAL_GPIO_SetBits(GPIOC, scl_pin_index); - } - else if(scl_port_num == 3) - { - HAL_GPIO_Init(GPIOD, &GPIO_InitDef); - HAL_GPIO_SetBits(GPIOD, scl_pin_index); - } - else - { - printf("SCL pin Port number error\r\n"); - return 1; - } + HAL_GPIO_Init((GPIO_TypeDef*)(GPIOA_BASE + (scl_port_num << 24)), &GPIO_InitDef); + HAL_GPIO_SetBits((GPIO_TypeDef*)(GPIOA_BASE + (scl_port_num << 24)), scl_pin_index); //SDA setting GPIO_InitDef.GPIO_Pin = sda_pin_index; GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN; - if(sda_port_num == 0) - { - HAL_GPIO_Init(GPIOA, &GPIO_InitDef); - HAL_GPIO_ResetBits(GPIOA, sda_pin_index); - } - else if(sda_port_num == 1) - { - HAL_GPIO_Init(GPIOB, &GPIO_InitDef); - HAL_GPIO_ResetBits(GPIOB, sda_pin_index); - } - else if(sda_port_num == 2) - { - HAL_GPIO_Init(GPIOC, &GPIO_InitDef); - HAL_GPIO_ResetBits(GPIOC, sda_pin_index); - } - else if(sda_port_num == 3) - { - HAL_GPIO_Init(GPIOD, &GPIO_InitDef); - HAL_GPIO_ResetBits(GPIOD, sda_pin_index); - } - else - { - printf("SDA pin Port number error\r\n"); - return 1; - } + HAL_GPIO_Init((GPIO_TypeDef*)(GPIOA_BASE + (sda_port_num << 24)), &GPIO_InitDef); + HAL_GPIO_ResetBits((GPIO_TypeDef*)(GPIOA_BASE + (sda_port_num << 24)), sda_pin_index); + + //Pin muxing HAL_PAD_AFConfig(scl_port_num, scl_pin_index, PAD_AF1); HAL_PAD_AFConfig(sda_port_num, sda_pin_index, PAD_AF1); @@ -116,34 +72,11 @@ void I2C_WriteBitSCL(I2C_ConfigStruct* conf, uint8_t data) uint32_t scl_port_num = I2C_PORT(conf->scl); uint32_t scl_pin_index = I2C_PIN_INDEX(conf->scl); - if(scl_port_num == 0) - { - if(data == 1) - HAL_GPIO_SetBits(GPIOA, scl_pin_index); - else - HAL_GPIO_ResetBits(GPIOA, scl_pin_index); - } - else if(scl_port_num == 1) - { - if(data == 1) - HAL_GPIO_SetBits(GPIOB, scl_pin_index); - else - HAL_GPIO_ResetBits(GPIOB, scl_pin_index); - } - else if(scl_port_num == 2) - { - if(data == 1) - HAL_GPIO_SetBits(GPIOC, scl_pin_index); - else - HAL_GPIO_ResetBits(GPIOC, scl_pin_index); - } - else if(scl_port_num == 3) - { - if(data == 1) - HAL_GPIO_SetBits(GPIOD, scl_pin_index); - else - HAL_GPIO_ResetBits(GPIOD, scl_pin_index); - } + if(data == 1) + HAL_GPIO_SetBits((GPIO_TypeDef*)(GPIOA_BASE + (scl_port_num << 24)), scl_pin_index); + else + HAL_GPIO_ResetBits((GPIO_TypeDef*)(GPIOA_BASE + (scl_port_num << 24)), scl_pin_index); + } void I2C_WriteBitSDA(I2C_ConfigStruct* conf, uint8_t data) @@ -151,34 +84,11 @@ void I2C_WriteBitSDA(I2C_ConfigStruct* conf, uint8_t data) uint32_t sda_port_num = I2C_PORT(conf->sda); uint32_t sda_pin_index = I2C_PIN_INDEX(conf->sda); - if(sda_port_num == 0) - { - if(data == 1) - GPIOA->OUTENCLR = sda_pin_index; - else - GPIOA->OUTENSET = sda_pin_index; - } - else if(sda_port_num == 1) - { - if(data == 1) - GPIOB->OUTENCLR = sda_pin_index; - else - GPIOB->OUTENSET = sda_pin_index; - } - else if(sda_port_num == 2) - { - if(data == 1) - GPIOC->OUTENCLR = sda_pin_index; - else - GPIOC->OUTENSET = sda_pin_index; - } - else if(sda_port_num == 3) - { - if(data == 1) - GPIOD->OUTENCLR = sda_pin_index; - else - GPIOD->OUTENSET = sda_pin_index; - } + if(data == 1) + GPIO_OutEnClr((GPIO_TypeDef*)(GPIOA_BASE + (sda_port_num << 24)), sda_pin_index); + else + GPIO_OutEnSet((GPIO_TypeDef*)(GPIOA_BASE + (sda_port_num << 24)), sda_pin_index); + } uint8_t I2C_ReadBitSDA(I2C_ConfigStruct* conf) @@ -186,34 +96,11 @@ uint8_t I2C_ReadBitSDA(I2C_ConfigStruct* conf) uint32_t sda_port_num = I2C_PORT(conf->sda); uint32_t sda_pin_index = I2C_PIN_INDEX(conf->sda); - if(sda_port_num == 0) - { - if(GPIOA->DATA & sda_pin_index) - return 1; - else - return 0; - } - else if(sda_port_num == 1) - { - if(GPIOB->DATA & sda_pin_index) - return 1; - else - return 0; - } - else if(sda_port_num == 2) - { - if(GPIOC->DATA & sda_pin_index) - return 1; - else - return 0; - } - else if(sda_port_num == 3) - { - if(GPIOD->DATA & sda_pin_index) - return 1; - else - return 0; - } + if(HAL_GPIO_ReadInputDataBit((GPIO_TypeDef*)(GPIOA_BASE + (sda_port_num << 24)), sda_pin_index)) + return 1; + else + return 0; + return 0; } diff --git a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c index 2e56413f43..d8bf78ceea 100644 --- a/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c +++ b/libraries/mbed/targets/hal/TARGET_WIZNET/TARGET_W7500x/i2c_api.c @@ -99,8 +99,7 @@ inline int i2c_stop(i2c_t *obj) int i2c_read(i2c_t *obj, int address, char *data, int length, int stop) { I2C_ConfigStruct conf; - int i; - + conf.sda = (I2C_PinName)obj->sda; conf.scl = (I2C_PinName)obj->scl; @@ -123,7 +122,6 @@ int i2c_read(i2c_t *obj, int address, char *data, int length, int stop) int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop) { I2C_ConfigStruct conf; - int i; conf.sda = (I2C_PinName)obj->sda; conf.scl = (I2C_PinName)obj->scl; From db8697c32186d32322bbf1f53a595642e2bc1a3b Mon Sep 17 00:00:00 2001 From: Kevin Gillespie Date: Tue, 28 Jul 2015 13:55:22 -0500 Subject: [PATCH 14/19] [MAXWSNENV, MAX32600MBED] Fixing pwm array search. --- .../targets/hal/TARGET_Maxim/TARGET_MAX32600/pwmout_api.c | 4 ++-- .../targets/hal/TARGET_Maxim/TARGET_MAX32610/pwmout_api.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32600/pwmout_api.c b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32600/pwmout_api.c index 1a412248de..39eeb75fe9 100644 --- a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32600/pwmout_api.c +++ b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32600/pwmout_api.c @@ -77,9 +77,9 @@ void pwmout_init(pwmout_t* obj, PinName pin) } // If all instances are in use, overwrite the last - pwm = PinMap_PWM[++i]; + pwm = PinMap_PWM[i++]; if(pwm.pin != pin) { - pwm = PinMap_PWM[--i]; + pwm = PinMap_PWM[(i-1)]; i = -1; break; } diff --git a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/pwmout_api.c b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/pwmout_api.c index 1a412248de..39eeb75fe9 100644 --- a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/pwmout_api.c +++ b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/pwmout_api.c @@ -77,9 +77,9 @@ void pwmout_init(pwmout_t* obj, PinName pin) } // If all instances are in use, overwrite the last - pwm = PinMap_PWM[++i]; + pwm = PinMap_PWM[i++]; if(pwm.pin != pin) { - pwm = PinMap_PWM[--i]; + pwm = PinMap_PWM[(i-1)]; i = -1; break; } From 2cb58075f781372b2f1c8e924d920bb509bb510a Mon Sep 17 00:00:00 2001 From: Jay Francis Date: Wed, 29 Jul 2015 11:42:58 -0400 Subject: [PATCH 15/19] Removed PB6 debug toggling --- .../TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F070RB/hal_tick.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F070RB/hal_tick.c b/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F070RB/hal_tick.c index d2b52d2b41..34f30d2d91 100644 --- a/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F070RB/hal_tick.c +++ b/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F070RB/hal_tick.c @@ -89,7 +89,7 @@ void timer_oc_irq_handler(void) // Prepare next interrupt __HAL_TIM_SetCompare(&TimMasterHandle, TIM_CHANNEL_2, val + HAL_TICK_DELAY); PreviousVal = val; -#if 1 // For DEBUG only +#if 0 // For DEBUG only HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_6); #endif } @@ -140,7 +140,7 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { // Enable timer HAL_TIM_Base_Start(&TimMasterHandle); -#if 1 // For DEBUG only +#if 0 // For DEBUG only __GPIOB_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_6; From 2075adfd808d7c72001359d55db399e55690283e Mon Sep 17 00:00:00 2001 From: dbestm Date: Wed, 29 Jul 2015 13:06:04 +0200 Subject: [PATCH 16/19] [DISCO_L053C8] enhance python file for uvision exporter --- workspace_tools/export/uvision4.py | 3 +++ workspace_tools/export_test.py | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/workspace_tools/export/uvision4.py b/workspace_tools/export/uvision4.py index 2667492b30..40305d9a6b 100644 --- a/workspace_tools/export/uvision4.py +++ b/workspace_tools/export/uvision4.py @@ -67,6 +67,7 @@ class Uvision4(Exporter): 'DISCO_L053C8', 'DISCO_F334C8', 'DISCO_F746NG', + 'DISCO_L476VG', 'MTS_GAMBIT', 'ARCH_MAX', 'MTS_MDOT_F405RG', @@ -99,8 +100,10 @@ class Uvision4(Exporter): 'NUCLEO_L053R8', 'NUCLEO_L073RZ', 'NUCLEO_L152RE', + 'DISCO_L053C8', 'DISCO_F334C8', 'DISCO_F746NG', + 'DISCO_L476VG', 'LPC1549', 'LPC11U68', 'LPC11U35_501', diff --git a/workspace_tools/export_test.py b/workspace_tools/export_test.py index 887fd4c917..f31befaced 100755 --- a/workspace_tools/export_test.py +++ b/workspace_tools/export_test.py @@ -135,8 +135,10 @@ if __name__ == '__main__': ('uvision', 'MTS_MDOT_F405RG'), ('uvision', 'MAXWSNENV'), ('uvision', 'MAX32600MBED'), + ('uvision', 'DISCO_L053C8'), ('uvision', 'DISCO_F334C8'), ('uvision', 'DISCO_F746NG'), + ('uvision', 'DISCO_L476VG'), ('lpcxpresso', 'LPC1768'), ('lpcxpresso', 'LPC4088'), @@ -170,6 +172,7 @@ if __name__ == '__main__': ('gcc_arm', 'DISCO_F051R8'), ('gcc_arm', 'DISCO_F407VG'), ('gcc_arm', 'DISCO_F303VC'), + ('gcc_arm', 'DISCO_L053C8'), ('gcc_arm', 'DISCO_F334C8'), ('gcc_arm', 'DISCO_L053C8'), ('gcc_arm', 'DISCO_F746NG'), @@ -220,8 +223,10 @@ if __name__ == '__main__': ('iar', 'NUCLEO_L053R8'), ('iar', 'NUCLEO_L073RZ'), ('iar', 'NUCLEO_L152RE'), + ('iar', 'DISCO_L053C8'), ('iar', 'DISCO_F334C8'), ('iar', 'DISCO_F746NG'), + ('iar', 'DISCO_L476VG'), ('iar', 'STM32F407'), ('iar', 'MTS_MDOT_F405RG'), ('iar', 'MTS_MDOT_F411RE'), From be49cca1a103bd4c4d00c046d665e9015d17eb46 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 4 Aug 2015 15:08:53 +0800 Subject: [PATCH 17/19] Change DELTA_DFCM_NNN40 ram size to 32KB config --- workspace_tools/targets.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/workspace_tools/targets.py b/workspace_tools/targets.py index 8b22539b6a..e047400017 100755 --- a/workspace_tools/targets.py +++ b/workspace_tools/targets.py @@ -1241,22 +1241,31 @@ class WALLBOT_BLE_OTA(MCU_NRF51_16K_OTA): self.extra_labels += ['WALLBOT_BLE'] self.macros += ['TARGET_WALLBOT_BLE'] -class DELTA_DFCM_NNN40(MCU_NRF51_16K): +class DELTA_DFCM_NNN40(MCU_NRF51_32K): def __init__(self): - MCU_NRF51_16K.__init__(self) + MCU_NRF51_32K.__init__(self) + self.supported_toolchains = ["ARM", "GCC_ARM"] self.macros += ['TARGET_NRF_LFCLK_RC'] + def program_cycle_s(self): + return 10 -class DELTA_DFCM_NNN40_BOOT(MCU_NRF51_16K_BOOT): +class DELTA_DFCM_NNN40_BOOT(MCU_NRF51_32K_BOOT): def __init__(self): - MCU_NRF51_16K_BOOT.__init__(self) + MCU_NRF51_32K_BOOT.__init__(self) + self.supported_toolchains = ["ARM", "GCC_ARM"] self.extra_labels += ['DELTA_DFCM_NNN40'] self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC'] + def program_cycle_s(self): + return 10 -class DELTA_DFCM_NNN40_OTA(MCU_NRF51_16K_OTA): +class DELTA_DFCM_NNN40_OTA(MCU_NRF51_32K_OTA): def __init__(self): - MCU_NRF51_16K_OTA.__init__(self) + MCU_NRF51_32K_OTA.__init__(self) + self.supported_toolchains = ["ARM", "GCC_ARM"] self.extra_labels += ['DELTA_DFCM_NNN40'] self.macros += ['TARGET_DELTA_DFCM_NNN40', 'TARGET_NRF_LFCLK_RC'] + def program_cycle_s(self): + return 10 class NRF51_DK(MCU_NRF51_32K): def __init__(self): From 0c7ec777f9879379aa923b8cf11c55def5712445 Mon Sep 17 00:00:00 2001 From: Przemek Wirkus Date: Wed, 5 Aug 2015 11:52:23 +0100 Subject: [PATCH 18/19] Added fix for duplicate -D compiler symbols --- workspace_tools/toolchains/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace_tools/toolchains/__init__.py b/workspace_tools/toolchains/__init__.py index 3dd4d1515e..c465704630 100644 --- a/workspace_tools/toolchains/__init__.py +++ b/workspace_tools/toolchains/__init__.py @@ -287,7 +287,7 @@ class mbedToolchain: if hasattr(self.target, 'supported_form_factors'): self.symbols.extend(["TARGET_FF_%s" % t for t in self.target.supported_form_factors]) - return self.symbols + return list(set(self.symbols)) # Return only unique symbols def get_labels(self): if self.labels is None: From 020975119cbf0080f4beb23f7b1fc7c01382f814 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Wed, 5 Aug 2015 14:19:47 +0100 Subject: [PATCH 19/19] mbed lib revision - 104 --- libraries/mbed/api/mbed.h | 2 +- workspace_tools/build_release.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/mbed/api/mbed.h b/libraries/mbed/api/mbed.h index 68bdf520ca..59239ea357 100644 --- a/libraries/mbed/api/mbed.h +++ b/libraries/mbed/api/mbed.h @@ -16,7 +16,7 @@ #ifndef MBED_H #define MBED_H -#define MBED_LIBRARY_VERSION 103 +#define MBED_LIBRARY_VERSION 104 #include "platform.h" diff --git a/workspace_tools/build_release.py b/workspace_tools/build_release.py index d8946d81b5..8ee7437ad7 100755 --- a/workspace_tools/build_release.py +++ b/workspace_tools/build_release.py @@ -91,8 +91,8 @@ OFFICIAL_MBED_LIBRARY_BUILD = ( ('RBLAB_BLENANO', ('ARM', 'GCC_ARM')), ('WALLBOT_BLE', ('ARM', 'GCC_ARM')), ('DELTA_DFCM_NNN40', ('ARM', 'GCC_ARM')), - ('NRF51_MICROBIT', ('ARM')), - ('NRF51_MICROBIT_B', ('ARM')), + ('NRF51_MICROBIT', ('ARM',)), + ('NRF51_MICROBIT_B', ('ARM',)), ('LPC11U68', ('ARM', 'uARM','GCC_ARM','GCC_CR', 'IAR')), ('OC_MBUINO', ('ARM', 'uARM', 'GCC_ARM', 'IAR')),