From 82b6305ffb30ad2848a58bbea82225e809e73659 Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Wed, 23 Dec 2020 13:35:56 +0100 Subject: media: imx8: ar0521 and ar1335 support Add drivers for e-con Systems AR0521 and AR1335 camera modules. Related to: PMS-387 Signed-off-by: Marcel Ziswiler --- arch/arm64/configs/defconfig | 1 + drivers/media/platform/Kconfig | 10 + drivers/media/platform/imx8/Kconfig | 14 + drivers/media/platform/imx8/Makefile | 2 + drivers/media/platform/imx8/ar0521.c | 3619 ++++++++++++++++++++++ drivers/media/platform/imx8/ar0521.h | 291 ++ drivers/media/platform/imx8/ar1335.c | 3625 +++++++++++++++++++++++ drivers/media/platform/imx8/ar1335.h | 291 ++ drivers/media/platform/imx8/ecam131_mcu_fw.txt | 2129 +++++++++++++ drivers/media/platform/imx8/ecam50_cam_fw.txt | 2146 ++++++++++++++ drivers/media/platform/imx8/mcu_firmware.h | 91 + drivers/media/platform/imx8/mcu_firmware_1335.h | 91 + drivers/staging/media/imx/imx8-isi-cap.c | 155 +- drivers/staging/media/imx/imx8-mipi-csi2.c | 96 + include/media/v4l2-subdev.h | 9 + 15 files changed, 12569 insertions(+), 1 deletion(-) create mode 100644 drivers/media/platform/imx8/ar0521.c create mode 100644 drivers/media/platform/imx8/ar0521.h create mode 100644 drivers/media/platform/imx8/ar1335.c create mode 100644 drivers/media/platform/imx8/ar1335.h create mode 100644 drivers/media/platform/imx8/ecam131_mcu_fw.txt create mode 100644 drivers/media/platform/imx8/ecam50_cam_fw.txt create mode 100644 drivers/media/platform/imx8/mcu_firmware.h create mode 100644 drivers/media/platform/imx8/mcu_firmware_1335.h diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 75b0afe64696..4187ca568ed6 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -457,6 +457,7 @@ CONFIG_VIDEO_MXC_CAPTURE=y CONFIG_VIDEO_MXC_CSI_CAMERA=y CONFIG_MXC_MIPI_CSI=y CONFIG_MXC_CAMERA_OV5640_MIPI_V2=m +CONFIG_VIDEO_ECAM=y CONFIG_V4L_MEM2MEM_DRIVERS=y # crashes on i.MX 8M Plus if loaded as a module CONFIG_VIDEO_OV5640=y diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index c1771f54e801..24c2e09ab984 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -183,6 +183,16 @@ config VIDEO_TI_CAL In TI Technical Reference Manual this module is referred as Camera Interface Subsystem (CAMSS). +config VIDEO_ECAM + tristate "e-con camera sensor support" + depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API + ---help--- + This config is used to enable codes which are used to + support econ camera and to disable ISI control codes. + + To compile this driver as a module, choose M here: the module + will be called based on sensor name. + endif # V4L_PLATFORM_DRIVERS menuconfig V4L_MEM2MEM_DRIVERS diff --git a/drivers/media/platform/imx8/Kconfig b/drivers/media/platform/imx8/Kconfig index 9e33a590bb72..2f3ea43bb789 100644 --- a/drivers/media/platform/imx8/Kconfig +++ b/drivers/media/platform/imx8/Kconfig @@ -12,6 +12,20 @@ config IMX8_JPEG select VIDEOBUF2_DMA_CONTIG default m +config MXC_CAMERA_AR0521 + tristate "AR0521 Camera driver support" + depends on I2C && VIDEO_ECAM + default y + help + Enable support for video4linux camera sensor driver for eCAM50_CUIMX8 + +config MXC_CAMERA_AR1335 + tristate "AR1335 Camera driver support" + depends on I2C && VIDEO_ECAM + default y + help + Enable support for video4linux camera sensor driver for eCAM131_CUIMX8 + endmenu endif #VIDEO_MX8_CAPTURE diff --git a/drivers/media/platform/imx8/Makefile b/drivers/media/platform/imx8/Makefile index 15259cf9c13f..b0226f245299 100644 --- a/drivers/media/platform/imx8/Makefile +++ b/drivers/media/platform/imx8/Makefile @@ -1,3 +1,5 @@ obj-$(CONFIG_IMX8_MIPI_CSI2_YAV) += mxc-mipi-csi2_yav.o mxc-jpeg-encdec-objs := mxc-jpeg-hw.o mxc-jpeg.o obj-$(CONFIG_IMX8_JPEG) += mxc-jpeg-encdec.o +obj-$(CONFIG_MXC_CAMERA_AR0521) += ar0521.o +obj-$(CONFIG_MXC_CAMERA_AR1335) += ar1335.o diff --git a/drivers/media/platform/imx8/ar0521.c b/drivers/media/platform/imx8/ar0521.c new file mode 100644 index 000000000000..eb2edd101aa1 --- /dev/null +++ b/drivers/media/platform/imx8/ar0521.c @@ -0,0 +1,3619 @@ +/* + * ar0521.c - AR0521 sensor driver + * Copyright (c) 2020-2021, e-con Systems. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ar0521.h" +#include "mcu_firmware.h" + +/* +#define AR0521_DEBUG 1 +*/ + +/*! + * Maintains the information on the current state of the sensor. + */ +static struct ar0521 ar0521_data; + +static int pwdn_gpio, reset_gpio; + +int gpios_available(void) +{ + return (pwdn_gpio >= 0) && (reset_gpio >= 0); +} + +/********************************************************************** + * + * START of AR0521 related code + * + ********************************************************************** + */ + +static int ar0521_write(struct i2c_client *client, u8 * val, u32 count) +{ + int ret; + struct i2c_msg msg = { + .addr = client->addr, + .flags = 0, + .len = count, + .buf = val, + }; + + ret = i2c_transfer(client->adapter, &msg, 1); + if (ret < 0) { + dev_err(&client->dev, "Failed writing register.\n"); + dev_err(&client->dev, "addr: %x; val = %hhu, ret = %d!\n", + client->addr, *val, ret); + return ret; + } + + return 0; +} + +static int ar0521_read(struct i2c_client *client, u8 * val, u32 count) +{ + int ret; + struct i2c_msg msg = { + .addr = client->addr, + .flags = 0, + .buf = val, + }; + + msg.flags = I2C_M_RD; + msg.len = count; + ret = i2c_transfer(client->adapter, &msg, 1); + if (ret < 0) + goto err; + + return 0; + + err: + dev_err(&client->dev, "Failed reading register ret = %d!\n", ret); + return ret; +} + +/* + * The MCU specific functions below depend on the sensor-specific + * functions above. + */ + +/* + * --------------------------------------------------------- + * START of MCU realed functions + * --------------------------------------------------------- + */ + +/* + * NOTE about modularizing this MCU related function. + * + * - The functions: + * + * x mcu_get_fw_version + * x mcu_bload_get_version + * x mcu_bload_erase_flash + * x mcu_bload_parse_send_cmd + * x mcu_bload_go + * x mcu_bload_read + * x mcu_count_or_list_ctrls + * x mcu_count_or_list_fmts + * x mcu_get_sensor_id + * x mcu_get_ctrl_ui + * x mcu_stream_config + * x mcu_isp_power_down + * x mcu_isp_power_wakeup + * x mcu_set_ctrl + * x mcu_get_ctrl + * + * seem to directly use platform specific functions: + * + * x ar0521_write + * x ar0521_read + * + * This could be passed in as a function pointer. + */ + +static unsigned short int mcu_bload_calc_crc16(unsigned char *buf, int len) +{ + unsigned short int crc = 0; + int i = 0; + + if (!buf || !(buf + len)) + return 0; + + for (i = 0; i < len; i++) { + crc ^= buf[i]; + } + + return crc; +} + +static int mcu_bload_ascii2hex(unsigned char ascii) +{ + if (ascii <= '9') { + return (ascii - '0'); + } else if ((ascii >= 'a') && (ascii <= 'f')) { + return (0xA + (ascii - 'a')); + } else if ((ascii >= 'A') && (ascii <= 'F')) { + return (0xA + (ascii - 'A')); + } + return -1; +} + +static unsigned char errorcheck(char *data, unsigned int len) +{ + unsigned int i = 0; + unsigned char crc = 0x00; + + for (i = 0; i < len; i++) { + crc ^= data[i]; + } + + return crc; +} + +/* + * mcu_get_fw_version: + * + * Read the firmware version from the MCU. + * + * A success value (0) is returned when the MCU version could be successfully read. + * else a negative value indicating error is returned. + */ +static int mcu_get_fw_version(struct i2c_client *client, unsigned char *fw_version) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + int ret = 0, err = 0, loop; + /* Query firmware version from MCU */ + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_VERSION; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + err = ar0521_write(client, mc_data, TX_LEN_PKT); + if (err != 0) + { + dev_err(&client->dev, "MCU CMD ID version Error- %d\n", err); + ret = -EIO; + goto exit; + } + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_VERSION; + err = ar0521_write(client, mc_data, 2); + if (err != 0) { + dev_err(&client->dev," %s(%d) MCU CMD ID Write PKT fw Version Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar0521_read(client, mc_ret_data, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) MCU CMD ID Read PKT fw Version Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[4]; + calc_crc = errorcheck(&mc_ret_data[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) MCU CMD ID fw Version Error CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + errcode = mc_ret_data[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) MCU CMD ID fw Errcode - 0x%02x \n", __func__, + __LINE__, errcode); + ret = -EIO; + goto exit; + } + + /* Read the actual version from MCU*/ + payload_len = + ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE; + memset(mc_ret_data, 0x00, payload_len); + err = ar0521_read(client, mc_ret_data, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Version Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[payload_len - 2]; + calc_crc = errorcheck(&mc_ret_data[2], 32); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) MCU fw CMD ID Version CRC ERROR 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Payload Error - 0x%02x \n", __func__, + __LINE__, errcode); + ret = -EIO; + goto exit; + } + + for (loop = 0 ; loop < VERSION_SIZE ; loop++ ) + *(fw_version+loop) = mc_ret_data[2+loop]; + + ret = ERRCODE_SUCCESS; +exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; +} + +/** + * mcu_verify_fw_version: + * + * Verify the firmware version obtained from the MCU and that found in the + * firmware text file present in our driver. + * + * The return value after verification is as follows: + * + * - If the version number matches a success value (0) is returned. + * + * - In case the version number mismatches, a negative value indicating error + * is returned. + * + * - In case the force update bit is set in firmware version in the text + * file, a positive value is returned. + */ +static int mcu_verify_fw_version(const unsigned char *const fw_version) +{ + int loop, i = 0, ret; + char txt_fw_version[32] = {0}; + unsigned long txt_fw_pos = ARRAY_SIZE(g_mcu_fw_buf)-VERSION_FILE_OFFSET; + + /* Get Text Firmware version*/ + for(loop = txt_fw_pos; loop < (txt_fw_pos+64); loop=loop+2) { + *(txt_fw_version+i) = (mcu_bload_ascii2hex(g_mcu_fw_buf[loop]) << 4 | + mcu_bload_ascii2hex(g_mcu_fw_buf[loop+1])); + i++; + } + + /* Check for forced/always update field in the text firmware version*/ + if(txt_fw_version[17] == '1') { + +#ifdef AR0521_DEBUG + pr_info("Forced Update Enabled - Firmware Version - (%.32s) \n", + fw_version); +#endif + + ret = 2; + } + else { + for(i = 0; i < VERSION_SIZE; i++) { + if(txt_fw_version[i] != fw_version[i]) { + + pr_info("Previous Firmware Version - (%.32s)\n", fw_version); + + ret = -1; + break; + } + } + + if (i == VERSION_SIZE) + ret = ERRCODE_SUCCESS; + } + + return ret; +} + +static int mcu_bload_get_version(struct i2c_client *client) +{ + int ret = 0; + + /*----------------------------- GET VERSION -------------------- */ + + /* Write Get Version CMD */ + g_bload_buf[0] = BL_GET_VERSION; + g_bload_buf[1] = ~(BL_GET_VERSION); + + ret = ar0521_write(client, g_bload_buf, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != 'y') { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed\n"); + return -1; + } + + /* ---------------- GET VERSION END ------------------- */ + + return 0; +} + +static int mcu_bload_erase_flash(struct i2c_client *client) +{ + unsigned short int pagenum = 0x0000; + int ret = 0, i = 0, checksum = 0; + + /* --------------- ERASE FLASH --------------------- */ + + for (i = 0; i < NUM_ERASE_CYCLES; i++) { + + checksum = 0x00; + /* Write Erase Pages CMD */ + g_bload_buf[0] = BL_ERASE_MEM_NS; + g_bload_buf[1] = ~(BL_ERASE_MEM_NS); + + ret = ar0521_write(client, g_bload_buf, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf[0] = (MAX_PAGES - 1) >> 8; + g_bload_buf[1] = (MAX_PAGES - 1) & 0xFF; + g_bload_buf[2] = g_bload_buf[0] ^ g_bload_buf[1]; + + ret = ar0521_write(client, g_bload_buf, 3); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + for (pagenum = 0; pagenum < MAX_PAGES; pagenum++) { + g_bload_buf[(2 * pagenum)] = + (pagenum + (i * MAX_PAGES)) >> 8; + g_bload_buf[(2 * pagenum) + 1] = + (pagenum + (i * MAX_PAGES)) & 0xFF; + checksum = + checksum ^ g_bload_buf[(2 * pagenum)] ^ + g_bload_buf[(2 * pagenum) + 1]; + } + g_bload_buf[2 * MAX_PAGES] = checksum; + + ret = ar0521_write(client, g_bload_buf, (2 * MAX_PAGES) + 1); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + poll_busy: + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] == RESP_BUSY) + goto poll_busy; + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + +#ifdef AR0521_DEBUG + pr_info(" ERASE Sector %d success !! \n", i + 1); +#endif + } + + /* ------------ ERASE FLASH END ----------------------- */ + + return 0; +} + +static unsigned char mcu_bload_inv_checksum(unsigned char *buf, int len) +{ + unsigned int checksum = 0x00; + int i = 0; + + if (!buf || !(buf + len)) + return 0; + + for (i = 0; i < len; i++) { + checksum = (checksum + buf[i]); + } + + checksum &= (0xFF); + return (~(checksum) + 1); +} + +static int mcu_bload_parse_send_cmd(struct i2c_client *client, + unsigned char *bytearray, int rec_len) +{ + IHEX_RECORD *ihex_rec = NULL; + unsigned char checksum = 0, calc_checksum = 0; + int i = 0, ret = 0; + + if (!bytearray) + return -1; + + ihex_rec = (IHEX_RECORD *) bytearray; + ihex_rec->addr = htons(ihex_rec->addr); + + checksum = bytearray[rec_len - 1]; + + calc_checksum = mcu_bload_inv_checksum(bytearray, rec_len - 1); + if (checksum != calc_checksum) { + dev_err(&client->dev," Invalid Checksum 0x%02x != 0x%02x !! \n", + checksum, calc_checksum); + return -1; + } + + if ((ihex_rec->rectype == REC_TYPE_ELA) + && (ihex_rec->addr == 0x0000) + && (ihex_rec->datasize = 0x02)) { + /* Upper 32-bit configuration */ + g_bload_flashaddr = (ihex_rec->recdata[0] << + 24) | (ihex_rec->recdata[1] + << 16); +#ifdef AR0521_DEBUG + pr_info("Updated Flash Addr = 0x%08x \n", + g_bload_flashaddr); +#endif + + } else if (ihex_rec->rectype == REC_TYPE_DATA) { + /* Flash Data into Flashaddr */ + + g_bload_flashaddr = + (g_bload_flashaddr & 0xFFFF0000) | (ihex_rec->addr); + g_bload_crc16 ^= + mcu_bload_calc_crc16(ihex_rec->recdata, ihex_rec->datasize); + + /* Write Erase Pages CMD */ + g_bload_buf[0] = BL_WRITE_MEM_NS; + g_bload_buf[1] = ~(BL_WRITE_MEM_NS); + + ret = ar0521_write(client, g_bload_buf, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf[0] = (g_bload_flashaddr & 0xFF000000) >> 24; + g_bload_buf[1] = (g_bload_flashaddr & 0x00FF0000) >> 16; + g_bload_buf[2] = (g_bload_flashaddr & 0x0000FF00) >> 8; + g_bload_buf[3] = (g_bload_flashaddr & 0x000000FF); + g_bload_buf[4] = + g_bload_buf[0] ^ g_bload_buf[1] ^ g_bload_buf[2] ^ + g_bload_buf[3]; + + ret = ar0521_write(client, g_bload_buf, 5); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf[0] = ihex_rec->datasize - 1; + checksum = g_bload_buf[0]; + for (i = 0; i < ihex_rec->datasize; i++) { + g_bload_buf[i + 1] = ihex_rec->recdata[i]; + checksum ^= g_bload_buf[i + 1]; + } + + g_bload_buf[i + 1] = checksum; + + ret = ar0521_write(client, g_bload_buf, i + 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + poll_busy: + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] == RESP_BUSY) + goto poll_busy; + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + } else if (ihex_rec->rectype == REC_TYPE_SLA) { + /* Update Instruction pointer to this address */ + + } else if (ihex_rec->rectype == REC_TYPE_EOF) { + /* End of File - Issue I2C Go Command */ + return 0; + } else { + + /* Unhandled Type */ + dev_err(&client->dev,"Unhandled Command Type \n"); + return -1; + } + + return 0; +} + +static int mcu_bload_update_fw(struct i2c_client *client) +{ + /* exclude NULL character at end of string */ + unsigned long hex_file_size = ARRAY_SIZE(g_mcu_fw_buf) - 1; + unsigned char wbuf[MAX_BUF_LEN]; + int i = 0, recindex = 0, ret = 0; + + for (i = 0; i < hex_file_size; i++) { + if ((recindex == 0) && (g_mcu_fw_buf[i] == ':')) { + /* pr_info("Start of a Record \n"); */ + } else if (g_mcu_fw_buf[i] == CR) { + /* No Implementation */ + } else if (g_mcu_fw_buf[i] == LF) { + if (recindex == 0) { + /* Parsing Complete */ + break; + } + + /* Analyze Packet and Send Commands */ + ret = mcu_bload_parse_send_cmd(client, wbuf, recindex); + if (ret < 0) { + dev_err(&client->dev,"Error in Processing Commands \n"); + break; + } + + recindex = 0; + + } else { + /* Parse Rec Data */ + if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf[i])) < 0) { + dev_err(&client->dev, + "Invalid Character - 0x%02x !! \n", + g_mcu_fw_buf[i]); + break; + } + + wbuf[recindex] = (0xF0 & (ret << 4)); + i++; + + if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf[i])) < 0) { + dev_err(&client->dev, + "Invalid Character - 0x%02x !!!! \n", + g_mcu_fw_buf[i]); + break; + } + + wbuf[recindex] |= (0x0F & ret); + recindex++; + } + } + +#ifdef AR0521_DEBUG + pr_info("Program FLASH Success !! - CRC = 0x%04x \n", + g_bload_crc16); +#endif + + /* ------------ PROGRAM FLASH END ----------------------- */ + + return ret; +} + +static int mcu_bload_read(struct i2c_client *client, + unsigned int g_bload_flashaddr, char *bytearray, + unsigned int len) +{ + int ret = 0; + + g_bload_buf[0] = BL_READ_MEM; + g_bload_buf[1] = ~(BL_READ_MEM); + + ret = ar0521_write(client, g_bload_buf, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf[0] = (g_bload_flashaddr & 0xFF000000) >> 24; + g_bload_buf[1] = (g_bload_flashaddr & 0x00FF0000) >> 16; + g_bload_buf[2] = (g_bload_flashaddr & 0x0000FF00) >> 8; + g_bload_buf[3] = (g_bload_flashaddr & 0x000000FF); + g_bload_buf[4] = + g_bload_buf[0] ^ g_bload_buf[1] ^ g_bload_buf[2] ^ g_bload_buf[3]; + + ret = ar0521_write(client, g_bload_buf, 5); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf[0] = len - 1; + g_bload_buf[1] = ~(len - 1); + + ret = ar0521_write(client, g_bload_buf, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + ret = ar0521_read(client, bytearray, len); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + return 0; +} + +static int mcu_bload_verify_flash(struct i2c_client *client, + unsigned short int orig_crc) +{ + char bytearray[FLASH_READ_LEN]; + unsigned short int calc_crc = 0; + unsigned int flash_addr = FLASH_START_ADDRESS, i = 0; + + while ((i + FLASH_READ_LEN) <= FLASH_SIZE) { + memset(bytearray, 0x0, FLASH_READ_LEN); + + if (mcu_bload_read( + client, flash_addr + i, bytearray, FLASH_READ_LEN) < 0) { + dev_err(&client->dev," i2c_bload_read FAIL !! \n"); + return -1; + } + + calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN); + i += FLASH_READ_LEN; + } + + if ((FLASH_SIZE - i) > 0) { + memset(bytearray, 0x0, FLASH_READ_LEN); + + if (mcu_bload_read( + client, flash_addr + i, bytearray, (FLASH_SIZE - i) + ) < 0) { + dev_err(&client->dev," i2c_bload_read FAIL !! \n"); + return -1; + } + + calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN); + } + + if (orig_crc != calc_crc) { + dev_err(&client->dev," CRC verification fail !! 0x%04x != 0x%04x \n", + orig_crc, calc_crc); + } + +#ifdef AR0521_DEBUG + pr_info(" CRC Verification Success 0x%04x == 0x%04x \n", + orig_crc, calc_crc); +#endif + + return 0; +} + +static int mcu_bload_go(struct i2c_client *client) +{ + int ret = 0; + + g_bload_buf[0] = BL_GO; + g_bload_buf[1] = ~(BL_GO); + + ret = ar0521_write(client, g_bload_buf, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Failed Read 1 \n"); + return -1; + } + + /* Start Address */ + g_bload_buf[0] = (FLASH_START_ADDRESS & 0xFF000000) >> 24; + g_bload_buf[1] = (FLASH_START_ADDRESS & 0x00FF0000) >> 16; + g_bload_buf[2] = (FLASH_START_ADDRESS & 0x0000FF00) >> 8; + g_bload_buf[3] = (FLASH_START_ADDRESS & 0x000000FF); + g_bload_buf[4] = + g_bload_buf[0] ^ g_bload_buf[1] ^ g_bload_buf[2] ^ g_bload_buf[3]; + + ret = ar0521_write(client, g_bload_buf, 5); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + ret = ar0521_read(client, g_bload_buf, 1); + if (ret < 0) { + dev_err(&client->dev,"Failed Read 1 \n"); + return -1; + } + + if (g_bload_buf[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + return 0; +} + +static int mcu_fw_update(struct i2c_client *client, unsigned char *mcu_fw_version) +{ + int ret = 0; + g_bload_crc16 = 0; + + /* + * TODO: Is this necessary? It seems redundant as it's already called before + * calling this function. + */ + /* Read Firmware version from bootloader MCU */ + ret = mcu_bload_get_version(client); + if (ret < 0) { + dev_err(&client->dev," Error in Get Version \n"); + goto exit; + } + +#ifdef AR0521_DEBUG + pr_info(" Get Version SUCCESS !! \n"); +#endif + + /* Erase firmware present in the MCU and flash new firmware*/ + ret = mcu_bload_erase_flash(client); + if (ret < 0) { + dev_err(&client->dev," Error in Erase Flash \n"); + goto exit; + } + +#ifdef AR0521_DEBUG + pr_info("Erase Flash Success !! \n"); +#endif + + /* Read the firmware present in the text file */ + if ((ret = mcu_bload_update_fw(client)) < 0) { + dev_err(&client->dev," Write Flash FAIL !! \n"); + goto exit; + } + + /* Verify the checksum for the update firmware */ + if ((ret = mcu_bload_verify_flash(client, g_bload_crc16)) < 0) { + dev_err(&client->dev," verify_flash FAIL !! \n"); + goto exit; + } + + /* Reverting from bootloader mode */ + /* I2C GO Command */ + if ((ret = mcu_bload_go(client)) < 0) { + dev_err(&client->dev," i2c_bload_go FAIL !! \n"); + goto exit; + } + + if(mcu_fw_version) { + +#ifdef AR0521_DEBUG + pr_info("(%s) - Firmware Updated - (%.32s)\n", + __func__, mcu_fw_version); +#endif + + } + exit: + return ret; +} + +static int mcu_count_or_list_ctrls(struct i2c_client *client, + ISP_CTRL_INFO * mcu_cam_ctrl, int *numctrls) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + uint16_t index = 0; + int ret = 0, err = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + /* Array of Ctrl Info */ + while (1) { + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_CTRL_INFO; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_CTRL_INFO; + mc_data[2] = index >> 8; + mc_data[3] = index & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + err = ar0521_write(client, mc_data, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar0521_read(client, mc_ret_data, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[4]; + calc_crc = errorcheck(&mc_ret_data[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + if (((mc_ret_data[2] << 8) | mc_ret_data[3]) == 0) { + *numctrls = index; + break; + } + + payload_len = + ((mc_ret_data[2] << 8) | mc_ret_data[3]) + + HEADER_FOOTER_SIZE; + errcode = mc_ret_data[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + memset(mc_ret_data, 0x00, payload_len); + err = ar0521_read(client, mc_ret_data, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -1; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data[2], + payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EINVAL; + goto exit; + } + + if(mcu_cam_ctrl != NULL) { + int sorted_elem = index - 1, elem = index; + + /* append ctrl info in array */ + mcu_cam_ctrl[index].ctrl_id = + mc_ret_data[2] << 24 | mc_ret_data[3] << 16 | mc_ret_data[4] + << 8 | mc_ret_data[5]; + mcu_cam_ctrl[index].ctrl_type = mc_ret_data[6]; + + switch (mcu_cam_ctrl[index].ctrl_type) { + case CTRL_STANDARD: + mcu_cam_ctrl[index].ctrl_data.std.ctrl_min = + mc_ret_data[7] << 24 | mc_ret_data[8] << 16 + | mc_ret_data[9] << 8 | mc_ret_data[10]; + + mcu_cam_ctrl[index].ctrl_data.std.ctrl_max = + mc_ret_data[11] << 24 | mc_ret_data[12] << + 16 | mc_ret_data[13] + << 8 | mc_ret_data[14]; + + mcu_cam_ctrl[index].ctrl_data.std.ctrl_def = + mc_ret_data[15] << 24 | mc_ret_data[16] << + 16 | mc_ret_data[17] + << 8 | mc_ret_data[18]; + + mcu_cam_ctrl[index].ctrl_data.std.ctrl_step = + mc_ret_data[19] << 24 | mc_ret_data[20] << + 16 | mc_ret_data[21] + << 8 | mc_ret_data[22]; + + mcu_cam_ctrl[index].mcu_ctrl_index = index; + break; + + case CTRL_EXTENDED: + /* Not Implemented */ + break; + } + +#ifdef AR0521_DEBUG + pr_info("Control: ID: 0x%x; Type: %u; min: %d; Max: %d; Def: %d; Step: %u\n", + mcu_cam_ctrl[index].ctrl_id, + mcu_cam_ctrl[index].ctrl_type, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_min, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_max, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_def, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_step + ); +#endif + + ctrldb[index] = mcu_cam_ctrl[index].ctrl_id; + + /* + * Keep the control list and control db sorted. + */ + while( + sorted_elem >= 0 && + ( + mcu_cam_ctrl[sorted_elem].ctrl_id > + mcu_cam_ctrl[elem].ctrl_id + ) + ) + { + ISP_CTRL_INFO swap_ctrl_elem; + uint32_t swap_ctrldb_elem; + + /* + * Swap the elements in the mcu_cam_ctrl list + */ + memcpy(&swap_ctrl_elem, (mcu_cam_ctrl + sorted_elem), sizeof(ISP_CTRL_INFO)); + memcpy((mcu_cam_ctrl + sorted_elem), (mcu_cam_ctrl + elem), sizeof(ISP_CTRL_INFO)); + memcpy((mcu_cam_ctrl + elem), &swap_ctrl_elem, sizeof(ISP_CTRL_INFO)); + + /* + * Swap the elements in ctrldb + */ + swap_ctrldb_elem = ctrldb[sorted_elem]; + ctrldb[sorted_elem] = ctrldb[elem]; + ctrldb[elem] = swap_ctrldb_elem; + + elem = sorted_elem; + sorted_elem = elem - 1; + } + } + index++; + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; +} + +static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size) +{ + uint32_t payload_len = 0, err = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0, skip = 0; + uint16_t index = 0, mode = 0; + + int loop = 0, num_frates = 0, ret = 0; + + /* Stream Info Variables */ + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + /* List all formats from MCU and append to mcu_ar0521_frmfmt array */ + + for (index = 0;; index++) { + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_STREAM_INFO; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_STREAM_INFO; + mc_data[2] = index >> 8; + mc_data[3] = index & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + err = ar0521_write(client, mc_data, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar0521_read(client, mc_ret_data, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[4]; + calc_crc = errorcheck(&mc_ret_data[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + if (((mc_ret_data[2] << 8) | mc_ret_data[3]) == 0) { + if(stream_info == NULL) { + *frm_fmt_size = index; + } else { + *frm_fmt_size = mode; + } + break; + } + + payload_len = + ((mc_ret_data[2] << 8) | mc_ret_data[3]) + + HEADER_FOOTER_SIZE; + errcode = mc_ret_data[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + memset(mc_ret_data, 0x00, payload_len); + err = ar0521_read(client, mc_ret_data, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -1; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data[2], + payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + if(stream_info != NULL) { + stream_info->fmt_fourcc = + mc_ret_data[2] << 24 | mc_ret_data[3] << 16 | mc_ret_data[4] + << 8 | mc_ret_data[5]; + stream_info->width = mc_ret_data[6] << 8 | mc_ret_data[7]; + stream_info->height = mc_ret_data[8] << 8 | mc_ret_data[9]; + stream_info->frame_rate_type = mc_ret_data[10]; + + switch (stream_info->frame_rate_type) { + case FRAME_RATE_DISCRETE: + stream_info->frame_rate.disc.frame_rate_num = + mc_ret_data[11] << 8 | mc_ret_data[12]; + + stream_info->frame_rate.disc.frame_rate_denom = + mc_ret_data[13] << 8 | mc_ret_data[14]; + + break; + + case FRAME_RATE_CONTINOUS: + dev_err(&client->dev, + " The Stream format at index 0x%04x has FRAME_RATE_CONTINOUS," + "which is unsupported !! \n", index); + + continue; + } + + switch (stream_info->fmt_fourcc) { + /* + * We check for UYVY here instead of YUYV as the output from the sensor + * is UYVY. We swap it to YUYV only making changes in the platform driver. + */ + case V4L2_PIX_FMT_UYVY: + /* ar0521_codes is already populated with V4L2_PIX_FMT_YUYV */ + /* check if width and height are already in array - update frame rate only */ + for (loop = 0; loop < (mode); loop++) { + if ((ar0521_data.mcu_cam_frmfmt[loop].size.width == + stream_info->width) + && (ar0521_data.mcu_cam_frmfmt[loop].size.height == + stream_info->height)) { + + num_frates = + ar0521_data.mcu_cam_frmfmt[loop].num_framerates; + *((int *)(ar0521_data.mcu_cam_frmfmt[loop].framerates) + num_frates) + = (int)(stream_info->frame_rate. + disc.frame_rate_num / + stream_info->frame_rate. + disc.frame_rate_denom); + + ar0521_data.mcu_cam_frmfmt[loop].num_framerates++; + + streamdb[index] = loop; + skip = 1; + break; + } + } + + if (skip) { + skip = 0; + continue; + } + + /* Add Width, Height, Frame Rate array, Mode into mcu_ar0521_frmfmt array */ + ar0521_data.mcu_cam_frmfmt[mode].size.width = stream_info->width; + ar0521_data.mcu_cam_frmfmt[mode].size.height = stream_info->height; + + num_frates = ar0521_data.mcu_cam_frmfmt[mode].num_framerates; + + *(ar0521_data.mcu_cam_frmfmt[mode].framerates + num_frates) = + (int)(stream_info->frame_rate.disc.frame_rate_num / + stream_info->frame_rate.disc.frame_rate_denom); + + ar0521_data.mcu_cam_frmfmt[mode].num_framerates++; + + ar0521_data.mcu_cam_frmfmt[mode].mode = mode; + ar0521_data.mcu_cam_frmfmt[mode].mode = mode; + streamdb[index] = mode; + mode++; + break; + + default: + dev_err(&client->dev, + " The Stream format at index 0x%04x has format 0x%08x ," + "which is unsupported !! \n", index, + stream_info->fmt_fourcc); + } + } + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; +} + +/* + * Function to initialise the data related to MCU. Needs to be called + * before trying to use them. + */ +static int mcu_data_init(struct device *dev, int frm_fmt_size) +{ + int loop = 0; + + if (dev == NULL) + { + dev_err(dev, "%s: Invalid device parameter\n", __func__); + return -EINVAL; + } + + mcu_ctrl_info = devm_kzalloc(dev, sizeof(ISP_CTRL_INFO) * num_ctrls, GFP_KERNEL); + if(!mcu_ctrl_info) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + + ctrldb = devm_kzalloc(dev, sizeof(uint32_t) * num_ctrls, GFP_KERNEL); + if(!ctrldb) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + + stream_info = devm_kzalloc(dev, sizeof(ISP_STREAM_INFO) * (frm_fmt_size + 1), GFP_KERNEL); + + streamdb = devm_kzalloc(dev, sizeof(int) * (frm_fmt_size + 1), GFP_KERNEL); + if(!streamdb) { + dev_err(dev,"Unable to allocate memory \n"); + return -ENOMEM; + } + + ar0521_data.mcu_cam_frmfmt = devm_kzalloc(dev, sizeof(struct mcu_frmfmt) * (frm_fmt_size), GFP_KERNEL); + if(!ar0521_data.mcu_cam_frmfmt) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + + for(; loop < frm_fmt_size; loop++) { + ar0521_data.mcu_cam_frmfmt[loop].framerates = devm_kzalloc(dev, sizeof(int) * MAX_NUM_FRATES, GFP_KERNEL); + if(!ar0521_data.mcu_cam_frmfmt[loop].framerates) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + } + + return 0; +} + +static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + + int ret = 0, err = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + /* Read the version info. from Micro controller */ + + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_SENSOR_ID; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_SENSOR_ID; + err = ar0521_write(client, mc_data, 2); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar0521_read(client, mc_ret_data, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[4]; + calc_crc = errorcheck(&mc_ret_data[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + errcode = mc_ret_data[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + payload_len = + ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE; + + memset(mc_ret_data, 0x00, payload_len); + err = ar0521_read(client, mc_ret_data, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[payload_len - 2]; + calc_crc = errorcheck(&mc_ret_data[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + *sensor_id = mc_ret_data[2] << 8 | mc_ret_data[3]; + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; +} + +static int mcu_get_cmd_status(struct i2c_client *client, + uint8_t * cmd_id, uint16_t * cmd_status, + uint8_t * ret_code) +{ + uint32_t payload_len = 0; + uint8_t orig_crc = 0, calc_crc = 0; + int err = 0; + + /* No Semaphore in Get command Status */ + + /* First Txn Payload length = 0 */ + payload_len = 1; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_STATUS; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_STATUS; + mc_data[2] = *cmd_id; + err = ar0521_write(client, mc_data, 3); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + return -EIO; + } + + payload_len = CMD_STATUS_MSG_LEN; + memset(mc_ret_data, 0x00, payload_len); + err = ar0521_read(client, mc_ret_data, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + return -EIO; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[payload_len - 2]; + calc_crc = errorcheck(&mc_ret_data[2], 3); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + return -EINVAL; + } + + *cmd_id = mc_ret_data[2]; + *cmd_status = mc_ret_data[3] << 8 | mc_ret_data[4]; + *ret_code = mc_ret_data[payload_len - 1]; + + return 0; +} + +static int mcu_isp_init(struct i2c_client *client) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0; + uint8_t retcode = 0, cmd_id = 0; + int retry = 1000, err = 0; + + /* check current status - if initialized, no need for Init */ + cmd_id = CMD_ID_INIT_CAM; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__); + return -EIO; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + (retcode == ERRCODE_SUCCESS)) { + +#ifdef AR0521_DEBUG + pr_info(" Already Initialized !! \n"); +#endif + + return 0; + } + + /* call ISP init command */ + + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_INIT_CAM; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_INIT_CAM; + err = ar0521_write(client, mc_data, 2); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + return -EIO; + } + + while (--retry > 0) { + /* Some Sleep for init to process */ + mdelay(5); + + cmd_id = CMD_ID_INIT_CAM; + if (mcu_get_cmd_status( + client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", + __func__, __LINE__); + return -EIO; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + ((retcode == ERRCODE_SUCCESS) || (retcode == ERRCODE_ALREADY))) { + +#ifdef AR0521_DEBUG + pr_info(" ISP Already Initialized !! \n"); +#endif + + return 0; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Init Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + return -EIO; + } + } + + return -ETIMEDOUT; +} + +static int mcu_get_ctrl_ui(struct i2c_client *client, + ISP_CTRL_INFO * mcu_ui_info, int index) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + int ret = 0, i = 0, err = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_CTRL_UI_INFO; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_CTRL_UI_INFO; + mc_data[2] = index >> 8; + mc_data[3] = index & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + err = ar0521_write(client, mc_data, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar0521_read(client, mc_ret_data, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[4]; + calc_crc = errorcheck(&mc_ret_data[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + payload_len = + ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE; + errcode = mc_ret_data[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EINVAL; + goto exit; + } + + memset(mc_ret_data, 0x00, payload_len); + err = ar0521_read(client, mc_ret_data, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data[2], payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_name, &mc_ret_data[2],MAX_CTRL_UI_STRING_LEN); + + mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type = mc_ret_data[34]; + mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags = mc_ret_data[35] << 8 | + mc_ret_data[36]; + + if (mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type == V4L2_CTRL_TYPE_MENU) { + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem = mc_ret_data[37]; + + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu = + devm_kzalloc(&client->dev,((mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem +1) * sizeof(char *)), GFP_KERNEL); + for (i = 0; i < mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem; i++) { + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] = + devm_kzalloc(&client->dev,MAX_CTRL_UI_STRING_LEN, GFP_KERNEL); + strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i], + &mc_ret_data[38 +(i *MAX_CTRL_UI_STRING_LEN)], MAX_CTRL_UI_STRING_LEN); + +#ifdef AR0521_DEBUG + pr_info(" Menu Element %d : %s \n", + i, mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i]); +#endif + + } + + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] = NULL; + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; + +} + +static int mcu_isp_configuration(uint8_t cmd_id,struct i2c_client *client) +{ + unsigned char mc_data[100]; + uint32_t payload_len = 0; + + uint16_t payload_data; + uint16_t cmd_status = 0; + uint8_t retcode = 0; + int retry = 1000, err = 0; + + /*lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = cmd_id; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = cmd_id; + + switch(cmd_id) { + case CMD_ID_LANE_CONFIG: + /*Lane configuration */ + payload_data = ar0521_data.mipi_lane_config == 4 ? NUM_LANES_4: NUM_LANES_2; + mc_data[2] = payload_data >> 8; + mc_data[3] = payload_data & 0xFF; + break; + case CMD_ID_MIPI_CLK_CONFIG: + /* MIPI CLK Configuration */ + payload_data = ar0521_data.mipi_clk_config; + mc_data[2] = payload_data >> 8; + mc_data[3] = payload_data & 0xFF; + break; + default: + dev_err(&client->dev, "MCU ISP CONF Error\n"); + err = -1; + goto exit; + } + + /* CRC*/ + mc_data[4] = errorcheck(&mc_data[2], payload_len); + err = ar0521_write(client, mc_data, payload_len+3); + if (err != 0) { + dev_err(&client->dev, " %s(%d) Error - %d \n", + __func__, __LINE__, err); + goto exit; + } + + + while (--retry > 0) { + msleep(20); + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < + 0) { + dev_err(&client->dev, " %s(%d) Error \n", + __func__, __LINE__); + err = -EIO; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_ISP_UNINIT) && + ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) { + err = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_ISP_UNINIT))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + err = -EIO; + goto exit; + } + + } + + err = -ETIMEDOUT; + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + return err; +} + +static int mcu_stream_config(struct i2c_client *client, uint32_t format, + int mode, int frate_index) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0, index = 0xFFFF; + uint8_t retcode = 0, cmd_id = 0; + int loop = 0, ret = 0, err = 0, retry = 1000; + static uint16_t prev_index = 0xFFFE; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + cmd_id = CMD_ID_STREAM_CONFIG; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__); + ret = -EIO; + goto exit; + } + + if ((cmd_status != MCU_CMD_STATUS_SUCCESS) || + (retcode != ERRCODE_SUCCESS)) { + dev_err(&client->dev, + " ISP is Unintialized or Busy STATUS = 0x%04x Errcode = 0x%02x !! \n", + cmd_status, retcode); + ret = -EBUSY; + goto exit; + } + + for (loop = 0;(&streamdb[loop]) != NULL; loop++) { + pr_info("streamdb[%d]=%d, mode=%d",loop,streamdb[loop],mode); + if (streamdb[loop] == mode) { + index = loop + frate_index; + break; + } + } + +#ifdef AR0521_DEBUG + pr_info(" Index = 0x%04x , format = 0x%08x, width = %hu," + " height = %hu, frate num = %hu \n", index, format, + ar0521_data.mcu_cam_frmfmt[mode].size.width, + ar0521_data.mcu_cam_frmfmt[mode].size.height, + ar0521_data.mcu_cam_frmfmt[mode].framerates[frate_index]); +#endif + + if (index == 0xFFFF) { + ret = -EINVAL; + goto exit; + } + + if(prev_index == index) { +#ifdef AR0521_DEBUG + pr_info("Skipping Previous mode set ... \n"); +#endif + ret = 0; + goto exit; + } + +issue_cmd: + /* First Txn Payload length = 0 */ + payload_len = 14; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_STREAM_CONFIG; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_STREAM_CONFIG; + mc_data[2] = index >> 8; + mc_data[3] = index & 0xFF; + + /* Format Fourcc - currently only YUYV */ + mc_data[4] = format >> 24; + mc_data[5] = format >> 16; + mc_data[6] = format >> 8; + mc_data[7] = format & 0xFF; + + /* width */ + mc_data[8] = ar0521_data.mcu_cam_frmfmt[mode].size.width >> 8; + mc_data[9] = ar0521_data.mcu_cam_frmfmt[mode].size.width & 0xFF; + + /* height */ + mc_data[10] = ar0521_data.mcu_cam_frmfmt[mode].size.height >> 8; + mc_data[11] = ar0521_data.mcu_cam_frmfmt[mode].size.height & 0xFF; + + /* frame rate num */ + mc_data[12] = ar0521_data.mcu_cam_frmfmt[mode].framerates[frate_index] >> 8; + mc_data[13] = ar0521_data.mcu_cam_frmfmt[mode].framerates[frate_index] & 0xFF; + + /* frame rate denom */ + mc_data[14] = 0x00; + mc_data[15] = 0x01; + + mc_data[16] = errorcheck(&mc_data[2], 14); + err = ar0521_write(client, mc_data, 17); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + while (--retry > 0) { + cmd_id = CMD_ID_STREAM_CONFIG; + if (mcu_get_cmd_status( + client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev, + " %s(%d) MCU GET CMD Status Error : loop : %d \n", + __func__, __LINE__, loop); + ret = -EIO; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + (retcode == ERRCODE_SUCCESS)) { + ret = 0; + goto exit; + } + + if(retcode == ERRCODE_AGAIN) { + /* Issue Command Again if Set */ + retry = 1000; + goto issue_cmd; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + ret = -EIO; + goto exit; + } + + /* Delay after retry */ + mdelay(10); + } + + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -ETIMEDOUT; + +exit: + if(!ret) + prev_index = index; + + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; +} + +static int mcu_isp_power_down(struct i2c_client *client) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0; + uint8_t retcode = 0, cmd_id = 0; + int retry = 1000, err = 0; + + /*lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_ISP_PDOWN; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_ISP_PDOWN; + err = ar0521_write(client, mc_data, 2); + if (err != 0) { + dev_err(&client->dev, " %s(%d) Error - %d \n", + __func__, __LINE__, err); + goto exit; + } + + while (--retry > 0) { + msleep(20); + cmd_id = CMD_ID_ISP_PDOWN; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < + 0) { + dev_err(&client->dev, " %s(%d) Get Status Error \n", + __func__, __LINE__); + err = -EINVAL; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_ISP_PWDN) && + ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) { + err = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, + retcode); + err = -EIO; + goto exit; + } + + } + err = -ETIMEDOUT; + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + return err; +} + +static int mcu_isp_power_wakeup(struct i2c_client *client) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0; + uint8_t retcode = 0, cmd_id = 0; + int retry = 1000, err = 0; + + /*lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_ISP_PUP; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_ISP_PUP; + err = ar0521_write(client, mc_data, 2); + if (err != 0) { + dev_err(&client->dev, " %s(%d) Error - %d \n", + __func__, __LINE__, err); + goto exit; + } + + while (--retry > 0) { + msleep(20); + cmd_id = CMD_ID_ISP_PUP; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < + 0) { + dev_err(&client->dev, " %s(%d) Error \n", + __func__, __LINE__); + err = -EIO; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) { + err = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + err = -EIO; + goto exit; + } + + } + + err = -ETIMEDOUT; + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + return err; +} + +static int mcu_set_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id, + uint8_t ctrl_type, int32_t curr_val) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0, index = 0xFFFF; + uint8_t retcode = 0, cmd_id = 0; + int loop = 0, ret = 0, err = 0; + uint32_t ctrl_id = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + ctrl_id = arg_ctrl_id; + + /* call ISP Ctrl config command */ + + for (loop = 0; loop < num_ctrls; loop++) { + if (ctrldb[loop] == ctrl_id) { + index = mcu_ctrl_info[loop].mcu_ctrl_index; + break; + } + } + + if (index == 0xFFFF) { + ret = -EINVAL; + goto exit; + } + + /* First Txn Payload length = 0 */ + payload_len = 11; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_SET_CTRL; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + /* Second Txn */ + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_SET_CTRL; + + /* Index */ + mc_data[2] = index >> 8; + mc_data[3] = index & 0xFF; + + /* Control ID */ + mc_data[4] = ctrl_id >> 24; + mc_data[5] = ctrl_id >> 16; + mc_data[6] = ctrl_id >> 8; + mc_data[7] = ctrl_id & 0xFF; + + /* Ctrl Type */ + mc_data[8] = ctrl_type; + + /* Ctrl Value */ + mc_data[9] = curr_val >> 24; + mc_data[10] = curr_val >> 16; + mc_data[11] = curr_val >> 8; + mc_data[12] = curr_val & 0xFF; + + /* CRC */ + mc_data[13] = errorcheck(&mc_data[2], 11); + + err = ar0521_write(client, mc_data, 14); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + while (1) { + cmd_id = CMD_ID_SET_CTRL; + if (mcu_get_cmd_status( + client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", + __func__, __LINE__); + ret = -EINVAL; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + (retcode == ERRCODE_SUCCESS)) { + ret = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d ISP Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + ret = -EIO; + goto exit; + } + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; +} + +static int mcu_get_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id, + uint8_t * ctrl_type, int32_t * curr_val) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + uint16_t index = 0xFFFF; + int loop = 0, ret = 0, err = 0; + + uint32_t ctrl_id = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex); + + ctrl_id = arg_ctrl_id; + + /* Read the Ctrl Value from Micro controller */ + + for (loop = 0; loop < num_ctrls; loop++) { + if (ctrldb[loop] == ctrl_id) { + index = mcu_ctrl_info[loop].mcu_ctrl_index; + break; + } + } + + if (index == 0xFFFF) { + ret = -EINVAL; + goto exit; + } + + if ( + mcu_ctrl_info[loop].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags & + V4L2_CTRL_FLAG_WRITE_ONLY + ) { + ret = -EACCES; + goto exit; + } + + /* First Txn Payload length = 2 */ + payload_len = 2; + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_CTRL; + mc_data[2] = payload_len >> 8; + mc_data[3] = payload_len & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + + ar0521_write(client, mc_data, TX_LEN_PKT); + + mc_data[0] = CMD_SIGNATURE; + mc_data[1] = CMD_ID_GET_CTRL; + mc_data[2] = index >> 8; + mc_data[3] = index & 0xFF; + mc_data[4] = errorcheck(&mc_data[2], 2); + err = ar0521_write(client, mc_data, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar0521_read(client, mc_ret_data, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[4]; + calc_crc = errorcheck(&mc_ret_data[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -1; + goto exit; + } + + if (((mc_ret_data[2] << 8) | mc_ret_data[3]) == 0) { + ret = -EIO; + goto exit; + } + + errcode = mc_ret_data[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + payload_len = + ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE; + memset(mc_ret_data, 0x00, payload_len); + err = ar0521_read(client, mc_ret_data, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data[2], payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EINVAL; + goto exit; + } + + /* Ctrl type starts from index 6 */ + + *ctrl_type = mc_ret_data[6]; + + switch (*ctrl_type) { + case CTRL_STANDARD: + *curr_val = + mc_ret_data[7] << 24 | mc_ret_data[8] << 16 | mc_ret_data[9] + << 8 | mc_ret_data[10]; + break; + + case CTRL_EXTENDED: + /* Not Implemented */ + break; + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex); + + return ret; +} + +/* + * --------------------------------------------------------- + * END of MCU realed functions + * --------------------------------------------------------- + */ + +static void toggle_gpio(unsigned int gpio, int val) +{ + if (gpio_cansleep(gpio)){ + gpio_direction_output(gpio,val); + gpio_set_value_cansleep(gpio, val); + } else{ + gpio_direction_output(gpio,val); + gpio_set_value(gpio, val); + } +} + +static int ar0521_querymenu(struct v4l2_subdev *sd, struct v4l2_querymenu *qm) +{ + uint32_t index = 0; + int loop; + + if (sd == NULL || qm == NULL) + return -EINVAL; + + for (loop = 0; loop < num_ctrls; loop++) { + if (ctrldb[loop] == qm->id) { + index = loop; + break; + } + } + + if (loop == num_ctrls) { + return -EINVAL; + } + + if ( + !( + 0 <= qm->index && + qm->index < mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.num_menu_elem + ) + ) { + return -EINVAL; + } + + /* + * Copy the name of the menu. + * + * We deal only with V4L2_CTRL_TYPE_MENU and not + * V4L2_CTRL_TYPE_INTEGER_MENU. So, this should be + * enough. + */ + strcpy(qm->name, mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.menu[qm->index]); + + /* + * Set the reserved to zero as mentioned in spec + */ + qm->reserved = 0; + + return 0; +} + +static int ar0521_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc) +{ + int index, ctrl_index = -1, ctrl_id; + bool next_ctrl = (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL); + + if (sd == NULL || qc == NULL) + return -EINVAL; + + if (next_ctrl) { + ctrl_id = qc->id & (~V4L2_CTRL_FLAG_NEXT_CTRL); + + /* + * Ignore the V4L2_CTRL_FLAG_NEXT_COMPOUND for now + */ + ctrl_id = ctrl_id & (~V4L2_CTRL_FLAG_NEXT_COMPOUND); + } + else { + /* + * Assume we've just got the control ID itself + * directly. + */ + ctrl_id = qc->id; + } + + if (ctrl_id) { + for (index = 0; index < num_ctrls; index++) { + if (ctrldb[index] == ctrl_id) { + ctrl_index = (next_ctrl) ? index + 1 : index; + break; + } + } + + if (index == num_ctrls) { + /* + * We do not know about this control + */ + return -EINVAL; + } + else if ( + next_ctrl && + index == num_ctrls - 1 + ) + { + /* + * We've got a request for the control + * after the last one. + */ + return -EINVAL; + } + } + else if (next_ctrl) { + ctrl_index = 0; + } + else { + return -EINVAL; + } + + if ( + mcu_ctrl_info[ctrl_index].ctrl_type == CTRL_STANDARD + ) { + /* + * We cannot use `v4l2_ctrl_query_fill` instead of manually filling + * the details even for standard controls as we sometimes implement our + * own version for some controls. + * + * e.g., V4L2_CID_FOCUS_AUTO has a max value of 1 according to standard + * but our version of it has a max value of 5. + */ + qc->id = mcu_ctrl_info[ctrl_index].ctrl_id; + + strcpy(qc->name, mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_name); + + qc->type = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type; + qc->flags = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags; + + qc->minimum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min; + qc->maximum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max; + qc->step = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_step; + qc->default_value = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_def; + } + else { + return -EINVAL; + } + + return 0; +} + +static int ar0521_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) +{ + struct i2c_client *client = ar0521_data.i2c_client; + int err = 0; + uint8_t ctrl_type = 0; + int ctrl_val = 0; + + if (sd == NULL || ctrl == NULL) + return -EINVAL; + + if ((err = mcu_get_ctrl(client, ctrl->id, &ctrl_type, &ctrl_val)) < 0) { + return err; + } + + if (ctrl_type == CTRL_STANDARD) { + ctrl->value = ctrl_val; + } else { + /* Not Implemented */ + return -EINVAL; + } + + return err; +} + +static int ar0521_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) +{ + struct i2c_client *client = ar0521_data.i2c_client; + int err = 0, index, ctrl_index = 0; + + if (sd == NULL || ctrl == NULL) + return -EINVAL; + + for (index = 0; index < num_ctrls; index++) { + if (ctrldb[index] == ctrl->id) { + ctrl_index = index; + break; + } + } + + if (index == num_ctrls) { + return -EINVAL; + } + + if ( + ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min || + ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max + ) + return -ERANGE; + + if ((err = + mcu_set_ctrl(client, ctrl->id, CTRL_STANDARD, ctrl->value)) < 0) { + dev_err(&client->dev," %s (%d ) \n", __func__, __LINE__); + return -EINVAL; + } + + return err; +} + +static int ar0521_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + int i, err = 0; + + if (sd == NULL || ctrls == NULL) + return -EINVAL; + + for (i = 0; i < ctrls->count; i++) { + struct v4l2_ext_control *ext_ctrl = ctrls->controls + i; + struct v4l2_control ctrl = { + .id = ext_ctrl->id, + }; + + err = ar0521_g_ctrl(sd, &ctrl); + if (err) { + ctrls->error_idx = ctrls->count; + break; + } + else { + ext_ctrl->value = ctrl.value; + } + } + + return err; +} + +static int ar0521_try_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + int i; + + if (sd == NULL || ctrls == NULL) + return -EINVAL; + + for (i = 0; i < ctrls->count; i++) { + struct v4l2_ext_control *ext_ctrl = ctrls->controls + i; + int ctrl_index = 0, index; + + for (index = 0; index < num_ctrls; index++) { + if (ctrldb[index] == ext_ctrl->id) { + ctrl_index = index; + break; + } + } + + if (index == num_ctrls) { + ctrls->error_idx = ext_ctrl->id; + return -EINVAL; + } + + if ( + ext_ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min || + ext_ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max + ) { + ctrls->error_idx = ext_ctrl->id; + return -ERANGE; + } + } + + return 0; + +} + +static int ar0521_s_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + int i, err = 0; + + if (sd == NULL || ctrls == NULL) + return -EINVAL; + + for (i = 0; i < ctrls->count; i++) { + struct v4l2_ext_control *ext_ctrl = ctrls->controls + i; + struct v4l2_control ctrl = { + .id = ext_ctrl->id, + .value = ext_ctrl->value + }; + + err = ar0521_s_ctrl(sd, &ctrl); + if (err) { + /* + * TODO: We would have to indicate whether there + * is an issue in validation or in the + * hardware by correctly setting the error_idx + * to count only when the validation failed + * and setting it to index when there is an + * issue in communication with the hardware. + * + * For now, just return the count for all cases. + */ + ctrls->error_idx = ctrls->count; + break; + } + } + + return err; +} + +static int ar0521_enum_frameintervals(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_interval_enum *fival) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + int j; + + if (fival->width == 0 || fival->height == 0) + { + dev_err(&client->dev, "Please assign width and height.\n"); + return -EINVAL; + } + + if (fival->code != ar0521_data.fmt.code) + { + return -EINVAL; + } + + for (j = 0; j < ar0521_data.num_frm_fmts; j++) { + if ( + fival->width == ar0521_data.mcu_cam_frmfmt[j].size.width && + fival->height == ar0521_data.mcu_cam_frmfmt[j].size.height + ) { + if (fival->index >= ar0521_data.mcu_cam_frmfmt[j].num_framerates) + { + return -EINVAL; + } + + fival->interval.numerator = 1; + fival->interval.denominator = ar0521_data.mcu_cam_frmfmt[j].framerates[fival->index]; + + return 0; + } + } + return -EINVAL; + +} + +static int ar0521_enum_framesizes(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_size_enum *fse) +{ + if (fse->index >= ar0521_data.num_frm_fmts) + { + return -EINVAL; + } + + if (fse->code != ar0521_data.fmt.code) + { + return -EINVAL; + } + + fse->max_width = ar0521_data.mcu_cam_frmfmt[fse->index].size.width; + fse->min_width = fse->max_width; + + fse->max_height = ar0521_data.mcu_cam_frmfmt[fse->index].size.height; + fse->min_height = fse->max_height; + + return 0; +} + +static int ar0521_enum_mbus_code(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_mbus_code_enum *code) +{ + if (code->pad || code->index >= AR0521_MAX_FORMAT_SUPPORTED) + return -EINVAL; + + code->code = ar0521_data.fmt.code; + + return 0; +} + +static int ar0521_s_stream(struct v4l2_subdev *sd, int enable) +{ + if (!enable) { + /* Perform Stream Off Sequence - if any */ + } + + /* Perform Stream On Sequence - if any */ + mdelay(10); + + return 0; +} + +static int ar0521_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param) +{ + int mode = ar0521_data.streamcap.capturemode; + + param->parm.capture.capability |= V4L2_CAP_TIMEPERFRAME; + + param->parm.capture.timeperframe.denominator = + ar0521_data.mcu_cam_frmfmt[mode].framerates[ar0521_data.frate_index]; + param->parm.capture.timeperframe.numerator = 1; + + return 0; +} + +static int ar0521_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + int ret = 0, err = 0; + int mode = ar0521_data.streamcap.capturemode; + int fourcc = ar0521_data.pix.pixelformat; + + param->parm.capture.capability = V4L2_CAP_TIMEPERFRAME; + memset(param->parm.capture.reserved, 0, 4*sizeof(u32)); + + if ( + param->parm.capture.timeperframe.denominator == 0 && + param->parm.capture.timeperframe.numerator == 0 && + ar0521_data.mcu_cam_frmfmt[mode].num_framerates == 1 + ) { + param->parm.capture.timeperframe.denominator = + ar0521_data.mcu_cam_frmfmt[mode].framerates[ar0521_data.frate_index]; + param->parm.capture.timeperframe.numerator = 1; + /* + * We would have to reset the frame interval to a + * nominal value in this case but as we just have one + * frame interval we just return success. + */ + return 0; + } + + if (param->parm.capture.timeperframe.numerator != 1) { + dev_err(&client->dev, "Invalid numerator for timeperframe\n"); + return -EINVAL; + } + + for (ret = 0; ret < ar0521_data.mcu_cam_frmfmt[mode].num_framerates; + ret++) { + if ((ar0521_data.mcu_cam_frmfmt[mode].framerates[ret] == + param->parm.capture.timeperframe.denominator)) { + ar0521_data.frate_index = ret; + + /* call stream config with width, height, frame rate */ + err = + mcu_stream_config(client, fourcc, mode, + ar0521_data.frate_index); + if (err < 0) { + dev_err(&client->dev, "%s: Failed stream_config \n", __func__); + return err; + } + + mdelay(10); + + return 0; + } + } + + return -EINVAL; +} + +static int ar0521_s_power(struct v4l2_subdev *sd, int on) +{ + + /* Perform Power On/Off Sequence - if any */ + return 0; +} + +static int ar0521_get_fmt(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_format *format) +{ + int ret = 0; + + if (format->pad) + return -EINVAL; + + format->format.code = ar0521_data.fmt.code; + format->format.colorspace = ar0521_data.fmt.colorspace; + format->format.field = V4L2_FIELD_NONE; + + format->format.width = ar0521_data.pix.width; + format->format.height = ar0521_data.pix.height; + + return ret; +} + +static int ar0521_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_format *format) +{ + int ret = 0, i; + struct i2c_client *client = v4l2_get_subdevdata(sd); + int flag = 0, err = 0; + + format->format.code = ar0521_data.fmt.code; + format->format.colorspace = ar0521_data.fmt.colorspace; + format->format.field = V4L2_FIELD_NONE; + + for (i = 0; i < ar0521_data.num_frm_fmts ; i++) { + if ( + ar0521_data.mcu_cam_frmfmt[i].size.width == format->format.width && + ar0521_data.mcu_cam_frmfmt[i].size.height == format->format.height + ) { + flag = 1; + break; + } + } + + if(flag == 0) { + format->format.width = ar0521_data.pix.width; + format->format.height = ar0521_data.pix.height; + } + + if (format->which == V4L2_SUBDEV_FORMAT_TRY) + { + return 0; + } + + /* call stream config with width, height, frame rate */ + err = + mcu_stream_config(client, ar0521_data.pix.pixelformat, ar0521_data.mcu_cam_frmfmt[i].mode, + ar0521_data.frate_index); + if (err < 0) { + dev_err(&client->dev, "%s: Failed stream_config \n", __func__); + return err; + } + + ar0521_data.pix.width = format->format.width; + ar0521_data.pix.height = format->format.height; + ar0521_data.streamcap.capturemode = ar0521_data.mcu_cam_frmfmt[i].mode; + + mdelay(10); + + return ret; +} + +static int ar0521_link_setup(struct media_entity *entity, + const struct media_pad *local, + const struct media_pad *remote, u32 flags) +{ + return 0; +} + +static struct v4l2_subdev_video_ops ar0521_subdev_video_ops = { + .g_parm = ar0521_g_parm, + .s_parm = ar0521_s_parm, + .s_stream = ar0521_s_stream, +}; + +static const struct v4l2_subdev_pad_ops ar0521_subdev_pad_ops = { + .enum_frame_size = ar0521_enum_framesizes, + .enum_frame_interval = ar0521_enum_frameintervals, + .enum_mbus_code = ar0521_enum_mbus_code, + .set_fmt = ar0521_set_fmt, + .get_fmt = ar0521_get_fmt, +}; + +static struct v4l2_subdev_core_ops ar0521_subdev_core_ops = { + .s_power = ar0521_s_power, + .queryctrl = ar0521_queryctrl, + .g_ctrl = ar0521_g_ctrl, + .s_ctrl = ar0521_s_ctrl, + .g_ext_ctrls = ar0521_g_ext_ctrls, + .s_ext_ctrls = ar0521_s_ext_ctrls, + .try_ext_ctrls = ar0521_try_ext_ctrls, + .querymenu = ar0521_querymenu, +}; + +static struct v4l2_subdev_ops ar0521_subdev_ops = { + .core = &ar0521_subdev_core_ops, + .video = &ar0521_subdev_video_ops, + .pad = &ar0521_subdev_pad_ops, +}; + +static const struct media_entity_operations ar0521_sd_media_ops = { + .link_setup = ar0521_link_setup, +}; + +static int ar0521_init(struct i2c_client *client) +{ + u32 tgt_xclk; /* target xclk */ + int ret = 0; + + ar0521_data.on = true; + + /* mclk */ + tgt_xclk = ar0521_data.mclk; + tgt_xclk = min(tgt_xclk, (u32)AR0521_XCLK_MAX); + tgt_xclk = max(tgt_xclk, (u32)AR0521_XCLK_MIN); + ar0521_data.mclk = tgt_xclk; + +#ifdef AR0521_DEBUG + pr_info("mclk: %d MHz\n", tgt_xclk / 1000000); +#endif + + ret = mcu_stream_config(client, ar0521_data.pix.pixelformat, + ar0521_data.streamcap.capturemode, + ar0521_data.frate_index); + + return ret; +} + +static int ar0521_ctrls_init(ISP_CTRL_INFO *mcu_cam_ctrls) +{ + struct i2c_client *client = NULL; + int numctrls = 0; + int err = 0, i = 0; + + client = ar0521_data.i2c_client; + + if (mcu_cam_ctrls == NULL) + { + dev_err( + &client->dev, + "%s: MCU control data hasn't been allocated\n", + __func__ + ); + return -EINVAL; + } + /* + * Enumerate the controls from the MCU + */ + err = mcu_count_or_list_ctrls(client, mcu_cam_ctrls, &numctrls); + if (err < 0) { + dev_err(&client->dev, "Unable to enumerate the controls in the sensor\n"); + return err; + } + + for (i = 0; i < numctrls; i++) { + if (mcu_cam_ctrls[i].ctrl_type == CTRL_STANDARD) { + err = mcu_get_ctrl_ui(client, &mcu_ctrl_info[i], mcu_ctrl_info[i].mcu_ctrl_index); + if (err != ERRCODE_SUCCESS) { + dev_err(&client->dev, "Error Enumerating Control 0x%08x !! \n", + mcu_ctrl_info[i].ctrl_id); + return err; + } + else if ( + mcu_ctrl_info[i].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type == + V4L2_CTRL_TYPE_MENU + ) { + mcu_ctrl_info[i].ctrl_data.std.ctrl_step = 1; + } + } + } + + return 0; +} + +static int ar0521_verify_mcu(struct i2c_client *client) +{ + int ret = 0, try = 0; + unsigned char fw_version[32] = {0}; + + if (client == NULL) + { + dev_err(&client->dev, "%s: Invalid I2C client parameter\n", __func__); + return -EINVAL; + } + + /* + * Try to boot the MCU into firmware mode. + * + * We do this only when the reset_gpio and pwdn_gpio are + * available. + */ + if (gpios_available()) + { + toggle_gpio(pwdn_gpio, 0); + msleep(10); + toggle_gpio(reset_gpio, 0); + msleep(10); + toggle_gpio(reset_gpio, 1); + msleep(500); + + for(try = 0; try < 10; try++) { + ret = mcu_get_fw_version(client, fw_version); + if(ret < 0) { + msleep(100); + continue; + } else { + break; + } + } + + if (ret == 0) + { + ret = mcu_verify_fw_version(fw_version); + } + else + { + dev_dbg( + &client->dev, + "Could not read the firmware version from the MCU\n" + ); + pr_info(" Could not read the firmware version from the MCU, tries=%d\n", try+1); + } + + /* + * Try booting and flashing in bootloader mode when an error is detected + * or the force update bit is set in the firmware version + */ + if (ret != 0) { + int loop = 0; + + /* + * Verification of the MCU in firmware mode failed so + * try to boot the MCU in bootloader mode. + */ + + pr_info(" Trying to Detect Bootloader mode\n"); + + if (gpios_available()) + { + toggle_gpio(reset_gpio, 0); + msleep(10); + toggle_gpio(pwdn_gpio, 1); + msleep(100); + toggle_gpio(reset_gpio, 1); + msleep(100); + } + + for(loop = 0; loop < 10; loop++) { + ret = mcu_bload_get_version(client); + if (ret < 0) { + /* Trial and Error for 1 second (100ms * 10) */ + msleep(100); + continue; + } else { +#ifdef AR0521_DEBUG + pr_info(" Get Bload Version Success\n"); +#endif + break; + } + } + + if(loop == 10) { + dev_err(&client->dev, "Error getting firmware version in bootloader mode\n"); + return -EINVAL; + } + + if (mcu_fw_update(client, NULL) < 0) { + dev_err(&client->dev, "Error when trying to update the firmware\n"); + return -EFAULT; + } + + if (gpios_available()) + { + toggle_gpio(pwdn_gpio, 0); + } + + /* Allow FW Updated MCU to reboot */ + msleep(500); + + /* + * Ensure the firmware has been flashed correctly by getting the version + * of the firmware (in firmware mode). + */ + for(loop = 0; loop < 100; loop++) { + ret = mcu_get_fw_version(client, fw_version); + + if (ret == 0) + { + ret = mcu_verify_fw_version(fw_version); + } + + if (ret < 0) { + /* Trial and Error for 10 seconds (100ms * 100) */ + msleep(100); + continue; + } else { +#ifdef AR0521_DEBUG + pr_info(" Get FW Version Success\n"); +#endif + break; + } + } + + if(loop == 100) { + dev_err( + &client->dev, + "Couldn't get firmware version correctly after update (did the update fail?\n" + ); + return -EINVAL; + } + } + + } + else + { + static const char *const flash_error_message = + "Please connect only one camera and fix the MCU.\n" + "Hint: Connected only one camera? Is someone else using the " + "power down/reset GPIOs?\n"; + + /* + * When we do not have the reset GPIO, we cannot toggle it + * to make the MCU switch to firmware mode. So, we try getting + * the MCU into firmware assuming it is currently in + * bootloader mode. + * + * The following sequence is required for switching it to + * firmware mode. + */ + int loop, get_firmware_version = 0; + + /* + * We would have to verify that the MCU is in bootloader mode + * before sending the command to make it switch to firmware mode. + * + * So, we try to get the version of the bootloader. + */ + for(loop = 0; loop < 10; loop++) + { + ret = mcu_bload_get_version(client); + if (ret < 0) + { + /* Trial and Error for 1 second (100ms * 10) */ + msleep(100); + } + else + { + pr_info(" Get Bload Version Success\n"); + break; + } + } + + if(loop == 10) + { + dev_err(&client->dev, "couldn't get bootloader version\n"); + + + get_firmware_version = 1; + + msleep(1000); + } + else + { + /* + * We retry if we could boot into firmware mode as we're + * currently in bootloader mode (as mcu_bload_get_version + * succeeded). + */ + ret = mcu_bload_go(client); + if (ret < 0) { + dev_err(&client->dev,"couldn't switch to firmware mode.\n"); + dev_err(&client->dev, flash_error_message); + return -EINVAL; + } + else { + msleep(10); + get_firmware_version = 1; + } + } + + /* + * We should verify if we have the version of the MCU we + * need. If not, we let the user know about it and exit + * the probe. + */ + if (get_firmware_version) + { + ret = mcu_get_fw_version(client, fw_version); + if (ret == 0) + { + ret = mcu_verify_fw_version(fw_version); + } + else + { + dev_err(&client->dev, "couldn't get the MCU firmware version"); + dev_err(&client->dev, flash_error_message); + return -EINVAL; + } + + if (ret != 0) + { + dev_err(&client->dev, "wrong MCU firmware version"); + dev_err(&client->dev, flash_error_message); + return -EINVAL; + } + } + } + + dev_info(&client->dev, "Current Firmware Version - (%.32s)\n", fw_version); + + return 0; +} + +static int ar0521_parse_and_get_clocks(struct device *dev) +{ + int retval = 0; + + if (dev == NULL) + { + dev_err(dev, "%s: Invalid device parameter\n", __func__); + return -EINVAL; + } + + ar0521_data.sensor_clk = devm_clk_get(dev, "xclk"); + if (IS_ERR(ar0521_data.sensor_clk)) { + /* assuming clock enabled by default */ + ar0521_data.sensor_clk = NULL; + dev_err(dev, "clock-frequency missing or invalid\n"); + return PTR_ERR(ar0521_data.sensor_clk); + } + + /*mclk reserved for future use*/ + retval = of_property_read_u32(dev->of_node, "mclk", + &(ar0521_data.mclk)); + if (retval) { + dev_err(dev, "mclk missing or invalid\n"); + return retval; + } + + /*mclk_source reserved for future use*/ + retval = of_property_read_u32(dev->of_node, "mclk_source", + (u32 *) &(ar0521_data.mclk_source)); + if (retval) { + dev_err(dev, "mclk_source missing or invalid\n"); + return retval; + } + + retval = of_property_read_u32(dev->of_node, "csi_id", + &(ar0521_data.csi)); + if (retval) { + dev_err(dev, "csi id missing or invalid\n"); + return retval; + } + + return 0; +} + +static int ar0521_parse_and_get_gpios(struct device *dev) +{ + int err; + struct device_node *node = NULL; + + if (dev == NULL) + { + dev_err(dev, "%s: Invalid device parameter\n", __func__); + return -EINVAL; + } + + node = dev->of_node; + + pwdn_gpio = of_get_named_gpio(node, "pwn-gpios", 0); + if (!gpio_is_valid(pwdn_gpio)) { + dev_err(dev, "no sensor pwdn pin available"); + return -EINVAL; + } + else { +#ifdef AR0521_DEBUG + printk("BOOT = %x \n", pwdn_gpio); +#endif + } + + reset_gpio = of_get_named_gpio(node, "rst-gpios", 0); + if (!gpio_is_valid(reset_gpio)) { + dev_err(dev, "no sensor reset pin available"); + return -EINVAL; + } + else { +#ifdef AR0521_DEBUG + printk("RESET = %x \n", reset_gpio); +#endif + } + + err = devm_gpio_request_one(dev, pwdn_gpio, GPIOF_OUT_INIT_HIGH, + "ar0521_mipi_pwdn"); + if (err < 0) { + dev_warn(dev, "Failed to set power pin\n"); + dev_warn(dev, "err = %d\n", err); + return err; + } + + err = devm_gpio_request_one(dev, reset_gpio, GPIOF_OUT_INIT_HIGH, + "ar0521_mipi_reset"); + if (err < 0) { + dev_warn(dev, "Failed to set reset pin\n"); + dev_warn(dev, "err = %d\n", err); + return err; + } + + return 0; +} + +/*! + * ar0521 I2C probe function + * + * @param adapter struct i2c_adapter * + * @return Error code indicating success or failure + */ +static int ar0521_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct pinctrl *pinctrl; + struct device_node *node = client->dev.of_node; + struct device *dev = &client->dev; + + int ret, frm_fmt_size = 0, i; + uint16_t sensor_id = 0; + + if (!IS_ENABLED(CONFIG_OF) || !node) + return -EINVAL; + + pinctrl = devm_pinctrl_get_select_default(dev); + if (IS_ERR(pinctrl)) + dev_warn(dev, "no pin available\n"); + + /* Set initial values for the sensor struct. */ + memset(&ar0521_data, 0, sizeof(ar0521_data)); + + ret = ar0521_parse_and_get_gpios(dev); + if (ret) + { + pr_info("Warning: couldn't get GPIOs\n"); + } + + ret = ar0521_parse_and_get_clocks(dev); + if (ret) + { + dev_err(dev, "Error occurred when getting clock\n"); + return ret; + } + + clk_prepare_enable(ar0521_data.sensor_clk); + + /* + * We usually get and set/enable regulators here. But it doesn't + * seem to be needed here as the Variscite EVK seems to be supplying + * the required voltage directly without us needing to set it. + */ + toggle_gpio(reset_gpio, 1); + msleep(500); + + ret = ar0521_verify_mcu(client); + if (ret) + { + dev_err(dev, "Error occurred when verifying MCU\n"); + return ret; + } + + ar0521_data.mipi_lane_config = 4; + ret = mcu_isp_configuration(CMD_ID_LANE_CONFIG, client); + if(ret) + { + dev_err(dev, "Error occurred in configuring mipi lanes\n"); + return ret; + } + + /* + * Query the number of controls from MCU + */ + if (mcu_count_or_list_ctrls(client, NULL, &num_ctrls) < 0) { + dev_err(dev, "%s, Failed to get number of controls for sensor\n", __func__); + return -EFAULT; + } + + /* + * Query the number for Formats available from MCU + */ + if (mcu_count_or_list_fmts(client, NULL, &frm_fmt_size) < 0) { + dev_err(dev, "%s, Failed to get number of formats for sensor\n", __func__); + return -EFAULT; + } + + /* + * Initialise the MCU related data as we're about to use them. + */ + ret = mcu_data_init(dev, frm_fmt_size); + if (ret) + { + dev_err(dev, "%s: failed to initialize MCU related data\n", __func__); + return -EFAULT; + } + + if (mcu_get_sensor_id(client, &sensor_id) < 0) { + dev_err(dev, "Unable to get MCU Sensor ID \n"); + return -EFAULT; + } + + if (mcu_isp_init(client) < 0) { + dev_err(dev, "Unable to INIT ISP \n"); + return -EFAULT; + } + + /* + * Enumerate the Formats in the sensor + */ + if (mcu_count_or_list_fmts(client, stream_info, &frm_fmt_size) < 0) { + dev_err(dev, "Unable to enumerate the formats in the sensor\n"); + return -EFAULT; + } + + /* + * Fill some state information as required. + */ + ar0521_data.i2c_client = client; + + ar0521_data.pix.pixelformat = V4L2_PIX_FMT_UYVY; + ar0521_data.fmt.code = AR0521_DEFAULT_DATAFMT; + ar0521_data.fmt.colorspace = AR0521_DEFAULT_COLORSPACE; + ar0521_data.pix.width = AR0521_DEFAULT_WIDTH; + ar0521_data.pix.height = AR0521_DEFAULT_HEIGHT; + ar0521_data.streamcap.capability = V4L2_MODE_HIGHQUALITY | V4L2_CAP_TIMEPERFRAME; + ar0521_data.streamcap.capturemode = AR0521_DEFAULT_MODE; + ar0521_data.num_frm_fmts = frm_fmt_size; + ar0521_data.power_on = 0; + + /* + * Configure the stream with default configuration + */ + ret = ar0521_init(client); + if (ret) + { + dev_err(dev, "Failed to initialise the device with default configuration\n"); + return ret; + } + + v4l2_i2c_subdev_init(&ar0521_data.subdev, client, &ar0521_subdev_ops); + + /* + * Initialize Controls by getting details about the controls from the MCU + */ + ret = ar0521_ctrls_init(mcu_ctrl_info); + if (ret) + { + dev_warn(dev, "Failed to initialise the controls. Controls might not work\n"); + } + + /* + * Write default values for all controls + */ + for (i = 0; i < num_ctrls; i++) { + if (mcu_ctrl_info[i].ctrl_type == CTRL_STANDARD) { + int ret; + struct v4l2_control ctrl = { + .id = mcu_ctrl_info[i].ctrl_id, + .value = mcu_ctrl_info[i].ctrl_data.std.ctrl_def + }; + + if ( + mcu_ctrl_info[i].ctrl_id == 0x9a0926 + ) + { + /* + * We know that the MCU would fail when we + * try to write the V4L2_CID_ROI_EXPOSURE + * control as we are not in the correct auto + * exposure mode by default. So, skip it. + */ + continue; + } + + ret = ar0521_s_ctrl(&ar0521_data.subdev, &ctrl); + if (ret < 0) + { + dev_err(dev, "Failed to write default value for a control: %d; Control ID: %x\n", i, mcu_ctrl_info[i].ctrl_id); + } + } + } + + ar0521_data.subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; + ar0521_data.subdev.entity.function = MEDIA_ENT_F_CAM_SENSOR; + ar0521_data.pads[0].flags = MEDIA_PAD_FL_SOURCE; + + ret = media_entity_pads_init(&ar0521_data.subdev.entity, 1, ar0521_data.pads); + ar0521_data.subdev.entity.ops = &ar0521_sd_media_ops; + if (ret < 0) { + dev_err(dev, "Failed to init media entity pads\n"); + return ret; + } + + ret = v4l2_async_register_subdev(&ar0521_data.subdev); + if (ret) + { + dev_err(dev, "Failed to register the I2C subdev for the sensor\n"); + return ret; + } + + pr_info("AR0521 detected.\n"); + + return 0; +} + +/*! + * ar0521 I2C detach function + * + * @param client struct i2c_client * + * @return Error code indicating success or failure + */ +static int ar0521_remove(struct i2c_client *client) +{ + v4l2_async_unregister_subdev(&ar0521_data.subdev); + + clk_disable_unprepare(ar0521_data.sensor_clk); + + /* + * Power down the MCU + */ + if (reset_gpio >= 0) + { + toggle_gpio(reset_gpio, 0); + } + + /* + * Free up the GPIOs + */ + if (pwdn_gpio >= 0) + devm_gpio_free(&client->dev, pwdn_gpio); + + if (reset_gpio >= 0) + devm_gpio_free(&client->dev, reset_gpio); + + return 0; +} + +static const struct i2c_device_id ar0521_id[] = { + {"ar0521", 0}, + {} +}; + +MODULE_DEVICE_TABLE(i2c, ar0521_id); + +static struct i2c_driver ar0521_i2c_driver = { + .driver = { + .name = "ar0521", + .owner = THIS_MODULE + }, + .probe = ar0521_probe, + .remove = ar0521_remove, + .id_table = ar0521_id, +}; + + +module_i2c_driver(ar0521_i2c_driver); + +MODULE_DESCRIPTION("AR0521 V4L2 driver"); +MODULE_AUTHOR("e-con Systems"); +MODULE_LICENSE("GPL v2"); +MODULE_VERSION("1.0"); +MODULE_ALIAS("CSI"); diff --git a/drivers/media/platform/imx8/ar0521.h b/drivers/media/platform/imx8/ar0521.h new file mode 100644 index 000000000000..05bdb30bbb4f --- /dev/null +++ b/drivers/media/platform/imx8/ar0521.h @@ -0,0 +1,291 @@ +/* + * ar0521.h - ar0521 sensor mode tables + * + * Copyright (c) 2018-2019, e-con Systems, All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __AR0521_TABLES__ +#define __AR0521_TABLES__ + +#define AR0521_XCLK_MIN 6000000 +#define AR0521_XCLK_MAX 24000000 + +#define ar0521_reg struct reg_16 +#define AR0521_TABLE_WAIT_MS 0 +#define AR0521_TABLE_END 1 +#define AR0521_WAIT_MS 10 +#define AR0521_DEFAULT_MODE 0 + +#define AR0521_DEFAULT_WIDTH 640 +#define AR0521_DEFAULT_HEIGHT 480 + +#define AR0521_MAX_FORMAT_SUPPORTED 1 + +#define AR0521_DEFAULT_FPS 120 + +#define AR0521_DEFAULT_DATAFMT MEDIA_BUS_FMT_UYVY8_2X8 +#define AR0521_DEFAULT_COLORSPACE V4L2_COLORSPACE_SRGB + + +//////////////////////////////////////////////////////////////////////////////////////////// + +/* Defines related to MCU */ + +#define CMD_SIGNATURE 0x43 +#define TX_LEN_PKT 5 +#define RX_LEN_PKT 6 +#define HEADER_FOOTER_SIZE 4 +#define CMD_STATUS_MSG_LEN 7 + +#define VERSION_SIZE 32 +#define VERSION_FILE_OFFSET 100 + +#define MCU_CMD_STATUS_SUCCESS 0x0000 +#define MCU_CMD_STATUS_PENDING 0xF000 +#define MCU_CMD_STATUS_ISP_PWDN 0x0FF0 +#define MCU_CMD_STATUS_ISP_UNINIT 0x0FF1 + +#define MAX_NUM_FRATES 10 +#define MAX_CTRL_DATA_LEN 100 +#define MAX_CTRL_UI_STRING_LEN 32 + +typedef enum _errno { + ERRCODE_SUCCESS = 0x00, + ERRCODE_BUSY = 0x01, + ERRCODE_INVAL = 0x02, + ERRCODE_PERM = 0x03, + ERRCODE_NODEV = 0x04, + ERRCODE_IO = 0x05, + ERRCODE_HW_SPEC = 0x06, + ERRCODE_AGAIN = 0x07, + ERRCODE_ALREADY = 0x08, + ERRCODE_NOTIMPL = 0x09, + ERRCODE_RANGE = 0x0A, + + /* Reserved 0x0B - 0xFE */ + + ERRCODE_UNKNOWN = 0xFF, +} RETCODE; + +typedef enum _cmd_id { + CMD_ID_VERSION = 0x00, + CMD_ID_GET_SENSOR_ID = 0x01, + CMD_ID_GET_STREAM_INFO = 0x02, + CMD_ID_GET_CTRL_INFO = 0x03, + CMD_ID_INIT_CAM = 0x04, + CMD_ID_GET_STATUS = 0x05, + CMD_ID_DE_INIT_CAM = 0x06, + CMD_ID_STREAM_ON = 0x07, + CMD_ID_STREAM_OFF = 0x08, + CMD_ID_STREAM_CONFIG = 0x09, + CMD_ID_GET_CTRL_UI_INFO = 0x0A, + + /* Reserved 0x0B to 0x0F */ + + CMD_ID_GET_CTRL = 0x10, + CMD_ID_SET_CTRL = 0x11, + + /* Reserved 0x12, 0x13 */ + + CMD_ID_FW_UPDT = 0x14, + CMD_ID_ISP_PDOWN = 0x15, + CMD_ID_ISP_PUP = 0x16, + + /* Reserved - 0x17 to 0xFE (except 0x43) */ + CMD_ID_LANE_CONFIG = 0x17, + CMD_ID_MIPI_CLK_CONFIG = 0x18, + + CMD_ID_UNKNOWN = 0xFF, + +} HOST_CMD_ID; + +enum { + FRAME_RATE_DISCRETE = 0x01, + FRAME_RATE_CONTINOUS = 0x02, +}; + +enum { + CTRL_STANDARD = 0x01, + CTRL_EXTENDED = 0x02, +}; + +enum { +/* 0x01 - Integer (32bit) + 0x02 - Long Int (64 bit) + 0x03 - String + 0x04 - Pointer to a 1-Byte Array + 0x05 - Pointer to a 2-Byte Array + 0x06 - Pointer to a 4-Byte Array + 0x07 - Pointer to Generic Data (custom Array) +*/ + + EXT_CTRL_TYPE_INTEGER = 0x01, + EXT_CTRL_TYPE_LONG = 0x02, + EXT_CTRL_TYPE_STRING = 0x03, + EXT_CTRL_TYPE_PTR8 = 0x04, + EXT_CTRL_TYPE_PTR16 = 0x05, + EXT_CTRL_TYPE_PTR32 = 0x06, + EXT_CTRL_TYPE_VOID = 0x07, +}; + +/* Stream and Control Info Struct */ +typedef struct _isp_stream_info { + uint32_t fmt_fourcc; + uint16_t width; + uint16_t height; + uint8_t frame_rate_type; + union { + struct { + uint16_t frame_rate_num; + uint16_t frame_rate_denom; + } disc; + struct { + uint16_t frame_rate_min_num; + uint16_t frame_rate_min_denom; + uint16_t frame_rate_max_num; + uint16_t frame_rate_max_denom; + uint16_t frame_rate_step_num; + uint16_t frame_rate_step_denom; + } cont; + } frame_rate; +} ISP_STREAM_INFO; + + +typedef struct _isp_ctrl_ui_info { + struct { + char ctrl_name[MAX_CTRL_UI_STRING_LEN]; + uint8_t ctrl_ui_type; + uint8_t ctrl_ui_flags; + } ctrl_ui_info; + + /* This Struct is valid only if ctrl_ui_type = 0x03 */ + struct { + uint8_t num_menu_elem; + char **menu; + } ctrl_menu_info; +} ISP_CTRL_UI_INFO; + +typedef struct _isp_ctrl_info_std { + uint32_t ctrl_id; + uint8_t ctrl_type; + uint8_t mcu_ctrl_index; + union { + struct { + int32_t ctrl_min; + int32_t ctrl_max; + int32_t ctrl_def; + int32_t ctrl_step; + } std; + struct { + uint8_t val_type; + uint32_t val_length; + // This size may vary according to ctrl types + uint8_t val_data[MAX_CTRL_DATA_LEN]; + } ext; + } ctrl_data; + ISP_CTRL_UI_INFO ctrl_ui_data; +} ISP_CTRL_INFO; + +struct ar0521 { + int numctrls; + struct v4l2_subdev subdev; + struct i2c_client *i2c_client; + uint16_t frate_index; + struct media_pad pads[1]; + + u32 mclk; + u8 mclk_source; + struct clk *sensor_clk; + + int csi; + + /* + * Format related data + */ + struct v4l2_pix_format pix; + + struct ar0521_datafmt { + u32 code; + enum v4l2_colorspace colorspace; + } fmt; + + struct v4l2_captureparm streamcap; + + bool on; + + int num_frm_fmts; + + /* + * Array of Camera framesizes + * + * Moved from global + */ + struct mcu_frmfmt { + struct v4l2_frmsize_discrete size; + unsigned int * framerates; + int num_framerates; + int mode; + } *mcu_cam_frmfmt; + + int power_on; + + uint16_t mipi_lane_config; + uint16_t mipi_clk_config; + + struct v4l2_ctrl *ctrls[]; + +}; + +static ISP_STREAM_INFO *stream_info = NULL; +static ISP_CTRL_INFO *mcu_ctrl_info = NULL; + +/* Total formats */ +static int num_ctrls = 0; +static int *streamdb; +static uint32_t *ctrldb; + +/* Mutex for I2C lock */ +DEFINE_MUTEX(mcu_i2c_mutex); + +static int ar0521_read(struct i2c_client *client, u8 * val, u32 count); +static int ar0521_write(struct i2c_client *client, u8 * val, u32 count); +static int ar0521_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param); +static int ar0521_s_power(struct v4l2_subdev *sd, int on); + +/* + * MCU related functions + */ +static int mcu_get_fw_version(struct i2c_client *client, unsigned char * fw_version); +static int mcu_verify_fw_version(const unsigned char *const fw_version); +static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size); +static int mcu_count_or_list_ctrls(struct i2c_client *client, + ISP_CTRL_INFO * mcu_ctrl_info, int *numctrls); +static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id); +static int mcu_get_cmd_status(struct i2c_client *client, uint8_t * cmd_id, + uint16_t * cmd_status, uint8_t * ret_code); +static int mcu_isp_init(struct i2c_client *client); +static int mcu_stream_config(struct i2c_client *client, uint32_t format, + int mode, int frate_index); +static int mcu_set_ctrl(struct i2c_client *client, uint32_t ctrl_id, + uint8_t ctrl_type, int32_t curr_val); +static int mcu_get_ctrl(struct i2c_client *client, uint32_t ctrl_id, + uint8_t * ctrl_type, int32_t * curr_val); +static int mcu_get_ctrl_ui(struct i2c_client *client, + ISP_CTRL_INFO * mcu_ui_info, int index); +static int mcu_fw_update(struct i2c_client *client, unsigned char *txt_fw_version); +static int mcu_isp_power_down(struct i2c_client *client); +static int mcu_isp_power_wakeup(struct i2c_client *client); + +#endif /* __AR0521_TABLES__ */ diff --git a/drivers/media/platform/imx8/ar1335.c b/drivers/media/platform/imx8/ar1335.c new file mode 100644 index 000000000000..c798bc938263 --- /dev/null +++ b/drivers/media/platform/imx8/ar1335.c @@ -0,0 +1,3625 @@ +/* + * ar1335.c - AR1335 sensor driver + * Copyright (c) 2020-2021, e-con Systems. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ar1335.h" +#include "mcu_firmware_1335.h" + +/* +#define AR1335_DEBUG 1 +*/ + +/*! + * Maintains the information on the current state of the sensor. + */ +static struct ar1335 ar1335_data; + +static int pwdn_gpio, reset_gpio; + +int gpios_available_1335(void) +{ + return (pwdn_gpio >= 0) && (reset_gpio >= 0); +} + +/********************************************************************** + * + * START of AR1335 related code + * + ********************************************************************** + */ + +static int ar1335_write(struct i2c_client *client, u8 * val, u32 count) +{ + int ret; + struct i2c_msg msg = { + .addr = client->addr, + .flags = 0, + .len = count, + .buf = val, + }; + + ret = i2c_transfer(client->adapter, &msg, 1); + if (ret < 0) { + dev_err(&client->dev, "Failed writing register.\n"); + dev_err(&client->dev, "addr: %x; val = %hhu, ret = %d!\n", + client->addr, *val, ret); + return ret; + } + + return 0; +} + +static int ar1335_read(struct i2c_client *client, u8 * val, u32 count) +{ + int ret; + struct i2c_msg msg = { + .addr = client->addr, + .flags = 0, + .buf = val, + }; + + msg.flags = I2C_M_RD; + msg.len = count; + ret = i2c_transfer(client->adapter, &msg, 1); + if (ret < 0) + goto err; + + return 0; + + err: + dev_err(&client->dev, "Failed reading register ret = %d!\n", ret); + return ret; +} + +/* + * The MCU specific functions below depend on the sensor-specific + * functions above. + */ + +/* + * --------------------------------------------------------- + * START of MCU realed functions + * --------------------------------------------------------- + */ + +/* + * NOTE about modularizing this MCU related function. + * + * - The functions: + * + * x mcu_get_fw_version + * x mcu_bload_get_version + * x mcu_bload_erase_flash + * x mcu_bload_parse_send_cmd + * x mcu_bload_go + * x mcu_bload_read + * x mcu_count_or_list_ctrls + * x mcu_count_or_list_fmts + * x mcu_get_sensor_id + * x mcu_get_ctrl_ui + * x mcu_stream_config + * x mcu_isp_power_down + * x mcu_isp_power_wakeup + * x mcu_set_ctrl + * x mcu_get_ctrl + * + * seem to directly use platform specific functions: + * + * x ar1335_write + * x ar1335_read + * + * This could be passed in as a function pointer. + */ + +static unsigned short int mcu_bload_calc_crc16(unsigned char *buf, int len) +{ + unsigned short int crc = 0; + int i = 0; + + if (!buf || !(buf + len)) + return 0; + + for (i = 0; i < len; i++) { + crc ^= buf[i]; + } + + return crc; +} + +static int mcu_bload_ascii2hex(unsigned char ascii) +{ + if (ascii <= '9') { + return (ascii - '0'); + } else if ((ascii >= 'a') && (ascii <= 'f')) { + return (0xA + (ascii - 'a')); + } else if ((ascii >= 'A') && (ascii <= 'F')) { + return (0xA + (ascii - 'A')); + } + return -1; +} + +static unsigned char errorcheck(char *data, unsigned int len) +{ + unsigned int i = 0; + unsigned char crc = 0x00; + + for (i = 0; i < len; i++) { + crc ^= data[i]; + } + + return crc; +} + +/* + * mcu_get_fw_version: + * + * Read the firmware version from the MCU. + * + * A success value (0) is returned when the MCU version could be successfully read. + * else a negative value indicating error is returned. + */ +static int mcu_get_fw_version(struct i2c_client *client, unsigned char *fw_version_1335) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + int ret = 0, err = 0, loop; + /* Query firmware version from MCU */ + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_VERSION; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + err = ar1335_write(client, mc_data_1335, TX_LEN_PKT); + if (err != 0) + { + dev_err(&client->dev, "MCU CMD ID version Error- %d\n", err); + ret = -EIO; + goto exit; + } + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_VERSION; + err = ar1335_write(client, mc_data_1335, 2); + if (err != 0) { + dev_err(&client->dev," %s(%d) MCU CMD ID Write PKT fw Version Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) MCU CMD ID Read PKT fw Version Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[4]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) MCU CMD ID fw Version Error CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + errcode = mc_ret_data_1335[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) MCU CMD ID fw Errcode - 0x%02x \n", __func__, + __LINE__, errcode); + ret = -EIO; + goto exit; + } + + /* Read the actual version from MCU*/ + payload_len = + ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE; + memset(mc_ret_data_1335, 0x00, payload_len); + err = ar1335_read(client, mc_ret_data_1335, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Version Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[payload_len - 2]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 32); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) MCU fw CMD ID Version CRC ERROR 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data_1335[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Payload Error - 0x%02x \n", __func__, + __LINE__, errcode); + ret = -EIO; + goto exit; + } + + for (loop = 0 ; loop < VERSION_SIZE ; loop++ ) + *(fw_version_1335+loop) = mc_ret_data_1335[2+loop]; + + ret = ERRCODE_SUCCESS; +exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; +} + +/** + * mcu_verify_fw_version: + * + * Verify the firmware version obtained from the MCU and that found in the + * firmware text file present in our driver. + * + * The return value after verification is as follows: + * + * - If the version number matches a success value (0) is returned. + * + * - In case the version number mismatches, a negative value indicating error + * is returned. + * + * - In case the force update bit is set in firmware version in the text + * file, a positive value is returned. + */ +static int mcu_verify_fw_version(const unsigned char *const fw_version_1335) +{ + int loop, i = 0, ret; + char txt_fw_version[32] = {0}; + unsigned long txt_fw_pos = ARRAY_SIZE(g_mcu_fw_buf_1335)-VERSION_FILE_OFFSET; + + /* Get Text Firmware version*/ + for(loop = txt_fw_pos; loop < (txt_fw_pos+64); loop=loop+2) { + *(txt_fw_version+i) = (mcu_bload_ascii2hex(g_mcu_fw_buf_1335[loop]) << 4 | + mcu_bload_ascii2hex(g_mcu_fw_buf_1335[loop+1])); + i++; + } + + /* Check for forced/always update field in the text firmware version*/ + if(txt_fw_version[17] == '1') { + +#ifdef AR1335_DEBUG + pr_info("Forced Update Enabled - Firmware Version - (%.32s) \n", + fw_version_1335); +#endif + + ret = 2; + } + else { + for(i = 0; i < VERSION_SIZE; i++) { + if(txt_fw_version[i] != fw_version_1335[i]) { + + pr_info("Previous Firmware Version - (%.32s)\n", fw_version_1335); + + ret = -1; + break; + } + } + + if (i == VERSION_SIZE) + ret = ERRCODE_SUCCESS; + } + + return ret; +} + +static int mcu_bload_get_version(struct i2c_client *client) +{ + int ret = 0; + + /*----------------------------- GET VERSION -------------------- */ + + /* Write Get Version CMD */ + g_bload_buf_1335[0] = BL_GET_VERSION; + g_bload_buf_1335[1] = ~(BL_GET_VERSION); + + ret = ar1335_write(client, g_bload_buf_1335, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != 'y') { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed\n"); + return -1; + } + + /* ---------------- GET VERSION END ------------------- */ + + return 0; +} + +static int mcu_bload_erase_flash(struct i2c_client *client) +{ + unsigned short int pagenum = 0x0000; + int ret = 0, i = 0, checksum = 0; + + /* --------------- ERASE FLASH --------------------- */ + + for (i = 0; i < NUM_ERASE_CYCLES; i++) { + + checksum = 0x00; + /* Write Erase Pages CMD */ + g_bload_buf_1335[0] = BL_ERASE_MEM_NS; + g_bload_buf_1335[1] = ~(BL_ERASE_MEM_NS); + + ret = ar1335_write(client, g_bload_buf_1335, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf_1335[0] = (MAX_PAGES - 1) >> 8; + g_bload_buf_1335[1] = (MAX_PAGES - 1) & 0xFF; + g_bload_buf_1335[2] = g_bload_buf_1335[0] ^ g_bload_buf_1335[1]; + + ret = ar1335_write(client, g_bload_buf_1335, 3); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + for (pagenum = 0; pagenum < MAX_PAGES; pagenum++) { + g_bload_buf_1335[(2 * pagenum)] = + (pagenum + (i * MAX_PAGES)) >> 8; + g_bload_buf_1335[(2 * pagenum) + 1] = + (pagenum + (i * MAX_PAGES)) & 0xFF; + checksum = + checksum ^ g_bload_buf_1335[(2 * pagenum)] ^ + g_bload_buf_1335[(2 * pagenum) + 1]; + } + g_bload_buf_1335[2 * MAX_PAGES] = checksum; + + ret = ar1335_write(client, g_bload_buf_1335, (2 * MAX_PAGES) + 1); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + poll_busy: + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] == RESP_BUSY) + goto poll_busy; + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + +#ifdef AR1335_DEBUG + pr_info(" ERASE Sector %d success !! \n", i + 1); +#endif + } + + /* ------------ ERASE FLASH END ----------------------- */ + + return 0; +} + +static unsigned char mcu_bload_inv_checksum(unsigned char *buf, int len) +{ + unsigned int checksum = 0x00; + int i = 0; + + if (!buf || !(buf + len)) + return 0; + + for (i = 0; i < len; i++) { + checksum = (checksum + buf[i]); + } + + checksum &= (0xFF); + return (~(checksum) + 1); +} + +static int mcu_bload_parse_send_cmd(struct i2c_client *client, + unsigned char *bytearray, int rec_len) +{ + IHEX_RECORD *ihex_rec = NULL; + unsigned char checksum = 0, calc_checksum = 0; + int i = 0, ret = 0; + + if (!bytearray) + return -1; + + ihex_rec = (IHEX_RECORD *) bytearray; + ihex_rec->addr = htons(ihex_rec->addr); + + checksum = bytearray[rec_len - 1]; + + calc_checksum = mcu_bload_inv_checksum(bytearray, rec_len - 1); + if (checksum != calc_checksum) { + dev_err(&client->dev," Invalid Checksum 0x%02x != 0x%02x !! \n", + checksum, calc_checksum); + return -1; + } + + if ((ihex_rec->rectype == REC_TYPE_ELA) + && (ihex_rec->addr == 0x0000) + && (ihex_rec->datasize = 0x02)) { + /* Upper 32-bit configuration */ + g_bload_flashaddr_1335 = (ihex_rec->recdata[0] << + 24) | (ihex_rec->recdata[1] + << 16); +#ifdef AR1335_DEBUG + pr_info("Updated Flash Addr = 0x%08x \n", + g_bload_flashaddr_1335); +#endif + + } else if (ihex_rec->rectype == REC_TYPE_DATA) { + /* Flash Data into Flashaddr */ + + g_bload_flashaddr_1335 = + (g_bload_flashaddr_1335 & 0xFFFF0000) | (ihex_rec->addr); + g_bload_crc16_1335 ^= + mcu_bload_calc_crc16(ihex_rec->recdata, ihex_rec->datasize); + + /* Write Erase Pages CMD */ + g_bload_buf_1335[0] = BL_WRITE_MEM_NS; + g_bload_buf_1335[1] = ~(BL_WRITE_MEM_NS); + + ret = ar1335_write(client, g_bload_buf_1335, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf_1335[0] = (g_bload_flashaddr_1335 & 0xFF000000) >> 24; + g_bload_buf_1335[1] = (g_bload_flashaddr_1335 & 0x00FF0000) >> 16; + g_bload_buf_1335[2] = (g_bload_flashaddr_1335 & 0x0000FF00) >> 8; + g_bload_buf_1335[3] = (g_bload_flashaddr_1335 & 0x000000FF); + g_bload_buf_1335[4] = + g_bload_buf_1335[0] ^ g_bload_buf_1335[1] ^ g_bload_buf_1335[2] ^ + g_bload_buf_1335[3]; + + ret = ar1335_write(client, g_bload_buf_1335, 5); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf_1335[0] = ihex_rec->datasize - 1; + checksum = g_bload_buf_1335[0]; + for (i = 0; i < ihex_rec->datasize; i++) { + g_bload_buf_1335[i + 1] = ihex_rec->recdata[i]; + checksum ^= g_bload_buf_1335[i + 1]; + } + + g_bload_buf_1335[i + 1] = checksum; + + ret = ar1335_write(client, g_bload_buf_1335, i + 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + poll_busy: + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] == RESP_BUSY) + goto poll_busy; + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + } else if (ihex_rec->rectype == REC_TYPE_SLA) { + /* Update Instruction pointer to this address */ + + } else if (ihex_rec->rectype == REC_TYPE_EOF) { + /* End of File - Issue I2C Go Command */ + return 0; + } else { + + /* Unhandled Type */ + dev_err(&client->dev,"Unhandled Command Type \n"); + return -1; + } + + return 0; +} + +static int mcu_bload_update_fw(struct i2c_client *client) +{ + /* exclude NULL character at end of string */ + unsigned long hex_file_size = ARRAY_SIZE(g_mcu_fw_buf_1335) - 1; + unsigned char wbuf[MAX_BUF_LEN]; + int i = 0, recindex = 0, ret = 0; + + for (i = 0; i < hex_file_size; i++) { + if ((recindex == 0) && (g_mcu_fw_buf_1335[i] == ':')) { + /* pr_info("Start of a Record \n"); */ + } else if (g_mcu_fw_buf_1335[i] == CR) { + /* No Implementation */ + } else if (g_mcu_fw_buf_1335[i] == LF) { + if (recindex == 0) { + /* Parsing Complete */ + break; + } + + /* Analyze Packet and Send Commands */ + ret = mcu_bload_parse_send_cmd(client, wbuf, recindex); + if (ret < 0) { + dev_err(&client->dev,"Error in Processing Commands \n"); + break; + } + + recindex = 0; + + } else { + /* Parse Rec Data */ + if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf_1335[i])) < 0) { + dev_err(&client->dev, + "Invalid Character - 0x%02x !! \n", + g_mcu_fw_buf_1335[i]); + break; + } + + wbuf[recindex] = (0xF0 & (ret << 4)); + i++; + + if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf_1335[i])) < 0) { + dev_err(&client->dev, + "Invalid Character - 0x%02x !!!! \n", + g_mcu_fw_buf_1335[i]); + break; + } + + wbuf[recindex] |= (0x0F & ret); + recindex++; + } + } + +#ifdef AR1335_DEBUG + pr_info("Program FLASH Success !! - CRC = 0x%04x \n", + g_bload_crc16_1335); +#endif + + /* ------------ PROGRAM FLASH END ----------------------- */ + + return ret; +} + +static int mcu_bload_read(struct i2c_client *client, + unsigned int g_bload_flashaddr_1335, char *bytearray, + unsigned int len) +{ + int ret = 0; + + g_bload_buf_1335[0] = BL_READ_MEM; + g_bload_buf_1335[1] = ~(BL_READ_MEM); + + ret = ar1335_write(client, g_bload_buf_1335, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf_1335[0] = (g_bload_flashaddr_1335 & 0xFF000000) >> 24; + g_bload_buf_1335[1] = (g_bload_flashaddr_1335 & 0x00FF0000) >> 16; + g_bload_buf_1335[2] = (g_bload_flashaddr_1335 & 0x0000FF00) >> 8; + g_bload_buf_1335[3] = (g_bload_flashaddr_1335 & 0x000000FF); + g_bload_buf_1335[4] = + g_bload_buf_1335[0] ^ g_bload_buf_1335[1] ^ g_bload_buf_1335[2] ^ g_bload_buf_1335[3]; + + ret = ar1335_write(client, g_bload_buf_1335, 5); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + g_bload_buf_1335[0] = len - 1; + g_bload_buf_1335[1] = ~(len - 1); + + ret = ar1335_write(client, g_bload_buf_1335, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + /* Wait for ACK or NACK */ + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + ret = ar1335_read(client, bytearray, len); + if (ret < 0) { + dev_err(&client->dev,"Read Failed \n"); + return -1; + } + + return 0; +} + +static int mcu_bload_verify_flash(struct i2c_client *client, + unsigned short int orig_crc) +{ + char bytearray[FLASH_READ_LEN]; + unsigned short int calc_crc = 0; + unsigned int flash_addr = FLASH_START_ADDRESS, i = 0; + + while ((i + FLASH_READ_LEN) <= FLASH_SIZE) { + memset(bytearray, 0x0, FLASH_READ_LEN); + + if (mcu_bload_read( + client, flash_addr + i, bytearray, FLASH_READ_LEN) < 0) { + dev_err(&client->dev," i2c_bload_read FAIL !! \n"); + return -1; + } + + calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN); + i += FLASH_READ_LEN; + } + + if ((FLASH_SIZE - i) > 0) { + memset(bytearray, 0x0, FLASH_READ_LEN); + + if (mcu_bload_read( + client, flash_addr + i, bytearray, (FLASH_SIZE - i) + ) < 0) { + dev_err(&client->dev," i2c_bload_read FAIL !! \n"); + return -1; + } + + calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN); + } + + if (orig_crc != calc_crc) { + dev_err(&client->dev," CRC verification fail !! 0x%04x != 0x%04x \n", + orig_crc, calc_crc); + } + +#ifdef AR1335_DEBUG + pr_info(" CRC Verification Success 0x%04x == 0x%04x \n", + orig_crc, calc_crc); +#endif + + return 0; +} + +static int mcu_bload_go(struct i2c_client *client) +{ + int ret = 0; + + g_bload_buf_1335[0] = BL_GO; + g_bload_buf_1335[1] = ~(BL_GO); + + ret = ar1335_write(client, g_bload_buf_1335, 2); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Failed Read 1 \n"); + return -1; + } + + /* Start Address */ + g_bload_buf_1335[0] = (FLASH_START_ADDRESS & 0xFF000000) >> 24; + g_bload_buf_1335[1] = (FLASH_START_ADDRESS & 0x00FF0000) >> 16; + g_bload_buf_1335[2] = (FLASH_START_ADDRESS & 0x0000FF00) >> 8; + g_bload_buf_1335[3] = (FLASH_START_ADDRESS & 0x000000FF); + g_bload_buf_1335[4] = + g_bload_buf_1335[0] ^ g_bload_buf_1335[1] ^ g_bload_buf_1335[2] ^ g_bload_buf_1335[3]; + + ret = ar1335_write(client, g_bload_buf_1335, 5); + if (ret < 0) { + dev_err(&client->dev,"Write Failed \n"); + return -1; + } + + ret = ar1335_read(client, g_bload_buf_1335, 1); + if (ret < 0) { + dev_err(&client->dev,"Failed Read 1 \n"); + return -1; + } + + if (g_bload_buf_1335[0] != RESP_ACK) { + /* NACK Received */ + dev_err(&client->dev," NACK Received... exiting.. \n"); + return -1; + } + + return 0; +} + +static int mcu_fw_update(struct i2c_client *client, unsigned char *mcu_fw_version) +{ + int ret = 0; + g_bload_crc16_1335 = 0; + + /* + * TODO: Is this necessary? It seems redundant as it's already called before + * calling this function. + */ + /* Read Firmware version from bootloader MCU */ + ret = mcu_bload_get_version(client); + if (ret < 0) { + dev_err(&client->dev," Error in Get Version \n"); + goto exit; + } + +#ifdef AR1335_DEBUG + pr_info(" Get Version SUCCESS !! \n"); +#endif + + /* Erase firmware present in the MCU and flash new firmware*/ + ret = mcu_bload_erase_flash(client); + if (ret < 0) { + dev_err(&client->dev," Error in Erase Flash \n"); + goto exit; + } + +#ifdef AR1335_DEBUG + pr_info("Erase Flash Success !! \n"); +#endif + + /* Read the firmware present in the text file */ + if ((ret = mcu_bload_update_fw(client)) < 0) { + dev_err(&client->dev," Write Flash FAIL !! \n"); + goto exit; + } + + /* Verify the checksum for the update firmware */ + if ((ret = mcu_bload_verify_flash(client, g_bload_crc16_1335)) < 0) { + dev_err(&client->dev," verify_flash FAIL !! \n"); + goto exit; + } + + /* Reverting from bootloader mode */ + /* I2C GO Command */ + if ((ret = mcu_bload_go(client)) < 0) { + dev_err(&client->dev," i2c_bload_go FAIL !! \n"); + goto exit; + } + + if(mcu_fw_version) { + +#ifdef AR1335_DEBUG + pr_info("(%s) - Firmware Updated - (%.32s)\n", + __func__, mcu_fw_version); +#endif + + } + exit: + return ret; +} + +static int mcu_count_or_list_ctrls(struct i2c_client *client, + ISP_CTRL_INFO * mcu_cam_ctrl, int *numctrls) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + uint16_t index = 0; + int ret = 0, err = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + /* Array of Ctrl Info */ + while (1) { + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_CTRL_INFO; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_CTRL_INFO; + mc_data_1335[2] = index >> 8; + mc_data_1335[3] = index & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + err = ar1335_write(client, mc_data_1335, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[4]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + if (((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) == 0) { + *numctrls = index; + break; + } + + payload_len = + ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + + HEADER_FOOTER_SIZE; + errcode = mc_ret_data_1335[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + memset(mc_ret_data_1335, 0x00, payload_len); + err = ar1335_read(client, mc_ret_data_1335, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -1; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data_1335[2], + payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data_1335[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EINVAL; + goto exit; + } + + if(mcu_cam_ctrl != NULL) { + int sorted_elem = index - 1, elem = index; + + /* append ctrl info in array */ + mcu_cam_ctrl[index].ctrl_id = + mc_ret_data_1335[2] << 24 | mc_ret_data_1335[3] << 16 | mc_ret_data_1335[4] + << 8 | mc_ret_data_1335[5]; + mcu_cam_ctrl[index].ctrl_type = mc_ret_data_1335[6]; + + switch (mcu_cam_ctrl[index].ctrl_type) { + case CTRL_STANDARD: + mcu_cam_ctrl[index].ctrl_data.std.ctrl_min = + mc_ret_data_1335[7] << 24 | mc_ret_data_1335[8] << 16 + | mc_ret_data_1335[9] << 8 | mc_ret_data_1335[10]; + + mcu_cam_ctrl[index].ctrl_data.std.ctrl_max = + mc_ret_data_1335[11] << 24 | mc_ret_data_1335[12] << + 16 | mc_ret_data_1335[13] + << 8 | mc_ret_data_1335[14]; + + mcu_cam_ctrl[index].ctrl_data.std.ctrl_def = + mc_ret_data_1335[15] << 24 | mc_ret_data_1335[16] << + 16 | mc_ret_data_1335[17] + << 8 | mc_ret_data_1335[18]; + + mcu_cam_ctrl[index].ctrl_data.std.ctrl_step = + mc_ret_data_1335[19] << 24 | mc_ret_data_1335[20] << + 16 | mc_ret_data_1335[21] + << 8 | mc_ret_data_1335[22]; + + mcu_cam_ctrl[index].mcu_ctrl_index = index; + break; + + case CTRL_EXTENDED: + /* Not Implemented */ + break; + } + +#ifdef AR1335_DEBUG + pr_info("Control: ID: 0x%x; Type: %u; min: %d; Max: %d; Def: %d; Step: %u\n", + mcu_cam_ctrl[index].ctrl_id, + mcu_cam_ctrl[index].ctrl_type, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_min, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_max, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_def, + mcu_cam_ctrl[index].ctrl_data.std.ctrl_step + ); +#endif + + ctrldb[index] = mcu_cam_ctrl[index].ctrl_id; + + /* + * Keep the control list and control db sorted. + */ + while( + sorted_elem >= 0 && + ( + mcu_cam_ctrl[sorted_elem].ctrl_id > + mcu_cam_ctrl[elem].ctrl_id + ) + ) + { + ISP_CTRL_INFO swap_ctrl_elem; + uint32_t swap_ctrldb_elem; + + /* + * Swap the elements in the mcu_cam_ctrl list + */ + memcpy(&swap_ctrl_elem, (mcu_cam_ctrl + sorted_elem), sizeof(ISP_CTRL_INFO)); + memcpy((mcu_cam_ctrl + sorted_elem), (mcu_cam_ctrl + elem), sizeof(ISP_CTRL_INFO)); + memcpy((mcu_cam_ctrl + elem), &swap_ctrl_elem, sizeof(ISP_CTRL_INFO)); + + /* + * Swap the elements in ctrldb + */ + swap_ctrldb_elem = ctrldb[sorted_elem]; + ctrldb[sorted_elem] = ctrldb[elem]; + ctrldb[elem] = swap_ctrldb_elem; + + elem = sorted_elem; + sorted_elem = elem - 1; + } + } + index++; + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; +} + +static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size) +{ + uint32_t payload_len = 0, err = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0, skip = 0; + uint16_t index = 0, mode = 0; + + int loop = 0, num_frates = 0, ret = 0; + + /* Stream Info Variables */ + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + /* List all formats from MCU and append to mcu_ar1335_frmfmt array */ + + for (index = 0;; index++) { + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_STREAM_INFO; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_STREAM_INFO; + mc_data_1335[2] = index >> 8; + mc_data_1335[3] = index & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + err = ar1335_write(client, mc_data_1335, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[4]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + if (((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) == 0) { + if(stream_info == NULL) { + *frm_fmt_size = index; + } else { + *frm_fmt_size = mode; + } + break; + } + + payload_len = + ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + + HEADER_FOOTER_SIZE; + errcode = mc_ret_data_1335[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + memset(mc_ret_data_1335, 0x00, payload_len); + err = ar1335_read(client, mc_ret_data_1335, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", + __func__, __LINE__, err); + ret = -1; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data_1335[2], + payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev, + " %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data_1335[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev, + " %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + if(stream_info != NULL) { + stream_info->fmt_fourcc = + mc_ret_data_1335[2] << 24 | mc_ret_data_1335[3] << 16 | mc_ret_data_1335[4] + << 8 | mc_ret_data_1335[5]; + stream_info->width = mc_ret_data_1335[6] << 8 | mc_ret_data_1335[7]; + stream_info->height = mc_ret_data_1335[8] << 8 | mc_ret_data_1335[9]; + stream_info->frame_rate_type = mc_ret_data_1335[10]; + + switch (stream_info->frame_rate_type) { + case FRAME_RATE_DISCRETE: + stream_info->frame_rate.disc.frame_rate_num = + mc_ret_data_1335[11] << 8 | mc_ret_data_1335[12]; + + stream_info->frame_rate.disc.frame_rate_denom = + mc_ret_data_1335[13] << 8 | mc_ret_data_1335[14]; + + break; + + case FRAME_RATE_CONTINOUS: + dev_err(&client->dev, + " The Stream format at index 0x%04x has FRAME_RATE_CONTINOUS," + "which is unsupported !! \n", index); + + continue; + } + + switch (stream_info->fmt_fourcc) { + /* + * We check for UYVY here instead of YUYV as the output from the sensor + * is UYVY. We swap it to YUYV only making changes in the platform driver. + */ + case V4L2_PIX_FMT_UYVY: + /* ar1335_codes is already populated with V4L2_PIX_FMT_YUYV */ + /* check if width and height are already in array - update frame rate only */ + for (loop = 0; loop < (mode); loop++) { + if ((ar1335_data.mcu_cam_frmfmt[loop].size.width == + stream_info->width) + && (ar1335_data.mcu_cam_frmfmt[loop].size.height == + stream_info->height)) { + + num_frates = + ar1335_data.mcu_cam_frmfmt[loop].num_framerates; + *((int *)(ar1335_data.mcu_cam_frmfmt[loop].framerates) + num_frates) + = (int)(stream_info->frame_rate. + disc.frame_rate_num / + stream_info->frame_rate. + disc.frame_rate_denom); + + ar1335_data.mcu_cam_frmfmt[loop].num_framerates++; + + streamdb[index] = loop; + skip = 1; + break; + } + } + + if (skip) { + skip = 0; + continue; + } + + /* Add Width, Height, Frame Rate array, Mode into mcu_ar1335_frmfmt array */ + ar1335_data.mcu_cam_frmfmt[mode].size.width = stream_info->width; + ar1335_data.mcu_cam_frmfmt[mode].size.height = stream_info->height; + + num_frates = ar1335_data.mcu_cam_frmfmt[mode].num_framerates; + + *(ar1335_data.mcu_cam_frmfmt[mode].framerates + num_frates) = + (int)(stream_info->frame_rate.disc.frame_rate_num / + stream_info->frame_rate.disc.frame_rate_denom); + + ar1335_data.mcu_cam_frmfmt[mode].num_framerates++; + + ar1335_data.mcu_cam_frmfmt[mode].mode = mode; + ar1335_data.mcu_cam_frmfmt[mode].mode = mode; + streamdb[index] = mode; + mode++; + break; + + default: + dev_err(&client->dev, + " The Stream format at index 0x%04x has format 0x%08x ," + "which is unsupported !! \n", index, + stream_info->fmt_fourcc); + } + } + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; +} + +/* + * Function to initialise the data related to MCU. Needs to be called + * before trying to use them. + */ +static int mcu_data_init(struct device *dev, int frm_fmt_size) +{ + int loop = 0; + + if (dev == NULL) + { + dev_err(dev, "%s: Invalid device parameter\n", __func__); + return -EINVAL; + } + + mcu_ctrl_info = devm_kzalloc(dev, sizeof(ISP_CTRL_INFO) * num_ctrls, GFP_KERNEL); + if(!mcu_ctrl_info) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + + ctrldb = devm_kzalloc(dev, sizeof(uint32_t) * num_ctrls, GFP_KERNEL); + if(!ctrldb) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + + stream_info = devm_kzalloc(dev, sizeof(ISP_STREAM_INFO) * (frm_fmt_size + 1), GFP_KERNEL); + + streamdb = devm_kzalloc(dev, sizeof(int) * (frm_fmt_size + 1), GFP_KERNEL); + if(!streamdb) { + dev_err(dev,"Unable to allocate memory \n"); + return -ENOMEM; + } + + ar1335_data.mcu_cam_frmfmt = devm_kzalloc(dev, sizeof(struct mcu_frmfmt) * (frm_fmt_size), GFP_KERNEL); + if(!ar1335_data.mcu_cam_frmfmt) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + + for(; loop < frm_fmt_size; loop++) { + ar1335_data.mcu_cam_frmfmt[loop].framerates = devm_kzalloc(dev, sizeof(int) * MAX_NUM_FRATES, GFP_KERNEL); + if(!ar1335_data.mcu_cam_frmfmt[loop].framerates) { + dev_err(dev, "Unable to allocate memory \n"); + return -ENOMEM; + } + } + + return 0; +} + +static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + + int ret = 0, err = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + /* Read the version info. from Micro controller */ + + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_SENSOR_ID; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_SENSOR_ID; + err = ar1335_write(client, mc_data_1335, 2); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[4]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + errcode = mc_ret_data_1335[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + payload_len = + ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE; + + memset(mc_ret_data_1335, 0x00, payload_len); + err = ar1335_read(client, mc_ret_data_1335, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[payload_len - 2]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data_1335[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + *sensor_id = mc_ret_data_1335[2] << 8 | mc_ret_data_1335[3]; + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; +} + +static int mcu_get_cmd_status(struct i2c_client *client, + uint8_t * cmd_id, uint16_t * cmd_status, + uint8_t * ret_code) +{ + uint32_t payload_len = 0; + uint8_t orig_crc = 0, calc_crc = 0; + int err = 0; + + /* No Semaphore in Get command Status */ + + /* First Txn Payload length = 0 */ + payload_len = 1; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_STATUS; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_STATUS; + mc_data_1335[2] = *cmd_id; + err = ar1335_write(client, mc_data_1335, 3); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + return -EIO; + } + + payload_len = CMD_STATUS_MSG_LEN; + memset(mc_ret_data_1335, 0x00, payload_len); + err = ar1335_read(client, mc_ret_data_1335, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + return -EIO; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[payload_len - 2]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 3); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + return -EINVAL; + } + + *cmd_id = mc_ret_data_1335[2]; + *cmd_status = mc_ret_data_1335[3] << 8 | mc_ret_data_1335[4]; + *ret_code = mc_ret_data_1335[payload_len - 1]; + + return 0; +} + +static int mcu_isp_init(struct i2c_client *client) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0; + uint8_t retcode = 0, cmd_id = 0; + int retry = 1000, err = 0; + + /* check current status - if initialized, no need for Init */ + cmd_id = CMD_ID_INIT_CAM; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__); + return -EIO; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + (retcode == ERRCODE_SUCCESS)) { + +#ifdef AR1335_DEBUG + pr_info(" Already Initialized !! \n"); +#endif + + return 0; + } + + /* call ISP init command */ + + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_INIT_CAM; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_INIT_CAM; + err = ar1335_write(client, mc_data_1335, 2); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + return -EIO; + } + + while (--retry > 0) { + /* Some Sleep for init to process */ + mdelay(5); + + cmd_id = CMD_ID_INIT_CAM; + if (mcu_get_cmd_status( + client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", + __func__, __LINE__); + return -EIO; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + ((retcode == ERRCODE_SUCCESS) || (retcode == ERRCODE_ALREADY))) { + +#ifdef AR1335_DEBUG + pr_info(" ISP Already Initialized !! \n"); +#endif + + return 0; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Init Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + return -EIO; + } + } + + return -ETIMEDOUT; +} + +static int mcu_get_ctrl_ui(struct i2c_client *client, + ISP_CTRL_INFO * mcu_ui_info, int index) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + int ret = 0, i = 0, err = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_CTRL_UI_INFO; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_CTRL_UI_INFO; + mc_data_1335[2] = index >> 8; + mc_data_1335[3] = index & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + err = ar1335_write(client, mc_data_1335, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[4]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + payload_len = + ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE; + errcode = mc_ret_data_1335[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EINVAL; + goto exit; + } + + memset(mc_ret_data_1335, 0x00, payload_len); + err = ar1335_read(client, mc_ret_data_1335, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data_1335[2], payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data_1335[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_name, &mc_ret_data_1335[2],MAX_CTRL_UI_STRING_LEN); + + mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type = mc_ret_data_1335[34]; + mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags = mc_ret_data_1335[35] << 8 | + mc_ret_data_1335[36]; + + if (mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type == V4L2_CTRL_TYPE_MENU) { + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem = mc_ret_data_1335[37]; + + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu = + devm_kzalloc(&client->dev,((mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem +1) * sizeof(char *)), GFP_KERNEL); + for (i = 0; i < mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem; i++) { + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] = + devm_kzalloc(&client->dev,MAX_CTRL_UI_STRING_LEN, GFP_KERNEL); + strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i], + &mc_ret_data_1335[38 +(i *MAX_CTRL_UI_STRING_LEN)], MAX_CTRL_UI_STRING_LEN); + +#ifdef AR1335_DEBUG + pr_info(" Menu Element %d : %s \n", + i, mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i]); +#endif + + } + + mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] = NULL; + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; + +} + +static int mcu_isp_configuration(uint8_t cmd_id,struct i2c_client *client) +{ + unsigned char mc_data_1335[100]; + uint32_t payload_len = 0; + + uint16_t payload_data; + uint16_t cmd_status = 0; + uint8_t retcode = 0; + int retry = 1000, err = 0; + + /*lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + /* First Txn Payload length = 0 */ + payload_len = 2; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = cmd_id; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = cmd_id; + + switch(cmd_id) { + case CMD_ID_LANE_CONFIG: + /*Lane configuration */ + payload_data = ar1335_data.mipi_lane_config == 4 ? NUM_LANES_4: NUM_LANES_2; + mc_data_1335[2] = payload_data >> 8; + mc_data_1335[3] = payload_data & 0xFF; + break; + case CMD_ID_MIPI_CLK_CONFIG: + /* MIPI CLK Configuration */ + payload_data = ar1335_data.mipi_clk_config; + mc_data_1335[2] = payload_data >> 8; + mc_data_1335[3] = payload_data & 0xFF; + break; + default: + dev_err(&client->dev, "MCU ISP CONF Error\n"); + err = -1; + goto exit; + } + + /* CRC*/ + mc_data_1335[4] = errorcheck(&mc_data_1335[2], payload_len); + err = ar1335_write(client, mc_data_1335, payload_len+3); + if (err != 0) { + dev_err(&client->dev, " %s(%d) Error - %d \n", + __func__, __LINE__, err); + goto exit; + } + + + while (--retry > 0) { + msleep(20); + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < + 0) { + dev_err(&client->dev, " %s(%d) Error \n", + __func__, __LINE__); + err = -EIO; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_ISP_UNINIT) && + ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) { + err = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_ISP_UNINIT))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + err = -EIO; + goto exit; + } + + } + + err = -ETIMEDOUT; + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + return err; +} + +static int mcu_stream_config(struct i2c_client *client, uint32_t format, + int mode, int frate_index) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0, index = 0xFFFF; + uint8_t retcode = 0, cmd_id = 0; + int loop = 0, ret = 0, err = 0, retry = 1000; + static uint16_t prev_index = 0xFFFE; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + cmd_id = CMD_ID_STREAM_CONFIG; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__); + ret = -EIO; + goto exit; + } + + if ((cmd_status != MCU_CMD_STATUS_SUCCESS) || + (retcode != ERRCODE_SUCCESS)) { + dev_err(&client->dev, + " ISP is Unintialized or Busy STATUS = 0x%04x Errcode = 0x%02x !! \n", + cmd_status, retcode); + ret = -EBUSY; + goto exit; + } + + for (loop = 0;(&streamdb[loop]) != NULL; loop++) { + pr_info("streamdb[%d]=%d, mode=%d",loop,streamdb[loop],mode); + if (streamdb[loop] == mode) { + index = loop + frate_index; + break; + } + } + +#ifdef AR1335_DEBUG + pr_info(" Index = 0x%04x , format = 0x%08x, width = %hu," + " height = %hu, frate num = %hu \n", index, format, + ar1335_data.mcu_cam_frmfmt[mode].size.width, + ar1335_data.mcu_cam_frmfmt[mode].size.height, + ar1335_data.mcu_cam_frmfmt[mode].framerates[frate_index]); +#endif + + if (index == 0xFFFF) { + ret = -EINVAL; + goto exit; + } + + if(prev_index == index) { +#ifdef AR1335_DEBUG + pr_info("Skipping Previous mode set ... \n"); +#endif + ret = 0; + goto exit; + } + +issue_cmd: + /* First Txn Payload length = 0 */ + payload_len = 14; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_STREAM_CONFIG; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_STREAM_CONFIG; + mc_data_1335[2] = index >> 8; + mc_data_1335[3] = index & 0xFF; + + /* Format Fourcc - currently only YUYV */ + mc_data_1335[4] = format >> 24; + mc_data_1335[5] = format >> 16; + mc_data_1335[6] = format >> 8; + mc_data_1335[7] = format & 0xFF; + + /* width */ + mc_data_1335[8] = ar1335_data.mcu_cam_frmfmt[mode].size.width >> 8; + mc_data_1335[9] = ar1335_data.mcu_cam_frmfmt[mode].size.width & 0xFF; + + /* height */ + mc_data_1335[10] = ar1335_data.mcu_cam_frmfmt[mode].size.height >> 8; + mc_data_1335[11] = ar1335_data.mcu_cam_frmfmt[mode].size.height & 0xFF; + + /* frame rate num */ + mc_data_1335[12] = ar1335_data.mcu_cam_frmfmt[mode].framerates[frate_index] >> 8; + mc_data_1335[13] = ar1335_data.mcu_cam_frmfmt[mode].framerates[frate_index] & 0xFF; + + /* frame rate denom */ + mc_data_1335[14] = 0x00; + mc_data_1335[15] = 0x01; + + mc_data_1335[16] = errorcheck(&mc_data_1335[2], 14); + err = ar1335_write(client, mc_data_1335, 17); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + while (--retry > 0) { + cmd_id = CMD_ID_STREAM_CONFIG; + if (mcu_get_cmd_status( + client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev, + " %s(%d) MCU GET CMD Status Error : loop : %d \n", + __func__, __LINE__, loop); + ret = -EIO; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + (retcode == ERRCODE_SUCCESS)) { + ret = 0; + goto exit; + } + + if(retcode == ERRCODE_AGAIN) { + /* Issue Command Again if Set */ + retry = 1000; + goto issue_cmd; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + ret = -EIO; + goto exit; + } + + /* Delay after retry */ + mdelay(10); + } + + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -ETIMEDOUT; + +exit: + if(!ret) + prev_index = index; + + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; +} + +static int mcu_isp_power_down(struct i2c_client *client) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0; + uint8_t retcode = 0, cmd_id = 0; + int retry = 1000, err = 0; + + /*lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_ISP_PDOWN; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_ISP_PDOWN; + err = ar1335_write(client, mc_data_1335, 2); + if (err != 0) { + dev_err(&client->dev, " %s(%d) Error - %d \n", + __func__, __LINE__, err); + goto exit; + } + + while (--retry > 0) { + msleep(20); + cmd_id = CMD_ID_ISP_PDOWN; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < + 0) { + dev_err(&client->dev, " %s(%d) Get Status Error \n", + __func__, __LINE__); + err = -EINVAL; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_ISP_PWDN) && + ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) { + err = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, + retcode); + err = -EIO; + goto exit; + } + + } + err = -ETIMEDOUT; + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + return err; +} + +static int mcu_isp_power_wakeup(struct i2c_client *client) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0; + uint8_t retcode = 0, cmd_id = 0; + int retry = 1000, err = 0; + + /*lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + /* First Txn Payload length = 0 */ + payload_len = 0; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_ISP_PUP; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_ISP_PUP; + err = ar1335_write(client, mc_data_1335, 2); + if (err != 0) { + dev_err(&client->dev, " %s(%d) Error - %d \n", + __func__, __LINE__, err); + goto exit; + } + + while (--retry > 0) { + msleep(20); + cmd_id = CMD_ID_ISP_PUP; + if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < + 0) { + dev_err(&client->dev, " %s(%d) Error \n", + __func__, __LINE__); + err = -EIO; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) { + err = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + err = -EIO; + goto exit; + } + + } + + err = -ETIMEDOUT; + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + return err; +} + +static int mcu_set_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id, + uint8_t ctrl_type, int32_t curr_val) +{ + uint32_t payload_len = 0; + + uint16_t cmd_status = 0, index = 0xFFFF; + uint8_t retcode = 0, cmd_id = 0; + int loop = 0, ret = 0, err = 0; + uint32_t ctrl_id = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + ctrl_id = arg_ctrl_id; + + /* call ISP Ctrl config command */ + + for (loop = 0; loop < num_ctrls; loop++) { + if (ctrldb[loop] == ctrl_id) { + index = mcu_ctrl_info[loop].mcu_ctrl_index; + break; + } + } + + if (index == 0xFFFF) { + ret = -EINVAL; + goto exit; + } + + /* First Txn Payload length = 0 */ + payload_len = 11; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_SET_CTRL; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + /* Second Txn */ + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_SET_CTRL; + + /* Index */ + mc_data_1335[2] = index >> 8; + mc_data_1335[3] = index & 0xFF; + + /* Control ID */ + mc_data_1335[4] = ctrl_id >> 24; + mc_data_1335[5] = ctrl_id >> 16; + mc_data_1335[6] = ctrl_id >> 8; + mc_data_1335[7] = ctrl_id & 0xFF; + + /* Ctrl Type */ + mc_data_1335[8] = ctrl_type; + + /* Ctrl Value */ + mc_data_1335[9] = curr_val >> 24; + mc_data_1335[10] = curr_val >> 16; + mc_data_1335[11] = curr_val >> 8; + mc_data_1335[12] = curr_val & 0xFF; + + /* CRC */ + mc_data_1335[13] = errorcheck(&mc_data_1335[2], 11); + + err = ar1335_write(client, mc_data_1335, 14); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + while (1) { + cmd_id = CMD_ID_SET_CTRL; + if (mcu_get_cmd_status( + client, &cmd_id, &cmd_status, &retcode) < 0) { + dev_err(&client->dev," %s(%d) Error \n", + __func__, __LINE__); + ret = -EINVAL; + goto exit; + } + + if ((cmd_status == MCU_CMD_STATUS_SUCCESS) && + (retcode == ERRCODE_SUCCESS)) { + ret = 0; + goto exit; + } + + if ((retcode != ERRCODE_BUSY) && + ((cmd_status != MCU_CMD_STATUS_PENDING))) { + dev_err(&client->dev, + "(%s) %d ISP Error STATUS = 0x%04x RET = 0x%02x\n", + __func__, __LINE__, cmd_status, retcode); + ret = -EIO; + goto exit; + } + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; +} + +static int mcu_get_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id, + uint8_t * ctrl_type, int32_t * curr_val) +{ + uint32_t payload_len = 0; + uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0; + uint16_t index = 0xFFFF; + int loop = 0, ret = 0, err = 0; + + uint32_t ctrl_id = 0; + + /* lock semaphore */ + mutex_lock(&mcu_i2c_mutex_1335); + + ctrl_id = arg_ctrl_id; + + /* Read the Ctrl Value from Micro controller */ + + for (loop = 0; loop < num_ctrls; loop++) { + if (ctrldb[loop] == ctrl_id) { + index = mcu_ctrl_info[loop].mcu_ctrl_index; + break; + } + } + + if (index == 0xFFFF) { + ret = -EINVAL; + goto exit; + } + + if ( + mcu_ctrl_info[loop].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags & + V4L2_CTRL_FLAG_WRITE_ONLY + ) { + ret = -EACCES; + goto exit; + } + + /* First Txn Payload length = 2 */ + payload_len = 2; + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_CTRL; + mc_data_1335[2] = payload_len >> 8; + mc_data_1335[3] = payload_len & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + + ar1335_write(client, mc_data_1335, TX_LEN_PKT); + + mc_data_1335[0] = CMD_SIGNATURE; + mc_data_1335[1] = CMD_ID_GET_CTRL; + mc_data_1335[2] = index >> 8; + mc_data_1335[3] = index & 0xFF; + mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2); + err = ar1335_write(client, mc_data_1335, 5); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[4]; + calc_crc = errorcheck(&mc_ret_data_1335[2], 2); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -1; + goto exit; + } + + if (((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) == 0) { + ret = -EIO; + goto exit; + } + + errcode = mc_ret_data_1335[5]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EIO; + goto exit; + } + + payload_len = + ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE; + memset(mc_ret_data_1335, 0x00, payload_len); + err = ar1335_read(client, mc_ret_data_1335, payload_len); + if (err != 0) { + dev_err(&client->dev," %s(%d) Error - %d \n", __func__, + __LINE__, err); + ret = -EIO; + goto exit; + } + + /* Verify CRC */ + orig_crc = mc_ret_data_1335[payload_len - 2]; + calc_crc = + errorcheck(&mc_ret_data_1335[2], payload_len - HEADER_FOOTER_SIZE); + if (orig_crc != calc_crc) { + dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n", + __func__, __LINE__, orig_crc, calc_crc); + ret = -EINVAL; + goto exit; + } + + /* Verify Errcode */ + errcode = mc_ret_data_1335[payload_len - 1]; + if (errcode != ERRCODE_SUCCESS) { + dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n", + __func__, __LINE__, errcode); + ret = -EINVAL; + goto exit; + } + + /* Ctrl type starts from index 6 */ + + *ctrl_type = mc_ret_data_1335[6]; + + switch (*ctrl_type) { + case CTRL_STANDARD: + *curr_val = + mc_ret_data_1335[7] << 24 | mc_ret_data_1335[8] << 16 | mc_ret_data_1335[9] + << 8 | mc_ret_data_1335[10]; + break; + + case CTRL_EXTENDED: + /* Not Implemented */ + break; + } + + exit: + /* unlock semaphore */ + mutex_unlock(&mcu_i2c_mutex_1335); + + return ret; +} + +/* + * --------------------------------------------------------- + * END of MCU realed functions + * --------------------------------------------------------- + */ + +static void toggle_gpio(unsigned int gpio, int val) +{ + if (gpio_cansleep(gpio)){ + gpio_direction_output(gpio,val); + gpio_set_value_cansleep(gpio, val); + } else{ + gpio_direction_output(gpio,val); + gpio_set_value(gpio, val); + } +} + +static int ar1335_querymenu(struct v4l2_subdev *sd, struct v4l2_querymenu *qm) +{ + uint32_t index = 0; + int loop; + + if (sd == NULL || qm == NULL) + return -EINVAL; + + for (loop = 0; loop < num_ctrls; loop++) { + if (ctrldb[loop] == qm->id) { + index = loop; + break; + } + } + + if (loop == num_ctrls) { + return -EINVAL; + } + + if ( + !( + 0 <= qm->index && + qm->index < mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.num_menu_elem + ) + ) { + return -EINVAL; + } + + /* + * Copy the name of the menu. + * + * We deal only with V4L2_CTRL_TYPE_MENU and not + * V4L2_CTRL_TYPE_INTEGER_MENU. So, this should be + * enough. + */ + strcpy(qm->name, mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.menu[qm->index]); + + /* + * Set the reserved to zero as mentioned in spec + */ + qm->reserved = 0; + + return 0; +} + +static int ar1335_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc) +{ + int index, ctrl_index = -1, ctrl_id; + bool next_ctrl = (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL); + + if (sd == NULL || qc == NULL) + return -EINVAL; + + if (next_ctrl) { + ctrl_id = qc->id & (~V4L2_CTRL_FLAG_NEXT_CTRL); + + /* + * Ignore the V4L2_CTRL_FLAG_NEXT_COMPOUND for now + */ + ctrl_id = ctrl_id & (~V4L2_CTRL_FLAG_NEXT_COMPOUND); + } + else { + /* + * Assume we've just got the control ID itself + * directly. + */ + ctrl_id = qc->id; + } + + if (ctrl_id) { + for (index = 0; index < num_ctrls; index++) { + if (ctrldb[index] == ctrl_id) { + ctrl_index = (next_ctrl) ? index + 1 : index; + break; + } + } + + if (index == num_ctrls) { + /* + * We do not know about this control + */ + return -EINVAL; + } + else if ( + next_ctrl && + index == num_ctrls - 1 + ) + { + /* + * We've got a request for the control + * after the last one. + */ + return -EINVAL; + } + } + else if (next_ctrl) { + ctrl_index = 0; + } + else { + return -EINVAL; + } + + if ( + mcu_ctrl_info[ctrl_index].ctrl_type == CTRL_STANDARD + ) { + /* + * We cannot use `v4l2_ctrl_query_fill` instead of manually filling + * the details even for standard controls as we sometimes implement our + * own version for some controls. + * + * e.g., V4L2_CID_FOCUS_AUTO has a max value of 1 according to standard + * but our version of it has a max value of 5. + */ + qc->id = mcu_ctrl_info[ctrl_index].ctrl_id; + + strcpy(qc->name, mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_name); + + qc->type = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type; + qc->flags = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags; + + qc->minimum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min; + qc->maximum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max; + qc->step = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_step; + qc->default_value = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_def; + } + else { + return -EINVAL; + } + + return 0; +} + +static int ar1335_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) +{ + struct i2c_client *client = ar1335_data.i2c_client; + int err = 0; + uint8_t ctrl_type = 0; + int ctrl_val = 0; + + if (sd == NULL || ctrl == NULL) + return -EINVAL; + + if ((err = mcu_get_ctrl(client, ctrl->id, &ctrl_type, &ctrl_val)) < 0) { + return err; + } + + if (ctrl_type == CTRL_STANDARD) { + ctrl->value = ctrl_val; + } else { + /* Not Implemented */ + return -EINVAL; + } + + return err; +} + +static int ar1335_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) +{ + struct i2c_client *client = ar1335_data.i2c_client; + int err = 0, index, ctrl_index = 0; + + if (sd == NULL || ctrl == NULL) + return -EINVAL; + + for (index = 0; index < num_ctrls; index++) { + if (ctrldb[index] == ctrl->id) { + ctrl_index = index; + break; + } + } + + if (index == num_ctrls) { + return -EINVAL; + } + + if ( + ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min || + ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max + ) + return -ERANGE; + + if ((err = + mcu_set_ctrl(client, ctrl->id, CTRL_STANDARD, ctrl->value)) < 0) { + dev_err(&client->dev," %s (%d ) \n", __func__, __LINE__); + return -EINVAL; + } + + return err; +} + +static int ar1335_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + int i, err = 0; + + if (sd == NULL || ctrls == NULL) + return -EINVAL; + + for (i = 0; i < ctrls->count; i++) { + struct v4l2_ext_control *ext_ctrl = ctrls->controls + i; + struct v4l2_control ctrl = { + .id = ext_ctrl->id, + }; + + err = ar1335_g_ctrl(sd, &ctrl); + if (err) { + ctrls->error_idx = ctrls->count; + break; + } + else { + ext_ctrl->value = ctrl.value; + } + } + + return err; +} + +static int ar1335_try_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + int i; + + if (sd == NULL || ctrls == NULL) + return -EINVAL; + + for (i = 0; i < ctrls->count; i++) { + struct v4l2_ext_control *ext_ctrl = ctrls->controls + i; + int ctrl_index = 0, index; + + for (index = 0; index < num_ctrls; index++) { + if (ctrldb[index] == ext_ctrl->id) { + ctrl_index = index; + break; + } + } + + if (index == num_ctrls) { + ctrls->error_idx = ext_ctrl->id; + return -EINVAL; + } + + if ( + ext_ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min || + ext_ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max + ) { + ctrls->error_idx = ext_ctrl->id; + return -ERANGE; + } + } + + return 0; + +} + +static int ar1335_s_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + int i, err = 0; + + if (sd == NULL || ctrls == NULL) + return -EINVAL; + + for (i = 0; i < ctrls->count; i++) { + struct v4l2_ext_control *ext_ctrl = ctrls->controls + i; + struct v4l2_control ctrl = { + .id = ext_ctrl->id, + .value = ext_ctrl->value + }; + + err = ar1335_s_ctrl(sd, &ctrl); + if (err) { + /* + * TODO: We would have to indicate whether there + * is an issue in validation or in the + * hardware by correctly setting the error_idx + * to count only when the validation failed + * and setting it to index when there is an + * issue in communication with the hardware. + * + * For now, just return the count for all cases. + */ + ctrls->error_idx = ctrls->count; + break; + } + } + + return err; +} + +static int ar1335_enum_frameintervals(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_interval_enum *fival) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + int j; + + if (fival->width == 0 || fival->height == 0) + { + dev_err(&client->dev, "Please assign width and height.\n"); + return -EINVAL; + } + + if (fival->code != ar1335_data.fmt.code) + { + return -EINVAL; + } + + for (j = 0; j < ar1335_data.num_frm_fmts; j++) { + if ( + fival->width == ar1335_data.mcu_cam_frmfmt[j].size.width && + fival->height == ar1335_data.mcu_cam_frmfmt[j].size.height + ) { + if (fival->index >= ar1335_data.mcu_cam_frmfmt[j].num_framerates) + { + return -EINVAL; + } + + fival->interval.numerator = 1; + fival->interval.denominator = ar1335_data.mcu_cam_frmfmt[j].framerates[fival->index]; + + return 0; + } + } + return -EINVAL; + +} + +static int ar1335_enum_framesizes(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_size_enum *fse) +{ + if (fse->index >= ar1335_data.num_frm_fmts) + { + return -EINVAL; + } + + if (fse->code != ar1335_data.fmt.code) + { + return -EINVAL; + } + + fse->max_width = ar1335_data.mcu_cam_frmfmt[fse->index].size.width; + fse->min_width = fse->max_width; + + fse->max_height = ar1335_data.mcu_cam_frmfmt[fse->index].size.height; + fse->min_height = fse->max_height; + + return 0; +} + +static int ar1335_enum_mbus_code(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_mbus_code_enum *code) +{ + if (code->pad || code->index >= AR1335_MAX_FORMAT_SUPPORTED) + return -EINVAL; + + code->code = ar1335_data.fmt.code; + + return 0; +} + +static int ar1335_s_stream(struct v4l2_subdev *sd, int enable) +{ + if (!enable) { + /* Perform Stream Off Sequence - if any */ + } + + /* Perform Stream On Sequence - if any */ + mdelay(10); + + return 0; +} + +static int ar1335_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param) +{ + int mode = ar1335_data.streamcap.capturemode; + + param->parm.capture.capability |= V4L2_CAP_TIMEPERFRAME; + + param->parm.capture.timeperframe.denominator = + ar1335_data.mcu_cam_frmfmt[mode].framerates[ar1335_data.frate_index]; + param->parm.capture.timeperframe.numerator = 1; + + return 0; +} + +static int ar1335_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + int ret = 0, err = 0; + int mode = ar1335_data.streamcap.capturemode; + int fourcc = ar1335_data.pix.pixelformat; + + param->parm.capture.capability = V4L2_CAP_TIMEPERFRAME; + memset(param->parm.capture.reserved, 0, 4*sizeof(u32)); + + if ( + param->parm.capture.timeperframe.denominator == 0 && + param->parm.capture.timeperframe.numerator == 0 && + ar1335_data.mcu_cam_frmfmt[mode].num_framerates == 1 + ) { + param->parm.capture.timeperframe.denominator = + ar1335_data.mcu_cam_frmfmt[mode].framerates[ar1335_data.frate_index]; + param->parm.capture.timeperframe.numerator = 1; + /* + * We would have to reset the frame interval to a + * nominal value in this case but as we just have one + * frame interval we just return success. + */ + return 0; + } + + if (param->parm.capture.timeperframe.numerator != 1) { + dev_err(&client->dev, "Invalid numerator for timeperframe\n"); + return -EINVAL; + } + + for (ret = 0; ret < ar1335_data.mcu_cam_frmfmt[mode].num_framerates; + ret++) { + if ((ar1335_data.mcu_cam_frmfmt[mode].framerates[ret] == + param->parm.capture.timeperframe.denominator)) { + ar1335_data.frate_index = ret; + + /* call stream config with width, height, frame rate */ + err = + mcu_stream_config(client, fourcc, mode, + ar1335_data.frate_index); + if (err < 0) { + dev_err(&client->dev, "%s: Failed stream_config \n", __func__); + return err; + } + + mdelay(10); + + return 0; + } + } + + return -EINVAL; +} + +static int ar1335_s_power(struct v4l2_subdev *sd, int on) +{ + + /* Perform Power On/Off Sequence - if any */ + return 0; +} + +static int ar1335_get_fmt(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_format *format) +{ + int ret = 0; + + if (format->pad) + return -EINVAL; + + format->format.code = ar1335_data.fmt.code; + format->format.colorspace = ar1335_data.fmt.colorspace; + format->format.field = V4L2_FIELD_NONE; + + format->format.width = ar1335_data.pix.width; + format->format.height = ar1335_data.pix.height; + + return ret; +} + +static int ar1335_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_format *format) +{ + int ret = 0, i; + struct i2c_client *client = v4l2_get_subdevdata(sd); + int flag = 0, err = 0; + + format->format.code = ar1335_data.fmt.code; + format->format.colorspace = ar1335_data.fmt.colorspace; + format->format.field = V4L2_FIELD_NONE; + + for (i = 0; i < ar1335_data.num_frm_fmts ; i++) { + if ( + ar1335_data.mcu_cam_frmfmt[i].size.width == format->format.width && + ar1335_data.mcu_cam_frmfmt[i].size.height == format->format.height + ) { + printk("resolution equ width= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.width); + printk("resolution equ height= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.height); + flag = 1; + break; + } + printk("ar1335_resolution width= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.width); + printk("ar1335_resolution height= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.height); + printk("format_resolution width= %d \n",format->format.width); + printk("format_resolution height= %d \n",format->format.height); + } + + if(flag == 0) { + format->format.width = ar1335_data.pix.width; + format->format.height = ar1335_data.pix.height; + } + + if (format->which == V4L2_SUBDEV_FORMAT_TRY) + { + return 0; + } + + /* call stream config with width, height, frame rate */ + err = + mcu_stream_config(client, ar1335_data.pix.pixelformat, ar1335_data.mcu_cam_frmfmt[i].mode, + ar1335_data.frate_index); + if (err < 0) { + dev_err(&client->dev, "%s: Failed stream_config \n", __func__); + return err; + } + + ar1335_data.pix.width = format->format.width; + ar1335_data.pix.height = format->format.height; + ar1335_data.streamcap.capturemode = ar1335_data.mcu_cam_frmfmt[i].mode; + + mdelay(10); + + return ret; +} + +static int ar1335_link_setup(struct media_entity *entity, + const struct media_pad *local, + const struct media_pad *remote, u32 flags) +{ + return 0; +} + +static struct v4l2_subdev_video_ops ar1335_subdev_video_ops = { + .g_parm = ar1335_g_parm, + .s_parm = ar1335_s_parm, + .s_stream = ar1335_s_stream, +}; + +static const struct v4l2_subdev_pad_ops ar1335_subdev_pad_ops = { + .enum_frame_size = ar1335_enum_framesizes, + .enum_frame_interval = ar1335_enum_frameintervals, + .enum_mbus_code = ar1335_enum_mbus_code, + .set_fmt = ar1335_set_fmt, + .get_fmt = ar1335_get_fmt, +}; + +static struct v4l2_subdev_core_ops ar1335_subdev_core_ops = { + .s_power = ar1335_s_power, + .queryctrl = ar1335_queryctrl, + .g_ctrl = ar1335_g_ctrl, + .s_ctrl = ar1335_s_ctrl, + .g_ext_ctrls = ar1335_g_ext_ctrls, + .s_ext_ctrls = ar1335_s_ext_ctrls, + .try_ext_ctrls = ar1335_try_ext_ctrls, + .querymenu = ar1335_querymenu, +}; + +static struct v4l2_subdev_ops ar1335_subdev_ops = { + .core = &ar1335_subdev_core_ops, + .video = &ar1335_subdev_video_ops, + .pad = &ar1335_subdev_pad_ops, +}; + +static const struct media_entity_operations ar1335_sd_media_ops = { + .link_setup = ar1335_link_setup, +}; + +static int ar1335_init(struct i2c_client *client) +{ + u32 tgt_xclk; /* target xclk */ + int ret = 0; + + ar1335_data.on = true; + + /* mclk */ + tgt_xclk = ar1335_data.mclk; + tgt_xclk = min(tgt_xclk, (u32)AR1335_XCLK_MAX); + tgt_xclk = max(tgt_xclk, (u32)AR1335_XCLK_MIN); + ar1335_data.mclk = tgt_xclk; + +#ifdef AR1335_DEBUG + pr_info("mclk: %d MHz\n", tgt_xclk / 1000000); +#endif + + ret = mcu_stream_config(client, ar1335_data.pix.pixelformat, + ar1335_data.streamcap.capturemode, + ar1335_data.frate_index); + + return ret; +} + +static int ar1335_ctrls_init(ISP_CTRL_INFO *mcu_cam_ctrls) +{ + struct i2c_client *client = NULL; + int numctrls = 0; + int err = 0, i = 0; + + client = ar1335_data.i2c_client; + + if (mcu_cam_ctrls == NULL) + { + dev_err( + &client->dev, + "%s: MCU control data hasn't been allocated\n", + __func__ + ); + return -EINVAL; + } + /* + * Enumerate the controls from the MCU + */ + err = mcu_count_or_list_ctrls(client, mcu_cam_ctrls, &numctrls); + if (err < 0) { + dev_err(&client->dev, "Unable to enumerate the controls in the sensor\n"); + return err; + } + + for (i = 0; i < numctrls; i++) { + if (mcu_cam_ctrls[i].ctrl_type == CTRL_STANDARD) { + err = mcu_get_ctrl_ui(client, &mcu_ctrl_info[i], mcu_ctrl_info[i].mcu_ctrl_index); + if (err != ERRCODE_SUCCESS) { + dev_err(&client->dev, "Error Enumerating Control 0x%08x !! \n", + mcu_ctrl_info[i].ctrl_id); + return err; + } + else if ( + mcu_ctrl_info[i].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type == + V4L2_CTRL_TYPE_MENU + ) { + mcu_ctrl_info[i].ctrl_data.std.ctrl_step = 1; + } + } + } + + return 0; +} + +static int ar1335_verify_mcu(struct i2c_client *client) +{ + int ret = 0, try = 0; + unsigned char fw_version_1335[32] = {0}; + + if (client == NULL) + { + dev_err(&client->dev, "%s: Invalid I2C client parameter\n", __func__); + return -EINVAL; + } + + /* + * Try to boot the MCU into firmware mode. + * + * We do this only when the reset_gpio and pwdn_gpio are + * available. + */ + if (gpios_available_1335()) + { + toggle_gpio(pwdn_gpio, 0); + msleep(10); + toggle_gpio(reset_gpio, 0); + msleep(10); + toggle_gpio(reset_gpio, 1); + msleep(500); + + for(try = 0; try < 10; try++) { + ret = mcu_get_fw_version(client, fw_version_1335); + if(ret < 0) { + msleep(100); + continue; + } else { + break; + } + } + + if (ret == 0) + { + ret = mcu_verify_fw_version(fw_version_1335); + } + else + { + dev_dbg( + &client->dev, + "Could not read the firmware version from the MCU\n" + ); + pr_info(" Could not read the firmware version from the MCU, tries=%d\n", try+1); + } + + /* + * Try booting and flashing in bootloader mode when an error is detected + * or the force update bit is set in the firmware version + */ + if (ret != 0) { + int loop = 0; + + /* + * Verification of the MCU in firmware mode failed so + * try to boot the MCU in bootloader mode. + */ + + pr_info(" Trying to Detect Bootloader mode\n"); + + if (gpios_available_1335()) + { + toggle_gpio(reset_gpio, 0); + msleep(10); + toggle_gpio(pwdn_gpio, 1); + msleep(100); + toggle_gpio(reset_gpio, 1); + msleep(100); + } + + for(loop = 0; loop < 10; loop++) { + ret = mcu_bload_get_version(client); + if (ret < 0) { + /* Trial and Error for 1 second (100ms * 10) */ + msleep(100); + continue; + } else { +#ifdef AR1335_DEBUG + pr_info(" Get Bload Version Success\n"); +#endif + break; + } + } + + if(loop == 10) { + dev_err(&client->dev, "Error getting firmware version in bootloader mode\n"); + return -EINVAL; + } + + if (mcu_fw_update(client, NULL) < 0) { + dev_err(&client->dev, "Error when trying to update the firmware\n"); + return -EFAULT; + } + + if (gpios_available_1335()) + { + toggle_gpio(pwdn_gpio, 0); + } + + /* Allow FW Updated MCU to reboot */ + msleep(500); + + /* + * Ensure the firmware has been flashed correctly by getting the version + * of the firmware (in firmware mode). + */ + for(loop = 0; loop < 100; loop++) { + ret = mcu_get_fw_version(client, fw_version_1335); + + if (ret == 0) + { + ret = mcu_verify_fw_version(fw_version_1335); + } + + if (ret < 0) { + /* Trial and Error for 10 seconds (100ms * 100) */ + msleep(100); + continue; + } else { +#ifdef AR1335_DEBUG + pr_info(" Get FW Version Success\n"); +#endif + break; + } + } + + if(loop == 100) { + dev_err( + &client->dev, + "Couldn't get firmware version correctly after update (did the update fail?\n" + ); + return -EINVAL; + } + } + + } + else + { + static const char *const flash_error_message = + "Please connect only one camera and fix the MCU.\n" + "Hint: Connected only one camera? Is someone else using the " + "power down/reset GPIOs?\n"; + + /* + * When we do not have the reset GPIO, we cannot toggle it + * to make the MCU switch to firmware mode. So, we try getting + * the MCU into firmware assuming it is currently in + * bootloader mode. + * + * The following sequence is required for switching it to + * firmware mode. + */ + int loop, get_firmware_version = 0; + + /* + * We would have to verify that the MCU is in bootloader mode + * before sending the command to make it switch to firmware mode. + * + * So, we try to get the version of the bootloader. + */ + for(loop = 0; loop < 10; loop++) + { + ret = mcu_bload_get_version(client); + if (ret < 0) + { + /* Trial and Error for 1 second (100ms * 10) */ + msleep(100); + } + else + { + pr_info(" Get Bload Version Success\n"); + break; + } + } + + if(loop == 10) + { + dev_err(&client->dev, "couldn't get bootloader version\n"); + + + get_firmware_version = 1; + + msleep(1000); + } + else + { + /* + * We retry if we could boot into firmware mode as we're + * currently in bootloader mode (as mcu_bload_get_version + * succeeded). + */ + ret = mcu_bload_go(client); + if (ret < 0) { + dev_err(&client->dev,"couldn't switch to firmware mode.\n"); + dev_err(&client->dev, flash_error_message); + return -EINVAL; + } + else { + msleep(10); + get_firmware_version = 1; + } + } + + /* + * We should verify if we have the version of the MCU we + * need. If not, we let the user know about it and exit + * the probe. + */ + if (get_firmware_version) + { + ret = mcu_get_fw_version(client, fw_version_1335); + if (ret == 0) + { + ret = mcu_verify_fw_version(fw_version_1335); + } + else + { + dev_err(&client->dev, "couldn't get the MCU firmware version"); + dev_err(&client->dev, flash_error_message); + return -EINVAL; + } + + if (ret != 0) + { + dev_err(&client->dev, "wrong MCU firmware version"); + dev_err(&client->dev, flash_error_message); + return -EINVAL; + } + } + } + + dev_info(&client->dev, "Current Firmware Version - (%.32s)\n", fw_version_1335); + + return 0; +} + +static int ar1335_parse_and_get_clocks(struct device *dev) +{ + int retval = 0; + + if (dev == NULL) + { + dev_err(dev, "%s: Invalid device parameter\n", __func__); + return -EINVAL; + } + + ar1335_data.sensor_clk = devm_clk_get(dev, "xclk"); + if (IS_ERR(ar1335_data.sensor_clk)) { + /* assuming clock enabled by default */ + ar1335_data.sensor_clk = NULL; + dev_err(dev, "clock-frequency missing or invalid\n"); + return PTR_ERR(ar1335_data.sensor_clk); + } + + /*mclk reserved for future use*/ + retval = of_property_read_u32(dev->of_node, "mclk", + &(ar1335_data.mclk)); + if (retval) { + dev_err(dev, "mclk missing or invalid\n"); + return retval; + } + + /*mclk_source reserved for future use*/ + retval = of_property_read_u32(dev->of_node, "mclk_source", + (u32 *) &(ar1335_data.mclk_source)); + if (retval) { + dev_err(dev, "mclk_source missing or invalid\n"); + return retval; + } + + retval = of_property_read_u32(dev->of_node, "csi_id", + &(ar1335_data.csi)); + if (retval) { + dev_err(dev, "csi id missing or invalid\n"); + return retval; + } + + return 0; +} + +static int ar1335_parse_and_get_gpios(struct device *dev) +{ + int err; + struct device_node *node = NULL; + + if (dev == NULL) + { + dev_err(dev, "%s: Invalid device parameter\n", __func__); + return -EINVAL; + } + + node = dev->of_node; + + pwdn_gpio = of_get_named_gpio(node, "pwn-gpios", 0); + if (!gpio_is_valid(pwdn_gpio)) { + dev_err(dev, "no sensor pwdn pin available"); + return -EINVAL; + } + else { +#ifdef AR1335_DEBUG + printk("BOOT = %x \n", pwdn_gpio); +#endif + } + + reset_gpio = of_get_named_gpio(node, "rst-gpios", 0); + if (!gpio_is_valid(reset_gpio)) { + dev_err(dev, "no sensor reset pin available"); + return -EINVAL; + } + else { +#ifdef AR1335_DEBUG + printk("RESET = %x \n", reset_gpio); +#endif + } + + err = devm_gpio_request_one(dev, pwdn_gpio, GPIOF_OUT_INIT_HIGH, + "ar1335_mipi_pwdn"); + if (err < 0) { + dev_warn(dev, "Failed to set power pin\n"); + dev_warn(dev, "err = %d\n", err); + return err; + } + + err = devm_gpio_request_one(dev, reset_gpio, GPIOF_OUT_INIT_HIGH, + "ar1335_mipi_reset"); + if (err < 0) { + dev_warn(dev, "Failed to set reset pin\n"); + dev_warn(dev, "err = %d\n", err); + return err; + } + + return 0; +} + +/*! + * ar1335 I2C probe function + * + * @param adapter struct i2c_adapter * + * @return Error code indicating success or failure + */ +static int ar1335_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct pinctrl *pinctrl; + struct device_node *node = client->dev.of_node; + struct device *dev = &client->dev; + + int ret, frm_fmt_size = 0, i; + uint16_t sensor_id = 0; + + if (!IS_ENABLED(CONFIG_OF) || !node) + return -EINVAL; + + pinctrl = devm_pinctrl_get_select_default(dev); + if (IS_ERR(pinctrl)) + dev_warn(dev, "no pin available\n"); + + /* Set initial values for the sensor struct. */ + memset(&ar1335_data, 0, sizeof(ar1335_data)); + + ret = ar1335_parse_and_get_gpios(dev); + if (ret) + { + pr_info("Warning: couldn't get GPIOs\n"); + } + + ret = ar1335_parse_and_get_clocks(dev); + if (ret) + { + dev_err(dev, "Error occurred when getting clock\n"); + return ret; + } + + clk_prepare_enable(ar1335_data.sensor_clk); + + /* + * We usually get and set/enable regulators here. But it doesn't + * seem to be needed here as the Variscite EVK seems to be supplying + * the required voltage directly without us needing to set it. + */ + toggle_gpio(reset_gpio, 1); + msleep(500); + + ret = ar1335_verify_mcu(client); + if (ret) + { + dev_err(dev, "Error occurred when verifying MCU\n"); + return ret; + } + + ar1335_data.mipi_lane_config = 4; + ret = mcu_isp_configuration(CMD_ID_LANE_CONFIG, client); + if(ret) + { + dev_err(dev, "Error occurred in configuring mipi lanes\n"); + return ret; + } + + /* + * Query the number of controls from MCU + */ + if (mcu_count_or_list_ctrls(client, NULL, &num_ctrls) < 0) { + dev_err(dev, "%s, Failed to get number of controls for sensor\n", __func__); + return -EFAULT; + } + + /* + * Query the number for Formats available from MCU + */ + if (mcu_count_or_list_fmts(client, NULL, &frm_fmt_size) < 0) { + dev_err(dev, "%s, Failed to get number of formats for sensor\n", __func__); + return -EFAULT; + } + + /* + * Initialise the MCU related data as we're about to use them. + */ + ret = mcu_data_init(dev, frm_fmt_size); + if (ret) + { + dev_err(dev, "%s: failed to initialize MCU related data\n", __func__); + return -EFAULT; + } + + if (mcu_get_sensor_id(client, &sensor_id) < 0) { + dev_err(dev, "Unable to get MCU Sensor ID \n"); + return -EFAULT; + } + + if (mcu_isp_init(client) < 0) { + dev_err(dev, "Unable to INIT ISP \n"); + return -EFAULT; + } + + /* + * Enumerate the Formats in the sensor + */ + if (mcu_count_or_list_fmts(client, stream_info, &frm_fmt_size) < 0) { + dev_err(dev, "Unable to enumerate the formats in the sensor\n"); + return -EFAULT; + } + + /* + * Fill some state information as required. + */ + ar1335_data.i2c_client = client; + + ar1335_data.pix.pixelformat = V4L2_PIX_FMT_UYVY; + ar1335_data.fmt.code = AR1335_DEFAULT_DATAFMT; + ar1335_data.fmt.colorspace = AR1335_DEFAULT_COLORSPACE; + ar1335_data.pix.width = AR1335_DEFAULT_WIDTH; + ar1335_data.pix.height = AR1335_DEFAULT_HEIGHT; + ar1335_data.streamcap.capability = V4L2_MODE_HIGHQUALITY | V4L2_CAP_TIMEPERFRAME; + ar1335_data.streamcap.capturemode = AR1335_DEFAULT_MODE; + ar1335_data.num_frm_fmts = frm_fmt_size; + ar1335_data.power_on = 0; + + /* + * Configure the stream with default configuration + */ + ret = ar1335_init(client); + if (ret) + { + dev_err(dev, "Failed to initialise the device with default configuration\n"); + return ret; + } + + v4l2_i2c_subdev_init(&ar1335_data.subdev, client, &ar1335_subdev_ops); + + /* + * Initialize Controls by getting details about the controls from the MCU + */ + ret = ar1335_ctrls_init(mcu_ctrl_info); + if (ret) + { + dev_warn(dev, "Failed to initialise the controls. Controls might not work\n"); + } + + /* + * Write default values for all controls + */ + for (i = 0; i < num_ctrls; i++) { + if (mcu_ctrl_info[i].ctrl_type == CTRL_STANDARD) { + int ret; + struct v4l2_control ctrl = { + .id = mcu_ctrl_info[i].ctrl_id, + .value = mcu_ctrl_info[i].ctrl_data.std.ctrl_def + }; + + if ( + mcu_ctrl_info[i].ctrl_id == 0x9a0926 + ) + { + /* + * We know that the MCU would fail when we + * try to write the V4L2_CID_ROI_EXPOSURE + * control as we are not in the correct auto + * exposure mode by default. So, skip it. + */ + continue; + } + + ret = ar1335_s_ctrl(&ar1335_data.subdev, &ctrl); + if (ret < 0) + { + dev_err(dev, "Failed to write default value for a control: %d; Control ID: %x\n", i, mcu_ctrl_info[i].ctrl_id); + } + } + } + + ar1335_data.subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; + ar1335_data.subdev.entity.function = MEDIA_ENT_F_CAM_SENSOR; + ar1335_data.pads[0].flags = MEDIA_PAD_FL_SOURCE; + + ret = media_entity_pads_init(&ar1335_data.subdev.entity, 1, ar1335_data.pads); + ar1335_data.subdev.entity.ops = &ar1335_sd_media_ops; + if (ret < 0) { + dev_err(dev, "Failed to init media entity pads\n"); + return ret; + } + + ret = v4l2_async_register_subdev(&ar1335_data.subdev); + if (ret) + { + dev_err(dev, "Failed to register the I2C subdev for the sensor\n"); + return ret; + } + + pr_info("AR1335 detected.\n"); + + return 0; +} + +/*! + * ar1335 I2C detach function + * + * @param client struct i2c_client * + * @return Error code indicating success or failure + */ +static int ar1335_remove(struct i2c_client *client) +{ + v4l2_async_unregister_subdev(&ar1335_data.subdev); + + clk_disable_unprepare(ar1335_data.sensor_clk); + + /* + * Power down the MCU + */ + if (reset_gpio >= 0) + { + toggle_gpio(reset_gpio, 0); + } + + /* + * Free up the GPIOs + */ + if (pwdn_gpio >= 0) + devm_gpio_free(&client->dev, pwdn_gpio); + + if (reset_gpio >= 0) + devm_gpio_free(&client->dev, reset_gpio); + + return 0; +} + +static const struct i2c_device_id ar1335_id[] = { + {"ar1335", 0}, + {} +}; + +MODULE_DEVICE_TABLE(i2c, ar1335_id); + +static struct i2c_driver ar1335_i2c_driver = { + .driver = { + .name = "ar1335", + .owner = THIS_MODULE + }, + .probe = ar1335_probe, + .remove = ar1335_remove, + .id_table = ar1335_id, +}; + + +module_i2c_driver(ar1335_i2c_driver); + +MODULE_DESCRIPTION("AR1335 V4L2 driver"); +MODULE_AUTHOR("e-con Systems"); +MODULE_LICENSE("GPL v2"); +MODULE_VERSION("1.0"); +MODULE_ALIAS("CSI"); diff --git a/drivers/media/platform/imx8/ar1335.h b/drivers/media/platform/imx8/ar1335.h new file mode 100644 index 000000000000..d7d5dc094e0e --- /dev/null +++ b/drivers/media/platform/imx8/ar1335.h @@ -0,0 +1,291 @@ +/* + * ar1335.h - ar1335 sensor mode tables + * + * Copyright (c) 2018-2019, e-con Systems, All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __AR1335_TABLES__ +#define __AR1335_TABLES__ + +#define AR1335_XCLK_MIN 6000000 +#define AR1335_XCLK_MAX 24000000 + +#define ar1335_reg struct reg_16 +#define AR1335_TABLE_WAIT_MS 0 +#define AR1335_TABLE_END 1 +#define AR1335_WAIT_MS 10 +#define AR1335_DEFAULT_MODE 0 + +#define AR1335_DEFAULT_WIDTH 640 +#define AR1335_DEFAULT_HEIGHT 480 + +#define AR1335_MAX_FORMAT_SUPPORTED 1 + +#define AR1335_DEFAULT_FPS 120 + +#define AR1335_DEFAULT_DATAFMT MEDIA_BUS_FMT_UYVY8_2X8 +#define AR1335_DEFAULT_COLORSPACE V4L2_COLORSPACE_SRGB + + +//////////////////////////////////////////////////////////////////////////////////////////// + +/* Defines related to MCU */ + +#define CMD_SIGNATURE 0x43 +#define TX_LEN_PKT 5 +#define RX_LEN_PKT 6 +#define HEADER_FOOTER_SIZE 4 +#define CMD_STATUS_MSG_LEN 7 + +#define VERSION_SIZE 32 +#define VERSION_FILE_OFFSET 100 + +#define MCU_CMD_STATUS_SUCCESS 0x0000 +#define MCU_CMD_STATUS_PENDING 0xF000 +#define MCU_CMD_STATUS_ISP_PWDN 0x0FF0 +#define MCU_CMD_STATUS_ISP_UNINIT 0x0FF1 + +#define MAX_NUM_FRATES 10 +#define MAX_CTRL_DATA_LEN 100 +#define MAX_CTRL_UI_STRING_LEN 32 + +typedef enum _errno { + ERRCODE_SUCCESS = 0x00, + ERRCODE_BUSY = 0x01, + ERRCODE_INVAL = 0x02, + ERRCODE_PERM = 0x03, + ERRCODE_NODEV = 0x04, + ERRCODE_IO = 0x05, + ERRCODE_HW_SPEC = 0x06, + ERRCODE_AGAIN = 0x07, + ERRCODE_ALREADY = 0x08, + ERRCODE_NOTIMPL = 0x09, + ERRCODE_RANGE = 0x0A, + + /* Reserved 0x0B - 0xFE */ + + ERRCODE_UNKNOWN = 0xFF, +} RETCODE; + +typedef enum _cmd_id { + CMD_ID_VERSION = 0x00, + CMD_ID_GET_SENSOR_ID = 0x01, + CMD_ID_GET_STREAM_INFO = 0x02, + CMD_ID_GET_CTRL_INFO = 0x03, + CMD_ID_INIT_CAM = 0x04, + CMD_ID_GET_STATUS = 0x05, + CMD_ID_DE_INIT_CAM = 0x06, + CMD_ID_STREAM_ON = 0x07, + CMD_ID_STREAM_OFF = 0x08, + CMD_ID_STREAM_CONFIG = 0x09, + CMD_ID_GET_CTRL_UI_INFO = 0x0A, + + /* Reserved 0x0B to 0x0F */ + + CMD_ID_GET_CTRL = 0x10, + CMD_ID_SET_CTRL = 0x11, + + /* Reserved 0x12, 0x13 */ + + CMD_ID_FW_UPDT = 0x14, + CMD_ID_ISP_PDOWN = 0x15, + CMD_ID_ISP_PUP = 0x16, + + /* Reserved - 0x17 to 0xFE (except 0x43) */ + CMD_ID_LANE_CONFIG = 0x17, + CMD_ID_MIPI_CLK_CONFIG = 0x18, + + CMD_ID_UNKNOWN = 0xFF, + +} HOST_CMD_ID; + +enum { + FRAME_RATE_DISCRETE = 0x01, + FRAME_RATE_CONTINOUS = 0x02, +}; + +enum { + CTRL_STANDARD = 0x01, + CTRL_EXTENDED = 0x02, +}; + +enum { +/* 0x01 - Integer (32bit) + 0x02 - Long Int (64 bit) + 0x03 - String + 0x04 - Pointer to a 1-Byte Array + 0x05 - Pointer to a 2-Byte Array + 0x06 - Pointer to a 4-Byte Array + 0x07 - Pointer to Generic Data (custom Array) +*/ + + EXT_CTRL_TYPE_INTEGER = 0x01, + EXT_CTRL_TYPE_LONG = 0x02, + EXT_CTRL_TYPE_STRING = 0x03, + EXT_CTRL_TYPE_PTR8 = 0x04, + EXT_CTRL_TYPE_PTR16 = 0x05, + EXT_CTRL_TYPE_PTR32 = 0x06, + EXT_CTRL_TYPE_VOID = 0x07, +}; + +/* Stream and Control Info Struct */ +typedef struct _isp_stream_info { + uint32_t fmt_fourcc; + uint16_t width; + uint16_t height; + uint8_t frame_rate_type; + union { + struct { + uint16_t frame_rate_num; + uint16_t frame_rate_denom; + } disc; + struct { + uint16_t frame_rate_min_num; + uint16_t frame_rate_min_denom; + uint16_t frame_rate_max_num; + uint16_t frame_rate_max_denom; + uint16_t frame_rate_step_num; + uint16_t frame_rate_step_denom; + } cont; + } frame_rate; +} ISP_STREAM_INFO; + + +typedef struct _isp_ctrl_ui_info { + struct { + char ctrl_name[MAX_CTRL_UI_STRING_LEN]; + uint8_t ctrl_ui_type; + uint8_t ctrl_ui_flags; + } ctrl_ui_info; + + /* This Struct is valid only if ctrl_ui_type = 0x03 */ + struct { + uint8_t num_menu_elem; + char **menu; + } ctrl_menu_info; +} ISP_CTRL_UI_INFO; + +typedef struct _isp_ctrl_info_std { + uint32_t ctrl_id; + uint8_t ctrl_type; + uint8_t mcu_ctrl_index; + union { + struct { + int32_t ctrl_min; + int32_t ctrl_max; + int32_t ctrl_def; + int32_t ctrl_step; + } std; + struct { + uint8_t val_type; + uint32_t val_length; + // This size may vary according to ctrl types + uint8_t val_data[MAX_CTRL_DATA_LEN]; + } ext; + } ctrl_data; + ISP_CTRL_UI_INFO ctrl_ui_data; +} ISP_CTRL_INFO; + +struct ar1335 { + int numctrls; + struct v4l2_subdev subdev; + struct i2c_client *i2c_client; + uint16_t frate_index; + struct media_pad pads[1]; + + u32 mclk; + u8 mclk_source; + struct clk *sensor_clk; + + int csi; + + /* + * Format related data + */ + struct v4l2_pix_format pix; + + struct ar1335_datafmt { + u32 code; + enum v4l2_colorspace colorspace; + } fmt; + + struct v4l2_captureparm streamcap; + + bool on; + + int num_frm_fmts; + + /* + * Array of Camera framesizes + * + * Moved from global + */ + struct mcu_frmfmt { + struct v4l2_frmsize_discrete size; + unsigned int * framerates; + int num_framerates; + int mode; + } *mcu_cam_frmfmt; + + int power_on; + + uint16_t mipi_lane_config; + uint16_t mipi_clk_config; + + struct v4l2_ctrl *ctrls[]; + +}; + +static ISP_STREAM_INFO *stream_info = NULL; +static ISP_CTRL_INFO *mcu_ctrl_info = NULL; + +/* Total formats */ +static int num_ctrls = 0; +static int *streamdb; +static uint32_t *ctrldb; + +/* Mutex for I2C lock */ +DEFINE_MUTEX(mcu_i2c_mutex_1335); + +static int ar1335_read(struct i2c_client *client, u8 * val, u32 count); +static int ar1335_write(struct i2c_client *client, u8 * val, u32 count); +static int ar1335_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param); +static int ar1335_s_power(struct v4l2_subdev *sd, int on); + +/* + * MCU related functions + */ +static int mcu_get_fw_version(struct i2c_client *client, unsigned char * fw_version); +static int mcu_verify_fw_version(const unsigned char *const fw_version); +static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size); +static int mcu_count_or_list_ctrls(struct i2c_client *client, + ISP_CTRL_INFO * mcu_ctrl_info, int *numctrls); +static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id); +static int mcu_get_cmd_status(struct i2c_client *client, uint8_t * cmd_id, + uint16_t * cmd_status, uint8_t * ret_code); +static int mcu_isp_init(struct i2c_client *client); +static int mcu_stream_config(struct i2c_client *client, uint32_t format, + int mode, int frate_index); +static int mcu_set_ctrl(struct i2c_client *client, uint32_t ctrl_id, + uint8_t ctrl_type, int32_t curr_val); +static int mcu_get_ctrl(struct i2c_client *client, uint32_t ctrl_id, + uint8_t * ctrl_type, int32_t * curr_val); +static int mcu_get_ctrl_ui(struct i2c_client *client, + ISP_CTRL_INFO * mcu_ui_info, int index); +static int mcu_fw_update(struct i2c_client *client, unsigned char *txt_fw_version); +static int mcu_isp_power_down(struct i2c_client *client); +static int mcu_isp_power_wakeup(struct i2c_client *client); + +#endif /* __AR1335_TABLES__ */ diff --git a/drivers/media/platform/imx8/ecam131_mcu_fw.txt b/drivers/media/platform/imx8/ecam131_mcu_fw.txt new file mode 100644 index 000000000000..ef3fee7ab348 --- /dev/null +++ b/drivers/media/platform/imx8/ecam131_mcu_fw.txt @@ -0,0 +1,2129 @@ +":020000040800F2\n" +":40040000D83100204D050008D9400008CF290008000000000000000000000000000000000000000000000000000000001744000800000000000000000B05000889450008C7\n" +":40044000A94C00085F0500085F050008410900085F0500085F0500085F050008FD080008000000005F0500085F0500085F0500085F0500085F0500085F05000879460008B5\n" +":40048000894600085F0500085F050008000000005F050008F52900085F050008D12900085F050008554300085F0500085F050008994C00085F050008000000000000000050\n" +":4004C0000348854600F0FAF800480047C1720008D8310020084B19680868203080F30988022080F31488BFF36F8F3FBCAE4608BC04BC62B6184700000C000020EFF3108010\n" +":4005000072B6704780F310887047EFF309800E4B1A6820381060F0C044464D4656465F46F0C008B572B607F00FFF62B60CBC116808681030F0C8A046A946B246BB4680F362\n" +":4005400009882038F0C818470C0000200448804704480047FEE7FEE7FEE7FEE7FEE7FEE725460008C104000830B50B46014600202022012409E00D46D5409D4205D31D469C\n" +":400580009540491B2546954040191546521E002DF1DC30BD70B500242546002801DA01244042002901DA01254942FFF7DDFFAC4200D04042002C00D0494270BDF0B51FB466\n" +":4005C0000646002082B005464024019100901BE0019922460F46304600F05EF8049A059B801A994110D310461946224600F044F8361A8F410197224601200021009F00F0AF\n" +":400600003BF838184D4100902046641E0028DFDC019B00982946324607B0F0BD03460B439B0703D009E008C9121F08C0042AFAD203E00B780370401C491C521EF9D270478A\n" +":40064000D2B201E00270401C491EFBD270470022F6E710B513460A4604461946FFF7F0FF204610BD0321001D401E037812021A43491EF9D51046704710B5202A04DB01462C\n" +":40068000203A9140002010BD914020239C1A0346E3401943904010BD10B5202A04DB0846203AD040002110BD0B46D340D0402024A21A91400843194610BD0000064C01252B\n" +":4006C000064E05E0E36807CC2B430C3C98471034B442F7D3FFF7F8FE6C1202088C12020810B5364CE069000267D4A069C007FCD16368334A334934A004F0DEFA6068C00791\n" +":4007000004D03C48E0603C48E06005E02C4A2D49921D3AA004F0D0FA6368294A29490A3241A004F0C9FAA069C007FCD16368244A2449143224A004F0BFFA6068C00704D064\n" +":40074000292252011F4944A00BE06068400704D54A4860614A48606105E0194A19491C3248A004F0A9FA6368154A164922322EA004F0A2FA4E49042003F0E0FC104A114926\n" +":4007800026324CA004F098FAE2690120C005E16902434DA004F090FA094A0A49283245A004F08AFA60680121890408436060044A04492C323FA004F07FFA10BD00200240F1\n" +":4007C00001050000638C0008202D2D2D2025732825642920464C4153482D3E50454352203D2030782530387820202D2D2D200A0D00000000EFCDAB8905040302202D2D2DD3\n" +":40080000202573282564292050454B45595220556E6C6F636B656420416C7265616479202D2D2D200A0D0000202D2D2D20257328256429204E6F772C20464C4153482D3E6F\n" +":4008400050454352203D20307825303878202D2D2D200A0D00000000202D2D2D202573282564292050454C4F434B204C6F636B6564202D2D2D200A0D00000000C8D9EAFB59\n" +":4008800027262524202D2D2D20257328256429204F50544C4F434B20416C726561647920556E6C6F636B6564202D2D2D200A0D00F0800000202D2D2D20257328256429204F\n" +":4008C0002D2D2D200A0D00002056616C20416674657220556E6C6F636B204F7074696F6E204279746573202E2E2E2030782530387820307825303878200A0D0010B5012038\n" +":40090000800200F0FBF910BD04A004F0D5F97D24E400204606F088FDFBE7000020556E7265636F76657261626C65204572726F72204F636375726564202121200A0D0000C1\n" +":4009400010B500F02DF910BD10B5084900224A6107494B684C1523434B604B68082423434B60C009C001026010BD0000A40000200020024010B5214A00219069C30520482E\n" +":4009800004D54169022319434161911593699B0505D543690124234343616302194393695B0505D54369082423434361E301194393691B0505D54369042423434361630248\n" +":4009C000194393699B0405D543691024234343616302194393699B0304D5446920231C43446119439369DB0305D54369402423434361A0020143916110BD000000200240E3\n" +":400A0000A400002008B517A004F056F900F042F91C48416842151143416041680822114341600021130619608169C907FCD18169890714D50221816141684122D20091439B\n" +":400A4000416018680090104A104911A004F034F91EA004F031F900F011F903F061FBFFF753FF000020466C6173682045726173652042414E4B312053746172742021212098\n" +":400A80000A0D000000200240BB040000448C0008202D2D2D20204166746572202573282564292041742041646472657373203078253038782056616C7565203D20307825CC\n" +":400AC000303878202D2D2D200A0D000020466C6173682045726173652042414E4B312053756363657373202121200A0D0000000070B50024024620325179022903D004214B\n" +":400B0000C16301243CE001680B680E25AB430B6001680B685B085B000B601A4B0168994201D1012121E0174B1433994201D110211BE0144B2833994201D1891515E0114B6D\n" +":400B40003C33994201D189140FE00E4B5033994202D10121090408E00A4B6433994202D10121090501E001210906064B083B59600121517100211171816B002900D08847C8\n" +":400B8000204670BD0800024031B500F095F9044600F092F90099001B8842F9D338BD7047F8B5344CA0690026C005334D002811DBA06980050ED4A06940050BD4A0690005D9\n" +":400BC00008D4A069800405D4A069800302D4A069C00309D5287801282BD0AF68FFF7CAFE384600F055F82E70A069800712D50220A061287800280DD0287801281ED06068F7\n" +":400C0000082188436060A868FFF7C9FF0020C043A8602E70287800280AD160684121C90088436060606803210904884360602E74F8BDEF680020C043E860CFE76868401EC7\n" +":400C40006860686800280DD0E868FFF7A8FFE8688030E86061680122520291436160FFF773FED7E70020C043E8602E70FFF797FFD0E7000000200240A40000200348416842\n" +":400C800002221143416000207047000000200240704700000948416889070CD54168C90703D00749C1600749C160074901610749016100207047012070470000002002401D\n" +":400CC000EFCDAB8905040302BFAE9D8C1615141310B501218902884204D1034A034904A003F0EAFF10BD0000270400002D8C00082025732028256429200A0D0010B5044930\n" +":400D00004A69024202D04861FFF7E2FF10BD000000040140F8B500230124A7E027469F403A4070D04D68022D01D0122D14D1DD08AD002D1800952D6A5E07AC46F50E0F266B\n" +":400D4000AE46AE406546B543AC460E697546AE4065462E43009D2E624D68012D05D0022D03D0112D01D0122D16D185680326AC465D00AE46AE406546B543AC46CE687546D7\n" +":400D8000AE4065462E43866046680D79BE43ED06ED0F9D403543456006685F000325BD40AE46AE430D79B446AE07B60FBE4065462E430660C6687546AE438D68BD40354390\n" +":400DC000C5604D68ED0050D52B4D6E6B26436E639E082A4DB6007519AC46AD689E07360F0F27B740BD4305273F07B84201D100271AE0234FB84201D1012715E0214FB842D9\n" +":400E000002D1022710E030E01F4FB84201D103270AE01E4FB84201D1042705E01C4FB84201D1052700E00627B7402F436546AF60184D2E684F689643FF0300D516432E6043\n" +":400E40006E684F689643BF0300D516436E60AE684F689643FF0200D51643AE60EE684F689643BF0200D51643EE605B1C0A681546DD4000D052E7F8BD001002400000014096\n" +":400E80000004005000080050000C005000100050001C0050000401400069084000D00120704742694A4042617047002A01D08161704781627047000001480068704700009B\n" +":400EC0000400002070B5024640325378202B1CD11378012B19D00123137024245470046825689D432560046825681E03B5432560046825680D432560006801681943016048\n" +":400F0000202050700020107070BD022070BD70B5024640325378202B1BD11378012B18D0012414702423537003681D68A5431D6005682B680F263602B343090219432960BA\n" +":400F40000068016821430160202050700020107070BD022070BD000010B5034A034904A003F0AAFE10BD000021040000138C00082025732028256429200A0D0010B5034A8E\n" +":400F8000034904A003F098FE10BD00000D040000AF8B00082025732028256429200A0D0070B503689A691968D40507D50C0605D5446C01252C4344642C02DC61530508D56D\n" +":400FC0000B0606D5436C082423434364E3010468E361920508D5090606D5416C02221143416411020268D161416C0B22114202D0416C01F0D5FD70BD026891691268436B8A\n" +":40100000002B00D01847704770B5054600681449144C884213D1284600F054F80346124A124913A003F048FE6078042803D0A07860700420A07003F057F900206864184943\n" +":40104000286888420BD1284600F03CF8064A03460F32064913A003F02FFE0320207070BD0054004060000020F6030000998B000820257328256429202D2048414C5F4932E5\n" +":40108000435F4572726F7243616C6C6261636B20202D20307825303878200A0D0000000000780040202573202825642920457272436F6465203D20307825303878200A0D77\n" +":4010C00000000000406C704770B5040006D02546403568780026002802D005E0012070BD2E70204600F06EF924206870206801684908490001600F216068090688432168BD\n" +":40110000086121688A680120C00382438A60E1680129A16808D021229202114322689160E168022902D005E00143F7E701212268C902516021684A680F4B1A434A602168A4\n" +":40114000CA688243CA60616920690843A169090208432168C860216AE069084321680860206801680122114301606664202068702663AE70002070BD0080000210B5034A5C\n" +":40118000034904A003F098FD10BD000012040000C48B00082025732028256429200A0D0000680649884205D105480178092902D00321017070470B21FBE700000078004061\n" +":4011C0009000002000680649884205D105480178052902D00321017070470721FBE700000078004090000020F8B50546044640356878202830D120688069C04300042BD50C\n" +":401200002878012828D001202870222068701020A87000266664626263851048E06210486063608DFF2804D9FF20012320851B0603E0608D012320855B0609208002009052\n" +":40124000208DC2B2204602F043F82E700221204601F026FC0020F8BD0220F8BD0000FFFF21300008FFB5054604464035687881B020287ED1287801287BD001202870FFF754\n" +":401280001BFE0746012200901923D103204602F031F800283FD1212068701020A8700026666403986062049860856663618D01204003FF2903D9FF222285009034E0618DA4\n" +":4012C0002185009036E02046029902F001F836E002F05BF8002803D0606C042847D01AE0606A411C6162017820688162608D401E6085208D401E0004000C20851FD1608DBC\n" +":4013000000281CD000970022802120460A9B01F0F1FF002802D0032005B0F0BD608DFF2805D9FF222285009601231B06CBE7608D20850096208D0123C2B25B06C3E7608D28\n" +":401340000A9900283A462046C2D101F0F7FF0028C2D121682020C86121684A68064B1A404A606870AE702E700020D5E701E00120D2E70220D0E7000000E800FE10B5034A09\n" +":40138000034904A003F098FC10BD00001C040000F98B00082025732028256429200A0D0010B5034A034904A003F086FC10BD000017040000DF8B00082025732028256429D1\n" +":4013C000200A0D00F0B5234A0168122403200125214E85B0914215D1C02100910021029103900194049569461C48FFF793FCB06B69050843B06300220321172000F058F93B\n" +":40140000172022E0164A914221D189156A4632C20320072781C2052069460007FFF77AFC1020694631C103200390694604970B48FFF770FCB06B012189070843B06300225E\n" +":401440000321152000F034F9152000F027F905B0F0BD00000054004000100240000400500078004038B500680D49884213D10D4CA3780A2B10D0A08900900B4A0B490C48C5\n" +":4014800003F01AFC6078042803D0A07860700420A07002F029FF38BD63700C20A07038BD0054004060000020D30300007D8B0008F00F020838B500680E49884214D10E4C65\n" +":4014C000A378062B11D0A089ED22009092000B490B4803F0F1FB6078042803D0A07860700420A07002F000FF38BD63700820A07038BD00000054004060000020618B0008FE\n" +":4015000058100208F8B5034640335C78202C1ED11C78012C1BD001241C7022245C7020249C700024446405686E680127FF03BE436E6041624285418D01850649C16206497B\n" +":4015400041631C701F2101F0ABFA0020F8BD0220F8BD00000000FFFFB1310008F8B5034640335C78202C1ED11C78012C1BD001241C7021245C7020249C7000244464056862\n" +":401580006E680127FF03BE436E6041624285418D01850649C162064941631C70172101F07FFA0020F8BD0220F8BD00000000FFFFB131000802480168491C01607047000047\n" +":4015C0000400002010B506480168402211430160002000F007F800F03DF8002010BD00000020024000B5014687B00022102000F05FF8102000F052F81148816B02221143BE\n" +":40160000816305A9684600F071FA00F095FA0D49FEF7AAFF0D490C4A0A600D4A401ECA604860002008618860084600F093FE002802D0012007B000BD044800F0A6FEF9E770\n" +":401640000010024040420F0000040040D8180020E703000010B51048416B012211434163816B02041143816300221146501F00F01FF803210022481F00F01AF80321002257\n" +":40168000081F00F015F803210022084600F010F8032000F003F810BD00100240C106C90E01208840014908607047000000E100E010B502F013FD10BDF8B54E490746012551\n" +":4016C0000020ED034A4B4B4A4031082F7BD00EDC012F48D0022F60D0042F22D1CC680326B602344065D07F02BC424ED064E0102F77D00126032436042404202F09D0FF3FC9\n" +":40170000012F0ED1C968214053D07400A1423CD06BE00B6909692140B14203D199052EE02846F8BD01256D04A94203D19907F8D53148F8BDA142FCD111688903F9D511686D\n" +":4017400003200005014001200005091A09D0091A05D0814201D12948F8BD2948F8BD2948F8BD2948F8BDCC68A407A40F0AD0022C0BD0012C0ED0032CF4D10969890500291C\n" +":40178000CEDBF8BD00F0E8F9F8BD11684907FBD51846F8BD00F0F0F9F8BDCC680C26344007D0082CF1D0042CF4D00C2CE5D0F8BD09E000F0C1F9FAE7012292029442E9D015\n" +":4017C000B442DAD0F3E7C968032424032140F0D001256D036C10A942D7D0A142DAD0E6E7FFE7916B4902E4D4E1E7B142D2D0DEE70024F400001002408890000020A1070080\n" +":4018000000093D0040420F0080841E00F8B504460078594D800672D5574E0027403EB06BC00004D4B06BA9050843B063012753480168C90511D40168821511430160FFF71F\n" +":401840003BFB009005E0FFF737FB0099401A642837D84A480068C005F5D532680321090560680A400140914208D08103890F032904D13168890301D50120F8BD2A6903210F\n" +":4018800009040A4022D0084090421FD0207880061CD528692A6988430121C9040A432A612A698A432A612861C0050FD5FFF704FB009008E0FFF700FB0099411A3048814267\n" +":4018C00001D90320F8BD28698005F3D561688803800F032805D132680005824301400A4332602869032261681204114008432861002F04D0B16B012000078143B16320787F\n" +":40190000C00705D0E868A168800880000843E8602078800705D5E8680C218843E1680843E8602078400706D5E86803218902884321690843E8602078000706D5E86803216B\n" +":401940000903884361690843E8602088C00506D5E868032109048843A1690843E8602078000606D5E868032189048843E1690843E8600020F8BD00004010024000700040C9\n" +":4019800088130000F8B5054653480E460068C007C00FB0420AD25048016849084900314301600068C007C00FB0426FD128784B4C800705D5E068F0218843A9680843E060E1\n" +":4019C0002878C00752D06868022817D0032818D02168012818D08905002957DAE168890889000143E160FFF767FA69680746022912D003291CD0012926D033E0216889031E\n" +":401A0000EAE721688901E7E74907E5E7FFF754FAC11B3348814223D8E0680007800F0228F4D123E0FFF748FAC11B2D48814217D8E0680007800F0328F4D117E0FFF73CFA83\n" +":401A4000C11B274881420BD8E0680007800F0128F4D10BE0FFF730FAC11B2148814201D90320F8BDE0680007800FF3D11A480168C907C90FB1420BD9016849084900314381\n" +":401A800001600068C007C00FB04201D00120F8BD2878400706D5E068072109028843E9680843E0602878000707D5E0680721C90288432969C9000843E06000F05DF8E1684D\n" +":401AC000084A0906090F515CC840074908600020FFF788FD0020F8BD002002400010024088130000FC8A00080000002010B50F2202600C4AD3689B079B0F4360D368F0246C\n" +":401B000023408360D46807231B021C40C460D268D2081A40026104480068C007C00F086010BD00000010024000200240014800687047000000000020044805490068C9689D\n" +":401B4000044A4905490F515CC84070470000002000100240158B0008044805490068C968044A8904490F515CC84070470000002000100240158B000810B5184AD1680C2073\n" +":401B8000084004280BD0082810D00C2810D050680004410F0120C003491C884010BD1068C00601D50E4810BD0E4810BD0E4810BD88020E4B000F185C0902D368890F491CA2\n" +":401BC000DB0301D5084A05E01268D20601D5044A00E0044A5043FEF7C7FC10BD0010024000093D000024F40000127A000C8B0008F8B504460078F24DC0074AD0E86800077D\n" +":401C0000800F022807D0E8680007800F032809D1E868C00306D5286880033AD56068002873D036E0012062680004824203D129680143296011E0052301211B0489049A4228\n" +":401C40002A6802D10A432A60F1E782432A602A6802400092286888432860606800280CD0FFF72AF9064604E0FFF726F9801B64287ED828688003F7D50BE0FFF71DF90646EF\n" +":401C800004E0FFF719F9801B6428F1D828688003F7D42078800741D5E8681F270007800F3F02012807D0E8680007800F032809D1E868C00306D42868400717D5E0680128BC\n" +":401CC00023D113E0E068002817D029680922914301432960FFF7F0F8064604E0FFF7ECF8801B0228C4D828684007F7D568682169B84309020843686010E0286840084000E2\n" +":401D00002860FFF7D9F8064605E090E0FFF7D4F8801B0228ACD828684007F7D42078C00676D5E868A74E0007800F0BD0A06900285DD02868FF21013108432860FFF7BCF8EA\n" +":401D4000074644E02868800502D5A06900286ED0206A69683140884212D902F08DFA0028AED16868216AB04308436860686800E0BBE00002217F000A0906084368600FE08D\n" +":401D80006968B143014369606868217F0002000A090608436860206A02F06EFA00288FD1206A410B0120C003491C8840E96809060A0F8549895CC840844908600020FFF7E1\n" +":401DC00011FC25E0FFF778F8C01B02288AD828688005F7D56868216AB043084368606868217F0002000A09060843686010E02968FF20013081432960FFF75EF8064604E08A\n" +":401E0000FFF75AF8801B02286FD828688005F7D420786F4E000723D560690028306910D0012108433061FFF747F8074605E0C5E0FFF742F8C01B022857D830698007F7D556\n" +":401E40000EE0400840003061FFF736F8074604E0FFF732F8C01B022847D830698007F7D42078400762D5A86B0027C00005D4A86B012109070843A863012756480168C90556\n" +":401E800011D40168821511430160FFF715F8009005E0FFF711F80099401A642825D84D480068C005F5D5FF20A2680130824203D131690143316111E001218902002A07D008\n" +":401EC00005231B029A4203D132690A433261EFE7326982433261306988433061A06800280FD0FEF7E9FF009007E060E0FEF7E4FF0099411A3848814259D830698005F5D5E9\n" +":401F00000DE0FEF7D9FF009006E0FEF7D5FF0099411A314881424AD830698005F5D4002F04D0A96B012000078143A963606A002842D0E9680907890F03293FD001263606C5\n" +":401F40000228286805D0B0432860FEF7B5FF04462FE0B0432860FEF7AFFF074604E0FEF7ABFFC01B022822D828688001F7D4E16AA06AEA680843216BFD231B049A4311439E\n" +":401F80000843E860286830432860FEF795FF044604E0FEF791FF001B022808D828688001F7D509E0FEF788FF001B022801D90320F8BD28688001F5D40020F8BD0120F8BDE4\n" +":401FC0000010024000E00000FC8A000800000020401002400070004088130000704738B501684A68D243520609D48A68D243D20705D18A68D243520601D5816C08E04A68A9\n" +":40200000D243120606D48A68D243920702D4C16C884738BD4A68D2439206FAD48A68D243D20606D4426D02231A4342651022D2438A6001688A680123D2439206002A08DB0A\n" +":40204000426D1A4342658A6800920A684024A2430A6001688A68D243540602464032002C09DB547C122C06D0446D04252C434465CC688C6800948C68E443E40505D4446D50\n" +":4020800008252C4344658C680094446D002CC0D04C68E025AC434C605374FFF79FFF38BD70B5040006D025464035687C0026002802D005E0012070BD2E74204600F032F80A\n" +":4020C0000220687420680168402291430160A168606822690843E16811430843616901220843A169520211400843E1690843216A0843A16A084321680860A0690421000CAD\n" +":402100000840616A0843216848602168E06A08612068C16992009143C161666501206874002070BD00B50068104985B088421AD10F48416B821411434163A0200090022022\n" +":40214000019000210320039002910491052069460007FEF7DFFD002203211920FFF7A8FA1920FFF79BFA05B000BD00000030014000100240FFB5054604464035687C81B040\n" +":40218000012872D100293CD0002A3AD0287C01286BD00120287412206874002666652163A286E286E664A664A663A687E6870127A06A7F03B84207D120680168B9430160A7\n" +":4021C00020680168394301600121A068C903884205D120680168012292031143016020680168490603D40168402211430160E0680028606808D0002820D0E08E01281DD0DA\n" +":4022000026E0012005B0F0BD002802D0E08E012808D1206B411C216321680078C860E08E401EE086E08E002820D0002202212046049B02F097F8002815D1EAE7206B2168A0\n" +":402240000088C860206B801C2063E08E401EE086E08E00280AD0002202212046049B02F081F80028EAD00320CCE729E0A06AB84205D1216808680122120310430860002204\n" +":4022800002212046049B02F06DF82027002807D1012280212046049B02F064F8002803D0606D38436065DEE7A068002803D12068C16880680090012068742E740020A1E700\n" +":4022C00002209FE7042204490428086902D09043086170471043FBE700E000E0094910B5401E884201D9012010BD074C60610321081F01F0F3FE0020A0610720206100203B\n" +":4023000010BD0000FFFFFF0000E000E070B502462032137D012B1BD00123137502245475046865687026B5436560046865680E68354365600468A5688026B543A560006816\n" +":40234000846849680C43846053750020107570BD022070BD70B5040005D025462035687D002802D006E0012070BD00202875204600F00AF802206875211D206802F08CF982\n" +":4023800001206875002070BD70470268D36801210B43D360006802680A43026000207047704770B50446006801690025C9438907002915DBC168C943890711D4E91E016196\n" +":4023C00001202075206880698007204602D0FFF7E7FF04E000F08EF8204600F025F9257520680169C943490717D4C168C943490713D40421C9430161022020752068806953\n" +":402400008005800F204602D0FFF7CAFF04E000F071F8204600F008F9257520680169C943090716D4C168C943090712D40821C9430161042020752068C0698007204602D080\n" +":40244000FFF7AEFF04E000F055F8204600F0ECF8257520680169C943C90617D4C168C943C90613D41021C9430161082020752068C0698005800F204602D0FFF791FF04E05E\n" +":4024800000F038F8204600F0CFF8257520680169C943C90708D1C168C943C90704D1891E0161204600F0C2F820680169C943490609D4C168C943490605D44021C943016155\n" +":4024C000204600F0BDF870BD00B500680121890785B088420CD101200090002002210290039001910491052069460007FEF712FC05B000BD7047F8B5064604462036307D6C\n" +":402500000D4601280DD001203075022070750427002A08D0042A16D0082A2AD00C2A4DD137E00220F8BD206802F0E6F82068816908221143816120688169B94381612068C4\n" +":402540008169EA6812E0206802F0EEF8206882690121C9020A43826120688169012292029143816120688169EA6812021143816124E0206802F0F1F82068C26908210A43C0\n" +":40258000C2612068C169B943C1612068C169EA6812E0206802F0FCF82068C1690122D2021143C1612068C269012189028A43C2612068C169EA6812021143C16101207075C1\n" +":4025C00000203075F8BD70B5040005D025462035687D002802D006E0012070BD00202875204600F00BF802206875211D206802F053F801206875002070BD000010B5006800\n" +":402600000121890788420CD10648816B012211438163002203210F20FFF74AF80F20FFF73DF810BD001002407047000010B500680249884201D1FEF7BDFF10BD00040040F9\n" +":402640007047704770470000F8B502680446D06911680607360F07D1830605D58B0603D5204602F05EF9F8BD95682023002E65D0EE07F60FFF2721370F4037435ED0C707E8\n" +":4026800006D0CF0504D501271762E26E3A43E266820708D5EA0706D0276802223A62E26E04273A43E266420708D5EA0706D0256804222A62E26E02252A43E266020709D5E6\n" +":4026C0000A461A40324305D0236808221A62E36E1343E366E26E002AC5D0800604D5880602D5204602F01DF9E06E000703D42068806840061CD5204602F004F920688168EB\n" +":40270000490611D5826840218A438260606E00280AD01D498163606EFEF7EAF90028A2D0606E816B8847F8BD2046FFF78BFFF8BD2046FFF787FF0020E066F8BD2646C70205\n" +":402740006036002F0ADA6D0208D50120000510627372B3722046FFF774FFF8BD050605D50D0603D5204602F033FAF8BD4006FCD54806FAD52046146840218C431460737295\n" +":4027800000F0D3F8F8BD0000F148000870B5040005D025466035687A002802D006E0012070BD00202872204600F026F82420687220680168490849000160606A002802D05E\n" +":4027C000204602F000F8204602F0EAF80128E7D0206841680922D20291434160206881682A229143816020680168012211430160204602F04DF870BD00B50068164987B012\n" +":40280000884227D11548C26A01210A43C262C26A0A400592C26A0A43C262C26A0A400592826B4B041A4382630C20009002200190032003900420049002910520694600073A\n" +":40284000FEF768FA002203211C20FEF731FF1C20FEF724FF07B000BD00440040001002407047FFB5064604466036707A83B00D46202858D1002D0CD00598002809D001207C\n" +":40288000A1680003814207D12069002804D1E80702D0012007B0F0BD307A012843D0012030720020E06621207072FEF705FB019027464037059838820598788218E0788A21\n" +":4028C000401E788206980090002280212046019B02F0B1F9002818D10120A1680003814202D12069002812D02168287888626D1C788A0028E3D106980090002240212046F9\n" +":40290000019B02F098F9002808D00320C2E728882168C005C00D8862AD1CE9E72020707200203072B6E70220B4E7704710B5064CE178002901D000F045F8E078401EE070CC\n" +":4029400001F0D2FC10BD00006000002010B501684A68D243920507D48A68D243D20703D1921E8A60FFF7E2FF10BD10B504000FD000F010F8E0688021084321680860616864\n" +":4029800020690843A168084321684860002010BD012010BD10B50068084988420CD10848816BC21411438163002203211046FEF77FFE0020FEF772FE10BD0000002C0040A8\n" +":4029C00000100240C1680068016000207047FEE710B5074800688069172109020842044802D0FEF7DDFA10BDFEF706FB10BD0000AC0D002010B50648006880694005400F9A\n" +":402A0000034802D0FEF7CCFA10BDFEF7F5FA10BDF80D002010B5806A01684A680123DB031A434A60826B00219163C26B9163014640314A78602A02D0FEF7E6FA10BD20226B\n" +":402A40004A70FEF789FA10BDF0B503460022CE0740332824B025002E05D05E7842222746B74300D0F2228E0705D544265B7832439C4300D02A434B0701D5B8231A43112385\n" +":402A80008B4301D190231A4312238B4301D160210A4300680168914301600020F0BD000070B5164D1223446B002220268B43AC4202D0134DAC420DD14C0700D5B82211242B\n" +":402AC0008C4301D190210A43002B11D1324340210A430DE04C0700D5B822CC0701D0F2242243890701D5F4210A43002B00D132430068016811430160002070BD5D2F000859\n" +":402B00004931000801688A69D243920701D400228A6200688169C943C90703D081690122114381617047F8B5054604464035687828218143206804D00821C1610020287028\n" +":402B4000F8BD8169C903CF0F8169FE230E0C81681E408A05C168920D19408C46E168022912D10621D3090E400B409E420BD1A16C491CA164A16C0229E2D10021A1640823BC\n" +":402B8000C361297007E0664604212046FFF75CFF00202870324639462046FEF7EFF9F8BDF8B50026054640350446AE702C48E0626685606C0843606468782027282823D061\n" +":402BC0006878292820D068782A281DD007212046FFF73AFF6878602800D06F7026636663206801684A041F49026817D501239B039A430260A06B81632E70A06BFDF778FF6E\n" +":402C000000281DD0A06B19E003212046FFF71CFF28206870266314486063E1E7120410D502680123DB039A430260E06B81632E70E06BFDF75DFF002802D0E06B816B884742\n" +":402C4000F8BD6878602804D02E702046FEF7DCF9F8BD6F702E702046FEF77EF9F8BD00000000FFFF152A0008B131000870B504461548E0620025256320222046403006468E\n" +":402C8000427085706563480711D52068416A606A421C62620170208D002808D0401E2085608D401E6085606C04210843606407212046FFF7C9FE21681020C86135702046C8\n" +":402CC000FEF75CFA70BD00000000FFFFF8B5064600682027C76130684268224B1A4042600025356320487563F062C80606D531681020C861706C0421084370643046FFF76D\n" +":402D000001FF03213046FFF79FFE706C002814D134464034607860280FD06078212811D06078222808D16770A078A57040282570304614D0FEF734FAF8BD716C3046FFF7D7\n" +":402D40002FFFF8BD6770A078A57040282570304602D0FEF737FAF8BDFEF722FBF8BDFEF70DFBF8BD00E800FE0000FFFF70B50025064640360446B570717820202129707021\n" +":402D80000BD012202063022120466563FFF75CFE35702046FEF704FA70BD11202063012120466563FFF750FE35702046FEF70AFA70BD0000F8B50446006820260F46C6611D\n" +":402DC00021680820C86107212046FFF73DFE20684168B20211434160206841682D4A114041602046FFF78EFE20680168254649044035002902DB0168090406D5697821293E\n" +":402E00002FD0E16B096849686185628D0421002A02D0626C0A4362647A070FD5426A606A431C63620270208D002807D0401E2085608D401E6085606C084360640020206380\n" +":402E4000A8706063616C00290DD0616C2046FFF7A7FE6878282803D139462046FFF706FFF8BDA16BCEE7E26A0B498A4206D0E1626E7028702046FEF781F9F8BD69786E7038\n" +":402E800022292870204602D0FEF714FBF8BDFEF7E9FAF8BD00E800FE0000FFFF70B50026044640340546A6706178282029290ED061782A290AD160702220286302212846DD\n" +":402EC000FFF7C2FD26702846FEF7CCFA70BD60702120286301212846FFF7B6FD26702846FEF7E8FA70BD0000F7B5044600680E468069C043C0062CD4202725464035206841\n" +":402F00008069C04380060FD5701CF8D0002E05D0FDF7D2FF0299401AB042F0D96F700020A87028700320FEBD21681020C8612068C7612046FFF7E6FD20684168064A11403F\n" +":402F40004160042060646F700020A87028700120FEBD0020FEBD000000E800FEF8B50546044640352878012816D001202870C8060026002812DAD00610D521681020C861B8\n" +":402F8000606C04210843606412212046FFF788FD2046FFF7B7FD3FE00220F8BD080634D5500632D520680168402291430160608D002825D0206840688105608D890DFF2891\n" +":402FC00003D9FF202085930403E0608D012320855B060096208DC2B2204600F079F9608D218D401A6085687822282068016804D001229203114301600EE00122D203F9E725\n" +":4030000040212046FFF7CCFD06E0880604D5900602D52046FFF75AFE2E700020F8BD0000F8B5074604464037387815460E46012810D001203870F0060ED5E8060CD521680C\n" +":403040001020C861606C0421084360642046FFF759FD5BE00220F8BD700708D5680706D52068416A606A421C6262017009E0B0070ED5A8070CD5606A411C61622168007807\n" +":403080008862208D401E2085608D401E60853DE02C4A30062FD568062DD5208D002825D1608D002822D0206840688105608D890DFF2806D9FF220020228501231B0600903B\n" +":4030C00010E0608D2085E06A904205D000200090E36A208DC2B205E000200090208D0123C2B25B06204600F0F3F80FE020684068800123D506E0700608D5680606D5608DBC\n" +":4031000000280ED040212046FFF74AFDB00605D5A80603D531462046FFF7D8FD00203870F8BD206841688901F0D4E16A914205D141680122920311434160E7E72046FFF757\n" +":4031400015FEE3E70000FFFF10B5044640342378012B15D001232370CB0618D5D30616D5617821290ED0C16B09684968102200290AD00168CA61416C04221143416414E034\n" +":40318000022010BD816BEFE70068C2610DE00B0705D5130703D500680821C16105E08B0603D5920601D5FFF705FE0020207010BDF8B5054604464035287816460F460128F2\n" +":4031C00011D0012028704149F8062DD5F0062BD5628D1020002A08D02168C861606C04210843606467E00220F8BDE36A01225206934202D0E36A934202D16A78282A08D054\n" +":40320000E26A8A4202D06978292907D02168C86151E039462046FFF729FD4CE02168C8612046FFF76FFC43E0780719D5700717D5608D002820680BD0426A606A431C63620C\n" +":403240000270208D401E2085608D401E608500E0406A608D00282ED1E06A884228D12AE0380706D5300704D539462046FFF75BFC21E0B8071FD5B0071DD5608D00280CD09D\n" +":40328000606A411C6162216800788862608D401E6085208D401E20850DE0216862208862E06A01210906884202D0E06A002802D12046FFF7F3FDB80605D5B00603D539462A\n" +":4032C0002046FFF777FD00202870F8BD0000FFFF70B50568049C68688905890D1204044E11431943304021430143696070BD0000009800FCF8B51C4617460E46054611E0B7\n" +":40330000601C0FD0002C05D0FDF7D6FD0699401AA04207D92020403568700020A87028700320F8BD286881693046884304D00020B842E5D00020F8BD0120F9E770B51646C5\n" +":403340000D4604461AE0324629462046FFF7CCFD002801D0012070BD002D04D0FDF7ACFD801BA8420AD9616C202001436164403460700020A0702070032070BD2068806982\n" +":40338000C0438006DFD4002070BD70B516460D4604461CE0324629462046FFF7A5FD002801D0012070BD681C11D0002D04D0FDF783FD801BA8420AD9616C202001436164E6\n" +":4033C000403460700020A0702070032070BD20688069C0438007DDD4002070BD8CB000246846848284830483C4480A90C4A001F063FCCB4F002202213846FDF756FD01223D\n" +":4034000011463846FDF751FD012004F00DF8002201213846FDF749FD012004F005F8012202213846FDF741FD012003F0FDFFC8210120019100900223BA4A0021782003F046\n" +":4034400045FCB94E050004D0B8A001F035FC357100E03471B34D78220A3D6989BCA001F02BFC2021AE48FDF717FDE870C44D012831D1C821AB4A019100900223921C002178\n" +":403480000E2003F023FC070004D0BEA001F014FC377100E03471A34F0E220A3FB989C3A001F00AFCB98911229202914201D0CFA044E002F0B9FF070009D0D84AD849D9A0D8\n" +":4034C00001F0FAFBE34869460883377103E0E2A001F0F2FB347193480A38807801287DD1CF49E9A001F0E8FB8D4F002202213846FDF7DBFC012211463846FDF7D6FC0120A7\n" +":4035000003F092FF002201213846FDF7CEFC012003F08AFF012202213846FDF7C6FC012003F082FF6846848205A9DD4801F08EFE002806D09B22D200B949DAA001F0BCFB26\n" +":40354000B9E268466D4F808A393FB84201D1DCA009E0E34AE3A00A9901F0AEFB02F0E0FE002803D0EEA001F0A7FBA4E2F4A001F0A3FB6249684639398182FB480B9102F072\n" +":403580002BFC05273F07002210213846FDF78DFC80216846017244728172C823032202A9F248FEF7E7FD030002D09F22D20048E2012210213846FDF778FC0022102138464E\n" +":4035C000FDF773FC8020694608724C728872C823032202A9E548FEF7CDFD00E09AE2030002D08E4A5E322CE21F22C8235201BC49DE48FEF7BFFD030002D0884A653220E2FE\n" +":40360000012210213846FDF750FCD94B1F225201991AD8A0019301F04FFB022168468182084602F0D9FB012003F0FEFE002210213846FDF73AFC832168460172E02141725A\n" +":4036400080218172C823032202A9C848FEF792FD030002D0714A8332F3E1E122C8235201C2480199FEF786FD030002D06B4A8C32E7E10520012210210007FDF716FCE12258\n" +":40368000C94B5201C9A0019901F016FB0A980127400B0890AAE10520002210210007FDF704FC80216846017244728172C823032202A9AE48FEF75EFD030002D0574AA2323D\n" +":4036C000BFE18748790309180122C8235203A7480991FEF74FFD030002D0504AAB32B0E10520012210210007FDF7DFFB012309985B03C0180090394672E1000038000100D0\n" +":40370000415031333032205468726561642043726561746564202E2E2E200A0D00000000000400509A000020482C00202041503133303220495350202D204572726F722045\n" +":40374000434849502049442052656164200A0D004953502043484950204944203D2030782530347820616E6420536C6176652041646472203D20307825303278200A0D003E\n" +":403780008400002020546F736869626120427269646765202D204572726F7220434849502049442052656164200A0D00546F7368696261204D49504920427269646765202D\n" +":4037C00043484950204944203D20307825303478202D20536C6176652041646472203D20307825303278200A0D0000000A0D20546F7368696261204272696467652043683B\n" +":4038000069702049442030782530327820213D20307825303278200A0D000000A9040000D00F02080A0D20257328293A202564204661696C656420746F20496E6974696140\n" +":403840006C697A65204D49504920427269646765200A0D00F11F00000A204D4950492042726964676520636F6E66696775726174696F6E205375636365737366756C2021B2\n" +":4038800021200A0D00000000257320456E746572656420546872656164202E2E200A0D0002600000257328256429204572726F7220696E20493243202121200A0D0000009A\n" +":4038C0000A0D20536B697070696E6720426F6F742044617461202E2E2E200A0D00000000980F01080A20312E20496E697469616C20426F6F7420446174612053697A6520D1\n" +":403900003D20257520426173652041646472657373203D20307825303878200A0D0000000A0D204572726F7220696E20436F6E6669677572696E6720535049200A0D000098\n" +":403940000A0D2053504920436F6E66696775726174696F6E20436F6D706C657465202E2E2E200A0D0000000052F00000440E0020781301080A0D20322E205472616E736DFE\n" +":40398000697474656420307825303878202B20307825303478206279746573203D20307825303878200A0D00982F01080A0D20332E205472616E736D697474656420307885\n" +":4039C00025303878202B20307825303478206279746573203D20307825303878200A0D00A0A0099A01F068F908987F1CB84200D951E60520002210210007FDF756FA802029\n" +":403A0000694608724C728872C823032202A9A348FEF7B0FB030001D0A14A12E0A148052101700A997803091A8AB208919E49C82341180F469948FEF79DFB030006D0984A6F\n" +":403A400009329A499AA001F037F934E00520012210210007FDF729FA089839463B1802469DA001F029F96846848307A9A74801F0EDFB6846818BA64AA6A001F01DF9684646\n" +":403A800004837D210901012001910090022306AA0621782003F01AF96846018BA7A001F00BF9AD4968468182AC480B9902F094F9012003F0B9FC6846008B9549002801902D\n" +":403AC00000916846838B06D0754A7849D332A4A001F0F2F80DE0192292017449B0A001F0EBF801F0A3FE00F0A5F97D20C00003F09BFCC821286803F0E3FC6A4881784170B5\n" +":403B00006946098B00290AD0122282700181286803F0B0FC634FB878092804D01CE0102181700481F3E700220221AB48FDF7BDF901221146A848FDF7B8F9022003F074FC8E\n" +":403B4000B471C821286803F0BBFCB87878701220B870286803F08EFCB87802280BD1F471C821286803F0ACFCB87878701020B870286803F07FFCB87803280BD13472C8219B\n" +":403B8000286803F09DFCB87878701020B870286803F070FCB87804280DD101F0ADFE7072C821286803F08CFCB87878701020B870286803F05FFCB87805280DD101F06CFBFD\n" +":403BC0007074C821286803F07BFCB87878701020B870286803F04EFCB87806281CD101207E4A01900094137A51887820121D03F06DF80090002802D079A001F05DF8009862\n" +":403C0000F074C821286803F05BFCB87878701020B870286803F02EFCB87807280ED178A001F04AF87475C821286803F049FCB87878701120B870286803F01CFCB8780828B1\n" +":403C400000D048E475A001F037F8B475C821286803F036FCB87878701020B870286803F009FC38E40A0D20342E202564205472616E736D697474656420307825303878205A\n" +":403C80002B20307825303478206279746573203D20307825303878200A0D0000440E00206905000090000020980F0108D00F02080A0D25733A25643A205350492054726140\n" +":403CC0006E736D6974204572726F72202D202564200A0D20000000000A0D20352E205472616E736D697474656420307825303878202B203078253034782062797465732091\n" +":403D00003D20307825303878200A0D0052F000004DC000000A0D20426F6F74204441544120435243203D20307825303478203C3D3E20307825303478200A0D000A0D204280\n" +":403D40006F6F7420537461747573203D20307825303478200A0D0000FFFF0000026000000A0D20257328293A2564204572726F7220696E20435243203D203078253034786E\n" +":403D800020213D203078253034782C2020535441545553203D20307825303478200A0D000A0D20257328293A256420435243203D20307825303478203D3D20307825303423\n" +":403DC000782C2020535441545553203D20307825303478200A0D00000004005010190020204572726F722052656769737465722052656164204572726F72200A0D00000075\n" +":403E000020506F776572696E6720446F776E20495350202E2E2E200A0D0000002057616B696E6720557020495350202E2E2E200A0D00000010B508210148FDF732F810BDFD\n" +":403E400000040050F0B5274887B0C16A01242143C162C16A21400591C26A02210A43C262C06A002508400590202000900195694602951D48FCF74EFF1020052703263F07A2\n" +":403E8000009001946946039602943846FCF742FF019400966946144803960294FCF73AFF012210213846FDF700F8002202210E48FCF7FBFF012211460B48FCF7F6FFA0021F\n" +":403EC00000900A480190694602953846FCF722FF002203210720FDF7EBFB0720FDF7DEFB07B0F0BD00100240000400500000111010B51248104901601149416084218160B7\n" +":403F00000121C1600021016141618161C1610162FDF7DAF800280BD100210848FCF7D2FF002805D100210548FCF7F1FF002801D0FCF7EAFC10BD000000540040AC0D002058\n" +":403F40002A12B00010B511480F49016010494160002181600161416181610122C161C2600162FDF7B1F800280BD100210748FCF7A9FF002805D100210448FCF7C8FF0028D9\n" +":403F800001D0FCF7C1FC10BD00780040F80D0020330F600010B50F480D490160FF21053141600021816002220261C16001224261C161016252024162826181620721C1626D\n" +":403FC000FEF76EF8002801D0FCF79EFC10BD000000300140440E002010B5164A164886B0910706C02021016000241E21846041600838FEF7E8FA002814D1049404A90E48D0\n" +":404000000594FEF783F900280CD1602000900420019003900022694602940748FEF76BFA002801D0FCF770FC0348FEF74DFA06B010BD000055D000009C0E002010B50C489F\n" +":404040000A490160E1214902416000218160C16001618161C1610C22016242614162FEF795FB002801D0FCF74FFC10BD00440040D40E002010B50CA000F01EFE0F480E4904\n" +":404080000160FF21813141607F218160C160012149020161FEF769FC002801D0FCF734FC07A000F009FE10BD20494E49542057574447200A0D000000002C0040440F002017\n" +":4040C00020494E495420575744472053554343455353200A0D000000704700008307FF22DB0E9A408907090E994000280BDA0007000F0838830808489B001818C3699343F3\n" +":404100000B43C3617047830804489B001B181868904308431860704700ED00E000E400E0BFF34F8F04490348C860BFF34F8F00BFFDE700000400FA0500ED00E038B50D46C0\n" +":404140001A494418206800902346194A19491AA000F0B2FDE8430004284320602068144A00902346521D134922A000F0A5FD2E4CA069C007FCD10E4A0E490D322BA000F009\n" +":404180009BFDA069800702D50220A06105E0084A084914322AA000F08FFD4F22120105492EA000F089FD002038BD00000000F81FD9040000548C0008202D2D2D2020426534\n" +":4041C000666F7265202573282564292041742041646472657373203078253038782056616C7565203D20307825303878202D2D2D200A0D00202D2D2D20257328256429207B\n" +":4042000041742041646472657373203078253038782056616C7565203D20307825303878202D2D2D200A0D0000200240202D2D2D20257328256429202D2D2D200A0D000078\n" +":40424000202D2D2D204552524F52202D20257328256429202D2D2D200A0D0000202D2D2D205355434345535320257328256429202D2D2D200A0D000070B517490023CA6806\n" +":404280001206120F18D18A6B154CD500134A02D51268224009E08E6B01252D072E438E6312688E6B2240AE438E63A24204D103218903884200D101230A48016849084900CF\n" +":4042C000194301600068C007C00F984201D0012070BD002070BD00000010024000700040001800000020024070B512A000F0E4FC154D286801684908490001602868002490\n" +":404300008462286844624B2149011048FCF79FF90F4805210482818141818471FF210171417129680A6801231A430A6081784170847070BD524553455420534C41564520D1\n" +":40434000493243200A0D0000AC0D0020580F00206000002010B50248FDF741FE10BD0000440E0020F8B51D4616460F460446FCF7A3FD314626464036009000291ED043E026\n" +":40438000681C1BD0002D05D0FCF796FD0099401AA84213D920684168E022914341602068026840218A43026023E021680A6882430A6021680A6802430A601FE020688168CC\n" +":4043C00038468843DCD124E0681C1DD0002D06D0FCF772FD01460098081AA84214D920684268E0218A434260206801684022914301600120A16A40038142D6D0012070740E\n" +":40440000002030740320F8BD2068816838468843DAD00020F8BD704730A000F04DFC0025344C0426A078042801D1FFF75DFFA289002A04D0A078082805D00C2803D0A0784B\n" +":40444000002802D010E06070A5706281A58165700A20A07028492948FDF754F8002803D027A000F029FC2EE0A0780C2804D008282DD1A08900282AD11E4B61890C331A1DEB\n" +":404480001D4802F0D3F8002808D06922D200284928A000F011FC3348208111E0228A002A15D0E2812582A07860700620A07012491248FDF753F8002809D02BA000F0FCFBB0\n" +":4044C00060780428AED0A0786070A670AAE70520E07009481438FEF775FAA3E720456E746572656420736C617665207468726561640A0D0060000020580F0020AC0D0020FA\n" +":404500004572726F72204F6363757272656420696E2048414C5F4932435F536C6176655F526563656976655F4954200A0D000000508B000820257328256429204572726F35\n" +":4045400072206F636375726564206F6E20686F73745F6672616D65776F726B202121200A0D00000008200000204572726F72204F63637572726564206174205472616E735D\n" +":404580006D6974200A0D000010B502F0CDFF10BD10B523489AB001680322D2029143C21489180160012102200391102100900491099040040B90000100240C900A946846EF\n" +":4045C000FDF716FB002817D10F20159003201690179418940121199415A8FDF7D3F900280AD1FF200B3012940D90109413940DA8FDF70CF9002801D0FCF786F9FDF796FADE\n" +":404600007D21C900FBF7B0FFFDF768FE0420FDF759FE03210022081FFDF74AF81AB010BD0070004010480168821511430160C1680E4A1140C16001680D4A11400160816864\n" +":4046400049084900816001680122920491430160C168FD2212049143C160002101610549C003886070470000001002400C40FF88F6FFF6FE00ED00E010B50248FDF791FE75\n" +":4046800010BD00009C0E002010B50248FDF789FE10BD0000D8180020F0B502680124A407124D134E134FA04205D0A84203D0B04201D0B84204D11346702293434A681A4325\n" +":4046C000A04205D0A84203D0B04201D0B84204D103231B029A43CB681A4302608A68C2620968816201214161F0BD000000040040000801400014014030B5026A52085200E8\n" +":404700000262026A456883697024A3439C080B68A40023430224A2438C6845601443836149684163046230BD30B5026A10239A430262036A4568826973242402A2430C680E\n" +":4047400024021443202293438A68456012011A43846149688163026230BD30B5026AFF2301339A430262026A4568C3697024A3439C080B68A400234301246402A2438C68A6\n" +":40478000456024021443C3614968C163046230BD30B5026A01231B039A430262036A4568C26973242402A2430C68240214430122520393438A68456012031A43C4614968B2\n" +":4047C0000164026230BD10B5818CC90707D001684A6801235B049A43836A1A434A60818C890707D501684A6801231B049A43C36A1A434A60818C490707D501684A680123BB\n" +":404800009B049A43036B1A434A60818C090707D501684A680123DB039A43436B1A434A60818CC90607D50268916801231B039943836B19439160818C890607D501688A6898\n" +":4048400001235B039A43C36B1A438A60818C490612D503685A6801210905046C8A4322435A60026C8A4207D10268516803235B059943436C19435160818C090607D50168B4\n" +":404880004A680123DB04806C9A4302434A6010BDF8B500260446C666FCF70EFB054620680068124F000709D501212B46002249052046009700F0BFF900280DD1206800685A\n" +":4048C00040070BD501212B46002289052046009700F0B1F9002801D00320F8BD202060346072A07226720020F8BD0000FFFFFF0110B5806A0022014640314A834A82FDF7AD\n" +":40490000A1FE10BD01680A68FF2321339A430A6001688A68520852008A60202160308172704770B50246403201466031938B8D7A0C460168222D05D08869082210438861F5\n" +":40494000022070BD496A01268568360389B2B54202D10569002D0BD01940436D5D1C45651970518B491E0904090C518307D015E0456D19402980416D891C4165F1E70168C5\n" +":404980000A68FF2321339A430A6001688A68520852008A602021A172FDF762FF002070BDFEB50446016880682269E36910436269102700261A4310430A683546784B1A4087\n" +":4049C00002430A6020684168032212039143E26811434160734A2168A069914201D0226A10438A680B231B029A4302438A606E4A20686E4990420CD1C8688007800F06D0AD\n" +":404A0000012843D002283FD0032826D124E0012723E0674A90420AD1C8680C21084031D0042833D008282FD00C2816D114E0614A904227D0604A904224D05A4A90420CD108\n" +":404A4000C9680320800201401CD01015091A1DD0091A19D0814200D108270220FCF72CFE0190504B514922684039D81300929A4235D1002F0CD0022F0DD0042F12D0082F63\n" +":404A80001CD113E00027E8E70227E6E70427E4E7FDF752F808E00868C00601D5474805E0474803E0FDF768F8002873D0626851005118814202D81103814201D2012569E023\n" +":404AC000010E06025008002330185941FBF776FD032109023B4A411A914259D9EEE7E26982422DD13B0000F0F7F80906080B24192424241F2400019812E0FDF72DF80FE02C\n" +":404B000008686168C00602D548082F4A01E02F4A48088018FBF728FD86B20BE0FDF72CF8616840004A08F4E76168012248081204EFE70125310909013007400F084327E0A2\n" +":404B40003B0000F0C9F809070A0D061D060606290600B3E7FCF7F0FF14E0FCF7FDFF11E008686168C00602D54A08144801E014484A081018FBF7F8FC81B20098C16009E078\n" +":404B8000FCF7FAFF61684A088018FBF7EDFC80B22168C8602846FEBD61684A08E9E70000F369FFEF00480040003801404010024000440040004C00400050004000093D00C1\n" +":404BC0000024F400FFFC0F0000127A000048E8016921095C212901D00220704702464032518A002912D0012381681B03994202D10169002915D0C16C4B1CC364006809785E\n" +":404C00008162508A401E50820020704701680A6880239A430A6000680168402211430160F2E7C16C03680988C905C90D9962C16C891CC164E5E7FFB581B017460E460446BF\n" +":404C40000A9D1DE0681C1BD0002D05D0FCF734F90499401AA84213D920680168FF22A1329143016020688168490849008160202060346072A07200202072032005B0F0BD3D\n" +":404C80002068C1693046884304D00020B842D9D00020F3E70120F9E710B50248FDF7D4FC10BD0000D40E002010B50248FDF74EFE10BD0000440F00200FB410B503A9044BBB\n" +":404CC000044A029800F024F810BC08BC04B0184711660008A000002030B47446641E2578641CAB4200D21D46635D5B00E31830BC184702E008C8121F08C1002AFAD17047C6\n" +":404D00007047002001E001C1121F002AFBD17047FFB591B00F460546002606E025280AD0149A139990476D1C761C28780028F5D1304615B0F0BD002400940121F34A0294E4\n" +":404D400000E004436D1C2B780846203B98401042F7D128782A280ED0022128780246303A092A15D8009A0A235A43303A80180C436D1C0090F1E701CF0090002805DA0120B2\n" +":404D800040030443009840420090022004436D1C28782E2815D10420044368786D1C2A280AD101CF6D1C02900BE002990A225143303940186D1C0290287801463039092961\n" +":404DC000F3D928786C2810D006DC4C281AD068280ED06A2817D104E0742813D07A2812D110E00120400504430CE00121090501E0032109050C436978814203D1012000050A\n" +":404E000024186D1C6D1C287803906E281ED00CDC632831D004DC00288AD0582811D1B2E064287BD069280CD178E073282DD004DC6F2870D0702804D1A7E075286CD078284A\n" +":404E40006BD0149A13999047761C62E06002400F022807D003280AD0042838680AD006603F1D56E03868F11706604160F8E738680680F5E70670F3E73878694608740020C2\n" +":404E8000487404A80390012003E0386803900020C0433F1D61070FD5002101E00199491C029A0191914213DA8142F7DB019A0399895C0029F2D10BE0002101E00199491C7D\n" +":404EC00001918142FADB019A0399895C0029F5D101990098139A401A00902146149B00F03BF901998019461807E0039803990078491C0391149A139990470198401E0190A1\n" +":404F0000401CF2D12146149B139A009800F014F986196D1C09E741E033E034E00A200021049005916002410F022905D001CFC2179446032905D007E0FF1DFF08FF0003CF14\n" +":404F400006E000B2C2179446042902D140B2C1178C4600226146944506DA0A460021404291418C462D2102E0210504D52B216A461176012103E0E10701D02021F7E7019110\n" +":404F800054E00A200BE0102009E01020049000210420044308200591029003E008200021059104906002410F022905D001CF00229446032906D006E0FF1DFF08FF0003CF3F\n" +":404FC0008C4603E080B2042900D1C0B20021019121072BD50399702906D0049A1021059B4A401A4305D00EE040216A461176012108E06146014306D030216A4611760399D4\n" +":40500000517602210191049A0821059B4A401A430CD16146014301D1610707D530216A461176012101910299491E02910399582904D037A103910FA90F910DE039A1F9E79B\n" +":405040006146059B049AFBF7B9FA039B8C469B5C0F9A521E0F92137061460143F0D10F9807A9081A20300390600704D5012000048443029801E0012002900399884201DD5C\n" +":40508000401A00E0002041180290019809180098401A0090E00306D42146149B139A009800F05AF886190020049008E006A9085C149A139990470498401C761C04900199DE\n" +":4050C0008842F3DBE0030CD52146149B139A009800F042F8861904E0149A302013999047761C0299481E02900029F5DC08E00F980F990078491C0F91149A13999047761C35\n" +":405100000399481E03900029F1DCFBE60928010030313233343536373839616263646566000000003031323334353637383941424344454600000000F8B5044600251E464D\n" +":405140001746880404D405E039462020B0476D1C641EF9D52846F8BDFFB50446002581B01E46C80301D5302700E02027880404D505E038460399B0476D1C641EF9D528465E\n" +":4051800005B0F0BD70B50D46002812D001780446432903D015A0FFF78FFD0AE00221A01C01F0A8F821790246914204D017A0FFF783FD022070BD22480178052901D0214A26\n" +":4051C00011706178017061880802090A084381B2012901D9012100E000214018801C2880194901200870002070BD000020496E76616C6964205369676E617475726520304C\n" +":405200007825303278202121200A0D0020476976656E2020435243203D2030782530327820213D2043616C63756C6174656420435243203D20307825303278200A0D000026\n" +":405240006500002064000020660000207CB50546C8220120019200900A4602232946782001F034FD041E04D0294602A0FFF724FD20467CBD204572726F722052656164696B\n" +":405280006E67207265676973746572202578202121200A0D00000000FEB5F64F0021F88C6A4691800D22920103465343F34CF24EF24A1C19D2583346316825791B7991420E\n" +":4052C00001D1AB4204D0EEA00095FFF7F5FC3CE2012B0BD1B168E268914202DCA368994206DAF7A0A368FFF7E7FC2EE20920FEBDE0497822088550434518A818DE49FBF789\n" +":405300008DF9F54AA86FDB4F811A203790425BD019DCF24A811A90426ED009DCF049401833D001283CD0022844D00C2828D1B4E0032956D00226EB4C042975D0052974D05A\n" +":405340000A291DD1BAE0CB4CE74A2646881A6036403491426CD00BDCE448081867D0012873D0E1210901072870D0082808D12AE217286CD019286BD01B286AD01D2869D0AB\n" +":40538000DB49DCA0FFF798FCB0E7803528780006010C0720000300F01FFD2878F8723FE2803528784006410CD84800F015FD2878387335E2803528780006010CD44800F083\n" +":4053C0000BFD287878732BE2803528780006010C68468180CE480A3000F0FEFC2878B8731EE280352878010268468180C94800F0F3FC2878F87313E280359E4C6421286846\n" +":40540000FBF7C8F80007060C08036421FBF7C2F80105090D314368468180BD48001D00F0DBFC28882086FBE172E053E000E0A1E0904E8035288870863978B74800290AD039\n" +":4054400001291BD0022919D014E07EE088E175E178E1D8E1DEE1FF2229689632914201DB002105E0C839CD2901D2012100E0032100F0B2FC3878032804D008E0296896297D\n" +":40548000F3DBEDE72079012805D0022803D02888708680B281E16420FAE780352868002809D09E49684681805120000200F094FC28783875B4E199490839F3E78035288804\n" +":4054C0006C4C81B268468180954800F085FC2888E086A5E101A92046FFF7B8FE80352868002805D03978002902D0012804D00CE068468188314304E068468088C107C90F30\n" +":4055000068468180204600F067FC2878B87687E101A92046FFF79AFE80352868002802D001280AD103E069468888304004E0694688880121084369468880684681882046F6\n" +":4055400000F04AFC2878F8766AE10421754800F043FC80352E68642046436E483146801D00F06AFC6C483146143000F065FC2888608555E180352868002801D002284CD103\n" +":405580000621684800F028FC62482C21001F00F023FC5E4840210A3000F01EFC5D480021303000F019FC5B480021323000F014FC584801218903343000F00EFC55480121D4\n" +":4055C0008903363000F008FC29682A48022903D1317B006F00F000FD3878534F53497A100300FFF779FB060406060C0E101A4A4979314948103000F01FFC394609E01146A4\n" +":40560000F7E7114600E04A494348103000F014FC48494148143000F00FFC2868012825D10421404800F0D8FB3A482021001F00F0D3FB364800210A3000F0CEFB3E4F364842\n" +":405640003946103000F0F8FB3946334F1437384600F0F2FB648D642044432E482146801D00F0EAFB2146384600F0E6FB28783072D6E00000101900205C2D0020988D0008C9\n" +":405680000A0D204374726C2049442030782530387820213D20307825303878206F72204374726C20547970652030782530327820213D20307825303278200A0D000000009E\n" +":4056C0000A0A0D202564203E20256420203C202564200A0A0D0000001B0998001009980000F767FF0C100000F2FF01001A00FEFFDE0F020825733A20756E6B6E6F776E206B\n" +":405700006374726C2069642E0A0D0000DA5200000670000006500000142000005F1100000A510000405400006A0401006533000050C30000400D030040420F0080352878A7\n" +":4057400030736DE0307A022801D00220FEBD3548803529680167317B286800F03DFC5FE0304E8035286830642868FAF713FF05461621615E01208003401AFF216931FAF714\n" +":4057800009FF6083012168434903081AA08131E0022832D1642070862FE000F033FDE189214800F019FB2048618A801C00F014FB1D48218A001D00F00FFB1B48A18A801DA4\n" +":4057C00000F00AFB2CE0174E80352868B0642868FAF7E0FE05461821615E01208003401AFF216931FAF7D6FE60830121684349034018A0833878032801D0708ECDE720795D\n" +":405800000128C7D0C4E78035286800F03BFC2878787705E08035286800F040FB287820710020FEBD101900200420000010B581211D4800F0D1FA1D48817A1D48002904D0EB\n" +":40584000142100F0C9FA1BA003E0122100F0C4FA1EA0FFF731FA16480021203800F0BCFA2049214800F0B8FA0021204800F0B4FA2C211F4800F0B0FA1D481E490A3000F086\n" +":40588000ABFA1B4803218902443000F0A5FA01214903481000F0A0FA002000F0F3FB00F027FF002010BD0000861100003019002030200000436F6E6669677572696E6720F2\n" +":4058C00034206C616E650A0D00000000436F6E6669677572696E672032206C616E650A0D00000000FFFF00000A1000000C7000000250000014820000F0B585B000250195E8\n" +":405900000095F34AF14C9068A67A844620462038478C182047431368D1681069049352680392002E30D0EB4A2646203ED259768C18277E43E74F31E0F3889C4536D0B088D5\n" +":40594000F38861466C460BC4E348039B0499FFF7B3F916E07289914202D1B18988422BD0DEA00CE0F289914224D87289914221D3318A884202D8B18988421DD2DFA0FFF7A9\n" +":405980009BF9022005B0F0BDD24AD04E9032203ED259768C18277E43CE4F9037F6199342CDD1B788039BBB42C9D1C5E7327A012AD8D1CFE7DAA0E2E7C4481422C4491438AE\n" +":4059C000FAF72CFEC14EDF48203EF168C14219D13021DD4800F000FA308A81B20120400300F0FAF9B08A81B2D748103800F0F4F92078D64F00280AD0A07E002807D0012868\n" +":405A00000BD012E0D2A0FFF757F90920BAE73846009900F0E1F9022104E03846009900F0DBF90099384600F0D7F9C74805213269C9010E308A420AD17825290200F0CCF981\n" +":405A4000C1480221801C00F0C7F9002047E005231B0219019A4209D1502500F0BDF9BA480121801C00F0B8F9012038E00F23DB019A4209D1502500F0AFF9B3480121801C13\n" +":405A800000F0AAF902202AE00F231B0259009A4209D11E2500F0A0F9AB480199801C00F09BF903201BE001231B039A4209D11E2500F092F9A4480199801C00F08DF90420C0\n" +":405AC0000DE0832149018A420AD11325290200F083F99D480199801C00F07EF9052020702B46A6A072693169FFF7E6F8708E00F089FB764D94482035E9890E3800F06CF9AB\n" +":405B00009148698A0C3800F067F98F48298A0A3800F062F98C48A98A083800F05DF9718EA3A0FFF7C9F82078002804D0012825D0022823D010E0708EFF219631884201D326\n" +":405B4000002105E0C838CD2801D2012100E002217D48801C00F040F99A485C4F4079403700282FD0207805283FD004283DD0954900204871387A012804D023E0708E962892\n" +":405B8000E3D3DDE78121904800F026F9698DFF204E30814208D88B4A1279012A04D0A02907D8022A05D00DE0012129716885874905E002202871A0207D216885C9018448BD\n" +":405BC00000F03AF9207803280FD17E48007902280BD101202871FF204E3068857B497C4800F02AF9774901200871708E00902078032806D12879012801D0022801D164201E\n" +":405C00007086708E00F0FEFA4F48E9890E3800F0E3F84D48698A0C3800F0DEF84A48298A0A3800F0D9F84848A98A083800F0D4F8009870862178002908D0012917D0022971\n" +":405C400015D0052916D0042914D01FE0FF219631884201D3002105E0C838CD2801D2012100E003213848801C00F0B6F80EE09628F5D3EFE78021544800F0AEF82879002802\n" +":405C800004D050490120487100202871387A01280AD1504D2C482946123000F0CDF82A482946163000F0C8F8607F002801D000F0E9F9254807210902103000F08DF80121BF\n" +":405CC0004903481000F088F800205BE630190020482D0020788C00081C110208496E76616C6964204672616D652052617465202D2044495343200A0D00000000496E76611B\n" +":405D00006C6964204672616D652052617465202D20434F4E54206D696E200A0D00000000496E76616C6964204672616D652052617465202D20434F4E54206D6178200A0D7B\n" +":405D400000000000ABA6A9A6122000000C1000005468697320666F726D617420307825303878206973206E6F7420737570706F72746564202F6E2F7200000000204368612A\n" +":405D80006E676564204672616D652053697A6520746F2025642078202564204672616D652052617465203D202564200A0D000000205A6F6F6D204C6576656C203D202564BB\n" +":405DC000200A0D009000002086110000148200000C50000040420F003EB5044668460181C821002001910090022302AA2146782000F06CFF030005D068460289214602A0C5\n" +":405E0000FEF75AFF00203EBD4572726F722057726974696E6720726567202578203D203078253034782020657272203D20307825303278200A0D00003EB505460291C8210C\n" +":405E4000002001910090042302AA2946782000F03DFF040007D00346294604A0029AFEF72BFF20463EBD00203EBD00004572726F722057726974696E672072656720257843\n" +":405E8000203D203078253034782020657272203D20307825303278200A0D0000F8B5424C06462746254620376035002804D0022E41D0012E3FD075E03C493D48FFF7BCFF02\n" +":405EC0003C4EB079002801D002286BD13A783A483A493B4F1300FEF7FFFE060406060A18181035496931FFF7A7FF364901E03649F9E73148001DFFF79FFF2C213348FFF78F\n" +":405F00006BFFB079022805D00AE03946FFF794FF2F49EEE702202872297B206F00F05CF8B079002804D128724021204800F054F80120B07136E03878052833D0042831D033\n" +":405F40001C48297A817120212048FFF745FF002028721D491D4A144DFF204E3021390A324035012E02D0022E02D00BE0688506E03B78032BFAD0A0207D216885C9011046DE\n" +":405F8000FFF75AFF81210A48FFF726FF3878032806D1FF2101310F48FFF71EFF642060862E71F8BD0220F8BD10190020808000008611000090000020242000006533000014\n" +":405FC00050C300006A0401003582000002500000400D030010100000F8B50C462649884249D80104254F0E0EC5B269463846FFF72DF9694608887911084381B23846FFF73D\n" +":40600000EBFEB6086408301B00B269460880002800DA002008800006010C1948FFF7DCFEAD08281B00B269460880002800DA002008800006010C1248801CFFF7CDFE30198D\n" +":4060400000B269460880402800DD402008800006010C0B48001DFFF7BFFE281900B269460880402800DD402008800006010C0448801DFFF7B1FEF8BDFFFF000010200000F9\n" +":4060800036500000F8B500216A46FF2611800224584F594D73360300FEF71EFE06043A50667D943411463846FFF7D0F868460188A14301803846FFF78FFE00212846FFF702\n" +":4060C0008BFE4E484D4900782039002804D001281AD0022818D004E0488EFF219631884201D3002105E0C838CD2801D2012100E003214348FFF770FEFF2171313E48001F70\n" +":40610000FFF76AFE0020F8BD488E9628EED3E8E711463846FFF79AF868460188214301803846FFF759FE00212846FFF755FE04213348FFF751FEFF218031DFE7114638469B\n" +":40614000FFF784F868460188214301803846FFF743FE04212A48FFF73FFE27483146001FFFF73AFE002143E011463846FFF76EF868460188214301803846FFF72DFE04218A\n" +":406180001F48FFF729FE1C483146001FFFF724FE012109032CE011463846FFF757F868460188214301803846FFF716FE04211448FFF712FE10483146001FFFF70DFE0121B9\n" +":4061C000490315E011463846FFF740F868460188214301803846FFF7FFFD04210848FFF7FBFD05483146001FFFF7F6FD03210903284685E70A100000CE52000030190020F3\n" +":4062000014200000F8B50746374802787D20C000002A0BD0354B012A0AD0022A08D0032A06D0042A07D0052A09D00AE0304907E001461C4605E02D4C0146583401E00146F0\n" +":4062400004467D204004FAF7A5F9642148433946FAF7A0F906B2244D7D202035EE8221464004FAF797F9642148433946FAF792F904B228462C834038E121006C0901FAF7D5\n" +":4062800089F9074601208003FF21801B6931FAF781F901217843490347182846AF814038E121806C0901FAF775F9009001208003FF21001B6931FAF76DF968830099484347\n" +":4062C00001214903081AF10F891949107A1AA883EA81E20F12195210831A79186B8229828018A8820020F8BD3019002026050000F30300000346002010B50246002B05D00E\n" +":40630000002903D04B246401A14205D9002010BD9C5C6040521C92B28A42F9D310BD0000FEB5002405273B487D2636013A4D02900EE0042302AA394978200196009400F0C1\n" +":40634000C5FC002802D0072802D04FE02C7104E038467F1EFFB20028EBD1002F56D03048042702900721042302AA490378200196009400F0ABFC002802D0072836D101E0C5\n" +":406380002C7104E038467F1EFFB20028EAD1002F3CD0012001F048F81E48083004270290042302AA1D4978200196009400F08EFC002802D0072819D101E02C7104E038465C\n" +":4063C0007F1EFFB20028EBD1002F1FD01548042702900721042302AA490378200196009400F074FC002803D0072803D02871FEBD2C7104E038467F1EFFB20028E9D1002F1A\n" +":4064000004D0012001F010F80020FEBD05202871FEBD000020002B00482C002038F000000130330311929119FEB50120694608810024C826022302AA19460E2001960094B8\n" +":4064400000F044FC4B4D070078D10A2000F0ECFF68460481022302AA19460E200196009400F034FC070069D1012000900223424A002101960E2000F029FC07005ED13E48C9\n" +":4064800011220C3881899202914205D03BA0FEF713FC02202871FEBD444869460881022302AA04210E200196009400F00FFC070044D1612069460881022302AA08210E20BF\n" +":4064C0000196009400F002FC070037D138A0FEF7F3FB424869460881022302AA16210E200196009400F0F2FB070027D13C4869460881022302AA18210E200196009400F0AB\n" +":40650000E5FB07001AD1052069460881022302AA20210E200196009400F0D8FB07000DD10520400269460881022302AA22210E200196009400F0CAFB070005D029A0FEF7BE\n" +":40654000BBFB2F713846FEBD304869460881022302AA60210E200196009400F0B7FB040005D020A0FEF7A8FB2C712046FEBD0020FEBD0000482C00209C0000200A0D2054EA\n" +":406580006F73686962612042726964676520436869702049442030782530327820213D20307825303278200A0D00000049020000204D4950492042726964676520434F6E3D\n" +":4065C0006669677572656420666F72203936204D687A202121200A0D00000000364000001306000020546F736869626120427269646765202D204572726F72204348495036\n" +":406600002049442052656164200A0D000285000013B5044B012269460348FCF722F900981CBD0000FFFF0000D40E0020F8B51D461446002825D0002923D0002C21D04B266F\n" +":406640007601052903D1114A1278002A09D0224600F08EFF07000ED00DA0FEF72DFB3846F8BD1946FEF78EFD070001D012A0F4E70020208002E02088B04202D82888B042F6\n" +":4066800001D90220F8BD0020F8BD0000660000204572726F72206F6363757272656420696E2070726F636573735F636F6D6D616E64200A0D000000004572726F72206F63C6\n" +":4066C00063757272656420696E20616E616C797A655F6C656E6774685F7061636B6574200A0D0000EFF30580002800D001207047F0B533490023CB720420087312204873D7\n" +":40670000102088730620C87308462038DC2202866422428601250D752A4AC2868B760446CB766034FF26024623724E364032568508262673244C036404676E038364968184\n" +":40674000D381AC03148253829482D4821483538396834B7715711D4AC2600522D2010261FF22E13242611A4D0B7000220D239B0116465E4378235343AF591C18A767234603\n" +":406780007619377960342777012F15D0347A80331C71F4689C60521C282AE7D38A7A0B4AC2600522D201782102618A0042610122C26181610020F0BD803334691C60EAE763\n" +":4067C00030190020881300008080000055595659988D0008002808D00C490D4A8978002905D00320D0750020704702207047417803780802184341BA06480023022903D045\n" +":4068000001218172D375EEE78372FBE790000020482C00203019002070B5104CA078102808D00F49112814D0122814D001208871002070BD0B4D0121286800F041FE00289E\n" +":4068400001D0012070BD0920A070286800F012FEEEE70320EBE70820E9E7000090000020482C002084000020FEB500220446684602811646002907D003200880002C41D0F2\n" +":406880002578FF2D02D004E00220FEBD1E48057825701E498878FF280CD00F23002822D0122820D0F027112820D0C00621D46770A27022E016486946088101200090019066\n" +":4068C000022302AA0621782000F000FA060003D010A0FEF7F1F915E068460089000A60706846008908E06370F12005E06370A77003E00889010A6170A0700E48405D002863\n" +":4069000000D006463046FEBD6400002090000020F10F0000204572726F722052656769737465722052656164204572726F72200A0D000000482C002030B500290AD0244B5F\n" +":406940009B78102B0CD02348D90605D401210174084630BD022030BD03210174084630BD0024282802D30C800A2030BD78235843194BC018034660331D7F012D02D0022D10\n" +":4069800015D001E009240C80002A1FD0816F090E1170816F090C5170816F090A9170816FD170197F1171197F012903D00EE00C80092030BD80300168090E51710168090C0D\n" +":4069C00091710188090AD17100781072002030BD90000020482C00201019002070B50024002905D0282805D3002008800A2070BD022070BD0D239B01344D584343191E798B\n" +":406A0000012E02D0022E05D101E0152601E09E890A360E80002A56D02958090E11702958090C5170295A090A9170285CD070187910711879012802D0022844D12CE0986859\n" +":406A4000000E50719868000C90711889000AD071187A1072D868000E5072D868000C90729889000AD072187B10731869000E50731869000C9073188A000AD073187C107470\n" +":406A80005869000E50745869000C9074988A000AD074187D107516E0187A5071D868000E9071D868000CD0719889000A1072187B507205E0181920301119007C8872641C3B\n" +":406AC000D868A042F6D8002070BD0000988D0008F8B500271646002905D0282805D3002008800A20F8BD0220F8BD0D22920150431E4A851828792C46A034012802D0022812\n" +":406B000009D11CE0207E032801D0232002E0A07E400124300880002E25D02946983120223046F9F77BFD3046217E2030017000214170617E8170217E032905D013E0A889CE\n" +":406B40000A3008800920F8BDA17EC17008E078012918801920222430BB31F9F75FFD7F1CA07EB842F3DC0020F8BD0000988D00087CB50024054600291ED002200880002D0A\n" +":406B800018D0C82101200191009002230B4A0021782000F09BF8040004D009A0FEF78CF80D484470054E0DA00A3E7189FEF784F87089288020467CBD02207CBD9A00002000\n" +":406BC0004572726F72204348495020494420526561640A0D00000000482C002043484950204944203D20307825303478200A0D0030B500290AD0334B18249D7A00234443C2\n" +":406C0000002D28D0062828D22F482BE0022030BD0D2500E015250D80002A51D00159090E11700159090C5170015B090A9170005DD0709888000A107118795071D888000ABC\n" +":406C400090719879D071187A1072187A01280ED0022835D116E0062802D30B800A2030BD1948903023181D7A012DD3D1D0E75889000A5072987A90729889000AD072187B0C\n" +":406C800010731DE05889000A5072987A90729889000AD072187B1073D889000A5073987B9073188A000AD073187C1074588A000A5074987C9074988A000AD074187D107573\n" +":406CC000002030BD30190020788C0008FFB585B01D460E980F9B14460E4601280DD8042D0BD8002C09D0604A00215164320AF1B2002872D0012860D102E0022009B0F0BD14\n" +":406D00006846027141710093022301AA56480599FAF7A8FA07001FD05348FAF7D3F90446059800903346224639465048FDF7C4FF4D4D28680168490849000160012000F03B\n" +":406D400073FB286801680122114301601EE0042C7ED0032F7CD081E000200190029003904348092101702B4601AA3F480599FAF73BFA07000DD03C48FAF7A4F90446009640\n" +":406D8000024639463B48059BFDF796FF202C67D0DDE700F0E8FB364E02E0012000F044FB30780928F9D0012D04D0022D06D0042D58D108E068460079207053E06846808805\n" +":406DC00040BA20804EE00198694600BA000AC97900020843206045E0FFE720686C4622716171012D04D0022D04D0042D0DD105E0A0710AE0020AA271E07106E0020EA27199\n" +":406E0000020CE271020A227260720093AB1C01AA15480599FAF726FA040023D01248FAF751F905460598009033462A4621461248FDF742FF0C4E3068016849084900016035\n" +":406E4000012000F0F1FA306801680122114300E006E00160202D03D0032C01D005204DE707204BE7002049E7F80D0020701102089000002018120208C4110208F8B5114DD7\n" +":406E8000114CA878002807D0122805D0112817D0082020710820F8BD0C4E0121306800F00FFB0127002805D009A0FDF705FF27710120F8BDAF70306800F0DCFA0020F8BDFD\n" +":406EC0000320E6E790000020482C0020840000200A0A0A0D2053656D2057616974204661696C6564202121200A0D000070B5104C1049A078112808D00725102809D012281D\n" +":406F000007D0002805D04D750AE001204875082070BD094E0121306800F0D2FA002801D0072070BDA570306800F0A4FA002070BD90000020482C002084000020FEB5054616\n" +":406F40000F46002069461C460881002A0BD01F4901268B780321102B0AD01D48DA0604D486740120FEBD0220FEBD81740320FEBD012F05D0022F05D0042F05D01080F2E713\n" +":406F8000118003E0042000E006201080002C1AD011882046F9F75BFB280A2070657000963B4602AA294678200196FFF78FFE050004D008A0FDF780FE2846FEBD684600897A\n" +":406FC000010AA170E0700020FEBD000090000020482C0020204572726F722052656769737465722052656164204572726F72200A0D000000F8B504462148224E807810287A\n" +":4070000007D0C00602D401207074F8BD03207074F8BD607821780002084345BA282D02D30A207074F8BDA01CF9F71CFB00BA000A61790002144F08433860A0793871012829\n" +":4070400002D009207074F8BDE01DF9F70BFB00BA000AA17A00020843B8600C480C4CC5840121206800F02CFA002801D00720F8BD034805218170206800F0FCF90020F8BD17\n" +":4070800090000020482C00205C2D00201019002084000020F8B504000AD0284E2848B17810290BD0C90605D4012141720846F8BD0220F8BD032141720846F8BD61782278A4\n" +":4070C000090211434DBA0A21062D02D341720A20F8BD1C4F0121386800F0F2F9002801D00720F8BDA01CF9F7BDFA00BA010A60790902014314480160E179A27909021143A7\n" +":4071000049BA4160617A227A0902114349BA8160E17AA27A0902114349BAC160617B227B0902114349BA0161084845840420B070386800F09FF90020F8BD000090000020B0\n" +":40714000482C002084000020482D00201019002070B50E4C0325A078102808D0C1060C4802D40121017209E00572032070BD094E0121306800F0A4F9002801D0012070BD0F\n" +":40718000A570306800F076F9002070BD90000020482C00208400002070B50F4CA078102809D0C1060D4802D40121C1710AE00321C171084670BD0A4D0121286800F080F972\n" +":4071C000002801D0012070BD0220A070286800F051F9002070BD000090000020482C00208400002070B50C4C0825A078112803D00A488575082070BD094E0121306800F0A7\n" +":407200005FF9002801D0072070BDA570306800F031F9002070BD000090000020482C00208400002070B5224E0446B1782148102909D0C90603D40121C174084670BD03218E\n" +":40724000C174084670BD61782278090211431A4D49BA6980A1782972012907D0022907D0042914D00221C174084670BDE07804E02079E1780002084340BA104C68600121E3\n" +":40728000206800F01DF900280AD0072070BDE01CF9F7E8F900BA000AA17900020843ECE70620B070206800F0E5F8002070BD000090000020482C0020101900208400002006\n" +":4072C00092B03F493D488860002080F3108862B6FAF778F9FDF75CF9FCF7B0FEFCF7B2FDFCF706FEFCF72EFEFCF776FEFCF752FE3448C26A02210A43C262C06A324C08403A\n" +":40730000009008200D9001200E900320002510900F950DA92046F9F7FDFC002208212046F9F7C3FD2948C069009029480368C12228492948FDF7C0FC28A22BA12DA0FDF775\n" +":40734000BBFCF9F7CDF91F4C40342069400002D50120F9F719FC20690121C90508432061FCF788FE2B4C20222B486169F9F756F90520A0810BA80B9500F063F82062012180\n" +":407380000CA80C9500F062F8124960621422083101A8F9F743F9002101A800F0CDF80D49A06114221C3106A8F9F738F9002106A800F0C2F8E06100F03FF8FEE700040008D3\n" +":4073C00000ED00E000100240000400500020024000000140208B0008BC10020831363A33383A3135000000004E6F762032372032303139004275696C64204461746520618B\n" +":407400006E642054696D653A202573202573200A0D00000060000020B818002001460020842900D0C81C704710B5002800D1012000F0EEFE002010BD10B500F057FF002028\n" +":4074400010BD10B5012000F0D5FF10BD10B5012901D0002010BD03220021012000F0DCFF040004D000231A46194601F0C9F8204610BD000038B5002405460094FFF732F939\n" +":4074800000280FD06946284601F046F9012801D0FF2038BD009800280DD0012007490007486008E000231A461946284601F0A8F8012800D0FF24204638BD000000ED00E0A0\n" +":4074C00038B5054600200090002D11D00024481C10D0002900D00C46FFF704F9002814D06A460021284601F051F9012815D104E0802038BD0024E443EEE7009800280ED024\n" +":40750000012008490007486009E0002322461946284600F0A3FF012801D0FF2038BD002038BD000000ED00E010B501F0BDF9012801D000F04DFF10BD3EB5044608200D4640\n" +":40754000205EFFF76BFF02A901910090208A2B4682B22168606801F07FF9012801D000203EBD02983EBD10B500F046FE002010BDFFB5044689B000276846878007821D46C8\n" +":4075800016460297002C11D00A98C4420ED02178432903D0F2A0FDF78FFB07E0F84861780278914205D0F7A0FDF786FB02200DB0F0BD0A980B00C01E0390F94880880790A3\n" +":4075C0000A982218F748203A0078FDF785FB180D2A67AAFDFCFBFAF9F8D8F7F7F7F7F7F6F5F4F3F2F1F0EFF7012802D0022804D085E201204003608029E0EB4902980A5CD4\n" +":40760000201882700298401C02902028F6D32021A01CFEF76FFE029961188870CF7024203AE0012802D002281DD068E201A90020FFF79EFA002804D0DCA0FDF73DFB684679\n" +":407640000782684680880102000A014361800221A01CFEF74FFE2071677106203080D1490220087079E101A904A8FFF781FA0290002804D0CDA0FDF71FFB68460782684676\n" +":40768000008A010AA170E0700221A01CFEF732FE2071029860710620308072E2012802D0022826D06DE20592D17F0398029181B2A01CFEF71FFE0299814207D005980A99B5\n" +":4076C000C27FC2A0C91EFDF7F7FA39E0E178A27808021043B24940BA8880002201A9FFF787FA40E0684681880802090A0843608081E0A21C01A90798FFF77AFA94E06946DE\n" +":407700008988A01CFEF7F6FD69468988611888706946898802986118C87069468888001D71E0012802D0022823D02AE2D17F0398029181B2A01CFEF7DDFD0299814207D096\n" +":40774000ADA0FDF7B9FA6846878002200290C9E7E178A27808021043914940BA8880002201A9FFF73BF902900028BBD068468780B8E7A21C01A90798FFF730F954E001283E\n" +":4077800002D002284BD0FCE1D17F0398029181B2A01CFEF7AFFD0299814216D096A0FDF78BFA68468780022002901EE0D7E1D3E1CFE1C4E1B5E166E156E18EE0E3E17AE00C\n" +":4077C00076E072E06EE041E03AE0E178A27808021043734940BA8880002201A9FFF778F90290002801D068468780684680880102000A014361800221A01CFEF77BFD207192\n" +":40780000029860710620308066480178012912D002298AD068468088002886D06FE1A21C01A90798FFF754F90290002800D166E76846878063E76946898800297ED1A0E1F1\n" +":40784000FFF71CFB57480770378056E154484088002810D070A0FDF72FFAFF20A070504841880A0AE270217103216A46918002210291478004E001A9A01CFEF7F5FF0290AF\n" +":4078800069468988A01CFEF735FD69468988611888706946898802986118C87069468888001DF9E6FEF7B8FF6AE1FFF775FC67E1FFF74EFC64E1D17F0398029181B2A01C96\n" +":4078C000FEF718FD0299814203D04BA0FDF7F4F94FE1A01CFFF7DEFB52E1012802D002283DD00CE1D17F0398029181B2A01CFEF701FD0299814207D03FA0FDF7DDF9684688\n" +":4079000087800220029012E0E178A27808021043234940BA8880002201A9FFF70DF80290002804D043A0FDF7C7F968468780684680880102000A0143618000E00BE00221E5\n" +":40794000A01CFEF7D7FC207102986071CDE06946898800297CD0022101702F80CFE078E020496E76616C6964205369676E617475726520307825303278202121200A0D0042\n" +":4079800065000020204944203D2030782530327820213D20307825303278200A0D0000008800002066000020B81800204572726F7220696E2047657474696E672053656E9E\n" +":4079C000736F72204944200A0D00000020435243204C656E677468203D203078253032782C206F72696720637263203D20307825303278200A0D000020435243207665729C\n" +":407A0000696669636174696F6E204572726F72202121200A0D0000004572726F7220696E204D435520697473656C66202121200A0D0000004572726F7220696E2047657446\n" +":407A400074696E67204374726C200A0D0000000052E0A21C01A90798FEF76EFF0290002800D10DE7494857E0D17F0398029181B2A01CFEF73FFC0299814200D025E7A01CF3\n" +":407A8000FFF7B8FA7CE0012802D0022839D036E0D17F0398029181B2A01CFEF72BFC0299814202D039483C380FE0E178A27808021043374A40BAD08021791170002301AA5D\n" +":407AC000FFF73CFA002804D032A0FDF7F5F868468780684680880102000A014361800221A01CFEF707FC20716771062030802F480178012900D12AE7077005202880002098\n" +":407B000055E52348A31C017801AAC088FFF716FA02900028A5D01FA0FDF7CEF868468780AEE6D17F0398029181B2A01CFEF7E2FB02998142A2D1A01CFFF774FB20E01CA091\n" +":407B4000FDF7BAF8204921A0FDF7B6F8F8F75AFF16E0FFF7CBF913E0FFF744FB10E0D17F0398029181B2A01CFEF7C4FB0299814203D007491D48488002E0A01CFEF72AFEF9\n" +":407B800037800A48B8E7092011E50000347A0008880000204572726F7220696E205265616420495350200A0D00000000660000204657205570647420496E69746961746589\n" +":407BC00064200A0D00000000050A0008204669726D776172655F757064617465203D20307825303878200A0D000000000A200000F8B5134C0F46E66805462068001D00F07A\n" +":407C000069FA681C07D1002F05D021680D48091D00F098FAF8BD2068751945602168B54204D2A06B091D00F075FAF8BD606B091D00F070FAA06A8542F7D2A562F8BD00004F\n" +":407C40000C00002098010020F8B5054600F086FA2A4CA068401CA0602068294F002803D06069002827D02CE02560A068012828D1002614207043C01900F03EFA761C072E6A\n" +":407C8000F7D31F488C3000F037FA1D48A03000F033FA1B48B43000F02FFA1948C83000F02BFA1748DC3000F027FA15488C3060631430A06305E02068E96AC06A884200D86B\n" +":407CC0002560606A401C60626864E86A2169884200D9206114214843C019291D00F032FA00F048FA6069002806D02068E96AC06A884201D200F080FAF8BD00000C0000206A\n" +":407D0000BC00002070B5114E114C18E000F014FB3068002817D000F09BFE00F01FFAF068C568281D00F0D6F9A068401EA0606068401E606000F01EFA284600F056F8606805\n" +":407D40000028E3D170BD00F083FEF8E7840100200C00002010B5026C0C46002A0CD0C1688B18C36041688B4201D2194601E00168C1602046F8F752FC10BDF8B5856B1746E2\n" +":407D800004460026026C002A11D0002F19D0E068F8F744FCE168206C091AE1602268914202D26168081AE060022F17D019E02068002816D1606800F0E5FD06460020606048\n" +":407DC0000FE0A068F8F72AFC216CA0684018A0606168884205D32068A06002E0002D00D06D1E6D1CA5633046F8BD10B50446006B00F0CEF9204600F0CBF910BD03210E48DF\n" +":407E00008902420705D0C01DC0080B4AC000821A891A0A4A0023411809C20839C908C900183A11604B600B600B1A0AC093600120C0075360D0607047AC01002058000020A8\n" +":407E4000044CFFF75FFF20680128FAD900F0D4F9F7E70000BC000020FFB581B097000C9C0E460A9DA5223946206BF8F7E9FB206B3F1FC019C708FF00780701D072B6FEE7B3\n" +":407E80002218315C20321175315C002902D0401C1028F5D32046403000260090C670072D00D30625E5622665201DE56400F02FF92046183000F02BF924610720401B64624C\n" +":407EC000A0616665009806763846049A019900F0F1F820600B98002800D0046005B0F0BD30B5114900E011460A688242FBD34B685C18844203D1406818184860084643687E\n" +":407F00001C18944209D1084C103C2468A24209D052689A1842600A6812680260814200D0086030BD0460F9E75800002010B5044600F014F9A06B002804D0002400F01AF93A\n" +":407F4000204610BD0124F9E70648416B0968002905D0416BC968C9684968816270470021C943FAE70C00002003480068401C72B600D0FEE7FEE7000008000020F8B50446DD\n" +":407F800000F0ECF8254640350526AE57274624370BE0606A00280AD0384600F027FD002801D000F04DF9761E76B2002EF1DC0027FF436F7100F0DEF800F0D0F80426AE57F0\n" +":407FC0002046103000900BE0206900280AD0009800F00CFD002801D000F032F9761E76B2002EF1DC2F7100F0C5F8F8BDF8B50546002700F0A1F9284E3068002801D1FFF7D0\n" +":40800000FDFEF06805423FD1002D3DD00835680708D06807400F0821081A4519680701D072B6FEE7002D2FD0706885422CD81A48103001460C6801E020460C466168A942AB\n" +":4080400002D221680029F7D131688C421CD007682168016060680837411B102908D96019420701D072B6FEE741606560FFF738FF61687068401A7060B268904200D2B060BD\n" +":40808000F0680143002003C400F0E2FC780701D072B6FEE73846F8BD4800002004490868002803D00868026D521C0265086870470C00002010B50124031F24061C601B1FCC\n" +":4080C0001960191F024B0B60143940380A6010BD697F00084368826801699A60836842685A604A68824201D182684A60002202610868401E08607047014608310022416052\n" +":40810000D243C1608260016100210160704700210161704730B50B685A1C02D00246083202E0026904E02246546825689D42FAD953684B6099608A60516008610168491C6B\n" +":40814000016030BD42684A6093688B6093685960916008610168491C0160704772B604480168491C0160BFF34F8FBFF36F8F70470800002005490868002804D0401E086041\n" +":4081800000D162B6704772B6FEE700000800002070B500281AD004460D4D083C6068E968084201D172B6FEE72268002A01D072B6FEE78843606000F0BFF8606869684018D4\n" +":4081C00068602046FFF78CFE00F042FC70BD00004800002010B506487D21C9000068F8F7C3F90449401E48610720086110BD00000000002000E000E00120044900074860D3\n" +":40820000BFF34F8FBFF36F8F7047000000ED00E010B502000FD00948006B002801D072B6FEE700F089F800211046FFF7E1FC00F00FFC002801D1FFF7DFFF10BD0C00002095\n" +":4082400001490120C86170470C00002010B50C46002809D0054909681831FFF75BFF01212046FFF7C5FC10BD72B6FEE70C00002070B5040025D0154DE06A2968C96A88427A\n" +":408280001FD2A069002804DB28680721C06A081AA061E06A14220E4E504361698019814210D1201DFFF716FF2868C06AE0622969884200D92861142148438019211DFFF7B3\n" +":4082C00041FF70BD2868C06AE06270BD0C000020BC000020002805D003490A6A0260C9684160704772B6FEE70C0000201CB50E4800240190234680220CA100940D4800F092\n" +":40830000ABFA012803D0401C0CD172B6FEE772B600210548C9432C38816201214161C46000F03EF81CBD00003800002049444C4500000000417E00080248016B491C0163CA\n" +":40834000704700000C00002010B51348016B002902D00121C16110BD0021C16101690F4A02E0002915D0491E14234B43D358002BF7D014234B439A18536814465B680834B8\n" +":408380005360A34201D15B685360DA680260016110BD72B6FEE700000C000020BC00002010B50948016AFF22120411430162016A120211430162FFF70DFF04490020086079\n" +":4083C000F8F788F8002010BD00ED00E00800002010B5F8F793F8044600F076FA002803D001200349000748602046F8F78BF810BD00ED00E010B502460021012000F00CF877\n" +":40840000041E07D00021416001600B460A46C16000F0F6F8204610BDF8B517460E46050016D0002E16D070435030FFF7DFFD04000CD020465030002E0ED0206026642046A9\n" +":408440000121E56300F0A6F84C2007552046F8BD72B6FEE70020E7E72460EFE7FFB5002583B0040003D00498002802D006E072B6FEE7206C002801D072B6FEE700F014FAD0\n" +":408480000026002804D10598002801D072B6FEE7FFF764FEA76B002F26D0E56820460499FFF758FC0698002810D0E560606A002807D02046243000F099FA002801D0FFF7ED\n" +":4084C0009BFEFFF757FE012007B0F0BD7F1EA7632068002802D1FFF7E1FD606020690028EFD020461030E6E70598002802D0002D03D006E0FFF73EFE27E06846FFF7EAFE30\n" +":408500000125FFF737FEFFF717FFFFF727FE2046403004214156491C00D1067105214156491C00D14671FFF725FE05A9684600F069F9002820460AD0FFF720FD00F088FA26\n" +":408540002046FFF7F3FC0028A2D00020BCE7FFF7EDFC002818D02068002806D1FFF7FEFD6068FFF785FEFFF705FE204624300599FFF76CFE2046FFF701FD00F069FA002825\n" +":4085800086D1FFF739FE83E72046FFF7F7FC00F05FFA7DE770B50D46040025D0FFF7DEFD216CE06B48432168411861600021A1632168A160E06B216C401E48432168411837\n" +":4085C000E1600021C94320464030017141713038002D0BD0FFF790FD20462430FFF78CFDFFF7C8FD012070BD72B6FEE721690029F6D000F0FBF90028F2D0FFF7FDFDEFE7C4\n" +":40860000FFB5002683B01D46040003D00498002802D006E072B6FEE7206C002801D072B6FEE7022D04D1E06B012801D072B6FEE700F03AF90027002804D10598002801D0A5\n" +":4086400072B6FEE7FFF78AFDA06BE16B884207D3022D05D00598002817D0002E18D01BE02A4620460499FFF788FB616A002903D02046243000F0BAF9002801D0FFF7BCFDFC\n" +":40868000FFF778FD012007B0F0BDFFF773FD22E06846FFF71FFE0126FFF76CFDFFF74CFEFFF75CFD2046403004214156491C00D1077105214156491C00D14771FFF75AFD54\n" +":4086C00005A9684600F09EF8002806D02046FFF755FC00F0BDF90020D5E7FFF73FFDA06BE16B884210D1FFF745FD204610300599FFF7ACFD2046FFF741FC00F0A9F90028C9\n" +":40870000A0D1FFF779FD9DE7FFF734FD2046FFF735FC00F09DF995E770B50D46040004D0206C002803D072B6FEE772B6FEE72068002804D16068002801D072B6FEE7F7F7F0\n" +":40874000DDFEA26B0646E06B904219D92146403105200856521CA263421C03D0401C487101240EE0606A0028FAD02046243000F03DF90028F4D0002DF2D001202860EFE799\n" +":4087800000243046F7F7BEFE204670BDF7B582B0040003D00398002802D006E072B6FEE7206C002801D072B6FEE7F7F7A7FE0090A66B002E1FD020464030042545570746DA\n" +":4087C00020460399FFF7C6FA761EA663681C03D06D1C3D7101240FE020690028FAD02046103000F003F90028F4D004980028F1D001210160EEE700240098F7F783FE20461B\n" +":4088000005B0F0BD70B50D4604001AD0002D1AD0FFF7A4FC0F4AD1682868431C0FD02368126A934202D062688A420ED96268891A81420AD2401A28602046FFF74BFD002482\n" +":4088400004E072B6FEE772B6FEE70124FFF792FC204670BD0C000020FFB585B0164690000F9FFFF7C3FB05001AD05C20FFF7BEFB040012D0256300210E9803910197009050\n" +":4088800002943246089B06990598FFF7E5FA2046FFF7DAF9012009B0F0BD2846FFF778FC0020C043F7E7000006484169002904D0006B002803D0002070470120704702203B\n" +":4088C000704700000C000020F8B52C4C0027206B002808D0A069401CA061E069002800D001273846F8BDE668761CE6600ED1606B0068002801D072B6FEE7606BA16B6163E3\n" +":40890000A063206A401C2062FFF71EFBA06A86420AD3606B0068002810D0606BC068C568686886420DD2A06220681421C06A4843134908580128D0D90127CEE70020C0433A\n" +":40894000F1E7281DFFF7C6FBA86A002803D028461830FFF7BFFBE86A2169884200D920611421484306494018291DFFF7EBFBE86A2168C96A8842CCD30127CAE70C000020AB\n" +":40898000BC00002070B500210446002828D0154D2868844201D072B6FEE7206D002808D0401E2065E36CE26A9A4219D0002802D016E072B6FEE7201DFFF78CFBE06C07219A\n" +":4089C000E062081AA061E06A2969884200D928611421484304494018211DFFF7B3FB0121084670BD0C000020BC00002070B5C068C468002C0BD0204618300646FFF76AFB49\n" +":408A0000114D286B002804D0314610480FE072B6FEE7201DFFF75EFBE06A2969884200D92861142148430949B4394018211DFFF789FBE06A2968C96A884202D90120E861BE\n" +":408A400070BD002070BD00000C00002070010020F8B5284C0025206B2E46002808D0FFF77DFB206B401E2063206B002802D03DE072B6FEE7A168204F00291DD136E0F868EC\n" +":408A8000C56828461830FFF725FB281DFFF722FBE86A2169884200D92061142148431649B4394018291DFFF74DFBE86A2168C96A884201D30120E06138680028DFD1002DCA\n" +":408AC00001D0FFF741FAA569002D09D00127FFF7FBFE002800D0E7616D1EF8D10020A061E069002802D00126FFF786FBFFF742FB3046F8BD0C000020700100200000000098\n" +":408B0000000000000102030406070809030406080C1018203000000000010203040000006D61696E0000000010110208194400080000000000000000000100000411020815\n" +":408B4000DD330008000000000000000080000000537461727444656661756C745461736B0048414C5F4932435F536C617665547843706C7443616C6C6261636B0048414C6A\n" +":408B80005F4932435F536C617665527843706C7443616C6C6261636B0048414C5F4932435F4572726F7243616C6C6261636B0048414C5F4932435F4164647243616C6C62C2\n" +":408BC00061636B0048414C5F4932435F4C697374656E43706C7443616C6C6261636B0048414C5F4932435F4D656D547843706C7443616C6C6261636B0048414C5F49324318\n" +":408C00005F4D656D527843706C7443616C6C6261636B0048414C5F4932435F41626F727443706C7443616C6C6261636B0048414C5F4750494F5F455854495F43616C6C622A\n" +":408C400061636B004669726D776172655F557064617465004F7074696F6E4279746550726F6700424642325F636865636B5F656E61626C6500000000555956598002E00142\n" +":408C800001007800010000000000000000000000555956590005D00201005000010000000000000000000000555956598007380401003C0001000000000000000000000056\n" +":408CC00055595659000F700801001E00010000000000000000000000555956590010700801001E00010000000000000000000000555956596010300C01001300010000004D\n" +":408D00000000000000000000555956598002E00101007800010000000000000000000000555956590005D00201005000010000000000000000000000555956598007380453\n" +":408D400001003C0001000000000000000000000055595659000F700801001E00010000000000000000000000555956590010700801001E00010000000000000000000000AC\n" +":408D8000555956596010300C010013000100000000000000000000000009980001000000F1FFFFFF0F000000000000000100000000000000000000000000000000000000F5\n" +":408DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n" +":408E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004272696768746E65737300000000000019\n" +":408E400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n" +":408E800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n" +":408EC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n" +":408F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n" +":408F400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n" +":408F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n" +":408FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n" +":409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n" +":4090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n" +":4090800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n" +":4090C0000000000000000000000000000000000000000000000000000109980001000000000000001E000000040000000100000000000000000000000000000000000000AA\n" +":40910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n" +":40914000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000436F6E74726173740000000000000000A1\n" +":40918000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n" +":4091C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006F\n" +":40920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E\n" +":4092400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n" +":4092800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n" +":4092C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n" +":40930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n" +":4093400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n" +":4093800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n" +":4093C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n" +":409400000000000000000000000000000000000000000000000000000209980001000000000000003C00000012000000010000000000000000000000000000000000000039\n" +":4094400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n" +":4094800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053617475726174696F6E00000000000082\n" +":4094C000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n" +":40950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B\n" +":4095400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB\n" +":4095800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n" +":4095C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n" +":40960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n" +":4096400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n" +":4096800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n" +":4096C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n" +":409700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n" +":409740000000000000000000000000000000000000000000000000000C09980001000000000000000100000001000000010000000000000000000000000000000000000038\n" +":4097800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n" +":4097C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E6365204175CC\n" +":40980000746F000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n" +":4098400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8\n" +":4098800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8\n" +":4098C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n" +":409900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n" +":4099400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n" +":4099800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n" +":4099C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n" +":409A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n" +":409A400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n" +":409A80000000000000000000000000000000000000000000000000001A099800010000000A00000010270000881300000A0000000000000000000000000000000000000004\n" +":409AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n" +":409B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E636520546585\n" +":409B40006D706572617475726500000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EF\n" +":409B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5\n" +":409BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065\n" +":409C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n" +":409C400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n" +":409C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n" +":409CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n" +":409D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n" +":409D400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n" +":409D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n" +":409DC000000000000000000000000000000000000000000000000000100998000100000028000000F4010000DC0000000100000000000000000000000000000000000000B7\n" +":409E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n" +":409E400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047616D6D610000000000000000000000FF\n" +":409E80000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n" +":409EC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062\n" +":409F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021\n" +":409F400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1\n" +":409F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n" +":409FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n" +":40A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n" +":40A0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n" +":40A0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n" +":40A0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n" +":40A100000000000000000000000000000000000000000000000000001309980001000000010000003200000006000000010000000000000000000000000000000000000030\n" +":40A1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n" +":40A180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004761696E00000000000000000000000020\n" +":40A1C000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E\n" +":40A20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E\n" +":40A2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE\n" +":40A28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n" +":40A2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n" +":40A30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n" +":40A3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n" +":40A38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n" +":40A3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n" +":40A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n" +":40A440000000000000000000000000000000000000000000000000001409980001000000000000000100000000000000010000000000000000000000000000000000000024\n" +":40A48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n" +":40A4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000486F72697A6F6E74616C20466C69700087\n" +":40A500000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n" +":40A5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB\n" +":40A58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B\n" +":40A5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n" +":40A60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n" +":40A6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n" +":40A68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n" +":40A6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n" +":40A700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n" +":40A7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n" +":40A7800000000000000000000000000000000000000000000000000015099800010000000000000001000000000000000100000000000000000000000000000000000000E0\n" +":40A7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n" +":40A80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000566572746963616C20466C697000000033\n" +":40A8400000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n" +":40A880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098\n" +":40A8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n" +":40A900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n" +":40A9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n" +":40A980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n" +":40A9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n" +":40AA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n" +":40AA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n" +":40AA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n" +":40AAC0000000000000000000000000000000000000000000000000001B09980001000000010000007F00000010000000010000000000000000000000000000000000000008\n" +":40AB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n" +":40AB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053686172706E657373000000000000001E\n" +":40AB80000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n" +":40ABC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055\n" +":40AC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014\n" +":40AC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n" +":40AC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n" +":40ACC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n" +":40AD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n" +":40AD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n" +":40AD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n" +":40ADC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n" +":40AE000000000000000000000000000000000000000000000000000001099A000100000000000000020000000000000000000000000000000000000000000000000000006B\n" +":40AE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n" +":40AE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204175746F0000007E\n" +":40AEC0000000000000000000000000000000000003000346756C6C20464F56204175746F204D6F646500000000000000000000000000004D616E75616C204D6F646500004D\n" +":40AF000000000000000000000000000000000000000000524F49204261736564204175746F204D6F64650000000000000000000000000000000000000000000000000000CA\n" +":40AF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n" +":40AF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n" +":40AFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n" +":40B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n" +":40B0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n" +":40B080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n" +":40B0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n" +":40B10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n" +":40B1400000000000000000000000000000000000000000000000000002099A000100000001000000102700004D0100000100000000000000000000000000000000000000A2\n" +":40B18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n" +":40B1C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204162736F6C7574FA\n" +":40B200006500000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n" +":40B2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE\n" +":40B28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n" +":40B2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n" +":40B30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n" +":40B3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n" +":40B38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n" +":40B3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n" +":40B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n" +":40B4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n" +":40B4800000000000000000000000000000000000000000000000000026099A000100000000000000FFFF0000808000000100000000000000000000000000000000000000C3\n" +":40B4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n" +":40B50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F49204578706F7375726500000000A6\n" +":40B5400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n" +":40B58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B\n" +":40B5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n" +":40B60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n" +":40B6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n" +":40B68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n" +":40B6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n" +":40B700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n" +":40B7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n" +":40B780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n" +":40B7C0000000000000000000000000000000000000000000000000000D099A00010000006400000020030000640000000100000000000000000000000000000000000000AC\n" +":40B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n" +":40B840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A6F6F6D00000000000000000000000023\n" +":40B880000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n" +":40B8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048\n" +":40B900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007\n" +":40B9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n" +":40B980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n" +":40B9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n" +":40BA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n" +":40BA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n" +":40BA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n" +":40BAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n" +":40BB000000000000000000000000000000000000000000000000000008099A0001000000C01CF6FF40E309000000000001000000000000000000000000000000000000005B\n" +":40BB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n" +":40BB800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050616E0000000000000000000000000066\n" +":40BBC0000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n" +":40BC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004\n" +":40BC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4\n" +":40BC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n" +":40BCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n" +":40BD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n" +":40BD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n" +":40BD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n" +":40BDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n" +":40BE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n" +":40BE400000000000000000000000000000000000000000000000000009099A0001000000C01CF6FF40E3090000000000010000000000000000000000000000000000000017\n" +":40BE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n" +":40BEC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054696C74000000000000000000000000A5\n" +":40BF000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n" +":40BF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1\n" +":40BF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n" +":40BFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n" +":40C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n" +":40C0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n" +":40C080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n" +":40C0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n" +":40C1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n" +":40C1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n" +":40C1800000000000000000000000000000000000000000000000000028099A00010000000000000005000000000000000000000000000000000000000000000000000000AE\n" +":40C1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n" +":40C2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069484452000000000000000000000000B7\n" +":40C24000000000000000000000000000000000000300064844522044697361626C65000000000000000000000000000000000000000000484452204175746F00000000006C\n" +":40C28000000000000000000000000000000000000000004844522031580000000000000000000000000000000000000000000000000000484452203258000000000000006F\n" +":40C2C0000000000000000000000000000000000000000048445220345800000000000000000000000000000000000000000000000000004844522038580000000000000026\n" +":40C3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FD\n" +":40C3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n" +":40C38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n" +":40C3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n" +":40C4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n" +":40C4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n" +":40C48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n" +":40C4C0000000000000000000000000000000000000000000000000002A099A000100000000000000020000000100000000000000000000000000000000000000000000006B\n" +":40C5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n" +":40C540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004672616D652053796E6300000000000013\n" +":40C580000000000000000000000000000000000003000344697361626C65204672616D652053796E6300000000000000000000000000004672616D652053796E63203330CE\n" +":40C5C000487A00000000000000000000000000000000004672616D652053796E63203630487A00000000000000000000000000000000000000000000000000000000000089\n" +":40C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n" +":40C6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n" +":40C68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n" +":40C6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n" +":40C7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n" +":40C7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9\n" +":40C780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n" +":40C7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n" +":40C8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8\n" +":40C8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n" +":40C880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n" +":40C8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038\n" +":40C9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n" +":40C9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n" +":40C980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n" +":40C9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n" +":40CA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n" +":40CA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n" +":40CA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076\n" +":40CAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n" +":40CB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n" +":40CB400000000000000000000000000000000000000000000000000024099A0001000000080000004000000008000000080000000000000000000000000000000000000095\n" +":40CB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n" +":40CBC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F492057696E646F772053697A6500F8\n" +":40CC000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n" +":40CC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n" +":40CC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n" +":40CCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n" +":40CD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n" +":40CD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n" +":40CD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n" +":40CDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n" +":40CE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n" +":40CE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n" +":40CE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n" +":40CEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032\n" +":40CF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n" +":40CF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n" +":40CF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n" +":40CFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n" +":40D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n" +":40D0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n" +":40D080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070\n" +":40D0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n" +":40D1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EF\n" +":40D1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AF\n" +":40D18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006F\n" +":40D1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n" +":40D2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n" +":40D2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n" +":40D28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n" +":40D2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E\n" +":40D3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n" +":40D3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n" +":40D38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n" +":40D3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n" +":40D4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n" +":40D4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AC\n" +":40D48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C\n" +":40D4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C\n" +":40D5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB\n" +":40D5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n" +":40D58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n" +":40D5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B\n" +":40D6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n" +":40D6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n" +":40D68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n" +":40D6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n" +":40D7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9\n" +":40D7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n" +":40D780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069\n" +":40D7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n" +":40D8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8\n" +":40D8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8\n" +":40D880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n" +":40D8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028\n" +":40D9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n" +":40D9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n" +":40D980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n" +":40D9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n" +":40DA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n" +":40DA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6\n" +":40DA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n" +":40DAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n" +":40DB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5\n" +":40DB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5\n" +":40DB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065\n" +":40DBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025\n" +":40DC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n" +":40DC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n" +":40DC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n" +":40DCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n" +":40DD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n" +":40DD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n" +":40DD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063\n" +":40DDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n" +":40DE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E2\n" +":40DE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2\n" +":40DE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062\n" +":40DEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n" +":40DF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1\n" +":40DF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n" +":40DF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n" +":40DFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021\n" +":40E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n" +":40E0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n" +":40E080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n" +":40E0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n" +":40E1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n" +":40E14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F\n" +":40E18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005F\n" +":40E1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F\n" +":40E2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE\n" +":40E24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n" +":40E28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n" +":40E2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E\n" +":40E3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n" +":40E34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n" +":40E38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n" +":40E3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n" +":40E4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DC\n" +":40E44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n" +":40E48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C\n" +":40E4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n" +":40E5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB\n" +":40E54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B\n" +":40E58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n" +":40E5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B\n" +":40E6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n" +":40E64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n" +":40E68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n" +":40E6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n" +":40E7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n" +":40E740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099\n" +":40E780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n" +":40E7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n" +":40E8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8\n" +":40E840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098\n" +":40E880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n" +":40E8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018\n" +":40E9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n" +":40E940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n" +":40E980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n" +":40E9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n" +":40EA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n" +":40EA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n" +":40EA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056\n" +":40EAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n" +":40EB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D5\n" +":40EB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095\n" +":40EB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055\n" +":40EBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n" +":40EC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n" +":40EC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n" +":40EC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n" +":40ECC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014\n" +":40ED000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n" +":40ED40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n" +":40ED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n" +":40EDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n" +":40EE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n" +":40EE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092\n" +":40EE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052\n" +":40EEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012\n" +":40EF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n" +":40EF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n" +":40EF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n" +":40EFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011\n" +":40F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n" +":40F040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n" +":40F080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n" +":40F0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n" +":40F1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CF\n" +":40F14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n" +":40F18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004F\n" +":40F1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n" +":40F2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE\n" +":40F24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n" +":40F28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n" +":40F2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E\n" +":40F3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n" +":40F34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n" +":40F38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n" +":40F3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n" +":40F4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n" +":40F44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n" +":40F48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n" +":40F4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n" +":40F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB\n" +":40F54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B\n" +":40F58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n" +":40F5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B\n" +":40F6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n" +":40F64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n" +":40F68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n" +":40F6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n" +":40F7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n" +":40F740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n" +":40F780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n" +":40F7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n" +":40F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C8\n" +":40F840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n" +":40F880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048\n" +":40F8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n" +":40F9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n" +":40F940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n" +":40F980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n" +":40F9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007\n" +":40FA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n" +":40FA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n" +":40FA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n" +":40FAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n" +":40FB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n" +":40FB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085\n" +":40FB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n" +":40FBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005\n" +":40FC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4\n" +":40FC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n" +":40FC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n" +":40FCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004\n" +":40FD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n" +":40FD40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n" +":40FD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n" +":40FDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n" +":40FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2\n" +":40FE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n" +":40FE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042\n" +":40FEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n" +":40FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1\n" +":40FF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n" +":40FF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n" +":40FFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\n" +":020000040801F1\n" +":4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n" +":400040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n" +":400080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n" +":4000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n" +":4001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n" +":40014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F\n" +":40018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n" +":4001C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n" +":4002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE\n" +":40024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007E\n" +":40028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E\n" +":4002C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FE\n" +":4003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n" +":40034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n" +":40038000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n" +":4003C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FD\n" +":4004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n" +":40044000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n" +":40048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C\n" +":4004C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n" +":4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n" +":40054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n" +":40058000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003B\n" +":4005C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n" +":4006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n" +":40064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n" +":40068000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n" +":4006C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n" +":4007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9\n" +":400740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n" +":400780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n" +":4007C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n" +":4008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n" +":400840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n" +":400880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038\n" +":4008C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8\n" +":4009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n" +":400940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n" +":400980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n" +":4009C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n" +":400A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n" +":400A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076\n" +":400A80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n" +":400AC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n" +":400B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B5\n" +":400B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n" +":400B80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035\n" +":400BC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n" +":400C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n" +":400C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n" +":400C80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n" +":400CC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F4\n" +":400D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n" +":400D40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n" +":400D80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n" +":400DC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n" +":400E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n" +":400E40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n" +":400E80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032\n" +":400EC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n" +":400F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n" +":400F40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n" +":400F8000000000000000000000000000000000000000000000000000050003CC00000000000003C054A20B3371E40C0071DC00005002022C501C0F00502B000200400006FA\n" +":400FC000503E00025018FD9A501F0006000000010100000200800000502E010050450002100000335041000280007F0050340800500A020050302080505A0E3E50750003B8\n" +":401000000CCC0CCC080071CC14085088001150930004000CFFBEFAE1399950A6399950A03FEF507E0199507B00020CCC100050FE00C850F4033350F100020CCC1CCC50FA79\n" +":40104000014750F700020B33133350EE033350DC012C50C8033350C500020CCC1CCC50D0033350CD000213331CCC50D800A350D5000206660CCC50A8000250BAFFFF50AA94\n" +":40108000400450B8020C50BD0002640C001852CA017053160147531CFFD8531A0CCC52D60FAE5322200053410002D80004007078000453240C0053280400714B00020400DA\n" +":4010C0000400551000CC52B700025DE77EEF52BF000401990199019901995539000310001000100053E5000200CC00CC54B201475514040055120080544E0019544C0003EF\n" +":401100005049000500000000023200CC2000548900088000F8008000FE6709997E6680007E6654A81000300E00BB20090002400040003009000240004000400900024000CF\n" +":40114000400010128000118D00020080008011670004000000004000400011910003010000800080F039000200003390E00100020001000011870003008100003200601DAE\n" +":4011800000020000653860164000201001705398370F202E000140100000100900020001FFDD602900020000199A20300014302E00144030001420161E1E30161E1E40168F\n" +":4011C0001E1E2018001E3018001E4018001E5344004F52AA0000202C03F1302C03F1402C03F111750004FFFFAD42FFFFAEC660180100600C0211604A036C503240002014BF\n" +":40120000000020010002078004382022041920201E0020250004000082350001046A20050004800080007FFF7FFF301400003001000210700C3030201E003025000400007D\n" +":4012400082350001046A30220419300E000040140004400100020780043840201E0040250004000082350000823540220419401200507078000460B10010A1F4A224A25469\n" +":40128000A224A288A2940000A3180000000000000000000000000000000060004F3820100160601620005440000071C203E671C002006025000200300000602D0005002FE4\n" +":4012C000030000000000400060390005002102000000000040002051001400010008000100080001000200030005000300120003000000010008000000060001002D0001B2\n" +":40130000002D3055001400010008000100080001000200030005000300120003000000010008000000060001002D0001002D4051001400010008000100080001000200038A\n" +":401340000005000300120003000000010008000000060001002D0001002D6029000200010000000006000008000100010300A02C0000000000006538380000DF503038CB43\n" +":401380004086A201AE129A0129AC130EE086F84C89CE069980F26469ABD03B820198C680423E9C5E66103080D20877A5411040C1681E083D6AD65E9C291EF4D5105041409F\n" +":4013C0004A88115BB47244C938059F46B5887C0F04081520686C0F7028913441634016EC93D90839886882A6882C6902DE8B619EC0099F4329082C69C300C06C1FFD02421F\n" +":4014000020A9A0C10430301072757105671105403BFD0060EF2163F486D18CA1C56A06F4CF20093E644200181675F6021D43F6200889D161087A7420C66F492E1C800281B7\n" +":40144000011F4DB010CD842642EF490310C08F461B4CB001463CDAD034C80D5F01F948CC0F1A003F44ED8F83FF04D80040B39A8881B45D90AC0044ECF20529812428203B0B\n" +":40148000CFC47C8193328006A280DA2C0242083C008D10E00C02835E395026A86FCF67440D1B813093B5454883200E1DFAFC42002CEE8D01C8E9194FDF469F912A4A202671\n" +":4014C00086BD3BAA21E75697206D4C0985405994A013B00CD42071CC9163D7A8E3DD69A3302DEB0C2437D7D107F7E6C1040D107BC28925BFCC0827E919A11881F081184194\n" +":4015000016933FCE90287A07BA264C4013B435DF66101C835437ABD10448DEA6D8230F99CD91E8089A00A120059FE61F571D882650041D37B45BFD58823C965841134BD447\n" +":401540000DE3D12E240610412041D62A8250CB429C00022A695D0C060080447C2AA441C8C150C801C5BA2071710400781DE93DC46A987161196984D88D0248D124F83A700C\n" +":401580009270689289128C895512A9DEDB458348969EC496F1BB8092D0A8B0CF86CC4496F44148C4812E912F0689309130C8995132C89A5134C89B5136C89C5138C89D51AF\n" +":4015C0003AC89E513CC89F513FD9A6024FC2A0691410625028FA21784A0F502B8C1001090129348A18B1620D128922899146A28D9148A291914AA295914CA299914EA29D61\n" +":401600009150A2A19152A2A59154A2A99726613722B122B1915AA2B5915CA2B9915EA2BD8FA19AC60800B480C49A458448B1068962916250FA78D06150348B28312C8A1068\n" +":401640003A0840F48105022A048D0446A06916706259A9168A2D0A104E082150348B58312D548B6516CC8B7516EC8B85170508290420AA56F9062250348B98312E4A105EC9\n" +":401680000841848195034A06D566606006236D7E068971CB768F6D141D1E20F97C00D8123539C50824823C13B887886163D1DAA58CB6479092C8036521632820479C929122\n" +":4016C0001E89447D0A4443D94888FFE7A18282121C7447CCFBC4455BF8406C5FC2450E9DE85481159228575609172C1EDB3D96090E4B805A3F8924618406B370923E9D8080\n" +":4017000029904921D11D6484B049F5F5217052C1253804015C6C24A748B31508125E28406B490939C0D30A8009400223CDC3A8A02219F0B7511445423E87DE228A6C128BC5\n" +":40174000A831CA940947C1F40B804C09461C33E6840228E28B83BE09478E1C4A39609464A23DE8EC452058CFA16588A40D11B5A514914202E4900E4D1D00BCE4604A501336\n" +":40178000CD088814A0823E4902229D2F4A50114FE859A2A74253C70F38B6160A8E5488504254F07E629F84A9F42D410588F2A502F42CE115A0A23E8ADE22B4EC47D0FCC417\n" +":4017C00058700EC2A042580E88F9A1C08B13A19E951A22C81C67D0B9445983894E425A0C0D4CC25A820D61581E3F493E85CC32E40051D2A0104352825C9688F4DC20B06199\n" +":401800001808F80DD88C23911F137A11865C23E8CB023128309895002627199E1313AFD18A7A1F58C3504CD18B2E109A384C6C44026470ADA109AA484C8B06084D3A099D21\n" +":40184000948D3E58A21000D3A043A57FA3729B09BF2C2A3827445084DD0A48274F5D9F158784EA882A5427552613B7D19EC54304EDF444C150813B80C47AACE08EEA502123\n" +":40188000355C09DF4404264BC886A2C04D5B827B490A8709F83223DAF0847E440F4035CB07ED6609FB32084D4684FE1311F4333080200FA650440AF341F0F3DF21007D491A\n" +":4018C000472008730C398272C076525D4495F60378000003A8D2380346B1EBCB778422077AE76C7B230848F3FCFF3EBC62AE2110060B9E03B7903A86247B2F38583147039F\n" +":40190000A410F5C96A076728994810F5ED5A2691D06D821CA65133980D2D81FF451889A471A072A060EEA673EDF38101CFE40E0374011F4C0F27220FA7FF4801E84682F5E5\n" +":40194000E89895D3C87002A13000329435F37381F7CF60F63D6880E68F5D7E89BDBD8E8F597F0F32CB135068177C5F3E2030E5D9E8665C1C810984020441556F87598A0F9C\n" +":40198000858EC87A1E8B83BCD9E03187E2AF421E04C1C02FEA54844DE0D6FF401A4750A34ADC20A044186F86447D1A8118800A02BDA31622B0380784E1A74B7491F47804F2\n" +":4019C00020561540F0EBC0F6E2A8C891370C12978A078F3765102412077D7A2844D0421805FE9FF9236387D389592B186160F2F18AA1B1DADF24041D52331E8DE00CF002FA\n" +":401A000039932131C2AF07B3230FCE662213861273390753242821009007998B97A4AA07C514231427475CA40835D973E3EA0273A181CD6CC4C524012F3CD098CC0EFAF423\n" +":401A4000F0420054231047108821A36897BD418032C4AEEF83C4EC31791630F00E51E97D110203A9390DC196F55A22697C308CA0EC8D13B00E394900CFAC91C46A9A4C1612\n" +":401A80004FC2DFE2454A4C064C27E97683A1A1D45943DF98633A207E0E9CA4B069380C0CF7B2BA8C1B5104009C21AF5F561F869BD4AAC0AAB468F91C1D2F2C218741801435\n" +":401AC000D00140880387D3480E06078849440308C30ECCE832D0238E33F4781C469F3BAF146881A12A162723F83CE2E3D357A04101A0374E920CCA67E169D2EDE54C83A12C\n" +":401B0000154BBB4B04431889A28860E98EB53D5A9867B06BC1C513E77C03D90C821B82BC300102E42A1D06B0908207C142B020E0BD450C40F1A88757379B8029DD14A2205E\n" +":401B400042903AA06C023BF151883CF338736944D80163481C052D3D00D8345B0B038F973DC7A07CC41A2C0584073004534033121E62482E837810650263C191C209836084\n" +":401B8000D96DDAD3A2059E2408A65CF30A31F4BA90836318B6680563C8E967501E83008C320FEA248C4841AB02317AB3A8674212C13067B2DC86580C0556041F4AC4902656\n" +":401BC0000D767DD084E3E86A3A8C6129040D82852F49820CD60581B0C1AC6B832690372E1B5B118843E0A218612412317968E9302B070070E86484841028095C8511C46968\n" +":401C00000251646A8164E84E13069D301E47D8E11E03D045202274282D040E81142C13425A23C0CE0FD75044255EA023C340A75BE921CA3F8BD754880F01104C417694889B\n" +":401C40008014D8B7CC21070DA37ED6C03D0693905276FD56F434A0C1748011A452A9301C8630681D20018A8D1A9603348104BB5748775D09344C20808203C156307D878BFE\n" +":401C8000E0449DE6272208FAAE504002589D00EAC821049743B2500417EF6411EC5EF101422AEE1851248D02D82220030EE1791240271C04BF5F79080D58E40B02A88E824E\n" +":401CC0005F64A508201186140CCA42902024028892069085102530653468FA1D3CF7FDC19F078E07880BCEB2462C0B3260E6213CA3B83D41E840A498818401C402BE392454\n" +":401D000036004EC8362604C2C4C0DA9BC7B23F082BE91871E12623D4F062247A7B28CF21C07A19CB8198B98633BC7804E9B0F8812E8C00B884044031C42F0A0440DC3EA104\n" +":401D4000235702C159CEC044551C4630642DA810093B40DA673506A00690902A0A8104C90279949CF8D847018C10B28CD3500C080853E8F98193017A47F710190FE515F381\n" +":401D8000E10C1CD310455EE1F62970DC8634DC8FB362106AE8583500C2281D18395D9200609C0E8C1EC0BD3ECBEB103042862B750DBC440C0DA1880D3981DEF1661DFF287C\n" +":401DC000BD4AA62481E404F615F14A4B9B6A0F776889DFC6EBC813E99BA1200793CECCC1EB8DC29884328F2E9A67103BCFE385DCE223202F318408F219F5CC094846790066\n" +":401E000039CFD73C05C14684CAB83CC7AF23FB0C3917C98EDE34A73E54D02159EC428FE7984E0A02867C4A0031587F9961289D74880FC0A1E3EBD6C3E91531ED4942130A1D\n" +":401E40001431E0475335901A7992269D5499143873BA7109D0EDB5512D7B50EC79DC1892DDEAFA33E103E169200C767219544A262291A0398D7E2334160D00AB8576110095\n" +":401E8000500F21E4811B82808203AE491ACD23ECCCF13338F8B6B07CFC8420A1AA10F7ED48F862F4496057BF681025816EFD9F409605E1041AB1725100C01AD0B4AC0728C9\n" +":401EC0003A6C078E825A0DAAF14016E84532018E6006BE50BAD00E621C013D80002A1C8178F3DFE087B49BA4023A3A70B900048847D80C865A751D30DB5E2E410F50348D6C\n" +":401F00006705210373C5F70201F8EF586F031602333CB7E0DB2330A1778801A53D470049D62E626C00F6242052D0A36463285CE998F2CDC160E82400D8512392382106E128\n" +":401F4000A160E437FC0F2E32344B01FBA4560AC5007A84007F9294887102EECC01CC5508D00D45705C5E2980002836AB12028F607440A063418682A011D589CB40603E0754\n" +":401F8000E0B3A51FCBCA7783DB2BC33DA5831807C108900368490260AA0207A46ECC04188B89C06EB1304A89882FDE7EE33A00126D4DC64D2BCDA8FAFE307A90946190BBBB\n" +":401FC000D806B184B99600220AA010049DD31073A244801D371807DB6542604DA4082616B01F98084F8C06146172400EE8F6F23A0078844BCEE1CB105E1848448A81C40B80\n" +":40200000097CC49420ACD6204855351012772BD42A65E0E071334397E8BEB13D41EE868D23C41C36037ACB23F4B0EBA5E9040D613CDA01EE93123D2312EE04704B0F17537F\n" +":402040001F60FA897405F843BC704189A423E0842F5F629C3008A9F11991243B426C58EA13831BAD4E5DF79A201799A492B3A0598C882282CD8183542A0C00B052CEA166FC\n" +":4020800090E48FE24150E44D0A148990D5F7C5D0C36268861D291C37272066162090C43D1323A17422162299D6431323A9D6421620A1622A9A014E3F702C03FE2A0867486A\n" +":4020C00069E2CCE4CD109BB8E044402447AEA08D113B806F960F6120F1DC94400C45D448592C080EDBC62310B116BC9A84993C1A21DCDC020CF4370085074116051DD80AA4\n" +":4021000000D005CD0060A6380A6284083881DE07A42009CA1A77689205D03BE8FB612437F939EE7704393EF0841EB60C210803BFD22BC00FF3BB831621C380900E3BEAC805\n" +":4021400080447B979081D0D11BD4081E2130A90830212001C608EC4C25D21405E16EE13400DE192457ED01A40614406546C7820247B8EFC7B24184091E055F26CB0840058B\n" +":402180001F3D185E3E9AC340074E732E8A184FD63647EB1FA43D5E44C0E45C615C2E8F5A2F36068E2090100D2023D602C557C3EAF2511C8A8F5F41A1EAF243201440209130\n" +":4021C000FBF6C00F47AA0801E2D942E5338666D60A1DECA440407C1A181EBCA621CC1A5403D5DD34E42D03BEBB6F1F5E539C39094A020F0EED103FAAB9100383A89310BA58\n" +":4022000097E100382A873F5E55981279068A00007E1A1C09E120089A41A7AEAC1DAD400D0E07D020A28B1687543A89D4BBC3E4BA0C04C61F4B6709151A3EBAAE5C23EA9784\n" +":40224000F13C80AF1DF297AEABD098038AD89731711E82871010C61E40EF156D1618D0E2B38229734032EA05F1F20BFCF504E89805B788FF1101C930D385199F6E77A4685D\n" +":4022800084FE334F129025014900FBA493D034824F1E8F88480D0F487AFE0040F33CF0048D6088961587903BA7208C033481D3441E8D2258D78E2194DDC2645E960D13104C\n" +":4022C000E10EBC964820776153A05C0843DF8FBC079D1F08063D8DFE3AB22F2271882459821DC2B02088244D002068243D7943D87A47D87AB00846CC1881D92E63EB6F71FB\n" +":4023000067BD568AE26002FA1FFC7B74754B4097AFCC112111077BDFD8F82A20D44010154E8794C54896F279B0F55EF89BDCB05C48D44FF40FBEB1DD11E42F4008E02643E4\n" +":40234000E1593135C1E1BC02EA1861007D22C45D5B9860196C5004E2A83460754CE8803CD00CFCA62A3C16E080620C0EF298B082E6E022A609BF700501B887459F0D0F8F5F\n" +":40238000083E3EE3C9115B0060DC4202686840652323E52E04D90302CB560819EBD6320D3CFBD48F8C0A913654CBE0110151AA75F9F5F4580300A074204FCFB064059FD080\n" +":4023C000C43AF8C0A93C3BA038F36B4102CE68B2E918032AAC825E30271E6D7C2059A5167888C5824931981EF1812A0732817CC4D4099267770FE9346D260291B606438E21\n" +":40240000E0A985F00140071080F4EC017438A896460047D80E6210622A33FC648C4478E9D8B31F3CBAC4318830D62DA21D0720BC781B2BF40612647209F098810008045EB8\n" +":402440008254301CFF2E84B4385ABA3D211E874ECF280612D510895FE8EE24BA7670CAA1D9037040EC43E30380303C16EB6A41F3344970B9912980F1181E080D90ECD0299A\n" +":402480007AC9FC7A1A14498010D2293D0C462522A9341E7554C174BD81803D04842231341EF0D4D1066210EC7AD2603EF431A8FA16F4FA5DA889103A4405800FA01990BC07\n" +":4024C00019403000B8BDA882BE654120948A06CB8E2F6820C782024487929055C96FC803F431EA5D993A2480187B069DDCE036890A1A20BFA29F0BA4AD47C992E217059EFA\n" +":4025000033DE2E8BCD2E5E1458E4002204FD150A3E863B26029984802EC48F26800E9EB41F206EA23F19C3C185E858112AA672A6E206F5E9210E240F4EBB95B80442E9C93C\n" +":40254000B1F42D498573488FC01036357496390E6074388FC3B21DCF0E7428C0C1AA83203C959E8AA7294149846C471160E3A000EF0C008C978041A0300F01A754AC9E2AC5\n" +":4025800020F01FC153613C0C3F432617280A407514FA7E0C40AF233908AC8021D594A5D2A0444F043480312445C700030034810F0A198B1502A00DEB69517DF42FFA7D68C8\n" +":4025C0009E211026C80B3290FD454C82602F0C1827803A882F628694627E7F10164210383FF4363A3E344E1600B26AA1D1EB00910147EA884BA1F8C589C0BA1FD05962A137\n" +":40260000826429C0CFE4FC522244F00B530548113FBD0C628D1A302C4AA2C8749C4154925450BA28F87D0DC827090C03DC360650CA5D0F01D8F42A1A60B54C1F6DC00FA145\n" +":402640008BD03C4F234413B8143B43E47A47FC4D403C7D2D0652740913C0311789FD178C1494C5E4391D8201F910091BE98BD0D285E3E0C206474F43AF933D2EBC5E3E1216\n" +":4026800020C79D371169D05C04060FD66311E0D80FFA75D0AE55004494EEA4613D89A147A9E187A64FC7D52A6206F4FBC164EC881F77A09800480C0EDCA2035757159625E9\n" +":4026C000B11430C2085BE20FB2EFD991117AFAE4494EDD423F0AB991C40EF5B7E9741E80E0148077D0AB646074E5D08A3E6685203CBA073A832C78BE78965085DEF609890E\n" +":402700005D139A41074FB51E3F10F44AF0FA24788AB26052340D504049200803A099BFC4414BEE22A1CAB360DC3FF06A0805DA90838354848E2C8C46A1992D2188982A3BA6\n" +":40274000C1248DB22012EF4961E8BF71340C8180A81A03BBA803A24BC7A0B2C402007B6B1D1C79267F1D26A17FD1B0C43293072F427C881A6B9317799DE65171F29E5BF923\n" +":4027800010F09011BA0088FABED87C68AE3DC9CE200FA31ACF866D91A059F8C7F8BD830480FFE213E48860D3D819EAF7FA38957D50602069A6557662E17A2B5CB87B308013\n" +":4027C000BE8ACA21F86020C62E85021BB4C01F348A6C77F1DF5A6604FB0361020B9112974F909744EB990411754AB176A251C20E0FB8EC8C32F070D1FAAAEC899980425FB9\n" +":40280000458211D050C1993E6912F333CBEAEFD1428E426622291F0E52A45C0597F9C9286810DC403840DA387DFA503DFA46971A431EFD241C9F62024960D3D7EEE880E7E6\n" +":40284000C869D9A84A0B41A2A1A23BDD001D75CE5D44A022C06C207A2314BA7FA078BEF08EC0D78A2D878D3E2A1801AC7A9FE07A7E787881791488F4FFD91A235F103C1FED\n" +":4028800014578B0462448302513CD06C796D09F2D831057C5AE25DF84A7D98723D46DE80040C7A0DA47B9CAC49001FC1FF0268EBE02440E1F444168000A09BD379C56898C2\n" +":4028C000F4257977C8D933E84C21F149B8CDC058821D8884414749F20D421FA2C8C41323B067861E40CE5A9003B6F844043404DF33A38887CDB1C6900089D3FC650E2C77A5\n" +":402900000CF178B848402ECF8D225822EE1D31178D011BCAB7C223114301D00D77F9A0905EC11F13079480491E3C9E05B1C44B1C63788D81F022006717C7AF3EDF0800598D\n" +":4029400016CC73B951B68801F1C43D02A5B086308F0690725C182553182E4096103BA560412E14C65DCD022210FE28709AA12109610F850894C00150058C8E3B99D0484E2E\n" +":402980005FF6414790EA0B8E9888F1CF188C0F00834501FCFDE419E20BF80B504021CCC0E82CD2EEB0F1137B210844003F08007B3360823430198F631E97794321E57AC23F\n" +":4029C000F2BD816C43C2C03E77740731600610819F34A917A3400FD19E890988FA33D8DAF47C31E6DD17A58688306400F004723C45B90B8D90F467C2C1A039221232502515\n" +":402A0000E23E44522F1ECC2400979C45347A13704D039AAAC0D539BA10EC404A1A360547D4EAE6587114D32D0B043AAE64EC92A79FD2C7869F952D11438E2FA1C456CB887D\n" +":402A4000AA97A35F8C623C0031D41A340D3F46C0168F92B9F018F4A044841DCE1C7C2D706C5221A0B20B999D75823E25932CB5616004EBF921A733CB2487C30AC3E14F4175\n" +":402A8000BAC802B05B88BEAB0E182744B2A9E104386A80CC9072800081A25FFA15610C36421581C4F46996BC76D86DD23D920C910A1182BE8EF339905DB927E948DE59F49F\n" +":402AC0006431C85200D330187A3C1D4F464325D6B2E40AF1C1B5C3001EA0D13008540D025B976CA3DF94E3D0A1C5D56043C4A850F0B750D8C8420EE7B03EE8F52E964D12F5\n" +":402B0000582287201B4C472CF3AB42E32323C4BF871C105D921C446CAA34624B9EA211B4DFA20EC804104B60809608610C214022E22CC208FB024470E18747CB0F55E1089C\n" +":402B4000005B047D6BCE80796A7109C010347A0D3D1B9E58D043A7FDCA6203291CB902E26202007852F0809BC00FB90EC7BEC584DE00B851309BDD96F27D96EC3E121A2A7B\n" +":402B8000643D9D2426377F998FA365C8721ABA6CA0BD1B963DA9B83C4F34403E8C7326060F46BF23E840B1A9C2E265C555EB1A22CFA35F99E264E8F13253E265E339A01CE9\n" +":402BC0002B77D890FA35F90F4463978B2986853CA40720016419780D04A85886C97843CC83F723994C36721A3AE258A8F12C42E25A853A201BAB7B0824407EBD16320100A8\n" +":402C00007CF604E682E944F1053A275040EF355391CDE10741F5D70888D185E434E101AC9646803FE30731EFF3D1BDC8444F15F89793B60BD0B1022555C19F1D13E25D57B0\n" +":402C40005A5D1C225E59CC1083881F22251B1D67402780919CE865223D1F1859C905E279A3F49D3110CE203069E8D16795ECC8BD3B47AD8707C393A3E906B63CB8BA7D6734\n" +":402C8000B83D2E067C2E908B83C007A2E5DBA4A54180B9090B9CCE21F0C8E1545978B1608D13CC91083B7A189A110C2EC61F1E1A1A5D2E5620355091B15D6578815518FA71\n" +":402CC00071750C86E3036F4A50083790F36D22A60968397A3760EA041803F00A8B415266EB02A4901AFA84E44C22407F6C0B5205CD7F47691805E7B631EDCD231E85DF4610\n" +":402D0000EF23D0ACC3DBC408FA3779D024660D132ED46C9720165888960E7D10CE4C182BBCBE707BBDC8420BF58C12C9BE1EF2162EB0FB1B188F4C218D8C078CDC157689B3\n" +":402D4000CDE8DE24C8B0410A0020C027A194BF20348FA371C7C452E25721E89612327C56C09B010F61700E5A01031C417068B0992481261260E21C164386540E42440EE9FD\n" +":402D8000FB52F10760F76AB884DE2B4122DFD1B9281A84CD1000B547D1B90A1A6AF81D45C4C7F3E8F91E0058D459770510D6684E41DE8663CB67C8031250B9380C0028ED58\n" +":402DC00020C72E8FC39000D7228870D80E0D81C283D1B42409714E6104BBFBA07D40208E55215914063044E4F46D1BDE750F11F0980286E2C8284303680EA31F0D99401510\n" +":402E00003C090EA5633073358841D3C090AAB20AC1043AC6204DB028BB200931A407E24963976E53D800637611723C0800347D1D0183C083EAE3413C4F0B09881B62B1EC01\n" +":402E40004681EB63C1F09C198EA68F86BB0AD062271C0447501B11A630840039003F1A430F18C72A00055F298A1BCF02C703E7E3D20A3D2FC45E1B0348F40801716AE8100F\n" +":402E8000821048E903BB635C4403642103C620D3CBDBA23E82BD55EE2407894844093C00D09614C0F12A3040950918B156B01D5A9207E054D1133A2A188662E343003D4F4D\n" +":402EC0008E274108876A568F80AD878CAB8C1878EF30817EE8DA1E4162267023E8D8D4886A9F16817383D959E40608D4FC8D10FF1AF218FC0785BA23E95B858FD14387FDE2\n" +":402F00002007074100C1D82BE21BF1BBE100493EF0B4124C43E22C63DCFCC2690684985259041D9E782011275BD0301A4129242079AA15306BC76382201D44C78C5B10F166\n" +":402F4000C3A8857E48D82F3544238FA6016209901723407BFA584D309C700A09343B0A947484F21A21E89003E176B3D0A6E2101A00E5D463E4F3013401EF09BF087FE2BEA4\n" +":402F800044FA3DA11D03E1742911600C4301021E0F322E274840B08181210EEFD43DDCF04DF006080EE433F510F47A125DD6D0650603210211D5A4D00FE8656487447BB60C\n" +":402FC00048EE54263A2DD0BA48B4408F432910142BF43BF10101DA06AF88EA91E99A53600BD3DA982902B841E38AF109898EDD0311E430E52DC46D7ABFC878DEC880645D26\n" +":403000008C403D1E4021A45A2E83DEB44D130BC8AEA455F0A6D3F632C094A88182F069DBA62A87FE2C4611D8A8F3D03903626063C43087D18108F48C488EA14305D73DACD9\n" +":403040003F37E7184645F38D81E71942127920FC41BEEDFE9908068607A305D71A8D12E900A881F47800F11E1102801300D02E38EA9892D872C7D1828BB5E8C1321C1003E5\n" +":403080008172C500C9DC0792B7984F17A710881C280720AEFC02E15E022197C308363863C1004C749101DC08753A388804AF67E508127F588CAFC92ED8F729088E88F1DE0D\n" +":4030C00071608603BD18167E2EAA1C34F1E8C0B3D32DC90C0837E8C103267D181C88E0A43A32251438301D19120CFBC20C580557DFA7B3CB85C82A51BEDC181C90F17E304F\n" +":40310000B0C5211E82DD11E3C0BF42098EDD3BB662116BE8C0F481436BA4234C090AA9597A32F8895F4607240C2603280903A38C5046F422F454E8CC220485D6AD21C0DA6B\n" +":40314000BD14BD182E80120D4491AE31F138D1103D181C89950A6D814902EBF45EE18A887A30411020E69517A2FB058BB5C02AE89E32F45F68FA4E20DC00832A723F6354D7\n" +":40318000084A404F6597EC2415053E92451AD62F461520040DD1455BE1D4A9C5D682E39FAA42F449764B1A10A552C3E8FD92F0183901FE8BDE2CFFF29518423383F291E7C0\n" +":4031C0004E82C53F3CFFA308A527E8BF84814E926C2626D1C2FE35F00034710E04179C480BD186E468053D4C68207CA48DAF43350FA4EF88D00900805AED8320BB14ECB12C\n" +":40320000528891D26F65D41822240F2780FF522016E62821C3C08441F157498587B198117692AA3D915E46CF35342C580563D816E4A882240203BA349F02C75873949920C5\n" +":403240003C3FEC5BF10631132DE6F9847D1938D5C1023E8E188A88DF0038A39904BC837D00A80F1C81C1811C8C72A7214C80F6103D1886A04897A0D2C72D7440F13A4480A5\n" +":403280000DD3C4627B09FE8C42582454C3DD0058F80EB40191210AA6044802C688A43D1884A305D0162A289B07FE77C08266B091D5DF020CFA3104BD188A5D0A964D18F92F\n" +":4032C0007983E8C433BA882042C0E1E8C43201908E2E45407E8C43206886301406C636E00257B56D0BD1886572B877A098F222F1F4621A1D33942CDC86039945D5A0830A96\n" +":4033000004111E3F8F428753CC1044D0D26D17DDF5AE4720F2681742112A707AA8B489528703BC78F5B047AC6DE23E74E4408FDE8C4144822DBD18926E04021200219222CA\n" +":403340000B484022BA491848C2D7A4518404137D18965E71F11EB66B1EE5D21113882C88ABE932B2B48979DBBC4841C0C2F461FA85A888A9E30C6160944848604081380201\n" +":4033800000207301C8F0CD42B70424EB9602870364FF340282C02182034429ECA5B160A08422A4D70A4180A2F7A10A0A70206D01CA7E64B020A880538160C05912212F12F9\n" +":4033C000D02600CEC06E160D1E1ED020D1005381A0C0690C210A20F778970B01C23A5DB1078E0134180F02095001F9FFA5E403F1108081A81CE80C31EF2731E811B3C01626\n" +":40340000216828C74BB38FA83D51D0D38923C5818C74F56B5A013F73E889EE32FAB6484C23C4E501C250CFCDB788808462168E0BCA874F1437B40019E9F9A3007C24F020BE\n" +":403440000F14D81007AD99840108D1C54F1E99303E856829581AA7C014150421012A60615D1EB156220FD01CC4790065A980031DA19981D2AEC8420730F11E80991DAAF04F\n" +":403480008D53BCF736EDDE0691DE10EAF604B5F41700C591A60A79D5E44432C8623DCD6E705C81FE5F758008C48976434791C670468994966CF89F6C840810A040065959A8\n" +":4034C000A43D58EC3E0C9C108FCEB3A26E92087897310BDBC0D136C91EE74E2ED7BE1340D9F3A7C100C34D02400D3991354D3087CDE7846A7833B8FD345626B1A63C7ACAB9\n" +":4035000098410EB0F71340D136FCB65E3060540C10404475443084207F9BCD520286B087C38BC3E6F2F48BD30C0D1541240A60815E6C2A104C4D40B44D0780781DF37982E9\n" +":403540001E6F2F53DA7765E6EC12F39710801E6EC25403F3798B9D0DD225B4F60780B873F44D490C5CA67C7CFD9473CA3E6F311EF29F1602D1049242480C0226A95B188724\n" +":403580009BCC8986014134A6F682291BFE6F2A4A1C0EB010B9266681287A25CCC1F34C9824C602ECE408E7E1F377F091E530406993C419405E9D4129A2491C3E6CFA1F37B6\n" +":4035C000941F938445903CD3264BD891240A18D1A22005F9BCA4A303A6828706E00A4087876404B32810008B3382931908B1E6F2819D848B718503448A224603408AA4A03C\n" +":40360000021B367402A7D88E458E3E18E2B08243111220218E9220D3218832F8D2218A228093134F0ED54D2144D3210832FCD220A20C09489134C813487F20CBE596021740\n" +":40364000471A08F6488548016C07A851F12C8CB0489A23C92287A01AC478ED15510240107C90EF778134471244572C040EAD0E1ED6323619F37DC0F0DFB1F3B9808E2246A3\n" +":4036800084B64061E8309408C3EA1831E88C1108850C0471104680D2020C34400A8480BB0410CE0687C109C0469800208B141D3F5C22E100129A031F94D41202CA20CFBFEC\n" +":4036C0005C14F105D8B0569AA2E74EE18805E7EE447C0770242981E7EE552E5E0F3F720B06B099E6C771150D713CA50009F0249FF3AFD10245E8104F80E3AE0733F5D39803\n" +":4037000085512209F177B1F07B19CC6393B0802E0A79CAFCC0135B54AD2607A5A70B2C150E3642208F904E4BC62EC20AF4E2A8B26500A264795F982415DCA43879D07C5956\n" +":40374000ED5A728B130029003B92B07D2D6A3D5562900A257553589A83875990902FE0B6330BC0B37A9900E2751A218FA727040C1C4DA082FF781000B328333839CE28DE5B\n" +":40378000363D0F785DE74E314028812134DC5D5C9A51A1E8FB72F520D21E84C220D0BED24A1321A63841077097241133D2538403613847C52FC5E9D82323110D30AF24222B\n" +":4037C00033D76F841A8D88F9BF78C994BA43A082CC9A443C19D85DC5185EB3624BCFC0C64C243527C146844A35DEAC857C70EAC42FD17946180103F039A1E83E985B1F640D\n" +":403800001808101F039A1C72E892F4809094CA0544CEC974114B96E70D8400ECC03423066E5217F30C907A878044EECE1A203443F6A5A8E80C5102C1D08C63E431E407F5D4\n" +":4038400041B4B2118AC14786528FA3884AC880040253015DDE1143DEBD46C9A26C1702416FE025B1F03E38F8A160804F5750A2051AE6993E0313C1375644889A3E95DC6A84\n" +":40388000047A7A30803EA6E71CB441F2B938945955E45B00D6080278278E79201C9F0238C830F82544813F04171588080B107C5810544900281D090E342918DFCA344842D8\n" +":4038C000251EDF5A1F20E3881607E09A0CE31108A892198A231405C891D23B45644027828E69342205A08677480552B2680144F0531C90CA1EE78B8BA813E01574033CBE10\n" +":40390000848920CFA78615E9B991626F8C1345D860024842082A42D97A093F3ADEA842807E75BC709E083C4FC420B79D6ED2038C2A2E4C034884BE0566407EA525A23218A5\n" +":4039400080EB140406E7006816EDD3A1ED68710233FFCA248770210F4A490B00528094BD17009859BD443B905873C3A56484A2C8472EBD482C3A2411F81D70BAACF47BD987\n" +":40398000587B027072F584EA0CF40083E7E3E434850385900C1024DA89203866AB606353022C7A3BDC583193E2784573B09C879623C0EF949103C85B2A814C1479E7584053\n" +":4039C000B63CEA847DF7403C74044D61750268D11778F83092D293EFC5F108EF2E1D7EE8821E102913FBCD3084481C0805E040CD6BB13A7403446A8A7E5C2610480C034232\n" +":403A00004190B5438EF789887802981F6015E4A9E419484581E50EC6812CA4A289446A9514940D711C24030A41038B0621E20CD93801D195BC0944380E58319000CF102437\n" +":403A4000C84069571E301E7B9A5C89287B41E87A85C0C39EA1D643A7E388BAF3AB688206C100401E45679D5AD30FAB08886E86501F1D921F7FBD1DF182C791FD463C81E5FF\n" +":403A80000B9C2042F3AB629E756A2087D745E879D7044033E8091401D1ADA32C208A50FB403C6268037C91DC8EAE8E091605121BAE78C98F13AC967011745328865D6124CE\n" +":403AC00024890D484022298003C4F6218020284500411A06038845E063B1093D05D4A02DA9622271A27352CC5AA1A43D319061A63A04B02809B8CF4B8B171A8C1087A8913F\n" +":403B000084D1CACB2EE5DD1F12E289A27BF2800435CD03AB921E9C20101C8108F939A162AB13C8813839398A4689E048A04AE6919794614723087A867C726FC4EC22314540\n" +":403B4000976F0B0F280D260F26084F051B918220901A18110D405E4EE08069E1AC12EA2FA1F00330FA3A747940C9776C7A1E76DD2F3AE289B86B1BFDF3D422A02C150222E5\n" +":403B8000B858200404782C1402229F73B009220B05808F99B5058234783CFB82904D81E0B3831143AFF20BB722C7CC356238E25B102C76B351300412C0BF5C86093D58259F\n" +":403BC0008CFCB8C078DA4C7AD528C5690238B94581F93E55AE321102C728640DEE4994897C481EC2BFA062C481C50A4C0452A2EFB9A1EB05B1EBDAB304A2087EF13118E031\n" +":403C00001B81F8D309815054D13C390390816174C25D79325DFAC66774A8C1253028DE660219AC052F2F2A1130105BA12028F2501EBAF774B15D1014575B810D24F1C4110A\n" +":403C40003C9F724688216DF480A2293EACD519C867F0701E93D29F89833A00C05FFB579CBA3DB87D347E5A4D21080C2ED711299C484ED71340D622AB2848AF18DF173F7CA0\n" +":403C800013A789FC8880340539D9A79CFC253743DC0F3FC22EACF34C8AB9A4AC7E23190C110D604F1BCE48A6EA83C11CEE5147AB2E07A74C06C981E138B43A8448EE7D0E53\n" +":403CC000ED7050BA0CFC1E38400753AB0981E631F11088129880F6DAE092627FA5A64406DD97C7C47CC43114263102638FA7284C071206714233F546F1102340FA628460E0\n" +":403D000071004194224762769102248F652FAD3E47C49A83EB53B3194D31589105306681027666BA0980588E984CC8D31507811491157A4B387DA2442588EB23234C508942\n" +":403D4000115948765F497E8F2EB63A76140C02703A80030211425610001CFE44095A3F1CA1281C4819A508DBE6F4931BA7E444E5013C7D195669FAD5E50294D5104A1ED9A0\n" +":403D80001E9C2463E6F212F26699306A87C3D00A8003128942A01D280265E6F493D0EC8909C6A0C6A000E140A22004320412284D2F37FC880BE6FBF2204D3F37E0153D0273\n" +":403DC0004CCEF37FF9E0408050A13CFCDFC83D389870E20A9425A2371D81422A9A413449124200FD99983E3101107B270C40D254A0034D104C9FEFE5B3000932B0B3033C0C\n" +":403E0000DF5644981A9D210E542220712DE6FF42200B333680A001888802CBF040A176B6925E4B404C34472F08C2E47A5490BD1FBC9FA6B688C4B8804204701B1304D42031\n" +":403E40008C9E8FEA632720C60200A2CD50101FCB81626BD2D4CD8571E0C541B2509F10E2271425CD7899743C2157404899A0C8D1DA37632022947803CD6160D51648D3B07B\n" +":403E80008E300270089323FCE496754600B95A665401302BA7100680A449F518E882A0C820675D72459831E436230747F117D02984690992243D27A83E40F71EAD4D2284D6\n" +":403EC0001DEFBF922B45834846AE52F133C1F773F09204715A2CD5B1D8900412045F20EC226508FE98FC229A61F1A41F10450450552899A510C0990430D81C7B18C44A2FEE\n" +":403F00005B721F48D1086F576049008591495DC46A86A98F03292432FAB87E620315F814B2223543189119948A66016A8676453AE20468245421D026869264222C8A866C8A\n" +":403F40001C0597713995D580110F032F9ACA047D228342ECC0087C81953E7061401ED3E051A219940550E9E346C106B8D86174AC28F477F1EB0D858222E211830B1840F420\n" +":403F80006072B81105CE1E570435F0054041E263330579C514841D0A08584302B80484488EF382E2A1E321A86918252243C78775951C91CEC02033D48BC708210A3E19DC19\n" +":403FC0001F43101E14C20D42CF3816365B247A3D3A01CC7370118501605E1986C1E9E10142188A238922609E2A9E02E8BE30C418C6338D8388EC3D90042914471264B133C1\n" +":40400000E702D92A4AE2D4B9300C73800018C5B3C0CC1EC423C0CA1E86C1CC2F3C0C61C0680205A0CFCE04E415A85F0605F381ECA10E05B381E0A2068DC0DE71B8B00AA6F9\n" +":404040000692C0DE6AD8B0078F6221E0520F6229E0510F6239E0507483A09867813C3D8E51024D7486B97147B1258EA1FCF001FCE04487A18007072811DA3EA12307B1600A\n" +":40408000F02287B168F02207B164F021873143B117C8F020AC5455A44780FD125DAAA24780F10A8996780E8A4651E03732330F01A9919A8191918A785D760C047E7023215A\n" +":4040C00072251338F0159A20CF0153234460C050F3C6708E27809C069CD4743CE040406935086D01C0903670280C640242E47885F05815C80442B36441D0D30D3F0294088E\n" +":404100002281EE1EF427894268851E7019400F27B10E4304DA9E059187024FCE032E9E88022D80666069C40E714CA1607B98100301AAAA2F6759944074EEFA22B866A06A7D\n" +":4041400081A0786C0E041E7029480F1EB384C44F3C45FF56B420198806A80E079641094042F71F2C867AE3E3EBBCC1F6E611C2106A7271CF631810D1C78FAC2A045F2A0AD8\n" +":404180000820CC3D38538240053C433D6FF0FA91FC709080BA7492DE37B5100CBB397A82C4BD23FC4690B58DCA0011788214B0948104289402EF8781CC02F0EB58F285012C\n" +":4041C0002803DE9E18114C90C690029FAA9F045347C6C0C627920131A027C4089EA3440422484D0286609518D882EB6860602B50304A41FCE0F05DD21A667111C81F590AAC\n" +":404200000F67A793023100501800076F0C978D54858605D0CFC17987D692E87B2A38440F38D935628006C0C0C3A34F8BB2DEC4C1287072C770BB08D20083E6A86C42F9FBBD\n" +":404240005900D40E0181CC1B003473AA81103D6AB43C4E3841304379F1103030D0DC9E33109EC25E5A1781100338B2002601ACB1872EC65E11003440D00A64C54C40D00A88\n" +":4042800025820114025CD6801A594D406804BDD2B2897E19F4F562410E6F208408699D84D1083C907A3D5F786071FDED31D100C0C3D8251034D38972EE62E3A445C74A8B48\n" +":4042C00079E9AE870A20E09B441D2118F5D6C17B52110BC18418675E845D1C472036D01C41C5C3021C655508091041223ACF42084F047AD210EF1E101346443B48617AFF8D\n" +":4043000020ABD8471E529A7656834CD51C3D4496404F8FF0C40D0A81E2021880A150003080400433F56B11C181AC349AA34F82EFC71D8894C7001A7F03C3031E1BF83C3A88\n" +":40434000616231F1B7A10C7C8DBCC63F6FE91F316610CFBF1F10183D4730A8BC89AA2F285E61EA59F3257D4CC880A2688B6B2680B1E775010F404140D615FC668A3D088A40\n" +":404380002055C4025C008688A9E49971F3BB6A6050B5147E6DB51F3BB7200509510626A3E521329C444D4FD46A4B7A8E6CA0D31213257D4768806268876B5C7C3C8426029B\n" +":4043C000040426020B4F51CA3CBEDBCF00E540110EA0D50E558386C1BB60D9B06BEA3AE443453008610CFBB3A13147A07790F51C3184DEBD5A47D49B45EA3A46BA4C18BCE2\n" +":404400006F44969088BC9B4065A221A7A97715F51D335DC3104FEBEFDFB9CE701F30F798103604420F24D847DA9E6364E00244260C0F6CE20981E39BF2344E3CA6043D8439\n" +":40444000822020518F4E01C346DE620589C0E63491344DFAF91F56290F325A137CD03802116403F14728C40764A6081A691BD0A3E826118828326240239891B07B89BFB9E2\n" +":40448000451140229A66F30121A46F602C082234E483180518813101A7D0902470146504CC4021872726180180242C0C1339B06F42900076D5F014027F8BAE8B19981A2613\n" +":4044C000E753D1091689E3A7F7217833F072489A66C7B021058EB6C44C2CEBE7A238484F077A88447904C6CF870B47C04D63E8A6131E824F4A7091AA689E4051A46891420F\n" +":404500000797AFC714480085731E71161200A540D233709700F222053E625820D8D132660002465C4CB06C81057790CAE4B9203A9A6866A031B958991D202CD04C0484723D\n" +":4045400006917E7480DDDA943E797F16020354C00545504081F014A9C5260A93408802048420183D101E36B01037ADCEC48EF311E15D2507680DD6E825E623A296095C4255\n" +":40458000881E25BF44021E826344B0244C0F3FD6A052F5FA008026F79DE204620383904875EA85A303FCEF12979889D4364C09D4180066726CB9268B9216189BA68130876E\n" +":4045C000B38A08780939045C94219F6E6C113C115F30048111C72FCFB86388D01EC80F157B89A04A033E7ED42007C5C40801E03067D94AC812085C44639796014AA6805BB7\n" +":40460000394013448C247520C240089E51DB1D06E910469912711086B913CDDAC41208BB89C8810363A6E566D2A1E83DD121898083C71AA90F0071A24213210200A01A084C\n" +":40464000823E5F8B19004788FE879D1F84D9040792E8AB080AF080782E39812169BB04B81E42E35C702E0A005FB7E324B6F434F0F303423888808BB1CAC80B05FC08B62194\n" +":404680000F899252104832F8F2030D01C0DBF5BD6094604725EE118F8E920824680DC5082758E0680DBE90631F55339773CD0F5D4B8819D265220C719B412A81B280B8012D\n" +":4046C00034C9087B86504A2E55CE6054C08639E02E0CEE382A6029B431F885344322881305C5B25F1ED9085D1946240972621C280D07E97E621706274A02913C81CE00F8B1\n" +":404700001CB86E8E013C9A1010303B617087ADA434420238720BCE621026E503027A7A67B440230608003038BA137B620C42C1C888D3218883E348C21C44EF063090E2212C\n" +":404740000FC6817C080F4280F462946248F2181AC22146157999ACA8421932E38CE447F0B89EEC6BC1860EBB551871D48DC859DBE1E4780ED716200E1E990C08654F1779AE\n" +":40478000EC1756CB10AB70808844823D5B3441C0708F86608838F70790ED8A641C67FE0824084106EE343D8A8032C1B8F044AEED38294086F950821BE444082C0833D73F68\n" +":4047C000041ECB0BB1850BAF9711EE56A2F349F10963E084036BEB8AF7C1F2FEC27BEB8D75BF017988C92EB7F82E9BAE2EAB88207344D48F76B619708EFB3E41BDCC021BB5\n" +":40480000F855C0783B60B0C52410DCB6F2FF810FE7D8FFD86E430440CF73B4220373FA81028F206FDBADE45903684300D05E7711889C5106510368762AA8F82E107CCDCCF5\n" +":4048400045B0605B796730C042E433F65F2282959690340C03746F2401AD0FE880BE5CDC2F2E048821D743C5C9CF0B960E1130859A08D62E4960007A0B2207248C48E10377\n" +":40488000D74B2830C72C222BF2489B180963847B033CC0FC878BBBC59F5C0D0F98798BC5EFE260F6F00091E529C85280E3D0CBDBB04452F981FC7A39E46FD80E627C2C0086\n" +":4048C00024E8186B9490A0C07C0D941C9B888B8140B8197268040F354A02943C27FD110E3E6AC52026930B35EE16BB027C0B25BCD59C60499D1288244F8192244BE5204071\n" +":404900009F0359154BF29F88F54E60847E703E18E1003CA2B021EB030970667AE4A88B8F313A16308021CA50FAD561E7EF311D7C92D4419F8F0F8883F6730172DF2103BB56\n" +":404940004B14886EB2231E64705C90584993D8010342A0CFC194C4021DA4782C068206015DE31A528300349E439A31881E893DE7D81127BBF3E06603F3A28895C065AB076D\n" +":40498000C06EA24C82F5B904C831DDD4821F045E8CF421B315A04D2560E83486BEC0774ADE004D31D35B05E35122ADB02E4C163C7A9225C80A5D54C004A688C6698C7E5EF3\n" +":4049C000643B6288FA1397AC7B80ACB9B9288BF8D18893188BD02BCD6408887EBE001297A3988445F358A206C0DFE541F2008E90CFA35B101883343ABEF48090682218389C\n" +":404A0000D494FA560C71C187648188967B002060B54A10D2340827E5202334D0278D7EC7651CC90221F31B4C0819AA8CB950509206B0904375AAC8866107966BC886064096\n" +":404A4000A3FA14BC2E182309EC876F5B0818438032730D948952180C028DA9089559E6220D014694298045A81A43D660C90C0E52241006814592BD3EA42C0360515494D4A9\n" +":404A800007C76F9A081D60B0277CD0B85E68D81604340DB61D6C2425A8DE0401566C2020CA46400341B84E81C079F40DE60688105D59D112047E34CB50C07E9D40D1F40589\n" +":404AC00041F84CF8695983E007A6A84801E9F5D1303926A4923D215C60465808880508040092A19F22723F30CC2590D05A64C1F31F518963C6C2942763399085D3E8C5E65B\n" +":404B0000AF65BB1528837C70C2078208ED3374C0A880DFCB2C880903A68034CFB348FBC2FB04D0404D68DF04D03E8982A8983B32FB84402408D344F8ED03B1390BD108A11A\n" +":404B40002809B284662F8982AF562031631489424D144C7B707C4653F629589030C9A28C983B62D96183110290983B9D14883149A294983BDD14A83189A2990783A2990341\n" +":404B80003A0474022310F5D63162C71F309EB68E3ECEE292E6A188D033FD22005B03219FBA38113FBCC5F85CE884881EE1301EBADF4BA70BD00884600C422E3CB42E3E6007\n" +":404BC000B21BD380C3F306098F897970F0982ED6BC958C801E69064A860958389B43917439935DA8864117A796C8404744A862223ED293260480C50F082A895DE12CE20238\n" +":404C00006C2426D031E01A623A018CAFC163A5E18B2C387C97F83A5A92E940A1105AEBE6D1D4161725762D4279729522EBEC11E9E0F1C57E1A1EF1304091BA621F5D631183\n" +":404C40009439155E428F2F72689B0D5FEA053048D00887928B858F25190823E4B002F6EEB088C1881EC08418F7E0A1792BEC7B1978C2F0348AB1B8F92BE91EDCE943991570\n" +":404C80008F6F1220250EA78E3DC407B1EC0F074131887BF255C0CB001313031004E9219814A0C754745E4ABA20087B4361E710740418BC523E20D8094700488E1220131346\n" +":404CC000A424098A1063E2CA812F7CB8BC3E4ACC64655B08BC952667100FE4A9243C94EC6022980C5D864CB1338785130460E96F02EE92043CC2FCF2EDE10629B7D2E78637\n" +":404D00003881E5F607E1140980F0D013498E9EC91F306416C4943AAB311C881BA846E460128A2994672299C27343CC19E45C9493411A42263038346F799268012C401268BA\n" +":404D4000022C7BACB4750A222096201934001620245080A9744030B25880E7F865890C317618EE8636F00F28D88781009BE8B1530A7CB64638F5404DEC41C2860F2011174D\n" +":404D80009887C436F58EB8F4FD191806986B234BCBB905C80A461C722B458F5DAE1303294402785330A4290F1E2557402B961452607C8C407E4E24D01A21594C0D504BCBB5\n" +":404DC000C3E81AC10660D08A3E3505107CB60580B1D822303BE04CBA6F644442E0E4E85F02C01C272602E12819D41D0F98320729C90C1800C8081264BE21D42C4644338036\n" +":404E000010460D9DA2844B8A88E84444C0582071D48F98300FCBD808798330FCBD84CDFE03D8A34563A03CB940BC9B5D2FAA85E1C271003E03BF2CE1D127F1BD06B2E90F39\n" +":404E40002F4F89825D03DE781F160D53A3B35B4483214263AC0405429040833AC832E4A18D22E4D01E445F2FFA9842040BE0103C6B9C04B82B88643C22EA225065D2471396\n" +":404E8000E5EC110409E04FCB8645D06D05E07081F2C7B08165759D43CB85A61D12E0A689BC40A08BDA17C407F9D17489704E2000E3E947CB152262F867CA7DB9CC3E150EC8\n" +":404EC0001F2F6D180832865ECE425793E3081B548858948F601FCBD9E9836061FC111804EF8DFAC8CF0874B523E9A962BB807CF3063D2C025B17C8D4AC8185750E02F4C97F\n" +":404F00002E0CA2E101F405959FB6200F00CC065D752CC9825463A30D6620F5D452078281F83D0631089F03C863E9EA228744F4EBA522893107AE9558BFF8436B9350EDB08C\n" +":404F400002F2F22A65F24527979051259449238187729D1585E0931E0E7BF3889210903007911FCC46443DF8BC7847BF302089A046F97FA0479374632ECC6B22060AB0F3DB\n" +":404F8000036898DD63D645EE0AA1BEB00A5EC737163B22CC42037FB82748D11F7564E22C794FA0890EBC083BAF00D31FEEBD22E427BAD8893308B80A02E008101589330FBC\n" +":404FC00094DE09030A2C5DFC01385E12982339BE3F8744D84BDA9C42090C22CF5AA18821EB5072098088C035872F5F97113C0881639065E5E4411C86A44E26588205AE6B71\n" +":40500000B62018D01D04CC04660177D4ED2447E1E501FC65294E635C6623CE0CE102D5CE099C3D80A528CE0B046081060B042081016A22F2CAC21E56201F2F17094B9A24B7\n" +":405040003DDD3638B2A09F29791D48F8B5AC472240D32ECCBF2CC411200A798D2058B038CCE181E805335C54F2F1597363F133BCBC52645A8114C0C32ED1D25A026997CCC4\n" +":4050800017C898A52F977F47CBBF6D1A62314A08F591C8F3CC59044744055097CBBF488261100229937DCBE427B1897408128691E802FB43684083C036EBA7B20288A0CB3A\n" +":4050C000CDC5C5ED0763E591039AC431061D69BA8823D692A3AD241C08E03146174705089DECD0E2D8C70C70D19091C03F014234681B23FF41908FB44A866643324043287A\n" +":4051000052D89A442A0282A6FA3A9887E33CBE02079317CAB0656741054F000CA5154D10709900C9910BCBC369780B64582E8CDA931619F4529882DE5E161150903112153D\n" +":405140004A33009041A1A3661ED9302F304425AC9220D34C408F2BE04814211AF2F4923E56162CCAC2EC27E2D07817972892EB1AA1F2F1D0F89C884010289F20BDAABA40CE\n" +":405180007EBC5C48326EE540B8140431F85529BCBC6C26993B3C87978D0A42379643182DC8D6CB5110241F00C5E34758BA24B7978D040E2481B0815009CAC7106B5BD23EAA\n" +":4051C0005E353F2F1A25E5E31500F2981B0815496684B3029418F03AB8B0051DD703911DE5E3244A5064964B07F845144812DE5E3344A540144F8D28C48E60B84828600495\n" +":40520000F8CCAC496702950E7D5032A0299323BCBC62894A0E12CA052A09603ABCC234FCBC6465C9305C9331E3E5E34506555F2B8A08C6D94AA003952196711236E243B3A6\n" +":40524000CB444428580189D088C0D2031064401A02CF7AF1A181D0CC1B5C15ADC0F2078E82726D8CD8D100F0FC081DE859B100C9D01754A230800293A876FF1899C118C1B0\n" +":405280000A5AA5A2842B9580B5F4B8D08F00EC8C0F0084E9274E8074172425A645A40EB2070790F39AD6892D2C2258022742543D465832D306D4270160030207AF08DD08AD\n" +":4052C0008A1972D981F745D9738AE1F5AB5A0037AAB206E391F5565941C04794FC20715D22002876090803442D244093A004244AB3C3604C1F02D719F8040EFE43DC4719D3\n" +":40530000B0121E7A2F2F30958ED47E3C97B9424B9AF48F6E8F0807E606D222C604BB2A7A460360D6073C872A443790F58BA5DF8BBA6406183D2346654FA7364401F6DD41EC\n" +":40534000768E38DC2207EF6DF510FE029B40EF22811394790F6B9C3CD38877D305528103468BCBEE85E5F6F2F2EF829E577848084337E910899E6B5C7B51709A22111208AC\n" +":405380000D2C74F510DB9808A226D341810004220402227C293434B84A02E461E651C89EE68872408AE156A470BB90AC40C0581BCD4C13C4F4E52C85220F409F965CD891DE\n" +":4053C000A4198BD475421390073F281C1017C621E246DCBC1CF6B645E20426E4A4A2128F22201A719202080A74865E1D6C21D83240DF000FF38BB85F04E93C01709BB802CA\n" +":405400008AA0A0020B4050503EEEBE016070144ED22C8EF184A1003E9A5E2343B00BE6B3E0D91247708BABA724188C1EA564123830038269EC3629F10880522432F6DD12FF\n" +":405440003896603274304A6D6B11741E90806688185C182089F1DB04A6489AA81E1B04588042D000011AA811A281C4410042700005F759114300147E900494705460F4736D\n" +":4054800051E01410F190588020417F63260F27DF230860163CC24A5AE4E202C1EA785DEB663EAF07540E3FB90E40F53A28FB26F84EFD8CA0BD939C5729887446831CD654EA\n" +":4054C000824130F630FBA8C87DC2DD2087A54704E9018D1EF7151EE3E93EC4D5108005E7A4080704C74C308985EAF152F07DF0823E13E12E93089D00E99A241102009D0490\n" +":40550000278F8DCBC33A620104A469E0010CA6E81B75F0065E19502ED1D021E4C005C7B1D816C1863DC9186388C5D6E225CB8087579A210F7E22097285D825DAAD822877FB\n" +":40554000C5D8922690E44106E410B3E025A1177509E5A41411B8810E478909ECDF64050240DE8894E20BBB63CBCA20667F4517398B13E22C87DCCC019FC401041430F594B0\n" +":4055800088CDA4EEED2ECAB5137634BDAF522026CE7C4049E5488B5FA42094D627C23AEE02E57225A547117BC1A8C4049A40DE833CC0C33B035861630F0B62169D78B55B4E\n" +":4055C000A208F483C1494C1B46F082E896429322C34227880008E9F513A978E190412008623EBB5F7C465921D2410244AA10F280C4BE4E96541D2E6C5422F4DC2252908C82\n" +":40560000A0AC155500440104E44A04CA4112824A1481AA0F14A0F632D08C22941FEF37F1EA1FB102C7A093B3714BD1CBE3D66682607B05C100CB9EFE237C10F561EA82D132\n" +":40564000A006111ED7E09B5C86CB8B215DA143C470020BFA22BD22043E1C3D82CA35FE8774EC96BDB0B0B51E4CC081860320B100CF2F343CCCE212D9086304041591B2E00D\n" +":405680000102753D2D8CED60302AB268B406124CDF4221D6C6705642035482A7C5ECF951EFD55401B4050B7E91E8077486E882E40873AB0B10F47808BA8F94BC86CC209CC3\n" +":4056C00094871D20018359C263ADBA1EA0331A144079C5105B866CE50708176801F4C2C8FB65A88C903CFE068E0E4F5443B8A4039D87F989E7BFB4001356A090340663443E\n" +":4057000067CB7B119E0C42D36415B848442F0BF908806D7B56BA7CA5202039B04FF8AFC87AB6E906AF031E6D023AAC243DD146201754460901C9FE512B51F66B50F28232F2\n" +":405740006181598EC4C112A7A50244A90630B82805FB6314796A1989D9DEC2037891184CD214212EC612942202CF72005328BC82783D9FA63CB7A08A62ABDC37880D219750\n" +":40578000AF429439832F1726226B07E0F0400800539984C4372B2F3E983D101C8619FCB05041377003962A6018712E078D9A8453238381A7A5F74C00198AEB93C792AE89C3\n" +":4057C00064530CA051647F9DE43144057B65187AA10840FC674262F57650889D034C3D8E7E3DA39C205807E426C1891317C396E243F8E7444102B98024CAB160847A42F375\n" +":40580000326842A2B226D02BEB46D12A081024BAB91A0A428409208E2D92AC6F2300487901CA60809210C79293D416081B60004607E03801EC0B08CCB202EDA03F0FF30B79\n" +":40584000D62A02520FA72736E11100D1043D73D6857144CA053744782063E230162EB683FCCFB13280165420F99E7AB949011803258D9001061402AC8B8207486347DD622F\n" +":40588000435B235A83E47A316AB002B156F0B5B217F584D04601788CC40680446884728793D8DAC421CD8A1074A0F65CD908597A07783063DF1F0FED11A20C9000BE3E60C1\n" +":4058C000B1617685A880DE7F2010347DC0610009440681A7B920229BDD79B2364C02F8613B803EF334107B638B2BF4C21C407F39CC267C81A4358F48D102478360A10380D0\n" +":40590000723432183B6030A94118414220260D41F34A50F29823284204414313C82DC41972D2150A3B4DADE2CEC1E568C472D1B3096E163EB1221F58F897560008BDE54C82\n" +":4059400049396E2042200D6EDBDB1AB6003FDACF6367F1303C6BDC39D2C206ECAE836B42D5DE99FA196C0FCA5B0873A5041B3441C20017F3AB2153423579F15890A07791B2\n" +":40598000F8470A78DB4801ACFC440012140D01AD320300C01C779530DF4C00B97486B35909F02FBB0010A1A64547871C300C164E418314D502861367050C5E7C5842487EFB\n" +":4059C0000080E1EA140A530006224321029C2D430BA5590A9D28680D06B8D040170680D04C653F897206018094DA0391D377A05001F130F09A232018014416B0FC462D1C7E\n" +":405A0000689ED434BC85B6228645C10EDE19784FA7C0475860802A1972C7C440D2AA700C278012A1E38FB3313B518CB9B2699C58FCC708C8008029EA196781081A3957C060\n" +":405A4000F9EE20EE70035C4C25FD6AC4808A42871CC388492A8500302E9D83B3AD443AF65BD9100611000278EBA0A08016ED8361D6CA8F72330825B1390F7725979DBA84D3\n" +":405A8000903FCCC1C002217A885C40BB0D0EB47487833E540428758D507848D48163B45176FF70F80D744E924415D669240592FACD14CD9027AC3607D07EE3ACBA2F1022A3\n" +":405AC000888D2823482402C0A840EA1D11AC200E876023632231ABB94548B90F47109CB910C0B24A4443378540C423F7690A07E864A1919C80144104BE01553B32012028B5\n" +":405B000092038055C96F4FC676E45004C7580D391680087D96E639A2821844078DA20BC1BF25E7B601043CD9125E55CC10953C87853980D256C610A19F628B0FB1468F4374\n" +":405B4000C897B2DB88D002326F048B0289E098C03400626022340062C02334006F6C6D14C0905DDA9FC8E0F820341CEBD5E20C840F6BD5931EDCAE1EC0EB2B58863F880838\n" +":405B80003C4B0439EF227C906410186B065D3EB441D763EE899F8D904FCF018608D1EA06E103644261785F90BD4C8443E89871F8105C47DDA5A840B3B65218B5A2C8C5D8E5\n" +":405BC000BB05DA22E6695E207A6391E55F04019CB6501E9C09210F4AE820173172110CF00220CB5D5C3DB64A7DB9D486CC705ECF814F55F28B024002410E01465CF0E0FE35\n" +":405C000002DA702A8B53C05925A43C3C610171001F79168241E44C89F4805BDA47646B1F44314BD677E5E132D115821180860C7C65A021690DDDDC43E0897911A204320567\n" +":405C4000BBBB89123944EFDA728498287CD31020E63452AE8010FCC5182301AA761A27612A3B8F22A162301AE7590C358FE2A94E301A675765D5880A3D8A84A831DE9B92E0\n" +":405C800022745D7080843019DDC5244A83C0DC308060C865EBD6C40AEA10270B3AD1F12A402043BC1988082868681AA6A91A02811D0AC63E9D512023CCD0D2047403C49345\n" +":405CC000BDDD168E3D88A5A5D91422657774524C12D53E43B811B4E610137320B1DBCD2238F6206975AD910F56BF43BBA284C24C0F598C061DC0DE2A0028E6F2ABF035BC33\n" +":405D0000CAAA3D7EEA32501393EEF582BD44481F2C4E8F77449776A8106D1889826B1723F06B8D1C002176D884049DD0606A96C4A8B213775BABCA255A80F604128F902805\n" +":405D40001B4F9DFEC582607344980C903E9300A203C403C5FA0F0177BF1407BADD10291026DB11EA22DFB6261FB024DA98C0231300032F8428501E40E42CD000116A6F3293\n" +":405D80003D81C803A4A9F23C19DCA7F0F75B419EC44E2FFBADD088E238C12D4F9F31120809DD6EC59AE82279E005F75A5A168E8A3406D80A5DC2874CB18B00F015D9A904D7\n" +":405DC0007CF75A59787150BBAD0C43CF52280F67488C787642F21210EEB361EEB4B5811EEB3D431828B21E4709869F81294591F52EEB59501ED6A5C903E12EC315CD0190ED\n" +":405E000009AD60CCE832741B2743DCF2243CC09D2011B23F97203EA270C59F49930877D9BE0549809D0F89D0731408CB1015C092D9481CECD9F37F0F143BAE08C76521D911\n" +":405E4000901CE00E6C0009B6CF06F70D52E775C395E43790C3039749A618C2050AA00087E7E0C1107BB87CE93882A7E12000F875CCCC5EDEA41217CAA7821AA009787A1C13\n" +":405E80004720AE4E605F40210B03AA010B6C21E1E9A272337513C242F513DA02021B66620078BC192A6C8FA3E308B1304BD2E0E20140CB7EC769820F300843CB13F25C9D59\n" +":405EC0001EBD901007D4D5C5B0808803E71062EEC4E4BC14AC7DBF7077340859DE0A08772F72C1A1A57FA0E77B0899DCBE88F562E25DD8C078046415F090108544FC884839\n" +":405F000068212CBD99D08848CEDDAC425931A8671EEB6F44041F53F373B0B8306979E2C858EE79E2ECF2B1EBB04204AAD88B1F3B9F969F847A20C8BBAA60BCCA7626475513\n" +":405F40001D1E75D8C10821B21F90202462752A950358C4EC3B6400D2B81AF6D3389E1DE9844091A182DA813E719440692C0D7592D0F97D707BC9E4703F0C30F7100082DE52\n" +":405F8000C8F7205B99131841DD6E4981A377BC292592416421761C2FBADD4441EF28853CED72443043E2ADD1063C40B25DD6CA3D886A268143D607E24A6A41901E3D9B6200\n" +":405FC0007EB8EC1083647C209224F1D6879368CA50877433169EE0BAA88C41A942009449151264B5DF66484BC4B04752742C6CD3A2049A1E9B8699315719637410264A5DA9\n" +":406000008E74204F440A16A1DCAAE03AC2607DAC7043D931EDE0A2EEB8D400B1C432484B6425016590359C56596C843786021C9C0B6100150281111C2292884FDA0B2608EA\n" +":40604000117B68E888B08205793704D922C9DF1976082C2561C70EC4AC20822060840AF65ED11A436788D704062090F39EA0909E1CAE2E92D61003D83AA4381315C8628755\n" +":406080004CD5092042C40F753497939A489D63992C880812F3BAF127463CBED22EC0409FC698D3A4FC43C26D63D53303E3F983133B431871DA0438E684A1CEDCC442F52EA3\n" +":4060C00010F53000843E12B34043D12391E66C9B1E2C1812BB3254BD02BC32502B8203AC05087D878E23C89E57080768085C905A1E411141E02014E82201063C41E83ECB59\n" +":40610000F0206B667013618E83131003BAD31733A85850706683393FA20680A2191D2619D40EB0121048144E95CE00C7AC82071F741DC08DAC002B2E004EEC6A32411F191E\n" +":40614000D095ACA0F61649D023D628A518039821D54AC571D813A03C887D4F665D8AAC460488C53D45294A1113760281F547D1771BB89EC23F760C94890F0AE14F30501E21\n" +":406180007CD0238F0E71903081182A307C0DC43E120B118CA11808501B95B415AC874130225EE58C3DE15D3DD74C625919DC7C88E5560897A0CA112F2AF044BC958912CB23\n" +":4061C000467B6EA8CA047030010A028164F801D72A2206756778F700F8F7FD90F75B1A84E8885D77614103C090FDD6D943D559064ED251EF1F020487A04443ED5BC409D11A\n" +":4062000088BB91113C090F8088823CE98A4D8094B9441500843EE3CD2274A01D432EEB7E23D898E8E08110FA03A440126420B2117669C881C391641019842DEFA0661040B5\n" +":4062400051EC42DB287AB21CBDAC2E2C005DD6F67D42E43A4542F5CFD1793420BAD6E8FBAD0CAFFA03F5BF759493801DCB160ABBCABB96AED2EC6042EA4BE2861303667085\n" +":406280002EBE172C81839FE5C82E4000F797D10EDDE49424177148984BDD618D0F487875F86D2443AF75861E0001281C7677A1F0F2D090C30ED8EE2208F61610C310E3DD30\n" +":4062C0005C03E768216441D8CFCBAA6A87BAB84CA6EEB0C44A656F5C358B889591DC58F9C460EEB0C5C824C865F759B890CE0432D14CC8A66DE7CA7104FBA6ED0340A6036E\n" +":406300003408E3D9D12245DD083D2C922C026130281292E4314599042607683C8883A0DE1F298D88E011E6000FA741C5816C25000943002313B60691F3841A00100A4A0C9F\n" +":4063400021CF806588652E078ED2351DA300711C003D2531E8DDDA320C712A4F004FB7560F99DD0ECBEC5B047101E1B52320637909B9096C6E622D826618E025F756DB015C\n" +":4063800066D2F23108ED1A22C107DD63063C247F2A24FA3DA84FE79ECDAE12548020EE901A9A02B7C2CA0269FAE4244EC902BEF18B10023CB9F6B080041775829DCBD02410\n" +":4063C000F5768097DB37D8F758290FC88529D80F0582040E3181AD04C8F3AA32038BE852EEB051EF2382055C859028FEA9B20350BCE8032F4FF9220401C19639B1F108F9AD\n" +":406400000387A1606476F74104DE9C33202031F3D861F77608E00902AB291C823D7CF08E075761668C0C0037348881A8921D493084026DC462206B10440509E0839F0B8FC5\n" +":4064400059B10885E004A1063AE6F0F9C210F530B10E46498620F8787CE2847016E2D2EAF3C26C73F1CC895A2876FA71103D4DC63B7358E34680380BEE2FD2094C0B31C4BD\n" +":4064800061300076EFD1793BCCBA6DF84160082AED39F20948CAF5009441ED1952EFD642ACC2EB5501114EE27C090EC3007BB0BD8BB5760C2B04443ECC0C1206D44040EC76\n" +":4064C000C503DB3C7278F84B584653DC85C6001CDCA4484E64125B25F0F84E484F015C76328F015C0E3FC9110C093ECB0CBCF1F38EB0F3F60102C49ED8A91F0C3888247E07\n" +":4065000060A30208E0EA756100877D822CA60021BC85B9550D001989DC7445E7F8C120BC64C0876DB8104C2C601E2CF1A10E2FB62E68825221B87040100D0D952C70B50498\n" +":40654000980EB32FBF840A870852A430311CD01133AF203100A38FCECB220254896930C403E64DC4050BF919222D922209B2018E24D0EC25816228400881220861D62282C0\n" +":406580003B8D1B2691873339983ABC6101081103C8151582D829B08DA800D470401F73CA88894DCE8B0300601A101A1E456F11440B0242110876068F0138093F4B0EAB9EED\n" +":4065C0001CE26100BB0D90431A7264182691069C87B960704A630015200FBC21869C9006049B64018480094B998B02D48040EA360DADBEF91C1D0010D081050C1A5E430895\n" +":406600003F4B8E631C2921D9A7622252E7479201002C752851E3A5213440A1B4B4D6068D320ECF002F07099CC820811C430C1EE15D1EA833102CF120045218E102C17ABE0F\n" +":406640000AF713058EFC071ED26613108608A968FABC94430F172B9055D3FA63CD3F4802F4E9A082674FB704CB1C7C0247501DD68382297AFA5D0F2421959887B968C4C103\n" +":40668000F630189820A9D3DCB4E26082874819AFC1114BBAF712900D251F1FFF8FBB8C04050A431383D60B43E9DCC2B440EDAD49FBC58859E5E5C252FA772880D0FC1011D5\n" +":4066C000075347C308C2669EE6CF8061101E0BD1E43D02C3AB6095C4643B7ACBE440331821F1F311461044A1D46FA3E5CFB108FACE1C4050243F00E6040C540594E05C1180\n" +":40670000398074792F40A3E957BA844B774328C3389426020175B2C54DC3421A7753019E18B8772AF186D4594090820EB3AA8828B3D8847E7CF21EDDDE103B45583D684A50\n" +":406740002677680C90F068FAD184418EB2BE12AD0063715A2F31F1081470840691B9BA2E088434064388C71A1DB36A24C0265596C00E8124443F0CB58B0039C47FD6008156\n" +":406780000011C2507651A91E27678DD7081C012085864D633C1C033DDD525DB3263E43321C6A31B0ED0ED36A462ED2D42630E17028131B1DA10E47C6D7A258D3A0D2317A36\n" +":4067C000CF147049C6CB3E3D655C3392198645D62003CCCF66721EF93F160E0D5D1135320886887022CECB4EA4437B6E84687177AD109303978DC00FD21A05ED0B72DA69A8\n" +":406800004BA06587645B21F0B040D12B309788B106256A248855185691060AC9606103102C111E001F12F08F8903C8D8EAAC41EDF6F12B8B00639AE7173A0510641B2BE116\n" +":40684000871C7882234615512C21840848640C00206CB1493BEAEA121001B2CA14401409441000D966A0091EAF142F5A4788365AF81738CBA8318F02D99DA1304BA2D90EDA\n" +":40688000A7AB116ED24851B21C472F4A81881811F2573AE003D3DF5B04780114EC4013810BAB444A82102E890D5180B400807E293A11380B327B2278478ECF702EFE212F6D\n" +":4068C00008298E59116D78B3D36A739346354C2C0265996C068F05AEC96653B17A15A0411EF28F292980CB3D65D4543D09296029096001036DFEA00995A5B797FD27C189D5\n" +":4069000043301E1BC1007C30347CA84E6B28712D0D8962ECA0060240966513950D7E4133B79E0CF400217A30F86E787AEB1463C42B3DBD9C0A20C01F20204CCAC20C1D6DE3\n" +":40694000B43220134082FC8310C21F41921009D5EA445D9C47910B431EEA9241048132D2B2876C339EE26C203CC606B5F8847804A20F528E0887DAF885291F26B20B8EA9E8\n" +":406980003C7B3D00656068069BAF089054750EA5521300301A4F604A4C8D4831358F3ABB3EEEFE10C00C04CB19D000A20C30F7BDE084C479E1E84A41EEBA3114BB313469E4\n" +":4069C00093B488A85A1E6BAC16C324C6D0A7A789470A68537021AD0AA75B3319E1ECCA612CC8010FBB9646A19299113400AF0063888345100249320003A882602D5205F1F0\n" +":406A0000A421C4CFE84C8420D11EDEB832D2F28431AA0549AA6C1E00B8265916C804EC80E28961382A906CB7B3706C38E3D87663842CADEE363202D90D8E7CB466A278032D\n" +":406A4000470D948B73D61A8E7A662E84E819621CC33841BF033209B3ED3923022634A187B579CBC917E3EA92A18702D0803C0521C028A085D6AA840703D408ABA910054034\n" +":406A800001399010AA6D1105007D9779C30DE385410C1D2E461843064132DCB6F71B616E75336086A85976FD58886E1D7C202EDE19631EB70D3A084077305E1A128011E04E\n" +":406AC0009AC1002465BACD17AB73C4AF2DBB92AC80204CAE2D903A08D871F12E20F62170C58970010143A84118806DAFB92852E71BC2309D0186CB26360840555F605E26C3\n" +":406B0000C14659A213B2036A00ED0655F66432400B012A423500059D7BA1B9A48801E83689F37158D4E1777DB8B0068348E53F0E284006011EE40290446C0C3AD8C84A1052\n" +":406B40005B15716FDA8211FB505C826F5C900D6A941804DDF8F03DEE54245DC0A3D8FE240984B56A403CEA8342584A211404A6CEA42C04820051E9F1E1093D72222124A440\n" +":406B80007C8390205D662201A800673202362005671410905582207C20987D83E820BFA8694B1DB080C0996A5B77090984A41004019C0431E859FB4FC8CB8EB6BB23D855CA\n" +":406BC000D9A8502DAEA113D84FA9D1EBFA51ED7D61072247C4B2A798023AF3D22C7BC8D08F02579E4D0D2C01D11EC2152EB76F2F16E60E0248202287DA70C5CEF8879E1FA2\n" +":406C00000867E3AD92A68E7311310CFC4F1820284B6563AC041A12FA6CE4630980925254D0986DA640F7000AC48DC50632E02A20C01511296B0066E12033F89768030C0078\n" +":406C400086F6E056B951C13A3EF9AF10A0019E8C014F6303163C2A5632439DC7075831862848A35C97D93E8445EC9BA1108712A3BE4C0A1C48309D09F8C0D4FDF25A38C1AF\n" +":406C800062C7C05DA000FA12288F443BEB38AC1E409955E042410D404306CA043C02798352415F105B6810ECE2A3E0E724080439C240D96D00193B2C8943084009647F98BA\n" +":406CC0003E8639440C0107B0C4A04F00118A41894039032E7E0BB01CC6E11CCF81D488D2E417757B889C3F1A3EBB94912FBE32C6D2E3810C4D3EA7511034E0083D9B826021\n" +":406D0000A1A0330D439636381CC6306C74203446C45380641FB2E10423C7902478C41C1E001F691599B3EA7C91B9F8003BF44CCA3C4E503706081A5E74F71EE36C13C3C857\n" +":406D40000A12698ABA2D23C044001EDD4C40C0E8876ACE90BF318F2B6899844045036DC1D1B51C0D0011E815F4FE2188E30080378A4393185B801AA02364F804E8024610D1\n" +":406D8000CEA1D5CB22F4070A7A39510EE5C582248D10E7C51E8780640C0DCAB0402204E0F70EE10FE3067C198274B429607959C0C74E7304226781550874EBBCE3CEBF31A9\n" +":406DC000369C97A0780482034A904052034A5040D3B964BAF2B08DAECE4033D88FDDEB8B61F619189CA41769BD09069C68F90ED4802EFEAF21A26F28F000CE543C8BB82461\n" +":406E000023611A1CCAA26CE81D32C044001603806620DE34F9487CCC61C870BD8870758614D0030A418314E8997DE4D220BA0217B9F0CA287CBFA2271B1E5224202CF78CF5\n" +":406E400003C06EBC28440CA5843BEAB90C46051421601A4ED5D893208A01151344D943D50FC6473B108A7E936F2A2220F0D0790EE802E3A12007A084EDBC7170A3C18716A2\n" +":406E800030E3851110351EA7A91606B3A4723C6FAE16071C2B84E2702464906808417411B941021DF9E4704DA0C4A02E090DAB28A403A7201F06F40975D0D2840CA18F8CEF\n" +":406EC00030EA051A1053079960EF2A065221EBC6A1EC15718D201B66931233DD86B3B34F91EFB7C421DD3BA2018625027A4FE54A4E5F1B218658497339A10C3A0D68F942B3\n" +":406F000024EE386670794AD0726A04F630EA442FC473A44CE40267C66ED3A51723B2EB30F68D210C04C140106E380B75ED1182418AA5A3C0340181BEFF3A106C44F2BFE1D7\n" +":406F4000831D40283DD7443DE296470131B56C1782CDCBBB24487E045828B76F81DB2687019875D2A0901DC4927E0C8D1F5D85975E7910E64559FCBA41C840DC4442068D48\n" +":406F800074FC6A300182B4831600B086CFC58F8C06371A3206EB801A98062523BAA404D03432A38418033D259020D94B7F203005E0FB1CE324CF33E3091094A88265296D7F\n" +":406FC000E18E53BB68023014E808FDEF62567100F0C2D8A744590D843F73F30D9C06B204151AF0ED8F5C509023D5C1223C6E668367021E92D776991BD778040C95A40030D1\n" +":40700000059BA41FA1B7076F7111E0B42001526020BFBCC15251000769363140B0860D80224DD00C1527020DA4C10DA4FC4152A020EBB30220375A39007AEDB8F693A1058A\n" +":407040004B08A1EE5C7160AC486C57AD3DC582E12EBA0B160B44BD686843833D8A585DEAD45877820858672C0841640560E0180700C8601C80BDB90CB0CD082FB504161F16\n" +":4070800051F1197086462F43A090444101E027741B1799DE52F5D660831DAF5E22077300213881B00276C2016AF10735D67B566C7D61F73D9EF688E1B81D97772C8900060B\n" +":4070C00096C0C9C1BBB51FAD534B0F3C66B0083424141DC27A44175B960B1E57E01064D9F562510403C0AAC588800218B123A55200C01215D6C86D3EE201FB8CC0581B41D6\n" +":4071000071CBB51E084A3DBC46742051AF5BA011238D3C30A095C78072778028924138B0178863D96A138B3DF49620A8062204E2C05DE0AB72116207C6B2842353C5A9C176\n" +":407140006DD74876F9388174C0BC7BBE8B011000131A5BBAF982D8AFC4511B417F72F310DA2B0F41A1A227F797990185D51E20AF79FB218EB7CB1D9984E11D112D4358B158\n" +":407180007E60EF4AA2651EC218E231754C58FBE9D0408002D0C6051E26DD07113FB623858A06F2AF751410E7E3E2531CCF8A8944543483118812A88792059B1B2E0E51CC10\n" +":4071C000EA08FA09AC6A1C828301442F6414100CEA344801E0B530041A0CF544A6600345A141B4F40EDF6E4091185020097ACCE84121F0A070048842810068408A1160A015\n" +":40720000003C402C5E072A4322F910F362564333A12C35080E011FB53E8812F3BE20C2876CA28EE2B633516E8DC606CDA3975643701645033A23A3A66200A40063C51AAA24\n" +":4072400031C10EBD181283AFA347166980A4DE824458604A63C1A0827401BDD9423E23CD3D01D8833E414D2D36891E0180121EE016004CA4C5BA7DEEF420083D0C5EBEA0F0\n" +":4072800020407863B2A7073DA0BD7850200F804D48F6F23DE1077E0579418ED13130D3C40304187527A89843CDB0C050EEC732F0F9D8F2A2E9F45F608205C903080381B5B5\n" +":4072C000E783C10AC9702BC016E5DAD36402834078500D79658040512829DE3EC76D87106812F5BCD092E358E79B40416F595B885A7B8184B85438F55EF8840171EE64F74A\n" +":4073000067B98C4051454D4BB863842727C06DC0C4410EDEF21F173408142B4580E40513E53201497BDBD6424F810E42128050090905802FDE66460C77DDF14E820A82B581\n" +":407340008616FC01F2B2C6E040F04A60F6DAA25BD74A00D94E587B616C80105450280123876C1F2B22C05D6C543DAC7E4049DCCF49D4084087AE0E84B004EA9440108FC641\n" +":4073800050025D8447481162F2BB8E3C952335841DC6A820A9860965B508E209F922708F7013213CAA944010445ADEF707D185820994F84F83BEB18483A0420192E2574417\n" +":4073C0000C890A0AD864003F06B60804398A06D021EC0D22CD2E1B2E007E0013C068760823270AF580CC1000DAA8F002B6EC910147A34C7A3586A068B80F76DE5110CB8DBD\n" +":40740000D000FABD5064805323CE060B82038D67097270836549600C1E445D361012A8C7C097D20000D308F7EB21552801D3510EA08708251F40210DDF8169A2EACAE1001D\n" +":40744000AD36F27A8C01202D38A9AAB071F63C8183A5E8C3414FC549E3E976B108C750087524820C6AE014FA5E04483EB64B236294903085A460C302C0B873A1C3E0AD137B\n" +":407480001DC2034FBD250BA7190C0BEBF5A1247C1BA43E2BBD1054702800D9880BD1406DBF0CAF0700049702BAAB80445A405EE8D1164013402D02062B8B0A97944168A2DF\n" +":4074C00007C90965D899423460BE104AF201F236A0E575881A37926418DB1290C240089BCCB09EF76C459342CD8409080B34D02B788F0184132A6D2020AD53974EF689A321\n" +":4075000018901004CAC00C29C2430182A1236D1B3F4C84860F9E7B47A51147CDF68248171A7411D9EE8A3CA60100BCE9D03E800A1EC19A4372282EE6442D0B010965E9C049\n" +":40754000489E4289EC05CD693181743C537220414E020215861982E2221E41AB1EAD2720124091E41CDF182237854586BA801AF0A8C980F1A91E27A79677C44ADC97458E64\n" +":40758000CC9211AA89A60580A00E8FE842C0203B010813C029CE4021EC11CE62424254A04E3A6460D8491A611AA99E4030F3390081C124ADA2CE39100AE182F21830F59BBB\n" +":4075C000E483DEF6F718710046BE8A5F1862EBF701107C285222167DE988005FB98E88D1F7B491B1E5F3D1280B6F3D2610157C415C621EB3201246CEE3E4807320462F0AB0\n" +":40760000749F92004B56603EAC6240F4F165D901C5F0A0785A2080E340C01CC2A203DA15C33110EC5C4C2607200FA0D1340BA0904A00400EA53028D2F2712888B80C44067C\n" +":407640001FC40F2DC9A38C9C02F0C77070500E0C50D895C4A3DAEB44AD257B26D042111006C9AB1244E002C1701811EB94811836659222009F7DCE978B55C4983D8018512B\n" +":407680003DC89180BB18460164E7F243A9F9252CBB8264FD2A9642081437F99724402F145D89040E00E18104610C5E5C1010089A130D326BCDB1A5D9AEA3E28CB1368A329B\n" +":4076C000E88E20C60F36C895668917E487B3A640069A0497B4290772CD31C8E9CBF412A07EEA58A1E80A61B5F8F7B110F7AF799C24C766558FA2378401288B5064D8F54AEC\n" +":40770000F8863D587826810B2B532C3CA585E419F23A0F1EF5164CD721903407C0274A8E3B04288B6789CBE657320C7AB3C8862400124412EB2DA1042EEF130CB104810E61\n" +":40774000F4FE93546DF719D881E48825A10A104BCD46C2097797C9764429794EAC8D01B7BCBECC04F00DE17797D186848821E34EE2D2C80ED5963DB4463D714525FE5C00EA\n" +":40778000F8016C8D017077263A126C8D01876888100B5BB220982E300EC08EDCF6664A00077984176CE81B91A02D7798391117264B3D334222BD96864663DFAFD9C5800B1A\n" +":4077C00003F8823D2F6C3D81643E573E11480A11C2027FC1A8E21077985A45A8351C46A8980C17D73F010A2077986222D428B868F3C447E849A2BBDC24654B8182FCA043CF\n" +":40780000AE3D4443F239D20030C218F3DBA42C001D048640F200112409418803D7D909164091A01C82003F9EBE04641E062EEBE62D47F948407819630092A7A8F56BD90542\n" +":40784000FEF2D333D38556CE8750490E8A791303D1E0640715559E1DE666786D80C9A852F8043CC1E34417E8521222420EF32D43D93CE5DE9A43DD68420EFA89A0B7867424\n" +":4078800040538431EF17821D831003CF4F846883A6A811DE65A648A40B5072E9817904BCE8B857FF0EE8485E32AC433348C4BDAAD0400D1B30E00C8D07A20041888F797BE5\n" +":4078C0001EC408225E83C044BE17C421368E40426D88B0B3CA858C9C410987C67423470445E23DE6108742D09023E006E124019CB5B2B1281A27BF79AC8F7B930EC8125DDA\n" +":40790000EE56200779ABA22C28753C7281B9470162B10A4E8A64E865DD6D82361E15180457465E979490C7D6D4A2681CE3B756E48F7939977999A1EB4ECAEF3343318D0351\n" +":4079400086BFC0D6387BCCC9107521818080DFBCCAC4B2EF33154AC522A18149E493C2EF332549C50268D032E6C01D48BF122C0880CF79701748120EF23281194451F6C540\n" +":4079800010B01C21E3766260D730897013B399CA87179C41C402EB75E110076EF33123251EBB671080F12AFADD687BCCC0800358B7EF32F4C1552F48238B5EED09160A94F8\n" +":4079C0008AF605AB02C53D6EEC5DE660A89C968DF07A7E74A879942A9DE2EF278965DE65C874DCF081DD413022F1A24FED8B62368004F9B208779992DD659446B92BB28EEA\n" +":407A00008F4DBA0EBFC448D3D810EF33443C9ED02E5B93121ECA20420C0AF378A8DCC84802EF3313DEE7C618CA94F718811FBA18B101C02A2BCBFEEEC41EB82F3F391F09DF\n" +":407A400003E0FDF4003136CC81DE14C979D184A9881601CEC44433590F50663E687ACBD1A44897D71610E22D7B973CBDCB9A4680EC6EB1B2B288EA89A0359201A9A03A6C44\n" +":407A80008B623A14050766C48D140DD170481103BCB116604FBA4C7BCB184B24086D0BB977962975AAC09A23490230770251894538000C77962A20116218841DE4C85C0F09\n" +":407AC000E0BD67A03DE520B07CADD2E262688A739B35100291506077946B8010C334A18E79137831F7659AC7D7877D8C3A0973C7D1EF28E4C5451EF283308FBCA004C0CC13\n" +":407B0000721007BC9B92C34E4E01D6E490411F793588FC0EF793610143F4EA0C1143383FDE4DAB4200664367DC0E109000C0F2F4A420827DA5F04F137008044260175FFA05\n" +":407B40003A84F1F45CBC9140713C100041374098118C0CE7BE19A01375FBC17C058E24A7B4F587BC9C9303CA68F21DFB9C58FAA974426D4D80F7927181E47033BF3F1B004B\n" +":407B8000D220789C0CFBF4892F18CB9F5BB021C06A8B80D810965EA3DD97C58118B62022D17F2413701B42D90C04262011EF2EE212F4E38225F80EA0B5BF0225F01A4282AE\n" +":407BC0002D0A308965633DE208801C73033EFD0843C63866071B50E5EF2AA1EF2684040C3F05DE75839F0C8F7938240015618F46B6242B063B902AA1D5DD023A851BB1F8A4\n" +":407C000082E0BF78EF8E3D913012EC09A12C72E58AF06031C0B01AA4880607EE371E93112200D6EEEBC1B12012C3D77761880471F78F00F68FB9DD3C05F90A201101001540\n" +":407C4000DE3B060BA81EC097845044BAEF1D64CA04F6FF8100C720A370DF1F0652161FE0600332FD795D3DE3AE33118286815C9F40610904E8582454F78E6A6D306F9C24B3\n" +":407C8000093C291EC7210BE68C53EFAD920944208449F036E4F78BB8EE35E5D8EE82009C6709B838CD246E0E70647900DE692F21C41BC52C07800E6D641F9100380363882B\n" +":407CC000766912BEAFF0105B20E8480D1AC0805E6DBC208BC715480005D0500D8F450105D0DE623D9404103785E008205BCE5123941C380B841B3D8B050CA101210D2218E7\n" +":407D000082607BDE070428E9B50125B0350F7886A607E8E10761662207BC6887D88223D859C3A75A1037AD8407DC5AE2048406878491C478C854126B0151896388563901A9\n" +":407D40007D583C860464445D88C0418F6605A0181320798C181C0388577B908DA148801A006CDFDE225F8F02046A1DBBB738F71AF1017BB60879E800B0708263814040D3D9\n" +":407D8000A0EED84361B370758331DD33D3B44B4890C90B1F26BC0B1D8B8A23C0D811759188EAEF67CD8423EBD521DC49C7B9BE444D364B70241E068A02E48BF2DABA06C638\n" +":407DC000E3925882C7C9DD03827400738375E4336BE054721840DF7E4E902A10123DD95424116C86CC562501B0119E20A9D4539D013D6C91A21EF45C8D79FBD461804F63E4\n" +":407E000002C8306988044E7B9480671FA54D87BC59CFBD328BBC7ED4B6F89C0781B8DC61F78FD247A5540778FD88380B2241D8E0B39284C338B76254012EEEF51E8A2D1919\n" +":407E4000C9034429B97807914D1EF1522F27A489C0C0E6816DDE3E420DCB1D0452EBB5C16FD1E7C23075F530F78AD9FA60244E060723C09AADE4C575220CB8478CAE05894E\n" +":407E80007A22582DDE3C689A407D9D025C1E03143BFA8700123DF5D05D64C6213150CE41216010419C0143B745184C5A3456236E601E7BDF106A6C3A1248403A9D2DC9D0DA\n" +":407EC000BBC43C410043D3A5E3D60A445D0905454D96EEFC400420889D75B0211D4DA5D12F45DE404223270C6C880A822F5EAB9F7901901B46530ED0EF2014778491EC0AD6\n" +":407F0000B1ED06D9F2A6F8957A3419D8F48A713B7306C5023C6CCC4042587A38CE03C80A3A8919488053E08865D091A798130F9F518FAD6548009E111C5002220CFF521CDC\n" +":407F40002DC859B262D0E5D698856E5105AEFB12D818E99344030D7CF247B06087A5E38982DD005014EF0FC4BBF46CD8F086B8EF07A37ED9F594E8803E8EA22D3E78F78705\n" +":407F8000E9026A406A68A976BC997819B8BBC3F481736C7605A28BC1DA85E89EF238001F08AD11A06B7787D95A3CBBC3F4BAB3B44051C86AEF0FB431408617511ABBC3ED0A\n" +":407FC0000C46420C02E67300AF6ECF08A26919BE61F443AE0C44021E40FEF0F35E75800CBA120D3319CEB041C8024B1FE0145B74A8F5E5D4F8A164400EEEBA2B9942CFE29F\n" +":40800000117787B18543EA402100829FE04D11103BC184A403D172A45A900304A00F0263C2248209EC7DC20BF6BBC0923D71AA6C903D66485DBC3A3DE154983EC7A461C4D7\n" +":4080400074EBCAF1182C9E86BFF8ACA038354052F0A2589A32B4878089580565D698635B212C369819140613C0363409734783850E4C1960EA2BE5409210345367E1183276\n" +":4080800020BBC400401ED25A2C0D9018E8184761AF110FBC414814509D8872D1E70C491EC6EF779111E40183E87AAFEC44DC46C340848263BCEB92F269D94EC238D4117CB9\n" +":4080C00005D66150FF50880472B3011403F45DBA03002E007798B258074A5423878261446DE7F6E3DE1F07BD0511A03554B04FA58120CA9E83EE234064D170900278860727\n" +":4081000007787D2004954186C18C87959D87BC3ECC621D814510148E59AA2FF5DCC975DD18F787D0F8357C823EF0F83ECC0A161967DD7625D982085C6019E023DE1F07B78C\n" +":408140007E0823DE1F23060083036265A100A209994E3A8EA55C06AE023C43CBE91606E97ACDC0A0E63C947045BDF3C9A41ADC94551C1DE1F2C8FA6885E44F8D4208607056\n" +":408180003CCD30B379AE204FA30AD0EF0D74FBC3555194D1088D208A6548D30893EF0EE6BBBD78E6113C4E7344189B8416523ABBC34111154841C0808778941E44F238126A\n" +":4081C0008F02217B39C889CD01A21DFADC97789525A5AA32111B9E8B02F170608260BCEF0F644175204FCB1C44488ABEAB0222A7A2698B44A654140DB9BE24087787C969E5\n" +":4082000026CBC6B3264861521EF0FC1F808A25828800501C8F22E54688EC09B937FBC3EC4DFF78A811B19BC461FE78811A064781ADC8981347A0B3BC4048EF0109811FBCD2\n" +":408240003C844340E82C084861119210907530EE1E4163B43445C049484541DC58209812F6F3B2604ADBCCC98133000130270F4167787DA2161A4597787E1104203D01EAEE\n" +":4082800085101026802804FDBDFA3DE184643B05E1EC00F78621804548817C789716892BD790F5FB39941DE18AD75BBA1072028FFDB8212780FC04092008A209F7873A7EC5\n" +":4082C0005903100BBC3A502A820F27DA15ECE94C86472FB0B88C05AD40B979C318BBC39D713B657C267CE1A28347AA241980D83E55D320C1AE3A5EA4008F7873260BA00886\n" +":40830000AC13F69A50B1DE1CA81A43884695FC41DAE102CF8CC907A3B9841EF033808060B8E408A1964E7DE1CA610A9819DE19C968D44BBC33D139FC50867DA6562688C17E\n" +":408340008A3509025DCBC84701427A10C4B63442208D71689F0809E048700C0F41F88FF596089E43D1A02BD3A1F5FA317071C9ED0DC1F40870F46EA902FAA411343B43D0DB\n" +":4083800043B04FD2ECC219542882B8A2CBC86605E0D9C2D0FD964541101D03F47D5D1C351B023E427086869877ED837114813D1752011FA9510F813D8D5B91A01FDE54192B\n" +":4083C00005A2150E65523BD56986D29100C92070173107005EFB43112F0C0648F502BC002481E278F2C042178F001012E07D0BAD8B1B094C65DE3D6A02F7D1957700183135\n" +":408400000711855C094598C1EBFDB2F828548051007FEF42033401BA8C441A51EF13E6742D026883379D17789EA603AFA02240869C0BC860582EF0CA4784071E05026060C3\n" +":40844000472138B21D0B126160702C2221C17090E0FF84130685683DDE2B461980840DD622C856913ED80F020322B534084ADEDF943010450C0A04FBC56109493077A81DF3\n" +":40848000A90201A0A4C034008D939871EF40130845881468742CDC96205C190020C9FE579620633DE21440F7A46E17D61C08088E1460603009841E0530805C5A6E80C41817\n" +":4084C000777522C3D702502EEE1423C006D0508F770799C2601EC5E1DDB52B8E4420FA33487C26A427E900298422778D4F844901414404EF0CF90FC15DE39C08206E82DC36\n" +":40850000741CC202F8DAF0430E9B931F003A91499BEE4C1EC5A7310E1F06AD0C597BE39CFCBFCE6018FA186E088A0541878B6A8F03288C63A890681D8069AC0D75C15080C1\n" +":408540002447A5E50983AB74161DDE80478042840883E7165206770B83344E5D4AA08845D0A1ED92F3140F0017C02E05E233610F80A3EF01E876F2497057F29524041F49A3\n" +":40858000806108605023BB6107D3A54653060AE440E05D69B0C47ADD19D0A8003D846344CEF741DA1A79628B43A3104449E94B41F2EDD8E3900020DE06780CB1E3AE0D9A3A\n" +":4085C000107BA3944BD25BE0C0313A704B0FBEF14598B0C750246148C772A88D3E01140E397180C0EA211E2781A05E120504B40BD033DBF6424F033B0221FACD646523E28F\n" +":408600007E4308BA2E4940085FA8C50093B91C668A07B2902B0731ACD12B02320809020D52AF3D18885CF4710A3A7D74481EB21F11CBCCB723DD2CA5D77703AABC23033BD9\n" +":40864000C441AF0AEA0922681463BCA80A3960783928885E08662054A04723A481EB0AB1F140A0819EF00B3EEC1B1C0081BB590836371643A8C7709412DEA6D13C53C00CE7\n" +":4086800021DDC0630C04A6CD3220823A5AD20547825A958E964D007C792401807478820A6400A044508827B146098EC5B4B102396741D85E173E2E8BDC2ABF064201365AD8\n" +":4086C00004A761B38C50825E287A1052084163490EDE2B11389A0833B088D71F09A2849F02771D7110F80A610E4000F0367717AA03C81DC0A584322CBCF3BB250880690EF2\n" +":408700009790813E17C78901DF46880F00713E15F01131D04089A3F06098E3730EEF0E5380DC101C65F7793102891A2345D7624C13E0593210050028601F7876E86ED201F0\n" +":40874000CCBE1600806819D9AB073E5C418BA84BC2E165E170A202061F2B4308BC4CEE4663DE2CC44C8185D260C8420484DDD2EE4408E02401C6D03070778B22C0C6FB563A\n" +":408780007BF16132071150E5DE2C890F20A0263A5470888881C392E753123C291C25079CB50AB0C007032E8B0ACC001C08C7D232400136D201280131CFC286A2059721603B\n" +":4087C000E45547946002A3C94C01F77BA1826082152A226F4BE60FB76F842014875EEC8E2F4E091622082E07D03BAEE587CEF027E828020085E037582E40D1E00D8282014A\n" +":408800004220EC33E22182821142200F25175C7F91E5BD441006685DDA0375ACC8031287500A7300DFDBBFE219888098E25B89BDDF2040A27E0B3A127C0EF2FC51772A18C7\n" +":408840008126883DE3CF813ABBFA0A7BBE38CD707122049F0469501E01A657A100A287BA2C118310748AB9F074F8C2061C0CF78891F0A42100054440CD5F70DEB710426615\n" +":408880006D59480158BD08B047BC4A8B8A2C904C7633DDC8C5DB14840CFB5DD84001719DAB88B6E5642DEC201EA7F90180782DC11F073220040DA008A150E221F89154BB94\n" +":4088C000C76D08E0B098E8D1441E0934F1E5DDF9E2088208692A899892B1C88003B1625C04C5C19BD8EFA2409E404777E7A5EA36B12AC1EF2C760F612121EB8CB428481E3D\n" +":4089000080359A4A4E2671A20216209EBE48C990C143B83A8B2F2845A0C040C53A17B500EE5D04FE12281B0C904A2C04A6B78489C4D84014EBE811649738C8408FBF4C4847\n" +":408940002ADCDC8BB5CD844D00094344CC26441EEB612C51400507B86BC0D232882300EE0389928BC772A201677D96A45C4822642366C961E7E0D100CEE238D030FC249806\n" +":40898000448003EAA68A343C248C64063522BA94066B730007D73483ECC6322E0E5D5A90979D8C8087848CC581D0E9CD2012001B018D12E0ACF39258D0102E085F242E0FF8\n" +":4089C00084958FD6B1A527000FB0BC473A60BD6B144391D3DD68E4117844387C6594470F950C44F62D8E3210F22FCE3214F534BD0F4881CC417B69AC40A09CF408C81F0875\n" +":408A00006209280615E1078462C8221B90EE26A2E1004368B8B278086301F18410361FD9104621E8B01081021001F1730083042302211A0304DE11CD1EC6F41B5F808418B3\n" +":408A40007592C09D24274944115BE118D4013522377E231244092D5C01F1B83643B589A41728417100613E499F78FF8DD7C008909BFB60E4678C30033C80D8669500D3B99E\n" +":408A800043C22566CCD85BAD78CCE24682DB21B0F6CB98F845684B74624C1B0303D28022DFA60492A38F288F431311E822510846F845784AD02A0C1822830181428E200494\n" +":408AC0002878462898D3A18D1A02E53D903C4161C032018DC3FCCC057C231490D139180137102FE118745BA46220CE0C854A748CD86CF136020F096EA00124012802500469\n" +":408B0000A00940128025005DDC5C89920831A11621B456403B1881A41F5E46E390101A2100401345E64447854E47C0AB03550440D371635DBA221D5516BB6C4401887A2C65\n" +":408B4000442AAC1AAA448E4FC466625700C06134C91C974FBA915CE1E12603AAC2139C0B34FC24886272441940BA8401ED0042743106B71E9C9B0D94421613A91E26CF847D\n" +":408B80007C08D9F08ED0F84764BC26BC47807B82C0C7C47B3A9A7B8A80FC28485E14302F0A112582B884B203C7F90A06E4278489512090CEE71F41048DC9C17858F43341A5\n" +":408BC000747DD104FDB8AC210064186CCCE33A8903D20CC20AEF6BA46802BE13B520281A06460F090C91C33F9085E0E882BF44365F6110100BC00147D32483C17B0F794FBB\n" +":408C00001F23CE8B0050DBB44FA1B0E2881639061980E4367AFAA4B0540161D6BCB21808196A47DAFFC7B1B010D05B8D23BFB80A84BB350741EC5508C7000FCE9D2207140C\n" +":408C400057CCC14650004608619814423418744AA3CA078B42164C60D29744AA3C732A0B2186C00C72647A2551E36D502D931984A5D12A8F1A0A6010032632594BA2551E88\n" +":408C800031550D59318D49744AA3C9974D0A993187CA5D12A8F15EA83EC98C1252E895478A4541464C4C1CCE4FE4CAA04B26308913400C347DA65C3061C3D2C40C480C5773\n" +":408CC000A44646087A2D4458051205540B619843A24E8401DF150B63B61840F63630F0EDE1007876C0F49DE4C10EBDE87DA0A13041E9A84163C89945EFC43200BA8BB88A36\n" +":408D00000D87A11340F7DC9B92629F0F7B4D1021D30DC3D6948B8128006935CF0EA2F2370E90B41F311091DC051840CE7C78814081AA761A476F5134245C145EAEB220783C\n" +":408D400075D2BF09FE0F0ED9DA0273F925F4C20340E624440217BFF48884EAA351390184CE44F78B68C1A1A6E5960E552EB4B67963A8BED502D600C7006B8039C01EE010A6\n" +":408D8000EA2F55C115804A715410EA333598041B348C5EA2F147A8C248C356305B17ED8BD6C5DB1EA3072348B9EA30854B7562D5AF517B2BD46124582B15CD4D22B2191E36\n" +":408DC000A30813686394A203F5184994CAC5236289B140D89E6C4E3325C0AECBEE2020C6AFE2EF8B8102CD9107AE12840C2E6A1C0162580DF491B081C901E5B2096EB1AADC\n" +":408E00001207CC71E8800CFA4B88C2B008A1020D122CD023006E69E025005DB3D719A418001BAF10F5A6E110E80B8AEA2FA2189DBDAC7460302A1867F71104186C2B64061A\n" +":408E4000629150D6128D513AC7895815E5F7ED6F2E0B0301AE33300B0220912C0682DF0141892C170F607F94C148DAED12F11E044D72B082BB8BD0F5A61082DD27D23E8CC2\n" +":408E80000410002BEA2E4302C62060A043B0CCA487F24BD95F521BF3891B5BF699756B49016234708D4A403302E870F66E5107C38195D5AC4613480AF6200A77B0922A80CB\n" +":408EC000B06A4E81A0237934E87A8BC0EF120034960C36E94129EC3020F8F00A1014583C577A2405184004213A35F8B14F01E45A6BE3C409863018F42FFDB12C38E1C02426\n" +":408F0000E987E5B4E28256615E12D11DD290BD6F123E4A5846287727A2C32C2069D88821C4F504130B19E98761004182E140010689860008380C6E7AC60083CE20083FD740\n" +":408F40005F05D72803C6D70B34E8401401CE987A3F32DE175D723CAA0C32E987A21112EA2E62E5B53218DCC821F745F3087DD18D821F74642087DB2D80F7FC20803BF5590B\n" +":408F80006CC445D36748B0020B1D5950F2CF4714086BD34B2801039E9C4880C032542002B154E7DC9F02C855227954029B0818EA2E544C09F9E6642203753C6101A570323F\n" +":408FC00050304DDA644F3512E0C22BADE0478288E1D6D9247738F05A92EADE93DB3F4715701EC631A274F4C3AA04387E4382FABDA2BA182210D7F01992182990C18041C0B8\n" +":40900000CB152B4F00274F5465E10001030667770F188A0168210B6185100432080590080224007F0CC9883DD9EBC59A96376E0F645409003D0280943097076F929610C5CD\n" +":409040003C03D0A7E5BB5183004E652F19F78F91FC07C64513B1AE0ED6062609706377D090FA46F042204823147CBA0C81E5D5E2E3E9B0031410F7BB48F917A8B86FC8912C\n" +":40908000BE7FDA102366B02F2F5909E3E799E238C011B4C402D800C83DC06840F1ACD21FC751D86305C880400F058CC2400E1FCC203CDF2405339F6F4521ACF13A8092EC9A\n" +":4090C000A010FCF16681EA6B9A16812DEB3C40D29C9320FC654843C16A0C11002E46C09E27CB278067E432121A472F095308C609C9C00302C2FF5BA2882BDB2D6335801C85\n" +":4091000077023C24907B15A4C7D1B30BEC0E617FA1E1C4BE1CC2708F83EB0F572688085D8903C06A0C110C180681270504509670703A51ECBF13ADA0F1D3608F0138F02391\n" +":409140009A44717626789E0C7BC8B840928482053DB85C37DD8117D38485F090A8DF20044FC02A08061D7B3CA7163A9CE3C2D388081A4908572C07025F12FC8D023BCB5CFB\n" +":40918000C0901050C81D1014D240DBF29EC0C18704A21154163100116430BEC1037AB7044BF29F497B8760BC8C3C2C143DE78E3E9E8C106780BE88B85E945D45DE3EC3698D\n" +":4091C0001087535E2530B9E6E261C7E8037F4FA3A2497615B955C0748C3902C270220197660176020F23C8F21781434F96548467D91B4485F46568F8B44047A0F4BA300D5C\n" +":40920000B0107B157A4BA08D71890F2F0E0D0C037F287068501AE2C9A1E5F9A1CF3532A0D2173A46F85C0772E2772DF6BC441DBD4045036841DA244428DCC7CB5EAA7B9C4C\n" +":409240009985603944144C6586E80041449604886E8FF11CAA51007C456D2C82177737EF2941D1890878048BD4CC7D5E2024811B71D01FE412026D3E2F09191F623E8F5262\n" +":40928000080882997461E885043BE99842F4E330F5AE798C1D48048E05000BCC06006401304C82EC0EE1C81D3083BEBEC7A76447C334254F000FEA429235C2D2E00E21C478\n" +":4092C00001EF48D02070A9DBE2C6580E0081AC167988B86C2906AF623F889074931EC96F2364E8F2A33205C9183C831E8B9E101FC2E4020112E048F3D8A583DEE5040408EE\n" +":4093000041879767847903CAE050D0083DC1447063B4A6883FC0B6D31F5407500095EF93E43A8C895601DD8FD04051B7839916DE0C861B28881F2686081A6623E4CAC16075\n" +":40934000312791E60FF5B67F0DCC01E16D2220AEBE43A63810BB1900380CDBC7912119DE630FD9304753805778786CBC77704026DD1A40793417F5B2D8DC2E165402C80270\n" +":40938000F581D9125E44A01030F606342983D778624D79FEA87A609C418E1FA28114061BD0A46B1C9D300C5A80F1278181811EC2361387B0E94B4442270023087D5B989957\n" +":4093C000BAA612B2E919B100BAB73593553EA47440D234E18810E1E3C26B1A30E1C1154BCC9F8897E7B3155A1DC2563D48D8B92C0278C92CCC8F6DA1A1D343066374B3A8E5\n" +":40940000888EBD59883D1C1324B0CFB6180981E1745163A7BC56EEE751EFB4D18201E84025C22258A8EC1CE2DC190BE004D1308BA0331408D8E840FE9F09220FB20384C0E8\n" +":409440001E04564B6023D7B3233680C73601700392E11773A511C041F12F62258452F40BDFD0C4C32ECACEA4FB1F4EE8881C5F9C242FC08227E84411CF871D915447B29732\n" +":40948000CF4E433C80E1D2D8045B0CA028F217F8B94110340E0BFDB5F68E8CDC7CBE082187B96B102B8E8C12C3E1BBD1107A92ECC8129501E06229401E9F231DCA988C0821\n" +":4094C000E1189210D9044A00D041F49939B1DC9B020AF4D3C200AF4D3F1B00DB067280F4C3C29AC7BA8C89D55B45D3500598EC2E006D8005F3E05601665686678C96D2A399\n" +":40950000EB6B7440D1A82FEAE446E485D34FEB1A2331026066EE8881D350296EF123DA6EA3D34FCB6BE404EC468A96E71224902571F1EC19659D5038F703C5CC23DDEFA595\n" +":40954000E5EE72388081E459A7A2610F2179D403F5B4397A26744E22C0443C37CD518601EBBC84C884047C31B87C187498B9F03CB79F5E584619086F9D2807BE133020133D\n" +":40958000A6A94BB832CC80EC4FB44024BC08C93ECA584010EDC53124821EA0D6105E2100330440C3881F7A58E278920CFED6C50807BE770FB5AE4B83E78D0E16360C0107F5\n" +":4095C000A8E9711FB2ACB3046868B0060A55182657891C882EEEAF1230911C027E0FC45D90903E292918E4820F66738CC805F089EDEE82EB71D443C1C0E2EC61A4C154BA49\n" +":4096000094C44960EFB76E0400EC6344C104BA84AC7BE568416E8F9C9212D7A228E9CE8424D0931909BFD221D35B0BF4D6B1E0B82B82846047ACCF8C3EC10C8761E83960B3\n" +":409640006100BADD2121ED02EC6140C4381C431034709066D8123DF6A95092C3F6A168767E410300BF0746CC946E1508D0364091E50CB4B1EAE8322913EAC612056612A842\n" +":4096800030047ADDA4BA95248960F4603E3A6A3D107774FB267172874BF98FC1E163A1D712409604F43B05D5A746324713019A80204B02921120630C4C500D17846A014DB2\n" +":4096C00007E106A011BDD4F243E81894004F2241D4280D0150F2261C440D610F9FBA440E124E90187008AAE4FAF048FB7F80BC60FA20AF08553D3348F4D8EA9B667174D81D\n" +":40970000F2DE50481327A9984C07EB75D7418F46CC959B8F84A59676A8823D364A7D6EE8205F094E53A95A90DF930BA6CA16E129E7D365280216F02F6A858DCC8013F5CA4B\n" +":40974000E174D91082FE749F330427E6B7F314248A3100472151C2419B002796CDC4160004FE9B422D48796E1422308127B58807D178E3490BB1454BC736443F821D3438A3\n" +":409780006058F76A52D28C8CFA5448A8815263A06A32D12C18F76440F4CD5238CFC3C25207D36D2974DB3892C197B4C54AB65104BA63310E9B6843810815EBC24228106984\n" +":4097C000F34632206B810A00129B5B708280976A0D1DEF440489C17F6FF588DC10E5EC08443F85E680F1891C019CE2F1020461D8E9A1C200D8008D21D079033C069457C9CB\n" +":40980000801C2F031C32886E2A2024164FC492A2101B4746E2AA8174460F41C30362013F68ED8807EDAF5108BD4D1E40493B82D43E102C3047DB7DE2331B200F51E2090411\n" +":409840005404155A574D23D4EAA808452880DDD30A846A11802137C3F25134C2F50E20388DD041D37A0B14A6889FD73E2207F18EA1C5FA179685D320107530691A42361B33\n" +":40988000A006321564BF30C2FE9D941EDE031F78E08F91F98411E11FE5E61999F19DB081C2169D9444F248451ECE21C427244241EC7DBFF63CE010875306A5A04E23800646\n" +":4098C000C08A40474D469073D37704068B5F09910B1DF08A3BCBB1CE60079F54143CE3E4210785B00D8254392541A254571E02CDDD98618038E9B2C2602F254EBE9B3031D1\n" +":40990000B140ECF5169089015762171F4D99A00687C0C6DB7C7424440047B159502E82F2808DF6B7C09A40B752E088217F30E2F401A875E9BE620640343C30482070319B0B\n" +":40994000926C0140C71173129BCBDF83A562105875DC6C8845EB7083E9B0877013298BD10DABD0F01A244CA3B7A1163064835DDE004001A24823FA23F9FDD457446A9C54F5\n" +":4099800010095F753A0F4D44179FFFD02198256F571E99A42E00E65E9DDF1E9CF93E993A445B0BFA6B41C3594C0E3282F623E3F660696417A34CFC4C135E5339101EE39124\n" +":4099C00003C73E9C891E074C5E1F9E2DBAA4E1048F02E287AB55A4146745A431A5A5E528F2D18E0901E9FC943ABA04CDE40265F93C34C8221BA95C08DA25FADDB4FCD76890\n" +":409A0000349C48FDBBF8FA57C86300D41C0BA21BAB9C903450F021108E1E8F8B3EAE803337B1A9C5CCCA43E09D7167B6E0498EAAB91257A95AC7509024D83A0274DC991AA7\n" +":409A400004E706CB2257666B1F846046DD802278925842005FE0675905FCD84932E12EC702E81399122E272336A60201440408B4F64159F4DD9131300C501000EB00A908ED\n" +":409A8000819468109D8B5C6201A2421022A841D4A668F118A1EA52D541A4C550861D107130D426623F11E0583E0702A4203E064DC1D35A655C435307EEB5C2A99476F5125D\n" +":409AC000D24B97888D0880010810BFAF61882E0BD53B67EC406F07D308C24B80FA36C163885708B5EB5B02D0F325E79F52EE8402D3C11451787DD8A308701ACD1173C56B03\n" +":409B00006362B03F82FF8587058018DDE91C412F4611B413C69224E90C0B823E0A113014C33B4F83782FEA54621B833E13723181E2CCB269820CEE63CA670209FA6A54492D\n" +":409B4000602A70027813EE2D61D5280E2430008B71187534422344A0284F4074100F087D7CB0801BDAD97B7C3C7AA810ABA43B545C400B25205B80F6CF1643E1E900676378\n" +":409B800036282107475BBE40F0CC65999C3C5E4A5592270703CA105BCEBF837ECC107B5180887342614A417AE5A44B84FE108439B04B82081CBD30409F49C009E031845810\n" +":409BC000DE03B1A74882F2D4B160E00A5232E0E7BF037ED8C63800E010306E6828F47ABEB4414F0FC4100750A600C5969E5CA5847A00742463531C04A2E0E2AA53228F203A\n" +":409C000070A835BDD9AC580419E12688E44E216D81DA1D840E0B322792C44C45416A136CACC3873009711C680CB76D31DC75C72164440C2E455225E0C472203B4A58F0D41F\n" +":409C40008D996013AB43D1359581002A43B500841B0A20C2BBCFD56F26C7931E0BC24BC5D493C5F00B1A028DD90B0140958654304AAF04CC8E014203C0AAEF8283B19D8CE2\n" +":409C8000FAB5A174DC721D3718581003A6E350ED2841037A6E3CBCFABE384E40F3E02203E242B11CAEBE10804EE0412211F4DC996FA6A569503C80F21C75F1B5B0D99C0FAF\n" +":409CC000EEC7CB1DA0AC7608C43B0748C2E3840234CE61C470EAF7722403F08C46E13ED37C489602FF5294A0CDCB01D4A10210E10D1EA9CA480140B1E9C61336D1E9B98416\n" +":409D000018B458EED3488100095E17F7EB82B4A5529FB67C07003880067171D53665D4184211F18A433FCE020446E268C2418F021102138F1E08BA102802BC186F901F1CEF\n" +":409D40009E104BB72BA3DA39B3B7D828754D4A60211F39EC890A2E62BF9F4C491063D4D1C44287BE1964205F3EF04D12D476F856F4C810AC0E3AA20BC55543E84021E04149\n" +":409D800062247C1F2A39FCC26B959BB8710324CA890E041720279DDF040E1E0391E70648093D33F45D8DFC45B013D42B034D88A34787CC910E031B5A06D2D8220487094B07\n" +":409DC000AF630E4801EAA0B2343D70703D2D869771B9890E02FBE474BA5ABD0DC908407881E96B640BC1FC0FEBD723EA7073094090508D1FCAF1D4E9046C2025C7988CC8F2\n" +":409E0000C1EBA042D69588024B7C0006250E4BE9305D14DD8F5C58AB4C06EA6A61F10A68FA1A78BA718444A488154B8042E9B1E1C3B804179D960C02912224A8096A1E471F\n" +":409E4000A478606C703A00583C1CBD4DB09884A1783431DF27831A016F958A44808E440DF30369B236A216CAC82EEB9C741A03900D180D09F00B2A017EDF24A628D0E2D1DD\n" +":409E8000A40B7737210F05A120281203E0140FB0601AC2F6E3122550318D2040829818F1B7794E404F421029E03141F70CD983B7C591B1EA8181034CB241001C910BF6DCD3\n" +":409EC000C303C1E8403484735441C8FE744C484C60262C181100717654801C73226B06A0B815D4C727D73548088E005AD0CF1C61EB800AAE0381217F4E511070A606175613\n" +":409F00001726B02D01FD978A5D39443EA6F730182B600F47700810B0D20C0D1063A71C846243AF45C5AEA60D3018D5A1088B48F052F4C0F237D554637FBC990007732A8929\n" +":409F4000A1EA4D513441E2B4CAD0F0086A060AD3923DC88A2E3E04379675744434602E400D2B11DC3D887FEB9964F01721ADCE2CAEA2C8842CAEC72440038708E44816F6B6\n" +":409F8000F8591349657922C6FB785D394C8803EEA8C36760E41E9CA25C145F6017471381C26F000569A9C4FACCD9B0229D625C6139A212255183510044D57A20297B51882D\n" +":409FC00001A2123920C2011AA0E6C36A3E093A9B9F80D2076BC0082102BD407E174BEC9AF23574ED02C77B110ECF683064690335EC20CA42B0266264C5BD98F246873832A8\n" +":40A000009F46E58879DAFBE2087532917C3CDC5EC61048050F67C2AA443A73390AA042A38C4CA90548247A73690A4465A920039A45AEEE3C25AF61FD91AA5AFC2A064519DF\n" +":40A040004069968590C45C7A6ED84AA080AA004AA198D22C482E15463D86A64021C34B90AE706705A81AA56762002039874A425310286AAF6267CF04460E1AC4F61590F6B5\n" +":40A08000C6C49403D81E42EEB8A5D86F03E32DD16085F84DB448ECC78123BB10252268700A930282EB0A224B818392880822CF4801677226B117D881481EE0C783F4970448\n" +":40A0C00041D0EC4714C62EC40950095435980F4C8096868301B903E341F1FB2311B9D055F6336A3D8810D39BDB9BFA256B00A8D0160DAEC9501600251A893EC40979202496\n" +":40A100000EA9145802C4E71600A5DED59C9CFB022C82F43B1021D1357D41BD0216073121473670FB10257F821FC67D42D9F06B3908C05113D8812212AF06CC826684232094\n" +":40A14000B5414BF7409BF7C0233E167D3A260441D4303308B1D881060084A5628F26CB208BC10E08002120F1D8810D766B5954B078A98C7BDA1C4D529ECD61BB3C09DE5D06\n" +":40A1800005439074568826814BF0DF111A4527770A171F5022D73D28411F10148D2B0C51918D7001126801F8492042321C7930878EF4E71A05017FB3B60583607AAB402610\n" +":40A1C0008BA1207B03C863838B10931E91F01AA842AE43D1D0C24210D546043D5900E635559A51006D14889B660B4300DA23141427397D1010010E66C0A6C1DC21C66D57C3\n" +":40A200004A186A80D520FD9EAD35D83E564712AED808EF9603DEE4A268F66DA8823A5ED133D10104902C68060E9F64C391AE3882E2E785DE07278C786EA8FB6E7C426E3288\n" +":40A24000DA217F10B71398AD0838AC28841C31FCCE63434D8847B111DDEAC5DBB7281C00170F4433910ABD1E0BD224178A8F0BCD0705EA3E31EF2161E17EA34D0063D8FF35\n" +":40A28000081EF868307666B2040613405C4005EF77A23D2CC03D8BFC566A0648961AB35A3E73722F1E53086A077C24022CD8984540208A51D621222B85FB92C22C7A1614BA\n" +":40A2C0004D51148D00BCC53E60821DA4762C06A881033CD91EE2FE1B3B9FB54DC71D8007E7804FDCFCA20113A0111A13628E1094D00F0DAF1383CF62B521AFE023443BB5A0\n" +":40A300001AF619171F851F0680201A0100528E2D00B1905A087DCCF06039E217FAA60901D82FBDA802440223A43EF2A2D11AC15764058896B66803F2B107CDA3D36075106A\n" +":40A3400006D3AA8049040CC0D16A77441903EF7F0281C017EEC4210789DEDDB1120083F3063080411F06133F03C608121088DF09A6886A5680DDB6EA47F97FE27C01EC6D5D\n" +":40A380003101C510BC00F37852166C118144283B1BDF082282366E20A068B36284E79E3B87B1BA84895C218D22194432CA9018D8F538E8953E117242D0400058BD1201505E\n" +":40A3C000AA743DB5E9242968091A501DD886CD0080E9D196C8877874383A1C0C4E85F0944F04D0688AA5D91E40763969913E6C201F4E1788DF62E600B3A94C0E0BAADD0613\n" +":40A40000C053F42FEBD8A50A6AEC1112C5CF2C07CD8B9579280C59BA41067CAFC021D3FA2058D4CF3B809EC05255440D069411A83C4140C847780F2B2F486ECB527B0B16CC\n" +":40A44000910DA5DB16C0B00A75441A03442B163CBEC0C062021F2CAE9821A1442B1218D8A8C78E0788A58D04010A9AB1721A7B613BAC5A2772E1D483AD475B12A407B16082\n" +":40A4800075A5F15FDA62B51644E70309651EA0E847BFE7678C9E17B9548B4F1C27001C5D030501B21181006F6C9C09BA815D0C21201A80300920DA038A2504A5E807C5B46F\n" +":40A4C00004D1ED953111CD633CDA3B0D5358DB28F0158602A42C02553A1DD0BE3D19EF314160A062D78050C62580F44F2447312A213C0D006E326D8A37DB24019C3594809D\n" +":40A50000164123D90D8260AFA40924A9091A258DDE00448CFE956A1014D02DAE7178D12B7B21B9002466722AC0B29A9C200190217F04182E00FB26B14047044709127B8301\n" +":40A540009E279A47B77B8C0502816088401305819C7021B46D246D0327F974780686894181A1525923619134D89051A4C8935118C0917E8215818CFD042BA2F590FEE8B750\n" +":40A58000643D28787857B21BFB21C167019D7D20407D52888C2050FCA381A0463561856010AB53C4049C48EEEFA62811DD5ADC78F9C0C128CF22E18143C2AEA22B12A2AD54\n" +":40A5C000B68303631B069889330089B6A02C370184F52C0D413E8318CA00388B105CB902BAEB246D482528160796C0B8C140CC3F024FA52230BA380F22289EC0DAE0FC9942\n" +":40A600006A90E525730B87830348E4840F670D8E0712EF82D1C0B8A11D81B51ECA9148A54AA4043BD806C8171A01100C7AF5121955080DE39021B18D17A280C8721C3BE9F3\n" +":40A6400028BCE4B024604AC6D8F63DF41E3EA2212F3937915C03FA5328871F3B529CD41E10DB1206BC047E2E0C1F1F3121E073220B041F66009052010E000CF60680283006\n" +":40A680008B3D751088160F20088847F8C5E52F242DEC7D9538830170F8A36F020BBB73D442DDA41040728304B298249611850C16805AA80005CA3CDD58A1CA6A9CC04965DB\n" +":40A6C000843009509C9501CD1392E076CE1348E148E16DC11305BC000357081BAD385B2A2FBA44FE0BBB28B84D6ED03711DFD64C6239835E57962B611945C7038C0E63E197\n" +":40A70000D523340D10243E05F8DF689AC63E79888066B99E3D8DFEA615236803AF32E43C090F65790E50300259055303DE8BC801A654FC8FB5EFE5C4073A42EEC9A0408A5A\n" +":40A740000B98358B3B67178BA587A7D392B67A00482D7B7C0A02F0DC3D12365D2340B43C088344B4ECA3F54A948D259A057F6653095AA005B0289465ACD02AADA0251A4494\n" +":40A78000F30291FA097605FB82116681376D1125C8240D526AD8C6055B4912D53D8A9C44D34890B6981AA4A47236D440AE4E3843FF76278DB540885C29978040381F108FB6\n" +":40A7C000F88F8C015503FE161E13408434474B6CBC881845550223701C6721AB2B3B8180F133501DADB4AFC20886680ED81DC3CEC3D24ED57200704C8F82CB0C5B236DBC0F\n" +":40A80000A14880B63B0226B0CF89284675BBF7C3AF6284102D72BC0ABB070C408008EC10886BCC48DA012250ECA5C4C50B74A9E31E72C17A1F0C018D13404503826513C048\n" +":40A840006CD9A9641EC4ACE8BCA41FB302037B748EDC182C1B8BA46BAC4AC456B21D2FBF6E56BF7EC423673D003AD8A989F94014250BBDD9C89B2039716F44478510C8381B\n" +":40A8800072181B97F822662200EF3483DC005384B8C0736E084DE48E1570050160E76777CE201CEA64073B6084EFB818A104F146E080340ECC0022762E1D2691D2A3A58EC8\n" +":40A8C00012D2B850BCCD902141A0729A3F122B0F6601A802122177C17EC66A9B646ECE1A44B803EED265C03098290CC190030601306C1002013B5843830C0D135C111AC084\n" +":40A900006003013980D5DE89A606094A4159A2679A068DF7A67547226621840018DB94041D344CC362D1006FF88EC0415348C6F37CF882B8358881014820D4F1374D131A36\n" +":40A94000CB681707278F1590F1C5748078358CC14C033C6CBC801637226A96446F94B787B7C9C4BCE3AC46C7800E470AB411604826008A0C00B4487DDD223F08888EFC30BB\n" +":40A98000380403D302046B1604B02BE1C161104B8212CCE894B8C70681017D8830CAD5302442A2A89440590548D106B0A28D94878E668885C415CB603220840520382E0079\n" +":40A9C000FB34D06641A9502B4E640099E87071916287B221081500C310B8C00A38053080A02CC403805F929C855C19286890AAE01842C472D82E44D023B05F410030605C80\n" +":40AA000018206003026C14056B12C4A386E6E01DDCC023B512D58014314BC0C12947106BC3EFC804E17D7F01AA3B1B1DADCA5EBEA01CBD01104FF21CD8078FF37CC1204DD2\n" +":40AA400080F0FF3BAA240FF37360C018623AD2364C120A144E948D7F4A0311AD9D012019066C0805C11FE94CD2ED2E611022130192021B785E3C7B5AF04020851D52D1F1FD\n" +":40AA8000E172F01E911FE364EC26218241A469A8C14866B34145F1824228CE517880311A8E91EA2EB1C23006505FC39C47C6F3E207062078F0770E1E04C7107C8BDAFE48A2\n" +":40AAC0002733C133AC14DDF947C97B232310854F8FCD0F69A490C20CFB86C8B845B954101B2018EDD52B920A100380440507D0E43D19DEAD09193011FC15508D30AC7F3F45\n" +":40AB00003CE2044599CC5998E59E8D744B33B0B3334B303B609E114F55BA241ECE7026277E0A1026416CE7A5AA701048612E58D0698FABAB04A2F25861712CF91842EF40F2\n" +":40AB40004B260480C1776022130389166C0507F9386E9FFDA70C20717A04793E647C9F26400FC4B8E2278F0110126705D8D648062E008F4D8D083E3B82013F84D04803E257\n" +":40AB80008FE5F12B988823F19E3C98B3814C02116A080C92CC52106C2EF1E0B1DC14640288687A31007946316EEBC84500A1BD63203FF9EA692B7B0801C516886CE5DCC8B8\n" +":40ABC000600C2F5B54212E1F36C211FFE80F0420C443AAE1002AE440D1C48BBF3C27E11B7B4F8C87D2F75FA244900A3D85E3C0383AF802F4CB2015031C601EB82AB91EDFDD\n" +":40AC000003530F0B681E5CDA4018E4340F427FB0ED121E445A3E81FC79A80C49C6360DFB65E900B8A0F4A6C9E4B529D9DD726E80258758B68FC289022B8E054E74888ADE21\n" +":40AC4000FE7E1BDEC02CCBD210AB2AC44513FCAB3C2D2A06BF8DD80CFA2C40EE40C02C6B2F84C11E831DFC4D2EB8261A0E1EFD5E1E07968172040EC186CC242259EC239B36\n" +":40AC8000206C322249EC04F6A0491CA7259D80F335CE9010ED35FACFA08E1207314CB8C9D886B9820805DEDD9E50460B90363855E8F798A891DF0A9C0857E825A2EB43C1AC\n" +":40ACC000037754F22D7818E096A051B026751B708027F84A6C075E75D323FC23AF6121D0068D821E8F08247F98FE0A77121CC1080FF03CD8F876144FF0725E52D2960DF07F\n" +":40AD0000C017CB4E5200B360C1028029EFDAB10F42EF051722071A4171007F9C3E19512EA71C1C10D04892BD65D43F12951FA12004B1F62030CD004A8487F13D71F01CD9A0\n" +":40AD400093C4C1C223F780111B9576060007E2723104404EB63A1C69902781F74E892A381B1DD47025C9167F1266C1066C9587F1DAC1406F789E984FE3AC063767502B4C2F\n" +":40AD80002EA96B2A603E616B1D995440EF7E938CD80401B21A20721B15100501FC7120421B2701FC70D251014FE37CD8290D99E00DE3603A364003FB6CA618311FEE1716FC\n" +":40ADC00047D401850F88100D9A1E0479FC3D7B69504423F878831110FE1DCD1224D811901D7DAFF4218172471FC399A2439B0251FC391B026439DB3A2DD60271FC371B1E7E\n" +":40AE0000FF621030133F86C34482360523F86BF6D3008A87F0D26C0AD3408D0688F86C0B07F0CD4742C1E20D1FC324388B880C6688F66C0BC7F0C3062301FC301A23A20339\n" +":40AE400011FC2F1B03249845D6066485B346E5F01A18168D11C4D81A8FE160D81B28398AC6C0DD1A22A9B0384188A6688DEC0E47F0A468CF403A1FC281B01844889EC0EC40\n" +":40AE80006C98A5C8087F09A6C0F1E038D2604B360863666D0294D8220D91C10293BBB2840D254333A48325824B2E888946C779BF16042AA110B102750429B2601FC4DD79E2\n" +":40AEC000890A7F143EB30693F6A4C4E34097412F35092C6C1306CD4001286C1330C35701F11758B048D4F8C900903607A60072E40C3F832F25D1C81F590885EA15240C7B0B\n" +":40AF00006228488C22247801183FCB8E7190181960D80EA16110E6C0C86DFA065F05D9C3663B8506A88191CA9B0CFC2054791BE36120B6201A01D01E27031F0AD61B1E26B9\n" +":40AF4000CD19A42B5002E017C07D621000E70E899844DD7190B20760CB407E0BBE13FD1284FE03825EEFE043501E5ED4121E22D840D8B07B93910406920A2138208D746136\n" +":40AF8000301B34DDB741823131B4003607D0A3D901C2107C16F263A860688383A9A2508166C02D3F880CD6D86C33F81FA7B1B0451B2069FC28EE06E88CF6AA4B01C0DC78C9\n" +":40AFC0002376FB1C24964B90F1960900047E17E423FC10F8FDAA8281C191CA20A1047E9108A21823CA23083A082E5C4303A1011B4691EC00C551600B9DDAA4C1BB784D53A2\n" +":40B00000B59C0BA8663D115A0095A103268F5E868B0C657897A61CC7598A3E51861044AD01FB008441F35CE6030CEED1491638DB591B5DA16C26DF68B4A66B1C3D640C3060\n" +":40B04000E2CC600107B9026FC3AA6690084C83B5A910BC067C3236237F616F1E166300A5E901A29033E6F0099AD30013C2D22048062ADADC72728C0A3BA8D064250992BEF5\n" +":40B080009020FE47C3C5C65C00C3D820686CCE026896F7FCA592A025F6422A0041B522268BB02C1E064204C023E42EF26A9204D4207BCB48713C108CB407034130888170DA\n" +":40B0C0006B1F092340A7C41E7DA0AA99E01A9A255627D549E4BB4C89020D0291B130D0774134A251813989EDE408DC84B74AA50164D223D976990245E2809A8225D16CC02C\n" +":40B10000414108A209E6425A0189A03CA00035F8794C470A5C61028E31231C713D3C8F609A4E63F20350126D55120C017EE7AE1C4F2A0CE9DD69155880121D2389D8C54569\n" +":40B14000631102D2308600B8D0C6B826E139114B27D1834049CCC72A1C0F425E42EB05320071FD4351110090F9488EC85D123313A3A4029074F0C87EFDFBF7EFDFA01574E7\n" +":40B180002B7876C0F02F1154A21F848CB12F081030238128B66979ED0FA40FC500043D331CE43017688EA367F0CC3246BAC02E100D03649009CD5366E022C23F0CE3E283D0\n" +":40B1C0004CD9622858004176076EF653136803EB0F222B7BDBB0591C098358D5EBB951B76801B6F022E80CB8800D734BE22171B82C40923ADC626863552362DC226919C679\n" +":40B20000D806DFC598A5C4C1E7CAE2E20B4AC6348DA3C6582041D07B49533150005900A040DCB061C9EED0BB693500849834FD6590E6043406960E3AB35800E00D40815B91\n" +":40B24000BFE91124177758509AA535C5CF220614562D260DB60963489FF8B6807CC0C6371614D80C138A20610563D449903B61A616C06287B2A510038428403548423401C5\n" +":40B28000CED679320462B8C418235127401659D9446EB3DCD46238B043A3186D8EE97C07623182329AC3E90C101AE39F6A4C8802688FD711B91623638196895BDD95C25A1C\n" +":40B2C0009C2C91A02653714B8447607220A761234247430918C10ECD21B08261C9C6E2F062307B310C6E23119556444D1688C78842688B970931140E3680872157B468E468\n" +":40B30000E0721514683058A43DE50C800A4685DE1D62442ECECE54D111CD612AE0D110D6CD20C8D00D8B2006DFA05500280824053B00D592E80A4058ED507202C069DD1088\n" +":40B34000E80D1194BB4B4120857D8060A0118148FD90096FD71E8045F4616A0209D4042542E18156DBC2592888624001E88591B7021CBA18802D07A0811F09AF20C791706E\n" +":40B380008BB90207AA6CC60841346DD047875F5F20C084122B200000030003B0000000004206000038000008A4001FBF7EFDFBF463F6111E043A57D658D0D78EE212800639\n" +":40B3C0009880B0293900C501F6E23B8E9F02413DA6A24210141100CF3D56E49FE4F8BF84BD066FF2024407207715E317F720320BE174DB24A8521175E2F7AE302DAA0D20E0\n" +":40B40000277174C376942DCF5CC251CC2CDC858C4F18F4DA521B040190601886E0040C5A501B6009DCB38426DC63D4DCAFF4DB04F608F24411097D7DA08301896908877B7E\n" +":40B44000A6100FC0D604420C11CA092EC7262B0650AB855070530F98ED90D29D901090089E5D205921742398090189EDB58200488479D90142176B81136210488CC94C0440\n" +":40B48000CA41428014869188F41FD1629EB0F120153CED38A28BC795C400873461E5F7EFDFBF7EFDD898378DE35EED45A89BA8A19ADE01CB76E03DB678400ADE3D8CAAC20F\n" +":40B4C000E00374C0402ECADD2EAD421EA1B23EB56A2C4AA459866C9CC3374B2316E40D3A84431A43218C20D917A8250D36B89B003725C6F7268477260791CBE4DF72264FDA\n" +":40B5000051F461AEE6F54360C61C0721C064188643C0C90E4320EE1C86E1886830C2E21C06084290C43A86C1A0641C862338EE3D6E72663586FB0790C9B20E4305098CF69F\n" +":40B540000FE9186639DCDC9E57DC1E56DBFE0B6FC7FA8BD6DCE7AEDCEAD6C41EA6DE48ECD07B7E410CFBA0B18A622EDDD08CC230BA0A9204020D3C1D6CE9153319823662CA\n" +":40B58000442D8F454D43D67B18A48EBB5FC4841A918C86FDBCA1008367B420F020D88B0E4CD8D032ECAB6726FB2F75684791B8165802857EBA1491303A6648F3FA5B1BAE87\n" +":40B5C0005B197B3B1682DA9FC60354852A828D80A6400D8F40443D4F908E832843A9A0F97DD642F621002096B6304200454420049884009B1F18D49361002AA21002CC42FC\n" +":40B60000005D88400C31080196210034C42006D88400E310801D621003CC42007D9040C42008588401131080236210048C420095884013310802763B8A09B5C02C09B08072\n" +":40B640002A510802B6210058C4200B5884017310802F6210060C4200C588401931080336210068C4200D588401B31080376210070C4200E588401D310803B6210078C42069\n" +":40B680000F588401F310832A44750A15B6D55EDBB66226A5287561B857D256E75EE1FB0E7145089993822307314E11D00492361AAFB8B8671B9190158431376DEDB10761F9\n" +":40B6C000D41DD9AB0A060C6C24D41EEB1551F36208D47C0D151A03406400756DB08E1CB930432F404DC8A7BDAC0C90048B4996F3DF2348C4396E9D686EE6F437EE850AEDBA\n" +":40B70000E8E2348C239C32436EDB4C50B88C23C28EC59D43A8C686F4574CDD6414F16B9D346A7336376463BEA004914EE5648431584514A8AE6228F1BB7C4F07A018430C97\n" +":40B74000548326419840800006000008000100020300070C00000000FFFFA1EC3800000CFC244004C11147E8BCD21E8411BA10C720080628F1830841E1B3018420C1484071\n" +":40B78000513C00142784A141454C267EE3827E907D2B6673795A0C4F48213B278765A8840A41032081902038018186A5E0CD4D0B2C863A8332D6139C390549800D004070AE\n" +":40B7C0000303356706E12C61965810DCE81094A8057EAD2EA8410AAB9840228CA66B0A841FA01064019D1146CB10C18D1418392623AB8002A14C140AC17B9521C01807906C\n" +":40B800000B18838122022621006480C178F30EC0705192964D0034B2288C200C32EF7C32A6E41870C0F18433480162A8CCD483324228EC100304219FCA2189C003902C0883\n" +":40B84000025034603E639C86C303B861ABE30FC2C110284FAB7AE4468430084C19943A84DC5C006520205E101801408C9100305D105400E0408860081062130F204E8B8008\n" +":40B8800029822C1C01616C83500606021180342D11AC01C640F4B11080921694022218646012020183009880071877D5A0B80542B160A0160AF3E20170A228280604109A48\n" +":40B8C000C03223458601A0B069300D843229807022924C03A1162100F043225403E14698202010828A808442020C04403270404616459501208A17D80946D518404C24C604\n" +":40B900001501388218980A14911148809810150C0A9040561927040583FCB75016840AC83605C102A41017841844060109446210EA410190442E94066112822034087204CD\n" +":40B9400006A10A6C406C206B2101B882844315B046203910141101D08010D407623444603C1750880F4438BCA03E0862A301FA6844805220881081810814514408618026F1\n" +":40B9800050220801558114400E0C08C20250811C2649102404530D40921162102504C90204B4A11261489A410AC09C1B0A8604F0D84630B3A401CE0C17D451029088844031\n" +":40B9C000A62F07850ECA5C1702A889B3F1B056101510815C014D8816043012A05900047302D250896C40004A05C55C225D008A25E1103E302F8AA21981812844C221C7A583\n" +":40BA000003128422631863CA81914A11328BF51332D10899C0889CA0683234853B3C206A08534206B18153881B05244206D1812040DC42BB10378608840E016E8620710B36\n" +":40BA4000568040E45239995E88052B81D4812EC0EC4442077312C40F0142D4081E440DA1103D083513D8808440F82A6C1081F44188AA07E1610881FC41C6187C001476801C\n" +":40BA800030F80238A1100108CB3E1B17D3838811680418028ECA9C3600C332DD06C01C30904A0080C5490D8048425105010331802C3212CC01810AC186C03420976A00E01E\n" +":40BAC000812C401E1007E50080CCAA036022B3020C048E2C04C41D4E1B0141815306C05568C4180B1C580B800321403064190833A201A4E0886D5F88301C5AD10603A716EC\n" +":40BB00002E000A28831722201F081638403E10AD28807DE3D1E96C3E118C894202438B0255AE10604CB4C20C09D6BC418141C58149C581528E222B290B0C85A642E3217968\n" +":40BB400090C0C86264323219990D0C86A6436321B990E0C872643A321D990F146111E89FB800D8608A500F87E21ADF061F100A21F104C43E211887C432AF2F10F888833255\n" +":40BB800029408C6047302418124C094604B302618134C09C604F302818144C0A46053302A18154C0AC6057302C18164C0B4A1265B001671360BC2A8066C3E3001EB789877F\n" +":40BBC000C610EF4F503101C02140C63AAA2503200F03D40CA03C4A606600F2C40CE1103B50340123C1862CB80E5C182182F7035AB0513600508D40DA3E0AA606E0A1724926\n" +":40BC0000B06F0A002A6188D4416046406E84446C510F8F01068A207900200A81EC0180EC0FAA1089F90889FCA3C475C6DAA7C476442C6C312D02334130C4B60500A586252A\n" +":40BC4000C04809AC312E81CB904C312F08602D300C049C1000C060B258601E5B64B601815088E1021700210990C010480A700C0169622220017AC9B0240203FA808D10880C\n" +":40BC8000940607EA0260213C1B0270197249861ACC219916844B0611B7846910FF13880072C31081250F4B570DD2A7822200C0F231E482E41349C0BA07F9DEAF987D227B61\n" +":40BCC00061F8040084A9E2491B2C987E03316693EB1151A2061F8154A100FC0C00EC1061F83C00044987E0D0037E0987E0A481111007AC4360180041E5004803A286C3005D\n" +":40BD0000A822E00B46220800B5386C080A54A110C01A0081C4EC780172855E005D4710068FF3EE1103F6780265BA94870EC5BF1C28005800401F115D101004821091211139\n" +":40BD40005D2CDC20344080673240328264E0C2064041991019401F08C91600848284809E84DB101068640648033A9405282A48082524041A92032803E10682C0189058908F\n" +":40BD800013D0A242020D8C80C900677280E505C90104E48083724065007DA7AC2C02090609013C59442020E0C80C900679281250649013C59C42020E4C80C9007C212458E4\n" +":40BDC00005120D12020A89D3CFCC60440B07B240B2836578B440581D9288163D2FA82C03097A0EA058F16740B03C25102C1F49034A0E95E2CEE1607A4A2058F0D220B00EE1\n" +":40BE0000241E285C579F9E85888160FE481E507CA17943F2A20AAA8580812F41A50809E20A41013D09842034410049044A1092020C4A2092036C1A16C8A85B222A79FBD867\n" +":40BE4000454310F032054CCC713C034E08244506C12F2127A5C509000000000006000008000100100300454000000000000144883800005B403405234453E0C64229C1A21D\n" +":40BE80002A7432208A8690A9C92B060C0554855F0D0408AB0A81A42B4188ACA42BA85765E8FD8160585216542CFA1C60459DE9B045987440444D216A1445A8343B2FE461B8\n" +":40BEC000405B485B47659A8FA7C68608008341089440944D21721445C83445D485D642F285E642FA85FF427608BF0A81A5E903713406083446148616250816688C2818B851\n" +":40BF00008D288C4E5D96B22C0C6A5E4B111606452195432B21994333219D433B21A1434321A5434AE080021D418861E06A73694000747B43081606162BF0449162C640040E\n" +":40BF40001488FA0E7040112C2447D07202008A46420008B58E1C424E13D222D6F8703CF2A44011737EA61F28E00C207370A16058446022141624613713D41E42C619AA630B\n" +":40BF8000AF61058D5B1CB0762232FAA69846639191A43CF43001B035798C2046A293D0BEC6008DBA3181621046FA04238F174E108E483A284100474F32DF8B14407C53ABBE\n" +":40BFC0002CF3EC711DA4423B929C0EAEC011E31F94849901723C8D1D12D07899626C1B8A0581EB9329084992EC23EE1A21F0ACF4803D4D913E83F420047EC6A923F6F620F2\n" +":40C000002124100023FD1E10947844803415E75B812268B4E0E810048BF3350144091744048D95091DE66B62A043D44953E8410200490C917109F6E8C12438466084F9050B\n" +":40C04000F2496AE064270A21071F10B19513249900D63589253AFF607C1D1E3CA3987A26D0E100E44A7C1630FDCB1E779F12777F4C109FC399224EF99B5888C8413D12A140\n" +":40C08000024F008D784A18589217AA9E440E2E208310E470DC920B840E5786A76AE709E848031A86D914C023079EEAA0782014881E79A290B0B9017807B1781E904411C467\n" +":40C0C0001202CDA08B7F8E9601AF032E11E1D23103BEF497799C200798C0B1403B135C94248760A0ED024D4E9F40108C01224041D410EAC4C2E6B505CD15C581E402E97BF2\n" +":40C10000A1108D43723870F541481278C7AC811EB8E41E81B220A530009D0BB7F7C440815A8707534D0FA21C4489017B7DB44CE358D060A021B8B8188121505DC14FC4D0CB\n" +":40C140003347D08880058672FFBAF54B7D6F43BCF1079E9B0F16EB100BD83265C095C7A9A60A210E73925E59FA1E3BAC234F1E1043ACDD87CB2522010BC0508411841D45C6\n" +":40C18000F53D7BEA3E9D851203BB3C8BBB24880E00816F5D6309A25D17028162061A25C96200705D844C20B820363C175EA169D261E2481727675E719700E91007C136442F\n" +":40C1C0007903A689604C9964C8585F74CCA8FAAB7C409043B21D8801034EAF52738803EB1E73DF6108A605BD75E887AD62D026A1CAA980D628FBA328420E95BC28F44A9E96\n" +":40C20000DC7F2607A4FBBB08C22440D1BA1CBA71C44C21F4B6188BAEEEBB4A524CFA854048060932643F2E7BBAC9101FBA1DE9C3D6AA875E61C11DD5F01451704291F04352\n" +":40C2400000F883107C051E5C2F184B1F0A278F3F6A2E678E260B078202074314978C900415E964D2E94782ECD263E830844A243937A8B1E06921203826A97420C8F2DE4152\n" +":40C280001C3C8374413F4E7598883007034069CFC6C441F1FBB083411080180B362100D3A3630485107CFAFE20C043D404025CF76F38D140F31F590420700DE02C53EDC6D9\n" +":40C2C000612A49204D036FC14F45342E6E291E9E77D3113CBF1406F287AE1BCA6629912B278829D9396364B010BC927A3E565910D417ED34B33D3B9734784198E0418ED0B2\n" +":40C30000BB2E5E622138181954F173FC720A64E99B4004999F4C9094940064FA0D70BA6CDC7D33B8210F9E8D8C3F3FFC13BE45C89DD25CC20B00A401105075C2B08203EFB6\n" +":40C340007A2B9F4A6C08A610B0177821D4416F19E41093C42947B960479BE9092FE1B0111F82E083AC1544B2ACE10BC81300660777F0211BA24BA1EE44A2E304E8017600A9\n" +":40C380003183D671E8028028E75B68779D81325C00CC0443026112F124C777C6101A0B572A068F982907CF1FE81D00297030F5E5111528759D09701FE1178D9BCD400BEBBE\n" +":40C3C000CA322C028EAD644474B7C17A19094E66A066D2466279DF81726B62F380017470E17777B25D56545E7B384BBBC087BCD18FD8314406F63CE1048070CC7D91FDA829\n" +":40C40000F25CE924B91EB1F79EF11C4A3E292622E0E2F0F0B570C511038D137F8888901C4305DE5CA8207F7CFD401736C7606B9A9E09B43B033C442CBCF6542079908711FC\n" +":40C440000E4B8886113C568FE3078F45C702401A641F40869000418423D0ABDE7F43DD126241F8D00047815392BB892C0B141CE9E048002C56AAD132BBCFED1326A4C4025A\n" +":40C48000E901C2EABB22E69F620F79FDF4420348C7E9F1E2EF0452344C5F1B6E14299884CA1E3425267A2D74BC6C785C44E0A6112FE247D3B2C26897DC053CB9D49152E32C\n" +":40C4C00002C0117F9CC988227809DDE74222EA568F1EF39D11F10F43000977DE742561B0F534E99A058F5FE1B41A2656A8FC65D7FA8CF0676271E63347C19E8C7F5025813F\n" +":40C500000A9531FFCF0A427E548A721464044F15F522875DF89712062A2845C1CE79105D05425D08403DA56A3C0F3C608C3510023E419E5847E08E3548EE0F885D084A9751\n" +":40C540008B3313E99D413D060E84272E841E110A97A5D0832221D3043A104C440A6298F7494B952A1D2E0F2FDB4FA067C6930D24006CD02CBD73D043A77A0119D1DA53E75C\n" +":40C58000E0402125812A446272882C1102223524101D6791A495D9000100D79E079F08881538B9C5F0F49FC08F1E5FA11084141F8401F41C2F43EF57298DC0C1E2F771F5E8\n" +":40C5C00002D0941E501D43C6FB885AE8098040703CAEBC00951ECF4E208CA40538F2508223A855BEFB8816058156B21EEF5F1EA59520206EBA3C89E0CFBD800B86E5885547\n" +":40C600003194D41E9879105C200409E0D3CD72E220461824A360621F7C208A7C3CA045E27837ECB8D1901FA9F447D7A3460209B1C46B87BBFCA093FD52FC20F14E501E000F\n" +":40C64000C73A67234439020069D0BBD11C7ADF70ADBF0614A0887F2911172A381E84841003A8CD08A7080D50C09D0009D08BC1470443F7A3C181E4D49089D087B8AC47C7DE\n" +":40C680007A63DC4CC8713C81B24A006A3424789741600A80447D00BD5DB645B807E61C62E004A208301780804F814B089E0D7B3978493EE5CA1E22A82051160083FDEA5858\n" +":40C6C0005DEA20860B61F25AF107982E90EF51630691E9EBC2E7BEC41C05D181EBC921642C841320FF3F07D0C19EBD4A2EBFD06B9FEC25D20583CD578C18B898C0F05BD4DB\n" +":40C70000A3A3DCF8C881C6B5222A183E17871EC1EB2E8AE71B4E896FE049A1EE87E101CD800CB7DF0587C3D103D934235586248006F77341883F5365E15012038CE9948927\n" +":40C74000E0BAA6C982393EB3721E9C862E61E235385C3BEC40DF2E899779F61440883979F2209E013F55A611E8109A071F8C6407BCFF48E240E02780CF3FB2978AD7CC604C\n" +":40C780002FFB2DC040B0D8222808600EFAC02780303C329AC3A9BA84F8E09FA2208F2017AA2C47B3120C7928A8A075F138F445E8F8700D001CF90B7D5378A16C16F2C34508\n" +":40C7C0000AF403A1C4BAE921610EC7722027E955C1C05021302C300F0710E06D75D5318350C62D1A061931D4EF826B17FDECDC57FD804DE85501098132F49027823E98712B\n" +":40C800001B10181A59288062A45004763A4582794853E627A4071A5329F22AD10C10038C6862A6E01374548080DCF534662095833D731A2374A51E9E2C160020CE63405A12\n" +":40C840004CD2290602E4821002402425E10F4211F50050F085F3820B7B01E9D390037A98027E4A621B40081A3155B14C022C503480D13A25114F995D8816068850E43B5A35\n" +":40C8800070C0D0DA18F881F1D3003D84BF5CD1101A1157DA068118040340B1C03B15350F017907D3E6687537D0894068051E890A079FC81403AD450109D4FCE23A9ED8C499\n" +":40C8C00060C0E2CA22407AD6784C9030AEA2C4C1B5EB38A2E0B923500737001A497A94BC4CAE988F1A83103486467F0E88E818621E9232470388B81201D31820070D51C874\n" +":40C900000D97890BDE386819480C52E2641D324200700D25A3131280C129441C0C3BC6410018290B7A2AE910380AAEA54A51D469E9970123922F21048F4BD354A36180C103\n" +":40C94000821DEECA2118107D044C75A0D1007E7B261EC255200C811983EF447E49192720943043D458C4621486074CC599896D11274A5EA22D418B1028068E4AA690744D4B\n" +":40C98000710FB200ECA861C2010765E1882E5CF234E9F42900F55DD930C0A60B869CCE847D0A4E3DEA3E5E82372F429194425E84C41F1053102DC1DD8BA16648D00CC0819F\n" +":40C9C0007822F46D2882E0C04227B6C04240141C16086CF43D8382208742C117B0670ECE03E867410050BE1C028F40059418F429609300E8C25CF689B902C1378EBD0BAE62\n" +":40CA0000AE8A5A1E7F5C224103791DD2B846879E3267BD5CC420F088298BE68024581A26803DDEAF220F2E140C7CE86C879AA212E14889047D83FC41A5C240007A7FA110E4\n" +":40CA400050C4B900758083D4B385E70122104EC67A3550FB475110492EA2F42C0885C9180BA0110FB4020C17EF5A947A3D647C4160419F9FE34BA6B688A1303AD9F48173D8\n" +":40CA800073011074CE90C480AA1A08207054169C0CF72298C3886A8834B340D5F3FBC970A682E98681E205E8029D627A555220C1E01203E0302C210366016620598800E070\n" +":40CAC0004C1310D81566400389E05FA90B4BCF9DA3C2B3479F0608E1D3332878BA40418E0D823E842E12039ECA97A00D48182822049C2010E8DCF1BDF6094600A04E74448B\n" +":40CB0000B8EDE7F105082E25F425C0407874E1D8FA7B04413AAF3EC6721F132FCFA36F960181AB9B604180A841B9E83078C70A1B2EA125102303B177E9F08800510572C91E\n" +":40CB40007A1710BA14706790200750ECF02A00E19A48848D01C3C49BE3C05747C23DE3DEBA2877AE7890D6BF26046058401C8089515EBA2268CA2F4980B3200F022A6A3022\n" +":40CB8000B954F13C4D0247AAEE241A894401B3B900DDFEF621002B6ED0037D6AF938BB88D022C0D3CA14BA1894FCFEAA3340887E87FE1F06150F4CDF0D91C08E1D8309B8B0\n" +":40CBC000BB04A04CA3D855F51251F371811E8A21C8B29F8BA324044C3D8D5E85F3208F311A7A3B0064A602894809692D383E0978F74C8429290EC057590A17993704032682\n" +":40CC0000C7DE06BC231760050E16001489F1900BF2EC895EE6026DDF2200F001311487E08A622EBA2418C017BC6F5058AACA308620EA6327027BA85F040173942DE85DA1CE\n" +":40CC4000F1E9995A847A0400AAA50ADA4B880F08A55AE43303D282EB2681102C163D25723D26B6239610012025C5E2486208E6C2BB4E181E91978C69789680BB2C80431FC7\n" +":40CC80003C568805DCA76402183DE58A2217092A196108087A224C710A8F67F79181EA1DA44E0B14081DE087E20341904D0EB02C3047C7C48363D1030224C0432383C397DA\n" +":40CCC0006E008865E46471F275C9972729E83801837045E0DD816002E847B2E8F38130469053ABE4C7BF060ED4B05D0581572F3B2E9A151C79420AF5F9F896601947D0E679\n" +":40CD0000C40F80A0B7AF1E44D9EAFAC9C03E7E3C5912CC40E3ECE8172737170F23C84434418C332552412E2B9C844E23C26A7647480FE295A120784918F738C0FB0CBC70B9\n" +":40CD40007E80820687A08087C02446E6A1C04C80A473238890BBDC88F10C11808E2222E73005DEA405D9B7C588B024C26A1B3CD0FC404270FF30BC47E4561503D8CC8802AA\n" +":40CD8000BC26EED3121943DA0E850423C02ABBBC3B78E87CE25C357E16AE2A0451A26454C224A54B1776770F73C989B20052552A8CBC7154409A1EABA3198C4F63230ED1EB\n" +":40CDC000E0DB0AF92100040CCFF33C170B02113487013D448E5D8A2C3D855C20407E0188643F60CA90030E619A40320B46411ABB06BCDC01746E23209FAFE848D66CF06296\n" +":40CE0000187D1002371580126326055A287B0D34C8E43D02D25C71006207A6EEC7A6BA880A35A187D5A425D35CA2051950C3D85FE5E80EA1F10A9090840181E81022E2D5BF\n" +":40CE400062382166B063836E89000512C110C1EB92912680AB8004103C11E260E25870E2F2E829212BFA4C28CE203F0E780856544BD187A409F6193A000FAB54CCACB190CB\n" +":40CE8000951EA3E23F4066A971B9E08D2F523491E4087A1928BA17D0480A143D83D23DD88C5D3832382AC0589415A1C31DE05BE044204E5C8101700220090F70F01605A70C\n" +":40CEC0004FC38F61A809585AA004082018C7271E2E8E351E618A2438153C9439F6C6F0B005A054320553763904FDC54037B7454E98128F095518A01040822A20AE341012E5\n" +":40CF000042554C3C51E0433F417391877A9080A7E94BDBE982207778A8883460BD75C041570BDA12DAB60800A1E3E5DCE19B4073088611E4B9120B6F0EFF1102698665C844\n" +":40CF4000885986B4C4B0460F77DD1745240905D53345901025C797E1903301E0B3C4ABA350E3D3BCE3D9EFE23D88576080C61D7725B0C7A0415F003D34BC203083D0CE050D\n" +":40CF8000D82562215E12201974220F611176225BCC403C27026103C140404202DE378F1C4C93E8A2D3BE743C79DE37D2083070304E5D425CF134BD14485C2D24444F0F5F0D\n" +":40CFC0000889DB12A22C743B7163211033B6098FA46D4C2DF4719240424101A1E4FFA12C2F8A47BDA70AF9C2F2A1D165490F9B8587B86C0C620B78DB7A66B1B9E45A42C0AF\n" +":40D000003801D00DE2A2D1ECDDE1EE4FE20383608FD15B22C93DDAD3A3EB73E1008F021BB6C08FC4556469FA1D0C4FBA8D81E813C133031077D2F14261176010E75BA04CFF\n" +":40D040001004C036127529611E279F54991743AB10E04C0102B802317393B11986A027852591BC03F0E9A1B1F01803D199C1998463EC1222C6020388C6088484001A08042E\n" +":40D0800094A03BD8387C7874235142128920891A3EC908CD2F4021D463054242400D38FB50E84199C001802CBB204D2E97B313F481EF77C102CA1A02136884C3C8E63C8ED9\n" +":40D0C000D37A1D95EE5358304C10C078C22E8DA690EC3182C4C12DD8DCE2300303C0283383E1109200F7C7D8CEE7EBA001083B589C4613E7A9DC0422E284E62303DD15AED8\n" +":40D10000205173370770E409AD720881A3C0A63C0AD92062390E77E58049BA474F6F73975485081276CFE6709026970DF244870B54B82E1083D54E17B3876BF0A0079FBC9B\n" +":40D140008CC04C1EA14B22E0283C8203A09E35487BF220D621FCCF2E20193BE519912D40525B95750F338D100C7806C0910823280B600FA484441D8E3071401D61060019A7\n" +":40D18000E0119D24F9D00F9AA3BCBC47790BCC00CA536BAD006041CC11D1E83C42DE7B7C80AC16FAD11C7B8848C1A40651D9A7451E08A26A8C5D089A47A01DDC09E6060E45\n" +":40D1C00020579C000829C7A84037710B8F8F7BC7CF0083D06DA42CE0FC2ECA7C1230770E90F51580F1382234054E14425210980BB88546E0716808402F578C9A06084D03DE\n" +":40D20000C05DAA81C5B6211771092E049E2460A4808E3B757058F695D9897C3EB0411E57927DC29A7EAC631203B85396E19023DC428900A9849A1E31EDFDA234039E843FCB\n" +":40D2400043B85954097B86D521E900CD80549E15A226790269848277544D882C02DC6105CF434C91C618F632F0F49F20CD800C8C40080831977DBD284737863D8419E595B8\n" +":40D28000035E203A8C4789CFDC430616A416A82D50EDC0F88A9221DC08490127AD230A8826068EA306119A148D004E8491BB489E4441EE216441EBDC0CD6C708212772B007\n" +":40D2C00029DC1D067066241F41AD1F707F314ED0094D4034650850EC0F51F35EE226F53C4C2654E83572EE2324A9E8992AC6CB81051A1E8160DB4CE55D290F5CAB88EC31EA\n" +":40D300001E2741AA7B98040F69E7888D66E06031EE0E33EE235400F488C405A9F02C809A1CFCE044002CDAF5BDE900E049E04078E14CAA347B88CD3024F7EE98511DB91C16\n" +":40D34000715142A745DC46EF204D30C31A1E47BC1EE1C130CBD45425C4C54413E1F6E61077110A1E0CD53EE2223000454082034950051D069C550081B48042CBC29FC5E0D5\n" +":40D38000D9C2CAEC136FB9D491163B886840347D8B3A2C98073740631F33971302898F7275080A2196600555160E803C4E9EE21B580E2BA81101E3902A605092038A24EECE\n" +":40D3C000B80B8CC6B56430207C969C43C819308F724009C5E0184103844028EBA6A176E91B5D1E3E518000A24C809C8A187A8F08CB10100AB398FA2828FB88612C2B0015A9\n" +":40D4000031D9F262E074A00285A503103CCE0B7BE8F8BB7B906C3A16CC000D220092EBCFC1E14245EC9D51EE1A54CBE3D008F1B4B885BE4EEA2F1D02082BD4ADC5E39DA37B\n" +":40D440003E7BE53C408852376F0A12F48CEFA5E12A7887C117040F93BB4AFA0808011B749F9AF1C8BE3C8048B47A684440A16ECDE1D1DBA3E60501280E23D0283407CBFF9F\n" +":40D480000FB38604DAEE40621E7BB4CCBB20646D1E021DA442C301DB6BA3D54CA368F1A54074A2780256EA43B87F586FB87FCC02580740814DA04C680C4C3ADD206611033F\n" +":40D4C0000D01812EA4F51260602C8600409301EC3A3DC3F420E01355427872B4B13C008EE1F960093CED6E88048F70FDA6051A0280E454FA3434991C46A1D488AAC2018D6C\n" +":40D50000543C9BA443705BE941432E0E3D3764F74CF0F4CFB9F74CC95C7600A0FE09829DD33046702A7017080EA04028BE89491E89922034BA8A2C48E21FF833E4B87A7922\n" +":40D5400064278FB079C896B02964A020067A896859C7F41C4540B9D7A9001E4FA12B9800A9E28443C257242F243BA570B0D707906A046295206805C8F54B588452B235C2BC\n" +":40D58000CEB118480332A6B11093EAFCE10964E21B2904ABF4E678B52654A9030165036AFCD1124D60746D3C87E2D4702ABBA57CCCA929B1675134B8A18D774B52259459B1\n" +":40D5C0001AC0A70A0F10801A0319EAB27234411C68818E30738A884C676985A11F386885067BA6F0BC92089744C81048C774DF2D87090EE7C02090346444220792D4A1F5D5\n" +":40D600006109E42F88563C96A72F9F6BC40D1CC9034BBA5087CFB7A3C477C44D02C6AA2A43C1586B0484F774B8102060802058B512813C00983C908C580440B12A210951D7\n" +":40D64000F477308E409314FCEB18252060F501D0C317616F8C9C00502C1E862ADC160D20487BF5DD00841D922E259183DE712200F29DC1038791D61C4202C8C23480C1FCB9\n" +":40D68000F38403440B1F4B3C0AA03F8EA3E8EA3C0EA589C05894258804591C202162168C1DD2DC5E494C4328B8BACD7269401D08889C7FC04D03D3AD0608092B826200D0AF\n" +":40D6C0003CB89A5978870930E82DCE524C22EAFC6484A500D41541A074757E2A679AA5F0A07201C6502C701B219672710187D4F61D5F88A8949846CC4A6C44B804591A5EC7\n" +":40D7000017E440D6F5EB09746338F57E0BC049A55E04FA04975186EB8D04582F40E0CA868883D5F8080126755493460280F07FA3A352041C35CB3F65C017575C089BD7FE7B\n" +":40D7400025D5F7E8012374CC44EB813E0AF60E608BD10468F71820F68C217A30910340A9260A082138313E817FD5F7463EAAF57D026E204DA00FAC58CFABEE889A48005F22\n" +":40D780000818163ABF550EF16E209FABEE93022D022CD2E0ED8EC1EAFBA2238792D2502E4011DA16A97097E124AB594F2DB717AC8F8486E970F1F2FDA884601781FF4C08F6\n" +":40D7C000EB36C54C3EA90F130C611E5AEB37B3EE3593EB38A523D1038F147B2068CA3603AF56980F533C88167755001B43CFA24F080F0C7C5574308020F1F5F114B29A479D\n" +":40D80000A9DD0802E65128011EA800302436057A6354872EC1CB1180D91F8F00E47604B8427884DE096E2CA802E9B4510CFD8EE056540E824D2F461518540407D2C2020F08\n" +":40D84000E44F0064D1148990ABAFA648B9023A45B8CEE057D966623B758B8913488117001E01B0F00128F8D8907B2CFC423E2CE25EAD3C10241013BAC12C6C960221B247A0\n" +":40D88000E5238981E5B7840013442DCF6A440919AE84110FA9A494E94F51ED5A51B9C00020ED8080B009FC78425E735410B90004D00F488080B938FB1DC27B2FDC4B00B461\n" +":40D8C000D10EC7022C0B1082DF36178F73D517A51A4C55204601A812204242EC3E2E43E18C3B1C08302C0D00432F05B208065077A4911C640825E1209100BA4E844AA3635A\n" +":40D90000B5D190103D680022420157114512A3C2F965DAA9821575D570922C59F604EEBD621043B5EF8A207A9ECC7B13E44C943D0C6C2C09413747E3932400FFD74FA44020\n" +":40D9400017C1F7AB6A88201589503C0EE9AC51E79BE2170F01EF85F7C4030B84005C83050220C44F340181FC042FC0E1ECE598E2183B78F4B972F105C5A5BB84EC441A3DB7\n" +":40D980002E741F43281110CE95305809ADF02131D582E04E04727E0814EA68E54082124C398BC2061A88837DEB388E8280583FCFE1E0E4B3A80F602E0411E9ACE1ECC9C166\n" +":40D9C000E6A065E46CB1ED2C312EC13EA7F33A3A1E81751A50238E4160D202E208443FFB3F80BAA880884ED9C8428F85D000031E56B20A3E03C87A4A8DDDF2CE261859E8C3\n" +":40DA0000C4F1A405DB7F6548487E501EC4C9DC87E4C4050068F3CA38B03AA1E56552398C7DB7164C1B6C880668D8DC41230316B01A9E0034227B414E36100B2A013C13F49C\n" +":40DA40003FF881BD3CE060093A03970021DFE84C411E4EC9907A3AF840904420043B8D1D087104822E97EF44F4E9AFA18C30FB888B0DDE30030C38D58054C6EA5D334A88CA\n" +":40DA8000F40A9403D0384E84F9F0645A80F3487663C220393C1477F2A1301380E3085B74A0155D0B8C584163D240A2C30617328C2304A50281FE893012C3A6FB06F5A014A8\n" +":40DAC00089B0400833FA5A504A5F4E78198FD084E255DCE106A9565C1065180005143DCA5859E3A2547662988826B151D9A44F29F668F9766919F6690B44DA998E8A8D03AA\n" +":40DB00001803180FAF2A850F3786120CC0184DBE90383850207AC83C5A1EC7C0982F24041EC3EA4BB08D48B8108B502BACEF460C02CF27D0979BC18BA807461C00BF1D25EE\n" +":40DB40008C180DBE35D81E231E3D6F025D5B7E2059B01F9700416A0616A06F55849153A3449A78252A3C440878E2C0F4E2F89BFCFDB4895EB7B7502AEB7B431D9207BBDDAE\n" +":40DB800050FA71707ADED44F840734F1E201CACB202FC26D423872E353187C91747DCA8E2680DB8220FA25D486C9221D985422FDC3C38CE00310183D0B7B06B88B60B7A7F3\n" +":40DBC0002B90F1E0A9FB1DC90B72A1DAC8B3D62B6218746298F683F2440702AA9B7008B6445BA8703D8B1E06472223040978104C79C981F850547AC8B870F040A9E464D1BD\n" +":40DC0000008D114C79EBFA91EE27913CC8204BBA9B47B72C883F0050EEA2E13E49204C6B04CB81A0D21331DD01A21CE83E840E27902642435C4AC72C3D50A021282C081979\n" +":40DC4000E3D1E859765610E41F8F1C9432C805F021589CC690880915E0388009161D1C742111420E0C60E97A02754791793EACAC941D4AFC45D80809163D9A6824616060BF\n" +":40DC80000D03A771CB0980095790087E8A261F1DDE8F65598D66801B200F17400C58166912881006B053C5D324091692900602399C1815102811253B29078BA187D2100438\n" +":40DCC00066F52CF8983EA1FC1ED4EC1EB9AD103B8DB00992075E0A181F400CEB9B92EE0B9127AE9E1327ABC4CBA248CAF988057D991042D02E0C0E0088205875AD60F6BB45\n" +":40DD0000D0F55F00865D36D464E239C644061A1E70AC44404414F2CF3239C9C66023DE16062262DA12C11020AC930F0ED61098F0EA89E501CC8AA1600C44090139B9821D15\n" +":40DD4000A4BC79894204971D4ADC38A50066B6A15FF613D888182144A0F230791AA5E9AC5F79B66CBB38A44CBF282F098E5A98A050040A941D5C98400821DF3265E59691A9\n" +":40DD8000AFC008183A7C951256510F4960080868965E25EA21D3ADF3C8402D406254068754082540856E3DE46019B216841CC4518028E29F4B9C31967204E77E1F4BB8179B\n" +":40DDC000894ACD80288205480EB6262E28D8D5E022007220A418253C954A80EA245F930C0BC070C7E507F2004661E4A21FC2E19CD8EFF7D2EB4DC139BAD300B909890F42AD\n" +":40DE0000771106103C0318C790BBAAF4CBBCF104121E8A21E84E89128F854A08843F19C780143D77D7388FE21759B21E0DD03BBA2520BA20E47D0C6E2591AA591EE59030BC\n" +":40DE4000787168E2B9184B20DEFDE0C2C70591703873D2C3F15D34BA0145550C40D71C09F04BCC44081D0037867D0BAE51511AD54F22FFC4D763D54EC390BE233F5CA22272\n" +":40DE800033264F065D09A259F1240411557844F069D87C05D547A3977824F027D7294D16A0BE37120245AA9321E50870F135C0F5CA499A42A934900021E13E03485326B95D\n" +":40DEC0001099428F519D88EA7B212803584C2D437EB9454C0E343ADF944B5157B90AA49CB26475C59A1E515B10E0F0193AF7B089E078D31141BEC9C2927C6827FB215C7955\n" +":40DF00003D188C65A827CC0AEBB3E347D0A9025A8B04F80FA06C32749D0D49D14C9D05EE5F0EDECA10E078088B5048F011306A8656A08A64F09DDFE1E5D721C44F09A909CC\n" +":40DF4000869062BC64B20E4F44789924F0ABD71BA84D4241F454D098C4F8E18D40D8EAA501EFA6218B2E9EA910407A1B8B51E33FC840627CF12787F1FC0CEB90447BD3DCFA\n" +":40DF800067E31FB476244F01E3D05DDFDFC439A144028285F801DAAB0219D291170D00589801CD104BD70B431602C75CE89001DD8463C3E307D30FC88023085BDFF989F518\n" +":40DFC00051821D6B80875C4D1791B80CD46744005D0AB45D7140B66EA1DF9C204169D4B6C5741227BE2E2105021137898C19EBE00951EB7471304AB1F8B3C77C00A5BAC63F\n" +":40E000009F001E7F02BDFF553D8E1C75720771300202E777A00344EE4BA03A47410455E006B9D7D801258B4CBC0966774BC81FEA2701A9E2F66D198885F5AE0EF460354E11\n" +":40E040002EFB5C43BED69538A4E64D2B972C24A778C018A090AA538016E6332FBCC2049E40D324009F38CD08080A15850E11B019A86171F951F33A20F58C6091E4BF480285\n" +":40E08000081C2302B9B4025B809E070113BC9204B9A2188218200BC379620A849DF6E23D54642220E26567EA0F700D0F19132EAA68110E304404E2CBB676C813EFB744637B\n" +":40E0C000881266081A344B818FBEDD53AF61F1BBF1690F061C8D62CFAEA9C481E278620F045E3CCD1B160690707BEDC44B615099EFB7012D855267C0CE025B0AC4C8870692\n" +":40E1000022B93360B0280B6AE501160C459264461C8802D85A4027A5C2010E30A01DF7DB588839A1024223749C75AAA90C20F84E2779C6750EFE342EF56220B04120CBE13F\n" +":40E14000FCFCBEF43BED984985425DA82A9251410A8429F445CE3AE43EB9781EFB644BBED8D2EFB6243BCD24BBED84A107BED8101E3BED7D11E39C4E0909E99AF4CCD0B36F\n" +":40E180003EE921C82C42E060B24C0EA0D0EA1D7624089F43A8B43AF820087A2790BB0D34415EFB54202CA90810C4A81DF5F020076E70880792145D0F003E4A683EA07D431A\n" +":40E1C000A06947A7FC47904C0F6692880E4C029D8016618103D97943AB261EC7913E1C504C0600877C4F97500B97B3A247C84C23E39AF39A866426CE1023A8291163B2D19D\n" +":40E20000048299449630482EC033120E683995503BC3CA82C7A4734744845ECDFB1ECD9E1B8607B90944F12C4D610C0AF0F610F5AA2095C167971CC4B6014703A80E29A1C7\n" +":40E240004C060780805084F0EEB8E62C896DDDFC43E5C541F651E881C454708145B00FA4002852EFA01301D0020052942C383C43184068BC1677DF5297540300472BC69EB5\n" +":40E28000A956202492840C9CF2BE340081EA247A7030581F90EE1DA1E2B28876E9521CEB5C41705EA744702CBBED0040CEEEC92363CFC483448017EFB9A1038E324083EDB7\n" +":40E2C000CE81004D4097A8384C00ED8F023481FEA4D92EFBF93234BD44BA18CBB40C241081D1BAE246F839104442EC3E383BE27C7AFADC8F5380D5063B1B4C46B0089F3CB9\n" +":40E3000002EB838B48084057A00010EA2243C38C1DF6CC801398B88F7C6119B08F7FF41809DF6D0E0466E2861DE1B8684B8EA260401A2D395D895B1000C147A82AC7BF0CF1\n" +":40E340000804ABB2ECA64134495EFC2F2033AB91C58257BF0B480738FBB88CCF4010956C2048412C52102841CE9B1632A54BBF0B9361BEE35741A03523EF434C46C9F9DFE9\n" +":40E3800085AD00C6E1FE75DC120020521671BDE302CFA0B3BB99C7B1E64400ED7DB1F5B5D8F153D110EA9C6E9C037FBEBC44CD0901400C8C2D0A00861442150EEECF160224\n" +":40E3C000250AB5020CA0094170400F03CDB24C821F40228CA0010199A112493EE90A4C191C8F81CCB840B23DBAD64074DB5225E383004C8809C541CC5AE650220AF9A7343E\n" +":40E400004681D4681CC3A1CFC784C27802BE3CF12E2E30205FB5C4C44BEA3021CD4D108FC6AA220281FE6303120C722080AE8E311E91EC9148E6E90561C22200709A0810CC\n" +":40E44000613D0502268889143A84214E0E102F82062E5F01C427BC4E012ECD371E9CED13080C2CCA0C60A057907231000CF440032C7D38A384FE0818040C2F2B8819D9C588\n" +":40E48000D1CBBB9C8B9C2B080DD2B80595F85C8AFCC0B1C0C802CD2B2B10FC077B4B104CA8521F40E04EEA11EA0A82EC78A236982602DF03BB8FB3080415D0D88F12B610AE\n" +":40E4C000128B8883DCFBE59BFE209F388092801D0F0232101D0F823110A0383C65A444C1746FF8CA304F60389E08C9806CBD01390EA91D203F599390106F5D685DAB0020EC\n" +":40E50000B826210EEC744A91744A815FA21ECCF3100B8872976B6E90418FA48B69210EA044E622013C10F7D791952040DD3F14395C9200EF80EEC7ABFA489E08817207B184\n" +":40E5400050863C84E50E9649360144745A04C0465F8891C619280460E82011E876841D05A3D0EB0821C69413B077ACC9DF8F01677EDD286F573177E2711B1DBD2C7C3FE476\n" +":40E58000BBF1211238650F47E4C8E1C110818CA007709FA6156704E4085C72486E6080280AB010CEC1DBF9A274814434295BF0EEB40BF9C0F58702D8A3E85C729B07BF1292\n" +":40E5C000162453ECB98235C4F2645927C0BB1687641B08757F496905CB91390885C60F840127C09264372F461DCED47CA4523DF7865E5E97160031050D5630F7E2310F61B2\n" +":40E6000060CC3F77E2225A63C2C8D01EFCDA237C90208EE0370B105031324B7EFC481024F68536021528A08602DC0CEC78C2263B0CFC7082816E67FB0A807488C3DF1C428E\n" +":40E640006379175D0BB892020D64791521121D97D238ACC41E3542527416F53524941E9433322C0DBC3C0A0EFB8B2F24498FB27EC703D8F59240E56094D900A841A3252E05\n" +":40E68000FB7722758ADF33272F987D973830E58D9441627437BB68A30C96500DE2C7B27DE6E911EB9C040460B0C03540D3580927812057BF02878D7408C64B880DF5EF393F\n" +":40E6C00060DA0CD65118E8405C32187A8702623B66B0DC98772B001C3D4FC5D74A287A9334420683A2781327BBF0510BB2402A892872EB6311EA5EB1278142783135CDD8DA\n" +":40E70000D303940315F5DFE13019200AC6101A7B28065DF8585808C0980029E91A069420F7E08082A2AFA86D50028CAA84005FBEB0C6A2400C01948CBEFC12481729017594\n" +":40E74000005589A48F3CDB0F3F282ABD102C0420BCA9CE5A2162C23904A75272C9E41279ED484BAA405788077E0A99149180903472A4863116DDF8288459744ED90BCE0077\n" +":40E78000116C0BE955099640D12A24C224018F02A38CE2268955DA37E3DF8367D2953222858D715643B03878B33847712083F43B48985ED9DE12602EB91C0E9063C56BC440\n" +":40E7C0007B0A86893797E4241132106570093261001081D2AF624116410183E049E909FBF0755340961C72FCCFAE31CB22DC4E9EFC033028D024871CBFE46253239708B70B\n" +":40E80000843BCC04C7ED72318C6880501FF91589F61AA980C44D2A4C2E44D51EBC513C23F1EC814C00F9DE004C002EB284B5EE63810187D0B21078AD9201672E0557B106B5\n" +":40E84000CB944908BC3B0246A8BC6B8BC6094E740066B0D97800012014AC012EFCF722A40A0E821C6B40749A232F7DFB286B0C9E6015234055F2B2F0F7DFC10220B8C47BA7\n" +":40E880002D747AA979E28C4203410F1F55888B8930FDA0BA274817C8B60BBEFE5702C0826A7441B024D2F511C4B8747BA9853D1EDC6109A2259322EF82E111EAD9A1CC9473\n" +":40E8C0001EE6DA2EFC0063BC6A640814A8C24049149823D0B6A893BC92C080427C00EFBFF33A3AC9FC7A92C08E41C0162E00AE39B85DE70444E8418708494EFBCA2ED42F4F\n" +":40E90000301BBEF3089FF27F38DA2C815EFBFE40495105BBF0645CC1554028DEB1B1301029711CC160204B1C983006261023763F1608AF3D9E98E2E35860D9E04360302DB5\n" +":40E9400042617808DA7DB51F380A90108294F00B0E82288EC841D62408106023AACE1820C4842C6AC38B703A1023C9A4C8F522010841623A43E2108B047A9130BBEC890058\n" +":40E98000540E087CA3AA34780BB013A48244E3E9BC11A3A3E1BE32C54037268053C956C4090488B09F49023EAF761CD2810489F09FBF0B921490F658E8DDC514ACAA20B445\n" +":40E9C000AA680127D44176A76130051A2378140F5C5C802BDF86088126D54121C9F2CBD52DE2410F5D8D5A2101072F121BCD53040208732101405F66B70C4900B6F8185220\n" +":40EA00000189DD1F00D43013FD9B2225B8000B77E1B0FAD534C46004C3EC6191288781C3B14B06F4A0EFC38308D4A1058E93B127107948034058C38AFF184C16777D5AB951\n" +":40EA40007784071E4108C1DF388801E390423077CE19965E457B3F58AE0E4BF0846019A20789C108C00A9180BF7CD3908D0A24682E813DDF34E9DF1804A80372A11A21993E\n" +":40EA800033E7EE0126409A280680644C041ED4569EF99F1C28E10A04FA45BF1BA5440303C2CE5C8C881D991E2690546C733ED20A728A0443E975A104B9E590F617A1F54202\n" +":40EAC000288223C0E9945E46984659F7D1D9966A859854598186C00655719FC4FB372C415EFCFA100CEB05339B0BC112E2271A1995239ECC22796023E73611040A7432A126\n" +":40EB0000F1A9510749FF3FBE0825D2B24609130241A3040049622B1620BF2B432F50A71619F1C26917088101EC97C4BB0038FBE709209FBE7493EFC3830901047C62905D9F\n" +":40EB40004AD45794076A2E9746058805C7AA04433C008832EAAD21EC85B3ECA2048092EA9D80E6041AE74F4900204780006F941484DED5F388D204F654208063CF53751F3D\n" +":40EB800059CF8E0CA03E0811009A0809A110FF3B23822CC8148422CBA47888EAC27039AC4428821E23B019840680A40D3DC9010C6DEF9951F64409754121616B0930903058\n" +":40EBC000A4160080007D0C242CD69133ECFCF21049A100FF359E47522109960850B39E831E0D50A22038033852531E501679DCB082DDDC7620B82C456951C45BEAF2A234DA\n" +":40EC00004B9224200584E087C42BA239EE25D20488A03921E1CA2102010D55B0E06A83D899EEE2A133B05B8780DF44CD274E1278C2274A21E4E21F8A21F4311FEE8983F4B4\n" +":40EC40000D37C9530FCC006570B80CC6F1C6030FC6A01667902710F4611E03502623860617562A8B1E2CF791421049002B2CB66FBF09A9203CB5C09A0D777420B8CE103F18\n" +":40EC80001C44EB19B482448F2715A30449EB17A1C2F803F82DC9F08471168712EB14801E00F5E7E00A09DDECCC3C7EA04111509E930185E7A16104C7F30BC460C264842184\n" +":40ECC0007867D534A21A81C3B06211184121981098401999DD4DC2364A0784A9D0A004192509240B09810E12B022CA3EF7C410908DD132151801CE908068058F745406206E\n" +":40ED0000E90050790CF41782489E259E97E843FE98021C0CC01D1E256F7A8A90F06149029483429B4110F239EAC30BA4AFC7BC9C4BD9CBC36298C3401D8538708021035D0A\n" +":40ED40004B3F5D8116391393C6BA058F56892203966162A01E350588E4FFAA06605A00D7914F845838410D3638931E1F3B10681298408D3881006C4FEEE711144B02600D4F\n" +":40ED80000241740D0F36530C2002A08A02B2006397D17883DC06C22A836349600C75DD0220F80C29E8BD44F943D8C9E200101DE36C231A041664B4F5DC791EC68091E45312\n" +":40EDC00081060D012BC8A863DDCF226B893DDDBC4040041677737242A22098A7DD81422B0700BF5522C92214F7B76981E71058304810D16517915E47BB99840F33A2840571\n" +":40EE00001DBA5038400248231643F10399C08E2070280DA12FD35EA53B800E0404E2A8286081167E1368641D46BEBCCF10201B15BBB9A045747DAF2C407019DDF9E24081DD\n" +":40EE400004D4794A003CE9C9720634E7C22CF774918B2980A05A40B00F1B784844328A4808EFA3010380260664C21F04E89029E457910601F0F0A0EC631107C22830D0FA6A\n" +":40EE800011A80B8C24D115D3D46255033819C2E140024F521854D56808B68031ECA7E1050783301314BD03303D45E243300382D4CD0F2E5C1616B03CFB890845C2C018EE57\n" +":40EEC000FE443BA46898DC7C8772481618F555711A984784D010B190867DD177F1C11681302BDD1803B1344F1C7D10301316E691D6AF0953D348E53A0E07E0C1A000D8BB39\n" +":40EF0000DD00C20B10F54C02F23A7131F1D400860098264C94DE0B1E1A99004C5EEE81C117D106C992801804CB28A121948605164AABE1F5A8D91100BD5A974D648C680CFE\n" +":40EF40002580B0098BA5B751CB18300B7777A0FAD4A440A33FBB5A04624677008019044162DC40020BF88118D106CA0E9C161292082C3024183A351264C776F509FC63085D\n" +":40EF800003A970098A85B5FC823AF736D1E92B04C4096C0E38E4802E1047A1B34962201C6A4681D7AACC28C1108131A4B6F07721E2EC02D8070546AF4BB308C25B30088662\n" +":40EFC00005BF5C579659F883A359200C032181600E0263196C000E8357821FC416860EFB0810241317CB6000AC0834A3C5726802631772F4084FA3EB3265000FBB3C44991D\n" +":40F000004413183BB9FCF4A182C1644328964400B19C2C2217773395F350008E7A64B1A54A18290CAFD34A4291A54792A4EE7676D17A6D146938D2B2A52550654ADE5A19BD\n" +":40F040005B82A64D6E938776AD0B0322239B3009957183F7843E859D29C8B065D231199D8BB48676B86E2295221F2547C696174B9316B6286910EAC246B551A527D159C298\n" +":40F08000C104BEFDB0CEE089695A84332F5294B37A058EEDC5370AD41028C700473D43A959CC693A05BA4343F5568A23985FA7EE1AC9430DAC3138869E906940F4D0B8B002\n" +":40F0C000401814E4AC6C763A2153BB89CE92A001A9082300F0A101A0D0C0786424B018163D8196B52A4674650A480C3400D232C6FA14916F20138EA59058AB30067B3B0C1E\n" +":40F100008268711D8BA1CCC91D8DA3C015E8D1313047108BD3F24211F4E550987D261824B718FD9064724214495481A1CC1B1DC3BCDB611AC06E9DA71E4D38231C60EA8280\n" +":40F14000458AEE108CC1448710BB59904523481C188EAA3804389E098B5DCE98204F48A188B96EE1A8F0300910B7D211460FFA0E806EAB0CA2A1C28F1872844191901E46A4\n" +":40F180009202130151E2634519F7DDCEE27B900410E2541E25F78828098260FF32AE5A2EEE40306D001977788F91CD0C242B334047A82F088DD21A10262BDD223C16544724\n" +":40F1C00091501118081106F0102D020028F1218529FC6FAD8C35100CFA0AF8BA65C8B0122380063B249C40A3EEF0F00881500C83EFDBD2087BA254CFD2A06306CABD0058DA\n" +":40F200009E279CF456B81207BB998400B910BDB2B866F5E044380375A2388F8406D4509021766A604A2008058DB818180DA43A74E469D097045D3902E4EFF38C5180D40CB5\n" +":40F240008100D00104A6B2358C60408901C41340C6200A02F4481E8AE3A42C278601EAC130288F427620D1CD3311E03B1C810E94F9200C293D807CEFB2038DAF50E408035B\n" +":40F28000E0BA12BF100D12EB40CA43F8E798E46078C67DF86D884B6892F15ED0C52A051B74EC0B6283C89E06358262C16C007947B0416EE875208033E3E3E35AC010420937\n" +":40F2C0002E9042098AC5B776B7963DC035010A9801006E0CBDB58657B80827DDE5E562210347118C0B0EC2408C11B0E001E129E011923A9922ED6D51EDEE81C873163B60E7\n" +":40F3000078804134268C1EB554113C2F712F9484F94004BD269E211F7EE91103EB8C81D674A19C76212FB2756421F3685908413EB13D0EF33419181498E2C40820AFA52F5D\n" +":40F34000048488023F0445EDC660098F20B02627D0F01983EEC034128013E49EF3E293F1850382D78406062530A5600204C4EEEEB2745059028DF207B11946A7024C3DDD86\n" +":40F3800062D0A0BA049B7A68E40070642CE8D5E48F20B38E8F176A98975F9E0F25D4104BBD5004AB3445CF5873A0C14BD2C105A0092D83B48D0163CB6CA3DEA68881E5B01F\n" +":40F3C00059DF528236865EDBF82EB295260D204B4E1226B0A074068688A040E4EE897018750CF882640B1062086921C403397CDF243D6FEA21060551E478E2068820F0C73D\n" +":40F40000C6F9C4F5F23DC8F7D6989700701E294CE182AC070F476109E0C1B2C4680C67D0F02A5300B61899640827361010769020262AB018CB83850087C1404478F85E94CA\n" +":40F4400066B022CD50E31C09763188F7A96172E24160A938392911007DEA5A89D34A8791A98DBCC3C2DB425C79B1CCFAAE784E0E88DB32180044E001086CC5F2F03BC0816C\n" +":40F480009DC00046F79B5CC460F6D4B104BDEA7A407A332904BDEA7C84DC30E4707858047BD4FC7C12E83EAFB32F6CF7183412F359F1B1681A60C8F4301361079197489179\n" +":40F4C000048D605E5622010DDEA726437862707BD4F90014E1A620CE4A609F08E3522E9F95963C0EA23DFB909E8FE0B026177A170F97FD8C241A1111F0240ECE2C3B110179\n" +":40F500007B6128D8299909070C85C10B82CF38651FB5360C3AD6A18F51E78E8D60453008532E02AEAF5920BFAAD246104550304A050A0EC3332E3F3F21F4289149024060DB\n" +":40F540006CA2ABB15947B66287350444647C81AA3D8FC83D5EB045B757AB976F6311005AF9D0EC7D3E2A27C62F24CF62610275518039915916826201DE2A62127797C30882\n" +":40F58000222398399143E770D1F547F8E83B8BABD78D871E9F391EAF5F40E8ED0FE2034FA050E06840010B90B3C5C0C6060C416757AF2C561A3D21FE21D81A07705C8967A7\n" +":40F5C000CC90A5D5EAC89B8689BAA854E8FD887712BA83E882102834EA0F22E7FC039742387C83ABCBCFBB24858F575D90DA0A1A868F579315A5E0A9F500008299A4C46E67\n" +":40F600009208756AA89999A4AB5260200222E42A2E4C919C3FEDF782387B2DEC8401E4BBD41F89A840A03C9B5D7B7A20F901E3DC32207A5F94C72ECD3A1057A3B2C498828D\n" +":40F64000105D10CFD3EB84037B4B6C4EA1CD0CD185BAA8D87AB9FC7B519449208420EAA121103AA840441EAF232EE4611EAA112103AA5A0442A1E254A3D68006C50E2E9D93\n" +":40F68000711A9902B28628308344108210F6D0749741517464F5BB7171B562F0ABF17AE8C04593CC9A9F0BD366653EB534478FF58A7833D90003C910A40A75B599450E3043\n" +":40F6C000743AC38CBC9FD839B048F5779ADCD05C8F11BA8589088D94C060268AA080F119B4198474774EF0E600884151E43BF8D148430043C2B5A2615B4C42B405AD0D8882\n" +":40F7000089FA9CB2F252609D85D187E15C520ABB96551CB542340752C3AF70902F6E32480A2391ED62711C01111081EE38E232401278111548743C51369E7248F88EC47C6E\n" +":40F74000C39EAFA82A4C04EA8052EED56300F3844C5BEB02341823420431D921D5D1A5D69A239C3037D30123D5D287D5BFC67F25DEBDC80A08F56FEA0731066809DE2416FC\n" +":40F78000110793ED9670C1430805D5C06753C7D5C006250F48757039174071720F75701A1D5C028024A33524C7AA990FAB80071EB898E0101A1679B9011024C2B3311825C9\n" +":40F7C00041A21D8EA45816575984F479226B073D5BAA61C9201692C0175700A202F2D0043A67567B2778834864C5EF54EB21ADB62EADFE4C1F55F1A878B5D870C3E2AD7345\n" +":40F80000006AB07AC7B10ED40B109C13BB50CF4212E5F1103C74E853389A05D1DE790F986303C74082111108103E94571D51B8843CA49CBAE85042E3442034820E5DBA5D40\n" +":40F840002668428FA2A5245126313D0EC800205959D6028A758182DA3B62CDEE2CBA6419D6E290A24E4A04CC4764601D1E51E449131B22C16C88C5B3EA084F72F084E2E343\n" +":40F880003D5BF45A3E44851283CC93089DA880C62035D6C1C25805E6882C919A6882A549410418A523C6470458940688290A23627C950C45E60A0449108BB5D605826830E0\n" +":40F8C0002C02C26831EB3A222E48E64B00B40BE75544057AA3951025103C9A0539067880054F00152EB4A22BA98BAD2910BA887175084E874C6599BA689BDD7DB65E0F5732\n" +":40F90000431BA975C2EA9C9540CDE0ACC053EBE0674D05C330D03374B883817C025340CC358CCEBE053331500E05340564C0187B04A70776221760DE90283023D7C0C631FA\n" +":40F94000A4123F66069252636B0CA813C03F5EBB2203F48351D8248B3EBE051F46909B3C2A8C5E00D22BD471E2C1AA5693BDA5BC24EF5F023A3BA974B450B0079DC159C072\n" +":40F98000B25F8888399FBC09A7322743240532E4042E804E655C738A0480C41D8E03828015A5A12608E0AD01C4486DB0430E1250278282EBAF4747C1A342057A7DE075DC38\n" +":40F9C000C382B40B8142E4601E82E2DBA7BAC7AFB450ED7A810E3CD4CC2047706E21EDF0A2608C2D84802BAF7E9A602B70F12DE156E8741620D91805FB0608E1D785222B93\n" +":40FA00008004F1BB80247C7756236F5E4DB1A110130BAF274733145CC093874B20232F5E4F88CA5C20050A57C803431A9D0F8AC43E7B5E2C036037A3BD073070CCEB09A04E\n" +":40FA4000680B7D78DCC8C287AAAB47A344C404EBC6F4C444055510B42844B487D47544E8F94BE440934450D1F898A0A47AA7C24283CF9D841D02001210703E01DF006D8F68\n" +":40FA800083AD8408EE4FD1100188910600A004C4C16421E823D8ACE3A147104C6DD1FF908881B1A3FE100C9B40143D001104D710747FE87616D889ED936329A01F0C23CEEC\n" +":40FAC000B9C899F0F5989CE685AD802D2601B2647CD12F88464C8BC4C87A3C0C5D784290285380FB2A511026806658075AC5431642BEACD454D0F0223C9A3EAF44134C2F0C\n" +":40FB000034830BC24099E56E924C80259FA4FF04B2C1A824EA1E111A18200049247CBC0C212901D2F227E12F947AF0787A0B68C050642B303AFA790F31AA18F970E09D9D47\n" +":40FB40007D2CA6C44C97959E0B66761EC30A42E1844380D3AF2317EBC864EE422D1F517B56FC9C044F05CC23A3EE57AF1D0B4C6C7D70D45C675E7AD4BA7AFB60C270C3C6DF\n" +":40FB8000B5455BC87867584962400EE4BD881AC4AF755AA04F0A9D9B08208F362F1C02865D011A2BE2A5517FE8F7D1109BA00781C05008FAE92932F490F23058B3E190D1BC\n" +":40FBC000215BC0F22EBD94545E59512EAEC12024C6B10976AB19C39174993C17FA5950D8CCDB2EEC061103A63FC417F31E2A33827D4D3C40B9D4138004B0608846255A9848\n" +":40FC0000B42F8438104060755A21DCA6C52553990297B5FECB507A62D4E0583D441127811F2DF31CE28CDEF12C094E0200B9CDA0059C4BECC083F964F75F728D47A1D7DFF6\n" +":40FC4000A3B2F111B0138868F4B8E10434FD394912C271722276F24954F07A0014420F566E100E72174C799AB8872F428B232211B4BA40B7180B7086B602BC401F01AF31FC\n" +":40FC8000007C08B09816E0296E23601F3246C88A014255D96B1AE1492E1504E200344A0F417F1EF3130CD0C09036370D2F5888068853E7364363AF525027C0BECE881B877E\n" +":40FCC000C08205060EBD482CD6221D7C02ED3D1E8821175E8A10F06DE41109D040A0127831307D477620F75E9722018F685C5A1A3BF21CB22486D98009790B807C11F02C0B\n" +":40FD0000601D027C2CCD0A2F54730E6778ECEBE4120976B71137B27E4B13E003412049E556940F50AFAF6D11B36175DD8161F41E011D8189B7B8A1D77705B3EB0D9A86D0F2\n" +":40FD4000827E6CF703A6201EDB4811B8EB014090F8271038FAA17430222215C60880FA63F2EA7C9583D00D19C10EA7C86F9D8B22C160ADB45D0B07428DCF600112FB10C9B4\n" +":40FD80009CBD4F8E40D8785A980861E70303A9F1440C40006C0823622C3F1C7395700753AB8881272C1904C0905A081DE60820C1A06B78EEC07A9F05E58D61993585F40D81\n" +":40FDC000321012340CAEA6E91EA7C35FA990CBA9F147A95D4583115FA9F0CAB9808638CE720005F5E378F87114422EA6382EA7B244BB4A1CBA9EC0491E6BAA358A1D4A6860\n" +":40FE00003838C2EDA02DBA9EC52038928A443B712D122D162D1E008B40458DF9D0C024896840323948447535316B44C45A1BC3463D8B603D4F5C862A211421D101361553C4\n" +":40FE4000EA7A6188440840C047B7CC45805826EA7A4202D3D85C07D08A43E1E1D2C6141EA4592CE0420BBA9E8075CD63849C0FBC83910541D1B0A01107530BA9E9CFD420F9\n" +":40FE8000E2CF9F59A42075E78EB2C7A19F8C2B034968C3EA7A64586A522604608FCA3D4F4A831D4F463D4F4240789E4A985D507E5B0E68F53D18FB35704407009147BB0E62\n" +":40FEC0004428EA106476277109B91A2CB01C9A835752E410CA4C9A834DD4917BDC1A834769054909D4B6A51223327E2E17208FA975D0000D418E146A04CBA327D4BAE45C05\n" +":40FF000019011F52F52006176640CA4F1A82E16C200CA4D4181653210B6580C01178341A4B932E1831EF0557977654950802DBD5F8C38D72003BB7800C097A9F6CFA9F944C\n" +":40FF400058820605143C55C025A77FBF96CC903D0E32603817D4EEC81003978D0BC40A3240530C0E3F4A023C7916F2358C6C207ABB587A9F504D840C4EA7DC4484C5AC25FF\n" +":40FF8000410222753EEA202225A2332184BFA4900510A1009E68063AD9C183404EF0C7A09886805FDF9625E52B21210D00B9A10FAB8EC7A9F804B031027EA7C947A767073C\n" +":40FFC000506A30A43F21DF4582C0CC7F78E1E0440EA7D643AC73886607824EA7EE46207C301446C753871771300847E184A3A343E49C73D9C7C713A051F01C49A386C58576\n" +":020000040802F0\n" +":400000008AB00BAD1A40F53E99604D005B448E46C8F41301E121AD9F3A26052A23C024EA7BE5BAB8E8BA9F012EA7BC4852E9B222C3643CA7587A9AD8800147B08F0B69F035\n" +":40004000114BCD46C412721782D3BB080951C22158F898AEA0EDBB512045AEB2B21212A487A9FE098EA69D2A9431651E5B4821822117849B47D3EFA4381016C02EA7E12A2D\n" +":400080009F02D844EA7E34F5C20373C0847D4FCE55AA55985D62765D719641298400897DC06C3933C21792B6812D954CB69182EA7E153D39642E20A7719491EC08F9A8A03B\n" +":4000C000B272C890083A69206E332206E102F74A5089BD4F8E3211014E23FCC935862D49209800BE2F32B688ECE9256D30B71931E5DC01AA21203A79B849A3C01A180BA060\n" +":400100002BA9F590200BA4C8093091E5FB004AA900BC8341268E56C40D064104AE1CAD688790368017602E0FA64D479BAD0F8259875C623DCE91259F91E48CD010E8916F52\n" +":40014000B17222791AD4B29906E5732E0EC010DAF68DF0F53DC8F54359753E38D4B8BB77BC08FAEC80AFB813AAD945D4F8CA5C726090086152D0F53EF1FA16F07D4AD25D38\n" +":400180004FE8200F597F96CBA240496D292F233E8819B1EF0D8B846527C9FEA790200757D6664972010136FF327C202E32FC079A1C0F826EC6425AEE01CD1319018ECAC370\n" +":4001C000CB3AEE2985315958726A10B30D9AD79C1FE77B362C1EAADE1144A768C4EA7AB7900018DE608F53D5243EE97C92008C90AFD3D9C80F3D4B9223CFA281475DF83CAC\n" +":4002000003D8BC4A965080779F850041D22825DA034238F6E6008E3E815B1902210290043A84DE7F791E536C635F4F8910122A79DCE64F5F36D618C415F2ECD137C0435455\n" +":400240006635866294E005BAF5290EB20B508F0090F0538885DD50FA208F590789228C84C890058843F19C30F6E3E8FA115C7AC83CC24F1F672200B6067B2A1E7AED6C4158\n" +":400280009340538A1820009C08E0990EB2112604E484E4007D6422B0183947080C57759092006A668089D6422C80DEB056202412C4401D6420208856401D241F590888EFB3\n" +":4002C000410E81102A88107190248F5F110E06D810CB100CB1108D10D7CC8085D94AE2209A219F95A344412C710289E26FE41418D52F0EEC1F102FC62649F9A964840F4A16\n" +":4003000032979D0BC8F20F27F0C10406A849C9ACC79D1508023A16A071A213DC8F0051D40AF857E440B213B9DD84303C017EFFDB303345A22217BAD7841C26C14068A28389\n" +":4003400010401A2492061176B4303C05E5C111AEE7139080010950380935480F3F550C4879B6C503FFAB8413ECBDE10489602FA4CD840B3C0040244609B011C06BC87A88AA\n" +":40038000272211EA3E22DC870B0D905CC08753F224D8A25423E37E02077B0078EE50140000000000030000FC00000000420608A43800000370001FBF65D648086A09981AB6\n" +":4003C00074B4D2186D202F465062BFB838A58537688636074436034ADA4EBE4F64FC797DB6CB25AEC148AE1D6768235B4A620060040100F3545BBA00102FBFB2E4030041F0\n" +":40040000100C020480300F9540C811B8144DCA80016A248B6DB4B007A5E6080F00FA83F87B62F640105B0AC002E02007D0F3C2098060201C010080480202008C6C996F2FCA\n" +":40044000BF7EFDFBF7EFDFBF7EFDFBF620601974D400E06010060160601B868E4110339B200D6245D64167F002004F32D54812040140581DD20A1209EF1CA20A8200B02261\n" +":400480000B8240C6B04A7607F797DFBF7EC400003618E5F27130B09001E026C0C2D2000006000008000100020300012400000000FFFFA00038000001EC00052BFDC419401D\n" +":4004C00012BFCC4328D10E9007900760FD308281085A802979020C02B1E2146DAD27A7C8C02E9A0414D3CF580D358868807E8EA137963594F2C0448089389F2A81C0386004\n" +":400500005EC30AE49040E4009C0CD9821E80E73C619800F3708310E2032800BB24E981F8C6B301D00334FA186216EC055201A961B200E1EEC4098D30071ADD800D43A00322\n" +":400540002900D25559027239F70430BE18038AF2F77D419C51C28C4095025C0A9F9398D001140026003E0D5DC089C550090035008AB1BC500B1820AA033202AC2A4608A12F\n" +":4005800070B00FE000CB59620632C7787F0B03F202E23CE07B3870CC36407540B2807E733643243A5A366B4C410861C2D243F203B4A0420AF310A6C00247CC8223201243A7\n" +":4005C000885880AC825C000000000000030007FC00000000FFFFAEE83800000D5C05FD551D3E1A8D909CA3C5FC2291C5DF20A30822983D13063085C020658C0FC06C884230\n" +":40060000987D8622A214148DC08148FFA552C004291BC518110EA0A6100F5E5601928C1099CA0C853079403E9810A8086F08453880B104C4F50040A3109CC247A923E3AC93\n" +":40064000212B8E8F30D4884C1604C1988016027086198408C2431052CC63C90401020460E43309A224190B22402608221AB8DF89E88F8200FE4442140163E62113F183FD53\n" +":40068000A14416C301266302223C4A34480C57A46C889E131220249902718A8C61DEBF4C00C8E101807803C28F004452001C48812C8888030039A0041940511808928630BF\n" +":4006C0008B4F0B1B50D3E1A5E2228A21046A0079418B2C0C6C6980435ADA6B124D910C510682E3831B100461456010A211430371C4C8A21A6192A885436C3B755A864005AA\n" +":400700002024219041919120200EAA0D80E320D0AAEC85112A0CC4CA1C47ED1844E10105223800020AF218AF23A044968D6799710B04F205340895D341687028E10085215A\n" +":40074000FA2C4B640BE895780C74B06320672F112D584847801C33010CCA5053381FC40006D60B30A950C75223D5552156442A87407785E646A510002A54D92BCD6040CC18\n" +":40078000044EB811266319361526003500C390101A0E943C576D20095E6B46802C52807BDA789080302C43C209980D4608E157E46A6458A4C95E6D02470CB401014677384D\n" +":4007C000C44122392370130CE3418C7C40143ACA0CDE0349903866ED9DA97B383C27D824C81E1981E850F2C5C34C1CC020326C8082A09002ED5C4314C895B57B0805586874\n" +":4008000056990A8330058EBC0992476F042D5EDD0BDAABF36428C9FAB0E60CC28D62E5819948C8DBEC4C611E85A9922881D2238A7E782D12C8482C84E2C8542C85A2C860E4\n" +":400840002C8662C86C245C0162830AA09FE028400B141D0A5320200A2A908029478AFE4B2BA103B0AF07B1842614683079014A58C5B90688045913A4073E211830C1631D72\n" +":40088000C98B31A2048A280BD2C36084026C7060C586061081A0744C2200C8D30288402164210D230C03833BDA00568430300540840101A206B04AD1611A8504006882B538\n" +":4008C000380A1DD01A24403532A312040A818080458016D2440042801D318CAD19CD8A5633F88E00206C3311006CB9289404619900121500990A4C95A4941C77DD11C5DA35\n" +":4009000004401171DA00144A4C02C485A2240360200142093954800264C834331B2C0E191CA348024E512A636A13326C301698981C3801C0107B2050713491AD81CBFA90EE\n" +":40094000384C05CCC89110C70048FC33604AC9E993290040D0828EBC9F18A12A148A8675C65739015E724101643A245044205A0C908463091D8B323B789DDC3686366A360F\n" +":400980004489D80200641D0CD00641633014064102CC0D132F7C8246E64C899C9C9133C1118540EB034B550C680CC052A00231540328866A049EBE010892AC092A00929BE6\n" +":4009C0008A314846040EA038DC029FBC19324D13FC183ECF492B174415384CC8C8BE2A9F01C4CC3FE2CFBF78C8D500810022C52388226C88162908D060D08F1C7B032050E2\n" +":400A00002F05D29101A08C5C484AC926400213408A0460020C80219C42A4765AD136075A2A5A3D00619803902A5A790A3A71F804426011685404C0218C2155A95E8A17062A\n" +":400A400080A668232108A0A308564032299C980144CCAFF23F6E3E314CC6CA422884EF320310280023D532968C8627F5E0C7CAC508F0883CAA118F205810B0A8E38319F8B7\n" +":400A8000682895460199746A4CB1BBF209685645050E50523B10054B42B906C59588542800B0CE73426C2150A8441050A14E441A66AC80280042200455AEA282000C7C3D39\n" +":400AC0004753D04A3F8BD3BCC338CAA0003D3E0573D8423F0253D8EA3A0983E4923F0253E0C53F4F43F0093D42C3E4C33ECAA3E49E3E8003F0F63D88C3E0D13EC503E852AC\n" +":400B00003E0843F8113DCF03E103EC233EC1B3DC713F88C418E7990C7D15A7D8D27B0847F1827D0B77183C88A22F20062D87E2D88A2D8962D8A22D8AE2D8BA2D8C64E459F2\n" +":400B4000290A401A601D6718996061008712D8080061D52E01000958BA08004B459028333211066C0063807DB9A9480112B881BD99CBC8840280D226444021003916370EEB\n" +":400B8000B277A212D9660B1009004380AC1401E4400F10B83D0EA8A006012AC296964C5D45451B6B1B2195DAA33C1DB791F1EC1CF42A3080114B850A4212E5661B0207FCAB\n" +":400BC0003AA1C28D3C0A3230E033028045BF51A12003768364EDC0866C80D64B0E008C361780122972A2248020065E95EDA2342366022201D9730280500A01402806BEF6A9\n" +":400C0000F470892050F50606607B02508E1E3A5E1C46D1728255546520A205808844AE5300C015304220D92A00604240A88680E999844780013B200AC848F400E1C0451471\n" +":400C40001003D0089CD1000D4EA4028E07B02010031CDA3A65A8458353681E43587A12C4AE38F41F88810F0381FC0C018032950844F8D5ED0C4B07D0320780EB27E13240A3\n" +":400C80000CC9ABC4C710080A421D50102008158080C2396028200066542C6480E2030321986CE54B89803008051580E00290319DEB4F038824043529401DB8105805010870\n" +":400CC00075816A6EA440B0C030087A28F0625510C7108B32A84CCC12056224CAE344688757CF60B360760340680D01ACB82F160F90040042C0EA964A52354702D36F27A0B7\n" +":400D00000401739B84B6344278757C96F32E3474982A80300D58AC962E5D158155512C3817800F41A18B8DA28CBE07420B22216A229804441C0C003C5C020F50141E0044BE\n" +":400D4000796145A362D030AEEF28A1968D4385DB032D03298AF460C4202FB068C600CD7F581A488F38326453F92CF60849032B953A82033B3F50B0BE90E06949D0B2B14D7A\n" +":400D80006368B035B6F98A783890B8861E4EA42AA51959617601C3C862D25B1F85B80D32901859FA57046F8829F0014F348A0998C41007B7EE223E325A808896D082C1A814\n" +":400DC000896E08460A0000000500020400000000000001F85440000671BE00A854AB0003A000A0C4A18851290002079D18F55125000201F71B7851250002050E18C8553ED2\n" +":400E0000FFFF522F0010E619E6F2ECFAF8F2FF7904ED06A30F0E15EB169717D7197C192217A5182816FD515C0001003E005B71C60100606700024C000110605D000200006F\n" +":400E40009C40607B0011004F0075009B00C200E8010E0134015A018001A701CD01F30219023F0266028C02B253BF00020199033370F4000070710002FF86FF8670760F33B4\n" +":400E8000549AFEAE5058118053E900021000100054B4000C544E002850340580501A01005010F8805018FDCD53510008F000080000001000F8000266F0000333534A80004E\n" +":400EC000537D00020000000053610008C0004000C0004000C0004000C0004000526F00080000000000000000000000000000000002990002F4F901535376F7F55348C000AD\n" +":400F00005100115F7151002000400040004000400040004000400040FA41FC4C01520453074F0748044200400040F842F749F94DFC50FE500050064B0B400B430040004062\n" +":400F4000004000400040004071B2522C52AA014052B30002080000A0512E2000512C010053840000539E01E0539C099952A300020000000052D2008052E500030040030075\n" +":400F80000400533E6000538D000200008235531E0000546B000708000CCC0E660E660B330B331000545600E6545A1000545F00040700157C04000FA054680000545C00A0BC\n" +":400FC00060110003AF80B474BC2C0000000000004953505468726561644C6F6F70006170313330325F7365745F6374726C00000020257328256429204572726F72204F637C\n" +":4010000063757272656420696E2048414C5F4932435F536C617665527843706C7443616C6C6261636B2020537461747573203D203078253032782C20675F736C6176655FEA\n" +":401040006E6578745F72785F6C656E203D20257520200A0D0000000020257328256429204572726F72204F6363757272656420696E2048414C5F4932435F536C6176655492\n" +":401080007843706C7443616C6C6261636B2020737461747573203D2030782530327820675F736C6176655F6E6578745F72785F6C656E203D202575200A0D000025732825D7\n" +":4010C000642920446562756720496E69746961746564205359534346475F4346475231203D203078253038782020464C4153482D3E4F505452203D20307825303878200A24\n" +":401100000D00000049535054687265616400000064656661756C745461736B00496E76616C696420466F726D6174202D2030782530387820213D20307825303878202C20C5\n" +":40114000205769647468202D2025687520213D20256875202C20486569676874202D2025687520213D20256875200A0D000000000A0D2052454144204D4173746572205402\n" +":4011800072616E736D6974204572726F7220212120202D20307825303278203078253038782020524547203D2030782530347820666F7220736C61766520307825303278F7\n" +":4011C000200A0D000A0D205752495445204D4173746572205472616E736D6974204572726F7220212120202D203078253032782030782530387820524547203D2030782543\n" +":4012000030347820666F7220736C61766520307825303278200A0D000A0D204D41737465722052656365697665204572726F72202121202D2030782530327820307825300F\n" +":40124000387820666F7220736C617665203078253032782020666F7220524547202D20307825303478200A0D000000008C12020800000020A4000000F24C00083013020884\n" +":40128000A400002034310000024D000880841E0000000000AAAAAAAA00000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n" +":4012C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFF0000000000000000000000000000EB\n" +":30130000C0FF02080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000F3\n" +":020000040800F2\n" +":4000000008040020D5000008C9010008C701000800000000000000000000000000000000000000000000000000000000CD0100080000000000000000CB010008CF01000893\n" +":40004000E7000008E7000008E7000008E7000008E7000008E7000008E7000008E700000800000000E7000008E7000008E7000008E7000008E7000008E7000008E70000087F\n" +":40008000E7000008E7000008E700000800000000E7000008E7000008E7000008E7000008E7000008E7000008E7000008E7000008E7000008E700000800000000000000001D\n" +":4000C0000348854600F014F80048004751020008080400200448804704480047FEE7FEE7FEE7FEE7FEE7FEE7DD010008C1000008064C0125064E05E0E36807CC2B430C3CA0\n" +":4001000098471034B442F7D3FFF7DEFFA4020008C402000810B500210748C9438162002282624162426201620262C161C26100F00DF8002010BD0000001002400248016829\n" +":40014000491C016070470000000000207047000008B515480168821511430160C16889088900C1600168114A114001600168012212041140009101689200914301600021AD\n" +":40018000C16042680A4B1A4005235B03D218426042681F231B029A438314D2184260016105490448086008BD00100240D4FFF6FEFF1FFF0068FF1F0004000020704710B525\n" +":4001C000FFF7FCFF10BDFEE770477047704710B5FFF7B4FFFFF7F3FF10BD000010480168821511430160C1680E4A1140C16001680D4A1140016081684908490081600168D5\n" +":400200000122920491430160C168FD2212049143C160002101610549C003886070470000001002400C40FF88F6FFF6FE00ED00E002E008C8121F08C1002AFAD17047704760\n" +":40024000002001E001C1121F002AFBD17047000008B5002462B60F48009401680E4A1140C204914214D1416800910D46016881F3088872B609498860FFF76AFF08480461F9\n" +":4002800044618461012080F31088FFF743FFA847FEE70000000400080000FE2F00ED00E000E000E0C4020008000000200800000030020008CC020008080000200004000084\n" +":0C02C000400200080000000080841E00C6\n" +":020000040802F0\n" +":20FFC00031314355313331585858585858303131313035343266623436585858585858585a\n" +":04000005080000C12E\n" +":00000001FF\n" diff --git a/drivers/media/platform/imx8/ecam50_cam_fw.txt b/drivers/media/platform/imx8/ecam50_cam_fw.txt new file mode 100644 index 000000000000..79923866c34f --- /dev/null +++ b/drivers/media/platform/imx8/ecam50_cam_fw.txt @@ -0,0 +1,2146 @@ +":020000040800F2\n" +":40040000E03100204D050008013F00081F2A0008000000000000000000000000000000000000000000000000000000008D41000800000000000000000B050008014300085E\n" +":40044000214A00085F0500085F050008ED0A00085F0500085F0500085F050008A90A0008000000005F0500085F0500085F0500085F0500085F0500085F050008F14300086F\n" +":40048000014400085F0500085F050008000000005F050008452A00085F050008212A00085F0500087D4100085F0500085F050008114A00085F05000800000000000000009C\n" +":4004C0000348854600F0D0F90048004781690008E0310020084B19680868203080F30988022080F31488BFF36F8F3FBCAE4608BC04BC62B6184700000C000020EFF310807A\n" +":4005000072B6704780F310887047EFF309800E4B1A6820381060F0C044464D4656465F46F0C008B572B607F06FFA62B60CBC116808681030F0C8A046A946B246BB4680F307\n" +":4005400009882038F0C818470C0000200448804704480047FEE7FEE7FEE7FEE7FEE7FEE79D430008C104000830B50B46014600202022012409E00D46D5409D4205D31D4627\n" +":400580009540491B2546954040191546521E002DF1DC30BD70B500242546002801DA01244042002901DA01254942FFF7DDFFAC4200D04042002C00D0494270BDF0B51FB466\n" +":4005C0000646002082B005464024019100901BE0019922460F46304600F0F4F8049A059B801A994110D310461946224600F0DAF8361A8F410197224601200021009F00F083\n" +":40060000D1F838184D4100902046641E0028DFDC019B00982946324607B0F0BD03460B439B0703D009E008C9121F08C0042AFAD203E00B780370401C491C521EF9D27047F4\n" +":40064000D2B201E00270401C491EFBD270470022F6E710B513460A4604461946FFF7F0FF204610BD0321001D401E037812021A43491EF9D510467047024670B54A40D30F88\n" +":40068000DB0740002DD04A002AD0010E140E000212020919400A520A8418E50104465443000A120A2E045043A4194219200CC543AA18120C0125AD03521C521912047F39D1\n" +":4006C000240400D0521C104301D44000491EC2B20C06C0092018401C4008802A02D003E0002070BD40084000002900DA0020184370BD70B502464A40D50F40004A00ED0762\n" +":4007000040085208002814D0002A12D0C40DD30D41020120C0055202490A520AE41A091812187D34914201D3641C00E04900002C01DA002070BD0023914201D3891A0343D1\n" +":40074000400849000028F7D100290AD0914202D10121C90705E0914201D2012101E00121C943E005C018401900F03DF870BD10B500229623114600F03EF810BD41004002CC\n" +":400780000122400AD205090E80187F2901DA00207047962903DC9622511AC840704796398840704710B5202A04DB0146203A9140002010BD914020239C1A0346E34019433F\n" +":4007C000904010BD10B5202A04DB0846203AD040002110BD0B46D340D0402024A21A91400843194610BD002904DA401C490001D140084000704770B40024050C05D11024EC\n" +":40080000000402D1002921D01124050E01D100020834050F01D10001241D850F01D18000A41C002801DB4000641C002908D020252E1B0D46F540A14000D00121294308433C\n" +":4008400001061B1B000ADB1D02D5002070BC7047DB05181880180029F8DA401C4900F5D170BC400840007047064C0125064E05E0E36807CC2B430C3C98471034B442F7D37E\n" +":40088000FFF722FE9C160208BC16020810B5364CE069000267D4A069C007FCD16368334A334934A004F0C4F86068C00704D03C48E0603C48E06005E02C4A2D49921D3AA093\n" +":4008C00004F0B6F86368294A29490A3241A004F0AFF8A069C007FCD16368244A2449143224A004F0A5F86068C00704D0292252011F4944A00BE06068400704D54A4860619D\n" +":400900004A48606105E0194A19491C3248A004F08FF86368154A164922322EA004F088F84E49042003F01EFB104A114926324CA004F07EF8E2690120C005E16902434DA014\n" +":4009400004F076F8094A0A49283245A004F070F860680121890408436060044A04492C323FA004F065F810BD002002400105000023830008202D2D2D2025732825642920ED\n" +":40098000464C4153482D3E50454352203D2030782530387820202D2D2D200A0D00000000EFCDAB8905040302202D2D2D202573282564292050454B45595220556E6C6F63C4\n" +":4009C0006B656420416C7265616479202D2D2D200A0D0000202D2D2D20257328256429204E6F772C20464C4153482D3E50454352203D20307825303878202D2D2D200A0D1F\n" +":400A000000000000202D2D2D202573282564292050454C4F434B204C6F636B6564202D2D2D200A0D00000000C8D9EAFB27262524202D2D2D20257328256429204F50544C9B\n" +":400A40004F434B20416C726561647920556E6C6F636B6564202D2D2D200A0D00F0800000202D2D2D20257328256429202D2D2D200A0D00002056616C204166746572205533\n" +":400A80006E6C6F636B204F7074696F6E204279746573202E2E2E2030782530387820307825303878200A0D0010B50120800200F0FBF910BD04A003F0BBFF7D24E40020468F\n" +":400AC00006F012F8FBE7000020556E7265636F76657261626C65204572726F72204F636375726564202121200A0D000010B500F02DF910BD10B5084900224A6107494B6871\n" +":400B00004C1523434B604B68082423434B60C009C001026010BD0000A80000200020024010B5214A00219069C305204804D54169022319434161911593699B0505D5436988\n" +":400B40000124234343616302194393695B0505D54369082423434361E301194393691B0505D543690424234343616302194393699B0405D543691024234343616302194378\n" +":400B800093699B0304D5446920231C43446119439369DB0305D54369402423434361A0020143916110BD000000200240A800002008B517A003F03CFF00F042F91C484168FB\n" +":400BC00042151143416041680822114341600021130619608169C907FCD18169890714D50221816141684122D2009143416018680090104A104911A003F01AFF1EA003F0BB\n" +":400C000017FF00F011F903F09FF9FFF753FF000020466C6173682045726173652042414E4B31205374617274202121200A0D000000200240BB04000004830008202D2D2D28\n" +":400C400020204166746572202573282564292041742041646472657373203078253038782056616C7565203D20307825303878202D2D2D200A0D000020466C617368204590\n" +":400C8000726173652042414E4B312053756363657373202121200A0D0000000070B50024024620325179022903D00421C16301243CE001680B680E25AB430B6001680B6811\n" +":400CC0005B085B000B601A4B0168994201D1012121E0174B1433994201D110211BE0144B2833994201D1891515E0114B3C33994201D189140FE00E4B5033994202D1012101\n" +":400D0000090408E00A4B6433994202D10121090501E001210906064B083B59600121517100211171816B002900D08847204670BD0800024031B500F08FF9044600F08CF960\n" +":400D40000099001B8842F9D338BD7047F8B5344CA0690026C005334D002811DBA06980050ED4A06940050BD4A069000508D4A069800405D4A069800302D4A069C00309D5CF\n" +":400D8000287801282BD0AF68FFF7CAFE384600F055F82E70A069800712D50220A061287800280DD0287801281ED06068082188436060A868FFF7C9FF0020C043A8602E7038\n" +":400DC000287800280AD160684121C90088436060606803210904884360602E74F8BDEF680020C043E860CFE76868401E6860686800280DD0E868FFF7A8FFE8688030E8607F\n" +":400E000061680122520291436160FFF773FED7E70020C043E8602E70FFF797FFD0E7000000200240A800002003484168022211434160002070470000002002407047000045\n" +":400E40000948416889070CD54168C90703D00749C1600749C16007490161074901610020704701207047000000200240EFCDAB8905040302BFAE9D8C1615141310B5012197\n" +":400E80008902884204D1034A034904A003F0D0FD10BD000027040000ED8200082025732028256429200A0D0010B504494A69024202D04861FFF7E2FF10BD00000004014046\n" +":400EC000F8B500230124A7E027469F403A4070D04D68022D01D0122D14D1DD08AD002D1800952D6A5E07AC46F50E0F26AE46AE406546B543AC460E697546AE4065462E4352\n" +":400F0000009D2E624D68012D05D0022D03D0112D01D0122D16D185680326AC465D00AE46AE406546B543AC46CE687546AE4065462E43866046680D79BE43ED06ED0F9D40D7\n" +":400F40003543456006685F000325BD40AE46AE430D79B446AE07B60FBE4065462E430660C6687546AE438D68BD403543C5604D68ED0050D52B4D6E6B26436E639E082A4D2B\n" +":400F8000B6007519AC46AD689E07360F0F27B740BD4305273F07B84201D100271AE0234FB84201D1012715E0214FB84202D1022710E030E01F4FB84201D103270AE01E4FF4\n" +":400FC000B84201D1042705E01C4FB84201D1052700E00627B7402F436546AF60184D2E684F689643FF0300D516432E606E684F689643BF0300D516436E60AE684F6896436F\n" +":40100000FF0200D51643AE60EE684F689643BF0200D51643EE605B1C0A681546DD4000D052E7F8BD00100240000001400004005000080050000C005000100050001C0050CA\n" +":401040000004014042694A4042617047002A01D0816170478162704701480068704700000400002070B5024640325378202B1CD11378012B19D00123137024245470046841\n" +":4010800025689D432560046825681E03B5432560046825680D4325600068016819430160202050700020107070BD022070BD70B5024640325378202B1BD11378012B18D0AF\n" +":4010C000012414702423537003681D68A5431D6005682B680F263602B3430902194329600068016821430160202050700020107070BD022070BD000010B5034A034904A0E1\n" +":4011000003F096FC10BD000021040000D38200082025732028256429200A0D0010B5034A034904A003F084FC10BD00000D0400006F8200082025732028256429200A0D00BD\n" +":4011400070B503689A691968D40507D50C0605D5446C01252C4344642C02DC61530508D50B0606D5436C082423434364E3010468E361920508D5090606D5416C0222114342\n" +":40118000416411020268D161416C0B22114202D0416C01F02DFD70BD026891691268436B002B00D01847704770B5054600681449144C884213D1284600F054F80346124AB8\n" +":4011C000124913A003F034FC6078042803D0A07860700420A07002F09BFF002068641849286888420BD1284600F03CF8064A03460F32064913A003F01BFC0320207070BD64\n" +":401200000054004060000020F60300005982000820257328256429202D2048414C5F4932435F4572726F7243616C6C6261636B20202D20307825303878200A0D00000000E6\n" +":4012400000780040202573202825642920457272436F6465203D20307825303878200A0D00000000406C704770B5040006D02546403568780026002802D005E0012070BD6A\n" +":401280002E70204600F06EF924206870206801684908490001600F216068090688432168086121688A680120C00382438A60E1680129A16808D021229202114322689160FF\n" +":4012C000E168022902D005E00143F7E701212268C902516021684A680F4B1A434A602168CA688243CA60616920690843A169090208432168C860216AE06908432168086074\n" +":40130000206801680122114301606664202068702663AE70002070BD0080000210B5034A034904A003F084FB10BD000012040000848200082025732028256429200A0D003E\n" +":4013400000680649884205D105480178092902D00321017070470B21FBE70000007800409000002000680649884205D105480178052902D00321017070470721FBE7000017\n" +":401380000078004090000020F8B50546044640356878202830D120688069C04300042BD52878012828D001202870222068701020A87000266664626263851048E062104803\n" +":4013C0006063608DFF2804D9FF20012320851B0603E0608D012320855B06092080020090208DC2B2204601F09BFF2E700221204601F07EFB0020F8BD0220F8BD0000FFFFAE\n" +":4014000071300008FFB5054604464035687881B020287ED1287801287BD001202870FFF71BFE0746012200901923D103204601F089FF00283FD1212068701020A870002613\n" +":40144000666403986062049860856663618D01204003FF2903D9FF222285009034E0618D2185009036E02046029901F059FF36E001F0B3FF002803D0606C042847D01AE0F8\n" +":40148000606A411C6162017820688162608D401E6085208D401E0004000C20851FD1608D00281CD000970022802120460A9B01F049FF002802D0032005B0F0BD608DFF284C\n" +":4014C00005D9FF222285009601231B06CBE7608D20850096208D0123C2B25B06C3E7608D0A9900283A462046C2D101F04FFF0028C2D121682020C86121684A68064B1A403E\n" +":401500004A606870AE702E700020D5E701E00120D2E70220D0E7000000E800FE10B5034A034904A003F084FA10BD00001C040000B98200082025732028256429200A0D008B\n" +":4015400010B5034A034904A003F072FA10BD0000170400009F8200082025732028256429200A0D00F0B5234A0168122403200125214E85B0914215D1C02100910021029193\n" +":4015800003900194049569461C48FFF799FCB06B69050843B06300220321172000F058F9172022E0164A914221D189156A4632C20320072781C2052069460007FFF780FCA6\n" +":4015C0001020694631C103200390694604970B48FFF776FCB06B012189070843B06300220321152000F034F9152000F027F905B0F0BD0000005400400010024000040050BB\n" +":401600000078004038B500680D49884213D10D4CA3780A2B10D0A08900900B4A0B490C4803F006FA6078042803D0A07860700420A07002F06DFD38BD63700C20A07038BD1F\n" +":401640000054004060000020D30300003D8200082014020838B500680E49884214D10E4CA378062B11D0A089ED22009092000B490B4803F0DDF96078042803D0A078607010\n" +":401680000420A07002F044FD38BD63700820A07038BD000000540040600000202182000888140208F8B5034640335C78202C1ED11C78012C1BD001241C7022245C7020243E\n" +":4016C0009C700024446405686E680127FF03BE436E6041624285418D01850649C162064941631C701F2101F003FA0020F8BD0220F8BD00000000FFFF01320008F8B503461E\n" +":4017000040335C78202C1ED11C78012C1BD001241C7021245C7020249C700024446405686E680127FF03BE436E6041624285418D01850649C162064941631C70172101F089\n" +":40174000D7F90020F8BD0220F8BD00000000FFFF0132000802480168491C0160704700000400002010B506480168402211430160002000F007F800F03DF8002010BD0000AC\n" +":401780000020024000B5014687B00022102000F05FF8102000F052F81148816B02221143816305A9684600F071FA00F095FA0D49FEF7DAFE0D490C4A0A600D4A401ECA60A2\n" +":4017C0004860002008618860084600F0EBFD002802D0012007B000BD044800F0FEFDF9E70010024040420F0000040040DC180020E703000010B51048416B012211434163FB\n" +":40180000816B02041143816300221146501F00F01FF803210022481F00F01AF803210022081F00F015F803210022084600F010F8032000F003F810BD00100240C106C90E1F\n" +":4018400001208840014908607047000000E100E010B502F057FB10BDF8B54E49074601250020ED034A4B4B4A4031082F7BD00EDC012F48D0022F60D0042F22D1CC68032685\n" +":40188000B602344065D07F02BC424ED064E0102F77D00126032436042404202F09D0FF3F012F0ED1C968214053D07400A1423CD06BE00B6909692140B14203D199052EE01E\n" +":4018C0002846F8BD01256D04A94203D19907F8D53148F8BDA142FCD111688903F9D5116803200005014001200005091A09D0091A05D0814201D12948F8BD2948F8BD294803\n" +":40190000F8BD2948F8BDCC68A407A40F0AD0022C0BD0012C0ED0032CF4D1096989050029CEDBF8BD00F0E8F9F8BD11684907FBD51846F8BD00F0F0F9F8BDCC680C26344037\n" +":4019400007D0082CF1D0042CF4D00C2CE5D0F8BD09E000F0C1F9FAE7012292029442E9D0B442DAD0F3E7C968032424032140F0D001256D036C10A942D7D0A142DAD0E6E733\n" +":40198000FFE7916B4902E4D4E1E7B142D2D0DEE70024F400001002408890000020A1070000093D0040420F0080841E00F8B504460078594D800672D5574E0027403EB06B96\n" +":4019C000C00004D4B06BA9050843B063012753480168C90511D40168821511430160FFF73BFB009005E0FFF737FB0099401A642837D84A480068C005F5D5326803210905E8\n" +":401A000060680A400140914208D08103890F032904D13168890301D50120F8BD2A69032109040A4022D0084090421FD0207880061CD528692A6988430121C9040A432A61EC\n" +":401A40002A698A432A612861C0050FD5FFF704FB009008E0FFF700FB0099411A3048814201D90320F8BD28698005F3D561688803800F032805D132680005824301400A4356\n" +":401A800032602869032261681204114008432861002F04D0B16B012000078143B1632078C00705D0E868A168800880000843E8602078800705D5E8680C218843E1680843BE\n" +":401AC000E8602078400706D5E86803218902884321690843E8602078000706D5E86803210903884361690843E8602088C00506D5E868032109048843A1690843E860207812\n" +":401B0000000606D5E868032189048843E1690843E8600020F8BD0000401002400070004088130000F8B5054653480E460068C007C00FB0420AD250480168490849003143A7\n" +":401B400001600068C007C00FB0426FD128784B4C800705D5E068F0218843A9680843E0602878C00752D06868022817D0032818D02168012818D08905002957DAE1688908A3\n" +":401B800089000143E160FFF767FA69680746022912D003291CD0012926D033E021688903EAE721688901E7E74907E5E7FFF754FAC11B3348814223D8E0680007800F022806\n" +":401BC000F4D123E0FFF748FAC11B2D48814217D8E0680007800F0328F4D117E0FFF73CFAC11B274881420BD8E0680007800F0128F4D10BE0FFF730FAC11B2148814201D947\n" +":401C00000320F8BDE0680007800FF3D11A480168C907C90FB1420BD9016849084900314301600068C007C00FB04201D00120F8BD2878400706D5E068072109028843E96818\n" +":401C40000843E0602878000707D5E0680721C90288432969C9000843E06000F05DF8E168084A0906090F515CC840074908600020FFF788FD0020F8BD0020024000100240D2\n" +":401C800088130000BC8100080000002010B50F2202600C4AD3689B079B0F4360D368F02423408360D46807231B021C40C460D268D2081A40026104480068C007C00F086031\n" +":401CC00010BD00000010024000200240014800687047000000000020044805490068C968044A4905490F515CC84070470000002000100240D5810008044805490068C96845\n" +":401D0000044A8904490F515CC84070470000002000100240D581000810B5184AD1680C20084004280BD0082810D00C2810D050680004410F0120C003491C884010BD1068D3\n" +":401D4000C00601D50E4810BD0E4810BD0E4810BD88020E4B000F185C0902D368890F491CDB0301D5084A05E01268D20601D5044A00E0044A5043FEF7F7FB10BD001002408D\n" +":401D800000093D000024F40000127A00CC810008F8B504460078F24DC0074AD0E8680007800F022807D0E8680007800F032809D1E868C00306D5286880033AD56068002883\n" +":401DC00073D036E0012062680004824203D129680143296011E0052301211B0489049A422A6802D10A432A60F1E782432A602A6802400092286888432860606800280CD06A\n" +":401E0000FFF72AF9064604E0FFF726F9801B64287ED828688003F7D50BE0FFF71DF9064604E0FFF719F9801B6428F1D828688003F7D42078800741D5E8681F270007800F8A\n" +":401E40003F02012807D0E8680007800F032809D1E868C00306D42868400717D5E068012823D113E0E068002817D029680922914301432960FFF7F0F8064604E0FFF7ECF892\n" +":401E8000801B0228C4D828684007F7D568682169B84309020843686010E02868400840002860FFF7D9F8064605E090E0FFF7D4F8801B0228ACD828684007F7D42078C006A8\n" +":401EC00076D5E868A74E0007800F0BD0A06900285DD02868FF21013108432860FFF7BCF8074644E02868800502D5A06900286ED0206A69683140884212D902F0D1F80028F4\n" +":401F0000AED16868216AB04308436860686800E0BBE00002217F000A0906084368600FE06968B143014369606868217F0002000A090608436860206A02F0B2F800288FD19B\n" +":401F4000206A410B0120C003491C8840E96809060A0F8549895CC840844908600020FFF711FC25E0FFF778F8C01B02288AD828688005F7D56868216AB0430843686068680A\n" +":401F8000217F0002000A09060843686010E02968FF20013081432960FFF75EF8064604E0FFF75AF8801B02286FD828688005F7D420786F4E000723D560690028306910D0C7\n" +":401FC000012108433061FFF747F8074605E0C5E0FFF742F8C01B022857D830698007F7D50EE0400840003061FFF736F8074604E0FFF732F8C01B022847D830698007F7D4FC\n" +":402000002078400762D5A86B0027C00005D4A86B012109070843A863012756480168C90511D40168821511430160FFF715F8009005E0FFF711F80099401A642825D84D48FD\n" +":402040000068C005F5D5FF20A2680130824203D131690143316111E001218902002A07D005231B029A4203D132690A433261EFE7326982433261306988433061A06800280A\n" +":402080000FD0FEF7E9FF009007E060E0FEF7E4FF0099411A3848814259D830698005F5D50DE0FEF7D9FF009006E0FEF7D5FF0099411A314881424AD830698005F5D4002F24\n" +":4020C00004D0A96B012000078143A963606A002842D0E9680907890F03293FD0012636060228286805D0B0432860FEF7B5FF04462FE0B0432860FEF7AFFF074604E0FEF715\n" +":40210000ABFFC01B022822D828688001F7D4E16AA06AEA680843216BFD231B049A4311430843E860286830432860FEF795FF044604E0FEF791FF001B022808D8286880019C\n" +":40214000F7D509E0FEF788FF001B022801D90320F8BD28688001F5D40020F8BD0120F8BD0010024000E00000BC81000800000020401002400070004088130000704738B59A\n" +":4021800001684A68D243520609D48A68D243D20705D18A68D243520601D5816C08E04A68D243120606D48A68D243920702D4C16C884738BD4A68D2439206FAD48A68D243A6\n" +":4021C000D20606D4426D02231A4342651022D2438A6001688A680123D2439206002A08DB426D1A4342658A6800920A684024A2430A6001688A68D243540602464032002CDF\n" +":4022000009DB547C122C06D0446D04252C434465CC688C6800948C68E443E40505D4446D08252C4344658C680094446D002CC0D04C68E025AC434C605374FFF79FFF38BDBC\n" +":4022400070B5040006D025464035687C0026002802D005E0012070BD2E74204600F032F80220687420680168402291430160A168606822690843E168114308436169012224\n" +":402280000843A169520211400843E1690843216A0843A16A084321680860A0690421000C0840616A0843216848602168E06A08612068C16992009143C16166650120687420\n" +":4022C000002070BD00B50068104985B088421AD10F48416B821411434163A02000900220019000210320039002910491052069460007FEF7E5FD002203211920FFF7A8FAD5\n" +":402300001920FFF79BFA05B000BD00000030014000100240042204490428086902D09043086170471043FBE700E000E0094910B5401E884201D9012010BD074C606103219B\n" +":40234000081F01F0DFFD0020A06107202061002010BD0000FFFFFF0000E000E070B502462032137D012B1BD00123137502245475046865687026B5436560046865680E68BA\n" +":40238000354365600468A5688026B543A5600068846849680C43846053750020107570BD022070BD70B5040005D025462035687D002802D006E0012070BD002028752046AF\n" +":4023C00000F00AF802206875211D206802F020F801206875002070BD70470268D36801210B43D360006802680A43026000207047704770B50446006801690025C9438907C1\n" +":40240000002915DBC168C943890711D4E91E016101202075206880698007204602D0FFF7E7FF04E000F08EF8204600F025F9257520680169C943490717D4C168C943490788\n" +":4024400013D40421C943016102202075206880698005800F204602D0FFF7CAFF04E000F071F8204600F008F9257520680169C943090716D4C168C943090712D40821C94329\n" +":402480000161042020752068C0698007204602D0FFF7AEFF04E000F055F8204600F0ECF8257520680169C943C90617D4C168C943C90613D41021C943016108202075206872\n" +":4024C000C0698005800F204602D0FFF791FF04E000F038F8204600F0CFF8257520680169C943C90708D1C168C943C90704D1891E0161204600F0C2F820680169C94349063F\n" +":4025000009D4C168C943490605D44021C9430161204600F0BDF870BD00B500680121890785B088420CD101200090002002210290039001910491052069460007FEF7C0FCE3\n" +":4025400005B000BD7047F8B5064604462036307D0D4601280DD001203075022070750427002A08D0042A16D0082A2AD00C2A4DD137E00220F8BD206801F07AFF20688169B3\n" +":4025800008221143816120688169B943816120688169EA6812E0206801F082FF206882690121C9020A43826120688169012292029143816120688169EA681202114381613E\n" +":4025C00024E0206801F085FF2068C26908210A43C2612068C169B943C1612068C169EA6812E0206801F090FF2068C1690122D2021143C1612068C269012189028A43C26151\n" +":402600002068C169EA6812021143C1610120707500203075F8BD70B5040005D025462035687D002802D006E0012070BD00202875204600F00BF802206875211D206801F0EF\n" +":40264000E7FE01206875002070BD000010B500680121890788420CD10648816B012211438163002203210F20FFF7F2F80F20FFF7E5F810BD001002407047000010B50068B5\n" +":402680000249884201D1FFF765F810BD000400407047704770470000F8B502680446D06911680607360F07D1830605D58B0603D5204601F0F2FFF8BD95682023002E65D001\n" +":4026C000EE07F60FFF2721370F4037435ED0C70706D0CF0504D501271762E26E3A43E266820708D5EA0706D0276802223A62E26E04273A43E266420708D5EA0706D025682E\n" +":4027000004222A62E26E02252A43E266020709D50A461A40324305D0236808221A62E36E1343E366E26E002AC5D0800604D5880602D5204601F0B1FFE06E000703D4206831\n" +":40274000806840061CD5204601F098FF20688168490611D5826840218A438260606E00280AD01D498163606EFEF798FA0028A2D0606E816B8847F8BD2046FFF78BFFF8BDCA\n" +":402780002046FFF787FF0020E066F8BD2646C7026036002F0ADA6D0208D50120000510627372B3722046FFF774FFF8BD050605D50D0603D5204602F0C7F8F8BD4006FCD519\n" +":4027C0004806FAD52046146840218C431460737200F0D3F8F8BD00006946000870B5040005D025466035687A002802D006E0012070BD00202872204600F026F824206872D0\n" +":4028000020680168490849000160606A002802D0204601F094FE204601F07EFF0128E7D0206841680922D20291434160206881682A2291438160206801680122114301606B\n" +":40284000204601F0E1FE70BD00B50068164987B0884227D11548C26A01210A43C262C26A0A400592C26A0A43C262C26A0A400592826B4B041A4382630C20009002200190C0\n" +":4028800003200390042004900291052069460007FEF716FB002203211C20FEF7D9FF1C20FEF7CCFF07B000BD00440040001002407047FFB5064604466036707A83B00D469A\n" +":4028C000202858D1002D0CD00598002809D00120A1680003814207D12069002804D1E80702D0012007B0F0BD307A012843D0012030720020E06621207072FEF7ADFB0190CC\n" +":4029000027464037059838820598788218E0788A401E788206980090002280212046019B02F045F8002818D10120A1680003814202D12069002812D02168287888626D1C4E\n" +":40294000788A0028E3D106980090002240212046019B02F02CF8002808D00320C2E728882168C005C00D8862AD1CE9E72020707200203072B6E70220B4E7704710B5064C8A\n" +":40298000E178002901D000F045F8E078401EE07001F0BEFB10BD00006000002010B501684A68D243920507D48A68D243D20703D1921E8A60FFF7E2FF10BD10B504000FD099\n" +":4029C00000F010F8E0688021084321680860616820690843A168084321684860002010BD012010BD10B50068084988420CD10848816BC21411438163002203211046FEF7BD\n" +":402A000027FF0020FEF71AFF10BD0000002C004000100240C1680068016000207047FEE710B5074800688069172109020842044802D0FEF785FB10BDFEF7AEFB10BD00004C\n" +":402A4000B00D002010B50648006880694005400F034802D0FEF774FB10BDFEF79DFB10BDFC0D002010B5806A01684A680123DB031A434A60826B00219163C26B9163014673\n" +":402A800040314A78602A02D0FEF78EFB10BD20224A70FEF731FB10BDF0B503460022CE0740332824B025002E05D05E7842222746B74300D0F2228E0705D544265B78324330\n" +":402AC0009C4300D02A434B0701D5B8231A4311238B4301D190231A4312238B4301D160210A4300680168914301600020F0BD000070B5164D1223446B002220268B43AC4270\n" +":402B000002D0134DAC420DD14C0700D5B82211248C4301D190210A43002B11D1324340210A430DE04C0700D5B822CC0701D0F2242243890701D5F4210A43002B00D132434A\n" +":402B40000068016811430160002070BDAD2F00089931000801688A69D243920701D400228A6200688169C943C90703D081690122114381617047F8B505460446403568784D\n" +":402B800028218143206804D00821C16100202870F8BD8169C903CF0F8169FE230E0C81681E408A05C168920D19408C46E168022912D10621D3090E400B409E420BD1A16CB6\n" +":402BC000491CA164A16C0229E2D10021A1640823C361297007E0664604212046FFF75CFF00202870324639462046FEF797FAF8BDF8B50026054640350446AE702C48E06202\n" +":402C00006685606C0843606468782027282823D06878292820D068782A281DD007212046FFF73AFF6878602800D06F7026636663206801684A041F49026817D501239B033F\n" +":402C40009A430260A06B81632E70A06BFEF726F800281DD0A06B19E003212046FFF71CFF28206870266314486063E1E7120410D502680123DB039A430260E06B81632E70B3\n" +":402C8000E06BFEF70BF8002802D0E06B816B8847F8BD6878602804D02E702046FEF784FAF8BD6F702E702046FEF726FAF8BD00000000FFFF652A00080132000870B50446C8\n" +":402CC0001548E062002525632022204640300646427085706563480711D52068416A606A421C62620170208D002808D0401E2085608D401E6085606C0421084360640721E8\n" +":402D00002046FFF7C9FE21681020C86135702046FEF704FB70BD00000000FFFFF8B5064600682027C76130684268224B1A4042600025356320487563F062C80606D5316858\n" +":402D40001020C861706C0421084370643046FFF701FF03213046FFF79FFE706C002814D134464034607860280FD06078212811D06078222808D16770A078A570402825702D\n" +":402D8000304614D0FEF7DCFAF8BD716C3046FFF72FFFF8BD6770A078A57040282570304602D0FEF7DFFAF8BDFEF7CAFBF8BDFEF7B5FBF8BD00E800FE0000FFFF70B500254A\n" +":402DC000064640360446B57071782020212970700BD012202063022120466563FFF75CFE35702046FEF7ACFA70BD11202063012120466563FFF750FE35702046FEF7B2FA57\n" +":402E000070BD0000F8B50446006820260F46C66121680820C86107212046FFF73DFE20684168B20211434160206841682D4A114041602046FFF78EFE2068016825464904A6\n" +":402E40004035002902DB0168090406D5697821292FD0E16B096849686185628D0421002A02D0626C0A4362647A070FD5426A606A431C63620270208D002807D0401E2085F7\n" +":402E8000608D401E6085606C0843606400202063A8706063616C00290DD0616C2046FFF7A7FE6878282803D139462046FFF706FFF8BDA16BCEE7E26A0B498A4206D0E16209\n" +":402EC0006E7028702046FEF729FAF8BD69786E7022292870204602D0FEF7BCFBF8BDFEF791FBF8BD00E800FE0000FFFF70B50026044640340546A6706178282029290ED019\n" +":402F000061782A290AD160702220286302212846FFF7C2FD26702846FEF774FB70BD60702120286301212846FFF7B6FD26702846FEF790FB70BD0000F7B5044600680E46DA\n" +":402F40008069C043C0062CD420272546403520688069C04380060FD5701CF8D0002E05D0FEF77AF80299401AB042F0D96F700020A87028700320FEBD21681020C861206835\n" +":402F8000C7612046FFF7E6FD20684168064A11404160042060646F700020A87028700120FEBD0020FEBD000000E800FEF8B50546044640352878012816D001202870C80616\n" +":402FC0000026002812DAD00610D521681020C861606C04210843606412212046FFF788FD2046FFF7B7FD3FE00220F8BD080634D5500632D520680168402291430160608DF7\n" +":40300000002825D0206840688105608D890DFF2803D9FF202085930403E0608D012320855B060096208DC2B2204600F079F9608D218D401A6085687822282068016804D09A\n" +":4030400001229203114301600EE00122D203F9E740212046FFF7CCFD06E0880604D5900602D52046FFF75AFE2E700020F8BD0000F8B5074604464037387815460E46012873\n" +":4030800010D001203870F0060ED5E8060CD521681020C861606C0421084360642046FFF759FD5BE00220F8BD700708D5680706D52068416A606A421C6262017009E0B0074B\n" +":4030C0000ED5A8070CD5606A411C6162216800788862208D401E2085608D401E60853DE02C4A30062FD568062DD5208D002825D1608D002822D0206840688105608D890D60\n" +":40310000FF2806D9FF220020228501231B06009010E0608D2085E06A904205D000200090E36A208DC2B205E000200090208D0123C2B25B06204600F0F3F80FE020684068A0\n" +":40314000800123D506E0700608D5680606D5608D00280ED040212046FFF74AFDB00605D5A80603D531462046FFF7D8FD00203870F8BD206841688901F0D4E16A914205D1AF\n" +":4031800041680122920311434160E7E72046FFF715FEE3E70000FFFF10B5044640342378012B15D001232370CB0618D5D30616D5617821290ED0C16B0968496810220029A2\n" +":4031C0000AD00168CA61416C04221143416414E0022010BD816BEFE70068C2610DE00B0705D5130703D500680821C16105E08B0603D5920601D5FFF705FE0020207010BDB5\n" +":40320000F8B5054604464035287816460F46012811D0012028704149F8062DD5F0062BD5628D1020002A08D02168C861606C04210843606467E00220F8BDE36A012252068A\n" +":40324000934202D0E36A934202D16A78282A08D0E26A8A4202D06978292907D02168C86151E039462046FFF729FD4CE02168C8612046FFF76FFC43E0780719D5700717D536\n" +":40328000608D002820680BD0426A606A431C63620270208D401E2085608D401E608500E0406A608D00282ED1E06A884228D12AE0380706D5300704D539462046FFF75BFC99\n" +":4032C00021E0B8071FD5B0071DD5608D00280CD0606A411C6162216800788862608D401E6085208D401E20850DE0216862208862E06A01210906884202D0E06A002802D18D\n" +":403300002046FFF7F3FDB80605D5B00603D539462046FFF777FD00202870F8BD0000FFFF70B50568049C68688905890D1204044E11431943304021430143696070BD000015\n" +":40334000009800FCF8B51C4617460E46054611E0601C0FD0002C05D0FDF77EFE0699401AA04207D92020403568700020A87028700320F8BD286881693046884304D0002052\n" +":40338000B842E5D00020F8BD0120F9E770B516460D4604461AE0324629462046FFF7CCFD002801D0012070BD002D04D0FDF754FE801BA8420AD9616C2020014361644034E4\n" +":4033C00060700020A0702070032070BD20688069C0438006DFD4002070BD70B516460D4604461CE0324629462046FFF7A5FD002801D0012070BD681C11D0002D04D0FDF753\n" +":403400002BFE801BA8420AD9616C202001436164403460700020A0702070032070BD20688069C0438007DDD4002070BD94B000206946088710A908801390F8480F90002013\n" +":4034400001251290ED03F6A001F0F2FAFC4C002202212046FDF7FAFD012211462046FDF7F5FD012003F040FB002201212046FDF7EDFD012003F038FB012202212046FDF7BF\n" +":40348000E5FD012003F030FBC8210120019100900223EC4A0021782002F078FFEA4E040004D0EAA001F0C4FA347101E000203071E44C7822A41FE188EDA001F0B9FAF8484B\n" +":4034C0001190E048801F807801287BD1F549F6A001F0AEFADA4C002202212046FDF7B6FD012211462046FDF7B1FD012003F0FCFA002201212046FDF7A9FD012003F0F4FA40\n" +":40350000012202212046FDF7A1FD012003F0ECFA0020694608870EA9E94801F053FD002805D0E84ADF49E8A001F082FA48E16846008FDB4CA04203D1EAA001F079FA3FE12F\n" +":40354000F04AF1A00F9901F073FAD54869460887FD48119902F090F90020694608870EA9D74801F02FFD00200190129800282AD02F46F64920378F427ED9481C441B2421AC\n" +":4035800002A8FDF764F8290A684601724572DD4901982246091802A80230FDF73FF87D2040010090A01C83B202AA7821E848FDF729FF07007AD0E648FDF754FE3B46E54A52\n" +":4035C0000090C7E01FE1002400200B900C900D9020460A21484341190A0A08AB1A735973C8490A2241180BA80230FDF717F87D20400100900C230BAA7821D548FDF702FF6B\n" +":40360000070008D0D248FDF72DFE00903B462246A449D1A0A0E0641C652CD5D322460A204243FD208000824223D0871A3946D8A001F0FEF9B91C0BA8FDF709F8FD2080005D\n" +":40364000C11B4819030A08AA13735073AD483A4609180BA80230FCF7E1FF7D204001BF1C0090BBB20BAA7821B948FDF7CBFE0700C8D102216A4600E01EE0914C11872046C9\n" +":4036800002F0FAF800206A4610870EA9204601F099FC012003F028FA01201290FD20800029188DB20199081804E0FFE701250198ED030019019055E0019C0F982034844296\n" +":4036C00025D30199441A242102A8FCF7C0FF290A6846017245728B4801992246411802A80230FCF79BFF7D204001A41C0090A3B202AA78219648FDF785FE040036D0944894\n" +":40370000FDF7B0FD934A23461832009022E0242102A8FCF79CFF290A684601724572794801992022411802A80230FCF777FF7D2040010090222302AA78218548FDF762FEEA\n" +":40374000019000280BD08248FDF78CFD814A019B00902E3253499EA001F06AF930E0BDB2204601940F99884200D2FEE610A8002404800146744801F025FC10A80188A24AA5\n" +":40378000A2A001F055F9002013900EA9062001F019FC2146A7A001F04BF94149684601874748119902F068F8012003F09DF901214902A74802F060F80321A64802F05CF80C\n" +":4037C000914813990191009010A8624A038856323449A1A001F02CF901F012FE00F03EFAABA001F025F9AF4CC821206803F0C8F91448801F8178417010218170002181804B\n" +":40380000206803F097F90F4CA41FA078092804D10B4F00220221384646E15DE1A80D0100415031333032205468726561642043726561746564202E2E2E200A0D0000000081\n" +":403840000004005096000020502C00202041503133303220495350202D204572726F7220434849502049442052656164200A0D004953502043484950204944203D203078E2\n" +":403880002530347820616E6420536C6176652041646472203D20307825303278200A0D00FFFF000000140208257320456E746572656420546872656164202E2E200A0D00DD\n" +":4038C0000260000027040000257328256429204572726F7220696E20493243202121200A0D0000000A0D20536B697070696E6720426F6F742044617461202E2E2E200A0D86\n" +":4039000000000000580601080A20312E20496E697469616C20426F6F7420446174612053697A65203D2030782530347820426173652041646472657373203D203078253083\n" +":403940003878200A0D00000052F00000FF9F0000FC0D00203B0500000A0D25733A2025642E204661696C656420746F206C6F616420706C6C5F696E69745F64617461202D6E\n" +":4039800020256420307825303878200A0D2000002057726974696E672052656D61696E696E6720504C4C202D20307825303478204279746573202D205772697474656E20BD\n" +":4039C000307825303478204279746573200A0D000A0D25733A25643A204661696C656420746F206C6F6164206932635F626F6F745F64617461202D20256420307825303877\n" +":403A000078200A0D20000000F92800000A0D20426F6F74204441544120435243203D20307825303478203C3D3E20307825303478200A0D000A0D20426F6F74205374617415\n" +":403A40007573203D20307825303478200A0D00001E5000000C1000000A0D20257328293A256420435243203D20307825303478203D3D203078253034782C2020535441546B\n" +":403A80005553203D20307825303478200A0D0000537461746520636F6D706C6574650A0D0000000084000020FDF7D0FA012211463846FDF7CBFA022003F016F80020504F7B\n" +":403AC000B071C821386803F05BF8A07860701220A070386803F02EF8A07802280DD10020474FF071C821386803F04AF8A07860701020A070386803F01DF8A07803280DD10D\n" +":403B000000203F4F3072C821386803F039F8A07860701020A070386803F00CF8A07804280ED101F047FD364F7072C821386803F027F8A07860701020A070386802F0FAFFBC\n" +":403B4000A07805280ED101F063FA2D4F7074C821386803F015F8A07860701020A070386802F0E8FFA07806281CD100200121254A00900191137A51887820121D02F006FC22\n" +":403B8000070002D020A000F053FFF7741C4FC821386802F0F5FFA07860701020A070386802F0C8FFA078072813D11FA000F040FF022002F099FF0020114F7075C8213868B1\n" +":403BC00002F0DEFFA07860701120A070386802F0B1FFA078082800D073E41AA000F028FF0020074FB075C821386802F0C9FFA07860701020A070386802F09CFF61E40000D3\n" +":403C00008400002014190020204572726F722052656769737465722052656164204572726F72200A0D00000020506F776572696E6720446F776E20495350202E2E2E200A04\n" +":403C40000D0000002057616B696E6720557020495350202E2E2E200A0D00000010B508210148FDF7EFF910BD00040050F0B5274887B0C16A01242143C162C16A214005916C\n" +":403C8000C26A02210A43C262C06A002508400590202000900195694602951D48FDF710F91020052703263F07009001946946039602943846FDF704F9019400966946144897\n" +":403CC00003960294FDF7FCF8012210213846FDF7BDF9002202210E48FDF7B8F9012211460B48FDF7B3F9A00200900A480190694602953846FDF7E4F8002203210720FDF77A\n" +":403D0000A7FD0720FDF79AFD07B0F0BD00100240000400500000111010B512481049016011494160842181600121C1600021016141618161C1610162FDF796FA00280BD151\n" +":403D400000210848FDF78EF9002805D100210548FDF7ADF9002801D0FCF7ACFE10BD000000540040B00D00202A12B00010B511480F490160104941600021816001614161BA\n" +":403D800081610122C161C2600162FDF76DFA00280BD100210748FDF765F9002805D100210448FDF784F9002801D0FCF783FE10BD00780040FC0D0020330F600010B50F4881\n" +":403DC0000D490160FF21053141600021816002220261C16001224261C161016252024162826181620721C162FEF72AFA002801D0FCF760FE10BD000000300140480E002001\n" +":403E000010B5164A164886B0910706C02021016000241E21846041600838FEF7FCFB002814D1049404A90E480594FEF797FA00280CD16020009004200190039000226946C0\n" +":403E400002940748FEF77FFB002801D0FCF732FE0348FEF761FB06B010BD000055D00000A00E002010B50C480A490160E1214902416000218160C16001618161C1610C224E\n" +":403E8000016242614162FEF7A9FC002801D0FCF711FE10BD00440040D80E002010B50CA000F0C6FD0F480E490160FF21813141607F218160C160012149020161FEF77DFDE7\n" +":403EC000002801D0FCF7F6FD07A000F0B1FD10BD20494E49542057574447200A0D000000002C0040480F002020494E495420575744472053554343455353200A0D000000ED\n" +":403F0000704700008307FF22DB0E9A408907090E994000280BDA0007000F0838830808489B001818C36993430B43C3617047830804489B001B181868904308431860704736\n" +":403F400000ED00E000E400E0BFF34F8F04490348C860BFF34F8F00BFFDE700000400FA0500ED00E038B50D461A494418206800902346194A19491AA000F05AFDE8430004E8\n" +":403F8000284320602068144A00902346521D134922A000F04DFD2E4CA069C007FCD10E4A0E490D322BA000F043FDA069800702D50220A06105E0084A084914322AA000F05E\n" +":403FC00037FD4F22120105492EA000F031FD002038BD00000000F81FD904000014830008202D2D2D20204265666F7265202573282564292041742041646472657373203050\n" +":4040000078253038782056616C7565203D20307825303878202D2D2D200A0D00202D2D2D202573282564292041742041646472657373203078253038782056616C756520E0\n" +":404040003D20307825303878202D2D2D200A0D0000200240202D2D2D20257328256429202D2D2D200A0D0000202D2D2D204552524F52202D20257328256429202D2D2D20E8\n" +":404080000A0D0000202D2D2D205355434345535320257328256429202D2D2D200A0D000070B517490023CA681206120F18D18A6B154CD500134A02D51268224009E08E6B80\n" +":4040C00001252D072E438E6312688E6B2240AE438E63A24204D103218903884200D101230A48016849084900194301600068C007C00F984201D0012070BD002070BD0000CF\n" +":404100000010024000700040001800000020024070B512A000F08CFC154D28680168490849000160286800248462286844624B2149011048FCF78BFA0F4805210482818103\n" +":4041400041818471FF210171417129680A6801231A430A6081784170847070BD524553455420534C41564520493243200A0D0000B00D00205C0F00206000002010B5024861\n" +":40418000FDF7FDFF10BD0000480E00207047000030A000F04DFC0025344C0426A078042801D1FFF7B5FFA289002A04D0A078082805D00C2803D0A078002802D010E060705E\n" +":4041C000A5706281A58165700A20A07028492948FDF768FA002803D027A000F029FC2EE0A0780C2804D008282DD1A08900282AD11E4B61890C331A1D1D4801F07BFD00281C\n" +":4042000008D06922D200284928A000F011FC3348208111E0228A002A15D0E2812582A07860700620A07012491248FDF767FA002809D02BA000F0FCFB60780428AED0A078CC\n" +":404240006070A670AAE70520E07009481438FEF7E1FBA3E720456E746572656420736C617665207468726561640A0D00600000205C0F0020B00D00204572726F72204F63C5\n" +":4042800063757272656420696E2048414C5F4932435F536C6176655F526563656976655F4954200A0D0000001082000820257328256429204572726F72206F6363757265CA\n" +":4042C00064206F6E20686F73745F6672616D65776F726B202121200A0D00000008200000204572726F72204F63637572726564206174205472616E736D6974200A0D000072\n" +":4043000010B502F071FC10BD10B523489AB001680322D2029143C21489180160012102200391102100900491099040040B90000100240C900A946846FDF72AFD002817D126\n" +":404340000F20159003201690179418940121199415A8FDF7E7FB00280AD1FF200B3012940D90109413940DA8FDF720FB002801D0FCF7A0FBFDF7AAFC7D21C900FCF7F4F8D1\n" +":40438000FDF7D4FF0420FDF7C5FF03210022081FFDF75EFA1AB010BD0070004010480168821511430160C1680E4A1140C16001680D4A11400160816849084900816001681B\n" +":4043C0000122920491430160C168FD2212049143C160002101610549C003886070470000001002400C40FF88F6FFF6FE00ED00E010B50248FDF7FDFF10BD0000A00E0020D4\n" +":4044000010B50248FDF7F5FF10BD0000DC180020F0B502680124A407124D134E134FA04205D0A84203D0B04201D0B84204D11346702293434A681A43A04205D0A84203D059\n" +":40444000B04201D0B84204D103231B029A43CB681A4302608A68C2620968816201214161F0BD000000040040000801400014014030B5026A520852000262026A4568836975\n" +":404480007024A3439C080B68A40023430224A2438C6845601443836149684163046230BD30B5026A10239A430262036A4568826973242402A2430C68240214432022934365\n" +":4044C0008A68456012011A43846149688163026230BD30B5026AFF2301339A430262026A4568C3697024A3439C080B68A400234301246402A2438C68456024021443C36178\n" +":404500004968C163046230BD30B5026A01231B039A430262036A4568C26973242402A2430C68240214430122520393438A68456012031A43C46149680164026230BD10B5FF\n" +":40454000818CC90707D001684A6801235B049A43836A1A434A60818C890707D501684A6801231B049A43C36A1A434A60818C490707D501684A6801239B049A43036B1A4371\n" +":404580004A60818C090707D501684A680123DB039A43436B1A434A60818CC90607D50268916801231B039943836B19439160818C890607D501688A6801235B039A43C36BD5\n" +":4045C0001A438A60818C490612D503685A6801210905046C8A4322435A60026C8A4207D10268516803235B059943436C19435160818C090607D501684A680123DB04806C23\n" +":404600009A4302434A6010BDF8B500260446C666FCF722FD054620680068124F000709D501212B46002249052046009700F0BFF900280DD12068006840070BD501212B46AD\n" +":40464000002289052046009700F0B1F9002801D00320F8BD202060346072A07226720020F8BD0000FFFFFF0110B5806A0022014640314A834A82FEF70DF810BD01680A683B\n" +":40468000FF2321339A430A6001688A68520852008A60202160308172704770B50246403201466031938B8D7A0C460168222D05D08869082210438861022070BD496A012696\n" +":4046C0008568360389B2B54202D10569002D0BD01940436D5D1C45651970518B491E0904090C518307D015E0456D19402980416D891C4165F1E701680A68FF2321339A43AC\n" +":404700000A6001688A68520852008A602021A172FEF7CEF8002070BDFEB50446016880682269E36910436269102700261A4310430A683546784B1A4002430A602068416888\n" +":40474000032212039143E26811434160734A2168A069914201D0226A10438A680B231B029A4302438A606E4A20686E4990420CD1C8688007800F06D0012843D002283FD09A\n" +":40478000032826D124E0012723E0674A90420AD1C8680C21084031D0042833D008282FD00C2816D114E0614A904227D0604A904224D05A4A90420CD1C968032080020140E9\n" +":4047C0001CD01015091A1DD0091A19D0814200D108270220FDF740F80190504B514922684039D81300929A4235D1002F0CD0022F0DD0042F12D0082F1CD113E00027E8E718\n" +":404800000227E6E70427E4E7FDF766FA08E00868C00601D5474805E0474803E0FDF77CFA002873D0626851005118814202D81103814201D2012569E0010E060250080023BD\n" +":4048400030185941FBF7BAFE032109023B4A411A914259D9EEE7E26982422DD13B0000F0F7F80906080B24192424241F2400019812E0FDF741FA0FE008686168C00602D50F\n" +":4048800048082F4A01E02F4A48088018FBF76CFE86B20BE0FDF740FA616840004A08F4E76168012248081204EFE70125310909013007400F084327E03B0000F0C9F80907A4\n" +":4048C0000A0D061D060606290600B3E7FDF704FA14E0FDF711FA11E008686168C00602D54A08144801E014484A081018FBF73CFE81B20098C16009E0FDF70EFA61684A087A\n" +":404900008018FBF731FE80B22168C8602846FEBD61684A08E9E70000F369FFEF00480040003801404010024000440040004C00400050004000093D000024F400FFFC0F00E2\n" +":4049400000127A000048E8016921095C212901D00220704702464032518A002912D0012381681B03994202D10169002915D0C16C4B1CC364006809788162508A401E508215\n" +":404980000020704701680A6880239A430A6000680168402211430160F2E7C16C03680988C905C90D9962C16C891CC164E5E7FFB581B017460E4604460A9D1DE0681C1BD01C\n" +":4049C000002D05D0FCF748FB0499401AA84213D920680168FF22A1329143016020688168490849008160202060346072A07200202072032005B0F0BD2068C16930468843CA\n" +":404A000004D00020B842D9D00020F3E70120F9E710B50248FDF740FE10BD0000D80E002010B50248FDF7BAFF10BD0000480F00200FB410B503A9044B044A029800F024F859\n" +":404A400010BC08BC04B01847D95C0008A400002030B47446641E2578641CAB4200D21D46635D5B00E31830BC184702E008C8121F08C1002AFAD170477047002001E001C100\n" +":404A8000121F002AFBD17047FFB591B00F460546002606E025280AD0149A139990476D1C761C28780028F5D1304615B0F0BD002400940121F34A029400E004436D1C2B788E\n" +":404AC0000846203B98401042F7D128782A280ED0022128780246303A092A15D8009A0A235A43303A80180C436D1C0090F1E701CF0090002805DA01204003044300984042E4\n" +":404B00000090022004436D1C28782E2815D10420044368786D1C2A280AD101CF6D1C02900BE002990A225143303940186D1C02902878014630390929F3D928786C2810D0A7\n" +":404B400006DC4C281AD068280ED06A2817D104E0742813D07A2812D110E00120400504430CE00121090501E0032109050C436978814203D10120000524186D1C6D1C28787E\n" +":404B800003906E281ED00CDC632831D004DC00288AD0582811D1B2E064287BD069280CD178E073282DD004DC6F2870D0702804D1A7E075286CD078286BD0149A139990474F\n" +":404BC000761C62E06002400F022807D003280AD0042838680AD006603F1D56E03868F11706604160F8E738680680F5E70670F3E73878694608740020487404A80390012095\n" +":404C000003E0386803900020C0433F1D61070FD5002101E00199491C029A0191914213DA8142F7DB019A0399895C0029F2D10BE0002101E00199491C01918142FADB019A56\n" +":404C40000399895C0029F5D101990098139A401A00902146149B00F03BF901998019461807E0039803990078491C0391149A139990470198401E0190401CF2D12146149BB3\n" +":404C8000139A009800F014F986196D1C09E741E033E034E00A200021049005916002410F022905D001CFC2179446032905D007E0FF1DFF08FF0003CF06E000B2C217944681\n" +":404CC000042902D140B2C1178C4600226146944506DA0A460021404291418C462D2102E0210504D52B216A461176012103E0E10701D02021F7E7019154E00A200BE0102065\n" +":404D000009E01020049000210420044308200591029003E008200021059104906002410F022905D001CF00229446032906D006E0FF1DFF08FF0003CF8C4603E080B2042926\n" +":404D400000D1C0B20021019121072BD50399702906D0049A1021059B4A401A4305D00EE040216A461176012108E06146014306D030216A4611760399517602210191049A50\n" +":404D80000821059B4A401A430CD16146014301D1610707D530216A461176012101910299491E02910399582904D037A103910FA90F910DE039A1F9E76146059B049AFBF761\n" +":404DC000FDFB039B8C469B5C0F9A521E0F92137061460143F0D10F9807A9081A20300390600704D5012000048443029801E0012002900399884201DD401A00E000204118BE\n" +":404E00000290019809180098401A0090E00306D42146149B139A009800F05AF886190020049008E006A9085C149A139990470498401C761C049001998842F3DBE0030CD5B7\n" +":404E40002146149B139A009800F042F8861904E0149A302013999047761C0299481E02900029F5DC08E00F980F990078491C0F91149A13999047761C0399481E0390002955\n" +":404E8000F1DCFBE60928010030313233343536373839616263646566000000003031323334353637383941424344454600000000F8B5044600251E461746880404D405E0E8\n" +":404EC00039462020B0476D1C641EF9D52846F8BDFFB50446002581B01E46C80301D5302700E02027880404D505E038460399B0476D1C641EF9D5284605B0F0BD70B50D46AD\n" +":404F0000002812D001780446432903D015A0FFF78FFD0AE00221A01C00F0C8FE21790246914204D017A0FFF783FD022070BD22480178052901D0214A1170617801706188A9\n" +":404F40000802090A084381B2012901D9012100E000214018801C2880194901200870002070BD000020496E76616C6964205369676E617475726520307825303278202121A9\n" +":404F8000200A0D0020476976656E2020435243203D2030782530327820213D2043616C63756C6174656420435243203D20307825303278200A0D0000650000206400002079\n" +":404FC000660000207CB50546C8220120019200900A4602232946782001F0D8F9041E04D0294602A0FFF724FD20467CBD204572726F722052656164696E6720726567697348\n" +":40500000746572202578202121200A0D00000000FEB5CF4E0021B08D6A4691800D22920103465343CC4CCB4FCB4A1C19D2583B46396825791B79914201D1AB4204D0C7A078\n" +":405040000095FFF7F5FC80E1012B0BD1B968E268914202DCA368994206DAD0A0A368FFF7E7FC72E10920FEBD7821F0854843841920460A467C30B749FBF7D0FACD4BE26F21\n" +":40508000B348D11A40309A4277D021DCCA48B04D111A2035824265D00FDCC849501A8A4249D005DCC64810182DD0012826D136E00A287AD00E2821D160E00227C14801291D\n" +":4050C00074D0022973D0072972D0082916D13DE09F4D603523296CD008DC01296AD0072969D0082968D00C2908D1F2E025296ED029296DD02C296CD030296BD0B249B3A0C6\n" +":40510000FFF796FCAEE7803420790102684681800720000300F0B0FB2079687413E1803420794006410C68468180AE4800F0A4FB2079A87407E18034207901026846818075\n" +":40514000A94800F099FB2079E874FCE080342079010268468180A4480A3000F08DFB20792875F0E0803420790102684681809F4800F082FB20796875E5E075E0803464212A\n" +":405180006068FBF707FA0007050C08036421FBF701FA0105090D2943684681809248001D00F06AFBA088F086CDE006E03FE020E014E078E05FE092E097E0803460680028B4\n" +":4051C00009D08B496846818051200002B7E05FE0A2E08EE06BE086490839F3E78034A08881B268468180834800F046FBA0887087A9E001A90646FFF7E5FE80346068002810\n" +":4052000002D001280BD104E0694688883843888005E068468088C107C90F6846818068468188304600F028FB207928778BE001A90646FFF7C7FE80346068002802D0012854\n" +":405240000AD105E06946888801210843694602E0694688883840888068468188304600F00BFB207968776EE0803421798177606800F064FB67E0817F012903D08034A1880B\n" +":40528000018460E08034A188018400F03BFC5AE0807F022859D1803460687066A978606800F0D8FB4FE080342079A8704BE080345148616800F010FB50486168FBF76AF98F\n" +":4052C0000006010C4C48801F00F0D6FA6068F06639E080346068306400F0D2FC02E080346068706400F04CFC2DE080346068B064F8E780346068072801DD083800E00830DC\n" +":40530000000369468880684681883748801D00F0B3FA6068306716E080346168022914D8334E2736002903D18021304600F0A4FA6068022801D0002803D18121304600F013\n" +":405340009BFA207928760020FEBD0220FEBD000014190020642D0020588400080A0D204374726C2049442030782530387820213D20307825303878206F72204374726C2060\n" +":40538000547970652030782530327820213D20307825303278200A0D000000000A0A0D202564203E20256420203C202564200A0A0D00000001099A001309980002099800D6\n" +":4053C00000F767FF0C1000000E14020825733A20756E6B6E6F776E206374726C2069642E0A0D0000DA52000006700000065000005F1100000A5100002820000040420F0063\n" +":40540000F0B585B000206946039008810A240125042303AAD82178200095019400F0B6FF34A00399FFF704FB39483A4F007C002801D0142100E01221384600F01DFA3548F1\n" +":4054400001211C3800F018FA324830211E3800F013FA012605217603C901304600F00CFAFF21E131B01C00F007FA2A480F218902103800F001FA2849284800F0FDF931460D\n" +":40548000701000F0F9F9042303AA682178200095019400F07BFF22A00399FFF7C9FA02A90620FFF78FFD6846018926A0FFF7C0FA02A92B48FFF786FD6846018929A0FFF75B\n" +":4054C000B7FA274802A9801CFFF77CFD684601892BA0FFF7ADFA02A93846FFF773FD684601892EA0FFF7A4FA00F066FC002005B0F0BD00000A0D204C696E652074696D65AB\n" +":40550000203D20307825303478200A0D000000003419002030200000FF0F0000465000000A0D2048494E46204D495049204672657175656E6379203D2030782530347820EA\n" +":405540000A0D00000A0D20426F6F7420537461747573203D20307825303478200A0D000038600000204146204D49504920436C6B204D53423A203078253034780A0D000064\n" +":40558000204146204D49504920436C6B204C53423A203078253034780A0D0000204D495049204C616E6573203A203078253034780A0D0000FEB5704C704F20462038028D89\n" +":4055C00018204243BE68FD6839683869237C7F68002BBC4630D06A4B9A582346203B1F8D18235F439646664B31E0DF88BE4235D0D8889A8800920290634601967246614829\n" +":40560000FFF716FA16E059898D4202D1998988422AD05DA00CE0D9898D4223D859898D4220D3198A884202D8998988421CD25EA0FFF7FEF90220FEBD514B90339A584E4B78\n" +":405640009646203B1F8D18235F434D4B9033FB187145CDD19F88BC45CAD1C6E7197A0129D9D1D0E759A0E3E74348142243491438FAF7D4FF404D5E48203DE968C1421BD12A\n" +":4056800030215C4800F0F8F80F262969F6017F228F1B0123D2055848B1425CD0574E0FDC8F1B17D0B7420FD12D2669693601891B15D0F0291ED118E051A0FFF7B9F907E0F3\n" +":4056C000BE1B4ED0202E52D057A06A69FFF7B0F90920FEBDC26002616B84002009E05C49C26001616B84237004E0C26002616B84022020703F480121801C00F0BDF80124B5\n" +":40570000640366102146304600F0B6F8287E0006010C38480E3000F0AFF8288A81B2204600F0AAF8A88A81B2A01C00F0A5F800F0A7FA00F025FA10482030807F00F0FEF84B\n" +":4057400044A06A692969FFF773F92146304600F093F80020FEBD3E49C26001616B840320C7E73B49C26001616B840420C1E7C26002616B840520BCE734190020502D002077\n" +":40578000388300084C150208496E76616C6964204672616D652052617465202D2044495343200A0D00000000496E76616C6964204672616D652052617465202D20434F4EAB\n" +":4057C00054206D696E200A0D00000000496E76616C6964204672616D652052617465202D20434F4E54206D6178200A0D00000000ABA6A9A6122000009000002080020000FA\n" +":405800005468697320666F726D617420307825303878206973206E6F7420737570706F72746564200A0D000020576964746820256420486569676874202564206973206E3B\n" +":405840006F7420737570706F72746564200A0D00BE9FAA3F204368616E676564204672616D652053697A6520746F2025642078202564200A0D0000003EB5044668460181A1\n" +":40588000C821002001910090022302AA2146782000F07CFD030005D068460289214602A0FFF7C6F800203EBD4572726F722057726974696E6720726567202578203D2030C5\n" +":4058C00078253034782020657272203D20307825303278200A0D00003EB505460291C821002001910090042302AA2946782000F04DFD040007D00346294604A0029AFFF772\n" +":4059000097F820463EBD00203EBD00004572726F722057726974696E6720726567202578203D203078253034782020657272203D20307825303278200A0D0000FEB5074629\n" +":4059400000253948394C3A4E0295002F04D0022F02D0012F53D065E02C21FFF78DFF40212046FFF789FF304800213430FFF784FF2D4800213630FFF77FFF01242A48A40307\n" +":4059800021463830FFF778FF274821463A30FFF773FF284C022F05D1204660308178606E00F058F823482449203000780300FFF74FF806041E04202224081D48001FFFF797\n" +":4059C0008BFFE06E02900A200190042302AA31460095782000F0DAFC1848E16EFAF7C4FD0006010C1248801FFFF746FF1AE01449E3E71449E1E71449DFE71449DDE72021D2\n" +":405A0000FFF73AFF00212046FFF736FF104C08482146001FFFF760FF21463046FFF75CFF00F070F80020FEBD02500000E452000028200000141900201534000040420F00A6\n" +":405A4000102700004D3A0000CB660000828B0000B08F0600F8B50C462749884249D80104264F0E0EC5B269463846FFF7ABFA694608887911084381B23846FFF7FDFEB60842\n" +":405A80006408301B00B269460880002800DA002008800006010C1A48FFF7EEFEAD08281B00B269460880002800DA002008800006010C1348801CFFF7DFFE301900B2694633\n" +":405AC0000880402800DD402008800006010C0C48001DFFF7D1FE281900B269460880402800DD402008800006010C0548801DFFF7C3FE0020F8BD0000FFFF0000102000009A\n" +":405B0000365000007FB5002419480394008C642148430A250290042302AA164901950094782000F033FC042302AA134978200195009400F02BFC01200090042303AAE82189\n" +":405B40000195782000F022FC0C480299FAF70CFD074940398969814200D208460006010C05480838FFF788FE002004B070BD0000541900200C5000002820000040420F0083\n" +":405B8000F8B53B48006CFAF7F2FD3A4D00908D270446FF053846E968FAF7ABFD3649FAF76BFD2146FAF7A5FDFAF7E8FD304C06B24034E68138462969FAF79BFD2E49FAF730\n" +":405BC0005BFD0099FAF795FDFAF7D8FD05B228482582E121406C0901FAF7DCFC074601208003FF21801B6931FAF7D4FC01460120794340030F181E48A781E121806C090101\n" +":405C0000FAF7C8FC009001208003FF21401B6931FAF7C0FC60820099484301214903081AF10F891949107A1AA082E282EA0F52195210831A6383791821838018A083E18A6A\n" +":405C40000E48FFF719FE0D48618B801CFFF714FE0A48218B001DFFF70FFE0848A18B801DFFF70AFE0A2000F03FFF0020F8BD000014190020900000200000C842042000004F\n" +":405C800009481921027849012038012A06D1026C1346FF3B0D3B01D1521C0264026C8A4200D9016400207047341900200346002010B50246002B05D0002903D04B2464014A\n" +":405CC000A14205D9002010BD9C5C6040521C92B28A42F9D310BD000013B5044B012269460348FCF7E6FD00981CBD0000FFFF0000D80E0020F8B51D461446002825D0002918\n" +":405D000023D0002C21D04B267601052903D1114A1278002A09D0224600F08AFF07000ED00DA0FEF785FE3846F8BD1946FFF7E6F8070001D012A0F4E70020208002E0208881\n" +":405D4000B04202D82888B04201D90220F8BD0020F8BD0000660000204572726F72206F6363757272656420696E2070726F636573735F636F6D6D616E64200A0D000000009D\n" +":405D80004572726F72206F6363757272656420696E20616E616C797A655F6C656E6774685F7061636B6574200A0D0000EFF30580002800D001207047F0B5304A0024547426\n" +":405DC0000A2090741020D0741075012513465575DC20203BD8866A20186415762848588721461177104651772030FF26817739360684064620363176224F5F661827B77046\n" +":405E00005964214FDF66996408271F670B2711703F045F626F038781C182AB03038341838383C381038241828782F576174E40380D21234689014B437821F7586143091893\n" +":405E4000CF679B191F7980310F70012F12D01F7A0F72DB68CB60641C282CE9D3167C0C4C0521FF22C901E132C4604B2310302EC00020F0BD1B694B60EDE70000341900203B\n" +":405E80009411000080800000E02202005884000855595659002808D00C490D4A8978002905D00320D0750020704702207047417803780802184341BA06480023022903D032\n" +":405EC00001210174D375EEE70374FBE790000020502C00203419002070B5104CA078102808D00F49112814D0122814D001208871002070BD0B4D0121286800F041FE0028D8\n" +":405F000001D0012070BD0920A070286800F012FEEEE70320EBE70820E9E7000090000020502C002084000020FEB500220446684602811646002907D003200880002C41D033\n" +":405F40002578FF2D02D004E00220FEBD1E48057825701E498878FF280CD00F23002822D0122820D0F027112820D0C00621D46770A27022E0164869460881012000900190AF\n" +":405F8000022302AA0621782000F000FA060003D010A0FEF74DFD15E068460089000A60706846008908E06370F12005E06370A77003E08888010A6170A0700E48405D0028CD\n" +":405FC00000D006463046FEBD6400002090000020F10F0000204572726F722052656769737465722052656164204572726F72200A0D000000502C002030B500290AD0244BA1\n" +":406000009B78102B0CD02348D90605D401210174084630BD022030BD03210174084630BD0025282802D30D800A2030BD78235843194BC318184680300478012C02D0022C44\n" +":4060400015D001E009240C80002A1ED0D96F090E1170D96F090C5170D96F090A9170D96FD170017811710178012903D00DE00D80092030BD4168090E51714168090C917163\n" +":406080008188090AD17100791072002030BD000090000020502C00201419002070B50024002905D0282805D3002008800A2070BD022070BD0D239B01344D584343191E7949\n" +":4060C000012E02D0022E05D101E0152601E09E890A360E80002A56D02958090E11702958090C5170295A090A9170285CD070187910711879012802D0022844D12CE09868A3\n" +":40610000000E50719868000C90711889000AD071187A1072D868000E5072D868000C90729889000AD072187B10731869000E50731869000C9073188A000AD073187C1074B9\n" +":406140005869000E50745869000C9074988A000AD074187D107516E0187A5071D868000E9071D868000CD0719889000A1072187B507205E0181920301119007C8872641C84\n" +":40618000D868A042F6D8002070BD000058840008F8B500271646002905D0282805D3002008800A20F8BD0220F8BD0D22920150431E4A851828792C46A034012802D00228A4\n" +":4061C00009D11CE0207E032801D0232002E0A07E400124300880002E25D02946983120223046FAF71BFA3046217E2030017000214170617E8170217E032905D013E0A8897A\n" +":406200000A3008800920F8BDA17EC17008E078012918801920222430BB31FAF7FFF97F1CA07EB842F3DC0020F8BD0000588400087CB50024054600291ED002200880002DFF\n" +":4062400018D0C82101200191009002230B4A0021782000F09BF8040004D009A0FEF7E8FB0D484470054E0DA0B61FF188FEF7E0FBF088288020467CBD02207CBD9600002004\n" +":406280004572726F72204348495020494420526561640A0D00000000502C002043484950204944203D20307825303478200A0D0030B500290AD0334B18241D7C0023444381\n" +":4062C000002D28D0062828D22F482BE0022030BD0D2500E015250D80002A51D00159090E11700159090C5170015B090A9170005DD0709888000A107118795071D888000A06\n" +":4063000090719879D071187A1072187A01280ED0022835D116E0062802D30B800A2030BD1948903023181D7A012DD3D1D0E75889000A5072987A90729889000AD072187B55\n" +":4063400010731DE05889000A5072987A90729889000AD072187B1073D889000A5073987B9073188A000AD073187C1074588A000A5074987C9074988A000AD074187D1075BC\n" +":40638000002030BD3419002038830008FFB585B01D460E980F9B14460E4601280DD8042D0BD8002C09D0604A00215164320AF1B2002872D0012860D102E0022009B0F0BDA2\n" +":4063C0006846027141710093022301AA56480599FBF718F807001FD05348FAF743FF0446059800903346224639465048FEF720FB4D4D28680168490849000160012000F047\n" +":4064000073FB286801680122114301601EE0042C7ED0032F7CD081E000200190029003904348092101702B4601AA3F480599FAF7ABFF07000DD03C48FAF714FF044600969E\n" +":40644000024639463B48059BFEF7F2FA202C67D0DDE700F0E8FB364E02E0012000F044FB30780928F9D0012D04D0022D06D0042D58D108E068460079207053E068468088F6\n" +":4064800040BA20804EE00198694600BA000AC97900020843206045E0FFE720686C4622716171012D04D0022D04D0042D0DD105E0A0710AE0020AA271E07106E0020EA271E2\n" +":4064C000020CE271020A227260720093AB1C01AA15480599FAF796FF040023D01248FAF7C1FE05460598009033462A4621461248FEF79EFA0C4E306801684908490001603D\n" +":40650000012000F0F1FA306801680122114300E006E00160202D03D0032C01D005204DE707204BE7002049E7FC0D0020A01502089000002048160208F4150208F8B5114D80\n" +":40654000114CA878002807D0122805D0112817D0082020710820F8BD0C4E0121306800F00FFB0127002805D009A0FEF761FA27710120F8BDAF70306800F0DCFA0020F8BDEE\n" +":406580000320E6E790000020502C0020840000200A0A0A0D2053656D2057616974204661696C6564202121200A0D000070B5104C1049A078112808D00725102809D012285E\n" +":4065C00007D0002805D04D750AE001204875082070BD094E0121306800F0D2FA002801D0072070BDA570306800F0A4FA002070BD90000020502C002084000020FEB5054658\n" +":406600000F46002069461C460881002A0BD01F4901268B780321102B0AD01D48DA0604D486740120FEBD0220FEBD81740320FEBD012F05D0022F05D0042F05D01080F2E75C\n" +":40664000118003E0042000E006201080002C1AD011882046F9F7FBFF280A2070657000963B4602AA294678200196FFF78FFE050004D008A0FEF7DCF92846FEBD68460089C7\n" +":40668000010AA170E0700020FEBD000090000020502C0020204572726F722052656769737465722052656164204572726F72200A0D000000F8B504462148224E80781028BB\n" +":4066C00007D0C00602D401207074F8BD03207074F8BD607821780002084345BA282D02D30A207074F8BDA01CF9F7BCFF00BA000A61790002144F08433860A07938710128CF\n" +":4067000002D009207074F8BDE01DF9F7ABFF00BA000AA17A00020843B8600C480C4C85850121206800F02CFA002801D00720F8BD034805218170206800F0FCF90020F8BDFB\n" +":4067400090000020502C0020642D00201419002084000020F8B504000AD0284E2848B17810290BD0C90605D4012141720846F8BD0220F8BD032141720846F8BD61782278D9\n" +":40678000090211434DBA0A21062D02D341720A20F8BD1C4F0121386800F0F2F9002801D00720F8BDA01CF9F75DFF00BA010A60790902014314480160E179A279090211434B\n" +":4067C00049BA4160617A227A0902114349BA8160E17AA27A0902114349BAC160617B227B0902114349BA0161084805850420B070386800F09FF90020F8BD00009000002039\n" +":40680000502C002084000020502D00201419002070B50E4C0325A078102808D0C1060C4802D40121017209E00572032070BD094E0121306800F0A4F9002801D0012070BD44\n" +":40684000A570306800F076F9002070BD90000020502C00208400002070B50F4CA078102809D0C1060D4802D40121C1710AE00321C171084670BD0A4D0121286800F080F9B3\n" +":40688000002801D0012070BD0220A070286800F051F9002070BD000090000020502C00208400002070B50C4C0825A078112803D00A488575082070BD094E0121306800F0E8\n" +":4068C0005FF9002801D0072070BDA570306800F031F9002070BD000090000020502C00208400002070B5224E0446B1782148102909D0C90603D40121C174084670BD0321D0\n" +":40690000C174084670BD61782278090211431A4D49BA6980A1782972012907D0022907D0042914D00221C174084670BDE07804E02079E1780002084340BA104C686001212C\n" +":40694000206800F01DF900280AD0072070BDE01CF9F788FE00BA000AA17900020843ECE70620B070206800F0E5F8002070BD000090000020502C002014190020840000209E\n" +":4069800092B03F493D488860002080F3108862B6FAF7E8FEFDF7B8FCFDF764FAFDF766F9FDF7BAF9FDF7E2F9FDF72AFAFDF706FA3448C26A02210A43C262C06A324C08408B\n" +":4069C000009008200D9001200E900320002510900F950DA92046FAF773FA002208212046FAF734FB2948C069009029480368C12228492948FEF71CF828A22BA12DA0FEF780\n" +":406A000017F8F9F743FF1F4C40342069400002D50120FAF78FF920690121C90508432061FDF73CFA2B4C20222B486169F9F7F6FD0520A0810BA80B9500F063F8206201212C\n" +":406A40000CA80C9500F062F8124960621422083101A8F9F7E3FD002101A800F0CDF80D49A06114221C3106A8F9F7D8FD002106A800F0C2F8E06100F03FF8FEE700040008D4\n" +":406A800000ED00E000100240000400500020024000000140E0810008EC14020831343A30323A3438000000004665622032312032303230004275696C642044617465206123\n" +":406AC0006E642054696D653A202573202573200A0D00000060000020BC18002001460020842900D0C81C704710B5002800D1012000F0EEFE002010BD10B500F057FF00206E\n" +":406B000010BD10B5012000F0D5FF10BD10B5012901D0002010BD03220021012000F0DCFF040004D000231A46194601F0C9F8204610BD000038B5002405460094FFF736F97E\n" +":406B400000280FD06946284601F046F9012801D0FF2038BD009800280DD0012007490007486008E000231A461946284601F0A8F8012800D0FF24204638BD000000ED00E0E9\n" +":406B800038B5054600200090002D11D00024481C10D0002900D00C46FFF708F9002814D06A460021284601F051F9012815D104E0802038BD0024E443EEE7009800280ED069\n" +":406BC000012008490007486009E0002322461946284600F0A3FF012801D0FF2038BD002038BD000000ED00E010B501F0BDF9012801D000F04DFF10BD3EB5044608200D468A\n" +":406C0000205EFFF76BFF02A901910090208A2B4682B22168606801F07FF9012801D000203EBD02983EBD10B500F046FE002010BDFFB5044689B000276846878007821D4611\n" +":406C400016460297002C11D00A98C4420ED02178432903D0F2A0FDF7EBFE07E0F84861780278914205D0F7A0FDF7E2FE02200DB0F0BD0A980B00C01E0390F948808807902E\n" +":406C80000A982218F748203A0078FDF7E1FE180D2A67AAFDFCFBFAF9F8D8F7F7F7F7F7F6F5F4F3F2F1F0EFF7012802D0022804D085E201204003608029E0EB4902980A5CBE\n" +":406CC000201882700298401C02902028F6D32021A01CFEF7EBFF029961188870CF7024203AE0012802D002281DD068E201A90020FFF79EFA002804D0DCA0FDF799FE6846E7\n" +":406D00000782684680880102000A014361800221A01CFEF7CBFF2071677106203080D1490220087079E101A904A8FFF781FA0290002804D0CDA0FDF77BFE684607826846E3\n" +":406D4000008A010AA170E0700221A01CFEF7AEFF2071029860710620308072E2012802D0022826D06DE20592D17F0398029181B2A01CFEF79BFF0299814207D005980A9904\n" +":406D8000C27FC2A0C91EFDF753FE39E0E178A27808021043B24940BA8880002201A9FFF787FA40E0684681880802090A0843608081E0A21C01A90798FFF77AFA94E06946C7\n" +":406DC0008988A01CFEF772FF69468988611888706946898802986118C87069468888001D71E0012802D0022823D02AE2D17F0398029181B2A01CFEF759FF0299814207D0E4\n" +":406E0000ADA0FDF715FE6846878002200290C9E7E178A27808021043914940BA8880002201A9FFF73BF902900028BBD068468780B8E7A21C01A90798FFF730F954E0012827\n" +":406E400002D002284BD0FCE1D17F0398029181B2A01CFEF72BFF0299814216D096A0FDF7E7FD68468780022002901EE0D7E1D3E1CFE1C4E1B5E166E156E18EE0E3E17AE078\n" +":406E800076E072E06EE041E03AE0E178A27808021043734940BA8880002201A9FFF778F90290002801D068468780684680880102000A014361800221A01CFEF7F7FE20715E\n" +":406EC000029860710620308066480178012912D002298AD068468088002886D06FE1A21C01A90798FFF754F90290002800D166E76846878063E76946898800297ED1A0E13B\n" +":406F0000FFF71CFB57480770378056E154484088002810D070A0FDF78BFDFF20A070504841880A0AE270217103216A46918002210291478004E001A9A01CFEF7F5FF029099\n" +":406F400069468988A01CFEF7B1FE69468988611888706946898802986118C87069468888001DF9E6FEF7B8FF6AE1FFF775FC67E1FFF74EFC64E1D17F0398029181B2A01C62\n" +":406F8000FEF794FE0299814203D04BA0FDF750FD4FE1A01CFFF7DEFB52E1012802D002283DD00CE1D17F0398029181B2A01CFEF77DFE0299814207D03FA0FDF739FD684617\n" +":406FC00087800220029012E0E178A27808021043234940BA8880002201A9FFF70DF80290002804D043A0FDF723FD68468780684680880102000A0143618000E00BE00221CF\n" +":40700000A01CFEF753FE207102986071CDE06946898800297CD0022101702F80CFE078E020496E76616C6964205369676E617475726520307825303278202121200A0D000D\n" +":4070400065000020204944203D2030782530327820213D20307825303278200A0D0000008800002066000020BC1800204572726F7220696E2047657474696E672053656EE3\n" +":40708000736F72204944200A0D00000020435243204C656E677468203D203078253032782C206F72696720637263203D20307825303278200A0D00002043524320766572E5\n" +":4070C000696669636174696F6E204572726F72202121200A0D0000004572726F7220696E204D435520697473656C66202121200A0D0000004572726F7220696E2047657490\n" +":4071000074696E67204374726C200A0D0000000052E0A21C01A90798FEF76EFF0290002800D10DE7494857E0D17F0398029181B2A01CFEF7BBFD0299814200D025E7A01CBF\n" +":40714000FFF7B8FA7CE0012802D0022839D036E0D17F0398029181B2A01CFEF7A7FD0299814202D039483C380FE0E178A27808021043374A40BAD08021791170002301AA29\n" +":40718000FFF73CFA002804D032A0FDF751FC68468780684680880102000A014361800221A01CFEF783FD20716771062030802F480178012900D12AE7077005202880002004\n" +":4071C00055E52348A31C017801AAC088FFF716FA02900028A5D01FA0FDF72AFC68468780AEE6D17F0398029181B2A01CFEF75EFD02998142A2D1A01CFFF774FB20E01CA0FD\n" +":40720000FDF716FC204921A0FDF712FCF9F7D0FC16E0FFF7CBF913E0FFF744FB10E0D17F0398029181B2A01CFEF740FD0299814203D007491D48488002E0A01CFEF72AFE90\n" +":4072400037800A48B8E7092011E50000F4700008880000204572726F7220696E205265616420495350200A0D00000000660000204657205570647420496E6974696174651C\n" +":4072800064200A0D00000000B10B0008204669726D776172655F757064617465203D20307825303878200A0D000000000A200000F8B5134C0F46E66805462068001D00F016\n" +":4072C00069FA681C07D1002F05D021680D48091D00F098FAF8BD2068751945602168B54204D2A06B091D00F075FAF8BD606B091D00F070FAA06A8542F7D2A562F8BD000099\n" +":407300000C0000209C010020F8B5054600F086FA2A4CA068401CA0602068294F002803D06069002827D02CE02560A068012828D1002614207043C01900F03EFA761C072EAF\n" +":40734000F7D31F488C3000F037FA1D48A03000F033FA1B48B43000F02FFA1948C83000F02BFA1748DC3000F027FA15488C3060631430A06305E02068E96AC06A884200D8B4\n" +":407380002560606A401C60626864E86A2169884200D9206114214843C019291D00F032FA00F048FA6069002806D02068E96AC06A884201D200F080FAF8BD00000C000020B3\n" +":4073C000C000002070B5114E114C18E000F014FB3068002817D000F09BFE00F01FFAF068C568281D00F0D6F9A068401EA0606068401E606000F01EFA284600F056F860684B\n" +":407400000028E3D170BD00F083FEF8E7880100200C00002010B5026C0C46002A0CD0C1688B18C36041688B4201D2194601E00168C1602046F9F7F2F810BDF8B5856B17468A\n" +":4074400004460026026C002A11D0002F19D0E068F9F7E4F8E168206C091AE1602268914202D26168081AE060022F17D019E02068002816D1606800F0E5FD064600206060F4\n" +":407480000FE0A068F9F7CAF8216CA0684018A0606168884205D32068A06002E0002D00D06D1E6D1CA5633046F8BD10B50446006B00F0CEF9204600F0CBF910BD03210E488B\n" +":4074C0008902420705D0C01DC0080B4AC000821A891A0A4A0023411809C20839C908C900183A11604B600B600B1A0AC093600120C0075360D0607047B001002058000020EE\n" +":40750000044CFFF75FFF20680128FAD900F0D4F9F7E70000C0000020FFB581B097000C9C0E460A9DA5223946206BF9F789F8206B3F1FC019C708FF00780701D072B6FEE75A\n" +":407540002218315C20321175315C002902D0401C1028F5D32046403000260090C670072D00D30625E5622665201DE56400F02FF92046183000F02BF924610720401B646295\n" +":40758000A0616665009806763846049A019900F0F1F820600B98002800D0046005B0F0BD30B5114900E011460A688242FBD34B685C18844203D140681818486008464368C7\n" +":4075C0001C18944209D1084C103C2468A24209D052689A1842600A6812680260814200D0086030BD0460F9E75800002010B5044600F014F9A06B002804D0002400F01AF984\n" +":40760000204610BD0124F9E70648416B0968002905D0416BC968C9684968816270470021C943FAE70C00002003480068401C72B600D0FEE7FEE7000008000020F8B5044626\n" +":4076400000F0ECF8254640350526AE57274624370BE0606A00280AD0384600F027FD002801D000F04DF9761E76B2002EF1DC0027FF436F7100F0DEF800F0D0F80426AE5739\n" +":407680002046103000900BE0206900280AD0009800F00CFD002801D000F032F9761E76B2002EF1DC2F7100F0C5F8F8BDF8B50546002700F0A1F9284E3068002801D1FFF719\n" +":4076C000FDFEF06805423FD1002D3DD00835680708D06807400F0821081A4519680701D072B6FEE7002D2FD0706885422CD81A48103001460C6801E020460C466168A942F5\n" +":4077000002D221680029F7D131688C421CD007682168016060680837411B102908D96019420701D072B6FEE741606560FFF738FF61687068401A7060B268904200D2B06006\n" +":40774000F0680143002003C400F0E2FC780701D072B6FEE73846F8BD4800002004490868002803D00868026D521C0265086870470C00002010B50124031F24061C601B1F15\n" +":407780001960191F024B0B60143940380A6010BD297600084368826801699A60836842685A604A68824201D182684A60002202610868401E086070470146083100224160E4\n" +":4077C000D243C1608260016100210160704700210161704730B50B685A1C02D00246083202E0026904E02246546825689D42FAD953684B6099608A60516008610168491CB5\n" +":40780000016030BD42684A6093688B6093685960916008610168491C0160704772B604480168491C0160BFF34F8FBFF36F8F70470800002005490868002804D0401E08608A\n" +":4078400000D162B6704772B6FEE700000800002070B500281AD004460D4D083C6068E968084201D172B6FEE72268002A01D072B6FEE78843606000F0BFF86068696840181D\n" +":4078800068602046FFF78CFE00F042FC70BD00004800002010B506487D21C9000068F8F763FE0449401E48610720086110BD00000000002000E000E0012004490007486077\n" +":4078C000BFF34F8FBFF36F8F7047000000ED00E010B502000FD00948006B002801D072B6FEE700F089F800211046FFF7E1FC00F00FFC002801D1FFF7DFFF10BD0C000020DF\n" +":4079000001490120C86170470C00002010B50C46002809D0054909681831FFF75BFF01212046FFF7C5FC10BD72B6FEE70C00002070B5040025D0154DE06A2968C96A8842C3\n" +":407940001FD2A069002804DB28680721C06A081AA061E06A14220E4E504361698019814210D1201DFFF716FF2868C06AE0622969884200D92861142148438019211DFFF7FC\n" +":4079800041FF70BD2868C06AE06270BD0C000020C0000020002805D003490A6A0260C9684160704772B6FEE70C0000201CB50E4800240190234680220CA100940D4800F0D7\n" +":4079C000ABFA012803D0401C0CD172B6FEE772B600210548C9432C38816201214161C46000F03EF81CBD00003800002049444C4500000000017500080248016B491C01635D\n" +":407A0000704700000C00002010B51348016B002902D00121C16110BD0021C16101690F4A02E0002915D0491E14234B43D358002BF7D014234B439A18536814465B68083401\n" +":407A40005360A34201D15B685360DA680260016110BD72B6FEE700000C000020C000002010B50948016AFF22120411430162016A120211430162FFF70DFF044900200860BE\n" +":407A8000F8F728FD002010BD00ED00E00800002010B5F8F733FD044600F076FA002803D001200349000748602046F8F72BFD10BD00ED00E010B502460021012000F00CF8D1\n" +":407AC000041E07D00021416001600B460A46C16000F0F6F8204610BDF8B517460E46050016D0002E16D070435030FFF7DFFD04000CD020465030002E0ED0206026642046F3\n" +":407B00000121E56300F0A6F84C2007552046F8BD72B6FEE70020E7E72460EFE7FFB5002583B0040003D00498002802D006E072B6FEE7206C002801D072B6FEE700F014FA19\n" +":407B40000026002804D10598002801D072B6FEE7FFF764FEA76B002F26D0E56820460499FFF758FC0698002810D0E560606A002807D02046243000F099FA002801D0FFF736\n" +":407B80009BFEFFF757FE012007B0F0BD7F1EA7632068002802D1FFF7E1FD606020690028EFD020461030E6E70598002802D0002D03D006E0FFF73EFE27E06846FFF7EAFE79\n" +":407BC0000125FFF737FEFFF717FFFFF727FE2046403004214156491C00D1067105214156491C00D14671FFF725FE05A9684600F069F9002820460AD0FFF720FD00F088FA70\n" +":407C00002046FFF7F3FC0028A2D00020BCE7FFF7EDFC002818D02068002806D1FFF7FEFD6068FFF785FEFFF705FE204624300599FFF76CFE2046FFF701FD00F069FA00286E\n" +":407C400086D1FFF739FE83E72046FFF7F7FC00F05FFA7DE770B50D46040025D0FFF7DEFD216CE06B48432168411861600021A1632168A160E06B216C401E48432168411880\n" +":407C8000E1600021C94320464030017141713038002D0BD0FFF790FD20462430FFF78CFDFFF7C8FD012070BD72B6FEE721690029F6D000F0FBF90028F2D0FFF7FDFDEFE70D\n" +":407CC000FFB5002683B01D46040003D00498002802D006E072B6FEE7206C002801D072B6FEE7022D04D1E06B012801D072B6FEE700F03AF90027002804D10598002801D0EF\n" +":407D000072B6FEE7FFF78AFDA06BE16B884207D3022D05D00598002817D0002E18D01BE02A4620460499FFF788FB616A002903D02046243000F0BAF9002801D0FFF7BCFD45\n" +":407D4000FFF778FD012007B0F0BDFFF773FD22E06846FFF71FFE0126FFF76CFDFFF74CFEFFF75CFD2046403004214156491C00D1077105214156491C00D14771FFF75AFD9D\n" +":407D800005A9684600F09EF8002806D02046FFF755FC00F0BDF90020D5E7FFF73FFDA06BE16B884210D1FFF745FD204610300599FFF7ACFD2046FFF741FC00F0A9F9002812\n" +":407DC000A0D1FFF779FD9DE7FFF734FD2046FFF735FC00F09DF995E770B50D46040004D0206C002803D072B6FEE772B6FEE72068002804D16068002801D072B6FEE7F8F739\n" +":407E00007DFBA26B0646E06B904219D92146403105200856521CA263421C03D0401C487101240EE0606A0028FAD02046243000F03DF90028F4D0002DF2D001202860EFE745\n" +":407E400000243046F8F75EFB204670BDF7B582B0040003D00398002802D006E072B6FEE7206C002801D072B6FEE7F8F747FB0090A66B002E1FD020464030042545570746E7\n" +":407E800020460399FFF7C6FA761EA663681C03D06D1C3D7101240FE020690028FAD02046103000F003F90028F4D004980028F1D001210160EEE700240098F8F723FB2046C6\n" +":407EC00005B0F0BD70B50D4604001AD0002D1AD0FFF7A4FC0F4AD1682868431C0FD02368126A934202D062688A420ED96268891A81420AD2401A28602046FFF74BFD0024CC\n" +":407F000004E072B6FEE772B6FEE70124FFF792FC204670BD0C000020FFB585B0164690000F9FFFF7C3FB05001AD05C20FFF7BEFB040012D0256300210E9803910197009099\n" +":407F400002943246089B06990598FFF7E5FA2046FFF7DAF9012009B0F0BD2846FFF778FC0020C043F7E7000006484169002904D0006B002803D00020704701207047022084\n" +":407F8000704700000C000020F8B52C4C0027206B002808D0A069401CA061E069002800D001273846F8BDE668761CE6600ED1606B0068002801D072B6FEE7606BA16B61632C\n" +":407FC000A063206A401C2062FFF71EFBA06A86420AD3606B0068002810D0606BC068C568686886420DD2A06220681421C06A4843134908580128D0D90127CEE70020C04384\n" +":40800000F1E7281DFFF7C6FBA86A002803D028461830FFF7BFFBE86A2169884200D920611421484306494018291DFFF7EBFBE86A2168C96A8842CCD30127CAE70C000020F4\n" +":40804000C000002070B500210446002828D0154D2868844201D072B6FEE7206D002808D0401E2065E36CE26A9A4219D0002802D016E072B6FEE7201DFFF78CFBE06C0721DF\n" +":40808000E062081AA061E06A2969884200D928611421484304494018211DFFF7B3FB0121084670BD0C000020C000002070B5C068C468002C0BD0204618300646FFF76AFB8E\n" +":4080C000114D286B002804D0314610480FE072B6FEE7201DFFF75EFBE06A2969884200D92861142148430949B4394018211DFFF789FBE06A2968C96A884202D90120E86108\n" +":4081000070BD002070BD00000C00002074010020F8B5284C0025206B2E46002808D0FFF77DFB206B401E2063206B002802D03DE072B6FEE7A168204F00291DD136E0F86831\n" +":40814000C56828461830FFF725FB281DFFF722FBE86A2169884200D92061142148431649B4394018291DFFF74DFBE86A2168C96A884201D30120E06138680028DFD1002D13\n" +":4081800001D0FFF741FAA569002D09D00127FFF7FBFE002800D0E7616D1EF8D10020A061E069002802D00126FFF786FBFFF742FB3046F8BD0C0000207401002000000000DD\n" +":4081C000000000000102030406070809030406080C1018203000000000010203040000006D61696E0000000040150208914100080000000000000000000100003415020882\n" +":408200002D340008000000000000000080000000537461727444656661756C745461736B0048414C5F4932435F536C617665547843706C7443616C6C6261636B0048414C62\n" +":408240005F4932435F536C617665527843706C7443616C6C6261636B0048414C5F4932435F4572726F7243616C6C6261636B0048414C5F4932435F4164647243616C6C620B\n" +":4082800061636B0048414C5F4932435F4C697374656E43706C7443616C6C6261636B0048414C5F4932435F4D656D547843706C7443616C6C6261636B0048414C5F49324361\n" +":4082C0005F4D656D527843706C7443616C6C6261636B0048414C5F4932435F41626F727443706C7443616C6C6261636B0048414C5F4750494F5F455854495F43616C6C6274\n" +":4083000061636B004669726D776172655F557064617465004F7074696F6E4279746550726F6700424642325F636865636B5F656E61626C6500000000555956598002E0018B\n" +":4083400001004B00010000000000000000000000555956590005D00201006400010000000000000000000000555956590005C00301004B00010000000000000000000000A4\n" +":4083800055595659800738040100410001000000000000000000000055595659000AA0050100260001000000000000000000000055595659200A980701001C0001000000E2\n" +":4083C0000000000000000000555956598002E00101004B00010000000000000000000000555956590005D00201006400010000000000000000000000555956590005C003B1\n" +":4084000001004B0001000000000000000000000055595659800738040100410001000000000000000000000055595659000AA0050100260001000000000000000000000058\n" +":4084400055595659200A980701001C000100000000000000000000000009980001000000F1FFFFFF0F00000000000000010000000000000000000000000000000000000018\n" +":4084800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n" +":4084C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004272696768746E65737300000000000063\n" +":40850000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n" +":4085400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n" +":4085800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n" +":4085C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n" +":40860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n" +":4086400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n" +":4086800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n" +":4086C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n" +":408700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n" +":4087400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n" +":408780000000000000000000000000000000000000000000000000000109980001000000000000001E0000000A0000000100000000000000000000000000000000000000ED\n" +":4087C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n" +":40880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000436F6E74726173740000000000000000EA\n" +":4088400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n" +":4088800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n" +":4088C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n" +":408900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n" +":4089400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n" +":4089800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n" +":4089C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n" +":408A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n" +":408A400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n" +":408A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n" +":408AC0000000000000000000000000000000000000000000000000000209980001000000000000003C00000010000000010000000000000000000000000000000000000085\n" +":408B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035\n" +":408B400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053617475726174696F6E000000000000CB\n" +":408B80000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n" +":408BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n" +":408C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n" +":408C400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F4\n" +":408C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n" +":408CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n" +":408D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n" +":408D400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n" +":408D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n" +":408DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n" +":408E00000000000000000000000000000000000000000000000000000C09980001000000000000000100000001000000010000000000000000000000000000000000000081\n" +":408E400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n" +":408E800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E636520417515\n" +":408EC000746F00000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n" +":408F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n" +":408F400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n" +":408F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n" +":408FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n" +":409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n" +":4090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n" +":4090800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n" +":4090C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070\n" +":40910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n" +":40914000000000000000000000000000000000000000000000000000100998000100000028000000F4010000DC000000010000000000000000000000000000000000000043\n" +":4091800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AF\n" +":4091C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047616D6D6100000000000000000000008C\n" +":40920000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n" +":4092400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n" +":4092800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n" +":4092C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n" +":40930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n" +":4093400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n" +":4093800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n" +":4093C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n" +":40940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C\n" +":4094400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n" +":409480000000000000000000000000000000000000000000000000001A09980001000000E80300001027000094110000010000000000000000000000000000000000000028\n" +":4094C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C\n" +":4095000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E63652054658B\n" +":409540006D706572617475726500000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n" +":4095800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n" +":4095C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n" +":40960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n" +":4096400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n" +":4096800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n" +":4096C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n" +":409700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n" +":4097400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9\n" +":4097800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n" +":4097C0000000000000000000000000000000000000000000000000001B09980001000000000000007F0000001000000001000000000000000000000000000000000000001C\n" +":409800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028\n" +":4098400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053686172706E6573730000000000000031\n" +":409880000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n" +":4098C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n" +":409900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n" +":4099400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n" +":4099800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n" +":4099C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n" +":409A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n" +":409A400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n" +":409A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6\n" +":409AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n" +":409B00000000000000000000000000000000000000000000000000001309980001000000010000006400000001000000010000000000000000000000000000000000000009\n" +":409B400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5\n" +":409B80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004761696E00000000000000000000000026\n" +":409BC0000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n" +":409C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n" +":409C400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n" +":409C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n" +":409CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n" +":409D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n" +":409D400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n" +":409D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n" +":409DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063\n" +":409E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n" +":409E400000000000000000000000000000000000000000000000000001099A000100000000000000020000000000000000000000000000000000000000000000000000003B\n" +":409E800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2\n" +":409EC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204175746F0000004E\n" +":409F00000000000000000000000000000000000003000346756C6C20464F56204175746F204D6F646500000000000000000000000000004D616E75616C204D6F646500001C\n" +":409F400000000000000000000000000000000000000000524F49204261736564204175746F204D6F646500000000000000000000000000000000000000000000000000009A\n" +":409F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n" +":409FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n" +":40A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n" +":40A0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n" +":40A0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n" +":40A0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n" +":40A10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F\n" +":40A1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n" +":40A1800000000000000000000000000000000000000000000000000002099A000100000001000000CC100000380100000100000000000000000000000000000000000000E2\n" +":40A1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005F\n" +":40A200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204162736F6C7574C9\n" +":40A240006500000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n" +":40A28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n" +":40A2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n" +":40A30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n" +":40A3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n" +":40A38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n" +":40A3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n" +":40A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n" +":40A4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DC\n" +":40A48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n" +":40A4C0000000000000000000000000000000000000000000000000000D099A000100000064000000200300006A0000000100000000000000000000000000000000000000B9\n" +":40A50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B\n" +":40A540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A6F6F6D00000000000000000000000036\n" +":40A58000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n" +":40A5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n" +":40A60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n" +":40A6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n" +":40A68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n" +":40A6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n" +":40A700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n" +":40A7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n" +":40A780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099\n" +":40A7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n" +":40A8000000000000000000000000000000000000000000000000000008099A0001000000C01CF6FF40E309000000000001000000000000000000000000000000000000006E\n" +":40A8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8\n" +":40A8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050616E0000000000000000000000000079\n" +":40A8C0000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n" +":40A900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n" +":40A9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n" +":40A980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n" +":40A9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n" +":40AA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n" +":40AA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n" +":40AA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n" +":40AAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056\n" +":40AB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n" +":40AB400000000000000000000000000000000000000000000000000009099A0001000000C01CF6FF40E309000000000001000000000000000000000000000000000000002A\n" +":40AB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095\n" +":40ABC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054696C74000000000000000000000000B8\n" +":40AC000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n" +":40AC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n" +":40AC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n" +":40ACC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n" +":40AD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n" +":40AD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n" +":40AD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n" +":40ADC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n" +":40AE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012\n" +":40AE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n" +":40AE80000000000000000000000000000000000000000000000000002D099A0001000000000000000F000000080000000100000000000000000000000000000000000000A9\n" +":40AEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052\n" +":40AF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044656E6F6973650000000000000000004A\n" +":40AF400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n" +":40AF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n" +":40AFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n" +":40B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n" +":40B0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n" +":40B080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n" +":40B0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n" +":40B10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n" +":40B1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CF\n" +":40B18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n" +":40B1C0000000000000000000000000000000000000000000000000001409980001000000000000000100000000000000010000000000000000000000000000000000000097\n" +":40B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E\n" +":40B24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000486F72697A6F6E74616C20466C697000F9\n" +":40B28000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n" +":40B2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n" +":40B30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n" +":40B3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n" +":40B38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n" +":40B3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n" +":40B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n" +":40B4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n" +":40B48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n" +":40B4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n" +":40B500000000000000000000000000000000000000000000000000001509980001000000000000000100000000000000010000000000000000000000000000000000000052\n" +":40B5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB\n" +":40B58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000566572746963616C20466C6970000000A6\n" +":40B5C0000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n" +":40B60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n" +":40B6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n" +":40B68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n" +":40B6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n" +":40B700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n" +":40B7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n" +":40B780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n" +":40B7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n" +":40B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n" +":40B8400000000000000000000000000000000000000000000000000026099A000100000000000000FFFF0000808000000100000000000000000000000000000000000000FF\n" +":40B880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n" +":40B8C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F49204578706F7375726500000000E3\n" +":40B9000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n" +":40B9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n" +":40B980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n" +":40B9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n" +":40BA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n" +":40BA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n" +":40BA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n" +":40BAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n" +":40BB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005\n" +":40BB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n" +":40BB800000000000000000000000000000000000000000000000000024099A0001000000080000004000000018000000080000000000000000000000000000000000000055\n" +":40BBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n" +":40BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F492057696E646F772053697A6500C7\n" +":40BC400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n" +":40BC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n" +":40BCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n" +":40BD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n" +":40BD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n" +":40BD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n" +":40BDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n" +":40BE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n" +":40BE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2\n" +":40BE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n" +":40BEC00000000000000000000000000000000000000000000000000031099A0001000000401F0000B08F0600E02202000100000000000000000000000000000000000000C4\n" +":40BF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\n" +":40BF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F7375726520436F6D70656E7371\n" +":40BF80006174696F6E000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n" +":40BFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n" +":40C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n" +":40C0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n" +":40C080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n" +":40C0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n" +":40C1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n" +":40C1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n" +":40C18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F\n" +":40C1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n" +":40C200000000000000000000000000000000000000000000000000002A099A000100000000000000020000000000000000000000000000000000000000000000000000002E\n" +":40C2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE\n" +":40C280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004672616D652053796E63000000000000D6\n" +":40C2C0000000000000000000000000000000000003000344697361626C65204672616D652053796E6300000000000000000000000000004672616D652053796E6320333091\n" +":40C3000020487A000000000000000000000000000000004672616D652053796E6320363020487A00000000000000000000000000000000000000000000000000000000000B\n" +":40C3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n" +":40C38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n" +":40C3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n" +":40C4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n" +":40C4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n" +":40C48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n" +":40C4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C\n" +":40C5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n" +":40C5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n" +":40C58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n" +":40C5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003B\n" +":40C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n" +":40C6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n" +":40C68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n" +":40C6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n" +":40C7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n" +":40C7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9\n" +":40C780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n" +":40C7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n" +":40C8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8\n" +":40C8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n" +":40C880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n" +":40C8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038\n" +":40C9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n" +":40C9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n" +":40C980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n" +":40C9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n" +":40CA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n" +":40CA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n" +":40CA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076\n" +":40CAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n" +":40CB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n" +":40CB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B5\n" +":40CB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n" +":40CBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035\n" +":40CC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F4\n" +":40CC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n" +":40CC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n" +":40CCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n" +":40CD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n" +":40CD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n" +":40CD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n" +":40CDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n" +":40CE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n" +":40CE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n" +":40CE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n" +":40CEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032\n" +":40CF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n" +":40CF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n" +":40CF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n" +":40CFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n" +":40D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n" +":40D0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n" +":40D080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070\n" +":40D0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n" +":40D1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EF\n" +":40D1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AF\n" +":40D18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006F\n" +":40D1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n" +":40D2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n" +":40D2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n" +":40D28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n" +":40D2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E\n" +":40D3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n" +":40D3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n" +":40D38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n" +":40D3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n" +":40D4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n" +":40D4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AC\n" +":40D48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C\n" +":40D4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C\n" +":40D5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB\n" +":40D5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n" +":40D58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n" +":40D5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B\n" +":40D6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n" +":40D6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n" +":40D68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n" +":40D6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n" +":40D7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9\n" +":40D7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n" +":40D780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069\n" +":40D7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n" +":40D8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8\n" +":40D8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8\n" +":40D880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n" +":40D8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028\n" +":40D9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n" +":40D9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n" +":40D980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n" +":40D9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n" +":40DA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n" +":40DA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6\n" +":40DA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n" +":40DAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n" +":40DB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5\n" +":40DB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5\n" +":40DB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065\n" +":40DBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025\n" +":40DC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n" +":40DC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n" +":40DC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n" +":40DCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n" +":40DD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n" +":40DD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n" +":40DD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063\n" +":40DDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n" +":40DE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E2\n" +":40DE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2\n" +":40DE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062\n" +":40DEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n" +":40DF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1\n" +":40DF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n" +":40DF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n" +":40DFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021\n" +":40E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n" +":40E0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n" +":40E080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n" +":40E0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n" +":40E1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n" +":40E14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F\n" +":40E18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005F\n" +":40E1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F\n" +":40E2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE\n" +":40E24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n" +":40E28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n" +":40E2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E\n" +":40E3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n" +":40E34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n" +":40E38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n" +":40E3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n" +":40E4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DC\n" +":40E44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n" +":40E48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C\n" +":40E4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n" +":40E5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB\n" +":40E54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B\n" +":40E58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n" +":40E5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B\n" +":40E6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n" +":40E64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n" +":40E68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n" +":40E6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n" +":40E7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n" +":40E740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099\n" +":40E780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n" +":40E7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n" +":40E8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8\n" +":40E840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098\n" +":40E880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n" +":40E8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018\n" +":40E9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n" +":40E940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n" +":40E980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n" +":40E9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n" +":40EA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n" +":40EA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n" +":40EA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056\n" +":40EAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n" +":40EB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D5\n" +":40EB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095\n" +":40EB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055\n" +":40EBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n" +":40EC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n" +":40EC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n" +":40EC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n" +":40ECC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014\n" +":40ED000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n" +":40ED40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n" +":40ED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n" +":40EDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n" +":40EE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n" +":40EE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092\n" +":40EE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052\n" +":40EEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012\n" +":40EF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n" +":40EF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n" +":40EF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n" +":40EFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011\n" +":40F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n" +":40F040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n" +":40F080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n" +":40F0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n" +":40F1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CF\n" +":40F14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n" +":40F18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004F\n" +":40F1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n" +":40F2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE\n" +":40F24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n" +":40F28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n" +":40F2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E\n" +":40F3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n" +":40F34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n" +":40F38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n" +":40F3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n" +":40F4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n" +":40F44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n" +":40F48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n" +":40F4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n" +":40F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB\n" +":40F54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B\n" +":40F58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n" +":40F5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B\n" +":40F6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n" +":40F64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n" +":40F68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n" +":40F6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n" +":40F7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n" +":40F740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n" +":40F780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n" +":40F7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n" +":40F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C8\n" +":40F840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n" +":40F880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048\n" +":40F8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n" +":40F9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n" +":40F940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n" +":40F980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n" +":40F9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007\n" +":40FA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n" +":40FA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n" +":40FA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n" +":40FAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n" +":40FB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n" +":40FB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085\n" +":40FB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n" +":40FBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005\n" +":40FC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4\n" +":40FC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n" +":40FC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n" +":40FCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004\n" +":40FD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n" +":40FD40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n" +":40FD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n" +":40FDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n" +":40FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2\n" +":40FE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n" +":40FE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042\n" +":40FEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n" +":40FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1\n" +":40FF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n" +":40FF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n" +":40FFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\n" +":020000040801F1\n" +":4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n" +":400040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n" +":400080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n" +":4000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n" +":4001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n" +":40014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F\n" +":40018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n" +":4001C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n" +":4002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE\n" +":40024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007E\n" +":40028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E\n" +":4002C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FE\n" +":4003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n" +":40034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n" +":40038000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n" +":4003C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FD\n" +":4004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n" +":40044000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n" +":40048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C\n" +":4004C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n" +":4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n" +":40054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n" +":40058000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003B\n" +":4005C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n" +":4006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n" +":40064000000000000000000000000000000000000000000000000000050003EC00000000000003E054A20B3371E40C0071DC00005002029C501C0F00502B00020040000693\n" +":40068000503E00015018FD9A501F0006000000010100000200800000502E0100504500021000003350410002FD00030050340800500A02005030208054403C0E505A0E3EEB\n" +":4006C000507500030CCC0CCC080071CC14085088001150930004000CFFBEFAE1399950A6399950A03FEF507E0199507B00020CCC100050FE00C850F4033350F100020CCC2D\n" +":400700001CCC50FA014750F700020B33133350EE033350DC012C50C8033350C500020CCC1CCC50D0033350CD000213331CCC50D800A350D5000206660CCC50A8000250BAA3\n" +":40074000FFFF50AA400450B8020C50BD0002640C001852CA003F53160147531CFFD8531A0CCC52D60FAE5322200053410002D80004007078000453240C0053280400714B63\n" +":40078000000204000400551000CC52B700025DE77EEF52BF000401990199019901995539000310001000100053B4000053E5000200CC00CC54B20147551404005512008089\n" +":4007C000544E0019544C00035049000500000000023200CC2000548900088000F8008000FE6709997E6680007E6654A81000300E00BB200900024000400030090002400086\n" +":400800004000400900024000400010128000118D00020080008011670004000000004000400011910003010000800080F039000200003390E00100020001000011860388D5\n" +":4008400061140006118900020000000060F1000280008000610B0005000009C407D0012C00146116001960FC0FD76126000860E000A660E500020186A00060E20CCC613256\n" +":400880009600601D00020000653860164000201001705398350F202E000140100000100900020001FFDD602900020000199A20300014302E0014403000145344004F52AAEF\n" +":4008C0000000202C03F1302C03F1402C03F111750002FFFFB50211810002FFFFB54060180001600C0211604A036C503240002014000120120001200100020A2807A02022CB\n" +":40090000041920203C0020250004000041000000821430140000300100020A2807A030201E0030250004000082140001045030220419300E00004014000140010002078030\n" +":40094000043840203C0040250004000041000000410040220419401200507078000460B10008A974B3A0B4A0B4ACB4ECB4F80000A88460004F38201001606016400071C291\n" +":40098000056671C003006025000200300000602D00020034030060390002001902006031000200000000603D000200000000603440006040400020510008000100080001FC\n" +":4009C000000900030002000100062065000A000300000001000900000006000100260001002630550008000100080001000900030002000100063069000A0003000000019F\n" +":400A0000000900000006000100260001002640510008000100080001000900030002000100064065000A000300000001000900000006000100260001002660290002000105\n" +":400A40000000000006000008000100010300AA940000000000006538380000E83C3038CB4086A201AE129A0129AC130EE086F84C89CE069980F26469ABD03B820288C68058\n" +":400A8000423E9C5E66103080D20877A5411040C1681E083D6AD65E9C291EF4D5105041404A88115BB47244C938059F46B5887C0F04081520686C0F7028913441634016EC96\n" +":400AC00093D90839886882A6882C6902DE8B619EC0099F4329082C69C300C06C1FFD024220A9A0C10430301072757105671105403BFD0060EF2163F486D18CA1C56A06F486\n" +":400B0000CF20094E7C4200163275F6020076E91C226F7F6221E9D08319BD24B87200F32F217A6D80866C2132177A481886047A30DA65802631E6D681A6406AF80FCA466060\n" +":400B400078D001FA276C7C1FF826C002059CD4440DA2EC856002276790294C09214101DE7E23E40C999400351406D160121041E00468870060141AF1CA8135437E7B3A2003\n" +":400B800068DC09849DAA2A44190070EFD7E210016774680E4748CA7EFA34FC895251013435E9DD510F3AB4B9036A604C2A02CCA5009D8066A1038E648B1EBD471EEB4D19CD\n" +":400BC000816F586121BEBE883FBF3608206883DE14492DFE60413F48CD08C40F8408C208B499FE748143D03DD13262009DA1AEFB3080E41AA1BD5E882246F536C1187CCED0\n" +":400C00006C8F4044D00509002CFF30FAB8EC41328020E9BDA2DFEAC411E4B2C2089A5EA06F1E897120308209020EB15412865A14E00011534AE86030040223E155220E4615\n" +":400C40000A86400D3ED1036A2040E12BD27B88D530E2C232D309B11A04D1A24DF074E126E0D12712271913AA275913DBDB8093C69313F0B1E37731E46B830A24FA00041040\n" +":400C8000802962A6862250348A083128148A15142C8A25144C8A35146C8A45148C8A5514AC8A6514CC8A7514EC8A85150C8A95152C7B34FC6140AA48AA834793149B8FA29A\n" +":400CC0001C04ABF50348C1001090129348AC8B1620D0F43148C100169018A03526915B162C41A2572457322BD457B22C1458322C5458B22C9459322CD459B22D145A322DB6\n" +":400D0000545AB22D945B322DD45BB22E145C322E545CB22E945D322ED45D9420741081E90206822250348BC8312F144A1046144BD48BD8343D3D34304009A40A2815502C56\n" +":400D40009348BE8D1620D12FD22FD89420BC2898091810689829182C8C25184C8C35186C8C457906846085869866250348C500F59D186DA4823B8D8D7003E11DF94E316BBE\n" +":400D800039E478C94C901384F508F04A23C1408878E062C5A48A11E6304792C2CA83666163287047AB86847B2611F429B10F99190240615E1206084881E11F33F91119285C\n" +":400DC000101B18909181033DE87C4467593D15D80246850CFA5120892F4A2814C82491E8D5C602499488F7CCC168FE07CD044649B37A84B0C129E8A0A2B490929E9AEC296A\n" +":400E000010928562203707252C69F5C1540496A04534092DD99AC5460499E72002035AD849EC308203522128850479B9951447633E170E22940C47D1004453D38129F87F6A\n" +":400E4000415DDC25471B882E0178254080CF9A1908A81411F42D611515202544904A8A283C15AA6080FC47BD2788A92519F42DF11532012A67A12AA900E18E18202E11B7D8\n" +":400E8000251552E101684095540840568AB0311F343A11560C23E493222B44847D29A0456F128428A1C8C1AE71CC30817A50F5226115FC90E8A9C095FC4A20B5AC325902E0\n" +":400EC0000CFA17308B30711F458711667A23E881622DB9544150612D87C47CD14045B9E0CF4AA511701233E85FA22E4B44A9309744835D83A025D880D4F425F838D7084CFA\n" +":400F000012FC2C6AAB84BFE48EC4D17FE079644D12611F139011A7CB2F0A9009A7C4B20A8009A67423E8CE423569309AD4404D6A80135AA104269F84D6482651AF59C213A0\n" +":400F400051C13629109B5AD7F909AC2826D7535514F026FE52B89C32E1396C14272D5509DA6822784B087444FA8A163A15604FBEA0C82A3027E44152E13F3A3050BD113CDC\n" +":400F800054404FF9884266B29ECBAADB0401D6F7D04C5E3000F0654209A8C000363C2098CC4001022484682177F0060CFA1A106100684B2AD6410CD099043CCF383CF92C88\n" +":400FC000401047D1AA85D207C209048CFA1A78401056D564037A13D860801C481D34100188B7B181A3CADB0778F71F0A7F088476766BB492177025EC1602BFD60751A470FC\n" +":40100000068D63D7AC6744A6077AE8647B240048F3FCFF3EBC632A2110060B9E03B7904A06247B303058314703A410F5CB5A076728D74810F5EF4A2691D06D821CA74933FB\n" +":40104000980D0E81FF453789A471A072A060EEAA53EDF76101CFE40E0374011F4C0F27410FA80EC801E84A62F5EA888653C8700681300034035F37571F7D150F63F5880EA2\n" +":4010800068F5D9D89BDBDAD8F599E0F3309135068177C5FBA2030E5D9F0265C1C810984020441559343ACD487C2CF243D0F45C1DE6CF01CA3F159910F0260E017F52C32297\n" +":4010C000314D20390D23A851A5AC1050220C37C7023E8D408C4005015ED1C911581C03C270D3A5C9C8FA3C02102B0C907876D87B724C64489B86094BC513479BD188104BDC\n" +":4011000003BEBD522268210C02FF501B91B1C3F944AC958C30B07978C648D8ED73720206E9198F46F00678011CCA8898E15F43D99947E736F109C309399C83A9921410807A\n" +":401140004803CCD54BD25CC3E28DF18A13A3AE61841AECBDD1F50329D0C0E6BE226292009745B3101E7503BEBCC62054231047108821A36897BD41FC32C4AF6783C4EC31ED\n" +":40118000791820F01231E980F103CBE9390DC196F5D622697C308CA0EC8D13B00E394900CFACA1446A9A4C9A4FC2E7A2454A4C8A4C27E97A63A1A1D46103DFA0233A207E2D\n" +":4011C0000E91E23727DED2AA01E2F4410023286BD7DD47E1AAD52AB02AAD1A3E47074BEA0861D067C53400502200E1F4D2038181E2163100C230C3B3498CB408E38CFD1E9E\n" +":401200000711A7CEF3851A20684A8589C8FE0F38BAE4D5E81040680DD3AC433299F85A74BD695320E84932EED6A110C62268A2183A64A54F56C518F41AF07524F9E0F0F699\n" +":40124000451086E0AF0C3E40B90A8741AC242081F050AC0838314143103C6A21D5D5A6E00A7747188810A40EA81B008EFCD0620F3D0C1CDE31360058D207014B6640360DCE\n" +":4012800016C2C0E3E5D351E82311068B016101CC0114D00CC48798A18BA0ED84194098F066608260D8365B76B6D88167890229973CC3847D2F2020D8C62D9A0158F23A59E2\n" +":4012C000D407A0C0230C83FA892312106AC08C5EAD2819D084B04C19ECBB01960301558107D2B8E409835D9FF02138FA1A8EA3184A410360A14BD268433581606C306B1A85\n" +":40130000E0C9A40DCB86D6C46210F838061849048C5E5AB64C0AC1C01C3A192121040A02571244711A4094591AA0593A1384C1A74C2691F6384780F41148089D0A0B4103D5\n" +":40134000A0548B06C09688F03763F5D6010957BD0FA4618814EB81043949E17AEB8901E02209882ED2CF10029B16FA0020E1B46FDAD807A0D2720A4EDFAAEE0694182E9006\n" +":4013800002348A55260390C60D03A4003151A352C0669020976B080EEC1D268984101040782A041EC1AF8BEFC49DE62EE208FAAF486F6A827403AB2084125D0EC97E105F92\n" +":4013C000BD9FC7B18B440508ABB8614492340B6088800C3B86DC49009C7012FD7E60203563902C0AA23A097D9310208046185033290A4080900A22481A42144094C194D1AC\n" +":40140000A3E878D3E003433E0F1C4D10179D838C581664C1CC427948687A84C881493103080388057C72C46C009D90E84C09858981B5568F649D1057D238A3C25BC7A9F0BE\n" +":401440004448F4F8419E4380F433970331730C6778F009D361F1044D18017108088063885E140881B87D4246AE0582B39D9F88AA388C60C85B5020127683A4CE6A0D400D88\n" +":401480002120541502099204F32939F3A08E0318216519A6A0181010A7D1FAC32602F48FEE24121FCA2290E0860E6A0422AF711A14B86E431A6E47D9B10835742C1A8060A9\n" +":4014C0001C0E8C1CAFC1002CD207460F607D9F66148816634315BA86DE22059750C4068D40EF78D20F00082F52C8892079013D85F85292E6E243DDE1E277F1BED204FA67DC\n" +":40150000E04801E4F3B3307AE468A6212DA3CBA6A9440EF3FAD1773A78C80BCC68C23C867D737E52119E409273F5D0F1750B195C1E63D7920D061C8424C76F1A729F2AA63C\n" +":4015400010ACF62147F3CC270501433E250018AC3FCCB0944EBA4407E050F1F5ED51F48C88F6A69109850A18FFA3A9AA480D3CC9134EAA4C8A1C39DF2884E876DC9896BDEB\n" +":40158000A8F23CEF04496E42FC33E103E169200C767409544A262291A0398D7E2372160D00AB85951100500F21E4811B82808203AE491ACD23ECCCF13528F8B7A87CFD00A6\n" +":4015C00020A1AA10F7EF38F863EC496057BF779025816EFDDD409605E1041AB1725100C01AD0B4AC07283A6C078E825A0DAAF14016E84912018E6006BE50BAD00E621C015E\n" +":401600003D80002A1C8178F3DFF007B4AB24023A3A71B100048847D814465A751F20DB5E006077D414E359C14840DCF17FB0807E3C141BC0C5808CCF2DF838B8CC285DE22D\n" +":4016400000694F51C012758D889B003D890814B428D918CA173A663CB468583A0900361448E48E0841B86858390DFF03EA8C8D12C07EE91962B1401EA1001FE4A9021C40C9\n" +":40168000BBB3007315423403515C17178A6F259C8D5896312007440A063418682A011D589CB40603E07E0B3A52F4BCA7F43DB33833DA5835007C108900368490260AA02001\n" +":4016C0007A47E4C04188B89C06EB1304A89882FDE86A33A00122F4DC60F2BCDA8FAFF287A918C6190BBD806B184B99600220AA010049DD38C73A244801D371807DB6D026B5\n" +":4017000004DA4082616B000960498CF8C06146172400EE8FAD23A0078844BCEE209105E1848448A81C40B097CC51020ACD620415D3518E4AF50A9978381C4CD0E5FA30A429\n" +":401740004F507BA1B2C8F1070D80DEB2C8FD2C3AEA724103584F36807BA4C48F48C4BB811C12C3C5E447D846625D017E112D1C10626908F8210BD7E0670C022A7C475C49E1\n" +":401780000ED0D9163969E19E40EFAEA887BF02C402F3368256740B3191045059B000C052A0C00B052CEA16690E497A24150E44D0A148990D5F7C5D0CB2268861D2998372D2\n" +":4017C00072066162090C43D1323A17422162299D6431323A9D6421620A1622A9A0149A2151601FF154231B434F1686266884DDC77E2201223D75065889DC0474B07B090776\n" +":401800008FDCA200622EA242C9604076E021188588B5E4D804C220D10EE71E1067A1C784283A08B02872C10006802E68030531C053142040CC0EF04101BC32034EED50406B\n" +":401840003E077D1FE82486FFA33DCF5C87281C1083D6C944210077FA457801FE777066A438720201C77D7810088F7311103A1A237A8103C4261521141100E304770512E9AF\n" +":401880000DE2F0B9609A006F0CD02BF680D2030A2032A363C108E3DC7FA3D92882048F02AF93750420028F9E8C6D1F4D80A003A73997452B27EB1F03F591C21EAF606072BD\n" +":4018C0002E30AE1747CC179B12C4003084034808F582A155F0FABD8C4722A3D7D8287ABD88C8051008247EFDB003D1F2420078B748B94ED18A21A746BF225C1FFE327212AE\n" +":40190000E01E307CFFC4A01E59069EBCEC31CC1A5403D5E8122233AC265EBCED38722F94041E1E66207F5595200695D126217531F200693D0E7EBCF13024660D140072CC6D\n" +":401940003457094644460D3D75ECE81017068702EF826424E06C7543A8AECBBC4FCBA0D1CC612D8A103CFE0D3D75E8C847D538A279015E3C2B2F5D7AA1300715F72E636E9A\n" +":401980003D059A20218C3C81DE2B202C32A1C5788452E68925D414A3E41C59EA0E31300B6F1221220380E1A70A793EDD3548D109FC672A25204A029201F7494AA069049E00\n" +":4019C0003D6510901A1E90F5FE3081E679E0091AC1112C2B0F20774E6418066903A6883D1A44B1AF1C4329BB84E8BD2CA62621C21D792DA840EEC2ED40B81087BF1F9B0FFD\n" +":401A00003A84100C7B1BFC75F05E45291048B3043B86784110489A0040D0487AF289E0F491E0F562408D983303B26E47D6E7A2CF7AD015C5C005F44228F6EB1A96892F5F86\n" +":401A4000BB2242220EF7C1E1F055C13E834F554F17AC5887CA6B66100F067F6C7B8B1CB1747AC0E4C7EF591188F217A0047017811387E340D70E46F00B807D8FA3714BC126\n" +":401A8000EC877C98748FF88AA0D181D3348200F261B41815B82FF100C419A21881A1DF80AF840EF29AE2217A8090FD904C061B40EE2C213C03609FBF9647872B0CB8010F4C\n" +":401AC0004F9FA40498801184C055361012427471888220687B1E1E3FB91F04BE21E4BBE400902CCE008808A22E4A806426E89B518D23DD21F8F2038D0EAA7E1F414B895352\n" +":401B0000185DEB1A3318B0C0EA080165800440F051B1E11744067405E8DE042390140289A1A10195848F94D711F11071978883C4224391032B60ADE020672D5C20D3CFCD9C\n" +":401B400088F8C2B113654CBE0110151AA75F9F7FC58BE744206FCFC0A4051F50C43AF8C2B13C442038F37361028E28B2F4CC3994D67D2F18548FB16448CE8B3EC95D2239EA\n" +":401B8000B1981EF1853A0732817CC4D40992677713F9346D2602113642438F21A9870001400712A0F4F011743CB896460047D81EA210626E33FC648C4478E9E0D31F3CBBC7\n" +":401BC000C8318830D631E21D0720BC781B2C720309323904F85D408004022F416B180E7F97425A1C2F651E911143A78814C17A1510895FE8F644BA7878CAA1D9037040ECE4\n" +":401C00004C030380303C16EB7261F3385970C1B12980E1081E080D90ECD0297ACC047A1C1C498010D2293D0D4A2522A9341E7558D174C191803D05882231341EF0DCF10636\n" +":401C40006210EC82F2603EF435B8FA18FCFA5FB0AC6612202C007D04DC85E0CA018005C60DC415F32E1904A450365C718361063C1116243C9482AE4C82401FA1AFD2ECD11C\n" +":401C8000F12400B3CAE0513A47903A86882FE8AFE2E93371F268C885C1678D180BA313CB97C6163D4008813F45838FA1AF4980A661200BB14449A003A7CD87C82BE88FC66D\n" +":401CC00070F06178F5D44A699CA9B881BD7B4C438903D3BF2570E0885D3A3A3E862B30AE6911F80206C6AE934921CC0E8711F87643BA024E8518163350640792B3D16525D8\n" +":401D00002829308D88E2701C7C801DE1C41192F448340601E034EA9DB3C5CC1E047A2A6C278187E86CE2E511880EA29F50028815E46F411590043AB49CBA561089E086902F\n" +":401D40000628C8B9D00060069021E14B5162A054018140297BD0D029F5A68884409B202CCA43F515320980BC30609E00EA20BD8B1E5189F9FE48590840E0FFD0E928F8D38C\n" +":401D8000405802896A8747AC22C4051FAA212E8865162702E88761658A860990A7033F93F14C9913C02D4C152044FEF4359A3468C0A11A8B21D2814552495142E8AC01F425\n" +":401DC0003B309C24300F72B8194329743C0763D0A86982D5307DB8043E86B140F13C8D104EFED0ED17B1E928113500F1F4B41949D0244F00C45E28F85E30D45319B0829652\n" +":401E0000EE1F2242237F517A1C58BC7D1C40C8E9E87E1267A5F80BC7D28418F3AF022D3A0D8880B1EACC623C1B01FF4EFB15D22008929DD59027B13428F54040F4CE08FAB5\n" +":401E4000A75440DE9FFA2CA2B103EF30130008C20C1874006AEAEAD2C53E22861C810B7C42FA5DFC36222F5F9D8929DBB887E0096103CDE070E0E84591E8452103CD285039\n" +":401E8000EFC861303A74F0451F3383901C5B039D429A2388540715D085DF0649895D149E41074FF6186A007A278058CCBC12AC98148D03541012480200E826701A88297FD7\n" +":401EC000E45439566C1B87FE118100BB5418708C9091C5B208D43325A431130547786591B644025DEA303D18F2268190301503407776E0744D88F41A6880400F6DA4A390D4\n" +":401F00001A67F1D26A17FD1C1043293072F42BD881A6B931797980E66A0305C7C97971EC43C24046E80A43EB0381F1A6C8F72B48803E8CED3E1ABA468167E32802F61022C9\n" +":401F400003FF48D32441069C33755EFFC912AFAA2C840D34CAAECCDE2F45AC970FE81017D169843F0C0418C5D0B08376C803E6914C41001DF6AA604FB0569020B91539744D\n" +":401F8000FD197452C990411754EC176A661C20E13F8EC9452F074E1FAACF4899980425F45C311D050C1993E6912F333CBEAEFD9628E426622291F0E93A45C05980BE4943C6\n" +":401FC0004086E2120206D1C3EFDAA1EFDA54B8D628F7ED30F669F9DD260D7A458100D3D3A88A0AD500A1A23BDD001D76D25D45A422C06C207A251CBA81A878C3008EC0D769\n" +":402000008A4E078D7F2A1801AC7AA1E87A80807885891488F503E91A235F10BE1F14988B0462448302513CD274797119F2E05105BC5BE65C658C8DD4071022F9D400206325\n" +":40204000D07D63DCF5A24800FE107A134760029103D1B124168000A09A6C67FAD000C7A14C47BE67499F42A20F8A6E466E02C410087D1B0C7DBAE82CFAA30499238B143169\n" +":4020800014049CCA244D0137CCF92221F37491A40022750329438B1DC4405E2E94100BB403C89608BB895445E34046F2B20088C450C074035DFF6C2417B06844C1E5305207\n" +":4020C000478F27816C7112C718DE2360B8088019C5F1EBCFC802001645B31CF05C6DA2007C710F40A96C218C23C1A41C97060954C60F5025840EE9DA104B8572977381887B\n" +":40210000843F8A1C28B048425843E152653000540163678EE6F612138F5A0FA9E34404EEC3031E39E72181A7F068A03F9FBC8544415F01AB080439981D8758201775C88840\n" +":402140009BD918822001C77068CF2A541F650D17635F97798421E582E2F2C1916C5402C03E77740B41600611619F34EA17A3608FD1AEC90988FA35E0DAF48041E71E17A030\n" +":40218000F788306400F008823C47C10B8D90F46BD2C1A039221CB7423C19F226A178F8692004BCE239E3D0ABC2681CD55606A9CDD097A20250D1B02A3EA7D932C388E79936\n" +":4021C000688F1A5142C929F9FF34786E0952D11438E70A1C4774B88EB97A3800C623C0031D41A340D3F470116919AB9F428F4A454841DCF207C2F786C5221A0B20B9996169\n" +":40220000A095132107651D8DEF60C7118E1E966E1F0C6C0F855D84171C02B05F88FFAB0E1DB99625754F0821C3748664839400040D12FFD0BB4861EE10AC0D26A34CB5E348\n" +":40224000C7036E91EC988488508C15F47BA9CC82EDC95FCA46F2CFA3420E4290069980C3D1F12A7A34212EB61920578E4EAE1800F506898042A06812DCBD6D1EFD291E8503\n" +":40228000902EAB841E26468785DB06C64210774191F74BB974B67892C1143900DA6A5967A5C2CB8CCD8FA34288EABB2419603AE96FB2891F468591ACDFA22F4804104B60A4\n" +":4022C000809608610C214022E23D0208FB044C70FF87480C0F562208005B047D6CD280796A7109C01030760D3D1CA258E143A81E4A6203191CBD42E27242007854F8808B84\n" +":40230000C00FB92F47BEE604DE00B855409BDD97F67D97F03E740A2A643D9E2826377FDA8FA38648721ABA6EA8BD1C9A3DAABC3C513C403E8CF526060F470023E848D1A937\n" +":40234000C2E2760555EB1A22CFA38019E27528F13A733C1801273403856EFB941F470021E89492F16940D0A79480E4002C832F01E1950B10D92F08BA907EE4732986CE4368\n" +":40238000475C4D1D1E268C5C4D58A74403756F6145880FD7B30640200F9EC09CD05D29A220A7452B081DD1C5C20B79A534BD76C6223461709FD100AC9646803FDA4D63DFEE\n" +":4023C000F7E37B90889E2C732F27AD17A166444607332508F8E8A732EAC2F2E8E932F2D270841C43011128D8EB42213C048E79A065223D201C59D6C5E281C3F4A14110CE9B\n" +":40240000203069E8D98795ECC8BD9D52363CC3DC2507A43B58E96E02A6E24174BC29F0C2622E0F001E8B91A06EF4BBB88045C8485CE69309A26DD100A8B2F166D11A26C999\n" +":40244000221076F8413422185D8D423C363CBA5EB4406AA12362BACAF102AA31340D0F4A552581C22F4A500F3590E17003D12C6A9903B023E897B2024D2910043D47623D47\n" +":4024800013285E09C31E89931F3B030F8DFD0803F64C9974FC18F5F360D4A00F207E0281C6FF1983E3E8E6D12F140A92406B034E94184480FEB02CDD6076F5B38A201765A4\n" +":4024C000898F414C98F42EFA39CD1E85FB1F5812222482BD5C5A38E643D1BDA43D0589E6B0887C1A343C977E8E731364B900B2DA04B0703549043A23F09828152FF0009848\n" +":40250000E9395A3B39BFB0DFCE608F728A0F7954975C8021D31C436411E388E55FC2737A39D4FD1D58444CF260CF0CD12F161E17A3968980C0D123881101AEC3674C25E8E7\n" +":402540000C81E2AB63972A20C16182E8CCB240930970798E0C31137A47CC40DEEDA63F472E1F8AF50CB57135079F472DBA692B81E310681031F3ED9161FD01A8B2EE135158\n" +":40258000ADE09C83BD31879719100624A172F8180051D6418E5D20AD200729931F0C1C8D8800D71A013E3CE480044386C5D0503C8B0061F565E1E1ADA208F19191044640D4\n" +":4025C0008001F5056A396064108E631DBB43D1C80F7820B44582600A1B8B20A040208001D463E1C6C802A78121D22C860E7B2DAC41D3C090AB320B41043A82284DBEAC74FA\n" +":40260000124C6B01FB4818B0970D0500086EC264478100068FA2A03078107D5E942789E362E1036C8C36C91F643B94EC165101D4D163C37122C7992944E1223C2A004698D2\n" +":402640007BD509621F1A5E4F9F1C80622AC212A820BD5C011EF7661F3F6D084FD47B85272F053E91E810F8B118A084123A3BE9B4414100D9EAF0A90D3CBEF423E82BD5724A\n" +":4026800082407896F8409F5E5B8C2981C07460812A12316008BFD87167002A68851D16464331715248B05C8503C075E25B91080E901BCE01A5DBCBE20376CDF8DDBC35E2DA\n" +":4026C000371C0041E3C72205FBA600790AB899C08FA38CD102C3AB8189905CE0F65BA97793E1744C51F47DB22030717F3217FD25D0AEC5E41F84C10C0008F96E30840C03DE\n" +":4027000048778141EEF2026F80304077219FF887A3E592F4DD3C93556E4689EF8EC500109D0D38F1627E9EE240D03CA0C8FD09B8868219414A01841041E971E134CEC34418\n" +":40274000EC24D8BC6409310CD13ACB1100D23AC930A4B2EF694124C6A2C860E98F3100892103CD6BC98438094095100EA277C648A81E8029A47274411881BE6B61440EE8AF\n" +":40278000FC42880E350E26F92287453789BE3805049841E20A9236485EAEBE9C30C25AD0E404153F004D1F72F50F40699746780FA84C07BC6B04D1243D3E84467F496A889A\n" +":4027C00011E86FA202857E882620203B40D5F122923D349A6C017A85D30520579840C32602663B76AC580C300311B5EB09A105CADBC6008B000790F628069168BA0F7AD3E4\n" +":40280000D44C2F230E9157C2C54FD8E003E89A82AFE0EDDD9543FF167708EC5479EABC81B13031E22D43E8CB047A48C44750A182EB9F2A1F9C1D8C2322F9CC00F3972109C5\n" +":402840003C91CE20DF77534C84034303D197EB8D468942805440FA3EA0789448814009806813FC77EC496C3E23E8CBC5DAF465D90E0871D06160193B80F256F569E426430D\n" +":402880008B840A01C82BBF98E9980865F0C20D8E18F9C0131D244077021D4FDE22012BDA0E420415D5EC57F7981B2131D11E1D6E2C10C0DFA32CCFC5EA4243038E1A703931\n" +":4028C0002181D6FD19706407A32D911C14874643DA870603A321DD9F78958B00AAFBF48D481A99054C6FDD0607243C60DC2C314847A0E14478F035108263B74F4198845A25\n" +":40290000FA32DD2050DAE9135303CDA07336D07D1ACC44AFA32D92061301940797D1C628237B417A2D146611C6F43ECCB3236AF6B2F465FA0079951246B895C50D4440F43C\n" +":4029400065B2265429B605240BAFD190862A21E8CB8440F25A545E8C941630628055D15165E8C951F4A181B801E3D4E47EC7501094809ECBAA58CA829F49768D6B17A33419\n" +":402980009003C1E8A2ADF0EA5F62EB4BF1D01F901D125D37964078050A552C3E90812F01D7901FE8C862ED16429518423383F29102D103A9F9F64B399A5293F4650240A773\n" +":4029C000498A17803788312830FA08108EB636BB7DD8FD114097A22791F0AD11910905C90D044C434B79C0391F468934107A313CBA0700580385E9E487020BCE3E65E8D093\n" +":402A0000A2C6A21D4E0E348607EA7C3E873D1F4A489635100386E8726082EC60E2E2E3422474A27162FA1120793C07F040090AF33950E7C12220F8AEF0C2C3D8CD08BB4CF8\n" +":402A4000A11E24D63C7EB478D8014AC6CD1016C9511CC8040774769A31998E7D9F6C2C1BE87152E2095ACC0410A80D3EAAFCB2400AA302A140F6103D19FCA04897A101873C\n" +":402A80002F4840D35A44800DD3DBC27B09FE8CFD582454008CD0280807540191210B4008CE41E91483AB067A07031360FFCF75104CD612BABECC419F467E17A3400BA1815C\n" +":402AC00089A31F31047D19FC7742040858683D19FC403211C5C8D6CFD19FC40D10C60280D8C6DE604AF6B3797A33F8AE6A0EF4CE1E45D43E8CFE43A6A1459B95807328B4FD\n" +":402B000074630A04111E3F8F428754299044D0D26D17DDF7244720F2681742112A707AABA0895286E988F1F1388F58EA047CE9D4311FBD19F889045B7A3410DC0804240027\n" +":402B4000432444169080457498089185AF4900880826FA3418BCE5583D6E4C3DCD1A222711141157D27CC56A42F3BD5090838185E8CFA50B511153C63022C1289090C081E1\n" +":402B800002012C1D82E40303619A96FEBD238633E2B130849C5328FD38207D219C6587A822C78A2491FE54F837A084A243C11465DB42C254F714C95F4002381A13624B0FFF\n" +":402BC00051E008880306B330160505EA4222794A9CB901A8F4C220F5EAC17AC850C05EA0221F0F5389FE755EB45C75011F16020F8B020BD82704071AC0F1006887268072F6\n" +":402C000050047E9FD62F2EB414CC06C9FE6806D840401820BA774045200D034034347C3A6E26B06BCA07C6100C935D006028F0BEB886853D91C6E68029FC341620B8800C35\n" +":402C400005912218A005A716A8760B90C3005E801813201C20101A282D401A8DB18A580E02040A7038D10AA6100603CE62A222A94E079E005B02A82E6101C315D8610800AA\n" +":402C8000B717253F6063901A16829D69B13EA1F912E93D13688A3C5C28C74F5737A0139E0098827B8CBD8FD04789CA0283A19F8B780FA7698400CE0E43D45FC7A3FC10C48E\n" +":402CC0004EF5180201A13555824C23C53708922C3896421C99B8C8C43A5F70700E0928000021E1F08EB330401C018200871CF43842FF60160859E99E21124B8441DEBC4604\n" +":402D00001030669CC0D53E00F3C82038095303B8E787AC9C8883F410111E5997C20216A19F976F90108334399068F40DA8ED7B046A9DE7B9B773181A477843ACF412D7D055\n" +":402D40007F8316469829E7695110CB2188F735B9CA5207F97DD623A31225D90D1E4719C11A265259CFA27DB210204281001965AF849087C40E63D8E8A20F62331003C4DD64\n" +":402D8000085FC6188CC7BA1A8BB63684D0367CEC28402063409002CAE44D534FC2BC0201F837FCC90340D3E9A981B8264D634878F59E2082008F5E4D09A06D673C8C185FCD\n" +":402DC000D00040BE109BC4A8C180540BB30C0B134023D4A643D103C87A621100741DF3820E20A00C001A663926301A063F2022107CD32F493180BB3A423F36540847E6FD7E\n" +":402E000022C05A0611704578F7544882E087F3672890BD69B4241CC606997C55DD6202A9CFD15725E703F210BD32E42009A65D12BE15B01F3F22A5E69A223C80C34CB69ACC\n" +":402E4000C4B6628904A840B027CEE7025A42079600849929BCBF14382483A0C78677028923917E5CF71D00989A6569065017A7504A6892470F9B80C62888747CE06220799B\n" +":402E8000A65417B122481431A34283CF6CE2067975107A6C3470AA00A408787A644B3F0E7D096670743A7083E6911DE3DFE13A422F3683951F3C07613B0934412075715B40\n" +":402EC000F18512608A180D0260A818002316CFA055041D510C8042305B10494220208203A48834D020CBE34894288A024C4D3C3B595C85134C9220CBF3489088302522442F\n" +":402F0000D323CD2236420D960217479F0912488548016C088851F134DCB0489A243A3E81751EB1FE1944300F921DF1043CFB444572C3D15745DAE787E28051F38610F0F01C\n" +":402F400051F3C1D08E224687E64061E830940F74E58F44E590442860858882E92161136888151E252A234AC7023A9219BA22077885C88BE0382400583547202C1A084E02B5\n" +":402F800037C39993220EA0C0119880094D01BBCA8C49303F067DFD04A6D7692C15A6A8CFD3DAA20179FFD91F0265090A6079FFDD4BAD43CFFEC2C1AC2B79B62445F35C59B9\n" +":402FC0002940027C0927FCEE1840917A0413E038EB8374FCC9222154488264B73EF12F083A8CC6394D0802E0A79CF44C01D2C9480A607A5EB8B2E55005C4FEEE3F1E914F7F\n" +":403000001F01F7174EB38E23910144C8F2C06C37CD066E9979D4C4421ED6BF38B130029003B96F87D2F8E3D5786900A25755BE8881C9B24B122C7831D4C2F024BAA64038D9\n" +":403040009D468879E9DAE103071368200242EE96C61890E75AE37B90F4467177A5C8C500A38068420EC6C442343D21924071E5105E90441003D91EC4071640E66F789E022F\n" +":40308000C765AC19A088685F695C8A107207841DC00090448F49DC100D80291F154D106BECAEA9DCE44C20F38E78B1873E0288623D102A82FF2C3C1089E71AB1137CE3388E\n" +":4030C000226F5E51201A8D88F9C410C994BA483882CC4908783848BB8EC8BD6910979FCB0C9868444728F8BC16B844B7A7788894470200EB0E2F0291861D149A98121299DD\n" +":4031000040A899D952422901E7500377001D9DF57739CCC881A6D52C300F9A020B14F000D10FDABA63A111440B0742318F9156901A5B48482315828F0D341F479F979A6E36\n" +":4031400044D6980AF5208A1EF708364D1360B8120B7F01BC8F823947C52EC4027ABEFD1028D734C9F0189E09BAB69C44D1F4AEE373E3D3F54401F54028E5F00F961144A2BF\n" +":40318000CB4B22D806B0A013C13C73C900E4F811C68907C14DE409F82530AC58405883E2D262A2480140E84871A148C8124C22A2487703C0F90B9468900649844C733B46D9\n" +":4031C000280B9123A4BE0ACA004F0517BB888169619DD20154ACB200513C14C7243287B9FDE2EBEB6893018A90CF960222070AD0A1D3E6CA74E5B8B137C60E52EC41E124EF\n" +":40320000210415216CD5049F9DB6D421403F3B6D384F041E97C42F3B6CA40610D66D419097C0D08778905292D1890C407592F1B019280340B76F2C0F6BD28F815C881E8993\n" +":4032400021DC0843D2B602C014A0072F4780261674310EE4162450E96B0128B2340BAF998B1239047E087A2EAC5B1EF7741EC1BA1EF3EA1BC0C331C87CFEB886942070ED6C\n" +":4032800001820793D1240675D1B8B1AA9F163D202A2C1149F87E48AF671390F2C5641DF4CE20790B64D029828F3D7A0816C79D980FBF2F878F0F89AC2EA04D1A30406481A6\n" +":4032C000E2D4A4C603D9008EF301D83EC410F08A389FDDFB0A44866CC081C150679C1A3A0F2235453F2EA208240601A120C85AA1C7C344C43C014C1C100AF1BDE1034F6948\n" +":4033000008F36FC1EC79F2CAE6289446A9514940D711C24030A41038B9520019D2079480E84A9E0AD21C072C25280067501E4621D7B4C2C71F4E1E7DD65C8DA07B46607A25\n" +":403340008A38C39EA2F443A82B08BAF3B4588206C100401E45679DA25202EE01321BA1DB87C78847E00983E8DD4163C92263EC38F238A3CEE7C810BCED14A79DA20821F5A0\n" +":40338000DA6A1E76DF100CF303C140742B68CB0822943D1000189A00DF259523ABA3C9C5814486EBB01263C50EE59D3C5D1706219758D8092243521008AF3003C4F62180B9\n" +":4033C00020284500411A06038845E07591093D0810A02DAA802289A27355085AB3843D33CC61A6438242174B88CF4C1A21C6EA8421EA36413472D9CBB9BEC7C4DC62689E56\n" +":40340000FCA4790D7C30EB2C0707D080E40847CA148B19089E4409C1CA13D2344F0245025736FCBCA546392863D457A394B62761118C04BB7CD079495930793042782D54F6\n" +":403440008C110480D130886A02F288E4034F0DEF97520C0F806107D1F763CA4DCBBBAB50F3BFD979DB8C4DC358DFEFB081150160A81115C2C1002023C160A01114FBA1F885\n" +":403480004910582C047CCFE42C11A3C1E7DC38426C0F059C188A1D81CC5DBB523E62C911C40BEBD642B3510E20412C0BC4001231560963B52E325A36931EB66820241A906B\n" +":4034C000238D6C581093E57EA3211024368640DEE4BD0897C481EC2BFA0AA4481C5F64041CD2A2EFCB81EB1791F3CAD99AD1043F313F881E3F1A61302A0AD41472190102C5\n" +":403500002F003EBDB72EBBFA2022F003058129526512980866B014BCBEE444C0416E84B30045B1EBAFBECBD23386395B810D2BF1C410C49F72D588216DF48081393EADF386\n" +":4035400019C867F0700F93D30F89833A00C05FFB5C14BA42307D36BA5A5B21080C2ED82F299C484ED83140D622AB2848AF196E17404D09D3C545C4401A029CF693CF1A12E0\n" +":403580009BA23587A0380BAB845322AE692B1F88C64304435813C73B1229BAA568473B9451EADD61C414364C0F0A54A1A3EA3B9F51C0208F840E8BAD7767D4B7E2C10011DE\n" +":4035C00010453101EDC7A124C4FF4BDB880DBBBE8F89410862288C6208C71F4E50980E240CE28867EA9FC2208681F4C508C0E2004328828EC60B2208291ECA5AC70B5101EE\n" +":403600004404F87F34C6534C5624814C1C40491AD9C202601643A74A0691A62A0F2029240A926307A2970A2CBCE00281A227DFC40590EBE70CC1138B20D94005F08839CD74\n" +":40364000007610A5184E812007A00C9F88820347E397D6CCE9484082038A20B61C4C0529100DCC9062014457C411ABEBFA4100C8334441B3D0941E703422C4A08B30FBCFE9\n" +":4036800072A200C4A250A80743C0CA81893DFA1C221B051521208C05DB9F842D60E0A8012888030C82048A23CBCE3365E70DD2208F3F386F1507133D01CD80E83C23D6E5F0\n" +":4036C0002221A73181043A9445A4389069CC42069A6129279CBC2511ABE5AD4107B9350081C4B1800719E0993FD7D9E56710244CCF38A50F9C50849150AA00E56603201FD5\n" +":403700003865116266A7478444E40E2270642A1F6BF82394CC986998BC885CDE42E2BE9BF82312E2010811C05C580D0C44489CC86A572A60860200A1F697E8F1C65120817A\n" +":403740007288F7A5C99F0A35EC0C170A05C8F080940E24C8DF388D13052A05D1446C84A8244CD06868ED2DA18931E00F3546135861238EC234A009EC203E736A3AAD005C1B\n" +":40378000AE2B2B20981DD38803405A6393CE082C0C02066F7E828B05883161030747B397D04D646CF4EA59F8AD18452E412A45107BE7151306133404FB10802C0CF9C57593\n" +":4037C00008B30653E92A711288207C85ADD3288BF4E5C223101E0FFE1E292C20692011489110C9528021F38A10961577020D901024063AEE40B028D33543D89119148A46FF\n" +":4038000001CA8656452AE20466249421D026067C63D05814DDFACC45808F1246905D140490F24863E501A3D6F16A1A415104300F63E91029176604529D8A665B18DC88450B\n" +":4038400040E47961F3008FD6436800C42867EAB524020E4B6E5E69022E4DB05AD5A107888B8A84D0074E12007A3039654083870F2CA918302A020F13AD18360507410FA939\n" +":403880006A44D10489100BCFA0A45C14658805A5824B08B05780978911DE718C54348A137121E3C3E08A8E48E8E78B0A315E6C5970041A848C8162CF86C38D93D523D12167\n" +":4038C000A859E715E6CB648F47A740398F260230A02C0BC330D83D3C202843114471244C13C553C05D17C6188318C671B0711D87B200852288E24C96267CE2BF25495C5A1D\n" +":403900009726018E70000318B6781983D884781943D0D83985E7818DE71591C0001CEFB84F00AFCE2B277CB817CE07B2843816CE07828816050379DCE2C02AA0190379D85E\n" +":4039400062C01E3D888781483D88A781443D88E78141D234C2619E04F0F639440935D24125C56B44963A87F3C007F38AA21E87321C1F20476935848C1EC583C08A1EC5A3AE\n" +":40398000C0881EC593C0861CC50EC59123C082AEF2AEE23C07E892ED68323C0788544CB3C07452328F01B99198780D4C8CD40C8C8C53C2ECF06023F38AA90B912899C7800A\n" +":4039C000ACD106780A9929030602879E8004713C04E02F06F01C1E715230DA10DB2B81B381406320121E23C455C2C0AE40221CA041038A2F0B60C94A0704C0EC9498344372\n" +":403A00006F38A5A37CE05450136A3E714B136A1C4937E3D10045B00CD07E0738AFE0B03DCC080125B55517B3F94A203A7C450C0EA019B81AA0D818690381079C56D305B377\n" +":403A4000DEC44F3C45FC83031490D0CA2809922177AA3707319C7CCDBE46FE9FB4790FC881E6B74F94882C190220896C0C9AA06DCE1010941CB118BDA7D2381A0021F0EA94\n" +":403A8000E97631E0901EAE9C1080B606703508508FB7840A10B13D1683C08353934D24B7A88FC4FC47B122441FE4EFCD813EA1E313934D245E853B1034D0018180C804111A\n" +":403AC0003C8AD08067DD9089F8CA88FB15A8B18586BD904D73F393940809DCFC43E79301340FA24029F1A2E243A851DF7F227D97A147AF00C871263BD0A44F721C440B3132\n" +":403B0000B10087E884C920BB4C08F17741E1E6F101038ED014EB214D33BA144083B48642280ED4804E3B942307B5B31021C211E4D52C4018320089DA021D7B44886552CA83\n" +":403B40001AA6E94A0196A22F9B3B0402294241E8503A009F3C5088428106681BA0617D93BC262F51AA09B848199DDC124079647E9DE3C1A0528025A989DF02650A07F9A290\n" +":403B8000730024A80AC1F3D53F0800424D2F43AA561132833E3AD0467100007B33E04C51C81AEA5E912788600C86186990E1760607B2D610442F40DC880C0E04049F8B9E91\n" +":403BC00004782D4B0385000FD7A2031E39A1425D540A839051D74E22C17480481790043FA83BC9921902EC29A801109400734EE5E8282991798E78413F26AD48207590C30A\n" +":403C0000D9DE6A969E6EB0102C0CEAD3C1A8612C883280F13C4D52C47BF13280B7EC7B13F1E334867C6070CD2278821847BBFE40A124C20F54DC0D6E06C0DE2048260093DC\n" +":403C4000E4905581780B20A8D229A2C0FF338011F6E8C40083FA100D728CDE004AF303B11A88782C0FF3C513488F24805F2F438E173027BBB43C89202B4F2E24E151D16E8D\n" +":403C80004257B0548000086B2C2EEE7E40D32149311791368DF8102274EA40884041E240791C3478FAD1767298851C7DC91F53AC90C1EB3241238A8283D4EB881A044428DF\n" +":403CC000913042461A246150C7B548CC0DF6E2C9014431FE37F65AFC9CA19F45EB0900144101D24B78E8E44032ECE5EA3352F4A4111A44264AC08BC410A538810428940223\n" +":403D0000EF8822CC02F0FF78F2AD412803DEA09C11F490094D018BD5A0023E23E388A3BC5C0263405E8811E147C2AD453681AA3B01A2F04A3011BD6E1B35D2056F18CE132F\n" +":403D40004455F424F1771639162051E8061A4317A9EA46BB4062E996B317B50BA455040680A9D8CBC55E2186048D019F8F7726337A9F04C5544D9F48108F73298815CA2658\n" +":403D80008454D43A8F54EE8D9D04502A020E3DDC4609499BA25DD9A888B440FAD3207B480C981650280C0003B8334BC700C2C00E7A86610488BADD2D0F66A10881E74666EB\n" +":403DC000AEAA0B82E301BC7A9400AC3216FC0AE68EE42A11A40107CD50B885F40C520230104F03989B8068F3FA08FA9D7C7AEF8440104F5C71361880C347D66688853D8459\n" +":403E0000BCB4754220067164004C037268C397648908801A2068075262AA10B9F825820114025CD680102553710DAE4F400715D0CE7644D10CB3C50676002002137931D1F8\n" +":403E40001A218729182F6B371861EAF162E41024780B5A2E24007F6BA423E266E3F13391667D08099E043C3E18838CBB810104EF179B371817CE0951B39496F96F21C133DF\n" +":403E8000D13B48731C02CB202E400841C137300940883A427AE091407705F1030CEC4305B10810427C23D21FB3D7523310231C20849AFA240213C11EB75A394080839C6059\n" +":403EC000850C8017ED0DFC13E08CA13C18E53C05D4F8E45004C7881FC9A38C3CCF031098E9254E804BB83D470D6000DC8404CFE06CA0500240E0FBCBD312D00A799FE6798D\n" +":403F0000FE6100A77C1800A75F8DFB16D7E8096167E31C796289DD810699AA387A953C80B1E0FD3080F0881E102188081A383B1C9F219F68BC10F4198006B0D26A8D3E0E7D\n" +":403F4000C31C9A31298E003CF607BC657C3CB95C805306AF40A5F1CFC10C7C99CCC63F716B1CA02F060F05F220307A9A71517913545E50BCC3D514664AFAA5A10144D116CE\n" +":403F8000D64D0163CF4A821E808281AC2BF8D9247A1D2440C19A960170021A22A79326C7CF4E2981829451F9C2E47CF4E480182144189A8F9545CA7111353F532B2DEA69B9\n" +":403FC000F2834C484C95F535C20189A21DAD722132109808101098082D3D4D30F2FB6F3D859500443A835439560E1B06ED8366C1AFA9AC910D14C0416433F07002628F4299\n" +":404000007121EA68A309BD80BC8FA9F78BD4D50D74B05178EA992D3521794290CB44434F54702BEA6AA6BB92309FD7DFBF736CC1F327998143204400F2EB644A6003564A25\n" +":404040002048D5EB36B130801003C79864689C7D369887B15147005410A0103868DC86206E8C087C6BD026FD7C8FABD5870C289BE681C0108B201F8AFA46203B314040D3EF\n" +":4040800048DE851F42B28C41419312011CC48D8FEC4DFDD6388A0114D33798090D2378A2182088D3920C60146204C4069F43C291C05194133100861C9C9860060090B0301B\n" +":4040C0004CE6C1BD0A4011CB57C05009F45041208880344DCEAAA6122D13C7416642B067D79F02699B1EC3881363AE72130B3B05F88E1213C23F237CC804C6CF87CC47C036\n" +":40410000ADE3E8D6531E824F4BF291AA689E4051A4689142079870C41036982B840F3A0D090052A06919A490803C88814EA678836344C9980009196E520364082BBC8C5FBB\n" +":4041400025C901D533C335018DCB85C8E901668260242390348BF3A406EF04E1F3E418B0101AA6002A2A82040F81664E2930549A044010242100C1E880F1CDA081BD747E4D\n" +":40418000247799500AEE283B406EBA452F329F14B04AE21440F1461A2010F4131A258122607A0AC50297B091040137BCF51823101C1C8243AF55AF181FE7A8D4BCCA56A143\n" +":4041C000B2604EA0C003339365C9345C90B0C4DD3409843DA25843C04851ED6F6371410104B54E01A048111C7F0CFB92488D01EC80F16FD89A04A033E81D82007C6248893B\n" +":40420000FD711206B1204F280E5E5B092A9A016EFFD0BF28091D5E609002279537C7BC2CC88234C893888435C89E74DE358E1DCAEC4081B1D3D3336950F4370890C4C041EB\n" +":40424000E3BD94878038D12109908100500DC27F1E628F12AF00989A03F931E77821364101E4BA2AC202BC201E0B8E66505A96E12E0790B8D71C30AA002FDC5212C7A268CA\n" +":4042800087999C11C444045D945E40582FE075F1087C529A90824197C79018680E06DFAEAC04A3023947908C7C80A04123406E28413AC703406DF49B38FAB5ACBBAA787AC5\n" +":4042C000F66C40CE962D10607804C0F2881BF07C04EA3290F724C0945CB7ACC0A98101E0B32E0CEE3E326029B431F891444322881305C5B25F2704842E8FA71204B9310EB3\n" +":40430000140683F4BF310B8313A5C2489E40E7007C14643747009E4D0808181DB6C043D6D82221011C3905E731081372B1C13D3D39E22011830400181C5D09BDB70E21603F\n" +":40434000E4446A314441F1BC810E227783D948711087E340BE04309A80F462946248F2181AC221461579A5BCA842196FA3923E23F85C4F764E00C3075F2C8C38EAF6642C7D\n" +":40438000EE21323C076B8B10070F4CA46433218BBDB70BAC268855B8404422411EB09E20E03847C390C41C7B8FD840FE47B457D50823B1070827282C6642065F3022577864\n" +":4043C0001E14A0437CC6010DF29B84151319EBCFC20F6585D92305D82C08F7437179B10884B1F042D9CD8AFA82F316E27C01D6BAEB90BCCA6C975D7E174F59175746103901\n" +":40440000A4EC47BC1C0CB8478051906F730086FE18741E14E02C314904372DBCC5E843F9F63FF633B0C11033DD4D8880DD05582061D40DE81DC40D2A81BD7B608D05E773C5\n" +":40444000E989B51064D03687642C8F83A207CD3D445B0605B797340C062C432540384A0CBAB3610C2A80379200D7424E880BE5FE02F2F868821D7A445CA900B979011308F1\n" +":4044800059A08D62E4960007A0B22072C2448E103D7ABA830C72F262BF2489B180963847B033CC704878C7CC59F5D8F0F993A8BC6506260F7082091E529C85280E3D0CBDB3\n" +":4044C000C10C452F98E0C7A45F46FD80E6884330013A061AE52781BAC719180C1CA7988B8140B81972E1840F354A02943C27FD17163E6DC9202E930B35EE16BB027C0B25ED\n" +":40450000BCDBA460598D1288244F8192244B6520409F0359144BF2B7A8F56680847E734218E1003CA8B821EB030970667AF0B88B8F32BC100A6810E5287D6AB0F40FB88E3D\n" +":40454000BDFACE41978F9584D720FDA2C85CC3D840EED5C9221BAD49C79A9E1692384993D80103C220C8E0E433847691E0B01B2202BBC695250600693C873767103D127B6B\n" +":40458000D010A24F77FFE0CC07E775512B80CB560F819E449905EB72099060B600699004398B02680D844041349589A0D21AFB0DED2B780134C74EEE178E058AB6C0B930EE\n" +":4045C00058F20268972029755300129A2319A631F985A0F00A88FA1397AC7B8CBCB234C45FEB7A0224C622F40AF37122221FB04104A5E91661117CDC3081B037F95C8C8050\n" +":40460000438432CFE6405A840EB2C1202C1208BD70523E9887234052ECC07112CF60040E14A9421A6EA104FCAA0C669A04F1AFD94D23DA7CA443E72F98142F551972D0E13C\n" +":40464000240D612086C52407F065E5CB3321819030F6852F0D0808C27B21DC37420610E00C9CC2E5225486032DF112112AB42F420D018654298045A81A43D660C90C0652EC\n" +":4046800024117638154D7A895858C353051353501F1DC470207582C09DF35B0179AF705810D036D875C8B096A378140159B080A30919000D06E13A07012794419656744449\n" +":4046C000811F8D32D4301FA750347D07587E16421A5660F801E9DA52D90588C0E4FB1248F49D9181199CE220143EA96E10CB97871F992712CA4E2C7BC3E66EE312C78D9BB7\n" +":40470000B0428473980BA8928BCDBF4B76427106F92B42070988ED93F4C0A880DFCBED8B1A884D00699E6691E64D8004D0404D697B44D03C8982A8983B337504402408D300\n" +":4047400044F0ED33F1390BD108A12809B284662F8982AF5B9C31631489424D144C7B7C8C4653F629589030C9A28C983B62D96183110290983B9D14883149A294983BDD140A\n" +":40478000A83189A2990783A29903393423A0111887AEB48F163911A4F5CC919420380458D4311A063FA5010B632A33F722184FEF3300173D252207B90D075B1E974F99A0A7\n" +":4047C0001108D8EAC0B8F2E8D8F98ED87CC7A63E63C531F12F2FA01305DAD7937290C7E60193A182560E26D0E45D0E64D76BA39045EA15F21011D25818888FB565C981206E\n" +":4048000031B6389A25378574880BB0909B40C7963350CCE2103BA6A28B33D07C9E003A82B2E970E1105AEC1711D55717287A2D568972C562EC1C51EA1131C61E1A44B1F4D7\n" +":40484000EB20CC42C780EB84CA1C8AAF22C997B9F54D868400389E08CE0440447934C858F269B0823E4E042F706D088C1881EC08418F7F8C17937FC7B2588C2F03C8206C91\n" +":4048800020F26FF25DBFDA87352F1EE128404A1D4F1C9AE407B1EC0F074131887BF26DE0CB02F2100C4013A48604C52831D65E17936F88021ED0E7A3620E8083178B08C4D5\n" +":4048C0001B0128E00911C244026274848131420C7C5F5825EF97D887C9BA0C8CAB61179365CCE201FC9B2C87935E8C0453000B3BBC12D3608801E8F731B8AC7BB0910F3297\n" +":40490000413CBB7841896DF4D20197404EC69E388FC0D11149807099D0278F995F44CC4F29CC7CC7FC35DE0690845100304041793D30BD031EA752138F82CE8A9020348A1E\n" +":404940009D8CAE20A9038E3408601002F21A108023D80C5D80FE501D234836268603442826BBD8744B10049A008B1008D00CC98EE6323AAF0348312C4638E08D1016304685\n" +":4049800046006402E66588CE7F84E680598C04CDD401EEDE071F31D9884026FA38B8C29F2F1E0E6DB88430E3DC4DA5E67042A1E069849E8068109250597A8226F63A1970EA\n" +":4049C0004AC9087D56F0617CB12F5F329798BA4424346980843224029EE5C510CB642020302CC76086AAB07CC778398908041988C202108D0B08F522B1910CDFE82306D450\n" +":404A0000B9596985D9B792C01A162222601E1F71E88F98ED90F30DB21E63C23F30DC2977809B451F9C428989F130BFCC6285C9E698038AA0C880E66145E616C40D633B39B8\n" +":404A4000244513D804340CD2D816BFCC2B342FD42203A7C9C84436BB3AE081E275036BA6BB50BC884E2007997F9F2AD3227F1C786BE350F30DC09825D03DE7B382354BEEFA\n" +":404A8000D086120C85098EB014150A41020CEB208B9286348B934079117CC61C610810308040F1AE5B12E0A9A25B685AC41A0C8A0C6702248080813C09F97D2CBA1A04BC46\n" +":404AC00014423E5C0F1C76A00D841E5F4630E897053CE7E834243DA7AE407F9DDD889704E204CA51F2DE1098BE1D0B9F6FFF8EBEA47CC3E660306219101CC93932B90A5E1F\n" +":404B00008D8E48F601FCC3CE98360719C11781F7C7A0EC44CF08750483E9DAE2BBD07CF9363D32325B2E98ED4EA43F065D596A25C1945C79E1F46567EDB983014F50C8A0E4\n" +":404B4000EBDAE60C12A01B3835EB43D7B4481E0A07E0F418C4227C0F218FA86E8A1D13D3AF5A8A24C41EBD6D630090DDE00407903F91003CC2BA9F548F8B05279856511B3B\n" +":404B80001449238180D2AAE281A47839EBC889210BCC6F4223F9952887BF191B08F7E6359134063CCD211E4DD18CBB318BB02305F8798E144C6EB5032ABE0ED5E81050A5A5\n" +":404BC000ECA4F1083B2F2C42037FB8ED48D1ED30B13C058D02C1121D7E40776801A62ADDA245C84F7651126611701405C010202B12661F2CD412061458BC480270BC2530A7\n" +":404C000046737C7F0E89B09797448824308B3D70B620878511C826022300D6123D848C44F02206885526167E01C86AEC8C52F30AE2188705AE71E62018D01D04CC046601E0\n" +":404C400077D5502447DDDD03F8CA529CC6B878479C1A00A2D719099C3D80A528CE0B046081060B5A980802EC08F392C8F971C0FCB2703E614612973C307BC6CC716F413E52\n" +":404C800052F26C113402D24072240D32ECCBF2E5011200A79998058B030CCE16C300A4D70ABCC2864C50C033BCC282645A8114C0C32ED1D2BD026997CC17C898A52F9845E5\n" +":404CC00047CC226D1A60E14A08F5AA889D68020088E8008AA12F98449104C220045326FBA4284F6312E950250D23D028F69F90810780B3E068633091C32C1D938886412131\n" +":404D00006BB50982C2FE8479752220A109E615653CB1B459CA45D8A845A2982C36C1D7B6C4060241973BB11F69D8A1CBF0C7ACB18620C3AD4C41047AFDE475FBA2060167A0\n" +":404D40005461748A2889DED0492D9864C5FD2D091C03F016694681B23FF432E08140598D3321DD2B025F4290EDEE67722C9BE91E121F8CF2F8081E4C5F2C5F15A587CC2A79\n" +":404D8000C2528AA6895E4C8064C884A7E0614160BA336AD85866AC84A9F30A888A84818890AA519804820D029BAD544460D54D09D2417B61CC80FD879C48326EE1D0288B97\n" +":404DC000810C7E154A6F30A609A6504903CC29452122210C19246B13BDA5A020F8062F1A3EDC29125BCC294433036102A013995620D72E7D1F30A59F985292F30A3AB70028\n" +":404E0000A4E04B2A12CC0A5063C14DA2C01861045CBABC48EF30A422528324B240615D1451204B798525129500513E37B9123982E120A18013E36411259C0A543A06F8651A\n" +":404E4000403D264779851D12941C25940A5412C070182F469F98520CB9260B92663C7CC294A0CEABE5A2A1195B295447DB8512B7021DA486222142C597E022E916420FAD35\n" +":404E8000EC0680B7DF1F2860863306D6C56B503C81E3A09CE621844A807D003C2077A22C440327405D6728C2000A4EA1E71A812882308214B59DC508572A016BE9A3011EE1\n" +":404EC00001D9181E0109D24E9D00EF4CD00CB4862481D640E0F21E0F1820606A96112C0113A12A1EA6421969836A1380B0018142779FFCA4190CB985709A01BFA382CFD7F2\n" +":404F0000102800DEADDE1B8DC7D5BC258DA6023E7B10441064801825049A6581244093A004244AB3C3631C1D58F223BA963480243CA7CA200F9910442034823E5208A12507\n" +":404F4000CE3FC793BC8807E6383222C604BB36D2460360D607BC8D56443791BB0BA6A50BBB2986183D2972654FA7FBC401F6F5F176A6E8DC1E07EF6F8010FE029B40EF2500\n" +":404F8000971394790F6B9C3CD9B4780A42A940550CB9FD91F612F23E629C1F31481798A2CBCC218D67FB221123CE320C14F50B21065DD5183EB8CF22EC8D21425340DB36F2\n" +":404FC000827200ECE55C2202ED5602675C841DC4D422F104137A821C4251E464038E32404101CF10CB334840F1D832103D2638B1AE6791E069AC66F907A08D533495EAD009\n" +":40500000A4470D7330E42609276C91F0AC4080862C20927DE912370781C9D8989208FBA004ACEE07904F2C0F216B09241302A08803EE4399C8A310BC9147BBDE842203CF97\n" +":40504000A0CBCF7AE3607028BC48CE2790792311D4003488F0B486F06D08847D8F7A2C7707210823C084079AD230E8D1C12887DF74790F461289750427B9DA0DF31B3110F1\n" +":405080003644C30181AD6F89F893F058882C54E0DEC14E2026A1950004FF4049DC92A7221C7C3D0E32140D64FC831E80FA5E14C56E25F100086B30980C6CA1CB0291F46231\n" +":4050C000D0F8B53C7C8B683E25371EDA702C958103713F0924381167F97468920408AE156B0D8BB9F6040C2F81ACF3A2EDD792287C8AFC89104002FAC4543C436421E10079\n" +":405100000776EB2CC847BE5890AA85FA243C7AD2BC8FF298D21E07602012F334C09D013C18FADD344B010BBB7BC423C936407040B90B2AA848338402EE1481DC72A618483E\n" +":405140001C1F604179F0FC42BEF77D1F12EE899E43F800BC47709C7F28BA10184F12004203AE800EF1A11F023788CC4003474019ED9DC1360A2047BF234882D7370FAFE212\n" +":405180000485CD4E1F6FF4CD9BC3988017294E1202FF04796BA284B06487902C0403EFF8C444B43C04CA23E9807A049E1F4B1060D213BB18FD220BB24B488EAA323444D170\n" +":4051C000F413047C8F783DB9F8979B01C43E3D00EF41CE8EA6FC4960E40B1AA445EDEA72CB981C05400980A508643078D58910A98E76AA3972E20B9AA1ED4BA21C254CC0EA\n" +":405200003A671B390040793BD8E3826B063DA504216816134510CE0F93A0D90C17171E1D96205A2080513432F730C8E3CA33890100D60A08E034D109B37504B21D469044E1\n" +":405240004CEA203128C0E0981B080D009FA611872E74CD20849200FBEC38C912382DF1C370925DA81C5290020ED2005088103C00E79F82688324087474A1E30641C0CE45D2\n" +":4052800000CA4E94BE017010CB96AF202956E2A5F760B691A0069AA07921E3BD21F2E3D0E0000B8820F804011F45BA88A1D466624820041000D7A4F413EC12113C01AC2FB7\n" +":4052C00083930C206697B0880F5B73280F617C2D1F617A8B58C16F21AE90C77B7199A8792A20FBD0A442137F29904850DC1E130100094C850FB470E5AB3911000A11AC5650\n" +":405300005E04C71CF8B541B2E0B3D564981A4D1FE77EAD207C4AF63CB56442CEA6FD2384802203CF558F8999E71E91048E920F14F8817E2E071080E91F7AB920A87201C1B7\n" +":4053400031E938912D0B0108A83F33E8CBAB43076147121B9B240EA59C4403A08EF19670823D47EE4389D40499D3E18740F0900A6CC38243061DEB92474EB1186671601485\n" +":40538000D6B3894C187B9FE48091CAB44BC9C3E5E4F3430AA28C5E4FCFF6024F7268812F0B0F740698122545101BEDA8B11D7BB4EA7A9AC4F4ACA3EEEE74441EE8A7120BC7\n" +":4053C00060A22D4CA0F93EB87BDAA24C42D901D40A1F4421F7B5E244B3F68E61021E1CB420243AA125AD001E8E55103032AFA0F37700D24036BB86D04160285D0C01105877\n" +":405400004DEA99B10AB9D458B1A78748F208886057C95D05688021814F092990107D4C05AFF621E811344B0EB7B62EB0109F30E84961E4C9B19EC07A0081E03B12C0428B7F\n" +":405440001A6122E5D6C5102022009042096B0B841306CD42D08421BD2E0E20416D4090E757A3E1F2E3022A010658C6FE249756D597567014C65EA56442E5930EFCDA162076\n" +":405480009860080283078721500203E951F31B91C35C1DFAF63E1F891980BC9CA25388D4B08100F271053D816C2078CCE481B270B3302B84013253D4E3A6C310432F23406B\n" +":4054C0007CC7DA2541A03FF6301895BE599611F87102898EC50C23881ACE0E1EC2683D5FB0F2B141F05EB0F8D2F041BDA05CCC68E3F64AB08E1D5B40575587AB274403EB17\n" +":405500007CF230313B08CBAEC41103B09DCBC73147D25B8278060050AA100213B881E3F945DA16221ED6315EBC12F2B29A5E2916138C1B3A25E0069CE4B085B1C79784592D\n" +":405540000A712F649490F278B1E63051E9BD419947C73A220553623C008F64EA96D54E539156B103C2682C017A2D10AA38AD705B1280D491E29D063DD3C47E1ED7301AC9D5\n" +":405580002571705002034F7C3B60040FFE5B6712BB14F1798CA8C41F475220050440D841AF082F1BBB4881E66614309816B000A652DC7AA441ED9193999724042F65AE1178\n" +":4055C0004C5A14C0AF6492A0071B40D6B8C47C3A6E3348F7F7F9DA14C0E30A2C99871034F0EBE07102807B1B85A6407008BDD2F263953842898F74179003526868160AF6FF\n" +":405600002101276400D3EC9338BC3EB8566219980764FCCA3E3669036BBFCD12F12059825E12EE29E111493B4A05012EE8A8116401178F0062E1E2B88873CB88A74745CCC1\n" +":4056400059BBC41C64D30F74B5CDC5C3043B13717A1240870DA07CB9EC8881D46CFB26A06184024C7202025F130E8DA0C2A5007112B65102BD28B02514E4271A32B42FFB38\n" +":4056800086F9EAA09A554E414000780C71E20C80287B83DC80D2EA3912D930A8C0F0E6E0F8E65CB4C24219FB2BD884B21F607B2F74118C9C24C24729114B0A368762F0FB35\n" +":4056C000F8968000143BFB0BB240B09485F1AC308339712412933DA58657F708555484040B6037A65346AB080DB001EC956555899D8A002551901A19273C0550A53D220D9B\n" +":405700002902CB0A8C0043D967C74300F12413900039C5398700D0C8841CEF3731F2CBE8DAD204C04CC203C5E09020B1D94F804003373B114DB206A040865D3AA490BC19A6\n" +":40574000287696F882A480078D78F00B8146802A9EFE771F014B89A208912169C241682DA40BD08F11A20691379D99A2061020B9BE007A3B3522043EDBA4847EAC847DC922\n" +":405780000C7D66B8876855968F2080CD7A718181353A2BBD17D13F0D69901E591FE57F4EB7164D90DDB420408C7F99FD72B267B54D1945755217540D93C00EA6A7EC8AF138\n" +":4057C000F6B829FB7D9C40C01A7B21DF9687CF8A3EC4E5200521DC3AF3ED320029C21978F05143A4D13A8800689129E5600782DE1DE72E737E7DC30F2029CB4F40D0394DEE\n" +":405800001E95DB16188310B4D9057981E0884681CA500806D7B6EF27CB13C2039B04FF8C8007ACF2106BB405079E478F8D14D0F77588805D5D3424072E0744AD47DA6F033B\n" +":40584000CB8C49860D528728307C94423D730020C858006E4D46C00C19041E343C40D533CAD072484689964008DEAB731AB7118058EA6D71332A64407EF1EA120C83024BFB\n" +":40588000A184A302B382C4532344C1ABC69C66000CC568184681B7E589645099588D808100B4DD84061FD5301E05C0113C0E04C133176F091213A79984C4F2F1C973C9E14D\n" +":4058C000294D9F2285118BE22A8122372571034AD0300D3A81A60D02CF3ED4CE5A8A480CAFA47C833A22BD0223A80F34CA124C0AF1581274A0182CC0ABA2406A0247A040E3\n" +":40590000B505E8101E867018474F006FED30C2681444006FD6B8C574825E3B389004BF23C0A13AB08072E823712140DE88E61C63C0214396C6F83CBEC47B844841100084AF\n" +":4059400002BBA0D07AD880444F0598977FA10FA44CC7BA0E0AA202EDA0F23BA11A245F748889246811155C03F80817882499FC7901FD93E0236FA3C3C4621E851A6C207F4F\n" +":4059800051E889803C022800E0020A5304770A30CE01B204763688F747B9E1A5028801EC051114CD71EAFBC88E0ED6821227C9B962331AC3B15E06F5D350E2CF23ED1CF36B\n" +":4059C000C1C50E0540159CFF3E8F4028B33DD2EB6B8160A9890E6ED445804008DF547B48120C0AD87784A90085205C1DEC472434DA4341C3C3E543DBBB62328F02110A2319\n" +":405A000010A63EBD5249360681E8C2A1C26A10BD1DE54288F6616CD427B3988F57C288C5B5CD95408975D15FE3DC9E436FF0031006BA2BFC767972F59AA10F26881228F653\n" +":405A400078556CD72402805EBE552D7B988663C0A80487D6642EA8F01EA46B10303694979FF90C33ED35C100C1F074151081D0B815113AA8686BD0083872F4807972C4A2E6\n" +":405A80002BC1DD1CD19BB67653D2D4220B9D0480146F1FE47F7693114A0702A1EF321A2363AA914580A490013BD768A5A0011DA1974ECA10DC190406D82BD0D6C384B00439\n" +":405AC00092EC111E8242804920CA2F4511C801EE097311CA6EB04B11E4A4BDBC7C85C83D056A60CFA82E07C66B689E40D77C668807DE29C5E89A822FC2408EF930607B128F\n" +":405B0000CF204315C87A6144B47725A5EC22E02A08007EA6A5100CFF1975B9426D790BC4BA0CF67D81EA6010AB3E814C507437718740786C18901B5A3218BC0B6B6E2E1DCD\n" +":405B4000B34016746099A7A23AD64233878C27857122578809BA8E13C2DA650983B923010156666103A431A3EF22A1B718DB787C9D762D5B282D9EB68861001C8D3FFABE2C\n" +":405B8000004CE3B26E2B6C1E32100B3C5D3C5D4B863E361516198A40274AA3004AE9041102CA1137462A2071A0129A2134DCF27D2836210F40201141ED2C9210B48B860DE5\n" +":405BC00006598123A45D1070D10708005C0F0B81AD7EB159704D2048820347D08AB0C18036FCE1114DEEC4071C71605F0C277007DF4C420F76C428E3EB187101FCF58C996D\n" +":405C0000F207DE3619AC8385C407836280800218865B8828D410929A52442F922A902340A4478662979C1F87985B19421068130832F41692B75CADE341E1E64F0472D1F31C\n" +":405C4000096FC12EB8542F5C9197599908BDE5BF6939628E204D6EE30D121BA97147DBFCC375A0181E3D2010127E2298E0BB44BC92DA8065EDD4E509291858F844D3404E4B\n" +":405C80002142EEB14410A80E0FA9C910A16853A0A32D50190FB478427ED91A2F248488884005A4077B714FB4534425E90FE4CFAF2E6C081C789F38CE843EC7D020B9748641\n" +":405CC0002A542840336F68A82297098C18DD628565018A6AF5833890BE21C61A1C4007B961482F294C02004D354319B00A5128950CCA502C21C5F425CA192BC21EF81964C4\n" +":405D00007B7B044D30A413F65BC0DCB68026687320010731A520086820083E1E2F2A803413DDE5C42B9E8BA91F87A8624405E682A20D212A80B7996B88A478008710025237\n" +":405D4000895E1DD9106FD93AE36610028D10500D24A85110A15F75F2976FE48E93D44F0056EDC0910659F0D371020F7F455E89E05E981251C2DD03339F6FFD1B172D0799A2\n" +":405D80002F840B0347E3FFD15F2218981B37D25E00E09ADE1AEE401EF268E21320DF9C2570639B1A9F7C7F89803B02C691800B0C1DF6B222012174E017F9BA244C8405C072\n" +":405DC000840B0D010024061953A0767828FB347C4D12E91C81720FD0F1703091C69168061640D0C1DAE7846816A88185356611B3E11A244B92436250439BF58F922587B2F8\n" +":405E0000918415D6440927DA57C43C977A6741250703AB01C8EC1C626F8425F82443F45E4890FE7443105B984C8F909D87C1FA03D041630A2092880C385BE000E1B43A0348\n" +":405E400007A9415E0A03C19E5C025390F10A29C9CE1A812EE39E1F51500E2AD024C16222EB62D8EF840BED33E41965936409EB8621F45C08EC74E53D8627E06CD221B000C3\n" +":405E800008C1D52B6200859D4C6E375289D5DD93C45C87A3884E116B6384B910F01C0CEC7BB26090248073E25B010340B3EAAD8B0208EA85D108C8C3D8DAF089899C40D667\n" +":405EC000E02C8602A228AD8C7B7EA11340D254584C2EFD69130A425E10BF104C87010D11A3ACC7510032374BCE4884538081081012001E5D60403152CD88400B0182438378\n" +":405F00005C6C6311202892038055CB5ECFC76EA45004C7580D498B4A183ED3311D0E70861101E3E462F0ADB97A0C78410CD432F2EC5084A9F374853636143D6846231814A6\n" +":405F40001EF5ED708609007E8F99498035005014D4250F974F0C05ED4372D801C418F1C431449F4B2A10A10424875EDF2212241128218210A920AD4166BFC883143A76209A\n" +":405F80004BA1C49A1D8481CC7AEE5812EE3963CEAC1D7488809CEBB043ECEB620502E400D3CB052069C548FB0B2FA113D03439898098CC25C223D030CAE51C2A4013062751\n" +":405FC00001B37EB0037D951E2608E287942DD0D07C88103A865D89D83E3F2A210BC3C905E20251327DECFA6407626E10103F04BE611E2EE250100CC81D432F06FF118B2263\n" +":4060000063A6E08E298CEC22C20A12C40033F431F05461F386843282846047D9AC83ECD683D482240F7A66F0FBE5D0AD34874DC98FB30C84D110B395CC7504747E6268F4E7\n" +":40604000A008F2F6F1013C160E20E1DA037B5FBC41E862A420C5D8078F88486B0497629E889E07A00902BE9A411D01589B2147B28A87C34122048D51C44B061B2B42000818\n" +":406080000989220002046915773BD1BCF83C6ED63A8401F179E8948307566A081200A0059EA400087401634153EA40011380203BB5E7C48D8F3F070D0B079FA02507D4A0B4\n" +":4060C000A23D86BDA27C7ED9E4138086E6DE4551225317A01799CBD2D2701662497984A0417ECDEB1303C6102539001C0D82672047DDF283E66E12DC7A64072882729464D2\n" +":4061000028BC2FA43061E11782B9A80A508FD23BA5EC8D02F340908478030CF50C7B33C110784450B8C8F805248557D90F2F6A1CA0E10231D88E0C0034826DD23449808911\n" +":4061400012C0234FB8700B5380905DDBBC88E56210184C601A1B068181EE0912F72CA1764E894F20101E01078B9A072DC04F920C8202C0A0C702E0DC281DA186267E69903A\n" +":406180009F9E0BF211A3D52A8206C884C2F106517ABCA087D130E3F067E88FBB909081676F7E4188956BC2ECEBE2EF568301AAC8BD63625CCF78B0D7C5DF03D49DE421EB22\n" +":4061C0004F0402E74B0221E11F2830D9BFC7B902CFB97410DBB60BDB0CE9EC61A8B024002410E014686007A359441A083BC9010B59A1E0BAF2DDFF10A480681F79D0224110\n" +":40620000E73309F4805BDB64246B1F44314BD794A5E99FE122820ACB80C7C776C21690DDEF903CEA5047A8810C816EF7C8448E513BF72721260A1F39370839942E40F04214\n" +":4062400021F9ADC8460357658C1254771E4542C46035D02186B1FC5529C6034CEAED49110147B15095063BF70A444E9494101086033BDC3C8950781B8610044D0C7700A4EB\n" +":406280000E2A10270F7BB99E13E063BE5308082868681AA6A91B5AD1D1C923EA6372023CDED9204744AF493BDEEE2881E07035AEBB3340CAEF770480E3281AD7559EE4E8DC\n" +":4062C0004079740D70E369EE6E11ECCF323018F78B28835B6FE1F7BB80984981EB3180B08ACE0251CDE557E06B79B8EC7B216C7BB52864A5DF07C596B4240F9860C480CB9A\n" +":4063000035400E1AA311304D62E47E0D5862FAA00C79EC3104418A06A96C4A8B21377A2DBCA255A80F604128F90281B4FA0384582607344980C903E9300A203C403C5FA0DE\n" +":40634000F0177C0A6C3DE8B481488136D88F5116FDB130FD8126D4C601189800197C214280F207200E1800116A6F247B03900E92B80F40CEE65C47BF4D0CF622717FDE8BD6\n" +":40638000444711C6096A7CF9AC28404EF45C2D1AB089E78017DE86285A3A28D01B6029770A1D44922C03C0576B1711F3DE8625E253A2EF42910F3D5A6C3DAEEE31E1DA28C6\n" +":4063C000884843BD0707BD0C56047BD08D0CCD51643C8E130D3F06C58B23EA5DE87EA03D88D4481F0DE918AE680C8040440D141A2CA22741B2743DD28221ABB19008D91FDE\n" +":40640000CB901F60643167D381821DF6B6B152602743E2741CEFB47196202BDA0446070073B5A14DFC3C50EF46831D94876640738039B00DE4D2596F79BB2E849410CBCACE\n" +":40644000C7E230F9F5E27A70C88610285500043F43790883DEE0A749C4153F090007C4CB2662E0C81217CBC4421AA009789DB44720AE4E605F44940B03AA010B600871F57D\n" +":40648000186919AC01A8F55B0A02021BABA2182F0031EDDA057CD3723E120F12E0E20140CB7EC76DF50F38EE43CC30B25C9D1EC6761007D5F285B56A8803E79EC2EF5344E9\n" +":4064C000BC26787DD13C77340959DF26C87776A2C1A1A57480EA29844CEEEDA47AD5092EF5463C39320AF86BA05827E4420F410895ED5CE4424677788212C98D80BC7BD1D5\n" +":406500005510107D4FCEEB82E0C1A5E8198163BC210BB60447B0FA8812AB622C725F8B5F523D22305DE6FC5E6E211323ACC80F493A30420865AE1021E16B919108E46B18AF\n" +":406540009D9938860651DA4A04F0EFDA82048D0F3A9D9027D0360405DBF47BD16849A043BED7C40B2FA18BBAB98416F68EE902DCEC30C20EF4584F03F8F77F61121DE8B04A\n" +":40658000C042B61C2FBD16C441EFB6E53CFF3E443043E33C31063C527E5DE89639548268143D724A24A6C19C80F1ED6973F60E9084195C241244990C11660E14A10C95623B\n" +":4065C000CBF92EB309106A508025124544992D9CE4C909789608E47A8B1B7808812687A91B264C55C65B2F90813252ED0201027A43E8B603F2AB80EB97E1F6F8F10F64C7AA\n" +":40660000B9BC0BBD1CD002C710C9212D9094049CD74A1011A13121BC3010E4E05B0800A8140888E11494427ED93F30408BDD71444584102BCAD4E6C9164EF8EF484161283D\n" +":40664000E1203B364882088182102B2BAC8D21B336EC4062098F3E5D0909E25942E9BBC1003D9576582502B90C50EA290124085881EF34F2F2BA7913AC73B3F101025E848B\n" +":4066800095127463D0DD91760204FE3DAC9D65821E1C511EB27E1F243F1899DB3582008430E3A28B43A1164442F57540F57730843E1B994043D41491E66C9B1E34FE12BB93\n" +":4066C000440C5E8A44192815C101D602843ECCAD11E44F2B8403B4042E482D3E3088A0F0100A745830831E29DA1CA28206B6ED41363BC8C840443BD0C9733A8585070668B3\n" +":406700003393FA20680A2191D2619D40EB0121048144E95CE00C7AEBB840A048EE046D600159700277AA819208F8F21CAD6507B0B24E811EBA2B28C01CC10CC922B8EC0976\n" +":40674000D01E443EB0992ECE3C230244629EC0DA528444DCC381F58F017762E89EC23F7A7F94890F0F544F39361E874E11C78BABC818408C15183E0FC81F0D7888C6508C03\n" +":4067800004280DCD138AD643A67A112CB8B6F09408F7A4610964633DD9947A0CE112F3C8A44BD06F0896D0965A33DC9206502381800850140B27C00EC2371033AD7547BAAA\n" +":4067C0004147C11303DE892A13A22175DEA1C40F0243F75FD80F59D7193B4947BEB588121E81110FB7A890274622EE4444F0243E022208F3ADDD360252E510540210FBB229\n" +":40680000CC89D2830BE98D67B131D2DDC221F44E788024C8416422ED61F1038722C82033085BDF40CC2080A3D885B650F5AB697B7BF45800BBD184C34D5431841EC2E02F08\n" +":406840002AF7175F501F7A1495FF407EB7EF40F27003B9A9F157795772D5DA599045D5B4850C2606DDA85D8DFA5E793B4031F06CC243106287BEF80B0FB883441775BB9864\n" +":406880004BDE7E4D0F438894071840C9C088EAC300000327038EDFBC3E2740121861DD47C4411EC2C218621C7BCF187CFED02C8828019B5911779E3A053779F922532B7BCC\n" +":4068C00005445C44AED57430CA694BBCFC9120932197DE83A2433810CB45332299B7A1634413EF2A140D029981A81BEA9E010148BBA107A7CBC5804C260502525C8628B42A\n" +":406900004A026076CAF8883A6C01F2E0088E0118103D54201B2030E02DDCDB04A1801189DB4538F9E5A5000805250610E7C14F84329703C76D8D8EE248376700A52531E8B0\n" +":40694000DDDC4B0F18401E009F731F1B011F8BDCCFB6638C6AA4640C701EFB9096CDC022D826618E025F79E0B0166E3BA3108EE26A2C107DE7FC63C247F2A24FA61404FE21\n" +":4069800079ED69412548020EE901A9A02B7C3E6C269FB07BC4EC902BEFA7110023CB348C882EF3EB3B97A049EB7B612FB6F5F1EF3EB21F910A53B4338B0408187D5721744A\n" +":4069C0001C4901879574A006F7D8F102BDE7D688B204865536406A00310A18E7AF2207085EB70E1023C540A40E1E858191DCF9C4137A94648080C7D07E47DEF4E380240A0D\n" +":406A0000ADD85C823E9ADC1C7801D9766303000DCD2220640C0F79E4884026DC462206C81220284F041D0DFA3D78902216CAC020C761511F40940F577E162E7030C41F13DB\n" +":406A4000829C508E02DC5A5D70444D8E7E42772B450EF09E2207ABF24777131098800380BEEBE32094C0C19E1185E12811A063E57D92EA4641058020ABB7214825232BD443\n" +":406A8000025107B69ECBB158CAB30BAF8D84453B89F0243B0C01EECBDC2EDEBE30AC1110FB53C8481B510103B7460F7164C9E3E1BBC1194F7214610675B4424273AEF2027C\n" +":406AC000CDF203C38F02780AE3B194780AE071FE48886049F6586867C7CF5783D108C205893DC31E3E21571048FCC1460411C1D60782010EFB45B14C0043792F0AAA1A006D\n" +":406B00003313BB220BD10E424178ED190EE456209858C03C594902245F6C5AC5A2910DC3820080686DB5E385A824C075997E06F62A1C214A90C0C4734044CEBC80C4028E1C\n" +":406B40003F3F9F88095225AAA5100F9DAA10142FE821C45B2444136403C7B8225816228400881220861D73F423B8D1DBACC61CCCE660EC71C2021022079263AB05B05361DB\n" +":406B80001B5001A8E0803A09191129B9D160600C03420343C9CAA22881604842210EC0D1E027637B02C35B7A3A3F4100BB3128431A7264182691069CA2D960704A63001564\n" +":406BC000200F69B61A7258E500DB200C26004A5CCC5816A4020751B06D6F0CC8E0E8008684082860D2F21841FA5C7318E1490ED6211112973A3C90080163A9428F219C0918\n" +":406C0000A2050DA5A6C7AA34C83B5F98BC2DF273208204710C307BA90C7AC4647421422290C708160BD5F057B8982C7813B47B6D304C421822A5A3EB80B10C3C6E7A4157E7\n" +":406C4000545C8E4129005EA61A104CE9F727C9000610247501DD7A042297B1DF50F28949598875E1E260FB3BA44C1054E9EEE8D1304143A40CCD77114BBD3092900D251FC3\n" +":406C800024728E6D088062E863D97523E858230F831D04EA7EFA4821D448E7028252FA9AC080D0FC1011075347C42582669EE6CF829A901E0BD1E43D0246EB6095C4643B0B\n" +":406CC00067A1118C10F91D20A3085650CC051F32F08847D78DA2028121F807302062A02CA702E089CC03A3C97A0485CABDE5EE5C00A4A30C1650980805D9578A9B869BBCBA\n" +":406D0000EED5000C31181BD73415D1E14594090820E805C7B2567B108FD0BB03DCD8820685C0D1C1D7A1626776C7F90F068FAF51C418EBBA412AD00633D6CBCD9902051C93\n" +":406D40002101A46E76C63088434064388C71A1DC53624C0265596C00ECC5C221F8894440101CE23FEB00408008E1283B4C6C8F13B3C808440E009042C326B19E0E019EF76B\n" +":406D80008F2EE2791F260C0820046D40A3B90C918BB8E7098C385C0A04C6D7E44391F1BA1A91C0101A462EBD8C7049C6DBD03D7728339219CE63991A5CF08E6721F0112892\n" +":406DC000B0706C6D44D4C8221A21C08B3B2D3A910DEE4871A1C5DFD1024C0E5E3FE63F4CDB17B6674B72092E8A7C1DB26487C2C10344ACC25E22C41895A8922154615A4411\n" +":406E0000182B2581840C40B04478007C5D8E3E2CF52363ACEA87BA1544AE2C018E7D685D05D620C83657C30E38F104468C2AA25843081090C8180040D9629277D6F0E420A9\n" +":406E400003659428802812882001B2CD40123D6FF45EBD75106CB5F075A19750631E05B33B85809745B21D612222DDA490A364388E5E9DE9103023D391D709049F01DF11A6\n" +":406E8000E00453B1004E042EAD112A0840BA24354602D00201F8C88044E02CC9ED18411E3B6158BC0E0E5E19391CDF7109B74299CE5E9D2C90D530D3A02CCB6034782D7629\n" +":406EC000CF129D8BD1C9C208F7DBA9494C0659EBBD02A1E8494B01484B00081B6FF5004CAD2DBCD1B53E15301980F0DE0803E21003E65F33594389686C4B17650030120404\n" +":406F0000B3289CA86CF204CEEFC833D064D08F892107B0EAC63C42B3DBDADD620C01F20204CCAD0F1148844D020BF20C43087D181440275C1C1176711E442D0C7BAC8284FA\n" +":406F40001204CB4ACA1DD25E7BAD4880D3E819CEFE1870BBD03AB808443EE0AA2948F959285C743543DB04C32B034034DFA5C482A3A87571C0980180D27B0252646A4189A2\n" +":406F8000AC7A0E84FBDF90430030132C6740028830C3E00A210988F3C3D1B143DE91222976A998D327691150B43CE9242D8CC98DA14F53858E14D0A6E0435A154EBF4C3383\n" +":406FC000C3DAB1825990021F7B9F8D4325322268015B0A51514400924C8000EA20980B54817C6908702391604C842E783C88305A5E50863540A9354D83C01704CB22D90093\n" +":407000009D90186B2C2705520D96F66E0D84F07B3264708595BDC6C6405B21B5E516A45C4F0068E1B2916F8FC351CF4CC5D1B9C32C439CDA0837E0F4A1367DB8F06044C6A6\n" +":407040009430F6F6697946947D642030E05A100780A438051410BBD4F4C52A0455D48802A0009CC80855368882803ECBBF1B06F1C2A0860E97230C218320996E5B7BB14823\n" +":40708000B7C519B043542CBBA24444370EC6F6176F11248F5FF99D04203B9CA20D094008F09490801232DF908BD6D6A25796DDDB224010265716C81D046C38F8BAA87B3448\n" +":4070C0005062C4B80080A1D4208C4036D9E04A14BA07104613A030DB7446C1080AABEC0BC4D828CB344276405D401DA0CABECC86480160254846A000B3AF7437BF11003D2B\n" +":40710000189D3E77111A9C2EF89D1600B1391CA7E1C50800C023DD9D12088D81875F8C09420B62AE2E0F74211FB73F4826D0A8156A8C1804DE055E1F000809177028F686FD\n" +":40714000B902612D5A900F3AA0D0961288450129B6FA0B012080147AA010424F60FB8849291F255708175988806A0019CC808D880159C504241560881F08261F656D082F4C\n" +":40718000EAA8B2C76C2030265A96DDD40E612904010067010C7A167EDCD832E3AFE848F61576EDF40B6BA844F613EA747B222C7B82F041C891F173D98142354310E058F748\n" +":4071C000D8D11E04AF42C00D2C01D11D1A297602A978DAC870124101143EDC6C2D1780F42920867E43BF2A68E6F1FC219F8C1C8405096CAC758083425F520F8C6130124A9E\n" +":407200004A9A130DB4C81EE0015891B8A0C65C05441802A2252D600C00BDD1CA33F81768030C0086F6E056B951C13A3F014A885000CF4600A7B56B8B1B9798C90E771C1D47\n" +":4072400060C618A1228D725F6CDC1117B4A804421C4A8F010B143890613A13F181A9FC042638C162C7C05DA000FA35C08F443C0768560F204CAAF0685086A0218365021E13\n" +":40728000013E8FB0120AF882D0ED8EDEA63E1758408043A04B86CB6800C9D9644A1842004B23FCC1F478FA34A60AF0C5C3001190C1884039032E7E14961CD9511CCF81D4BE\n" +":4072C00088D5D51779EE889C3F6C7763E8DBB11CBC153C5810C4D3EB0371034E0083DAD4E60A1A0330D439636381CC6306C74203500C45380641FB51A8423C7902478C41C5\n" +":40730000C6C6743DB62246CFAC2BC6E7E000EFD13328F13940DC18206979F7747528E5E4936934C55D43E9E022000F770A20607443B7A0C85F98C79A274CC2202281B6E027\n" +":40734000E8DCA2C68008F40AFAA2A8C47180401BC521C98C2DC00D5011B27C02740123086750EB73F17A03853D4B188772E2C112468873E31DA3C032060688B8402204E0E3\n" +":40738000F756110FE306892CC13A5A1B9268F97D58874E82681133C1C7443A7625A1F7EBB189B4E4BD158C24101A548202901A5282069DCB25D8B2446D76B9319EC47F0080\n" +":4073C000562DA6F8646272905A621120D38D1F264D9005E079521A26F28F000CE543C9D842423611A1CEE3A6CE81D448C44001603806620DE34F96C14CC61C870BD8870700\n" +":4074000058614D0030A418314E8997DF69E20BA0217BC2A4A287CD16E271B1E5B0A202CF78C03C06EBC28450CA5843C07288623028A10F00D276AEC499045008A89A26CA67\n" +":407440001EB1643239D88453D5C995111078683C87740171D09003D042772568B851E0C38B1871C288881A8F58478B0359D2391E37D70B1A49E41C0E048C920D01082E820D\n" +":40748000372820749EE20481D62F0B98828B881696B40859188BAE8F7A20650C7C61875028D082983CCB07795032910F62A80F651E8C6900DB73A8919EF51B9DCD9C8F7DA4\n" +":4074C000DFB10EC59610DC31081477A2C539C39C86196125CF200430E8C403E62553BD1399C1E5B9A1C9A813D8C3A910BF11CE9A1990099F1E2E4E99F88ECBACC3DB514462\n" +":407500003013050041BD122D690203C460C0C0B47A81A00C0DF8208041B113CC1C460C7547D0F7A440F7D1891C04C769FA1785074BBD5DC87E045828B7FA01DD3F870198B3\n" +":407540007619D0901DD65E7E15731F61F89762EC10E64559FCBA656040DC4442068D74FC6A300182B4831600B086CFC58F8C06371D6290B801A98062520E9DB964B2A384E2\n" +":4075800018033D375C20D94B7F203005E0FB1CF8E4CF33E3091094A88265296DE21CB3BB68023014E808FE00972B388078616D4CA22C86C21FBC3306CE0359020A8D78764F\n" +":4075C000C7B061C811EB6EF11E37BD41B3810F4968C94C8DEC4A62064AD2001802CDD20FD1F843EBEB611E0B42001526020BFBCC15251000771743140B0860EADF2937405D\n" +":4076000030549C083716E43717D1054A8083B1058880DF92E401EC4543DC5E04152C2287BBAB4582B121B15EBDDD160B84B4C222C16897AF46887067B3848BBF940B0EF0B9\n" +":40764000410B0CE581082C80AC1C0300E0190C03901796A4204619A105F72462C3EA3E2C1410C8C5CFDB20888203C04EF11C2F382FA5EC3B21063B8254440EEEE642710312\n" +":407680006004EE1262D869841AABA10E4F6F5CF0CF6C30A2386F13E5DEE7E36B803A819CFFC43B35C08AA065A06848283BA88C882EC012163CC18C20CE9C808E20807815D6\n" +":4076C00058B1100043162474AA40180242BAD90DC8D4403F760B0B03682E3976EAF10947B78B08040A35EB74022471A7861412B8F00E4EF8EB1248271602F10C7B2D4271D2\n" +":4077000067C066220A8062204E2C05DE139D2116207C7CF442353C5A9C102DBB8F1F740688174C0BC8D8A8B011000131A5C001CC16C57E2288DA0BFBBB3086D1587A0D0D01\n" +":40774000113FBEF6480A3BA8F1057C0A8C863ADF2C766613847444B5C9A2C5F983C0BF44CA3D8431C462EB2711F80D68408002D0C6051E26DD07113FB85D058A06F2AF79A3\n" +":407780008710E7E470B31CCF8A8944543483118812A88792059B1B2E0E51CCEA08FA2D446A1C828301442F65A85E972A8D1200782D4C0106833D51299800D16850758928D7\n" +":4077C000EF0364091185020097AF0804121F0A070048842810068408A1160A0003C51F85E10104322F911336A1E4333A12C35080E011FB7780812F40550C28771158E9B3AB\n" +":40780000466A2DF438C0D9B472EAC86E024BEB0B1743EE8889B99288808001A37D2AAA21C10D4308941D8EE638B34C0526F44722C302531E15EA13A00DEF5871F16599E85A\n" +":40784000658419D21016B27C8F00C0090F700B00265262DD3F003008020F4317B1E188101E18ED3821CF682F62870803E0A1B23DBCA14441DF8397D063B685CC34F147F183\n" +":40788000061D5BB62610F36C30143BD564BC50423CCC527D29A420817240C200E06D7A048842B25C0AF04CE976FC0900A0D01A2E03435605A112829E03463BAED08340976B\n" +":4078C000B02004971AC73CDA020B7AEE7442D3DC0C25C2A1C7AD3144200B8F7327BD774C62DFD467432664F84E4F80DBC4A8821DCFB03E374E10208A0677D4D127CA627CCA\n" +":40790000292F7B9E6049F0222D11D94028048482C017EFC183063C094853A082A0AD6185BF007CACB1B8103507C3DC874970391401B29CB0F70A090020A8A05002470EE885\n" +":40794000BA5B60D0DB150F6F9290101133D391C21021EC12012C013AA5100423F1DB30976111D20458BCAEE38D0E14D6107761D082A6182596D4238827A7B023DC04C84F76\n" +":407980002AA510041116B82420FA544841329F09F0780EB0483A0420192E256889A485056C32001F859484021CC5036810F64DC166970931A2FE127B7E10100E4E35EB017E\n" +":4079C000982001B551E0057562F080A3D1A63D1AC350345C07BD122C221971BE321F5C1D0C900A647A03F8B86768D67097270836549600C1E445D361012A8C7C1B4920004B\n" +":407A00000D308F81928AA9400E9A887504388858FA24A06EFC0B4D175ACA080569B793D746890169C54D55838FB41D8C1D2F461A0A7E33351F502888463A8043A924106394\n" +":407A40005700A7D40CE241F5F9891B14A481842D2306181605C39D0E1F09DB98EE101A7DFAF45D4A94605F64200923E16B81F1A51882A3814006CC405E8A036DF86578381F\n" +":407A80000024B815D678C222D202F78DB8B2009A01681C4B0339FD454BC620B48803E51312ECDB011A305F08257900F93EE872BAC40D1BC9320C6D89486120044E047C2772\n" +":407AC000BDDB1164D0B361024202CD340ADE23C06104CA9B48082B54E5D4DA6268C624040132B0030A7090C060A848DB46DF63212183E82D31E9D2B1F3C4D09205C6B444E9\n" +":407B000076F8228F2980402F3EE70FA23C074E48868E48BBBCA8B43F042597A70122790A27B01735A4740240478CA7C40829C04042B0C3305C4443C83563D6C1A402481239\n" +":407B40003C839BE30446F0EFE0D750035E1DFF301E3523C4F4F31628895BD608B1DAAF02355134C0B01401DAA9042C0203B010813C029CE4021EC11CE62424254A04E3A671\n" +":407B8000460D8491A611AA99E4030F3803081C124ADA2CE39100AE182F25F60F5E314E8B984048710046BE93451862EC8561107C3A1E22167DE988005FBBC808D1F7FBC180\n" +":407BC000B1E68231280B6F419910157C415C621EBC061246CEE3E50ED320462F0EE79F9439CB61121F5AA4207A78D68480E2F8503C2D104071A0600E615101ED9941988837\n" +":407C0000762E2613039007D0689A05D04825002007570B1469795C2C445C0622030FE207991E510300618C30DB671303842860DA2244A3EFEEE12B50ED29A1084446326A62\n" +":407C4000C4913800B05D9EC22E11836E21222009F8120CBC6C7A24C1EC00C289EE448C05D8C2300B273F9456CFCA4625DD2FE7E9E3121040A1BFCDD5E20178C6844820700E\n" +":407C8000070C08230862DC09C4022684C34C9AF3B39976B2D8F8C6C44DA28CBA23883183CECEE559A245F94584E99001A68125A68B2DECC48723A72FD04A81FBAB9C07A26C\n" +":407CC0006306D7E3DFE103DFDAA670931DAB223E91C41004A22D419A480029DB46C0C028CD021656A658794B0BC950A4741E3DFBF899AE4320680F80402C0D7738C880022D\n" +":407D0000DDEC61A0341C21E0C7467A88C4800248825D77803C00448C32C412043BF7924D51B7DD8422079220968428412F398E0825DF7BE5DA2D65E5C9123406DEFBE13013\n" +":407D400013C15445DF7C061A7002E2023587E5B9538F71848F60C4497F97003E094123405C1DC98E8D81234061E8530100B63BB104C171807604776B933277908222849E73\n" +":407D8000E2B63EFBEE44D016B74052222E4C9C76E1D450E22BD96864663DFB21345800B03F8823D41383D93303AC7311480A11C2027FC2C5A21077DF8A45A8351C46A8981B\n" +":407DC0000C17D73F010A2077DF9222D428B869430447E8D802BBDC24654B8182FCA0434AFE221F00BC40042543020373FC4030E01BC3BD3888044902506200F63D724590D0\n" +":407E000024680720800FE83DE11907818BBD330B5D9E52101E0658C024A9EA3D6CC2417FBEEE4CF4E27273A1D41243A4D7C4C0F4BF490186F061DF832861B60326A14BE072\n" +":407E40009F53078D105FA381C889083BF04D0F6966977EDC0F7A14083BEAB4E2077E08934004EE5C11E856320C080F41B111A20E9AA0477E099922902D41CBA83F6412F308\n" +":407E8000EA115FFC3B4C210B08E0122CCD2212F727E100054685CD07A20041888F7DEE1ECFCC225E83C044BE2990213690A0426DA038B3CA858C9C410987C674234704455D\n" +":407EC000E23DF7DC8747439023E0954124019CB5B2B1281A27BF7E1F8F8003076A3B2F00088801DF87A88B0A1D60E8A06E51C058AC4293A2993A1977A290ED31027A115DBB\n" +":407F00002B464C003EBF8B2340E71DBADABC7BED64BBF0650F5EE95701803318D03848860D6387BF061107521818080DFBF0444B2EFC1754AC522A18149E52222EFC1854A4\n" +":407F40009C50268D032E6C01D48BF169F0880CF7DE3174C850D5919E04651147DC3102C07087901309835CC225C04ED74D2A1C5E79ED100BB01104401DBBF05C8C947B11CC\n" +":407F8000344203C4ABEC0401EFC162000D62DFBF05530554BD325A2D7BD7BC582A522BD816AC0B14F602E177E0B2A2725A37C1EA8832A1E650AA77D2EC9E25977E0A21D463\n" +":407FC0009082076BACC45E3449FDD0DC46D0009F36410EFC185BAEEC08D72576B871EA45A1D974C48D3D810EFC1A43CB09C2E5BD5A9993ED306420C0AF378A8DEE14802EC4\n" +":40800000FC173E088E30C654A7ACC811FBA3C490602A2BCBFD87087B0454FCF648240F863150A55018141DF318979F51CA9881601CED00833590F50663E687ACBB54F913A8\n" +":40804000CAE2C21C45AF775A97BBACC8D01D8DD636BCF11D60846B2403534074DA8F458280A0ED66F1A281BE6009022077DD52DD29AA37498303C81E5907043685DCBBEE38\n" +":40808000ACBAF8F84D11A481183BA4C0C4A29C00063BEEAD1C4E314243BED28B5FF841821DF6ECB87CADD3FF22688A739B35100291506077DB9B966789A50ECD6644120CE6\n" +":4080C0001534C4E27D789B70C3A095A09BBEDD1615147BEDA4C23EFB66130331C8401EFB544B0D3938075B5B69047DF6A223F03BDF6A44041653A830450CE0FF7DA9AD0828\n" +":4081000001990D9F703842400303CBD2908209F714413C4DC0201109805D977C7D148E20D67B5081C4F56B804DA4541034FA0633DF0CD009BB2178BE0BAD1253DB9783DFCA\n" +":408140006B0981A6D4790EFDDFF87D668621369CA87BECD0C0D30818D6BD1B1AED41F821E44E0F818211F1D3E9F602321C2970B853110965EA3DEB4858118B8531168BF92F\n" +":408180002098546426B8D0582011EFBD4212F6CAE912FC191C5B1F40897ED3362822D0A308965633DF3D4801A0D4E85EFDDC3EEDCC203A1CBDF7203DF69C808187E0B5ED6C\n" +":4081C000C59F0C877DAB24031BE18285F902450619BE2B5DD023A851BF51882E0BF7D628E3D913012EC98012C72E58AF06031F5C58352420303F71B8F4DFB91006B77BD1F8\n" +":408200000D8900961EBBDEA440238FBEB187B6B74EE9E02FC85100880800AEFABE305D40F604BC344E25D77D5E265027BC11880639051BC790F85628B0FF03001997EC596C\n" +":4082400049EFABD1988C14340AE4FA26A0482742C122A7BEACD369837CE12049E148F639085F38D59F80EFC82510821127C1F853DF4BA3BCF697682D0802719C26E0E3348A\n" +":4082800091B839C191E40379C85487106F14B01E0039B5907E4400E00D8E21D9A44AFAE358416C83A120346B020179DA88822F20C82000174140363D14041747EC88F6504C\n" +":4082C0001040DE178020816F3DB78E5070E02E106CF62C143284048434886DC1A8780400851A86D125B0350F7CF9A607E8E10767482207BEA207D99EE3D97683DE38420691\n" +":40830000F5F7B0FBAEF4409080D0F0D9688F190A824D602A312C710AC7202FAD4110C08C888BB2010831ED4F140302640D3E830EE2491BDC846D0A4400D003BFBCC4BF2288\n" +":408340007708D43B77B5A1EF3DA202F7B340F42F30B0708263814040D3A0EF66A361B370758331DD33D3B684C890C90B1F2B2F0B1D9D5623C0D81175D8B8EC3133E75071D1\n" +":40838000F631C0EF2A43DDFBE2269B25B81E290327017245F990F503637A072C4163E57CE1C13A003FB5DF08A0DEC147D4F2C406FC0B0640A84048EDEA824116C0CED81AE9\n" +":4083C00037E180467882A7514E7404F5B246887BA4112F43ED8C3009EC6059060D310089CF72900CE3DBC0CBBE934BBF6C0BBEB854B6F89C0781B8DC61F7D70247A554070C\n" +":408400007D7088380B2241D8E0B39284C338A8099E40977BED8F49898CE481A214DCBC03C8A68F7D1C17960BC4E0607340B6EFAD8106E58E8229762210B7E98241183B1EFC\n" +":40844000307BE904FD41DE27030391E04D56F262BA91065C23C773C2C4BD112C16EFAC944D203ECE812E0F05FD1DFD4380091F01E7175DA4884C5433904858041067005050\n" +":40848000EEC90613168D1588DB98079F00550D4D8746BC080753A5BD43977CFA8820087A98547AE4E08BA120A8A9B2DFF88800841113B0EF8423A9B4BA4980BBEBA0446489\n" +":4084C000E18D91015045EC63D30DB5F988519443B43BEB9D1E015A3D93223DB2A73E5DC512AF46833B4DA14E276E60DA18C7920C88084B0F4719C0790147512329100A7C37\n" +":40850000110CBA1234F30261F43C48FAF9EC8009E111C5002220CFF521C2DC859B262D0E5D7B5456E5105AEFB12D818D40E18CB71A24050548FA81D0BA6330414053BE78A9\n" +":4085400092F03009B1E19BD1DF26C6FDB3DE194401F4BC4169F3C7BE78C813520353454BB81E4BC1EA85DF3C640B9B63B02D145E17BA2F496A91C000F869008D035BBE7880\n" +":408580004AD1E5DF3C65D6BA62028E43577CF0A18A0430BA88D5DF3C2862321060173398057B9A10451348CDF356D21D822E2010F207F7CECAF3AC0065D0906998CE7582B3\n" +":4085C0000E401258FF00A2F2FAE8F62D04F8C4FC400EF7A02B9942CFE21177CEE18543EA402100829FE0DB71103BE51CA403D28F645A900304A00F0263C3414209ED3A0207\n" +":408600000BF702F0923D83766C903D78145DCE063DF320983EC7A69B4474EC5951182C9E879F330ACA038354052F0E9889A32B4878089580565D7B5235B212C3698191401E\n" +":40864000613C036340973449734898C9832C1D457CA81242068A6CFC34D244177CF30803DB680581B2031D03088103BC2877CF59028A13B10E5A3CE18923D8DDDCB548F27D\n" +":4086800000C1FF5A70909B88D86810904C77E4A25BB4794EC238D4117C17A26150FF50880472B3011403F45DBA03002E0077DFE258074A542387849AC46DE889D1EF9DE386\n" +":4086C000EC5BD23406AA9609F4B0241953D19A84680C9A2E12E6C6D3E1084440F37830EDB3843CBEB83DF3C26310EC0A2880A472CD517FB11FCBB12247BE7807C2C8A41129\n" +":40870000F7CEF1F6A780B0CB3EF4972ED4F642E300CF011EF9DE3DDB10411EF9DF183004181B132D0805104CCA71D4752AE0357011E21E5F48B0374BD66E050731E4A38212\n" +":408740002AED8C45B01ADC94551C1DF3BEC8FA6885E44F8F7B8860703CCD30B381091027D2A22877CDEA7DF376A8CA688446904532A4698449F7CEA35DF08873089E2739BC\n" +":40878000A20C4DC20B291D5DF36C888AA420E04043BE838F22791C09478110BDAEB044E680D10F032A25DF4209696A8C8446E7A2C0BC413411179DF3B8882EA409F9872017\n" +":4087C000891157D67D0454EF6CE5A2532A0A06DCDF12043BE77CB49365E3E7F32430A90F7CF10FC161D2C14400280E479172A3447604DC9BFDF3C226FFBE8D88D8CDE2305C\n" +":40880000FF62003323C1F3A44C09A3D059DF3CE4778084C08FDF3B0221A0741604243088C908483A98775650B1DB36E2E024A422A0EE2C104C097BB81930256EDF64C099B8\n" +":408840008000981387A0B3BE78510B0D22CBBE788882101E80F5428808134014027EE7E31EF9A8321D82F0F6D8AB4CF200A9D05F1E25C5A24AF5E43D909A65077CD5B5D874\n" +":408880000B441C80A3FF727B49E03F0102480228827DF39A9F987A4402EF9CF438022894D3215ECE83811CBEC2E23016B502E5E79AC2EF9CD5C4EDAD7899F3CDBA0D1EA886\n" +":4088C00090660360F9574C8306B8E97A90023DF398982E610229827BED60B1DF39681A43884695FC41DBFDC2C895B174162A4063BE72C6E62004402CB273EF9CB30854C0D1\n" +":40890000CEF9B44B46A25DF36A89CFE31293EDC11134460C51A84812EEECA2380A13D08625B1A211046B8B44F8404F024380607A0FC47FAEE9C4F21E8D015E9D0FB20B0B26\n" +":40894000DE94C3DB3843E89F41E96BB205F548226876CED087609FA8130432A8510571459793058BC2D045A1FB2C8A82203A2B80FADDD06A36047C84E10D0D30EFDC23A223\n" +":4089800029027A2EA4023F57151F0B231AB723403FBCA8320B442A1CCAA478188986D29100C92070173107005EFB43112F0C0648F502BC002481E278F2C042178F001012EC\n" +":4089C000E07D0BAD8B1B094C65DF5A2A7044A2AEE1030620E230AB8128B3183D91825AC622014401FFBF418CD006EA31106947BE8919D0B40EC9B222077D11AA03AFA0220A\n" +":408A000040869C0BC860582EF9B04788601E05026060472138B21D0B126160702003D98008F10AE2098342B41EEFA4030CC04206EB11642B489F6C078101915A9A04256F72\n" +":408A4000743D1F008B9081BEFA3E42524C1DEA076A40EF84CE04D00236AB31C7BD004C21162051A1D1D03258817064008327F95E58818CF7CF8103DE9A9E5FAC590B72AFE4\n" +":408A800011D512E0E3414C791B5D8AC27E2F86264111FC13DA06C80911818DB5A47A523C7C5F0A573E40E5BBE6082404865145AB7511AFCA5CC5BFE6962DC1F81F5040809F\n" +":408AC00038182811F1B79A00799C0C0C08D6C86F3745B0D20E1BF1DBDE08762A74D0C3C192842F243C5E924680B9D3F4C3F0A480EFFF23D6CFE2C7C1A4C44B4AC8D1163C6E\n" +":408B0000233EA4D600796D212EF5BB39381549FBACF0B84F00905293199404B6C5481E433026B3914423358471B4F21F8B51C0AAF20C598740C6B8C0C7720FE0038122A2BC\n" +":408B40004C264CA700CD70F887EB9AE400A3443D1E4B5285021F23C8CD10EE180E5D29D881A5F920697A721C98DBE7084E95178BCA88D50D09DF179D101E608020782D1260\n" +":408B8000813A00983B5DB90200780D1084A8C03EDC4B2038F26F18504A40C10100E39A18C3A93880A0753F3AB91004D20887DF805A87C25F82698FE798F25A8FC5AE3F5808\n" +":408BC0002C8202C8C22C8E13481DDEE9C40E2CB570231C0698363C02698F05A966101666096601779FACFA4F527C5E7081A00AEA52C80E2702520760DE436B762F47A425BF\n" +":408C0000B5BF1048C78C0096D02F09388F0880209034F479B29AAAE2DAE294642E2D30080994179809F7C48223D70BF62EF80023C006D0D38F7BFD99C2601EC5E1DDB89FBF\n" +":408C40008E4C50FA5AF87C3A7C27E900298422778FCA8449C3CC0C09DE23DE1F8536C6B1440DD0DE8E87B0405CD3D10C364071F053091499DFA4C1EC5A73AFA1DE56462C19\n" +":408C8000BE02D33F34E9980E5285EA18148C520BFD36DE40D616B118C75120D03B0093F819DCD04401223D43005DFA7C208FB39D0878042840F822F040D15818E2244668CC\n" +":408CC0009CBAA5A1108BA143DC6366281E002F82D70BC5A4421F015B00C0F741A970F2D29526112603892179C08EF7701E952A33382FEBC575786370975A7C911EB7D41471\n" +":408D00002A000F6118D133BDE44E86A270A2D0E962D1127A7A807CCF4E3DDB7820357BA03B953B6B60F7968897A4B7C2BDE274E19C1F816C4598B0C8AE1230A463BBCF46F2\n" +":408D40009F008A071CA4F9A03A884789E068178486459897A0676FA6098D67244B694978C740C22E957E5487A8C500E0591C83A503D948158398D66895811904048106A981\n" +":408D800057A04C2217409A214754A48903D781623979BE947BCD44BB16907578446067FB8835E1FC01244D028C779501472C0F0C1B110BC378440A9408E474903D752E3E3C\n" +":408DC00032001033DF3EE7DEC0E384283760D106C6E2C87518EF18825BD617A6059DC0C6C0B865C9296BD10411D359902A3C12D4AC74D32803E3C9200C03A3C410532005B3\n" +":408E0000022284413D8A304C762DA58816CB3A1F22F1095174AE4155F8321009B2D0253B354C628412F193308290420B1A487740B889C4D0419F9046B8F84D1424F813B191\n" +":408E40007A8887C2AD8872000781B3BB38501E40E03839040322CBD07933B6AC08E83C0584F85FB6BE178108101E00E27C2BE14FA3A1871347E15FF1204A0EF8FA538591D1\n" +":408E8000101C65F7C89102891A2345F8224C13E0593210050028601F789E986FD801CCBE1600CB49C6E35E3A09D1062FA72F107B97883D8808187CC0E422F133BD808F7D16\n" +":408EC000A911320617498321081213779B19102386376000AB8CBBED412028BEB8F4D90AD3028B2872731E41404C74A8E1DB42C40A269B9D4C48F0F3D0941E7CC02AC3005F\n" +":408F00001C0CBE442B3000702323BC6480026E81025002639F8788440B2E42C1C8AA8F28C00547929803EF960304C1042A5444DEA1B81F73D50840290EBDECF45EA5FE2C24\n" +":408F400064D05C0FA07762C10FA05B4FD18D84010BC06EB47481A3C01B0504028441F80DF044305042284401E4A2EC2EB23CB81E61006680279C8C37C00806250EA014E678\n" +":408F800001BFB9FAC433110131C4B7137BE5F08144FC2A4C24F81DE69762EEF2F1024D107B38E0412060A0EF97A40D707122049F0469501E01A65FD100A747BCA71183102F\n" +":408FC000748ABE08468B90042847BEBF8F6296100386570819B43316F4482C0288839E202E38C132BBEC590E3C8A4131D8CF7C191771481033EE1621E35A45B8E516EAD88A\n" +":4090000085BD8403D58220300F05B823E185040081B401142A1C443F1720977DE3A11C16131D225883C126A254BBE6EC4110410D2D81331256391000762C4B8098B8337B20\n" +":4090400045A44813C808EF9BB4BD5AAE25583DE62D81ECC2E43D856E850903D006B34949C4CE344042C413BF3CCC10BF5FDC8821BC00110417980681AC401C03B97413F83A\n" +":4090800070506C324128B0129ADE1C1313610053B21B45925CE321023F038E9055BE2016D23E2268004A1A26613220F7AA69639000283DDBAB84CA208C03B80E264A2F22C7\n" +":4090C000C08B1A0012D50E89044C846CED6823C38204EE238D030FC3870448003EB454A343C3864640642C15D4A04704F1F1D87203ED64F22E0E5D62C0979DA05887870779\n" +":40910000C581D0E9CE2612001B018D12E0ACF3E1B8D0102E085F29240F87108FD7EF2527000FB337473E78BD7EEC4391D3DEA66411786BE87C796C470F978744F62D8E32CA\n" +":4091400010F22FCE3214F534BD232081CC417B915C40A09CF408C81F0D5809280615E10786DDC8221B90EEC562E2360368B8B278086301F18828365DB9104621E8B0108128\n" +":40918000021001F1C26083042302211A0304DE1BB91ED0E010180A1AAA6C21C0E9213A71D098F0DBCA009A911BC1E34491024B57007C6E0D90EE012905CA105C40184F92B0\n" +":4091C00067DF7D6375F002242708D61C9D5186006795110CD2A82CA1E1B173666C2DF9F4667123416F191C8F71AF8F86D184B74624C1B0303D28022F3C7B8925471E511E4F\n" +":40920000862623D044A2108DF0DA5095A05418012594E41E1B4A3A388010A1E1B76263509234680B94E7B09E40700C806370FF33015F0DBB24344E46004DC40BF86DCD1625\n" +":40924000E91888338322929D23361B3C4D8083C399280049004A00940128025004A00940177C0D2264B3A21C21B456403B1881A41F5E50CF9C1800420080268FE4888F0F00\n" +":40928000928F83D106AA0881A6E2C6BF8C443AAA2D7F08880310F4588855583554891C9F8B47C4AE0180830992392EA96122B9C3C38987558427381669F870C0C4E488329C\n" +":4092C00081750803DA0084E8620D6E3D39362F28842C27523C4D9F0DEE11B3E1BC61F0DE297875288F00F70DB18F88F6C494F76461F87840BC3C385E1E0E4B0DA1096407F1\n" +":40930000926D140DC84F0E08A241219FDA3E8BF51B9382F0B1E90542E99A6209FB99084200C830DB4F46751207A6948415E08EC582983C3B424C5DF81C3D2C8053867F21EA\n" +":409340000BC30E857E886D998220201780028FA8C4048D48000B44124BCA31227901436EDEE686C9EA20793417B19A1A2367B22548D0010B0B23C17A17ED958613770F5120\n" +":40938000ECC1043416E348EFEEA1612ECD41EC7B154231C003F3F6A88146505FE705C1E95FC9203BD5B8A0C3A4D01E503C5980C56C98C4252E934078E6530188193182CA30\n" +":4093C0005D2680F1B6A6030AB262034EA52E934078D053BEA224C65F29749A03C62A980A7EC98C924BA4D01E4CBA66029A32631994BA4D01E2BD4C052964C61D29749A03C7\n" +":40940000C522980A3CC98C0E52E93407899530144D9316F20C2080182305FD38C438ACC4EBE93482E93212010BFE933B48D0030D1F6E940C187193F103120338C9B0FA6C97\n" +":409440004C6087A552C58051205540B61C843A4CD07007C1F1B35218020D7177E106B91F60835EEE0C106B8DDB08346A7040A1D6098837C5E7041B160D13DBAFA590DE4C32\n" +":4094800084F640023A095F34AE0820689E9EB1D610D40A1E81808378C23C7ED05D6690178B92066E102C3E3F04F3C4FC3C4FCDDDD8BD862A3AE5B1EACB858D13B20D13B5AF\n" +":4094C00023B591DCA3B991DEA3BD91E0A3C1975A158B0C367899DBDE119B417E74A09AA6892A00E3031147DCE122101C2861821289124422360112E4A2F7ED309CDED0A6DE\n" +":409500001F4BAF89A473901EE105239F0AE811219F8C5FC45E0545A047C36202049951E473100051207E084019F368A2344DF8B02442C004B18C2A3C26EE76699B9E1C8C88\n" +":4095400012E480004810D40923A9B226C81667289E245627432C490EC66B2141034788961E370032B8BEF89A270081D54FC24123ED56911BE8381E23B6E7E05390701F71FE\n" +":40958000CDAF20076264104C9132091108910109129811052F68035CA004418004053B80425C6D02C170041EA4822212203122542065458808088380080BE5CA62F71D90D9\n" +":4095C00085E1080FE71292E1FF624384B0C0239E406F8C76CC4547D11203803C0042F4481D4DA1F8042F848C14401305E1188E13F68F48C625166097A3554408F86460BC33\n" +":40960000EF8043CF7AF808040B8FA578FC67E0C8083096099E3B1F413786894EE7E0F33DA104E655EBC1E1191205481F1B39102A6081DE64761EF276105819080D9350970D\n" +":4096400003BB186C4022DC0E0BFB2FFD1020A60638026A0E0040CD5284381B5C2D78BC243E4041151EB88C990E520E07D1DA05794AE87C354A71A54A20F0F82FF8FAB16849\n" +":409680004CAE9DA8314818E22A67180748100703638490F407220285BD7C5260406D3520680F3E56AC1EAC623D90BC4B2B9D05825C4C06C7808FDAA2C33481D442F03C021C\n" +":4096C000243D305E3084080F800B1B22389AFD468646CFC1C1827B00F0C7E8C392F2EE188140DFA0E14C088A2033D8EB8201842C0086C815C2C98BDBE5C5E97B92F26AC86D\n" +":4097000080DB65525DA070401945D46F28008007BD080C45ED1481104A30176A032EA35F2DCE24B6A0A10461D01E7DFB98200DB80C090182FF278509AC2279D3F471798121\n" +":4097400083D5BC0219A25D00DDAFA63E9F583EE0381E11A04C1A022EC3E47D7D165DDC943E3CF8128485B3009A5E2F6419406872C61883F500E9807AC01A601DB0269737E3\n" +":409780001751AD17A938461D4235B24452028EBD1AE08C40000385B098DEAF840D0C32BC1029FC9AA2210190CF512D0803D44A82D802129A8A000E7AE1340084E5C280020A\n" +":4097C000149F9B5DB180215938CF6DA09056503210F061A10B0646AE1E1073AB37108C0311C220090DEBC89907418DEBD0B65D013D11EA2A03F703316D1D4206F5A12170EC\n" +":40980000E3C2E33B420E4F820E1E10C1C60C47AB2F8B8205204CF514134488A8050477F281222B015D28712488B00502E028027780A4889DB22E09027401248861D906A5F1\n" +":40984000DCAA03DAB706039B2178C00F0BC12185E9962402FF06A517C2A233EE5C2400A2B0FF30896F21231127EA45B1148D13D76DEE10E6B0C492E27A02079A279E77589B\n" +":40988000885ED096108CFF040960498297AA268B13B812A7712BBEF30F9F17C8F4F5CCD892A1A6E0E820D82BE060D9380020202E0BFB74E46AE4095058950CA2CC745005F4\n" +":4098C00097D748A4589C4589C05880658F19B9307852F3B0709B9B76C204B0217F1083DDA7985D58AC20A1E1A5991EB99C109BDC5C645C81DDA4B83CBCEC4D034B229C80A2\n" +":40990000D2E0FCEED6D101822258313A41D35CCFCA641147C2FBC44A8044A846068440BEDCAA40D75F1F95B4C01738325ED0BCB82150C94C2030CE05CE047D3CEA207F07A7\n" +":4099400087205BC08E02C1106817E06E39B1F40B79547875C7F89C217F58B9202705FD582E90F47B7C383420EF5C86892BD4C008807B6E94B056FB14C06CA0058FA98408AA\n" +":40998000D8F349F118074752180F56130882A04094C81E06229801E257238FB0E38462484364112803257DF6AE3ED3E8304C17207C0B463ED3E9125414CA9A3840057A8612\n" +":4099C000E4B7DD41ED0769EA1CE106A8D13066163E666D3C88211819E292E44A86C38793DFCB3284844ECC7D43D24667C39E07E100216B872A8CA50279503763D5DE220DD8\n" +":409A00000366B4AC386DD8831C0C40B1AD87058A1017D71903C3B18F818A137D56C841C020680F7D586E8F0D641EBD7B5440510F40334074CB491EA1E7443B44E05756193C\n" +":409A4000A1E4E5A2F3EA5092A1C92A2C784A80BA8774AEDE004448DC5428150801142EE00084C80BBC60502698CBC01F4813F4BA518F609FC03883DD4D6201989E1A672DB5\n" +":409A8000C04045FC524577E08903D829D4344379680C4317B5994420222EBA8CEAA1CDAE124066D334083DEF4691BC1C982E8618E2EB1D2163BB680820F3FEE8FA6C746533\n" +":409AC000C3D78C83DCD667E78BE104C18C38B002027E616C302C70B11900431469030140084245A22E28144C02C0104464223038985AF626148304C0308B883D8833EF872A\n" +":409B00000300E9F90F7C0E34BDE8CE4640E00954D1556A9EBB981EBE1B72B012E1F0C2C393BF50F08843C0FA0BA87896ABF3EA1E34011B1E179929C401254501E0271ABD68\n" +":409B400035FA3E99E1105BA877C4102A72EC48C1F853808BABB2C0272E8C0F60E01F087E1014F4DC1010DF5A0B83130803B9EA1701184BA89D16E747761175049301C0F4DF\n" +":409B80003D00F81540A8103A88748952EB74653EAD6020F82F50A8021C3BE7C64741341B3AB84CE09D150A67627478A9829C2B50692223FF5123182DEA53130504D2C0AE57\n" +":409BC000AAB40093613004E2EA2402F2A11A173AC1620847225E26010456B7302943AB7750108A6101C230811B5A9846E5E80F213C3BE3984A6F739B9121E2BA01088A6EF0\n" +":409C0000F61C44022AC2FCFDE4896B7AA06A96E4A877C599503A432EC5F71EAE0712540EE9FC722543CF6DCF8F563E99A05793033131E91E812541D18078E9F5530389D0DD\n" +":409C40007A0C44D1E06CEFDAF22543FEAE4F21CBA7DA0E0848D340A5F10EE180DE9B831000B00F3AAAFCAE5F2020F84EF9D0F736991200E0160105E3012A1710DE1D792F49\n" +":409C80001EFB09A04D01780707CF18424CF526AA1ED2DB40021842FF5E95286105FA2684FB8534BD78AE3829880F1CC7A8510589717BA808CAF890E9BCB23548A25447F65B\n" +":409CC000F048831DFA1E20A84FB50209D41A0142BD2A00287E9983A820888D0F6998827EC45F3237842C912FEC1F81E33E847876DA511A24B835C01007870A895A0EEE7AA4\n" +":409D00008346C4B7F8121C4081028E19C5D40985D55905D40925E6D7111BA4062F241031056B54CD8CE531E211A5D322A219A554E0488203006000E8E34B3A088713AB2589\n" +":409D4000C47026107D33955910E217C724787AD79675A563043216B68762F07C11607D0BB5C030E1F7C44766CE1012555290A76584703A9D5C7CFB6C2C058805BEB9DE403D\n" +":409D800000366A714022F781E14B222292DE63EE1F0884088DA3A6225B00F09D257E2361048D710C09BC04020F1FBB97791D8DD131B07D881443E1090C47627493FB35A9C4\n" +":409DC000F912F07D5AEC2049E7EAB072378AD24021024E78522F8EF40E203CDF240D2F015E087568213A6020B63D21842E4FA83F441325854ED2DC11307540F000C7D10843\n" +":409E000021F22A020007AB58CC08F26C411DA7B13C0481BEE31D12D8A9D78C981FDB35C60A96230752720F630A8E28B8F620F89DE3C0218EE04922581402835ED6922F2227\n" +":409E4000A890400981E0F4607B7CE4F0DA8067D9C264C02A68F9621D1C3D8009FC2868879621071A4C12C051D19C3E3D524C63DE06E40072111DA828EE021018534788457B\n" +":409E800016E04C4068E08EE050580E8780E11E038200800F316F98100C77BFBA144C012EF227324220B1D3C05EC55506EDEC5CA86298E3AA467F9E1BA3F896878313545381\n" +":409EC000F0C4261C6038C360BECCA034F4DCF260C2000779130FB4C4480E040CE6043043DEB6024B0823DF745C8982545A98350CE24693DE0300125BCC50679DA861A71656\n" +":409F00007C33D3C9EE244B00DD326E56291B1D81A9C766C461DBFD8B56C06705D70580D03E06BF4000090E809656B1E1EF9FF3BBE23DB31032047BF8CC6818CB4CD1F0F87D\n" +":409F4000B89C649885EC47E1F67C30FB014448D03F1B60041378803E69FF2DE5644CFF58C3A4031AE17FAB4D161582F5528FD0F0E3C3A10812EC8624377C222445E257D217\n" +":409F800063258586058CFA31C4D600D13A218C02C7185D2257CEF2C447F6F2989A64AF953F480EF3262094969C23A007ECD551A1045A48CBBA230B721E1303D5E3661AE58F\n" +":409FC000C61027E667C1B8F80E9F0D0C08CC1F7C1D662027ADA68B934D962440DA53C6B9847F3C3D216A5B4830EC6983E45B521FC462544B8A03A813D2FC8805E6A0A1232F\n" +":40A00000CE901C603E25C5D40082428FCC4EC89323D7ADD504721A88D074E8F49D99611A0368910789D08C080640328BCFCA25D62B42618C177A46FB5236FE0AD50B92C4A4\n" +":40A04000C2DB17CA204034806180581E810254E51C87A9401AC21677A94C04588344752F1B5C41F7E39E0100C6225406CA9A1F19BF8F82F9CAE3420606400CC4901808985F\n" +":40A080000C311E00D459880A2059D8B01022401D2C303D2DAF3475CE220375F4D0F6B11882232418545A62AA770290EFD43B05EF220440507EB412E06CC218698B07A91D76\n" +":40A0C0004488073D283A2265581FC417E240F6BEC911C881E111F9E959A1EA18C2030A6AE343AE04CBC987693035750A61712831037CF6AE373009BC0063E683440A972583\n" +":40A10000B9F88E71E9E102004C82BA88000F803611F26D9584CC60360E0FB4418750A72E022FB0062389C81652EB202360790BF6F4E500EEC6B0122D003FAAB14C0E4BB7E8\n" +":40A140003F4B01DC5E081EC2261EAD3B100F20E87E157B1700240C11819E01F87F069015BD10E02987D96608E2684370EE32D49001CD22D7787C12D76F3C2354B5E059E47A\n" +":40A180005194069968596DE8038B7C0AA080AA004AA198D22C482E22A83D8F924019EA17F5AAB203505F79A09AA567643B2039874A42531F840304A06FCF93060E1AC4F68B\n" +":40A1C00035A0F6EA749403D81E42EF2B43D8FDC5E375316085F85F8C48EEB3D2123BB21FD2268700A9302442A42892F86361C4031667A46F8A060D622FB220103DC18F0A70\n" +":40A20000242E0883A1D88E298C5D90FEA012A86B301E99012D0D06037207C683E3F6462373A0ABECAE347B21F9A737B737F44AD60151A02C1B5D9B8C2C004A35127D90FE20\n" +":40A24000F24040455228B0050C4E2C014BA0107217F4E86118D726ABD90FCA09ABEA0DE810B039890A3D518C7D90FEB81E5302E3028060049D53EA22301444B412AF06CC3B\n" +":40A280008266842320B5414BF7409BF7C023300435B4B21C0AD900349A47B21F84010BBB2A111E05B841178339900042D4BB21F98EAD5C2B52095008F7D7E89AA53D9AC35A\n" +":40A2C00077D813BCBA0A8720E8AD10706C07C40B0469149DE5145C90008B5C8961047C493E34AC02E10AEF280449A43E16BE108C871E4C2DC50C4360244A0BFC9FA6367D21\n" +":40A300000BA200D6268BAC49E00790C7071A15208BD2CCC3550855C87A4BF048421B161810F5640398D556694401B452226D982D0C03688C50509EA98947D21743360536E4\n" +":40A340000D7DE19DC17280E20D1AA41FB4F326BB07CB57A255DB011DF8887BEE6C4D1ED22B104742FA267A202092050F80C153ECDFD235C7105C5CF0DF70F15271E234637E\n" +":40A38000EE015109801B14405FE7E391398AD0838CBC8EC7DA47B198731A1A25423D888EF3CC2EE22F40E000B898E99C8855E8F0941120BC5D645E6CAE2F542C8F7B460FBD\n" +":40A3C0000FB01A68031EBE3081EF87A08761FB2040613405C4005EFBF023D2CC03D94E8566A0648961AB35A3E77E82F208E086A068B5626445403C9E4343BA7C0F8511AC0F\n" +":40A400002EE3070902C171806A88A46805E67153042F4116435440819E6C8F73BA0D9DCFDB35A20F1A01F9E013DE8620113A0111A131FE5C1E0129A01E1B5E2B7D9EC9E036\n" +":40A440004356E04688776A35EC322E374C450047007003CE385C82C6416821F7577180E0285DB696181C4550210910088E90FBCB1A046B055D9902225AD9A00FCAC41F36F1\n" +":40A480008F4D602880369D5402482066060DCC819038AE9DD105FBC2E06FB10EE227120083F329E0805A5C02F01C98DA700090851304B60D4AD01BB7FAC8FF2FFC586C3D25\n" +":40A4C00096922030CA1721C19610B360F89499060313615F06809108D9B8831152CD8A139E7D641ECB601225708634886510CB2A406363D5726254EE768812562F4C8054A6\n" +":40A500002A9D0F6D66B86C091A501DD886CD00F1382E381C196C8877874383A1C0C4E85F0944F04D0688AA5D91E40765D19913E70961F505288DF62E600A3F94C0D109AD86\n" +":40A54000E26017683193030BAAEC1112C5CF2C07CD8B957939E459BA41067CB8AC21D3FA2050FCCC0C309E80854B10302E5046A0F10503211DE03CAEE4FD1BB2D49EC2C56F\n" +":40A58000A443681945BE970D19D500680C15AC58F2FB0301880806B2BA608AA510D0346362A32C382B1296341004332C2C5C965F709DD62D13B970EA41D6A3AD895203D865\n" +":40A5C000B03AE4D0AFED31AA8B2273EC24C4DF9457910782EF3EE51FBA720B443027001BA3461364230200DEDDAE1377545A30C01201A80300920DA46851858094BD00F832\n" +":40A60000D6209A3DBB922239AC679B4761AA6B1B651E02B0C05485804AA743BB3547A45B66282C140C5AF00A18C4B01E89E488E625442781A00DC64DB146FB648023D6B262\n" +":40A6400090C7F40CF66710982BE9022F803344B1BBC008919FD33C02029A05B5CE2F1A256F667220040F4E4558145D288044A85C8F28B714181AC5011C111C2449EE0E78D1\n" +":40A68000B0411EE26430140A058221004C160671C086CDF32368193FCBA3C034344A0C0D0A92C91B0C89A6C4828D26449A88C6048BF410AC0C67E8215D17AC87F745BB213A\n" +":40A6C000E943C3C2BD90DFD99CCB380CEBE903C524668F2030812495989102BCF628381A14185300469A9E2020F647714E31408EEB1E4338480C570079170C0A1E19EB1123\n" +":40A700005895156DB4181B18D631889330089B6A0236C04C27A9300395C87983404388B105CB902BAFCFC6D482528160719540D10FD003991185D1C0791144F606D707E453\n" +":40A74000CB5487292B985C3C181A443147B4A447038977E518E05C508EC0DA8F6783A452A552021DEAEAC8171A01100C7AF535C955080DE39021AEAA2F473C90E43877F671\n" +":40A780000179DB3848C0958DA02C7BFA147D4D2E5E76E522B807F4CA010E3E7B1B39A83C2AA2240D7808FC5C183E42D843C1750416083ED07720A4021C0019EC0D00506133\n" +":40A7C000167AFBF91B58C30088847F8C5E576842DEC6592886E3431B78105D98D821B6F0283DFC5F382593C124B08C2860B402D540073342E28178880CE5354E6020C6B9AB\n" +":40A800008409509C9501CD1392E076CE1348E148E16DC16F85BC000357081BAD670C980E4C85DDBAEC80250816C2035BB52B4477F5B6C88E60D797030AD846516F7E46118C\n" +":40A840004B0BBFF284D1023E1B1E22A4D631F7BFF100CD733C7B1BFD551646D0075E65C986121ECAF21CA06004B20AA607BE3510030DE9F912F80F08944063F5881C4F2418\n" +":40A88000D62CED9C5E330C1EA3C44AD9E80120B5EDF0280BC370F448D9748D02D0F0220D12D3B3AD552A5234966815FDA238256A8016C0A25196B340AAB680946913CC0A65\n" +":40A8C00047E825D817EE08459A04DDB4449720903549AB6318156D244B54F37F844D34890B6981AA4A47236D440AE4E3843FE12D836D5022170A65E0100E0AA823FE23E3D2\n" +":40A90000005540E3DAE5E03408434474B6CBC88164F321B80D38AA810B8180F133501DADB4AFC29746680ED81DC017100052C42EF0EAF2217281AA2D91B6DE50A4405B1DF5\n" +":40A9400081135867C494233ADDFBE1BB8088205AF8F0C4ABB070C408008EB0510D56091B40244A1D9DA498A16E953C6CBA582F400A3EA89A22281A1D289E0366C46B20F690\n" +":40A98000256745E520FD98101BDBA47699C160DC5D235D625622B590E97DFB72B5FBF6211B39E801D6C54C4FCA0081CDB290DCCF0ADC42785BD112E9443B091C872645FE0D\n" +":40A9C000087C10D8793F83D65CC2CE12E160134407059203F0BBE101F38E040707F735E40070899DA08E608027B818A1042946E080340ECC0022762E1D2691D2A3A58E1202\n" +":40AA0000D2B850BCD67C2146F22C3F14660F683CA80194A17701563354DB237629D225C01F78CE2E0184C148660C801830098360801009DAC21C1860689AE088D60300184B\n" +":40AA400009CC1AAEF44D3605E720ACD133CD0346FBD33FA39133101093B4F0083A689986C5A200DFF1413082A6918DE7415105706B1102029041A9E26E9A263596D02E0E9F\n" +":40AA80004F206621E3D24900F06B1982980602D97900288244D52C88DF2BAA0F71CE8979A06636182B490C2AD045F0B551143C6FFC2017BCC1C809F878546B74300807A76D\n" +":40AAC0002188D62C096057C411822097042599D129718E0D0202FB106195AA6040AD45512880A25A91A20D61451B290F0EBC110B89DD96AF088210177C561F0F510F22657D\n" +":40AB000010548D9800E6F088308A1838CCB143D99F440A8042285C40051C080C40406419F0B650F0AE242AE0C9434485570083562396B1244D023B05F410030605C18206A7\n" +":40AB40000020742EEFA02196251C373700EEE98E80182D540091D82EF174008E20D788FD1009C2FAFE035476363B6D6CBD862C3A00B1104FF21CD8078FF37CC1204D80F06E\n" +":40AB8000FF3BAA240FF37358A030C475A46C982414289D291AFE987C235871D8000483360402E08FF4CA1976BAE088110980C9010DBC380A3DB6642010428E9390F8D2099C\n" +":40ABC0007821208FF1B2761310C120D234D460A43359A0A2F8C121146728BC40188D1B98F53B08E11803282FE23923E3C1510383103C783B870F049E883E45ECF124139940\n" +":40AC0000E099D60A6E6EA3E504F1918842A7C8F487B5EFC861067DCC505BB9E88BD50406C8063B6FDFD20A10038044048A50E43D19DEB17F193011FC1B188D30AC7F3F3C2F\n" +":40AC4000EAF04599CC5998E59F51EC09667616666966076B0B8453D2B38907B1640989E008A204C82D8B34B49F42090C25CB0C302270C60128BC9F045AB2791D42E283D04D\n" +":40AC8000A1890100D05DA76A2607122CD80A0FF270DD3FFB5FF040E2F408F2A078F95024801F8A8F444FEB92D13882EC8BF2018B8023D3F2020F8EE0804FE17B7200F8C1ED\n" +":40ACC000117C53D22208FC678F262CE05300845A2AA324BAB7D842F0BBE0EB23B828CC4510F4E06200E8158BCEC508003E258C228420647FF3F88256F610034BC043823C44\n" +":40AD0000CD70B00617AEC790970F9C7E88FFF42B32106221D5708015722068E245DF9E13F08DBDB0B243E97BAB612248051EC2F1E01C1D7C0A6665900A818E300F5C1B24D2\n" +":40AD40008F6F82C70787560F32E3200C721A07A13FD905490F222D1F40FE3CD4062480E3F85C30270071804170C1E994F3C96A53B4D864DD004B0EB5E31F862F84571C0ACF\n" +":40AD80009D19C08ADF017A0DEF601666708855ADA91144FF2AF79A0135F7CD733E8B103B924C0F11591040C11E831DFF712EBC9C1A0E1F00EA0F053D40B9020760C361A268\n" +":40ADC000112CF611CD9036191124F6027B61FC8E5392CEC0799AE74808769AFD70BC470903C6E38B8E978F698B980C6A85DC805141682EEED259A890EF78B123BE19AE1073\n" +":40AE0000AFD0DA059BE6206EE1BE45AF048B12D40A3604CEA7E41004FF094D80EBCF49247F8475EC243A00D1B043D1E1048FF31FC1DDA243982101FE079B1F10FD89FE0E75\n" +":40AE40004BCA5A52C1BE1802F969CA40166C182050053C431E551C901A7320201FE70F8771CBAAE48704341224AF5BB00FC53407E88F612C7D90F8334012A121FC4F5C7CFB\n" +":40AE800007379C9F09838447EF4782372AEC0C000FC5732208809D756020292A2781D74E892A381B1DDD5C25C9167F1266C1066C9587F1DAC1406F78B0704FE3AC053C670F\n" +":40AEC000502B4C29D047EA603E65E11CDF2103BE019D19B00803643440E4362A200A03F8E24084364E03F8E1A4A2029FC6F9B0521B33C01BC6C0746C8007F6D06C30623F26\n" +":40AF0000DC2E2C8FA8030A1F10201B343C08F3F87AF6F6508847F0F1062221FC3B9A2449B023203AFB71C04302E48E3F873344873604A3F8723604C873B6745BAC04E3F83D\n" +":40AF40006E363E03D81030133F86C34482360523F86BF6F6B08A87F0D26C0AD3408D0688F86C0B07F0CD4742C1E20D1FC324388B880C6688F66C0BC7F0C3062301FC301A91\n" +":40AF800023A20311FC2F1B1BB7B0B02EA033285B346E5F01A18168D11C4D81A8FE160D81B28398AC6C0DD1A22A9B0384188A6688DE6C0E47F0A468CF403A3175B80611226F\n" +":40AFC000279B03B1B262972021FC269B03C78200C8FE12CD8218D99B40A5360883647040A4EF3401034950CCE920C96092CBA22251B1DD53C5810AA8442C409D360853648A\n" +":40B00000C03F89BAF31214FE287D6EF927ED4989C6812E825E6A1258D8260D9A800250D8266186AE038EE70B048D4F8C900903607A60072E784064F9406640FAC8442F5018\n" +":40B04000A92063DBA00244611123C008C1FE5C835C80B11817F20E1909B60643285080B3490CF0931DC286040542A13F0A501E46F8D8482D88068074070C40B9C1E449B2C7\n" +":40B0800063C5686334856A005C02F8218442001CE1D011089BA8BC163D593E85C0E15F31F0C3989427F01C12F7A2B21A30F2F6C440F14C4206C583DC9C882034905109C147\n" +":40B0C000046A458980D9A6F01B8304626368006C0FA147B3210420F83FBCC750C0D107075344A102CD805A7F1019AD9F1867F03F4F63608A3640D3F851E206A88F76AA4B17\n" +":40B1000001C0E813846ECE44124B86140FBD6E25811F03808FF043E43E0A0A07064728828411FA442288608ED4C22C074105CB8860743EE5242F414B08145B545802E776BB\n" +":40B14000F84A376F09AA768E381751CC7A22B4012B42064D1EC1831618CAF12F4E748E9D3C7CABF820895A03F624B883E6B9CC059C5DDDCA2C71F5F236BB54B04DBED5DF4E\n" +":40B180004CD6387AD9F061C598C0020F7204DF8754CD2010990766E221780BB9540201BFB1D50F0B318052F480C19818380D03466B4C004F0B48812010D36B71C9CA302B1E\n" +":40B1C000D5D9E39094264AFA812058E04F1E7210187B040D0D88004D12DEFF94B25404BEED52944EE05B306502EC0A0CB3D8C990080DECCDE430F4C4207BDD20713C108C43\n" +":40B20000B4070341308881706B1F092340A7C41E7DA99699E01A9A255627D549E4BB5E61020D0291B130D0774134A251813989EDE408DC84B74AA50164D223D976BCB24530\n" +":40B24000E2809A8225D16CC0414108A209E6425A0189A03CA00035F88B24470A5C61028E31231C713D3C881C5555122350107728F019D11A713CAA33A60018BD9B14889D4E\n" +":40B280006BF40D515313B2A6202E2D21843005C68635C13709C88A593E8C1A024E663950E07A12F21758C24A0C02543511110149911D90BA24662747480520E9E190FDFBE3\n" +":40B2C000F7EFDFBF402AE856F11131E05E23B944480419625E22611C0945B113CF6AB821C6B790B34417190C0E76AC9A206B1BFEF245505C81A06C920139AA6CDC0458472A\n" +":40B30000E19C7C50699B2C625F036580041736476EFAC9136803CFCD22B7BED8847EF2F9B09AC6AE88886DDA006DBC08BA03071020D73480F32816EC7971020A2B7189A10E\n" +":40B340008D548D8B7089A4671B601B7F189D901E55480027E64B03A24B28D0368F1960810741ED254CC5400165EB30516C18593DDA176D26A01593069FACB21CC086817201\n" +":40B38000C1C7566B001815A8102B7E115E22982EF2E0E09AA535C5CF220596D62D260DB60963489FF8C85874B9E371614D80C138A20592CC899D943478819A05A85DD5B6CE\n" +":40B3C000480ADEC84492108D0073B59E4C8118AE310608D449D0059676511BACF758C88E2C10E8C61B63BA5F04138C608CA6B0FA430406B8E7DB21E2009A23F5C46E4588B4\n" +":40B40000D8E065A256F7892096A70B24680994DC52E111D81C8829D848D091D0C2463043B3486C20987271B8BC188C1ED0B91B88C46555911345A231E2109A22E5C24C45D1\n" +":40B4400003881443290AA061955108342A28D060B1487BDBF10010A1A92400C0A91C2C8A1A2239AC255C1A221AD9A4191A01B16400DBF40AA005010480A7601AB25D0148DF\n" +":40B480000B1DB2FA60D4EE8874060B4A5DAE8C9042BEC0305008C0A47EC804B7EB8F4022FA30B50104EA0195217040AB6DE13D9444C0D000E0A2636E043997E1005A67A152\n" +":40B4C00001CA4F357E21E4A382EE87E1D15F0C108268DBA08F0EC334418EBDA1A74400000300038C000000004206000038000007DC001FBF7EFDFBF618FE0447810E95F7E7\n" +":40B5000096343623B885A001A6202C0A4E29E2C3A6E44B251C11626E2D42121E688A162083715E317F720320BE174DB24A8521175E2F7AE302DAA0D20277174C376942DCF0\n" +":40B54000F5CC251CC2CDC858C4A1D46E080320D0200CB706D1B8C60380E8320DC3A0D589346E59C2136E31EA6E57FA6D827B0479220884BEBED04180C4B48443BDD308073D\n" +":40B58000E06B02210608E50497639315832855C2A8382987CC76C8694EC80848044F2E902C90BA11CC0480C4F6DAC10024423CEC80A10BB5C089B108244664A6026520A10F\n" +":40B5C000400A4348C47A0FE8B14F5878900A9E769C5145E3CAE200439A30F2FBF7EFDFBF7EEC4C1BC6F1AF76A2D44DD450CD6F00E5BB701EDB3C20056F1EC655617001BA16\n" +":40B60000602017656E9756A10F50D91F5AB51625522CC3364E619BA5918B72069D42218D2190C6106C8BD412869B5C4D801B92E37B93423B9303CF901F2D80B97FDBEE4817\n" +":40B6400009EA2811D931C69940EA386E7314360C61C0721C064188643C0C90E4320EE1C86E1886830C2E21C06084290C43A86C1A0641C862338EE3D6E76263586FB0880C3F\n" +":40B680009B20E4305098CF611C9186639DCE41E57DC25D6DC058B6FE5FAA493DB94F3DCE668780A6D5641E07B6AE4057DBA8D7DBA93AD88FB4DBD51E142BB002DDCC9CFA68\n" +":40B6C000ABBE76EA6A027733AC21C0531176F1D560C36ED5289480A8ED3656A1D95A0467A5E3A7C1AD9E1AB4F085AFF4BD411238274CCF34314516D8E480EFB15616C83A87\n" +":40B70000AEA31B3D8D82475DB112420D4B26437EDEE88041B4001078106C4F07266C6819765A73937D9852B423C8DCA32C0142BF5D3048981D332479FD2D8F072D8DED9DDA\n" +":40B740008C716600104B1978ED88120180C01811EB8F11131013830EE4FF10C0060C0080C00A0C00C0C0120C0180C01A0C02A0C02C0C02E0C2020360C2C61020061700405F\n" +":40B78000BC180C018145E38C291E8312B100203318833D5F2275FD80BF65746701DC0194A7B6346C9B73A9553A7C5B7D59ECB9043A6CAD35BAC8E017015AA9256CCABDAE73\n" +":40B7C000EC39C44C2265DDE230730EA11D00492361AAFB8B4BE36E2405610C4DDB626C41D85C077606C30D0C31B061507BABF147CD7BA36F281A031000680C90EAD5211CC7\n" +":40B80000396F40865E8037914F7AF419200915C65BCC5C8D2310E5BA43A1BB69D0DFB9E22BB77188D2308E70C90DBB6A1142E2308F0A3B13550EA31A1BCE3D33727053C551\n" +":40B84000ADE5A35399B1BAF118002789229DB51210C5611452A2B988A3C6ED293C1CF0610C31520C9906610200000000060000080001000203000BA800000000FFFFA1EC67\n" +":40B8800038000013600077E821C5E0208418EED8D2D60AC80C1A00C0110120100114157FF8B566A01BDAC130040340400248240480250280A4160A02C01301581AA0D0684E\n" +":40B8C0000D004E0480E004EF560D409C0BA46CE5A044029A88120085F481300A6420500298481500A5C40B0046FA40B807282060034C1900D60D006B06C03583801AFD1206\n" +":40B90000952D03C01A7D29F52D514892904202488B014C47904602C6104802A7D21422D04C02A78CAC1B0A0064C2901961500CB0AC07585803AC2D01D61700EBD2084B41B7\n" +":40B940008011124188130C4190129EBB9A5A0D00A4C3502D61B016B0DC0C5870062C3903561D01AB0EC0E5878072C3D03D61F01EB0FC0F3ED21087E080EE18202240207AB8\n" +":40B98000242340223824240FC113B1212A0121A12132012391213A01327921417E0A03490A4BF0509548545F82A08A42B402A47242C402C05242D402C42A42E402E012421C\n" +":40B9C000F402E3EA43049F218203140303A86080C900C1E290CD00C8DA90D100C9D490D500D0CA90D900D1C218203740364E24390FFCEEB22C0750604A221DA01D03D21E9B\n" +":40BA0000248C487A807808487C1FA084487E807E900880C8F8182020A4F748841F8403A244349E0182044404236244549D0182046404432244740460E8608120BF463F505E\n" +":40BA40006049402405922524920C1025A02503522617E822830409A809806489C920830409E5FA0FE48A05F84E3D245149EC9148BF0A07248A693B522A20291A522AA4E610\n" +":40BA800048AC80A86248AE80AC1C0C102C87E82603040B480B01448B69B2808B8C05A06222EA4884D1A80B804645F46AE84600FD83F0304061405E3C24624D5D08C6806013\n" +":40BAC000A19101828654062A199018A8670FC322743040D080CD43497E1992C91A901A02491AD01A11A91B101AA86D406A43246E406CA1BD01B0FC182070406C7D24714041\n" +":40BB00006E3B06081C901B9E41820734070A1D101C1D291D501C8CC91D901C9C491DD01D28794076A1E901DA87B40796C511F20C2AE847D403D50FC80F543FA03E51001F81\n" +":40BB400087CA2043F0F8F849041F87EA20D01FA8844080A2143F10144307E20A88745EBF0C9108084A22502182A9228BF10C910C1045A0440392462044511A811405491C13\n" +":40BB80005F88AA23CBF11544817E2328912FC465124811D449A0473B924A20481A830412A8120E5492C5F89230A49740940DA4994094A269025A89B4096A271026289D4015\n" +":40BBC00098A2783F13544FA04D51408135450A04E5144813945187E27A8A4409EA29502828A640A0A29D028D9D04A8405251525F8A4A2A9029A8AB40A6A2B102A28AD40AF1\n" +":40BC00008A2B902AA8AF40AB574258418345897E2B245920565166815C6E4968815ECE825AA02C28B640B0A2DD02C93692E43F16945D205A5176816EAE84BC83068BD40517\n" +":40BC4000C517C1F8B8A2FD02EA8C040BAA30502EA8C240BCA30D02F28C440BEA31502FA8C640C0A31D030A8C840C2A324BF189465206251965F8C6A330BF18D46697E32283\n" +":40BC80008CE40C8A33CBF19146817E32A8D12FC6551A45F8CCA34D03328D440CEA354BF19D46B17E3428D72FC6951B21F8D2A3683F1A946DA06A51B881AD46EA06B51BC8FB\n" +":40BCC0001B146FA06C51C081B147087E36A8E240DAA38D03728E440DCA395037A8E640DEA39D03828E840E2A3A5038A8EA40E4A3AD03928EC40E6A3B5039A8EE2FC7451D0E\n" +":40BD0000E5F8E8A3C0BF1D1478A07551E45F8EAA3CD03B28F440ECA3D503BA8F640EEA3DD03C28F940F2A3E903CA8FB40F4A3F103D28FD40F6A3F83F1ED47F87E6F15A5F09\n" +":40BD40001DF903C45194A80568BD3261042ABE7040A28CA668003FCF50083200CE88A3E9A4AA0C827040A339358D860FC846148140AC17C2150E00C03C8058C41C09101122\n" +":40BD800031BB7A180C13CA823BEE60A3D7181180050510866100E501464A085832C3745918430CA7E16EF9F000DC04C8C444E721424088CCE434016701460A24354398E19B\n" +":40BDC000162D8ED06639451DF94013C218F129447E72200A13B091F1F1D09504216C0C6D0AB2486467C9231A22C6E5E661977D63141A051E5380861D472C30862208A4023E\n" +":40BE000081DC0886CB0C6A549AB9F20440B98E11644694199A92233582F3FD30C0DA03E11037128F237930C4E001C815862401281A2C311C80201A653E0657308601004653\n" +":40BE4000EA8754124B85F41020385F1903838600009F500300300A10C1E0002250068019DCD805005015404401C07600C462209290840A822C0166408321018F58A0487C39\n" +":40BE8000D87A0108E30261EF52460B800D088F172017002805041400C2BC0860070042930040481BD80242E8BAC01420056600B10609B0A85021DC01A1A848500706920927\n" +":40BEC000803C015589B0101062CA804446D30363B214E5C026122488050210D2A0150D44AB00B059221805C2D106C0301608560190C534201A0C444A806C3012EC03815EE0\n" +":40BF000064403A1805C500F2FD38700F809185404014258808410120A02208708808C21B88902F914A025530444C2706350138808440502A6A7101489715D405420A21010A\n" +":40BF4000585CAA040582FEA71016816B021B17404534405EAAC44600501C5018860884064182BC0D81984DA1880D02E524406A1AAA1101B0ACAB8406E11845501C04496259\n" +":40BF800003900AE23A1012440761A8C6501E05FA9C407A17EC506C0F84058C0D81F84AA10810001CC0810473806A1B4DA0B810C255582044081491022AC1089187ECC8810D\n" +":40BFC0001CA44822B0102484F2A1409413C8C604B5981060982F847502688884409C2F078502786BAD440A01AA9A20510D243281483591CC0A61AE3102A108440AA1AA86B1\n" +":40C0000020560F84FA815C430D6C0B021C65605908D44102D0E38840B629879502E04AA2881756E94182F0442F140BE1C29E206052444C2ACC44C4040EF5031801B814D82F\n" +":40C0400032038AE840CAB0022660AD60C40CE04E6040D021ACD881A441389A840481035859B0E206C59D113682092206E06134206F3021281C0495A0103888616940E4201E\n" +":40C08000858607310A31303A0808440EA2165881D84958D103B88208540F004189E45BC6207A12766C40F604019503E2D5089F448086A07E11D0881FC420BE9E07C020E925\n" +":40C0C0006187C0110108800840D9B0D801ACE083004140E0C01448B8300638B00738B0085831060123FCE55005010059802D4E106018AAC4180681C9621EB607170CB4212A\n" +":40C1000070C4511724187C11103450C3E091023D61F04D60C403E0A2E18403E0A85FAFC30F82C1BC464C3E0B84511161F65318B61F064405A00C3E0D1443E0DA604438AF43\n" +":40C1400041BB1C43E0EA0CC3C500F98080C0426022301198090C04A60263013980A0C052602A3015980B0C05A602E3017980C0C06260323019980D0C06A6036301B980E07E\n" +":40C18000C072603A301D980F0C07A603E301F98100C0826042302198110C08A6046302398120C092604A302598130C09A604E302798140C0A26052302998150C0AA60563B2\n" +":40C1C00002B98160C0B2605A55F196C000990865D1545528178005BC8D83001EB4F1B06102005A818819C420631D55D4819037DCE46C19417894A06600B7CD1B0670401D9A\n" +":40C20000A87064798433489A0F540D42182F606B0817351B06C0817331B06D13560240DC3027040DE30630C3409816883F0E088870DE1FE9BEC8C340686014530D020844AE\n" +":40C2400038A7C8DB18F8A7D8858D8625A04669261896C099D2B0C4B8092C746189740E0D098625E10D4A0C010480C031300F714F96C0301870B791806014E88006054223C5\n" +":40C28000911E2E19A0E2D8600B0037E51B002604344080282B5000A2110180728D435FB82D8623D0823727899E189D1013305B0B62734D0600602375B18600501215261817\n" +":40C2C000034015E8C7C5E244A86E2041850C0E68E06F3923CA5820D2881070B660313FBA430A470017A38FE484093024A201AC82A0AB200DD02AC803740ACD673481268505\n" +":40C300003802651B0808010841878EF0A5C3B22F47093198984A913194868A682D8A8A42B4223AA0917016B095222E20083017A1111824088C4E43200004754F9CE11612E4\n" +":40C34000A474B282205281B04058710068470D540208447C09052E162400613B24014AA26D14A4030B3E015AA1684206110FC3EB07A005014A0030E62CB0002E6142C06201\n" +":40C380000529003586C954B402B00330C48D7798106E2802508352E961994491002C30801061A88A29AA03014145100CD06152800429009500941016836432059940A733B1\n" +":40C3C000200C18EB201114C4013A19020C8086C5C36861E0EEF2C1602001A64162680A3080150A7E303A114C76600A1838667081A5E160080A652160080A84514004748FE8\n" +":40C40000E166325733239002110DE9AF02C340C525801030E4F21000000000000600000800010010030044780000000000014D743800005A8434051347CD19F2680A5068AE\n" +":40C440008A7D0C882299A4C724AC164544854F0D0408A90A81A42AC188AAA42B2856642BA85763E8715115F7A691870F47F10B02C20021A02C42A0690B30622CF65FB08B51\n" +":40C4800030A880C8FA7C5C60800844D216A2458600934188540D216E0C45B5217142E3217542EB1F42748C280BC90BD0688BE90BECBD207A2C0C050816688C06821C46881A\n" +":40C4C00059185218590C4A1899765AF8B031A9792C5C58191486550CAC86650CCC86750CEC8684C100024682E7043077AA21DA480011477E8A108EC083D1BED2008A41C09F\n" +":40C50000856F80373D07346008A80223E838E10045CC5E1232E3A8909384F388CBAAB99E794E384FA3A09F87CA37C2008CFAB0190905860011A8C867A83B06F9F8F452A170\n" +":40C5400075EBF08D9E85C82B26000236F3EA11F3814C802388D9E85FA300472F3AB708E46A23E85F0100475F24F81420FA067E7121D8476D600047BE76C923E4FC23E4B8AE\n" +":40C5800047ED19108473008FF8C0247F3111F059ED101400B20164812619E8962160829B06E221840C80116325C0485E0C103E159898403C11F41F70B043750A2090D4A051\n" +":40C5C0004242B1121F9757084A3C33E6954AECD62100491DB9307071080249F44C5144092932092BC9B70496F455817997EC497141AA7424C7A1970A910931E84142C82941\n" +":40C60000926BD0CB8414420F99B08B2A0E49B2C19E29C1200939EAA282A8E12783847A26B85827C1447A2FC06102D182C79DE644A5C080213F8730C4A6E845222321042458\n" +":40C640004A840B01A25E1280129E485EAA731034FC10BB0FAC7D02A4416980A7D7D3424D759B80831A867914C023079EE7A0782014881E799C90B0B901780781781E7844E6\n" +":40C6800011C7ADC0C422F43F08FAA6907C6EFA5D23043BEF197799920071CC0B0C03B135C940C8760A0ED020D138C210C804E01283D588A5CCFF0B9A2809823C805D2F661C\n" +":40C6C0002211A86E74E598F80F24424F18F21023D71BA3D0356414A60398216FA95E941DA8707534A0EFEC8244803DBECE2671AC681005010DC5BF44081282EF5F54919A22\n" +":40C700003E8444002C3397FDD79E5BEB4A1DE77C3CF4C078B728805EC18D2E04A23D4D245108739C32F2CFA094C7000E4485BC1760FACDC07CB2462010BC048C4111C1D4C8\n" +":40C740005E93D7BDE2070DC0B081DD9D85DD9184068440B7AE3DC4D12E8B8140B1030D12E4B10037F62400E3882D380D8F05D4A85A7498489205C9D9D79BA5C038C401F090\n" +":40C780004D611E40E9A258132659321617DD331E3EAAD9102410EC8702E90749F50D70803EB1E132A51030C605BD728E87531718185D02DEBA5C3358A3EE8C41E029C4C469\n" +":40C7C0007A254F6E3C9304D27DDD787CFEBC40C23A1CBA71AC4C21F4B6188BAEEEB54A524C81B47C5824C990FCB9EEEAC46EDC8AA44BCD24075E6A98254F80A10B82118F5A\n" +":40C80000821687C417C3E02892E1780258F8512479FB21733C1130583C10103A188CBC647420AF4B23974A391766901F4181225121C9BBC58F03460901C133CBA104C79611\n" +":40C84000EF08E1E41B4209FA7394C44180381A034E7E2A220F8FDC041A088400C059B108069D1B0C242883E7D79106021EA01A12E7BB78468A0798F948210398F015F9F659\n" +":40C88000E3009524902681B7E0A7429A1737148F4F3BE6889E5F8A037943D70D253314C89593C414EC9C51B258085E49371F2B29886A0BF69A299E9DCB8E3C20B4701DC75A\n" +":40C8C000685A972F2B109C0B14AA78B9FE09053274CDA0024CCFA646CA4A01327D06AC5D36623E99D61087CF46061F9FFE09D922E44EE92E010580520088283AE1404101BF\n" +":40C90000F7BD144FA534845308580B85102CEA05BCD782424B056772BD9737CC125C700A80D2782DECD30102CD2ACE10BC8130066077A417648E892E87B3128B8C10A00502\n" +":40C940005800C60F59C4A15B1049D6DA1DE7544C9700330110C09844BC4871DDF0C40606D5CA81A3E609E1AE732D4E8014B8187D078B210153E65772EE0522178D9BCC80D5\n" +":40C980000B017CBB16258051D5ABC88E96F82F431E29CCD28CDA48CC4F3BEA2E4D605E6FFA2E8E162EEEF04BAAC90BCF66497777E0F79A01FB061080CF1EAA1049E64A9116\n" +":40C9C00033FB51CCB9DA21723D03EF3D8160E3F27258F9BA367B079C4172E0E3E8C7B30381701820308D1378EAF2B198F0F5C1278B822B99010809CDFB9007F938B09A06D2\n" +":40CA0000C750F89598219E03DA2071A26AF112020347E0B7B267849607F7CBB32FC702E0D0347AFD747C6AC24680EC0D7111C232000E223A97111B2278AD1FC60F1E930E21\n" +":40CA4000057032483EBD942000830847A157BD0247BA288483F1A0788F02A794DC06D343E36D420284EAC21307BD0291302AA0402F35741755E0974609883C6817A4C04039\n" +":40CA80006917BD3E5A5DE0A8468979E36EB28532E91F1A1A133D16D85E9D6B33510E003C26896B123E9DB21B808380AF1711B42A83400117FA77608F0143BCEC045D4AD45A\n" +":40CAC00083DE75823E21E860F12EFBCEC0AC601EA6AC3340A8EBFD268344CA351F8C8A1747E3027587068945A6896042A54C7447834B9B44F7314213200091A5222A9243BE\n" +":40CB0000AED54B890B151522E0E73C884E84402097A10C042282161AB79806B083040780E4681086A909CEC2CBA10D444D4FC59B89F4CF209E8317421B97421708854C12A2\n" +":40CB4000E8429110E98A1D08462205324C71A4C4D00F49481B330B1301469B0F871D086AEF4123323B4ABCFC083024B02548CC43550582204446E46B254958E46B641708F4\n" +":40CB800000100DEB710160300641538B9C680F4A0508F1E5FB31084141F8401F41C2F43EF57328885D64424078C40B041E502F43A3C74BC40D444C020381641279437C7B79\n" +":40CBC00060ACC1F29014E3CB82088EA156FC122158127D05BE3A223F2363101E2F02DBFF6093C19F7B0917AF518A6329A83C6D7820B8400813C1A759631461804A3609211F\n" +":40CC0000F7C20AE7C3CE845E27837ECB9F1901DE2A0DE497C89B1C46B865BFD3093FE64B21278A7280F00639CA291A2177A91D06741EF4591EB7EE2E90A5194110FE523457\n" +":40CC40002E54943D092C200751A3114E101AA1293A0013A11782928887EF48A30388A92113A109AFE51D51EE2774020006C96881A8D0813013EF5282EF50C42DB000402125\n" +":40CC800082D90EF0E030311EF5102E9EB82E7BE441C05D6E8104910E02C841040FF3F07D0C3AF5190EBFCC6B9FEA25D20503CD568FADE210F578E916E01F4C791700671049\n" +":40CCC00043A85604093A01F27835ECE9F10AFB982C788CA8814118044F81C075332EE7D4400D33A8F14A07C2F2A3E37F02E8AF51B4E096FCEC3A7BA2307956B8C281E1E79A\n" +":40CD00006C83263B26C06AA4F114C1BC040620113F5305C10006F71030AB34C2EA982034824CD1ED1E81E40F33CC4006A64B8785081BE5D222EF3FB28811072F7A44D3C08A\n" +":40CD400042EAB5B23D03E340E5F18CF8F7A0611C880404F78E3307D3B8D271FA21D4B7C661E6AC420479B15048628CE8060D737FBE6FCB017C77A9F98440B7AE51D01340C5\n" +":40CD80008288FB13C1720C178C480A53024F208ADAA361B027803F566F0F652908E0210EA1155F00EA310EBD98E476051F1150093C51754C9098A50785F7CC062D42D50FAE\n" +":40CDC0004EA4105BC597942BF85E78975D248021D8EE4404FD2B0C3D41F4382880201E0E21C0DACB0CA034DA863168D02E498EA7A61358B4EF6982C0560137A15E842604DF\n" +":40CE0000CBD2409E08FA626C6C706060E4A2018A914011D9491605E5214F98B3901A494CA7C8B5C430400D21A18AA48026E8ABA101B9EBB8CC412B067BC50042E94A3D3C04\n" +":40CE4000AC2C00419CC685A04CD2268602E4821002402425E11482C7501A0F446B882BDF8B640A9E9D395437C18027E4A8C1B4C08181156894C022C503480C03A25114F918\n" +":40CE80009728816060050E43B011E4D023B401F4FA6A14C01812FD73984059C561740D02080E36B09209520504217907D3EBA8753920894059851E88F60717C88EA2D1A19D\n" +":40CEC000D70342688F450181C59E8480F5AE38CBC06E4705289B5EB3B32EA14728731680C15A1027E0E98B81A8210304A467E0E891118620F9232470388B81201D3182000D\n" +":40CF000070D51A6A84885EF1EC40CAC002210360E99210038060B5189FA75185C41C0C3BC6E50010ED0B783A826061955D4A94A3A8D3D3334247245E42091E960220368293\n" +":40CF40002E85051344502042303CBA08820EB444200FCF6A03D84FE4019023307DE892692324E41286087A8BC08C4290C0E99B53312DD424E94BE953740D19D950C9570151\n" +":40CF800060133C449443A00ECDE616F7ABDA65A0E00BF922A48170D021107A12A8400EF5472E84002E0E503D2048382A8408EC9621881ECE3A3E83EC1343D31DB40982E021\n" +":40CFC000C749711037D07CA3E100512820858E83DE2EE251163A0F6080D178FB0BF8434882013739E91E90CA23C89B35C2125C3C3A409B459012792801001A0970F8E9F499\n" +":40D00000E3C0C519BC9F41B988033998508F88AD48970F4E90DBA3548841373852C298C307842F1E0560B910000F4FFF220A18972F0F69694F49F88F711A0DCA024E78ECE2\n" +":40D040006099E8456332123313CDED8BD723A33BA16813602C52A302C74CC50B01FA00648111493EABF910401B292618030CE3EC0F35CE125F96400F88B308E902E426177B\n" +":40D0800028522160AC2CC4025C22A48982CB97248B010C812020F69F5BBD805808D002D88106B342E120697D60412A47016F83200F55361182802C3C081D06E45D09405DE5\n" +":40D0C000EE60875F378803D06FC580CC4BBE83751C06405D7A18C04402643DC08640B04DDEC5A3D265240C1A05B7A18C4BC33B87817C0B4042248B387317F99A10C3404409\n" +":40D1000002109E7655108017EED3C3F0A4715840082003A1AD07C2DB621878D484884C86512A7A1AD0BD0FC45D34E02201C3E44F510B7D5668510778F8302A0167927811B6\n" +":40D1400043D0F6C7A0BE135C9FE219A8EB2EE7D026056201064F0097CFE045734C1664015E010EA6481A0A82641CC02001C032018377ACBF4808327B3984B9F56931D34782\n" +":40D1800046D0A60C707621F42678901CF8D8BD01AC40C1411024E10087AAE6C480D8BCA40A04E7744B8F2E8A082DE5EC5134083EF48C9C3D821801C09D383EC71312440378\n" +":40D1C000057C143CB00C0D06E1208020404C20DCF4155E37F28F3F822EFDDD1C1DC02B5D9A5679237B9C7D0FA89F8BA18F04803C3A4758648A30115B088F0277A3D74BBD17\n" +":40D200009C48B90340F16BD3C3040478067679C8DCCA87A868C44D1943D930742170917359804A73501E2789A198AF2079DC0A9C11285BB4BC522C2C0400A61FB008820EAD\n" +":40D2400084F228812480B31A186C1A5D0CEE310240045D69A23358885E789A2881234751C26F2EDDDB1128F615BB0BF4823E6ACA23C984389253F977B4F99A92D1F3C58972\n" +":40D2800001A3A8A525440A3D84A44B4203BD190A90149487512BACAD487A04FD0DB637D1803A3D0045D008050CE000A44F984070360803DDBF385C224CB897888A57A9840F\n" +":40D2C000C452008C117BB08D09CEA4507027BB4010A50F742A20F0BAF18D302E52956D25DFC8E20D56B95FE01282EB3091102C1A3D44E03D93B6239612811025C3E82972BD\n" +":40D30000E73886050ABDEA6721077F0E17528520097904691C4905C9978BA0908CBCC0C05DEEAC589810EF7583C4A85D04AC4780F2215741CD83EC56416030267A580C45B7\n" +":40D340002C00E555C002F50291045C212067B2203BC824AAE43A0224BD44F47E7F971600DB250E04D806C13103AC3A8FC297C365B40092E9303848F4AA8176E600866689C5\n" +":40D38000D7D0C323E8B4E12E4E53D05602806AB5005FBE4A87D03DE5D1FEE2608D20A045DF9AC7E40AB1014BA0B02AE5FF477008D0C90288308C63C8931052D1A457803D7A\n" +":40D3C0008A085E719A10006607B9FD495460F5D440FA0790A6B139B10E11E41575CD10E24B11F422980BBDE3044D23C22A9B2C06E1D7CD2220F50AE8F73EC8FA660081501D\n" +":40D4000007AFB84443ED79223650384800108A3FCC2B0281EC6643015E11751830DE42336A13491E08754490855E71D42C16836B3199CA344C8A804456A7C542C40A59A83F\n" +":40D44000B2F12CE8F76FE8FAB12466313DBA819C61087E08A3C80409F19F002E1604226F0CEC1F51768F62DE0F61AA08101F8062190E027A8C6CA1CC334BB0B609C4234B56\n" +":40D4800011C9B802E8DC545E98E72F271FCF996304F0F2E920F69A00C500820791D104045F143D87E6648200874456101055440DD463E82552C161011761D19F42FB901004\n" +":40D4C00049430E1782F44E90F887E0486200C0624E3C5D447C4A3C20831C1E0C482022E011F5CE788B4040AC1177CF7CF602A11A03C7A1E6CBC67985715001A561FE2159D3\n" +":40D500005D2F46709027D87968003EADF732B2CA22547A9218FD02E2A5C7478488BD4A1A479021E86EE2EAEBE2A103D851A3DD9D45D397A385000589410420480C20DBF074\n" +":40D5400044204E5C8100D5C0840090E0383658169D40563D87E825677C790882018C727110087AA2403148099E49C3B66085802902A1902A9BB34827F329F10CD536604A91\n" +":40D580003DD8183141E00C71882B8E04049095520F151C10CFD07165EBD1112C0053F468EDFF01103BBEE4441A305EBB8420AB863F096DD86224007A9458BC81FC5855830A\n" +":40D5C000C8BAE22416DE1EA22204D50DBA9278435A6256A01337AF2E858E6BB63D547C5916425C7980A903301E0B3C4C0221E23DFF1C3DA04623D88576200C61D8F4399794\n" +":40D6000051E367429089057A708857850807D0E2C5E172F1108BA1107B088BB112DEC201E1CD13081E0A02021016F1C198E2F8900AE5043C7B263D0DC820C1C0C13949077D\n" +":40D64000D094674786A98723E04782E0442DBD11604007A3C88C0F4BC421680EA16F91ED9202FC6A8046800FCF290428ECFF4403436AE1610311F18E619688E43517953972\n" +":40D680000B2CF87CDD803C1628FB3618704DA46B1B9E464E2C13820378AB5C7B3A207B96A0B0A48047D4FD82728024F76BA38FADFA07151810DDB7587E2355234FD0FDA2F7\n" +":40D6C0007D90269DD5A03D02C31077D3068261176010E75C604C1004C03612752EB11E279F54EE17440010E04C0102B80231739E511986A027857A91BC03F0F441B21018F9\n" +":40D7000003D199C1C40463EC1CC2C7360388C6088484001A080494B83BDAE07C79C8235142128920891A3EC908CD2F6FA3018C1509090034E3ED4E410667000600B2EC813A\n" +":40D7400034BA61744FD207BE09840B2868084DA2130F2398F23B4DE8765D094D60C1304301E308BA369A43B0C60B1304B763C888C00C0F00A0CE0F84424803DF34A33B9F31\n" +":40D78000AEAA8420ED6D11184F9EA81A108B8A68988C0F745C088145CCDC1DC4E426B5C542068F0298F02B64D988E439DFA80126EA713DBF225D53682049DB3F99C2409A6B\n" +":40D7C0005C15AD111C2DF348929D7CF0268119DB116801E7EF23DA1307A87D48B80A0F2080E8278D521C9500CD621FCD08220193BE524312D40525B95CA0F3437100C7807D\n" +":40D800006C0FB2900405B007D257620EC71838A00EB083000CF0C13404FE3220354779788EF21780E319CA6D75A00C0E29BCBF1125885BC265100582D42E030EE2BC3069EA\n" +":40D8400001947669D15CC2289AA317427B91E8077707C981838815E70AA20A721B8806EE2C11F1F4C8F9E2B87A105C859C6225D964C2460EE1D21EA35A1E28584680A9C203\n" +":40D88000B2CA4213017715F8DC1A2D010805EAF19890C109A0780BB55038DDC422EE2BC5C093C48C149011C76EAEB51ED365312F882B0823CB1CCFB87DCFD5A1A240770FF7\n" +":40D8C000C2DC34AC7B8AF920153093451A3DC108468073D09D2877107A812F712FA43D2019B00A9394542679026984827754A2882C02DC6D05CF43A191C618F63840F4A438\n" +":40D9000070CD800C8C40080831977DBE7C473786680419E5AA435E218D680F139FB8B08C2D482D505AA1DB8246152443B83B12024F5A4615104C0D1D47602334291A009DC4\n" +":40D94000092376913C8883DC5808F64E00DB3840E10806D85607B98293EE192338333D0FA1010FB86A18A76804A6A01A328428760CF8F9B219137A9E26132A742009771655\n" +":40D98000E254F44C956365C0828D1490B06DA672AE9487AE804476188F13A0D52C4C0207D5BE22035D52218F70C69F716FA007A446202D4F818E84D0E7FC43E01241058E43\n" +":40D9C0000E4EA42C1E04078E3F4AA347B8B753024F7EEA2F11DB921C15142A745DC5C2F204D2C0D318152813DC4D64061E40A9408F13BF104F88309841DC59687835FCFBB3\n" +":40DA00008B30C0011502080D254014741FC1540206D2010B2F0AD41783918B2E704DBEE7FC4458EE2C4100D1F63238B2601CDD02E07CD1044C0A263DCB282028865980151A\n" +":40DA400054431074789D3DC58AB61D40A044068640A901424C624EEBE0B8CC40CEE2B11207C97F043C819308F729509C5E022E103844028EBA6A177191B5D1F92518000AD9\n" +":40DA800024C809C8CC07A91B0CB10100AB398FA2AD0FB8B092170720A90ED03D1703A4053158081C72E087D7F625DBF1C361D0B66000691004975ED30F0ABC2F653F8F7189\n" +":40DAC00027A65F1E80478DD0442DF27CA178EAB8415EA6182F1D4219F3DF3F22044291BB788097A4677D840953C46888B8207C9F2E57CFC04008DBA4FCD8E245F1E40245C5\n" +":40DB0000A3D35762050B766F0E8F871F307D0940711E814743E59981D9D8446D772581067DDBBA5D9186368F010ED2216180EDC071EAB0F1B478D2A03A513C012B7521DC90\n" +":40DB400054EC37DC5526012C03A040A6D026C7586CF5BF90CC22061A1DDC205D4B3E24C0C0590C00812603D8747B8A9041C026AA84F0E57EA278011DC546C01279DADD10BE\n" +":40DB8000091EE2A54C0A343BC2D07D1B6E59A4C2350EA4455610084AA1B1E0081197983E605A2DA68EBB813861805064D03D3ACEE88091F826100D03CB8976978859130238\n" +":40DBC00082DCD634C22EAF68484A500D41541A074757B3A679AA5CFA07201C4D02C501B21966FB1643B0841D5ECCA8949846CC4A6C44B804591A5E178640D6F5E81974605F\n" +":40DC000048F57B1BC049440A940BE04915186EBD0FC62C17A07005434441EAF62400927ACC44D180A03C1FE8E8CEA1070D72CFD96445D5CB4226F5FC99757B0A00487D339F\n" +":40DC4000113AE04F82BD82DC2174411A3DC54C3DA24C5E8BC6431C90130504109C185E40BFEAF5C31F557ABD09371020F2979758829F57AE11349000BE0F742C757BBA1DE5\n" +":40DC8000E220413F57AE26041852806697076C470F57AE111C3C96928172008BD0B78D8126050C416F3B3054770A3D63C024374B588F97D5C42300BC0F3E604759872A61D8\n" +":40DCC000F54588986308F2D7598E9F717D9F5996291E881C78A3D8F78651B01D7AB3487A986C40B2FBD666223CFA237880F0C7C54B8308020F1F01114B27847A9C58802EE6\n" +":40DD0000645680102355615D26170A874C3B88E5D82DA2301B23F1E01C8EC09707F1109BC1220593F05D35CE219FB1C4887D2CFA07BCBD17986157A0A5665820419C89E09C\n" +":40DD40000C9A2291321575F1D91720474888197C0AF720308EDD622644D22079CC0AE73188105302A4078D718BB2B84423E2C265EACDE1C4F6027757F68D92C0443648FC50\n" +":40DD8000A461203CB63480025085BC26C11024360B7B6E751EA63443A525C7B551C4D00FC020ED0C66E013F8EF0CBCE5EC21720009A01E9101017271F63894F65CC89601E1\n" +":40DDC00069A21D8E0458160905A81B5DE48C408FA502CC55204601A812204242EC3E2E43EC2DA0381060581A00865E0B06100CA0EF434238C8104BC2356201749A189546B8\n" +":40DE0000C76B7420207ACE88448402AE21CE254785DB4BB53B842AEBA501C5D5167D813BAF410410ED7602881EA7551EC49B13250F42EC0B02504DD1ED24C9003FF5D0F947\n" +":40DE40001005F07DEAD4C2080562540F03BA699C79E40885C3C07BE1781100C2EC3E204182811062279A00C0FE0217E070F672CC710C1DBBBE5CB80082E2D33F68428641CE\n" +":40DE8000A3D2DF038E4041D2219D2770B013638C1098EAC99210A11C73840A753182A04109261BF0040C071906FBD4F91D0240B07F9FC3C1C967501EC05BCE47A69C07B3AC\n" +":40DEC0000F879A5297919B47B49944BB04FA9E54E8E87A045C6940D1F0A421480B87F210FFECF822EA9C22213B65A90A3E039020031E56B2064790F4951BBBE4244C30B3F7\n" +":40DF0000D17E23480BB6E74A9090FCA03D8993B90FC9880A00D1E78E91607543CABEE47318FB6B3C9836D9100CD1B1B88246061CE0353BFF5889E0180E37815EFBC392787A\n" +":40DF400027E87A11037A7848C01274072E0043BFD08CC23C9D9320F47300812088400877174A10E209045D2F2289E9D353831861F710B81104F0018610E87A153139974C93\n" +":40DF8000A3A22502A300F40E13A13E795916A03CD21D9834880E4F051DFBEC4C04E03862161C060155E255020B0C0F48D38F1C0A1E645C46094A0503EC0A269961D371C2CF\n" +":40DFC0006B800291360801067F4B1B094BE9C92331FA0F244ABB9C20D52ACB820CA30000A287B9338B3B144A8ECBF51104D62A3B3311E53ECCC12ECCC53ECCC3689B533158\n" +":40E00000D151A063006301F5E54AC1E6E50241980309B7D1FB470A040F58D88B43D8F81305E48083D87189760EB91702116A05759AF8C18059E4F432F3754174FDF8C38064\n" +":40E0400017E39ED18301B7C6AF43C44C47ADC8CBAB58440B3603F2E0082D40C2D40DEAAAB28B001871A78252A3C429078DFD0F4E0089BFCFC3C895EB759502AEB75631D9F2\n" +":40E08000207BBDBD8FA6FF87ADD5C4F840734F1DC21C9CC202FC261823872DD73187C90B87DC9D22680DB7C01F448B90D924432944AE1E160B00C4060342CF2C9D110C1681\n" +":40E0C00067B41F8EEDD0F638A216E543B579E7AC3F4430E8BF51ED0204880E049936E0116C88B750EAC2658F02F494309C68780ED479C691F84EDC7AC740706C40A9E45EA7\n" +":40E10000F1008D114C79EBF4B1EE21B13CC8204BBA83C7B715083F0050EE9D013E49204C6B04CB81A0D2132C5F068873A0A210389E4099090D712B1470F53F9084A0B0202B\n" +":40E14000678F47A165D94C838CF478E1B196402F80F344E634844048AF01C40048B0E8DDC1088A107063074BD013AA250BC9E9A564A0EA52022EC04048B1ECCD61230B03C7\n" +":40E1800000681D3B8CE04C004ABC8043F44E40F8ED7C7B29546B3400D90078B88862C0B34894408035829970C4091692900602399C1815102811253B29078B8A07D20444C4\n" +":40E1C00066F52A08982061D5EA2D112A7AE53C40EE360426481C31059DB2723D72B65DC0B623702BD5E625D5B6A3D118A40515574F17535C08303802208161D6A9C3DAE344\n" +":40E2000083D570421974D8619388831A00010301847CE09C620220A7966211CDF433011EF05231133850767D2101CE4930EDC0B2131E1D5080A0398E8858031102404E6D4F\n" +":40E24000A48769001E5EB0DD9F1D4A202200161B5B50AFFB09EC61802A4FD803625E9AC5F79B4F4BB372C4CBF2800098E5A98A049A40A8C1D5BDC400821DF26A5E590B1A74\n" +":40E28000FC064E9F2515959443D24C42021A259789630874CC4932D4062540687558600856E3D28601952161C1CC2D98028B29F4B9C0291A2506746A1D2E245E24CD3600A8\n" +":40E2C000A14815103AD720B8A0735780858F90BD9C494F2523A03A8917E4C302F01C31F94084801198792887F0B867363BFC7CBAD1F84E6EB4622E41A643D09DC42A040FDF\n" +":40E3000000C631E42EEAB752EF36610487A2887A13A244A3E146C2210FC671E0050F5DF51223F885D660C6060FE77744751743ED8FA17644B2354B23DCB2060F0E2C605706\n" +":40E340002309641BDFBC146A0B22E070E799C81D21679E60941EA86206B8E04F825E61C240E801BC332C5D71CE88D6AA7917FE265D1EAA181C6AE233F5C732233264F06555\n" +":40E38000D08E65987E62D55E113C1A761C11754EF8E891C49E04FAE3B1A2D417C4D240485552643CA10E1E265A1EB8EB3348552692000432C8203485326B90DA9428F51690\n" +":40E3C000E88EA7B212803584C2D437EB8E74C0E343ADE1C4B5157B8F3249CC17F1D70AA87943F44383C064EBD8E22781E34C4506FB259249F1A09FEC7F91E4E8A23196A008\n" +":40E400009F2FCDAECF2F1F4275096A2C13E03E7FF193A4E86A4E8A64E82F72F876F360E3028088B5048F011306A864E908A64F09DDFD625D716044F09A909869062BC43B2D\n" +":40E4400020E4F44789924F0ABD70FE8659697451E098C4F8E18920D8EA9F21EFA0418B2E9E4B10407A1B8B51E33D4840627CF1407F1FC0CEB8A647BD26467E31FB46B244A7\n" +":40E48000F01E3D05DDFD40439A144028285F801DA9F4219D291170D00589801CD104BD6FF831602C75CB99001DD78A3C3CB87D3040880218D6E25D53A4975AB121D7078578\n" +":40E4C000E468233519D0D417427E175C212D96F077E7080E76756A195D0489EFC62544140844DE257467AF800DC7ADBA44C12AC7E2CF15B00296EB1A7C00799C0AF93E1020\n" +":40E500007B1AC0EAE40EE2600405CEEF3FD789DC9740458E8048ABC00D73AFAFEACBB8778490F022A9DD2F2079352A0A9E2F66A298885F5AE0EF460354E2EFAFE43BEBF116\n" +":40E54000538A4E6352B972C24A778C018A090AA538016E6332FBCAA849E40D324009F389E08080A15850E11B00DA86171F371F33730F5897091E4BF47D30FB2EE6AE4A0293\n" +":40E58000DC04F035189DE49025CCF94410C1005E1B6D105424EFB131EA9D411107132B3D307B7EF078C5A97550508871822027165DB2FA409F7D8B231C40933040D1A25C67\n" +":40E5C0000C7DF62E9D7B0F8DC80B47C830E46B167D7492240F1365107822F1E378D8B0347883DF62625B0A84CF7D89096C2A933E061212D8562644383115C99B0581405BD2\n" +":40E60000572808B0622C932230E44016C2D2013D2E1008718500EFBEC34441CBEC12111BA4E3AD3DC86107C2713BCE27E877EEB177A8216386020CBE1FCFCBEF43BEC20498\n" +":40E64000985425DA82A9251410A8429F445CE3A283EB91A1EFB064BBEC152EFB0443BCBACBBEC0CA107BEC0901E3BEC0511E39C1F0909E99514C9D0B1430250884161006CD\n" +":40E6800009466EA03A8343A875D884627D0EA2D0EBE07A41CDAB2EC2EF1057BEBD880B2A4204312A077D4D0801DB906201E4011743910F92828FA807D0E81471E9F931E4FB\n" +":40E6C0000743D998E2039300A75FD69E3F40ECB6C1D5640F63999F0DCA26030043BE104BA7EE4BD9C563E42031F1CA89CD433213670811D408C8B1D95CC2414CA24B18241B\n" +":40E70000175FEA8907341CCAA81DE1DF6163D22DE3A1D22F66CE8F66A00DC303DC78E2789626B086057879907315047E0B3932E896C02A07501C3B42980C0F0100A109E129\n" +":40E74000D791CB5712DBBBE107CB7EC3EC9DF10385A8E1028B601FC5D4622742977CD1980E8010028EB0E1E212E20342E0B080EFB8C4EEA8060081790283AA3E080918A1DA\n" +":40E7800003231CB301C44A891E9BAE1604E0878B838F153643B73310E74F220B82F53A238165DF5C42067773591B1E7DC61A2400BF7D9E081C7192041F6E4508026A04BD16\n" +":40E7C000410660076C4911A40FF523D977DCD991A5EA25D0C65DA06120840E8D791237C1BCC2221761F1C1DF0823D7CB247A9C06A831D8CEA2358044F9E0175C1C5A3AC24C\n" +":40E8000002BCFF448750E31E1C60EFB084009CB5447BE190CD847BFE28C04EFB0A7023371430EF0DC3427875101200D169CAD4CAD880060A3D409A3DF7A440255D97650302\n" +":40E8400009A24AF7DE89019D5BD22C12BDF79E4039C7DDB8A67A0084AB61024209629081420F8C71458C98D2EFBD04D86FB8BE50680D48FB038A2AA70364FCEFBCF6806362\n" +":40E8800070FF3AEE09000CF90B3A248103282C449840D9420415F5B2E9714DF110EA9C6E9C037FBEA4C4CD0901400C8C2D0A00861442150EEE711602250AB5020CA0094163\n" +":40E8C00070400F03CDB24C821F40228CA000CE99A111893EE8AC4C191C8F81CCB840B23DBAD4C874D05225E383004C8809C541CC5AE644620AF9A5BC4681D4681CC3A1CFE2\n" +":40E90000C779027802BE3C932E2D74205FB5AD444BEA2A41EA74D108FC69E620281FE62A5120C722080AE8DD31E918E9148E6E8FF81C22200709A0810613D05022688891B3\n" +":40E9400043A84214E0E102F82062E5F01C427BC4E012ECCD91E9C8F13080C2CCA0C60A057907231000CF440032C7D38A384FE0818040C2F2B5919D9C5BA4BBB850B9BFC025\n" +":40E9800080DD2AC4593E85C8984C0B1C0C802CA2B2B10FC077B499849A8521F40E04EEA11EA04A2EC72C236982602DF038C8D9C40BA057401E3C4960404A2E220F73C0962C\n" +":40E9C00067E8827CE08A4A00743C08C840743E08C44280E0F193A11305D1BFE322E13D80E278232601B2F404E42EE47480FD659240415D75A176A91082E098843BB1D11E1E\n" +":40EA000085D11E457E887B3254402E210E5DACFE41063E9221A4843A8113988804F043DF5287EABAB19F8A1CAE490077C06BA3D5F1644F0440B903D89C831E40F2874AF5D9\n" +":40EA40009B00A23A248260232FC448E300940230741008F42A420E82D1E8758120E34A09D83BD4ECEA2A02CEB92050AE0B3BEFC11363B78E0F87CD977DF522470CA1E8FCEC\n" +":40EA8000991C382210319400EE13F4BFBCE09C810B8E1A0DCC100501560219D83B7DBC4E902856852B7E1DD6817F3818B0E05B147D028841677DF53048A7D967446B89E43E\n" +":40EAC000C8B24F81762D0EC7D810EAFE92D1D3972214110B8BF008024F8124C86E5E8C3A0A21F28E58F7DB297978E45800C414354D03DF7D043D858330FDDF7CC969790B27\n" +":40EB000023407BF1F08DF240823B80DC2C401677E19977DF5081263429B010A945043016E06763971131D85C2384140B733FD84842355C84245012635439802A37FB094CDC\n" +":40EB400016101C8918890ECB8B1C56620F68FC441603306D00C1E93D5322C0C39821183BECB4BC906A3EC99D1C0F63D63D43E44762038C6050E0D14E977D8C913A1B56F91B\n" +":40EB8000E20801F814432580436471B2882C4E86F76D14618CCA01BC58E1CF02842CEB96248160B103540D3580927812057BEEB078D4508C64B880DF5EC4960DA0CC5D11B2\n" +":40EBC0008E8405C32187A84FCC098801C165C98830C01C254FC5D73E6801C054DC4C0744F0264F77DDB201501A7D44943975AE98F52C6893C0A13C189AE6EC699BCA018AC8\n" +":40EC0000FAEE78980C9005630CC6500CBBEF38B01181300053D2340D2841EFBB2105455F50ABA00513550800BF7D328D4480166B29197DF768902E5202EA00AB13491E790B\n" +":40EC4000581E7D94557A20580841795224B3B4440D09400253A921E4F2093CF5E82455202BC403BEEDCC8A48C0481A215243188B6EFBB6422CBA25F482E70008B605F49C0B\n" +":40EC800084CB20683512611200C7813A46711344AAED1611EFBBD3E944B90542C182AB90ACF063AC4B047712083F43858985ED98012602EB91C0E9063C560047B0A86893A8\n" +":40ECC000795D424113210619D03449930800840E951D1208B2080C1F0220484FDF77EA9A04B0E395D67D70D25916E274F7DD298146812438E57B2312991CB845BC21DE6021\n" +":40ED0000263F6B628C63440280FFC894CFB0BDCC061669524069FC89AA3D78A10047E3D9029801F3B91098005D65096BDCBB420309A16420C88CB60B38CF4A838761DE970C\n" +":40ED40002834117876048D5178D7178C129CE800CD61B2F000020D2958025DF9324548157FCC635A03A4D1197BEE61435864F2FDB91A02AF958007BEE6881105C623D96BE2\n" +":40ED8000A3BDCBCF08A2101A0878F934445C4987ECFFF13A40BE44F45DF736B816040D53A20D812510423028F478B9853D1E206109A2259322EF82C991EAD3C1CDC71EE675\n" +":40EDC0007C2EFBA263BC52E40808A8C24048B49823D0AAE893BC914880427C00EFBA133A3AC8847A91488E41C0162E00AE38FC5DE64844E8418708494EFB6C2ED3D1301B18\n" +":40EE0000BEDB889FF27C48DA2C815EFBA040495105BBEEEC5CC1554028AEB1B13010297116E1602048201C50062C2046EBC22C115E7ADF31C5C6B0C1B3C086C0605A7F42BF\n" +":40EE4000F00EC4FB68C6701520210529E0161B740846762203E50D080E7C23AA7618208423F1109330708004701D1751F110841623A3CC2108B047A8FB8BBEB1100540E0D3\n" +":40EE800087CA2EE34780BB013A46AC4E3E9B631A3A3E1B852C54037268053C93F44090488B09F43E641302BDE63220913E13F7DE8242921ECABF1F502C09C1E90CA2A8209C\n" +":40EEC000D2662004995105DA91C4C014688DE049DD717200AF7DE9220495550487276D2F548889043D76327884041CBC486F351D100821CC8405017D9A20312402DBE0610B\n" +":40EF00004B0C8468B886A1809FECD3312DC0005BBEF607D69DE62300261F62DD89443C0E1D899C37A5077DED1846A5082C749A993883CA40185A167444B26C1EC1677CB381\n" +":40EF40002B977840718410840E20788410841DF2CA659791474FD61FC392FC2118066881F848C0200548C05FBE524816851235127BBE5253BE30095006E54234433267CF5D\n" +":40EF8000D0424C8134500D00CB4C8A20077CA09301842813E916FC6D1D1008DF0B143BEC18821300D20A8D8E671E414E5140887D2DF820973C541EC2963EA7E71044781D03\n" +":40EFC000328BC8D308CB3EF9DD32CD50B30A8B3030D800CAAE333C9F66B6882BDF9382019D60A66B217820E444E34332A47397844F2C047CD64220814E85F63E346E20E9DA\n" +":40F000003FE7F1E104BA54D0C1226048346080092C4562C417E55CA5EA0F02C33E367101642CF648F27D7F607DF2C8904FDF2E89F7DED18480823E30EA2EA50C2BCA03B43F\n" +":40F04000FFCBA2EB4402E3C942219E0044197553A0F63FE9F64E124049141620398106B9D3D2344811E0001BE4FF41C65004784034813D944C2018F3D4D187D66823832869\n" +":40F080000F82044026820268443FCEC8E08B32052108B2E918423AB09C0E6B110A208788D4866101A029034F7240431B7BE4DC7D90465D4F8C585AC24C240C2905802000DC\n" +":40F0C0001F43090B35A44CFB3DC4841268403FCD6791D48842658F09408F295832E82C407006598E23C8E42CA0BF402DDDBBA20B82C456912045BEAECC2344B922420058B7\n" +":40F100004E087C41FE239EE1A120488A03921E1C44102010D52F0E06A83D899EEDCC133B05B8780C7C4CD274E1278C2274A21E4E21F8A21F4311FEE8983F40D37C9530FC49\n" +":40F14000BF4A570B80CC6F1C6030FC6A01667902710F4611E0350262386061755FB8B1E2C9991421049002B2CB66FBF09A9203CB5C09A0D777130B8CE103F1C44EB19B48A0\n" +":40F180002448F2715A30449D2070E17C01FC16E4EC82388B4389758A400F007AF3F00504EEF6081E3E942088A84F4980C2F3CDC08263F985E22A81324210BC33EA94710D9B\n" +":40F1C00040E1D831088C2090CC084C200CCCEEA1011B2503C23D6850020C9284920584C087095811651E916842423742B85460073A4201A0163DD1501883A40141E433CF23\n" +":40F20000B41244F12CF8DD9087E80066CE06600E8F12B7BD2DC87830A4814A41A14DA088791CF55685D24C23DE4265ECE001B14C61A00EC23E38401081AEA541AEC02D1C5B\n" +":40F2400089C9E35142C7AB2D1101C830B3D8B20A3016773D32A19817D4A6E2271602C1C20868F4C498F0F6E8834094C20469C40803627F770988A258130068120BA068795D\n" +":40F28000B12061001504501590031CBE8B661EDFD811541B1A4B0063AED09107C0614F43DA27CA1EC5F1100080EF158118D020806027B96ACCF634048F226D083068095E55\n" +":40F2C00044E51EEE1B135C49EEE80203CD2A0C1DDC2088A8882629F75D608AC1C02FD53CF248853DED1E607965204B43845E451B1EEE08103C9E8A101476E93B0100092064\n" +":40F300008C590FC40E66462C58900DA12FD352E53B800E0404E2A8286081167E1368641D46BEBC7110201B15BBB82845747DAE70407019DDEE2240810354794A003CE9C373\n" +":40F3400092A12014202CA7540622CF770B100A05A04122F5A012A4221945240477CE9081C01301B2610F825CC814F228D88300F87850762E9883E11418683B08D405C612EE\n" +":40F38000688AE9E4512A819C0CE170A00127A90C2A697A845B4018F651008283C198098A5E813A1EA293219801C16A668797168B0B581E7DC3C822E1600C777C321DD178A7\n" +":40F3C0004C6E3283B8F50B0C7AA9408D4BC9800902341E435CE21277EED11681302BDD0C43B1054F1C1F10301316E691E64F7254F4CF494E8381F8306800362EF73D4082AF\n" +":40F40000C43D5300BC88582078E88883004C13264A6E99609D41448BDDCF7C22FA20D93250030099651422B290C0A2C9557C3EB4BD222017AB52D27F8C680C2580B0098BFB\n" +":40F44000A5B7519C18300B7774B0FAD32C40A33FBB4284624677008019044162DC40020BF88118D106CA0E9BB81292082C3024183A351264C776C609FC630803A970098A53\n" +":40F4800085B5FC823AF733E1E8EA84C4096C0E363E80B8411E86CD1D788071A91A075EA978A3044204C692DBC1D0C78BB00B601C151ABD2E1023096CC0221816FD70A25911\n" +":40F4C00067E20E8D6480300C86058038098C65B0003A0D5E0821105A183BEAA840904C5F2D8002B020D20E15C9A0098C5DCB14213E8B8CC994003EEC931265104C60EEE242\n" +":40F5000013D2050B05910CA2591002C670B0885DDC1257CD400239F4E918D2A50C148657E9A52148D2A3C952773B39F0BD35CE349C69595292A832A56F2D0CADC15326B709\n" +":40F5400049C3BB3F05819111CD9804CAB8C1FBC21382CE90DC5832E9188CCEC5DA433B5C37114A910F92A3E34B0BA5B20B5A6434887553235AA8D293E8A70160825F7ED8D2\n" +":40F58000677044B4AD421997A94A59BD02C776B39B856A08146380239F91A9CACE6349D02DD21A1FAAB4511CC2F08D9AC9430DAC313881A0295282E99B9160803029C958B2\n" +":40F5C000D8EC7442A776E49D25400352104601E1420341A180F0C84960302C7B032D6A548CE8CA1490186801A4658DF42922DE3FC91ECFC0162ACC019ECE65209A1C47620C\n" +":40F60000E87332476368F0057A32D44C11C422F4F9A0847D3898261F4957092DC627E4191C9085125520687306C770EF36D846B01BA75247931F08C7183A981162BB8423B2\n" +":40F64000305121C42ED6061148D2070623AA8E010E278262D773770813D21CA22E5BB86A3C0C02442DF4816183FE83421BAAC328A870A3C61CA11064640791A48084C05465\n" +":40F680007898D1467DF770C89EE40104389507897DE2042260983FCCAB968BBB788C1B40065DDE23E46D63090ACCD011EA05E223746584098AF7488F053711E454044602CA\n" +":40F6C0000441BC040B40800A3C48614A7F1BEB630D44033E82602E99142C0488E0018EC8C91028FBBC3C0220540320FBF57C821EE83733F4A818C1B2AF40162789E73D15DB\n" +":40F70000AE0481EEE081002E442F6C7F195D78110E00DD688E23E101BBB81C810BB35302510040202BC15232CF4E6D8D3A12E08BA7205C9DFE712C301A8190201A00209420\n" +":40F74000D646B18C08112038826818C401405E8903D15C748584F0C03D0C43D0A23D09D8834734CC4780EC72043A526C8030A4F601F3BEC80E2ABD3D14200F82D0CAFC40DC\n" +":40F78000344BAD03290FE39E639181E319F7E1B0412DA24BC56F8314A8146DD3B02D8A0F224918D6098B05B001E518E105BBA05C8200CF8F608D6B00410824BA4108262B9A\n" +":40F7C00016DDDA2258F700D4042A600401B832F6D3295EE0209F77689588840D1C46302C3B09023046C3800784A7804648E39B1137B59DC7B7A28721CC420ED7C020104DF1\n" +":40F8000009A307AD3D844F0BDC48E5213E50012F49788847DFAE8440FAE1A8758F28671D884BEC9779087CD95A42104FABE243BCB58646052638B102052BE94BC11562006B\n" +":40F840008FC1117B71980263C82C0989F43C0660FBAFF584A004F924CCF8A3846140E0B5E10181894C29580081313BBB951D141640A37C81EC4071A9C0930F7729B4282EAE\n" +":40F880008126DE96190018E90AF39011C418015981C73007B534CBAFB78792BB0825DE9C42559A22E7AC225060A5E95AA2D00496C12A4680B1E5B071EF4D6440F21A6106C4\n" +":40F8C00046D0CBDB7345D646E4C1A409698044D6140E80D35624393BA25C061D4282209902C418821A37F100CE5F379A0F5BCB88418154791B4881A2083C31F1B8913D7C48\n" +":40F900008EB63DF4EA25C01C0784533860AB01C3D1CC8278306CB11A0319F43C0A94C02D8626590209CD84041DA408098AAC0632E0E14021F04D211E3E174719AC08B354FA\n" +":40F9400038C7025D8BA63DE99C5CB718582A4E0E4988401F7A67A274D2A1E45EA36F30F0B3E0971E6C153EAB401383A21F4C8600113800421B317CBC0E3420676FD111BD1E\n" +":40F98000E6D151183DB470412F7A6F901E8CCA412F7A7021370C391C1E15A31EF4E11F048B0FABD54BDB32060D04BCD5046C5A0698323D0C04D841E45FF22441235817958F\n" +":40F9C00088804377A6D990DE183E1EF4E040052C42BED79A1C94C10D11C6A45AA97963C0DE63DFAD49E8DF0B0261779E80F97E60C241A1111CD0C6E020223B0E40FB5FB0C3\n" +":40FA0000D8299909070F2CA1156D079C1B0BDA8F461D6B2EC7A8DC4746B022980429970157577D905FD55D630822A8180D028307616A971F41903A1448A48120300651554E\n" +":40FA4000D8A0E3DB25839A8222323E40771EC7861EAEFA22DBABBE4BB79A08802D7CE7BA3E9EB713E3179267B130813AA8C01CC8AC8B413100EF1502093BCBCA041111CC43\n" +":40FA80001CC8A1F3B578FAA284741DC5D5E006C38F4F6D8F5780A07476850101A650285035DC2563508251EB008A103ABC0152B0D1E90A110EC0D0383E0AF5E223E64272BC\n" +":40FAC000EAEF844DC344DD542A747EC43B895D41384108141A7504A173F821CBA11C3E41D5DA27DD8682C7AB97486D050D4347ABB20AD2F054FA7E88414CD2623749043A75\n" +":40FB0000B3DC4CCCD255A9301001117215172648CE1FF6F8D11C3D963A4200F25DE9CDC4D420501E4DAEBD5F107C80F1EB29103D2F0E6397666E082BD1CDA24C41082E8870\n" +":40FB400067E9EFE201BDA4FA2750E68668C2DD53B03D5C423DA80E23104070754DA0881D5364220F57629772018F54D99081D521422150F12A51EB3A236287174E898D4CDE\n" +":40FB8000815943141841A20841087B66C24BA0A8BA327ADC40B8D7C1785480BD73A422C9E64D4F85E9AD529F5A9A23C7EF053C19EC8001E48272053AD954A287183A1D6156\n" +":40FBC0000A5E4F8E1CD8247ABA556E67724788DD42C48446CA603013455040788CDA0CC23A3BA60040B28AB1C2A3C877F19FA0860086B480492B69885680B5A1B1113F512F\n" +":40FC0000925E49EE13B0BA30FC2ACE4157729BA396A84680EA5875EB22046DC6490142F23DAB9223802222103DC6604648024F0222A90E878A0F53CE491F11A98F985C556E\n" +":40FC4000F50259809D4F4E5DD9F0601E70898B7D5F8A83046840863B243AB8BCBAD1CC738606FA60247AB8D8FAB680CFE4BBD64101411EAD9F40E620CD013BC4770220F24D\n" +":40FC800077D2CE18286100BAB694EA78FAB688C4A1E90EADA922E80E2E41EEADA543AB68D0049466A498F55031F56D10E3D71C12406E857D712C8812495998982A0D10EC59\n" +":40FCC0007522C0B1FACC27A3C9135839EAD7730E4900B49600BAB68D1017965121D32EF3D930041A43262F7AA5E1034020EADA0541F55F1A588B5D86503E2A793006AB0791\n" +":40FD0000AC6390ED3AD109C13BB50CF4212E5F1103C742C53389A05D1DE790F986303C734C2111108103E93F91D49A8843CA324BAE6D842E3442034820E5CFE5D25AC4288D\n" +":40FD4000FA28DA451260420180A42084E4EAFB653ABF496D1DB166F7165D320CEEBB84289398A504044764081D1E51E449131B2021771E0084FB3BB084F72F084E2E33D5CF\n" +":40FD8000B385A3E44851283CC87489DA880C62035D6B6025805E6882C919A6882A549410418A523C63B4458940688290A23627C939445E60A0449108BB5BE858268302C06F\n" +":40FDC0002C26831EB34422E48E64B00B40BE74984057AA21D1025103C6AB8C03855888F215981D688885D4C5D688C85D443E1EE621D3A61B4CDD344DEEBE7D2F077CA18D33\n" +":40FE0000D4BADFFD4E49E4657056E1D7B50F24683C330D03374B883817C025340CC358CCEBDA733314C0E37814D0159300618C12941DD7CC5D0A8E40A0408F5ED418C69009\n" +":40FE400048FD981A31498DAC32A04F00FD7A30880FD2018760922CFAF69C7D19866CF0A451780345AF4FA211AA5693BDA50024EF5ED33A3BA974B160B00797C15940B25F02\n" +":40FE80008888399FBB030F69CC89D0C9014CB9010BA01399281CE2812031076380E0A0056968498B7F03038890ADAFFE1C24A04F0505D75E5F8F832F040AF4F8D0F7215095\n" +":40FEC000E0AD02E050B91807A0B8B6E9E8D1EBE7343B5D28438F35040811DC0FC87B7AB098230B61200AEBD9C68530AF405C901C15A1D04CC2C0102FD830470EBBCB115C0F\n" +":40FF000000278DDC0123E3B4D11B7AF0F58D0880985D787E3998A2E6049C3A5901197AF1044652E1002822BE401A18D4C0B36AB10F9EA88B00D80C0A857DB224813D6134C8\n" +":40FF40000D016FAF04191850F55278F465A8809D7822988880AAA21685089690FA8EA83F1F294D8812688A1A3F1314148F54F846D879F0C083A04002420E07C03BE007D1EF\n" +":40FF8000F072C0811DC93E2200311220C0140098982C843D047B14247428E2098DBA3FF2111036347FC20193680287A002209AE20E8FFD0EC27D113DB26C653403E18479F2\n" +":40FFC000E4E564CF879544E7342D6C0169300D9323E6897C4232645E2643D1E062EBBC3481429C07D93C8881340332C03AE6B12614857E38D25BC07D3268FABB984D30BC9F\n" +":020000040802F0\n" +":40000000D20C2F090267958B493200967E939E12CB06A093A87842F060800124910080EE839B1E97333F094DA3D7780212F2581438DD3175F201798BD8C7CB870424EBE35D\n" +":4000400085361CC4BCAC345B30F0F61562170C221C069D785CBF5E1427721168FA8BDAAC24E022782CE91D1F72BD782C5A6363E032B228F19799D9B687AF9E8C270C39AA47\n" +":400080003156F21E197812589003B92C7206B12BDD4AE813C2A766930823CD744700A19740468AF8B59D237FE877CE209BA00781A8D008FAE7B132F490F22D68B3E18AF109\n" +":4000C000215BC0F22EBD93985E58F32EAE63202496B10976A829C39114993C17FA57D8D8CCDB2EEBA81103A6284417F31B3A33827D4C8040B9D4138004B0608846255A9860\n" +":40010000B42F843810569880ACA0EE4D8292A9CC69CBDAF3A5A83D30AA702C1EA20893C08F96E20E71466F789604A701005CE6D002CB25F660419CB27BAFA1C6A3D0EBE9C0\n" +":40014000F1D96288D809C4347A5AF8821A7E9CA4896138B9113B77ACAA783CFF4E2107AB1F8807390BA63CCCA04397A12E119108DA5D205B8C05B8435B015E200F80D7985B\n" +":40018000803E04584C0B7014B711B00F98C3644500A06AECB58D70A4970A8271001A2507A0BF8F4A89866860481B1B8697AC44034429F39831B1D79D6813E05F67150DC3A8\n" +":4001C000E0297A3DCA7AF3A873588875F008C4F47730845D796C43C1B790442741028049E0BEE1F51AE883DD79A088063DA1716868EFC872C8921B660025E42821F044D0C3\n" +":40020000B1807409F0B3342880FF4E2E0ECCCE3B384084825EC1685D9336589F001A09024F2A85A062857D31448D9B0BAED48B0FA0F0030C0C4DBC4D0EBB5A2D9DF86CD400\n" +":4002400036841CD6E10383CA5C1DB5D42371D6028120704E0071EF62E85A64412B8C11D90F8BA9DAD70F403467043A9DA9BE75708B0582B71D60160E851B9EC00225FA9D5F\n" +":40028000508D0397A9DA481B0F0B53010C3CE060753B388188000D81046C1665EA4CA3AE00EA6F911024E5832098120B4103BCA98418340D6F1DA90F53B1BCB1AB2B26B0B8\n" +":4002C000BE81A64202468195B0F09753B2ADB0F29753B38F528B8B0622BF53B29573010C719CE4000BEBC111F0DF38845B0F71753AA225DA50E5D4EA4248840070ED58A193\n" +":40030000ADD61C1C6176D016DD4EA6901C3145221DB89689168B168F0045A022C42203D00924B420191CA4223A9920B581622D0DE1A31EC5521EA7504315108A10E8F53A8E\n" +":4003400081441026A40420C047B7B4C5805826EA746202D3D81C47D07E83E1DBF2097DA633209E702185DD4E843AD631C24E07DE41C882A0E8D8500883A985D4E927EA0A52\n" +":4003800091640D1FA46838F3C17963D0C4061581A33461F53A422C352913023044E51EA747418EA7451EA743203C4F254C2EA7E12EA69C1EA7451F667F0880E01228F75E61\n" +":4003C000D8851D41508F58C7884DC8B9E4F00E4D41AB60E621949935069BA922F7B835068ED1AC921361D928911993F16DC9047D4AF280006A0C70A350265D193EA579220E\n" +":40040000E0C808FA96310030BB32065278D4170B61006526A0C0B299085B2C06008BC195125C9970C18F782ABCBBB12CA84016DEAF681C6B9001DDBC00604BD4EFA7D4F021\n" +":40044000E2C4103028A1E2A8212D3BFC84AF1E1E86BB301C0BEA71840801CBC67A220519202986071FA5011E3C8B791AC636103D5CF03D4EEC26C2062753BF224262D61290\n" +":40048000A081113A9DFD101112D11990C25FD248028850804F34031D64A0C1A0277862584C43402FEFC532F292A09086805CD087D5BBA3D4F0425818813F53B5A3D3A7C3F1\n" +":4004C000A83518521F90EF9CE160663FBC7034220753BC21D62E043303C12753C823103E17AC2363A9AC0BB8808423F0BF61D1A1F24B49ECD64389D028F80E24D1C362C232\n" +":40050000C55805D68D207A9DD48C034016D12391B23D04C078486B67CE89814A88F0093A9D816EADDC2EA7624BA9D79214BA6B10B0D90F29781EA658200051EC1DE2C3A891\n" +":4005400022979A760824E42345712087951C22158F898AEA0EDB5712045AEB2541212A487A9E6898D8B34AA50C5947664C10C10EA89710C084F4F8F90E0405B00BA9E0CAAE\n" +":40058000A7C0B6113A9E153D6840DCF0211F53C4956A956617586E975C36904A6100225F6FEC0E4CF085E4ADA04B64CB2DA300BA9E0D4F4E2A0B8829DC59647B023E69CA48\n" +":4005C0002C9CB224020E99EA1B8CC881B840BDD1D8226F53B48C84405388FF324D618B524826002F8BCCADA23CBABCADA616E3263CBAC4354424074F080934780343017471\n" +":4006000005753BC2040174990126123CBF6009552017906824D1CAD881A0C82095C3957E10F206D002EBFFE1F4C6B8F36FC1F04840EB4A47B9BAA4B3F239A19A021D122D49\n" +":40064000F4B6444F232B965320DCAE65C1D8021B5ED1601EA75B1D8DB4BA9DA46A5C5DBBDC8C7D758457DC09756CA2EA76852E3930480430A9687A9E00C0AF4FBB1803B158\n" +":40068000DF97595096CA9240490D292F230F8819B1EF8D8B846527C9FEA732200757D6664972010136FF327C202E32FC0799ED0F825746425ADD81CD13190188CAC3CB3A61\n" +":4006C000EE2985309958726A10B3019AD79C1FE77B362C1EAA801144A768C4EA74D7900018DE608F53A6243EE97C92008990AF3FE8FC2EF638CD8079F44D38EB7D07804C80\n" +":4007000017893B4A100EF3F0A0083A438CBB3EF0471EDC6211C7D01FA3204420520084509BC554E3CA560C6BE9EB420242409841000F5F36A7186415F38B3137C043546622\n" +":4007400035866294E005BAF3B10EB1AD508F0090F0509885DD503E208F58D889228C84C890058843F19940F6E0F8FA0FE47AC6C4C24F1F382200B6060E576E875D7E883262\n" +":40078000680A714304001380BC1321D63664C09C909C800FAC6CD6030428E1018AEEB1B4400D4CD0113AC6CD901BD5FF0671029DBA982009C369503A483EB1B311DE821DA4\n" +":4007C0000220551020E320491EBDC410089110CB100CB1108D10D7CC74C5D93F22209A219F958BC4412C710289E26FF9C5510978775E08817E30D44FCD3F64207A501CBC4A\n" +":40080000E7A24790793F86082035424E4CAA3CE7304011D0B5038D109EE478028BA053DD404205909DCE302181E00BF7FBE9819A2D1110BDD60020E1360A034514188200CA\n" +":40084000D12490308BB5A181E02F2E088D6EF89C8400084A81C049AA4079F9306243CDAA681FFD5B649F65C008244B017D25B02059E0020137BA080202857D6178444751A4\n" +":40088000C221B8DF161B20B9810EA78649B144A847C6F0440EF5FE01DCA02800030000FC00000000420607DC3800000370001FBF65D648086A09981A74B4D2186D202F46B4\n" +":4008C0005062BFB838A58537688636074436034ADA4EBE4F64FC797DB6CB25AEC148AE1D6768235B4A620060040100F3545BBA00102FBFB2E4030041100C020480300F9589\n" +":4009000040C811B8144DCA80016A248B6DB4B007A5E6080F00FA83F87B62F640105B0AC002E02007D0F3C2098060201C010080480202008C6C996F2FBF7EFDFBF7EFDFBF82\n" +":400940007EFDFBF620601974D400E06010060160601B868E4110339B200D6245D64167F002004F32D54812040140581DD20A1209EF1CA20A8200B0220B8240C6B04A76070B\n" +":40098000F797DFBF7EC400003618E5F27130B09001E026C0C2D2000006000008000100020300015400000000FFFFA00038000001EC0024A027A019A3BD9B65A21C00195011\n" +":4009C0000E51EA7F2A07980E101A1029C58F42E18C1085680AF24109F4EFF60530132029205A476124CC308253688BA80E68116621E64072C07C80E282890324F221A41056\n" +":400A0000C680F47F9FB2F10BE6510B1008D00448440C4009DDE44F063105B84C4FD13513812C6444C7A6C60CFE4BD42A031827DA07CC109FB0C206C708047F9FB8180C0E1D\n" +":400A40003FCFCA223B075CB01420101FE77632DC4025000B26CB6D091AD9F3267F707F846028FD8B4D93FA4A843BC91F53C0B733AF95B7E80388A750061D500605B00928EF\n" +":400A800075806DA7964E30040D60DF00431004DC0107D008980045663CF2E12C166008A201146009EA8004815D00A204B000F10084CE1EEA267EAB66EB440CF004CB006E90\n" +":400AC0005503E4001B6B846CAE07C00405746BE48DAC194001388182008CE01194021200105A00E14700D40115002078041ED000000000000300071C00000000FFFFB54CE5\n" +":400B00003800000BB031842E00EB34324D91085237306A54416110A68DE000A30205154008530807A3D491F1D47096A267985D44260B0260CC400B0138430CC204612188EC\n" +":400B4000296631E48200810230721984D1120C8591201304110D5BFF09D88FC40FF48842882D85024CC318449F870AD0E27D236444F096910124C8138B54630EF1FA60064F\n" +":400B800047060C03C01E107802229000E244096444401801CD0020CA0288C0449431845A6058CA86990D2311145108235003CA0C516063630C021ACED350926C88628834D8\n" +":400BC000171C18C880230A0A3C7042288450C1418A389A0D30A95442A1B619BA9210A640052024219041919120200EA70D80E31FA1315BA2288950662650E23F68C22708AE\n" +":400C0000082911C000105A9045A9150224946B3CCA8858268B528A044AA9A0B4301470804290FD16259205D44ABC053A58308B53293C3CB53D00A63C00E1980866528299B5\n" +":400C4000C0FE200036B039854A8636911EAAA903F921543A03BC2EB22E186FAE9308885A9A408198089D70224CC6326A2A4C006A01872020341D280E1DCD1A46916A6A0208\n" +":400C8000C52807BD8789080302C43C209980D4608E157E789C68033980406580105412005DA9C8629912B6A86100AA4D0AA321506600B19F8133D44B5216EAD2F0600CD578\n" +":400CC000E9D811ABE6B0519B4B986312614240623569D26308F4183229183A44714FCEF7A25B9985B9A45B9B05B9BC5B9C85B9D45B9E048B802C5060E413FC050801628340\n" +":400D0000A12E6404014552100528F127C97010001D84983D8B4130A34183C7FC52C626C8344022E0212039ED88C1860418EE45598D102451405E961B0420136083062BA004\n" +":400D400061081A0744C2200C8D30288402164210D230C03833BBE00568430300540840101A206A44ACB611A850400688214016143B9E745806A65462408150301008B002FF\n" +":400D8000DA4880085003A63195A339B14AC67F11C0040D8662200D972512808C33200242A013214992B312838EFAC2389F426F0B7FA00144A4C494C05A346070E0070041CC\n" +":400DC000ED4910264C834334804D2B9048C6CB7390384C05CCC89110C70048FC33604AC10993290040D0828EBC1818A12A148A86770F19B104182E0192E024AD3231848E63\n" +":400E0000C50D1DBA1EED9E862DAA364481410EDC2110301D0641AE6CF62099CC088320596648E0104899C93D133C1118540EB034B550C680CC052A00231540328866A04975\n" +":400E4000EBE007C92AC092A00929B89EB4846040EA038DC029FBC17024D13FC183ECF492B171E15334CC8C8322058901C4CC3FE2CFBF55C8D5C7FB004583470BE4D8A02C37\n" +":400E80001A11A0C1A11E38D30640A05E0BA522034118B890958B4C800426811408C004190043388548ECACE26C0EB394B47A00C330072054B93C801BD1401E6E20C022E55F\n" +":400EC000809804870AB02BCA02D820299A08C8422828C215860C8A6725EF226657191FB6F2314CC6C9B62884EEDA0310280023D532968C8627F5D747CAA208F0883CA151BD\n" +":400F00008F205810B080E2F719F868289EC60199720A4CB1BBAC09727C45050E50523B10054B93E8BA092C7442A1400586739A13610A85422082850A7220D3356401400236\n" +":400F4000110022AD7511237F049E6329E0251FE139F41F1B65B802631EC669E44C1F8501FC379C0771F0589F4689EC5C9FC39800311DA7C1F25B9F4231EE639F43D80006C6\n" +":400F80001E2411F0029F24B1F0149F0730004D9E4339EE32CAC0F8064F815C00040F2398F2220F734E340F638BCDF022425C28F22288BC8BF540CA2ECD62EFCB0BE25D9FF9\n" +":400FC00045E00C5E592072099485200D300EB38C4CB0308043896C040030EA97008004AC5D040025A1881419990883360031C03EDCB1A400895C40DEA9E5E44201406913D8\n" +":40100000222010801C8B1B8758F5D108044DE40B10098E02B0500791003C42E0F43AA2801804AB0A5A50717515146DA26C86575C8CF076D947C79EF3D0974200452E14293F\n" +":40104000084B95986C081FF0EA870A34F028C8C380CC0A010AC340A0102044582A19D293EDC2A1EDA699026E134A99194828816022112B94C030053C21106C950030212091\n" +":4010800054434074CBFE23C0009D1005533D00387011450400F4022734EA40F30C00A381EC080400C735CA996A1160D4DA0790D61E84B12B8E3D065A2043C0E07F0300607C\n" +":4010C0000CA542113E3562C312C1F40C81E03AC9F84C90033269EA638804055422A3880810230EA01018472C0504000CCA857D203880C0C8661B3952E2600C02014560382D\n" +":4011000000A40C6718D3C0E209010D4A50076D982C0280843AC0B5375220586018043D12F0312A8863884597CC266600C2AE34CAE344688757CF4832EC5906804AB168015C\n" +":40114000C72C5B1A213AB792A725C6821305549528732B001005D8BA2B02AA8958702F001E8266171B1C997C0ED8AD1B2894C02220E06001E2E0107A80A0F00223CB0A2DF1\n" +":401180001B0A018574F1450CB469705D0E32D03298ADB60C4202F5A68C600CD7F57ABC88F38326461B692CF5F4F2065662781AC0CECEF72C1C04381A567264D6DBAEE9E038\n" +":4011C000E242DA10F2752000D69A12B2C1B20387908E64BC120BC14A652030B3F4A720DE6E53E0029E6837133188200F6F8E22E4C82D810142FE9183228F369C588A12E8BA\n" +":40120000508202ECC844BC08142E5D3428000000050001EC00000000000001E071BE00A854AB0003A000A0C4A188522F0010E6FAE7CFED9AF9E000000574074B0F6015AEC6\n" +":40124000165A17531635155C13EF13991266515C0001003ED44071C60100607B0011000000300060009000C000F001200150018001B001E002100240027002A002D00300FC\n" +":40128000605D000200009C4053BF00020199033370F4000070710002FF86FF8670760F33549AFEAE53B4005F5058118053E900021000100054B4000C544E002850340580B8\n" +":4012C000501A01005010F8805018FDCD53510008F000080000001000F8000266F0000333534A8000537D00020000000053610008C0004000C0004000C0004000C000400094\n" +":40130000526F00080000000000000000000000000000000002990002F4F901535376F7F55348C0005100115F7151002000400040004000400040004000400040FA41FC4CD0\n" +":4013400001520453074F0748044200400040F842F749F94DFC50FE500050064B0B400B4300400040004000400040004071B2522C52AA014052B30002080000A0512E200018\n" +":40138000512C010053840000539E01E0539C099952A300020000000052D2008052E50003004003000400533E6000538D00020000823552E1000200001000533E5000531E38\n" +":4013C0000C00546B000708000CCC0E660E660B330B331000545600E6545A1000545F00040700157C04000FA054680000545C00A060110003B57CB9B8C0D4000000000000C1\n" +":401400004953505468726561644C6F6F70006170313330325F7365745F6374726C00000020257328256429204572726F72204F6363757272656420696E2048414C5F49329F\n" +":40144000435F536C617665527843706C7443616C6C6261636B2020537461747573203D203078253032782C20675F736C6176655F6E6578745F72785F6C656E203D20257534\n" +":4014800020200A0D0000000020257328256429204572726F72204F6363757272656420696E2048414C5F4932435F536C617665547843706C7443616C6C6261636B20207340\n" +":4014C0007461747573203D2030782530327820675F736C6176655F6E6578745F72785F6C656E203D202575200A0D000025732825642920446562756720496E6974696174D8\n" +":401500006564205359534346475F4346475231203D203078253038782020464C4153482D3E4F505452203D20307825303878200A0D00000049535054687265616400000014\n" +":4015400064656661756C745461736B00496E76616C696420466F726D6174202D2030782530387820213D20307825303878202C20205769647468202D2025687520213D20A5\n" +":40158000256875202C20486569676874202D2025687520213D20256875200A0D000000000A0D2052454144204D4173746572205472616E736D6974204572726F7220212161\n" +":4015C00020202D20307825303278203078253038782020524547203D2030782530347820666F7220736C61766520307825303278200A0D000A0D205752495445204D417323\n" +":40160000746572205472616E736D6974204572726F7220212120202D203078253032782030782530387820524547203D2030782530347820666F7220736C617665203078D2\n" +":4016400025303278200A0D000A0D204D41737465722052656365697665204572726F72202121202D203078253032782030782530387820666F7220736C61766520307825D2\n" +":401680003032782020666F7220524547202D20307825303478200A0D00000000BC16020800000020A80000006A4A000864170208A8000020383100007A4A000880841E007A\n" +":4016C00000000000AAAAAAAA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042\n" +":401700000000000000000000000000000000000000000000000000000000000000000005FFFF0000000000000000000000000000C0FF0208000000000000000000000000DD\n" +":2417400000000000000000000000000000000000000000000000000000000000000000000000000085\n" +":020000040800F2\n" +":4000000008040020D5000008C9010008C701000800000000000000000000000000000000000000000000000000000000CD0100080000000000000000CB010008CF01000893\n" +":40004000E7000008E7000008E7000008E7000008E7000008E7000008E7000008E700000800000000E7000008E7000008E7000008E7000008E7000008E7000008E70000087F\n" +":40008000E7000008E7000008E700000800000000E7000008E7000008E7000008E7000008E7000008E7000008E7000008E7000008E7000008E700000800000000000000001D\n" +":4000C0000348854600F014F80048004751020008080400200448804704480047FEE7FEE7FEE7FEE7FEE7FEE7DD010008C1000008064C0125064E05E0E36807CC2B430C3CA0\n" +":4001000098471034B442F7D3FFF7DEFFA4020008C402000810B500210748C9438162002282624162426201620262C161C26100F00DF8002010BD0000001002400248016829\n" +":40014000491C016070470000000000207047000008B515480168821511430160C16889088900C1600168114A114001600168012212041140009101689200914301600021AD\n" +":40018000C16042680A4B1A4005235B03D218426042681F231B029A438314D2184260016105490448086008BD00100240D4FFF6FEFF1FFF0068FF1F0004000020704710B525\n" +":4001C000FFF7FCFF10BDFEE770477047704710B5FFF7B4FFFFF7F3FF10BD000010480168821511430160C1680E4A1140C16001680D4A1140016081684908490081600168D5\n" +":400200000122920491430160C168FD2212049143C160002101610549C003886070470000001002400C40FF88F6FFF6FE00ED00E002E008C8121F08C1002AFAD17047704760\n" +":40024000002001E001C1121F002AFBD17047000008B5002462B60F48009401680E4A1140C204914214D1416800910D46016881F3088872B609498860FFF76AFF08480461F9\n" +":4002800044618461012080F31088FFF743FFA847FEE70000000400080000FE2F00ED00E000E000E0C4020008000000200800000030020008CC020008080000200004000084\n" +":0C02C000400200080000000080841E00C6\n" +":020000040802F0\n" +":20FFC0003131353043553936524b56313930313131306433383138393458585858585858f6\n" +":04000005080000C12E\n" +":00000001FF\n" diff --git a/drivers/media/platform/imx8/mcu_firmware.h b/drivers/media/platform/imx8/mcu_firmware.h new file mode 100644 index 000000000000..de06baedd10f --- /dev/null +++ b/drivers/media/platform/imx8/mcu_firmware.h @@ -0,0 +1,91 @@ +#ifndef _MCU_FIRMWARE_H +#define _MCU_FIRMWARE_H + +/* Local Defines */ +#define MAX_BUF_LEN 2048 + +#define MAX_PAGES 512 +#define TOTAL_PAGES 1536 +#define NUM_ERASE_CYCLES (TOTAL_PAGES / MAX_PAGES) + +#define FLASH_START_ADDRESS 0x08000000 +#define FLASH_SIZE 192*1024 +#define FLASH_READ_LEN 256 + +#define CR 13 /* Carriage return */ +#define LF 10 /* Line feed */ + +/*MCU Buffer size increased - Fix for loading menu based controls */ +#define MCU_BUFFER_SIZE 1024 + +/* TODO: Only necessary commands added */ +enum _i2c_cmds +{ + BL_GET_VERSION = 0x01, + BL_GO = 0x21, + BL_READ_MEM = 0x11, + BL_WRITE_MEM = 0x31, + BL_WRITE_MEM_NS = 0x32, + BL_ERASE_MEM = 0x44, + BL_ERASE_MEM_NS = 0x45, +}; + +enum _i2c_resp +{ + RESP_ACK = 0x79, + RESP_NACK = 0x1F, + RESP_BUSY = 0x76, +}; + +enum +{ + NUM_LANES_1 = 0x01, + NUM_LANES_2 = 0x02, + NUM_LANES_3 = 0x03, + NUM_LANES_4 = 0x04, + NUM_LANES_UNKWN = 0xFF, +}; + +enum _ihex_rectype +{ + /* Normal data */ + REC_TYPE_DATA = 0x00, + /* End of File */ + REC_TYPE_EOF = 0x01, + + /* Extended Segment Address */ + REC_TYPE_ESA = 0x02, + /* Start Segment Address */ + REC_TYPE_SSA = 0x03, + + /* Extended Linear Address */ + REC_TYPE_ELA = 0x04, + /* Start Linear Address */ + REC_TYPE_SLA = 0x05, +}; + +typedef struct __attribute__ ((packed)) _ihex_rec { + unsigned char datasize; + unsigned short int addr; + unsigned char rectype; + unsigned char recdata[]; +} IHEX_RECORD; + +unsigned int g_bload_flashaddr = 0x0000; + +uint8_t *fw_version = NULL; + +/* MCU communication variables */ +unsigned char mc_data[MCU_BUFFER_SIZE]; +unsigned char mc_ret_data[MCU_BUFFER_SIZE]; + +/* Buffer to Send Bootloader CMDs */ +unsigned char g_bload_buf[MAX_BUF_LEN] = { 0 }; + +unsigned short int g_bload_crc16 = 0x0000; + +const char g_mcu_fw_buf[] = +#include "ecam50_cam_fw.txt" + ; + +#endif //_MCU_FIRMWARE_H diff --git a/drivers/media/platform/imx8/mcu_firmware_1335.h b/drivers/media/platform/imx8/mcu_firmware_1335.h new file mode 100644 index 000000000000..9c12ff3c4155 --- /dev/null +++ b/drivers/media/platform/imx8/mcu_firmware_1335.h @@ -0,0 +1,91 @@ +#ifndef _MCU_FIRMWARE_H +#define _MCU_FIRMWARE_H + +/* Local Defines */ +#define MAX_BUF_LEN 2048 + +#define MAX_PAGES 512 +#define TOTAL_PAGES 1536 +#define NUM_ERASE_CYCLES (TOTAL_PAGES / MAX_PAGES) + +#define FLASH_START_ADDRESS 0x08000000 +#define FLASH_SIZE 192*1024 +#define FLASH_READ_LEN 256 + +#define CR 13 /* Carriage return */ +#define LF 10 /* Line feed */ + +/*MCU Buffer size increased - Fix for loading menu based controls */ +#define MCU_BUFFER_SIZE 1024 + +/* TODO: Only necessary commands added */ +enum _i2c_cmds +{ + BL_GET_VERSION = 0x01, + BL_GO = 0x21, + BL_READ_MEM = 0x11, + BL_WRITE_MEM = 0x31, + BL_WRITE_MEM_NS = 0x32, + BL_ERASE_MEM = 0x44, + BL_ERASE_MEM_NS = 0x45, +}; + +enum _i2c_resp +{ + RESP_ACK = 0x79, + RESP_NACK = 0x1F, + RESP_BUSY = 0x76, +}; + +enum +{ + NUM_LANES_1 = 0x01, + NUM_LANES_2 = 0x02, + NUM_LANES_3 = 0x03, + NUM_LANES_4 = 0x04, + NUM_LANES_UNKWN = 0xFF, +}; + +enum _ihex_rectype +{ + /* Normal data */ + REC_TYPE_DATA = 0x00, + /* End of File */ + REC_TYPE_EOF = 0x01, + + /* Extended Segment Address */ + REC_TYPE_ESA = 0x02, + /* Start Segment Address */ + REC_TYPE_SSA = 0x03, + + /* Extended Linear Address */ + REC_TYPE_ELA = 0x04, + /* Start Linear Address */ + REC_TYPE_SLA = 0x05, +}; + +typedef struct __attribute__ ((packed)) _ihex_rec { + unsigned char datasize; + unsigned short int addr; + unsigned char rectype; + unsigned char recdata[]; +} IHEX_RECORD; + +unsigned int g_bload_flashaddr_1335 = 0x0000; + +uint8_t *fw_version_1335 = NULL; + +/* MCU communication variables */ +unsigned char mc_data_1335[MCU_BUFFER_SIZE]; +unsigned char mc_ret_data_1335[MCU_BUFFER_SIZE]; + +/* Buffer to Send Bootloader CMDs */ +unsigned char g_bload_buf_1335[MAX_BUF_LEN] = { 0 }; + +unsigned short int g_bload_crc16_1335 = 0x0000; + +const char g_mcu_fw_buf_1335[] = +#include "ecam131_mcu_fw.txt" + ; + +#endif //_MCU_FIRMWARE_H diff --git a/drivers/staging/media/imx/imx8-isi-cap.c b/drivers/staging/media/imx/imx8-isi-cap.c index 5ff28bfb32d3..220b533489fc 100644 --- a/drivers/staging/media/imx/imx8-isi-cap.c +++ b/drivers/staging/media/imx/imx8-isi-cap.c @@ -34,6 +34,14 @@ struct mxc_isi_fmt mxc_isi_out_formats[] = { { + .name = "UYVY-16", + .fourcc = V4L2_PIX_FMT_UYVY, + .depth = { 16 }, + .color = MXC_ISI_OUT_FMT_YUV422_1P8P, + .memplanes = 1, + .colplanes = 1, + .mbus_code = MEDIA_BUS_FMT_UYVY8_2X8, + }, { .name = "RGB565", .fourcc = V4L2_PIX_FMT_RGB565, .depth = { 16 }, @@ -535,6 +543,8 @@ static struct vb2_ops mxc_cap_vb2_qops = { .stop_streaming = cap_vb2_stop_streaming, }; +/* To enable ctrls in sensor driver, we need to comment the ISI ctrls */ +#ifndef CONFIG_VIDEO_ECAM /* * V4L2 controls handling */ @@ -624,6 +634,7 @@ void mxc_isi_ctrls_delete(struct mxc_isi_cap_dev *isi_cap) ctrls->alpha = NULL; } } +#endif static struct media_pad *mxc_isi_get_remote_source_pad(struct mxc_isi_cap_dev *isi_cap) @@ -1261,6 +1272,129 @@ static int mxc_isi_cap_enum_frameintervals(struct file *file, void *fh, return 0; } +#ifdef CONFIG_VIDEO_ECAM +static int mxc_vidioc_queryctrl(struct file *file, void *fh, + struct v4l2_queryctrl *a) +{ + struct mxc_isi_cap_dev *isi_cap = video_drvdata(file); + struct v4l2_subdev *sd; + + sd = mxc_get_remote_subdev(isi_cap, __func__); + if (!sd) + return -EINVAL; + + return v4l2_subdev_call(sd, core, queryctrl, a); +} + +static int mxc_vidioc_query_ext_ctrl(struct file *file, void *fh, + struct v4l2_query_ext_ctrl *qec) +{ + struct v4l2_queryctrl qc = { + .id = qec->id + }; + int ret; + + ret = mxc_vidioc_queryctrl(file, fh, &qc); + + if (ret) + return ret; + + qec->id = qc.id; + qec->type = qc.type; + strlcpy(qec->name, qc.name, sizeof(qec->name)); + qec->maximum = qc.maximum; + qec->minimum = qc.minimum; + qec->step = qc.step; + qec->default_value = qc.default_value; + qec->flags = qc.flags; + qec->elem_size = 4; + qec->elems = 1; + qec->nr_of_dims = 0; + memset(qec->dims, 0, sizeof(qec->dims)); + memset(qec->reserved, 0, sizeof(qec->reserved)); + + return 0; +} + +static int mxc_isi_vidioc_querymenu(struct file *file, void *fh, + struct v4l2_querymenu *qm) +{ + struct mxc_isi_cap_dev *isi_cap = video_drvdata(file); + struct v4l2_subdev *sd; + + sd = mxc_get_remote_subdev(isi_cap, __func__); + if (!sd) + return -EINVAL; + + return v4l2_subdev_call(sd, core, querymenu, qm); +} + +static int mxc_isi_vidioc_g_ctrl(struct file *file, void *fh, + struct v4l2_control *a) +{ + struct mxc_isi_cap_dev *isi_cap = video_drvdata(file); + struct v4l2_subdev *sd; + + sd = mxc_get_remote_subdev(isi_cap, __func__); + if (!sd) + return -EINVAL; + + return v4l2_subdev_call(sd, core, g_ctrl, a); +} + +static int mxc_isi_vidioc_s_ctrl(struct file *file, void *fh, + struct v4l2_control *a) +{ + struct mxc_isi_cap_dev *isi_cap = video_drvdata(file); + struct v4l2_subdev *sd; + + sd = mxc_get_remote_subdev(isi_cap, __func__); + if (!sd) + return -EINVAL; + + return v4l2_subdev_call(sd, core, s_ctrl, a); +} + +static int mxc_isi_vidioc_g_ext_ctrls(struct file *file, void *fh, + struct v4l2_ext_controls *a) +{ + struct mxc_isi_cap_dev *isi_cap = video_drvdata(file); + struct v4l2_subdev *sd; + + sd = mxc_get_remote_subdev(isi_cap, __func__); + if (!sd) + return -EINVAL; + + return v4l2_subdev_call(sd, core, g_ext_ctrls, a); +} + +static int mxc_isi_vidioc_try_ext_ctrls(struct file *file, void *fh, + struct v4l2_ext_controls *a) +{ + struct mxc_isi_cap_dev *isi_cap = video_drvdata(file); + struct v4l2_subdev *sd; + + sd = mxc_get_remote_subdev(isi_cap, __func__); + if (!sd) + return -EINVAL; + + return v4l2_subdev_call(sd, core, try_ext_ctrls, a); +} + +static int mxc_isi_vidioc_s_ext_ctrls(struct file *file, void *fh, + struct v4l2_ext_controls *a) +{ + struct mxc_isi_cap_dev *isi_cap = video_drvdata(file); + struct v4l2_subdev *sd; + + sd = mxc_get_remote_subdev(isi_cap, __func__); + if (!sd) + return -EINVAL; + + return v4l2_subdev_call(sd, core, s_ext_ctrls, a); +} +#endif + static const struct v4l2_ioctl_ops mxc_isi_capture_ioctl_ops = { .vidioc_querycap = mxc_isi_cap_querycap, @@ -1288,6 +1422,16 @@ static const struct v4l2_ioctl_ops mxc_isi_capture_ioctl_ops = { .vidioc_enum_framesizes = mxc_isi_cap_enum_framesizes, .vidioc_enum_frameintervals = mxc_isi_cap_enum_frameintervals, +#ifdef CONFIG_VIDEO_ECAM + .vidioc_queryctrl = mxc_vidioc_queryctrl, + .vidioc_query_ext_ctrl = mxc_vidioc_query_ext_ctrl, + .vidioc_querymenu = mxc_isi_vidioc_querymenu, + .vidioc_g_ctrl = mxc_isi_vidioc_g_ctrl, + .vidioc_s_ctrl = mxc_isi_vidioc_s_ctrl, + .vidioc_g_ext_ctrls = mxc_isi_vidioc_g_ext_ctrls, + .vidioc_s_ext_ctrls = mxc_isi_vidioc_s_ext_ctrls, + .vidioc_try_ext_ctrls = mxc_isi_vidioc_try_ext_ctrls +#endif }; /* Capture subdev media entity operations */ @@ -1604,22 +1748,28 @@ static int mxc_isi_register_cap_device(struct mxc_isi_cap_dev *isi_cap, if (ret) goto err_free_ctx; +/* To enable ctrls in sensor driver, we need to comment the ISI ctrls */ +#ifndef CONFIG_VIDEO_ECAM ret = mxc_isi_ctrls_create(isi_cap); if (ret) goto err_me_cleanup; +#endif ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1); if (ret) goto err_ctrl_free; - +#ifndef CONFIG_VIDEO_ECAM vdev->ctrl_handler = &isi_cap->ctrls.handler; +#endif v4l2_info(v4l2_dev, "Registered %s as /dev/%s\n", vdev->name, video_device_node_name(vdev)); return 0; err_ctrl_free: +#ifndef CONFIG_VIDEO_ECAM mxc_isi_ctrls_delete(isi_cap); +#endif err_me_cleanup: media_entity_cleanup(&vdev->entity); err_free_ctx: @@ -1657,7 +1807,10 @@ static void mxc_isi_subdev_unregistered(struct v4l2_subdev *sd) vdev = &isi_cap->vdev; if (video_is_registered(vdev)) { video_unregister_device(vdev); +/* To enable ctrls in sensor driver, we need to comment the ISI ctrls*/ +#ifndef CONFIG_VIDEO_ECAM mxc_isi_ctrls_delete(isi_cap); +#endif media_entity_cleanup(&vdev->entity); } mutex_unlock(&isi_cap->lock); diff --git a/drivers/staging/media/imx/imx8-mipi-csi2.c b/drivers/staging/media/imx/imx8-mipi-csi2.c index 19b76fa72782..13a615381c47 100644 --- a/drivers/staging/media/imx/imx8-mipi-csi2.c +++ b/drivers/staging/media/imx/imx8-mipi-csi2.c @@ -801,6 +801,93 @@ static const struct media_entity_operations mipi_csi2_sd_media_ops = { /* * V4L2 subdev operations */ +#ifdef CONFIG_VIDEO_ECAM +static int mipi_csi2_querymenu(struct v4l2_subdev *sd, struct v4l2_querymenu *qm) +{ + struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); + struct v4l2_subdev *sen_sd; + + sen_sd = mxc_get_remote_subdev(csi2dev, __func__); + if (!sen_sd) + return -EINVAL; + + return v4l2_subdev_call(sen_sd, core, querymenu, qm); +} + +static int mipi_csi2_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc) +{ + struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); + struct v4l2_subdev *sen_sd; + + sen_sd = mxc_get_remote_subdev(csi2dev, __func__); + if (!sen_sd) + return -EINVAL; + + return v4l2_subdev_call(sen_sd, core, queryctrl, qc); +} + +static int mipi_csi2_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) +{ + struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); + struct v4l2_subdev *sen_sd; + + sen_sd = mxc_get_remote_subdev(csi2dev, __func__); + if (!sen_sd) + return -EINVAL; + + return v4l2_subdev_call(sen_sd, core, g_ctrl, ctrl); +} + +static int mipi_csi2_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) +{ + + struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); + struct v4l2_subdev *sen_sd; + + sen_sd = mxc_get_remote_subdev(csi2dev, __func__); + if (!sen_sd) + return -EINVAL; + + return v4l2_subdev_call(sen_sd, core, s_ctrl, ctrl); +} + +static int mipi_csi2_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); + struct v4l2_subdev *sen_sd; + + sen_sd = mxc_get_remote_subdev(csi2dev, __func__); + if (!sen_sd) + return -EINVAL; + + return v4l2_subdev_call(sen_sd, core, g_ext_ctrls, ctrls); +} + +static int mipi_csi2_try_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); + struct v4l2_subdev *sen_sd; + + sen_sd = mxc_get_remote_subdev(csi2dev, __func__); + if (!sen_sd) + return -EINVAL; + + return v4l2_subdev_call(sen_sd, core, try_ext_ctrls, ctrls); +} + +static int mipi_csi2_s_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls) +{ + struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); + struct v4l2_subdev *sen_sd; + + sen_sd = mxc_get_remote_subdev(csi2dev, __func__); + if (!sen_sd) + return -EINVAL; + + return v4l2_subdev_call(sen_sd, core, s_ext_ctrls, ctrls); +} +#endif + static int mipi_csi2_s_power(struct v4l2_subdev *sd, int on) { struct mxc_mipi_csi2_dev *csi2dev = sd_to_mxc_mipi_csi2_dev(sd); @@ -952,6 +1039,15 @@ static struct v4l2_subdev_pad_ops mipi_csi2_pad_ops = { static struct v4l2_subdev_core_ops mipi_csi2_core_ops = { .s_power = mipi_csi2_s_power, +#ifdef CONFIG_VIDEO_ECAM + .queryctrl = mipi_csi2_queryctrl, + .g_ctrl = mipi_csi2_g_ctrl, + .s_ctrl = mipi_csi2_s_ctrl, + .g_ext_ctrls = mipi_csi2_g_ext_ctrls, + .s_ext_ctrls = mipi_csi2_s_ext_ctrls, + .try_ext_ctrls = mipi_csi2_try_ext_ctrls, + .querymenu = mipi_csi2_querymenu, +#endif }; static struct v4l2_subdev_video_ops mipi_csi2_video_ops = { diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index ba873255053a..67b4ecd4a727 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h @@ -195,6 +195,15 @@ struct v4l2_subdev_core_ops { int (*load_fw)(struct v4l2_subdev *sd); int (*reset)(struct v4l2_subdev *sd, u32 val); int (*s_gpio)(struct v4l2_subdev *sd, u32 val); +#ifdef CONFIG_VIDEO_ECAM + int (*queryctrl)(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc); + int (*g_ctrl)(struct v4l2_subdev *sd, struct v4l2_control *ctrl); + int (*s_ctrl)(struct v4l2_subdev *sd, struct v4l2_control *ctrl); + int (*querymenu)(struct v4l2_subdev *sd, struct v4l2_querymenu *qm); + int (*g_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls); + int (*s_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls); + int (*try_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls); +#endif long (*ioctl)(struct v4l2_subdev *sd, unsigned int cmd, void *arg); #ifdef CONFIG_COMPAT long (*compat_ioctl32)(struct v4l2_subdev *sd, unsigned int cmd, -- cgit v1.2.3