From bdead5b63686339a503c8b9a8b120a4245f0d403 Mon Sep 17 00:00:00 2001 From: rifek4 Date: Thu, 5 Nov 2020 15:57:53 +0100 Subject: [PATCH] Import G96XFXXUCFTJ2 OSRC --- .../configs/exynos9810-star2lte_defconfig | 2 + .../configs/exynos9810-starlte_defconfig | 2 + .../gud/gud-exynos9810/MobiCoreDriver/mcp.c | 2 +- .../fimc-is2/include/fimc-is-metadata.h | 21 + drivers/misc/modem_v1/link_device_shmem.c | 9 + drivers/misc/modem_v1/modem_utils.c | 2 +- drivers/net/usb/r8152.c | 3 + .../wireless/bcmdhd_100_10/dhd_pcie_linux.c | 19 +- .../bcmdhd_100_10/include/linux_osl.h | 56 +- drivers/net/wireless/bcmdhd_100_15/Kconfig | 23 +- drivers/net/wireless/bcmdhd_100_15/Makefile | 172 +- .../net/wireless/bcmdhd_100_15/Makefile.kk | 172 +- .../net/wireless/bcmdhd_100_15/Makefile.lp | 172 +- .../bcmdhd_100_15/bcmsdh_sdmmc_linux.c | 12 +- drivers/net/wireless/bcmdhd_100_15/dhd.h | 5 +- .../wireless/bcmdhd_100_15/dhd_custom_sec.c | 24 +- .../net/wireless/bcmdhd_100_15/dhd_debug.h | 5 +- .../net/wireless/bcmdhd_100_15/dhd_linux.c | 142 +- .../net/wireless/bcmdhd_100_15/dhd_linux.h | 10 +- .../bcmdhd_100_15/dhd_linux_exportfs.c | 10 +- .../net/wireless/bcmdhd_100_15/dhd_mschdbg.c | 2 +- drivers/net/wireless/bcmdhd_100_15/dhd_pcie.c | 68 +- .../wireless/bcmdhd_100_15/dhd_pcie_linux.c | 18 + .../net/wireless/bcmdhd_100_15/dhd_pktlog.c | 50 +- .../net/wireless/bcmdhd_100_15/dhd_pktlog.h | 25 +- drivers/net/wireless/bcmdhd_100_15/dhd_sdio.c | 105 +- .../wireless/bcmdhd_100_15/dhd_sec_feature.h | 33 +- .../wireless/bcmdhd_100_15/include/epivers.h | 10 +- .../bcmdhd_100_15/include/linux_osl.h | 56 +- .../wireless/bcmdhd_100_15/include/wlioctl.h | 1204 +- .../bcmdhd_100_15/include/wlioctl_defs.h | 87 +- .../net/wireless/bcmdhd_100_15/wl_android.c | 32 +- .../net/wireless/bcmdhd_100_15/wl_cfg80211.c | 505 +- .../net/wireless/bcmdhd_100_15/wl_cfg80211.h | 28 +- .../net/wireless/bcmdhd_100_15/wl_cfgnan.c | 140 +- .../net/wireless/bcmdhd_100_15/wl_cfgnan.h | 3 +- .../net/wireless/bcmdhd_100_15/wl_cfgscan.c | 312 +- .../net/wireless/bcmdhd_100_15/wl_cfgscan.h | 8 +- .../net/wireless/bcmdhd_100_15/wl_cfgvendor.c | 66 +- .../net/wireless/bcmdhd_100_15/wldev_common.c | 60 +- .../net/wireless/bcmdhd_100_15/wldev_common.h | 3 +- drivers/pci/host/pci-exynos.c | 56 + drivers/pci/host/pci-exynos.h | 4 +- .../security/samsung/five_tee_driver/Kconfig | 15 +- .../security/samsung/five_tee_driver/Makefile | 82 +- .../samsung/five_tee_driver/five_ta_uuid.h | 22 +- .../samsung/five_tee_driver/five_tee_driver.c | 2 +- .../gp-api/client/teec_common_emulator.c | 181 + .../source/gp-api/client/teec_common_qsee.c | 3 +- .../source/gp-api/client/teec_operation.c | 37 + .../source/gp-api/protocol/socket_utils.c | 135 + .../source/gp-api/protocol/socket_utils.h | 41 + drivers/security/samsung/icdrv/Makefile | 8 +- drivers/security/samsung/icdrv/icd.c | 40 +- drivers/security/samsung/tzic/Kconfig | 7 +- drivers/security/samsung/tzic/Makefile | 11 +- drivers/security/samsung/tzic/tzic64.c | 8 +- drivers/security/samsung/tzic/tzic_default.c | 27 + drivers/security/samsung/tzic/tzic_qsee.c | 4 +- drivers/security/samsung/tzic/tzic_tzdev.c | 7 +- drivers/staging/samsung/sec_bootstat.c | 121 +- .../exynos/panel/active_clk_img_default.h | 9 +- .../fbdev/exynos/panel/active_clk_img_white.h | 9 +- .../video/fbdev/exynos/panel/active_clock.c | 84 +- .../video/fbdev/exynos/panel/active_clock.h | 8 +- drivers/video/fbdev/exynos/panel/copr.c | 17 +- drivers/video/fbdev/exynos/panel/copr.h | 21 +- .../video/fbdev/exynos/panel/dimming_gamma.h | 7 +- drivers/video/fbdev/exynos/panel/dpui.c | 9 +- drivers/video/fbdev/exynos/panel/dpui.h | 7 +- drivers/video/fbdev/exynos/panel/mdnie.c | 51 +- drivers/video/fbdev/exynos/panel/mdnie.h | 13 +- drivers/video/fbdev/exynos/panel/panel.c | 30 +- drivers/video/fbdev/exynos/panel/panel.h | 15 +- drivers/video/fbdev/exynos/panel/panel_bl.c | 15 +- drivers/video/fbdev/exynos/panel/panel_bl.h | 39 +- .../video/fbdev/exynos/panel/panel_dimming.h | 7 +- drivers/video/fbdev/exynos/panel/panel_drv.c | 297 +- drivers/video/fbdev/exynos/panel/panel_drv.h | 16 +- drivers/video/fbdev/exynos/panel/panel_poc.c | 19 +- drivers/video/fbdev/exynos/panel/panel_poc.h | 7 +- .../exynos/panel/s6e3ha8/s6e3ha8_aod_panel.h | 6 +- drivers/video/fbdev/exynos/panel/spi.c | 10 +- drivers/video/fbdev/exynos/panel/spi.h | 12 +- drivers/video/fbdev/exynos/panel/sysfs.c | 146 +- drivers/video/fbdev/exynos/panel/timenval.c | 7 +- drivers/video/fbdev/exynos/panel/timenval.h | 7 +- fs/ext4/balloc.c | 15 +- fs/ext4/ext4.h | 32 +- fs/ext4/ialloc.c | 11 +- fs/ext4/inode.c | 4 +- fs/ext4/mballoc.c | 3 - fs/ext4/super.c | 13 +- include/linux/ccic/max77705_pass3.h | 13128 ++++++++-------- include/linux/defex.h | 1 + kernel/kmod.c | 11 + security/samsung/defex_lsm/Makefile | 29 +- security/samsung/defex_lsm/defex_common.c | 67 +- security/samsung/defex_lsm/defex_debug.c | 10 +- security/samsung/defex_lsm/defex_ht.c | 592 +- security/samsung/defex_lsm/defex_immutable.c | 2 +- security/samsung/defex_lsm/defex_lsm.c | 5 +- security/samsung/defex_lsm/defex_priv.c | 15 - security/samsung/defex_lsm/defex_procs.c | 239 +- security/samsung/defex_lsm/defex_rules.c | 2 + security/samsung/defex_lsm/defex_safeplace.c | 2 +- security/samsung/defex_lsm/defex_sign.c | 27 +- security/samsung/defex_lsm/defex_sysfs.c | 162 +- .../defex_lsm/include/defex_internal.h | 73 +- .../samsung/defex_lsm/include/defex_rules.h | 5 +- security/samsung/defex_lsm/pack_rules.c | 3 +- security/samsung/dsms/Makefile | 4 + security/samsung/dsms/dsms_access_control.c | 4 +- security/samsung/dsms/dsms_access_control.h | 12 +- security/samsung/dsms/dsms_kernel_api.c | 34 +- security/samsung/dsms/dsms_kernel_api.h | 15 + security/samsung/dsms/dsms_rate_limit.c | 13 +- security/samsung/dsms/dsms_rate_limit.h | 11 + security/samsung/five/Makefile | 1 - security/samsung/five/five.h | 3 +- security/samsung/five/five_appraise.c | 4 +- security/samsung/five/five_audit.c | 6 +- security/samsung/five/five_cache.h | 2 +- security/samsung/five/five_crypto.c | 6 +- security/samsung/five/five_crypto_comp.h | 23 + security/samsung/five/five_dmverity.c | 8 +- security/samsung/five/five_dsms.c | 2 +- security/samsung/five/five_hooks.c | 16 +- security/samsung/five/five_hooks.h | 8 +- security/samsung/five/five_keyring.c | 2 +- security/samsung/five/five_main.c | 24 +- security/samsung/five/five_porting.h | 22 + security/samsung/five/five_state.c | 7 +- security/samsung/five/five_tee_interface.c | 4 +- 134 files changed, 11616 insertions(+), 8423 deletions(-) create mode 100644 drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_emulator.c create mode 100644 drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_operation.c create mode 100644 drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.c create mode 100644 drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.h create mode 100644 drivers/security/samsung/tzic/tzic_default.c create mode 100644 security/samsung/dsms/dsms_kernel_api.h diff --git a/arch/arm64/configs/exynos9810-star2lte_defconfig b/arch/arm64/configs/exynos9810-star2lte_defconfig index d65e48431baf..853e38d6e021 100644 --- a/arch/arm64/configs/exynos9810-star2lte_defconfig +++ b/arch/arm64/configs/exynos9810-star2lte_defconfig @@ -5044,6 +5044,7 @@ CONFIG_GATOR_WITH_MALI_SUPPORT=y CONFIG_GATOR_MALI_MIDGARD=y CONFIG_GATOR_MALI_MIDGARD_PATH="drivers/gpu/arm/tHEx/r9p0" CONFIG_FIVE_TEE_DRIVER=y +# CONFIG_FIVE_USE_EMULATOR is not set CONFIG_FIVE_USE_TRUSTONIC=y # CONFIG_TEE_DRIVER_DEBUG is not set CONFIG_FIVE_TRUSTLET_PATH="five/ffffffff000000000000000000000072.tlbin" @@ -5058,6 +5059,7 @@ CONFIG_ICD=y CONFIG_ICD_USE_TRUSTONIC=y CONFIG_TZIC=y CONFIG_TZIC_USE_TRUSTONIC=y +# CONFIG_TZIC_DEFAULT is not set # # Firmware Drivers diff --git a/arch/arm64/configs/exynos9810-starlte_defconfig b/arch/arm64/configs/exynos9810-starlte_defconfig index bd298a2751b7..31840232fc79 100644 --- a/arch/arm64/configs/exynos9810-starlte_defconfig +++ b/arch/arm64/configs/exynos9810-starlte_defconfig @@ -5043,6 +5043,7 @@ CONFIG_GATOR_WITH_MALI_SUPPORT=y CONFIG_GATOR_MALI_MIDGARD=y CONFIG_GATOR_MALI_MIDGARD_PATH="drivers/gpu/arm/tHEx/r9p0" CONFIG_FIVE_TEE_DRIVER=y +# CONFIG_FIVE_USE_EMULATOR is not set CONFIG_FIVE_USE_TRUSTONIC=y # CONFIG_TEE_DRIVER_DEBUG is not set CONFIG_FIVE_TRUSTLET_PATH="five/ffffffff000000000000000000000072.tlbin" @@ -5057,6 +5058,7 @@ CONFIG_ICD=y CONFIG_ICD_USE_TRUSTONIC=y CONFIG_TZIC=y CONFIG_TZIC_USE_TRUSTONIC=y +# CONFIG_TZIC_DEFAULT is not set # # Firmware Drivers diff --git a/drivers/gud/gud-exynos9810/MobiCoreDriver/mcp.c b/drivers/gud/gud-exynos9810/MobiCoreDriver/mcp.c index 111068358ba4..ff9a40a8f342 100644 --- a/drivers/gud/gud-exynos9810/MobiCoreDriver/mcp.c +++ b/drivers/gud/gud-exynos9810/MobiCoreDriver/mcp.c @@ -49,7 +49,7 @@ /* respond timeout for MCP notification, in secs */ #define MCP_TIMEOUT 10 -#define MCP_RETRIES 2 +#define MCP_RETRIES 3 #define MCP_NF_QUEUE_SZ 8 static struct { diff --git a/drivers/media/platform/exynos/fimc-is2/include/fimc-is-metadata.h b/drivers/media/platform/exynos/fimc-is2/include/fimc-is-metadata.h index 7d726c49a4d4..e25ff201603c 100644 --- a/drivers/media/platform/exynos/fimc-is2/include/fimc-is-metadata.h +++ b/drivers/media/platform/exynos/fimc-is2/include/fimc-is-metadata.h @@ -1849,6 +1849,27 @@ struct camera2_dng_udm { uint32_t gammaYpnt[32]; }; +enum camera_client_index { + CAMERA_APP_CATEGORY_NOT_READ = -1, + CAMERA_APP_CATEGORY_NONE = 0, + CAMERA_APP_CATEGORY_FACEBOOK = 1, + CAMERA_APP_CATEGORY_WECHAT = 2, + CAMERA_APP_CATEGORY_SNAPCHAT = 3, + CAMERA_APP_CATEGORY_TWITTER = 4, + CAMERA_APP_CATEGORY_INSTAGRAM = 5, + CAMERA_APP_CATEGORY_3P_VT = 6, + CAMERA_APP_CATEGORY_VAULT = 7, + CAMERA_APP_CATEGORY_FACEBOOK_MASSENGER = 8, + CAMERA_APP_CATEGORY_WHATSAPP = 9, + CAMERA_APP_CATEGORY_ULIKE = 10, + CAMERA_APP_CATEGORY_WEIBO = 11, + CAMERA_APP_CATEGORY_MEITU = 12, + CAMERA_APP_CATEGORY_KAKAOBANK = 13, + CAMERA_APP_CATEGORY_CAMCARD = 14, + CAMERA_APP_CATEGORY_CAMCARD_FREE = 15, + CAMERA_APP_CATEGORY_MAX +}; + /** \brief User-defined control area. \remarks diff --git a/drivers/misc/modem_v1/link_device_shmem.c b/drivers/misc/modem_v1/link_device_shmem.c index 0d1d2aaf8fa0..1a837b5b8ef5 100644 --- a/drivers/misc/modem_v1/link_device_shmem.c +++ b/drivers/misc/modem_v1/link_device_shmem.c @@ -3253,6 +3253,7 @@ static ssize_t rb_info_store(struct device *dev, return ret; } +#if defined(CONFIG_CP_ZEROCOPY) static ssize_t zmc_count_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -3284,6 +3285,9 @@ static ssize_t zmc_count_store(struct device *dev, static ssize_t mif_buff_mng_show(struct device *dev, struct device_attribute *attr, char *buf) { + if (!g_mif_buff_mng) + return 0; + return sprintf(buf, "used(%d)/free(%d)/total(%d)\n", g_mif_buff_mng->used_cell_count, g_mif_buff_mng->free_cell_count, g_mif_buff_mng->cell_count); @@ -3314,19 +3318,24 @@ static ssize_t force_use_memcpy_store(struct device *dev, modem->mld->force_use_memcpy = 1; return count; } +#endif static DEVICE_ATTR_RW(tx_period_ms); static DEVICE_ATTR_RW(rb_info); +#if defined(CONFIG_CP_ZEROCOPY) static DEVICE_ATTR_RO(mif_buff_mng); static DEVICE_ATTR_RW(zmc_count); static DEVICE_ATTR_RW(force_use_memcpy); +#endif static struct attribute *shmem_attrs[] = { &dev_attr_tx_period_ms.attr, &dev_attr_rb_info.attr, +#if defined(CONFIG_CP_ZEROCOPY) &dev_attr_mif_buff_mng.attr, &dev_attr_zmc_count.attr, &dev_attr_force_use_memcpy.attr, +#endif NULL, }; diff --git a/drivers/misc/modem_v1/modem_utils.c b/drivers/misc/modem_v1/modem_utils.c index db5871e95926..16e4a1ac67ae 100644 --- a/drivers/misc/modem_v1/modem_utils.c +++ b/drivers/misc/modem_v1/modem_utils.c @@ -84,7 +84,7 @@ static const char *hex = "0123456789abcdef"; static struct raw_notifier_head cp_crash_notifier; -struct mif_buff_mng *g_mif_buff_mng; +struct mif_buff_mng *g_mif_buff_mng = NULL; static inline void ts2utc(struct timespec *ts, struct utc_time *utc) { diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 7a85980a0d09..d1f539dba3fa 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1254,6 +1254,9 @@ static void read_bulk_callback(struct urb *urb) netif_device_detach(tp->netdev); return; case -ENOENT: + case -EPROTO: + netif_info(tp, intr, tp->netdev, + "Stop submitting intr, status %d\n", status); return; /* the urb is in unlink state */ case -ETIME: if (net_ratelimit()) diff --git a/drivers/net/wireless/bcmdhd_100_10/dhd_pcie_linux.c b/drivers/net/wireless/bcmdhd_100_10/dhd_pcie_linux.c index 2727b7d7d184..cd2f6b27fe78 100644 --- a/drivers/net/wireless/bcmdhd_100_10/dhd_pcie_linux.c +++ b/drivers/net/wireless/bcmdhd_100_10/dhd_pcie_linux.c @@ -75,6 +75,12 @@ #include #include #endif /* USE_SMMU_ARCH_MSM */ +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +#include +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ #define PCI_CFG_RETRY 10 #define OS_HANDLE_MAGIC 0x1234abcd /* Magic # to recognize osh */ @@ -705,6 +711,12 @@ static int dhdpcie_suspend_dev(struct pci_dev *dev) } #endif /* OEM_ANDROID && LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) */ DHD_TRACE_HW4(("%s: Enter\n", __FUNCTION__)); +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) + exynos_pcie_l1ss_ctrl(0, PCIE_L1SS_CTRL_WIFI); +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) dhd_dpc_tasklet_kill(bus->dhd); #endif /* OEM_ANDROID && LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) */ @@ -773,7 +785,12 @@ static int dhdpcie_resume_dev(struct pci_dev *dev) printf("%s:pci_set_power_state error %d \n", __FUNCTION__, err); goto out; } - +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) + exynos_pcie_l1ss_ctrl(1, PCIE_L1SS_CTRL_WIFI); +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ out: return err; } diff --git a/drivers/net/wireless/bcmdhd_100_10/include/linux_osl.h b/drivers/net/wireless/bcmdhd_100_10/include/linux_osl.h index f8e58c1668f5..f675574a4018 100644 --- a/drivers/net/wireless/bcmdhd_100_10/include/linux_osl.h +++ b/drivers/net/wireless/bcmdhd_100_10/include/linux_osl.h @@ -351,10 +351,39 @@ extern uint64 osl_localtime_ns(void); #define bcmp(b1, b2, len) memcmp((b1), (b2), (len)) #define bzero(b, len) memset((b), '\0', (len)) +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +extern int exynos_pcie_l1_exit(int ch_num); +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ /* register access macros */ #ifdef CONFIG_64BIT /* readq is defined only for 64 bit platform */ +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +#define R_REG(osh, r) (\ + SELECT_BUS_READ(osh, \ + ({ \ + __typeof(*(r)) __osl_v = 0; \ + exynos_pcie_l1_exit(0); \ + BCM_REFERENCE(osh); \ + switch (sizeof(*(r))) { \ + case sizeof(uint8): __osl_v = \ + readb((volatile uint8*)(r)); break; \ + case sizeof(uint16): __osl_v = \ + readw((volatile uint16*)(r)); break; \ + case sizeof(uint32): __osl_v = \ + readl((volatile uint32*)(r)); break; \ + case sizeof(uint64): __osl_v = \ + readq((volatile uint64*)(r)); break; \ + } \ + __osl_v; \ + }), \ + OSL_READ_REG(osh, r)) \ +) +#else /* !CONFIG_64BIT */ #define R_REG(osh, r) (\ SELECT_BUS_READ(osh, \ ({ \ @@ -374,6 +403,9 @@ extern uint64 osl_localtime_ns(void); }), \ OSL_READ_REG(osh, r)) \ ) +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ #else /* !CONFIG_64BIT */ #define R_REG(osh, r) (\ SELECT_BUS_READ(osh, \ @@ -395,6 +427,26 @@ extern uint64 osl_localtime_ns(void); #ifdef CONFIG_64BIT /* writeq is defined only for 64 bit platform */ +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +#define W_REG(osh, r, v) do { \ + SELECT_BUS_WRITE(osh, \ + ({ \ + exynos_pcie_l1_exit(0); \ + switch (sizeof(*(r))) { \ + case sizeof(uint8): writeb((uint8)(v), \ + (volatile uint8*)(r)); break; \ + case sizeof(uint16): writew((uint16)(v), \ + (volatile uint16*)(r)); break; \ + case sizeof(uint32): writel((uint32)(v), \ + (volatile uint32*)(r)); break; \ + case sizeof(uint64): writeq((uint64)(v), \ + (volatile uint64*)(r)); break; \ + } \ + }), \ + (OSL_WRITE_REG(osh, r, v))); \ + } while (0) +#else #define W_REG(osh, r, v) do { \ SELECT_BUS_WRITE(osh, \ switch (sizeof(*(r))) { \ @@ -405,7 +457,9 @@ extern uint64 osl_localtime_ns(void); }, \ (OSL_WRITE_REG(osh, r, v))); \ } while (0) - +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ #else /* !CONFIG_64BIT */ #define W_REG(osh, r, v) do { \ SELECT_BUS_WRITE(osh, \ diff --git a/drivers/net/wireless/bcmdhd_100_15/Kconfig b/drivers/net/wireless/bcmdhd_100_15/Kconfig index 08a1c93f7725..8188110eb612 100644 --- a/drivers/net/wireless/bcmdhd_100_15/Kconfig +++ b/drivers/net/wireless/bcmdhd_100_15/Kconfig @@ -19,6 +19,13 @@ config BCM4343 This module adds support for wireless adapters based on Broadcom 4343 chipset. +config BCM43436 + tristate "Broadcom 43436 wireless cards support" + depends on BROADCOM_WIFI + ---help--- + This module adds support for wireless adapters based on + Broadcom 43436 chipset. + config BCM4334 tristate "Broadcom 4334 wireless cards support" depends on BROADCOM_WIFI @@ -96,6 +103,13 @@ config BCM43455 This module adds support for wireless adapters based on Broadcom 43455 chipset. +config BCM43456 + tristate "Broadcom 43456 wireless cards support" + depends on BROADCOM_WIFI + ---help--- + This module adds support for wireless adapters based on + Broadcom 43456 chipset. + config BCM4334W tristate "Broadcom 4334W wireless cards support" depends on BROADCOM_WIFI @@ -133,7 +147,7 @@ config BROADCOM_WIFI_RESERVED_MEM config WIFI_BROADCOM_COB bool "BROADCOM WIFI COB" - depends on (BCM43455 || BCM4343 || BCM43454 || BCM43012) + depends on (BCM43456 || BCM43455 || BCM4343 || BCM43436 || BCM43454 || BCM43012) ---help--- This is a configuration for Broadcom WIFI COB Type. @@ -213,6 +227,13 @@ config SPLIT_ARGOS_SET ---help--- To support SPLIT_ARGOS_SET +config WLAN_VHTDISABLE + bool "WLAN Disable 11ac" + depends on BCM43456 + default n + ---help--- + This is a configuration to disable 11ac. + config WLAN_TSQ_MULTIPLIER bool "Enable TCP TSQ_MULTIPLIER" depends on BROADCOM_WIFI diff --git a/drivers/net/wireless/bcmdhd_100_15/Makefile b/drivers/net/wireless/bcmdhd_100_15/Makefile index c1b5bf6557fa..2660b26bfc8e 100644 --- a/drivers/net/wireless/bcmdhd_100_15/Makefile +++ b/drivers/net/wireless/bcmdhd_100_15/Makefile @@ -312,6 +312,16 @@ DHDCFLAGS += -DSUPPORT_RANDOM_MAC_SCAN # WLC_E_SET_SSID fail DHDCFLAGS += -DSET_SSID_FAIL_CUSTOM_RC=100 +# Enable to block Band A(5G), Only support Band B(2G) +ifeq ($(CONFIG_WLAN_5GDISABLE),y) +DHDCFLAGS += -DDHD_2G_ONLY_SUPPORT +endif + +# Disable VHT(5G HT80) mode +ifeq ($(CONFIG_WLAN_VHTDISABLE),y) +DHDCFLAGS += -DDHD_DISABLE_VHTMODE +endif + # Use legacy random mac # Disable the legacy randmac and enable scanmac #DHDCFLAGS += -DLEGACY_RANDOM_MAC @@ -881,12 +891,19 @@ ifeq ($(CONFIG_ARCH_MSM8998),y) # Use SMMU for IOMEM DHDCFLAGS += -DUSE_SMMU_ARCH_MSM endif + +ifeq ($(CONFIG_ARCH_QCOM),y) + DHDCFLAGS += -DCONFIG_ARCH_MSM + DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS)) +endif + ifeq ($(CONFIG_ARCH_MSM),y) DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS)) endif endif # New Features + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN DHDCFLAGS += -DWL11U -DMFP DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT @@ -922,18 +939,60 @@ ifneq ($(CONFIG_WLAN_GRACE),) DHDCFLAGS += -DWBTEXT # DHDCFLAGS += -DDHD_DEBUG_UART endif -ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_SOC_EXYNOS8890)),y) +ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_SOC_EXYNOS8890) $(CONFIG_ARCH_SDM845)),y) # Runtime PM DHDCFLAGS += -DDHD_PCIE_RUNTIMEPM -DMAX_IDLE_COUNT=11 -DCUSTOM_DHD_RUNTIME_MS=100 # Disable SOFTAP_SEND_HANGEVT DHDCFLAGS := $(filter-out -DSOFTAP_SEND_HANGEVT,$(DHDCFLAGS)) + # CLM + DHDCFLAGS += -DDHD_SUPPORT_GB_999 endif +ifeq ($(filter y,$(CONFIG_ARCH_MSM8998) $(CONFIG_ARCH_SDM845)),y) +# Use SMMU for IOMEM + DHDCFLAGS += -DUSE_SMMU_ARCH_MSM + DHDCFLAGS += -DSET_DMA_MASK_64BIT +endif + +# LOGTRACE_EVENT + DHDCFLAGS += -DSHOW_LOGTRACE + DHDCFLAGS += -DLOGTRACE_FROM_FILE + +# Enable concate blob path + DHDCFLAGS += -DCONCATE_BLOB +# Generate .softap.info + DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE + + DHDCFLAGS += -DWL_STATIC_IF + DHDCFLAGS += -DWL_STATIC_IFNAME_PREFIX="\"swlan0\"" + +# For Samsung factory mode only +ifeq ($(CONFIG_SEC_FACTORY),y) +# Detect NON DMA M2M corruption + DHDCFLAGS += -DDHD_NON_DMA_M2M_CORRUPTION +# Detect FW Memory Corruption + DHDCFLAGS += -DDHD_FW_MEM_CORRUPTION +endif # CONFIG_SEC_FACTORY + ifeq ($(CONFIG_BCM4359),y) DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif + +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif + +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) +# Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif endif ifneq ($(CONFIG_BCM4358),) @@ -1119,8 +1178,22 @@ endif DHDCFLAGS += -DCUSTOM_PSPRETEND_THR=30 endif +ifneq ($(CONFIG_BCM43456),) + DHDCFLAGS += -DBCM43456_CHIP + DHDCFLAGS += -DWLADPS_PRIVATE_CMD +endif + ifneq ($(CONFIG_BCM43455),) - DHDCFLAGS += -DBCM43455_CHIP -DHW_OOB + DHDCFLAGS += -DBCM43455_CHIP +endif +ifneq ($(CONFIG_BCM43454),) + DHDCFLAGS += -DBCM43454_CHIP +endif + +# BCM43454/43455/43456 common difine. +ifneq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456))) + DHDCFLAGS += -DHW_OOB + DHDCFLAGS += -DSUPPORT_MULTIPLE_REVISION DHDCFLAGS += -DUSE_CID_CHECK DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR @@ -1137,10 +1210,10 @@ ifneq ($(CONFIG_BCM43455),) DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16 DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0 DHDCFLAGS += -DPROP_TXSTATUS_VSDB - DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32 # New Features - DHDCFLAGS += -DWL11U + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN + DHDCFLAGS += -DWL11U -DMFP DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT DHDCFLAGS += -DOKC_SUPPORT @@ -1152,17 +1225,70 @@ ifneq ($(CONFIG_BCM43455),) DHDCFLAGS += -DSUPPORT_2G_VHT DHDCFLAGS += -DSUPPORT_WL_TXPOWER DHDCFLAGS += -DBCMCCX_S69 -ifeq ($(CONFIG_BCM43455),y) +ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),y) DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif DHDCFLAGS += -DCUSTOM_PSPRETEND_THR=30 + DHDCFLAGS += -DDHD_LOG_DUMP +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif + + # FCC power limit control on ch12/13. + # # DHDCFLAGS += -DFCC_PWR_LIMIT_2G + # + # # Enable Roam time thresh + DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND + DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10 + DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000 + DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925 + +ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455)), y) + #Support Qatar 5G band 36-64, 100-144, 149-165 channels + DHDCFLAGS += -DDHD_SUPPORT_QA_6 +endif + +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) + # Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif + +ifneq ($(filter y,$(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43455) $(CONFIG_BCM43456))) + # Enable Firmware Coredump + DHDCFLAGS += -DDHD_FW_COREDUMP +ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y) + DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP +endif + # Enable concate blob path DHDCFLAGS += -DCONCATE_BLOB # Generate .softap.info DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE + +ifneq ($(CONFIG_BCM43456),) +# STA/SoftAP Concurrent Mode Support for legacy chip + DHDCFLAGS += -DWL_VIRTUAL_APSTA + DHDCFLAGS += -DWL_RESTRICTED_APSTA_SCC + DHDCFLAGS += -DSOFTAP_UAPSD_OFF + DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS)) +# Use restricted channels on STA/SoftAP concurrent mode + DHDCFLAGS += -DAPSTA_RESTRICTED_CHANNEL +# Block ARP during DHCP on STA/SoftAP concurrent mode + DHDCFLAGS += -DAPSTA_BLOCK_ARP_DURING_DHCP + DHDCFLAGS += -DWL_STATIC_IF + DHDCFLAGS += -DWL_STATIC_IFNAME_PREFIX="\"swlan0\"" +# Iface force dev close + DHDCFLAGS += -DIFACE_HANG_FORCE_DEV_CLOSE +endif +endif endif ifneq ($(CONFIG_BCM43454),) @@ -1264,15 +1390,34 @@ endif ifneq ($(CONFIG_BCM4343),) DHDCFLAGS += -DBCM43430_CHIP -DSUPPORT_MULTIPLE_REVISION -DHW_OOB DHDCFLAGS += -DUSE_CID_CHECK - DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0 DHDCFLAGS += -DCUSTOM_ASSOC_RETRY_MAX=7 + DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP # tput enhancement DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128 DHDCFLAGS += -DRXFRAME_THREAD -DRXTHREAD_ONLYSTA DHDCFLAGS += -DMAX_HDR_READ=128 DHDCFLAGS += -DDHD_FIRSTREAD=128 DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16 +ifeq ($(CONFIG_BCM43436),y) + DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 + DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0 + DHDCFLAGS += -DCUSTOM_FRAMEBURST_SET=1 +# Enable Firmware Coredump + DHDCFLAGS += -DDHD_FW_COREDUMP + DHDCFLAGS += -DDHD_LOG_DUMP +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif +ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y) + DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP +endif +else + DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0 +endif # New Features + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN DHDCFLAGS += -DWL11U DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT @@ -1284,11 +1429,26 @@ ifeq ($(CONFIG_BCM4343),y) DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif +# FCC power limit control on ch12/13. + DHDCFLAGS += -DFCC_PWR_LIMIT_2G +# Enable Roam time thresh + DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND + DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10 + DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000 + DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925 # Remove common feature for BCM4343 DHDCFLAGS :=$(filter-out -DROAM_AP_ENV_DETECTION,$(DHDCFLAGS)) DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS)) + DHDCFLAGS :=$(filter-out -DSUPPORT_P2P_GO_PS,$(DHDCFLAGS)) # Generate .softap.info DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) +# Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif endif ifneq ($(CONFIG_BCM43012),) diff --git a/drivers/net/wireless/bcmdhd_100_15/Makefile.kk b/drivers/net/wireless/bcmdhd_100_15/Makefile.kk index 5e1136531b07..4e689aadee3f 100644 --- a/drivers/net/wireless/bcmdhd_100_15/Makefile.kk +++ b/drivers/net/wireless/bcmdhd_100_15/Makefile.kk @@ -312,6 +312,16 @@ DHDCFLAGS += -DSUPPORT_RANDOM_MAC_SCAN # WLC_E_SET_SSID fail DHDCFLAGS += -DSET_SSID_FAIL_CUSTOM_RC=100 +# Enable to block Band A(5G), Only support Band B(2G) +ifeq ($(CONFIG_WLAN_5GDISABLE),y) +DHDCFLAGS += -DDHD_2G_ONLY_SUPPORT +endif + +# Disable VHT(5G HT80) mode +ifeq ($(CONFIG_WLAN_VHTDISABLE),y) +DHDCFLAGS += -DDHD_DISABLE_VHTMODE +endif + # Use legacy random mac # Disable the legacy randmac and enable scanmac #DHDCFLAGS += -DLEGACY_RANDOM_MAC @@ -846,12 +856,19 @@ ifeq ($(CONFIG_ARCH_MSM8998),y) # Use SMMU for IOMEM DHDCFLAGS += -DUSE_SMMU_ARCH_MSM endif + +ifeq ($(CONFIG_ARCH_QCOM),y) + DHDCFLAGS += -DCONFIG_ARCH_MSM + DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS)) +endif + ifeq ($(CONFIG_ARCH_MSM),y) DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS)) endif endif # New Features + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN DHDCFLAGS += -DWL11U -DMFP DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT @@ -887,18 +904,60 @@ ifneq ($(CONFIG_WLAN_GRACE),) DHDCFLAGS += -DWBTEXT # DHDCFLAGS += -DDHD_DEBUG_UART endif -ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_SOC_EXYNOS8890)),y) +ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_SOC_EXYNOS8890) $(CONFIG_ARCH_SDM845)),y) # Runtime PM DHDCFLAGS += -DDHD_PCIE_RUNTIMEPM -DMAX_IDLE_COUNT=11 -DCUSTOM_DHD_RUNTIME_MS=100 # Disable SOFTAP_SEND_HANGEVT DHDCFLAGS := $(filter-out -DSOFTAP_SEND_HANGEVT,$(DHDCFLAGS)) + # CLM + DHDCFLAGS += -DDHD_SUPPORT_GB_999 endif +ifeq ($(filter y,$(CONFIG_ARCH_MSM8998) $(CONFIG_ARCH_SDM845)),y) +# Use SMMU for IOMEM + DHDCFLAGS += -DUSE_SMMU_ARCH_MSM + DHDCFLAGS += -DSET_DMA_MASK_64BIT +endif + +# LOGTRACE_EVENT + DHDCFLAGS += -DSHOW_LOGTRACE + DHDCFLAGS += -DLOGTRACE_FROM_FILE + +# Enable concate blob path + DHDCFLAGS += -DCONCATE_BLOB +# Generate .softap.info + DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE + + DHDCFLAGS += -DWL_STATIC_IF + DHDCFLAGS += -DWL_STATIC_IFNAME_PREFIX="\"swlan0\"" + +# For Samsung factory mode only +ifeq ($(CONFIG_SEC_FACTORY),y) +# Detect NON DMA M2M corruption + DHDCFLAGS += -DDHD_NON_DMA_M2M_CORRUPTION +# Detect FW Memory Corruption + DHDCFLAGS += -DDHD_FW_MEM_CORRUPTION +endif # CONFIG_SEC_FACTORY + ifeq ($(CONFIG_BCM4359),y) DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif + +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif + +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) +# Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif endif ifneq ($(CONFIG_BCM4358),) @@ -1084,8 +1143,22 @@ endif DHDCFLAGS += -DCUSTOM_PSPRETEND_THR=30 endif +ifneq ($(CONFIG_BCM43456),) + DHDCFLAGS += -DBCM43456_CHIP + DHDCFLAGS += -DWLADPS_PRIVATE_CMD +endif + ifneq ($(CONFIG_BCM43455),) - DHDCFLAGS += -DBCM43455_CHIP -DHW_OOB + DHDCFLAGS += -DBCM43455_CHIP +endif +ifneq ($(CONFIG_BCM43454),) + DHDCFLAGS += -DBCM43454_CHIP +endif + +# BCM43454/43455/43456 common difine. +ifneq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456))) + DHDCFLAGS += -DHW_OOB + DHDCFLAGS += -DSUPPORT_MULTIPLE_REVISION DHDCFLAGS += -DUSE_CID_CHECK DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR @@ -1102,10 +1175,10 @@ ifneq ($(CONFIG_BCM43455),) DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16 DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0 DHDCFLAGS += -DPROP_TXSTATUS_VSDB - DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32 # New Features - DHDCFLAGS += -DWL11U + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN + DHDCFLAGS += -DWL11U -DMFP DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT DHDCFLAGS += -DOKC_SUPPORT @@ -1117,17 +1190,70 @@ ifneq ($(CONFIG_BCM43455),) DHDCFLAGS += -DSUPPORT_2G_VHT DHDCFLAGS += -DSUPPORT_WL_TXPOWER DHDCFLAGS += -DBCMCCX_S69 -ifeq ($(CONFIG_BCM43455),y) +ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),y) DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif DHDCFLAGS += -DCUSTOM_PSPRETEND_THR=30 + DHDCFLAGS += -DDHD_LOG_DUMP +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif + + # FCC power limit control on ch12/13. + # # DHDCFLAGS += -DFCC_PWR_LIMIT_2G + # + # # Enable Roam time thresh + DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND + DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10 + DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000 + DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925 + +ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455)), y) + #Support Qatar 5G band 36-64, 100-144, 149-165 channels + DHDCFLAGS += -DDHD_SUPPORT_QA_6 +endif + +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) + # Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif + +ifneq ($(filter y,$(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43455) $(CONFIG_BCM43456))) + # Enable Firmware Coredump + DHDCFLAGS += -DDHD_FW_COREDUMP +ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y) + DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP +endif + # Enable concate blob path DHDCFLAGS += -DCONCATE_BLOB # Generate .softap.info DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE + +ifneq ($(CONFIG_BCM43456),) +# STA/SoftAP Concurrent Mode Support for legacy chip + DHDCFLAGS += -DWL_VIRTUAL_APSTA + DHDCFLAGS += -DWL_RESTRICTED_APSTA_SCC + DHDCFLAGS += -DSOFTAP_UAPSD_OFF + DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS)) +# Use restricted channels on STA/SoftAP concurrent mode + DHDCFLAGS += -DAPSTA_RESTRICTED_CHANNEL +# Block ARP during DHCP on STA/SoftAP concurrent mode + DHDCFLAGS += -DAPSTA_BLOCK_ARP_DURING_DHCP + DHDCFLAGS += -DWL_STATIC_IF + DHDCFLAGS += -DWL_STATIC_IFNAME_PREFIX="\"swlan0\"" +# Iface force dev close + DHDCFLAGS += -DIFACE_HANG_FORCE_DEV_CLOSE +endif +endif endif ifneq ($(CONFIG_BCM43454),) @@ -1229,15 +1355,34 @@ endif ifneq ($(CONFIG_BCM4343),) DHDCFLAGS += -DBCM43430_CHIP -DSUPPORT_MULTIPLE_REVISION -DHW_OOB DHDCFLAGS += -DUSE_CID_CHECK - DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0 DHDCFLAGS += -DCUSTOM_ASSOC_RETRY_MAX=7 + DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP # tput enhancement DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128 DHDCFLAGS += -DRXFRAME_THREAD -DRXTHREAD_ONLYSTA DHDCFLAGS += -DMAX_HDR_READ=128 DHDCFLAGS += -DDHD_FIRSTREAD=128 DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16 +ifeq ($(CONFIG_BCM43436),y) + DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 + DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0 + DHDCFLAGS += -DCUSTOM_FRAMEBURST_SET=1 +# Enable Firmware Coredump + DHDCFLAGS += -DDHD_FW_COREDUMP + DHDCFLAGS += -DDHD_LOG_DUMP +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif +ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y) + DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP +endif +else + DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0 +endif # New Features + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN DHDCFLAGS += -DWL11U DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT @@ -1249,11 +1394,26 @@ ifeq ($(CONFIG_BCM4343),y) DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif +# FCC power limit control on ch12/13. + DHDCFLAGS += -DFCC_PWR_LIMIT_2G +# Enable Roam time thresh + DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND + DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10 + DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000 + DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925 # Remove common feature for BCM4343 DHDCFLAGS :=$(filter-out -DROAM_AP_ENV_DETECTION,$(DHDCFLAGS)) DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS)) + DHDCFLAGS :=$(filter-out -DSUPPORT_P2P_GO_PS,$(DHDCFLAGS)) # Generate .softap.info DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) +# Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif endif ifneq ($(CONFIG_BCM43012),) diff --git a/drivers/net/wireless/bcmdhd_100_15/Makefile.lp b/drivers/net/wireless/bcmdhd_100_15/Makefile.lp index a54db0d9a959..5354514c6c4f 100644 --- a/drivers/net/wireless/bcmdhd_100_15/Makefile.lp +++ b/drivers/net/wireless/bcmdhd_100_15/Makefile.lp @@ -312,6 +312,16 @@ DHDCFLAGS += -DSUPPORT_RANDOM_MAC_SCAN # WLC_E_SET_SSID fail DHDCFLAGS += -DSET_SSID_FAIL_CUSTOM_RC=100 +# Enable to block Band A(5G), Only support Band B(2G) +ifeq ($(CONFIG_WLAN_5GDISABLE),y) +DHDCFLAGS += -DDHD_2G_ONLY_SUPPORT +endif + +# Disable VHT(5G HT80) mode +ifeq ($(CONFIG_WLAN_VHTDISABLE),y) +DHDCFLAGS += -DDHD_DISABLE_VHTMODE +endif + # Use legacy random mac # Disable the legacy randmac and enable scanmac #DHDCFLAGS += -DLEGACY_RANDOM_MAC @@ -869,12 +879,19 @@ ifeq ($(CONFIG_ARCH_MSM8998),y) # Use SMMU for IOMEM DHDCFLAGS += -DUSE_SMMU_ARCH_MSM endif + +ifeq ($(CONFIG_ARCH_QCOM),y) + DHDCFLAGS += -DCONFIG_ARCH_MSM + DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS)) +endif + ifeq ($(CONFIG_ARCH_MSM),y) DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS)) endif endif # New Features + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN DHDCFLAGS += -DWL11U -DMFP DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT @@ -910,18 +927,60 @@ ifneq ($(CONFIG_WLAN_GRACE),) DHDCFLAGS += -DWBTEXT # DHDCFLAGS += -DDHD_DEBUG_UART endif -ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_SOC_EXYNOS8890)),y) +ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_SOC_EXYNOS8890) $(CONFIG_ARCH_SDM845)),y) # Runtime PM DHDCFLAGS += -DDHD_PCIE_RUNTIMEPM -DMAX_IDLE_COUNT=11 -DCUSTOM_DHD_RUNTIME_MS=100 # Disable SOFTAP_SEND_HANGEVT DHDCFLAGS := $(filter-out -DSOFTAP_SEND_HANGEVT,$(DHDCFLAGS)) + # CLM + DHDCFLAGS += -DDHD_SUPPORT_GB_999 endif +ifeq ($(filter y,$(CONFIG_ARCH_MSM8998) $(CONFIG_ARCH_SDM845)),y) +# Use SMMU for IOMEM + DHDCFLAGS += -DUSE_SMMU_ARCH_MSM + DHDCFLAGS += -DSET_DMA_MASK_64BIT +endif + +# LOGTRACE_EVENT + DHDCFLAGS += -DSHOW_LOGTRACE + DHDCFLAGS += -DLOGTRACE_FROM_FILE + +# Enable concate blob path + DHDCFLAGS += -DCONCATE_BLOB +# Generate .softap.info + DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE + + DHDCFLAGS += -DWL_STATIC_IF + DHDCFLAGS += -DWL_STATIC_IFNAME_PREFIX="\"swlan0\"" + +# For Samsung factory mode only +ifeq ($(CONFIG_SEC_FACTORY),y) +# Detect NON DMA M2M corruption + DHDCFLAGS += -DDHD_NON_DMA_M2M_CORRUPTION +# Detect FW Memory Corruption + DHDCFLAGS += -DDHD_FW_MEM_CORRUPTION +endif # CONFIG_SEC_FACTORY + ifeq ($(CONFIG_BCM4359),y) DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif + +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif + +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) +# Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif endif ifneq ($(CONFIG_BCM4358),) @@ -1107,8 +1166,22 @@ endif DHDCFLAGS += -DCUSTOM_PSPRETEND_THR=30 endif +ifneq ($(CONFIG_BCM43456),) + DHDCFLAGS += -DBCM43456_CHIP + DHDCFLAGS += -DWLADPS_PRIVATE_CMD +endif + ifneq ($(CONFIG_BCM43455),) - DHDCFLAGS += -DBCM43455_CHIP -DHW_OOB + DHDCFLAGS += -DBCM43455_CHIP +endif +ifneq ($(CONFIG_BCM43454),) + DHDCFLAGS += -DBCM43454_CHIP +endif + +# BCM43454/43455/43456 common difine. +ifneq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456))) + DHDCFLAGS += -DHW_OOB + DHDCFLAGS += -DSUPPORT_MULTIPLE_REVISION DHDCFLAGS += -DUSE_CID_CHECK DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR @@ -1125,10 +1198,10 @@ ifneq ($(CONFIG_BCM43455),) DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16 DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0 DHDCFLAGS += -DPROP_TXSTATUS_VSDB - DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32 # New Features - DHDCFLAGS += -DWL11U + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN + DHDCFLAGS += -DWL11U -DMFP DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT DHDCFLAGS += -DOKC_SUPPORT @@ -1140,17 +1213,70 @@ ifneq ($(CONFIG_BCM43455),) DHDCFLAGS += -DSUPPORT_2G_VHT DHDCFLAGS += -DSUPPORT_WL_TXPOWER DHDCFLAGS += -DBCMCCX_S69 -ifeq ($(CONFIG_BCM43455),y) +ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),y) DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif DHDCFLAGS += -DCUSTOM_PSPRETEND_THR=30 + DHDCFLAGS += -DDHD_LOG_DUMP +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif + + # FCC power limit control on ch12/13. + # # DHDCFLAGS += -DFCC_PWR_LIMIT_2G + # + # # Enable Roam time thresh + DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND + DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10 + DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000 + DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925 + +ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455)), y) + #Support Qatar 5G band 36-64, 100-144, 149-165 channels + DHDCFLAGS += -DDHD_SUPPORT_QA_6 +endif + +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) + # Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif + +ifneq ($(filter y,$(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43455) $(CONFIG_BCM43456))) + # Enable Firmware Coredump + DHDCFLAGS += -DDHD_FW_COREDUMP +ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y) + DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP +endif + # Enable concate blob path DHDCFLAGS += -DCONCATE_BLOB # Generate .softap.info DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE + +ifneq ($(CONFIG_BCM43456),) +# STA/SoftAP Concurrent Mode Support for legacy chip + DHDCFLAGS += -DWL_VIRTUAL_APSTA + DHDCFLAGS += -DWL_RESTRICTED_APSTA_SCC + DHDCFLAGS += -DSOFTAP_UAPSD_OFF + DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS)) +# Use restricted channels on STA/SoftAP concurrent mode + DHDCFLAGS += -DAPSTA_RESTRICTED_CHANNEL +# Block ARP during DHCP on STA/SoftAP concurrent mode + DHDCFLAGS += -DAPSTA_BLOCK_ARP_DURING_DHCP + DHDCFLAGS += -DWL_STATIC_IF + DHDCFLAGS += -DWL_STATIC_IFNAME_PREFIX="\"swlan0\"" +# Iface force dev close + DHDCFLAGS += -DIFACE_HANG_FORCE_DEV_CLOSE +endif +endif endif ifneq ($(CONFIG_BCM43454),) @@ -1252,15 +1378,34 @@ endif ifneq ($(CONFIG_BCM4343),) DHDCFLAGS += -DBCM43430_CHIP -DSUPPORT_MULTIPLE_REVISION -DHW_OOB DHDCFLAGS += -DUSE_CID_CHECK - DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0 DHDCFLAGS += -DCUSTOM_ASSOC_RETRY_MAX=7 + DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP # tput enhancement DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128 DHDCFLAGS += -DRXFRAME_THREAD -DRXTHREAD_ONLYSTA DHDCFLAGS += -DMAX_HDR_READ=128 DHDCFLAGS += -DDHD_FIRSTREAD=128 DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16 +ifeq ($(CONFIG_BCM43436),y) + DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 + DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0 + DHDCFLAGS += -DCUSTOM_FRAMEBURST_SET=1 +# Enable Firmware Coredump + DHDCFLAGS += -DDHD_FW_COREDUMP + DHDCFLAGS += -DDHD_LOG_DUMP +ifneq ($(CONFIG_WLAN_VENDOR_DUMP_ENABLE),y) + DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/vendor/log/wifi/\"" + DHDCFLAGS += -DDHD_FILE_DUMP_EVENT + DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) +endif +ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y) + DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP +endif +else + DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0 +endif # New Features + DHDCFLAGS += -DDHD_RANDOM_MAC_SCAN DHDCFLAGS += -DWL11U DHDCFLAGS += -DBCMCCX DHDCFLAGS += -DWES_SUPPORT @@ -1272,11 +1417,26 @@ ifeq ($(CONFIG_BCM4343),y) DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC DRIVER_TYPE = y endif +# FCC power limit control on ch12/13. + DHDCFLAGS += -DFCC_PWR_LIMIT_2G +# Enable Roam time thresh + DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND + DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10 + DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000 + DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925 # Remove common feature for BCM4343 DHDCFLAGS :=$(filter-out -DROAM_AP_ENV_DETECTION,$(DHDCFLAGS)) DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS)) + DHDCFLAGS :=$(filter-out -DSUPPORT_P2P_GO_PS,$(DHDCFLAGS)) # Generate .softap.info DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE +ifneq ($(PLATFORM_VERSION),) +# Android O OS use below features +ifeq ($(shell expr $(MAJOR_VERSION) \>= 8),1) +# Use single nvram file + DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE +endif +endif endif ifneq ($(CONFIG_BCM43012),) diff --git a/drivers/net/wireless/bcmdhd_100_15/bcmsdh_sdmmc_linux.c b/drivers/net/wireless/bcmdhd_100_15/bcmsdh_sdmmc_linux.c index 5673d118ac90..5925b8121aae 100644 --- a/drivers/net/wireless/bcmdhd_100_15/bcmsdh_sdmmc_linux.c +++ b/drivers/net/wireless/bcmdhd_100_15/bcmsdh_sdmmc_linux.c @@ -24,7 +24,7 @@ * * <> * - * $Id: bcmsdh_sdmmc_linux.c 796911 2018-12-27 10:27:04Z $ + * $Id: bcmsdh_sdmmc_linux.c 864822 2020-02-17 08:48:57Z $ */ #include @@ -51,6 +51,14 @@ #define SDIO_DEVICE_ID_BROADCOM_DEFAULT 0x0000 +#if !defined(SDIO_DEVICE_ID_BROADCOM_43430) +#define SDIO_DEVICE_ID_BROADCOM_43430 43430 +#endif /* !defined(SDIO_DEVICE_ID_BROADCOM_43430) */ + +#if !defined(SDIO_DEVICE_ID_BROADCOM_4345) +#define SDIO_DEVICE_ID_BROADCOM_4345 0x4345 +#endif /* !defined(SDIO_DEVICE_ID_BROADCOM_4345) */ + extern void wl_cfg80211_set_parent_dev(void *dev); extern void sdioh_sdmmc_devintr_off(sdioh_info_t *sd); extern void sdioh_sdmmc_devintr_on(sdioh_info_t *sd); @@ -188,6 +196,8 @@ static const struct sdio_device_id bcmsdh_sdmmc_ids[] = { { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, BCM43014_D11N_ID) }, { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, BCM43014_D11N2G_ID) }, { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, BCM43014_D11N5G_ID) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_43430) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4345) }, /* { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_ANY_ID) }, */ /* end: all zeroes */ { 0, 0, 0, 0}, diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd.h b/drivers/net/wireless/bcmdhd_100_15/dhd.h index c0568119080c..b86949b929ef 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd.h +++ b/drivers/net/wireless/bcmdhd_100_15/dhd.h @@ -27,7 +27,7 @@ * * <> * - * $Id: dhd.h 860004 2020-01-20 02:39:12Z $ + * $Id: dhd.h 871395 2020-04-01 06:47:36Z $ */ /**************** @@ -2653,6 +2653,7 @@ static INLINE int dhd_check_module_mac(dhd_pub_t *dhdp) { return 0; } int dhd_read_cis(dhd_pub_t *dhdp); void dhd_clear_cis(dhd_pub_t *dhdp); #if defined(SUPPORT_MULTIPLE_MODULE_CIS) && defined(USE_CID_CHECK) +bool dhd_check_module(char *module_name); extern int dhd_check_module_b85a(void); extern int dhd_check_module_b90(void); #define BCM4359_MODULE_TYPE_B90B 1 @@ -3233,7 +3234,9 @@ int dhd_print_rtt_data(void *dev, dhd_pub_t *dhdp, const void *user_buf, void *fp, uint32 len, void *pos); int dhd_get_debug_dump_file_name(void *dev, dhd_pub_t *dhdp, char *dump_path, int size); +#if defined(BCMPCIE) uint32 dhd_get_ext_trap_len(void *ndev, dhd_pub_t *dhdp); +#endif /* BCMPCIE */ uint32 dhd_get_time_str_len(void); uint32 dhd_get_health_chk_len(void *ndev, dhd_pub_t *dhdp); uint32 dhd_get_dhd_dump_len(void *ndev, dhd_pub_t *dhdp); diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_custom_sec.c b/drivers/net/wireless/bcmdhd_100_15/dhd_custom_sec.c index 46622352c853..f09c9223f154 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_custom_sec.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_custom_sec.c @@ -894,11 +894,28 @@ const char *softap_info_values[] = { #endif /* DHD_SOFTAP_DUAL_IF_INFO */ "yes", "10", "yes", "yes", "yes", NULL }; -#elif defined(BCM43455_CHIP) +#elif defined(BCM4359_CHIP) +const char *softap_info_values[] = { + "yes", +#ifdef DHD_SOFTAP_DUAL_IF_INFO +#if defined(CONFIG_WLAN_GRACE) || defined(CONFIG_SEC_KELLYLTE_PROJECT) || \ + defined(CONFIG_SEC_LYKANLTE_PROJECT) + "yes", +#else + "no", +#endif /* CONFIG_WLAN_GRACE || CONFIG_SEC_KELLYLTE_PROJECT || CONFIG_SEC_LYKANLTE_PROJECT */ +#endif /* DHD_SOFTAP_DUAL_IF_INFO */ + "yes", "10", "yes", "yes", "yes", NULL +}; +#elif defined(BCM43455_CHIP) || defined(BCM43456_CHIP) const char *softap_info_values[] = { "no", #ifdef DHD_SOFTAP_DUAL_IF_INFO +#ifdef WL_RESTRICTED_APSTA_SCC + "yes", +#else "no", +#endif /* WL_RESTRICTED_APSTA_SCC */ #endif /* DHD_SOFTAP_DUAL_IF_INFO */ "yes", "10", "no", "yes", "yes", NULL }; @@ -1008,7 +1025,8 @@ dhd_force_disable_singlcore_scan(dhd_pub_t *dhd) } } #endif /* FORCE_DISABLE_SINGLECORE_SCAN */ -#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) +#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) && \ + !defined(CONFIG_SOC_EXYNOS7870) void set_irq_cpucore(unsigned int irq, cpumask_var_t default_cpu_mask, cpumask_var_t affinity_cpu_mask) @@ -1021,4 +1039,4 @@ set_irq_cpucore(unsigned int irq, cpumask_var_t default_cpu_mask, ARGOS_P2P_TABLE_LABEL, affinity_cpu_mask, default_cpu_mask); } -#endif /* SET_PCIE_IRQ_CPU_CORE && !DHD_LB_IRQSET */ +#endif /* SET_PCIE_IRQ_CPU_CORE && !DHD_LB_IRQSET && !CONFIG_SOC_EXYNOS7870 */ diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_debug.h b/drivers/net/wireless/bcmdhd_100_15/dhd_debug.h index 4deb07a8c811..ecfb904fc564 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_debug.h +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_debug.h @@ -23,7 +23,7 @@ * software in any way with any other Broadcom software provided under a license * other than the GPL, without Broadcom's express prior written consent. * - * $Id: dhd_debug.h 852609 2019-11-26 05:28:02Z $ + * $Id: dhd_debug.h 865142 2020-02-19 02:27:53Z $ */ #ifndef _dhd_debug_h_ @@ -442,6 +442,9 @@ typedef enum { /* Dropped by driver for any other reason. */ RX_PKT_FATE_DRV_DROP_OTHER, + /* Indicate RX Host Wake up packet. */ + RX_PKT_FATE_WAKE_PKT, + } wifi_rx_packet_fate; typedef enum { diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_linux.c b/drivers/net/wireless/bcmdhd_100_15/dhd_linux.c index 1ff7ea10588d..5eda0695a685 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_linux.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_linux.c @@ -25,7 +25,7 @@ * * <> * - * $Id: dhd_linux.c 864043 2020-02-12 07:34:04Z $ + * $Id: dhd_linux.c 873599 2020-04-16 03:06:56Z $ */ #include @@ -869,8 +869,11 @@ static int dhd_pm_callback(struct notifier_block *nfb, unsigned long action, voi } #endif /* defined(SUPPORT_P2P_GO_PS) && defined(PROP_TXSTATUS) */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) && (LINUX_VERSION_CODE <= \ + KERNEL_VERSION(2, 6, 39)) dhd_mmc_suspend = suspend; smp_mb(); +#endif // endif return ret; } @@ -1623,6 +1626,7 @@ static int dhd_wait_for_file_dump(dhd_pub_t *dhdp) if (wl_cfg80211_is_hal_started(cfg)) { int timeleft = 0; + BCM_REFERENCE(timeleft); DHD_ERROR(("[DUMP] %s: HAL started. send urgent event\n", __FUNCTION__)); dhd_dbg_send_urgent_evt(dhdp, NULL, 0); @@ -4340,12 +4344,13 @@ dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan) unsigned long flags; #endif // endif #ifdef DHD_WAKE_STATUS - int pkt_wake = 0; wake_counts_t *wcp = NULL; #endif /* DHD_WAKE_STATUS */ + int pkt_wake = 0; DHD_TRACE(("%s: Enter\n", __FUNCTION__)); BCM_REFERENCE(dump_data); + BCM_REFERENCE(pkt_wake); for (i = 0; pktbuf && i < numpkt; i++, pktbuf = pnext) { struct ether_header *eh; @@ -4620,6 +4625,7 @@ dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan) #if defined(DHD_WAKE_STATUS) && defined(DHD_WAKEPKT_DUMP) if (pkt_wake) { prhex("[wakepkt_dump]", (char*)dump_data, MIN(len, 32)); + dhd_prhex("[wakepkt_dump]", (char*)dump_data, MIN(len, 64), DHD_ERROR_VAL); DHD_ERROR(("config check in_suspend: %d ", dhdp->in_suspend)); #ifdef ARP_OFFLOAD_SUPPORT DHD_ERROR(("arp hmac_update:%d \n", dhdp->hmac_updated)); @@ -4639,7 +4645,11 @@ dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan) DHD_DBG_PKT_MON_RX(dhdp, skb); #ifdef DHD_PKT_LOGGING - DHD_PKTLOG_RX(dhdp, skb); + if (pkt_wake) { + DHD_PKTLOG_WAKERX(dhdp, skb); + } else { + DHD_PKTLOG_RX(dhdp, skb); + } #endif /* DHD_PKT_LOGGING */ /* Strip header, count, deliver upward */ skb_pull(skb, ETH_HLEN); @@ -5185,10 +5195,11 @@ exit: static int dhd_dpc_thread(void *data) { -#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) +#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) && \ + !defined(CONFIG_SOC_EXYNOS7870) int ret = 0; unsigned long flags; -#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET */ +#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET && !CONFIG_SOC_EXYNOS7870 */ tsk_ctl_t *tsk = (tsk_ctl_t *)data; dhd_info_t *dhd = (dhd_info_t *)tsk->parent; @@ -5202,7 +5213,8 @@ dhd_dpc_thread(void *data) setScheduler(current, SCHED_FIFO, ¶m); } -#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) +#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) && \ + !defined(CONFIG_SOC_EXYNOS7870) if (!zalloc_cpumask_var(&dhd->pub.default_cpu_mask, GFP_KERNEL)) { DHD_ERROR(("dpc_thread, zalloc_cpumask_var error\n")); dhd->pub.affinity_isdpc = FALSE; @@ -5252,7 +5264,7 @@ dhd_dpc_thread(void *data) #ifdef CUSTOM_SET_CPUCORE dhd->pub.current_dpc = current; #endif /* CUSTOM_SET_CPUCORE */ -#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET */ +#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET && !CONFIG_SOC_EXYNOS7870 */ /* Run until signal received */ while (1) { if (!binary_sema_down(tsk)) { @@ -5310,10 +5322,11 @@ dhd_rxf_thread(void *data) { tsk_ctl_t *tsk = (tsk_ctl_t *)data; dhd_info_t *dhd = (dhd_info_t *)tsk->parent; -#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) +#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) && \ + !defined(CONFIG_SOC_EXYNOS7870) int ret = 0; unsigned long flags; -#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET */ +#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET && !CONFIG_SOC_EXYNOS7870 */ #if defined(WAIT_DEQUEUE) #define RXF_WATCHDOG_TIME 250 /* BARK_TIME(1000) / */ ulong watchdogTime = OSL_SYSUPTIME(); /* msec */ @@ -5330,7 +5343,8 @@ dhd_rxf_thread(void *data) setScheduler(current, SCHED_FIFO, ¶m); } -#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) +#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) && \ + !defined(CONFIG_SOC_EXYNOS7870) if (!zalloc_cpumask_var(&dhd->pub.rxf_affinity_cpu_mask, GFP_KERNEL)) { DHD_ERROR(("rxthread zalloc_cpumask_var error\n")); dhd->pub.affinity_isrxf = FALSE; @@ -5354,7 +5368,7 @@ dhd_rxf_thread(void *data) #ifdef CUSTOM_SET_CPUCORE dhd->pub.current_rxf = current; #endif /* CUSTOM_SET_CPUCORE */ -#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET */ +#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET && !CONFIG_SOC_EXYNOS7870 */ /* Run until signal received */ while (1) { if (down_interruptible(&tsk->sema) == 0) { @@ -9261,7 +9275,7 @@ bool dhd_validate_chipid(dhd_pub_t *dhdp) config_chipid = BCM43430_CHIP_ID; #elif defined(BCM43018_CHIP) config_chipid = BCM43018_CHIP_ID; -#elif defined(BCM43455_CHIP) +#elif defined(BCM43455_CHIP) || defined(BCM43456_CHIP) config_chipid = BCM4345_CHIP_ID; #elif defined(BCM43454_CHIP) config_chipid = BCM43454_CHIP_ID; @@ -9277,6 +9291,11 @@ bool dhd_validate_chipid(dhd_pub_t *dhdp) return FALSE; #endif /* BCM4354_CHIP */ +#ifdef SUPPORT_MULTIPLE_CHIP_4345X + if (config_chipid == BCM43454_CHIP_ID || config_chipid == BCM4345_CHIP_ID) { + return TRUE; + } +#endif /* SUPPORT_MULTIPLE_CHIP_4345X */ #if defined(BCM4354_CHIP) && defined(SUPPORT_MULTIPLE_REVISION) if (chipid == BCM4350_CHIP_ID && config_chipid == BCM4354_CHIP_ID) { return TRUE; @@ -10123,6 +10142,9 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) #ifdef DISABLE_PRUNED_SCAN uint32 scan_features = 0; #endif /* DISABLE_PRUNED_SCAN */ +#ifdef DHD_2G_ONLY_SUPPORT + uint band = WLC_BAND_2G; +#endif /* DHD_2G_ONLY_SUPPORT */ #ifdef BCMPCIE_OOB_HOST_WAKE uint32 hostwake_oob = 0; #endif /* BCMPCIE_OOB_HOST_WAKE */ @@ -10138,7 +10160,9 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) uint32 rrm_bcn_req_thrtl_win = RRM_BCNREQ_MAX_CHAN_TIME * 2; uint32 rrm_bcn_req_max_off_chan_time = RRM_BCNREQ_MAX_CHAN_TIME; #endif /* WBTEXT && RRM_BCNREQ_MAX_CHAN_TIME */ +#if !defined(CONFIG_BCM4359) wl_wlc_version_t wlc_ver; +#endif /* CONFIG_BCM4359 */ #ifdef PKT_FILTER_SUPPORT dhd_pkt_filter_enable = TRUE; @@ -10474,6 +10498,15 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) else dhd->info->rxthread_enabled = TRUE; #endif // endif + +#ifdef DHD_2G_ONLY_SUPPORT + DHD_ERROR(("Enabled DHD 2G only support!!\n")); + ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_BAND, (char *)&band, sizeof(band), TRUE, 0); + if (ret < 0) { + DHD_ERROR(("%s Set Band B failed %d\n", __FUNCTION__, ret)); + } +#endif /* DHD_2G_ONLY_SUPPORT */ + /* Set Country code */ if (dhd->dhd_cspec.ccode[0] != 0) { ret = dhd_iovar(dhd, 0, "country", (char *)&dhd->dhd_cspec, sizeof(wl_country_t), @@ -10843,6 +10876,10 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) dhd_control_he_enab(dhd, control_he_enab); #endif /* DISABLE_HE_ENAB || CUSTOM_CONTROL_HE_ENAB */ +#ifdef DHD_DISABLE_VHTMODE + dhd_disable_vhtmode(dhd); +#endif /* DHD_DISABLE_VHTMODE */ + #ifdef CUSTOM_PSPRETEND_THR /* Turn off MPC in AP mode */ ret = dhd_iovar(dhd, 0, "pspretend_threshold", (char *)&pspretend_thr, @@ -11245,6 +11282,7 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) sec_save_wlinfo(fw_version, EPI_VERSION_STR, dhd->info->nv_path, clm_version); #endif /* WRITE_WLANINFO */ +#if !defined(CONFIG_BCM4359) /* query for 'wlc_ver' to get version info from firmware */ memset(&wlc_ver, 0, sizeof(wl_wlc_version_t)); ret = dhd_iovar(dhd, 0, "wlc_ver", NULL, 0, (char *)&wlc_ver, @@ -11255,6 +11293,7 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) dhd->wlc_ver_major = wlc_ver.wlc_ver_major; dhd->wlc_ver_minor = wlc_ver.wlc_ver_minor; } +#endif /* !CONFIG_BCM4359 */ #ifdef GEN_SOFTAP_INFO_FILE sec_save_softap_info(); #endif /* GEN_SOFTAP_INFO_FILE */ @@ -14505,6 +14544,7 @@ dhd_dev_set_whitelist_ssid(struct net_device *dev, wl_ssid_whitelist_t *ssid_whi if (flush) { ssid_whitelist = &whitelist_ssid_flush; ssid_whitelist->ssid_count = 0; + len = sizeof(whitelist_ssid_flush); } else { DHD_ERROR(("%s : Nothing to do here\n", __FUNCTION__)); return BCME_BADARG; @@ -15512,12 +15552,66 @@ void dhd_bus_country_set(struct net_device *dev, wl_country_t *cspec, bool notif if (dhd && dhd->pub.up) { memcpy(&dhd->pub.dhd_cspec, cspec, sizeof(wl_country_t)); +#ifdef DHD_DISABLE_VHTMODE + dhd_disable_vhtmode(&dhd->pub); +#endif /* DHD_DISABLE_VHTMODE */ #ifdef WL_CFG80211 wl_update_wiphybands(cfg, notify); #endif // endif } } +#ifdef DHD_DISABLE_VHTMODE +void +dhd_disable_vhtmode(dhd_pub_t *dhd) +{ + int ret = 0; + uint32 vhtmode = FALSE; + char buf[32]; + + /* Get vhtmode */ + ret = dhd_iovar(dhd, 0, "vhtmode", NULL, 0, (char *)&buf, sizeof(buf), FALSE); + if (ret < 0) { + DHD_ERROR(("%s Get vhtmode Fail ret %d\n", __FUNCTION__, ret)); + return; + } + memcpy(&vhtmode, buf, sizeof(uint32)); + if (vhtmode == 0) { + DHD_ERROR(("%s Get vhtmode is 0\n", __FUNCTION__)); + return; + } + vhtmode = FALSE; + + /* Set vhtmode */ + ret = dhd_iovar(dhd, 0, "vhtmode", (char *)&vhtmode, sizeof(vhtmode), NULL, 0, TRUE); + if (ret == 0) { + DHD_ERROR(("%s Set vhtmode Success %d\n", __FUNCTION__, vhtmode)); + } else { + if (ret == BCME_NOTDOWN) { + uint wl_down = 1; + ret = dhd_wl_ioctl_cmd(dhd, WLC_DOWN, + (char *)&wl_down, sizeof(wl_down), TRUE, 0); + if (ret) { + DHD_ERROR(("%s WL_DOWN Fail ret %d\n", __FUNCTION__, ret)); + return; + } + + ret = dhd_iovar(dhd, 0, "vhtmode", (char *)&vhtmode, + sizeof(vhtmode), NULL, 0, TRUE); + DHD_ERROR(("%s Set vhtmode %d, ret %d\n", __FUNCTION__, vhtmode, ret)); + + ret = dhd_wl_ioctl_cmd(dhd, WLC_UP, + (char *)&wl_down, sizeof(wl_down), TRUE, 0); + if (ret) { + DHD_ERROR(("%s WL_UP Fail ret %d\n", __FUNCTION__, ret)); + } + } else { + DHD_ERROR(("%s Set vhtmode 0 failed %d\n", __FUNCTION__, ret)); + } + } +} +#endif /* DHD_DISABLE_VHTMODE */ + void dhd_bus_band_set(struct net_device *dev, uint band) { dhd_info_t *dhd = DHD_DEV_INFO(dev); @@ -17175,9 +17269,9 @@ void dhd_schedule_memdump(dhd_pub_t *dhdp, uint8 *buf, uint32 size) unsigned long flags = 0; dhd_dump_t *dump = NULL; dhd_info_t *dhd_info = NULL; -#if !defined(DHD_DUMP_FILE_WRITE_FROM_KERNEL) +#if !defined(DHD_DUMP_FILE_WRITE_FROM_KERNEL) && defined(DHD_LOG_DUMP) log_dump_type_t type = DLD_BUF_TYPE_ALL; -#endif /* !DHD_DUMP_FILE_WRITE_FROM_KERNEL */ +#endif /* !DHD_DUMP_FILE_WRITE_FROM_KERNEL && DHD_LOG_DUMP */ dhd_info = (dhd_info_t *)dhdp->info; dump = (dhd_dump_t *)MALLOC(dhdp->osh, sizeof(dhd_dump_t)); @@ -17945,6 +18039,7 @@ dhd_get_time_str_len() return strlen(time_str); } +#if defined(BCMPCIE) uint32 dhd_get_ext_trap_len(void *ndev, dhd_pub_t *dhdp) { @@ -17966,6 +18061,7 @@ dhd_get_ext_trap_len(void *ndev, dhd_pub_t *dhdp) } return length; } +#endif /* BCMPCIE */ #if defined(DHD_FW_COREDUMP) && defined(DNGL_EVENT_SUPPORT) uint32 @@ -18192,6 +18288,7 @@ dhd_log_flush(dhd_pub_t *dhdp, log_dump_type_t *type) int i = 0; #endif /* EWP_EDL */ dhd_info_t *dhd_info = NULL; + BCM_REFERENCE(dhd_info); /* if dhdp is null, its extremely unlikely that log dump will be scheduled * so not freeing 'type' here is ok, even if we want to free 'type' @@ -18240,7 +18337,9 @@ dhd_log_flush(dhd_pub_t *dhdp, log_dump_type_t *type) dhd_flush_logtrace_process(dhd_info); } #else +#if defined(SHOW_LOGTRACE) dhd_flush_logtrace_process(dhd_info); +#endif /* SHOW_LOGTRACE */ #endif /* EWP_EDL */ #ifdef CUSTOMER_HW4_DEBUG @@ -18395,6 +18494,7 @@ exit: } #endif /* DHD_FW_COREDUMP && DNGL_EVENT_SUPPORT */ +#if defined(BCMPCIE) int dhd_print_ext_trap_data(void *dev, dhd_pub_t *dhdp, const void *user_buf, void *fp, uint32 len, void *pos) @@ -18439,6 +18539,7 @@ dhd_print_ext_trap_data(void *dev, dhd_pub_t *dhdp, const void *user_buf, exit: return ret; } +#endif /* BCMPCIE */ int dhd_print_dump_data(void *dev, dhd_pub_t *dhdp, const void *user_buf, @@ -18854,7 +18955,7 @@ do_dhd_log_dump(dhd_pub_t *dhdp, log_dump_type_t *type) #if defined(DHD_FW_COREDUMP) && defined(DNGL_EVENT_SUPPORT) len = dhd_get_health_chk_len(NULL, dhdp); if (len) { - if (dhd_print_ext_trap_data(NULL, dhdp, 0, fp, len, &pos) < 0) + if (dhd_print_health_chk_data(NULL, dhdp, 0, fp, len, &pos) < 0) goto exit2; } #endif /* DHD_FW_COREDUMP && DNGL_EVENT_SUPPORT */ @@ -20369,15 +20470,16 @@ dhd_set_irq_cpucore(dhd_pub_t *dhdp, int affinity_cmd) switch (affinity_cmd) { case PCIE_IRQ_AFFINITY_OFF: break; - case PCIE_IRQ_AFFINITY_BIG_CORE_ANY: #if defined(CONFIG_ARCH_SM8150) + case PCIE_IRQ_AFFINITY_BIG_CORE_ANY: + case PCIE_IRQ_AFFINITY_BIG_CORE_EXYNOS: irq_set_affinity_hint(pcie_irq, dhdp->info->cpumask_primary); irq_set_affinity(pcie_irq, dhdp->info->cpumask_primary); -#else /* Exynos and Others */ - irq_set_affinity(pcie_irq, dhdp->info->cpumask_primary); -#endif /* CONFIG_ARCH_SM8150 */ break; -#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) +#elif defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) + case PCIE_IRQ_AFFINITY_BIG_CORE_ANY: + irq_set_affinity(pcie_irq, dhdp->info->cpumask_primary); + break; case PCIE_IRQ_AFFINITY_BIG_CORE_EXYNOS: DHD_ERROR(("%s, PCIe IRQ:%u set Core %d\n", __FUNCTION__, pcie_irq, PCIE_IRQ_CPU_CORE)); diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_linux.h b/drivers/net/wireless/bcmdhd_100_15/dhd_linux.h index b7bbf18c6da5..0a0bd12875a8 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_linux.h +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_linux.h @@ -24,7 +24,7 @@ * * <> * - * $Id: dhd_linux.h 828731 2019-07-04 05:25:31Z $ + * $Id: dhd_linux.h 864822 2020-02-17 08:48:57Z $ */ /* wifi platform functions for power, interrupt and pre-alloc, either @@ -328,14 +328,15 @@ extern uint32 sec_save_softap_info(void); extern uint32 report_hang_privcmd_err; #endif /* DHD_SEND_HANG_PRIVCMD_ERRORS */ -#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) +#if defined(ARGOS_CPU_SCHEDULER) && !defined(DHD_LB_IRQSET) && \ + !defined(CONFIG_SOC_EXYNOS7870) extern int argos_task_affinity_setup_label(struct task_struct *p, const char *label, struct cpumask * affinity_cpu_mask, struct cpumask * default_cpu_mask); extern struct cpumask hmp_slow_cpu_mask; extern struct cpumask hmp_fast_cpu_mask; extern void set_irq_cpucore(unsigned int irq, cpumask_var_t default_cpu_mask, cpumask_var_t affinity_cpu_mask); -#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET */ +#endif /* ARGOS_CPU_SCHEDULER && !DHD_LB_IRQSET && !CONFIG_SOC_EXYNOS7870 */ #if (defined(ARGOS_CPU_SCHEDULER) && defined(ARGOS_RPS_CPU_CTL)) || \ defined(ARGOS_NOTIFY_CB) @@ -452,4 +453,7 @@ extern void dhd_reset_tcpsync_info_by_dev(struct net_device *dev); int compat_kernel_read(struct file *file, loff_t offset, char *addr, unsigned long count); +#ifdef DHD_DISABLE_VHTMODE +void dhd_disable_vhtmode(dhd_pub_t *dhd); +#endif /* DHD_DISABLE_VHTMODE */ #endif /* __DHD_LINUX_H__ */ diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_linux_exportfs.c b/drivers/net/wireless/bcmdhd_100_15/dhd_linux_exportfs.c index 2a7b4d851295..4969e5c44267 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_linux_exportfs.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_linux_exportfs.c @@ -25,7 +25,7 @@ * * <> * - * $Id: dhd_linux_exportfs.c 851174 2019-11-18 12:13:55Z $ + * $Id: dhd_linux_exportfs.c 864784 2020-02-17 05:51:17Z $ */ #include #include @@ -1151,8 +1151,8 @@ set_proptx(struct dhd_info *dev, const char *buf, size_t count) } proptx = onoff; - DHD_ERROR(("[WIFI_SEC] %s: FRAMEBURST On/Off from sysfs = %u\n", - __FUNCTION__, txbf)); + DHD_ERROR(("[WIFI_SEC] %s: proptx On/Off from sysfs = %u\n", + __FUNCTION__, proptx)); return count; } @@ -1383,9 +1383,9 @@ static struct attribute *control_file_attrs[] = { #endif /* PROP_TXSTATUS */ #endif /* USE_WFA_CERT_CONF */ #endif /* DHD_EXPORT_CNTL_FILE */ -#ifdef DHD_ADPS_BAM_EXPORT +#if defined(DHD_ADPS_BAM_EXPORT) && defined(WL_BAM) &dhd_attr_adps_bam.attr, -#endif /* DHD_ADPS_BAM_EXPORT */ +#endif /* DHD_ADPS_BAM_EXPORT && WL_BAM */ #ifdef DHD_SEND_HANG_PRIVCMD_ERRORS &dhd_attr_hang_privcmd_err.attr, #endif /* DHD_SEND_HANG_PRIVCMD_ERRORS */ diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_mschdbg.c b/drivers/net/wireless/bcmdhd_100_15/dhd_mschdbg.c index eba560e64e90..735d5e746c0d 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_mschdbg.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_mschdbg.c @@ -195,7 +195,7 @@ dhd_mschdbg_timeslot_profiler_event_data(int sp, int ver, char *title, char *dat MSCH_EVENT(("0x%08x\n", ntoh32(p->p_timeslot))); s = (int)(ntoh32(p->state)); - if (s > 5) s = 0; + if (s < 0 || s > 5) s = 0; MSCH_EVENT_HEAD(sn); MSCH_EVENT(("id: %d, state[%d]: %s, chan_ctxt: [0x%08x]\n", diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_pcie.c b/drivers/net/wireless/bcmdhd_100_15/dhd_pcie.c index 592a789a5862..9908750e9be7 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_pcie.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_pcie.c @@ -24,7 +24,7 @@ * * <> * - * $Id: dhd_pcie.c 851108 2019-11-18 07:01:36Z $ + * $Id: dhd_pcie.c 871395 2020-04-01 06:47:36Z $ */ /* include files */ @@ -1939,13 +1939,12 @@ dhdpcie_bus_release_dongle(dhd_bus_t *bus, osl_t *osh, bool dongle_isolation, bo bus->dhd, bus->dhd->dongle_reset)); if ((bus->dhd && bus->dhd->dongle_reset) && reset_flag) { - DHD_TRACE(("%s Exit\n", __FUNCTION__)); - return; + goto fail; } if (bus->is_linkdown) { DHD_ERROR(("%s : Skip release dongle due to linkdown \n", __FUNCTION__)); - return; + goto fail; } if (bus->sih) { @@ -1974,13 +1973,15 @@ dhdpcie_bus_release_dongle(dhd_bus_t *bus, osl_t *osh, bool dongle_isolation, bo /* Disable CLKREQ# */ dhdpcie_clkreq(bus->osh, 1, 0); } - - if (bus->sih != NULL) { - si_detach(bus->sih); - bus->sih = NULL; - } - if (bus->vars && bus->varsz) - MFREE(osh, bus->vars, bus->varsz); + } +fail: + /* Resources should be freed */ + if (bus->sih) { + si_detach(bus->sih); + bus->sih = NULL; + } + if (bus->vars && bus->varsz) { + MFREE(osh, bus->vars, bus->varsz); bus->vars = NULL; } @@ -2145,6 +2146,13 @@ bool dhd_bus_watchdog(dhd_pub_t *dhd) } /* dhd_bus_watchdog */ #if defined(SUPPORT_MULTIPLE_REVISION) +#if defined(SUPPORT_MULTIPLE_MODULE_CIS) && defined(USE_CID_CHECK) && \ + defined(SUPPORT_BCM4359_MIXED_MODULES) +#define VENDOR_MURATA "murata" +#define VENDOR_WISOL "wisol" +#define VNAME_DELIM "_" +#endif /* SUPPORT_MULTIPLE_MODULE_CIS && USE_CID_CHECK && SUPPORT_BCM4359_MIXED_MODULES */ + static int concate_revision_bcm4358(dhd_bus_t *bus, char *fw_path, char *nv_path) { uint32 chiprev; @@ -2205,6 +2213,7 @@ static int concate_revision_bcm4359(dhd_bus_t *bus, char *fw_path, char *nv_path #if defined(SUPPORT_MULTIPLE_MODULE_CIS) && defined(USE_CID_CHECK) && \ defined(SUPPORT_BCM4359_MIXED_MODULES) int module_type = -1; + char chipver_tag_nv[20] = {0, }; #endif /* SUPPORT_MULTIPLE_MODULE_CIS && USE_CID_CHECK && SUPPORT_BCM4359_MIXED_MODULES */ chip_ver = bus->sih->chiprev; @@ -2216,7 +2225,31 @@ static int concate_revision_bcm4359(dhd_bus_t *bus, char *fw_path, char *nv_path strncat(chipver_tag, "_b1", strlen("_b1")); } else if (chip_ver == 9) { DHD_ERROR(("----- CHIP 4359 C0 -----\n")); +#if defined(SUPPORT_MULTIPLE_MODULE_CIS) && defined(USE_CID_CHECK) && \ + defined(SUPPORT_BCM4359_MIXED_MODULES) + if (dhd_check_module(VENDOR_MURATA)) { + strncat(chipver_tag_nv, VNAME_DELIM, strlen(VNAME_DELIM)); + strncat(chipver_tag_nv, VENDOR_MURATA, strlen(VENDOR_MURATA)); + } else if (dhd_check_module(VENDOR_WISOL)) { + strncat(chipver_tag_nv, VNAME_DELIM, strlen(VNAME_DELIM)); + strncat(chipver_tag_nv, VENDOR_WISOL, strlen(VENDOR_WISOL)); + } + /* In case of SEMCO module, extra vendor string doen not need to add */ + strncat(chipver_tag_nv, "_c0", strlen("_c0")); + DHD_ERROR(("%s chipver_tag_nv = %s\n", __FUNCTION__, chipver_tag_nv)); +#endif /* SUPPORT_MULTIPLE_MODULE_CIS && USE_CID_CHECK && SUPPORT_BCM4359_MIXED_MODULES */ strncat(chipver_tag, "_c0", strlen("_c0")); +#if defined(CONFIG_WLAN_GRACE) || defined(CONFIG_SEC_GRACEQLTE_PROJECT) || \ + defined(CONFIG_SEC_LYKANLTE_PROJECT) || defined(CONFIG_SEC_KELLYLTE_PROJECT) + DHD_ERROR(("----- Adding _plus string -----\n")); + strncat(chipver_tag, "_plus", strlen("_plus")); +#if defined(SUPPORT_MULTIPLE_MODULE_CIS) && defined(USE_CID_CHECK) && \ + defined(SUPPORT_BCM4359_MIXED_MODULES) + strncat(chipver_tag_nv, "_plus", strlen("_plus")); +#endif /* SUPPORT_MULTIPLE_MODULE_CIS && USE_CID_CHECK && SUPPORT_BCM4359_MIXED_MODULES */ +#endif /* CONFIG_WLAN_GRACE || CONFIG_SEC_GRACEQLTE_PROJECT || CONFIG_SEC_LYKANLTE_PROJECT || + * CONFIG_SEC_KELLYLTE_PROJECT + */ } else { DHD_ERROR(("----- Unknown chip version, ver=%x -----\n", chip_ver)); return -1; @@ -2240,7 +2273,11 @@ static int concate_revision_bcm4359(dhd_bus_t *bus, char *fw_path, char *nv_path strncat(fw_path, "_b90s", strlen("_b90s")); } strcat(fw_path, chipver_tag); - strcat(nv_path, chipver_tag); + if (!(strstr(nv_path, VENDOR_MURATA) || strstr(nv_path, VENDOR_WISOL))) { + strcat(nv_path, chipver_tag_nv); + } else { + strcat(nv_path, chipver_tag); + } break; } #else /* SUPPORT_MULTIPLE_MODULE_CIS && USE_CID_CHECK && SUPPORT_BCM4359_MIXED_MODULES */ @@ -2270,7 +2307,10 @@ static int concate_revision_bcm4359(dhd_bus_t *bus, char *fw_path, char *nv_path #define DEFAULT_CIDINFO_FOR_B0 "r01i_e32_b0" #define MAX_VID_LEN 8 #define CIS_TUPLE_HDR_LEN 2 -#if defined(BCM4361_CHIP) +#if defined(BCM4359_CHIP) +#define CIS_TUPLE_START_ADDRESS 0x18011110 +#define CIS_TUPLE_END_ADDRESS 0x18011167 +#elif defined(BCM4361_CHIP) #define CIS_TUPLE_START_ADDRESS 0x18011110 #define CIS_TUPLE_END_ADDRESS 0x18011167 #elif defined(BCM4375_CHIP) @@ -2362,6 +2402,7 @@ naming_info_t bcm4375_naming_table[] = { { {"1rh_es44"}, {"_1rh_es44_b1"}, {"_b1"} } }; +#if !defined(BCM4359_CHIP) static naming_info_t * dhd_find_naming_info(naming_info_t table[], int table_size, char *module_type) { @@ -2549,6 +2590,7 @@ dhd_find_naming_info_by_chip_rev(naming_info_t table[], int table_size, return info; } +#endif /* !BCM4359_CHIP */ #endif /* USE_CID_CHECK */ static int diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_pcie_linux.c b/drivers/net/wireless/bcmdhd_100_15/dhd_pcie_linux.c index 0c9a30f34080..763d3eb7a714 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_pcie_linux.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_pcie_linux.c @@ -79,6 +79,12 @@ #include #include #endif /* USE_SMMU_ARCH_MSM */ +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +#include +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ #define PCI_CFG_RETRY 10 #define OS_HANDLE_MAGIC 0x1234abcd /* Magic # to recognize osh */ @@ -980,6 +986,12 @@ static int dhdpcie_suspend_dev(struct pci_dev *dev) } #endif /* OEM_ANDROID && LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) */ DHD_ERROR(("%s: Enter\n", __FUNCTION__)); +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) + exynos_pcie_l1ss_ctrl(0, PCIE_L1SS_CTRL_WIFI); +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ dhdpcie_suspend_dump_cfgregs(bus, "BEFORE_EP_SUSPEND"); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) dhd_dpc_tasklet_kill(bus->dhd); @@ -1055,6 +1067,12 @@ static int dhdpcie_resume_dev(struct pci_dev *dev) } BCM_REFERENCE(pch); dhdpcie_suspend_dump_cfgregs(pch->bus, "AFTER_EP_RESUME"); +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) + exynos_pcie_l1ss_ctrl(1, PCIE_L1SS_CTRL_WIFI); +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ out: return err; } diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.c b/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.c index d0bca4d47a69..866e94f40047 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.c @@ -24,7 +24,7 @@ * * <> * - * $Id: dhd_pktlog.c 813582 2019-04-05 10:41:35Z $ + * $Id: dhd_pktlog.c 865142 2020-02-19 02:27:53Z $ */ #include @@ -320,11 +320,11 @@ dhd_pktlog_ring_deinit(dhd_pub_t *dhdp, dhd_pktlog_ring_t *ring) /* * dhd_pktlog_ring_add_pkts : add filtered packets into pktlog ring - * direction : 1 - TX / 0 - RX * pktid : incase of rx, pktid is not used (pass DHD_INVALID_PKID) + * direction : 1 - TX / 0 - RX / 2 - RX Wakeup Packet */ int -dhd_pktlog_ring_add_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid, bool direction) +dhd_pktlog_ring_add_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid, uint32 direction) { dhd_pktlog_ring_info_t *pkts; uint8 *pktdata = NULL; @@ -345,33 +345,34 @@ dhd_pktlog_ring_add_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid, bool directio pktdata = (uint8 *)PKTDATA(dhdp->osh, pkt); if (direction == PKT_TX) { - pktlog_case = PKTLOG_TXPKT_CASE; - } else { - pktlog_case = PKTLOG_RXPKT_CASE; + pktlog_case = PKTLOG_TXPKT_CASE; + } else if ((direction == PKT_RX) || (direction == PKT_WAKERX)) { + pktlog_case = PKTLOG_RXPKT_CASE; } - if (dhd_pktlog_filter_matched(pktlog_filter, pktdata, pktlog_case) + if ((direction != PKT_WAKERX) && + dhd_pktlog_filter_matched(pktlog_filter, pktdata, pktlog_case) == FALSE) { - return BCME_OK; + return BCME_OK; } if (direction == PKT_TX && pktid == DHD_INVALID_PKTID) { - DHD_ERROR(("%s : Invalid PKTID \n", __FUNCTION__)); - return BCME_ERROR; + DHD_ERROR(("%s : Invalid PKTID \n", __FUNCTION__)); + return BCME_ERROR; } /* get free ring_info and insert to ring_info_head */ spin_lock_irqsave(&pktlog_ring->pktlog_ring_lock, flags); /* if free_list is empty, use the oldest ring_info */ if (dll_empty(&pktlog_ring->ring_info_free)) { - pkts = (dhd_pktlog_ring_info_t *)dll_head_p(&pktlog_ring->ring_info_head); - dll_delete((dll_t *)pkts); - /* free the oldest packet */ - PKTFREE(pktlog_ring->dhdp->osh, pkts->info.pkt, TRUE); - pktlog_ring->pktcount--; + pkts = (dhd_pktlog_ring_info_t *)dll_head_p(&pktlog_ring->ring_info_head); + dll_delete((dll_t *)pkts); + /* free the oldest packet */ + PKTFREE(pktlog_ring->dhdp->osh, pkts->info.pkt, TRUE); + pktlog_ring->pktcount--; } else { - pkts = (dhd_pktlog_ring_info_t *)dll_tail_p(&pktlog_ring->ring_info_free); - dll_delete((dll_t *)pkts); + pkts = (dhd_pktlog_ring_info_t *)dll_tail_p(&pktlog_ring->ring_info_free); + dll_delete((dll_t *)pkts); } /* Update packet information */ @@ -387,16 +388,19 @@ dhd_pktlog_ring_add_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid, bool directio pkts->info.direction = direction; if (direction == PKT_TX) { - pkts->info.pkt_hash = __dhd_dbg_pkt_hash((uintptr_t)pkt, pktid); - pkts->tx_fate = TX_PKT_FATE_DRV_QUEUED; - } else { - pkts->info.pkt_hash = 0U; - pkts->rx_fate = RX_PKT_FATE_SUCCESS; + pkts->info.pkt_hash = __dhd_dbg_pkt_hash((uintptr_t)pkt, pktid); + pkts->tx_fate = TX_PKT_FATE_DRV_QUEUED; + } else if (direction == PKT_RX) { + pkts->info.pkt_hash = 0U; + pkts->rx_fate = RX_PKT_FATE_SUCCESS; + } else if (direction == PKT_WAKERX) { + pkts->info.pkt_hash = 0U; + pkts->rx_fate = RX_PKT_FATE_WAKE_PKT; } DHD_PKT_LOG(("%s(): pkt hash %d\n", __FUNCTION__, pkts->info.pkt_hash)); DHD_PKT_LOG(("%s(): sec %d usec %d\n", __FUNCTION__, - pkts->info.driver_ts_sec, pkts->info.driver_ts_usec)); + pkts->info.driver_ts_sec, pkts->info.driver_ts_usec)); /* insert tx_pkts to the pktlog_ring->ring_info_head */ dll_append(&pktlog_ring->ring_info_head, (dll_t *)pkts); diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.h b/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.h index e252f037683b..812e4e007676 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.h +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_pktlog.h @@ -24,7 +24,7 @@ * * <> * - * $Id: dhd_pktlog.h 813582 2019-04-05 10:41:35Z $ + * $Id: dhd_pktlog.h 865142 2020-02-19 02:27:53Z $ */ #ifndef __DHD_PKTLOG_H_ @@ -141,15 +141,16 @@ extern int dhd_pktlog_ring_get_nextbuf(dhd_pktlog_ring_t *ringbuf, void **data); extern int dhd_pktlog_ring_set_prevpos(dhd_pktlog_ring_t *ringbuf); extern int dhd_pktlog_ring_get_prevbuf(dhd_pktlog_ring_t *ringbuf, void **data); extern int dhd_pktlog_ring_get_writebuf(dhd_pktlog_ring_t *ringbuf, void **data); -extern int dhd_pktlog_ring_add_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid, bool direction); +extern int dhd_pktlog_ring_add_pkts(dhd_pub_t *dhdp, void *pkt, uint32 pktid, uint32 direction); extern int dhd_pktlog_ring_tx_status(dhd_pub_t *dhdp, void *pkt, uint32 pktid, uint16 status); extern dhd_pktlog_ring_t* dhd_pktlog_ring_change_size(dhd_pktlog_ring_t *ringbuf, int size); extern void dhd_pktlog_filter_pull_forward(dhd_pktlog_filter_t *filter, uint32 del_filter_id, uint32 list_cnt); -#define PKT_TX 1 #define PKT_RX 0 +#define PKT_TX 1 +#define PKT_WAKERX 2 #define DHD_INVALID_PKTID (0U) #define PKTLOG_TRANS_TX 0x01 #define PKTLOG_TRANS_RX 0x02 @@ -245,6 +246,24 @@ extern void dhd_pktlog_filter_pull_forward(dhd_pktlog_filter_t *filter, } while (0); \ } +#define DHD_PKTLOG_WAKERX(dhdp, pkt) \ +{ \ + do { \ + if ((dhdp) && (dhdp)->pktlog && (pkt)) { \ + PKTLOG_SET_IN_RX(dhdp); \ + if (ntoh16((pkt)->protocol) != ETHER_TYPE_BRCM) { \ + if ((dhdp)->pktlog->pktlog_ring && \ + OSL_ATOMIC_READ((dhdp)->osh, \ + (&(dhdp)->pktlog->pktlog_ring->start))) { \ + dhd_pktlog_ring_add_pkts(dhdp, pkt, \ + DHD_INVALID_PKTID, PKT_WAKERX); \ + } \ + } \ + PKTLOG_CLEAR_IN_RX(dhdp); \ + } \ + } while (0); \ +} + extern dhd_pktlog_filter_t* dhd_pktlog_filter_init(int size); extern int dhd_pktlog_filter_deinit(dhd_pktlog_filter_t *filter); extern int dhd_pktlog_filter_add(dhd_pktlog_filter_t *filter, char *arg); diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_sdio.c b/drivers/net/wireless/bcmdhd_100_15/dhd_sdio.c index 9858f89811f1..a8e897f7574f 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_sdio.c +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_sdio.c @@ -24,7 +24,7 @@ * * <> * - * $Id: dhd_sdio.c 815919 2019-04-22 09:06:50Z $ + * $Id: dhd_sdio.c 864822 2020-02-17 08:48:57Z $ */ #include @@ -9353,6 +9353,29 @@ static int concate_revision_bcm4354(dhd_bus_t *bus, char *fw_path, char *nv_path return 0; } +#ifdef SUPPORT_MULTIPLE_CHIP_4345X +static int +concate_revision_bcm4345x(dhd_bus_t *bus, + char *fw_path, char *nv_path) +{ + uint32 chip_id; + char chipver_tag[10] = "_43454"; + + chip_id = bus->sih->chip; + + if (chip_id == BCM43454_CHIP_ID) { + DHD_ERROR(("----- CHIP 43454 -----\n")); + strcat(fw_path, chipver_tag); + strcat(nv_path, chipver_tag); + } else if (chip_id == BCM4345_CHIP_ID) { + DHD_ERROR(("----- CHIP 43455 -----\n")); + } else { + DHD_ERROR(("----- Unknown chip , id r=%x -----\n", chip_id)); + } + + return 0; +} +#else /* SUPPORT_MULTIPLE_CHIP_4345X */ static int concate_revision_bcm43454(dhd_bus_t *bus, char *fw_path, char *nv_path) { @@ -9385,6 +9408,72 @@ concate_revision_bcm43454(dhd_bus_t *bus, char *fw_path, char *nv_path) return 0; } +static int +concate_revision_bcm43455(dhd_bus_t *bus, char *fw_path, char *nv_path) +{ + char chipver_tag[10] = {0, }; + uint32 chip_rev = 0; +#ifdef SUPPORT_MULTIPLE_BOARD_REV_FROM_DT + int base_system_rev_for_nv = 0; +#endif /* SUPPORT_MULTIPLE_BOARD_REV_FROM_DT */ + + DHD_TRACE(("%s: BCM43455 Multiple Revision Check\n", __FUNCTION__)); + if (bus->sih->chip != BCM4345_CHIP_ID) { + DHD_ERROR(("%s:Chip is not BCM43455!\n", __FUNCTION__)); + return -1; + } + + chip_rev = bus->sih->chiprev; + if (chip_rev == 0x9) { + DHD_ERROR(("----- CHIP 43456 -----\n")); + strcat(fw_path, "_c5"); + strcat(nv_path, "_c5"); + } else { + DHD_ERROR(("----- CHIP 43455 -----\n")); + } +#ifdef SUPPORT_MULTIPLE_BOARD_REV_FROM_DT + base_system_rev_for_nv = dhd_get_system_rev(); + if (base_system_rev_for_nv > 0) { + DHD_ERROR(("----- Board Rev [%d]-----\n", base_system_rev_for_nv)); + sprintf(chipver_tag, "_r%02d", base_system_rev_for_nv); + } +#endif /* SUPPORT_MULTIPLE_BOARD_REV_FROM_DT */ + strcat(nv_path, chipver_tag); + return 0; +} +#endif /* SUPPORT_MULTIPLE_CHIP_4345X */ + +static int +concate_revision_bcm43430(dhd_bus_t *bus, char *fw_path, char *nv_path) +{ + uint chipver; + char chipver_tag[4] = {0, }; + + DHD_TRACE(("%s: BCM43430 Multiple Revision Check\n", __FUNCTION__)); + if (bus->sih->chip != BCM43430_CHIP_ID) { + DHD_ERROR(("%s:Chip is not BCM43430\n", __FUNCTION__)); + return BCME_ERROR; + } + chipver = bus->sih->chiprev; + DHD_ERROR(("CHIP VER = [0x%x]\n", chipver)); + if (chipver == 0x0) { + DHD_ERROR(("----- CHIP bcm4343S -----\n")); + strcat(chipver_tag, "_3s"); + } else if (chipver == 0x1) { + DHD_ERROR(("----- CHIP bcm43438 -----\n")); + } else if (chipver == 0x2) { + DHD_ERROR(("----- CHIP bcm43436L -----\n")); + strcat(chipver_tag, "_36"); + } else { + DHD_ERROR(("----- CHIP bcm43430 unknown revision %d -----\n", + chipver)); + } + + strcat(fw_path, chipver_tag); + strcat(nv_path, chipver_tag); + return 0; +} + int concate_revision(dhd_bus_t *bus, char *fw_path, char *nv_path) { @@ -9409,10 +9498,22 @@ concate_revision(dhd_bus_t *bus, char *fw_path, char *nv_path) case BCM4354_CHIP_ID: res = concate_revision_bcm4354(bus, fw_path, nv_path); break; +#ifdef SUPPORT_MULTIPLE_CHIP_4345X + case BCM43454_CHIP_ID: + case BCM4345_CHIP_ID: + res = concate_revision_bcm4345x(bus, fw_path, nv_path); + break; +#else /* SUPPORT_MULTIPLE_CHIP_4345X */ case BCM43454_CHIP_ID: res = concate_revision_bcm43454(bus, fw_path, nv_path); break; - + case BCM4345_CHIP_ID: + res = concate_revision_bcm43455(bus, fw_path, nv_path); + break; +#endif /* SUPPORT_MULTIPLE_CHIP_4345X */ + case BCM43430_CHIP_ID: + res = concate_revision_bcm43430(bus, fw_path, nv_path); + break; default: DHD_ERROR(("REVISION SPECIFIC feature is not required\n")); return res; diff --git a/drivers/net/wireless/bcmdhd_100_15/dhd_sec_feature.h b/drivers/net/wireless/bcmdhd_100_15/dhd_sec_feature.h index 83ae198b8bb0..3bea96292b3d 100644 --- a/drivers/net/wireless/bcmdhd_100_15/dhd_sec_feature.h +++ b/drivers/net/wireless/bcmdhd_100_15/dhd_sec_feature.h @@ -66,11 +66,11 @@ #if defined(ANDROID_PLATFORM_VERSION) #if (ANDROID_PLATFORM_VERSION >= 10) -//#define STA_RANDMAC_ENFORCED -#define WL_USE_RANDOMIZED_SCAN #define WL_STA_ASSOC_RAND -#define RANDOM_MAC_CONTROL -#endif // endif +#ifndef DHD_RANDOM_MAC_SCAN +#define WL_USE_RANDOMIZED_SCAN +#endif /* DHD_RANDOM_MAC_SCAN */ +#endif /* ANDROID_PLATFORM_VERSION >= 10 */ #endif /* ANDROID_PLATFORM_VERSION */ /* For COB type feature */ @@ -80,15 +80,17 @@ #endif /* CONFIG_WIFI_BROADCOM_COB */ #if defined(CONFIG_MACH_UNIVERSAL7420) || defined(CONFIG_ARCH_MSM8994) || \ - defined(CONFIG_ARCH_MSM8996) || defined(CONFIG_SOC_EXYNOS8890) + defined(CONFIG_ARCH_MSM8996) || defined(CONFIG_SOC_EXYNOS8890) || \ + defined(CONFIG_SEC_LYKANLTE_PROJECT) #define SUPPORT_MULTIPLE_MODULE_CIS #endif /* CONFIG_MACH_UNIVERSAL7420 || CONFIG_ARCH_MSM8994 || - * CONFIG_ARCH_MSM8996 || CONFIG_SOC_EXYNOS8890 + * CONFIG_ARCH_MSM8996 || CONFIG_SOC_EXYNOS8890 || CONFIG_SEC_LYKANLTE_PROJECT */ -#if defined(CONFIG_ARCH_MSM8996) || defined(CONFIG_SOC_EXYNOS8890) +#if defined(CONFIG_ARCH_MSM8996) || defined(CONFIG_SOC_EXYNOS8890) || \ + defined(CONFIG_SEC_LYKANLTE_PROJECT) #define SUPPORT_BCM4359_MIXED_MODULES -#endif /* CONFIG_ARCH_MSM8996 || CONFIG_SOC_EXYNOS8890 */ +#endif /* CONFIG_ARCH_MSM8996 || CONFIG_SOC_EXYNOS8890 || CONFIG_SEC_LYKANLTE_PROJECT */ #ifdef BCMPCIE /* For EXYNOS PCIe RC Control */ @@ -135,6 +137,15 @@ #endif /* CONFIG_MACH_UNIVERSAL7420 */ #endif /* CONFIG_MACH_UNIVERSAL7420 || CONFIG_SOC_EXYNOS8890 || CONFIG_SOC_EXYNOS8895 */ +#if defined(CONFIG_SOC_EXYNOS7870) && defined(CONFIG_BCM43456) +#define CUSTOM_SET_CPUCORE +#define PRIMARY_CPUCORE 0 +#define MAX_RETRY_SET_CPUCORE 5 +#define DPC_CPUCORE 1 +#define RXF_CPUCORE 2 +#define ARGOS_CPU_SCHEDULER +#endif /* CONFIG_SOC_EXYNOS7870 && CONFIG_BCM43456 */ + #if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) #define PCIE_IRQ_CPU_CORE 5 #endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 */ @@ -169,7 +180,9 @@ #define DHD_LB_SECONDARY_CPUS (0x0E) #endif /* CONFIG_SOC_EXYNOS8890 */ #else /* !DHD_LB */ +#ifdef BCMPCIE #define ARGOS_DPC_TASKLET_CTL +#endif /* BCMPCIE */ #endif /* !DHD_LB */ #if defined(CONFIG_ARCH_MSM) || defined(CONFIG_SOC_EXYNOS8895) || \ @@ -196,6 +209,10 @@ #endif /* CONFIG_WLAN_REGION_CODE == 150 */ #endif /* CONFIG_WLAN_REGION_CODE >= 100 && CONFIG_WLAN_REGION_CODE < 200 */ +#if defined(CONFIG_WIFI_MULTIPLE_CHIP) +#define SUPPORT_MULTIPLE_CHIP_4345X +#endif /* CONFIG_WIFI_MULTIPLE_CHIP */ + #if (CONFIG_WLAN_REGION_CODE >= 200) && (CONFIG_WLAN_REGION_CODE < 300) /* KOR */ #undef USE_INITIAL_2G_SCAN #ifndef ROAM_ENABLE diff --git a/drivers/net/wireless/bcmdhd_100_15/include/epivers.h b/drivers/net/wireless/bcmdhd_100_15/include/epivers.h index 9d0c9f71b9eb..68c834ae32c4 100644 --- a/drivers/net/wireless/bcmdhd_100_15/include/epivers.h +++ b/drivers/net/wireless/bcmdhd_100_15/include/epivers.h @@ -33,19 +33,19 @@ #define EPI_MINOR_VERSION 15 -#define EPI_RC_NUMBER 36 +#define EPI_RC_NUMBER 44 #define EPI_INCREMENTAL_NUMBER 0 #define EPI_BUILD_NUMBER 0 -#define EPI_VERSION 100, 15, 36, 0 +#define EPI_VERSION 100, 15, 44, 0 -#define EPI_VERSION_NUM 0x640f2400 +#define EPI_VERSION_NUM 0x640f2c00 -#define EPI_VERSION_DEV 100.15.36 +#define EPI_VERSION_DEV 100.15.44 /* Driver Version String, ASCII, 32 chars max */ -#define EPI_VERSION_STR "100.15.36 (r864043)" +#define EPI_VERSION_STR "100.15.44 (r873599)" #endif /* _epivers_h_ */ diff --git a/drivers/net/wireless/bcmdhd_100_15/include/linux_osl.h b/drivers/net/wireless/bcmdhd_100_15/include/linux_osl.h index 7137f376d01a..b335afd3f031 100644 --- a/drivers/net/wireless/bcmdhd_100_15/include/linux_osl.h +++ b/drivers/net/wireless/bcmdhd_100_15/include/linux_osl.h @@ -351,10 +351,39 @@ extern uint64 osl_systztime_us(void); #define bcmp(b1, b2, len) memcmp((b1), (b2), (len)) #define bzero(b, len) memset((b), '\0', (len)) +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +extern int exynos_pcie_l1_exit(int ch_num); +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ /* register access macros */ #ifdef CONFIG_64BIT /* readq is defined only for 64 bit platform */ +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +#define R_REG(osh, r) (\ + SELECT_BUS_READ(osh, \ + ({ \ + __typeof(*(r)) __osl_v = 0; \ + exynos_pcie_l1_exit(0); \ + BCM_REFERENCE(osh); \ + switch (sizeof(*(r))) { \ + case sizeof(uint8): __osl_v = \ + readb((volatile uint8*)(r)); break; \ + case sizeof(uint16): __osl_v = \ + readw((volatile uint16*)(r)); break; \ + case sizeof(uint32): __osl_v = \ + readl((volatile uint32*)(r)); break; \ + case sizeof(uint64): __osl_v = \ + readq((volatile uint64*)(r)); break; \ + } \ + __osl_v; \ + }), \ + OSL_READ_REG(osh, r)) \ +) +#else /* !CONFIG_64BIT */ #define R_REG(osh, r) (\ SELECT_BUS_READ(osh, \ ({ \ @@ -374,6 +403,9 @@ extern uint64 osl_systztime_us(void); }), \ OSL_READ_REG(osh, r)) \ ) +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ #else /* !CONFIG_64BIT */ #define R_REG(osh, r) (\ SELECT_BUS_READ(osh, \ @@ -395,6 +427,26 @@ extern uint64 osl_systztime_us(void); #ifdef CONFIG_64BIT /* writeq is defined only for 64 bit platform */ +#if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ + defined(CONFIG_SOC_EXYNOS9830) +#define W_REG(osh, r, v) do { \ + SELECT_BUS_WRITE(osh, \ + ({ \ + exynos_pcie_l1_exit(0); \ + switch (sizeof(*(r))) { \ + case sizeof(uint8): writeb((uint8)(v), \ + (volatile uint8*)(r)); break; \ + case sizeof(uint16): writew((uint16)(v), \ + (volatile uint16*)(r)); break; \ + case sizeof(uint32): writel((uint32)(v), \ + (volatile uint32*)(r)); break; \ + case sizeof(uint64): writeq((uint64)(v), \ + (volatile uint64*)(r)); break; \ + } \ + }), \ + (OSL_WRITE_REG(osh, r, v))); \ + } while (0) +#else #define W_REG(osh, r, v) do { \ SELECT_BUS_WRITE(osh, \ switch (sizeof(*(r))) { \ @@ -405,7 +457,9 @@ extern uint64 osl_systztime_us(void); }, \ (OSL_WRITE_REG(osh, r, v))); \ } while (0) - +#endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || + * CONFIG_SOC_EXYNOS9830 + */ #else /* !CONFIG_64BIT */ #define W_REG(osh, r, v) do { \ SELECT_BUS_WRITE(osh, \ diff --git a/drivers/net/wireless/bcmdhd_100_15/include/wlioctl.h b/drivers/net/wireless/bcmdhd_100_15/include/wlioctl.h index 0fd31f555d87..ac45ff7fc5e8 100644 --- a/drivers/net/wireless/bcmdhd_100_15/include/wlioctl.h +++ b/drivers/net/wireless/bcmdhd_100_15/include/wlioctl.h @@ -735,6 +735,61 @@ typedef struct wl_scan_params_v2 { #define WL_MAX_ROAMSCAN_V2_DATSZ \ (WL_SCAN_PARAMS_V2_FIXED_SIZE + (WL_NUMCHANNELS * sizeof(uint16))) +/* changes in wl_scan_params_v3 as comapred to wl_scan_params (v2) +* pad byte used to differentiate Short SSID and Regular SSID +*/ +typedef struct wl_scan_params_v3 { + uint16 version; /* Version of wl_scan_params, change value of + * WL_SCAN_PARAM_VERSION on version update + */ + uint16 length; /* length of structure wl_scan_params_v1_t + * without implicit pad + */ + wlc_ssid_t ssid; /**< default: {0, ""} */ + struct ether_addr bssid; /**< default: bcast */ + int8 bss_type; /**< default: any, + * DOT11_BSSTYPE_ANY/INFRASTRUCTURE/INDEPENDENT + */ + uint8 ssid_type; /**< ssid_type_flag ,0 use default, and flags specified + * WL_SCAN_SSID_FLAGS + */ + uint32 scan_type; /**< flags, 0 use default, and flags specified in + * WL_SCANFLAGS_XXX + */ + int32 nprobes; /**< -1 use default, number of probes per channel */ + int32 active_time; /**< -1 use default, dwell time per channel for + * active scanning + */ + int32 passive_time; /**< -1 use default, dwell time per channel + * for passive scanning + */ + int32 home_time; /**< -1 use default, dwell time for the home channel + * between channel scans + */ + int32 channel_num; /**< count of channels and ssids that follow + * + * low half is count of channels in channel_list, 0 + * means default (use all available channels) + * + * high half is entries in wlc_ssid_t array that + * follows channel_list, aligned for int32 (4 bytes) + * meaning an odd channel count implies a 2-byte pad + * between end of channel_list and first ssid + * + * if ssid count is zero, single ssid in the fixed + * parameter portion is assumed, otherwise ssid in + * the fixed portion is ignored + */ + uint16 channel_list[]; /**< list of chanspecs */ +} wl_scan_params_v3_t; + +#define WL_SCAN_PARAMS_VERSION_V3 3 + +/** size of wl_scan_params not including variable length array */ +#define WL_SCAN_PARAMS_V3_FIXED_SIZE (OFFSETOF(wl_scan_params_v3_t, channel_list)) +#define WL_MAX_ROAMSCAN_V3_DATSZ \ + (WL_SCAN_PARAMS_V3_FIXED_SIZE + (WL_NUMCHANNELS * sizeof(uint16))) + #define ISCAN_REQ_VERSION 1 #define ISCAN_REQ_VERSION_V2 2 @@ -754,10 +809,20 @@ typedef struct wl_iscan_params_v2 { wl_scan_params_v2_t params; } wl_iscan_params_v2_t; +/** incremental scan struct */ +typedef struct wl_iscan_params_v3 { + uint32 version; + uint16 action; + uint16 scan_duration; + wl_scan_params_v3_t params; +} wl_iscan_params_v3_t; + /** 3 fields + size of wl_scan_params, not including variable length array */ #define WL_ISCAN_PARAMS_FIXED_SIZE (OFFSETOF(wl_iscan_params_t, params) + sizeof(wlc_ssid_t)) #define WL_ISCAN_PARAMS_V2_FIXED_SIZE \ (OFFSETOF(wl_iscan_params_v2_t, params) + sizeof(wlc_ssid_t)) +#define WL_ISCAN_PARAMS_V3_FIXED_SIZE \ + (OFFSETOF(wl_iscan_params_v3_t, params) + sizeof(wlc_ssid_t)) typedef struct wl_scan_results { uint32 buflen; @@ -805,13 +870,28 @@ typedef struct wl_escan_params_v2 { wl_scan_params_v2_t params; } wl_escan_params_v2_t; +typedef struct wl_escan_params_v3 { + uint32 version; + uint16 action; + uint16 sync_id; + wl_scan_params_v3_t params; +} wl_escan_params_v3_t; + #define WL_ESCAN_PARAMS_FIXED_SIZE (OFFSETOF(wl_escan_params_t, params) + sizeof(wlc_ssid_t)) #define WL_ESCAN_PARAMS_V2_FIXED_SIZE (OFFSETOF(wl_escan_params_v2_t, params) + sizeof(wlc_ssid_t)) - +#define WL_ESCAN_PARAMS_V3_FIXED_SIZE (OFFSETOF(wl_escan_params_v3_t, params) + sizeof(wlc_ssid_t)) /* New scan version is defined then change old version of scan to * wl_scan_params_v1_t and new one to wl_scan_params_t */ -#ifdef WL_SCAN_PARAMS_V2 +#if defined(WL_SCAN_PARAMS_V3) +typedef struct wl_scan_params wl_scan_params_v1_t; +typedef struct wl_escan_params wl_escan_params_v1_t; +typedef struct wl_iscan_params wl_iscan_params_v1_t; +typedef struct wl_scan_params_v3 wl_scan_params_t; +typedef struct wl_escan_params_v3 wl_escan_params_t; +typedef struct wl_iscan_params_v3 wl_iscan_params_t; +#define WL_SCAN_PARAMS_FIXED_SIZE (OFFSETOF(wl_scan_params_t, channel_list)) +#elif defined(WL_SCAN_PARAMS_V2) typedef struct wl_scan_params wl_scan_params_v1_t; typedef struct wl_escan_params wl_escan_params_v1_t; typedef struct wl_iscan_params wl_iscan_params_v1_t; @@ -824,7 +904,7 @@ typedef struct wl_scan_params wl_scan_params_t; typedef struct wl_escan_params wl_escan_params_t; typedef struct wl_iscan_params wl_iscan_params_t; #define WL_SCAN_PARAMS_FIXED_SIZE 64 -#endif // endif +#endif /* WL_SCAN_PARAMS_V3 */ /** event scan reduces amount of SOC memory needed to store scan results */ typedef struct wl_escan_result { @@ -1005,6 +1085,8 @@ typedef struct wl_uint32_list { /** variable length uint32 list */ uint32 element[1]; } wl_uint32_list_t; +/* Size in bytes for wl_uint32_list_t with 'count' elements */ +#define WL_UINT32_LIST_SIZE(count) (((count) + 1) * sizeof(uint32)) #define CHAN_INFO_LIST_ALL_V1 1 @@ -1280,6 +1362,23 @@ typedef struct { }; } cca_only_chan_qual_event_t; +typedef struct { + uint16 status; /* Indicates the status of event */ + uint16 id; + /* id is used to indicate the number of bytes to read */ + chanspec_t chanspec; /**< Which channel? */ + uint16 len; + union { + cca_congest_simple_t cca_busy; /**< CCA busy */ + struct { + cca_congest_t cca_busy_ext; /**< Extended CCA report */ + cca_congest_t cca_busy_nopm; /**< Extedned CCA report (PM awake time) */ + cca_congest_t cca_busy_pm; /**< Extedned CCA report (PM sleep time) */ + }; + }; + int32 ofdm_desense; +} cca_only_chan_qual_event_v2_t; + typedef struct { uint32 msrmnt_time; /**< Time for Measurement (msec) */ uint32 msrmnt_done; /**< flag set when measurement complete */ @@ -3065,14 +3164,15 @@ typedef struct wl_mws_ocl_override { } wl_mws_ocl_override_t; /* Bits for fw_status */ -#define OCL_DISABLED_HOST 0x01 /* Host has disabled through ocl_enable */ -#define OCL_DISABLED_RSSI 0x02 /* Disabled because of ocl_rssi_threshold */ -#define OCL_DISABLED_LTEC 0x04 /* Disabled due to LTE Coex activity */ -#define OCL_DISABLED_SISO 0x08 /* Disabled while in SISO mode */ -#define OCL_DISABLED_CAL 0x10 /* Disabled during active calibration */ -#define OCL_DISABLED_CHANSWITCH 0x20 /* Disabled during active channel switch */ -#define OCL_DISABLED_ASPEND 0x40 /* Disabled due to assoc pending */ -#define OCL_DISABLED_SEQ_RANGE 0x80 /* Disabled during SEQ Ranging */ +#define OCL_DISABLED_HOST 0x01 /* Host has disabled through ocl_enable */ +#define OCL_DISABLED_RSSI 0x02 /* Disabled because of ocl_rssi_threshold */ +#define OCL_DISABLED_LTEC 0x04 /* Disabled due to LTE Coex activity */ +#define OCL_DISABLED_SISO 0x08 /* Disabled while in SISO mode */ +#define OCL_DISABLED_CAL 0x10 /* Disabled during active calibration */ +#define OCL_DISABLED_CHANSWITCH 0x20 /* Disabled during active channel switch */ +#define OCL_DISABLED_ASPEND 0x40 /* Disabled due to assoc pending */ +#define OCL_DISABLED_SEQ_RANGE 0x80 /* Disabled during SEQ Ranging */ +#define OCL_DISABLED_RXIQ_EST_BTLOWAR 0x100 /* Disabled if the bt-lo-war is active */ /* Bits for hw_status */ #define OCL_HWCFG 0x01 /* State of OCL config bit in phy HW */ @@ -4271,6 +4371,62 @@ typedef struct wl_he_cnt_wlc_v4 { */ } wl_he_cnt_wlc_v4_t; +/* he counters Version 5 */ +#define HE_COUNTERS_V5 (5) +typedef struct wl_he_cnt_wlc_v5 { + uint16 version; + uint16 len; + uint32 he_rxtrig_myaid; /* rxed valid trigger frame with myaid */ + uint32 he_rxtrig_rand; /* rxed valid trigger frame with random aid */ + uint32 he_colormiss_cnt; /* for bss color mismatch cases */ + uint32 he_txmampdu; /* for multi-TID AMPDU transmission */ + uint32 he_txmtid_back; /* for multi-TID BACK transmission */ + uint32 he_rxmtid_back; /* reception of multi-TID BACK */ + uint32 he_rxmsta_back; /* reception of multi-STA BACK */ + uint32 he_txfrag; /* transmission of Dynamic fragmented packets */ + uint32 he_rxdefrag; /* reception of dynamic fragmented packets */ + uint32 he_txtrig; /* transmission of trigger frames */ + uint32 he_rxtrig_basic; /* reception of basic trigger frame */ + uint32 he_rxtrig_murts; /* reception of MU-RTS trigger frame */ + uint32 he_rxtrig_bsrp; /* reception of BSR poll trigger frame */ + uint32 he_rxtsrt_hemuppdu_cnt; /* rxing HE MU PPDU */ + uint32 he_physu_rx; /* reception of SU frame */ + uint32 he_phyru_rx; /* reception of RU frame */ + uint32 he_txtbppdu; /* increments on transmission of every TB PPDU */ + uint32 he_null_tbppdu; /* null TBPPDU's sent as a response to + * basic trigger frame + */ + uint32 he_rxstrt_hesuppdu_cnt; /* rxing SU PPDU */ + uint32 he_rxstrt_hesureppdu_cnt; /* rxing Range Extension(RE) SU PPDU */ + uint32 he_null_zero_agg; /* nullAMPDU's transmitted in response to + * basic trigger because of zero aggregation + */ + uint32 he_null_bsrp_rsp; /* null AMPDU's txed in response to BSR poll */ + uint32 he_null_fifo_empty; /* null AMPDU's in response to basic trigger + * because of no frames in fifo's + */ + uint32 he_rxtrig_bfm_cnt; + uint32 he_rxtrig_mubar; + uint32 rxheru[WL_RU_TYPE_MAX]; /* HE of rx pkts */ + uint32 txheru[WL_RU_TYPE_MAX]; + uint32 he_mgmt_tbppdu; + uint32 he_cs_req_tx_cancel; + uint32 he_wrong_nss; + uint32 he_trig_unsupp_rate; + uint32 he_rxtrig_nfrp; + uint32 he_rxtrig_bqrp; + uint32 he_rxtrig_gcrmubar; + uint32 he_rxtrig_basic_htpack; /* triggers received with HTP ack policy */ + uint32 he_rxtrig_suppr_null_tbppdu; /* count of null frame sent becasue of + * suppression scenarios + */ + uint32 he_ulmu_disable; /* number of ULMU dis scenario's handled in ucode */ + uint32 he_ulmu_data_disable; /* number of UL MU data disable scenarios + * handled in ucode + */ + uint32 rxheru_2x996T; +} wl_he_cnt_wlc_v5_t; + #ifndef HE_COUNTERS_VERSION_ENABLED #define HE_COUNTERS_VERSION (HE_COUNTERS_V1) typedef wl_he_cnt_wlc_v1_t wl_he_cnt_wlc_t; @@ -5796,6 +5952,75 @@ struct ampdu_tid_control { uint8 enable; /* enable/disable */ }; +/** Support for ampdu_tx_ba_window_cfg */ +#define WL_AMPDU_TX_BA_WINDOW_CFG_VER_1 1u +#define WL_AMPDU_TX_BA_WINDOW_CFG_CUR_VER WL_AMPDU_TX_BA_WINDOW_CFG_VER_1 + +/* 16 bits Config (5 bits reserved) and Status (2 bits reserved) */ +#define WL_AMPDU_TX_BA_WINDOW_CFG_BA_WSIZE_IDX 0u +#define WL_AMPDU_TX_BA_WINDOW_CFG_BA_WSIZE_FSZ 9u + +#define WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_IDX 9u +#define WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_FSZ 2u + +#define WL_AMPDU_TX_BA_WINDOW_CFG_STATE_IDX 11u +#define WL_AMPDU_TX_BA_WINDOW_CFG_STATE_FSZ 3u + +#define WL_AMPDU_TX_BA_WINDOW_CFG_BA_WSIZE_MASK \ + (MAXBITVAL(WL_AMPDU_TX_BA_WINDOW_CFG_BA_WSIZE_FSZ) << \ + WL_AMPDU_TX_BA_WINDOW_CFG_BA_WSIZE_IDX) + +#define WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_MASK \ + (MAXBITVAL(WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_FSZ) << \ + WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_IDX) + +#define WL_AMPDU_TX_BA_WINDOW_CFG_STATE_MASK \ + (MAXBITVAL(WL_AMPDU_TX_BA_WINDOW_CFG_STATE_FSZ) << \ + WL_AMPDU_TX_BA_WINDOW_CFG_STATE_IDX) + +/* code for config assoc_type */ +enum { + WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_AX = 0, + WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_UNIVERSAL = 1, + WL_AMPDU_TX_BA_WINDOW_CFG_ASSOC_TYPE_MAX = 2 +}; + +/* ampdu_tx_ba_window_cfg states */ +enum { + WL_AMPDU_TX_BA_WINDOW_CFG_STATE_OFF = 0, + WL_AMPDU_TX_BA_WINDOW_CFG_STATE_NEGOTIATING = 1, + WL_AMPDU_TX_BA_WINDOW_CFG_STATE_NEGOTIATED = 2, + WL_AMPDU_TX_BA_WINDOW_CFG_STATE_MAX = 3 +}; + +/** structure for per tid ampdu BA window configuration */ +typedef struct wl_ampdu_tx_ba_window_cfg_v1 { + uint16 version; + uint16 length; /* length of the entire structure ver+len+payload. */ + /* tid bitmap: + * input (SET): select tid to configure. + * output (GET): TID that is currently configured. + */ + uint8 tidbmp; + uint8 flag; /* currently not used. Reserved. 32-bit alignment. */ + uint16 PAD; + + /* Per-tid configuration tuple (tx_ba_wsize, assoctype). Used for GET and SET. + * bit0 - bit8: User configured TX BA window size. Range {0, max. FW supported}. + * bit9 - bit10: User configured association type. 0: 11ax association, 1: universal. + * bit11 - bit15: Reserved. + */ + uint16 config[NUMPRIO]; + + /* Status of the per-tid configuration: GET only + * bit0 - bit8: Resulted TX BA window size. + * bit9 - bit10: Reserved. + * bit11 - bit13: TX BA configuration state. + * bit14 - bit15: Reserved. + */ + uint16 status[NUMPRIO]; +} wl_ampdu_tx_ba_window_cfg_v1_t; + /** struct for ampdu tx/rx aggregation control */ struct ampdu_aggr { int8 aggr_override; /**< aggr overrided by dongle. Not to be set by host. */ @@ -6028,6 +6253,7 @@ enum { /* Version 1 and 2 for various scan results structures defined below */ #define PFN_SCANRESULTS_VERSION_V1 1 #define PFN_SCANRESULTS_VERSION_V2 2 +#define PFN_SCANRESULTS_VERSION_V3 3 /** PFN network info structure */ typedef struct wl_pfn_subnet_info_v1 { @@ -6047,6 +6273,17 @@ typedef struct wl_pfn_subnet_info_v2 { } u; } wl_pfn_subnet_info_v2_t; +typedef struct wl_pfn_subnet_info_v3 { + struct ether_addr BSSID; + chanspec_t chanspec; /**< with 6G chanspec only */ + uint8 SSID_len; + uint8 PAD[3]; + union { + uint8 SSID[32]; + uint16 index; + } u; +} wl_pfn_subnet_info_v3_t; + typedef struct wl_pfn_net_info_v1 { wl_pfn_subnet_info_v1_t pfnsubnet; int16 RSSI; /**< receive signal strength (in dBm) */ @@ -6059,9 +6296,16 @@ typedef struct wl_pfn_net_info_v2 { uint16 timestamp; /**< age in seconds */ } wl_pfn_net_info_v2_t; +typedef struct wl_pfn_net_info_v3 { + wl_pfn_subnet_info_v3_t pfnsubnet; + int16 RSSI; /**< receive signal strength (in dBm) */ + uint16 timestamp; /**< age in seconds */ +} wl_pfn_net_info_v3_t; + /* Version 1 and 2 for various lbest scan results structures below */ #define PFN_LBEST_SCAN_RESULT_VERSION_V1 1 #define PFN_LBEST_SCAN_RESULT_VERSION_V2 2 +#define PFN_LBEST_SCAN_RESULT_VERSION_V3 3 #define MAX_CHBKT_PER_RESULT 4 @@ -6083,6 +6327,15 @@ typedef struct wl_pfn_lnet_info_v2 { uint16 rtt1; /**< standard deviation of the distance to this AP in centimeters */ } wl_pfn_lnet_info_v2_t; +typedef struct wl_pfn_lnet_info_v3 { + wl_pfn_subnet_info_v3_t pfnsubnet; /**< BSSID + channel + SSID len + SSID */ + uint16 flags; /**< partial scan, etc */ + int16 RSSI; /**< receive signal strength (in dBm) */ + uint32 timestamp; /**< age in miliseconds */ + uint16 rtt0; /**< estimated distance to this AP in centimeters */ + uint16 rtt1; /**< standard deviation of the distance to this AP in centimeters */ +} wl_pfn_lnet_info_v3_t; + typedef struct wl_pfn_lscanresults_v1 { uint32 version; uint32 status; @@ -6098,6 +6351,14 @@ typedef struct wl_pfn_lscanresults_v2 { wl_pfn_lnet_info_v2_t netinfo[1]; } wl_pfn_lscanresults_v2_t; +typedef struct wl_pfn_lscanresults_v3 { + uint32 version; + uint16 status; + uint16 count; + uint32 scan_ch_buckets[MAX_CHBKT_PER_RESULT]; + wl_pfn_lnet_info_v3_t netinfo[1]; +} wl_pfn_lscanresults_v3_t; + /**this is used to report on 1-* pfn scan results */ typedef struct wl_pfn_scanresults_v1 { uint32 version; @@ -6114,6 +6375,14 @@ typedef struct wl_pfn_scanresults_v2 { wl_pfn_net_info_v2_t netinfo[1]; } wl_pfn_scanresults_v2_t; +typedef struct wl_pfn_scanresults_v3 { + uint32 version; + uint32 status; + uint32 count; + uint32 scan_ch_bucket; + wl_pfn_net_info_v3_t netinfo[1]; +} wl_pfn_scanresults_v3_t; + typedef struct wl_pfn_significant_net { uint16 flags; uint16 channel; @@ -6129,24 +6398,47 @@ typedef struct wl_pfn_swc_results { uint32 total_count; /**< Total expected results */ wl_pfn_significant_net_t list[]; } wl_pfn_swc_results_t; -typedef struct wl_pfn_net_info_bssid { +typedef struct wl_pfn_net_info_bssid_v1 { struct ether_addr BSSID; uint8 channel; /**< channel number only */ int8 RSSI; /**< receive signal strength (in dBm) */ uint16 flags; /**< (e.g. partial scan, off channel) */ uint16 timestamp; /**< age in seconds */ -} wl_pfn_net_info_bssid_t; +} wl_pfn_net_info_bssid_v1_t; -typedef struct wl_pfn_scanhist_bssid { +typedef struct wl_pfn_scanhist_bssid_v1 { uint32 version; uint32 status; uint32 count; - wl_pfn_net_info_bssid_t netinfo[1]; -} wl_pfn_scanhist_bssid_t; + wl_pfn_net_info_bssid_v1_t netinfo[1]; +} wl_pfn_scanhist_bssid_v1_t; + +/* v2 for this struct is skiped to match with other struct v3 version */ +typedef struct wl_pfn_net_info_bssid_v3 { + struct ether_addr BSSID; + chanspec_t chanspec; /** local-clk slow */ + int32 last_drift; /* Most recent TSF drift from beacon */ + int32 min_drift; /* Min TSF drift from beacon in magnitude */ + int32 max_drift; /* Max TSF drift from beacon in magnitude */ + uint32 avg_drift; /* Avg TSF drift from beacon */ + uint32 drift_cnt; /* Count of drift readings over which avg_drift was computed */ + + uint32 cal_dur; /* Cumulative ms spent in calibration */ + uint32 prev_cal_dur; /* cal duration at start of pm-period */ +} wl_pmalert_fixed_sc_t; + typedef struct wl_pmalert_pmstate { uint16 type; /**< WL_PMALERT_PMSTATE */ uint16 len; /**< Up to 4K-1, top 4 bits are reserved */ @@ -8609,6 +8942,24 @@ BWL_PRE_PACKED_STRUCT struct wl_pmalert_ucode_dbg_v2 { } BWL_POST_PACKED_STRUCT; #include +#include +BWL_PRE_PACKED_STRUCT struct wl_pmalert_ucode_dbg_sc_v1 { + uint16 type; /**< WL_PMALERT_UCODE_DBG_SC */ + uint16 len; /**< Up to 4K-1, top 4 bits are reserved */ + /* ucode SHM and registers */ + uint32 macctrl; + uint16 m_p2p_hps; + uint32 psm_brc; + uint32 ifsstat; + uint16 m_p2p_bss_dtim_prd[MAX_P2P_BSS_DTIM_PRD]; + uint32 psmdebug[20]; + uint32 phydebug[20]; + uint16 M_P2P_BSS[3][12]; + uint16 M_P2P_PRE_TBTT[3]; + uint16 psm_maccommand; +} BWL_POST_PACKED_STRUCT; +#include + typedef struct wlc_ps_debug { uint32 timestamp; /**< timestamp in millisecond */ uint32 ps_mask; /**< reason(s) for disallowing ps */ @@ -9199,6 +9550,146 @@ typedef struct { sc_chanim_stats_v2_t sc_stats[1]; } wl_chanim_sc_stats_v2_t; +#define WL_SC_CHANIM_STATS_V3 3u +/* sc chanim interface stats */ +typedef struct sc_chanim_stats_v3 { + uint32 stats_ms; /* duraion for which stats are collected, in ms */ + chanspec_t chanspec; + uint16 PAD; + uint32 sc_only_rx_dur; /* rx only on sc, in ms */ + uint32 sc_rx_mc_rx_dur; /* Rx on SC when MC is active, in ms */ + uint32 sc_rx_ac_rx_dur; /* Rx on SC when AC is active, in ms */ + uint32 sc_rx_mc_tx_dur; /* sc rx with MC tx, in ms */ + uint32 sc_rx_ac_bt_tx_dur; /* sc rx with AC-BT tx, in ms */ + uint32 sc_rx_bt_rx_dur; /* sc rx when BT Main is active, in ms */ + uint32 sc_btle_overlap_dur; /* wlsc was awake and btsc le scan overlapped, in ms */ + uint32 sc_btpage_overlap_dur; /* wlsc was awake and btsc page scan overlapped, in ms */ + uint32 sc_btle_blnk_dur; /* wlauxtx blanked btsc le scan, in ms */ + uint32 sc_btpage_blnk_dur; /* wlauxtx blanked btsc page scan, in ms */ + uint32 ac_btle_overlap_dur; /* wlaux was awake and btsc le scan overlapped, in ms */ + uint32 ac_btpage_overlap_dur; /* wlaux was awake and btsc page scan overlapped, in ms */ +} sc_chanim_stats_v3_t; + +typedef struct { + uint32 version; + uint32 length; + uint8 flags; /* flags: to print the stats, + * WL_CHANIM_COUNT_ONE ==> Query stats for Home channel, + * WL_CHANIM_COUNT_ALL ==> Query stats for all channels + */ + uint8 id; /* Module id, to know which module has sent the stats + * SC_CHANIM_ID_SCAN ==> For SCAN + * SC_CHANIM_ID_STA ==> For STA + */ + uint8 count; /* o/p: Count of channels for which stats needs to be displayed. + * This value is number of channels supported in particular locale when + * flags is WL_CHANIM_COUNT_ALL, one when flag is + * WL_CHANIM_COUNT_ONE + */ + uint8 PAD; + sc_chanim_stats_v3_t sc_stats[1]; +} wl_chanim_sc_stats_v3_t; + +#define WL_SC_CHANIM_STATS_V4 4u +/* sc chanim interface stats */ +typedef struct sc_chanim_stats_v4 { + uint32 stats_ms; /* duraion for which stats are collected, in ms */ + chanspec_t chanspec; + uint16 PAD; + uint32 sc_only_rx_dur; /* rx only on sc, in ms */ + uint32 sc_rx_mc_rx_dur; /* Rx on SC when MC is active, in ms */ + uint32 sc_rx_ac_rx_dur; /* Rx on SC when AC is active, in ms */ + uint32 sc_rx_mc_tx_dur; /* sc rx with MC tx, in ms */ + uint32 sc_rx_ac_bt_tx_dur; /* sc rx with AC-BT tx, in ms */ + uint32 sc_rx_bt_rx_dur; /* sc rx when BT Main is active, in ms */ + uint32 sc_btle_overlap_dur; /* wlsc was awake and btsc le scan overlapped, in ms */ + uint32 sc_btpage_overlap_dur; /* wlsc was awake and btsc page scan overlapped, in ms */ + uint32 ac_btle_blnk_dur; /* wlauxtx blanked btsc le scan, in ms */ + uint32 ac_btpage_blnk_dur; /* wlauxtx blanked btsc page scan, in ms */ + uint32 ac_btle_overlap_dur; /* wlaux was awake and btsc le scan overlapped, in ms */ + uint32 ac_btpage_overlap_dur; /* wlaux was awake and btsc page scan overlapped, in ms */ + uint32 timestamp; /* Time when stats last updated */ +} sc_chanim_stats_v4_t; + +typedef struct { + uint32 version; + uint32 length; + uint8 flags; /* flags: to print the stats, + * WL_CHANIM_COUNT_ONE ==> Query stats for Home channel, + * WL_CHANIM_COUNT_ALL ==> Query stats for all channels + */ + uint8 id; /* Module id, to know which module has sent the stats + * SC_CHANIM_ID_SCAN ==> For SCAN + * SC_CHANIM_ID_STA ==> For STA + */ + uint8 count; /* o/p: Count of channels for which stats needs to be displayed. + * This value is number of channels supported in particular locale when + * flags is WL_CHANIM_COUNT_ALL, one when flag is + * WL_CHANIM_COUNT_ONE + */ + uint8 PAD; + sc_chanim_stats_v4_t sc_stats[1]; +} wl_chanim_sc_stats_v4_t; + +/* sc_chanim periodic ecounters structs for WL_IFSTATS_XTLV_SC_CHANIM_PERIODIC_STATS + * [similar to wl_chanim_sc_stats_vX_t, but constrained in size due to its known periodicity + * of reporting] + */ +#define WLC_SC_CHANIM_PERIODIC_STATS_V2 (2u) +#define WLC_SC_STATS_MAX_BANDS_V1 2u + +typedef struct sc_chanim_stats_perband_periodic_v2 { + uint8 pad[3]; + uint8 band_id; /* band for which stats reported; 0:5G,1:2G */ + uint16 sc_only_rx_dur; /* rx only on sc, in ms */ + uint16 sc_rx_mc_rx_dur; /* Rx on SC when MC is active, in ms */ + uint16 sc_rx_ac_rx_dur; /* Rx on SC when AC is active, in ms */ + uint16 sc_rx_mc_tx_dur; /* sc rx with MC tx, in ms */ + uint16 sc_rx_ac_bt_tx_dur; /* sc rx with AC-BT tx, in ms */ + uint16 sc_rx_bt_rx_dur; /* sc rx when BT Main is active, in ms */ + uint16 sc_btle_overlap_dur; /* wlsc was awake and btsc le scan overlapped, in ms */ + uint16 sc_btpage_overlap_dur; /* wlsc was awake and btsc page scan overlapped, in ms */ + uint16 sc_btle_blnk_dur; /* wlauxtx blanked btsc le scan, in ms */ + uint16 sc_btpage_blnk_dur; /* wlauxtx blanked btsc page scan, in ms */ +} sc_chanim_stats_perband_periodic_v2_t; + +typedef struct wl_chanim_sc_periodic_stats_v2 { + uint16 ver; + uint16 len; + uint8 pad[3]; + uint8 count; /* number of sc_stats below */ + /* per band accum stats */ + sc_chanim_stats_perband_periodic_v2_t sc_stats[WLC_SC_STATS_MAX_BANDS_V1]; +} wl_chanim_sc_periodic_stats_v2_t; + +#define WLC_SC_CHANIM_PERIODIC_STATS_V3 (3u) + +typedef struct sc_chanim_stats_perband_periodic_v3 { + uint8 pad[3]; + uint8 band_id; /* band for which stats reported; 0:5G,1:2G */ + uint16 sc_only_rx_dur; /* rx only on sc, in ms */ + uint16 sc_rx_mc_rx_dur; /* Rx on SC when MC is active, in ms */ + uint16 sc_rx_ac_rx_dur; /* Rx on SC when AC is active, in ms */ + uint16 sc_rx_mc_tx_dur; /* sc rx with MC tx, in ms */ + uint16 sc_rx_ac_bt_tx_dur; /* sc rx with AC-BT tx, in ms */ + uint16 sc_rx_bt_rx_dur; /* sc rx when BT Main is active, in ms */ + uint16 sc_btle_overlap_dur; /* wlsc was awake and btsc le scan overlapped, in ms */ + uint16 sc_btpage_overlap_dur; /* wlsc was awake and btsc page scan overlapped, in ms */ + uint16 sc_btle_blnk_dur; /* wlauxtx blanked btsc le scan, in ms */ + uint16 sc_btpage_blnk_dur; /* wlauxtx blanked btsc page scan, in ms */ + uint16 ac_btle_overlap_dur; /* wlaux was awake and btsc le scan overlapped, in ms */ + uint16 ac_btpage_overlap_dur; /* wlaux was awake and btsc page scan overlapped, in ms */ +} sc_chanim_stats_perband_periodic_v3_t; + +typedef struct wl_chanim_sc_periodic_stats_v3 { + uint16 ver; + uint16 len; + uint8 pad[3]; + uint8 count; /* number of sc_stats below */ + /* per band accum stats */ + sc_chanim_stats_perband_periodic_v3_t sc_stats[WLC_SC_STATS_MAX_BANDS_V1]; +} wl_chanim_sc_periodic_stats_v3_t; + /** Noise measurement metrics. */ #define NOISE_MEASURE_KNOISE 0x1 @@ -10764,7 +11255,9 @@ typedef struct wl_nan_range_txs { #define NAN_MAX_BANDS 2 enum wl_nan_oob_af_txs_reason_code { - WL_NAN_OOB_AF_TX_REASON_BMAP = 0x01 /* Bitmap schedule */ + WL_NAN_OOB_AF_TX_REASON_BMAP = 0x01, /* Bitmap schedule */ + WL_NAN_OOB_AF_TX_REASON_TIMEOUT = 0x02, /* OOB AF session timeout */ + WL_NAN_OOB_AF_TX_REASON_DISABLED= 0x03, /* OOB disabled while it was scheduled */ }; /* WL_NAN_EVENT_OOB_AF_TXS event sent to host after NAN OOB AF transmit attempted */ @@ -10774,6 +11267,12 @@ typedef struct wl_nan_event_oob_af_txs { uint16 token; /* Token from the host */ } wl_nan_event_oob_af_txs_t; +/* WL_NAN_EVENT_OOB_AF_TXS status */ +#define NAN_OOB_AF_TXS_ACK 0x1 +#define NAN_OOB_AF_TXS_NO_ACK 0x2 +#define NAN_OOB_AF_TXS_EXPIRED 0x3 +#define NAN_OOB_AF_TXS_DISABLED 0x4 + /* WL_NAN_EVENT_OOB_AF_RX event sent to host upon receiving a NAN OOB AF frame */ typedef struct wl_nan_event_oob_af_rx { struct ether_addr sa; @@ -10783,7 +11282,8 @@ typedef struct wl_nan_event_oob_af_rx { uint8 payload[]; /* AF hdr + NAN attrbutes in TLV format */ } wl_nan_event_oob_af_rx_t; -#define WL_NAN_CFG_OOB_AF_BODY_MAX_SIZE 1024u /* Max size of AF payload */ +#define WL_NAN_CFG_OOB_AF_BODY_MAX_SIZE 1024u /* Max size of AF payload */ +#define WL_NAN_CFG_OOB_AF_MAX_TIMEOUT 8000u /* 8 Sec. Max timeout(in ms) for OOB AF session */ /* Max size of the NAN OOB AF information in the IOVAR */ #define WL_NAN_CFG_OOB_AF_MAX_INFO_SIZE \ @@ -10983,7 +11483,8 @@ enum wl_nan_sub_cmd_xtlv_id { WL_NAN_CMD_CFG_VNDR_PAYLOAD = NAN_CMD(WL_NAN_CMD_CFG_COMP_ID, 0x1B), WL_NAN_CMD_CFG_FASTDISC = NAN_CMD(WL_NAN_CMD_CFG_COMP_ID, 0x1C), WL_NAN_CMD_CFG_MIN_TX_RATE = NAN_CMD(WL_NAN_CMD_CFG_COMP_ID, 0x1D), - WL_NAN_CMD_CFG_MAX = WL_NAN_CMD_CFG_MIN_TX_RATE, + WL_NAN_CMD_CFG_FSM_TIMEOUT = NAN_CMD(WL_NAN_CMD_CFG_COMP_ID, 0x1E), + WL_NAN_CMD_CFG_MAX = WL_NAN_CMD_CFG_FSM_TIMEOUT, /* Add new commands before and update */ @@ -11043,7 +11544,8 @@ enum wl_nan_sub_cmd_xtlv_id { WL_NAN_CMD_DATA_DP_IDLE_PERIOD = NAN_CMD(WL_NAN_CMD_DATA_COMP_ID, 0x11), WL_NAN_CMD_DATA_DP_OPAQUE_INFO = NAN_CMD(WL_NAN_CMD_DATA_COMP_ID, 0x12), WL_NAN_CMD_DATA_DP_HB_DURATION = NAN_CMD(WL_NAN_CMD_DATA_COMP_ID, 0x13), - WL_NAN_CMD_DATA_PATH_MAX = WL_NAN_CMD_DATA_DP_HB_DURATION, /* New ones before and update */ + WL_NAN_CMD_DATA_DATAEND_V2 = NAN_CMD(WL_NAN_CMD_DATA_COMP_ID, 0x14), + WL_NAN_CMD_DATA_PATH_MAX = WL_NAN_CMD_DATA_DATAEND_V2, /* New ones before and update */ /* nan dam sub-commands */ WL_NAN_CMD_DAM_CFG = NAN_CMD(WL_NAN_CMD_DAM_COMP_ID, 0x01), @@ -11176,6 +11678,20 @@ typedef struct wl_nan_mac_stats { uint32 cnt_am_hop_err; /* wrong hopcount set for AM */ } wl_nan_mac_stats_t; +typedef struct wl_nan_mac_stats_v1 { + wl_nan_mac_band_stats_t band[NAN_MAX_BANDS]; /* MAC sync band specific stats */ + uint32 naf_tx; /* NAN AF tx */ + uint32 naf_rx; /* NAN AF rx */ + uint32 sdf_tx; /* SDF tx */ + uint32 sdf_rx; /* SDF rx */ + uint32 cnt_sync_bcn_rx_tu[3]; /* delta bw */ + uint32 cnt_bcn_tx_out_dw; /* TX sync beacon outside dw */ + uint32 cnt_role_am_dw; /* anchor master role due to dw */ + uint32 cnt_am_hop_err; /* wrong hopcount set for AM */ + uint32 merge_scan_cnt_2g; /* 2G band merge scan cnt */ + uint32 merge_scan_cnt_5g; /* 5G band merge scan cnt */ +} wl_nan_mac_stats_v1_t; + /* NAN Sched stats */ /* Per core Sched stats */ typedef struct nan_sched_stats_core { @@ -11577,9 +12093,21 @@ enum wl_nan_cfg_ctrl2_flags1 { /* Allows the device to handle slot pre_close operations */ WL_NAN_CTRL2_FLAG1_SLOT_PRE_CLOSE = 0x00000008, /* Control flag to enable/disable NDPE capability */ - WL_NAN_CTRL2_FLAG1_NDPE_CAP = 0x000000010 + WL_NAN_CTRL2_FLAG1_NDPE_CAP = 0x000000010, + /* Control flag to enable/disable AUTO DAM LWT mode */ + WL_NAN_CTRL2_FLAG1_AUTODAM_LWT_MODE = 0x000000020, + /* Control flag to enable/disable PMK per NDP */ + WL_NAN_CTRL2_FLAG1_PMK_PER_NDP = 0x000000040, + /* Control flag to enable/disable allowing clear Schedule Update on Secured connection */ + WL_NAN_CTRL2_FLAG1_SEC_ALLOW_CLEAR_SCHED_UPD_PKT = 0x000000080, + /* Control flag to disable/enable 5G FAW */ + WL_NAN_CTRL2_FLAG1_DISABLE_5G_FAW = 0x000000100, + /* Control flag to disable/enable AUTO DAM 6G CAP */ + WL_NAN_CTRL2_FLAG1_DISABLE_AUTODAM_6G_CAP = 0x000000200, + /* Control flag to disable/enable allowing of unsecured OOB AF in a secured connection */ + WL_NAN_CTRL2_FLAG1_ALLOW_UNSECURED_OOB_AF = 0x000000400 }; -#define WL_NAN_CTRL2_FLAGS1_MASK 0x0000001F +#define WL_NAN_CTRL2_FLAGS1_MASK 0x00000FFF #define WL_NAN_CTRL2_FLAGS2_MASK 0x00000000 @@ -11972,6 +12500,11 @@ typedef uint16 wl_nan_svc_disc_txtime_t; */ typedef uint16 wl_nan_stop_bcn_tx_t; +/* + * WL_NAN_CMD_CFG_FSM_TIMEOUT + */ +typedef uint32 wl_nan_fsm_timeout_t; + /* * WL_NAN_CMD_CFG_SID_BEACON */ @@ -12634,6 +13167,7 @@ typedef struct wl_nan_dp_conf { uint8 pad[2]; } wl_nan_dp_conf_t; +/* WL_NAN_CMD_DATA_DATAEND */ typedef struct wl_nan_dp_end { uint8 lndp_id; /* can be host ndp id */ @@ -12641,6 +13175,21 @@ typedef struct wl_nan_dp_end struct ether_addr mac_addr; /* initiator's ndi */ } wl_nan_dp_end_t; +/* wl_nan_dp_end_v2_t flags */ +#define WL_NAN_DP_END_V2_FLAG_NO_TX 0x0001u +#define WL_NAN_DP_END_V2_FLAG_NO_RETRY 0x0002u + +/* WL_NAN_CMD_DATA_DATAEND_V2 */ +typedef struct wl_nan_dp_end_v2 +{ + uint8 ndp_id; /* initiator's NDP ID or local NDP ID */ + uint8 status; + struct ether_addr indi; /* initiator's ndi */ + uint16 flags; /* flags to enable/disable retry, etc. */ + uint16 opt_len; /* total length of optional tlvs */ + uint8 opt_tlv[]; /* optional tlvs in bcm_xtlv_t type */ +} wl_nan_dp_end_v2_t; + typedef struct wl_nan_dp_schedupd { uint8 type; /* 0: unicast, 1: multicast */ uint8 flags; @@ -12758,13 +13307,15 @@ enum wl_nan_host_assist_reason { WL_NAN_HAST_REASON_NONE = 0, /* reason for host assist request */ - WL_NAN_HAST_REASON_NO_CRB = 1, /* NDL: no common NA */ - WL_NAN_HAST_REASON_NDC = 2, /* NDL: NDC not compliant */ - WL_NAN_HAST_REASON_IMMUT = 3, /* NDL: peer immutable schedule */ - WL_NAN_HAST_REASON_RNG = 4, /* NDL: ranging schedule */ - WL_NAN_HAST_REASON_QOS = 5, /* NDL: QoS not satisfied */ - WL_NAN_HAST_REASON_SVC_NDI_MISSING = 6, /* SD: NDI associated with svc is missing */ - WL_NAN_HAST_REASON_PEER_SCB_NORESOURCE = 7 /* NDP: no more peer scb available */ + WL_NAN_HAST_REASON_NO_CRB = 1, /* NDL: no common NA */ + WL_NAN_HAST_REASON_NDC = 2, /* NDL: NDC not compliant */ + WL_NAN_HAST_REASON_IMMUT = 3, /* NDL: peer immutable schedule */ + WL_NAN_HAST_REASON_RNG = 4, /* NDL: ranging schedule */ + WL_NAN_HAST_REASON_QOS = 5, /* NDL: QoS not satisfied */ + WL_NAN_HAST_REASON_SVC_NDI_MISSING = 6, /* SD: SVC NDI missing */ + WL_NAN_HAST_REASON_PEER_SCB_NORESOURCE = 7, /* NDP: no more peer scb available */ + WL_NAN_HAST_REASON_NDP_PMK_MISSING = 8, /* NDP: PMK needed from host */ + WL_NAN_HAST_REASON_SVC_NDI_AND_PMK_MISSING = 9 /* PMK and SVC NDI needed from host */ }; typedef uint8 wl_nan_host_assist_reason_t; @@ -12802,7 +13353,8 @@ enum wl_nan_fw_cap_flag1 { WL_NAN_FW_CAP_FLAG1_NSR2_SAVE = 0x00020000, WL_NAN_FW_CAP_FLAG1_NANHO = 0x00040000, WL_NAN_FW_CAP_FLAG1_NDPE = 0x00080000, - WL_NAN_FW_CAP_FLAG1_OOB_AF = 0x00100000 + WL_NAN_FW_CAP_FLAG1_OOB_AF = 0x00100000, + WL_NAN_FW_CAP_FLAG1_PMK_PER_NDP = 0x00200000 }; /* WL_NAN_XTLV_GEN_FW_CAP */ @@ -13589,7 +14141,8 @@ typedef struct wl_proxd_debug_data { /** start enum value for BSS properties */ #define WL_WSEC_INFO_BSS_BASE 0x0100 - +/* for WFA testing (CTT testbed) */ +#define WL_WSEC_INFO_TEST_BASE 0x0300 /** size of len and type fields of wl_wsec_info_tlv_t struct */ #define WL_WSEC_INFO_TLV_HDR_LEN OFFSETOF(wl_wsec_info_tlv_t, data) @@ -13614,6 +14167,15 @@ typedef enum { WL_WSEC_INFO_BSS_WPA_AP_RESTRICT = (WL_WSEC_INFO_BSS_BASE + 7), WL_WSEC_INFO_BSS_PMK_PASSPHRASE = (WL_WSEC_INFO_BSS_BASE + 8), WL_WSEC_INFO_BSS_SAE_PWE = (WL_WSEC_INFO_BSS_BASE + 9), + WL_WSEC_INFO_BSS_SAE_PK = (WL_WSEC_INFO_BSS_BASE + 0xA), + /* + * ADD NEW ENUM ABOVE HERE + */ + /* WPA3 CTT testbed specific requirement. refer to WFA CAPI command list */ + WL_WSEC_INFO_TEST_SAE_GROUPS = (WL_WSEC_INFO_TEST_BASE), /* supported SAE groups */ + WL_WSEC_INFO_TEST_SAE_GROUP_REJ = (WL_WSEC_INFO_TEST_BASE + 1), /* rejected group ID */ + WL_WSEC_INFO_TEST_SAE_INVALID_VEC = (WL_WSEC_INFO_TEST_BASE + 2), /* test SAE vector */ + WL_WSEC_INFO_TEST_PMK = (WL_WSEC_INFO_TEST_BASE + 3), /* query PMK */ /* add per-BSS properties above */ WL_WSEC_INFO_MAX = 0xffff } wl_wsec_info_type_t; @@ -14782,10 +15344,13 @@ typedef struct wl_scan_version { /* begin proxd definitions */ #include -#define WL_PROXD_API_VERSION 0x0300 /**< version 3.0 */ +#define WL_PROXD_API_VERSION 0x0300u /**< version 3.0 */ + +/* proxd version with 11az */ +#define WL_PROXD_11AZ_API_VERSION_1 0x0400u /** Minimum supported API version */ -#define WL_PROXD_API_MIN_VERSION 0x0300 +#define WL_PROXD_API_MIN_VERSION 0x0300u /** proximity detection methods */ enum { @@ -14798,6 +15363,16 @@ enum { }; typedef int16 wl_proxd_method_t; +/** 11az ftm types */ +enum { + WL_FTM_TYPE_NONE = 0, /* ftm type unspecified */ + WL_FTM_TYPE_MC = 1, /* Legacy MC ftm */ + WL_FTM_TYPE_TB = 2, /* 11az Trigger based */ + WL_FTM_TYPE_NTB = 3, /* 11az Non-trigger based */ + WL_FTM_TYPE_MAX +}; +typedef uint8 wl_ftm_type_t; + /** global and method configuration flags */ enum { WL_PROXD_FLAG_NONE = 0x00000000, @@ -15519,7 +16094,8 @@ typedef struct wl_proxd_iov { wl_proxd_cmd_t cmd; wl_proxd_method_t method; wl_proxd_session_id_t sid; - uint8 PAD[2]; + wl_ftm_type_t ftm_type; /* 11az ftm type. Only valid with PROXD vers >= 0x0400 */ + uint8 PAD[1]; wl_proxd_tlv_t tlvs[1]; /**< variable */ } wl_proxd_iov_t; @@ -15909,6 +16485,7 @@ typedef struct wnm_roam_trigger_cfg { /* Data structures for Interface Create/Remove */ +#define WL_INTERFACE_CREATE_VER_0 0 #define WL_INTERFACE_CREATE_VER_1 1 #define WL_INTERFACE_CREATE_VER_2 2 #define WL_INTERFACE_CREATE_VER_3 3 @@ -15981,6 +16558,12 @@ typedef enum wl_interface_type { */ #define WL_INTERFACE_BSSID_INDEX_USE (1 << 4) +typedef struct wl_interface_create_v0 { + uint16 ver; /**< version of this struct */ + uint32 flags; /**< flags that defines the operation */ + struct ether_addr mac_addr; /**< Optional Mac address */ +} wl_interface_create_v0_t; + typedef struct wl_interface_create { uint16 ver; /**< version of this struct */ uint8 pad1[2]; /**< Padding bytes */ @@ -16014,9 +16597,17 @@ typedef struct wl_interface_create_v3 { uint8 data[]; /**< Optional application/Module specific data */ } wl_interface_create_v3_t; +#define WL_INTERFACE_INFO_VER_0 0 #define WL_INTERFACE_INFO_VER_1 1 #define WL_INTERFACE_INFO_VER_2 2 +typedef struct wl_interface_info_v0 { + uint16 ver; /**< version of this struct */ + struct ether_addr mac_addr; /**< MAC address of the interface */ + char ifname[BCM_MSG_IFNAME_MAX]; /**< name of interface */ + uint8 bsscfgidx; /**< source bsscfg index */ +} wl_interface_info_v0_t; + typedef struct wl_interface_info_v1 { uint16 ver; /**< version of this struct */ struct ether_addr mac_addr; /**< MAC address of the interface */ @@ -16571,8 +17162,11 @@ enum { /* when subcommand is IOV_DYNSAR_MODE, the mode can be one of the below */ enum { - IOV_DYNSAR_MODE_OFF = 0, - IOV_DYNSAR_MODE_PWR = 1 + IOV_DYNSAR_MODE_OFF = 0, /* DSA optimization turned off */ + IOV_DYNSAR_MODE_PWR = 1, /* DSA Power optimization mode */ + IOV_DYNSAR_MODE_HBR_NOMUTE = 2, /* DSA Hybrid power and nomute optimization mode */ + + IOV_DYNSAR_MODE_MAX }; #define DYNSAR_CNT_VERSION_V1 1u @@ -16585,6 +17179,10 @@ enum { /* Error bits */ #define DYNSAR_NO_TXCAP (1u << 0u) #define DYNSAR_NO_CLM (1u << 1u) +#define DYNSAR_TDMTX_DISABLED (1u << 2u) +#define DYNSAR_VIOLATION (1u << 3u) +#define DYNSAR_ANT_NUM_MISMATCH (1u << 4u) +#define DYNSAR_COUNTRY_DISABLED (1u << 5u) typedef struct wlc_dynsar_sts_mon_ctr_st { uint32 tx_dur; /* in usec */ @@ -16592,6 +17190,9 @@ typedef struct wlc_dynsar_sts_mon_ctr_st { uint32 plim_avg; /* In uw. plim averaged over mon win. */ uint32 energy; /* pavg * dur in mw * ms */ uint32 qsar; /* plim * dur in mw * ms */ + uint16 fs; /* failsafe duration in usec */ + uint8 util_hist; /* utilization in past observe sec */ + uint8 util_pred; /* utilization of past (observe - budget) & predicted budget sec */ } wlc_dynsar_sts_mon_ctr_t; typedef struct wlc_dynsar_sts_obs_win { @@ -16957,6 +17558,79 @@ typedef struct { uint32 rxholes; /* Count of missed packets from peer */ } wl_periodic_compact_cntrs_v3_t; +#define WL_PERIODIC_COMPACT_CNTRS_VER_4 (4) +typedef struct { + uint16 version; + uint16 pad; + /* taken from wl_wlc_cnt_t */ + uint32 txfail; + /* taken from wl_cnt_ge40mcst_v1_t */ + uint32 txallfrm; /**< total number of frames sent, incl. Data, ACK, RTS, CTS, + * Control Management (includes retransmissions) + */ + uint32 txrtsfrm; /**< number of RTS sent out by the MAC */ + uint32 txctsfrm; /**< number of CTS sent out by the MAC */ + uint32 txback; /**< blockack txcnt */ + uint32 txucast; /**< number of unicast tx expecting response other than cts/cwcts */ + uint32 txnoack; /**< dot11ACKFailureCount */ + uint32 txframe; /**< tx data frames */ + uint32 txretrans; /**< tx mac retransmits */ + uint32 txpspoll; /**< Number of TX PS-poll */ + + uint32 rxrsptmout; /**< number of response timeouts for transmitted frames + * expecting a response + */ + uint32 txrtsfail; /**< number of rts transmission failure that reach retry limit */ + uint32 rxstrt; /**< number of received frames with a good PLCP */ + uint32 rxbadplcp; /**< number of parity check of the PLCP header failed */ + uint32 rxcrsglitch; /**< PHY was able to correlate the preamble but not the header */ + uint32 rxnodelim; /**< number of no valid delimiter detected by ampdu parser */ + uint32 bphy_badplcp; /**< number of bad PLCP reception on BPHY rate */ + uint32 bphy_rxcrsglitch; /**< PHY count of bphy glitches */ + uint32 rxbadfcs; /**< number of frames for which the CRC check failed in the MAC */ + uint32 rxf0ovfl; /**< number of receive fifo 0 overflows */ + uint32 rxf1ovfl; /**< number of receive fifo 0 overflows */ + uint32 rxhlovfl; /**< number of length / header fifo overflows */ + uint32 rxrtsucast; /**< number of unicast RTS addressed to the MAC (good FCS) */ + uint32 rxctsucast; /**< number of unicast CTS addressed to the MAC (good FCS) */ + uint32 rxackucast; /**< number of ucast ACKS received (good FCS) */ + uint32 rxback; /**< blockack rxcnt */ + uint32 rxbeaconmbss; /**< beacons received from member of BSS */ + uint32 rxdtucastmbss; /**< number of received DATA frames with good FCS and matching RA */ + uint32 rxbeaconobss; /**< beacons received from other BSS */ + uint32 rxdtucastobss; /**< number of unicast frames addressed to the MAC from + * other BSS (WDS FRAME) + */ + uint32 rxdtocast; /**< number of received DATA frames (good FCS and no matching RA) */ + uint32 rxrtsocast; /**< number of received RTS not addressed to the MAC */ + uint32 rxctsocast; /**< number of received CTS not addressed to the MAC */ + uint32 rxdtmcast; /**< number of RX Data multicast frames received by the MAC */ + uint32 rxmpdu_mu; /**< Number of MU MPDUs received */ + uint32 rxtoolate; /**< receive too late */ + uint32 rxframe; /**< rx data frames */ + uint32 lqcm_report; /**< lqcm metric tx/rx idx */ + uint32 tx_toss_cnt; /* number of tx packets tossed */ + uint32 rx_toss_cnt; /* number of rx packets tossed */ + uint32 last_tx_toss_rsn; /* reason because of which last tx pkt tossed */ + uint32 last_rx_toss_rsn; /* reason because of which last rx pkt tossed */ + uint32 txbcnfrm; /**< beacons transmitted */ + uint32 rxretry; /* Number of rx packets received after retry */ + uint32 rxdup; /* Number of dump packet. Indicates whether peer is receiving ack */ + uint32 chswitch_cnt; /* Number of channel switches */ + uint32 pm_dur; /* Total sleep time in PM, msecs */ + uint32 rxholes; /* Count of missed packets from peer */ + + uint32 rxundec; /* Decrypt failures */ + uint32 rxundec_mcst; /* Decrypt failures multicast */ + uint16 replay; /* replay failures */ + uint16 replay_mcst; /* ICV failures */ + + uint32 pktfilter_discard; /* Filtered packtets by pkt filter */ + uint32 pktfilter_forward; /* Forwared packets by pkt filter */ + uint32 mac_rxfilter; /* Pkts filtered due to class/auth state mismatch */ + +} wl_periodic_compact_cntrs_v4_t; + #define WL_PERIODIC_COMPACT_HE_CNTRS_VER_1 (1) typedef struct { uint16 version; @@ -17739,8 +18413,22 @@ typedef struct { uint16 params; } wl_assoc_mgr_cmd_t; +enum wl_sae_auth_xtlv_id { + WL_SAE_AUTH_XTLV_CONTAINER = 0xa1, + WL_SAE_AUTH_XTLV_BSSID = 0xa2, + WL_SAE_AUTH_XTLV_CYCLIC_GROUP = 0xa3, + WL_SAE_AUTH_XTLV_SCALAR = 0xa4, + WL_SAE_AUTH_XTLV_ELEMENTS = 0xa5, + WL_SAE_AUTH_XTLV_ANTI_CLOGGING = 0xa6, + WL_SAE_AUTH_XTLV_SEND_CONFIRM = 0xa7, + WL_SAE_AUTH_XTLV_CONFIRM = 0xa8, + WL_SAE_AUTH_XTLV_STATUS = 0xa9, + WL_SAE_AUTH_XTLV_LAST = 0xac +}; + #define WL_ASSOC_MGR_CMD_PAUSE_ON_EVT 0 /* have assoc pause on certain events */ #define WL_ASSOC_MGR_CMD_ABORT_ASSOC 1 +#define WL_ASSOC_MGR_CMD_SET_SAE_FRAME 2 #define WL_ASSOC_MGR_PARAMS_EVENT_NONE 0 /* use this to resume as well as clear */ #define WL_ASSOC_MGR_PARAMS_PAUSE_EVENT_AUTH_RESP 1 @@ -19122,6 +19810,7 @@ enum wl_oce_cmd_ids { WL_OCE_CMD_RSSI_TH = 5, WL_OCE_CMD_RWAN_LINKS = 6, WL_OCE_CMD_CU_TRIGGER = 7, + WL_OCE_CMD_TXPWR_USED = 8, /* Add before this !! */ WL_OCE_CMD_LAST }; @@ -19133,9 +19822,43 @@ enum wl_oce_xtlv_id { WL_OCE_XTLV_FD_TX_DURATION = 0x4, WL_OCE_XTLV_RSSI_TH = 0x5, WL_OCE_XTLV_RWAN_LINKS = 0x6, - WL_OCE_XTLV_CU_TRIGGER = 0x7 + WL_OCE_XTLV_CU_TRIGGER = 0x7, + WL_OCE_XTLV_TXPWR_USED = 0x8 }; +/* Robust Audio Video (RAV), MSCS (Mirrored Stream Classification Service) commands */ +#define WL_RAV_MSCS_IOV_MAJOR_VER 1u +#define WL_RAV_MSCS_IOV_MINOR_VER 1u +#define WL_RAV_MSCS_IOV_MAJOR_VER_SHIFT 8u + +#define WL_RAV_MSCS_IOV_VERSION \ + ((WL_RAV_MSCS_IOV_MAJOR_VER << WL_RAV_MSCS_IOV_MAJOR_VER_SHIFT)| WL_RAV_MSCS_IOV_MINOR_VER) + +enum wl_rav_mscs_cmd_ids { + WL_RAV_MSCS_CMD_CONFIG = 1u, /* MSCS configuration */ + WL_RAV_MSCS_CMD_ENABLE = 2u, /* Activate/deactivate MSCS */ + WL_RAV_MSCS_CMD_UP_BITMAP = 3u, /* User priority bitmap */ + WL_RAV_MSCS_CMD_UP_LIMIT = 4u, /* User priority limit */ + WL_RAV_MSCS_CMD_STREAM_TIMEOUT = 5u, /* Stream timeout for MSCS Request */ + WL_RAV_MSCS_CMD_FC_TYPE = 6u, /* Frame classifier type, IPv4, IPv6, etc. */ + WL_RAV_MSCS_CMD_FC_MASK = 7u, /* Specifies the frame classifier mask */ + WL_RAV_MSCS_CMD_REQ_TYPE = 8u, /* Indicates the MSCS Request type (add/remove) */ + + /* Add before this !! */ + WL_RAV_MSCS_CMD_LAST +}; + +typedef enum wl_rav_mscs_xtlv_id { + WL_RAV_MSCS_XTLV_CONFIG = 1u, + WL_RAV_MSCS_XTLV_ENABLE = 2u, + WL_RAV_MSCS_XTLV_UP_BITMAP = 3u, + WL_RAV_MSCS_XTLV_UP_LIMIT = 4u, + WL_RAV_MSCS_XTLV_STREAM_TIMEOUT = 5u, + WL_RAV_MSCS_XTLV_FC_TYPE = 6u, + WL_RAV_MSCS_XTLV_FC_MASK = 7u, + WL_RAV_MSCS_XTLV_REQ_TYPE = 8u +} wl_rav_mscs_xtlv_id_t; + #define WL_ESP_IOV_MAJOR_VER 1 #define WL_ESP_IOV_MINOR_VER 1 #define WL_ESP_IOV_MAJOR_VER_SHIFT 8 @@ -19156,6 +19879,22 @@ enum wl_esp_xtlv_id { WL_ESP_XTLV_STATIC_VAL = 0x4 }; +#define WL_BCN_PROT_IOV_MAJOR_VER 1 +#define WL_BCN_PROT_IOV_MINOR_VER 1 +#define WL_BCN_PROT_IOV_MAJOR_VER_SHIFT 8 +#define WL_BCN_PROT_IOV_VERSION \ + ((WL_BCN_PROT_IOV_MAJOR_VER << WL_BCN_PROT_IOV_MAJOR_VER_SHIFT)| WL_BCN_PROT_IOV_MINOR_VER) + +enum wl_bcn_prot_cmd_ids { + WL_BCN_PROT_CMD_ENABLE = 1, + /* Add before this !! */ + WL_BCN_PROT_CMD_LAST +}; + +enum wl_bcn_prot_xtlv_id { + WL_BCN_PROT_XTLV_ENABLE = 0x1 +}; + /* otpread command */ #define WL_OTPREAD_VER 1 @@ -19957,8 +20696,16 @@ enum wl_ifstats_xtlv_id { WL_IFSTATS_XTLV_WL_SLICE_BTCOEX_TSKDUR_STATS = 0x314, /* Per-slice RC1 COEX (NR5G Coex) stats */ WL_IFSTATS_XTLV_WL_SLICE_NR5GCX = 0x315, + /* Per-slice RC1 COEX (RC1 Coex) stats for trunk and future branches */ + WL_IFSTATS_XTLV_WL_SLICE_RC1CX = 0x315, /* Per-slice sta offload stats */ WL_IFSTATS_XTLV_WL_SLICE_STA_OFLD_STATS = 0x316, + /* Per-Slice [only aux] btcec sc stats */ + WL_IFSTATS_XTLV_WL_SLICE_BTCEC_PERIODIC_STATS = 0x317, + /* Per-Slice sc lq stats */ + WL_IFSTATS_XTLV_SC_CHANIM_PERIODIC_STATS = 0x318, + /* Per-slice RC2 COEX stats */ + WL_IFSTATS_XTLV_WL_SLICE_RC2CX = 0x319, /* Per-interface */ /* XTLV container for reporting */ @@ -20048,6 +20795,9 @@ typedef struct { uint32 rxpspoll; } wl_if_mgt_stats_t; +/* This structure (wl_if_infra_stats_t) is deprecated in favour of + * versioned structure (wl_if_infra_enh_stats_vxxx_t) defined below + */ #define WL_INFRA_STATS_VERSION_V1 1 /* Associated stats type: WL_IFSTATS_INFRA_SPECIFIC */ typedef struct wl_infra_stats { @@ -20057,6 +20807,20 @@ typedef struct wl_infra_stats { uint32 tbtt; } wl_if_infra_stats_t; +/* Starting the versioned structure with version as 2 to distinguish + * between legacy unversioned structure + */ +#define WL_INFRA_ENH_STATS_VERSION_V2 2u +/* Associated stats type: WL_IFSTATS_INFRA_SPECIFIC */ +typedef struct wl_infra_enh_stats_v2 { + uint16 version; /**< version of the structure */ + uint16 length; + uint32 rxbeaconmbss; + uint32 tbtt; + uint32 tim_mcast_ind; /**< number of beacons with tim bits indicating multicast data */ + uint32 tim_ucast_ind; /**< number of beacons with tim bits indicating unicast data */ +} wl_if_infra_enh_stats_v2_t; + #define WL_INFRA_STATS_HE_VERSION_V1 (1u) /* Associated stats type: WL_IFSTATS_INFRA_SPECIFIC_HE */ typedef struct wl_infra_stats_he { @@ -20363,6 +21127,7 @@ typedef struct wl_scb_ecounters_v2 { #define WL_NAN_SLOT_ECOUNTERS_VERSION_1 1 #define WL_NAN_SLOT_ECOUNTERS_VERSION_2 2 +#define WL_NAN_SLOT_ECOUNTERS_VERSION_3 3 typedef struct wl_nan_slot_ecounters_v1 { uint16 version; /* version field */ @@ -20393,6 +21158,25 @@ typedef struct wl_nan_slot_ecounters_v2 { uint16 bcn_txfail_5g; /* sending 5G beacon failure count */ } wl_nan_slot_ecounters_v2_t; +typedef struct wl_nan_slot_ecounters_v3 { + uint16 version; /* version field */ + uint16 length; /* struct length starting from version */ + uint32 chan[NAN_MAX_BANDS]; /* cur nan slot chanspec of both bands */ + uint16 cur_slot_idx; /* cur nan slot index */ + uint16 pad; + nan_sched_stats_t sched; /* sched stats */ + /* for v3 */ + wl_nan_mac_stats_v1_t mac; /* mac stats */ + uint16 bcn_rx_drop_rssi; /* Beacon received but ignored due to weak rssi */ + uint16 bcn_rx_drop_rssi_5g; /* 5G Beacon received but ignored due to weak rssi */ + uint16 cnt_rssi_close; /* cnt of beacon rssi > rssi_close received */ + uint16 cnt_rssi_close_5g; /* cnt of 5G beacon rssi > rssi_close received */ + uint16 cnt_rssi_mid; /* cnt of beacon rssi > rssi_middle received */ + uint16 cnt_rssi_mid_5g; /* cnt of 5G beacon rssi > rssi_middle received */ + uint16 bcn_txfail; /* Beacon sending failure count */ + uint16 bcn_txfail_5g; /* sending 5G beacon failure count */ +} wl_nan_slot_ecounters_v3_t; + /* WL_STATS_XTLV_NDP_SESSION_STATUS for ecounters */ #define WL_NAN_SESSION_STATUS_EC_VERSION_1 1 typedef struct wl_nan_ndp_session_status_v1_s { @@ -20429,7 +21213,9 @@ typedef struct wl_nan_oob_af { struct ether_addr da; struct ether_addr bssid; bool secured; /* Optional. Default set to 0 (Open) */ - uint8 pad; /* Structure padding. Can be used in future */ + uint8 map_id; /* Host selected map id. Default 0 */ + uint16 timeout; /* OOB AF session timeout in milliseconds */ + uint16 pad[3]; /* Structure padding. Can be used in future */ uint16 token; /* host generated. Used by FW in TX status event */ uint16 payload_len; uint8 payload[]; /* AF hdr + NAN attrbutes in TLV format */ @@ -21004,6 +21790,36 @@ typedef struct { uint32 htr_rc_ts[WLC_HIST_TOSS_LEN]; /* time stamps corr to htr_rc */ } wl_hist_compact_toss_stats_v2_t; +#define WL_HIST_COMPACT_TOSS_STATS_TX_VER_3 (3u) +#define WL_HIST_COMPACT_TOSS_STATS_RX_VER_3 (3u) + +typedef struct { + uint8 toss_reason; + uint8 cfg_ac; + uint16 toss_seq; +} toss_info_t; + +typedef struct { + uint16 toss_reason; + uint16 toss_cnt; +} toss_cnt_t; + +typedef struct { + uint16 version; + uint8 htr_type; /* from wl_slice_hist_XX_stats_xtlv_id */ + uint8 htr_num; /* number of elements in htr_running or htr_rc */ + uint16 htr_rnidx; /* htr_running[rnidx-1] has latest data */ + uint16 htr_rcidx; /* htr_rc[rcidx-1] has latest data */ + toss_info_t htr_running[WLC_HIST_TOSS_LEN]; /* last 8 reasons along with seq, etc as + * per WLC_SDC_COMPACT_TOSS_REASON() format + */ + uint32 htr_rn_ts[WLC_HIST_TOSS_LEN]; /* time stamps corr to htr_running data */ + toss_cnt_t htr_rc[WLC_HIST_TOSS_LEN]; /* last 8 toss reasons and counts in + * WLC_SDC_COMPACT_TOSS_RC() format + */ + uint32 htr_rc_ts[WLC_HIST_TOSS_LEN]; /* time stamps corr to htr_rc */ +} wl_hist_compact_toss_stats_v3_t; + /* ***END of SDC_TYPE_STA_ONBOARD_DEBUG specific ******* */ #endif /* BCM_SDC */ @@ -21034,6 +21850,7 @@ enum wl_sc_cmd { WL_SC_CMD_CNX = 1, WL_SC_CMD_CAP = 2, WL_SC_CMD_CONFIG = 3, + WL_SC_CMD_PMALERT_ADJ_FACTOR = 4, WL_SC_CMD_LAST }; @@ -21079,14 +21896,129 @@ enum wlc_btcec_iocv_subcmds { WL_BTCEC_SUBCMD_LAST }; -#define WLC_BTCEC_STATS_V1 1u +/* btcec - bt schedule id's */ +typedef enum { + BTCEC_SCHED_ID_LE_SCAN = 1, + BTCEC_SCHED_ID_PAGE_SCAN = 2 +} BTCEC_SCHED_IDS; +/* max schedule id must be equal to last valid schedule id */ +#define BTCEC_SCHED_MAX_V1 BTCEC_SCHED_ID_PAGE_SCAN +/* meanings of flags */ +/* bit0: schedule with the given sch_id is present in btcec */ +#define BTCEC_SCHSTATS_FLAG_ACTIVE (0x1) +/* bit1: schedule with the given sch_id is successfully registered with wbus */ +#define BTCEC_SCHSTATS_FLAG_WBUS_REG_OK (0x2) +/* bit2: schedule with the given sch_id is being scheduled in wbus */ +#define BTCEC_SCHSTATS_FLAG_WBUS_SCHEDULED (0x4) + +/* v1 supports pmdur only */ +#define WLC_BTCEC_STATS_V1 1u typedef struct wlc_btcec_stats_v1 { uint16 ver; uint16 len; uint32 pmdur; /* duration in millisec granted for bt corr to which wlsc slept */ } wlc_btcec_stats_v1_t; +/* v2 supports 1 page scan and 1 le scan */ +#define WLC_BTCEC_STATS_V2 2u +/* btcec per schedule stats for general reporting */ +typedef struct wlc_btcec_sch_stats_v2 { + uint8 sch_id; /* schedule id */ + uint8 flags; /* flags. see BTCEC_SCHSTATS_FLAG_xxx */ + uint8 pad[2]; + uint32 slcnt; /* num slots granted to bt */ + uint32 skip; /* count of btsc le/page scan, skipped */ + uint32 btdur; /* duration in millisec granted for bt corr to which wlsc slept */ + uint32 overlap; /* wlsc was awake and btsc le/page scan overlapped, in ms */ + uint32 txblnk; /* wlauxtx blanked btsc le/page scan, in ms */ +} wlc_btcec_sch_stats_v2_t; + +/* btcec stats for general reporting */ +typedef struct wlc_btcec_stats_v2 { + uint16 ver; + uint16 len; + uint32 rx_msg_cnt; /* received messages counter */ + uint32 tx_msg_cnt; /* transmitted messages counter */ + uint32 add_msg_cnt; /* rx add messages counter */ + uint32 del_msg_cnt; /* rx del messages counter */ + uint32 stats_dur; /* dur in sec for which stats is accumulated */ + uint8 pad[3]; + uint8 num_sstats; /* number of elements in sstats struct */ + wlc_btcec_sch_stats_v2_t sstats[]; /* sch specific stats */ +} wlc_btcec_stats_v2_t; + +/* v3 = v2 + ac_overlap */ +#define WLC_BTCEC_STATS_V3 3u +/* btcec per schedule stats for general reporting */ +typedef struct wlc_btcec_sch_stats_v3 { + uint8 sch_id; /* schedule id */ + uint8 flags; /* flags. see BTCEC_SCHSTATS_FLAG_xxx */ + uint8 pad[2]; + uint32 slcnt; /* num slots granted to bt */ + uint32 skip; /* count of btsc le/page scan, skipped */ + uint32 btdur; /* duration in millisec granted for bt corr to which wlsc slept */ + uint32 overlap; /* wlsc was awake and btsc le/page scan overlapped, in ms */ + uint32 txblnk; /* wlauxtx blanked btsc le/page scan, in ms */ + uint32 ac_overlap; /* wlaux overlapped btsc le/page scan, in ms */ + uint16 sched_duration; /* duration finally scheduled in msch, in ms */ + uint16 sched_interval; /* interval finally scheduled in msch, in ms */ + uint16 req_duration; /* duration finally scheduled in msch, in ms */ + uint16 req_interval; /* interval finally scheduled in msch, in ms */ + uint16 min_duty_cycle; /* interval finally scheduled in msch, in ms */ + uint16 pad2; +} wlc_btcec_sch_stats_v3_t; + +/* btcec stats for general reporting */ +typedef struct wlc_btcec_stats_v3 { + uint16 ver; + uint16 len; + uint32 rx_msg_cnt; /* received messages counter */ + uint32 tx_msg_cnt; /* transmitted messages counter */ + uint32 add_msg_cnt; /* rx add messages counter */ + uint32 del_msg_cnt; /* rx del messages counter */ + uint32 stats_dur; /* dur in sec for which stats is accumulated */ + uint8 pad[3]; + uint8 num_sstats; /* number of elements in sstats struct */ + wlc_btcec_sch_stats_v3_t sstats[]; /* sch specific stats */ +} wlc_btcec_stats_v3_t; + +/* btcec periodic ecounters structs + * [similar to wlc_btcec_stats_vX_t, but constrained in size due to its periodicity of reporting] + */ +#define WLC_BTCEC_PERIODIC_CNTRS_V1 (1u) + +/* btcec per schedule stats for periodic ecounters reporting */ +typedef struct wlc_btcec_periodic_sch_stats_v1 { + uint8 sch_id; /* schedule id from BTCEC_SCHED_IDS */ + uint8 flags; /* flags. see BTCEC_SCHSTATS_FLAG_xxx */ + uint8 slcnt; /* num slots granted to bt */ + uint8 skip; /* count of btsc le/page scan, skipped */ + uint16 btdur; /* duration in millisec granted for bt corr to which wlsc slept */ + uint16 overlap; /* wlsc was awake and btsc le/page scan overlapped, in ms */ + uint16 txblnk; /* wlauxtx blanked btsc le/page scan, in ms */ + uint16 ac_overlap; /* wlaux overlapped btsc le/page scan, in ms */ + uint16 sched_duration; /* duration finally scheduled in msch, in ms */ + uint16 sched_interval; /* interval finally scheduled in msch, in ms */ + uint16 req_duration; /* duration finally scheduled in msch, in ms */ + uint16 req_interval; /* interval finally scheduled in msch, in ms */ + uint16 min_duty_cycle; /* interval finally scheduled in msch, in ms */ + uint16 pad2; +} wlc_btcec_periodic_sch_stats_v1_t; + +/* btcec stats for periodic ecounters reporting */ +typedef struct { + uint16 ver; + uint16 len; + uint8 rx_msg_cnt; /* received messages counter */ + uint8 tx_msg_cnt; /* transmitted messages counter */ + uint8 add_msg_cnt; /* rx add messages counter */ + uint8 del_msg_cnt; /* rx del messages counter */ + uint8 pad[3]; + uint8 num_sstats; /* number of elements in sstats struct */ + wlc_btcec_periodic_sch_stats_v1_t sstats[BTCEC_SCHED_MAX_V1]; /* sch specific */ +} wlc_btcec_periodic_stats_v1_t; + #define WBUS_OFFLOAD_STATS_V1 1u #define WBUS_OFFLOAD_USER_STATS_V1 1u @@ -22004,7 +22936,9 @@ typedef enum tx_profile_cmd_id { /* Dump TX Profile related debug information. */ WL_TX_PROFILE_DUMP = 4, /* Show TX Profile stats */ - WL_TX_PROFILE_STATS = 5 + WL_TX_PROFILE_STATS = 5, + /* Show Tx Profile tagged packets log */ + WL_TX_PROFILE_PKT_LOGS = 6 } tx_profile_cmd_id_t; typedef struct tx_profile_index_params { @@ -22020,6 +22954,13 @@ typedef struct tx_profile_index_stats { uint32 tx_phy_err_cnt; uint32 tx_suspend_cnt; } tx_profile_index_stats_t; + +typedef struct tx_profile_pkt_log { + uint32 rate; + uint16 retries; + uint16 rts; +} tx_profile_pkt_log_t; + /* End TX Profile section */ typedef enum wl_rffe_cmd_type { @@ -22153,6 +23094,27 @@ typedef struct wlc_nr5gcx_status_v1 { */ } wlc_nr5gcx_status_v1_t; +#define RC1CX_STATUS_VER_1 1 +/* RC1 coex status structures */ +typedef struct wlc_rc1cx_status_v1 { + uint16 version; /* version info */ + uint16 len; /* status length */ + uint32 mode; /* RC1 coex status */ + uint32 rc1_req_cnt; /* RC1 req number since last read */ + uint32 rc1_dur; /* RC1 duration since last read, us */ + uint32 rc1_duty_cycle; /* RC1 duty cycle since last read */ + uint32 rc1_max_dur; /* RC1 max duration in a single request */ + uint32 wlan_crit_cnt; /* aggregated # of WLAN critical events */ + uint32 wlan_crit_dur; /* aggregated WLAN critical event duration, ms */ + uint32 wlan_crit_max_dur; /* Duration of the WLAN critical events whose dur is max */ + uint16 wlan_crit_evt_bitmap; /* WLAN critical event occurrence bitmap, + * 1 event per bit. + */ + uint16 wlan_crit_max_evt_type; /* The event type of the WLAN critical + * event whose dur is max + */ +} wlc_rc1cx_status_v1_t; + /* ifdef (WLC_OBSS_HW) */ /* OBSS HW specific Macros */ #define WLC_OBSS_HW_CMD_VERSION_1 1u @@ -22230,11 +23192,13 @@ typedef struct wlc_obss_hw_test_v1 { #define STA_PM_SC_MISSED_BCN_THR_MASK (1u << 2u) #define STA_PM_SC_OFLD_RSSI_THR_MASK (1u << 3u) #define STA_PM_SC_OFLD_RSSI_HYST_MASK (1u << 4u) +#define STA_PM_SC_OFLD_TIM_EXIT_DLY_MASK (1u << 5u) #define STA_PM_SC_OFLD_FIELD_MASK_ALL (STA_PM_SC_FLAG_MASK | \ STA_PM_SC_CONS_EXP_BCN_RX_THR_MASK | \ STA_PM_SC_MISSED_BCN_THR_MASK | \ STA_PM_SC_OFLD_RSSI_THR_MASK | \ - STA_PM_SC_OFLD_RSSI_HYST_MASK) + STA_PM_SC_OFLD_RSSI_HYST_MASK | \ + STA_PM_SC_OFLD_TIM_EXIT_DLY_MASK) #define STA_PM_SC_OFLD_RSSI_HYST_MAX 80u @@ -22247,6 +23211,8 @@ typedef struct wlc_sta_pm_sc_ofld_cfg_v1 { uint8 sc_missed_bcn_thr; /* Missed beacons threshold in SC to exit offload */ int8 sc_offload_rssi_thr; /* Bcn RSSI threshold to exit offload, must be negative */ uint8 sc_offload_rssi_hyst; /* Hysteresis for the RSSI threshold, 0 - RSSI_HYST_MAX */ + uint8 tim_exit_delay_ms; /* TIM exit delay when DTIM AID=0 is also set */ + uint8 PAD[3]; } wlc_sta_pm_sc_ofld_cfg_v1_t; typedef enum wlc_sta_pm_sc_ofld_fail_reason { @@ -22262,7 +23228,9 @@ typedef enum wlc_sta_pm_sc_ofld_fail_reason { STA_PM_SC_OFLD_FAIL_DISABLED = (1u << 9u), /* Offload disabled */ STA_PM_SC_OFLD_FAIL_CAL = (1u << 10u), /* Cal on main/aux core */ STA_PM_SC_OFLD_FAIL_UNSUP_BCMC_RATE_RX = (1u << 11u), /* unsupported bcmc rate rx */ - STA_PM_SC_OFLD_FAIL_TWT_ACTIVE = (1u << 12u) /* TWT is active */ + STA_PM_SC_OFLD_FAIL_TWT_ACTIVE = (1u << 12u), /* TWT is active */ + STA_PM_SC_OFLD_FAIL_AP_ENAB = (1u << 13u), /* AP cfg is enabled */ + STA_PM_SC_OFLD_FAIL_SLOTTED_BSS_ENAB = (1u << 14u) /* Slotted BSS is enabled */ } wlc_sta_pm_sc_ofld_fail_reason_t; typedef enum wlc_sta_pm_sc_ofld_exit_reason { @@ -22285,6 +23253,8 @@ typedef enum wlc_sta_pm_sc_ofld_exit_reason { STA_PM_SC_OFLD_EXIT_UNSUP_BCMC_RATE_RX, /* Exit due to unsupported bcmc rate rx */ STA_PM_SC_OFLD_EXIT_BCMC_LOSS, /* Exit due to bcmc pkt loss */ STA_PM_SC_OFLD_EXIT_TWT, /* Exit due to TWT active */ + STA_PM_SC_OFLD_EXIT_SLOTTED_BSS, /* Exit due to Slotted BSS active */ + STA_PM_SC_OFLD_EXIT_AP_BSS, /* Exit due to AP BSS active */ STA_PM_SC_OFLD_EXIT_MAX = 255u /* Max, uint8 for now */ } wlc_sta_pm_sc_ofld_exit_reason_t; @@ -22306,6 +23276,7 @@ typedef struct wlc_sta_pm_sc_status_v1 { uint32 sc_offload_last_exit_reason; /* Previous exit reason */ uint32 sc_offload_enter_fail_reason; /* SC ofld enter fail reason */ uint32 sc_offload_total_dur_ms; /* Cumulative duration in offload (ms) */ + uint32 sc_offload_tim_exit_dly_cnt; /* TIM exit delay cnt */ } wlc_sta_pm_sc_status_v1_t; #define WL_SDTC_IOV_VERSION 1 @@ -22433,6 +23404,38 @@ typedef struct wlc_bcn_mute_miti_cfg_v1 { */ } wlc_bcn_mute_miti_cfg_v1_t; +#define WLC_BCN_TBTT_CMD_VER_1 (1u) /* Ver num for wlc_bcn_tbtt_cfg struct */ +/* Configurable mitigation Timeout range */ +#define WLC_BCN_TBTT_CFG_EVENT_PERIOD (3u) /* Send event after this value of drift */ +#define WLC_BCN_TBTT_CFG_DRIFT_THRESH (3) /* in ms */ +#define WLC_BCN_TBTT_CFG_JITTER_THRESH (1) /* in ms */ + +/* Macro flags to identify the specific config commands in IOVAR set operation */ +#define WLC_BCN_DRIFT_BCN_OFFSET (1u << 0u) +#define WLC_BCN_DRIFT_EVENT_PERIOD (1u << 1u) +#define WLC_BCN_DRIFT_DRIFT_THRESHOLD (1u << 2u) +#define WLC_BCN_DRIFT_JITTER_THRESHOLD (1u << 3u) + +/* configurable range */ +#define WLC_BCN_DRIFT_BCN_OFFSET_MAX (15u) +#define WLC_BCN_DRIFT_BCN_OFFSET_MIN (5u) + +#define WLC_BCN_DRIFT_DRIFT_THRESHOLD_MAX (10) +#define WLC_BCN_DRIFT_DRIFT_THRESHOLD_MIN (-4) + +#define WLC_BCN_DRIFT_JITTER_THRESHOLD_MAX (2) +#define WLC_BCN_DRIFT_JITTER_THRESHOLD_MIN (-2) + +typedef struct wlc_bcn_tbtt_cfg_v1 { + uint16 version; /* Structure version */ + uint16 length; /* Length of whole struct */ + uint32 cmd; /* type of cmd */ + uint8 tbtt_bcn_off; /* num btw (5-15u) for uatbtt */ + uint8 event_period; /* continous / periodic event */ + int8 drift_thres; /* drift threshold for event in ms */ + int8 jitter_thres; /* jitter threshold for event in ms */ +} wlc_bcn_tbtt_cfg_v1_t; + /* SC scan retry config params */ #define SC_SCAN_RETRY_CFG_VERSION 1u @@ -22480,6 +23483,27 @@ typedef struct wl_rng_iovar { // MOG-ON: WL_RC_CX #ifdef RC2CX +#define RC2CX_STATUS_VER_1 1 +/* RC2 coex status structures */ +typedef struct wlc_rc2cx_stats_v1 { + uint16 version; /* version info */ + uint8 len; /* status length */ + uint8 mode; /* RC2 coex mode */ + uint16 rc2_req_cnt; /* RC2 req number since last read. */ + uint16 rc2_grant_cnt; /* RC2 grant count since last read. */ + uint32 rc2_dur; /* RC2 duration since last read, us. */ + uint16 rc2_succ_pm_prot_cnt; /* RC2 number of successfully acked PM. */ + uint16 rc2_succ_cts_prot_cnt; /* RC2 number of successfully TXed CTS2A. */ + uint16 rc2_grant_delay_cnt; /* RC2 grant delay counter, delay > 4.5ms. */ + uint16 rc2_crit_phycal_cnt; /* RC2 WLAN/BT critical: PHY cal. counter. */ + uint16 rc2_crit_rate_cnt; /* RC2 WLAN/BT critical: rate recovery counter. */ + uint16 rc2_crit_bcnloss_cnt; /* RC2 WLAN/BT critical: beacon loss counter. */ + uint16 rc2_crit_hpp_cnt; /* RC2 WLAN/BT critical: HPP counter. */ + uint16 rc2_crit_bt_cnt; /* RC2 WLAN/BT critical: BT counter. */ + uint16 rc2_crit_slotbss_cnt; /* RC2 WLAN/BT critical: AWDL/NAN counter. */ + uint16 rsvd; + uint32 rc2_crit_cnt; /* RC2 WLAN/BT critical counter, aggregate. */ +} wlc_rc2cx_stats_v1_t; /* Definitions for RC2 coex iovar */ #define WL_RC2CX_VERSION 1 @@ -22504,9 +23528,15 @@ typedef enum rc2cx_cmd_id { #define RC2CX_PER_CTS_ENABLED 0x01u #define RC2CX_PER_CTS_DISABLED 0x00u +#define RC2CX_PER_CTS_DENY_BT 0x02u +#define RC2CX_PER_CTS_GRANT_BT 0x01u + /* payload for the WL_RC2CX_CMD_PER_CTS command */ typedef struct rc2cx_per_cts_config { - uint8 enable_flag; /* 1: enabled; 0: disabled */ + uint8 enable_flag; /* 0: feature disabled; + * 1: grant BT when granting RC2; + * 2: deny BT when granting RC2 + */ uint8 duration_val; /* Must be valid with enable command */ uint8 interval_val; /* Must be valid with enable command */ uint8 pad; @@ -22515,4 +23545,68 @@ typedef struct rc2cx_per_cts_config { #endif /* RC2CX */ // MOG-OFF: WL_RC_CX +enum phy_rxgcrs_ed_enhncd_cmd_id { + PHY_RXGCRS_ED_ENHNCD_CMD_EN = 1u, + PHY_RXGCRS_ED_ENHNCD_CMD_STATUS = 2u, + PHY_RXGCRS_ED_ENHNCD_CMD_COREMASK = 3u, + PHY_RXGCRS_ED_ENHNCD_CMD_LAST +}; + +/* SAE command + * Only IOV batching support - see bcmiov.h + */ + +/* SAE command version */ +#define WL_SAE_CMD_VERSION 1 + +/* SAE sub-commands */ +typedef enum sae_cmd_id { + WL_SAE_CMD_AP_SESSION_HOLD_TIME = 1, /* AP rate limit session hold time + * Data: uint32, + * miliseconds + */ + WL_SAE_CMD_AP_MAX_ACTIVE_SESSIONS = 2, /* AP max sessions + * Data: + * uint32 + */ +} sae_cmd_id_t; + +/* Frameburst COT IOVAR data */ +#define WL_FRAMEBURST_COT_VERSION 1u /* current version of frameburst_cot structure */ +#define WL_FRAMEBURST_MAX_AC 4u +typedef struct frameburst_cot { + uint16 version; /* version of frameburst_cot_t structure */ + uint16 length; + chanspec_t chspec; + uint16 pad; /* padding */ + uint16 fbcot[WL_FRAMEBURST_MAX_AC]; /* per AC (BK, BE, VI, and VO) in us units */ +} frameburst_cot_t; + +typedef enum { + BCM_TRACE_VER = 1, + BCM_TRACE_ENAB = 2, + BCM_TRACE_EVENT_ENAB = 3 +} bcm_trace_sub_cmds_t; + +/* Trace events + * Max trace event allowed = 255 + */ +enum { + BCM_TRACE_E_INVALID = 0, + BCM_TRACE_E_WBUS = 1, + BCM_TRACE_E_MSCH = 2, + BCM_TRACE_E_SC = 3, + BCM_TRACE_E_SCAN = 4, + BCM_TRACE_E_LAST +}; + +#define BCM_TRACE_VERSION_1 1u + +typedef struct bcm_trace_event_enab_v1 { + uint8 version; + uint8 event; + uint8 enab; + uint8 pad[1]; +} bcm_trace_event_enab_v1_t; + #endif /* _wlioctl_h_ */ diff --git a/drivers/net/wireless/bcmdhd_100_15/include/wlioctl_defs.h b/drivers/net/wireless/bcmdhd_100_15/include/wlioctl_defs.h index 0cea120fe0c0..23d80b76eb49 100644 --- a/drivers/net/wireless/bcmdhd_100_15/include/wlioctl_defs.h +++ b/drivers/net/wireless/bcmdhd_100_15/include/wlioctl_defs.h @@ -147,6 +147,9 @@ #define WL_STA_DWDS_CAP 0x01000000 /* DWDS CAP */ #define WL_STA_DWDS 0x02000000 /* DWDS active */ #define WL_WDS_LINKUP WL_STA_WDS_LINKUP /* deprecated */ +#define WL_STA_IS_2G 0x04000000 /* 2G channels supported */ +#define WL_STA_IS_5G 0x08000000 /* 5G channels supported */ +#define WL_STA_IS_6G 0x10000000 /* 6G channels supported */ /* STA HT cap fields */ #define WL_STA_CAP_LDPC_CODING 0x0001 /* Support for rx of LDPC coded pkts */ @@ -220,6 +223,7 @@ /* Mask bit for LOW power scan, High accuracy scan, LOW span scan bit defines */ #define WL_SCANFLAGS_SCAN_MODE_MASK 0x7000u +#define WL_SCANFLAGS_SCAN_MODE_SHIFT 12u /* Bitmask for scan_type */ /* Reserved flag precludes the use of 0xff for scan_type which is @@ -258,6 +262,9 @@ * enable LISTEN along with PASSIVE flag */ +/* BIT MASK for SSID TYPE */ +#define WL_SCAN_SSIDFLAGS_SHORT_SSID 0x01U /* Use as Regular SSID */ + /* Value to decide scan type based on scqs */ #define WL_SC_RETRY_SCAN_MODE_NO_SCAN 0x0u /* Do not reschedule scan */ #define WL_SC_RETRY_SCAN_MODE_HIGH_ACC 0x1u /* Reschedule scan as HighAccuracy */ @@ -770,7 +777,6 @@ #define WLC_GET_LAZYWDS 138 #define WLC_SET_LAZYWDS 139 #define WLC_GET_BANDLIST 140 - #define WLC_GET_BAND 141 #define WLC_SET_BAND 142 #define WLC_SCB_DEAUTHENTICATE 143 @@ -1074,6 +1080,8 @@ #define WLC_BAND_6G 4 /* 6 Ghz */ #define WLC_BAND_INVALID -1 /* Invalid band */ +#define WL_BAND_MAX_CNT 3 /* max number of bands supported */ + /* band range returned by band_range iovar */ #define WL_CHAN_FREQ_RANGE_2G 0 #define WL_CHAN_FREQ_RANGE_5GL 1 @@ -1523,77 +1531,20 @@ /* maximum channels returned by the get valid channels iovar */ #define WL_NUMCHANNELS 64 -/* Channels break down for 2G BAND -* 2G 20MHz = 14 -* -* 2G 40MHz -* 9 * 2 = 18 -* -* 2G tot = 14 + 18 = 32 -* -* Channels Break down for 5G BAND -* 5G 20MHz -* 36-48 4 -* 52-64 4 -* 100-144 12 -* 149-161 4 -* 165 1 -* 5G 20 subtot = 25 -* -* 5G 40 12 * 2 = 24 -* 5G 80 6 * 4 = 24 -* 5G 160 2 * 8 = 16 -* -* 5G total = 25 + 24+ 24+ 16 = 89 -* -* TOTAL 2G and 5G -* 2G + 5G = (32 + 89) = 121 -* -* Channels Break down for 6G BAND -* 20MHz = 59 -* 40MHz 29 * 2 = 58 -* 80MHz 14 * 4 = 56 -* 160MHz 7 * 8 = 56 -* 6G total = 59 + 58 + 56 + 56 = 229 -* -* Toal WL_NUMCHANSPECS 2G/5G/6G -* total = 32 + 89 + 229 = 350 -* -* IF 5g 80+80 is defined -* 80MHz cf pairs are: -* 42 106 -* 42 122 -* 42 138 -* 42 155 -* 58 106 -* 58 122 -* 58 138 -* 58 155 -* 106 138 -* 106 155 -* 122 155 -* 138 155 -* -* -* 12 pairs * 8 primary channels = 96 -* TOTAL 2G + 5G + 5G (80 + 80) -* 32 + 89 + 96 = 217 -* -*TOTAL 2G + 5G + 5G (80 + 80) +6G (excluding 80 + 80) -* 32 + 89 + 96 + 229 = 446 -* -*/ +/* This constant is obsolete, not part of ioctl/iovar interface and should never be used + * It is preserved only for compatibility with older branches that use it + */ #ifdef WL_BAND6G -/* max number of chanspecs (used by the iovar to calc. buf space) */ #ifdef WL11AC_80P80 #define WL_NUMCHANSPECS 446 #else #define WL_NUMCHANSPECS 350 #endif // endif #else -/* max number of chanspecs (used by the iovar to calc. buf space) */ -#ifdef WL11AC_80P80 +#if defined(WL11AC_80P80) #define WL_NUMCHANSPECS 206 +#elif defined(WL_BW160MHZ) +#define WL_NUMCHANSPECS 140 #else #define WL_NUMCHANSPECS 110 #endif // endif @@ -2197,14 +2148,6 @@ #define MAX_BSSID_BLACKLIST_NUM 32 #endif /* CUSTOM_BSSID_BLACKLIST_NUM */ -#ifndef BESTN_MAX -#define BESTN_MAX 10 -#endif // endif - -#ifndef MSCAN_MAX -#define MSCAN_MAX 32 -#endif // endif - /* TCP Checksum Offload error injection for testing */ #define TOE_ERRTEST_TX_CSUM 0x00000001 #define TOE_ERRTEST_RX_CSUM 0x00000002 diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_android.c b/drivers/net/wireless/bcmdhd_100_15/wl_android.c index b4b54f4cff80..b31a85c011c5 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_android.c +++ b/drivers/net/wireless/bcmdhd_100_15/wl_android.c @@ -24,7 +24,7 @@ * * <> * - * $Id: wl_android.c 855877 2019-12-18 03:16:29Z $ + * $Id: wl_android.c 874925 2020-04-24 08:58:32Z $ */ #include @@ -1542,17 +1542,19 @@ wl_android_set_band(struct net_device *dev, char *command) #ifdef CUSTOMER_HW4_PRIVATE_CMD #ifdef ROAM_API +#ifdef WBTEXT static bool wl_android_check_wbtext_support(struct net_device *dev) { dhd_pub_t *dhdp = wl_cfg80211_get_dhdp(dev); return dhdp->wbtext_support; } +#endif /* WBTEXT */ static bool wl_android_check_wbtext_policy(struct net_device *dev) { - dhd_pub_t *dhdp = wl_cfg80211_get_dhdp(dev); #ifdef WBTEXT + dhd_pub_t *dhdp = wl_cfg80211_get_dhdp(dev); if (dhdp->wbtext_policy == WL_BSSTRANS_POLICY_PRODUCT_WBTEXT) { return TRUE; } @@ -3424,6 +3426,12 @@ wl_cfg80211_get_sta_info(struct net_device *dev, char* command, int total_len) iovar_buf, WLC_IOCTL_MAXLEN, NULL); if (ret < 0) { WL_ERR(("Get sta_info ERR %d\n", ret)); +#ifdef CONFIG_BCM43436 + if (ret == BCME_BADADDR) { + bytes_written = BCME_UNSUPPORTED; + WL_ERR(("ret code is changed as %d\n", bytes_written)); + } +#endif /* CONFIG_BCM43436 */ #ifdef BIGDATA_SOFTAP goto get_bigdata; #else @@ -9858,23 +9866,35 @@ wl_handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) * Usage examples: * DRIVER COUNTRY US * DRIVER COUNTRY US/7 + * Wrong revinfo should be filtered: + * DRIVER COUNTRY US/-1 */ char *country_code = command + strlen(CMD_COUNTRY) + 1; char *rev_info_delim = country_code + 2; /* 2 bytes of country code */ int revinfo = -1; #if defined(DHD_BLOB_EXISTENCE_CHECK) dhd_pub_t *dhdp = wl_cfg80211_get_dhdp(net); - - if (dhdp->is_blob) { - revinfo = 0; - } else #endif /* DHD_BLOB_EXISTENCE_CHECK */ if ((rev_info_delim) && (strnicmp(rev_info_delim, CMD_COUNTRY_DELIMITER, strlen(CMD_COUNTRY_DELIMITER)) == 0) && (rev_info_delim + 1)) { revinfo = bcm_atoi(rev_info_delim + 1); + } else { + revinfo = 0; } + + if (revinfo < 0) { + DHD_ERROR(("%s:failed due to wrong revinfo %d\n", __FUNCTION__, revinfo)); + return BCME_BADARG; + } + +#if defined(DHD_BLOB_EXISTENCE_CHECK) + if (dhdp->is_blob) { + revinfo = 0; + } +#endif /* DHD_BLOB_EXISTENCE_CHECK */ + bytes_written = wl_cfg80211_set_country_code(net, country_code, true, true, revinfo); #ifdef CUSTOMER_HW4_PRIVATE_CMD diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.c b/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.c index c71b6cc218bd..bd5a8e64d728 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.c +++ b/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.c @@ -24,7 +24,7 @@ * * <> * - * $Id: wl_cfg80211.c 862085 2020-01-31 01:26:59Z $ + * $Id: wl_cfg80211.c 874925 2020-04-24 08:58:32Z $ */ /* */ #include @@ -359,6 +359,25 @@ static const char *wl_if_state_strs[WL_IF_STATE_MAX + 1] = { #define PM_BLOCK 1 #define PM_ENABLE 0 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) +#define IS_REGDOM_SELF_MANAGED(wiphy) \ + (wiphy->regulatory_flags & REGULATORY_WIPHY_SELF_MANAGED) +#else +#define IS_REGDOM_SELF_MANAGED(wiphy) (false) +#endif /* KERNEL >= 4.0 */ + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) && defined(WL_SELF_MANAGED_REGDOM) +#define WL_UPDATE_CUSTOM_REGULATORY(wiphy) \ + wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#define WL_UPDATE_CUSTOM_REGULATORY(wiphy) \ + wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; +#else /* kernel > 4.0 && WL_SELF_MANAGED_REGDOM */ +/* Kernels < 3.14 */ +#define WL_UPDATE_CUSTOM_REGULATORY(wiphy) \ + wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) */ + /* GCMP crypto supported above kernel v4.0 */ #if (LINUX_VERSION_CODE > KERNEL_VERSION(4, 0, 0)) #define WL_GCMP @@ -3915,6 +3934,50 @@ wl_cfg80211_to_fw_iftype(wl_iftype_t iftype) return ret; } +#ifdef CUSTOMER_HW4 +static bool +wl_legacy_chip_check(struct bcm_cfg80211 *cfg) +{ + int ret = FALSE; +#if defined(BCMSDIO) || defined(BCMPCIE) + u32 chipid, chiprevid; + dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); + + chipid = dhd_bus_chip_id(dhdp); + chiprevid = dhd_bus_chiprev_id(dhdp); + WL_DBG(("chipid=0x%x, chiprevid=%x\n", chipid, chiprevid)); + if (chipid == BCM4350_CHIP_ID || chipid == BCM4345_CHIP_ID) { + ret = TRUE; + } else { + ret = FALSE; + } +#endif /* BCMSDIO || BCMPCIE */ + + return ret; +} + +static bool +wl_check_interface_create_v0(struct bcm_cfg80211 *cfg) +{ + int ret = FALSE; +#if defined(BCMSDIO) || defined(BCMPCIE) + u32 chipid, chiprevid; + dhd_pub_t *dhdp = (dhd_pub_t *)(cfg->pub); + + chipid = dhd_bus_chip_id(dhdp); + chiprevid = dhd_bus_chiprev_id(dhdp); + WL_DBG(("chipid=0x%x, chiprevid=%x\n", chipid, chiprevid)); + + if (chipid == BCM4359_CHIP_ID && + (chiprevid == 5 || chiprevid == 9)) { + ret = TRUE; + } +#endif /* BCMSDIO || BCMPCIE */ + + return ret; +} +#endif /* CUSTOMER_HW4 */ + s32 wl_cfg80211_interface_ops(struct bcm_cfg80211 *cfg, struct net_device *ndev, s32 bsscfg_idx, @@ -3929,6 +3992,10 @@ wl_cfg80211_interface_ops(struct bcm_cfg80211 *cfg, bool use_iface_info_v2 = false; u8 ioctl_buf[WLC_IOCTL_SMLEN]; s32 iftype; +#ifdef CUSTOMER_HW4 + wl_interface_info_v0_t *info_v0; + bool use_iface_info_v0 = false; +#endif /* CUSTOMER_HW4 */ if (del) { ret = wldev_iovar_setbuf(ndev, "interface_remove", @@ -3954,38 +4021,59 @@ wl_cfg80211_interface_ops(struct bcm_cfg80211 *cfg, ifflags |= WL_INTERFACE_MAC_USE; } - /* Pass ver = 0 for fetching the interface_create iovar version */ - ret = wldev_iovar_getbuf(ndev, "interface_create", - &iface, sizeof(struct wl_interface_create_v2), - ioctl_buf, sizeof(ioctl_buf), NULL); - if (ret == BCME_UNSUPPORTED) { - WL_ERR(("interface_create iovar not supported\n")); - return ret; - } else if ((ret == 0) && *((uint32 *)ioctl_buf) == WL_INTERFACE_CREATE_VER_3) { - WL_DBG(("interface_create version 3. flags:0x%x \n", ifflags)); - use_iface_info_v2 = true; - bzero(&iface_v3, sizeof(wl_interface_create_v3_t)); - iface_v3.ver = WL_INTERFACE_CREATE_VER_3; - iface_v3.iftype = iftype; - iface_v3.flags = ifflags; +#ifdef CUSTOMER_HW4 + /* BCM4359B0/C0 chips are using the iovar version 0 */ + if (wl_check_interface_create_v0(cfg)) { + wl_interface_create_v0_t iface_v0; + + WL_DBG(("interface_create version 0\n")); + bzero(&iface_v0, sizeof(iface_v0)); + use_iface_info_v0 = true; + iface_v0.ver = WL_INTERFACE_CREATE_VER_0; + iface_v0.flags = ifflags; if (addr) { - memcpy(&iface_v3.mac_addr.octet, addr, ETH_ALEN); + memcpy(&iface_v0.mac_addr.octet, addr, ETH_ALEN); } ret = wldev_iovar_getbuf(ndev, "interface_create", - &iface_v3, sizeof(wl_interface_create_v3_t), + &iface_v0, sizeof(wl_interface_create_v0_t), ioctl_buf, sizeof(ioctl_buf), NULL); - } else { - /* On any other error, attempt with iovar version 2 */ - WL_DBG(("interface_create version 2. get_ver:%d ifflags:0x%x\n", ret, ifflags)); - iface.ver = WL_INTERFACE_CREATE_VER_2; - iface.iftype = iftype; - iface.flags = ifflags; - if (addr) { - memcpy(&iface.mac_addr.octet, addr, ETH_ALEN); - } + } else +#endif /* CUSTOMER_HW4 */ + { + /* Pass ver = 0 for fetching the interface_create iovar version */ ret = wldev_iovar_getbuf(ndev, "interface_create", &iface, sizeof(struct wl_interface_create_v2), ioctl_buf, sizeof(ioctl_buf), NULL); + if (ret == BCME_UNSUPPORTED) { + WL_ERR(("interface_create iovar not supported\n")); + return ret; + } else if ((ret == 0) && *((uint32 *)ioctl_buf) == WL_INTERFACE_CREATE_VER_3) { + WL_DBG(("interface_create version 3. flags:0x%x \n", ifflags)); + use_iface_info_v2 = true; + bzero(&iface_v3, sizeof(wl_interface_create_v3_t)); + iface_v3.ver = WL_INTERFACE_CREATE_VER_3; + iface_v3.iftype = iftype; + iface_v3.flags = ifflags; + if (addr) { + memcpy(&iface_v3.mac_addr.octet, addr, ETH_ALEN); + } + ret = wldev_iovar_getbuf(ndev, "interface_create", + &iface_v3, sizeof(wl_interface_create_v3_t), + ioctl_buf, sizeof(ioctl_buf), NULL); + } else { + /* On any other error, attempt with iovar version 2 */ + WL_DBG(("interface_create version 2. get_ver:%d ifflags:0x%x\n", + ret, ifflags)); + iface.ver = WL_INTERFACE_CREATE_VER_2; + iface.iftype = iftype; + iface.flags = ifflags; + if (addr) { + memcpy(&iface.mac_addr.octet, addr, ETH_ALEN); + } + ret = wldev_iovar_getbuf(ndev, "interface_create", + &iface, sizeof(struct wl_interface_create_v2), + ioctl_buf, sizeof(ioctl_buf), NULL); + } } if (unlikely(ret)) { @@ -3997,7 +4085,15 @@ wl_cfg80211_interface_ops(struct bcm_cfg80211 *cfg, if (use_iface_info_v2 == true) { info_v2 = (wl_interface_info_v2_t *)ioctl_buf; ret = info_v2->bsscfgidx; - } else { + } +#ifdef CUSTOMER_HW4 + else if (use_iface_info_v0 == true) { + /* Use v0 struct */ + info_v0 = (wl_interface_info_v0_t *)ioctl_buf; + ret = info_v0->bsscfgidx; + } +#endif /* CUSTOMER_HW4 */ + else { /* Use v1 struct */ info = (struct wl_interface_info_v1 *)ioctl_buf; ret = info->bsscfgidx; @@ -4007,6 +4103,28 @@ wl_cfg80211_interface_ops(struct bcm_cfg80211 *cfg, return ret; } +#if defined(CUSTOMER_HW4) +void +wl_bss_iovar_war(struct bcm_cfg80211 *cfg, + struct net_device *ndev, s32 *val) +{ + if (wl_legacy_chip_check(cfg) || wl_check_interface_create_v0(cfg)) + { + /* Few firmware branches have issues in bss iovar handling and + * that can't be changed since they are in production. + */ + if (*val == WLC_AP_IOV_OP_MANUAL_AP_BSSCFG_CREATE) { + *val = WLC_AP_IOV_OP_MANUAL_STA_BSSCFG_CREATE; + } else if (*val == WLC_AP_IOV_OP_MANUAL_STA_BSSCFG_CREATE) { + *val = WLC_AP_IOV_OP_MANUAL_AP_BSSCFG_CREATE; + } else { + /* Ignore for other bss enums */ + return; + } + WL_ERR(("wl bss %d\n", *val)); + } +} +#endif // endif s32 wl_cfg80211_add_del_bss(struct bcm_cfg80211 *cfg, struct net_device *ndev, s32 bsscfg_idx, @@ -4041,6 +4159,12 @@ wl_cfg80211_add_del_bss(struct bcm_cfg80211 *cfg, return -EINVAL; } +#if defined(CUSTOMER_HW4) + if (!del) { + wl_bss_iovar_war(cfg, ndev, &val); + } +#endif // endif + bss_setbuf.cfg = htod32(bsscfg_idx); bss_setbuf.val = htod32(val); @@ -4240,6 +4364,11 @@ wl_cfg80211_post_ifcreate(struct net_device *ndev, u8 mac_addr[ETH_ALEN]; u16 wl_iftype; +#ifdef WL_STATIC_IF + int need_legacy_war = 0; + dhd_pub_t *dhd = NULL; +#endif /* WL_STATIC_IF */ + if (!ndev || !event) { WL_ERR(("Wrong arg\n")); return NULL; @@ -4251,6 +4380,21 @@ wl_cfg80211_post_ifcreate(struct net_device *ndev, return NULL; } +#ifdef WL_STATIC_IF + { + dhd = (dhd_pub_t *)(cfg->pub); + if (!DHD_OPMODE_SUPPORTED(dhd, DHD_FLAG_MFG_MODE) && name) { + need_legacy_war = ((wl_legacy_chip_check(cfg) || + wl_check_interface_create_v0(cfg)) && + !strnicmp(name, SOFT_AP_IF_NAME, strlen(SOFT_AP_IF_NAME))); + if (need_legacy_war) { + event->role = WLC_E_IF_ROLE_AP; + } + } + WL_DBG(("name: %s\n", name)); + } +#endif /* WL_STATIC_IF */ + WL_DBG(("Enter. role:%d ifidx:%d bssidx:%d\n", event->role, event->ifidx, event->bssidx)); if (!event->ifidx || !event->bssidx) { @@ -4293,6 +4437,37 @@ wl_cfg80211_post_ifcreate(struct net_device *ndev, return NULL; } wdev = new_ndev->ieee80211_ptr; + if (need_legacy_war) { + /* Check whether mac addr is in sync with fw. If not, + * apply it using cur_etheraddr. + */ + if (memcmp(addr, event->mac, ETH_ALEN) != 0) { + ret = wldev_iovar_setbuf_bsscfg(new_ndev, "cur_etheraddr", + addr, ETH_ALEN, cfg->ioctl_buf, WLC_IOCTL_MAXLEN, + event->bssidx, &cfg->ioctl_buf_sync); + if (unlikely(ret)) { + WL_ERR(("set cur_etheraddr Error (%d)\n", ret)); + goto fail; + } + memcpy(new_ndev->dev_addr, addr, ETH_ALEN); + WL_ERR(("Applying updated mac address to firmware\n")); + } + + if (!wl_get_drv_status(cfg, AP_CREATED, new_ndev)) { + s32 err; + WL_INFORM_MEM(("[%s] Bringup SoftAP on bssidx:%d \n", + new_ndev->name, event->bssidx)); + if ((err = wl_cfg80211_add_del_bss(cfg, new_ndev, + event->bssidx, WL_IF_TYPE_AP, 0, NULL)) < 0) { + WL_ERR(("wl bss ap returned error:%d\n", err)); + return NULL; + } + /* On success, mark AP creation in progress. */ + wl_set_drv_status(cfg, AP_CREATING, new_ndev); + } else { + WL_INFORM_MEM(("AP_CREATED bit set. Skip role change\n")); + } + } } else #endif /* WL_STATIC_IF */ { @@ -4616,6 +4791,18 @@ wl_cfg80211_create_iface(struct wiphy *wiphy, /* * Intialize the firmware I/F. */ +#if defined(CONFIG_BCM43456) || defined(CONFIG_BCM4343) + /* De-initialize the p2p discovery interface, if operational */ + wl_cfg80211_deinit_p2p_discovery(cfg); +#endif /* CONFIG_BCM43456 || CONFIG_BCM4343 */ + +#if defined(CUSTOMER_HW4) + if (wl_legacy_chip_check(cfg)) + { + /* Use bss iovar instead of interface_create iovar */ + ret = BCME_UNSUPPORTED; + } else +#endif // endif { ret = wl_cfg80211_interface_ops(cfg, primary_ndev, bsscfg_idx, wl_iftype, 0, addr); @@ -5502,6 +5689,19 @@ wl_cfg80211_set_mfp(struct bcm_cfg80211 *cfg, */ if (err != BCME_UNSUPPORTED && err < 0) { WL_ERR(("bip set error (%d)\n", err)); +#if defined(CUSTOMER_HW4) + if (wl_legacy_chip_check(cfg)) + { + /* Ignore bip error: Some older firmwares doesn't + * support bip iovar/ return BCME_NOTUP while trying + * to set bip from connect context. These firmares + * include bip in RSNIE by default. So its okay to + * ignore the error. + */ + err = BCME_OK; + goto exit; + } else +#endif // endif { goto exit; } @@ -6095,12 +6295,9 @@ wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, dhd_reset_tcpsync_info_by_dev(dev); #endif /* DHDTCPSYNC_FLOOD_BLK */ -#if defined(SUPPORT_RANDOM_MAC_SCAN) && !defined(WL_USE_RANDOMIZED_SCAN) - /* Disable scanmac if enabled */ - if (cfg->scanmac_enabled) { - wl_cfg80211_scan_mac_disable(dev); - } -#endif /* SUPPORT_RANDOM_MAC_SCAN && !WL_USE_RANDOMIZED_SCAN */ +#if defined(SUPPORT_RANDOM_MAC_SCAN) + wl_cfg80211_random_mac_disable(dev); +#endif /* SUPPORT_RANDOM_MAC_SCAN */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) #ifdef WL_SKIP_CONNECT_HINTS @@ -9271,6 +9468,11 @@ wl_cfg80211_mgmt_tx(struct wiphy *wiphy, bcm_struct_cfgdev *cfgdev, WL_ERR(("bad length:%zu\n", len)); return BCME_BADLEN; } + + if (channel == NULL) { + WL_ERR(("channel is NULL\n")); + return -EINVAL; + } #ifdef DHD_IFDEBUG PRINT_WDEV_INFO(cfgdev); #endif /* DHD_IFDEBUG */ @@ -10632,11 +10834,13 @@ wl_cfg80211_set_ap_role( WL_INFORM_MEM(("[%s] Bringup SoftAP on bssidx:%d \n", dev->name, bssidx)); +#if !defined(CONFIG_BCM43456) && !defined(CONFIG_BCM4343) if ((err = wl_cfg80211_add_del_bss(cfg, dev, bssidx, WL_IF_TYPE_AP, 0, NULL)) < 0) { WL_ERR(("wl add_del_bss returned error:%d\n", err)); return err; } +#endif /* !CONFIG_BCM43456 && !CONFIG_BCM4343 */ /* * For older chips, "bss" iovar does not support @@ -10659,8 +10863,11 @@ wl_cfg80211_set_ap_role( return err; } if (apsta == 0) { + s32 apsta_off = 0; /* If apsta is not set, set it */ - +#if !defined(CONFIG_BCM43456) && !defined(CONFIG_BCM4343) + apsta_off = 1; +#endif /* !CONFIG_BCM43456 && !CONFIG_BCM4343 */ /* Check for any connected interfaces before wl down */ if (wl_get_drv_status_all(cfg, CONNECTED) > 0) { WL_ERR(("Concurrent i/f operational. can't do wl down")); @@ -10671,7 +10878,7 @@ wl_cfg80211_set_ap_role( WL_ERR(("WLC_DOWN error %d\n", err)); return err; } - err = wldev_iovar_setint(dev, "apsta", 1); + err = wldev_iovar_setint(dev, "apsta", apsta_off); if (err < 0) { WL_ERR(("wl apsta 0 error %d\n", err)); return err; @@ -10828,6 +11035,18 @@ wl_cfg80211_bcn_bringup_ap( WLC_IOCTL_SMLEN, bssidx, &cfg->ioctl_buf_sync); if (err < 0) { WL_ERR(("bip set error %d\n", err)); +#if defined(CUSTOMER_HW4) + if (wl_legacy_chip_check(cfg)) + { + /* Ignore bip error: Some older firmwares doesn't + * support bip iovar/ return BCME_NOTUP while trying + * to set bip from AP bring up context. These firmares + * include bip in RSNIE by default. So its okay to ignore + * the error. + */ + err = BCME_OK; + } else +#endif // endif { goto exit; } @@ -11537,6 +11756,10 @@ wl_cfg80211_start_ap( WL_DBG(("Enter \n")); +#if defined(DHD_RANDOM_MAC_SCAN) + wl_cfg80211_dhd_driven_random_mac_disable(dev); +#endif /* DHD_RANDOM_MAC_SCAN */ + if ((bssidx = wl_get_bssidx_by_wdev(cfg, dev->ieee80211_ptr)) < 0) { WL_ERR(("Find p2p index from wdev(%p) failed\n", dev->ieee80211_ptr)); return BCME_ERROR; @@ -12458,30 +12681,116 @@ s32 wl_mode_to_nl80211_iftype(s32 mode) return err; } -s32 -wl_cfg80211_set_country_code(struct net_device *net, char *country_code, - bool notify, bool user_enforced, int revinfo) +static bool +wl_is_ccode_change_required(struct net_device *net, + char *country_code, int revinfo) +{ + s32 ret = BCME_OK; + wl_country_t cspec = {{0}, 0, {0}}; + wl_country_t cur_cspec = {{0}, 0, {0}}; + + ret = wldev_iovar_getbuf(net, "country", NULL, 0, &cur_cspec, + sizeof(cur_cspec), NULL); + if (ret < 0) { + WL_ERR(("get country code failed = %d\n", ret)); + return true; + } + /* If translation table is available, update cspec */ + cspec.rev = revinfo; + strlcpy(cspec.country_abbrev, country_code, WL_CCODE_LEN + 1); + strlcpy(cspec.ccode, country_code, WL_CCODE_LEN + 1); + dhd_get_customized_country_code(net, cspec.country_abbrev, &cspec); + if ((cur_cspec.rev == cspec.rev) && + (strncmp(cur_cspec.ccode, cspec.ccode, WL_CCODE_LEN) == 0) && + (strncmp(cur_cspec.country_abbrev, cspec.country_abbrev, WL_CCODE_LEN) == 0)) { + WL_INFORM_MEM(("country code = %s/%d is already configured\n", + country_code, revinfo)); + return false; + } + return true; +} + +void +wl_cfg80211_cleanup_connection(struct net_device *net, bool user_enforced) { s32 ret = BCME_OK; -#ifdef WL_NAN struct wireless_dev *wdev = ndev_to_wdev(net); struct wiphy *wiphy = wdev->wiphy; struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); + struct net_info *iter, *next; + scb_val_t scbval; + + GCC_DIAGNOSTIC_PUSH_SUPPRESS_CAST(); + for_each_ndev(cfg, iter, next) { + GCC_DIAGNOSTIC_POP(); + if (iter->ndev) { + if (wl_get_drv_status(cfg, AP_CREATED, iter->ndev)) { + memset(scbval.ea.octet, 0xff, ETHER_ADDR_LEN); + scbval.val = DOT11_RC_DEAUTH_LEAVING; + if ((ret = wldev_ioctl_set(iter->ndev, + WLC_SCB_DEAUTHENTICATE_FOR_REASON, + &scbval, sizeof(scb_val_t))) != 0) { + WL_ERR(("Failed to disconnect STAs %d\n", ret)); + } + + } else if (wl_get_drv_status(cfg, CONNECTED, iter->ndev)) { + if ((iter->ndev == net) && !user_enforced) + continue; + wl_cfg80211_disassoc(iter->ndev, WLAN_REASON_DEAUTH_LEAVING); + } else { + WL_INFORM(("Disconnected state. Interface clean " + "up skipped for ifname:%s", iter->ndev->name)); + } + } + } + + wl_cfg80211_scan_abort(cfg); + + /* Clean up NAN connection */ +#ifdef WL_NAN if (cfg->nan_enable) { mutex_lock(&cfg->if_sync); ret = wl_cfgnan_check_nan_disable_pending(cfg, true, true); mutex_unlock(&cfg->if_sync); if (ret != BCME_OK) { WL_ERR(("failed to disable nan, error[%d]\n", ret)); - return ret; } } #endif /* WL_NAN */ +} + +s32 +wl_cfg80211_set_country_code(struct net_device *net, char *country_code, + bool notify, bool user_enforced, int revinfo) +{ + s32 ret = BCME_OK; + struct wireless_dev *wdev = ndev_to_wdev(net); + struct wiphy *wiphy = wdev->wiphy; + struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); + + BCM_REFERENCE(cfg); + + if (revinfo < 0) { + WL_ERR(("country revinfo wrong : %d\n", revinfo)); + ret = BCME_BADARG; + goto exit; + } + + if ((wl_is_ccode_change_required(net, country_code, revinfo) == false) && + !dhd_force_country_change(net)) { + goto exit; + } + + wl_cfg80211_cleanup_connection(net, user_enforced); + ret = wldev_set_country(net, country_code, - notify, user_enforced, revinfo); + notify, revinfo); if (ret < 0) { WL_ERR(("set country Failed :%d\n", ret)); + goto exit; } + +exit: return ret; } @@ -12511,6 +12820,33 @@ int wl_features_set(u8 *array, uint8 len, u32 ftidx) return BCME_OK; } +static +void wl_config_custom_regulatory(struct wiphy *wiphy) +{ + +#if defined(WL_SELF_MANAGED_REGDOM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) + /* Use self managed regulatory domain */ + wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED | + REGULATORY_IGNORE_STALE_KICKOFF; + wiphy->regd = &brcm_regdom; + WL_DBG(("Self managed regdom\n")); + return; +#else /* WL_SELF_MANAGED_REGDOM && KERNEL >= 4.0 */ + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) + wiphy->regulatory_flags |= +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) + REGULATORY_IGNORE_STALE_KICKOFF | +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ + REGULATORY_CUSTOM_REG; +#else /* KERNEL VER >= 3.14 */ + wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ + wiphy_apply_custom_regulatory(wiphy, &brcm_regdom); + WL_DBG(("apply custom regulatory\n")); +#endif /* WL_SELF_MANAGED_REGDOM && KERNEL >= 4.0 */ +} + static s32 wl_setup_wiphy(struct wireless_dev *wdev, struct device *sdiofunc_dev, void *context) { s32 err = 0; @@ -12680,16 +13016,7 @@ static s32 wl_setup_wiphy(struct wireless_dev *wdev, struct device *sdiofunc_dev #endif /* CONFIG_PM && WL_CFG80211_P2P_DEV_IF */ WL_DBG(("Registering custom regulatory)\n")); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) - wdev->wiphy->regulatory_flags |= -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) - REGULATORY_IGNORE_STALE_KICKOFF | -#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ - REGULATORY_CUSTOM_REG; -#else - wdev->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; -#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ - wiphy_apply_custom_regulatory(wdev->wiphy, &brcm_regdom); + wl_config_custom_regulatory(wdev->wiphy); #if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 14, 0)) || defined(WL_VENDOR_EXT_SUPPORT) WL_INFORM_MEM(("Registering Vendor80211\n")); @@ -14418,6 +14745,13 @@ wl_notify_connect_status(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, /* Initial Association */ wl_update_prof(cfg, ndev, e, &act, WL_PROF_ACT); wl_bss_connect_done(cfg, ndev, e, data, true); +#ifdef WL_NAN + if (cfg->nan_enable && + (event == WLC_E_SET_SSID) && + (ntoh32(e->status) == WLC_E_STATUS_SUCCESS)) { + wl_cfgnan_get_stats(cfg); + } +#endif /* WL_NAN */ if (ndev == bcmcfg_to_prmry_ndev(cfg)) { vndr_oui_num = wl_vndr_ies_get_vendor_oui(cfg, ndev, vndr_oui, ARRAY_SIZE(vndr_oui)); @@ -14712,7 +15046,11 @@ wl_notify_connect_status(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, "from " MACDBG "\n", ndev->name, event, ntoh32(e->reason), reason, ie_len, MAC2STRDBG((const u8*)(&e->addr)))); - +#ifdef WL_NAN + if (cfg->nan_enable) { + wl_cfgnan_get_stats(cfg); + } +#endif /* WL_NAN */ /* Wait for status to be cleared to prevent race condition * issues with connect context */ @@ -15516,7 +15854,7 @@ wl_bss_roaming_done(struct bcm_cfg80211 *cfg, struct net_device *ndev, #endif /* LINUX_VERSION > 2.6.39 || WL_COMPAT_WIRELESS */ #if (defined(CONFIG_ARCH_MSM) && defined(CFG80211_ROAMED_API_UNIFIED)) || \ (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) || defined(WL_FILS_ROAM_OFFLD) || \ - defined(CFG80211_ROAM_API_GE_4_12) + defined(CFG80211_ROAM_API_GE_4_12) || defined(CONFIG_SEC_LYKANLTE_PROJECT) struct cfg80211_roam_info roam_info; #endif /* (CONFIG_ARCH_MSM && CFG80211_ROAMED_API_UNIFIED) || LINUX_VERSION >= 4.12.0 */ #if defined(WL_FILS_ROAM_OFFLD) @@ -15619,7 +15957,7 @@ wl_bss_roaming_done(struct bcm_cfg80211 *cfg, struct net_device *ndev, #if (defined(CONFIG_ARCH_MSM) && defined(CFG80211_ROAMED_API_UNIFIED)) || \ (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) || defined(WL_FILS_ROAM_OFFLD) || \ - defined(CFG80211_ROAM_API_GE_4_12) + defined(CFG80211_ROAM_API_GE_4_12) || defined(CONFIG_SEC_LYKANLTE_PROJECT) memset(&roam_info, 0, sizeof(struct cfg80211_roam_info)); roam_info.channel = notify_channel; roam_info.bssid = curbssid; @@ -17262,14 +17600,15 @@ static void wl_cfg80211_determine_vsdb_mode(struct bcm_cfg80211 *cfg) } int -wl_cfg80211_determine_p2p_rsdb_mode(struct bcm_cfg80211 *cfg) +wl_cfg80211_determine_p2p_rsdb_scc_mode(struct bcm_cfg80211 *cfg) { struct net_info *iter, *next; u32 chanspec = 0; + u32 pre_chanspec = 0; u32 band = 0; - u32 pre_band = 0; + u32 pre_band = INVCHANSPEC; bool is_rsdb_supported = FALSE; - bool rsdb_mode = FALSE; + bool rsdb_or_scc_mode = FALSE; is_rsdb_supported = DHD_OPMODE_SUPPORTED(cfg->pub, DHD_FLAG_RSDB_MODE); @@ -17291,17 +17630,24 @@ wl_cfg80211_determine_p2p_rsdb_mode(struct bcm_cfg80211 *cfg) band = CHSPEC_BAND(chanspec); } - if (!pre_band && band) { + if (pre_band == INVCHANSPEC && chanspec) { pre_band = band; - } else if (pre_band && (pre_band != band)) { - rsdb_mode = TRUE; + pre_chanspec = chanspec; + } else { + if ((pre_band == band) && (pre_chanspec != chanspec)) { + /* VSDB case */ + rsdb_or_scc_mode = FALSE; + } else { + /* RSDB/SCC case */ + rsdb_or_scc_mode = TRUE; + } } } } } - WL_DBG(("RSDB mode is %s\n", rsdb_mode ? "enabled" : "disabled")); + WL_DBG(("RSDB or SCC mode is %s\n", rsdb_or_scc_mode ? "enabled" : "disabled")); - return rsdb_mode; + return rsdb_or_scc_mode; } static s32 wl_notifier_change_state(struct bcm_cfg80211 *cfg, struct net_info *_net_info, @@ -17316,6 +17662,9 @@ static s32 wl_notifier_change_state(struct bcm_cfg80211 *cfg, struct net_info *_ #ifdef RTT_SUPPORT rtt_status_info_t *rtt_status; #endif /* RTT_SUPPORT */ +#ifdef DISABLE_FRAMEBURST_VSDB + bool rsdb_scc_flag = FALSE; +#endif /* DISABLE_FRAMEBURST_VSDB */ if (dhd->busstate == DHD_BUS_DOWN) { WL_ERR(("busstate is DHD_BUS_DOWN!\n")); return 0; @@ -17354,9 +17703,9 @@ static s32 wl_notifier_change_state(struct bcm_cfg80211 *cfg, struct net_info *_ #ifdef DISABLE_FRAMEBURST_VSDB if (!DHD_OPMODE_SUPPORTED(cfg->pub, DHD_FLAG_HOSTAP_MODE) && - wl_cfg80211_is_concurrent_mode(primary_dev) && - !wl_cfg80211_determine_p2p_rsdb_mode(cfg)) { - wl_cfg80211_set_frameburst(cfg, FALSE); + wl_cfg80211_is_concurrent_mode(primary_dev)) { + rsdb_scc_flag = wl_cfg80211_determine_p2p_rsdb_scc_mode(cfg); + wl_cfg80211_set_frameburst(cfg, rsdb_scc_flag); } #endif /* DISABLE_FRAMEBURST_VSDB */ #ifdef DISABLE_WL_FRAMEBURST_SOFTAP @@ -17729,9 +18078,9 @@ s32 wl_cfg80211_attach(struct net_device *ndev, void *context) if (!cfg->btcoex_info) goto cfg80211_attach_out; #endif // endif -#if defined(SUPPORT_RANDOM_MAC_SCAN) - cfg->random_mac_enabled = FALSE; -#endif /* SUPPORT_RANDOM_MAC_SCAN */ +#if defined(DHD_RANDOM_MAC_SCAN) + cfg->random_mac_running = FALSE; +#endif /* DHD_RANDOM_MAC_SCAN */ #if defined(WL_ENABLE_P2P_IF) || defined(WL_NEWCFG_PRIVCMD_SUPPORT) err = wl_cfg80211_attach_p2p(cfg); @@ -18645,8 +18994,12 @@ static s32 __wl_update_wiphybands(struct bcm_cfg80211 *cfg, bool notify) wiphy->bands[IEEE80211_BAND_2GHZ] = &__wl_band_2ghz; } - if (notify) - wiphy_apply_custom_regulatory(wiphy, &brcm_regdom); + if (notify) { + if (!IS_REGDOM_SELF_MANAGED(wiphy)) { + WL_UPDATE_CUSTOM_REGULATORY(wiphy); + wiphy_apply_custom_regulatory(wiphy, &brcm_regdom); + } + } return 0; } @@ -18861,12 +19214,6 @@ static s32 __wl_cfg80211_down(struct bcm_cfg80211 *cfg) #endif /* PROP_TXSTATUS_VSDB */ } -#ifdef WL_NAN - mutex_lock(&cfg->if_sync); - wl_cfgnan_check_nan_disable_pending(cfg, true, false); - mutex_unlock(&cfg->if_sync); -#endif /* WL_NAN */ - if (!dhd_download_fw_on_driverload) { /* For built-in drivers/other drivers that do reset on * "ifconfig down", cleanup any left @@ -19169,6 +19516,12 @@ s32 wl_cfg80211_down(struct net_device *dev) WL_DBG(("In\n")); if (cfg) { +#ifdef WL_NAN + mutex_lock(&cfg->if_sync); + wl_cfgnan_check_nan_disable_pending(cfg, true, false); + mutex_unlock(&cfg->if_sync); +#endif /* WL_NAN */ + mutex_lock(&cfg->usr_sync); err = __wl_cfg80211_down(cfg); mutex_unlock(&cfg->usr_sync); diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.h b/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.h index 6d685b98d56d..31bd69eb0dbb 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.h +++ b/drivers/net/wireless/bcmdhd_100_15/wl_cfg80211.h @@ -24,7 +24,7 @@ * * <> * - * $Id: wl_cfg80211.h 854461 2019-12-09 02:16:27Z $ + * $Id: wl_cfg80211.h 874925 2020-04-24 08:58:32Z $ */ /** @@ -91,6 +91,11 @@ struct wl_ibss; #define WL_FILS_ROAM_OFFLD #endif // endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) +/* Use driver managed regd */ +#define WL_SELF_MANAGED_REGDOM +#endif /* KERNEL >= 4.0 */ + #ifdef WL_SAE #define IS_AKM_SAE(akm) (akm == WLAN_AKM_SUITE_SAE) #else @@ -1030,6 +1035,8 @@ typedef struct wl_btm_event_type_data wl_btm_event_type_data_t; typedef struct wl_bssid_prune_evt_info wl_bssid_pruned_evt_info_t; #endif /* WL_MBO || WL_OCE */ +#define WL_CCODE_LEN 2 + #ifdef WL_NAN #define NAN_MAX_NDI 1u typedef struct wl_ndi_data @@ -1147,6 +1154,16 @@ typedef struct buf_data { const void *data_buf[1]; /* array of user space buffer pointers. */ } buf_data_t; +#ifdef CONFIG_COMPAT +typedef struct compat_buf_data { + u32 ver; /* version of struct */ + u32 len; /* Total len */ + /* size of each buffer in case of split buffers (0 - single buffer). */ + u32 buf_threshold; + u32 data_buf; /* array of user space buffer pointers. */ +} compat_buf_data_t; +#endif /* CONFIG_COMPAT */ + /* private data of cfg80211 interface */ struct bcm_cfg80211 { struct wireless_dev *wdev; /* representing cfg cfg80211 device */ @@ -1327,9 +1344,9 @@ struct bcm_cfg80211 { u32 roam_count; #endif /* DHD_ENABLE_BIGDATA_LOGGING */ u16 ap_oper_channel; -#if defined(SUPPORT_RANDOM_MAC_SCAN) - bool random_mac_enabled; -#endif /* SUPPORT_RANDOM_MAC_SCAN */ +#if defined(DHD_RANDOM_MAC_SCAN) + bool random_mac_running; +#endif /* DHD_RANDOM_MAC_SCAN */ #ifdef DHD_LOSSLESS_ROAMING timer_list_compat_t roam_timeout; /* Timer for catch roam timeout */ #endif // endif @@ -2447,7 +2464,7 @@ extern int wl_cfg80211_ifstats_counters(struct net_device *dev, wl_if_stats_t *i extern s32 wl_cfg80211_set_dbg_verbose(struct net_device *ndev, u32 level); extern int wl_cfg80211_deinit_p2p_discovery(struct bcm_cfg80211 * cfg); extern int wl_cfg80211_set_frameburst(struct bcm_cfg80211 *cfg, bool enable); -extern int wl_cfg80211_determine_p2p_rsdb_mode(struct bcm_cfg80211 *cfg); +extern int wl_cfg80211_determine_p2p_rsdb_scc_mode(struct bcm_cfg80211 *cfg); extern uint8 wl_cfg80211_get_bus_state(struct bcm_cfg80211 *cfg); #ifdef WL_WPS_SYNC void wl_handle_wps_states(struct net_device *ndev, u8 *dump_data, u16 len, bool direction); @@ -2501,5 +2518,6 @@ do { \ } \ } while (0) extern s32 wl_cfg80211_handle_macaddr_change(struct net_device *dev, u8 *macaddr); +extern bool dhd_force_country_change(struct net_device *dev); extern void wl_cfg80211_concurrent_roam(struct bcm_cfg80211 *cfg, int enable); #endif /* _wl_cfg80211_h_ */ diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.c b/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.c index e79d2597fd03..21a033cef78c 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.c +++ b/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.c @@ -24,7 +24,7 @@ * * <> * - * $Id: wl_cfgnan.c 863148 2020-02-06 10:48:09Z $ + * $Id: wl_cfgnan.c 873848 2020-04-17 09:33:49Z $ */ #ifdef WL_NAN @@ -2630,8 +2630,7 @@ wl_cfgnan_start_handler(struct net_device *ndev, struct bcm_cfg80211 *cfg, goto fail; } } - /* Setting warm up time */ - cmd_data->warmup_time = 1; + if (cmd_data->warmup_time) { ret = wl_cfgnan_warmup_time_handler(cmd_data, nan_iov_data); if (unlikely(ret)) { @@ -7083,6 +7082,7 @@ wl_nan_dp_cmn_event_data(struct bcm_cfg80211 *cfg, void *event_data, wl_cfgnan_data_set_peer_dp_state(cfg, &ev_dp->peer_nmi, NAN_PEER_DP_CONNECTED); wl_cfgnan_update_dp_info(cfg, true, nan_event_data->ndp_id); + wl_cfgnan_get_stats(cfg); } else if (ev_dp->status == NAN_NDP_STATUS_REJECT) { nan_event_data->status = NAN_DP_REQUEST_REJECT; /* Remove peer from data ndp peer list */ @@ -8635,4 +8635,138 @@ fail: NAN_DBG_EXIT(); return ret; } +s32 +wl_nan_print_avail_stats(const uint8 *data) +{ + int idx; + s32 ret = BCME_OK; + int s_chan = 0; + char pbuf[NAN_IOCTL_BUF_SIZE_MED]; + const wl_nan_stats_sched_t *sched = (const wl_nan_stats_sched_t *)data; +#define SLOT_PRINT_SIZE 4 + + char *buf = pbuf; + bzero(pbuf, sizeof(pbuf)); + + if ((sched->num_slot * SLOT_PRINT_SIZE) > (sizeof(pbuf)-1)) { + WL_ERR(("overflowed slot number %d detected\n", + sched->num_slot)); + ret = BCME_BUFTOOSHORT; + goto exit; + } + + buf += sprintf(buf, "Map ID:%u, %u/%u, Slot#:%u ", + sched->map_id, sched->period, + sched->slot_dur, sched->num_slot); + + for (idx = 0; idx < sched->num_slot; idx++) { + const wl_nan_stats_sched_slot_t *slot; + slot = &sched->slot[idx]; + s_chan = 0; + + if (!wf_chspec_malformed(slot->chanspec)) { + s_chan = wf_chspec_ctlchan(slot->chanspec); + } + + buf += sprintf(buf, "%03d|", s_chan); + + } + WL_INFORM_MEM(("%s\n", pbuf)); +exit: + return ret; +} + +static int +wl_nan_print_stats_tlvs(void *ctx, const uint8 *data, uint16 type, uint16 len) +{ + int err = BCME_OK; + + switch (type) { + /* Avail stats xtlvs */ + case WL_NAN_XTLV_GEN_AVAIL_STATS_SCHED: + err = wl_nan_print_avail_stats(data); + break; + default: + err = BCME_BADARG; + WL_ERR(("Unknown xtlv type received: %x\n", type)); + break; + } + + return err; +} + +int +wl_cfgnan_get_stats(struct bcm_cfg80211 *cfg) +{ + bcm_iov_batch_buf_t *nan_buf = NULL; + uint16 subcmd_len; + bcm_iov_batch_subcmd_t *sub_cmd = NULL; + bcm_iov_batch_subcmd_t *sub_cmd_resp = NULL; + uint8 resp_buf[NAN_IOCTL_BUF_SIZE_LARGE]; + wl_nan_cmn_get_stat_t *get_stat = NULL; + wl_nan_cmn_stat_t *stats = NULL; + uint32 status; + s32 ret = BCME_OK; + uint16 nan_buf_size = NAN_IOCTL_BUF_SIZE; + NAN_DBG_ENTER(); + + nan_buf = MALLOCZ(cfg->osh, NAN_IOCTL_BUF_SIZE); + if (!nan_buf) { + WL_ERR(("%s: memory allocation failed\n", __func__)); + ret = BCME_NOMEM; + goto fail; + } + + nan_buf->version = htol16(WL_NAN_IOV_BATCH_VERSION); + nan_buf->count = 0; + nan_buf_size -= OFFSETOF(bcm_iov_batch_buf_t, cmds[0]); + sub_cmd = (bcm_iov_batch_subcmd_t*)(uint8 *)(&nan_buf->cmds[0]); + + ret = wl_cfg_nan_check_cmd_len(nan_buf_size, + sizeof(*get_stat), &subcmd_len); + if (unlikely(ret)) { + WL_ERR(("nan_sub_cmd check failed\n")); + goto fail; + } + + get_stat = (wl_nan_cmn_get_stat_t *)sub_cmd->data; + /* get only local availabiity stats */ + get_stat->modules_btmap = (1 << NAN_AVAIL); + get_stat->operation = WLA_NAN_STATS_GET; + + sub_cmd->id = htod16(WL_NAN_CMD_GEN_STATS); + sub_cmd->len = sizeof(sub_cmd->u.options) + sizeof(*get_stat); + sub_cmd->u.options = htol32(BCM_XTLV_OPTION_ALIGN32); + nan_buf_size -= subcmd_len; + nan_buf->count = 1; + nan_buf->is_set = false; + + bzero(resp_buf, sizeof(resp_buf)); + ret = wl_cfgnan_execute_ioctl(bcmcfg_to_prmry_ndev(cfg), + cfg, nan_buf, nan_buf_size, &status, + (void*)resp_buf, NAN_IOCTL_BUF_SIZE_LARGE); + if (unlikely(ret) || unlikely(status)) { + WL_ERR(("get nan stats failed ret %d status %d \n", + ret, status)); + goto fail; + } + + sub_cmd_resp = &((bcm_iov_batch_buf_t *)(resp_buf))->cmds[0]; + + stats = (wl_nan_cmn_stat_t *)&sub_cmd_resp->data[0]; + + if (stats->n_stats) { + WL_ERR((" == Aware Local Avail Schedule ==\n")); + ret = bcm_unpack_xtlv_buf((void *)&stats->n_stats, + (const uint8 *)&stats->stats_tlvs, + stats->totlen - 8, BCM_IOV_CMD_OPT_ALIGN32, + wl_nan_print_stats_tlvs); + } +fail: + if (nan_buf) { + MFREE(cfg->osh, nan_buf, NAN_IOCTL_BUF_SIZE); + } + NAN_DBG_EXIT(); + return ret; +} #endif /* WL_NAN */ diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.h b/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.h index 91481632a30f..972ae62882c1 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.h +++ b/drivers/net/wireless/bcmdhd_100_15/wl_cfgnan.h @@ -24,7 +24,7 @@ * * <> * - * $Id: wl_cfgnan.h 863133 2020-02-06 10:16:12Z $ + * $Id: wl_cfgnan.h 873848 2020-04-17 09:33:49Z $ */ #ifndef _wl_cfgnan_h_ @@ -781,6 +781,7 @@ bool wl_cfgnan_ranging_allowed(struct bcm_cfg80211 *cfg); uint8 wl_cfgnan_cancel_rng_responders(struct net_device *ndev, struct bcm_cfg80211 *cfg); extern int wl_cfgnan_get_status(struct net_device *ndev, wl_nan_conf_status_t *nan_status); +extern int wl_cfgnan_get_stats(struct bcm_cfg80211 *cfg); extern void wl_cfgnan_update_dp_info(struct bcm_cfg80211 *cfg, bool add, nan_data_path_id ndp_id); nan_status_type_t wl_cfgvendor_brcm_to_nanhal_status(int32 vendor_status); diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.c b/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.c index 46665c3067dc..72b8f2246ade 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.c +++ b/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.c @@ -771,8 +771,7 @@ exit: return err; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ - defined(SUPPORT_RANDOM_MAC_SCAN) +#if defined(SUPPORT_RANDOM_MAC_SCAN) static const u8 * wl_retrieve_wps_attribute(const u8 *buf, u16 element_id) { @@ -823,7 +822,7 @@ wl_is_wps_enrollee_active(struct net_device *ndev, const u8 *ie_ptr, u16 len) return false; } -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) && defined(SUPPORT_RANDOM_MAC_SCAN) */ +#endif /* SUPPORT_RANDOM_MAC_SCAN */ /* Find listen channel */ static s32 wl_find_listen_channel(struct bcm_cfg80211 *cfg, @@ -1186,15 +1185,22 @@ wl_run_escan(struct bcm_cfg80211 *cfg, struct net_device *ndev, } else { params_size = (WL_SCAN_PARAMS_FIXED_SIZE + OFFSETOF(wl_escan_params_t, params)); } - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ - defined(SUPPORT_RANDOM_MAC_SCAN) +#if defined(SUPPORT_RANDOM_MAC_SCAN) if (request) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) bool randmac_enable = (request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR); +#else /* old kernel version */ + bool randmac_enable = TRUE; +#endif // endif if (wl_is_wps_enrollee_active(ndev, request->ie, request->ie_len)) { randmac_enable = false; } - err = wl_rand_mac_ctrl(ndev, cfg, randmac_enable); + + if (randmac_enable) { + err = wl_cfg80211_random_mac_enable(ndev, cfg, randmac_enable); + } else { + err = wl_cfg80211_random_mac_disable(ndev); + } if (err < 0) { if (err == BCME_UNSUPPORTED) { @@ -1209,7 +1215,7 @@ wl_run_escan(struct bcm_cfg80211 *cfg, struct net_device *ndev, } } } -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) && defined(SUPPORT_RANDOM_MAC_SCAN) */ +#endif /* SUPPORT_RANDOM_MAC_SCAN */ if (!cfg->p2p_supported || !p2p_scan(cfg)) { /* LEGACY SCAN TRIGGER */ @@ -1844,6 +1850,9 @@ __wl_cfg80211_scan(struct wiphy *wiphy, struct net_device *ndev, if (cfg->p2p_supported) { if (request && p2p_on(cfg) && p2p_scan(cfg)) { +#if defined(DHD_RANDOM_MAC_SCAN) + wl_cfg80211_dhd_driven_random_mac_disable(ndev); +#endif /* DHD_RANDOM_MAC_SCAN */ /* find my listen channel */ cfg->afx_hdl->my_listen_chan = @@ -2078,13 +2087,9 @@ s32 wl_notify_escan_complete(struct bcm_cfg80211 *cfg, err = BCME_ERROR; goto out; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && \ - defined(SUPPORT_RANDOM_MAC_SCAN) && !defined(WL_USE_RANDOMIZED_SCAN) - /* Disable scanmac if enabled */ - if (cfg->scanmac_enabled) { - wl_cfg80211_scan_mac_disable(ndev); - } -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) && defined(SUPPORT_RANDOM_MAC_SCAN) */ +#if defined(SUPPORT_RANDOM_MAC_SCAN) + wl_cfg80211_random_mac_disable(ndev); +#endif /* SUPPORT_RANDOM_MAC_SCAN */ if (cfg->scan_request) { dev = bcmcfg_to_prmry_ndev(cfg); @@ -2482,201 +2487,85 @@ void wl_notify_scan_done(struct bcm_cfg80211 *cfg, bool aborted) int wl_cfg80211_set_random_mac(struct net_device *dev, bool enable) { - struct bcm_cfg80211 *cfg = wl_get_cfg(dev); - int ret; - - if (cfg->random_mac_enabled == enable) { - WL_ERR(("Random MAC already %s\n", enable ? "Enabled" : "Disabled")); - return BCME_OK; - } - - if (enable) { - ret = wl_cfg80211_random_mac_enable(dev); - } else { - ret = wl_cfg80211_random_mac_disable(dev); - } - - if (!ret) { - cfg->random_mac_enabled = enable; - } - - return ret; + return BCME_OK; } +#if defined(DHD_RANDOM_MAC_SCAN) +#define RANDOM_MAC_ADDR_MUTICAST_BIT 0x01 +#define RANDOM_MAC_ADDR_LOCALLY_ADMIN_BIT 0x02 + int -wl_cfg80211_random_mac_enable(struct net_device *dev) +wl_cfg80211_dhd_driven_random_mac_enable(struct net_device *dev) { - u8 random_mac[ETH_ALEN] = {0, }; - u8 rand_bytes[3] = {0, }; + u8 random_mac_addr[ETHER_ADDR_LEN] = {0, }; s32 err = BCME_ERROR; struct bcm_cfg80211 *cfg = wl_get_cfg(dev); -#if !defined(LEGACY_RANDOM_MAC) - uint8 buffer[WLC_IOCTL_SMLEN] = {0, }; - wl_scanmac_t *sm = NULL; - int len = 0; - wl_scanmac_enable_t *sm_enable = NULL; - wl_scanmac_config_t *sm_config = NULL; -#endif /* !LEGACY_RANDOM_MAC */ if (wl_get_drv_status_all(cfg, CONNECTED) || wl_get_drv_status_all(cfg, CONNECTING) || - wl_get_drv_status_all(cfg, AP_CREATED) || wl_get_drv_status_all(cfg, AP_CREATING)) { - WL_ERR(("fail to Set random mac, current state is wrong\n")); + wl_get_drv_status_all(cfg, AP_CREATED) || wl_get_drv_status_all(cfg, AP_CREATING)) { + WL_ERR(("Skip to set random mac by current status\n")); return err; } - (void)memcpy_s(random_mac, ETH_ALEN, bcmcfg_to_prmry_ndev(cfg)->dev_addr, ETH_ALEN); - get_random_bytes(&rand_bytes, sizeof(rand_bytes)); + /* Generate 6 bytes random address */ + get_random_bytes(&random_mac_addr, sizeof(random_mac_addr)); - if (rand_bytes[2] == 0x0 || rand_bytes[2] == 0xff) { - rand_bytes[2] = 0xf0; + /* Clear Multicast bit */ + random_mac_addr[0] &= ~RANDOM_MAC_ADDR_MUTICAST_BIT; + + /* Set locally administered address bit */ + random_mac_addr[0] |= RANDOM_MAC_ADDR_LOCALLY_ADMIN_BIT; + + /* Modify last mac address if 0x00 or 0xff */ + if (random_mac_addr[5] == 0x0 || random_mac_addr[5] == 0xff) { + random_mac_addr[5] = 0xf0; } - -#if defined(LEGACY_RANDOM_MAC) - /* of the six bytes of random_mac the bytes 3, 4, 5 are copied with contents of rand_bytes - * So while copying 3 bytes of content no overflow would be seen. Hence returning void. - */ - (void)memcpy_s(&random_mac[3], (sizeof(u8) * 3), rand_bytes, sizeof(rand_bytes)); - err = wldev_iovar_setbuf_bsscfg(bcmcfg_to_prmry_ndev(cfg), "cur_etheraddr", - random_mac, ETH_ALEN, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); + random_mac_addr, ETHER_ADDR_LEN, cfg->ioctl_buf, WLC_IOCTL_SMLEN, + 0, &cfg->ioctl_buf_sync); if (err != BCME_OK) { - WL_ERR(("failed to set random generate MAC address\n")); - } else { - WL_ERR(("set mac " MACDBG " to " MACDBG "\n", + WL_ERR(("Failed to set random generate MAC address " MACDBG " to " MACDBG "\n", MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr), - MAC2STRDBG((const u8 *)&random_mac))); - WL_ERR(("random MAC enable done")); + MAC2STRDBG((const u8 *)&random_mac_addr))); + } else { + cfg->random_mac_running = TRUE; + WL_INFORM(("Set random mac " MACDBG " to " MACDBG "\n", + MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr), + MAC2STRDBG((const u8 *)&random_mac_addr))); } -#else - /* Enable scan mac */ - sm = (wl_scanmac_t *)buffer; - sm_enable = (wl_scanmac_enable_t *)sm->data; - sm->len = sizeof(*sm_enable); - sm_enable->enable = 1; - len = OFFSETOF(wl_scanmac_t, data) + sm->len; - sm->subcmd_id = WL_SCANMAC_SUBCMD_ENABLE; - - err = wldev_iovar_setbuf_bsscfg(dev, "scanmac", - sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); - - /* For older chip which which does not have scanmac support can still use - * cur_etheraddr to set the randmac. rand_mask and rand_mac comes from upper - * cfg80211 layer. If rand_mask and rand_mac is not passed then fallback - * to default cur_etheraddr and default mask. - */ - if (err == BCME_UNSUPPORTED) { - /* In case of host based legacy randomization, random address is - * generated by mixing 3 bytes of cur_etheraddr and 3 bytes of - * random bytes generated.In that case rand_mask is nothing but - * random bytes. - */ - (void)memcpy_s(&random_mac[3], (sizeof(u8) * 3), rand_bytes, sizeof(rand_bytes)); - err = wldev_iovar_setbuf_bsscfg(bcmcfg_to_prmry_ndev(cfg), "cur_etheraddr", - random_mac, ETH_ALEN, cfg->ioctl_buf, - WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); - if (err != BCME_OK) { - WL_ERR(("failed to set random generate MAC address\n")); - } else { - WL_ERR(("set mac " MACDBG " to " MACDBG "\n", - MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr), - MAC2STRDBG((const u8 *)&random_mac))); - WL_ERR(("random MAC enable done using legacy randmac")); - } - } else if (err == BCME_OK) { - /* Configure scanmac */ - (void)memset_s(buffer, sizeof(buffer), 0x0, sizeof(buffer)); - sm_config = (wl_scanmac_config_t *)sm->data; - sm->len = sizeof(*sm_config); - sm->subcmd_id = WL_SCANMAC_SUBCMD_CONFIG; - sm_config->scan_bitmap = WL_SCANMAC_SCAN_UNASSOC; - - /* Set randomize mac address recv from upper layer */ - (void)memcpy_s(&sm_config->mac.octet, ETH_ALEN, random_mac, ETH_ALEN); - - /* Set randomize mask recv from upper layer */ - - /* Currently in samsung case, upper layer does not provide - * variable randmask and its using fixed 3 byte randomization - */ - (void)memset_s(&sm_config->random_mask.octet, ETH_ALEN, 0x0, ETH_ALEN); - /* Memsetting the remaining octets 3, 4, 5. So remaining dest length is 3 */ - (void)memset_s(&sm_config->random_mask.octet[3], 3, 0xFF, 3); - - WL_DBG(("recv random mac addr " MACDBG " recv rand mask" MACDBG "\n", - MAC2STRDBG((const u8 *)&sm_config->mac.octet), - MAC2STRDBG((const u8 *)&sm_config->random_mask))); - - len = OFFSETOF(wl_scanmac_t, data) + sm->len; - err = wldev_iovar_setbuf_bsscfg(dev, "scanmac", - sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); - - if (err != BCME_OK) { - WL_ERR(("failed scanmac configuration\n")); - - /* Disable scan mac for clean-up */ - wl_cfg80211_random_mac_disable(dev); - return err; - } - WL_DBG(("random MAC enable done using scanmac")); - } else { - WL_ERR(("failed to enable scanmac, err=%d\n", err)); - } -#endif /* LEGACY_RANDOM_MAC */ - return err; } int -wl_cfg80211_random_mac_disable(struct net_device *dev) +wl_cfg80211_dhd_driven_random_mac_disable(struct net_device *dev) { s32 err = BCME_ERROR; struct bcm_cfg80211 *cfg = wl_get_cfg(dev); -#if !defined(LEGACY_RANDOM_MAC) - uint8 buffer[WLC_IOCTL_SMLEN] = {0, }; - wl_scanmac_t *sm = NULL; - int len = 0; - wl_scanmac_enable_t *sm_enable = NULL; -#endif /* !LEGACY_RANDOM_MAC */ -#if defined(LEGACY_RANDOM_MAC) - WL_ERR(("set original mac " MACDBG "\n", - MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr))); + if (cfg->random_mac_running) { + WL_INFORM(("Restore to original MAC address " MACDBG "\n", + MAC2STRDBG((const u8 *)bcmcfg_to_prmry_ndev(cfg)->dev_addr))); - err = wldev_iovar_setbuf_bsscfg(bcmcfg_to_prmry_ndev(cfg), "cur_etheraddr", - bcmcfg_to_prmry_ndev(cfg)->dev_addr, ETH_ALEN, - cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); + err = wldev_iovar_setbuf_bsscfg(bcmcfg_to_prmry_ndev(cfg), "cur_etheraddr", + bcmcfg_to_prmry_ndev(cfg)->dev_addr, ETHER_ADDR_LEN, + cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); - if (err != BCME_OK) { - WL_ERR(("failed to set original MAC address\n")); + if (err != BCME_OK) { + WL_ERR(("Failed to restore original MAC address\n")); + } else { + cfg->random_mac_running = FALSE; + WL_ERR(("Random MAC disable done\n")); + } } else { - WL_ERR(("legacy random MAC disable done \n")); + /* Already randmac mac address disabled */ + err = BCME_OK; } -#else - sm = (wl_scanmac_t *)buffer; - sm_enable = (wl_scanmac_enable_t *)sm->data; - sm->len = sizeof(*sm_enable); - /* Disable scanmac */ - sm_enable->enable = 0; - len = OFFSETOF(wl_scanmac_t, data) + sm->len; - - sm->subcmd_id = WL_SCANMAC_SUBCMD_ENABLE; - - err = wldev_iovar_setbuf_bsscfg(dev, "scanmac", - sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); - - if (err != BCME_OK) { - WL_ERR(("failed to disable scanmac, err=%d\n", err)); - return err; - } - /* Clear scanmac enabled status */ - cfg->scanmac_enabled = 0; - WL_DBG(("random MAC disable done\n")); -#endif /* LEGACY_RANDOM_MAC */ - return err; } +#endif /* DHD_RANDOM_MAC_SCAN */ + /* * This is new interface for mac randomization. It takes randmac and randmask * as arg and it uses scanmac iovar to offload the mac randomization to firmware. @@ -2772,7 +2661,7 @@ int wl_cfg80211_scan_mac_enable(struct net_device *dev, uint8 *rand_mac, uint8 * WL_ERR(("failed scanmac configuration\n")); /* Disable scan mac for clean-up */ - wl_cfg80211_random_mac_disable(dev); + wl_cfg80211_scan_mac_disable(dev); return err; } /* Mark scanmac enabled */ @@ -2789,16 +2678,48 @@ int wl_cfg80211_scan_mac_disable(struct net_device *dev) { s32 err = BCME_ERROR; + struct bcm_cfg80211 *cfg = wl_get_cfg(dev); - err = wl_cfg80211_random_mac_disable(dev); + uint8 buffer[WLC_IOCTL_SMLEN] = {0, }; + wl_scanmac_t *sm = NULL; + int len = 0; + wl_scanmac_enable_t *sm_enable = NULL; + + sm = (wl_scanmac_t *)buffer; + sm_enable = (wl_scanmac_enable_t *)sm->data; + sm->len = sizeof(*sm_enable); + /* Disable scanmac */ + sm_enable->enable = 0; + len = OFFSETOF(wl_scanmac_t, data) + sm->len; + + sm->subcmd_id = WL_SCANMAC_SUBCMD_ENABLE; + + err = wldev_iovar_setbuf_bsscfg(dev, "scanmac", + sm, len, cfg->ioctl_buf, WLC_IOCTL_SMLEN, 0, &cfg->ioctl_buf_sync); + + if (err != BCME_OK) { + WL_ERR(("failed to disable scanmac, err=%d\n", err)); + return err; + } + /* Clear scanmac enabled status */ + cfg->scanmac_enabled = 0; + WL_DBG(("random MAC disable done\n")); return err; } int -wl_rand_mac_ctrl(struct net_device *dev, struct bcm_cfg80211 *cfg, bool randmac_enable) +wl_cfg80211_random_mac_enable(struct net_device *dev, struct bcm_cfg80211 *cfg, bool randmac_enable) { s32 err = BCME_OK; + +#if defined(DHD_RANDOM_MAC_SCAN) + if (randmac_enable && !cfg->random_mac_running) + wl_cfg80211_dhd_driven_random_mac_enable(dev); + else if (!randmac_enable) { + wl_cfg80211_dhd_driven_random_mac_disable(dev); + } +#else /* DHD_RANDOM_MAC_SCAN */ uint8 randomize_all_bits_mask[ETHER_ADDR_LEN] = {0}; /* Use default mask for 46 bit randomization */ uint8 random_addr[ETHER_ADDR_LEN] = {0x02, 0x00, 0x00, 0x00, 0x00, 0x00}; @@ -2808,10 +2729,27 @@ wl_rand_mac_ctrl(struct net_device *dev, struct bcm_cfg80211 *cfg, bool randmac_ } else if (!randmac_enable) { err = wl_cfg80211_scan_mac_disable(dev); } +#endif /* DHD_RANDOM_MAC_SCAN */ return err; } +int +wl_cfg80211_random_mac_disable(struct net_device *dev) +{ + s32 err = BCME_OK; +#if defined(DHD_RANDOM_MAC_SCAN) + err = wl_cfg80211_dhd_driven_random_mac_disable(dev); +#else + struct bcm_cfg80211 *cfg = wl_get_cfg(dev); + /* Disable scanmac if enabled */ + if (cfg->scanmac_enabled) { + err = wl_cfg80211_scan_mac_disable(dev); + } +#endif // endif + return err; +} + #endif /* SUPPORT_RANDOM_MAC_SCAN */ #ifdef WL_SCHED_SCAN @@ -3193,11 +3131,21 @@ static void wl_scan_timeout(unsigned long data) WL_ERR(("timer expired\n")); dhdp->scan_timeout_occurred = TRUE; #ifdef BCMPCIE - (void)dhd_pcie_dump_int_regs(dhdp); + if (!dhd_pcie_dump_int_regs(dhdp)) { + WL_ERR(("%s : PCIe link might be down\n", __FUNCTION__)); + dhd_bus_set_linkdown(dhdp, TRUE); + dhdp->hang_reason = HANG_REASON_PCIE_LINK_DOWN_EP_DETECT; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) + dhd_os_send_hang_message(dhdp); +#else + WL_ERR(("%s: HANG event is unsupported\n", __FUNCTION__)); +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) && OEM_ANDROID */ + } + dhd_pcie_dump_rc_conf_space_cap(dhdp); #endif /* BCMPCIE */ #ifdef DHD_FW_COREDUMP - if (dhdp->memdump_enabled) { + if (!dhd_bus_get_linkdown(dhdp) && dhdp->memdump_enabled) { dhdp->memdump_type = DUMP_TYPE_SCAN_TIMEOUT; dhd_bus_mem_dump(dhdp); } diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.h b/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.h index b593e6604f1d..b7031cc22fbb 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.h +++ b/drivers/net/wireless/bcmdhd_100_15/wl_cfgscan.h @@ -99,11 +99,17 @@ extern s32 wl_cfg80211_custom_scan_time(struct net_device *dev, #if defined(SUPPORT_RANDOM_MAC_SCAN) int wl_cfg80211_set_random_mac(struct net_device *dev, bool enable); -int wl_cfg80211_random_mac_enable(struct net_device *dev); +int wl_cfg80211_random_mac_enable(struct net_device *dev, struct bcm_cfg80211 *cfg, + bool randmac_enable); int wl_cfg80211_random_mac_disable(struct net_device *dev); int wl_cfg80211_scan_mac_enable(struct net_device *dev, uint8 *rand_mac, uint8 *rand_mask); int wl_cfg80211_scan_mac_disable(struct net_device *dev); int wl_rand_mac_ctrl(struct net_device *dev, struct bcm_cfg80211 *cfg, bool randmac_enable); + +#ifdef DHD_RANDOM_MAC_SCAN +int wl_cfg80211_dhd_driven_random_mac_disable(struct net_device *dev); +int wl_cfg80211_dhd_driven_random_mac_enable(struct net_device *dev); +#endif /* DHD_RANDOM_MAC_SCAN */ #endif /* SUPPORT_RANDOM_MAC_SCAN */ #ifdef WL_SCHED_SCAN diff --git a/drivers/net/wireless/bcmdhd_100_15/wl_cfgvendor.c b/drivers/net/wireless/bcmdhd_100_15/wl_cfgvendor.c index a533a27a4dd0..df0cea239915 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wl_cfgvendor.c +++ b/drivers/net/wireless/bcmdhd_100_15/wl_cfgvendor.c @@ -24,7 +24,7 @@ * * <> * - * $Id: wl_cfgvendor.c 863133 2020-02-06 10:16:12Z $ + * $Id: wl_cfgvendor.c 874894 2020-04-24 06:26:39Z $ */ /* @@ -410,7 +410,7 @@ wl_cfgvendor_set_country(struct wiphy *wiphy, } } /* country code is unique for dongle..hence using primary interface. */ - err = wl_cfg80211_set_country_code(primary_ndev, country_code, true, true, -1); + err = wl_cfg80211_set_country_code(primary_ndev, country_code, true, true, 0); if (err < 0) { WL_ERR(("Set country failed ret:%d\n", err)); } @@ -3998,6 +3998,13 @@ wl_cfgvendor_nan_parse_discover_args(struct wiphy *wiphy, goto exit; } cmd_data->mac_list.num_mac_addr = nla_get_u16(iter); + if (cmd_data->mac_list.num_mac_addr >= NAN_SRF_MAX_MAC) { + WL_ERR(("trying to overflow num :%d\n", + cmd_data->mac_list.num_mac_addr)); + cmd_data->mac_list.num_mac_addr = 0; + ret = -EINVAL; + goto exit; + } break; case NAN_ATTRIBUTE_MAC_ADDR_LIST: if ((!cmd_data->mac_list.num_mac_addr) || @@ -6537,19 +6544,48 @@ exit: #ifdef DHD_LOG_DUMP static int -wl_cfgvendor_get_buf_data(const struct nlattr *iter, struct buf_data **buf) +wl_cfgvendor_get_buf_data(const struct nlattr *iter, struct buf_data *buf) { int ret = BCME_OK; - if (nla_len(iter) != sizeof(struct buf_data)) { - WL_ERR(("Invalid len : %d\n", nla_len(iter))); - ret = BCME_BADLEN; +#ifdef CONFIG_COMPAT +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)) + if (in_compat_syscall()) { +#else + if (is_compat_task()) { +#endif /* LINUX_VER >= 4.6 */ + struct compat_buf_data *compat_buf = (struct compat_buf_data *)nla_data(iter); + + if (nla_len(iter) != sizeof(struct compat_buf_data)) { + WL_ERR(("Invalid len : %d\n", nla_len(iter))); + ret = BCME_BADLEN; + } + + buf->ver = compat_buf->ver; + buf->len = compat_buf->len; + buf->buf_threshold = compat_buf->buf_threshold; + buf->data_buf[0] = (const void *)compat_ptr(compat_buf->data_buf); } - (*buf) = (struct buf_data *)nla_data(iter); - if (!(*buf) || (((*buf)->len) <= 0) || !((*buf)->data_buf[0])) { + else +#endif /* CONFIG_COMPAT */ + { + if (nla_len(iter) != sizeof(struct buf_data)) { + WL_ERR(("Invalid len : %d\n", nla_len(iter))); + ret = BCME_BADLEN; + } + + ret = memcpy_s(buf, sizeof(struct buf_data), (void *)nla_data(iter), nla_len(iter)); + if (ret) { + WL_ERR(("Can't get buf data\n")); + goto exit; + } + } + + if ((buf->len <= 0) || !buf->data_buf[0]) { WL_ERR(("Invalid buffer\n")); ret = BCME_ERROR; } +exit: return ret; } @@ -6563,6 +6599,7 @@ wl_cfgvendor_dbg_file_dump(struct wiphy *wiphy, struct sk_buff *skb = NULL; struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); struct buf_data *buf; + struct buf_data data_from_hal = {0}; int pos = 0; /* Alloc the SKB for vendor_event */ @@ -6573,9 +6610,10 @@ wl_cfgvendor_dbg_file_dump(struct wiphy *wiphy, goto exit; } WL_ERR(("%s\n", __FUNCTION__)); + buf = &data_from_hal; nla_for_each_attr(iter, data, len, rem) { type = nla_type(iter); - ret = wl_cfgvendor_get_buf_data(iter, &buf); + ret = wl_cfgvendor_get_buf_data(iter, buf); if (ret) goto exit; switch (type) { @@ -7944,13 +7982,15 @@ static int wl_cfgvendor_set_pmk(struct wiphy *wiphy, type = nla_type(iter); switch (type) { case BRCM_ATTR_DRIVER_KEY_PMK: - if (nla_len(iter) > sizeof(pmk.key)) { + pmk.flags = 0; + pmk.key_len = htod16(nla_len(iter)); + ret = memcpy_s(pmk.key, sizeof(pmk.key), + (uint8 *)nla_data(iter), nla_len(iter)); + if (ret) { + WL_ERR(("Failed to copy pmk: %d\n", ret)); ret = -EINVAL; goto exit; } - pmk.flags = 0; - pmk.key_len = htod16(nla_len(iter)); - bcopy((uint8 *)nla_data(iter), pmk.key, len); break; default: WL_ERR(("Unknown type: %d\n", type)); diff --git a/drivers/net/wireless/bcmdhd_100_15/wldev_common.c b/drivers/net/wireless/bcmdhd_100_15/wldev_common.c index de368dc040fc..cd987965c9de 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wldev_common.c +++ b/drivers/net/wireless/bcmdhd_100_15/wldev_common.c @@ -463,64 +463,28 @@ int wldev_get_mode( return error; } int wldev_set_country( - struct net_device *dev, char *country_code, bool notify, bool user_enforced, int revinfo) + struct net_device *dev, char *country_code, bool notify, int revinfo) { int error = -1; wl_country_t cspec = {{0}, 0, {0}}; - scb_val_t scbval; char smbuf[WLC_IOCTL_SMLEN]; -#ifdef WL_CFG80211 - struct wireless_dev *wdev = ndev_to_wdev(dev); - struct wiphy *wiphy = wdev->wiphy; - struct bcm_cfg80211 *cfg = wiphy_priv(wiphy); -#endif /* WL_CFG80211 */ if (!country_code) return error; - bzero(&scbval, sizeof(scb_val_t)); - error = wldev_iovar_getbuf(dev, "country", NULL, 0, &cspec, sizeof(cspec), NULL); + cspec.rev = revinfo; + strlcpy(cspec.country_abbrev, country_code, WL_CCODE_LEN + 1); + strlcpy(cspec.ccode, country_code, WL_CCODE_LEN + 1); + dhd_get_customized_country_code(dev, (char *)&cspec.country_abbrev, &cspec); + error = wldev_iovar_setbuf(dev, "country", &cspec, sizeof(cspec), + smbuf, sizeof(smbuf), NULL); if (error < 0) { - WLDEV_ERROR(("wldev_set_country: get country failed = %d\n", error)); + WLDEV_ERROR(("wldev_set_country: set country for %s as %s rev %d failed\n", + country_code, cspec.ccode, cspec.rev)); return error; } - - if ((error < 0) || - dhd_force_country_change(dev) || - (strncmp(country_code, cspec.ccode, WLC_CNTRY_BUF_SZ) != 0)) { - -#ifdef WL_CFG80211 - if ((user_enforced) && (wl_get_drv_status(cfg, CONNECTED, dev))) { -#else - if (user_enforced) { -#endif /* WL_CFG80211 */ - bzero(&scbval, sizeof(scb_val_t)); - error = wldev_ioctl_set(dev, WLC_DISASSOC, - &scbval, sizeof(scb_val_t)); - if (error < 0) { - WLDEV_ERROR(("wldev_set_country: set country failed" - " due to Disassoc error %d\n", - error)); - return error; - } - } - - wl_cfg80211_scan_abort(cfg); - - cspec.rev = revinfo; - strlcpy(cspec.country_abbrev, country_code, WLC_CNTRY_BUF_SZ); - strlcpy(cspec.ccode, country_code, WLC_CNTRY_BUF_SZ); - dhd_get_customized_country_code(dev, (char *)&cspec.country_abbrev, &cspec); - error = wldev_iovar_setbuf(dev, "country", &cspec, sizeof(cspec), - smbuf, sizeof(smbuf), NULL); - if (error < 0) { - WLDEV_ERROR(("wldev_set_country: set country for %s as %s rev %d failed\n", - country_code, cspec.ccode, cspec.rev)); - return error; - } - dhd_bus_country_set(dev, &cspec, notify); - WLDEV_INFO(("wldev_set_country: set country for %s as %s rev %d\n", - country_code, cspec.ccode, cspec.rev)); - } + dhd_bus_country_set(dev, &cspec, notify); + WLDEV_INFO(("wldev_set_country: set country for %s as %s rev %d\n", + country_code, cspec.ccode, cspec.rev)); return 0; } diff --git a/drivers/net/wireless/bcmdhd_100_15/wldev_common.h b/drivers/net/wireless/bcmdhd_100_15/wldev_common.h index 701455ea26c2..ccbad3fbec5c 100644 --- a/drivers/net/wireless/bcmdhd_100_15/wldev_common.h +++ b/drivers/net/wireless/bcmdhd_100_15/wldev_common.h @@ -98,10 +98,9 @@ extern int dhd_net_wifi_platform_set_power(struct net_device *dev, bool on, extern void dhd_get_customized_country_code(struct net_device *dev, char *country_iso_code, wl_country_t *cspec); extern void dhd_bus_country_set(struct net_device *dev, wl_country_t *cspec, bool notify); -extern bool dhd_force_country_change(struct net_device *dev); extern void dhd_bus_band_set(struct net_device *dev, uint band); extern int wldev_set_country(struct net_device *dev, char *country_code, bool notify, - bool user_enforced, int revinfo); + int revinfo); extern int net_os_wake_lock(struct net_device *dev); extern int net_os_wake_unlock(struct net_device *dev); extern int net_os_wake_lock_timeout(struct net_device *dev); diff --git a/drivers/pci/host/pci-exynos.c b/drivers/pci/host/pci-exynos.c index e4af87eff8a8..bac8faf7879e 100644 --- a/drivers/pci/host/pci-exynos.c +++ b/drivers/pci/host/pci-exynos.c @@ -224,6 +224,61 @@ static int exynos_pcie_set_l1ss(int enable, struct pcie_port *pp, int id) return 0; } +int exynos_pcie_l1_exit(int ch_num) +{ + struct exynos_pcie *exynos_pcie = &g_pcie[ch_num]; + u32 count = 0, ret = 0, val = 0; + unsigned long flags; + + spin_lock_irqsave(&exynos_pcie->pcie_l1_exit_lock, flags); + + if (exynos_pcie->l1ss_ctrl_id_state == 0) { + /* Set s/w L1 exit mode */ + exynos_elb_writel(exynos_pcie, 0x1, PCIE_APP_REQ_EXIT_L1); + val = exynos_elb_readl(exynos_pcie, PCIE_APP_REQ_EXIT_L1_MODE); + val &= ~APP_REQ_EXIT_L1_MODE; + exynos_elb_writel(exynos_pcie, val, PCIE_APP_REQ_EXIT_L1_MODE); + + /* Max timeout = 3ms (300 * 10us) */ + while (count < MAX_L1_EXIT_TIMEOUT) { + val = exynos_elb_readl(exynos_pcie, + PCIE_ELBI_RDLH_LINKUP) & 0x1f; + if (val == 0x11) + break; + + count++; + + udelay(10); + } + + if (count >= MAX_L1_EXIT_TIMEOUT) { + pr_err("%s: cannot change to L0(LTSSM = 0x%x, cnt = %d)\n", + __func__, val, count); + ret = -EPIPE; + } else { + /* remove too much print */ + /* pr_err("%s: L0 state(LTSSM = 0x%x, cnt = %d)\n", + * __func__, val, count); */ + } + + /* Set h/w L1 exit mode */ + val = exynos_elb_readl(exynos_pcie, PCIE_APP_REQ_EXIT_L1_MODE); + val |= APP_REQ_EXIT_L1_MODE; + exynos_elb_writel(exynos_pcie, val, PCIE_APP_REQ_EXIT_L1_MODE); + exynos_elb_writel(exynos_pcie, 0x0, PCIE_APP_REQ_EXIT_L1); + } else { + /* remove too much print */ + /* pr_err("%s: skip!!! l1.2 is already diabled(id = 0x%x)\n", + * __func__, exynos_pcie->l1ss_ctrl_id_state); */ + } + + spin_unlock_irqrestore(&exynos_pcie->pcie_l1_exit_lock, flags); + + return ret; + +} +EXPORT_SYMBOL(exynos_pcie_l1_exit); + int exynos_pcie_l1ss_ctrl(int enable, int id) { struct pcie_port *pp = NULL; @@ -1721,6 +1776,7 @@ static int __init add_pcie_port(struct pcie_port *pp, pp->ops = &exynos_pcie_host_ops; exynos_pcie_setup_rc(pp); + spin_lock_init(&exynos_pcie->pcie_l1_exit_lock); spin_lock_init(&exynos_pcie->conf_lock); spin_lock_init(&exynos_pcie->reg_lock); ret = dw_pcie_host_init(pp); diff --git a/drivers/pci/host/pci-exynos.h b/drivers/pci/host/pci-exynos.h index 1a3e8fd6ced0..9a39f3599c67 100644 --- a/drivers/pci/host/pci-exynos.h +++ b/drivers/pci/host/pci-exynos.h @@ -17,6 +17,7 @@ #define ID_MASK 0xffff #define TPUT_THRESHOLD 150 #define MAX_RC_NUM 2 +#define MAX_L1_EXIT_TIMEOUT 300 #if defined(CONFIG_SOC_EXYNOS8890) #define PCI_DEVICE_ID_EXYNOS 0xa544 @@ -90,7 +91,8 @@ struct exynos_pcie { bool use_sysmmu; bool use_ia; spinlock_t conf_lock; - spinlock_t reg_lock; + spinlock_t reg_lock; + spinlock_t pcie_l1_exit_lock; struct workqueue_struct *pcie_wq; struct exynos_pcie_clks clks; struct pcie_port pp; diff --git a/drivers/security/samsung/five_tee_driver/Kconfig b/drivers/security/samsung/five_tee_driver/Kconfig index 57d33d33b330..097375836db0 100644 --- a/drivers/security/samsung/five_tee_driver/Kconfig +++ b/drivers/security/samsung/five_tee_driver/Kconfig @@ -14,10 +14,16 @@ choice depends on FIVE_TEE_DRIVER default FIVE_USE_TZDEV if TZDEV default FIVE_USE_QSEE if QSEECOM - default FIVE_USE_TRUSTONIC + default FIVE_USE_TRUSTONIC if TRUSTONIC_TEE || TRUSTONIC_TEE_SUPPORT + default FIVE_USE_EMULATOR ---help--- Select Secure OS for FIVE TEE Driver + config FIVE_USE_EMULATOR + bool "Integrity TEE Driver for TA emualtor" + ---help--- + Use Integrity TEE Driver which interacts with TA emulator over network + config FIVE_USE_TRUSTONIC bool "Integrity TEE Driver based on Trustonic Secure OS" depends on TRUSTONIC_TEE || TRUSTONIC_TEE_SUPPORT @@ -45,6 +51,13 @@ config TEE_DRIVER_DEBUG ---help--- Enable Debug mode in TEE Driver +config FIVE_EMULATOR_IP + string "IP address of FIVE TA Emulator" + depends on FIVE_TEE_DRIVER && FIVE_USE_EMULATOR + default "10.0.2.2" if FIVE_USE_EMULATOR + ---help--- + The driver will connect to FIVE TA at this address + config FIVE_TRUSTLET_PATH string "FIVE trustlet" depends on FIVE_TEE_DRIVER && FIVE_USE_TRUSTONIC && FIRMWARE_IN_KERNEL diff --git a/drivers/security/samsung/five_tee_driver/Makefile b/drivers/security/samsung/five_tee_driver/Makefile index 0d4428725ecc..8379998e59ee 100644 --- a/drivers/security/samsung/five_tee_driver/Makefile +++ b/drivers/security/samsung/five_tee_driver/Makefile @@ -1,68 +1,63 @@ # # Integrity TEE Driver # +FIVE_TEE_DRIVER_PATH := $(srctree)/drivers/security/samsung/five_tee_driver TEEC_CLIENT_PATH := multibuild/source/gp-api/client PROTOCOL_PATH := multibuild/source/gp-api/protocol -FIVE_TEE_DRIVER_PATH := drivers/security/samsung/five_tee_driver -obj-$(CONFIG_FIVE_TEE_DRIVER) += itee_driver.o +obj-$(CONFIG_FIVE_TEE_DRIVER) += five_tee_driver.o -itee_driver-objs += five_tee_driver.o - -ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Isecurity/samsung/five \ +ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -I$(srctree)/security/samsung/five \ -I$(FIVE_TEE_DRIVER_PATH)/$(PROTOCOL_PATH) \ -I$(FIVE_TEE_DRIVER_PATH)/$(TEEC_CLIENT_PATH) -ccflags-$(CONFIG_FIVE_USE_TRUSTONIC) += -DCONFIG_TRUSTONIC -ccflags-$(CONFIG_FIVE_USE_TZDEV) += -DCONFIG_TEEGRIS -ccflags-$(CONFIG_FIVE_USE_QSEE) += -DCONFIG_QSEE +# Emulator +obj-$(CONFIG_FIVE_USE_EMULATOR) += $(TEEC_CLIENT_PATH)/tee_client_api.o \ + $(PROTOCOL_PATH)/teec_param_utils.o \ + $(TEEC_CLIENT_PATH)/teec_common_emulator.o \ + $(TEEC_CLIENT_PATH)/teec_operation.o \ + $(PROTOCOL_PATH)/socket_utils.o +ccflags-$(CONFIG_FIVE_USE_EMULATOR) += -I$(FIVE_TEE_DRIVER_PATH)/multibuild/include/gp-api # Trustonic obj-$(CONFIG_FIVE_USE_TRUSTONIC) += $(TEEC_CLIENT_PATH)/tee_client_api.o \ $(PROTOCOL_PATH)/teec_param_utils.o \ $(TEEC_CLIENT_PATH)/teec_common_tbase.o \ - $(TEEC_CLIENT_PATH)/teec_operation_tbase.o \ - $(TEEC_CLIENT_PATH)/tee_client_api.o + $(TEEC_CLIENT_PATH)/teec_operation.o ccflags-$(CONFIG_FIVE_USE_TRUSTONIC) += -I$(FIVE_TEE_DRIVER_PATH)/multibuild/include/gp-api ifeq ($(CONFIG_FIVE_USE_TRUSTONIC), y) - ifeq ($(CONFIG_SOC_EXYNOS7570), y) - PLATFORM := exynos7570 - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver/public - else ifeq ($(CONFIG_SOC_EXYNOS7870), y) - PLATFORM := exynos7870 - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver/public - else ifeq ($(CONFIG_SOC_EXYNOS7885), y) - PLATFORM := exynos7885 - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver/public - else ifeq ($(CONFIG_SOC_EXYNOS9810), y) - PLATFORM := exynos9810 - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver/public - else ifeq ($(CONFIG_SOC_EXYNOS9820), y) - PLATFORM := exynos9820 - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver/public - else ifeq ($(CONFIG_SOC_EXYNOS9610), y) - PLATFORM := exynos9610 - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver - ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver/public - else ifeq ($(CONFIG_MACH_MT6768), y) + ifeq ($(CONFIG_MACH_MT6768), y) ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/misc/mediatek/gud/410/MobiCoreDriver ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/misc/mediatek/gud/410/MobiCoreDriver/public else - $(error "Unknown SoC") - endif -endif + ifeq ($(CONFIG_SOC_EXYNOS7570), y) + PLATFORM := exynos7570 + else ifeq ($(CONFIG_SOC_EXYNOS7870), y) + PLATFORM := exynos7870 + else ifeq ($(CONFIG_SOC_EXYNOS7885), y) + PLATFORM := exynos7885 + else ifeq ($(CONFIG_SOC_EXYNOS9810), y) + PLATFORM := exynos9810 + else ifeq ($(CONFIG_SOC_EXYNOS9820), y) + PLATFORM := exynos9820 + else ifeq ($(CONFIG_SOC_EXYNOS9610), y) + PLATFORM := exynos9610 + else ifeq ($(CONFIG_SOC_EXYNOS1000), y) + PLATFORM := exynos1000 + else + $(error "Unknown SoC") + endif + ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver + ccflags-$(CONFIG_FIVE_TEE_DRIVER) += -Idrivers/gud/gud-$(PLATFORM)/MobiCoreDriver/public + endif # CONFIG_MACH_MT6768 +endif # CONFIG_FIVE_USE_TRUSTONIC # QSEE obj-$(CONFIG_FIVE_USE_QSEE) += $(TEEC_CLIENT_PATH)/tee_client_api.o \ $(PROTOCOL_PATH)/teec_param_utils.o \ $(TEEC_CLIENT_PATH)/teec_common_qsee.o \ - $(TEEC_CLIENT_PATH)/teec_operation_qsee.o + $(TEEC_CLIENT_PATH)/teec_operation.o ccflags-$(CONFIG_FIVE_USE_QSEE) += -I$(FIVE_TEE_DRIVER_PATH)/multibuild/include/gp-api \ -Idrivers/misc @@ -78,10 +73,11 @@ ifeq ($(CONFIG_SOC_EXYNOS7870), y) endif ifeq ($(CONFIG_SOC_EXYNOS7885), y) + ifeq ($(CONFIG_TEEGRIS_VERSION), 2) + use_teegris_v2 := y + endif ifeq ($(CONFIG_TEEGRIS_VERSION), 3) ccflags-$(CONFIG_FIVE_USE_TZDEV) += -Idrivers/misc/tzdev/3.0/include/tzdev - else - use_teegris_v2 := y endif endif @@ -89,10 +85,12 @@ ifeq ($(use_teegris_v2), y) obj-$(CONFIG_FIVE_USE_TZDEV) += $(TEEC_CLIENT_PATH)/teec_common_teegris_v2.o \ $(TEEC_CLIENT_PATH)/tee_client_api.o \ $(PROTOCOL_PATH)/teec_param_utils.o \ - $(TEEC_CLIENT_PATH)/teec_operation_teegris_v2.o + $(TEEC_CLIENT_PATH)/teec_operation.o ccflags-$(CONFIG_FIVE_USE_TZDEV) += -Idrivers/misc/tzdev/include \ -I$(FIVE_TEE_DRIVER_PATH)/multibuild/include/gp-api else obj-$(CONFIG_FIVE_USE_TZDEV) += $(TEEC_CLIENT_PATH)/teec_operation_teegris_v3.o ccflags-$(CONFIG_FIVE_USE_TZDEV) += -Idrivers/misc/tzdev/include/tzdev endif + +subdir-ccflags-y := -Wformat diff --git a/drivers/security/samsung/five_tee_driver/five_ta_uuid.h b/drivers/security/samsung/five_tee_driver/five_ta_uuid.h index cae43591114f..b615e2d21d02 100644 --- a/drivers/security/samsung/five_tee_driver/five_ta_uuid.h +++ b/drivers/security/samsung/five_tee_driver/five_ta_uuid.h @@ -17,27 +17,43 @@ #ifndef __FIVE_TEE_UUID_H__ #define __FIVE_TEE_UUID_H__ -#if defined(CONFIG_TEEGRIS) +#if defined(CONFIG_FIVE_USE_TZDEV) static const TEEC_UUID five_ta_uuid = { .timeLow = 0x00000000, .timeMid = 0x0000, .timeHiAndVersion = 0x0000, .clockSeqAndNode = {0x00, 0x00, 0x00, 0x00, 0x46, 0x49, 0x56, 0x45}, }; -#elif defined(CONFIG_QSEECOM) +#elif defined(CONFIG_FIVE_USE_QSEE) +#ifdef CONFIG_ARCH_MSM8917 +static const TEEC_UUID five_ta_uuid = { + .timeLow = 0x6d736d38, + .timeMid = 0x3931, + .timeHiAndVersion = 0x372f, + .clockSeqAndNode = {0x66, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00}, +}; +#else static const TEEC_UUID five_ta_uuid = { .timeLow = 0x66697665, .timeMid = 0x0000, .timeHiAndVersion = 0x0000, .clockSeqAndNode = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, }; -#elif defined(CONFIG_TRUSTONIC) +#endif // CONFIG_ARCH_MSM8917 +#elif defined(CONFIG_FIVE_USE_TRUSTONIC) static const TEEC_UUID five_ta_uuid = { .timeLow = 0xffffffff, .timeMid = 0x0000, .timeHiAndVersion = 0x0000, .clockSeqAndNode = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72}, }; +#elif defined(CONFIG_FIVE_USE_EMULATOR) +static const TEEC_UUID five_ta_uuid = { + .timeLow = 0x00000000, + .timeMid = 0x0000, + .timeHiAndVersion = 0x0000, + .clockSeqAndNode = {0x00, 0x00, 0x00, 0x00, 0x46, 0x49, 0x56, 0xff}, +}; #endif #endif /* __FIVE_TEE_UUID_H__ */ diff --git a/drivers/security/samsung/five_tee_driver/five_tee_driver.c b/drivers/security/samsung/five_tee_driver/five_tee_driver.c index 1b318a1c559c..a514a038d12d 100644 --- a/drivers/security/samsung/five_tee_driver/five_tee_driver.c +++ b/drivers/security/samsung/five_tee_driver/five_tee_driver.c @@ -195,7 +195,7 @@ static int send_cmd(unsigned int cmd, pr_info("FIVE: Initialize trusted app, ret: %d\n", rc); if (rc) { mutex_unlock(&itee_driver_lock); - rc = -EIO; + rc = -ESRCH; goto out; } } diff --git a/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_emulator.c b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_emulator.c new file mode 100644 index 000000000000..1607924b446a --- /dev/null +++ b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_emulator.c @@ -0,0 +1,181 @@ +/* + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that 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. + * + * This code is originated from Samsung Electronics proprietary sources. + * Author: Oleksandr Fadieiev (o.fadieiev@samsung.com) + * Created: 14 Dec 2018 + * + * Copyright (C) 2018 Samsung Electronics, Inc. + */ + +#include +#include +#include +#include + +#include "teec_common.h" +#include "protocol.h" +#include "teec_param_utils.h" +#include "socket_utils.h" + +static const uint16_t FIVE_EMUL_PORT = 0x514e; + +typedef struct EmulSessionStruct { + struct socket *socket; + ProtocolCmd *command; +} EmulSession; + +static uint32_t create_address(const char *ip_addr) +{ + uint8_t ip[4] = {0}; + + sscanf(ip_addr, "%hhu.%hhu.%hhu.%hhu", &ip[0], &ip[1], &ip[2], &ip[3]); + return (ip[0] << 24) | (ip[1] << 16) | (ip[2] << 8) | ip[3]; +} + +static void CloseTASocket(EmulSession *session) +{ + sock_release(session->socket); +} + +static SocketStatus OpenTASocket(EmulSession *session) +{ + struct sockaddr_in sa; + + BUG_ON(!session); + + memset(&sa, 0, sizeof(sa)); + sa.sin_family = AF_INET; + sa.sin_addr.s_addr = htonl(create_address(CONFIG_FIVE_EMULATOR_IP)); + sa.sin_port = htons(FIVE_EMUL_PORT); + + return OpenSocket((struct sockaddr *)&sa, &session->socket); +} + +TEEC_Result EmulSendCommand(void *ta_session, + uint32_t command_id, + TEEC_Operation *operation, + uint32_t *return_origin, + int32_t timeout) +{ + int status = 0; + TEEC_Result ret = TEEC_ERROR_BAD_PARAMETERS; + EmulSession *emul_session = (EmulSession *)ta_session; + ProtocolCmd *command; + struct socket *socket; + const int cmd_sz = sizeof(ProtocolCmd); + + BUG_ON(!emul_session); + + command = emul_session->command; + + BUG_ON(!command); + + memset(command, 0x00, sizeof(ProtocolCmd)); + + /* Return origin: "API" is rewritten always at the exit condition. */ + command->return_origin = TEEC_ORIGIN_API; + + command->cmd_id = command_id; + command->cmd_ret = TEEC_ERROR_COMMUNICATION; + command->param_types = 0; + + if (operation) { + command->param_types = operation->paramTypes; + ret = FillCommandArgs(command, operation, NULL); + + if (TEEC_SUCCESS != ret) + goto exit; + } + + /* Return origin: "COMMS" by default because of possible communication errors. */ + command->return_origin = TEEC_ORIGIN_COMMS; + + status = OpenTASocket(emul_session); + if (SocketStatusOk != status) { + pr_err("FIVE: error: connect to proxy failed: %d\n", status); + ret = TEEC_ERROR_COMMUNICATION; + goto exit; + } + + socket = emul_session->socket; + + status = WriteDataToSocket(socket, (uint8_t *)command, cmd_sz); + if (SocketStatusOk != status) { + ret = TEEC_ERROR_COMMUNICATION; + goto close; + } + + status = ReadDataFromSocket(socket, (uint8_t *)command, cmd_sz); + if (SocketStatusOk != status) { + ret = TEEC_ERROR_COMMUNICATION; + goto close; + } + + /* Return origin: "TEE" or "TRUSTED_APP" after communication with TEE. */ + + ret = command->cmd_ret; + + if (TEEC_SUCCESS == ret && operation) { + ret = FillOperationArgs(operation, command); + if (TEEC_SUCCESS != ret) + command->return_origin = TEEC_ORIGIN_API; + } + +close: + CloseTASocket(emul_session); +exit: + if (return_origin) + *return_origin = command->return_origin; + + return ret; +} + +TEEC_Result EmulUnloadTA(void *ta_session) +{ + EmulSession *session = (EmulSession *)ta_session; + + kfree(session->command); + return TEEC_SUCCESS; +} + +TEEC_Result EmulLoadTA(void *ta_session, const TEEC_UUID *uuid) +{ + EmulSession *session = (EmulSession *)ta_session; + + session->command = NULL; + session->command = kmalloc(sizeof(ProtocolCmd), GFP_KERNEL); + + if (!session->command) + return TEEC_ERROR_OUT_OF_MEMORY; + + /* Do nothing. Open a connection on the first command invocation. */ + return TEEC_SUCCESS; +} + +PlatformClientImpl g_emul_platform_impl = { + EmulLoadTA, + EmulUnloadTA, + EmulSendCommand, + NULL, + NULL, + NULL, + NULL +}; + +PlatformClientImpl *GetPlatformClientImpl(void) +{ + return &g_emul_platform_impl; +} + +size_t GetPlatformClientImplSize(void) +{ + return sizeof(EmulSession); +} diff --git a/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_qsee.c b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_qsee.c index b6ae2f3cc9ad..0ef1aed5dd23 100644 --- a/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_qsee.c +++ b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_common_qsee.c @@ -17,6 +17,7 @@ #include #include +#include #include "teec_common.h" @@ -25,7 +26,7 @@ #include "teec_param_utils.h" #include "linux/errno.h" -#define MAX_QSEE_UUID_LEN 17 +#define MAX_QSEE_UUID_LEN (MAX_APP_NAME_SIZE) // usually 64 bytes #define QSEE_SUCCESS 0 /* 1. Actually we don't use the response buffer. But RBUF_LEN can't be zero. diff --git a/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_operation.c b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_operation.c new file mode 100644 index 000000000000..5abe632df7bf --- /dev/null +++ b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/client/teec_operation.c @@ -0,0 +1,37 @@ +/* + * Set option shared memory and operations for TEE access + * + * Copyright (C) 2019 Samsung Electronics, Inc. + * + * Egor Uleyskiy, + * Viacheslav Vovchenko + * Yevgen Kopylov + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that 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. + */ + +#include "teec_operation.h" + +void FillOperationSharedMem(TEEC_SharedMemory *sharedMem, + TEEC_Operation *operation, bool inout_direction) +{ + if (inout_direction) { + operation->paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_INOUT, + TEEC_NONE, + TEEC_NONE, TEEC_NONE); + } else { + operation->paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_INPUT, + TEEC_NONE, + TEEC_NONE, TEEC_NONE); + } + + operation->params[0].tmpref.buffer = sharedMem->buffer; + operation->params[0].tmpref.size = sharedMem->size; +} diff --git a/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.c b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.c new file mode 100644 index 000000000000..497ad6621944 --- /dev/null +++ b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.c @@ -0,0 +1,135 @@ +/* + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that 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. + * + * This code is originated from Samsung Electronics proprietary sources. + * Author: Oleksandr Fadieiev (o.fadieiev@samsung.com) + * Author: Iaroslav Makarchuk (i.makarchuk@samsung.com) + * Created: 03 Oct, 2016 + * Modified: Dec 27, 2018 + * + * Copyright (C) 2015 Samsung Electronics, Inc. + */ + +#include "socket_utils.h" +#include "protocol.h" + +#include +#include +#include + +#define SOCKET_RETRY_CNT 5 +#define SOCKET_RETRY_DELAY 1 + +SocketStatus ReadDataFromSocket(struct socket *socket, uint8_t *data, + uint32_t data_len) +{ + SocketStatus status = SocketStatusError; + int read_res = 0; + uint32_t curr_len = 0; + struct msghdr msg; + + memset(&msg, 0, sizeof(msg)); + msg.msg_flags = MSG_DONTWAIT; + + do { + struct kvec vec; + + vec.iov_base = data + curr_len; + vec.iov_len = data_len - curr_len; + + read_res = kernel_recvmsg(socket, &msg, &vec, 1, vec.iov_len, + MSG_DONTWAIT); + if (read_res == -EAGAIN || read_res == -ERESTARTSYS) + continue; + + if (read_res <= 0) + break; + + curr_len += read_res; + } while (curr_len < data_len); + + if (curr_len == data_len) + status = SocketStatusOk; + + return status; +} + +SocketStatus WriteDataToSocket(struct socket *socket, uint8_t *data, + uint32_t data_len) +{ + SocketStatus status = SocketStatusError; + uint32_t curr_len = 0; + int write_res = 0; + struct msghdr msg; + + memset(&msg, 0, sizeof(msg)); + msg.msg_flags = MSG_DONTWAIT; + + while (curr_len < data_len) { + struct kvec vec; + + vec.iov_base = data + curr_len; + vec.iov_len = data_len - curr_len; + + write_res = kernel_sendmsg(socket, &msg, &vec, 1, vec.iov_len); + + if (write_res == -EAGAIN || write_res == -ERESTARTSYS) + continue; + + if (write_res <= 0) { + pr_err("FIVE: write error: %d\n", write_res); + break; + } + + curr_len += write_res; + } + + if (curr_len == data_len) + status = SocketStatusOk; + + return status; +} + +SocketStatus OpenSocket(struct sockaddr *sa, struct socket **socket) +{ + int retry_cnt = SOCKET_RETRY_CNT; + SocketStatus status = SocketStatusError; + + BUG_ON(!sa || !socket); + + /* + * Connect to proxy between kernel and emulator. + * The FIVE trustlet emulator and FIVE proxy are supposed to be + * launched before the first user request to the kernel. + * User (sign/verify) -> FIVE driver (TEEC protocol request) -> TCP -> + * FIVE proxy (raw data) -> Socket -> + * FIVE emulator (TEEC protocol response) + */ + if (sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, socket) < 0) { + pr_err("FIVE: error: while creating TCP socket.\n"); + return status; + } + + while (retry_cnt--) { + if (kernel_connect(*socket, sa, sizeof(*sa), 0) == 0) { + status = SocketStatusOk; + break; + } + + mdelay(500); + } + + if (SocketStatusOk != status) { + sock_release(*socket); + status = SocketStatusError; + } + + return status; +} diff --git a/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.h b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.h new file mode 100644 index 000000000000..b7657c3a4614 --- /dev/null +++ b/drivers/security/samsung/five_tee_driver/multibuild/source/gp-api/protocol/socket_utils.h @@ -0,0 +1,41 @@ +/* + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that 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. + * + * This code is originated from Samsung Electronics proprietary sources. + * Author: Oleksandr Fadieiev (o.fadieiev@samsung.com) + * Author: Iaroslav Makarchuk (i.makarchuk@samsung.com) + * Created: 03 Oct, 2016 + * Modified: Dec 27, 2018 + * + * Copyright (C) 2015 Samsung Electronics, Inc. + */ + +#ifndef SOCKET_UTILS_H_ +#define SOCKET_UTILS_H_ + +#include "protocol.h" + +#include +#include + +typedef enum SocketStatusEnum { + SocketStatusOk = 0, + SocketStatusError, +} SocketStatus; + +SocketStatus OpenSocket(struct sockaddr *sa, struct socket **socket); + +SocketStatus ReadDataFromSocket(struct socket *socket, uint8_t *data, + uint32_t data_len); + +SocketStatus WriteDataToSocket(struct socket *socket, uint8_t *data, + uint32_t data_len); + +#endif /* SOCKET_UTILS_H_ */ diff --git a/drivers/security/samsung/icdrv/Makefile b/drivers/security/samsung/icdrv/Makefile index a7b7408f015e..6b9810c74f42 100644 --- a/drivers/security/samsung/icdrv/Makefile +++ b/drivers/security/samsung/icdrv/Makefile @@ -11,7 +11,11 @@ EXTRA_CFLAGS += -I$(src) obj-$(CONFIG_ICD_USE_QSEECOM) += qsee_oemflag.o obj-$(CONFIG_ICD_USE_TZDEV) += tzdev_oemflag.o ifneq ($(CONFIG_SOC_EXYNOS7885),) -ccflags-$(CONFIG_ICD_USE_TZDEV) += -Idrivers/misc/tzdev/3.0 + ifeq ($(CONFIG_TEEGRIS_VERSION), 3) + ccflags-$(CONFIG_ICD_USE_TZDEV) += -Idrivers/misc/tzdev/3.0 + else + ccflags-$(CONFIG_ICD_USE_TZDEV) += -Idrivers/misc/tzdev + endif else ccflags-$(CONFIG_ICD_USE_TZDEV) += -Idrivers/misc/tzdev endif @@ -21,3 +25,5 @@ ifneq (,$(filter $(CONFIG_MTK_PLATFORM), "mt6768")) else obj-$(CONFIG_ICD_USE_TRUSTONIC) += kinibi_oemflag.o endif + +ccflags-y += -Wformat diff --git a/drivers/security/samsung/icdrv/icd.c b/drivers/security/samsung/icdrv/icd.c index 15d134c3034b..1686aa7c0097 100644 --- a/drivers/security/samsung/icdrv/icd.c +++ b/drivers/security/samsung/icdrv/icd.c @@ -33,10 +33,11 @@ #include #endif -static void icd_hook_integrity_reset(struct task_struct *task); +static void icd_hook_integrity_reset(struct task_struct *task, + struct file *file, unsigned cause); static struct five_hook_list five_ops[] = { - FIVE_HOOK_INIT(integrity_reset, icd_hook_integrity_reset), + FIVE_HOOK_INIT(integrity_reset2, icd_hook_integrity_reset), }; static bool contains_str(const char * const array[], const char *str) @@ -156,7 +157,30 @@ static const char *get_exec_path(struct task_struct *task, char **pathbuf) return pathname ?: (const char *)exe_path->dentry->d_name.name; } -static void icd_hook_integrity_reset(struct task_struct *task) +static const char *icd_d_path(const struct path *path, char **pathbuf, char *namebuf) +{ + char *pathname = NULL; + + *pathbuf = __getname(); + if (*pathbuf) { + pathname = d_absolute_path(path, *pathbuf, PATH_MAX); + if (IS_ERR(pathname)) { + __putname(*pathbuf); + *pathbuf = NULL; + pathname = NULL; + } + } + + if (!pathname) { + strlcpy(namebuf, path->dentry->d_name.name, NAME_MAX); + pathname = namebuf; + } + + return pathname; +} + +static void icd_hook_integrity_reset(struct task_struct *task, + struct file *file, unsigned cause) { const char *execpath = NULL; char *pathbuf = NULL; @@ -177,8 +201,18 @@ static void icd_hook_integrity_reset(struct task_struct *task) if (oemid != OEMFLAG_NONE) { int ret; + const char *pathname = NULL; + char *pathbuf = NULL; + char filename[NAME_MAX]; pr_info("ICD: %s: %u\n", execpath, oemid); + if (file) { + pathname = icd_d_path(&file->f_path, &pathbuf, filename); + pr_info("ICD: file=%s cause=%u\n", pathname, cause); + if (pathbuf) + __putname(pathbuf); + } + ret = oem_flags_set(oemid); if (ret) pr_err("oem_flags_set err: %d\n", ret); diff --git a/drivers/security/samsung/tzic/Kconfig b/drivers/security/samsung/tzic/Kconfig index 9caf2636fddf..1bfa20da2b96 100644 --- a/drivers/security/samsung/tzic/Kconfig +++ b/drivers/security/samsung/tzic/Kconfig @@ -13,7 +13,8 @@ choice depends on TZIC default TZIC_USE_QSEECOM if QSEECOM default TZIC_USE_TZDEV if TZDEV - default TZIC_USE_TRUSTONIC + default TZIC_USE_TRUSTONIC if TRUSTONIC_TEE + default TZIC_DEFAULT ---help--- Select Secure OS for TZIC @@ -34,4 +35,8 @@ choice depends on QSEECOM ---help--- Use Qualcomm as base Trusted Execution Environment + config TZIC_DEFAULT + bool "TZIC Disabled" + ---help--- + TZIC disabled endchoice diff --git a/drivers/security/samsung/tzic/Makefile b/drivers/security/samsung/tzic/Makefile index fa54dae84fe8..00171de4b6d5 100644 --- a/drivers/security/samsung/tzic/Makefile +++ b/drivers/security/samsung/tzic/Makefile @@ -10,7 +10,11 @@ EXTRA_CFLAGS += -I$(src) obj-$(CONFIG_TZIC_USE_QSEECOM) += tzic_qsee.o obj-$(CONFIG_TZIC_USE_TZDEV) += tzic_tzdev.o ifneq ($(CONFIG_TZIC_EXYNOS7885),) -ccflags-$(CONFIG_TZIC_USE_TZDEV) += -Idrivers/misc/tzdev/3.0 + ifeq ($(CONFIG_TEEGRIS_VERSION), 3) + ccflags-$(CONFIG_TZIC_USE_TZDEV) += -Idrivers/misc/tzdev/3.0 + else + ccflags-$(CONFIG_TZIC_USE_TZDEV) += -Idrivers/misc/tzdev + endif else ccflags-$(CONFIG_TZIC_USE_TZDEV) += -Idrivers/misc/tzdev endif @@ -18,4 +22,7 @@ ifeq ($(MTK_PLATFORM),mt6768) obj-y += tzic_mtk_atf.o else obj-$(CONFIG_TZIC_USE_TRUSTONIC) += tzic_kinibi.o -endif \ No newline at end of file + obj-$(CONFIG_TZIC_DEFAULT) += tzic_default.o +endif + +ccflags-y += -Wformat diff --git a/drivers/security/samsung/tzic/tzic64.c b/drivers/security/samsung/tzic/tzic64.c index 5f963065c2bc..c8ff9af1f0f1 100644 --- a/drivers/security/samsung/tzic/tzic64.c +++ b/drivers/security/samsung/tzic/tzic64.c @@ -34,7 +34,11 @@ #include #include #include +#if defined(CONFIG_TEEGRIS_VERSION) && (CONFIG_TEEGRIS_VERSION >= 4) +#include "extensions/irs.h" +#else #include "tzirs.h" +#endif #endif /* CONFIG_TZDEV */ #define TZIC_DEV "tzic" @@ -157,7 +161,7 @@ static long tzic_ioctl(struct file *file, unsigned int cmd, unsigned long arg) #endif switch (cmd) { - + #ifdef CONFIG_TZDEV case IOCTL_IRS_CMD: /* get flag id */ @@ -172,7 +176,7 @@ static long tzic_ioctl(struct file *file, unsigned int cmd, unsigned long arg) } else { ret = tzic_flags_get(param.name); } - + break; #endif /* CONFIG_TZDEV */ diff --git a/drivers/security/samsung/tzic/tzic_default.c b/drivers/security/samsung/tzic/tzic_default.c new file mode 100644 index 000000000000..971926cbfd04 --- /dev/null +++ b/drivers/security/samsung/tzic/tzic_default.c @@ -0,0 +1,27 @@ +/* + * Set OEM flags + * + * Copyright (C) 2018 Samsung Electronics, Inc. + * Nguyen Hoang Thai Kiet, + * Jonghun Song, + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that 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. + */ +#include "tzic.h" + +int tzic_oem_flags_set(enum oemflag_id index) +{ + return 0; +} + +int tzic_oem_flags_get(enum oemflag_id index) +{ + return 0; +} diff --git a/drivers/security/samsung/tzic/tzic_qsee.c b/drivers/security/samsung/tzic/tzic_qsee.c index 739ab614e0a5..0614c6eb8bcc 100644 --- a/drivers/security/samsung/tzic/tzic_qsee.c +++ b/drivers/security/samsung/tzic/tzic_qsee.c @@ -16,8 +16,8 @@ * GNU General Public License for more details. */ +#include #include -#include #include #include "tzic.h" @@ -32,7 +32,7 @@ static int set_tamper_fuse_qsee(uint32_t index) { struct scm_desc desc = {0}; uint32_t fuse_id; - + desc.args[0] = fuse_id = index; desc.arginfo = SCM_ARGS(1); diff --git a/drivers/security/samsung/tzic/tzic_tzdev.c b/drivers/security/samsung/tzic/tzic_tzdev.c index f14c6b6c7b89..17052a49a3fb 100644 --- a/drivers/security/samsung/tzic/tzic_tzdev.c +++ b/drivers/security/samsung/tzic/tzic_tzdev.c @@ -19,7 +19,11 @@ #include #include #include +#if defined(CONFIG_TEEGRIS_VERSION) && (CONFIG_TEEGRIS_VERSION >= 4) +#include "extensions/irs.h" +#else #include "tzirs.h" +#endif #include "tzic.h" static uint32_t run_cmd_teegris(uint32_t cmd, uint32_t arg1, @@ -48,9 +52,6 @@ static uint32_t run_cmd_teegris(uint32_t cmd, uint32_t arg1, return -EFAULT; } - arg2 = p1; - arg3 = p2; - cmd = p3; if(arg1) { return p2; } diff --git a/drivers/staging/samsung/sec_bootstat.c b/drivers/staging/samsung/sec_bootstat.c index 358a7e728584..37adf510ae1a 100644 --- a/drivers/staging/samsung/sec_bootstat.c +++ b/drivers/staging/samsung/sec_bootstat.c @@ -88,6 +88,18 @@ static struct boot_event boot_events[] = { {"!@Boot_DEBUG: Launcher.LoaderTask.run() start",}, {"!@Boot_DEBUG: Launcher - FinishFirstBind",}, }; + +#define MAX_LENGTH_OF_BOOTING_LOG 90 +#define DELAY_TIME_EBS 10000 +#define MAX_EVENTS_EBS 100 + +struct enhanced_boot_time { + struct list_head next; + char buf[MAX_LENGTH_OF_BOOTING_LOG]; + unsigned int time; + int freq[2]; + int online; +}; #define MAX_LENGTH_OF_SYSTEMSERVER_LOG 90 struct systemserver_init_time_entry { struct list_head next; @@ -95,8 +107,12 @@ struct systemserver_init_time_entry { }; static bool bootcompleted = false; +static bool ebs_finished = false; +unsigned long long boot_complete_time = 0; +static int events_ebs = 0; LIST_HEAD(systemserver_init_time_list); +LIST_HEAD(enhanced_boot_time_list); void sec_bootstat_mct_start(u64 rate) { @@ -118,12 +134,48 @@ void sec_bootstat_add_initcall(const char *s) } } +void sec_enhanced_boot_stat_record(const char *buf) +{ + unsigned long long t = 0; + struct enhanced_boot_time *entry; + entry = kmalloc(sizeof(*entry), GFP_KERNEL); + if (!entry) + return; + strncpy(entry->buf, buf, MAX_LENGTH_OF_BOOTING_LOG); + entry->buf[MAX_LENGTH_OF_BOOTING_LOG-1] = '\0'; + t = local_clock(); + do_div(t, 1000000); + entry->time = (unsigned int)t; + sec_bootstat_get_cpuinfo(entry->freq, &entry->online); + list_add(&entry->next, &enhanced_boot_time_list); + events_ebs++; +} + static int prev; void sec_bootstat_add(const char *c) { size_t i = 0; unsigned long long t = 0; + if (bootcompleted && !ebs_finished) { + t = local_clock(); + do_div(t, 1000000); + if ((t - boot_complete_time) >= DELAY_TIME_EBS) + ebs_finished = true; + } + + // Collect Boot_EBS from java side + if (!ebs_finished && events_ebs < MAX_EVENTS_EBS){ + if (!strncmp(c, "!@Boot_EBS: ", 12)) { + sec_enhanced_boot_stat_record(c + 12); + return; + } + else if (!strncmp(c, "!@Boot_EBS_", 11)) { + sec_enhanced_boot_stat_record(c); + return; + } + } + if(!bootcompleted && !strncmp(c, "!@Boot_SystemServer: ", 21)){ struct systemserver_init_time_entry *entry; entry = kmalloc(sizeof(*entry), GFP_KERNEL); @@ -148,7 +200,11 @@ void sec_bootstat_add(const char *c) sec_bootstat_get_thermal(boot_events[i].temp); } // careful check bootcomplete message index 9 - if(i == 9) bootcompleted = true; + if(i == 9) { + bootcompleted = true; + boot_complete_time = local_clock(); + do_div(boot_complete_time, 1000000); + } break; } } @@ -218,11 +274,51 @@ static int sec_boot_stat_proc_show(struct seq_file *m, void *v) return 0; } +static int sec_enhanced_boot_stat_proc_show(struct seq_file *m, void *v) +{ + size_t i = 0; + unsigned int last_time = 0; + struct enhanced_boot_time *entry; + + seq_printf(m, "%-90s %6s %6s %6s %4s %4s\n", "Boot Events", "time", "ktime", "delta", "f_c0", "f_c1"); + seq_puts(m, "-----------------------------------------------------------------------------------------------------------------------\n"); + seq_puts(m, "BOOTLOADER - KERNEL\n"); + seq_puts(m, "-----------------------------------------------------------------------------------------------------------------------\n"); + seq_printf(m, "%-90s %6u %6u %6u\n", "MCT is initialized in bl2", 0, 0, 0); + seq_printf(m, "%-90s %6u %6u %6u\n", "start kernel timer", mct_start, 0, mct_start); + + for (i = 0; i < ARRAY_SIZE(boot_initcall); i++) { + seq_printf(m, "%-90s %6u %6u %6u %4d %4d\n", boot_initcall[i].string, boot_initcall[i].time + mct_start, boot_initcall[i].time, + boot_initcall[i].time - last_time, boot_initcall[i].freq[0] / 1000, boot_initcall[i].freq[1] / 1000); + last_time = boot_initcall[i].time; + } + + seq_puts(m, "-----------------------------------------------------------------------------------------------------------------------\n"); + seq_puts(m, "FRAMEWORK\n"); + seq_puts(m, "-----------------------------------------------------------------------------------------------------------------------\n"); + list_for_each_entry_reverse (entry, &enhanced_boot_time_list, next){ + if (entry->buf[0] == '!') { + seq_printf(m, "%-90s %6u %6u %6u %4d %4d\n", entry->buf, entry->time + mct_start, entry->time, entry->time - last_time, + entry->freq[0] / 1000, entry->freq[1] / 1000); + last_time = entry->time; + } + else { + seq_printf(m, "%-90s %6u %6u %11d %4d\n", entry->buf, entry->time + mct_start, entry->time, entry->freq[0] / 1000, entry->freq[1] / 1000); + } + } + return 0; +} + static int sec_boot_stat_proc_open(struct inode *inode, struct file *file) { return single_open(file, sec_boot_stat_proc_show, NULL); } +static int sec_enhanced_boot_stat_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, sec_enhanced_boot_stat_proc_show, NULL); +} + static const struct file_operations sec_boot_stat_proc_fops = { .open = sec_boot_stat_proc_open, .read = seq_read, @@ -230,11 +326,30 @@ static const struct file_operations sec_boot_stat_proc_fops = { .release = single_release, }; +static const struct file_operations sec_enhanced_boot_stat_proc_fops = { + .open = sec_enhanced_boot_stat_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + static ssize_t store_boot_stat(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { unsigned long long t = 0; + // Collect Boot_EBS from native side + if (!ebs_finished && events_ebs < MAX_EVENTS_EBS) { + if (!strncmp(buf, "!@Boot_EBS: ", 12)) { + sec_enhanced_boot_stat_record(buf + 12); + return count; + } + else if (!strncmp(buf, "!@Boot_EBS_", 11)) { + sec_enhanced_boot_stat_record(buf); + return count; + } + } + if (!strncmp(buf, "!@Boot: start init process", 26)) { t = local_clock(); do_div(t, 1000000); @@ -251,6 +366,7 @@ static DEVICE_ATTR(boot_stat, 0220, NULL, store_boot_stat); static int __init sec_bootstat_init(void) { struct proc_dir_entry *entry; + struct proc_dir_entry *enhanced_entry; struct device *dev; u32 arch_timer_rate; @@ -265,6 +381,9 @@ static int __init sec_bootstat_init(void) entry = proc_create("boot_stat", S_IRUGO, NULL, &sec_boot_stat_proc_fops); if (!entry) return -ENOMEM; + enhanced_entry = proc_create("enhanced_boot_stat", S_IRUGO, NULL, &sec_enhanced_boot_stat_proc_fops); + if (!enhanced_entry) + return -ENOMEM; // sysfs dev = sec_device_create(NULL, "bsp"); diff --git a/drivers/video/fbdev/exynos/panel/active_clk_img_default.h b/drivers/video/fbdev/exynos/panel/active_clk_img_default.h index ef005a1372b4..169a100d4260 100644 --- a/drivers/video/fbdev/exynos/panel/active_clk_img_default.h +++ b/drivers/video/fbdev/exynos/panel/active_clk_img_default.h @@ -1,14 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/s6e3ha6/self_clk_default_niddle.h - * - * Header file for S6E3HA6 Dimming Driver - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. -*/ + */ #ifndef __LIVE_CLK_IMGE_DEFAULT_H__ #define __LIVE_CLK_IMGE_DEFAULT_H__ diff --git a/drivers/video/fbdev/exynos/panel/active_clk_img_white.h b/drivers/video/fbdev/exynos/panel/active_clk_img_white.h index a243d6382e91..c94444d1617c 100644 --- a/drivers/video/fbdev/exynos/panel/active_clk_img_white.h +++ b/drivers/video/fbdev/exynos/panel/active_clk_img_white.h @@ -1,14 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/s6e3ha6/self_clk_default_niddle.h - * - * Header file for S6E3HA6 Dimming Driver - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. -*/ + */ #ifndef __LIVE_CLK_IMG_WHITE_H__ #define __LIVE_CLK_IMG_WHITE_H__ diff --git a/drivers/video/fbdev/exynos/panel/active_clock.c b/drivers/video/fbdev/exynos/panel/active_clock.c index 25f1e75eb6ed..8090dd8c6011 100644 --- a/drivers/video/fbdev/exynos/panel/active_clock.c +++ b/drivers/video/fbdev/exynos/panel/active_clock.c @@ -1,8 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * http://www.samsung.com/ - * - * Samsung's Active Clock Driver + * Copyright (c) Samsung Electronics Co., Ltd. * Author: Minwoo Kim * * This program is free software; you can redistribute it and/or modify @@ -29,7 +27,7 @@ static int check_need_update(struct panel_device *panel, int ret = 0; struct panel_state *state; - if (!panel || !act_info|| !ioctl_info) { + if (!panel || !act_info || !ioctl_info) { panel_err("LIVE-CLK:ERR:%s:invalid argument\n", __func__); return -1; } @@ -46,9 +44,9 @@ static int check_need_update(struct panel_device *panel, (act_info->time_min != ioctl_info->time_min) || (act_info->time_sec != ioctl_info->time_sec) || (act_info->time_ms != ioctl_info->time_ms)) { - if (state->cur_state == PANEL_STATE_ALPM) { + if (state->cur_state == PANEL_STATE_ALPM) act_info->update_time = 1; - } + ret = 1; } if (act_info->interval != ioctl_info->interval) @@ -66,7 +64,7 @@ static int check_need_update(struct panel_device *panel, panel_info("ACT-CLK:En : %d\n", act_info->en); panel_info("ACT-CLK:Axis:x:%d,y:%d\n", act_info->pos_x, act_info->pos_y); - panel_info("ACT-CLK:Time::%d:%d:%d:%d\n",act_info->time_hr, + panel_info("ACT-CLK:Time::%d:%d:%d:%d\n", act_info->time_hr, act_info->time_min, act_info->time_sec, act_info->time_ms); panel_info("ACT-CLK:Interval : %d\n", act_info->interval); @@ -75,7 +73,7 @@ static int check_need_update(struct panel_device *panel, static int set_active_clock(struct act_clock_dev *act_dev, void __user *arg) { - int ret= 0; + int ret = 0; int need_update = 0; struct panel_device *panel; struct panel_state *state; @@ -90,7 +88,7 @@ static int set_active_clock(struct act_clock_dev *act_dev, void __user *arg) goto set_exit; } - if (copy_from_user(&ioctl_info,(struct ioctl_act_clk __user *)arg, + if (copy_from_user(&ioctl_info, (struct ioctl_act_clk __user *)arg, sizeof(struct ioctl_act_clk))) { panel_err("LIVE-CLK:ERR:%s:failed to copy from user's active param\n", __func__); goto set_exit; @@ -114,25 +112,24 @@ static int set_active_clock(struct act_clock_dev *act_dev, void __user *arg) if ((act_info->en == 1) && (act_info->update_img == IMG_UPDATE_NEED)) { - panel_info("PANEL:INFO:%s:Update Active Clock image \n", __func__); + panel_info("PANEL:INFO:%s:Update Active Clock image\n", __func__); ret = panel_do_seqtbl_by_index(panel, PANEL_ACTIVE_CLK_IMG_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("ACT-CLK:ERR:%s, failed to write init seqtbl\n", __func__); - } + act_info->update_img = IMG_UPDATE_DONE; } if (act_info->update_time) { ret = panel_do_seqtbl_by_index(panel, PANEL_ACTIVE_CLK_UPDATE_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("ACT-CLK:ERR:%s, failed to write init seqtbl\n", __func__); - } + act_info->update_time = 0; } else { ret = panel_do_seqtbl_by_index(panel, PANEL_ACTIVE_CLK_CTRL_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("ACT-CLK:ERR:%s, failed to write init seqtbl\n", __func__); - } } set_exit: @@ -170,7 +167,7 @@ static int set_self_drawer(struct act_clock_dev *act_dev, void __user *arg) goto set_exit; } - if (copy_from_user(&ioctl_info,(struct ioctl_self_drawer __user *)arg, + if (copy_from_user(&ioctl_info, (struct ioctl_self_drawer __user *)arg, sizeof(struct ioctl_self_drawer))) { panel_err("LIVE-CLK:ERR:%s:failed to copy from user's active param\n", __func__); goto set_exit; @@ -215,32 +212,31 @@ static long active_clock_ioctl(struct file *file, unsigned int cmd, unsigned lon mutex_lock(&panel->io_lock); switch (cmd) { - case IOCTL_ACT_CLK : - panel_info("ACT-CLK:INFO:%s:IOCTL_ACT_CLK\n", __func__); - ret = set_active_clock(act_dev, (void __user *)arg); - break; + case IOCTL_ACT_CLK: + panel_info("ACT-CLK:INFO:%s:IOCTL_ACT_CLK\n", __func__); + ret = set_active_clock(act_dev, (void __user *)arg); + break; - case IOCTL_BLINK_CLK : - panel_info("ACT-CLK:INFO:%s:IOCTL_BLINK_CLK\n", __func__); - if (copy_from_user(&ioctl_blink, (struct ioctl_blink_clock __user *)arg, - sizeof(struct ioctl_blink_clock))) { - panel_err("ACT-CLK:ERR:%s:failed to copy from user's blink param\n", __func__); - goto exit_ioctl; - } - ret = set_blink_clock(act_dev, &ioctl_blink); - - break; - - case IOCTL_SELF_DRAWER_CLK: - panel_info("ACT-CLK:INFO:%s:IOCTL_SELF_DRAWER_CLK\n", __func__); - ret = set_self_drawer(act_dev, (void __user *)arg); - break; - - default: - panel_err("ACT-CLK:ERR:%s : invalid cmd : %d\n", __func__, cmd); - ret = -EINVAL; + case IOCTL_BLINK_CLK: + panel_info("ACT-CLK:INFO:%s:IOCTL_BLINK_CLK\n", __func__); + if (copy_from_user(&ioctl_blink, (struct ioctl_blink_clock __user *)arg, + sizeof(struct ioctl_blink_clock))) { + panel_err("ACT-CLK:ERR:%s:failed to copy from user's blink param\n", __func__); goto exit_ioctl; + } + ret = set_blink_clock(act_dev, &ioctl_blink); + break; + + case IOCTL_SELF_DRAWER_CLK: + panel_info("ACT-CLK:INFO:%s:IOCTL_SELF_DRAWER_CLK\n", __func__); + ret = set_self_drawer(act_dev, (void __user *)arg); + break; + + default: + panel_err("ACT-CLK:ERR:%s : invalid cmd : %d\n", __func__, cmd); + ret = -EINVAL; + goto exit_ioctl; } exit_ioctl: @@ -366,7 +362,7 @@ int probe_live_clock_drv(struct act_clock_dev *act_dev) struct act_drawer_info *draw_info; if (act_dev == NULL) { - panel_err("LIVE-CLK:ERR:%s: invalid live clk \n", __func__); + panel_err("LIVE-CLK:ERR:%s: invalid live clk\n", __func__); return -EINVAL; } act_dev->dev.minor = MISC_DYNAMIC_MINOR; @@ -406,9 +402,9 @@ int probe_live_clock_drv(struct act_clock_dev *act_dev) blink_info->interval = 5; blink_info->radius = 10; blink_info->color = 0x000000; - blink_info->line_width = 0;; + blink_info->line_width = 0; blink_info->pos1_x = 0; - blink_info->pos1_y = 0 ; + blink_info->pos1_y = 0; blink_info->pos2_x = 0; blink_info->pos2_y = 0; diff --git a/drivers/video/fbdev/exynos/panel/active_clock.h b/drivers/video/fbdev/exynos/panel/active_clock.h index f0df4183e3ad..e5fc0fafdb6e 100644 --- a/drivers/video/fbdev/exynos/panel/active_clock.h +++ b/drivers/video/fbdev/exynos/panel/active_clock.h @@ -1,8 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * http://www.samsung.com/ - * - * Samsung's Live Clock Driver + * Copyright (c) Samsung Electronics Co., Ltd. * Author: Minwoo Kim * * This program is free software; you can redistribute it and/or modify @@ -92,7 +90,7 @@ struct ioctl_self_drawer { u32 sd_raduis; }; -#define IOCTL_ACT_CLK _IOW('A', 100, struct ioctl_act_clk) +#define IOCTL_ACT_CLK _IOW('A', 100, struct ioctl_act_clk) #define IOCTL_BLINK_CLK _IOW('A', 101, struct ioctl_blink_clock) #define IOCTL_SELF_DRAWER_CLK _IOW('A', 102, struct ioctl_self_drawer) diff --git a/drivers/video/fbdev/exynos/panel/copr.c b/drivers/video/fbdev/exynos/panel/copr.c index 8b59e2c28d45..3e2b2b42a4c2 100644 --- a/drivers/video/fbdev/exynos/panel/copr.c +++ b/drivers/video/fbdev/exynos/panel/copr.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/copr.c - * - * Samsung Common LCD COPR Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -818,16 +815,6 @@ static int copr_fb_notifier_callback(struct notifier_block *self, if (unlikely(!copr->props.support)) return 0; -#if 0 - if (fb_blank == FB_BLANK_UNBLANK) { - if (!early_blank) - copr_enable(copr); - } else if (fb_blank == FB_BLANK_POWERDOWN) { - if (early_blank) - copr_disable(copr); - } -#endif - return 0; } diff --git a/drivers/video/fbdev/exynos/panel/copr.h b/drivers/video/fbdev/exynos/panel/copr.h index 0820095efa92..9f0a4da0c7b8 100644 --- a/drivers/video/fbdev/exynos/panel/copr.h +++ b/drivers/video/fbdev/exynos/panel/copr.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/copr.h - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify @@ -177,16 +174,16 @@ static inline void SET_COPR_REG_RE(struct copr_info *copr, bool cnt_re) } #ifdef CONFIG_EXYNOS_DECON_LCD_COPR -bool copr_is_enabled(struct copr_info *); -int copr_enable(struct copr_info *); -int copr_disable(struct copr_info *); -int copr_update_start(struct copr_info *, int); +bool copr_is_enabled(struct copr_info *copr); +int copr_enable(struct copr_info *copr); +int copr_disable(struct copr_info *copr); +int copr_update_start(struct copr_info *copr, int count); int copr_update_average(struct copr_info *copr); -int copr_get_value(struct copr_info *); -int copr_get_average(struct copr_info *, int *, int *); +int copr_get_value(struct copr_info *copr); +//int copr_get_average(struct copr_info *, int *, int *); int copr_get_average_and_clear(struct copr_info *copr); int copr_roi_get_value(struct copr_info *copr, struct copr_roi *roi, int size, u32 *out); -int copr_probe(struct panel_device *, struct panel_copr_data *); +int copr_probe(struct panel_device *panel, struct panel_copr_data *copr_data); int copr_res_update(struct copr_info *copr, int index, int cur_value, struct timespec cur_ts); #else static inline bool copr_is_enabled(struct copr_info *copr) { return 0; } diff --git a/drivers/video/fbdev/exynos/panel/dimming_gamma.h b/drivers/video/fbdev/exynos/panel/dimming_gamma.h index a0d1ac6d6d46..88c4c0904815 100644 --- a/drivers/video/fbdev/exynos/panel/dimming_gamma.h +++ b/drivers/video/fbdev/exynos/panel/dimming_gamma.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/dimming_gamma.h - * - * Header file for Samsung AID Dimming Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify diff --git a/drivers/video/fbdev/exynos/panel/dpui.c b/drivers/video/fbdev/exynos/panel/dpui.c index 5390613d3ecc..d9428e6c88a2 100644 --- a/drivers/video/fbdev/exynos/panel/dpui.c +++ b/drivers/video/fbdev/exynos/panel/dpui.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/dpui.c - * - * Samsung Common LCD DPUI(display use info) LOGGING Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -270,7 +267,7 @@ static int __get_dpui_u32_field(enum dpui_key key, u32 *value) return -EINVAL; } - rc = kstrtouint(dpui.field[key].buf, (unsigned int)0, &cur_val); + rc = kstrtouint(dpui.field[key].buf, 0, &cur_val); if (rc < 0) { pr_err("%s failed to get value\n", __func__); return rc; diff --git a/drivers/video/fbdev/exynos/panel/dpui.h b/drivers/video/fbdev/exynos/panel/dpui.h index 4dafeaf43fc5..94ded5c80376 100644 --- a/drivers/video/fbdev/exynos/panel/dpui.h +++ b/drivers/video/fbdev/exynos/panel/dpui.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/dpui.h - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify diff --git a/drivers/video/fbdev/exynos/panel/mdnie.c b/drivers/video/fbdev/exynos/panel/mdnie.c index 00519b0b9660..22510b72d81c 100644 --- a/drivers/video/fbdev/exynos/panel/mdnie.c +++ b/drivers/video/fbdev/exynos/panel/mdnie.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/mdnie.c - * - * Samsung Common LCD mDNIe Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -167,15 +164,15 @@ int mdnie_current_state(struct mdnie_info *mdnie) mdnie_mode = MDNIE_OFF_MODE; if (panel->state.cur_state == PANEL_STATE_ALPM && - ((mdnie_mode == MDNIE_ACCESSIBILITY_MODE && - (mdnie->props.accessibility == NEGATIVE || - mdnie->props.accessibility == GRAYSCALE_NEGATIVE)) || - (mdnie_mode == MDNIE_SCENARIO_MODE && !IS_LDU_MODE(mdnie)) || - mdnie_mode == MDNIE_COLOR_LENS_MODE || - mdnie_mode == MDNIE_DMB_MODE || - mdnie_mode == MDNIE_HDR_MODE || - mdnie_mode == MDNIE_LIGHT_NOTIFICATION_MODE || - mdnie_mode == MDNIE_HMD_MODE)) { + ((mdnie_mode == MDNIE_ACCESSIBILITY_MODE && + (mdnie->props.accessibility == NEGATIVE || + mdnie->props.accessibility == GRAYSCALE_NEGATIVE)) || + (mdnie_mode == MDNIE_SCENARIO_MODE && !IS_LDU_MODE(mdnie)) || + mdnie_mode == MDNIE_COLOR_LENS_MODE || + mdnie_mode == MDNIE_DMB_MODE || + mdnie_mode == MDNIE_HDR_MODE || + mdnie_mode == MDNIE_LIGHT_NOTIFICATION_MODE || + mdnie_mode == MDNIE_HMD_MODE)) { pr_debug("%s block mdnie (%s->%s) in doze mode\n", __func__, mdnie_mode_name[mdnie_mode], mdnie_mode_name[MDNIE_BYPASS_MODE]); @@ -394,7 +391,7 @@ static void mdnie_coordinate_tune_rgb(struct mdnie_info *mdnie, int x, int y, u8 ((res[c][RGB_01] * (1024 - tune_x) + (res[c][RGB_11] * tune_x)) * tune_y)) + (1L << 19)) >> 20; } } - panel_info("coord (x:%4d y:%4d Q%d compV:%8lld compH:%8lld) " + panel_info("coord (x:%4d y:%4d Q%d compV:%8lld compH:%8lld)\t" "tune_coord (%4d %4d) tune_rgb[ADT] (%3d %3d %3d) tune_rgb[D65] (%3d %3d %3d)\n", x, y, area + 1, result[H_LINE], result[V_LINE], tune_x, tune_y, tune_rgb[WCRD_TYPE_ADAPTIVE][0], tune_rgb[WCRD_TYPE_ADAPTIVE][1], @@ -930,20 +927,20 @@ static ssize_t whiteRGB_store(struct device *dev, if (!IS_VALID_WRGB_OFS(wr_offset) || !IS_VALID_WRGB_OFS(wg_offset) || !IS_VALID_WRGB_OFS(wb_offset)) { - panel_err("%s, invalid offset %d %d %d\n", - __func__, wr_offset, wg_offset, wb_offset); - return -EINVAL; - } + panel_err("%s, invalid offset %d %d %d\n", + __func__, wr_offset, wg_offset, wb_offset); + return -EINVAL; + } - dev_info(dev, "%s, wr_offset %d, wg_offset %d, wb_offset %d\n", - __func__, wr_offset, wg_offset, wb_offset); + dev_info(dev, "%s, wr_offset %d, wg_offset %d, wb_offset %d\n", + __func__, wr_offset, wg_offset, wb_offset); - mutex_lock(&mdnie->lock); - mdnie->props.def_wrgb_ofs[0] = wr_offset; - mdnie->props.def_wrgb_ofs[1] = wg_offset; - mdnie->props.def_wrgb_ofs[2] = wb_offset; - mutex_unlock(&mdnie->lock); - mdnie_update(mdnie); + mutex_lock(&mdnie->lock); + mdnie->props.def_wrgb_ofs[0] = wr_offset; + mdnie->props.def_wrgb_ofs[1] = wg_offset; + mdnie->props.def_wrgb_ofs[2] = wb_offset; + mutex_unlock(&mdnie->lock); + mdnie_update(mdnie); return count; } diff --git a/drivers/video/fbdev/exynos/panel/mdnie.h b/drivers/video/fbdev/exynos/panel/mdnie.h index 0dd58d7ce305..99f7dbc86f7a 100644 --- a/drivers/video/fbdev/exynos/panel/mdnie.h +++ b/drivers/video/fbdev/exynos/panel/mdnie.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/mdnie.h - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify @@ -523,7 +520,7 @@ static inline int mdnie_disable(struct mdnie_info *mdnie) { return 0; } static inline int mdnie_update(struct mdnie_info *mdnie) { return 0; } #endif extern struct maptbl *mdnie_find_maptbl(struct mdnie_info *); -extern struct maptbl *mdnie_find_etc_maptbl(struct mdnie_info *, int); -extern int mdnie_get_maptbl_index(struct mdnie_info *); -extern ssize_t attr_store_for_each(struct class *, const char *, const char *, size_t); +extern struct maptbl *mdnie_find_etc_maptbl(struct mdnie_info *mdnie, int index); +extern int mdnie_get_maptbl_index(struct mdnie_info *mdnie); +extern ssize_t attr_store_for_each(struct class *cls, const char *name, const char *buf, size_t size); #endif /* __MDNIE_H__ */ diff --git a/drivers/video/fbdev/exynos/panel/panel.c b/drivers/video/fbdev/exynos/panel/panel.c index 02561560b74d..dea2beda25bc 100644 --- a/drivers/video/fbdev/exynos/panel/panel.c +++ b/drivers/video/fbdev/exynos/panel/panel.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/panel.c - * - * Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify @@ -174,10 +171,10 @@ void print_panel_lut(struct panel_lut_info *lut_info) int i; for (i = 0; i < lut_info->nr_panel; i++) - panel_dbg("PANEL:DBG:panel_lut names[%d] %s\n", i, lut_info->names[i]); + panel_dbg("PANEL:DBG:panel_lut names[%d] %s\n", i, lut_info->names[i]); for (i = 0; i < lut_info->nr_lut; i++) - panel_dbg("PANEL:DBG:panel_lut[%d] id:0x%08X mask:0x%08X index:%d(%s)\n", + panel_dbg("PANEL:DBG:panel_lut[%d] id:0x%08X mask:0x%08X index:%d(%s)\n", i, lut_info->lut[i].id, lut_info->lut[i].mask, lut_info->lut[i].index, lut_info->names[lut_info->lut[i].index]); } @@ -424,6 +421,7 @@ int maptbl_getidx(struct maptbl *tbl) u8 *maptbl_getptr(struct maptbl *tbl) { int index = maptbl_getidx(tbl); + if (unlikely(index < 0)) { pr_err("%s, failed to get index\n", __func__); return NULL; @@ -450,8 +448,8 @@ void maptbl_memcpy(struct maptbl *dst, struct maptbl *src) if (!dst || !src || dst->nlayer != src->nlayer || dst->nrow != src->nrow || dst->ncol != src->ncol) { pr_err("%s failed to copy from:%s to:%s size:%d\n", - __func__, (!src || !src->name ) ? "" : src->name, - (!dst || !dst->name ) ? "" : dst->name, + __func__, (!src || !src->name) ? "" : src->name, + (!dst || !dst->name) ? "" : dst->name, (!dst) ? 0 : sizeof_maptbl(dst)); return; } @@ -742,11 +740,10 @@ int panel_verify_tx_packet(struct panel_device *panel, u8 *table, u8 len) return -EINVAL; } - if (!IS_PANEL_ACTIVE(panel)) { + if (!IS_PANEL_ACTIVE(panel)) return 0; - } - buf = kzalloc(sizeof(u8) * len, GFP_KERNEL); + buf = kcalloc(len, sizeof(u8), GFP_KERNEL); if (!buf) { pr_err("%s, failed to alloc memory\n", __func__); return -ENOMEM; @@ -1138,6 +1135,7 @@ struct resinfo *find_panel_resource(struct panel_info *panel_data, char *name) bool panel_resource_initialized(struct panel_info *panel_data, char *name) { struct resinfo *res = find_panel_resource(panel_data, name); + if (unlikely(!res)) { panel_err("%s, %s not found in resource\n", __func__, name); @@ -1379,9 +1377,8 @@ int read_panel_id(struct panel_device *panel, u8 *buf) return -EINVAL; } - if (!IS_PANEL_ACTIVE(panel)) { + if (!IS_PANEL_ACTIVE(panel)) return -ENODEV; - } mutex_lock(&panel->op_lock); len = panel_rx_nbytes(panel, DSI_PKT_TYPE_RD, buf, PANEL_ID_REG, 0, 3); @@ -1416,9 +1413,8 @@ int panel_rdinfo_update(struct panel_device *panel, struct rdinfo *rdi) return -EINVAL; } - if (rdi->data) - kfree(rdi->data); - rdi->data = kzalloc(sizeof(u8) * rdi->len, GFP_KERNEL); + kfree(rdi->data); + rdi->data = kcalloc(rdi->len, sizeof(u8), GFP_KERNEL); #ifdef CONFIG_SUPPORT_DDI_FLASH if (rdi->type == DSI_PKT_TYPE_RD_POC) diff --git a/drivers/video/fbdev/exynos/panel/panel.h b/drivers/video/fbdev/exynos/panel/panel.h index fef86be9514a..ecd75fa890bf 100644 --- a/drivers/video/fbdev/exynos/panel/panel.h +++ b/drivers/video/fbdev/exynos/panel/panel.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/panel.h - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify @@ -80,14 +77,6 @@ enum { struct maptbl; struct mdnie_info; -struct common_panel_ops { - int (*tx_cmds)(struct panel_info *, const void *, int); - int (*rx_cmds)(struct panel_info *, u8 *, const void *, int); -#if CONFIG_OF - int (*parse_dt)(const struct device_node *); -#endif -}; - /* * [command types] * 1. delay diff --git a/drivers/video/fbdev/exynos/panel/panel_bl.c b/drivers/video/fbdev/exynos/panel/panel_bl.c index 4e44d22d3ceb..903e622717ff 100644 --- a/drivers/video/fbdev/exynos/panel/panel_bl.c +++ b/drivers/video/fbdev/exynos/panel/panel_bl.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/panel_bl.c - * - * Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify @@ -35,9 +32,7 @@ static void print_tbl(int *tbl, int sz) } } #else -static void print_tbl(int *tbl, int sz) { - return; -} +static void print_tbl(int *tbl, int sz) {} #endif static int max_brt_tbl(struct brightness_table *brt_tbl) @@ -542,7 +537,7 @@ int aor_interpolation(unsigned int *brt_tbl, unsigned int *lum_tbl, u64 upper_lum, lower_lum; u64 upper_brt, lower_brt; u64 upper_aor, lower_aor, aor; - u64 upper_aor_ratio, lower_aor_ratio, aor_ratio; + u64 upper_aor_ratio, lower_aor_ratio, aor_ratio = 0; u64 intrp_brt = 0, vbase_lum = 0; enum DIMTYPE dimtype; @@ -678,7 +673,7 @@ int panel_bl_set_brightness(struct panel_bl_device *panel_bl, int id, int force) int ret = 0, ilum = 0, luminance = 0, brightness, index = PANEL_SET_BL_SEQ, step; struct panel_bl_sub_dev *subdev; struct panel_device *panel; - int luminance_interp; + int luminance_interp = 0; if (panel_bl == NULL) { panel_err("PANEL:ERR:%s:panel is null\n", __func__); diff --git a/drivers/video/fbdev/exynos/panel/panel_bl.h b/drivers/video/fbdev/exynos/panel/panel_bl.h index 85980c12ebea..0a549799e623 100644 --- a/drivers/video/fbdev/exynos/panel/panel_bl.h +++ b/drivers/video/fbdev/exynos/panel/panel_bl.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/panel_bl.h - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify @@ -106,11 +103,6 @@ struct brightness_table { u32 vtotal; }; -struct panel_bl_ops { - int (*set_brightness)(void *, int level); - int (*get_brightness)(void *); -}; - enum panel_bl_hw_type { PANEL_BL_HW_TYPE_TFT, PANEL_BL_HW_TYPE_OCTA, @@ -157,7 +149,6 @@ struct panel_bl_device { struct backlight_device *bd; void *bd_data; struct mutex ops_lock; - const struct panel_bl_ops *ops; struct mutex lock; struct panel_bl_properties props; struct panel_bl_sub_dev subdev[MAX_PANEL_BL_SUBDEV]; @@ -169,19 +160,19 @@ struct panel_bl_device { }; int panel_bl_probe(struct panel_device *panel); -int panel_bl_set_brightness(struct panel_bl_device *, int, int); -int get_max_brightness(struct panel_bl_device *); -int get_brightness_pac_step(struct panel_bl_device *, int); +int panel_bl_set_brightness(struct panel_bl_device *panel_bl, int id, int force); +int get_max_brightness(struct panel_bl_device *panel_bl); +int get_brightness_pac_step(struct panel_bl_device *panel_bl, int brightness); int get_brightness_of_brt_to_step(struct panel_bl_device *panel_bl, int id, int brightness); -int get_actual_brightness(struct panel_bl_device *, int); -int get_subdev_actual_brightness(struct panel_bl_device *, int, int); -int get_actual_brightness_index(struct panel_bl_device *, int); +int get_actual_brightness(struct panel_bl_device *panel_bl, int brightness); +int get_subdev_actual_brightness(struct panel_bl_device *panel_bl, int id, int brightness); +int get_actual_brightness_index(struct panel_bl_device *panel_bl, int brightness); int get_subdev_actual_brightness_index(struct panel_bl_device *panel_bl, int id, int brightness); -int get_actual_brightness_interpolation(struct panel_bl_device *, int); -int get_subdev_actual_brightness_interpolation(struct panel_bl_device *, int, int); -int panel_bl_get_acl_pwrsave(struct panel_bl_device *); -int panel_bl_get_acl_opr(struct panel_bl_device *); +int get_actual_brightness_interpolation(struct panel_bl_device *panel_bl, int brightness); +int get_subdev_actual_brightness_interpolation(struct panel_bl_device *panel_bl, int id, int brightness); +int panel_bl_get_acl_pwrsave(struct panel_bl_device *panel_bl); +int panel_bl_get_acl_opr(struct panel_bl_device *panel_bl); bool is_hbm_brightness(struct panel_bl_device *panel_bl, int brightness); bool is_ext_hbm_brightness(struct panel_bl_device *panel_bl, int brightness); int panel_bl_set_subdev(struct panel_bl_device *panel_bl, int id); @@ -190,12 +181,12 @@ int panel_bl_update_average(struct panel_bl_device *panel_bl, size_t index); int panel_bl_clear_average(struct panel_bl_device *panel_bl, size_t index); int panel_bl_get_average_and_clear(struct panel_bl_device *panel_bl, size_t index); int aor_interpolation(unsigned int *brt_tbl, unsigned int *lum_tbl, - u8(*aor_tbl)[2], int size, int size_ui_lum, u32 vtotal, int brightness); + u8 (*aor_tbl)[2], int size, int size_ui_lum, u32 vtotal, int brightness); int panel_bl_aor_interpolation(struct panel_bl_device *panel_bl, int id, u8(*aor_tbl)[2]); int irc_interpolation(unsigned int *brt_tbl, unsigned int *lum_tbl, - u8(*irc_tbl)[MAX_IRC_PARAM], int size, int size_ui_lum, + u8 (*irc_tbl)[MAX_IRC_PARAM], int size, int size_ui_lum, u8 *dst, int brightness); int panel_bl_irc_interpolation(struct panel_bl_device *panel_bl, int id, - u8(*irc_tbl)[MAX_IRC_PARAM], u8 *dst); + u8 (*irc_tbl)[MAX_IRC_PARAM], u8 *dst); #endif /* __PANEL_BL_H__ */ diff --git a/drivers/video/fbdev/exynos/panel/panel_dimming.h b/drivers/video/fbdev/exynos/panel/panel_dimming.h index aedbcb590481..90d61a0b54ef 100644 --- a/drivers/video/fbdev/exynos/panel/panel_dimming.h +++ b/drivers/video/fbdev/exynos/panel/panel_dimming.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/panel_dimming.h - * - * Header file for Samsung AID Dimming Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify diff --git a/drivers/video/fbdev/exynos/panel/panel_drv.c b/drivers/video/fbdev/exynos/panel/panel_drv.c index 0921c5b51441..bfe16e55a9b8 100644 --- a/drivers/video/fbdev/exynos/panel/panel_drv.c +++ b/drivers/video/fbdev/exynos/panel/panel_drv.c @@ -1,8 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * http://www.samsung.com/ - * - * Samsung's Panel Driver + * Copyright (c) Samsung Electronics Co., Ltd. * Author: Minwoo Kim * * This program is free software; you can redistribute it and/or modify @@ -61,7 +59,7 @@ static char *panel_state_names[] = { "LPM", /* LPM */ }; -static int boot_panel_id = 0; +static int boot_panel_id; int panel_log_level = 6; #ifdef CONFIG_SUPPORT_PANEL_SWAP static int connect_panel = PANEL_CONNECT; @@ -99,7 +97,6 @@ int get_lcd_info(char *arg) else return -EINVAL; } - EXPORT_SYMBOL(get_lcd_info); void clear_disp_det_pend(struct panel_device *panel) @@ -112,8 +109,6 @@ void clear_disp_det_pend(struct panel_device *panel) pend_disp_det = pend_disp_det & ~(pad->pend_bit_disp_det); writel(pend_disp_det, pad->pend_reg_disp_det); } - - return; } #define SSD_CURRENT_DOZE 8000 @@ -153,9 +148,9 @@ int __set_panel_power(struct panel_device *panel, int power) } } #ifndef CONFIG_OLD_DISP_TIMING - usleep_range(10000, 10000); + usleep_range(10000, 10000 + 10); gpio_direction_output(pad->gpio_reset, 1); - usleep_range(5000, 5000); + usleep_range(5000, 5000 + 10); #endif } else { gpio_direction_output(pad->gpio_reset, 0); @@ -188,9 +183,9 @@ int __panel_seq_display_on(struct panel_device *panel) int ret = 0; ret = panel_do_seqtbl_by_index(panel, PANEL_DISPLAY_ON_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s, failed to write init seqtbl\n", __func__); - } + return ret; } @@ -200,13 +195,13 @@ int __panel_seq_display_off(struct panel_device *panel) int ret; ret = panel_do_seqtbl_by_index(panel, PANEL_DISPLAY_OFF_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s, failed to write init seqtbl\n", __func__); - } + return ret; } -#define PANEL_DISP_DET_HIGH 1 +#define PANEL_DISP_DET_HIGH 1 #define PANEL_DISP_DET_LOW 0 static int __panel_seq_res_init(struct panel_device *panel) @@ -267,7 +262,7 @@ static int __panel_seq_init(struct panel_device *panel) check_disp_det: if (gpio_get_value(disp_det) == PANEL_DISP_DET_LOW) { - usleep_range(100, 100); + usleep_range(100, 100 + 10); if (retry--) goto check_disp_det; goto do_exit; @@ -399,7 +394,7 @@ static void __delay_normal_alpm(struct panel_device *panel) goto exit_delay; delaycmd = (struct delayinfo *)seqtbl->cmdtbl[0]; - if(delaycmd == NULL) { + if (delaycmd == NULL) { panel_info("PANEL:INFO:%s: no delay\n", __func__); goto exit_delay; } @@ -414,7 +409,7 @@ static void __delay_normal_alpm(struct panel_device *panel) goto exit_delay; delay = delaycmd->usec - gap; - usleep_range(delay, delay); + usleep_range(delay, delay + 10); } panel_info("PANEL:INFO:%stotal elapsed time : %d\n", __func__, (int)ktime_to_us(ktime_sub(ktime_get(), panel->ktime_panel_on))); @@ -503,27 +498,25 @@ static int __panel_seq_active_clock(struct panel_device *panel, int send_img) if (act_info->update_img == IMG_UPDATE_NEED) { ret = panel_do_seqtbl_by_index(panel, PANEL_ACTIVE_CLK_IMG_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s, failed to write init seqtbl\n", __func__); - } + act_info->update_img = IMG_UPDATE_DONE; } } usleep_range(5, 5); ret = panel_do_seqtbl_by_index(panel, PANEL_ACTIVE_CLK_CTRL_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s, failed to write init seqtbl\n", __func__); - } } if (blink_info->en) { panel_dbg("PANEL:DBG:%s:active blink was enabed\n", __func__); ret = panel_do_seqtbl_by_index(panel, PANEL_ACTIVE_CLK_CTRL_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s, failed to write init seqtbl\n", __func__); - } } return ret; } @@ -534,9 +527,8 @@ static int __panel_seq_dump(struct panel_device *panel) int ret; ret = panel_do_seqtbl_by_index(panel, PANEL_DUMP_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s, failed to write dump seqtbl\n", __func__); - } return ret; } @@ -643,7 +635,7 @@ static struct common_panel_info *panel_detect(struct panel_device *panel) panel_data = &panel->panel_data; memset(id, 0, sizeof(id)); - ret = read_panel_id(panel, id); + ret = read_panel_id(panel, id); if (unlikely(ret < 0)) { panel_err("%s, failed to read id(ret %d)\n", __func__, ret); detect = false; @@ -996,9 +988,10 @@ int panel_probe(struct panel_device *panel) } #ifdef CONFIG_EXYNOS_DECON_LCD_SPI - /* TODO : move to parse dt function - 1. get panel_spi device node. - 2. get spi_device of node + /* + * TODO : move to parse dt function + * 1. get panel_spi device node. + * 2. get spi_device of node */ panel->spi = of_find_panel_spi_by_node(NULL); if (!panel->spi) @@ -1311,7 +1304,7 @@ retry_sleep_out: if (ret) { if (--retry >= 0 && ret == -EAGAIN) { panel_power_off(panel); - usleep_range(100000, 100000); + usleep_range(100000, 100000 + 10); goto retry_sleep_out; } else { #ifdef CONFIG_SUPPORT_PANEL_SWAP @@ -1548,9 +1541,8 @@ int panel_set_dsu(struct panel_device *panel, struct dsu_info *dsu) lcd_info->dsc_slice_h = dt_lcd_mres->res_info[actual_mode].dsc_height; ret = panel_do_seqtbl_by_index(panel, PANEL_DSU_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s, failed to write init seqtbl\n", __func__); - } return 0; @@ -1634,9 +1626,10 @@ static int panel_ioctl_set_power(struct panel_device *panel, void *arg) static int panel_ioctl_set_reset(struct panel_device *panel) { struct panel_pad *pad = &panel->pad; - usleep_range(10000, 10000); + + usleep_range(10000, 10000 + 10); gpio_direction_output(pad->gpio_reset, 1); - usleep_range(5000, 5000); + usleep_range(5000, 5000 + 10); pr_info("%s reset panel (%s)\n", __func__, gpio_get_value(pad->gpio_reset) ? "high" : "low"); return 0; @@ -1718,7 +1711,7 @@ static int panel_set_finger_layer(struct panel_device *panel, void *arg) mutex_lock(&panel_bl->lock); mutex_lock(&panel->op_lock); - if(*cmd == 0) { + if (*cmd == 0) { panel_info("PANEL:INFO:%s:disable finger layer\n", __func__); panel_bl->finger_layer = false; panel_bl->subdev[PANEL_BL_SUBDEV_TYPE_DISP].brightness = panel_bl->saved_br; @@ -1730,9 +1723,8 @@ static int panel_set_finger_layer(struct panel_device *panel, void *arg) } ret = panel_bl_set_brightness(panel_bl, PANEL_BL_SUBDEV_TYPE_DISP, 1); - if (ret) { + if (ret) pr_err("%s : fail to set brightness\n", __func__); - } panel_info("- %s\n", __func__); @@ -1749,100 +1741,99 @@ static long panel_core_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg mutex_lock(&panel->io_lock); - switch(cmd) { - case PANEL_IOC_DSIM_PROBE: - ret = panel_ioctl_dsim_probe(sd, arg); - break; - case PANEL_IOC_DSIM_PUT_MIPI_OPS: - ret = panel_ioctl_dsim_ops(sd); - break; + switch (cmd) { + case PANEL_IOC_DSIM_PROBE: + ret = panel_ioctl_dsim_probe(sd, arg); + break; + case PANEL_IOC_DSIM_PUT_MIPI_OPS: + ret = panel_ioctl_dsim_ops(sd); + break; - case PANEL_IOC_REG_RESET_CB: - panel_info("PANEL:INFO:%s:PANEL_IOC_REG_PANEL_RESET\n", __func__); - ret = panel_set_error_cb(sd); - break; + case PANEL_IOC_REG_RESET_CB: + panel_info("PANEL:INFO:%s:PANEL_IOC_REG_PANEL_RESET\n", __func__); + ret = panel_set_error_cb(sd); + break; - case PANEL_IOC_GET_PANEL_STATE: - panel_info("PANEL:INFO:%s:PANEL_IOC_GET_PANEL_STATE\n", __func__); - v4l2_set_subdev_hostdata(sd, &panel->state); - break; + case PANEL_IOC_GET_PANEL_STATE: + panel_info("PANEL:INFO:%s:PANEL_IOC_GET_PANEL_STATE\n", __func__); + v4l2_set_subdev_hostdata(sd, &panel->state); + break; - case PANEL_IOC_PANEL_PROBE: - panel_info("PANEL:INFO:%s:PANEL_IOC_PANEL_PROBE\n", __func__); - ret = panel_probe(panel); - break; + case PANEL_IOC_PANEL_PROBE: + panel_info("PANEL:INFO:%s:PANEL_IOC_PANEL_PROBE\n", __func__); + ret = panel_probe(panel); + break; - case PANEL_IOC_SLEEP_IN: - panel_info("PANEL:INFO:%s:PANEL_IOC_SLEEP_IN\n", __func__); - ret = panel_sleep_in(panel); - break; + case PANEL_IOC_SLEEP_IN: + panel_info("PANEL:INFO:%s:PANEL_IOC_SLEEP_IN\n", __func__); + ret = panel_sleep_in(panel); + break; - case PANEL_IOC_SLEEP_OUT: - panel_info("PANEL:INFO:%s:PANEL_IOC_SLEEP_OUT\n", __func__); - ret = panel_sleep_out(panel); - break; + case PANEL_IOC_SLEEP_OUT: + panel_info("PANEL:INFO:%s:PANEL_IOC_SLEEP_OUT\n", __func__); + ret = panel_sleep_out(panel); + break; - case PANEL_IOC_SET_POWER: - panel_info("PANEL:INFO:%s:PANEL_IOC_SET_POWER\n", __func__); - ret = panel_ioctl_set_power(panel, arg); - break; - case PANEL_IOC_PANEL_RESET: - panel_info("PANEL:INFO:%s:PANEL_IOC_PANEL_RESET\n", __func__); - ret = panel_ioctl_set_reset(panel); - break; - case PANEL_IOC_PANEL_DUMP : - panel_info("PANEL:INFO:%s:PANEL_IOC_PANEL_DUMP\n", __func__); - ret = panel_debug_dump(panel); - break; + case PANEL_IOC_SET_POWER: + panel_info("PANEL:INFO:%s:PANEL_IOC_SET_POWER\n", __func__); + ret = panel_ioctl_set_power(panel, arg); + break; + case PANEL_IOC_PANEL_RESET: + panel_info("PANEL:INFO:%s:PANEL_IOC_PANEL_RESET\n", __func__); + ret = panel_ioctl_set_reset(panel); + break; + case PANEL_IOC_PANEL_DUMP: + panel_info("PANEL:INFO:%s:PANEL_IOC_PANEL_DUMP\n", __func__); + ret = panel_debug_dump(panel); + break; #ifdef CONFIG_SUPPORT_DOZE - case PANEL_IOC_DOZE: - case PANEL_IOC_DOZE_SUSPEND: - panel_info("PANEL:INFO:%s:PANEL_IOC_%s\n", __func__, - cmd == PANEL_IOC_DOZE ? "DOZE" : "DOZE_SUSPEND"); - ret = panel_doze(panel, cmd); - mdnie_update(&panel->mdnie); - break; + case PANEL_IOC_DOZE: + case PANEL_IOC_DOZE_SUSPEND: + panel_info("PANEL:INFO:%s:PANEL_IOC_%s\n", __func__, + cmd == PANEL_IOC_DOZE ? "DOZE" : "DOZE_SUSPEND"); + ret = panel_doze(panel, cmd); + mdnie_update(&panel->mdnie); + break; #endif #ifdef CONFIG_SUPPORT_DSU - case PANEL_IOC_SET_DSU: - panel_info("PANEL:INFO:%s:PANEL_IOC_SET_DSU\n", __func__); - ret = panel_set_dsu(panel, arg); - break; + case PANEL_IOC_SET_DSU: + panel_info("PANEL:INFO:%s:PANEL_IOC_SET_DSU\n", __func__); + ret = panel_set_dsu(panel, arg); + break; #endif - case PANEL_IOC_DISP_ON: - panel_info("PANEL:INFO:%s:PANEL_IOC_DISP_ON\n", __func__); - ret = panel_ioctl_display_on(panel, arg); - break; + case PANEL_IOC_DISP_ON: + panel_info("PANEL:INFO:%s:PANEL_IOC_DISP_ON\n", __func__); + ret = panel_ioctl_display_on(panel, arg); + break; - case PANEL_IOC_EVT_FRAME_DONE: - if (panel->state.cur_state != PANEL_STATE_NORMAL && - panel->state.cur_state != PANEL_STATE_ALPM) { - panel_warn("PANEL:WARN:%s:FRAME_DONE (panel_state:%s, disp_on:%s)\n", - __func__, panel_state_names[panel->state.cur_state], - panel->state.disp_on ? "on" : "off"); - break; - } + case PANEL_IOC_EVT_FRAME_DONE: + if (panel->state.cur_state != PANEL_STATE_NORMAL && + panel->state.cur_state != PANEL_STATE_ALPM) { + panel_warn("PANEL:WARN:%s:FRAME_DONE (panel_state:%s, disp_on:%s)\n", + __func__, panel_state_names[panel->state.cur_state], + panel->state.disp_on ? "on" : "off"); + break; + } - if (panel->state.disp_on == PANEL_DISPLAY_OFF) { - panel_info("PANEL:INFO:%s:FRAME_DONE (panel_state:%s, display on)\n", - __func__, panel_state_names[panel->state.cur_state]); - ret = panel_display_on(panel); - } - copr_update_start(&panel->copr, 3); - break; - case PANEL_IOC_EVT_VSYNC: - //panel_dbg("PANEL:INFO:%s:PANEL_IOC_EVT_VSYNC\n", __func__); - break; + if (panel->state.disp_on == PANEL_DISPLAY_OFF) { + panel_info("PANEL:INFO:%s:FRAME_DONE (panel_state:%s, display on)\n", + __func__, panel_state_names[panel->state.cur_state]); + ret = panel_display_on(panel); + } + copr_update_start(&panel->copr, 3); + break; + case PANEL_IOC_EVT_VSYNC: + //panel_dbg("PANEL:INFO:%s:PANEL_IOC_EVT_VSYNC\n", __func__); + break; #ifdef CONFIG_SUPPORT_INDISPLAY - case PANEL_IOC_SET_FINGER_SET: - ret = panel_set_finger_layer(panel, arg); - break; + case PANEL_IOC_SET_FINGER_SET: + ret = panel_set_finger_layer(panel, arg); + break; #endif - default: - panel_err("PANEL:ERR:%s:undefined command\n", __func__); - ret = -EINVAL; - break; - + default: + panel_err("PANEL:ERR:%s:undefined command\n", __func__); + ret = -EINVAL; + break; } if (ret) { @@ -1949,9 +1940,10 @@ static int panel_drv_set_gpios(struct panel_device *panel) return 0; } -static inline int panel_get_gpio(struct device *dev ,char *name) +static inline int panel_get_gpio(struct device *dev, char *name) { int ret = 0; + ret = of_gpio_named_count(dev->of_node, name); if (ret != 1) { panel_err("PANEL:ERR:%s:can't find gpio named : %s\n", @@ -1982,7 +1974,7 @@ static int panel_parse_gpio(struct panel_device *panel) for (i = 0; i < PANEL_GPIO_MAX; i++) { ret = panel_get_gpio(dev, gpio_lists[i]); if (ret <= 0) - ret = 0; + ret = 0; gpio_result[i] = ret; } pad->gpio_reset = gpio_result[PANEL_GPIO_RESET]; @@ -1997,8 +1989,7 @@ static int panel_parse_gpio(struct panel_device *panel) pend_disp_det = of_get_child_by_name(dev->of_node, "pend,disp-det"); if (!pend_disp_det) { panel_warn("PANEL:WARN:%s:No DT node for te_eint\n", __func__); - } - else { + } else { pad->pend_reg_disp_det = of_iomap(pend_disp_det, 0); if (!pad->pend_reg_disp_det) { panel_err("PANEL:ERR:%s:failed to get disp pend reg\n", __func__); @@ -2006,7 +1997,7 @@ static int panel_parse_gpio(struct panel_device *panel) } of_property_read_u32(pend_disp_det, "pend-bit", &pad->pend_bit_disp_det); - panel_info("PANEL:INFO:%s:pend bit disp_det %x\n",\ + panel_info("PANEL:INFO:%s:pend bit disp_det %x\n", __func__, pad->pend_bit_disp_det); panel_info("PANEL:INFO:%s:disp_det pend : %x\n", __func__, readl(pad->pend_reg_disp_det)); @@ -2116,9 +2107,8 @@ int panel_register_isr(struct panel_device *panel) int ret = 0; struct panel_pad *pad = &panel->pad; - if (panel->state.connect_panel == PANEL_DISCONNECT) { + if (panel->state.connect_panel == PANEL_DISCONNECT) return 0; - } clear_disp_det_pend(panel); if (pad->gpio_disp_det) { @@ -2333,8 +2323,8 @@ static int panel_parse_panel_lookup(struct panel_device *panel) sz_lut = of_property_count_u32_elems(np, "panel-lut"); if ((sz_lut % 3) || (sz_lut >= MAX_PANEL_LUT)) { - panel_warn("PANEL:WARN:%s:sz_lut(%d) should be multiple of 3" - " and less than MAX_PANEL_LUT\n", __func__, sz_lut); + panel_warn("PANEL:WARN:%s:sz_lut(%d) should be multiple of 3 and less than MAX_PANEL_LUT\n", + __func__, sz_lut); return -EINVAL; } @@ -2423,8 +2413,6 @@ void disp_det_handler(struct work_struct *data) default: break; } - - return; } static int panel_fb_notifier(struct notifier_block *self, unsigned long event, void *data) @@ -2434,15 +2422,14 @@ static int panel_fb_notifier(struct notifier_block *self, unsigned long event, v struct fb_event *fb_event = data; switch (event) { - case FB_EARLY_EVENT_BLANK: - case FB_EVENT_BLANK: - break; - case FB_EVENT_FB_REGISTERED: - panel_dbg("PANEL:INFO:%s:FB Registeted\n", __func__); - return 0; - default: - return 0; - + case FB_EARLY_EVENT_BLANK: + case FB_EVENT_BLANK: + break; + case FB_EVENT_FB_REGISTERED: + panel_dbg("PANEL:INFO:%s:FB Registeted\n", __func__); + return 0; + default: + return 0; } panel = container_of(self, struct panel_device, fb_notif); @@ -2453,19 +2440,19 @@ static int panel_fb_notifier(struct notifier_block *self, unsigned long event, v } switch (*blank) { - case FB_BLANK_POWERDOWN: - case FB_BLANK_NORMAL: - if (event == FB_EARLY_EVENT_BLANK) - panel_dbg("PANEL:INFO:%s:EARLY BLANK POWER DOWN\n", __func__); - else - panel_dbg("PANEL:INFO:%s:BLANK POWER DOWN\n", __func__); - break; - case FB_BLANK_UNBLANK: - if (event == FB_EARLY_EVENT_BLANK) - panel_dbg("PANEL:INFO:%s:EARLY UNBLANK\n", __func__); - else - panel_dbg("PANEL:INFO:%s:UNBLANK\n", __func__); - break; + case FB_BLANK_POWERDOWN: + case FB_BLANK_NORMAL: + if (event == FB_EARLY_EVENT_BLANK) + panel_dbg("PANEL:INFO:%s:EARLY BLANK POWER DOWN\n", __func__); + else + panel_dbg("PANEL:INFO:%s:BLANK POWER DOWN\n", __func__); + break; + case FB_BLANK_UNBLANK: + if (event == FB_EARLY_EVENT_BLANK) + panel_dbg("PANEL:INFO:%s:EARLY UNBLANK\n", __func__); + else + panel_dbg("PANEL:INFO:%s:UNBLANK\n", __func__); + break; } return 0; } @@ -2614,11 +2601,7 @@ static int panel_drv_probe(struct platform_device *pdev) #ifdef CONFIG_SUPPORT_HMD panel->state.hmd_on = PANEL_HMD_OFF; #endif -#if 0 -#ifdef CONFIG_SUPPORT_DSU - panel->lcd_info.mres_mode = DSU_MODE_1; -#endif -#endif + #ifdef CONFIG_ACTIVE_CLOCK panel->act_clk_dev.act_info.update_img = IMG_UPDATE_NEED; #endif @@ -2708,7 +2691,7 @@ static int __init get_boot_panel_id(char *arg) early_param("lcdtype", get_boot_panel_id); -static int __init panel_drv_init (void) +static int __init panel_drv_init(void) { return platform_driver_register(&panel_driver); } diff --git a/drivers/video/fbdev/exynos/panel/panel_drv.h b/drivers/video/fbdev/exynos/panel/panel_drv.h index 03acd1dcb7a7..f24b6eed42bc 100644 --- a/drivers/video/fbdev/exynos/panel/panel_drv.h +++ b/drivers/video/fbdev/exynos/panel/panel_drv.h @@ -1,8 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * http://www.samsung.com/ - * - * Samsung's Panel Driver + * Copyright (c) Samsung Electronics Co., Ltd. * Author: Minwoo Kim * * This program is free software; you can redistribute it and/or modify @@ -102,8 +100,8 @@ enum panel_gpio_lists { PANEL_GPIO_MAX, }; -#define GPIO_NAME_RESET "gpio,lcd-reset" -#define GPIO_NAME_DISP_DET "gpio,disp-det" +#define GPIO_NAME_RESET "gpio,lcd-reset" +#define GPIO_NAME_DISP_DET "gpio,disp-det" #define GPIO_NAME_PCD "gpio,pcd" #define GPIO_NAME_ERR_FG "gpio,err_fg" @@ -127,11 +125,11 @@ struct mipi_drv_ops { int (*read)(u32 id, u8 addr, u8 ofs, u8 *buf, int size); int (*write)(u32 id, u8 cmd_id, const u8 *cmd, u8 ofs, int size); enum dsim_state(*get_state)(u32 id); - void (*parse_dt)(struct device_node *, struct decon_lcd *); + void (*parse_dt)(struct device_node *node, struct decon_lcd *lcd_info); }; -#define PANEL_INIT_KERNEL 0 -#define PANEL_INIT_BOOT 1 +#define PANEL_INIT_KERNEL 0 +#define PANEL_INIT_BOOT 1 #define PANEL_DISCONNECT 0 #define PANEL_CONNECT 1 diff --git a/drivers/video/fbdev/exynos/panel/panel_poc.c b/drivers/video/fbdev/exynos/panel/panel_poc.c index 3d38fdfc7a4f..13bffb920f67 100644 --- a/drivers/video/fbdev/exynos/panel/panel_poc.c +++ b/drivers/video/fbdev/exynos/panel/panel_poc.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/panel_poc.c - * - * Samsung Common LCD Driver. - * - * Copyright (c) 2017 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify @@ -302,12 +299,10 @@ int poc_write_data(struct panel_device *panel, u8 *data, u32 addr, u32 size) } poc_info->wdata = data[i]; - if (i == 0 || i == (size - 1) || (poc_addr & 0xFF) == 0 || (poc_addr & 0xFF) == 0xFF) { + if (i == 0 || i == (size - 1) || (poc_addr & 0xFF) == 0 || (poc_addr & 0xFF) == 0xFF) ret = panel_do_poc_seqtbl_by_index_nolock(poc_dev, POC_WRITE_DAT_STT_END_SEQ); - } - else { + else ret = panel_do_poc_seqtbl_by_index_nolock(poc_dev, POC_WRITE_DAT_SEQ); - } if (unlikely(ret < 0)) { pr_err("%s, failed to write poc-wr-img seq\n", __func__); @@ -718,7 +713,7 @@ int set_panel_poc(struct panel_poc_device *poc_dev, u32 cmd, const char *cmd_ext pr_err("%s, failed to read img partition\n", __func__); return ret; } - + ret = poc_data_backup(panel, poc_rd_img + POC_IMG_ADDR, POC_IMG_SIZE, POC_IMG_PATH); if (unlikely(ret < 0)) { pr_err("%s, failed to backup poc img\n", __func__); @@ -968,7 +963,7 @@ static ssize_t panel_poc_read(struct file *file, char __user *buf, size_t count, partition_size = get_poc_partition_size(poc_dev, POC_IMG_PARTITION); if (partition_size < 0) return -EINVAL; - + if (unlikely(*ppos < 0 || *ppos >= partition_size)) { panel_err("POC:ERR:%s: invalid read pos %d\n", __func__, (int)*ppos); @@ -1029,7 +1024,7 @@ static ssize_t panel_poc_write(struct file *file, const char __user *buf, partition_size = get_poc_partition_size(poc_dev, POC_IMG_PARTITION); if (partition_size < 0) return -EINVAL; - + if (unlikely(*ppos < 0 || *ppos >= partition_size)) { panel_err("POC:ERR:%s: invalid write size pos %d, size %d\n", __func__, (int)*ppos, (int)count); diff --git a/drivers/video/fbdev/exynos/panel/panel_poc.h b/drivers/video/fbdev/exynos/panel/panel_poc.h index ce66ef7b745b..76f47dd31aec 100644 --- a/drivers/video/fbdev/exynos/panel/panel_poc.h +++ b/drivers/video/fbdev/exynos/panel/panel_poc.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/panel_poc.h - * - * Samsung Common LCD Driver. - * - * Copyright (c) 2017 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify diff --git a/drivers/video/fbdev/exynos/panel/s6e3ha8/s6e3ha8_aod_panel.h b/drivers/video/fbdev/exynos/panel/s6e3ha8/s6e3ha8_aod_panel.h index 27f1480f3095..e7f6311e5db7 100644 --- a/drivers/video/fbdev/exynos/panel/s6e3ha8/s6e3ha8_aod_panel.h +++ b/drivers/video/fbdev/exynos/panel/s6e3ha8/s6e3ha8_aod_panel.h @@ -454,6 +454,9 @@ static DEFINE_STATIC_PACKET(s6e3ha8_aod_init_side_ram, DSI_PKT_TYPE_WR, S6E3HA8_ // --------------------- Image for analog clock --------------------- + +static DEFINE_PANEL_MDELAY(s6e3ha8_aod_init_side_ram_delay, 34); + static char S6E3HA8_AOD_ANALOG_SD_PATH[] = { 0x75, 0x01, @@ -464,6 +467,7 @@ static DEFINE_STATIC_PACKET(s6e3ha8_aod_analog_img, DSI_PKT_TYPE_WR_SR, STAR_ANA static void *s6e3ha8_aod_analog_img_cmdtbl[] = { &KEYINFO(s6e3ha8_aod_level2_key_enable), &PKTINFO(s6e3ha8_aod_init_side_ram), + &DLYINFO(s6e3ha8_aod_init_side_ram_delay), &PKTINFO(s6e3ha8_aod_analog_sd_path), &PKTINFO(s6e3ha8_aod_analog_img), &KEYINFO(s6e3ha8_aod_level2_key_disable), @@ -838,7 +842,7 @@ static struct seqinfo s6e3ha8_aod_seqtbl[MAX_AOD_SEQ] = { [ICON_GRID_OFF_SEQ] = SEQINFO_INIT("icon_grid_off", s6e3ha8_aod_icon_grid_off_cmdtbl), [SET_TIME_SEQ] = SEQINFO_INIT("SET_TIME", s6e3ha8_aod_set_time_cmdtbl), #ifdef SUPPORT_NORMAL_SELFMOVE - [ENABLE_SELFMOVE_SEQ] = SEQINFO_INIT( "enable_self_move", s6e3ha8_enable_selfmove), + [ENABLE_SELFMOVE_SEQ] = SEQINFO_INIT("enable_self_move", s6e3ha8_enable_selfmove), [DISABLE_SELFMOVE_SEQ] = SEQINFO_INIT("disable_self", s6e3ha8_disable_selfmove), #endif }; diff --git a/drivers/video/fbdev/exynos/panel/spi.c b/drivers/video/fbdev/exynos/panel/spi.c index 562b9d6c64ae..3def53a82cda 100644 --- a/drivers/video/fbdev/exynos/panel/spi.c +++ b/drivers/video/fbdev/exynos/panel/spi.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/spi.c - * - * Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * * JiHoon Kim * Gwanghui Lee @@ -12,13 +9,14 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ + #include #include #include #include #include -#if defined (CONFIG_OF) +#if defined(CONFIG_OF) #include #include #endif /* CONFIG_OF */ diff --git a/drivers/video/fbdev/exynos/panel/spi.h b/drivers/video/fbdev/exynos/panel/spi.h index 4ceec227ea61..353ae7c51476 100644 --- a/drivers/video/fbdev/exynos/panel/spi.h +++ b/drivers/video/fbdev/exynos/panel/spi.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/spi.h - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * * JiHoon Kim * Gwanghui Lee @@ -12,13 +9,14 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ + #ifndef __PANEL_SPI_H__ #define __PANEL_SPI_H__ #include #include -int panel_spi_read_data(struct spi_device *, u8 , u8 *, int); -int panel_spi_write_data(struct spi_device *, const u8 *, int); +int panel_spi_read_data(struct spi_device *spi, u8 addr, u8 *buf, int size); +int panel_spi_write_data(struct spi_device *spi, const u8 *cmd, int size); #ifdef CONFIG_OF struct spi_device *of_find_panel_spi_by_node(struct device_node *node); #else diff --git a/drivers/video/fbdev/exynos/panel/sysfs.c b/drivers/video/fbdev/exynos/panel/sysfs.c index 6240ee198fce..267ddf92d076 100644 --- a/drivers/video/fbdev/exynos/panel/sysfs.c +++ b/drivers/video/fbdev/exynos/panel/sysfs.c @@ -1,15 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/sysfs.c - * - * Samsung MIPI-DSI Panel SYSFS driver. - * - * Copyright (c) 2016 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * JiHoon Kim * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. -*/ + */ #include #include @@ -55,7 +52,7 @@ static ssize_t fingerprint_store(struct device *dev, { int rc; - rc = kstrtouint(buf, (unsigned int)0, &fingerprint_value); + rc = kstrtouint(buf, 0, &fingerprint_value); if (rc < 0) return rc; @@ -148,7 +145,7 @@ static ssize_t cell_id_show(struct device *dev, resource_copy_by_name(panel_data, coordinate, "coordinate"); snprintf(buf, PAGE_SIZE, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n", - date[0] , date[1], date[2], date[3], date[4], date[5], date[6], + date[0], date[1], date[2], date[3], date[4], date[5], date[6], coordinate[0], coordinate[1], coordinate[2], coordinate[3]); return strlen(buf); @@ -269,6 +266,7 @@ static ssize_t brightness_table_show(struct device *dev, char recv_buf[50] = {0, }; int recv_buf_len = ARRAY_SIZE(recv_buf); int max_brightness = 0; + if (panel == NULL) { panel_err("PANEL:ERR:%s:panel is null\n", __func__); return -EINVAL; @@ -295,7 +293,7 @@ static ssize_t brightness_table_show(struct device *dev, } prev_actual_brightness = actual_brightness; prev_br = br; - if (PAGE_SIZE <= len) { + if (len >= PAGE_SIZE) { pr_info("%s print buffer overflow %d\n", __func__, len); len = PAGE_SIZE - 1; goto exit; @@ -350,7 +348,7 @@ static ssize_t adaptive_control_store(struct device *dev, return -EINVAL; } - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -412,7 +410,7 @@ static ssize_t siop_enable_store(struct device *dev, return -EINVAL; } - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -536,7 +534,7 @@ static ssize_t read_mtp_store(struct device *dev, pr_info("READ_Reg addr: %02x, pos : %d len : %d\n", readreg, readpos, readlen); for (i = 0; i < readlen; i++) - pr_info("READ_Reg %dth : %02x \n", i + 1, readbuf[i]); + pr_info("READ_Reg %dth : %02x\n", i + 1, readbuf[i]); mutex_unlock(&sysfs_lock); return size; @@ -580,7 +578,7 @@ static ssize_t mcd_mode_store(struct device *dev, } panel_data = &panel->panel_data; - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -614,7 +612,7 @@ static void print_mcd_resistance(u8 *mcd_nok, int size) if (!(code % 0x10)) len += snprintf(buf + len, sizeof(buf) - len, "[%02X] ", code); len += snprintf(buf + len, sizeof(buf) - len, "%02X%s", - mcd_nok[code], (!((code + 1) % 0x10)) ? "\n" : " "); + mcd_nok[code], (!((code + 1) % 0x10)) ? "\n" : " "); } pr_info("%s\n", buf); } @@ -739,7 +737,7 @@ static ssize_t mcd_resistance_store(struct device *dev, return -EINVAL; } panel_data = &panel->panel_data; - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -881,7 +879,7 @@ static ssize_t mst_store(struct device *dev, } panel_data = &panel->panel_data; - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -911,10 +909,9 @@ u8 checksum[4] = { 0x12, 0x34, 0x56, 0x78 }; static bool gct_chksum_is_valid(struct panel_device *panel) { int i; - struct panel_info *panel_data; - panel_data = &panel->panel_data; + struct panel_info *panel_data = &panel->panel_data; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) if (checksum[i] != panel_data->props.gct_valid_chksum) return false; return true; @@ -986,7 +983,7 @@ static ssize_t gct_store(struct device *dev, panel_data = &panel->panel_data; - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -1147,7 +1144,7 @@ static ssize_t xtalk_mode_store(struct device *dev, return -EINVAL; } - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -1302,9 +1299,8 @@ static ssize_t poc_mca_show(struct device *dev, len = get_resource_size_by_name(&panel->panel_data, "poc_mca_chksum"); buf[0] = '\0'; - for (i = 0; i < len; i++) { + for (i = 0; i < len; i++) snprintf(buf, PAGE_SIZE, "%s%02X ", buf, chksum_data[i]); - } dev_info(dev, "%s poc_mca_checksum: %s\n", __func__, buf); @@ -1349,9 +1345,8 @@ static ssize_t gamma_flash_show(struct device *dev, else ret = panel->dim_flash_work.ret; - pr_info("%s result %d, dim chksum(calc:%04X read:%04X), " - "mtp chksum(reg:%04X, calc:%04X, read:%04X)\n", __func__, - ret, result->dim_chksum_by_calc, result->dim_chksum_by_read, + pr_info("%s result %d, dim chksum(calc:%04X read:%04X), mtp chksum(reg:%04X, calc:%04X, read:%04X)\n", + __func__, ret, result->dim_chksum_by_calc, result->dim_chksum_by_read, calc_checksum_16bit(result->mtp_reg, sizeof(result->mtp_reg)), result->mtp_chksum_by_calc, result->mtp_chksum_by_read); @@ -1372,7 +1367,7 @@ static ssize_t gamma_flash_store(struct device *dev, if (!IS_PANEL_ACTIVE(panel)) return -ENODEV; - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -1425,7 +1420,7 @@ static ssize_t grayspot_store(struct device *dev, } panel_data = &panel->panel_data; - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -1489,7 +1484,7 @@ static ssize_t hmt_bright_store(struct device *dev, } panel_bl = &panel->panel_bl; - rc = kstrtouint(buf, (unsigned int)0, &value); + rc = kstrtouint(buf, 0, &value); if (rc < 0) return rc; @@ -1499,9 +1494,8 @@ static ssize_t hmt_bright_store(struct device *dev, mutex_lock(&panel_bl->lock); mutex_lock(&panel->op_lock); - if (panel_bl->subdev[PANEL_BL_SUBDEV_TYPE_HMD].brightness != BRT(value)) { + if (panel_bl->subdev[PANEL_BL_SUBDEV_TYPE_HMD].brightness != BRT(value)) panel_bl->subdev[PANEL_BL_SUBDEV_TYPE_HMD].brightness = BRT(value); - } if (panel->state.hmd_on != PANEL_HMD_ON) { panel_info("PANEL:WARN:%s: hmd off\n", __func__); @@ -2194,7 +2188,7 @@ static void show_aid_log(struct panel_info *panel_data, int id) len += snprintf(buf + len, sizeof(buf) - len, "| "); for_each_layer(elvss_tbl, layer) for_each_col(elvss_tbl, col) - len += snprintf(buf + len, sizeof(buf) - len, "%02X ", + len += snprintf(buf + len, sizeof(buf) - len, "%02X ", elvss_tbl->arr[maptbl_index(elvss_tbl, layer, i, col)]); } @@ -2270,13 +2264,13 @@ void ccb_set_mode(struct panel_device *panel, u8 ccb, int stepping) dsim_write_hl_data(dsim, ccb_cmd, ARRAY_SIZE(ccb_cmd)); break; case LCD_TYPE_S6E3HA3_WQHD: - if((ccb & 0x0F) == 0x00) { // off - if(stepping) { + if ((ccb & 0x0F) == 0x00) { // off + if (stepping) { ccb_cmd[1] = dsim->priv.current_ccb; - for(secondval = 0x2A; secondval <= 0x3F; secondval += 1) { + for (secondval = 0x2A; secondval <= 0x3F; secondval += 1) { ccb_cmd[2] = secondval; dsim_write_hl_data(dsim, ccb_cmd, ARRAY_SIZE(ccb_cmd)); - msleep(17); + usleep_range(17000, 17000 + 10); } } ccb_cmd[1] = 0x00; @@ -2284,22 +2278,22 @@ void ccb_set_mode(struct panel_device *panel, u8 ccb, int stepping) dsim_write_hl_data(dsim, ccb_cmd, ARRAY_SIZE(ccb_cmd)); } else { // on ccb_cmd[1] = ccb; - if(stepping) { - for(secondval = 0x3F; secondval >= 0x2A; secondval -= 1) { + if (stepping) { + for (secondval = 0x3F; secondval >= 0x2A; secondval -= 1) { ccb_cmd[2] = secondval; dsim_write_hl_data(dsim, ccb_cmd, ARRAY_SIZE(ccb_cmd)); - if(secondval != 0x2A) - msleep(17); + if (secondval != 0x2A) + usleep_range(17000, 17000 + 10); } } else { ccb_cmd[2] = 0x2A; dsim_write_hl_data(dsim, ccb_cmd, ARRAY_SIZE(ccb_cmd)); } } - msleep(17); + usleep_range(17000, 17000 + 10); break; default: - pr_info("%s unknown panel \n", __func__); + pr_info("%s unknown panel\n", __func__); break; } @@ -2350,31 +2344,31 @@ static ssize_t weakness_ccb_store(struct device *dev, set_ccb = ((u8)(serverity) << 4); switch (type) { - case 0: + case 0: + set_ccb = 0; + panel_dbg("%s: disable ccb\n", __func__); + break; + case 1: + set_ccb += 1; + panel_dbg("%s: enable red\n", __func__); + break; + case 2: + set_ccb += 5; + panel_dbg("%s: enable green\n", __func__); + break; + case 3: + if (serverity == 0) { + set_ccb += 9; + panel_dbg("%s: enable blue\n", __func__); + } else { set_ccb = 0; - panel_dbg("%s: disable ccb\n", __func__); - break; - case 1: - set_ccb += 1; - panel_dbg("%s: enable red\n", __func__); - break; - case 2: - set_ccb += 5; - panel_dbg( "%s: enable green\n", __func__); - break; - case 3: - if (serverity == 0) { - set_ccb += 9; - panel_dbg("%s: enable blue\n", __func__); - } else { - set_ccb = 0; - set_ccb += 9; - panel_dbg("%s, serverity is out of range, blue only support 0\n", __func__); - } - break; - default: - set_ccb = 0; - break; + set_ccb += 9; + panel_dbg("%s, serverity is out of range, blue only support 0\n", __func__); + } + break; + default: + set_ccb = 0; + break; } if (panel->current_ccb == set_ccb) { panel_dbg("%s: aleady set same ccb\n", __func__); @@ -2544,8 +2538,7 @@ static ssize_t read_copr_show(struct device *dev, } if (props->version == 2) - panel_info("read_copr : cur_cnt %d, cur_copr %d, avg_copr %d, " - "s_cur_cnt %d, s_avg_copr %d, copr_ready %d, comp_copr %d\n", + panel_info("read_copr : cur_cnt %d, cur_copr %d, avg_copr %d, s_cur_cnt %d, s_avg_copr %d, copr_ready %d, comp_copr %d\n", props->cur_cnt, props->cur_copr, props->avg_copr, props->s_cur_cnt, props->s_avg_copr, props->copr_ready, props->comp_copr); @@ -2618,7 +2611,7 @@ static ssize_t copr_roi_show(struct device *dev, for (c = 0; c < 3; c++) { len += snprintf(buf + len, PAGE_SIZE - len, "%d%s", out[i * 3 + c], - ((i == copr->props.nr_roi -1) && c == 2) ? "\n" : " "); + ((i == copr->props.nr_roi - 1) && c == 2) ? "\n" : " "); } } @@ -2966,9 +2959,8 @@ static ssize_t isc_defect_store(struct device *dev, if (value) { ret = panel_do_seqtbl_by_index_nolock(panel, PANEL_CHECK_ISC_DEFECT_SEQ); - if (unlikely(ret < 0)) { + if (unlikely(ret < 0)) panel_err("PANEL:ERR:%s:failed to write ics defect seq\n", __func__); - } } mutex_unlock(&panel->op_lock); @@ -3034,12 +3026,6 @@ struct device_attribute panel_attrs[] = { __PANEL_ATTR_RW(alpm, 0664), __PANEL_ATTR_RW(lpm_opr, 0664), __PANEL_ATTR_RW(fingerprint, 0644), -#if 0 -#ifdef CONFIG_ACTIVE_CLOCK - __PANEL_ATTR_RW(active_clock, 0644), - __PANEL_ATTR_RW(active_blink, 0644), -#endif -#endif #ifdef CONFIG_SUPPORT_HMD __PANEL_ATTR_RW(hmt_bright, 0664), __PANEL_ATTR_RW(hmt_on, 0664), @@ -3094,16 +3080,16 @@ int panel_sysfs_probe(struct panel_device *panel) else pr_err("success to create /sys/devices/svc svc : 0x%pK\n", svc); } else { - svc = (struct kobject*)svc_sd->priv; + svc = (struct kobject *)svc_sd->priv; pr_info("success to find svc_sd : 0x%pK svc : 0x%pK\n", svc_sd, svc); } if (!IS_ERR_OR_NULL(svc)) { ret = sysfs_create_link(svc, &lcd->dev.kobj, "OCTA"); if (ret) - pr_err("failed to create svc/OCTA/ \n"); + pr_err("failed to create svc/OCTA/\n"); else - pr_info("success to create svc/OCTA/ \n"); + pr_info("success to create svc/OCTA/\n"); } else { pr_err("failed to find svc kobject\n"); } diff --git a/drivers/video/fbdev/exynos/panel/timenval.c b/drivers/video/fbdev/exynos/panel/timenval.c index 6c283f9b6462..d9209676f5ad 100644 --- a/drivers/video/fbdev/exynos/panel/timenval.c +++ b/drivers/video/fbdev/exynos/panel/timenval.c @@ -1,9 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * linux/drivers/video/fbdev/exynos/panel/timenval.c - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2017 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify diff --git a/drivers/video/fbdev/exynos/panel/timenval.h b/drivers/video/fbdev/exynos/panel/timenval.h index 7e43b2b8b66f..dbfecb9c8127 100644 --- a/drivers/video/fbdev/exynos/panel/timenval.h +++ b/drivers/video/fbdev/exynos/panel/timenval.h @@ -1,9 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* - * linux/drivers/video/fbdev/exynos/panel/timenval.h - * - * Header file for Samsung Common LCD Driver. - * - * Copyright (c) 2017 Samsung Electronics + * Copyright (c) Samsung Electronics Co., Ltd. * Gwanghui Lee * * This program is free software; you can redistribute it and/or modify diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c index 8adbc97d02d6..de601f3c023d 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c @@ -565,7 +565,7 @@ ext4_read_block_bitmap(struct super_block *sb, ext4_group_t block_group) static int ext4_has_free_clusters(struct ext4_sb_info *sbi, s64 nclusters, unsigned int flags) { - s64 free_clusters, dirty_clusters, rsv, resv_clusters, sec_rsv; + s64 free_clusters, dirty_clusters, rsv, resv_clusters; struct percpu_counter *fcc = &sbi->s_freeclusters_counter; struct percpu_counter *dcc = &sbi->s_dirtyclusters_counter; @@ -579,10 +579,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, */ rsv = (ext4_r_blocks_count(sbi->s_es) >> sbi->s_cluster_bits) + resv_clusters; - sec_rsv = (ext4_sec_r_blocks_count(sbi->s_es) >> sbi->s_cluster_bits) + - rsv; - if (free_clusters - (nclusters + sec_rsv + dirty_clusters) < + if (free_clusters - (nclusters + rsv + dirty_clusters) < EXT4_FREECLUSTERS_WATERMARK) { free_clusters = percpu_counter_sum_positive(fcc); dirty_clusters = percpu_counter_sum_positive(dcc); @@ -590,18 +588,13 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, /* Check whether we have space after accounting for current * dirty clusters & root reserved clusters. */ - if (free_clusters >= (sec_rsv + nclusters + dirty_clusters)) + if (free_clusters >= (rsv + nclusters + dirty_clusters)) return 1; - if (ext4_android_claim_sec_r_blocks(flags)) { - if (free_clusters >= (rsv + nclusters + dirty_clusters)) - return 1; - } - /* Hm, nope. Are (enough) root reserved clusters available? */ if (uid_eq(sbi->s_resuid, current_fsuid()) || (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || - capable(CAP_SYS_RESOURCE) || ext4_android_claim_r_blocks(sbi) || + capable(CAP_SYS_RESOURCE) || (flags & EXT4_MB_USE_ROOT_BLOCKS)) { if (free_clusters >= (nclusters + dirty_clusters + diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index c1fc10eece3d..862136bcf420 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -138,8 +138,6 @@ enum SHIFT_DIRECTION { #define EXT4_MB_USE_ROOT_BLOCKS 0x1000 /* Use blocks from reserved pool */ #define EXT4_MB_USE_RESERVED 0x2000 -/* Use extra reserved root blocks if needed */ -#define EXT4_MB_USE_EXTRA_ROOT_BLOCKS 0x4000 struct ext4_allocation_request { /* target inode for block we're allocating */ @@ -401,11 +399,10 @@ struct flex_groups { #endif #define EXT4_INLINE_DATA_FL 0x10000000 /* Inode has inline data. */ #define EXT4_PROJINHERIT_FL 0x20000000 /* Create with parents projid */ -#define EXT4_CORE_FILE_FL 0x40000000 /* allow use of reserved space */ #define EXT4_RESERVED_FL 0x80000000 /* reserved for ext4 lib */ -#define EXT4_FL_USER_VISIBLE 0x704BDFFF /* User visible flags */ -#define EXT4_FL_USER_MODIFIABLE 0x604380FF /* User modifiable flags */ +#define EXT4_FL_USER_VISIBLE 0x404BDFFF /* User visible flags */ +#define EXT4_FL_USER_MODIFIABLE 0x204380FF /* User modifiable flags */ #define EXT4_FL_XFLAG_VISIBLE (EXT4_SYNC_FL | \ EXT4_IMMUTABLE_FL | \ @@ -468,7 +465,6 @@ enum { EXT4_INODE_EOFBLOCKS = 22, /* Blocks allocated beyond EOF */ EXT4_INODE_INLINE_DATA = 28, /* Data in inode. */ EXT4_INODE_PROJINHERIT = 29, /* Create with parents projid */ - EXT4_INODE_CORE_FILE = 30, /* allow use of reserved space */ EXT4_INODE_RESERVED = 31, /* reserved for ext4 lib */ }; @@ -514,7 +510,6 @@ static inline void ext4_check_flag_values(void) CHECK_FLAG_VALUE(EOFBLOCKS); CHECK_FLAG_VALUE(INLINE_DATA); CHECK_FLAG_VALUE(PROJINHERIT); - CHECK_FLAG_VALUE(CORE_FILE); CHECK_FLAG_VALUE(RESERVED); } @@ -1300,8 +1295,6 @@ struct ext4_super_block { __le64 s_kbytes_written; /* nr of lifetime kilobytes written */ __le32 s_snapshot_inum; /* Inode number of active snapshot */ __le32 s_snapshot_id; /* sequential ID of active snapshot */ -#define s_sec_r_blocks_count s_snapshot_r_blocks_count -#define ext4_sec_r_blocks_count(es) (le64_to_cpu(es->s_sec_r_blocks_count)) __le64 s_snapshot_r_blocks_count; /* reserved blocks for active snapshot's future use */ __le32 s_snapshot_list; /* inode number of the head of the @@ -1919,7 +1912,7 @@ static inline bool ext4_has_incompat_features(struct super_block *sb) /* * Default reserved inode count */ -#define EXT4_DEF_RESERVE_INODE 4096 +#define EXT4_DEF_RESERVE_INODE 8192 #define EXT4_SEC_DATA_MAGIC 0xBAB0CAFE /* data partition magic */ /* @@ -3293,25 +3286,6 @@ static inline bool ext4_aligned_io(struct inode *inode, loff_t off, loff_t len) return IS_ALIGNED(off, blksize) && IS_ALIGNED(len, blksize); } -static inline bool ext4_android_claim_sec_r_blocks(unsigned int flags) { - if (flags & EXT4_MB_USE_EXTRA_ROOT_BLOCKS) - return true; - -#if ANDROID_VERSION < 90000 - if (in_group_p(AID_USE_SEC_RESERVED)) - return true; -#endif - - return false; -} - -static inline bool ext4_android_claim_r_blocks(struct ext4_sb_info *sbi) { - /* for O upgrade without factory reset */ - if (in_group_p(AID_USE_ROOT_RESERVED)) - return true; - return false; -} - #endif /* __KERNEL__ */ #define EFSBADCRC EBADMSG /* Bad CRC detected */ diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index c5f3461552c3..7829fc4b77d1 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -723,20 +723,13 @@ out: static inline int ext4_has_free_inodes(struct ext4_sb_info *sbi) { if (likely(percpu_counter_read_positive(&sbi->s_freeinodes_counter) > - sbi->s_r_inodes_count * 2)) + sbi->s_r_inodes_count)) return 1; -#if ANDROID_VERSION < 90000 - if (percpu_counter_read_positive(&sbi->s_freeinodes_counter) > - sbi->s_r_inodes_count && - in_group_p(AID_USE_SEC_RESERVED)) - return 1; -#endif - /* Hm, nope. Are (enough) root reserved inodes available? */ if (uid_eq(sbi->s_resuid, current_fsuid()) || (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || - capable(CAP_SYS_RESOURCE) || ext4_android_claim_r_blocks(sbi)) + capable(CAP_SYS_RESOURCE)) return 1; return 0; } diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index a7b00b040dad..308a5cf35b19 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1543,9 +1543,7 @@ static int ext4_da_reserve_space(struct inode *inode) return ret; spin_lock(&ei->i_block_reservation_lock); - if (ext4_claim_free_clusters(sbi, 1, - ext4_test_inode_flag(inode, EXT4_INODE_CORE_FILE) ? - EXT4_MB_USE_EXTRA_ROOT_BLOCKS : 0)) { + if (ext4_claim_free_clusters(sbi, 1, 0)) { spin_unlock(&ei->i_block_reservation_lock); dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1)); return -ENOSPC; diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 0553d8721de9..4e7567a211ca 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -4587,9 +4587,6 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle, if (IS_NOQUOTA(ar->inode)) ar->flags |= EXT4_MB_USE_ROOT_BLOCKS; - if (ext4_test_inode_flag(ar->inode, EXT4_INODE_CORE_FILE)) - ar->flags |= EXT4_MB_USE_EXTRA_ROOT_BLOCKS; - if ((ar->flags & EXT4_MB_DELALLOC_RESERVED) == 0) { /* Without delayed allocation we need to verify * there is enough free blocks to do block allocation diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 419480f4d8d4..f4b043300d95 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -4272,16 +4272,11 @@ no_journal: ext4_r_blocks_count(es) >> sbi->s_cluster_bits); } - if (ext4_sec_r_blocks_count(es)) - ext4_msg(sb, KERN_INFO, "SEC reserved blocks %llu", - ext4_sec_r_blocks_count(es) >> - sbi->s_cluster_bits); - if (le32_to_cpu(es->s_sec_magic) == EXT4_SEC_DATA_MAGIC || strncmp(es->s_volume_name, "data", 4) == 0) { sbi->s_r_inodes_count = EXT4_DEF_RESERVE_INODE; ext4_msg(sb, KERN_INFO, "Reserve inodes (%d/%u)", - EXT4_DEF_RESERVE_INODE * 2, + EXT4_DEF_RESERVE_INODE, le32_to_cpu(es->s_inodes_count)); } @@ -5399,10 +5394,8 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf) /* prevent underflow in case that few free space is available */ buf->f_bfree = EXT4_C2B(sbi, max_t(s64, bfree, 0)); buf->f_bavail = buf->f_bfree - - (ext4_r_blocks_count(es) + resv_blocks + - ext4_sec_r_blocks_count(es)); - if (buf->f_bfree < (ext4_r_blocks_count(es) + resv_blocks + - ext4_sec_r_blocks_count(es))) + (ext4_r_blocks_count(es) + resv_blocks); + if (buf->f_bfree < (ext4_r_blocks_count(es) + resv_blocks)) buf->f_bavail = 0; buf->f_files = le32_to_cpu(es->s_inodes_count); buf->f_ffree = percpu_counter_sum_positive(&sbi->s_freeinodes_counter); diff --git a/include/linux/ccic/max77705_pass3.h b/include/linux/ccic/max77705_pass3.h index 05aeffe1dd81..ba7c006f9cc6 100644 --- a/include/linux/ccic/max77705_pass3.h +++ b/include/linux/ccic/max77705_pass3.h @@ -1,6634 +1,6634 @@ const uint8_t BOOT_FLASH_FW_PASS3[] = { -0xc1, 0x66, 0xf1, 0xce, 0x30, 0x00, 0x00, 0x00, +0xc1, 0x66, 0xf1, 0xce, 0x32, 0x00, 0x05, 0x03, 0x01, 0x22, 0x21, 0x70, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, -0x0d, 0x0e, 0x0f, 0x00, 0x30, 0x00, 0x00, 0x00, -0x02, 0x00, 0x00, 0x00, 0x2f, 0xf1, 0x8f, 0xee, -0x25, 0x8d, 0xe2, 0xc4, 0x03, 0x04, 0x51, 0x02, +0x0d, 0x0e, 0x0f, 0x00, 0x32, 0x00, 0x05, 0x03, +0x02, 0x00, 0x00, 0x00, 0x43, 0x85, 0x2d, 0x97, +0xed, 0x2b, 0x24, 0xf5, 0x03, 0x04, 0x51, 0x02, 0x00, 0x01, 0x01, 0x22, 0x21, 0x20, 0xa9, 0xe8, 0x91, 0x2c, 0xdf, 0x69, 0xb7, 0x95, 0x9d, 0xa4, 0x69, 0x33, 0xed, 0x4a, 0x1d, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x88, -0x48, 0xca, 0x08, 0x2c, 0xdc, 0xdc, 0x03, 0x04, -0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0x37, -0x7c, 0xfb, 0x9f, 0x7a, 0x7b, 0x82, 0x52, 0x0f, -0x17, 0x47, 0xf6, 0x50, 0xec, 0x13, 0x2e, 0xeb, -0x85, 0x03, 0xf4, 0x61, 0x59, 0x73, 0x15, 0x71, -0x67, 0x4f, 0xd1, 0x28, 0x39, 0x7a, 0xf9, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xf8, +0xe0, 0x10, 0x1d, 0x35, 0x65, 0x24, 0x03, 0x04, +0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0xee, +0x9d, 0xbd, 0xd1, 0x0a, 0x52, 0x6e, 0x0d, 0xed, +0xb3, 0x86, 0xd3, 0x48, 0xac, 0x12, 0xd5, 0x05, +0x6e, 0x74, 0x46, 0x6c, 0xa1, 0xfd, 0xb3, 0xea, +0x5d, 0xf7, 0xdd, 0x4f, 0x7f, 0x0e, 0xf5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, -0x21, 0xe4, 0xf4, 0x00, 0x27, 0x33, 0xcb, 0x62, -0x51, 0x8e, 0xd4, 0x12, 0xa9, 0xbd, 0x8d, 0xbc, -0xe2, 0x62, 0x62, 0xd4, 0x71, 0xe5, 0xe4, 0x63, -0x48, 0x70, 0x42, 0x65, 0x7f, 0xda, 0x5f, 0xf0, -0xf8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, -0x01, 0x22, 0x21, 0x0b, 0x49, 0x19, 0x5f, 0xe8, -0xc0, 0x0e, 0x97, 0x4c, 0x8a, 0x46, 0xe4, 0x2e, -0xe2, 0x18, 0xcd, 0x6c, 0xb6, 0x7d, 0xbe, 0x1f, -0xb4, 0x14, 0xa3, 0x4b, 0xc1, 0xf9, 0x11, 0x79, -0xb4, 0x06, 0x85, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x05, 0x01, 0x22, 0x21, 0xfb, 0xf5, 0x64, -0x3c, 0x18, 0x74, 0x02, 0x62, 0x97, 0x5e, 0x09, -0x82, 0x33, 0xf4, 0x8c, 0xd0, 0x6e, 0x6f, 0xf6, -0x67, 0xe7, 0x0b, 0xd2, 0xac, 0x02, 0x51, 0x53, -0xe3, 0x7e, 0x5c, 0xe1, 0x58, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x82, -0xd7, 0x44, 0x94, 0x2e, 0x0a, 0x11, 0xfe, 0xb6, -0x34, 0x21, 0x3f, 0x80, 0x93, 0x39, 0x12, 0xf3, -0x60, 0x91, 0x2a, 0x6b, 0x48, 0xe6, 0x65, 0xbf, -0xac, 0x6d, 0xd7, 0x12, 0x0c, 0x97, 0xbd, 0x00, +0x21, 0x3e, 0x17, 0xde, 0x2e, 0x0b, 0xe2, 0xca, +0x56, 0x8b, 0x7a, 0x76, 0x17, 0x29, 0x6c, 0x2a, +0x85, 0xd3, 0x30, 0x05, 0x1c, 0x1d, 0xa6, 0x54, +0xa1, 0x93, 0xe9, 0xdf, 0xf3, 0x81, 0x14, 0xe1, +0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, +0x01, 0x22, 0x21, 0xb6, 0xb5, 0xc9, 0xd9, 0x90, +0x5d, 0xc1, 0x72, 0x89, 0xf5, 0x35, 0x6e, 0xd7, +0xff, 0x68, 0x72, 0x1a, 0xc0, 0x2d, 0xd6, 0xa4, +0x81, 0x5c, 0x85, 0xb8, 0xa7, 0xb4, 0x03, 0x42, +0x47, 0x0a, 0xb7, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x05, 0x01, 0x22, 0x21, 0xb0, 0xce, 0x53, +0xf5, 0xf8, 0x71, 0x3b, 0x56, 0xfc, 0x16, 0x18, +0xe7, 0xea, 0x2c, 0x38, 0x62, 0x9d, 0x29, 0x1e, +0x65, 0x60, 0x49, 0xf4, 0x14, 0xcd, 0x87, 0x8f, +0x30, 0xab, 0xb5, 0x17, 0xfd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x02, +0x12, 0x54, 0x66, 0x06, 0xe5, 0xa6, 0x85, 0x77, +0x3b, 0xfd, 0xea, 0xea, 0xd1, 0x53, 0xa6, 0x44, +0x4d, 0x35, 0x2a, 0x09, 0x2e, 0x6b, 0xee, 0xb7, +0x82, 0x73, 0xd9, 0xfc, 0x88, 0x09, 0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, -0x21, 0x12, 0x90, 0x60, 0xf4, 0x31, 0xf2, 0xc7, -0x92, 0xa3, 0x38, 0xe1, 0x44, 0xb9, 0xfe, 0xdd, -0x34, 0xed, 0xf8, 0x57, 0xb6, 0x6f, 0x6d, 0x29, -0xf0, 0xcf, 0xf5, 0x0c, 0x24, 0xe4, 0x0b, 0x1e, -0x17, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, -0x01, 0x22, 0x21, 0xc0, 0xf2, 0x0a, 0x75, 0xd9, -0x8f, 0x05, 0xa5, 0xd9, 0xee, 0xe0, 0x4d, 0x85, -0x69, 0x56, 0x47, 0x58, 0xdd, 0x16, 0x22, 0x1e, -0x5a, 0xa2, 0x0e, 0x20, 0x96, 0xfb, 0x84, 0x6d, -0xe4, 0xb9, 0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x09, 0x01, 0x22, 0x21, 0xaa, 0x5b, 0x6b, -0xa8, 0x29, 0x3c, 0xeb, 0xc9, 0xd2, 0x5a, 0x88, -0x72, 0x8d, 0x03, 0x14, 0xea, 0x95, 0x84, 0x99, -0x77, 0x57, 0xe2, 0xb5, 0x62, 0xa4, 0x99, 0x79, -0x63, 0xb5, 0x89, 0xd6, 0xcd, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0xe1, -0x32, 0xa8, 0x47, 0x5d, 0x12, 0x66, 0x2a, 0xdc, -0x96, 0xa9, 0xc7, 0xd1, 0x21, 0xdb, 0xf2, 0xd1, -0x71, 0x8a, 0x61, 0x17, 0xbd, 0x86, 0x0c, 0x3a, -0xbd, 0xae, 0xb8, 0xa1, 0x63, 0x4f, 0x53, 0x00, +0x21, 0xa8, 0x05, 0x8e, 0x7b, 0x0e, 0xd0, 0x29, +0xb5, 0x59, 0x75, 0xf2, 0xa5, 0x59, 0x83, 0xe3, +0x42, 0x0a, 0x9a, 0x12, 0x6d, 0x85, 0x15, 0xc2, +0x28, 0xf2, 0x44, 0x83, 0x72, 0x3d, 0xaa, 0x46, +0xfa, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, +0x01, 0x22, 0x21, 0x9a, 0xe8, 0xc4, 0xcb, 0x2d, +0x00, 0x02, 0x47, 0xa3, 0xa0, 0x1c, 0x52, 0x61, +0xd5, 0x6e, 0x41, 0xf0, 0x0e, 0x7d, 0xf6, 0xcc, +0x57, 0xba, 0x4d, 0x71, 0x40, 0x67, 0x21, 0x26, +0x4e, 0xd4, 0x96, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x09, 0x01, 0x22, 0x21, 0xd8, 0x80, 0xd6, +0x2a, 0xff, 0x10, 0x84, 0xce, 0x2a, 0x7d, 0x3c, +0x1d, 0xfa, 0x88, 0x80, 0x59, 0x15, 0x09, 0x35, +0xf5, 0x31, 0x02, 0x1a, 0x73, 0x29, 0x65, 0x4e, +0xed, 0x34, 0xe1, 0x23, 0xb6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0x6e, +0x35, 0xcb, 0x95, 0xb9, 0x31, 0xa1, 0x0a, 0x6c, +0x73, 0xd7, 0xe2, 0xe4, 0xbe, 0x76, 0x6a, 0x17, +0x48, 0xcb, 0xe1, 0x65, 0xbb, 0x15, 0x39, 0x4f, +0xbd, 0x72, 0xe2, 0x8f, 0x49, 0x83, 0x3e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, -0x21, 0x32, 0x01, 0x7b, 0x75, 0xda, 0xdf, 0x7c, -0xdf, 0x5e, 0x19, 0x24, 0x9f, 0x89, 0xf4, 0x88, -0x3e, 0x0f, 0xfd, 0xce, 0xb2, 0x56, 0x34, 0x4f, -0x9e, 0xb8, 0xe8, 0x5e, 0xe7, 0xda, 0x14, 0x2a, -0xdd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, -0x01, 0x22, 0x21, 0x87, 0x00, 0x9f, 0xe7, 0x7d, -0x13, 0xd0, 0xfc, 0x61, 0xa9, 0xd8, 0xe8, 0x3f, -0x18, 0x83, 0x03, 0xdb, 0xcc, 0xc3, 0x4a, 0x52, -0x4a, 0x30, 0x37, 0x68, 0xd1, 0xa2, 0xb2, 0x33, -0x22, 0x6b, 0x37, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x0d, 0x01, 0x22, 0x21, 0x64, 0xd1, 0x1e, -0x68, 0x4d, 0x88, 0x28, 0x4d, 0x2d, 0xdd, 0x4d, -0xa4, 0x50, 0xcb, 0xcb, 0x4c, 0xff, 0x20, 0x55, -0xa0, 0x46, 0xfb, 0x89, 0xe9, 0x6e, 0x40, 0x2b, -0x00, 0xf8, 0x8b, 0x4e, 0xf7, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0xc9, -0x96, 0xd7, 0x49, 0x39, 0x2b, 0x58, 0x64, 0x92, -0x4d, 0x3a, 0x1a, 0xe5, 0xa6, 0x0d, 0x39, 0xa3, -0xf2, 0xc9, 0xd4, 0xd1, 0x05, 0xdc, 0x5d, 0x82, -0x5f, 0x86, 0xd4, 0x72, 0x23, 0x8f, 0xd0, 0x00, +0x21, 0x8e, 0x6f, 0xf9, 0x2e, 0xd3, 0x4e, 0x69, +0x6f, 0xff, 0x51, 0x8d, 0xfc, 0x0b, 0x73, 0xc4, +0xab, 0xdb, 0x1f, 0xe2, 0xcc, 0xb8, 0x48, 0xd7, +0xcc, 0x13, 0x2b, 0x3d, 0x11, 0x1f, 0xa2, 0x18, +0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, +0x01, 0x22, 0x21, 0x22, 0x87, 0x47, 0x5f, 0xa2, +0x36, 0xde, 0xa5, 0x1f, 0x9f, 0x66, 0xc9, 0x01, +0xdf, 0xd5, 0xc7, 0xf1, 0x4a, 0xf3, 0x08, 0x70, +0xa1, 0x4e, 0x40, 0xdf, 0x11, 0xdf, 0x01, 0x10, +0x56, 0x54, 0xe5, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x0d, 0x01, 0x22, 0x21, 0xdc, 0x84, 0x98, +0x59, 0x96, 0x2a, 0x45, 0x32, 0xa7, 0xf7, 0xad, +0xb6, 0x22, 0xc9, 0xcf, 0xcb, 0x29, 0xea, 0x52, +0x44, 0x80, 0x62, 0x28, 0x01, 0x40, 0x13, 0x63, +0x94, 0x60, 0x7c, 0x98, 0x1a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0xd8, +0x86, 0xd8, 0xf0, 0x02, 0x07, 0x78, 0x62, 0xb6, +0xdb, 0x36, 0x23, 0xfc, 0x88, 0xa7, 0x28, 0xb6, +0xe4, 0x44, 0x98, 0x7b, 0xbe, 0x27, 0xae, 0xc9, +0xe5, 0xa1, 0x8e, 0x32, 0x22, 0xbe, 0x31, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, -0x21, 0xf7, 0x4e, 0x69, 0x36, 0x68, 0x7b, 0x15, -0x44, 0x4e, 0x7f, 0x00, 0x3a, 0xcd, 0xda, 0xd8, -0xde, 0x7a, 0x13, 0xe7, 0x8d, 0x2d, 0xc4, 0x7a, -0xb6, 0xba, 0x81, 0x2e, 0xe1, 0x15, 0xf8, 0xcc, -0xac, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, -0x01, 0x22, 0x21, 0x3d, 0x3f, 0x84, 0x60, 0x65, -0x97, 0x19, 0x9c, 0x54, 0x74, 0x9f, 0xb9, 0x41, -0x1e, 0x11, 0x8d, 0x9c, 0x08, 0xd9, 0x5d, 0x75, -0xe6, 0x6e, 0x5c, 0x28, 0xa7, 0x9e, 0xb7, 0x73, -0xea, 0xf5, 0xaa, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x11, 0x01, 0x22, 0x21, 0xc6, 0xf6, 0xb0, -0xa4, 0x02, 0x62, 0x61, 0x00, 0x97, 0x02, 0x92, -0xde, 0xcc, 0x2c, 0xfe, 0x43, 0xa3, 0x0f, 0xe3, -0x15, 0x9f, 0xdd, 0x64, 0x50, 0xe2, 0xb4, 0x8a, -0x78, 0xd3, 0xa5, 0x51, 0xc9, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0xa5, -0x26, 0xa6, 0x5b, 0xff, 0xe6, 0x96, 0xfa, 0x83, -0xb5, 0xd1, 0xd0, 0x59, 0x31, 0x89, 0x87, 0xa9, -0x30, 0xf1, 0x67, 0x5b, 0x88, 0x4b, 0x98, 0x35, -0x8b, 0x62, 0x33, 0xc8, 0x59, 0xe4, 0xfa, 0x00, +0x21, 0x29, 0x6a, 0xb5, 0xbf, 0x87, 0x26, 0x4f, +0xc3, 0xa9, 0x70, 0x5e, 0x09, 0xbc, 0xc7, 0x55, +0x0f, 0x1e, 0xf8, 0x92, 0xa0, 0x01, 0x2b, 0x4f, +0x03, 0x44, 0xb3, 0x32, 0x20, 0xd1, 0x1b, 0x81, +0xbf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, +0x01, 0x22, 0x21, 0x72, 0x8f, 0x0d, 0x20, 0x9d, +0xfe, 0x8f, 0xc9, 0xb2, 0x38, 0x9a, 0x6b, 0xd5, +0x99, 0xf0, 0x95, 0x6f, 0xff, 0xc9, 0x45, 0x33, +0xbd, 0xf1, 0x8f, 0xe6, 0x24, 0x5b, 0x2c, 0x92, +0x1a, 0xa2, 0x14, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x11, 0x01, 0x22, 0x21, 0xe2, 0xe3, 0xd2, +0x6c, 0x82, 0x4b, 0xe3, 0x42, 0x25, 0xb9, 0x60, +0xe1, 0x87, 0x10, 0x64, 0x85, 0xff, 0xc4, 0xe4, +0x5d, 0xa3, 0xe4, 0x8a, 0xb4, 0xc4, 0xbd, 0xa9, +0x92, 0x3b, 0x04, 0xae, 0xc6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0xfb, +0x45, 0x2f, 0x73, 0xd3, 0xdc, 0x00, 0x57, 0xe1, +0x78, 0x4b, 0x62, 0x64, 0x79, 0x66, 0x63, 0xef, +0x2e, 0x7d, 0x3b, 0x7f, 0x12, 0x18, 0x46, 0x73, +0x48, 0xb6, 0x33, 0x12, 0xbd, 0xee, 0xf8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, -0x21, 0x0d, 0x2b, 0x14, 0xa5, 0x29, 0x61, 0xf4, -0xc8, 0xe7, 0x14, 0x91, 0xd7, 0x01, 0x2b, 0xdc, -0x19, 0x6b, 0x04, 0xd1, 0xd6, 0x5c, 0x49, 0x7e, -0x9b, 0x7f, 0x27, 0x19, 0x60, 0x65, 0x73, 0x3a, -0x79, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, -0x01, 0x22, 0x21, 0xfd, 0xfe, 0x0c, 0x2e, 0x90, -0x83, 0xd7, 0x06, 0xc7, 0x1b, 0xeb, 0xbb, 0xb9, -0x49, 0x59, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xf6, 0xf9, 0xdf, 0x83, -0x51, 0xeb, 0xbd, 0x52, 0x03, 0x04, 0x51, 0x02, -0x00, 0x15, 0x01, 0x22, 0x21, 0x32, 0x9b, 0x08, -0xd6, 0x81, 0x43, 0x06, 0xba, 0x4d, 0x9d, 0x32, -0x27, 0x9d, 0x34, 0xa4, 0xa7, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xe4, -0xe0, 0x36, 0xb7, 0x85, 0xfd, 0x15, 0x03, 0x04, -0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0xf0, -0xa7, 0x32, 0xab, 0x4f, 0xa0, 0x82, 0xce, 0x6a, -0x69, 0xfc, 0x8e, 0x1a, 0x82, 0x37, 0x2e, 0x37, -0xcd, 0x45, 0xb6, 0x70, 0x38, 0x1d, 0xa0, 0x1a, -0x44, 0xe3, 0x43, 0x26, 0x39, 0xc1, 0x8d, 0x00, +0x21, 0x4a, 0x23, 0xfc, 0xa4, 0xb1, 0xd4, 0x19, +0xf8, 0x8d, 0x67, 0x7d, 0x78, 0xb8, 0x04, 0x04, +0xb6, 0xbe, 0x14, 0xc4, 0x08, 0x66, 0x22, 0x4c, +0xd9, 0xbe, 0x0a, 0xa9, 0xdb, 0xdb, 0xdb, 0x44, +0x6a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, +0x01, 0x22, 0x21, 0xdc, 0x32, 0x98, 0x27, 0x53, +0xeb, 0xde, 0x66, 0xb2, 0xbf, 0x6e, 0xb7, 0xe6, +0x11, 0xb6, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xf6, 0xf4, 0x76, 0x87, +0xb2, 0xe0, 0x28, 0x93, 0x03, 0x04, 0x51, 0x02, +0x00, 0x15, 0x01, 0x22, 0x21, 0x1a, 0x15, 0x0f, +0xc9, 0xb1, 0xd5, 0x8a, 0x08, 0x6f, 0x71, 0xdb, +0x77, 0x1f, 0xac, 0x36, 0xb1, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x41, +0x05, 0xdf, 0x32, 0x66, 0xbc, 0x36, 0x03, 0x04, +0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0x16, +0xf6, 0xcf, 0x9e, 0x3e, 0xae, 0x84, 0xe0, 0xa9, +0x81, 0x39, 0x27, 0x0a, 0x43, 0xaa, 0x90, 0xb1, +0xfd, 0xc2, 0x4b, 0x76, 0xea, 0xe8, 0x32, 0xcf, +0x93, 0x3e, 0x22, 0x04, 0x53, 0x2e, 0x73, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, -0x21, 0x69, 0x9e, 0x5b, 0x3c, 0xb4, 0x8e, 0x64, -0x1d, 0x49, 0xd1, 0xf2, 0xdf, 0x62, 0xd0, 0x4b, -0x81, 0xea, 0x13, 0xad, 0x87, 0xe9, 0xa9, 0xe3, -0x16, 0x01, 0x7b, 0x18, 0xe5, 0x5d, 0x37, 0x08, -0x9c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, -0x01, 0x22, 0x21, 0xc4, 0xf1, 0xe3, 0xb0, 0x46, -0x8c, 0xd1, 0xf3, 0x4e, 0xd1, 0xbb, 0xa0, 0xad, -0x78, 0x26, 0x1e, 0xad, 0xcd, 0x9a, 0x06, 0xba, -0x22, 0x8f, 0x58, 0xcd, 0xd5, 0x14, 0xc0, 0x03, -0x4e, 0x1a, 0x44, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x19, 0x01, 0x22, 0x21, 0xc6, 0xe1, 0x32, -0x7c, 0x89, 0x4e, 0x2c, 0x89, 0x46, 0x32, 0x52, -0x0b, 0xae, 0x95, 0x67, 0x94, 0xa1, 0x4b, 0x92, -0x75, 0x4e, 0x12, 0x91, 0x93, 0x9a, 0x37, 0x5b, -0x82, 0xcb, 0x05, 0x24, 0x1e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x0d, -0x64, 0xb3, 0xc3, 0x85, 0x3a, 0x52, 0x17, 0x6a, -0x97, 0xd9, 0xcc, 0x23, 0xfa, 0x94, 0xc2, 0x38, -0x54, 0x45, 0xf1, 0xf2, 0x6e, 0x1b, 0x92, 0x6f, -0x92, 0xd9, 0x55, 0x43, 0x63, 0xf4, 0x8c, 0x00, +0x21, 0xbe, 0xbd, 0x36, 0x86, 0x3a, 0x4a, 0xc5, +0x65, 0x9e, 0x5a, 0x4d, 0x1b, 0x80, 0x44, 0x43, +0xdf, 0xcb, 0x43, 0x2b, 0xe3, 0xcc, 0x54, 0x8d, +0xa9, 0xb4, 0x85, 0xd7, 0xfb, 0xaf, 0x4f, 0xbc, +0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, +0x01, 0x22, 0x21, 0xe4, 0x42, 0x9b, 0x3a, 0x8f, +0x8f, 0x13, 0xfc, 0xdf, 0x08, 0xb6, 0xc9, 0x9b, +0x11, 0xf7, 0xdf, 0x2d, 0x34, 0xc6, 0x0c, 0xb0, +0x71, 0xd9, 0xc8, 0x0b, 0x15, 0x23, 0xb8, 0xd0, +0xd8, 0xd0, 0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x19, 0x01, 0x22, 0x21, 0xc2, 0xfe, 0x45, +0x94, 0x71, 0xb2, 0xa9, 0x11, 0xcb, 0xec, 0x0f, +0x8f, 0x47, 0x1b, 0xa7, 0x56, 0xb4, 0xb0, 0x16, +0x66, 0xd9, 0x22, 0xbf, 0xa1, 0x98, 0xd4, 0x4d, +0xa4, 0x38, 0x50, 0x7b, 0xf8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x7d, +0x28, 0x54, 0xae, 0x6f, 0x9c, 0xce, 0x9f, 0x87, +0x5c, 0x29, 0xfc, 0x43, 0xc4, 0x9a, 0xa8, 0x02, +0xf6, 0x08, 0xfc, 0x9c, 0x49, 0x8a, 0x58, 0xf0, +0x3d, 0x78, 0x8b, 0x59, 0x2a, 0xa6, 0xf6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, -0x21, 0xa5, 0x13, 0x44, 0x03, 0x6b, 0x00, 0x25, -0x52, 0xfb, 0xf5, 0x68, 0x73, 0x29, 0xae, 0x4a, -0x8e, 0xe8, 0x95, 0xee, 0x23, 0x33, 0xf8, 0x2a, -0xaa, 0xba, 0x3d, 0xc5, 0x77, 0x9f, 0x8e, 0x99, -0x25, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, -0x01, 0x22, 0x21, 0xd1, 0x3b, 0x48, 0xa9, 0x58, -0x4c, 0xc1, 0x47, 0x99, 0x82, 0x3b, 0x77, 0x6a, -0x9b, 0x25, 0x2b, 0x25, 0xb4, 0x50, 0x9b, 0xf1, -0xd8, 0x8f, 0x67, 0x9a, 0x02, 0x3d, 0x29, 0x8a, -0xc2, 0x40, 0x88, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x1d, 0x01, 0x22, 0x21, 0x82, 0x71, 0x84, -0xdf, 0x37, 0x5d, 0x6a, 0x48, 0x5f, 0x22, 0x09, -0x2f, 0xac, 0xe6, 0xe0, 0xe2, 0x1e, 0x46, 0x80, -0xde, 0x6b, 0xdd, 0x88, 0x7d, 0xe4, 0xca, 0xd4, -0xcd, 0x9f, 0x6e, 0x6b, 0x32, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0x42, -0x1a, 0x80, 0x25, 0x4d, 0x8a, 0xfe, 0xc9, 0x7f, -0xa2, 0x48, 0x09, 0xff, 0x58, 0xbb, 0x7b, 0x69, -0x2e, 0xfb, 0x1a, 0x79, 0x27, 0xfb, 0x2e, 0x61, -0xe4, 0xc8, 0x6b, 0xd4, 0xdc, 0x18, 0x08, 0x00, +0x21, 0x1c, 0x9f, 0x2d, 0xeb, 0x09, 0xfd, 0xb1, +0x25, 0xcc, 0x25, 0x94, 0x63, 0xc9, 0x10, 0x0d, +0x71, 0x94, 0x9f, 0x02, 0x3c, 0x2f, 0xcf, 0x5e, +0x2b, 0xee, 0xa1, 0x0a, 0xc2, 0x71, 0x0c, 0x31, +0x23, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, +0x01, 0x22, 0x21, 0x0d, 0x99, 0x6b, 0xcc, 0xe6, +0xf6, 0x46, 0x86, 0x17, 0xfe, 0x05, 0xfb, 0x2e, +0xea, 0x29, 0xf1, 0xd7, 0x09, 0xab, 0xc9, 0x0e, +0xc4, 0x95, 0x66, 0x49, 0xbe, 0xe2, 0xc6, 0x6e, +0xb1, 0x8a, 0x05, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x1d, 0x01, 0x22, 0x21, 0x1f, 0x74, 0x7a, +0x1d, 0x6a, 0x53, 0x78, 0xee, 0x3a, 0xa6, 0xfe, +0x60, 0x60, 0x06, 0x57, 0x6e, 0x60, 0xe5, 0x5c, +0x7d, 0x01, 0xdf, 0x2d, 0xea, 0xa1, 0xd5, 0xf1, +0xb4, 0x4b, 0xee, 0x2a, 0x27, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0x24, +0xbc, 0xc8, 0x4d, 0xb9, 0x70, 0x53, 0xdd, 0x73, +0x20, 0xb1, 0x35, 0x21, 0xb8, 0x19, 0x41, 0xd2, +0xd1, 0x05, 0xd9, 0xcc, 0x0d, 0x74, 0x7c, 0xf0, +0x55, 0x67, 0xd3, 0xd4, 0x1c, 0xef, 0x6b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, -0x21, 0x8a, 0xe3, 0x88, 0xe4, 0xad, 0xb2, 0xfd, -0xf6, 0x1e, 0xbb, 0x00, 0x94, 0xf8, 0xf5, 0x53, -0xa6, 0x99, 0x49, 0x3e, 0x96, 0x65, 0x0f, 0xc7, -0x1a, 0xcf, 0x37, 0x4d, 0x81, 0xf1, 0x92, 0xe2, -0x54, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, -0x01, 0x22, 0x21, 0xa1, 0xd9, 0x4b, 0xfd, 0xc6, -0xd4, 0x66, 0x44, 0xb3, 0xac, 0x44, 0x79, 0x70, -0xc2, 0xf7, 0xe9, 0xe1, 0x06, 0xcb, 0x15, 0x86, -0xd5, 0xfb, 0x37, 0xf7, 0x33, 0x6e, 0x46, 0xb8, -0x6c, 0xc9, 0xec, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x21, 0x01, 0x22, 0x21, 0x40, 0x7d, 0xda, -0x6a, 0x12, 0xe4, 0xfb, 0x7b, 0xd5, 0x2b, 0xff, -0xd2, 0x7b, 0xaf, 0x43, 0xf6, 0x38, 0x3a, 0xc8, -0xa3, 0xed, 0xd3, 0x0a, 0xf2, 0xf6, 0x45, 0x47, -0x52, 0xa7, 0x7e, 0xcb, 0xff, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xee, -0x0e, 0x67, 0x53, 0x36, 0x0a, 0x0e, 0x32, 0xda, -0x91, 0x90, 0x75, 0x13, 0xa6, 0x14, 0x74, 0xc2, -0x7d, 0x11, 0xb7, 0xf1, 0x3c, 0x86, 0xc3, 0x49, -0x43, 0x6e, 0x17, 0x82, 0x84, 0x3b, 0x82, 0x00, +0x21, 0xc4, 0x6b, 0x50, 0x49, 0x3f, 0x54, 0x86, +0x4e, 0x83, 0xa3, 0xf8, 0x65, 0x62, 0xa3, 0x9e, +0x16, 0x33, 0x48, 0x90, 0xfd, 0x19, 0x32, 0x6e, +0xe9, 0xe6, 0x5b, 0xe3, 0x2e, 0xf0, 0x39, 0x64, +0x0e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, +0x01, 0x22, 0x21, 0x34, 0x48, 0xb9, 0xd2, 0xc1, +0xa7, 0x43, 0x9a, 0x65, 0xf4, 0x11, 0x87, 0x16, +0xbd, 0xbc, 0x56, 0x02, 0xeb, 0x84, 0x25, 0xea, +0xc3, 0x35, 0x8b, 0xbd, 0x67, 0x7a, 0x5b, 0xfb, +0x89, 0xf8, 0xcc, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x21, 0x01, 0x22, 0x21, 0x45, 0x53, 0xad, +0xb0, 0x23, 0x13, 0x8a, 0x56, 0xea, 0x3a, 0x1a, +0x9f, 0xd1, 0xe0, 0xa2, 0x71, 0xfa, 0x26, 0x16, +0xbd, 0xa0, 0x8e, 0x51, 0x05, 0x9a, 0x83, 0xe6, +0xc7, 0xc6, 0xff, 0xfe, 0xe1, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xc7, +0x1d, 0x82, 0x53, 0x5c, 0x0b, 0x42, 0x78, 0xee, +0x4a, 0x5d, 0xee, 0x35, 0x48, 0x78, 0xb3, 0x71, +0x24, 0x95, 0x9f, 0x90, 0x7a, 0xb1, 0x69, 0x55, +0x40, 0xe1, 0x8b, 0x4c, 0xf9, 0x68, 0x3c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, -0x21, 0x6f, 0x6b, 0x3e, 0xb5, 0x48, 0xbf, 0x16, -0xc1, 0xb7, 0x29, 0x8d, 0x67, 0xae, 0xd6, 0xbf, -0x04, 0x89, 0x24, 0x31, 0x2c, 0xb5, 0x4f, 0xfc, -0x91, 0x14, 0x3d, 0x04, 0x87, 0x7d, 0x90, 0xcb, -0x61, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, -0x01, 0x22, 0x21, 0x8d, 0xc3, 0xe1, 0xc4, 0x7e, -0xc8, 0x86, 0xba, 0x35, 0x0f, 0x8b, 0x02, 0x54, -0x18, 0x6c, 0x3c, 0xe0, 0x14, 0x43, 0xcc, 0xa0, -0x52, 0x38, 0x15, 0xc6, 0xa1, 0x74, 0xf6, 0x04, -0xd3, 0xc3, 0xaa, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x25, 0x01, 0x22, 0x21, 0x65, 0x8c, 0x9d, -0x4b, 0x1c, 0x7d, 0xa6, 0x9a, 0x15, 0x9b, 0x7a, -0xb3, 0x58, 0xf9, 0x79, 0x19, 0x52, 0x81, 0x9a, -0x53, 0x53, 0x64, 0x5b, 0xf7, 0xae, 0xbc, 0xcb, -0x1a, 0x16, 0x6d, 0xc4, 0x26, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0xe0, -0xd1, 0x0e, 0xe7, 0xfd, 0x98, 0x88, 0xf9, 0x45, -0x24, 0x64, 0xd3, 0x08, 0x9a, 0x7b, 0xcc, 0x00, -0xef, 0xf4, 0xf2, 0x24, 0x01, 0x15, 0x43, 0xbe, -0x0f, 0xc7, 0x71, 0x42, 0xd9, 0x4a, 0x2b, 0x00, +0x21, 0x82, 0x6d, 0x98, 0x6e, 0xe2, 0x18, 0xa0, +0x2a, 0x33, 0xbc, 0x82, 0x6e, 0x57, 0xe1, 0xd7, +0x20, 0x58, 0x64, 0x44, 0xe0, 0x2c, 0x1d, 0x35, +0xe8, 0x91, 0x69, 0x2e, 0x25, 0xed, 0x7e, 0x40, +0x7a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, +0x01, 0x22, 0x21, 0x90, 0xd3, 0xf2, 0xfc, 0x4c, +0x07, 0x30, 0x45, 0x62, 0xbd, 0xb5, 0xa5, 0x1a, +0xc1, 0x1a, 0xb5, 0x18, 0x15, 0xd7, 0xf8, 0xe6, +0x30, 0x89, 0x20, 0xce, 0x0e, 0x05, 0xe7, 0xee, +0xd1, 0xea, 0x63, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x25, 0x01, 0x22, 0x21, 0x8e, 0x57, 0x6f, +0xd1, 0x3e, 0xbc, 0x31, 0xea, 0x7d, 0xf7, 0x86, +0xe4, 0x0e, 0x29, 0xc5, 0x00, 0x3f, 0xdb, 0x10, +0xb7, 0x07, 0x40, 0x31, 0xb4, 0x12, 0x10, 0xc4, +0x5d, 0x61, 0xc4, 0x85, 0x3f, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0xcd, +0x65, 0x64, 0x49, 0x63, 0x01, 0x83, 0xba, 0x10, +0x34, 0xc6, 0x6e, 0xc4, 0x15, 0xd9, 0x85, 0xf1, +0xdf, 0xc4, 0x92, 0x10, 0x3b, 0x97, 0x51, 0x03, +0x01, 0xda, 0x25, 0x46, 0xc8, 0x4b, 0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, -0x21, 0xf0, 0x0e, 0x52, 0x14, 0x4e, 0x64, 0xbb, -0x20, 0xfa, 0x4f, 0xf4, 0xaa, 0x34, 0x33, 0x80, -0x95, 0x22, 0xf8, 0xcf, 0x33, 0x60, 0x51, 0x66, -0x25, 0x2c, 0x7d, 0x64, 0x50, 0x3c, 0x4d, 0x91, -0xbd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, -0x01, 0x22, 0x21, 0x38, 0x84, 0x2c, 0xcf, 0x5b, -0x61, 0xb8, 0x86, 0x46, 0x2c, 0xb7, 0x60, 0x25, -0x9d, 0x8c, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x0c, 0xf5, 0xac, 0x1e, -0x87, 0xd2, 0x85, 0x89, 0x03, 0x04, 0x51, 0x02, -0x00, 0x29, 0x01, 0x22, 0x21, 0xe2, 0xf3, 0xb0, -0x02, 0x68, 0x49, 0xa2, 0xc4, 0x5c, 0x93, 0x24, -0xeb, 0xa9, 0xcf, 0xca, 0x2b, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xaa, -0x1f, 0xfc, 0xe9, 0x59, 0x13, 0xf1, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0x0b, -0x0c, 0xae, 0xef, 0x11, 0x93, 0x9b, 0xfe, 0xda, -0x34, 0x8e, 0x76, 0x75, 0x2d, 0x72, 0xb0, 0xaa, -0xaf, 0x57, 0x34, 0x01, 0xf8, 0x3f, 0xbd, 0x63, -0x32, 0x64, 0xd1, 0x17, 0x5a, 0x6b, 0x21, 0x00, +0x21, 0x4d, 0xd6, 0x65, 0xa9, 0xfd, 0xc1, 0xf4, +0x44, 0x42, 0x39, 0x5c, 0xfb, 0x4c, 0x04, 0xb3, +0x0e, 0xfe, 0x54, 0xfe, 0xbb, 0x15, 0x83, 0x4d, +0xcb, 0x3d, 0xc7, 0xd3, 0x9a, 0x12, 0x4b, 0xcf, +0x05, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, +0x01, 0x22, 0x21, 0xb5, 0xa9, 0x93, 0x9d, 0x0e, +0x11, 0xee, 0x9b, 0x13, 0x77, 0x75, 0xd5, 0x4b, +0xd7, 0x7d, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xd1, 0x06, 0xa0, 0xcf, +0x0f, 0xf3, 0x2f, 0xc6, 0x03, 0x04, 0x51, 0x02, +0x00, 0x29, 0x01, 0x22, 0x21, 0xc8, 0x44, 0xce, +0xdd, 0xf3, 0x03, 0xb7, 0xe4, 0xbe, 0x4c, 0x2e, +0xcc, 0xd3, 0xc9, 0xd4, 0x86, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x4c, +0x55, 0x34, 0xe2, 0x77, 0x7c, 0x14, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0xcb, +0x46, 0xf6, 0xfa, 0xda, 0xef, 0x8f, 0x47, 0x3e, +0x85, 0x14, 0x3f, 0xf0, 0xe4, 0x50, 0xe6, 0x25, +0x96, 0xe8, 0xf2, 0x1a, 0x7a, 0xbf, 0x18, 0x81, +0x3e, 0xa5, 0x99, 0x67, 0x7d, 0xf3, 0x9d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, -0x21, 0x76, 0x46, 0xe9, 0xc1, 0xdf, 0xbb, 0x71, -0xaa, 0xdb, 0x1b, 0x6c, 0x4a, 0xeb, 0x00, 0xbe, -0x27, 0x09, 0xd0, 0xcd, 0x67, 0xba, 0xf5, 0x94, -0xf6, 0xb8, 0xee, 0x19, 0x1c, 0xaa, 0x43, 0xf8, -0x8b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, -0x01, 0x22, 0x21, 0xcd, 0xe4, 0x6b, 0x03, 0x97, -0x2d, 0x70, 0x71, 0x84, 0x50, 0xf6, 0x7d, 0xf7, -0xea, 0x8a, 0x6e, 0x5f, 0xcd, 0x23, 0x68, 0x9d, -0x22, 0x7d, 0x19, 0x95, 0x4a, 0x88, 0x64, 0x15, -0xca, 0xa1, 0x09, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x2d, 0x01, 0x22, 0x21, 0xa9, 0x8f, 0xad, -0x05, 0x8c, 0x51, 0x82, 0x3a, 0x6e, 0x2f, 0x28, -0xec, 0x27, 0x78, 0x38, 0x95, 0x19, 0xbb, 0x4c, -0x78, 0x41, 0x07, 0x58, 0x13, 0x2c, 0x89, 0x0d, -0x20, 0x90, 0x5f, 0xd9, 0x97, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0xe9, -0x71, 0x30, 0x8b, 0x3e, 0x0d, 0x74, 0x86, 0x72, -0xef, 0xe9, 0x3c, 0x2e, 0x58, 0xba, 0xbb, 0x83, -0x80, 0x9d, 0x83, 0x5e, 0x5a, 0x5f, 0x83, 0xd4, -0xe9, 0xaa, 0xe0, 0x5c, 0x7c, 0xb1, 0x2f, 0x00, +0x21, 0x05, 0x1b, 0xd5, 0x83, 0x83, 0x14, 0xab, +0x8a, 0x9e, 0x14, 0xf4, 0xcd, 0x5d, 0xcf, 0xb5, +0xf1, 0xcf, 0x7c, 0x46, 0xdd, 0x4e, 0xa7, 0xe1, +0xde, 0x4c, 0x64, 0xe5, 0x99, 0x2b, 0xfd, 0x4f, +0x20, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, +0x01, 0x22, 0x21, 0xee, 0x40, 0xdb, 0x55, 0x2e, +0x4f, 0x16, 0x34, 0x1f, 0xd6, 0xa4, 0x7f, 0xc8, +0x22, 0x36, 0x1e, 0x0b, 0x41, 0x5e, 0x3c, 0xbf, +0xb1, 0x2a, 0xa6, 0x3e, 0x9d, 0x30, 0xf4, 0xb7, +0x7c, 0x45, 0x78, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x2d, 0x01, 0x22, 0x21, 0x1a, 0xd1, 0x65, +0xdc, 0x7b, 0x3c, 0xcd, 0x55, 0x54, 0x44, 0x3d, +0x85, 0x2f, 0xf0, 0x87, 0x85, 0xf1, 0xad, 0xb4, +0x14, 0x25, 0x78, 0xb3, 0xfd, 0x34, 0x3d, 0xf3, +0xb2, 0x0e, 0xee, 0xf8, 0x35, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0x32, +0x84, 0x29, 0x2c, 0xae, 0xfe, 0xe5, 0x97, 0x94, +0x44, 0xe9, 0x1c, 0x20, 0xab, 0x28, 0xb4, 0x3b, +0x4a, 0x9c, 0xaa, 0xc1, 0x3f, 0xfc, 0x29, 0xd5, +0x2d, 0xdb, 0x08, 0x1c, 0xa2, 0x6b, 0xeb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, -0x21, 0x07, 0x4b, 0x22, 0xc2, 0x6a, 0xcb, 0x7a, -0x7e, 0x28, 0x16, 0x4f, 0x3b, 0xab, 0x54, 0x42, -0x68, 0xa3, 0xb5, 0x41, 0x53, 0x47, 0xec, 0x61, -0x24, 0xe9, 0xd2, 0x7f, 0x51, 0x97, 0x66, 0xf8, -0x27, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, -0x01, 0x22, 0x21, 0xd1, 0x4d, 0xa1, 0x28, 0xcd, -0xf7, 0x11, 0x76, 0xbf, 0xe0, 0xaf, 0x63, 0x40, -0xd4, 0x8a, 0xe9, 0xba, 0x27, 0x62, 0x20, 0x41, -0x8e, 0x99, 0xeb, 0x4a, 0x69, 0xe5, 0xc9, 0x26, -0xee, 0x53, 0x49, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x31, 0x01, 0x22, 0x21, 0xf9, 0xbb, 0x62, -0x6d, 0xbb, 0xd3, 0x2a, 0xd2, 0x9c, 0x3f, 0x2d, -0xe0, 0xa0, 0xc7, 0x11, 0xd5, 0x0f, 0x2f, 0xcc, -0x4c, 0x90, 0xd1, 0xfd, 0x2e, 0x1f, 0x39, 0xe3, -0xfe, 0x18, 0x55, 0xa5, 0xb0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0x64, -0xa0, 0xb1, 0xb4, 0x87, 0x37, 0x0f, 0xef, 0xb5, -0x41, 0x5c, 0x8e, 0xb8, 0x0b, 0x03, 0xfe, 0xb7, -0xd9, 0xc2, 0xd1, 0x82, 0x20, 0x24, 0xfa, 0xd3, -0x86, 0x09, 0x54, 0xec, 0x8b, 0xd7, 0x8d, 0x00, +0x21, 0x45, 0xf1, 0x82, 0x56, 0x38, 0x30, 0x5e, +0x30, 0xc3, 0xad, 0x94, 0xa9, 0xf5, 0x64, 0x2f, +0x15, 0x52, 0x6c, 0xa8, 0x42, 0x63, 0x64, 0x51, +0xa9, 0x1c, 0x89, 0x5c, 0xdc, 0x12, 0xe2, 0x87, +0x77, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, +0x01, 0x22, 0x21, 0x65, 0x63, 0x74, 0xa8, 0xae, +0x13, 0x62, 0x27, 0xa9, 0x0a, 0x1a, 0x7c, 0xcf, +0x4e, 0xa8, 0xd3, 0xcf, 0x14, 0xeb, 0x2d, 0x67, +0xff, 0xab, 0x48, 0xe8, 0x06, 0x8f, 0x8b, 0xde, +0x96, 0x9b, 0x25, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x31, 0x01, 0x22, 0x21, 0xf3, 0x23, 0xd4, +0xde, 0xe6, 0x6a, 0x1e, 0x7a, 0x87, 0xbb, 0x16, +0x2a, 0xc4, 0xb0, 0xac, 0xce, 0x7c, 0x50, 0x75, +0xa9, 0x49, 0x9b, 0xe9, 0xeb, 0xc6, 0x57, 0x76, +0x81, 0xda, 0x88, 0xb3, 0x19, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0x20, +0x20, 0xea, 0x4e, 0x41, 0xe5, 0x38, 0x93, 0xaa, +0x58, 0xf2, 0xeb, 0xb6, 0xbd, 0x4d, 0x16, 0x6c, +0x6b, 0x34, 0x8e, 0x27, 0x12, 0xf3, 0xab, 0x33, +0x5d, 0xb2, 0xf4, 0x0b, 0xf4, 0x1c, 0x4e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, -0x21, 0xb1, 0xe1, 0xdb, 0x22, 0x53, 0x7e, 0x16, -0xfc, 0x75, 0xc1, 0x5a, 0x19, 0x25, 0x13, 0x46, -0x18, 0x4b, 0x68, 0x35, 0x2f, 0x3f, 0x0c, 0xb2, -0x77, 0x72, 0x04, 0x7d, 0x68, 0x6a, 0x0b, 0x07, -0xee, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, -0x01, 0x22, 0x21, 0x88, 0x80, 0xe6, 0x37, 0xaa, -0xf8, 0x6c, 0xce, 0x6e, 0x91, 0xe9, 0xc5, 0x63, -0x55, 0x02, 0x95, 0x60, 0x6d, 0x69, 0x2d, 0x6e, -0x6f, 0x00, 0xbf, 0x0a, 0xc0, 0xb4, 0x39, 0xfa, -0x97, 0xd2, 0xeb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x35, 0x01, 0x22, 0x21, 0x5b, 0x49, 0x3e, -0x1f, 0x66, 0xe4, 0x40, 0x13, 0xd5, 0x43, 0xd7, -0x64, 0xec, 0x32, 0xbd, 0x6c, 0x61, 0x34, 0x53, -0x90, 0x93, 0x71, 0x39, 0x70, 0x9f, 0xc6, 0x9a, -0x8c, 0x0c, 0x43, 0x4f, 0x99, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0xa9, -0x44, 0xff, 0x36, 0x91, 0x19, 0x54, 0x7c, 0xf0, -0x2f, 0x9b, 0xfb, 0xe7, 0x23, 0x6a, 0xb2, 0xfe, -0x23, 0xe4, 0x61, 0x3d, 0xa2, 0x67, 0x6c, 0x3d, -0xbc, 0xda, 0x21, 0x47, 0x89, 0xdb, 0x0d, 0x00, +0x21, 0x01, 0x46, 0x24, 0x62, 0xd1, 0x64, 0xd4, +0x41, 0xaf, 0x3f, 0x58, 0x66, 0x0a, 0xe6, 0x3b, +0x29, 0x66, 0xf3, 0x9e, 0x02, 0x3b, 0x7b, 0x69, +0xab, 0xd1, 0x2a, 0xa5, 0x3d, 0x3c, 0x89, 0xd0, +0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, +0x01, 0x22, 0x21, 0xdc, 0x6c, 0x57, 0x9e, 0x17, +0xa9, 0x9b, 0xbd, 0xad, 0x02, 0x0f, 0x5f, 0x28, +0x5c, 0x3b, 0xd5, 0xf6, 0x5b, 0x80, 0xa6, 0x66, +0x2a, 0x6d, 0xf3, 0xcd, 0x9e, 0x72, 0x68, 0xcc, +0x97, 0xa4, 0x0f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x35, 0x01, 0x22, 0x21, 0x07, 0x09, 0xa3, +0xd9, 0x0d, 0x1b, 0x47, 0x9d, 0x07, 0x90, 0x40, +0xfe, 0x24, 0x4f, 0x7d, 0xef, 0xb0, 0xc2, 0x93, +0xd4, 0xff, 0xcd, 0x75, 0xdb, 0xb2, 0x4f, 0x24, +0xe1, 0xf0, 0x07, 0x9d, 0x43, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x56, +0x76, 0x2c, 0xcb, 0xee, 0xec, 0x74, 0xeb, 0x4a, +0x66, 0xf3, 0xfd, 0x1b, 0xc5, 0x76, 0x76, 0xe5, +0x6c, 0x00, 0xea, 0x1d, 0x1c, 0xf4, 0xb6, 0x71, +0x2e, 0x98, 0x6c, 0xf2, 0xa3, 0xea, 0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, -0x21, 0x3f, 0xc7, 0x88, 0xc7, 0xfb, 0x58, 0xac, -0x35, 0xf3, 0x9d, 0x6a, 0x20, 0xe3, 0x91, 0x27, -0xd7, 0xa5, 0x7a, 0x47, 0xb1, 0xf1, 0x11, 0x20, -0x12, 0x81, 0xef, 0x3a, 0x31, 0xd3, 0xdb, 0x1f, -0x16, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, -0x01, 0x22, 0x21, 0x16, 0xa5, 0x78, 0xec, 0x26, -0xf5, 0xf0, 0x93, 0x5d, 0xc2, 0xa7, 0xc5, 0x80, -0xd6, 0x8a, 0x48, 0x0b, 0x2e, 0xe9, 0x92, 0x0c, -0x85, 0x6f, 0xee, 0x8d, 0x41, 0x07, 0x1d, 0x90, -0x9f, 0x5e, 0xf9, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x39, 0x01, 0x22, 0x21, 0x91, 0xcb, 0x08, -0x41, 0xfd, 0xf6, 0x16, 0x6b, 0xae, 0x55, 0x82, -0x5a, 0x14, 0x14, 0xa3, 0xc0, 0xae, 0x43, 0x15, -0x33, 0x17, 0x27, 0x45, 0x1c, 0x93, 0x3c, 0x9f, -0x9a, 0xe1, 0x63, 0x6c, 0x19, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0xc1, -0x7c, 0xea, 0xd7, 0x52, 0xfc, 0x44, 0xa9, 0xd1, -0x12, 0xe4, 0x23, 0x14, 0x4a, 0x40, 0xb4, 0x78, -0x38, 0xf6, 0x07, 0x22, 0x83, 0x81, 0x86, 0x94, -0x20, 0xca, 0x02, 0xe9, 0x8a, 0xce, 0x24, 0x00, +0x21, 0x99, 0x3a, 0x68, 0x59, 0x64, 0x0a, 0xbb, +0xc5, 0x5a, 0x78, 0x26, 0x78, 0x77, 0x6d, 0xeb, +0x77, 0xcb, 0x95, 0x7f, 0xfd, 0xd9, 0xaf, 0x98, +0x11, 0xe9, 0x2f, 0x87, 0xff, 0xa1, 0x6f, 0x5b, +0x49, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, +0x01, 0x22, 0x21, 0x77, 0xd1, 0xfd, 0x60, 0xc6, +0x84, 0x84, 0x05, 0x09, 0x05, 0x00, 0x51, 0x6f, +0x6f, 0x61, 0x91, 0xd2, 0xfd, 0x85, 0xf8, 0xd2, +0x83, 0xdf, 0xea, 0xb3, 0x37, 0x85, 0xe2, 0x47, +0x84, 0xfc, 0x1f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x39, 0x01, 0x22, 0x21, 0xa5, 0x1b, 0x9a, +0xf9, 0x2b, 0xd6, 0x10, 0x75, 0xab, 0xee, 0x96, +0x48, 0x21, 0x83, 0xdf, 0x08, 0x8c, 0x6b, 0xb1, +0xc3, 0x62, 0xe2, 0xc4, 0x72, 0xe1, 0xa0, 0xd8, +0x30, 0x41, 0x9f, 0xcb, 0x80, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0x41, +0x18, 0x56, 0xcd, 0xb8, 0x27, 0xe5, 0xb9, 0xbb, +0x75, 0x9b, 0x38, 0x4b, 0x0e, 0xae, 0x31, 0x9d, +0x89, 0x03, 0x41, 0x83, 0x12, 0x23, 0xd2, 0x5d, +0xbb, 0x14, 0x3e, 0xdc, 0x7d, 0x57, 0x3b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, -0x21, 0x3f, 0x41, 0xaa, 0x86, 0xe3, 0xa0, 0xcb, -0x33, 0x31, 0x8b, 0x12, 0xe9, 0x2d, 0xdd, 0xce, -0x75, 0xf1, 0x43, 0x36, 0xc7, 0x3c, 0xd1, 0x08, -0xf9, 0x53, 0x98, 0x0c, 0xf2, 0x1d, 0x3e, 0xeb, -0xbb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, -0x01, 0x22, 0x21, 0x5f, 0xaf, 0x11, 0xc9, 0xad, -0xc5, 0xfd, 0xa6, 0xf6, 0x3b, 0x77, 0x3d, 0x5e, -0x82, 0x1d, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x74, 0x4d, 0xa3, 0x92, -0x3e, 0x16, 0x5b, 0xdc, 0x03, 0x04, 0x51, 0x02, -0x00, 0x3d, 0x01, 0x22, 0x21, 0x03, 0xfc, 0xb1, -0x4a, 0x75, 0x5e, 0x55, 0x6e, 0x3d, 0x5b, 0xbd, -0xe6, 0x4c, 0x3e, 0x9c, 0xbf, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7d, -0x5e, 0x10, 0x7a, 0x61, 0x52, 0xb3, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x42, -0x24, 0x02, 0x99, 0x80, 0x02, 0x40, 0xf8, 0x82, -0x2b, 0x97, 0x86, 0xbd, 0xbd, 0xd1, 0xfb, 0x48, -0xe5, 0xf7, 0x1d, 0x16, 0x13, 0x24, 0xf5, 0xb2, -0x23, 0xf3, 0x3c, 0x9e, 0x16, 0x62, 0xb3, 0x00, +0x21, 0xf5, 0x3e, 0xf0, 0x0e, 0x3a, 0x4a, 0x29, +0x22, 0x14, 0x66, 0xda, 0xac, 0x53, 0xf5, 0xa2, +0x26, 0x69, 0x55, 0xfc, 0x21, 0x27, 0x65, 0x4e, +0x30, 0xbc, 0x05, 0xa9, 0x42, 0x44, 0x7b, 0x87, +0x11, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, +0x01, 0x22, 0x21, 0x4a, 0x5c, 0x1a, 0xac, 0x4f, +0xb9, 0x03, 0x89, 0x5b, 0x2c, 0x73, 0x8a, 0xf1, +0x45, 0x5a, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x25, 0x37, 0x20, 0x7e, +0x5d, 0xa3, 0x8a, 0xd7, 0x03, 0x04, 0x51, 0x02, +0x00, 0x3d, 0x01, 0x22, 0x21, 0x7b, 0x68, 0x08, +0x8e, 0x42, 0x4f, 0xfa, 0x28, 0x3e, 0x86, 0xb4, +0x0c, 0xd9, 0x6d, 0x11, 0xd7, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x8d, +0xfe, 0x9a, 0xe0, 0x64, 0xd3, 0xc1, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0xc8, +0xf9, 0x1a, 0xc6, 0xfa, 0xea, 0x9d, 0xa5, 0xd8, +0x22, 0x2f, 0x60, 0xca, 0xee, 0x49, 0xd8, 0xc2, +0x19, 0x9d, 0xbf, 0xec, 0x3d, 0x3d, 0xf9, 0xba, +0x07, 0x32, 0x45, 0x9c, 0xd1, 0x60, 0xcc, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, -0x21, 0xe3, 0xe2, 0x4c, 0x78, 0x99, 0x86, 0x24, -0x58, 0x87, 0xe6, 0xa5, 0x9b, 0xbf, 0xa8, 0xcd, -0xce, 0xcd, 0xd3, 0x55, 0x8c, 0x4d, 0xb1, 0x2b, -0x5f, 0x5b, 0x31, 0x2a, 0x1c, 0x59, 0xeb, 0x78, -0x02, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, -0x01, 0x22, 0x21, 0xf5, 0x66, 0x9f, 0xa3, 0x23, -0xe0, 0x49, 0x1f, 0x7b, 0x26, 0xf6, 0x88, 0x31, -0x98, 0xf9, 0x70, 0x83, 0x2f, 0xcd, 0xd3, 0x50, -0xc7, 0xde, 0x86, 0xf8, 0x5c, 0x9e, 0x16, 0xf9, -0xd5, 0xc6, 0x7b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x41, 0x01, 0x22, 0x21, 0x10, 0x61, 0x14, -0xe0, 0x48, 0x95, 0xc6, 0xe4, 0x7e, 0x0a, 0x78, -0x46, 0xd8, 0x20, 0xcf, 0xc2, 0x5a, 0xfb, 0xb9, -0x58, 0xb8, 0x07, 0x24, 0x09, 0x18, 0x7e, 0x7a, -0xf1, 0xbd, 0x78, 0x4c, 0xee, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0x34, -0xb9, 0xc5, 0x8b, 0x01, 0x20, 0xf3, 0xcc, 0xf4, -0xc1, 0x73, 0x51, 0x85, 0x6e, 0x3e, 0xd6, 0x71, -0xb6, 0x18, 0x9f, 0x0f, 0x11, 0x5e, 0x83, 0x7c, -0x6b, 0x92, 0x24, 0xb1, 0xe5, 0x4a, 0xa5, 0x00, +0x21, 0x7b, 0xa5, 0x40, 0x16, 0x39, 0xe7, 0x64, +0x36, 0x85, 0xca, 0x85, 0xcc, 0xdb, 0x10, 0x63, +0x66, 0x17, 0x27, 0x26, 0x81, 0x1f, 0xbd, 0xc1, +0x9b, 0x6f, 0xbc, 0x58, 0x5c, 0xcd, 0x36, 0xce, +0x70, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, +0x01, 0x22, 0x21, 0xe6, 0x4a, 0x33, 0xc7, 0x28, +0x23, 0xaf, 0xed, 0xc4, 0x14, 0x35, 0x9d, 0x1f, +0x51, 0xc4, 0xfb, 0xbb, 0x11, 0xed, 0xff, 0xf9, +0xf7, 0xd2, 0x52, 0x09, 0x7b, 0xce, 0xc3, 0x9c, +0x9e, 0x51, 0x45, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x41, 0x01, 0x22, 0x21, 0xc7, 0x11, 0xc1, +0xb7, 0x95, 0x95, 0x86, 0x73, 0xad, 0x9a, 0x83, +0x61, 0xf7, 0x3c, 0xea, 0xd3, 0xd2, 0x97, 0x13, +0xd3, 0x76, 0x17, 0x1b, 0xfc, 0x70, 0xd7, 0xec, +0x6a, 0xdf, 0xb7, 0x5c, 0xc5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0x4f, +0x2e, 0xa9, 0x3d, 0x0e, 0x52, 0x8e, 0x32, 0x95, +0xe3, 0x7f, 0x41, 0x73, 0x85, 0x35, 0x33, 0x3c, +0x70, 0xbd, 0x6c, 0xd8, 0x32, 0x2c, 0xf7, 0x24, +0x34, 0x08, 0xd6, 0xcd, 0xac, 0xdf, 0x06, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, -0x21, 0xe9, 0x69, 0x4b, 0x06, 0xe4, 0xc3, 0x0b, -0x53, 0xbb, 0xf1, 0xeb, 0x06, 0x96, 0xb3, 0x71, -0xce, 0xc4, 0x61, 0x81, 0x66, 0x85, 0xb3, 0x95, -0xeb, 0x7c, 0x67, 0x0e, 0x6f, 0x3e, 0x4b, 0xc5, -0x95, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, -0x01, 0x22, 0x21, 0x27, 0xb3, 0xa2, 0xb0, 0x78, -0xd6, 0x4d, 0xa4, 0x39, 0x6d, 0xcb, 0x8f, 0xa8, -0xed, 0x60, 0xbb, 0xbb, 0x70, 0xdb, 0x6e, 0x76, -0x4d, 0xc0, 0x92, 0xd5, 0x81, 0x56, 0x1f, 0x71, -0xff, 0x3a, 0xe6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x45, 0x01, 0x22, 0x21, 0x5c, 0xda, 0x4d, -0xca, 0xec, 0xb5, 0xf1, 0x08, 0xc4, 0xd5, 0x96, -0x36, 0x28, 0x64, 0xf3, 0x78, 0xb9, 0x40, 0x93, -0x39, 0xa1, 0x8a, 0x09, 0xa6, 0x14, 0xf1, 0xef, -0xee, 0x3e, 0xce, 0x8b, 0xce, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0xb4, -0xd5, 0xba, 0xbc, 0x85, 0xfc, 0x95, 0xe4, 0xff, -0xdc, 0x9c, 0xe0, 0xc1, 0xb9, 0xf1, 0x19, 0x82, -0x92, 0xde, 0x3c, 0xbb, 0x19, 0x83, 0xed, 0x18, -0xf6, 0x5f, 0xfe, 0x82, 0x8c, 0x31, 0x3d, 0x00, +0x21, 0xc4, 0xa5, 0x2f, 0x68, 0x86, 0x67, 0xd4, +0xe7, 0x7a, 0xcd, 0x2e, 0x6e, 0xe0, 0x34, 0xfb, +0x59, 0x97, 0xc6, 0x55, 0x1e, 0xe8, 0x8a, 0x5e, +0x19, 0xae, 0x8b, 0x28, 0x70, 0x17, 0xce, 0xaf, +0x23, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, +0x01, 0x22, 0x21, 0xca, 0x14, 0x5c, 0x36, 0xa5, +0xc4, 0xc1, 0x0a, 0x46, 0xb9, 0x47, 0x54, 0x77, +0xad, 0x3c, 0x56, 0xe2, 0x73, 0x5e, 0xc9, 0x97, +0x04, 0x8d, 0x39, 0xdc, 0x93, 0xad, 0x6a, 0x9d, +0xa4, 0xb3, 0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x45, 0x01, 0x22, 0x21, 0x5c, 0xfe, 0xb4, +0x1e, 0x24, 0x25, 0x64, 0x72, 0x45, 0xa4, 0x4c, +0x11, 0x00, 0x46, 0x82, 0x1d, 0x75, 0xef, 0xef, +0x11, 0x11, 0x4d, 0xef, 0x60, 0x1c, 0x16, 0xd5, +0x7e, 0x80, 0x2b, 0x79, 0x37, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0x19, +0x00, 0x70, 0xc9, 0xe1, 0x81, 0x46, 0xaa, 0xac, +0x4e, 0x46, 0x3c, 0x2d, 0x26, 0xe2, 0x7c, 0x1d, +0xed, 0x3b, 0x6e, 0x6a, 0x92, 0xdb, 0x1e, 0x07, +0x70, 0x3e, 0x27, 0xa0, 0x7f, 0x7f, 0xa4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, -0x21, 0xb7, 0x30, 0x22, 0x43, 0x30, 0x66, 0x6c, -0x65, 0x92, 0xba, 0x66, 0x6f, 0xbc, 0x74, 0x08, -0xd5, 0xcd, 0x6f, 0x12, 0x00, 0x48, 0x44, 0x02, -0xa3, 0xae, 0x3f, 0x67, 0x22, 0x47, 0x10, 0x85, -0xb7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, -0x01, 0x22, 0x21, 0x1f, 0xc9, 0xf5, 0xd5, 0x75, -0xe5, 0x77, 0x32, 0x4d, 0xf1, 0x0c, 0x10, 0xe4, -0x4f, 0x6d, 0x59, 0x89, 0x24, 0xec, 0xeb, 0xb3, -0x33, 0x3d, 0xae, 0xa1, 0xfa, 0x03, 0x98, 0xf0, -0x34, 0xef, 0x55, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x49, 0x01, 0x22, 0x21, 0x57, 0x1a, 0x3f, -0x29, 0x28, 0x75, 0x58, 0x90, 0xe1, 0xc4, 0x4e, -0x8e, 0x40, 0x48, 0x61, 0x00, 0xed, 0xb6, 0xcb, -0x4b, 0x86, 0x77, 0xdc, 0xa4, 0x99, 0x60, 0x0c, -0xd2, 0x79, 0x53, 0xc6, 0xa2, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0x72, -0x13, 0x52, 0xe0, 0x3d, 0xf0, 0x76, 0x30, 0x96, -0xe7, 0xcb, 0xe2, 0xe9, 0xc3, 0x6a, 0x61, 0x1c, -0xf2, 0x51, 0xf0, 0xa3, 0x56, 0x27, 0xa1, 0x4e, -0xaa, 0xc5, 0x28, 0x11, 0x29, 0x24, 0xa4, 0x00, +0x21, 0x9c, 0xe9, 0xdc, 0x7e, 0xa1, 0x78, 0x2d, +0x4c, 0x57, 0xd7, 0x1a, 0x40, 0xe3, 0x9b, 0x7b, +0xaa, 0xb2, 0x65, 0xcc, 0x83, 0x0b, 0x52, 0xf2, +0x99, 0x83, 0x9d, 0x5d, 0x50, 0x19, 0x22, 0xb4, +0xe1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, +0x01, 0x22, 0x21, 0xbb, 0x5d, 0x7b, 0xbb, 0xfb, +0x57, 0x14, 0xf2, 0x6e, 0x15, 0x2a, 0xf0, 0x0d, +0x58, 0xed, 0xaf, 0x6f, 0x33, 0x29, 0x5c, 0x30, +0x28, 0x6b, 0x46, 0x0a, 0x6e, 0x9e, 0x4f, 0x3a, +0x3b, 0x3e, 0x12, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x49, 0x01, 0x22, 0x21, 0x73, 0x46, 0x31, +0xb0, 0x64, 0xe7, 0x9a, 0x3c, 0x6e, 0x25, 0x4d, +0xf0, 0x6f, 0x2e, 0x60, 0x2e, 0x5d, 0x5d, 0x18, +0x54, 0x42, 0xbf, 0x26, 0x6f, 0x97, 0xcc, 0xc6, +0x89, 0x9a, 0xd2, 0x0c, 0x45, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0x98, +0x7b, 0x53, 0xf4, 0x0f, 0x3b, 0xed, 0x3f, 0x45, +0x25, 0x5f, 0x63, 0x3c, 0xb5, 0x4c, 0x90, 0x2c, +0x0e, 0x12, 0x53, 0xb4, 0x14, 0xdb, 0x02, 0xef, +0x81, 0x82, 0x74, 0x77, 0x38, 0xec, 0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, -0x21, 0x4a, 0x54, 0xf5, 0x55, 0x3b, 0x8a, 0xb1, -0x53, 0x50, 0x34, 0x87, 0xf8, 0x66, 0x7e, 0xde, -0xa4, 0x01, 0x6c, 0x8e, 0x19, 0x97, 0x83, 0x96, -0x2e, 0x7c, 0x33, 0x18, 0xc3, 0xdc, 0x3e, 0x6d, -0xe6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, -0x01, 0x22, 0x21, 0xca, 0xe6, 0x6b, 0x22, 0xe4, -0xf6, 0x24, 0x6f, 0xde, 0x7d, 0x60, 0xbf, 0x9f, -0x7d, 0x9d, 0xbf, 0x3e, 0x74, 0x3b, 0xdd, 0x5e, -0x20, 0xd5, 0x93, 0x47, 0x47, 0xae, 0x7f, 0xb4, -0xed, 0x73, 0x1c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x4d, 0x01, 0x22, 0x21, 0xca, 0x64, 0x00, -0xce, 0xe6, 0x35, 0xd8, 0x5d, 0x86, 0x90, 0x66, -0x8a, 0x9a, 0xec, 0x91, 0xe4, 0xb0, 0x0f, 0xa5, -0x0d, 0x8d, 0xf3, 0x60, 0xbb, 0x24, 0x3f, 0xc8, -0xdb, 0xa0, 0x65, 0x41, 0x1b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0x25, -0x9e, 0xd7, 0xea, 0x1c, 0xb8, 0xd6, 0xaa, 0xc7, -0xef, 0xf0, 0xcc, 0x60, 0x7d, 0x30, 0x9d, 0x6d, -0x8d, 0x6a, 0xb9, 0x66, 0x77, 0x16, 0x69, 0x40, -0x3a, 0x00, 0x88, 0xfb, 0x93, 0xb2, 0x6f, 0x00, +0x21, 0xa0, 0x5d, 0x74, 0x43, 0xc2, 0x29, 0xf0, +0x9a, 0x84, 0xef, 0x24, 0x98, 0x78, 0x4d, 0xcd, +0x27, 0x68, 0x5a, 0x24, 0x95, 0x9f, 0xe0, 0x11, +0x70, 0xda, 0xc8, 0xb1, 0xd1, 0xa3, 0xb7, 0x66, +0x70, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, +0x01, 0x22, 0x21, 0x26, 0xe9, 0x25, 0xd9, 0xdd, +0xa6, 0x70, 0xcb, 0x63, 0x28, 0x19, 0xe9, 0x60, +0x21, 0xfc, 0x13, 0xf6, 0xc6, 0xce, 0xf6, 0xa1, +0xda, 0x32, 0xba, 0x91, 0x1c, 0x7b, 0x97, 0x65, +0x0c, 0x4e, 0x4d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x4d, 0x01, 0x22, 0x21, 0x9a, 0xe4, 0xc8, +0x33, 0x0b, 0x7f, 0xee, 0xc6, 0x8a, 0x1c, 0x0a, +0x0a, 0x7b, 0x6b, 0x52, 0x36, 0x37, 0x7a, 0x5c, +0xb1, 0xd4, 0xba, 0xd7, 0xeb, 0xf6, 0x11, 0xb5, +0x54, 0x2e, 0x62, 0x4f, 0x08, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0xe7, +0x3c, 0x6a, 0xfd, 0xe3, 0x9b, 0x94, 0x42, 0x88, +0x12, 0x8a, 0xb8, 0x0f, 0x9a, 0x58, 0xfd, 0x72, +0x2b, 0x59, 0x32, 0xbc, 0x9a, 0xb0, 0x71, 0xe8, +0xb2, 0xf9, 0x14, 0xcf, 0x94, 0xd0, 0x5e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, -0x21, 0xec, 0x94, 0x67, 0xb5, 0xa6, 0x11, 0xde, -0x25, 0x13, 0x41, 0x7a, 0x38, 0xeb, 0x13, 0x28, -0xeb, 0xfb, 0x7f, 0xb6, 0x8f, 0x1d, 0x58, 0x70, -0x9c, 0xce, 0xbf, 0xb8, 0x45, 0x97, 0x74, 0x0d, -0xd6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, -0x01, 0x22, 0x21, 0xd2, 0xf5, 0xc6, 0xfa, 0xe7, -0x5f, 0xe6, 0x64, 0xc7, 0x05, 0x76, 0xdc, 0xfe, -0x56, 0x73, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x3a, 0xa4, 0x9f, 0x93, -0xd6, 0x2a, 0x4a, 0x17, 0x03, 0x04, 0x51, 0x02, -0x00, 0x51, 0x01, 0x22, 0x21, 0x95, 0x50, 0xfa, -0x17, 0x11, 0x59, 0x63, 0xfc, 0xc4, 0x5e, 0xdc, -0x93, 0x35, 0x54, 0x6a, 0x15, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0xc8, -0x4c, 0xfa, 0x2e, 0x7d, 0xb8, 0xda, 0x03, 0x04, -0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0xce, -0xbf, 0x49, 0xa1, 0xaa, 0xd1, 0x48, 0xd1, 0xdd, -0x8e, 0x70, 0x92, 0xba, 0x89, 0xaa, 0xec, 0xf6, -0x79, 0x6f, 0x46, 0xa4, 0x28, 0x29, 0xbe, 0xcc, -0xef, 0xe1, 0x70, 0x85, 0x9d, 0x26, 0x5d, 0x00, +0x21, 0x87, 0x30, 0x50, 0x71, 0xf5, 0x77, 0x2c, +0x91, 0xa5, 0xcc, 0x55, 0x13, 0xc6, 0x56, 0xad, +0xfb, 0x1c, 0x81, 0x11, 0x3c, 0xd6, 0xb9, 0x84, +0xa6, 0x6a, 0x8b, 0x41, 0x8e, 0x5d, 0x62, 0xa5, +0x5b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, +0x01, 0x22, 0x21, 0x4d, 0x27, 0x16, 0x4d, 0xa2, +0xaf, 0x75, 0xe3, 0x2d, 0xae, 0x83, 0x86, 0xcc, +0xda, 0x4f, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x9c, 0xa2, 0xc0, 0xec, +0x91, 0x1f, 0x85, 0x06, 0x03, 0x04, 0x51, 0x02, +0x00, 0x51, 0x01, 0x22, 0x21, 0x5e, 0x34, 0x54, +0x1d, 0x43, 0x11, 0x47, 0x4c, 0x88, 0x41, 0x43, +0x1f, 0x4b, 0x0b, 0xbb, 0x46, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x69, +0x2f, 0x08, 0xc7, 0x9f, 0xcc, 0x44, 0x03, 0x04, +0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0x29, +0x5a, 0xd0, 0x0f, 0x00, 0x51, 0x22, 0x78, 0xe0, +0x78, 0xf4, 0xeb, 0xcf, 0xa6, 0xa0, 0x04, 0xbe, +0x90, 0x44, 0x07, 0xeb, 0x42, 0x24, 0x8b, 0xfc, +0xba, 0xcd, 0xe0, 0xd4, 0x46, 0xc3, 0x55, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, -0x21, 0x6e, 0x46, 0x95, 0x23, 0x00, 0xd9, 0x6b, -0x64, 0xba, 0x3d, 0xf7, 0x40, 0x34, 0x80, 0x61, -0xfb, 0xa1, 0xa5, 0x71, 0x25, 0xc1, 0x6c, 0xec, -0x0f, 0xa4, 0xdc, 0xd2, 0xbc, 0xf6, 0xec, 0x15, -0xa6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, -0x01, 0x22, 0x21, 0xd2, 0x7d, 0x89, 0xfb, 0x7f, -0xf5, 0xa5, 0x2e, 0x00, 0x1b, 0x44, 0x49, 0x35, -0x17, 0x3d, 0xf6, 0xbd, 0xa9, 0x7f, 0xea, 0x1a, -0xd7, 0x72, 0xc9, 0x4b, 0x73, 0x15, 0xac, 0x7f, -0xe1, 0xd5, 0xc3, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x55, 0x01, 0x22, 0x21, 0xaf, 0x17, 0x7d, -0xc0, 0x29, 0xa2, 0xdd, 0x04, 0xb3, 0x97, 0x56, -0x39, 0x4f, 0x66, 0xb8, 0x1b, 0xa7, 0x86, 0xe6, -0x6b, 0xd0, 0xad, 0x94, 0xae, 0xeb, 0x9f, 0x0a, -0x98, 0xd5, 0x1b, 0x99, 0xa4, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x96, -0xc2, 0x21, 0x44, 0x14, 0x6d, 0x81, 0x22, 0x77, -0x3b, 0x6a, 0x40, 0x9e, 0x1d, 0x67, 0x15, 0x67, -0x5a, 0xfc, 0x63, 0xf1, 0xaa, 0xf5, 0x23, 0xc4, -0x35, 0xbc, 0x1a, 0xc3, 0xe1, 0x5c, 0xec, 0x00, +0x21, 0x2a, 0x92, 0xfd, 0x7d, 0x57, 0x74, 0xd2, +0x2a, 0xbf, 0x68, 0x0c, 0xba, 0xb2, 0x35, 0xd4, +0x3e, 0x86, 0xd4, 0x76, 0x6a, 0xfd, 0x53, 0x00, +0x84, 0xf7, 0xe3, 0x31, 0x76, 0x1c, 0x0a, 0x32, +0x68, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, +0x01, 0x22, 0x21, 0x51, 0x81, 0x65, 0xc7, 0xc0, +0x77, 0x03, 0xf0, 0xee, 0xf5, 0x7a, 0x40, 0x62, +0x6b, 0xaf, 0x2d, 0x2c, 0x5f, 0x11, 0xc6, 0x6f, +0xbe, 0x67, 0x5c, 0x4e, 0xd5, 0xc7, 0xca, 0xfa, +0x77, 0x7e, 0xf8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x55, 0x01, 0x22, 0x21, 0x4d, 0x16, 0x0a, +0x93, 0x9e, 0x5a, 0xb1, 0x02, 0xea, 0x44, 0xe3, +0x5b, 0x37, 0xf4, 0x9b, 0x1e, 0x25, 0x23, 0x7d, +0x36, 0xef, 0xe1, 0x71, 0xd3, 0xc1, 0xbb, 0xf9, +0x22, 0xab, 0x9d, 0x90, 0x69, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x8b, +0x5c, 0x5a, 0xf4, 0x92, 0xa2, 0xde, 0xcd, 0xd2, +0x69, 0x2e, 0xdf, 0x35, 0x4d, 0x47, 0xe5, 0x08, +0xbf, 0xc5, 0xc5, 0x87, 0x50, 0xeb, 0xf3, 0x44, +0xab, 0xa7, 0x41, 0x0a, 0xdd, 0x44, 0x52, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, -0x21, 0xee, 0xa0, 0xb8, 0x82, 0x95, 0xda, 0xd2, -0xe0, 0x4c, 0x1d, 0xc4, 0xbd, 0x86, 0x90, 0xcf, -0x67, 0x27, 0x18, 0xb4, 0x5d, 0x85, 0x96, 0x36, -0x43, 0xb5, 0x9f, 0x49, 0xd9, 0x3d, 0x01, 0x14, -0xd1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, -0x01, 0x22, 0x21, 0x10, 0xe1, 0xfc, 0xdd, 0xe1, -0x4e, 0xdf, 0x87, 0xf6, 0x8b, 0x9b, 0xde, 0x8a, -0xfb, 0xb2, 0x0d, 0xe5, 0xb9, 0xc8, 0x25, 0x27, -0x47, 0xe1, 0x1b, 0x1e, 0xfd, 0x78, 0x82, 0x62, -0xc8, 0x98, 0x54, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x59, 0x01, 0x22, 0x21, 0x42, 0x7f, 0xef, -0x49, 0xba, 0x3c, 0x33, 0x72, 0x6e, 0x95, 0x47, -0x5a, 0x34, 0xd5, 0x09, 0x51, 0xf8, 0xbf, 0xc2, -0x17, 0xfd, 0xef, 0x55, 0x28, 0xbb, 0x66, 0xf0, -0x56, 0x32, 0x24, 0xa4, 0x6d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0xc7, -0xd2, 0xf2, 0xd7, 0x90, 0xa4, 0xa1, 0xaa, 0xe1, -0x80, 0xf8, 0xba, 0x6a, 0x6f, 0xec, 0xe7, 0x8f, -0xa8, 0xb2, 0x7d, 0x5d, 0xbb, 0x61, 0x3e, 0x41, -0xbe, 0xe4, 0x9a, 0xa3, 0xc0, 0x5f, 0x8a, 0x00, +0x21, 0xb1, 0xef, 0x91, 0x22, 0x87, 0x8f, 0x57, +0x98, 0x68, 0x11, 0x52, 0xc5, 0x9e, 0xf3, 0xdc, +0x78, 0x92, 0x11, 0x30, 0x36, 0xef, 0x73, 0x47, +0xbe, 0x07, 0x2d, 0x69, 0xa4, 0x63, 0x31, 0xae, +0xf5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, +0x01, 0x22, 0x21, 0x6d, 0xdd, 0x8f, 0xe4, 0x7f, +0x45, 0x80, 0x6f, 0xa6, 0x22, 0x87, 0x83, 0x18, +0x06, 0x43, 0x46, 0x6e, 0xa8, 0xc8, 0x67, 0x71, +0x04, 0xd7, 0x67, 0x7e, 0x55, 0x14, 0x32, 0xd4, +0x46, 0x2e, 0x35, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x59, 0x01, 0x22, 0x21, 0x88, 0x8f, 0x49, +0x33, 0x53, 0xd2, 0xcf, 0x6f, 0x9f, 0x03, 0x80, +0xe1, 0x3e, 0xf9, 0xd5, 0xaa, 0x69, 0x98, 0x2f, +0x97, 0xf7, 0x0e, 0x5b, 0x1f, 0x40, 0x06, 0xc7, +0xf6, 0x3c, 0x5d, 0xc1, 0xbd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x2d, +0xc8, 0xd3, 0xd1, 0xf4, 0x3f, 0x0f, 0x5d, 0x3f, +0x3c, 0x2c, 0x1f, 0x34, 0xb6, 0xb4, 0xa7, 0xcc, +0x37, 0x20, 0xc3, 0x12, 0xb1, 0xea, 0x18, 0x7d, +0x51, 0x6c, 0xe2, 0x73, 0xc5, 0xc5, 0x66, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, -0x21, 0x5c, 0xb3, 0xb2, 0xb5, 0x27, 0xd5, 0xf1, -0xa4, 0x9e, 0x52, 0xf9, 0xe1, 0x97, 0x0f, 0x20, -0xd7, 0x7d, 0xec, 0xd7, 0xd9, 0x38, 0x6f, 0x3f, -0x8f, 0x13, 0x9d, 0xeb, 0xc3, 0xa1, 0xeb, 0xd3, -0x65, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, -0x01, 0x22, 0x21, 0xef, 0x0b, 0x6a, 0x4f, 0xb8, -0x83, 0xb5, 0x04, 0xe2, 0x29, 0x37, 0x3a, 0x71, -0x52, 0x47, 0x81, 0xfc, 0x4c, 0x34, 0x43, 0x03, -0x3e, 0x15, 0x0d, 0x73, 0x72, 0xe9, 0x0d, 0xab, -0x42, 0x70, 0x47, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x5d, 0x01, 0x22, 0x21, 0x13, 0x52, 0xcf, -0xc2, 0x22, 0x92, 0x63, 0x58, 0x41, 0x68, 0x18, -0xcf, 0xc4, 0x8e, 0x53, 0xa4, 0x70, 0xd0, 0x2c, -0xf8, 0xc5, 0xec, 0x2d, 0x3f, 0xfe, 0x6d, 0x07, -0xa4, 0xbe, 0x0d, 0x33, 0x73, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0x7a, -0xa2, 0x9c, 0x34, 0x70, 0xcb, 0x3a, 0x41, 0x6d, -0x0a, 0xa1, 0x2a, 0xae, 0xa7, 0x75, 0xc3, 0x16, -0xe1, 0xa5, 0xa2, 0xcb, 0xdb, 0x91, 0xe5, 0x35, -0x0c, 0x58, 0xba, 0xe3, 0xe1, 0x2f, 0x85, 0x00, +0x21, 0xe7, 0x50, 0x24, 0x98, 0x18, 0x9f, 0x05, +0xae, 0x87, 0x9f, 0xd9, 0xc4, 0x1a, 0x40, 0xea, +0x86, 0x57, 0xa0, 0xee, 0x44, 0xdc, 0x13, 0x78, +0xa1, 0xc3, 0xd6, 0xb7, 0x80, 0xef, 0x3c, 0x44, +0xf8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, +0x01, 0x22, 0x21, 0xfa, 0xf5, 0x27, 0x9c, 0xa3, +0x92, 0x8b, 0x78, 0x04, 0xf2, 0x8c, 0x26, 0x34, +0x89, 0x1e, 0x48, 0xc8, 0x7a, 0xdc, 0x0f, 0x69, +0x4a, 0x69, 0x49, 0x64, 0x0c, 0xe2, 0x36, 0x1b, +0x9c, 0xe2, 0x5f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x5d, 0x01, 0x22, 0x21, 0xaa, 0xb3, 0xd6, +0x42, 0x56, 0xd1, 0x4a, 0x15, 0x0a, 0x78, 0xcc, +0x66, 0xba, 0x83, 0x81, 0x76, 0x8d, 0x71, 0x7a, +0xca, 0x4e, 0x5b, 0x78, 0xa1, 0xff, 0x1a, 0x5a, +0x8d, 0x34, 0x31, 0x40, 0xae, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0x14, +0xd9, 0x40, 0xbf, 0x7b, 0x55, 0x20, 0xf5, 0x60, +0x66, 0xa2, 0x97, 0xd0, 0x13, 0x8d, 0xb8, 0xf4, +0x33, 0x9c, 0x9c, 0x10, 0xd9, 0xf0, 0xfe, 0xc1, +0x29, 0x41, 0x49, 0x6c, 0xad, 0x4e, 0xe1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, -0x21, 0xfc, 0xac, 0xb5, 0x03, 0xaf, 0x66, 0xf4, -0xde, 0x7a, 0x06, 0x4d, 0xd7, 0xde, 0xc2, 0x89, -0xba, 0xc1, 0xb8, 0x0e, 0xef, 0x6e, 0xf8, 0x8c, -0x8e, 0x03, 0xa4, 0x30, 0x2a, 0x2e, 0xdf, 0xbd, -0xb1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, -0x01, 0x22, 0x21, 0xdc, 0x22, 0xce, 0xd5, 0x9f, -0xfa, 0x42, 0x5c, 0x41, 0x4f, 0xa4, 0x17, 0x48, -0x17, 0x44, 0x4a, 0xe5, 0x64, 0xb9, 0x8b, 0xd0, -0xb2, 0x64, 0x31, 0xaf, 0x50, 0xeb, 0x7f, 0xa1, -0x1b, 0xfc, 0x13, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x61, 0x01, 0x22, 0x21, 0xea, 0x01, 0x8b, -0x33, 0xcb, 0xdc, 0x6c, 0xe5, 0x7a, 0xa9, 0x8c, -0x7f, 0x3c, 0xc1, 0x27, 0xca, 0x28, 0x56, 0x67, -0xd6, 0x2b, 0xee, 0xe4, 0x53, 0x52, 0xed, 0x16, -0x03, 0xe3, 0x67, 0x82, 0x47, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x1f, -0x99, 0x71, 0xf9, 0xc7, 0x59, 0xfb, 0x2f, 0x4a, -0x57, 0x85, 0xe3, 0x4e, 0x54, 0xda, 0x0d, 0xad, -0x8e, 0x5c, 0x0d, 0xed, 0xd4, 0xf1, 0xad, 0x03, -0x75, 0x8c, 0xac, 0xdf, 0x52, 0x55, 0x69, 0x00, +0x21, 0x4d, 0x0b, 0xb4, 0x92, 0xa9, 0x2c, 0x01, +0x7e, 0xf6, 0x1f, 0x6a, 0x75, 0x74, 0xf6, 0x2e, +0xd6, 0x98, 0xff, 0x94, 0x51, 0x71, 0x45, 0xff, +0xde, 0xe6, 0xb1, 0xb8, 0xd8, 0xc8, 0x4e, 0x2c, +0x06, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, +0x01, 0x22, 0x21, 0x9e, 0xac, 0x06, 0x7e, 0x47, +0x22, 0x99, 0x99, 0x7a, 0x78, 0x68, 0x29, 0x2c, +0x91, 0x96, 0xc6, 0xb4, 0xbc, 0x64, 0xf9, 0xdd, +0xd5, 0x4f, 0x3f, 0xc5, 0x9b, 0xad, 0xd9, 0x10, +0x6b, 0x3a, 0x2c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x61, 0x01, 0x22, 0x21, 0xea, 0x73, 0xb1, +0x05, 0x13, 0xac, 0xae, 0x0f, 0xc3, 0xdc, 0x23, +0xf0, 0x8f, 0xfb, 0x28, 0x44, 0x92, 0x75, 0xf4, +0x7b, 0x7c, 0x44, 0x94, 0x56, 0x00, 0x1d, 0x74, +0xff, 0xb2, 0x7a, 0x3a, 0xc3, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x03, +0x01, 0x00, 0xa5, 0xb2, 0xd8, 0xeb, 0x00, 0x0c, +0x29, 0x7b, 0x7b, 0x16, 0xd8, 0xff, 0xb3, 0x95, +0x2b, 0x8e, 0x34, 0x85, 0x58, 0xd0, 0x57, 0xa3, +0xc7, 0x02, 0x99, 0xfd, 0xa4, 0x4a, 0x5e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, -0x21, 0x82, 0xcb, 0x77, 0x20, 0xb0, 0x71, 0xbb, -0xf9, 0x9e, 0xee, 0x58, 0x33, 0x0e, 0xb1, 0x89, -0x65, 0xfd, 0x7f, 0x8c, 0x2f, 0xdd, 0x74, 0x9b, -0xd4, 0x73, 0xb2, 0x41, 0x3a, 0xd0, 0x7f, 0x12, -0x00, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, -0x01, 0x22, 0x21, 0x53, 0x49, 0x6f, 0x07, 0xf6, -0x90, 0x1b, 0x00, 0x1e, 0x53, 0x60, 0x42, 0xe4, -0xec, 0x5e, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x5a, 0x26, 0x36, 0xe4, -0xdc, 0x78, 0xef, 0x2e, 0x03, 0x04, 0x51, 0x02, -0x00, 0x65, 0x01, 0x22, 0x21, 0xd3, 0x3a, 0x90, -0xc6, 0x0a, 0xe0, 0x1c, 0xf6, 0x0e, 0xb9, 0xfc, -0x15, 0xf7, 0x54, 0x2d, 0xbb, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x71, -0x20, 0x79, 0x68, 0x2e, 0x67, 0x7d, 0x03, 0x04, -0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0xe6, -0xb2, 0x02, 0x75, 0x94, 0x6b, 0x47, 0x81, 0x05, -0x6a, 0xba, 0x2b, 0xee, 0xe2, 0x5e, 0x5e, 0x34, -0xb4, 0x05, 0x21, 0xd9, 0x82, 0x44, 0xa5, 0xa0, -0x9a, 0x53, 0xf5, 0x16, 0xfc, 0x27, 0xc1, 0x00, +0x21, 0xa7, 0xaa, 0xdc, 0x30, 0xb3, 0x67, 0xc2, +0x78, 0x77, 0x21, 0x5e, 0x14, 0x13, 0xd1, 0x5b, +0xcf, 0x20, 0xea, 0x4d, 0xe3, 0xa7, 0xb0, 0x9b, +0x41, 0x62, 0x83, 0xfc, 0xc1, 0xac, 0x3b, 0x28, +0x25, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, +0x01, 0x22, 0x21, 0xcb, 0x16, 0x5e, 0x89, 0x4e, +0x01, 0xf7, 0xc9, 0x8a, 0xc9, 0x09, 0x1c, 0x65, +0x91, 0xac, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x58, 0xda, 0xd9, 0x41, +0x21, 0xd3, 0xeb, 0x23, 0x03, 0x04, 0x51, 0x02, +0x00, 0x65, 0x01, 0x22, 0x21, 0xd8, 0xbd, 0x0e, +0x49, 0x6e, 0x35, 0x5e, 0x09, 0x0e, 0x96, 0xf0, +0xed, 0x3d, 0xfc, 0xcd, 0xbd, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x2d, +0xf6, 0x1e, 0xae, 0x34, 0x30, 0xb0, 0x03, 0x04, +0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0x90, +0x08, 0xb3, 0x35, 0xa5, 0x18, 0xb0, 0xf9, 0x1b, +0x21, 0x11, 0xae, 0x0a, 0xa5, 0xc4, 0x8e, 0xc7, +0xbf, 0x47, 0xd4, 0xae, 0xe7, 0x20, 0xcd, 0x59, +0xbf, 0x07, 0xd1, 0xd5, 0x3d, 0x30, 0x11, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, -0x21, 0xe0, 0xbf, 0x75, 0x50, 0x02, 0xa5, 0xc1, -0xc2, 0xe1, 0x09, 0x01, 0xbf, 0x40, 0x49, 0xac, -0xa3, 0x79, 0x33, 0x6c, 0x72, 0xe9, 0x24, 0x82, -0x22, 0xec, 0x86, 0x55, 0xdc, 0x33, 0x5b, 0xd8, -0xbc, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, -0x01, 0x22, 0x21, 0x7d, 0x64, 0x32, 0xc1, 0x51, -0x9d, 0x74, 0x99, 0x84, 0xc7, 0x22, 0x0e, 0xfc, -0x09, 0xe3, 0x49, 0xd4, 0x64, 0xf7, 0x0e, 0x76, -0x04, 0x75, 0x80, 0xf8, 0x18, 0x23, 0xd4, 0xb8, -0x74, 0xe0, 0x94, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x69, 0x01, 0x22, 0x21, 0x5c, 0xd5, 0xdd, -0x79, 0x2c, 0x70, 0xc4, 0x34, 0x12, 0xc1, 0x64, -0xd7, 0x3b, 0x24, 0x27, 0xa2, 0x2c, 0xa6, 0xe8, -0x60, 0x38, 0x04, 0x5b, 0xe4, 0x41, 0xc1, 0x7a, -0x2a, 0x33, 0xe2, 0xd9, 0x6f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x7d, -0x8d, 0x50, 0x7b, 0x7c, 0xf8, 0x30, 0xd8, 0x2f, -0xcd, 0xd7, 0x52, 0x86, 0x5b, 0x56, 0x27, 0x9d, -0xa9, 0x06, 0xe8, 0x7b, 0x46, 0x4c, 0xb0, 0x67, -0xdd, 0x07, 0xa9, 0x02, 0x69, 0x07, 0xee, 0x00, +0x21, 0x39, 0x19, 0x59, 0xdc, 0x2b, 0xea, 0x84, +0x9c, 0x25, 0x45, 0x03, 0xed, 0xa3, 0x71, 0x83, +0x1c, 0xca, 0x13, 0xab, 0x15, 0x7c, 0x1a, 0x77, +0x9f, 0xc1, 0x37, 0x8c, 0x40, 0x2e, 0x3d, 0x53, +0x0f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, +0x01, 0x22, 0x21, 0x63, 0x31, 0x37, 0xf6, 0x54, +0xf8, 0x04, 0xa6, 0x4c, 0x53, 0xa5, 0xc9, 0xb7, +0x3a, 0x22, 0x78, 0xef, 0xe8, 0x0f, 0x76, 0x55, +0x95, 0xc9, 0xb5, 0xd1, 0x5f, 0x25, 0x88, 0x66, +0x82, 0xd6, 0xe7, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x69, 0x01, 0x22, 0x21, 0x55, 0x37, 0x88, +0x85, 0x81, 0xce, 0xa4, 0xd9, 0x7c, 0x62, 0x3d, +0xa6, 0x07, 0x95, 0x92, 0x37, 0x41, 0x65, 0x1b, +0x0b, 0x0c, 0xd5, 0x11, 0xd2, 0x7f, 0xeb, 0xda, +0x22, 0x1e, 0x9e, 0x64, 0xe3, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x46, +0x93, 0xc8, 0x6f, 0xad, 0x84, 0xbf, 0x8b, 0x2d, +0xff, 0xc6, 0xe8, 0x08, 0xbc, 0x6c, 0xcc, 0x4c, +0x69, 0xe1, 0xe5, 0xf1, 0x77, 0x17, 0x00, 0xcf, +0xb9, 0x39, 0x77, 0xe9, 0xbd, 0xc7, 0xca, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, -0x21, 0x1a, 0x43, 0xd1, 0x4f, 0x4c, 0x65, 0xb2, -0x08, 0xa8, 0xec, 0x65, 0xa1, 0xbb, 0x11, 0x5a, -0x93, 0xc0, 0x06, 0xed, 0xa7, 0xa4, 0xc2, 0x75, -0x88, 0xb3, 0x71, 0x75, 0xcb, 0x53, 0xe2, 0xe9, -0xe3, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, -0x01, 0x22, 0x21, 0x8f, 0xae, 0x3a, 0x2c, 0x0a, -0x90, 0xc9, 0xe2, 0x4e, 0x1b, 0x85, 0x2a, 0x16, -0x3b, 0x23, 0xc0, 0xdf, 0xf9, 0x74, 0x45, 0x92, -0x89, 0x83, 0xa4, 0x9f, 0x26, 0xaf, 0x38, 0x0a, -0x25, 0xbe, 0xab, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x6d, 0x01, 0x22, 0x21, 0x4e, 0x23, 0x1d, -0x23, 0xc7, 0x36, 0x5c, 0x92, 0x27, 0x9e, 0x2e, -0x22, 0xdc, 0x8e, 0xff, 0xbb, 0x40, 0x36, 0xe0, -0x06, 0x68, 0xd0, 0xcb, 0x3a, 0x48, 0x53, 0xb1, -0x3c, 0xdd, 0x4e, 0x9c, 0x35, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0x5f, -0xab, 0x48, 0x7b, 0xa6, 0xee, 0xff, 0x0b, 0x48, -0xd4, 0xa0, 0x54, 0x8a, 0xff, 0x8d, 0xc6, 0xde, -0xf0, 0x89, 0xef, 0x52, 0x9d, 0xd7, 0x8a, 0xd3, -0xa7, 0xb8, 0x9e, 0xc1, 0x5d, 0x9d, 0x8c, 0x00, +0x21, 0x17, 0x66, 0x19, 0xd0, 0xfc, 0xc9, 0xd6, +0xbe, 0x50, 0xf7, 0x5d, 0xac, 0x06, 0xe5, 0xac, +0x03, 0x0e, 0x56, 0x99, 0x1a, 0xf6, 0x8d, 0x09, +0x62, 0x5e, 0xfe, 0x37, 0x6b, 0x30, 0xc3, 0xf1, +0xd1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, +0x01, 0x22, 0x21, 0x79, 0xac, 0xbf, 0xed, 0x70, +0x74, 0x38, 0xb1, 0xc4, 0xdd, 0xcc, 0x08, 0x34, +0xc3, 0xd5, 0x35, 0x30, 0xa3, 0x33, 0x9d, 0x38, +0x61, 0x45, 0x39, 0xf5, 0xd1, 0xdb, 0x32, 0x0f, +0x0b, 0x27, 0xad, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x6d, 0x01, 0x22, 0x21, 0x79, 0x5b, 0x66, +0xb3, 0x6f, 0x7b, 0x9b, 0x7b, 0x07, 0xc2, 0x05, +0x8b, 0x55, 0xf9, 0xf9, 0x10, 0x79, 0x5d, 0xf6, +0x78, 0x5e, 0xb5, 0x71, 0xa7, 0xb4, 0x3c, 0xc3, +0x33, 0xfb, 0xad, 0x12, 0x82, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0x61, +0x03, 0x76, 0x10, 0x61, 0x5f, 0x2c, 0x9b, 0x72, +0xda, 0xf1, 0x1f, 0xc7, 0x1e, 0x65, 0x5e, 0xe6, +0x18, 0xf3, 0x65, 0xa4, 0x80, 0xaa, 0x45, 0x53, +0x45, 0x85, 0xc2, 0xc3, 0x76, 0xca, 0xfb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, -0x21, 0x2d, 0xd6, 0x9c, 0xe5, 0xbb, 0xd3, 0x20, -0xe7, 0xd2, 0x0f, 0x90, 0x25, 0x11, 0x79, 0x3e, -0x74, 0x25, 0xe9, 0x89, 0x4d, 0xc1, 0x3c, 0x00, -0xad, 0x97, 0xb1, 0x66, 0xc5, 0x9b, 0x83, 0x1a, -0x44, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, -0x01, 0x22, 0x21, 0x04, 0xf2, 0xe3, 0x72, 0x19, -0x97, 0xcc, 0x97, 0xdc, 0x45, 0xc7, 0x08, 0xb8, -0x9d, 0x99, 0xdd, 0xdf, 0x74, 0x14, 0x83, 0x9b, -0xda, 0xd2, 0xdf, 0xdd, 0x6b, 0x38, 0xce, 0xd6, -0x72, 0x3f, 0x7a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x71, 0x01, 0x22, 0x21, 0x31, 0xcc, 0x47, -0x08, 0xa3, 0xaf, 0xa2, 0x97, 0xe0, 0x86, 0xe7, -0x62, 0x57, 0xab, 0x4e, 0x7d, 0x84, 0x28, 0x99, -0xe2, 0x5b, 0xd8, 0xa2, 0x78, 0x77, 0xc8, 0x50, -0x82, 0x29, 0x9c, 0x7e, 0x86, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0x26, -0x36, 0x0f, 0x43, 0x64, 0xa6, 0xcd, 0x86, 0xa2, -0x38, 0xef, 0xaf, 0xc7, 0xc8, 0x85, 0x4b, 0xca, -0x20, 0x78, 0x0a, 0x6a, 0xa4, 0x29, 0x41, 0x2e, -0xe4, 0xbb, 0x1a, 0xd5, 0x49, 0x1b, 0xee, 0x00, +0x21, 0xab, 0xbe, 0x66, 0x72, 0x5c, 0x40, 0x90, +0xd8, 0x8f, 0x0e, 0x75, 0xfc, 0x0d, 0x00, 0xd5, +0xc8, 0xb5, 0xe4, 0x12, 0xfe, 0x04, 0x6a, 0xe4, +0x34, 0x5a, 0xad, 0xd1, 0x15, 0x6d, 0x65, 0xd2, +0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, +0x01, 0x22, 0x21, 0xa1, 0xae, 0xd1, 0x68, 0x16, +0x35, 0x4f, 0x6e, 0xd2, 0x94, 0x37, 0x38, 0xeb, +0x43, 0x5d, 0x41, 0x97, 0xb1, 0xc4, 0x6b, 0xf5, +0xfc, 0x60, 0x7a, 0xfe, 0xae, 0x31, 0x4b, 0x12, +0x22, 0xa9, 0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x71, 0x01, 0x22, 0x21, 0x79, 0xf2, 0x87, +0xb8, 0xa7, 0x88, 0x38, 0x2f, 0x51, 0x66, 0x13, +0xa1, 0xa3, 0xa5, 0x83, 0xdd, 0x1d, 0x2a, 0x85, +0x38, 0x04, 0xb4, 0xd6, 0x61, 0x70, 0xb7, 0x90, +0xaf, 0x76, 0x6d, 0x73, 0x3d, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0xca, +0x13, 0x53, 0xbe, 0xed, 0xf3, 0xb1, 0x6a, 0xf1, +0xd1, 0xb6, 0xf8, 0x02, 0x92, 0x39, 0x85, 0x76, +0xc4, 0x1e, 0x94, 0x43, 0x2a, 0xa5, 0x20, 0x66, +0x5f, 0x62, 0x72, 0xe1, 0xdd, 0xe9, 0x79, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, -0x21, 0x84, 0x9c, 0x74, 0x2b, 0x56, 0x6e, 0xce, -0xd7, 0x0c, 0xf1, 0x24, 0x4b, 0x05, 0x05, 0xfd, -0xec, 0x9e, 0x6b, 0x95, 0x4a, 0x47, 0xae, 0xd6, -0x48, 0xfb, 0xe6, 0xb8, 0xed, 0x26, 0x78, 0xd3, -0x59, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, -0x01, 0x22, 0x21, 0x1d, 0x38, 0xdc, 0x93, 0x43, -0xf9, 0xe2, 0xa2, 0x54, 0x7d, 0x53, 0xa0, 0xcf, -0xdd, 0xa4, 0x42, 0x0b, 0x8b, 0xce, 0x6b, 0x54, -0x8f, 0xa5, 0x26, 0xcf, 0xe0, 0x88, 0x8b, 0x02, -0x26, 0xee, 0x16, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x75, 0x01, 0x22, 0x21, 0xd2, 0x56, 0x72, -0x45, 0x2d, 0xdd, 0x86, 0x15, 0xd7, 0x64, 0x88, -0x5c, 0xa7, 0x29, 0x51, 0xb9, 0x6d, 0xe8, 0xfd, -0xa9, 0x0c, 0x22, 0x3d, 0xf0, 0x59, 0xca, 0x55, -0x67, 0x82, 0x57, 0x33, 0xbf, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0xcf, -0x72, 0x12, 0x6d, 0x75, 0xec, 0x10, 0x95, 0x4b, -0xc7, 0xe2, 0x75, 0xdb, 0xf6, 0x4c, 0x9f, 0x74, -0xe7, 0x26, 0x5b, 0x7a, 0x3a, 0x99, 0xdf, 0xd2, -0x05, 0x20, 0xab, 0xec, 0xe5, 0x0b, 0xa7, 0x00, +0x21, 0xa4, 0xfd, 0xbb, 0xd3, 0x3a, 0x25, 0x71, +0x04, 0xeb, 0x1b, 0x59, 0xbd, 0x24, 0xff, 0x82, +0x01, 0xe8, 0xcd, 0x7b, 0x6b, 0x4d, 0x71, 0x27, +0xb0, 0x53, 0x26, 0x39, 0xb2, 0x6c, 0x11, 0x58, +0xb9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, +0x01, 0x22, 0x21, 0x0b, 0xcf, 0x7c, 0x03, 0x12, +0x02, 0x9a, 0x4f, 0x89, 0x30, 0x90, 0x3b, 0x8e, +0x34, 0x1b, 0x57, 0xba, 0x5a, 0x80, 0xd8, 0xb4, +0x2f, 0x28, 0x18, 0x3e, 0x19, 0x83, 0xae, 0xc9, +0x40, 0xd9, 0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x75, 0x01, 0x22, 0x21, 0xbd, 0xe2, 0xbb, +0xa3, 0x91, 0xb1, 0xca, 0x18, 0xdf, 0xcb, 0xef, +0x1e, 0x9c, 0x76, 0x02, 0xca, 0xb5, 0x9d, 0x83, +0xdc, 0xeb, 0x1b, 0x98, 0xd1, 0xb0, 0xbc, 0xd8, +0x3e, 0x54, 0xfd, 0x04, 0xf0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0xe3, +0x04, 0x1b, 0x30, 0xb5, 0x67, 0x4a, 0x2b, 0x18, +0x26, 0x45, 0xfc, 0x03, 0x90, 0xb9, 0x05, 0x00, +0x88, 0x5a, 0x7a, 0x09, 0x74, 0x48, 0x83, 0x51, +0xd2, 0x70, 0xf8, 0x58, 0xc6, 0x90, 0x84, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, -0x21, 0xe7, 0xd5, 0xca, 0x5b, 0x69, 0x05, 0xbf, -0x6d, 0x76, 0x77, 0x54, 0x04, 0x02, 0x64, 0x34, -0xbf, 0xea, 0x96, 0x3f, 0xbf, 0xe0, 0xdf, 0xf7, -0x0d, 0x30, 0x71, 0xe5, 0xf8, 0xbc, 0xfd, 0x31, +0x21, 0x66, 0xaa, 0x7f, 0x98, 0x4d, 0xf8, 0xbc, +0xa2, 0x59, 0x22, 0x1c, 0x54, 0xb6, 0x1d, 0x8a, +0x43, 0x8f, 0x6e, 0x70, 0x53, 0xe8, 0x54, 0x7d, +0xbb, 0x02, 0xf8, 0x48, 0x52, 0x99, 0xe2, 0xb4, 0xed, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, -0x01, 0x22, 0x21, 0xa3, 0xcd, 0xf6, 0x48, 0x2e, -0xee, 0x70, 0x8b, 0xfa, 0x47, 0xdd, 0x9c, 0x97, -0x95, 0x3c, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xda, 0x59, 0x68, 0x4f, -0xbf, 0x4e, 0x52, 0xbf, 0x03, 0x04, 0x51, 0x02, -0x00, 0x79, 0x01, 0x22, 0x21, 0xbf, 0x15, 0xd2, -0x6b, 0x49, 0xf5, 0xf6, 0x6d, 0x43, 0x23, 0xeb, -0x3d, 0x8e, 0x85, 0x4e, 0x23, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x78, -0xae, 0x3d, 0xb9, 0xd6, 0x5d, 0xf5, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0xc8, -0xda, 0xc9, 0xfd, 0x30, 0xb2, 0x73, 0x10, 0x8a, -0xe7, 0xcf, 0x58, 0x75, 0xf8, 0x6a, 0xca, 0xd7, -0x2c, 0x5e, 0x57, 0xef, 0x68, 0x43, 0x96, 0xfe, -0xe5, 0xcb, 0x43, 0x27, 0x1f, 0x66, 0x7c, 0x00, +0x01, 0x22, 0x21, 0xcf, 0x73, 0xae, 0x12, 0x19, +0xe7, 0xdd, 0x92, 0x5e, 0x7e, 0x79, 0x24, 0x32, +0xa1, 0x69, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2b, 0x22, 0x03, 0x4a, +0x2e, 0x01, 0x1e, 0x8a, 0x03, 0x04, 0x51, 0x02, +0x00, 0x79, 0x01, 0x22, 0x21, 0xfc, 0x24, 0x96, +0x84, 0xa1, 0x73, 0x70, 0x38, 0xa3, 0x1b, 0xe5, +0x37, 0x7e, 0x79, 0xbe, 0x50, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0x70, +0xce, 0xee, 0x8e, 0x7b, 0x65, 0x7a, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0xdf, +0xa2, 0xbc, 0x59, 0x92, 0x9a, 0x70, 0xc8, 0x60, +0xb6, 0x53, 0x6b, 0x8f, 0xe4, 0xa3, 0x1b, 0xa5, +0x5c, 0x97, 0x67, 0xd1, 0x08, 0x9c, 0x99, 0xe8, +0x18, 0x67, 0x6e, 0x93, 0xcc, 0xfc, 0xad, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, -0x21, 0xfb, 0x2c, 0xe0, 0x1e, 0xbb, 0xda, 0xf2, -0x21, 0x44, 0xd2, 0xa0, 0x47, 0xb5, 0x97, 0x00, -0xe0, 0x7d, 0x46, 0xff, 0x74, 0x1e, 0x0c, 0xf4, -0x07, 0xa8, 0x08, 0x26, 0x6d, 0xb8, 0x1b, 0x94, -0x24, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, -0x01, 0x22, 0x21, 0x77, 0xea, 0x4b, 0x67, 0x36, -0x16, 0x4f, 0xde, 0xd9, 0x94, 0xa3, 0xa1, 0x04, -0x60, 0x93, 0x6a, 0x3b, 0x7f, 0xe6, 0x3a, 0x98, -0x5c, 0xa4, 0x9f, 0xbc, 0xc7, 0xcb, 0x0c, 0x40, -0xa0, 0x31, 0xd6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x7d, 0x01, 0x22, 0x21, 0x79, 0x5a, 0xff, -0x67, 0x23, 0x47, 0x7c, 0x1f, 0xbc, 0xfe, 0x14, -0x30, 0x92, 0x9b, 0xd6, 0x03, 0xe5, 0xf6, 0x9b, -0x81, 0x81, 0x81, 0xa4, 0xdc, 0xeb, 0xfd, 0x27, -0xca, 0xee, 0xbd, 0x98, 0x3b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0x7c, -0x98, 0x0e, 0x2b, 0x8d, 0xf0, 0x5e, 0x01, 0x1f, -0xdb, 0xd0, 0x9f, 0x5e, 0x62, 0x55, 0x65, 0x82, -0xd1, 0x16, 0xed, 0xe0, 0x98, 0xdb, 0x9c, 0x81, -0xe5, 0xce, 0x62, 0x0a, 0x3b, 0xe3, 0x4c, 0x00, +0x21, 0xe9, 0x94, 0xb6, 0xfc, 0xbd, 0xf9, 0x79, +0xd2, 0xef, 0x22, 0x97, 0xe9, 0x7f, 0xb7, 0x17, +0xdf, 0x8a, 0xf6, 0x20, 0x0c, 0xa1, 0x85, 0x2e, +0x87, 0xb7, 0x56, 0xb8, 0xca, 0x2b, 0xd2, 0x2b, +0x82, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, +0x01, 0x22, 0x21, 0xfa, 0x40, 0x42, 0x4d, 0x31, +0x0f, 0x95, 0xc3, 0xff, 0x0e, 0x04, 0xdf, 0xf2, +0x80, 0xe0, 0xaf, 0x4b, 0xb8, 0x0a, 0x94, 0xd2, +0x7c, 0xfb, 0xa3, 0xed, 0x31, 0xc8, 0xdc, 0x92, +0x6d, 0xa5, 0xfa, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x7d, 0x01, 0x22, 0x21, 0x6b, 0x17, 0x63, +0x98, 0x19, 0x6a, 0xf8, 0x7f, 0xf0, 0xb4, 0xb8, +0x81, 0xfc, 0xa5, 0x2e, 0xcb, 0x4c, 0x6d, 0x48, +0x94, 0xe6, 0x55, 0x49, 0x52, 0x9d, 0x7b, 0x0a, +0xb8, 0xb0, 0xdc, 0x38, 0xb9, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0xc1, +0xad, 0xf6, 0xca, 0xb2, 0x86, 0xc3, 0xf4, 0x95, +0x40, 0xd8, 0x50, 0x32, 0x2f, 0x89, 0x1c, 0x37, +0x2e, 0x47, 0x66, 0x4f, 0xf5, 0xb7, 0x9c, 0xec, +0x24, 0x75, 0x53, 0x77, 0x6b, 0x9e, 0xbf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, -0x21, 0xf7, 0x91, 0x49, 0x80, 0x69, 0x99, 0x7c, -0xfe, 0x81, 0x90, 0xd1, 0xc3, 0x2b, 0x37, 0x34, -0x1c, 0xe0, 0xe0, 0x75, 0x63, 0x15, 0x8d, 0x4f, -0x10, 0x11, 0x89, 0x4e, 0x00, 0xbb, 0x3c, 0x96, -0x38, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, -0x01, 0x22, 0x21, 0x72, 0xdc, 0xee, 0x4d, 0xc2, -0x73, 0xef, 0xa2, 0xb3, 0x7c, 0x81, 0x30, 0x08, -0x02, 0x01, 0x20, 0x25, 0x84, 0x9e, 0x8f, 0x26, -0x6d, 0xad, 0x27, 0x0d, 0xc0, 0x4c, 0xe7, 0xdc, -0xac, 0x3c, 0x01, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x81, 0x01, 0x22, 0x21, 0x5b, 0xed, 0x86, -0xc0, 0xd8, 0x42, 0x42, 0x7e, 0x37, 0xa7, 0x8c, -0x50, 0x9d, 0x70, 0x1e, 0xbe, 0x41, 0x2e, 0xd6, -0xa1, 0x19, 0x3a, 0x7a, 0x98, 0x8c, 0x3e, 0xa2, -0xad, 0x73, 0xa9, 0xaa, 0x3b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0xf5, -0x5a, 0xd3, 0x5c, 0x3e, 0x22, 0x91, 0xce, 0x31, -0xf4, 0x0c, 0xbc, 0xf6, 0x81, 0x48, 0x25, 0x3a, -0x38, 0x1d, 0xe9, 0x10, 0xe6, 0xd8, 0xfa, 0xf1, -0x11, 0xf4, 0xbf, 0x79, 0x7c, 0x21, 0xf3, 0x00, +0x21, 0x25, 0x91, 0x81, 0xd4, 0x86, 0xb8, 0x7a, +0xa6, 0x2c, 0x38, 0x8a, 0x0d, 0x63, 0xb1, 0xbf, +0xd6, 0x4b, 0x6a, 0xcf, 0x13, 0x63, 0xf8, 0xf5, +0xf1, 0x73, 0x2a, 0xb0, 0x9f, 0x4f, 0x94, 0xbe, +0x9c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, +0x01, 0x22, 0x21, 0x21, 0x38, 0xdc, 0x12, 0xa0, +0x39, 0x03, 0xc1, 0x41, 0xc9, 0x02, 0x1b, 0xb9, +0x06, 0x76, 0x95, 0x68, 0xa9, 0x70, 0x12, 0xcd, +0xd1, 0xcc, 0x3d, 0xd5, 0x58, 0x4c, 0x3c, 0xf8, +0xec, 0xc3, 0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x81, 0x01, 0x22, 0x21, 0x0f, 0xcb, 0xb8, +0xf7, 0xd4, 0xd4, 0xff, 0x1a, 0xaf, 0x7c, 0x57, +0xaf, 0xda, 0x5f, 0x62, 0x10, 0x96, 0x83, 0xb7, +0x89, 0x45, 0x5f, 0x12, 0x3c, 0x29, 0xda, 0xe1, +0x04, 0x46, 0x52, 0xa7, 0xf1, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0x1d, +0xb7, 0x17, 0x32, 0x84, 0xb0, 0x17, 0xb4, 0x34, +0x1e, 0xb0, 0x77, 0xb2, 0x93, 0x40, 0x22, 0x9c, +0x12, 0xa2, 0x9b, 0x71, 0xb6, 0xff, 0xae, 0x48, +0x04, 0x41, 0x26, 0x22, 0x48, 0x96, 0x91, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, -0x21, 0x95, 0x92, 0xf8, 0xe7, 0xd2, 0x0e, 0x1a, -0xcc, 0x3f, 0x37, 0x84, 0x2c, 0x80, 0xbf, 0x04, -0x30, 0x1f, 0xd3, 0x62, 0xfd, 0x57, 0x2b, 0x2b, -0x93, 0xb4, 0x0a, 0x2d, 0xcb, 0xe8, 0x60, 0x9d, -0xd0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, -0x01, 0x22, 0x21, 0x81, 0x71, 0xb0, 0x24, 0x86, -0xf3, 0xe8, 0x8b, 0x40, 0x19, 0x0c, 0x2b, 0x38, -0x3e, 0xca, 0x6b, 0xcd, 0xed, 0x6d, 0x5b, 0xd8, -0xc5, 0x21, 0x8b, 0x40, 0xb0, 0x23, 0x70, 0xe6, -0xed, 0xd9, 0x58, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x85, 0x01, 0x22, 0x21, 0xe9, 0xd9, 0xa9, -0x49, 0x07, 0x33, 0xf5, 0xf6, 0xf6, 0x0d, 0xc9, -0x6c, 0x4d, 0x6b, 0x64, 0xca, 0x02, 0xe8, 0xcd, -0x82, 0x2c, 0x8e, 0x4b, 0xa7, 0x0e, 0xb3, 0x04, -0x13, 0xd5, 0x17, 0xaf, 0x98, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0x0a, -0xa4, 0xed, 0xd9, 0x11, 0x6e, 0x08, 0x5c, 0x71, -0xb0, 0x3a, 0xc9, 0x95, 0x37, 0x30, 0x71, 0x47, -0xbb, 0x6f, 0x98, 0x34, 0xa2, 0x36, 0xa5, 0xa4, -0xb5, 0x4b, 0xac, 0x24, 0x43, 0x15, 0xa2, 0x00, +0x21, 0xbc, 0x18, 0xce, 0x4c, 0xfd, 0xd4, 0xff, +0x2b, 0x12, 0x19, 0x37, 0x84, 0x83, 0xfa, 0xeb, +0x36, 0x1f, 0xa1, 0xeb, 0x37, 0xa9, 0x16, 0xb8, +0x66, 0xb6, 0x14, 0x9b, 0xea, 0xf0, 0xfd, 0xbb, +0x1a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, +0x01, 0x22, 0x21, 0x98, 0x9e, 0x21, 0xb3, 0xaf, +0x72, 0xc6, 0xb4, 0xa9, 0x45, 0xc5, 0x06, 0xa5, +0x79, 0x10, 0x74, 0x29, 0xca, 0xed, 0x11, 0xa2, +0xcd, 0x3a, 0xd6, 0xa8, 0xc6, 0xcd, 0x10, 0x81, +0xe5, 0x2b, 0x7d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x85, 0x01, 0x22, 0x21, 0xef, 0x89, 0x03, +0xfe, 0x78, 0x09, 0xbb, 0x31, 0xe1, 0x04, 0x4f, +0xc1, 0xc4, 0xaa, 0x89, 0xc6, 0xc2, 0x7e, 0x00, +0xcd, 0x07, 0xa2, 0xbf, 0x4b, 0x31, 0x80, 0x51, +0x4e, 0xa0, 0x34, 0x83, 0x1c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0x99, +0x25, 0x3a, 0xea, 0x33, 0x04, 0x68, 0x2b, 0xd9, +0xf1, 0xaf, 0x2e, 0xae, 0x61, 0x68, 0x2c, 0x0a, +0x2d, 0x23, 0x08, 0x64, 0xb5, 0x94, 0x0e, 0x20, +0x56, 0x98, 0x52, 0x5f, 0x6f, 0xe1, 0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, -0x21, 0xf4, 0xd8, 0xe6, 0x68, 0xd4, 0x43, 0x0f, -0xaa, 0x71, 0x91, 0xbb, 0xb0, 0x93, 0x08, 0xf2, -0x5a, 0x15, 0xdc, 0x55, 0x40, 0x6e, 0x62, 0x5d, -0xec, 0x7d, 0x5c, 0xe6, 0x92, 0xea, 0x86, 0x0b, -0xeb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, -0x01, 0x22, 0x21, 0xb1, 0x1f, 0x59, 0x13, 0x4f, -0xaa, 0x30, 0xf7, 0x66, 0xb3, 0xb9, 0x17, 0x1b, -0x02, 0x6e, 0x11, 0xef, 0x6f, 0xe7, 0x0e, 0x84, -0xb9, 0xbb, 0x3d, 0x0e, 0x34, 0xa0, 0x9f, 0xe6, -0x3d, 0x12, 0x05, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x89, 0x01, 0x22, 0x21, 0xed, 0xf2, 0xf0, -0xa0, 0xe5, 0x19, 0x18, 0x27, 0xcf, 0xd5, 0x23, -0x37, 0x20, 0xea, 0x0e, 0x42, 0x3c, 0xd7, 0x8c, -0x24, 0xc0, 0x83, 0x3e, 0x2c, 0x42, 0x2a, 0xc3, -0xf4, 0xe4, 0x01, 0xa8, 0xc0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0x9c, -0x67, 0x38, 0x38, 0xb4, 0xa6, 0xe1, 0x0c, 0xc7, -0x23, 0x24, 0xe2, 0xac, 0x49, 0xc4, 0xb1, 0x2f, -0x87, 0x46, 0xb7, 0x43, 0x9c, 0x1d, 0x1b, 0x24, -0x01, 0xd0, 0xb2, 0xe7, 0xbc, 0x15, 0x76, 0x00, +0x21, 0x41, 0xda, 0x89, 0x01, 0x0a, 0xe7, 0x6a, +0xb3, 0x5d, 0xd5, 0xd6, 0xd3, 0xdc, 0x26, 0x60, +0x65, 0x14, 0x2e, 0x96, 0xae, 0xc0, 0x55, 0x39, +0x1f, 0xda, 0x7b, 0xc2, 0x23, 0x27, 0xe0, 0xa8, +0x71, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, +0x01, 0x22, 0x21, 0x78, 0x87, 0x0a, 0x3d, 0x55, +0x03, 0x40, 0xf7, 0x0e, 0x0e, 0x91, 0xc9, 0xb3, +0xf2, 0x39, 0x42, 0x57, 0x52, 0xc3, 0x2a, 0xe9, +0xd1, 0xd3, 0x3d, 0xd1, 0x74, 0xf4, 0xab, 0x90, +0x6b, 0x99, 0x48, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x89, 0x01, 0x22, 0x21, 0xb4, 0x69, 0x4a, +0xc9, 0x5a, 0x41, 0x5d, 0x40, 0xdf, 0x43, 0xf7, +0x08, 0xc4, 0xd3, 0xd4, 0xd9, 0x39, 0x16, 0x20, +0xa4, 0xa6, 0x5c, 0x01, 0x8f, 0xfc, 0xed, 0x22, +0xef, 0x20, 0x0a, 0xed, 0xd3, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0x21, +0x7d, 0xd9, 0x34, 0x20, 0x6a, 0x7f, 0x9b, 0x31, +0xbe, 0x65, 0x9c, 0xa5, 0xc8, 0x73, 0x35, 0xa0, +0x6e, 0x2b, 0x02, 0xc2, 0xa0, 0xe8, 0x7a, 0x22, +0x33, 0xa2, 0x00, 0x38, 0x93, 0x59, 0x21, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, -0x21, 0xbf, 0x5b, 0x75, 0x1a, 0xdd, 0xd3, 0x86, -0x63, 0x3d, 0x0d, 0xaa, 0xe4, 0x09, 0xe6, 0x7d, -0x08, 0xcb, 0xda, 0x85, 0xb4, 0x09, 0x6c, 0x6e, -0xbe, 0x19, 0xfe, 0x3b, 0xaf, 0xe4, 0x9b, 0x4c, -0xac, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, -0x01, 0x22, 0x21, 0x13, 0xb0, 0x06, 0xf6, 0x3e, -0x22, 0x32, 0x2b, 0x79, 0xb4, 0x96, 0x6f, 0x1a, -0xe7, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x66, 0xdc, 0x2f, 0x75, -0xff, 0x2e, 0x93, 0x67, 0x03, 0x04, 0x51, 0x02, -0x00, 0x8d, 0x01, 0x22, 0x21, 0xb7, 0x76, 0x8b, -0xb7, 0x03, 0x29, 0x2c, 0xb1, 0x41, 0xa4, 0x00, -0x89, 0x41, 0x38, 0xeb, 0xbf, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x25, -0x89, 0xe8, 0x4c, 0xb8, 0x00, 0xd3, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0xc1, -0xd7, 0xd2, 0xc1, 0x0b, 0xe8, 0x6a, 0xdc, 0x3d, -0xa8, 0x5d, 0x1f, 0xc7, 0x08, 0x1b, 0xc4, 0xfb, -0x7d, 0x9d, 0xbb, 0x12, 0x1c, 0x75, 0x17, 0x41, -0x75, 0x7b, 0x83, 0xb9, 0x05, 0x07, 0x0a, 0x00, +0x21, 0x41, 0x0d, 0xb5, 0x91, 0x56, 0x2e, 0xd7, +0x12, 0x40, 0x95, 0x1a, 0xd1, 0x5b, 0x19, 0xf7, +0x6b, 0x41, 0x1d, 0x4d, 0xc2, 0x16, 0xeb, 0x1d, +0xee, 0xe3, 0x61, 0x98, 0x77, 0xeb, 0x7a, 0x66, +0x58, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, +0x01, 0x22, 0x21, 0x25, 0x2e, 0xea, 0x98, 0x44, +0xf0, 0xaf, 0x16, 0x5b, 0xeb, 0xa6, 0xd1, 0x6e, +0x0c, 0x7a, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5c, 0x5a, 0xb3, 0xc4, +0x32, 0xee, 0xef, 0x14, 0x03, 0x04, 0x51, 0x02, +0x00, 0x8d, 0x01, 0x22, 0x21, 0x05, 0x6c, 0xa8, +0x5d, 0x9a, 0x0f, 0xe5, 0x72, 0xc1, 0x32, 0x3a, +0xb1, 0xa8, 0xac, 0x01, 0xb6, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, +0x8e, 0x03, 0x4d, 0xc2, 0x06, 0x91, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x72, +0x4d, 0xa0, 0xe2, 0x1b, 0x1a, 0xda, 0x71, 0xbe, +0x7f, 0x84, 0x21, 0x3e, 0xc4, 0xc4, 0xcb, 0x2a, +0x56, 0xf4, 0x26, 0xcf, 0xb4, 0xa4, 0x05, 0x73, +0x6b, 0xad, 0xce, 0x94, 0x16, 0x8d, 0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, -0x21, 0x94, 0x94, 0x80, 0x0d, 0x4a, 0x09, 0x1f, -0x47, 0x72, 0x9f, 0xa6, 0xa8, 0xf8, 0xae, 0x11, -0xd4, 0x7b, 0x5f, 0x36, 0x8b, 0xfc, 0x10, 0xf5, -0x2e, 0x74, 0x56, 0x3d, 0x56, 0x48, 0x54, 0xbb, -0xfd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, -0x01, 0x22, 0x21, 0x18, 0x97, 0xd5, 0xcb, 0x8e, -0x73, 0x75, 0x02, 0x15, 0xcd, 0x51, 0xe8, 0xcb, -0x5a, 0x88, 0xbf, 0xe6, 0x0e, 0x88, 0xbe, 0x31, -0xac, 0x3e, 0xf7, 0x61, 0x66, 0x71, 0xf9, 0x5c, -0x8c, 0xf7, 0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x91, 0x01, 0x22, 0x21, 0x92, 0x8c, 0x94, -0xc8, 0x31, 0xcf, 0x9f, 0x3b, 0xa2, 0xb0, 0xc0, -0x8a, 0xff, 0xf0, 0xbe, 0x3f, 0x8a, 0x11, 0x82, -0x95, 0x21, 0x67, 0x27, 0x28, 0xd5, 0x03, 0x4a, -0x0e, 0x6e, 0x66, 0xc6, 0x23, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x38, -0x17, 0x52, 0x3a, 0x73, 0x09, 0x93, 0x37, 0x35, -0x6e, 0x27, 0xa2, 0x94, 0xdd, 0xbd, 0xd8, 0xca, -0xa2, 0x23, 0x24, 0x30, 0xb2, 0x2d, 0xb3, 0xf3, -0xde, 0xe6, 0xf4, 0x33, 0x1a, 0xd1, 0x30, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, -0x21, 0xf8, 0x0b, 0x37, 0xa7, 0x9d, 0x07, 0x7f, -0xa5, 0x96, 0x59, 0x5a, 0x1e, 0xc2, 0x74, 0x81, -0x7b, 0x09, 0xfa, 0x5d, 0xc8, 0x7b, 0xd8, 0x08, -0x3a, 0x06, 0x26, 0xfb, 0x60, 0xbc, 0x14, 0x9e, -0x2e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, -0x01, 0x22, 0x21, 0x8b, 0x9e, 0x55, 0x8d, 0x43, -0x57, 0x77, 0x85, 0xf2, 0x5c, 0x66, 0x78, 0xf2, -0xa2, 0x50, 0xd6, 0x0c, 0x4b, 0x2a, 0x3f, 0xa8, -0x92, 0x6c, 0x34, 0x30, 0xcf, 0x42, 0xb8, 0xc9, -0xae, 0x6b, 0x45, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x95, 0x01, 0x22, 0x21, 0x48, 0x78, 0x70, -0xa0, 0x9a, 0xaf, 0x17, 0x60, 0x0b, 0xcd, 0x13, -0x35, 0xb4, 0x14, 0x45, 0xc6, 0xe2, 0xb6, 0x5d, -0x76, 0xc8, 0x17, 0x4f, 0x68, 0x05, 0xa8, 0xd6, -0x98, 0x31, 0x85, 0x1a, 0xd0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0xac, -0x09, 0x94, 0x97, 0x24, 0x07, 0xa9, 0xae, 0x89, -0x0f, 0x50, 0xe6, 0x9f, 0x2e, 0x24, 0xf8, 0x8a, -0x9d, 0x8f, 0x71, 0xde, 0x87, 0xb9, 0xbf, 0x2e, -0x39, 0x1d, 0x27, 0x16, 0x94, 0xf5, 0xc5, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, -0x21, 0x35, 0x05, 0x95, 0xe8, 0x40, 0x59, 0xe6, -0x2c, 0xc9, 0xcd, 0x3e, 0xd0, 0x8a, 0x60, 0xfb, -0xc7, 0xc1, 0x3c, 0xad, 0x2e, 0x28, 0x28, 0xad, -0x72, 0x85, 0xe0, 0xdf, 0xd7, 0x6f, 0x56, 0xe7, -0x70, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, -0x01, 0x22, 0x21, 0x41, 0xb2, 0x6d, 0xb5, 0xeb, -0xdc, 0x02, 0x4e, 0xd6, 0x49, 0xca, 0xd8, 0xe0, -0xd4, 0xed, 0xb0, 0x35, 0xa2, 0xf0, 0x82, 0x58, -0x06, 0x60, 0x7f, 0x49, 0x2d, 0xa8, 0xf3, 0x5e, -0x3b, 0xb3, 0x9b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x99, 0x01, 0x22, 0x21, 0xc2, 0x53, 0x5e, -0xef, 0xa5, 0x46, 0x85, 0xe6, 0x0d, 0xb5, 0x12, -0x93, 0x43, 0x4d, 0x71, 0xbf, 0x73, 0x8d, 0x89, -0xb3, 0x50, 0x32, 0x3b, 0x3c, 0x08, 0xeb, 0x78, -0xcf, 0x08, 0x47, 0x41, 0xdc, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0xc4, -0x54, 0x89, 0xa5, 0x86, 0x04, 0x44, 0x91, 0x30, -0x15, 0x21, 0xd8, 0x44, 0xde, 0x74, 0xf6, 0xef, -0xce, 0x2e, 0x80, 0x2a, 0xf5, 0xc4, 0xa6, 0xc7, -0x3c, 0x9b, 0xfd, 0xca, 0xe0, 0xf2, 0x04, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, -0x21, 0x4c, 0x83, 0x1c, 0x2c, 0xfe, 0xb8, 0x56, -0x2f, 0xee, 0x20, 0x7f, 0x4d, 0x39, 0x46, 0xf7, -0xc2, 0xcc, 0x0c, 0x39, 0x47, 0xe3, 0x12, 0x4b, -0xd7, 0xff, 0x09, 0x3c, 0xdc, 0x79, 0x86, 0x29, -0x6b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, -0x01, 0x22, 0x21, 0x45, 0xd4, 0xa0, 0xb0, 0x9e, -0x80, 0x80, 0x87, 0x71, 0xc6, 0xb8, 0xf0, 0xa0, -0x2f, 0x85, 0xc9, 0xda, 0xc6, 0xcd, 0x2a, 0xf3, -0x3a, 0x87, 0x86, 0x90, 0x27, 0xec, 0x28, 0xc0, -0x80, 0xf2, 0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x9d, 0x01, 0x22, 0x21, 0x69, 0x5d, 0x3b, -0xae, 0x99, 0xe4, 0x05, 0x31, 0x53, 0x22, 0x57, -0xb1, 0x80, 0xf1, 0xe1, 0xb2, 0x4c, 0x80, 0xe3, -0x1d, 0x13, 0xaf, 0x23, 0xf3, 0xec, 0x74, 0xe8, -0xb8, 0x74, 0xf9, 0x1d, 0x95, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0x46, -0xb6, 0x36, 0x00, 0xd7, 0x41, 0x8e, 0xcc, 0xf6, -0xa1, 0xa1, 0xaf, 0x56, 0x35, 0xd4, 0xdc, 0xd1, -0xd4, 0xb8, 0x7c, 0x7c, 0x34, 0xde, 0x79, 0x11, -0x84, 0x55, 0x07, 0x85, 0xaf, 0x5e, 0x7d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, -0x21, 0x2d, 0xd1, 0xee, 0x23, 0xdd, 0x91, 0xc5, -0x8b, 0x38, 0x0a, 0x3f, 0xb4, 0x2c, 0x3c, 0x4b, -0x13, 0xcf, 0xc4, 0xfd, 0x9b, 0x4d, 0x6d, 0x2e, -0xfd, 0x43, 0x29, 0x7a, 0x4a, 0x87, 0x11, 0xba, -0x7a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, -0x01, 0x22, 0x21, 0x23, 0xdf, 0xe5, 0xba, 0xdf, -0x37, 0x84, 0x98, 0xb3, 0xde, 0xb9, 0x7c, 0x69, -0x49, 0xd2, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x3a, 0x5e, 0xa4, 0x0a, -0x72, 0x24, 0x12, 0x72, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa1, 0x01, 0x22, 0x21, 0x78, 0x09, 0xd5, -0x58, 0xd3, 0xa4, 0x4f, 0x51, 0x1a, 0x7d, 0x84, -0x51, 0x13, 0x54, 0x48, 0xaa, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0a, -0x91, 0x78, 0xfc, 0x25, 0x4f, 0xf4, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0x44, -0x72, 0x28, 0x00, 0x8b, 0x8c, 0x66, 0x1b, 0x7b, -0xb4, 0xc2, 0x71, 0x54, 0xeb, 0x63, 0x25, 0x87, -0x06, 0x3b, 0xd7, 0x64, 0x41, 0x74, 0x7b, 0x51, -0x17, 0x26, 0x9c, 0x7d, 0x8d, 0xde, 0x9f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, -0x21, 0x23, 0xd3, 0x46, 0x0a, 0x83, 0x66, 0x94, -0x07, 0xbe, 0xdc, 0x5a, 0x2b, 0xcb, 0xfb, 0x34, -0x75, 0x1b, 0xa5, 0x57, 0x2c, 0x20, 0x3b, 0xd7, -0x88, 0x06, 0x39, 0x04, 0xf7, 0x43, 0x33, 0x8b, -0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, -0x01, 0x22, 0x21, 0xe4, 0x14, 0xf6, 0x42, 0x10, -0xf5, 0xe5, 0x2c, 0xd2, 0xa9, 0x84, 0x25, 0x22, -0x96, 0x70, 0x36, 0xf0, 0x81, 0xdb, 0x9e, 0x46, -0x88, 0xaf, 0x1a, 0x8e, 0x07, 0xca, 0xa8, 0xa1, -0x9b, 0x27, 0xba, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa5, 0x01, 0x22, 0x21, 0x64, 0x82, 0x02, -0xf0, 0x40, 0xe0, 0xcd, 0x36, 0x0c, 0xf0, 0xa8, -0xd2, 0x96, 0x2c, 0x99, 0x7a, 0x83, 0xcc, 0x2f, -0x2f, 0x71, 0x82, 0xc5, 0x4b, 0x83, 0x29, 0xaf, -0xe9, 0xd0, 0x2e, 0xec, 0x96, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0xce, -0xe3, 0xbd, 0x48, 0x5a, 0x59, 0xbb, 0xf4, 0x47, -0x1c, 0x4a, 0xf6, 0xd1, 0xd5, 0xc0, 0x65, 0x2e, -0xb3, 0xb7, 0x2c, 0x61, 0x45, 0xc5, 0x8b, 0xd5, -0x2d, 0xfa, 0x51, 0x76, 0x3d, 0x96, 0x28, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, -0x21, 0x83, 0xf4, 0x4e, 0x5b, 0xbc, 0x69, 0x4a, -0x20, 0xe9, 0x3f, 0x7c, 0x7e, 0x81, 0xc0, 0x5a, -0x86, 0x11, 0xf4, 0x0f, 0x1b, 0x97, 0x3d, 0x2e, -0xcd, 0xe5, 0x4e, 0x82, 0xd5, 0xba, 0xca, 0xaa, -0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, -0x01, 0x22, 0x21, 0x4f, 0xec, 0x81, 0xcd, 0xa8, -0x0a, 0x6c, 0x46, 0x67, 0xa6, 0x92, 0x6a, 0xf4, -0xcf, 0x62, 0x6e, 0x24, 0x4f, 0xc1, 0xdd, 0x7a, -0x31, 0x5e, 0x62, 0xa2, 0x70, 0xa5, 0x72, 0xed, -0x18, 0x75, 0xd5, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa9, 0x01, 0x22, 0x21, 0x8a, 0xe0, 0x67, -0xab, 0x6e, 0xd2, 0xae, 0x14, 0xa6, 0x6a, 0x3c, -0xff, 0x8e, 0xf7, 0xb0, 0xa6, 0x79, 0x1f, 0xc5, -0xeb, 0xb7, 0xc4, 0x18, 0xda, 0x8a, 0x4d, 0xb9, -0x4e, 0xd2, 0xad, 0x8c, 0xd5, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0xce, -0x89, 0xe0, 0x71, 0xd5, 0xc1, 0x80, 0xca, 0x95, -0xc9, 0x8a, 0x85, 0xf0, 0x17, 0xad, 0x8c, 0xe6, -0x04, 0xbc, 0x58, 0x0c, 0x7a, 0x3d, 0x7c, 0x29, -0xc0, 0x5f, 0x95, 0x57, 0x65, 0xe9, 0x50, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, -0x21, 0x3a, 0x4b, 0xe1, 0x46, 0x2e, 0xf1, 0x50, -0x58, 0x20, 0x53, 0xc1, 0x57, 0x8e, 0x71, 0xaf, -0xe6, 0xa3, 0xd8, 0x37, 0x60, 0x90, 0x19, 0xab, -0x0e, 0xb7, 0xd1, 0xdb, 0x09, 0xe8, 0x64, 0x35, -0xe6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, -0x01, 0x22, 0x21, 0x93, 0x41, 0x35, 0xbd, 0xcf, -0xc1, 0x0b, 0x8a, 0x0b, 0x48, 0x50, 0x7b, 0x39, -0xdb, 0x8a, 0x9b, 0xfd, 0xb9, 0x5e, 0x4a, 0xda, -0x94, 0xda, 0xf5, 0x70, 0x1b, 0x33, 0xae, 0x40, -0x9f, 0x10, 0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xad, 0x01, 0x22, 0x21, 0xe6, 0xaa, 0x0e, -0xf4, 0x39, 0x1a, 0xd2, 0x42, 0x8a, 0xda, 0x76, -0xd6, 0x4d, 0x28, 0x3e, 0x87, 0x2e, 0xd2, 0x2c, -0x9c, 0x0e, 0x68, 0xa7, 0xae, 0x44, 0x0c, 0x3b, -0x34, 0x43, 0x99, 0xa9, 0x19, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0xa5, -0x16, 0x22, 0x25, 0xf2, 0x45, 0xe6, 0x95, 0xd1, -0x29, 0xbc, 0x22, 0xd6, 0xac, 0xc3, 0x08, 0x0f, -0xb4, 0x32, 0xf2, 0x77, 0xa2, 0xe0, 0x4e, 0x21, -0xd8, 0xfa, 0xf7, 0xe6, 0xbf, 0xa9, 0x6b, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, -0x21, 0x03, 0xb4, 0x22, 0x6c, 0x9e, 0xb6, 0x61, -0xcd, 0xec, 0x36, 0xdd, 0xf3, 0x33, 0x26, 0xae, -0xd8, 0xe3, 0xb5, 0xd2, 0x36, 0xdf, 0x3e, 0xf2, -0x39, 0xf4, 0x5e, 0xe4, 0xf9, 0x15, 0x97, 0xea, -0xbe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, -0x01, 0x22, 0x21, 0x3a, 0x12, 0x19, 0xe2, 0x0e, -0x9e, 0x03, 0x2d, 0xf9, 0x38, 0x82, 0xb0, 0x58, -0xa3, 0x9c, 0x13, 0xdf, 0xe2, 0x79, 0x1f, 0x3d, -0x9d, 0x72, 0xd5, 0x5d, 0xf9, 0x4d, 0x69, 0xe7, -0xa6, 0x61, 0x67, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb1, 0x01, 0x22, 0x21, 0xae, 0xd3, 0xef, -0xb5, 0x37, 0x31, 0xbd, 0x84, 0x63, 0xb2, 0x13, -0xa0, 0x3f, 0xb0, 0x1f, 0xef, 0x82, 0xf6, 0x8a, -0xc5, 0x7e, 0x33, 0x58, 0xaa, 0x64, 0x01, 0xfc, -0xd7, 0xc3, 0x66, 0x08, 0xca, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0x40, -0x3d, 0x72, 0x2f, 0x74, 0x3c, 0x87, 0xa9, 0x68, -0xc9, 0xd6, 0x00, 0xff, 0x33, 0x10, 0x04, 0x53, -0x42, 0xf3, 0x0a, 0x8f, 0xb4, 0x9b, 0x07, 0x6e, -0x3d, 0x40, 0xa7, 0x9c, 0xf2, 0x85, 0xef, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, -0x21, 0xae, 0xea, 0x51, 0x1b, 0x87, 0xe0, 0xc7, -0x4d, 0x3d, 0x58, 0x07, 0xcb, 0x3b, 0x93, 0x87, -0x4f, 0x91, 0x57, 0x47, 0x16, 0x51, 0x05, 0xd7, -0x5f, 0x32, 0x5e, 0x06, 0x40, 0x45, 0x90, 0xf2, -0xf9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, -0x01, 0x22, 0x21, 0x98, 0x2e, 0xa5, 0xaf, 0x30, -0x44, 0x9f, 0x74, 0x93, 0x7b, 0x75, 0xb4, 0xa2, -0xbe, 0xb5, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xce, 0xb6, 0x80, 0xa8, -0x0c, 0x36, 0x46, 0x4a, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb5, 0x01, 0x22, 0x21, 0xd3, 0x1b, 0xda, -0x0b, 0x6f, 0x34, 0x32, 0x95, 0xff, 0x23, 0x94, -0xcf, 0xe0, 0x08, 0xec, 0x76, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xe9, -0xcb, 0x1c, 0x1f, 0x9a, 0x17, 0x02, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0xc7, -0xb3, 0x71, 0x8a, 0x0b, 0x79, 0xb3, 0xb4, 0x8e, -0x42, 0xa1, 0x17, 0xb8, 0x1e, 0xb9, 0x7f, 0xd3, -0xa7, 0x5f, 0xdc, 0x0e, 0x55, 0xa6, 0x11, 0xbd, -0x32, 0x29, 0x30, 0xe2, 0xc9, 0x38, 0xa3, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, -0x21, 0x9d, 0x9d, 0x4e, 0x8e, 0x61, 0x37, 0xae, -0x4f, 0x63, 0x27, 0xf0, 0x35, 0x73, 0x67, 0x8d, -0x31, 0xd1, 0x70, 0xec, 0xf4, 0x28, 0x7a, 0x7b, -0x5b, 0x81, 0xba, 0x4c, 0x9e, 0xe8, 0xb1, 0x52, -0x07, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, -0x01, 0x22, 0x21, 0x73, 0x01, 0xda, 0x0d, 0x94, -0x75, 0x75, 0x10, 0xc7, 0x9a, 0x14, 0x22, 0xaf, -0x58, 0xed, 0x9b, 0xdb, 0xe3, 0x51, 0xc6, 0x35, -0x18, 0x3d, 0x0f, 0x48, 0xac, 0xc3, 0x0d, 0x59, -0x1a, 0x9a, 0xfb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb9, 0x01, 0x22, 0x21, 0xb0, 0x5e, 0xbd, -0x08, 0x06, 0xc2, 0xb5, 0xc8, 0x67, 0xf5, 0xdc, -0x2c, 0xd1, 0xab, 0x0a, 0x63, 0x37, 0x85, 0xd3, -0x53, 0xc2, 0x66, 0x89, 0x69, 0x7a, 0x3c, 0xb1, -0xd2, 0xa6, 0xb9, 0x92, 0x61, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0xb3, -0xaa, 0xc5, 0xa3, 0x0f, 0x04, 0xd1, 0xdd, 0xe8, -0xbf, 0x4c, 0xee, 0x58, 0x4f, 0xff, 0xf2, 0x47, -0xd5, 0x11, 0xbe, 0xdf, 0x69, 0xb3, 0x73, 0xe8, -0x14, 0x57, 0xca, 0xec, 0xa6, 0xd2, 0x47, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, -0x21, 0x65, 0xaa, 0x3d, 0x24, 0x91, 0x8a, 0x91, -0x2e, 0x2a, 0x3c, 0x5d, 0xdc, 0x86, 0x94, 0x6b, -0xc8, 0x8f, 0xca, 0xc6, 0x9f, 0x9a, 0xf0, 0x2c, -0x2b, 0xd2, 0x61, 0x81, 0x50, 0xad, 0x5c, 0xc1, -0xd5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, -0x01, 0x22, 0x21, 0x73, 0xb3, 0x70, 0x6b, 0xb2, -0xd1, 0x97, 0x09, 0xa3, 0xe7, 0x84, 0x73, 0x8d, -0xfb, 0x5d, 0x6b, 0x1d, 0x56, 0xf2, 0xfd, 0xa2, -0xd1, 0x4b, 0x7c, 0x3c, 0x79, 0xcc, 0x89, 0x54, -0xec, 0x1c, 0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xbd, 0x01, 0x22, 0x21, 0xd1, 0xf5, 0xa7, -0xef, 0xb9, 0x5f, 0xd7, 0x5d, 0xb4, 0x3e, 0xc9, -0x20, 0xcc, 0x0d, 0x5b, 0x8b, 0x86, 0x86, 0x52, -0x63, 0xe3, 0xde, 0xb3, 0xdf, 0x4c, 0x9f, 0x41, -0x46, 0x07, 0x0b, 0x36, 0x5f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0xe9, -0x23, 0xb8, 0x16, 0x06, 0x66, 0xc3, 0x26, 0xe5, -0xec, 0xe0, 0xcd, 0xd6, 0x5b, 0x4e, 0x55, 0x0e, -0xcc, 0x63, 0xc6, 0x46, 0xc2, 0xc0, 0xdd, 0x6c, -0x25, 0xa6, 0x44, 0x72, 0xd2, 0x29, 0x9e, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, -0x21, 0xc4, 0x07, 0x53, 0x41, 0x7c, 0xd8, 0x82, -0x78, 0x0e, 0x21, 0xe7, 0x86, 0xf3, 0xe0, 0x0c, -0xfe, 0x0e, 0xe6, 0x0b, 0xdb, 0xc8, 0xc4, 0x8f, -0x75, 0xe4, 0x4a, 0x32, 0xe0, 0x67, 0xc6, 0x6f, -0x53, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, -0x01, 0x22, 0x21, 0xaa, 0x33, 0x62, 0x05, 0x31, -0x0c, 0x62, 0x61, 0x99, 0x7a, 0x62, 0xc1, 0x39, -0x44, 0x9f, 0xc6, 0xf3, 0x97, 0x90, 0x71, 0x9e, -0x82, 0x44, 0xa8, 0xae, 0x14, 0xe6, 0x00, 0x67, -0x5e, 0xd7, 0x21, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc1, 0x01, 0x22, 0x21, 0x97, 0xec, 0xdb, -0xdb, 0x00, 0x66, 0x89, 0x85, 0x34, 0xd4, 0x9a, -0x47, 0xbe, 0x60, 0xdd, 0x61, 0x3b, 0x40, 0xfe, -0xa5, 0xeb, 0xb1, 0x17, 0xcd, 0x19, 0x43, 0xec, -0x3c, 0x4d, 0xbe, 0xc0, 0xf1, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0xe9, -0x08, 0xe9, 0xe2, 0x3c, 0xc6, 0x26, 0x26, 0x86, -0x50, 0x13, 0xba, 0x09, 0x8b, 0x88, 0x59, 0xaa, -0x8c, 0xb2, 0xe2, 0x20, 0xec, 0x5f, 0x5c, 0xda, -0x54, 0x00, 0x68, 0xc6, 0xdd, 0x4d, 0xcb, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, -0x21, 0x93, 0xf5, 0x4a, 0x14, 0xbe, 0x40, 0x54, -0xdb, 0x9c, 0x02, 0x54, 0x89, 0x15, 0x92, 0x78, -0xe3, 0x8b, 0xf2, 0xd3, 0x8d, 0x20, 0x38, 0x9a, -0x9b, 0x72, 0x67, 0x21, 0x21, 0xe6, 0x78, 0x83, -0xac, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, -0x01, 0x22, 0x21, 0x06, 0x4e, 0x54, 0xa9, 0x25, -0x94, 0x40, 0xa2, 0xd0, 0xc3, 0xab, 0x5e, 0x11, -0x3a, 0x71, 0x4f, 0x51, 0xf5, 0xea, 0x9e, 0x29, -0x81, 0xd0, 0x0f, 0x52, 0xfc, 0x36, 0xad, 0x13, -0xf6, 0x5c, 0x1b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc5, 0x01, 0x22, 0x21, 0x39, 0xe0, 0xf2, -0xac, 0xe3, 0x04, 0xa1, 0x3f, 0x3c, 0x2e, 0xd9, -0xd1, 0xff, 0x68, 0x4f, 0x44, 0xe8, 0xf1, 0x7a, -0xbf, 0x21, 0x40, 0xb9, 0x0b, 0x18, 0x0b, 0xae, -0xf0, 0x53, 0x50, 0xba, 0xdd, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0x73, -0xe5, 0x52, 0x79, 0x90, 0xfd, 0x98, 0xd8, 0x4f, -0xbe, 0x9e, 0xce, 0x05, 0xff, 0xb7, 0xe1, 0x41, -0xf5, 0x8a, 0xb5, 0x2a, 0xff, 0xa7, 0x4c, 0x93, -0x04, 0xac, 0xe6, 0x90, 0x3e, 0xb5, 0x14, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, -0x21, 0x77, 0xd2, 0x25, 0xac, 0x25, 0xb9, 0x55, -0x1e, 0xc3, 0x9d, 0x39, 0xb4, 0x1b, 0x03, 0x83, -0x7c, 0x6e, 0xd1, 0x9a, 0xcf, 0x32, 0xc8, 0x08, -0xe1, 0xc8, 0x3c, 0x84, 0x63, 0xb5, 0x23, 0x3f, -0x63, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, -0x01, 0x22, 0x21, 0xfa, 0x48, 0xf3, 0x6c, 0xc4, -0x2e, 0x0d, 0xd1, 0xbf, 0xac, 0x63, 0x2b, 0x4d, -0x2d, 0x59, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x9d, 0x74, -0x56, 0xc3, 0xee, 0xc2, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc9, 0x01, 0x22, 0x21, 0x44, 0x8f, 0x8e, -0xae, 0x20, 0x4c, 0x72, 0xcc, 0xe4, 0x5c, 0x01, -0xb2, 0xd6, 0xb0, 0xf2, 0x1a, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xf9, -0xbb, 0x11, 0xba, 0x46, 0x1d, 0xf8, 0x03, 0x04, -0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0xef, -0x5c, 0x02, 0xd8, 0xf3, 0xbf, 0xb5, 0xe4, 0x79, -0x8d, 0x62, 0x58, 0xc1, 0x38, 0xee, 0xd7, 0x3b, -0x22, 0x43, 0x9e, 0x77, 0x0b, 0xae, 0x34, 0xce, -0x01, 0x3b, 0x97, 0xcd, 0xf2, 0x23, 0x87, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, -0x21, 0x5d, 0xd6, 0x7e, 0x55, 0x16, 0x27, 0xfd, -0xde, 0xf6, 0x0d, 0xf0, 0x56, 0xdc, 0xab, 0x0a, -0x46, 0xeb, 0x72, 0x2a, 0xa2, 0xb2, 0xa0, 0xa3, -0x38, 0xf0, 0xbc, 0x67, 0xd2, 0x67, 0xbd, 0xfc, -0xa9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, -0x01, 0x22, 0x21, 0xf2, 0x19, 0x51, 0x7e, 0x69, -0x79, 0x89, 0xc5, 0x94, 0xe1, 0x54, 0x0f, 0x8c, -0x91, 0xc1, 0xce, 0x5f, 0x5f, 0x24, 0x27, 0xb2, -0x25, 0x4c, 0x8f, 0xc8, 0x51, 0xf3, 0xbe, 0xf6, -0x92, 0xf7, 0x97, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xcd, 0x01, 0x22, 0x21, 0xbf, 0x8d, 0xa5, -0xd1, 0x6a, 0x03, 0x77, 0x6c, 0xd2, 0x67, 0xcc, -0x42, 0x90, 0xd4, 0x0a, 0x98, 0x58, 0x95, 0xa0, -0x44, 0x79, 0x33, 0x7f, 0x85, 0xdf, 0xea, 0x13, -0x68, 0x8f, 0x34, 0x28, 0x4a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0x80, -0xcd, 0x0c, 0x61, 0xf0, 0x50, 0x2d, 0xbf, 0xbf, -0x73, 0x18, 0x9c, 0x3b, 0x18, 0x5d, 0x33, 0x30, -0x36, 0x17, 0x04, 0x43, 0x24, 0x89, 0xf3, 0x72, -0xef, 0x8c, 0xb0, 0x19, 0x51, 0xf1, 0x3b, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, -0x21, 0x97, 0x83, 0xf5, 0xd7, 0x99, 0x7b, 0xd1, -0xb6, 0xf2, 0xaf, 0xe8, 0xb2, 0xfc, 0x91, 0x2e, -0xc8, 0x3b, 0x02, 0x32, 0x07, 0x45, 0x69, 0x4f, -0x7d, 0xc6, 0xbb, 0xb0, 0x58, 0xea, 0xe8, 0x0e, -0x93, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, -0x01, 0x22, 0x21, 0xdb, 0x58, 0xe7, 0x2c, 0x8b, -0x7a, 0xa2, 0x7a, 0x8f, 0x90, 0x41, 0xe2, 0x94, -0x9b, 0x69, 0xb5, 0x40, 0x25, 0xed, 0x2d, 0xf5, -0x90, 0x7a, 0xa6, 0x75, 0xff, 0x05, 0x9a, 0xc3, -0x1f, 0x37, 0x29, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd1, 0x01, 0x22, 0x21, 0x84, 0xb6, 0xd4, -0xa1, 0xe2, 0x1d, 0x53, 0x41, 0xe0, 0x26, 0x0d, -0x31, 0x0a, 0xb7, 0xa3, 0x06, 0x8d, 0x1f, 0x0d, -0xf3, 0x36, 0x7b, 0x84, 0x70, 0x64, 0xa6, 0x6d, -0xe1, 0xd7, 0x11, 0xb9, 0x83, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0x58, -0x4f, 0x21, 0x86, 0x06, 0x8f, 0x7e, 0xa2, 0xd0, -0x05, 0xae, 0xb5, 0xd0, 0x5c, 0x53, 0xf5, 0x2f, -0xdd, 0xc0, 0xd8, 0x2c, 0x1b, 0xfb, 0xf1, 0x09, -0xb7, 0x1c, 0x70, 0x3d, 0x27, 0x97, 0xc5, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, -0x21, 0x47, 0xeb, 0x24, 0xe6, 0x86, 0x08, 0x35, -0x79, 0x8f, 0x16, 0xf2, 0x31, 0xb2, 0x50, 0xd3, -0x62, 0xa9, 0xdb, 0xc5, 0xe6, 0x91, 0x30, 0x5c, -0xcb, 0xd2, 0xc2, 0xab, 0xd5, 0x36, 0x92, 0x87, -0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, -0x01, 0x22, 0x21, 0x75, 0x8f, 0xef, 0x6e, 0x95, -0x44, 0xc3, 0x7e, 0x12, 0xd6, 0x03, 0xe7, 0xf3, -0x32, 0xf8, 0xb5, 0x1c, 0xd6, 0xa2, 0xa1, 0xe8, -0xb0, 0x08, 0xa0, 0x0b, 0xae, 0xdd, 0xec, 0xaa, -0x92, 0xb1, 0x00, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd5, 0x01, 0x22, 0x21, 0xa1, 0x3a, 0x57, -0x15, 0x5f, 0x1f, 0xc3, 0xbb, 0x10, 0x99, 0xf0, -0xc9, 0x36, 0xa1, 0x2d, 0xf6, 0xef, 0xbd, 0x73, -0x25, 0x01, 0x50, 0x4d, 0xa8, 0xe7, 0x6c, 0x6b, -0x60, 0x21, 0x1c, 0xe1, 0x05, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0xf6, -0x25, 0x04, 0xe6, 0x97, 0x3f, 0xe8, 0xa7, 0x1b, -0x55, 0x53, 0xd9, 0xb0, 0xd2, 0xee, 0x3c, 0x8d, -0x7c, 0xe3, 0x4f, 0x9b, 0x31, 0x62, 0x82, 0x3e, -0xca, 0x22, 0xdd, 0x4b, 0x5b, 0x02, 0x1c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, -0x21, 0x67, 0xe0, 0x9b, 0xd1, 0xd4, 0x97, 0xbc, -0xa6, 0x17, 0xf4, 0xb5, 0x32, 0x91, 0x04, 0xbc, -0xb0, 0x65, 0x5d, 0xb7, 0x3f, 0x4f, 0x7b, 0xb1, -0xda, 0x12, 0x2c, 0xc4, 0x0b, 0x83, 0x6f, 0x36, -0x20, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, -0x01, 0x22, 0x21, 0x72, 0x4f, 0x16, 0x86, 0x53, -0xd8, 0x42, 0x1f, 0xaa, 0x34, 0x14, 0xb9, 0xe4, -0xe6, 0x62, 0x42, 0xd4, 0x85, 0xed, 0x49, 0x3c, -0xa9, 0xf0, 0x25, 0x72, 0xed, 0x0c, 0x2e, 0xaf, -0xb9, 0x6b, 0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd9, 0x01, 0x22, 0x21, 0x1f, 0xef, 0x7d, -0x95, 0xdd, 0xa2, 0xff, 0xe4, 0x90, 0x14, 0x8b, -0xf8, 0xc9, 0x50, 0x51, 0xa8, 0xa4, 0xb5, 0x17, -0xc3, 0x85, 0xfc, 0x50, 0x16, 0xed, 0xd1, 0x34, -0x57, 0x72, 0x1c, 0x93, 0x93, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0x1a, -0x4b, 0xa8, 0x59, 0x96, 0xca, 0xce, 0x88, 0x82, -0x40, 0xf7, 0xce, 0xb6, 0x5f, 0x3f, 0x8d, 0xf0, -0xa9, 0x94, 0xbe, 0x71, 0xdd, 0xbb, 0x54, 0x3f, -0xd3, 0xdc, 0xb6, 0x61, 0xf4, 0xc5, 0xb7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, -0x21, 0x38, 0x7f, 0xc1, 0xa5, 0x7a, 0xf4, 0xd1, -0x32, 0x66, 0xd3, 0xff, 0xf1, 0xd9, 0x26, 0xd4, -0x9c, 0x73, 0x77, 0xa3, 0x46, 0x11, 0x3e, 0x4c, -0xaa, 0x4c, 0xfe, 0xae, 0x3c, 0x6a, 0x60, 0xa0, -0xf0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, -0x01, 0x22, 0x21, 0x67, 0xf7, 0xa1, 0x05, 0x4e, -0x8a, 0xd9, 0x08, 0xa0, 0x8f, 0x76, 0xd9, 0x54, -0xa4, 0xbf, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xef, 0x3d, 0xf5, 0xe3, -0x0d, 0x21, 0x01, 0x78, 0x03, 0x04, 0x51, 0x02, -0x00, 0xdd, 0x01, 0x22, 0x21, 0x39, 0x9a, 0x7e, -0x3f, 0xbb, 0x18, 0xeb, 0xc7, 0x6e, 0x63, 0xb8, -0xb2, 0xdb, 0x50, 0xc3, 0xf6, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xb8, -0xc9, 0x4c, 0x3b, 0x9c, 0x62, 0x58, 0x03, 0x04, -0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0xa9, -0x8a, 0xb7, 0x63, 0x61, 0x55, 0x4a, 0xe6, 0x80, -0xef, 0x30, 0xf0, 0xa3, 0xe0, 0xe1, 0x20, 0x7a, -0x12, 0xbd, 0x92, 0xbe, 0x76, 0x55, 0x08, 0x3c, -0x25, 0xaf, 0x4f, 0x95, 0x32, 0x5b, 0x91, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, -0x21, 0x75, 0xac, 0x56, 0xbb, 0x34, 0xcf, 0x4b, -0x1f, 0xb7, 0xef, 0x77, 0x95, 0x5b, 0x4e, 0x6f, -0x26, 0x90, 0x22, 0x60, 0xfb, 0x35, 0xf8, 0x71, -0x35, 0x17, 0xda, 0x6f, 0x01, 0x08, 0x79, 0xd6, -0x77, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, -0x01, 0x22, 0x21, 0xd0, 0x9b, 0xf7, 0x3b, 0x04, -0x00, 0x9c, 0x72, 0xb4, 0xd6, 0xd8, 0x03, 0xc6, -0xda, 0x2a, 0x5b, 0x9f, 0xf6, 0xbe, 0x09, 0xa2, -0x0a, 0x02, 0x4a, 0x48, 0x07, 0x94, 0x3c, 0xca, -0xb7, 0x81, 0x3d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe1, 0x01, 0x22, 0x21, 0x10, 0x7b, 0xa3, -0x15, 0x70, 0x86, 0x93, 0xfb, 0xac, 0x9b, 0x00, -0x42, 0x20, 0xf1, 0xb9, 0x7d, 0x13, 0x71, 0xb9, -0xfd, 0x20, 0xed, 0xeb, 0xeb, 0x3c, 0xaf, 0x8c, -0x0c, 0x78, 0xcb, 0x11, 0xb1, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0x1b, -0x31, 0xd6, 0x4c, 0x28, 0x3f, 0xcf, 0x92, 0xa8, -0x73, 0x99, 0xe2, 0x9e, 0x3d, 0x15, 0x2b, 0xb5, -0x3f, 0xe3, 0xf8, 0xe7, 0x1c, 0x83, 0x65, 0x6f, -0x2d, 0x0e, 0x60, 0x85, 0xe6, 0xec, 0x60, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, -0x21, 0xa0, 0x6f, 0x06, 0x33, 0xf3, 0x41, 0x02, -0x02, 0x5b, 0x03, 0x35, 0x06, 0x65, 0xe2, 0x03, -0x01, 0xb5, 0x39, 0xc9, 0x94, 0xf8, 0xd1, 0x84, -0xc5, 0x94, 0x8d, 0x3e, 0x9a, 0x21, 0xe6, 0x35, -0xe0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, -0x01, 0x22, 0x21, 0x8f, 0xba, 0xdf, 0x90, 0x50, -0xaf, 0x9e, 0x47, 0xf5, 0xb1, 0x9e, 0x0f, 0x5a, -0x52, 0x13, 0xa0, 0x26, 0xa0, 0x98, 0xa8, 0x5d, -0x34, 0xad, 0xa2, 0xff, 0xd9, 0x3a, 0xa4, 0x63, -0x15, 0x66, 0xac, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe5, 0x01, 0x22, 0x21, 0x00, 0x52, 0xbb, -0x03, 0xd5, 0x79, 0x0b, 0x0e, 0x33, 0xea, 0x61, -0x89, 0xf9, 0x0d, 0x85, 0x06, 0xbb, 0x21, 0xea, -0x56, 0x4a, 0xad, 0x91, 0xd0, 0x47, 0xd2, 0x8e, -0x6f, 0xb2, 0x57, 0x7b, 0x48, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x56, -0x3a, 0x03, 0xe9, 0x07, 0xcf, 0xe8, 0xe5, 0xc5, -0x1c, 0xce, 0x6b, 0xeb, 0xe9, 0x83, 0xee, 0xc0, -0x67, 0xd7, 0xdc, 0x4c, 0xec, 0xe8, 0x02, 0x2d, -0x28, 0xc6, 0x3b, 0xf7, 0xc2, 0x5e, 0x26, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, -0x21, 0x1f, 0x2e, 0x74, 0xed, 0xf2, 0x0d, 0xb4, -0xfc, 0xfb, 0x4e, 0x10, 0x22, 0x6a, 0x47, 0x2b, -0x24, 0x27, 0xb2, 0x8b, 0x6a, 0x97, 0x7e, 0xd2, -0x85, 0xe7, 0x4c, 0x70, 0x8c, 0x44, 0x56, 0x55, -0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, -0x01, 0x22, 0x21, 0xc9, 0xd7, 0x90, 0x33, 0xd8, -0xd8, 0x43, 0xa8, 0xb9, 0xae, 0x3f, 0x39, 0x58, -0xe8, 0xf5, 0x0c, 0x0a, 0x57, 0x30, 0xad, 0xcf, -0xc7, 0x85, 0x75, 0x85, 0x8b, 0x3e, 0xe3, 0x8c, -0x45, 0xde, 0x4f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe9, 0x01, 0x22, 0x21, 0x12, 0xe0, 0x1b, -0xaa, 0xaf, 0x18, 0x45, 0x2b, 0x19, 0x2e, 0x59, -0x52, 0x2f, 0xe7, 0xcb, 0xb1, 0xe1, 0x4e, 0x2d, -0x35, 0x13, 0x31, 0x9c, 0x84, 0xbc, 0x67, 0x90, -0x73, 0xad, 0xed, 0x51, 0x3a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0x39, -0xf2, 0xbd, 0xd2, 0x07, 0x88, 0x89, 0x60, 0x37, -0x9e, 0x95, 0xb3, 0x17, 0xdc, 0x44, 0x13, 0x98, -0xf7, 0xb9, 0x69, 0x24, 0xf6, 0xdc, 0x08, 0x68, -0xf8, 0x7d, 0x08, 0xd4, 0x6b, 0xa1, 0xf8, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, -0x21, 0xd3, 0x91, 0xe0, 0x98, 0x29, 0x10, 0x03, -0x2a, 0x89, 0x86, 0x57, 0x0c, 0x6d, 0x90, 0x70, -0xe0, 0x8f, 0x85, 0x25, 0xa9, 0x1a, 0x08, 0x25, -0x43, 0x18, 0x04, 0x63, 0x61, 0x90, 0xa0, 0x7e, -0x10, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, -0x01, 0x22, 0x21, 0xb3, 0x83, 0xc3, 0x97, 0xb3, -0x8e, 0xfe, 0x98, 0x84, 0x6a, 0x3a, 0xf0, 0xf2, -0x9b, 0x5d, 0x02, 0xc6, 0x61, 0x02, 0x61, 0xd8, -0xe7, 0x38, 0x0c, 0x01, 0xb1, 0xa3, 0x13, 0xf4, -0xdb, 0x0d, 0xa5, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xed, 0x01, 0x22, 0x21, 0x9a, 0x4d, 0x4b, -0xb7, 0x0f, 0x81, 0xff, 0x94, 0xd1, 0x97, 0x55, -0x1f, 0x54, 0xad, 0xf1, 0x1a, 0x82, 0x18, 0x44, -0x74, 0xb5, 0x76, 0x3b, 0xa9, 0x5e, 0xa2, 0x39, -0x7e, 0x60, 0x9c, 0x40, 0xaf, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0x72, -0x9d, 0x64, 0x65, 0x0b, 0x44, 0x11, 0x13, 0xce, -0x2d, 0x16, 0xf2, 0x6f, 0x12, 0xe0, 0x99, 0x14, -0xd1, 0x27, 0x7c, 0x62, 0x2f, 0x0e, 0xff, 0x7c, -0xbd, 0x53, 0x35, 0x2a, 0xe3, 0x69, 0x20, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, -0x21, 0x00, 0x80, 0x3d, 0x09, 0xe6, 0x0a, 0xed, -0xc4, 0x3c, 0x9d, 0x3a, 0xd5, 0x19, 0x44, 0xfe, -0x62, 0x11, 0x9e, 0x27, 0x98, 0x25, 0x71, 0x14, -0x8e, 0x3d, 0xfd, 0x6d, 0xdc, 0x44, 0xe6, 0x57, -0xee, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, -0x01, 0x22, 0x21, 0x0d, 0xb7, 0xe8, 0x75, 0x5f, -0x6f, 0x81, 0x37, 0x1d, 0xfe, 0xc5, 0xca, 0x9f, -0xe4, 0x53, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x1f, 0xec, 0x44, 0xab, -0x0f, 0x97, 0x48, 0x14, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf1, 0x01, 0x22, 0x21, 0x16, 0x76, 0x07, -0x41, 0x5f, 0xd0, 0xb8, 0x56, 0x37, 0x1e, 0x4c, -0x86, 0xc0, 0xb3, 0x9c, 0x58, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x8c, -0xe4, 0x0e, 0x54, 0x4f, 0x5b, 0xd8, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0x6e, -0x75, 0xf1, 0xfc, 0x73, 0xdb, 0x44, 0xd0, 0xff, -0x97, 0xea, 0xc1, 0x0c, 0x9d, 0x9b, 0x4d, 0x81, -0x8e, 0x85, 0xc1, 0x29, 0x58, 0xfe, 0xc9, 0x48, -0x3d, 0xbc, 0x63, 0x26, 0xde, 0x3b, 0x91, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, -0x21, 0xc8, 0x95, 0x68, 0xd8, 0x3f, 0xfe, 0x25, -0x33, 0x24, 0xf6, 0xad, 0x6a, 0xe1, 0xd0, 0xeb, -0x31, 0xc7, 0xf2, 0xf0, 0x92, 0xea, 0x51, 0x86, -0x86, 0x40, 0xaa, 0x53, 0x84, 0xf7, 0xaa, 0xe8, -0x0f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, -0x01, 0x22, 0x21, 0x36, 0xa4, 0x3e, 0xd4, 0xb4, -0x9b, 0x86, 0x11, 0x75, 0xde, 0x7f, 0x8f, 0x30, -0x57, 0xfb, 0x2c, 0x24, 0x41, 0xcf, 0x7e, 0x6f, -0x87, 0x5e, 0xb0, 0xb1, 0x4d, 0x14, 0x3a, 0xd6, -0x28, 0xb7, 0xa6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf5, 0x01, 0x22, 0x21, 0x6e, 0x38, 0x17, -0xe1, 0x7e, 0xed, 0x2d, 0x64, 0x9e, 0x21, 0xb9, -0xea, 0xe4, 0x36, 0x22, 0x00, 0xa2, 0x15, 0x6e, -0xa9, 0x6b, 0x5d, 0x04, 0x88, 0xac, 0x4b, 0xbc, -0xd3, 0xef, 0x7c, 0x30, 0xaa, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0x3b, -0x59, 0xfe, 0xca, 0x46, 0xb8, 0x19, 0x58, 0x76, -0xb3, 0x16, 0x3b, 0x4f, 0x54, 0x7a, 0xb5, 0xb0, -0xd4, 0xa1, 0x2b, 0xa7, 0x97, 0x7b, 0xbf, 0x8f, -0xc6, 0x79, 0x1a, 0xe4, 0x61, 0xf2, 0x0c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, -0x21, 0xc2, 0x86, 0x86, 0x90, 0x6f, 0x9f, 0x29, -0xfb, 0x5d, 0x92, 0xab, 0x9e, 0x84, 0xc8, 0xdf, -0xa2, 0x23, 0x94, 0xbe, 0x8e, 0x21, 0x9e, 0x43, -0xba, 0x69, 0x21, 0x6c, 0xf3, 0x3c, 0xec, 0x16, -0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, -0x01, 0x22, 0x21, 0x4d, 0xc2, 0xea, 0xd1, 0x47, -0x92, 0x74, 0xd1, 0xdc, 0x5c, 0x3d, 0x4c, 0xe0, -0xce, 0xa3, 0x6f, 0x5e, 0x8a, 0xec, 0x47, 0x3d, -0xd0, 0xcf, 0x2b, 0xbe, 0xe0, 0x5c, 0x9b, 0x33, -0xe5, 0x29, 0xd2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf9, 0x01, 0x22, 0x21, 0xc8, 0xe4, 0xcb, -0x08, 0x1a, 0xc9, 0x7a, 0x75, 0x27, 0x2e, 0xef, -0x04, 0xec, 0x1a, 0xe0, 0x9f, 0xb6, 0xdc, 0x7d, -0xfd, 0x64, 0x72, 0x3d, 0x72, 0xd9, 0x16, 0xfd, -0x13, 0x3f, 0xe5, 0x66, 0x1b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0x86, -0x43, 0x68, 0xfb, 0xaf, 0xe7, 0x58, 0x0a, 0x51, -0x9b, 0x62, 0x8f, 0x38, 0xd9, 0x36, 0x52, 0x3b, -0xed, 0xec, 0x6d, 0x33, 0x57, 0x16, 0xb4, 0x71, -0x2a, 0xc2, 0xe8, 0xd2, 0xcc, 0x4f, 0xd0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, -0x21, 0x98, 0xea, 0x4c, 0xac, 0x10, 0x7c, 0xbe, -0xa0, 0x81, 0xcd, 0xfc, 0x10, 0xa1, 0x40, 0x8b, -0x8e, 0xa7, 0xfb, 0x44, 0x83, 0xcb, 0x88, 0x35, -0xfd, 0x48, 0x9e, 0x80, 0x1c, 0x87, 0x31, 0xdf, -0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, -0x01, 0x22, 0x21, 0x55, 0xe4, 0x9f, 0x4c, 0x2f, -0x88, 0x86, 0xf4, 0xb0, 0x09, 0x01, 0x6e, 0xd4, -0xaf, 0x7e, 0xe9, 0x57, 0x1a, 0xc1, 0x74, 0xf9, -0x47, 0xd8, 0xe4, 0x51, 0x41, 0xc3, 0x0d, 0x72, -0xf7, 0x50, 0xfa, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xfd, 0x01, 0x22, 0x21, 0x74, 0xc5, 0x45, -0x38, 0x06, 0x49, 0x81, 0x67, 0x20, 0x04, 0x79, -0xee, 0xbb, 0x20, 0x76, 0xd4, 0xf0, 0x91, 0x7f, -0x9f, 0x24, 0x84, 0x8d, 0xfb, 0xbc, 0x09, 0x9a, -0x84, 0x41, 0x58, 0xc1, 0xbe, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0xe8, -0x22, 0xff, 0xc6, 0xe1, 0x31, 0x14, 0xdc, 0xf2, -0xc2, 0x5e, 0x53, 0xe9, 0x03, 0xc2, 0x7b, 0x31, -0xd7, 0x88, 0x35, 0xc0, 0x29, 0xab, 0xe5, 0x87, -0x0f, 0x6b, 0x4b, 0xdc, 0xf1, 0x06, 0xc6, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, -0x21, 0x1b, 0x79, 0xc3, 0x61, 0xa1, 0xd9, 0x6e, -0xa4, 0x7d, 0xbc, 0x86, 0xdc, 0x75, 0xf0, 0x33, -0x00, 0x3b, 0xec, 0x20, 0x04, 0x03, 0x3e, 0x07, -0x8a, 0xa4, 0xf5, 0x04, 0x9e, 0x74, 0x17, 0xa3, -0x7f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, -0x01, 0x22, 0x21, 0x63, 0x8d, 0xc5, 0x49, 0x22, -0x93, 0x6f, 0xa1, 0x22, 0x34, 0x62, 0xc4, 0x5c, -0x95, 0x30, 0xb9, 0x54, 0x53, 0xfe, 0xf0, 0x77, -0xdd, 0xaf, 0x3d, 0x26, 0xcc, 0xc1, 0xdc, 0xb7, -0xde, 0xff, 0xa3, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x01, 0x01, 0x22, 0x21, 0x11, 0x5d, 0xe7, -0xed, 0xfb, 0x94, 0x9d, 0xea, 0xea, 0x14, 0xcd, -0x92, 0x23, 0x3e, 0x9c, 0x8e, 0xa5, 0xa1, 0xd6, -0xde, 0x8c, 0x13, 0x04, 0x9c, 0x26, 0x43, 0x25, -0x24, 0x99, 0x23, 0x90, 0x11, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0x8e, -0xed, 0x27, 0x4e, 0x87, 0x59, 0x51, 0x59, 0xa8, -0x17, 0x36, 0x91, 0x99, 0x8d, 0xec, 0x08, 0xec, -0xf4, 0xe5, 0x17, 0x6f, 0x68, 0x17, 0xd2, 0xf6, -0xb8, 0x2a, 0xdb, 0xc5, 0xe0, 0xef, 0x21, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, -0x21, 0xce, 0x74, 0x7f, 0x91, 0x5e, 0xf6, 0xd2, -0x35, 0x19, 0x70, 0x50, 0x63, 0x2f, 0x4b, 0x52, -0x04, 0x90, 0x06, 0x8a, 0xc2, 0xa1, 0xd8, 0xc5, -0xc7, 0x48, 0x5d, 0x34, 0x2b, 0x60, 0xcb, 0x92, -0xc2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, -0x01, 0x22, 0x21, 0xca, 0x16, 0x2e, 0xd4, 0x00, -0xc6, 0xc8, 0xc8, 0xfd, 0x61, 0x13, 0x80, 0x69, -0x6a, 0x06, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xc3, 0x2e, 0xa8, 0x9f, -0x59, 0x8d, 0x57, 0x23, 0x03, 0x04, 0x51, 0x02, -0x00, 0x05, 0x01, 0x22, 0x21, 0x6e, 0x99, 0x60, -0xc6, 0x91, 0x7b, 0x78, 0xfb, 0x98, 0xbb, 0x5b, -0x97, 0x93, 0xca, 0x24, 0x99, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x05, -0x72, 0xb4, 0xab, 0x65, 0x9e, 0xc9, 0x03, 0x04, -0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x80, -0x68, 0xd5, 0xc2, 0x45, 0xd1, 0xda, 0x6d, 0xdd, -0x06, 0x2e, 0x81, 0x87, 0x13, 0x89, 0x8d, 0x6c, -0x13, 0x6a, 0xd6, 0xc5, 0x64, 0xcf, 0x75, 0x48, -0xfc, 0xb3, 0x3d, 0x3f, 0x7a, 0x39, 0xcd, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, -0x21, 0xd0, 0x69, 0x51, 0x07, 0x9c, 0x01, 0xe2, -0x8c, 0xa5, 0x0d, 0x11, 0x4c, 0xb3, 0x5a, 0x37, -0x03, 0xde, 0x9e, 0xa0, 0x55, 0x34, 0xbe, 0xe4, -0x5a, 0xe7, 0xc1, 0x69, 0x05, 0xd9, 0xb4, 0x52, -0xca, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, -0x01, 0x22, 0x21, 0x7a, 0x5b, 0xef, 0x75, 0x54, -0xad, 0x92, 0x4e, 0xf7, 0x70, 0x0e, 0xa0, 0x83, -0xca, 0x8a, 0xa1, 0x2f, 0x00, 0xe7, 0x65, 0x3d, -0xac, 0x34, 0x67, 0x30, 0x42, 0x72, 0xa0, 0x9c, -0xea, 0x66, 0xa4, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x09, 0x01, 0x22, 0x21, 0x70, 0x4e, 0xa3, -0xdb, 0x06, 0x73, 0x7d, 0xf6, 0xf9, 0xa6, 0xea, -0xf7, 0x4e, 0xcb, 0xe7, 0xdf, 0x57, 0x00, 0x27, -0x57, 0xc7, 0x53, 0x2e, 0xcf, 0x65, 0x02, 0x7e, -0x94, 0x29, 0x0b, 0x36, 0x1d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0x9e, -0xe0, 0x11, 0x2c, 0xd7, 0x99, 0xf5, 0x7e, 0xdd, -0x2f, 0xe0, 0xeb, 0xc9, 0x21, 0xbe, 0xb7, 0xb4, -0x1d, 0x3d, 0x36, 0xfc, 0x97, 0x52, 0x37, 0x8f, -0x67, 0xb3, 0x6f, 0x4f, 0x28, 0xac, 0x68, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, -0x21, 0x22, 0x9b, 0xc0, 0xe2, 0x6c, 0xad, 0xb2, -0x08, 0x9f, 0x61, 0x47, 0x35, 0xbd, 0x6e, 0xfd, -0x54, 0x8d, 0x41, 0x3b, 0xac, 0x57, 0xea, 0xda, -0x84, 0x44, 0xd7, 0x39, 0x1e, 0xe6, 0x90, 0xd6, -0xde, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, -0x01, 0x22, 0x21, 0xee, 0xb0, 0x1d, 0x89, 0x11, -0x7d, 0x55, 0x18, 0x8e, 0x79, 0x82, 0xbe, 0x0b, -0x8a, 0xba, 0xe7, 0x9e, 0x49, 0xf7, 0x56, 0xdc, -0x43, 0xaf, 0x8b, 0xde, 0x18, 0x40, 0x86, 0x96, -0xe9, 0x93, 0x45, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x0d, 0x01, 0x22, 0x21, 0x0f, 0xdb, 0xdd, -0x82, 0x1a, 0x1c, 0x9c, 0x75, 0xb8, 0x93, 0x65, -0xf8, 0xf6, 0x19, 0x4b, 0x53, 0xd7, 0xc7, 0x7f, -0x60, 0x8e, 0x0e, 0x4e, 0xbd, 0xc5, 0x5d, 0x0c, -0xc6, 0xbc, 0xca, 0x3d, 0x6f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0xbe, -0x80, 0xd2, 0xb3, 0xca, 0x55, 0x80, 0x41, 0x5f, -0xc2, 0xb8, 0x0f, 0xa4, 0xad, 0x58, 0xd0, 0x46, -0x0d, 0xda, 0xec, 0xc8, 0xd9, 0x55, 0x27, 0xaf, -0x34, 0x79, 0x7e, 0x8e, 0x0d, 0xb5, 0x15, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, -0x21, 0x17, 0x0f, 0x06, 0xfa, 0x1e, 0x8b, 0xcc, -0xd7, 0xf4, 0x91, 0xd7, 0xf2, 0x92, 0x55, 0xa8, -0x04, 0x3c, 0x3e, 0xc1, 0xf5, 0x28, 0x2b, 0xe5, -0x50, 0xe3, 0x62, 0xfa, 0x56, 0x9a, 0xeb, 0xc4, -0x26, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, -0x01, 0x22, 0x21, 0x94, 0x5d, 0xda, 0x8c, 0x4c, -0x3c, 0x22, 0x6a, 0x14, 0x5b, 0xc6, 0x07, 0xfb, -0x37, 0x7f, 0xad, 0xbd, 0x11, 0xbf, 0x84, 0x3f, -0x41, 0xe7, 0x0f, 0x5c, 0x7e, 0xdd, 0x4f, 0x77, -0xf1, 0x70, 0x34, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x11, 0x01, 0x22, 0x21, 0x07, 0x01, 0x87, -0x54, 0xb7, 0xf2, 0x26, 0xe8, 0xb9, 0x64, 0x6f, -0xdd, 0x88, 0x55, 0x8a, 0x01, 0xee, 0xa0, 0xcc, -0x14, 0x13, 0x8a, 0x60, 0x83, 0xec, 0x0b, 0xd7, -0xb8, 0x35, 0xe1, 0x28, 0xe6, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0xc0, -0x2f, 0xca, 0x7d, 0x1e, 0xdd, 0x32, 0x2d, 0x5e, -0xdb, 0xbf, 0x42, 0xb2, 0xb6, 0xa4, 0x59, 0x41, -0x2d, 0xf8, 0xc3, 0xea, 0x83, 0x9e, 0x4c, 0xfc, -0x21, 0x5f, 0x17, 0x1d, 0x07, 0x7d, 0x89, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, -0x21, 0x15, 0x6f, 0x23, 0xce, 0xad, 0x88, 0xb4, -0x73, 0x4e, 0x2f, 0x12, 0x28, 0x40, 0xc4, 0xa7, -0x86, 0x5a, 0x40, 0x50, 0x08, 0x17, 0x74, 0xa5, -0x5d, 0xa7, 0x1f, 0x8f, 0x57, 0x40, 0xf5, 0x29, -0x3b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, -0x01, 0x22, 0x21, 0x71, 0xb1, 0x3b, 0x4d, 0x80, -0x70, 0x71, 0x1d, 0x7e, 0xba, 0x07, 0xb6, 0x16, -0x0c, 0x8b, 0x1a, 0x3d, 0xb9, 0x29, 0x0e, 0xee, -0x32, 0x72, 0xb0, 0x43, 0xcb, 0x6f, 0xd2, 0xdc, -0x76, 0xd6, 0xea, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x15, 0x01, 0x22, 0x21, 0xea, 0xac, 0xb6, -0x5e, 0x8b, 0x56, 0xaa, 0xf8, 0x9b, 0x20, 0x76, -0x50, 0x3d, 0xf1, 0xd9, 0x0d, 0xf1, 0xe9, 0x43, -0xbd, 0xa8, 0xde, 0xfd, 0xc8, 0x5a, 0xf6, 0x07, -0xf4, 0x2f, 0x04, 0xbd, 0x72, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0x8a, -0xfc, 0xff, 0xe5, 0x9c, 0xcf, 0x8b, 0x1a, 0xd4, -0x46, 0x25, 0xa8, 0x0c, 0x1f, 0x98, 0x5d, 0xae, -0x45, 0xa2, 0x22, 0xc5, 0x1b, 0x60, 0x08, 0xd6, -0x2a, 0x30, 0xa4, 0x8c, 0xe7, 0xc3, 0x5a, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, -0x21, 0x56, 0x98, 0xae, 0x72, 0x17, 0xf1, 0xeb, -0xcb, 0x45, 0x0f, 0x2b, 0x9d, 0xd6, 0x21, 0x44, -0x0a, 0x9c, 0xc7, 0x24, 0x66, 0x93, 0x2e, 0xe3, -0x3e, 0x5f, 0x0f, 0xbb, 0x21, 0xe2, 0x01, 0xa7, -0x52, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, -0x01, 0x22, 0x21, 0xfd, 0x8a, 0xaf, 0x46, 0xc6, -0x87, 0xed, 0x22, 0xa2, 0xf2, 0x47, 0x2c, 0x57, -0x36, 0x58, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xc0, 0x83, 0xe9, 0x48, -0x88, 0x6a, 0x4c, 0x1f, 0x03, 0x04, 0x51, 0x02, -0x00, 0x19, 0x01, 0x22, 0x21, 0xb2, 0x3f, 0xc5, -0x59, 0xbc, 0xd0, 0x74, 0x85, 0x05, 0x53, 0x4a, -0x90, 0x3c, 0xdd, 0x7e, 0x11, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x37, -0x28, 0xa9, 0xc0, 0xf0, 0xc2, 0x92, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x7a, -0x34, 0xa2, 0xb7, 0xce, 0x93, 0x54, 0x4e, 0x3d, -0xd1, 0xf3, 0xfc, 0x07, 0x2b, 0xbc, 0xb4, 0xf8, -0xb2, 0xe5, 0x2b, 0x34, 0xe4, 0x62, 0xe6, 0x49, -0xbb, 0x96, 0x80, 0x56, 0xb5, 0x1c, 0xac, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, -0x21, 0x9e, 0x19, 0x47, 0xfb, 0x5a, 0x10, 0x19, -0xb6, 0x4e, 0xd0, 0x5c, 0x3a, 0x3a, 0xdc, 0x64, -0xc7, 0x75, 0xb9, 0xd8, 0xaa, 0x7b, 0xec, 0x36, -0xa8, 0xae, 0xbf, 0xf3, 0xd8, 0x7a, 0xde, 0x62, -0x9e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, -0x01, 0x22, 0x21, 0x5d, 0x77, 0x06, 0x5b, 0x78, -0x59, 0x1c, 0xad, 0xba, 0x6b, 0xd3, 0x3e, 0x10, -0xef, 0x96, 0xf8, 0xf4, 0xbe, 0x5a, 0x4b, 0x54, -0x05, 0x3e, 0x0c, 0x68, 0x67, 0x54, 0xa9, 0x67, -0x9e, 0x62, 0x94, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x1d, 0x01, 0x22, 0x21, 0x18, 0x0b, 0x4c, -0xe3, 0xc5, 0x2c, 0xa8, 0xf8, 0x59, 0x28, 0xcc, -0x10, 0xcb, 0x82, 0x7e, 0xc8, 0xf3, 0xd6, 0x26, -0xd3, 0xf0, 0x7b, 0xba, 0x19, 0xe4, 0x27, 0x31, -0xa4, 0x02, 0x17, 0xf7, 0xe6, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0x2a, -0x76, 0xc5, 0x03, 0x74, 0x47, 0x5b, 0x22, 0x81, -0xed, 0x8b, 0x04, 0x9e, 0xbf, 0xc4, 0x48, 0xec, -0xb3, 0x3f, 0xfe, 0x52, 0x24, 0x36, 0xf9, 0xe8, -0x7c, 0x92, 0x91, 0xa0, 0xa6, 0x1e, 0x17, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, -0x21, 0xfe, 0xd8, 0x98, 0x13, 0x71, 0x91, 0xf9, -0x62, 0x2b, 0xb2, 0xd5, 0x40, 0x6c, 0x1d, 0xe8, -0xe3, 0x20, 0x84, 0xa9, 0x74, 0x23, 0xea, 0x71, -0x1e, 0xcf, 0x04, 0x8d, 0xd9, 0x2e, 0xf1, 0x68, -0x89, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, -0x01, 0x22, 0x21, 0x13, 0x18, 0xbb, 0xc4, 0xc0, -0x38, 0x57, 0xdc, 0xbc, 0xe7, 0x16, 0x88, 0x38, -0xcd, 0x67, 0xfb, 0x70, 0x9d, 0x78, 0x73, 0xb3, -0xa1, 0x61, 0xc1, 0x54, 0x8b, 0x02, 0x14, 0x4f, -0x43, 0xc2, 0xbf, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x21, 0x01, 0x22, 0x21, 0xa4, 0x04, 0x98, -0x60, 0x45, 0xd0, 0x1f, 0xe6, 0xa0, 0xf1, 0x8e, -0x95, 0x3d, 0xe2, 0x2a, 0xdb, 0x78, 0x9a, 0x5f, -0xe6, 0xd4, 0x8d, 0x74, 0x0d, 0x94, 0x13, 0x74, -0xb9, 0xd6, 0x0b, 0x50, 0xba, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xe5, -0xf0, 0xb2, 0x83, 0x22, 0x0f, 0xde, 0x7e, 0xfc, -0x20, 0x35, 0xdd, 0x37, 0xa4, 0xc4, 0xff, 0x7d, -0x43, 0x3b, 0x48, 0x5e, 0x99, 0x50, 0x5f, 0x85, -0x48, 0x60, 0x9f, 0xac, 0x90, 0x80, 0x25, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, -0x21, 0xe1, 0xc3, 0x55, 0x17, 0xae, 0xcf, 0x38, -0x68, 0x8d, 0x69, 0x0b, 0xd5, 0x92, 0x61, 0x8e, -0x71, 0x2a, 0x28, 0x4c, 0xd3, 0xd7, 0x28, 0x92, -0x3d, 0xf2, 0xc0, 0xcd, 0x52, 0xf5, 0xc5, 0x3b, -0x25, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, -0x01, 0x22, 0x21, 0xb4, 0x3c, 0xa4, 0xa8, 0xb3, -0x11, 0x42, 0x34, 0x22, 0xeb, 0x63, 0xb8, 0x76, -0x9a, 0xdf, 0x20, 0x14, 0x19, 0x79, 0x8e, 0x62, -0x46, 0x13, 0x18, 0x02, 0x42, 0x59, 0xfd, 0xa7, -0x1f, 0x42, 0xbf, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x25, 0x01, 0x22, 0x21, 0x45, 0x35, 0x5b, -0xed, 0x32, 0x8c, 0x8f, 0x2e, 0x96, 0xb1, 0x20, -0xc6, 0xfd, 0x02, 0xae, 0x8a, 0x92, 0x68, 0x5a, -0x4f, 0x5f, 0xe8, 0x47, 0x6a, 0xdd, 0x93, 0x03, -0x7b, 0xa0, 0x60, 0x40, 0xf4, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0xeb, -0x43, 0x0e, 0xe4, 0xad, 0x88, 0xcc, 0xe5, 0x86, -0x6b, 0xb7, 0x33, 0x3e, 0x20, 0x17, 0x9d, 0xbc, -0x2c, 0x91, 0xc8, 0x47, 0x78, 0x21, 0xd1, 0xf4, -0xbb, 0x7a, 0xb1, 0xbb, 0x5d, 0xe6, 0x5c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, -0x21, 0x5c, 0x68, 0x61, 0x26, 0xb9, 0x70, 0x4a, -0x2d, 0xd3, 0xb8, 0xc9, 0x1f, 0x75, 0x25, 0x7f, -0x02, 0xac, 0x4b, 0x4d, 0x62, 0x98, 0xeb, 0xb9, -0xcf, 0xa0, 0xaf, 0xc6, 0x24, 0xc9, 0x94, 0x12, -0xda, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, -0x01, 0x22, 0x21, 0xec, 0x7e, 0xcc, 0x2d, 0x8a, -0x0e, 0xfc, 0xb1, 0xad, 0x81, 0xdc, 0x05, 0xfc, -0x5f, 0xaf, 0xbf, 0x6f, 0x95, 0xa3, 0x76, 0xf8, -0x68, 0xce, 0x76, 0xc8, 0x29, 0xb5, 0xaa, 0xbc, -0xf4, 0x54, 0x5d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x29, 0x01, 0x22, 0x21, 0x15, 0x77, 0x0d, -0xc7, 0x1f, 0x68, 0xd3, 0x7a, 0xc8, 0x8e, 0xce, -0x5c, 0x78, 0xa0, 0xec, 0x98, 0x61, 0xaf, 0x28, -0x1e, 0xc1, 0x82, 0xc1, 0x84, 0x77, 0x52, 0x29, -0x22, 0xc5, 0xab, 0x38, 0x19, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0x60, -0xbf, 0x90, 0x1c, 0xfa, 0xab, 0xfe, 0x9a, 0xa3, -0xfd, 0x44, 0x3f, 0xbb, 0xbf, 0xa2, 0x2a, 0x0b, -0x01, 0xbb, 0xa6, 0xef, 0x1c, 0xd7, 0xa5, 0xed, -0xd5, 0xc7, 0x11, 0x69, 0x2b, 0x9a, 0x72, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, -0x21, 0x61, 0xa0, 0xb7, 0x2e, 0xeb, 0x78, 0x1c, -0x92, 0xc6, 0xcb, 0x17, 0x28, 0x2c, 0xfc, 0xb4, -0x27, 0x83, 0xf9, 0x98, 0x92, 0x32, 0x67, 0x41, -0x2d, 0x32, 0x1f, 0x2a, 0x34, 0x85, 0x21, 0xc4, -0xfc, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, -0x01, 0x22, 0x21, 0xbf, 0xe3, 0xa2, 0x7b, 0x23, -0x01, 0x4b, 0x0e, 0x63, 0x55, 0xd7, 0x8d, 0x34, -0xae, 0x37, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x7d, 0xe6, 0x95, 0xca, -0x21, 0x98, 0xae, 0xfc, 0x03, 0x04, 0x51, 0x02, -0x00, 0x2d, 0x01, 0x22, 0x21, 0x1b, 0xf9, 0xf8, -0x84, 0x8c, 0xf5, 0x20, 0xbd, 0x1b, 0xaa, 0x5e, -0xa4, 0x5f, 0xb4, 0x0b, 0x1b, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1e, -0x43, 0xb2, 0xc4, 0xbe, 0xb8, 0x09, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0x5b, -0x09, 0x17, 0x82, 0x70, 0x49, 0x72, 0xdd, 0xf3, -0xa9, 0x42, 0xe7, 0x18, 0x10, 0xea, 0xa8, 0x14, -0x1b, 0x3f, 0x85, 0xca, 0x43, 0x43, 0x77, 0x76, -0xc0, 0x28, 0x4c, 0x2d, 0xf4, 0x92, 0x5f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, -0x21, 0xe4, 0x5c, 0xd4, 0x46, 0xb0, 0xb8, 0xcc, -0xc4, 0x76, 0xdd, 0xa5, 0x90, 0xe4, 0x4e, 0x54, -0x70, 0x58, 0xb2, 0xe0, 0xc5, 0x09, 0xf2, 0x21, -0x63, 0x3d, 0xde, 0x07, 0x17, 0x66, 0x19, 0x92, -0x65, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, -0x01, 0x22, 0x21, 0xd7, 0x35, 0xca, 0x53, 0x61, -0x9f, 0xb7, 0x04, 0xdc, 0xa6, 0x29, 0x65, 0xba, -0xdd, 0x17, 0xf3, 0xd9, 0x0e, 0x57, 0x10, 0x64, -0x4c, 0x75, 0x61, 0xe5, 0xeb, 0x65, 0xd7, 0xe0, -0x6c, 0x91, 0x70, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x31, 0x01, 0x22, 0x21, 0x11, 0x98, 0xf6, -0x5c, 0xfc, 0xa2, 0xc8, 0xa5, 0xd3, 0xf9, 0x4a, -0xca, 0xaf, 0x7d, 0xd7, 0x5d, 0x22, 0xe5, 0x6a, -0xec, 0x7d, 0x2f, 0xf7, 0xce, 0xa5, 0xfa, 0xf6, -0x1f, 0x13, 0x30, 0x52, 0xa1, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0x18, -0x4d, 0xd6, 0x44, 0xdb, 0x35, 0x09, 0x6a, 0x95, -0x3c, 0xdd, 0xc6, 0x24, 0x45, 0x89, 0x2d, 0xc8, -0xfa, 0x37, 0xf3, 0x87, 0xd7, 0x1a, 0x23, 0x11, -0x45, 0xf7, 0x28, 0xaf, 0x84, 0xcc, 0xc9, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, -0x21, 0xa2, 0x89, 0x9c, 0xbc, 0xca, 0x31, 0x32, -0x4f, 0x80, 0x38, 0xf4, 0x98, 0x68, 0x09, 0x11, -0xb5, 0x8d, 0xb1, 0xbc, 0x0c, 0x4b, 0x4e, 0xe5, -0x06, 0xa4, 0x5e, 0x39, 0x6c, 0xde, 0xfa, 0x96, -0xd8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, -0x01, 0x22, 0x21, 0xf8, 0xc9, 0xda, 0x04, 0xff, -0xad, 0xe7, 0x18, 0xd7, 0xd3, 0x96, 0x53, 0xb8, -0x10, 0x92, 0x21, 0xd0, 0xfb, 0x89, 0x3e, 0x9e, -0x32, 0x30, 0x20, 0xf8, 0x8f, 0xaf, 0x5a, 0xaf, -0x41, 0x36, 0x8c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x35, 0x01, 0x22, 0x21, 0x3c, 0xb4, 0x9f, -0xea, 0x7f, 0xe4, 0x83, 0x06, 0xdb, 0x2d, 0xb9, -0x35, 0x97, 0xe8, 0x40, 0x89, 0x61, 0xa9, 0xe4, -0xb7, 0xfa, 0x9f, 0x62, 0xd5, 0x2d, 0x5b, 0x40, -0xb3, 0x4b, 0x0e, 0xfb, 0xa9, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x16, -0xbb, 0x6e, 0x4e, 0xd4, 0xee, 0x98, 0xd2, 0x91, -0x81, 0x97, 0xc9, 0x14, 0x6d, 0x12, 0x82, 0x1b, -0x13, 0x56, 0xd4, 0xed, 0x11, 0xdd, 0x4d, 0x7a, -0x1a, 0x33, 0x0a, 0xcb, 0x55, 0x97, 0xa7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, -0x21, 0x28, 0x56, 0x75, 0xe1, 0xa6, 0x9d, 0xb2, -0xa3, 0x7d, 0x0d, 0x6e, 0xd6, 0x05, 0xd5, 0x4e, -0x81, 0xff, 0x43, 0x21, 0x86, 0xe3, 0x86, 0xf4, -0x7f, 0x92, 0xf0, 0xf2, 0xeb, 0x57, 0x32, 0xb2, -0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, -0x01, 0x22, 0x21, 0x6f, 0x19, 0x3a, 0x4f, 0x25, -0x82, 0x05, 0x55, 0xda, 0x1d, 0xd4, 0x97, 0x80, -0x3d, 0x2e, 0x8b, 0xb8, 0x9a, 0x07, 0x09, 0xc6, -0xc6, 0xdc, 0x2c, 0x21, 0x00, 0x7b, 0x15, 0xd5, -0x70, 0x1e, 0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x39, 0x01, 0x22, 0x21, 0x1b, 0xd4, 0x72, -0x3b, 0xf3, 0x5a, 0xe1, 0x97, 0x32, 0xde, 0x47, -0x56, 0xcb, 0x87, 0xe7, 0xb5, 0x0d, 0x3b, 0x63, -0x22, 0xd3, 0x9d, 0x89, 0x54, 0x9b, 0x0f, 0xa9, -0x6a, 0xbe, 0x7d, 0xd6, 0x6a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0xf0, -0xc9, 0xcb, 0x35, 0xe2, 0x70, 0x8f, 0x8f, 0xf1, -0xa5, 0xc6, 0x39, 0x63, 0x83, 0x3f, 0xf8, 0xbf, -0x35, 0x05, 0x2a, 0x68, 0x8f, 0x86, 0x39, 0xba, -0x2f, 0x25, 0x1e, 0xc1, 0x28, 0x6b, 0x24, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, -0x21, 0x10, 0xbd, 0xbe, 0x8a, 0xd0, 0x5a, 0x71, -0xb3, 0xb8, 0xfa, 0x38, 0xa8, 0xbd, 0xbf, 0x2f, -0x7e, 0x31, 0x8b, 0x71, 0xdb, 0x6d, 0x83, 0xe1, -0xc3, 0xf1, 0xdd, 0xd9, 0xcf, 0xe1, 0xb9, 0x13, -0xa4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, -0x01, 0x22, 0x21, 0xe5, 0xd7, 0x0c, 0x51, 0x59, -0x64, 0x6b, 0x8f, 0x4a, 0x22, 0x30, 0x24, 0x86, -0xcf, 0x00, 0x40, 0x8e, 0x08, 0xcf, 0x1f, 0xd6, -0xf3, 0x7a, 0x44, 0x33, 0x93, 0xc8, 0xe5, 0x1c, -0x94, 0xc1, 0x56, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x3d, 0x01, 0x22, 0x21, 0xba, 0x13, 0x16, -0x3a, 0xfa, 0xcb, 0x9a, 0x29, 0xee, 0x58, 0x2c, -0xec, 0x0d, 0xf5, 0x17, 0xf5, 0x71, 0xbd, 0x0d, -0x37, 0x20, 0x4d, 0x4a, 0x69, 0x50, 0xe3, 0x68, -0x9c, 0x47, 0xd6, 0xf7, 0x4a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x11, -0x92, 0x03, 0x96, 0xca, 0x81, 0x5d, 0xdc, 0x8e, -0xb2, 0x4b, 0x36, 0xbf, 0xae, 0xf6, 0x4d, 0x71, -0x9f, 0x19, 0x2b, 0x4a, 0xc4, 0x61, 0x35, 0xba, -0xb0, 0x3a, 0x67, 0x5b, 0x1b, 0xdf, 0x9f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, -0x21, 0xec, 0xc2, 0x93, 0x67, 0x58, 0xc3, 0xd0, -0x83, 0xfa, 0x7b, 0xdb, 0x42, 0x9f, 0xc2, 0xf7, -0xff, 0x84, 0x5c, 0xef, 0xd9, 0x3e, 0x44, 0x72, -0x21, 0xb5, 0x48, 0xcf, 0x67, 0xfc, 0xa4, 0xb9, -0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, -0x01, 0x22, 0x21, 0x39, 0xcd, 0x1e, 0x96, 0xfb, -0xd7, 0xd4, 0x6a, 0x68, 0x3d, 0x41, 0x43, 0xd6, -0x28, 0x16, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x26, 0x61, 0x9a, 0xd5, -0x8d, 0xb2, 0x05, 0x09, 0x03, 0x04, 0x51, 0x02, -0x00, 0x41, 0x01, 0x22, 0x21, 0x61, 0xb1, 0x82, -0xb8, 0x9f, 0x5b, 0x23, 0x22, 0x23, 0xfc, 0x9d, -0x1c, 0x37, 0xf3, 0x6b, 0x76, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x86, -0xd9, 0xec, 0xaf, 0x9f, 0x99, 0x2d, 0x03, 0x04, -0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0x1d, -0xb0, 0x1e, 0xd8, 0x18, 0x20, 0x1a, 0x2f, 0x7c, -0xd2, 0xa0, 0x98, 0x74, 0xb0, 0x42, 0xff, 0xf5, -0x5f, 0x01, 0x80, 0x43, 0x41, 0xc5, 0x05, 0x12, -0xdc, 0xc6, 0x5b, 0xd3, 0xdc, 0x04, 0xb0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, -0x21, 0x7b, 0xc7, 0x85, 0x64, 0xad, 0x60, 0x62, -0xe5, 0xf8, 0x73, 0xdc, 0x35, 0x10, 0x92, 0xd0, -0x2b, 0xdb, 0x37, 0xa7, 0x0d, 0x09, 0x88, 0xaa, -0xf4, 0x8d, 0xb8, 0xd7, 0x88, 0x76, 0x96, 0x5c, -0x00, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, -0x01, 0x22, 0x21, 0x4f, 0x49, 0x35, 0x20, 0x0e, -0x6f, 0x73, 0x19, 0xcd, 0xde, 0xca, 0xef, 0xa8, -0x57, 0x8c, 0xa2, 0xea, 0x4d, 0x40, 0x00, 0xf9, -0xe8, 0x32, 0x54, 0x2e, 0xb9, 0x32, 0x16, 0x94, -0x8a, 0x91, 0x56, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x45, 0x01, 0x22, 0x21, 0xfa, 0x8c, 0xf0, -0x24, 0x7e, 0xd0, 0x72, 0xf2, 0xd9, 0x79, 0x0d, -0x17, 0xa2, 0x9d, 0xa2, 0x17, 0x46, 0x0c, 0xe0, -0xc1, 0x39, 0x35, 0x7c, 0xa8, 0x2e, 0x60, 0x7f, -0x27, 0x96, 0x42, 0x88, 0xb4, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0x51, -0x9f, 0xf5, 0x1f, 0xb3, 0x06, 0x44, 0xb0, 0x79, -0xb8, 0x2a, 0xbf, 0xc9, 0xc4, 0x3a, 0x32, 0x19, -0x12, 0x78, 0xf7, 0x43, 0xd2, 0x49, 0xd4, 0x43, -0x88, 0xa6, 0xd3, 0x9a, 0x9e, 0x59, 0xaf, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, -0x21, 0xfe, 0x95, 0x29, 0xea, 0xa1, 0xaf, 0x67, -0xb6, 0x49, 0x94, 0x91, 0x68, 0xa2, 0x8a, 0xba, -0xf7, 0x76, 0x44, 0x99, 0x36, 0x85, 0x93, 0xa9, -0x48, 0x11, 0x0b, 0xf2, 0x9f, 0xb2, 0xc1, 0xc5, -0x08, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, -0x01, 0x22, 0x21, 0xd1, 0x9f, 0x86, 0xe3, 0xfd, -0x7c, 0xf7, 0x83, 0x2a, 0xa2, 0xb0, 0xa8, 0x9d, -0x5a, 0x12, 0x9b, 0x31, 0xac, 0x3e, 0xa3, 0x63, -0xa7, 0xb1, 0x32, 0x40, 0x86, 0xe1, 0x01, 0xf5, -0xdc, 0x65, 0x02, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x49, 0x01, 0x22, 0x21, 0x66, 0x31, 0x0c, -0x4b, 0x1d, 0x98, 0xce, 0x47, 0x77, 0xbe, 0xbd, -0xb2, 0x6f, 0x3f, 0xba, 0x13, 0xe3, 0x15, 0x27, -0xa8, 0x59, 0x05, 0xe6, 0x4d, 0xe2, 0xee, 0xe0, -0x18, 0xb1, 0x9d, 0x80, 0xe5, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0xb8, -0x20, 0x84, 0xd6, 0xce, 0xda, 0xda, 0x88, 0xc1, -0x6d, 0x13, 0x73, 0x36, 0x43, 0x15, 0x1d, 0xab, -0x00, 0x3b, 0x5b, 0xd6, 0x36, 0x49, 0x43, 0x62, -0xe1, 0xfc, 0x26, 0xa5, 0x40, 0x49, 0xf5, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, -0x21, 0xd1, 0x88, 0x21, 0x23, 0x08, 0xb3, 0x01, -0xe7, 0xc2, 0xea, 0x4e, 0x2a, 0x3a, 0x5d, 0x9c, -0xa4, 0x5a, 0x84, 0x37, 0xd1, 0x83, 0xb9, 0x67, -0x3c, 0x22, 0x1b, 0x15, 0x22, 0x66, 0x68, 0xfd, -0xbc, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, -0x01, 0x22, 0x21, 0x05, 0xcf, 0xe0, 0x7a, 0xf6, -0x19, 0xc6, 0x9c, 0xc4, 0xed, 0x23, 0x7f, 0xd1, -0x4d, 0x28, 0x76, 0x9f, 0xdb, 0x27, 0x3c, 0x66, -0xf2, 0x72, 0x0e, 0x56, 0x7d, 0x58, 0x0a, 0x6d, -0x84, 0x73, 0x61, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x4d, 0x01, 0x22, 0x21, 0xc1, 0x81, 0x17, -0x8a, 0x50, 0x09, 0x6f, 0xc1, 0x80, 0xc4, 0x86, -0x3d, 0x42, 0xcd, 0x1d, 0xd9, 0xc3, 0x8a, 0xcf, -0xdb, 0x11, 0x38, 0x68, 0x1a, 0xf3, 0x1b, 0xf1, -0x52, 0x8f, 0x1d, 0xe9, 0x0a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0xf5, -0x2c, 0x5d, 0xf5, 0x0d, 0xa7, 0x68, 0x64, 0x72, -0x21, 0x52, 0xf5, 0xe1, 0x6e, 0xc6, 0x69, 0x80, -0x48, 0xf1, 0xa8, 0xa2, 0xab, 0x29, 0xd2, 0x7c, -0x56, 0x5c, 0xe9, 0xec, 0xa8, 0x92, 0xbc, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, -0x21, 0x91, 0x2f, 0x99, 0xc3, 0xb8, 0xda, 0x7e, -0x1d, 0xf4, 0x45, 0x3e, 0x7f, 0xa6, 0xeb, 0x46, -0x32, 0x48, 0x70, 0x50, 0x73, 0x87, 0xb9, 0x15, -0x34, 0x83, 0xfc, 0x1f, 0xaf, 0xd2, 0x97, 0xbf, -0x2a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, -0x01, 0x22, 0x21, 0x7b, 0x6b, 0xa0, 0x4b, 0xa2, -0xf2, 0xb8, 0xdd, 0x81, 0x38, 0xcb, 0x1b, 0x0f, -0x62, 0x02, 0x1b, 0x2e, 0x2f, 0x1c, 0xd0, 0xf6, -0x43, 0x3d, 0xb4, 0x56, 0x6f, 0x8f, 0x07, 0x35, -0xb8, 0x7e, 0xff, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x51, 0x01, 0x22, 0x21, 0xd4, 0xc9, 0x63, -0xd3, 0x89, 0x64, 0x64, 0x0f, 0xdc, 0x13, 0x7e, -0x38, 0x1b, 0xb2, 0xcf, 0x20, 0xe6, 0x5f, 0xa2, -0x4c, 0x63, 0xb9, 0xa1, 0x8c, 0x66, 0xd2, 0xab, -0xef, 0x51, 0x12, 0x49, 0x46, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0x1a, -0x5a, 0x6a, 0xcf, 0x37, 0xb1, 0x73, 0x73, 0x37, -0x73, 0xa1, 0xb1, 0x22, 0xf1, 0xf5, 0x09, 0xa7, -0xcd, 0xeb, 0x2e, 0xae, 0x87, 0x9d, 0xb7, 0xe2, -0x5d, 0x63, 0x1c, 0x7b, 0x4e, 0x9e, 0x76, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, -0x21, 0x73, 0xb6, 0x7d, 0x40, 0x43, 0x52, 0x57, -0x99, 0x6f, 0x87, 0x13, 0xc6, 0x0f, 0x34, 0x28, -0xfd, 0xf0, 0x6f, 0x06, 0xf0, 0x83, 0x35, 0xe3, -0x76, 0x5b, 0x8b, 0x8d, 0x6c, 0x10, 0x18, 0xd8, -0xfe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, -0x01, 0x22, 0x21, 0xac, 0x20, 0x36, 0x1d, 0x62, -0xa0, 0x33, 0x74, 0x90, 0x74, 0x41, 0x7f, 0xb3, -0xd5, 0x5d, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x17, 0xc0, 0x82, 0x48, -0xf9, 0x96, 0x78, 0xae, 0x03, 0x04, 0x51, 0x02, -0x00, 0x55, 0x01, 0x22, 0x21, 0xeb, 0x10, 0xb0, -0xb8, 0x5f, 0xb8, 0x45, 0xa5, 0x87, 0x33, 0xe5, -0x88, 0xe0, 0x0e, 0x33, 0x25, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x92, -0x82, 0xe2, 0x2c, 0x0d, 0xe6, 0xf9, 0x03, 0x04, -0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x26, -0xe5, 0x8d, 0x62, 0xab, 0xef, 0x24, 0x62, 0x9a, -0xd6, 0x46, 0x02, 0x7d, 0x29, 0x7d, 0x5e, 0xc1, -0x84, 0x6f, 0xbb, 0x9b, 0x08, 0x37, 0xaa, 0xaa, -0xb9, 0x96, 0x44, 0xeb, 0x89, 0xb2, 0xe3, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, -0x21, 0x61, 0xbc, 0x6e, 0x61, 0x53, 0xbb, 0x22, -0x3a, 0xf0, 0x13, 0x8b, 0x78, 0x96, 0xab, 0x36, -0x5f, 0xd0, 0xd7, 0xf7, 0xed, 0x01, 0x18, 0x6c, -0xa1, 0x1b, 0xa2, 0xfe, 0xd8, 0x8d, 0xfd, 0xfd, -0xf4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, -0x01, 0x22, 0x21, 0x02, 0xb9, 0x21, 0x1d, 0x93, -0x0e, 0x7c, 0x00, 0xf7, 0xcb, 0x84, 0x16, 0x35, -0x37, 0x46, 0xe9, 0x95, 0xd3, 0x26, 0xb1, 0xac, -0x7a, 0x95, 0x75, 0x83, 0x8b, 0xea, 0x0b, 0xbd, -0x70, 0x66, 0x90, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x59, 0x01, 0x22, 0x21, 0xa2, 0x6b, 0x1b, -0xa6, 0x51, 0x26, 0x34, 0x40, 0x48, 0x86, 0x92, -0xa2, 0x8b, 0xb6, 0x84, 0x0b, 0x86, 0x5c, 0x59, -0x18, 0x2b, 0x4c, 0x60, 0xaf, 0x62, 0x5e, 0x89, -0xd2, 0x0c, 0x47, 0x52, 0xf6, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x20, -0x02, 0xe9, 0x5c, 0x24, 0x49, 0xf7, 0x59, 0x1e, -0x7a, 0x49, 0x78, 0x23, 0x1d, 0xf6, 0x3c, 0xfb, -0xf3, 0x5e, 0xe0, 0x4f, 0x56, 0x84, 0x40, 0x70, -0x3a, 0xa3, 0x78, 0xae, 0x1d, 0x3e, 0xd7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, -0x21, 0x31, 0xe0, 0x71, 0xff, 0x31, 0xa3, 0xa6, -0xf3, 0xc3, 0xb4, 0xb7, 0x20, 0x61, 0x28, 0xed, -0x18, 0xea, 0xf3, 0x9f, 0x12, 0xa2, 0x49, 0x55, -0xf9, 0xa4, 0x5e, 0x88, 0xfb, 0x30, 0x34, 0xf6, -0xf7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, -0x01, 0x22, 0x21, 0xc5, 0x24, 0xea, 0x7e, 0xb1, -0xc6, 0xdf, 0x8e, 0x6d, 0xeb, 0x8d, 0xdf, 0x5b, -0x98, 0xf7, 0x95, 0xc7, 0x09, 0x52, 0x3a, 0x90, -0x96, 0xe2, 0x43, 0x40, 0x98, 0xb3, 0x61, 0x84, -0x43, 0x81, 0x38, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x5d, 0x01, 0x22, 0x21, 0x96, 0x78, 0x09, -0x8d, 0x84, 0x16, 0x52, 0xbc, 0x5b, 0x78, 0xa0, -0xc0, 0xb1, 0x6d, 0x8c, 0x18, 0x76, 0x38, 0x88, -0x28, 0xb6, 0x6e, 0x7f, 0x09, 0xe3, 0x82, 0xb4, -0x62, 0x7c, 0xb2, 0x44, 0x37, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0xfc, -0xe5, 0xa9, 0xf1, 0x3b, 0xb5, 0xca, 0xe4, 0x64, -0xe3, 0xb1, 0x04, 0x46, 0x6a, 0x93, 0xe8, 0x64, -0x89, 0x26, 0x03, 0x61, 0x1c, 0x98, 0xba, 0xb1, -0xa7, 0xb0, 0x83, 0xad, 0x00, 0x7a, 0xa7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, -0x21, 0x68, 0x73, 0xc0, 0x43, 0xda, 0x7c, 0x97, -0xf1, 0x84, 0xb9, 0x77, 0xdf, 0x57, 0x41, 0xbf, -0xf1, 0x66, 0x61, 0xa0, 0x5d, 0xe5, 0x64, 0x70, -0x00, 0xf6, 0xa5, 0x08, 0x21, 0x79, 0xe1, 0x1c, -0x10, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, -0x01, 0x22, 0x21, 0x09, 0xbd, 0xd2, 0x0e, 0x19, -0x49, 0x76, 0x52, 0xae, 0x74, 0xba, 0x18, 0x4e, -0xee, 0x11, 0x33, 0xda, 0x9b, 0xff, 0x4c, 0x11, -0x98, 0x96, 0x25, 0x57, 0x01, 0xab, 0x37, 0xd9, -0x0e, 0xbb, 0xb2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x61, 0x01, 0x22, 0x21, 0xc5, 0xb8, 0x2b, -0x60, 0x08, 0xd2, 0xdc, 0x07, 0x90, 0x1b, 0x6e, -0xf4, 0xf1, 0x61, 0x92, 0xae, 0x9a, 0x21, 0xf5, -0x41, 0x7c, 0x54, 0x7b, 0xab, 0x47, 0xe7, 0xca, -0x5f, 0x5d, 0xb1, 0xd5, 0x88, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x5a, -0x70, 0x0f, 0x58, 0xd5, 0x21, 0x79, 0xb3, 0x0e, -0xe0, 0x7f, 0x47, 0x5d, 0x61, 0x0c, 0xba, 0x15, -0x50, 0xfe, 0x63, 0x9c, 0x4d, 0xfa, 0x77, 0x1f, -0x83, 0xc2, 0x70, 0x13, 0xef, 0xfc, 0xf8, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, -0x21, 0xff, 0x60, 0x3b, 0x5f, 0x7a, 0x45, 0x6f, -0x23, 0x01, 0xb9, 0x9b, 0x4b, 0xdd, 0x4b, 0x3c, -0x1e, 0xae, 0xc4, 0x41, 0x99, 0xaf, 0x01, 0x8a, -0x98, 0xef, 0x8d, 0x93, 0x90, 0xdf, 0x6c, 0x5a, -0x68, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, -0x01, 0x22, 0x21, 0x6c, 0xbd, 0x1e, 0x71, 0x58, -0x3d, 0x29, 0xbd, 0xe2, 0x9d, 0xb4, 0x54, 0x12, -0x09, 0xd1, 0xa0, 0x16, 0x15, 0x84, 0x17, 0xfe, -0x6d, 0xc7, 0x22, 0xe8, 0xe1, 0x6a, 0xa2, 0xd2, -0x94, 0xeb, 0x9d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x65, 0x01, 0x22, 0x21, 0x5d, 0xa7, 0x10, -0x6f, 0xdf, 0x02, 0x9a, 0x2e, 0x30, 0x71, 0xfa, -0x57, 0x97, 0x49, 0x68, 0x8a, 0x18, 0xfb, 0x4e, -0x62, 0x24, 0x98, 0x6a, 0xa0, 0x13, 0x75, 0x3a, -0xb7, 0xbc, 0x4e, 0x10, 0x01, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0x05, -0xe2, 0x2a, 0x88, 0x89, 0x11, 0x8f, 0x64, 0xcd, -0x8d, 0x4b, 0x94, 0xcb, 0xc8, 0x28, 0x75, 0xc5, -0x5a, 0x42, 0xa6, 0xfb, 0xbc, 0xb2, 0x96, 0x5b, -0x15, 0xda, 0x5c, 0xcc, 0x05, 0xdd, 0x12, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, -0x21, 0x23, 0x6d, 0x9b, 0xb1, 0x6f, 0xbb, 0x57, -0x30, 0x03, 0xfc, 0x13, 0xc9, 0x87, 0xdd, 0xe5, -0x5f, 0x30, 0x83, 0x96, 0x0f, 0x73, 0x42, 0x50, -0xaa, 0xa5, 0xde, 0x8a, 0x4f, 0xda, 0x74, 0xbc, -0xee, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, -0x01, 0x22, 0x21, 0x5c, 0x35, 0x61, 0xb3, 0x52, -0xa9, 0xb5, 0xea, 0x5f, 0x66, 0xf9, 0xba, 0x8c, -0xaa, 0x4b, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x3d, 0xf5, 0xe3, 0xbb, -0x63, 0xab, 0x58, 0x30, 0x03, 0x04, 0x51, 0x02, -0x00, 0x69, 0x01, 0x22, 0x21, 0xdf, 0xdd, 0xf8, -0x0c, 0x8b, 0xf9, 0x11, 0xcd, 0x55, 0xf5, 0xaf, -0x7a, 0xfd, 0x70, 0x31, 0x18, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x55, -0xef, 0x5a, 0xce, 0x3f, 0x1a, 0x8b, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x4d, -0xfe, 0xe4, 0x83, 0x94, 0xfa, 0x98, 0x06, 0xa9, -0x60, 0xbe, 0x4d, 0x4a, 0x76, 0x24, 0xef, 0x2c, -0xa7, 0x61, 0x66, 0x10, 0x36, 0x47, 0x22, 0x8c, -0x76, 0x0b, 0x3c, 0x50, 0xae, 0x3e, 0x01, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, -0x21, 0x85, 0x17, 0xdf, 0x8b, 0xdd, 0x9e, 0x7f, -0x9e, 0x77, 0x1f, 0x33, 0x9b, 0x3f, 0xfa, 0xd3, -0x8b, 0xc3, 0xa2, 0x92, 0x57, 0x8e, 0x55, 0x9a, -0x8d, 0xdf, 0x2e, 0x43, 0xbb, 0xad, 0x81, 0x20, -0x9a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, -0x01, 0x22, 0x21, 0xe9, 0x14, 0xa2, 0x5c, 0xc2, -0x77, 0xc8, 0x93, 0x19, 0xdb, 0x59, 0x21, 0xbf, -0x3b, 0xb2, 0xc7, 0xdb, 0xe1, 0x38, 0xe3, 0x87, -0x1a, 0x43, 0xea, 0xff, 0xc2, 0xfc, 0x27, 0x4a, -0x08, 0x10, 0x5b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x6d, 0x01, 0x22, 0x21, 0x02, 0x88, 0x9a, -0x85, 0x43, 0x44, 0xbd, 0xa8, 0x8a, 0x00, 0xdd, -0x0a, 0x3c, 0x81, 0x80, 0xbb, 0xf8, 0xd3, 0x4f, -0x03, 0x42, 0x3c, 0xc6, 0x98, 0xdb, 0xcf, 0x23, -0x6d, 0xed, 0x98, 0x4d, 0xbb, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0x13, -0x77, 0x53, 0xad, 0x6e, 0xbe, 0x4a, 0xbc, 0xd5, -0x6c, 0xba, 0xaf, 0xf3, 0xc8, 0x1a, 0x1c, 0xd3, -0x00, 0x36, 0xb6, 0xc9, 0x9d, 0x67, 0x57, 0x98, -0x90, 0x29, 0xd5, 0xa0, 0x33, 0x23, 0xec, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, -0x21, 0xc5, 0x4d, 0x09, 0xfc, 0xed, 0x7d, 0x03, -0x13, 0x2f, 0x98, 0xd4, 0x48, 0xcf, 0xf4, 0x59, -0x87, 0xad, 0x17, 0x09, 0x76, 0x0d, 0x1d, 0xb0, -0x02, 0x69, 0x77, 0x4b, 0x12, 0x4f, 0x7b, 0x23, -0xcb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, -0x01, 0x22, 0x21, 0x70, 0x73, 0xcb, 0xee, 0x44, -0x7d, 0x00, 0xd4, 0x06, 0x8d, 0x35, 0x42, 0xd0, -0x7a, 0x07, 0xe3, 0xd0, 0x0a, 0x35, 0x08, 0x58, -0x3e, 0x32, 0x5b, 0x26, 0xc3, 0x97, 0x4a, 0x7a, -0x13, 0x76, 0x25, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x71, 0x01, 0x22, 0x21, 0xfb, 0x2b, 0x7f, -0x0b, 0x8b, 0x80, 0xb4, 0x43, 0xbd, 0xf5, 0x7d, -0xce, 0x13, 0x38, 0x62, 0x4c, 0xda, 0xbe, 0x1a, -0x08, 0x1a, 0x32, 0xb2, 0x54, 0x06, 0xb6, 0x0d, -0x35, 0xf9, 0xf1, 0x3f, 0x79, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0x84, -0x8d, 0xfb, 0xbe, 0x7e, 0xb9, 0xdc, 0x73, 0xa7, -0x9e, 0xe5, 0xb2, 0xb0, 0xc6, 0xc7, 0x24, 0x8f, -0x66, 0x97, 0x7a, 0x92, 0x4b, 0xf5, 0x22, 0x32, -0xac, 0x8e, 0x91, 0x49, 0x5a, 0x37, 0x09, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, -0x21, 0x50, 0x7e, 0x4d, 0xbd, 0x44, 0x95, 0x76, -0x28, 0xac, 0xf8, 0x3a, 0xce, 0xfb, 0xe3, 0x5c, -0xaa, 0x27, 0x0d, 0xcf, 0x0b, 0x9d, 0xc9, 0x58, -0xa8, 0x7b, 0xb2, 0x59, 0x07, 0xc3, 0x97, 0xb3, -0x25, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, -0x01, 0x22, 0x21, 0xba, 0x9b, 0x48, 0x4a, 0xcb, -0xb2, 0xae, 0x42, 0xe0, 0xa4, 0xa2, 0xe0, 0xf2, -0x1b, 0x44, 0x6d, 0x58, 0x13, 0x0e, 0x6f, 0x29, -0x3e, 0x88, 0x58, 0xca, 0xd1, 0x6c, 0xae, 0x42, -0x9f, 0x80, 0xf4, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x75, 0x01, 0x22, 0x21, 0x6a, 0xfe, 0xf7, -0x2e, 0xd7, 0x80, 0x07, 0x53, 0x2f, 0x4e, 0x96, -0x63, 0x07, 0xd2, 0x9b, 0x60, 0x8f, 0xf7, 0xa0, -0x7f, 0xbd, 0x4c, 0x1e, 0xa0, 0xd9, 0xaf, 0x66, -0x42, 0x67, 0x09, 0x6a, 0x01, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0x0c, -0xe3, 0x29, 0xf5, 0x0d, 0x97, 0x64, 0x8e, 0x61, -0xe1, 0x05, 0x5d, 0xb5, 0x89, 0x86, 0x7d, 0xe1, -0x56, 0x34, 0x0e, 0x7a, 0x84, 0xc5, 0xda, 0xf3, -0x64, 0xf6, 0xd6, 0x4b, 0x51, 0x66, 0xee, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, -0x21, 0x63, 0x7b, 0xbe, 0xaf, 0x84, 0x06, 0xdc, -0x76, 0x21, 0x08, 0x20, 0xc1, 0x3e, 0x56, 0xf5, -0xed, 0x5b, 0x46, 0xb0, 0x11, 0x0d, 0x01, 0xae, -0xb7, 0x1d, 0x7b, 0xc0, 0x26, 0xda, 0x71, 0x29, -0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, -0x01, 0x22, 0x21, 0x5a, 0x12, 0xed, 0x2d, 0x6a, -0xc7, 0x7d, 0x64, 0x42, 0x49, 0xdf, 0xa5, 0x2c, -0x38, 0x00, 0xb6, 0x6f, 0x8a, 0x61, 0xdd, 0x35, -0x7a, 0xbb, 0xd5, 0x63, 0xf8, 0x3a, 0xac, 0x3c, -0xe5, 0xfe, 0xbc, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x79, 0x01, 0x22, 0x21, 0x81, 0xd5, 0x26, -0xae, 0x08, 0x53, 0x91, 0xae, 0xc4, 0xba, 0xf9, -0xd4, 0xb4, 0x4a, 0x6f, 0xc2, 0xa7, 0x3b, 0x19, -0xe8, 0x15, 0x56, 0xbc, 0x88, 0x3c, 0x7d, 0xb4, -0x6a, 0x61, 0xb8, 0x0d, 0xd0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0x58, -0xfc, 0xbf, 0x8b, 0xc3, 0xc1, 0x45, 0x0f, 0x4b, -0x7f, 0x25, 0x0e, 0xea, 0x07, 0xab, 0xab, 0xa9, -0xa6, 0xcb, 0x21, 0x57, 0xdf, 0x16, 0xe5, 0x7b, -0x8b, 0x28, 0xee, 0x84, 0xe1, 0x61, 0x10, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, -0x21, 0xfd, 0x7e, 0xd2, 0xd8, 0x06, 0xf2, 0xd5, -0xdc, 0x27, 0x76, 0xda, 0x08, 0x0f, 0xa5, 0x64, -0x68, 0xc6, 0x78, 0x5f, 0x9c, 0xdd, 0xbb, 0x48, -0x7f, 0x99, 0x8d, 0xd3, 0x6d, 0x62, 0x55, 0x3c, -0x1c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, -0x01, 0x22, 0x21, 0x81, 0xc7, 0x71, 0x17, 0x41, -0xc2, 0xd0, 0xed, 0xa0, 0x57, 0xe6, 0x6a, 0xd5, -0x40, 0x84, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x5d, 0x6d, 0x3b, 0x13, -0xe8, 0xb6, 0x1d, 0x3f, 0x03, 0x04, 0x51, 0x02, -0x00, 0x7d, 0x01, 0x22, 0x21, 0x4f, 0x22, 0x1f, -0xa0, 0xd8, 0xe6, 0x15, 0x8e, 0xef, 0x26, 0x22, -0x3d, 0x1b, 0xe1, 0x2d, 0xc2, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xc5, -0xa7, 0x50, 0x1b, 0xb5, 0x90, 0x27, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0x21, -0x07, 0xd7, 0x07, 0x75, 0x82, 0x21, 0xce, 0x1d, -0xad, 0xf6, 0x0a, 0x48, 0x90, 0x1a, 0x95, 0x58, -0x21, 0x7a, 0x59, 0xb9, 0xaf, 0x8c, 0x0e, 0x7f, -0xa1, 0x35, 0x34, 0xe3, 0x96, 0xdb, 0x09, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, -0x21, 0x6d, 0x79, 0x4c, 0x2b, 0x53, 0x49, 0x26, -0x59, 0xcf, 0x83, 0x26, 0xb0, 0x27, 0x45, 0x4a, -0x13, 0x7b, 0x71, 0x58, 0x7d, 0xa6, 0xbd, 0x38, -0xbe, 0xad, 0x03, 0x61, 0x01, 0x7b, 0x55, 0xf5, -0xca, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, -0x01, 0x22, 0x21, 0x2d, 0xec, 0xaf, 0x23, 0x5c, -0x20, 0x2c, 0xe1, 0xfc, 0x90, 0x16, 0x59, 0xd1, -0xfe, 0x6b, 0x3a, 0x1c, 0xa9, 0x0c, 0x22, 0x3d, -0x5e, 0x9a, 0x37, 0x23, 0xe9, 0xc6, 0x18, 0x4f, -0x1e, 0x47, 0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x81, 0x01, 0x22, 0x21, 0x48, 0x70, 0x9c, -0x41, 0x4b, 0x7d, 0x71, 0xf1, 0xb6, 0x28, 0x26, -0xf9, 0xa1, 0x6e, 0x6c, 0x24, 0xfb, 0x74, 0xea, -0xaa, 0x3a, 0xd8, 0x23, 0x35, 0xd0, 0x7a, 0x5b, -0x8d, 0x6b, 0xd2, 0x25, 0xd2, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0xee, -0x6a, 0x13, 0xc0, 0xad, 0xa4, 0x0e, 0x75, 0x0c, -0x73, 0x4b, 0x19, 0x3d, 0x3d, 0x6a, 0x27, 0x75, -0x2f, 0xe5, 0x16, 0x1c, 0xc0, 0x08, 0x56, 0xad, -0x73, 0xd3, 0x17, 0x84, 0x22, 0x0b, 0xe4, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, -0x21, 0x12, 0xa2, 0xbc, 0x0e, 0xda, 0x24, 0x1d, -0xe3, 0xaf, 0xa6, 0x90, 0xce, 0xcd, 0xf0, 0xad, -0x74, 0x0a, 0xdb, 0x2f, 0xa5, 0x57, 0x11, 0x72, -0x87, 0xd6, 0xc3, 0x4b, 0xe5, 0x47, 0x8e, 0xe7, -0xca, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, -0x01, 0x22, 0x21, 0x21, 0xd1, 0xab, 0x10, 0x57, -0xe5, 0xd1, 0x87, 0x55, 0xe4, 0xe9, 0x17, 0xfd, -0x91, 0xd2, 0x48, 0x00, 0xd0, 0xaf, 0x56, 0xf0, -0xc5, 0xa4, 0xdc, 0x70, 0x59, 0x7f, 0x4b, 0xec, -0xf6, 0x25, 0xce, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x85, 0x01, 0x22, 0x21, 0x5f, 0xbf, 0xa7, -0x9a, 0xa4, 0x6d, 0xe0, 0x38, 0x3c, 0x9a, 0xe1, -0xe7, 0x0e, 0x2f, 0x02, 0xe5, 0x2a, 0x1e, 0x94, -0x07, 0x62, 0xa0, 0x59, 0x5b, 0xb6, 0x9f, 0xc1, -0xe3, 0x5e, 0xe4, 0x76, 0x37, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0xa8, -0xdf, 0x7b, 0x40, 0x3f, 0x50, 0xa4, 0x3c, 0x46, -0xd8, 0xd1, 0x14, 0x14, 0x4e, 0xc6, 0xf3, 0x5f, -0x91, 0x00, 0xef, 0xc5, 0x60, 0xa4, 0x6f, 0xac, -0xb3, 0x3c, 0x86, 0x95, 0x1a, 0x46, 0x77, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, -0x21, 0xeb, 0x45, 0xca, 0x84, 0xf3, 0xf4, 0xc3, -0x0a, 0x5b, 0xfa, 0xa4, 0xfd, 0xd8, 0x06, 0x56, -0x39, 0xae, 0xfd, 0x1d, 0x4e, 0xf3, 0x32, 0x9d, -0xef, 0xda, 0x42, 0x09, 0x5a, 0x32, 0x52, 0x63, -0x5d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, -0x01, 0x22, 0x21, 0xc9, 0x9c, 0x38, 0xe8, 0xf6, -0x0b, 0x85, 0xf5, 0xec, 0xc8, 0x3c, 0xdb, 0xaf, -0x43, 0xfc, 0x04, 0xd4, 0x4f, 0xad, 0xe7, 0xcc, -0x2c, 0x16, 0xc0, 0x34, 0x5e, 0xf7, 0x75, 0xac, -0xb6, 0xcc, 0xe4, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x89, 0x01, 0x22, 0x21, 0xbf, 0x69, 0x41, -0x2c, 0x47, 0xac, 0xd4, 0xcc, 0x41, 0xad, 0x5e, -0x26, 0xaa, 0x72, 0x34, 0x14, 0xbd, 0xbf, 0xf7, -0x0c, 0x2f, 0xed, 0xa7, 0x8f, 0x80, 0x82, 0xbd, -0xc3, 0x10, 0xbe, 0x71, 0x63, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0x93, -0x26, 0x21, 0xd0, 0xf8, 0xf8, 0x38, 0x65, 0xea, -0xc0, 0xa6, 0x87, 0xdc, 0x3e, 0x05, 0xb0, 0x8a, -0xe6, 0x2c, 0x3b, 0x34, 0x6d, 0x60, 0xf2, 0x56, -0x19, 0xb4, 0xc9, 0xb7, 0xa9, 0x5a, 0x34, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, -0x21, 0x5f, 0xd9, 0xfa, 0x93, 0xa1, 0xb4, 0xee, -0x9b, 0x43, 0xcf, 0x60, 0x86, 0xb5, 0x54, 0x37, -0xf7, 0x04, 0x03, 0x29, 0x27, 0xda, 0xa2, 0x9b, -0x85, 0x81, 0x14, 0xfb, 0x3f, 0x1d, 0x03, 0x8c, -0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, -0x01, 0x22, 0x21, 0x96, 0xf0, 0x16, 0x4d, 0x4a, -0xf5, 0x6b, 0x6d, 0x80, 0xf3, 0xd8, 0x33, 0x17, -0xc7, 0xa7, 0x1d, 0x52, 0xe1, 0x7b, 0xe6, 0x5a, -0x4a, 0xa1, 0x34, 0x1f, 0x5c, 0x6c, 0x09, 0xf4, -0x22, 0x06, 0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x8d, 0x01, 0x22, 0x21, 0xe5, 0x43, 0xeb, -0x61, 0x84, 0x01, 0x30, 0x80, 0x68, 0x98, 0x09, -0x16, 0x27, 0x26, 0x3e, 0xb3, 0xdf, 0x49, 0xe9, -0x49, 0xe3, 0xde, 0xd0, 0xbe, 0x21, 0x57, 0x4c, -0x50, 0xc5, 0x6d, 0xb2, 0x8f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x83, -0xc8, 0x2e, 0x09, 0x2e, 0x7e, 0x4a, 0x49, 0xaf, -0x4d, 0xb6, 0x50, 0x27, 0xda, 0x6a, 0xa9, 0x2e, -0x31, 0x81, 0x27, 0x13, 0x10, 0xcd, 0xe4, 0x94, -0x1e, 0xda, 0x41, 0x16, 0xe9, 0xb5, 0x89, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, -0x21, 0x24, 0xda, 0xa7, 0x4c, 0xd6, 0x6c, 0xcb, -0x34, 0xbb, 0x4b, 0xe8, 0x95, 0xe3, 0xf3, 0x8a, -0x6f, 0x1d, 0xe7, 0x87, 0x2b, 0x40, 0xbb, 0x46, -0x9e, 0x06, 0x08, 0x49, 0x3e, 0x9e, 0xfa, 0xb1, -0x8d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, -0x01, 0x22, 0x21, 0x0c, 0xee, 0x76, 0xe1, 0x86, -0x5e, 0x68, 0x89, 0xd0, 0xbd, 0xcb, 0xa8, 0x17, -0x93, 0x63, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x1a, 0x3c, 0xc4, 0x63, -0x80, 0x3a, 0x60, 0xc2, 0x03, 0x04, 0x51, 0x02, -0x00, 0x91, 0x01, 0x22, 0x21, 0x05, 0x2f, 0x61, -0x8b, 0xc7, 0xf3, 0x5a, 0xa3, 0x43, 0x7b, 0x2f, -0x07, 0x56, 0x8e, 0xb3, 0xa8, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xb3, -0xc4, 0x43, 0x19, 0x26, 0x36, 0xe2, 0x03, 0x04, -0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x8c, -0xd8, 0xbb, 0x41, 0x88, 0x69, 0xdf, 0x19, 0x88, -0xdf, 0x3b, 0x5c, 0x2a, 0x9d, 0xc4, 0x12, 0xf2, -0x76, 0x50, 0xdc, 0xd9, 0xa8, 0xec, 0x6c, 0xf7, -0xbe, 0x7d, 0x10, 0x03, 0x8b, 0x30, 0xa0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, -0x21, 0xf3, 0x97, 0x26, 0x76, 0xfa, 0xbe, 0xb6, -0x32, 0x65, 0xef, 0x96, 0x01, 0xc7, 0xde, 0xf9, -0x63, 0x2a, 0xbd, 0x52, 0x06, 0x30, 0xca, 0x49, -0xcb, 0xc1, 0x00, 0x58, 0x29, 0x8c, 0x3f, 0x84, -0x47, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, -0x01, 0x22, 0x21, 0x78, 0xed, 0x9c, 0x4b, 0x91, -0xa5, 0xc4, 0x65, 0x00, 0x9d, 0x65, 0xe0, 0x13, -0xbe, 0xd5, 0x0d, 0x90, 0x1e, 0xb9, 0x72, 0xf0, -0x24, 0x38, 0x40, 0x18, 0x55, 0x90, 0xc7, 0x42, -0x20, 0xda, 0x38, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x95, 0x01, 0x22, 0x21, 0xda, 0xc7, 0x4a, -0x81, 0xe1, 0xfa, 0x62, 0x2f, 0xa8, 0x9c, 0x2e, -0x70, 0xa2, 0xec, 0xea, 0x81, 0xe1, 0x2b, 0x6a, -0xfa, 0x5a, 0x84, 0xa9, 0xa0, 0x03, 0x0d, 0x51, -0xec, 0xc5, 0xa8, 0x80, 0xde, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0x1c, -0xed, 0x8a, 0x75, 0x7e, 0x64, 0x2f, 0xfd, 0xe9, -0x02, 0x97, 0x7f, 0x0e, 0x07, 0x6d, 0x57, 0x02, -0x6e, 0xcd, 0xff, 0xb2, 0xb1, 0x31, 0x29, 0xb9, -0x30, 0x22, 0xff, 0x2b, 0x71, 0x15, 0xd0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, -0x21, 0xe9, 0x95, 0x70, 0xc0, 0x99, 0x8d, 0x52, -0x26, 0xa5, 0x49, 0xee, 0xe1, 0x9c, 0x96, 0x84, -0x26, 0xa7, 0x2e, 0x8e, 0x58, 0x8b, 0x7a, 0x66, -0x14, 0x4b, 0x93, 0xc6, 0x83, 0x90, 0x74, 0xeb, -0x3b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, -0x01, 0x22, 0x21, 0xb7, 0x6a, 0x5f, 0x1b, 0xe9, -0x2b, 0xb3, 0xbb, 0x89, 0xc4, 0x1d, 0x2c, 0x56, -0x73, 0x24, 0xdf, 0x88, 0xf7, 0x00, 0x0f, 0x67, -0x30, 0x4b, 0x27, 0x04, 0x68, 0x80, 0x71, 0xa7, -0xa7, 0x04, 0xdc, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x99, 0x01, 0x22, 0x21, 0x1b, 0x2a, 0xb0, -0x3c, 0x34, 0x60, 0xf9, 0xba, 0xe6, 0x84, 0xb4, -0x52, 0x15, 0x7d, 0x88, 0x2e, 0xa3, 0x7c, 0x35, -0xfc, 0xff, 0xf3, 0x91, 0x46, 0x82, 0x0b, 0x07, -0xc8, 0x15, 0xf9, 0x0f, 0x26, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0xf4, -0x6f, 0xf5, 0x12, 0xa9, 0x59, 0x61, 0x00, 0xb6, -0x8a, 0x31, 0x97, 0xe3, 0x8d, 0xd5, 0xa7, 0x6f, -0xb1, 0x0a, 0x62, 0x83, 0xa2, 0x51, 0x35, 0xe2, -0x14, 0x3e, 0x45, 0xbb, 0xad, 0x9a, 0x8f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, -0x21, 0xfb, 0x8b, 0xd2, 0x60, 0xce, 0x5b, 0xa4, -0x56, 0x38, 0x86, 0x77, 0x43, 0x63, 0xbd, 0xb3, -0x12, 0x11, 0xb3, 0xbf, 0xc9, 0x83, 0xd4, 0xa5, -0xb8, 0x0e, 0x05, 0x3f, 0x49, 0x7f, 0xcf, 0x3f, -0xea, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, -0x01, 0x22, 0x21, 0x77, 0x33, 0x27, 0x49, 0x77, -0x3f, 0x8d, 0x0f, 0xf8, 0x82, 0x6b, 0x82, 0xf6, -0xdc, 0xb7, 0xe3, 0x1f, 0x8c, 0xf5, 0x1f, 0x80, -0xda, 0xe1, 0xa8, 0x32, 0x4c, 0x69, 0x2e, 0x60, -0x5f, 0x9b, 0xf5, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x9d, 0x01, 0x22, 0x21, 0x7c, 0x94, 0x24, -0x80, 0xfd, 0xb0, 0x1b, 0xcb, 0x9f, 0x95, 0x20, -0x36, 0x6a, 0x2c, 0x89, 0x9c, 0x91, 0x9d, 0x61, -0xa8, 0x88, 0x31, 0x6a, 0x6b, 0x28, 0x31, 0xd3, -0xfe, 0xbb, 0x3d, 0x0c, 0x88, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0x7f, -0xcd, 0xfb, 0xc3, 0x80, 0x8e, 0x8c, 0xdf, 0x3d, -0xa2, 0x22, 0x50, 0xe7, 0x16, 0x6f, 0x13, 0x87, -0x6d, 0x94, 0x69, 0x74, 0xa9, 0x9c, 0x4a, 0xde, -0x70, 0x06, 0xe1, 0xb6, 0x0b, 0x3a, 0xe5, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, -0x21, 0xf5, 0x08, 0xb6, 0x90, 0xcb, 0x3f, 0x08, -0xe1, 0x67, 0xe9, 0x39, 0x13, 0x9a, 0xde, 0x74, -0x39, 0x92, 0xa5, 0x1f, 0x4b, 0xed, 0x41, 0x26, -0xb5, 0x0a, 0x7a, 0x8d, 0x8b, 0x64, 0x5f, 0x07, -0x29, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, -0x01, 0x22, 0x21, 0x4e, 0xa7, 0xa0, 0x7b, 0xc3, -0xc1, 0xa7, 0xe1, 0xbc, 0xd6, 0x8f, 0x47, 0x2c, -0x31, 0x83, 0x7e, 0xe1, 0x0f, 0x61, 0x8a, 0x64, -0xe2, 0x5c, 0xb6, 0x18, 0xb5, 0x42, 0x58, 0x69, -0x59, 0xb6, 0x4e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa1, 0x01, 0x22, 0x21, 0xff, 0x36, 0xd1, -0x2b, 0x76, 0x66, 0xa4, 0x05, 0x95, 0xae, 0x9e, -0x03, 0xaf, 0x9f, 0xaf, 0xad, 0x38, 0xad, 0x0d, -0xa4, 0xa8, 0x39, 0xe7, 0xb1, 0xeb, 0x0b, 0x38, -0x39, 0xbe, 0x15, 0x6c, 0x7c, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0xd2, -0xbc, 0x61, 0x7e, 0xb3, 0x53, 0x76, 0x67, 0x5c, -0xc6, 0x37, 0x3e, 0x63, 0x2f, 0x95, 0xa4, 0xf7, -0x76, 0x49, 0x8e, 0xdf, 0x59, 0xe5, 0x1d, 0x6a, -0x45, 0x8b, 0x8a, 0x84, 0xa6, 0x7a, 0xc8, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, -0x21, 0x28, 0x58, 0x3d, 0xef, 0x93, 0x04, 0xbd, -0x3a, 0xba, 0xa4, 0xf3, 0x96, 0x14, 0x80, 0x6c, -0xfc, 0x26, 0x0e, 0xbd, 0xd9, 0x5d, 0x3b, 0xc2, -0xef, 0x72, 0xec, 0xd1, 0x54, 0x76, 0xd4, 0xe4, -0xf0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, -0x01, 0x22, 0x21, 0xef, 0xfb, 0xcb, 0x63, 0x72, -0x11, 0xbd, 0x80, 0xa7, 0x52, 0x1c, 0x72, 0xca, -0x99, 0x91, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x31, 0xe8, 0xfd, 0xb3, -0xf4, 0x03, 0xba, 0x92, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa5, 0x01, 0x22, 0x21, 0x26, 0x6f, 0x59, -0x66, 0xdc, 0x58, 0x4c, 0x46, 0x5f, 0xb3, 0x26, -0xd4, 0x7d, 0x9f, 0x4d, 0xb7, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xba, -0xcc, 0x01, 0xb1, 0x26, 0x55, 0xfc, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0x36, -0xe8, 0xf4, 0x5b, 0x51, 0xc0, 0xe3, 0x24, 0x0d, -0x7e, 0x0e, 0xe1, 0x33, 0x12, 0xee, 0x8c, 0x34, -0x85, 0x15, 0x14, 0x63, 0xf0, 0xea, 0x4e, 0x98, -0x07, 0xf9, 0x75, 0x45, 0x12, 0xb3, 0x52, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, -0x21, 0x46, 0xdc, 0x37, 0x7c, 0x5f, 0x1b, 0x09, -0xf5, 0x0e, 0x18, 0xcd, 0xb3, 0x08, 0x1b, 0xd3, -0xae, 0x82, 0xdf, 0xdc, 0xe2, 0x76, 0x31, 0x39, -0xc5, 0x21, 0x9a, 0x71, 0x63, 0xb3, 0x54, 0x63, -0x50, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, -0x01, 0x22, 0x21, 0x0c, 0x65, 0x0a, 0xc2, 0xe6, -0xcc, 0x8f, 0xce, 0xff, 0x8c, 0x4b, 0xbd, 0xb6, -0x69, 0x4f, 0x60, 0x84, 0x6a, 0x67, 0xee, 0x7e, -0xb3, 0xfc, 0x0a, 0x25, 0x05, 0xd4, 0x0f, 0x43, -0x5b, 0x7c, 0x96, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa9, 0x01, 0x22, 0x21, 0x29, 0xf8, 0x6a, -0xcf, 0x2d, 0x7f, 0xd9, 0x9a, 0xde, 0xde, 0x4c, -0xd2, 0xa5, 0x71, 0x10, 0xb0, 0xbd, 0x57, 0x48, -0xbc, 0xe5, 0x52, 0x36, 0xcd, 0x77, 0xdc, 0x6c, -0xda, 0x5a, 0xaa, 0xdb, 0x59, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0x38, -0x0d, 0x09, 0xe9, 0xe3, 0x2f, 0xed, 0x6a, 0x81, -0xf2, 0xe9, 0x60, 0x8d, 0xd6, 0x57, 0x3f, 0xf4, -0xcf, 0x10, 0x6c, 0x5c, 0x76, 0x26, 0xf4, 0xfc, -0xfd, 0x21, 0x32, 0xe7, 0x87, 0x9f, 0x0e, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, -0x21, 0x5c, 0x22, 0x53, 0xd1, 0xd0, 0xbc, 0xd4, -0x8b, 0xee, 0xbe, 0x02, 0x78, 0x62, 0x26, 0x4e, -0x9b, 0xbd, 0x52, 0x0e, 0x34, 0x92, 0xe4, 0xb0, -0x55, 0x92, 0x69, 0xac, 0x27, 0x2c, 0x60, 0x28, -0x00, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, -0x01, 0x22, 0x21, 0xbc, 0x9c, 0x3b, 0xd5, 0x65, -0x38, 0xfb, 0xd8, 0x2d, 0x29, 0x3e, 0x2e, 0x9f, -0xea, 0x42, 0xe6, 0xc9, 0xec, 0xdc, 0xcc, 0xed, -0x9d, 0x66, 0x4b, 0x06, 0x9a, 0x27, 0x73, 0xa8, -0x47, 0x8d, 0x50, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xad, 0x01, 0x22, 0x21, 0xbf, 0x26, 0xce, -0x59, 0xab, 0xa3, 0x26, 0xf0, 0xc9, 0x12, 0x46, -0x5f, 0x03, 0x4b, 0x29, 0x6f, 0xac, 0x6c, 0x4b, -0x77, 0x86, 0x7b, 0xd8, 0xf7, 0xbe, 0xde, 0x4d, -0xfb, 0xcb, 0x1a, 0x50, 0xe3, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0xe0, -0xce, 0xdc, 0xca, 0xb0, 0x86, 0xa3, 0xc2, 0xd4, -0xda, 0xfd, 0xd6, 0x94, 0xe6, 0xec, 0x00, 0x64, -0x4b, 0xf1, 0xb5, 0x95, 0xe8, 0x9d, 0x6c, 0xc9, -0xcb, 0x61, 0xe0, 0x7f, 0xe2, 0x27, 0x41, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, -0x21, 0x54, 0x9a, 0x38, 0x73, 0x8d, 0xf5, 0x2d, -0x7f, 0x09, 0xdf, 0x15, 0x1e, 0x62, 0x3a, 0x39, -0xd2, 0x5d, 0xcf, 0xeb, 0x09, 0x8f, 0xbc, 0x8e, -0xd6, 0xb9, 0x40, 0xc7, 0xa7, 0xb0, 0x2d, 0xf6, -0x45, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, -0x01, 0x22, 0x21, 0x58, 0xc6, 0xab, 0x28, 0xac, -0xf3, 0x89, 0x2e, 0x83, 0x47, 0xba, 0x20, 0xe0, -0x7c, 0x19, 0x72, 0x95, 0x19, 0x3a, 0x20, 0xe7, -0x51, 0xd9, 0x5f, 0x2c, 0x91, 0x71, 0xd1, 0x25, -0x5b, 0x95, 0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb1, 0x01, 0x22, 0x21, 0x77, 0x77, 0x62, -0x4b, 0xb4, 0x30, 0x38, 0xc8, 0x7d, 0x7b, 0x31, -0xed, 0x8e, 0x33, 0x7e, 0x57, 0x81, 0xe2, 0x34, -0x92, 0xec, 0xcb, 0xc9, 0xf8, 0xbf, 0x4a, 0x08, -0xa1, 0xae, 0x2f, 0xf4, 0xa0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0xb6, -0x72, 0xbf, 0x83, 0x3d, 0x51, 0x1a, 0xbe, 0xa2, -0xd4, 0xa7, 0xba, 0x13, 0x1d, 0x18, 0x76, 0x2d, -0x14, 0x72, 0xad, 0xf0, 0xcc, 0x5d, 0x72, 0x12, -0x17, 0xaa, 0x09, 0x4c, 0x41, 0x44, 0x7b, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, -0x21, 0x11, 0xb7, 0xe7, 0x81, 0x43, 0xe7, 0xba, -0x67, 0x0f, 0x37, 0xe1, 0x3a, 0xa7, 0xcf, 0x57, -0xe4, 0x9e, 0x88, 0x22, 0x8e, 0xdb, 0xc1, 0x96, -0xda, 0xfd, 0x5f, 0x75, 0x93, 0xfe, 0xb8, 0x23, -0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, -0x01, 0x22, 0x21, 0x6e, 0x88, 0x73, 0x8e, 0x73, -0xda, 0xe7, 0xbf, 0x5f, 0x50, 0x83, 0xc9, 0x1f, -0xf8, 0x24, 0x62, 0x7d, 0x2b, 0xb5, 0x69, 0x8b, -0x26, 0x2d, 0x2a, 0xcf, 0x7d, 0xc8, 0x8e, 0x9e, -0x9a, 0x56, 0xd6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb5, 0x01, 0x22, 0x21, 0x2d, 0x14, 0x39, -0xc3, 0xde, 0x6d, 0x5a, 0x8e, 0xfa, 0x25, 0x98, -0x56, 0x49, 0x08, 0x04, 0xec, 0xac, 0x12, 0xa5, -0x70, 0x42, 0xde, 0xf8, 0x55, 0x43, 0x99, 0x38, -0x8e, 0x68, 0x27, 0x5d, 0x1e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0x28, -0x74, 0x5d, 0x6f, 0x0d, 0x32, 0x84, 0xa3, 0x94, -0x4b, 0x8b, 0xcc, 0xa9, 0x0d, 0xe3, 0x92, 0x23, -0xfa, 0xa0, 0xf6, 0x30, 0x08, 0x58, 0x3f, 0x3f, -0xa1, 0xb8, 0x4f, 0x09, 0x9d, 0x07, 0xf1, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, -0x21, 0xbb, 0x93, 0xee, 0x51, 0x22, 0xf5, 0x53, -0x68, 0x9b, 0xb6, 0xba, 0xde, 0x9f, 0xc8, 0x01, -0x10, 0x92, 0x62, 0x02, 0x87, 0x0a, 0x26, 0x8a, -0x80, 0x36, 0x46, 0x61, 0x09, 0xeb, 0x50, 0xd1, -0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, -0x01, 0x22, 0x21, 0xa8, 0xf7, 0xba, 0x24, 0x67, -0x50, 0x12, 0x45, 0x6d, 0x2f, 0x68, 0x25, 0x1d, -0x41, 0x4a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xa6, 0x77, 0x01, 0x60, -0xbc, 0x7b, 0x29, 0xd1, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb9, 0x01, 0x22, 0x21, 0x5b, 0x26, 0xf8, -0xc0, 0x3e, 0xb6, 0x64, 0xb8, 0x4f, 0x10, 0x2d, -0x2d, 0x73, 0x71, 0xa8, 0xbd, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x51, -0xd5, 0xc6, 0x7f, 0xe3, 0x8a, 0xe2, 0x03, 0x04, -0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0x63, -0xb1, 0xed, 0x2c, 0x26, 0x0f, 0x9c, 0x04, 0x8e, -0xc0, 0x33, 0x94, 0xde, 0x90, 0x25, 0x5b, 0x4a, -0x09, 0xf6, 0x1c, 0xc6, 0x5c, 0xec, 0x12, 0xbf, -0x27, 0x35, 0x08, 0x94, 0x17, 0x65, 0x21, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, -0x21, 0xfd, 0x56, 0x0e, 0x80, 0xb4, 0x48, 0x83, -0xfa, 0xcf, 0xf7, 0x8c, 0xb5, 0xdd, 0x82, 0xed, -0x2d, 0x0d, 0xc6, 0x2e, 0x7b, 0xbb, 0xf2, 0xae, -0x13, 0xc9, 0x9a, 0xab, 0x38, 0x5a, 0x36, 0x5a, -0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, -0x01, 0x22, 0x21, 0x4e, 0x7c, 0x22, 0x96, 0xe6, -0x4e, 0xcb, 0x0d, 0xb7, 0x27, 0x01, 0x09, 0x69, -0xf9, 0x45, 0xcd, 0xc2, 0xf9, 0xa4, 0xb8, 0x19, -0xef, 0x57, 0xee, 0xf1, 0x62, 0x40, 0xc7, 0xbc, -0xfa, 0xc5, 0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xbd, 0x01, 0x22, 0x21, 0xe3, 0x10, 0x8f, -0x3f, 0x88, 0x19, 0x7e, 0x89, 0xf2, 0xc1, 0xf5, -0x16, 0x66, 0xac, 0xe3, 0x97, 0xbf, 0x8d, 0x9b, -0xff, 0xb9, 0xb9, 0x11, 0xba, 0x1a, 0x18, 0x8a, -0xe1, 0xe2, 0x5d, 0x55, 0x13, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0x15, -0x7c, 0x7f, 0xd8, 0x0b, 0x0f, 0x9f, 0x4b, 0xc8, -0x5f, 0xef, 0x74, 0x4f, 0xb0, 0x45, 0xc9, 0x8c, -0x91, 0x96, 0xc1, 0xc2, 0x97, 0x1c, 0x67, 0xdb, -0xb3, 0xac, 0x71, 0x2e, 0xa4, 0xc5, 0x08, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, -0x21, 0xfa, 0x9a, 0x62, 0x54, 0x72, 0x13, 0x2a, -0x85, 0x1b, 0x1a, 0x59, 0xe0, 0xe6, 0xdc, 0x3d, -0xd0, 0xbf, 0x86, 0x84, 0xe2, 0xdc, 0xed, 0x02, -0x78, 0x34, 0xaf, 0x20, 0x76, 0x32, 0x49, 0x69, -0x50, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, -0x01, 0x22, 0x21, 0x01, 0x1a, 0xc2, 0x52, 0xb0, -0x66, 0xf1, 0xf0, 0x29, 0xb4, 0x99, 0x3a, 0xf3, -0x25, 0x79, 0x7f, 0xe5, 0x49, 0xae, 0x63, 0x56, -0xfa, 0x64, 0x64, 0x88, 0x8c, 0x59, 0x0a, 0xc0, -0x96, 0x29, 0x18, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc1, 0x01, 0x22, 0x21, 0xbd, 0x37, 0xde, -0xce, 0x95, 0x8f, 0x94, 0xa7, 0x36, 0x19, 0xf2, -0x3d, 0xe0, 0x7f, 0x79, 0xb8, 0xd3, 0xdf, 0x8d, -0x52, 0xdc, 0x02, 0x84, 0x59, 0x35, 0xdd, 0xef, -0x85, 0x93, 0xef, 0x1b, 0xa3, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0x87, -0x1d, 0xf9, 0xae, 0xec, 0x88, 0x96, 0xc5, 0x6e, -0xe6, 0x3b, 0xca, 0x54, 0x41, 0x7c, 0x8f, 0x29, -0x13, 0xb3, 0xa4, 0xc4, 0x27, 0x0f, 0xb9, 0x96, -0x99, 0x9c, 0x0b, 0x32, 0xb4, 0xec, 0xc7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, -0x21, 0x4d, 0xce, 0x69, 0x97, 0xac, 0x98, 0xb6, -0x8a, 0xb5, 0xf9, 0x51, 0xec, 0x50, 0x31, 0xd6, -0x00, 0x6a, 0x0f, 0x93, 0x92, 0x4a, 0xe8, 0x70, -0x0c, 0x0e, 0x12, 0xbd, 0x6e, 0xbf, 0x4d, 0xdf, -0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, -0x01, 0x22, 0x21, 0x3d, 0x02, 0xce, 0x0c, 0x53, -0xe1, 0x56, 0x66, 0xf8, 0x5b, 0xfa, 0xaa, 0x07, -0x98, 0x88, 0x51, 0xfa, 0x3a, 0x1f, 0xc5, 0xee, -0xad, 0x38, 0x51, 0x47, 0xd8, 0xb5, 0xee, 0xe1, -0x43, 0x0b, 0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc5, 0x01, 0x22, 0x21, 0xf5, 0x7d, 0xfc, -0x70, 0x7a, 0xfb, 0x5f, 0x31, 0x26, 0xf6, 0xe9, -0xda, 0x07, 0xdb, 0x72, 0x7b, 0xe1, 0xfb, 0x7c, -0x82, 0x25, 0xfc, 0xb3, 0x26, 0xc0, 0x33, 0x90, -0x4f, 0xc2, 0x38, 0xec, 0x12, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0xb4, -0xb2, 0xe9, 0x99, 0x7d, 0x86, 0x78, 0xd3, 0x26, -0xa4, 0x8b, 0x0f, 0xa9, 0x30, 0xed, 0x75, 0xff, -0x65, 0xd8, 0xbd, 0x68, 0x34, 0x52, 0x87, 0xf0, -0x38, 0x82, 0x39, 0x27, 0x88, 0xce, 0x08, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, -0x21, 0x02, 0x09, 0x22, 0x4d, 0x67, 0xcb, 0x6b, -0x02, 0x3e, 0x90, 0x1a, 0x39, 0x1d, 0xd2, 0xa8, -0x97, 0x4e, 0x4a, 0xbb, 0x74, 0xb6, 0x09, 0x2d, -0x94, 0x9e, 0xd7, 0xd7, 0x17, 0xd1, 0xe6, 0x73, -0x57, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, -0x01, 0x22, 0x21, 0xbd, 0xeb, 0xe8, 0xe4, 0xeb, -0x7a, 0x2b, 0x87, 0xcd, 0x2b, 0xb3, 0xcd, 0xb1, -0x20, 0x6d, 0xf6, 0xd5, 0xb8, 0xec, 0x75, 0x72, -0x7e, 0x2f, 0xea, 0x0c, 0x08, 0xc0, 0xdb, 0x9a, -0x09, 0xaa, 0xeb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc9, 0x01, 0x22, 0x21, 0x15, 0x88, 0x50, -0x07, 0x20, 0xfe, 0x5b, 0x40, 0x07, 0x13, 0xe8, -0x3b, 0x8e, 0x11, 0x1c, 0x10, 0x30, 0x4c, 0xaf, -0x7e, 0x23, 0xa4, 0x64, 0xa0, 0xf4, 0x9d, 0xca, -0xd9, 0x3f, 0x62, 0xff, 0x4b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0x6a, -0xfc, 0x16, 0xf0, 0x29, 0x2a, 0x4e, 0xdf, 0x89, -0xe5, 0xdc, 0x5c, 0x39, 0x50, 0xfe, 0xc2, 0xb5, -0x0c, 0x8b, 0x60, 0xd6, 0x4f, 0x33, 0xa3, 0xfd, -0xf1, 0xac, 0x40, 0x0c, 0xcb, 0x26, 0xf8, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, -0x21, 0x59, 0x12, 0x94, 0x59, 0x90, 0x16, 0xd6, -0x62, 0x76, 0x99, 0xb9, 0x74, 0x7e, 0xff, 0x5a, -0x8d, 0x89, 0x08, 0x37, 0x1f, 0x97, 0x82, 0x83, -0xe0, 0x02, 0x2d, 0xb3, 0x33, 0x17, 0x34, 0x11, -0xa7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, -0x01, 0x22, 0x21, 0x6d, 0xc8, 0xa8, 0x10, 0xb7, -0x54, 0x4e, 0xb5, 0xb0, 0x32, 0xb4, 0xea, 0xc0, -0x98, 0x64, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xbf, 0xcc, 0x17, 0x0d, -0x57, 0xa4, 0xcc, 0xbb, 0x03, 0x04, 0x51, 0x02, -0x00, 0xcd, 0x01, 0x22, 0x21, 0xbd, 0xb5, 0xc7, -0x70, 0x17, 0x04, 0x69, 0x43, 0x66, 0x67, 0xdc, -0x8c, 0x09, 0xc3, 0xd5, 0x26, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xac, -0xbc, 0xac, 0xdd, 0xee, 0xa2, 0x29, 0x03, 0x04, -0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0xdf, -0x90, 0xb1, 0xf6, 0x9f, 0x29, 0xf6, 0x4c, 0x8b, -0xaa, 0xb2, 0x98, 0xaa, 0xab, 0x55, 0x9c, 0xf6, -0xb9, 0xcb, 0x11, 0xd6, 0xb3, 0xdd, 0x56, 0x79, -0x3d, 0xb6, 0x5a, 0x18, 0x75, 0x4f, 0xac, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, -0x21, 0xd7, 0xd4, 0x72, 0x2e, 0x7f, 0x1a, 0x47, -0xdf, 0xe4, 0xcd, 0x02, 0x27, 0x40, 0x1f, 0x5e, -0x5e, 0xef, 0xb3, 0x8c, 0x92, 0x9f, 0x6d, 0x77, -0xdf, 0xed, 0xf3, 0x7b, 0xbf, 0xb9, 0xcf, 0xd9, -0xf1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, -0x01, 0x22, 0x21, 0x30, 0x6e, 0x97, 0xbc, 0xe9, -0x33, 0xd9, 0xa9, 0x8a, 0xa3, 0xed, 0xb8, 0xcb, -0x58, 0x11, 0x29, 0x81, 0x33, 0x95, 0xe2, 0x6c, -0x93, 0x5b, 0x9f, 0x68, 0x17, 0xf2, 0x12, 0xf5, -0xc2, 0x87, 0x32, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd1, 0x01, 0x22, 0x21, 0x8e, 0x2f, 0xb6, -0x0a, 0x6c, 0x88, 0xa0, 0xd7, 0x76, 0x29, 0x99, -0x02, 0xda, 0x60, 0x7c, 0x0d, 0xe8, 0x2f, 0x66, -0x74, 0x62, 0xb8, 0x70, 0x4c, 0x12, 0x95, 0xf3, -0x3a, 0x1d, 0x5b, 0x1e, 0xb7, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0x4d, -0xd5, 0x46, 0x50, 0xdb, 0xbe, 0x29, 0x34, 0x90, -0x98, 0xee, 0x87, 0x44, 0xeb, 0xdb, 0x99, 0xd3, -0xaf, 0x60, 0x53, 0xde, 0x3d, 0x3f, 0x41, 0x7c, -0x80, 0x2f, 0x5d, 0x3c, 0x89, 0x1f, 0x68, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, -0x21, 0x79, 0x67, 0x64, 0x21, 0xd4, 0xc1, 0xd0, -0x61, 0x49, 0xb2, 0xcc, 0xa3, 0x1c, 0xda, 0x88, -0x82, 0x09, 0x88, 0x38, 0x93, 0x16, 0x2e, 0x53, -0x3f, 0x97, 0x89, 0x4b, 0xd3, 0xed, 0xba, 0xa6, -0x54, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, -0x01, 0x22, 0x21, 0x5e, 0x79, 0xe9, 0xd3, 0x45, -0x34, 0x28, 0x93, 0xbf, 0xe9, 0x48, 0xc6, 0xb5, -0xb2, 0xf3, 0x2e, 0x91, 0x7b, 0xbd, 0xf0, 0x21, -0xc1, 0xcd, 0x9e, 0xc0, 0x02, 0x7a, 0x6f, 0x2d, -0x0e, 0xf9, 0x22, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd5, 0x01, 0x22, 0x21, 0xe5, 0xfb, 0xf3, -0x7f, 0x57, 0xad, 0x51, 0x51, 0x04, 0x48, 0x7c, -0xcd, 0xc4, 0xf5, 0x44, 0xe3, 0xcb, 0xbf, 0x1c, -0x1c, 0x4c, 0xe4, 0x30, 0x12, 0x85, 0x73, 0x80, -0x01, 0x90, 0x86, 0x37, 0xa5, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0x5f, -0x22, 0xf5, 0xc8, 0xe6, 0xdf, 0xcb, 0xc3, 0x18, -0x1a, 0x0c, 0x95, 0x60, 0x4a, 0xb2, 0x23, 0xf4, -0xd5, 0x23, 0x93, 0xb6, 0xe9, 0xe0, 0x87, 0x29, -0x1d, 0x17, 0x08, 0x5f, 0xca, 0x2d, 0xa6, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, -0x21, 0x51, 0x9b, 0x19, 0x98, 0x96, 0x16, 0x6d, -0x9d, 0xd0, 0xc4, 0x11, 0x43, 0x70, 0x4e, 0x28, -0x7d, 0x8a, 0xf0, 0xec, 0xe8, 0x22, 0xa1, 0xe0, -0x42, 0x3d, 0x6d, 0x99, 0x6b, 0x3b, 0xaf, 0x07, -0x75, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, -0x01, 0x22, 0x21, 0x79, 0x9f, 0x65, 0x94, 0x13, -0x38, 0x1c, 0x32, 0xd8, 0xcb, 0x78, 0x74, 0xb5, -0x40, 0x63, 0x99, 0x90, 0x08, 0x26, 0xff, 0x7f, -0xe3, 0x40, 0xa5, 0x76, 0xbe, 0x22, 0xcf, 0xaf, -0x6e, 0x5f, 0x27, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd9, 0x01, 0x22, 0x21, 0x61, 0xba, 0x15, -0x93, 0xae, 0xeb, 0x15, 0x34, 0xe8, 0x3e, 0xcf, -0x25, 0x49, 0xad, 0x49, 0x54, 0xe9, 0x34, 0xd6, -0xd2, 0x8e, 0x18, 0x86, 0x78, 0x45, 0x3d, 0xbd, -0xb8, 0xd3, 0xf1, 0xab, 0xe3, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0x9a, -0x9f, 0xd4, 0xf2, 0xfe, 0x27, 0xae, 0x06, 0x2f, -0xa1, 0x62, 0x9a, 0x5c, 0x2a, 0x33, 0xe2, 0x2c, -0x2b, 0x3b, 0xad, 0x4c, 0xb0, 0x46, 0x90, 0xed, -0x49, 0xed, 0x21, 0x7b, 0xfc, 0x7d, 0x01, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, -0x21, 0x2a, 0x55, 0xe4, 0x91, 0x19, 0x8b, 0x60, -0x2e, 0x62, 0x9c, 0xf2, 0xe5, 0x28, 0x4f, 0xbb, -0xf0, 0xfe, 0xa3, 0x21, 0xde, 0x07, 0xe0, 0x3f, -0x3b, 0x6d, 0x61, 0x6f, 0x8f, 0xdd, 0x24, 0x23, -0xa1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, -0x01, 0x22, 0x21, 0x15, 0x92, 0x91, 0x21, 0x22, -0x2f, 0x6e, 0xa4, 0xa4, 0xb9, 0x0a, 0x8f, 0xb7, -0xd9, 0xbb, 0x28, 0xfd, 0xd8, 0x8f, 0x7e, 0x9a, -0x4d, 0x4f, 0x48, 0xa0, 0xbe, 0x1d, 0x49, 0x97, -0xa1, 0x74, 0x8b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xdd, 0x01, 0x22, 0x21, 0xc4, 0xc6, 0xbd, -0x43, 0x4a, 0x6b, 0xf2, 0xa6, 0x94, 0x93, 0x8c, -0x80, 0x04, 0x2d, 0xe9, 0x2d, 0xdd, 0xdd, 0xbb, -0xa5, 0xca, 0xff, 0x24, 0xc2, 0xd9, 0x99, 0x1f, -0xca, 0x8f, 0x1f, 0x2f, 0xdc, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x43, -0xd0, 0x4b, 0xd1, 0x3d, 0x40, 0x47, 0x9b, 0xe8, -0x29, 0xfe, 0xca, 0xc9, 0x0f, 0xad, 0x7d, 0x5a, -0xc1, 0x01, 0x3d, 0xca, 0x10, 0x91, 0xc8, 0x41, -0xfc, 0x7f, 0x2b, 0x8e, 0xf2, 0x11, 0x3f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, -0x21, 0xfa, 0xe1, 0x89, 0xf3, 0x06, 0x63, 0xa8, -0x12, 0xa6, 0xa4, 0xf1, 0x36, 0xcf, 0xb1, 0x1b, -0x13, 0xf6, 0xb4, 0xdb, 0xc6, 0x03, 0x13, 0xdf, -0xa7, 0x30, 0xcf, 0x8e, 0x91, 0xc1, 0x70, 0x6f, -0xa9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, -0x01, 0x22, 0x21, 0xfb, 0x54, 0x56, 0x19, 0xe7, -0xc3, 0x1c, 0xf1, 0x38, 0x04, 0x9e, 0xf8, 0xc8, -0xfd, 0xfe, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x4b, 0x8d, 0x18, 0x53, -0xc0, 0x7b, 0xf2, 0x28, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe1, 0x01, 0x22, 0x21, 0xd9, 0xce, 0x60, -0xad, 0x75, 0xbb, 0x4f, 0x13, 0x3c, 0x85, 0xc8, -0xeb, 0x97, 0xf8, 0x94, 0xea, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc0, -0x94, 0x11, 0x74, 0xb3, 0x7b, 0xa3, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0xb7, -0xbd, 0x5c, 0x4b, 0x48, 0x94, 0x4b, 0x8e, 0xcc, -0xb6, 0x8b, 0x88, 0x72, 0xc9, 0x13, 0x62, 0xee, -0xc0, 0xfe, 0x83, 0x93, 0x34, 0xf0, 0xc4, 0x92, -0xe5, 0x83, 0xd5, 0x3a, 0xbd, 0x97, 0xc0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, -0x21, 0x75, 0x56, 0xbd, 0xcb, 0x50, 0x8d, 0x40, -0x60, 0x47, 0x77, 0xef, 0x8f, 0x35, 0x76, 0x77, -0x7e, 0x7a, 0x20, 0x24, 0x45, 0x9f, 0x1f, 0x10, -0x1e, 0xf6, 0x3d, 0x99, 0xfe, 0xd7, 0x64, 0x83, -0xd1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, -0x01, 0x22, 0x21, 0x37, 0x06, 0x55, 0x35, 0x42, -0xaf, 0x7a, 0xf4, 0xc5, 0x01, 0x7d, 0x91, 0x07, -0x25, 0xcc, 0xa6, 0xed, 0x15, 0x5f, 0xfd, 0x94, -0xeb, 0x02, 0xfe, 0x43, 0x4a, 0x15, 0x19, 0x2a, -0x14, 0xfe, 0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe5, 0x01, 0x22, 0x21, 0x38, 0x98, 0x21, -0x5d, 0x36, 0x62, 0xc4, 0xfe, 0xd4, 0x04, 0x59, -0x39, 0xc1, 0x2c, 0x57, 0xad, 0xf3, 0x01, 0x40, -0x8c, 0x46, 0x20, 0xa3, 0x93, 0xeb, 0x1b, 0xb1, -0x50, 0x62, 0xda, 0x74, 0x7e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x4c, -0x88, 0x4a, 0xa9, 0x90, 0x72, 0xb8, 0xe1, 0x6d, -0xb4, 0xed, 0xb8, 0xc8, 0x41, 0x7b, 0x92, 0x6f, -0x85, 0xf4, 0x96, 0x6f, 0xa9, 0x40, 0x51, 0xe9, -0xb8, 0xcc, 0x26, 0x20, 0xcc, 0x48, 0x47, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, -0x21, 0xb3, 0x51, 0x81, 0xa8, 0x46, 0x25, 0xf3, -0x0f, 0xa0, 0x55, 0x3d, 0x55, 0x1c, 0x84, 0xf7, -0xe9, 0xb1, 0xca, 0x95, 0x20, 0x2f, 0x68, 0x57, -0x0d, 0x39, 0x34, 0xd8, 0x2f, 0x46, 0x37, 0xe1, -0xd1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, -0x01, 0x22, 0x21, 0x14, 0x2d, 0xcc, 0xab, 0x43, -0xae, 0xac, 0x26, 0xf6, 0xb9, 0x3b, 0x50, 0xb0, -0xf6, 0x81, 0xe9, 0x0f, 0x5c, 0x8a, 0xb7, 0xbd, -0x04, 0xa9, 0x5e, 0x62, 0xae, 0x4b, 0x6c, 0x67, -0xa0, 0xb8, 0x13, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe9, 0x01, 0x22, 0x21, 0xc4, 0xc8, 0x9f, -0x2f, 0xe8, 0x47, 0xc4, 0x5d, 0xc7, 0x74, 0x9d, -0x16, 0x05, 0x71, 0xce, 0x65, 0x87, 0x25, 0x6a, -0x71, 0xc0, 0xdc, 0xc6, 0x62, 0x17, 0xe2, 0x11, -0x8f, 0x0a, 0x52, 0xe2, 0x9e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0x54, -0xad, 0xb8, 0xd5, 0xb0, 0x59, 0xbe, 0x37, 0x7b, -0x8e, 0x4e, 0xa0, 0x77, 0x61, 0x46, 0x6e, 0xc3, -0x5c, 0xe7, 0x6d, 0x7f, 0x98, 0x29, 0x47, 0xba, -0xe8, 0xfc, 0x0f, 0x3c, 0xe9, 0xcf, 0x83, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, -0x21, 0x9a, 0x9f, 0xf9, 0xf9, 0x43, 0x42, 0xb2, -0x3c, 0xcf, 0x97, 0x72, 0x42, 0x51, 0x92, 0xcc, -0x0a, 0x24, 0x9d, 0x44, 0x2b, 0x38, 0xad, 0x01, -0x55, 0xfa, 0xf5, 0x2c, 0x75, 0x86, 0x8d, 0xfb, -0x0f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, -0x01, 0x22, 0x21, 0x18, 0xd1, 0x56, 0x17, 0x27, -0x4b, 0x91, 0x8b, 0x1a, 0x91, 0x46, 0xca, 0xbc, -0x84, 0x74, 0x77, 0xe1, 0x91, 0x0b, 0x88, 0xcd, -0x44, 0x6b, 0xa5, 0x07, 0x06, 0xfe, 0xa4, 0xae, -0xd4, 0x5d, 0x6a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xed, 0x01, 0x22, 0x21, 0xf9, 0x49, 0x61, -0xf5, 0xa2, 0xef, 0x9c, 0x25, 0xfa, 0x2d, 0xe3, -0x13, 0x82, 0x8f, 0x48, 0x61, 0xc2, 0xa9, 0xd5, -0x1e, 0x00, 0xe1, 0xca, 0x58, 0xdf, 0x09, 0xb5, -0x6d, 0x84, 0x44, 0xa0, 0xb8, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0xab, -0x3f, 0x83, 0x92, 0x31, 0x49, 0xa9, 0x5c, 0xda, -0x6d, 0xf1, 0x7b, 0xff, 0x35, 0xb1, 0x16, 0x1a, -0xd7, 0x1c, 0xea, 0xa7, 0x0e, 0xd5, 0x9a, 0x9c, -0x49, 0xda, 0xdb, 0xd9, 0x01, 0x99, 0xc7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, -0x21, 0x45, 0x5d, 0x23, 0xda, 0x20, 0x86, 0xec, -0x41, 0x5e, 0xf3, 0x71, 0x27, 0x8a, 0x86, 0x02, -0x67, 0xb3, 0xd0, 0x4d, 0x36, 0x1a, 0x9c, 0xb9, -0xa9, 0xe0, 0xeb, 0x8e, 0x3b, 0xee, 0xf6, 0xfe, -0x57, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, -0x01, 0x22, 0x21, 0x0b, 0x5f, 0x87, 0x2d, 0xf8, -0x9c, 0x7e, 0xac, 0x1e, 0x1c, 0x7a, 0x14, 0xab, -0x67, 0x6a, 0xa8, 0x88, 0xca, 0x13, 0x97, 0xfa, -0x5a, 0x8f, 0x51, 0xfc, 0xda, 0x5b, 0xee, 0xa8, -0x50, 0xb8, 0xb8, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf1, 0x01, 0x22, 0x21, 0x2c, 0xdf, 0x12, -0x93, 0xd9, 0xa8, 0x8a, 0x0a, 0xc0, 0x2b, 0xe5, -0x54, 0xf9, 0xd0, 0x72, 0xae, 0x0b, 0xc9, 0xf4, -0x6f, 0x3b, 0x73, 0x40, 0x9e, 0xbc, 0xb8, 0x29, -0xe7, 0x27, 0x9a, 0x14, 0xe4, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0xfb, -0x6f, 0xfc, 0x6e, 0x9c, 0x7f, 0x2b, 0x84, 0x0a, -0xf9, 0xec, 0x42, 0x59, 0xe6, 0x14, 0xa7, 0xe8, -0xe6, 0x83, 0xd1, 0xa2, 0xbd, 0x9f, 0xd4, 0x1d, -0x14, 0xf4, 0xa5, 0x3a, 0x26, 0x91, 0x79, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, -0x21, 0xf8, 0x75, 0x76, 0xcc, 0xe2, 0x97, 0xd6, -0xa6, 0xa4, 0x79, 0x9d, 0x41, 0x2f, 0x72, 0x73, -0xaf, 0x59, 0x25, 0x53, 0xdb, 0xf6, 0xcf, 0x44, -0xfb, 0xcf, 0xb4, 0x69, 0x39, 0xeb, 0xc3, 0x02, -0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, -0x01, 0x22, 0x21, 0xa7, 0x8c, 0x1f, 0x88, 0x70, -0x1d, 0xaf, 0xbf, 0x09, 0x68, 0xc7, 0xf2, 0x7f, -0x21, 0x89, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xfb, 0xfd, 0x2f, 0xca, -0xe5, 0x8b, 0x52, 0x93, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf5, 0x01, 0x22, 0x21, 0x9b, 0xce, 0x1e, -0xb6, 0xf4, 0x28, 0x3a, 0xef, 0x61, 0x2e, 0xd1, -0x09, 0xde, 0xc5, 0xa6, 0x1d, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x78, -0x3b, 0xb2, 0x00, 0xa0, 0x2a, 0xce, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0x3e, -0xdf, 0x3f, 0xe7, 0xc6, 0x5b, 0x01, 0xd7, 0x5f, -0xd1, 0xd3, 0xd3, 0x61, 0x70, 0x67, 0x16, 0xf6, -0x49, 0x14, 0x27, 0xac, 0x80, 0xbc, 0xae, 0x11, -0xa0, 0xef, 0x39, 0x70, 0xc1, 0x03, 0x8d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, -0x21, 0x9c, 0x68, 0xa9, 0x3d, 0xb9, 0x3d, 0xa0, -0xf4, 0xcd, 0xfc, 0x12, 0x61, 0x39, 0xce, 0x14, -0x98, 0xb4, 0x8b, 0x71, 0xef, 0xf5, 0x92, 0x75, -0xd6, 0x91, 0x2c, 0xd5, 0xf6, 0xc5, 0x16, 0x23, -0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, -0x01, 0x22, 0x21, 0x6c, 0x0c, 0x8d, 0xd5, 0xe2, -0xb5, 0x50, 0x68, 0xf6, 0x34, 0xfb, 0xba, 0xf3, -0xf0, 0x30, 0x8b, 0x13, 0x99, 0xea, 0xbd, 0x90, -0x63, 0x95, 0x55, 0xb7, 0x42, 0xed, 0xa0, 0xd7, -0x41, 0xf5, 0x3e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf9, 0x01, 0x22, 0x21, 0xf7, 0x87, 0xfd, -0x23, 0xf6, 0x4b, 0xb2, 0xb1, 0x18, 0xb0, 0xf3, -0xa1, 0xa3, 0xb8, 0x6f, 0x47, 0xec, 0xf7, 0x8d, -0x80, 0xa1, 0xf7, 0xf7, 0xd8, 0x77, 0x93, 0xf2, -0x92, 0x40, 0x05, 0x2e, 0xd9, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0x9f, -0x21, 0x86, 0x5b, 0xc5, 0x36, 0xe1, 0xeb, 0x6c, -0x75, 0x9e, 0xed, 0x96, 0x94, 0x0e, 0x4e, 0x96, -0x38, 0x7d, 0x15, 0x59, 0x1a, 0xa1, 0xac, 0x27, -0x41, 0x55, 0x54, 0xec, 0xda, 0x2b, 0x46, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, -0x21, 0x5b, 0x0c, 0x05, 0x26, 0x78, 0x11, 0xb1, -0x44, 0xe7, 0xab, 0x34, 0xfe, 0x02, 0x66, 0x63, -0x4f, 0xa4, 0x96, 0x4e, 0x62, 0xe2, 0x22, 0xd4, -0xd7, 0xb1, 0x0d, 0x43, 0x3f, 0xe7, 0xc8, 0x47, -0xc2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, -0x01, 0x22, 0x21, 0x04, 0x73, 0xa9, 0xa5, 0xf8, -0x48, 0x19, 0x86, 0xec, 0x53, 0xf5, 0x0a, 0xaa, -0xad, 0x55, 0x86, 0x7e, 0x11, 0x02, 0xf6, 0x90, -0xe0, 0x54, 0xb7, 0xc7, 0x50, 0x1a, 0xba, 0x27, -0x75, 0x58, 0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xfd, 0x01, 0x22, 0x21, 0xdb, 0x6c, 0x92, -0x06, 0xdb, 0xc0, 0xc8, 0xeb, 0xb5, 0x47, 0x27, -0x21, 0x89, 0x61, 0xf2, 0xd0, 0x74, 0xe9, 0x7f, -0x72, 0x07, 0xc0, 0x0c, 0xe5, 0xa4, 0xa2, 0xee, -0x6d, 0x95, 0x2c, 0xe7, 0x24, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0xa5, -0x7d, 0x28, 0x16, 0xfa, 0x36, 0x2a, 0x9c, 0xb5, -0x38, 0x53, 0x75, 0xa9, 0xbc, 0xf3, 0x4e, 0x99, -0xa7, 0xf6, 0x2c, 0x2e, 0xf8, 0x9f, 0x07, 0xda, -0x57, 0x29, 0x74, 0x2f, 0x31, 0xc9, 0xfc, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, -0x21, 0x72, 0x45, 0xf4, 0x0e, 0xf8, 0xef, 0xe6, -0x6f, 0x00, 0xce, 0x4a, 0x8d, 0x3b, 0xb1, 0x64, -0x52, 0x0e, 0xca, 0x74, 0xf3, 0xb7, 0x36, 0x9b, -0xae, 0x98, 0xb4, 0x6a, 0x0d, 0xae, 0x7f, 0x03, -0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, -0x01, 0x22, 0x21, 0xfe, 0x2d, 0x17, 0xa5, 0x69, -0xd6, 0x5c, 0xe3, 0x34, 0x3a, 0x94, 0x45, 0x8e, -0x6e, 0x0e, 0x6f, 0xd0, 0xe8, 0x0c, 0x6c, 0x43, -0xe0, 0xc5, 0xbf, 0x22, 0x33, 0x83, 0xb9, 0x57, -0xa2, 0x97, 0x12, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x01, 0x01, 0x22, 0x21, 0x44, 0x62, 0xb8, -0xf1, 0x1f, 0x85, 0x59, 0xed, 0xd8, 0x0f, 0x9c, -0xa5, 0x21, 0xa4, 0x69, 0xac, 0x1c, 0xd3, 0xd6, -0xe5, 0x27, 0x95, 0x76, 0x69, 0x84, 0xb1, 0x11, -0x81, 0x4e, 0x6c, 0x3b, 0xd2, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0x91, -0x88, 0x2b, 0x35, 0xf1, 0x84, 0xb0, 0x62, 0x86, -0x79, 0x78, 0xca, 0x26, 0x4e, 0x1e, 0xea, 0xbb, -0xf3, 0x74, 0x05, 0x75, 0x37, 0x6b, 0x17, 0x7f, -0x47, 0xfe, 0xec, 0x8e, 0x14, 0x90, 0x2a, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, -0x21, 0x87, 0x81, 0x47, 0x2e, 0xad, 0x0e, 0x31, -0xdb, 0xf6, 0x5f, 0x2a, 0xf8, 0x37, 0xd5, 0x3a, -0x6d, 0xc3, 0xa7, 0x39, 0x6b, 0x01, 0x6a, 0x78, -0xb0, 0x99, 0xa2, 0xf8, 0xed, 0x12, 0x9c, 0x21, -0x46, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, -0x01, 0x22, 0x21, 0x5e, 0x05, 0x77, 0x0d, 0x3f, -0xc8, 0x50, 0x99, 0x4a, 0x45, 0x13, 0xfd, 0x1a, -0x2a, 0x64, 0x43, 0xcc, 0x23, 0x92, 0x83, 0x21, -0x7d, 0x28, 0xfa, 0x8d, 0x52, 0x07, 0x82, 0xfd, -0x39, 0x2f, 0xfb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x05, 0x01, 0x22, 0x21, 0xbd, 0xf6, 0x86, -0x9c, 0xd8, 0x83, 0xed, 0x25, 0x8d, 0x15, 0xba, -0xdb, 0xe0, 0x57, 0x22, 0xe3, 0x75, 0xbc, 0x62, -0xc8, 0xf8, 0x98, 0x49, 0xc5, 0xb3, 0x4a, 0x07, -0xdb, 0x78, 0xf6, 0xb0, 0x47, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x7f, -0x95, 0x2c, 0x59, 0x57, 0xc8, 0x03, 0x59, 0xbd, -0x02, 0xb6, 0xe5, 0x61, 0xc5, 0xbc, 0xa1, 0x3d, -0x04, 0x82, 0x06, 0x54, 0x96, 0x76, 0xbc, 0xb1, -0x97, 0x3d, 0xb0, 0xd9, 0x71, 0x57, 0x78, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, -0x21, 0x4d, 0xbe, 0x4d, 0x8f, 0x8e, 0x75, 0x10, -0x6f, 0x14, 0xb2, 0xb6, 0xf4, 0xbe, 0x9d, 0xc5, -0x32, 0x86, 0xbf, 0x99, 0xea, 0x51, 0x35, 0x53, -0x5b, 0x23, 0x63, 0xab, 0x34, 0x0a, 0x10, 0xdb, -0x15, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, -0x01, 0x22, 0x21, 0x33, 0x2b, 0x28, 0x2f, 0x1b, -0x9c, 0x42, 0xa8, 0xd7, 0xbf, 0x28, 0x78, 0xd8, -0x94, 0x4c, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x5f, 0x6a, 0x8f, 0x8e, -0x60, 0x74, 0xea, 0x3e, 0x03, 0x04, 0x51, 0x02, -0x00, 0x09, 0x01, 0x22, 0x21, 0xd5, 0x76, 0x16, -0xf1, 0xad, 0xdd, 0xaa, 0xdb, 0x9a, 0xbe, 0x3b, -0xa0, 0xd7, 0x8e, 0x5f, 0x64, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x5c, -0x7d, 0x88, 0x8f, 0x40, 0x1c, 0xb9, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0xdd, -0x8d, 0x02, 0x7b, 0x1d, 0x87, 0xe9, 0x63, 0x50, -0x28, 0xfc, 0x88, 0x66, 0xad, 0xb9, 0x26, 0x18, -0xd3, 0x0e, 0x89, 0xfc, 0xe6, 0x70, 0x59, 0xc1, -0x0f, 0x00, 0x5d, 0x39, 0x41, 0x76, 0xcf, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, -0x21, 0x7f, 0x62, 0x81, 0xd4, 0x8a, 0xaf, 0x86, -0xc3, 0xff, 0xe7, 0xe3, 0x52, 0x92, 0xca, 0x24, -0x5a, 0xd3, 0xa1, 0xf5, 0xff, 0x3a, 0x1c, 0xbc, -0x71, 0xde, 0x15, 0x94, 0xcc, 0xc5, 0x7c, 0x14, -0x13, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, -0x01, 0x22, 0x21, 0x95, 0x66, 0xad, 0x6d, 0x3b, -0xe7, 0xb2, 0xb1, 0xfe, 0x85, 0x0e, 0x69, 0x76, -0xf6, 0x68, 0x37, 0xdf, 0xfa, 0x8b, 0xaf, 0xe6, -0x55, 0x2c, 0x9d, 0x91, 0xcb, 0x4c, 0x4d, 0xc0, -0xfb, 0xbc, 0x05, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x0d, 0x01, 0x22, 0x21, 0x14, 0x57, 0x17, -0x9e, 0xad, 0x8d, 0xc2, 0x16, 0x3b, 0x34, 0xdf, -0xe6, 0x0e, 0x58, 0xbd, 0x85, 0x25, 0x85, 0x56, -0x11, 0xa1, 0x50, 0x2f, 0x68, 0x45, 0x4c, 0xb9, -0x87, 0x45, 0x5d, 0x1c, 0x4b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0xfa, -0xa3, 0x34, 0x1e, 0xf4, 0xa2, 0x81, 0x1e, 0xb1, -0x32, 0x33, 0x65, 0xc2, 0xde, 0xb1, 0xe2, 0x8a, -0x9b, 0x2d, 0xe6, 0x6d, 0xa4, 0x7b, 0x01, 0x7f, -0x92, 0x50, 0x7d, 0x35, 0xa8, 0x53, 0xe3, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, -0x21, 0x0a, 0x68, 0x72, 0xee, 0x05, 0x9e, 0x2b, -0x5f, 0x86, 0xe3, 0x5d, 0x2d, 0x8f, 0x8c, 0x9e, -0x68, 0x52, 0x91, 0x14, 0xbc, 0x06, 0x23, 0xfd, -0xf4, 0x1b, 0x54, 0x29, 0xa4, 0x55, 0x03, 0xdd, -0x22, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, -0x01, 0x22, 0x21, 0xd2, 0x5c, 0xbf, 0x49, 0x00, -0x66, 0x10, 0x47, 0x65, 0xf0, 0x81, 0x60, 0x19, -0x6f, 0xaa, 0xe9, 0x7d, 0xe6, 0x4d, 0x78, 0x45, -0x51, 0x21, 0x47, 0x9e, 0x8a, 0x13, 0x98, 0x91, -0xda, 0x00, 0xcc, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x11, 0x01, 0x22, 0x21, 0x00, 0x9a, 0x4a, -0x9a, 0x21, 0x11, 0xd1, 0x37, 0xc9, 0xb2, 0xef, -0x55, 0x9d, 0x96, 0xe0, 0x13, 0x99, 0x6b, 0x99, -0x09, 0xe8, 0x4a, 0x96, 0x6d, 0x56, 0xe8, 0x90, -0xca, 0xca, 0xee, 0xdf, 0x04, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0x1e, -0x51, 0x3c, 0xc6, 0x4c, 0xf9, 0x79, 0x55, 0x6f, -0x78, 0x3c, 0xc1, 0x03, 0xbf, 0xb4, 0x5b, 0x3b, -0x26, 0xa7, 0x26, 0x72, 0x76, 0xe0, 0x14, 0x01, -0xc9, 0x15, 0xcf, 0x45, 0xac, 0x93, 0x4e, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, -0x21, 0x6c, 0x9c, 0x5d, 0x4d, 0x5e, 0x64, 0xa9, -0x18, 0xcf, 0x5b, 0x33, 0x0b, 0x32, 0x69, 0x4b, -0x52, 0x04, 0xc9, 0x07, 0x08, 0xda, 0xf9, 0xdc, -0x99, 0xed, 0x36, 0xed, 0xd4, 0xf9, 0xf2, 0x5a, -0xa0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, -0x01, 0x22, 0x21, 0x10, 0x80, 0x64, 0x9b, 0xa6, -0xad, 0xb7, 0xe5, 0x63, 0x6f, 0xa0, 0x72, 0x2e, -0x5d, 0x42, 0xd1, 0x92, 0x48, 0xf5, 0xa1, 0x20, -0x98, 0x8d, 0x1d, 0x9b, 0xdc, 0xad, 0x76, 0x38, -0x3e, 0x48, 0xec, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x15, 0x01, 0x22, 0x21, 0x58, 0x21, 0x69, -0x8a, 0x8e, 0xa4, 0x59, 0x9e, 0xb4, 0xf6, 0x11, -0x5b, 0x0a, 0xa1, 0x5a, 0xeb, 0x22, 0x5d, 0xe5, -0xd3, 0xcc, 0x87, 0xb3, 0xa8, 0x87, 0xcb, 0x4e, -0xa7, 0x11, 0xa2, 0xbf, 0xc7, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0x55, -0x9c, 0x0b, 0xe3, 0x3f, 0x4d, 0xff, 0xfa, 0x21, -0x9e, 0x42, 0x88, 0x27, 0x89, 0xea, 0x48, 0x24, -0x25, 0x66, 0xc5, 0x5f, 0xdd, 0xc1, 0xfa, 0x57, -0xec, 0x28, 0x64, 0x6d, 0x48, 0x6a, 0x49, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, -0x21, 0x1d, 0xdf, 0x29, 0x4d, 0x2b, 0xea, 0x0c, -0xc4, 0x6b, 0xdd, 0x52, 0x86, 0x96, 0x29, 0x1a, -0xc4, 0x0e, 0x3c, 0xf4, 0x97, 0xc7, 0x8a, 0x33, -0x83, 0xc0, 0x4f, 0xa3, 0xd8, 0xec, 0x4e, 0x5e, -0x8d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, -0x01, 0x22, 0x21, 0x2b, 0x1d, 0x92, 0x47, 0x18, -0xe5, 0x43, 0x69, 0xb2, 0x25, 0x82, 0x1b, 0xcd, -0x6a, 0x4c, 0x07, 0x95, 0x93, 0x1c, 0xc7, 0xc7, -0x70, 0xb3, 0xf3, 0x95, 0x89, 0x09, 0xfe, 0x54, -0x02, 0x0b, 0x61, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x19, 0x01, 0x22, 0x21, 0xfc, 0x6d, 0xc7, -0xfd, 0xbe, 0x6d, 0x87, 0x44, 0x22, 0xb1, 0xc0, -0x54, 0x72, 0x90, 0xdc, 0xb8, 0xe4, 0xd5, 0xd3, -0x8d, 0xb4, 0xd8, 0xe3, 0xef, 0x87, 0x72, 0x6f, -0xe2, 0x45, 0xf5, 0x2d, 0x2f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x02, -0x21, 0xf4, 0xf9, 0x9a, 0xa0, 0xa8, 0xa6, 0x5c, -0x93, 0x52, 0x87, 0x8a, 0x83, 0xf4, 0x99, 0x73, -0x9c, 0x6b, 0x4a, 0xf1, 0xff, 0x91, 0x85, 0xc2, -0xe3, 0x2e, 0x4f, 0x39, 0x54, 0x54, 0x11, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, -0x21, 0x36, 0xb5, 0xd9, 0x96, 0x40, 0x79, 0xc4, -0x72, 0xfa, 0xc1, 0x39, 0x0c, 0x41, 0x80, 0x8c, -0x2f, 0x78, 0x06, 0x0a, 0xc2, 0xcf, 0x3f, 0x15, -0x52, 0x4e, 0xa9, 0xb1, 0xc2, 0x07, 0x42, 0x1a, -0xe1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, -0x01, 0x22, 0x21, 0x4d, 0x0a, 0x69, 0xba, 0x69, -0x28, 0x7b, 0x84, 0x87, 0xce, 0x17, 0xce, 0xf9, -0xc1, 0x10, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x83, 0x29, 0x56, 0x4e, -0x9b, 0x5b, 0xdf, 0xc2, 0x03, 0x04, 0x51, 0x02, -0x00, 0x1d, 0x01, 0x22, 0x21, 0x5e, 0x76, 0x67, -0x8f, 0x41, 0xc9, 0xc7, 0x03, 0x69, 0x39, 0x62, -0xd7, 0xa7, 0xd7, 0x29, 0x4c, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf2, -0x11, 0xa7, 0xd5, 0xec, 0x83, 0x29, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0xcb, -0xbe, 0x0e, 0x11, 0x7b, 0xb4, 0x63, 0x6d, 0x41, -0xb7, 0xe1, 0xa6, 0xb3, 0xd6, 0x1a, 0x0b, 0x10, -0x04, 0x0f, 0xd6, 0xb5, 0xa0, 0x75, 0xa1, 0x1d, -0x44, 0x30, 0xd1, 0xba, 0x66, 0x6d, 0x73, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, -0x21, 0x8f, 0x55, 0xea, 0xff, 0xe7, 0x4a, 0x34, -0x69, 0x0c, 0xc3, 0xd3, 0x84, 0x4f, 0x42, 0x87, -0x3a, 0xc3, 0x9e, 0x52, 0x9a, 0x46, 0xd2, 0xd4, -0xea, 0xb6, 0x11, 0x90, 0xa2, 0xc8, 0xe5, 0x41, -0x9f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, -0x01, 0x22, 0x21, 0x4e, 0x1d, 0xe6, 0x1f, 0x84, -0xbd, 0xd6, 0x50, 0x76, 0xc0, 0xae, 0xbb, 0x49, -0xb2, 0x07, 0xe0, 0x7a, 0x93, 0x3a, 0x2d, 0x0f, -0xf2, 0xa1, 0x45, 0xfd, 0x6d, 0x3a, 0x80, 0x9e, -0xe5, 0xcf, 0xae, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x21, 0x01, 0x22, 0x21, 0xf3, 0x33, 0x4c, -0x74, 0x4c, 0xc1, 0x6b, 0x38, 0x29, 0x13, 0x18, -0xa4, 0xef, 0x52, 0xc5, 0x89, 0x6c, 0xd1, 0xe6, -0xf1, 0x77, 0xd5, 0x38, 0xe2, 0xd8, 0xe7, 0xb1, -0x51, 0xfc, 0xc5, 0x40, 0x41, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xb7, -0x69, 0xbd, 0xea, 0x92, 0x85, 0xa5, 0xf7, 0xb6, -0x5f, 0x42, 0x0e, 0xcf, 0xf2, 0xb0, 0xee, 0x33, -0x38, 0x78, 0x5d, 0x83, 0x97, 0xa0, 0x24, 0x8f, -0xd5, 0xe4, 0xec, 0x0b, 0x9e, 0xe1, 0x59, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, -0x21, 0x6b, 0x84, 0x31, 0x25, 0x49, 0x0d, 0x33, -0x47, 0x2a, 0x8e, 0x31, 0xf4, 0xb0, 0x49, 0xc1, -0x5c, 0xf6, 0x0b, 0xbf, 0xda, 0xdf, 0x29, 0x67, -0xcd, 0xd1, 0x5c, 0x50, 0xc3, 0x77, 0x93, 0x68, -0xfe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, -0x01, 0x22, 0x21, 0xc6, 0x62, 0x22, 0x5a, 0x74, -0x53, 0x38, 0xde, 0x5a, 0x5e, 0x03, 0xb8, 0xdf, -0x26, 0x1f, 0xb1, 0x97, 0x07, 0x06, 0x96, 0x04, -0x64, 0xac, 0x40, 0x36, 0x89, 0x47, 0xee, 0x87, -0xc2, 0x1a, 0x25, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x25, 0x01, 0x22, 0x21, 0x61, 0x3f, 0x5c, -0xad, 0xc1, 0x12, 0xdd, 0xf6, 0xe7, 0x53, 0xa2, -0xdb, 0x6d, 0x33, 0x72, 0xe8, 0x31, 0x62, 0x73, -0x7d, 0xee, 0x38, 0xf5, 0x34, 0x4f, 0x0d, 0xe1, -0x44, 0x1b, 0x6d, 0x39, 0x6f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0x07, -0xe4, 0xd9, 0x4c, 0xb9, 0x40, 0xb0, 0x22, 0x97, -0xe6, 0x9d, 0x71, 0x8b, 0x3e, 0x0d, 0x00, 0x6a, -0x74, 0x05, 0x67, 0xbe, 0x2c, 0x38, 0xa4, 0x9b, -0xf0, 0x73, 0x24, 0x9c, 0xac, 0x7a, 0xa0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, -0x21, 0x5a, 0xae, 0xfe, 0x96, 0xe3, 0xb6, 0x26, -0x13, 0x99, 0x7e, 0x2b, 0xbf, 0x52, 0x8c, 0x7e, -0xfb, 0x4a, 0x2b, 0x95, 0xec, 0xc1, 0xbc, 0x25, -0xe2, 0x18, 0x13, 0x99, 0x6d, 0xfc, 0x28, 0x9a, -0x74, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, -0x01, 0x22, 0x21, 0x40, 0x34, 0xb2, 0x4b, 0x94, -0xfb, 0xb2, 0xbe, 0x7f, 0x5f, 0xff, 0xd9, 0x02, -0x97, 0x5c, 0x09, 0x35, 0xcf, 0x41, 0x4d, 0x8f, -0xa8, 0x75, 0xde, 0xc2, 0xa7, 0xcd, 0xd8, 0xa7, -0xff, 0x4e, 0x6d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x29, 0x01, 0x22, 0x21, 0x67, 0x5a, 0x8e, -0xed, 0x02, 0x51, 0x9c, 0x21, 0x2d, 0xd3, 0xf3, -0xee, 0xb0, 0x05, 0x7f, 0xa8, 0xaa, 0xb2, 0x6c, -0x4d, 0xf0, 0x96, 0x5c, 0xb6, 0x3c, 0xff, 0x09, -0xa0, 0xcc, 0xb5, 0x88, 0xb6, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0xef, -0x97, 0x5d, 0x85, 0x21, 0xa5, 0x49, 0xa8, 0xae, -0x5f, 0xa6, 0xcf, 0xb2, 0xc0, 0xa5, 0x93, 0x89, -0x95, 0x0b, 0x48, 0xaf, 0x0c, 0xec, 0xf3, 0xa4, -0xcf, 0xd3, 0xfa, 0x5d, 0x62, 0x96, 0xf4, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, -0x21, 0xc5, 0xe1, 0x6c, 0xc3, 0x28, 0x69, 0xc5, -0xd0, 0x8b, 0xbe, 0x2d, 0xb7, 0xf9, 0x06, 0x92, -0x2a, 0x70, 0xdb, 0x37, 0x41, 0x3a, 0xed, 0x98, -0xe0, 0x81, 0x0c, 0x27, 0xa5, 0x2e, 0x0c, 0x51, -0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, -0x01, 0x22, 0x21, 0xb0, 0x46, 0xa1, 0x2b, 0xc1, -0xb0, 0xb4, 0x23, 0xca, 0x70, 0xbf, 0x3c, 0xa5, -0x6e, 0x75, 0x7a, 0x7d, 0x42, 0x16, 0xd5, 0x62, -0xf2, 0x21, 0x71, 0x27, 0xdd, 0x4d, 0x23, 0x4a, -0x0f, 0x1c, 0x67, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x2d, 0x01, 0x22, 0x21, 0xef, 0x78, 0x9f, -0xb0, 0x5d, 0xb2, 0xc7, 0xc4, 0x8e, 0xd6, 0xcf, -0x19, 0xa0, 0xcd, 0xdb, 0x58, 0xfb, 0x8b, 0x8f, -0xe3, 0xb3, 0x34, 0xb1, 0x05, 0x08, 0x4b, 0x75, -0x25, 0x8f, 0xcf, 0xf5, 0xbd, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0x58, -0x8b, 0x07, 0x1d, 0xd7, 0x7e, 0x1c, 0xab, 0x55, -0xe1, 0x9f, 0x7c, 0xab, 0x46, 0xd9, 0xf4, 0xeb, -0x94, 0x69, 0x79, 0x45, 0x59, 0xfd, 0x5a, 0x63, -0xd3, 0xec, 0x9c, 0x9f, 0x22, 0xc5, 0xb9, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, -0x21, 0x52, 0x2c, 0xee, 0x44, 0xe7, 0xc6, 0x17, -0x73, 0x07, 0xc3, 0xc0, 0x89, 0xe6, 0x2d, 0x98, -0x77, 0x00, 0x14, 0x0a, 0x85, 0xbf, 0x2e, 0xba, -0xcd, 0xda, 0x80, 0x33, 0x53, 0x9a, 0xc2, 0xf3, -0x29, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, -0x01, 0x22, 0x21, 0xe5, 0xad, 0x12, 0x38, 0x48, -0xaa, 0xa2, 0xc1, 0xe6, 0xbd, 0xd6, 0x16, 0x49, -0x60, 0xc5, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x35, 0xfc, 0x16, 0xc8, -0x91, 0x7e, 0x7b, 0x62, 0x03, 0x04, 0x51, 0x02, -0x00, 0x31, 0x01, 0x22, 0x21, 0x20, 0x44, 0x24, -0x72, 0xf9, 0x70, 0x51, 0x2c, 0x94, 0x49, 0xab, -0x69, 0xf6, 0xdd, 0x46, 0xc3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x20, -0x35, 0x4a, 0x1d, 0x45, 0x8c, 0xdf, 0x03, 0x04, -0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0xe8, -0xea, 0x3f, 0xf7, 0xc8, 0xc7, 0xd6, 0x40, 0xd3, -0x39, 0x96, 0x7b, 0x0d, 0x61, 0x0c, 0x38, 0xd0, -0xd5, 0x29, 0xc7, 0x33, 0x0f, 0xc3, 0x7f, 0xa6, -0x2a, 0xba, 0x5f, 0xbf, 0x73, 0x1e, 0xe9, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, -0x21, 0x4f, 0xcf, 0x3e, 0x80, 0xbf, 0x5d, 0xbc, -0xd3, 0x45, 0x46, 0xa5, 0x90, 0x68, 0x45, 0xf6, -0x59, 0x66, 0xb3, 0xc2, 0xf2, 0x61, 0xe0, 0x60, -0xd6, 0x2e, 0xf3, 0xdd, 0xd5, 0x9c, 0xf1, 0x6c, -0x78, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, -0x01, 0x22, 0x21, 0x26, 0x13, 0x4e, 0x1b, 0x12, -0x66, 0xbd, 0x28, 0xda, 0xb0, 0x5e, 0x22, 0x4d, -0xa0, 0x3c, 0x5f, 0x8f, 0x58, 0x6c, 0x62, 0x65, -0x9b, 0x83, 0xee, 0xd5, 0x83, 0x9b, 0x3c, 0xef, -0x60, 0x0a, 0x3e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x35, 0x01, 0x22, 0x21, 0xae, 0xab, 0x87, -0x0a, 0x49, 0x69, 0x17, 0xe7, 0xb9, 0x5d, 0x92, -0x06, 0xd4, 0xcf, 0x5f, 0x30, 0xc0, 0x83, 0x29, -0xd5, 0x0b, 0x3a, 0xaa, 0x31, 0xa8, 0xe0, 0xdd, -0x28, 0x9e, 0x54, 0xd8, 0xc1, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x9f, -0xb0, 0xc9, 0x59, 0xa5, 0x65, 0x7c, 0xc7, 0xde, -0x00, 0x5c, 0xe9, 0x9b, 0x0e, 0x3c, 0x17, 0x98, -0x05, 0xb1, 0xd4, 0x8d, 0x67, 0x21, 0xbd, 0x53, -0x5c, 0x47, 0x3c, 0xbe, 0x56, 0x5f, 0x10, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, -0x21, 0xb1, 0xae, 0xf5, 0xd4, 0x14, 0x30, 0xdc, -0x8f, 0x8b, 0x96, 0x1d, 0x8c, 0x01, 0x85, 0x01, -0x7e, 0x2d, 0x8c, 0xd9, 0xfa, 0x97, 0xa6, 0x77, -0xa0, 0x59, 0x6a, 0xe1, 0x79, 0x75, 0xa8, 0xf4, -0x0e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, -0x01, 0x22, 0x21, 0xd1, 0x9e, 0x76, 0xf1, 0x50, -0xec, 0x5e, 0x15, 0x8f, 0xda, 0x6d, 0x64, 0x20, -0x87, 0xbd, 0x76, 0xc4, 0x04, 0x71, 0x0d, 0x89, -0x69, 0xf2, 0xa0, 0x34, 0xe4, 0x36, 0x78, 0x10, -0x3d, 0xf2, 0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x39, 0x01, 0x22, 0x21, 0x15, 0xd9, 0x15, -0x03, 0x4f, 0x8b, 0xd9, 0x5e, 0x82, 0xe4, 0x6d, -0xac, 0xb3, 0x02, 0x5e, 0xc2, 0x20, 0xf0, 0xc6, -0x03, 0xf0, 0x23, 0xa9, 0xe9, 0x42, 0xa5, 0x74, -0x4f, 0x8a, 0x4d, 0x0a, 0x99, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0x59, -0x23, 0x62, 0xb2, 0x3c, 0xa4, 0x2e, 0x92, 0x2b, -0xb1, 0xcf, 0xc9, 0xab, 0x62, 0x0f, 0x30, 0xd5, -0x56, 0x5e, 0x95, 0x32, 0x7f, 0x8d, 0x98, 0x17, -0x8d, 0x0e, 0x5b, 0x87, 0x7c, 0x28, 0xa7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, -0x21, 0x9b, 0xae, 0x8a, 0xf5, 0xe4, 0x08, 0x7e, -0xeb, 0xf2, 0x9e, 0x81, 0xb4, 0x9d, 0x6a, 0x7d, -0xae, 0xa1, 0xfe, 0x57, 0x8e, 0x38, 0xb5, 0xb5, -0x32, 0xbf, 0xd9, 0xd6, 0x97, 0x64, 0xc8, 0xc1, -0x88, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, -0x01, 0x22, 0x21, 0x79, 0xfb, 0xc6, 0x0e, 0x5e, -0x09, 0x89, 0x91, 0x10, 0xa4, 0x12, 0xaf, 0x5a, -0x19, 0x9f, 0xbb, 0xd2, 0xd1, 0xbd, 0xce, 0x64, -0xeb, 0x21, 0x62, 0x96, 0x58, 0xf0, 0x11, 0xfa, -0xe2, 0x22, 0x49, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x3d, 0x01, 0x22, 0x21, 0x7c, 0x8d, 0xc4, -0x1f, 0x1a, 0x67, 0xc4, 0x8a, 0xc9, 0x28, 0xef, -0x28, 0xe6, 0x44, 0x80, 0x7e, 0x34, 0xdc, 0xbf, -0x56, 0xbb, 0x98, 0xa8, 0x15, 0xab, 0xc7, 0xd8, -0xac, 0xe3, 0xa7, 0x12, 0xa0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x80, -0x12, 0x2c, 0xf7, 0x6e, 0x98, 0xef, 0x19, 0xea, -0xf3, 0x43, 0x76, 0xc2, 0xd2, 0x7a, 0xf1, 0x00, -0xbb, 0x27, 0xc9, 0x58, 0x10, 0x07, 0xe1, 0x67, -0x0f, 0xe0, 0x15, 0x67, 0x12, 0xec, 0x87, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, -0x21, 0x87, 0x8d, 0x63, 0xd5, 0x1b, 0x1b, 0xcc, -0x60, 0x42, 0xaa, 0xe5, 0x31, 0x21, 0xb3, 0x8f, -0xd8, 0xfa, 0x02, 0xab, 0x51, 0xdd, 0xfb, 0x6b, -0xf3, 0x49, 0xf5, 0xe0, 0x4c, 0xc0, 0x47, 0x4f, -0x32, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, -0x01, 0x22, 0x21, 0xdc, 0x06, 0x58, 0x08, 0x36, -0x79, 0x63, 0xd1, 0x0c, 0x55, 0xb0, 0x19, 0x53, -0x6b, 0x97, 0x84, 0xb0, 0x82, 0x5d, 0x0a, 0x14, -0xc3, 0x1e, 0xe7, 0x13, 0x2a, 0x08, 0x3b, 0x92, -0x85, 0x78, 0x62, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x41, 0x01, 0x22, 0x21, 0xa2, 0x7b, 0x38, -0xc7, 0x63, 0xe0, 0x2e, 0x56, 0xd7, 0x5e, 0x9f, -0xf2, 0x6e, 0x63, 0x1b, 0x74, 0x00, 0x28, 0x5b, -0xc2, 0x31, 0x14, 0xa9, 0x66, 0x5f, 0x31, 0xa0, -0xcf, 0x2f, 0x2b, 0x3a, 0x60, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0xcf, -0x8d, 0x0d, 0xc7, 0x0e, 0x10, 0xdd, 0x87, 0x2d, -0xfe, 0x2d, 0x27, 0xbb, 0xd2, 0xbf, 0x67, 0x4d, -0x0f, 0x50, 0x83, 0xee, 0x0e, 0xf4, 0x9e, 0xdb, -0xda, 0x9f, 0xc4, 0x1a, 0xc4, 0x9f, 0x37, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, -0x21, 0x02, 0xa0, 0x3b, 0x82, 0xd1, 0xce, 0x06, -0x07, 0x7a, 0x40, 0x41, 0xd7, 0xfc, 0x8e, 0x29, -0x3e, 0xdb, 0x8c, 0x66, 0xde, 0x0e, 0xf9, 0xf0, -0x90, 0xec, 0x49, 0x0b, 0x38, 0x1b, 0x7f, 0xed, -0xc9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, -0x01, 0x22, 0x21, 0x39, 0x16, 0xd6, 0x0c, 0x69, -0xa3, 0x36, 0x7d, 0x40, 0x2c, 0xb0, 0xc0, 0x9a, -0xf9, 0x19, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xa5, 0x2b, 0x33, 0x71, -0x40, 0x1f, 0xc9, 0xf7, 0x03, 0x04, 0x51, 0x02, -0x00, 0x45, 0x01, 0x22, 0x21, 0x58, 0xbe, 0x1a, -0xb2, 0xee, 0xb9, 0x2c, 0x22, 0x02, 0xe4, 0x71, -0x08, 0xea, 0x9b, 0x80, 0xf7, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xce, -0xb5, 0xe3, 0x61, 0x49, 0xb9, 0x27, 0x03, 0x04, -0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0x3c, -0x43, 0xc7, 0xb0, 0x36, 0xf3, 0xf4, 0x6a, 0x02, -0xd1, 0xbd, 0x5d, 0x4d, 0x8b, 0x3b, 0x81, 0x9c, -0x62, 0x25, 0x74, 0x40, 0x1f, 0x34, 0xdd, 0xa7, -0x46, 0xc0, 0x0e, 0xfb, 0xee, 0xfa, 0xc0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, -0x21, 0xba, 0x2c, 0xf7, 0x23, 0x91, 0xb7, 0x53, -0x25, 0xa2, 0x43, 0x9a, 0x13, 0xa6, 0x07, 0x3e, -0x04, 0x49, 0xc0, 0x6d, 0xd0, 0xef, 0x4a, 0x90, -0x7c, 0x77, 0x9e, 0xf6, 0x22, 0x1b, 0x41, 0x4c, -0xc0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, -0x01, 0x22, 0x21, 0xe5, 0x45, 0x6d, 0xd8, 0xfa, -0x05, 0xe0, 0x57, 0x39, 0x59, 0xe7, 0xa2, 0x95, -0x09, 0x53, 0x79, 0xed, 0xac, 0x8d, 0x69, 0x75, -0x7c, 0x86, 0xd9, 0x71, 0xb2, 0x43, 0x6c, 0x56, -0x87, 0xb1, 0x11, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x49, 0x01, 0x22, 0x21, 0xad, 0xb2, 0x54, -0x00, 0xcf, 0x88, 0x19, 0x8c, 0x6b, 0x01, 0xe4, -0xd5, 0x85, 0x7d, 0x28, 0x5e, 0xf6, 0x7a, 0x77, -0xe5, 0x79, 0xa5, 0x99, 0x85, 0x96, 0xe2, 0xf4, -0x77, 0xc7, 0x10, 0x0c, 0xd3, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0x67, -0x14, 0xa8, 0xb7, 0x06, 0xbd, 0xe3, 0x91, 0x45, -0xff, 0x76, 0xc0, 0x36, 0x88, 0xf4, 0xc9, 0x05, -0x3f, 0x69, 0x7a, 0x37, 0xc3, 0x17, 0x9e, 0xb5, -0x5f, 0x9d, 0xe4, 0x20, 0x68, 0x51, 0x16, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, -0x21, 0x0e, 0xb9, 0x4f, 0x35, 0x8c, 0x7b, 0x1c, -0xbf, 0x5a, 0xf1, 0x38, 0x2e, 0xe6, 0x3f, 0x2c, -0x03, 0x7d, 0x8c, 0xae, 0x1e, 0xa3, 0x08, 0x76, -0x0d, 0x31, 0x5e, 0xa8, 0x78, 0x69, 0x7c, 0x85, -0xff, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, -0x01, 0x22, 0x21, 0x6a, 0xd4, 0x25, 0x18, 0x85, -0xab, 0x8e, 0x59, 0xac, 0x68, 0x62, 0x43, 0x99, -0x14, 0xfb, 0xd9, 0xef, 0x1f, 0x82, 0x1b, 0xe4, -0xeb, 0x7c, 0x15, 0x15, 0x5d, 0xe0, 0xf1, 0x21, -0xde, 0x95, 0xff, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x4d, 0x01, 0x22, 0x21, 0x3b, 0xbc, 0xdc, -0x83, 0x2f, 0xc6, 0x7f, 0x0f, 0x5f, 0x44, 0x0b, -0xbd, 0x32, 0xab, 0xaa, 0x1a, 0xad, 0x95, 0x70, -0x30, 0x7a, 0x40, 0xab, 0xbd, 0x65, 0x62, 0x32, -0x84, 0x59, 0xd1, 0xe4, 0xb0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0x1c, -0x3d, 0xa9, 0x4b, 0xac, 0x8f, 0x7a, 0xa0, 0x73, -0x83, 0x8b, 0x8b, 0x35, 0x3b, 0xb2, 0x41, 0xdc, -0x22, 0x83, 0x79, 0xfe, 0x07, 0xf8, 0xaf, 0x25, -0xda, 0xe1, 0x4d, 0x7b, 0xfd, 0x2f, 0x55, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, -0x21, 0x22, 0xbe, 0x0f, 0xd9, 0x41, 0xbe, 0xfb, -0x4a, 0x69, 0x5a, 0xb0, 0x07, 0x41, 0x60, 0x0f, -0xd4, 0x19, 0xbf, 0x51, 0x4b, 0xd1, 0x1a, 0x2d, -0xdb, 0x63, 0x6e, 0x19, 0x63, 0xae, 0xc8, 0x58, -0xdd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, -0x01, 0x22, 0x21, 0x3f, 0xed, 0x77, 0x5a, 0x41, -0x6d, 0xdb, 0x29, 0x3c, 0x6f, 0x9b, 0xe0, 0x36, -0xa9, 0x07, 0x6e, 0xc5, 0xca, 0x34, 0x6f, 0xff, -0x85, 0x7d, 0xf0, 0x87, 0x6a, 0xbb, 0xfb, 0xdf, -0xa8, 0x67, 0xde, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x51, 0x01, 0x22, 0x21, 0x55, 0x81, 0x6d, -0xf4, 0x17, 0x3c, 0x5f, 0x85, 0xae, 0x51, 0xd4, -0x2a, 0x4d, 0x2d, 0xa3, 0x4d, 0x68, 0x27, 0x0b, -0x9a, 0x99, 0x39, 0x27, 0x09, 0xd4, 0x6c, 0x3d, -0x26, 0x41, 0xdf, 0xa8, 0x36, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0x79, -0x07, 0x7a, 0x70, 0xf7, 0x10, 0xe8, 0x5d, 0xac, -0x69, 0xd3, 0x1d, 0x84, 0x27, 0xc4, 0x25, 0x35, -0xfe, 0x2a, 0x49, 0x32, 0xb2, 0x72, 0xf8, 0x04, -0xc1, 0xc1, 0x4a, 0xf4, 0x30, 0x11, 0x74, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, -0x21, 0x73, 0xe0, 0xcc, 0xa6, 0xa7, 0xcf, 0x3d, -0x2d, 0xa3, 0x53, 0xd8, 0x5d, 0xcb, 0x0e, 0xd1, -0x53, 0xde, 0xce, 0xaf, 0x40, 0x60, 0xae, 0x89, -0x0a, 0xfc, 0x89, 0x63, 0xc8, 0x32, 0x02, 0x39, -0x1f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, -0x01, 0x22, 0x21, 0x1d, 0x41, 0xf6, 0xe7, 0xbc, -0x92, 0x68, 0xa8, 0x23, 0xbf, 0x09, 0xc7, 0xf6, -0xb1, 0xda, 0x10, 0x18, 0x27, 0x65, 0xd8, 0x83, -0x36, 0xad, 0x83, 0x2d, 0xfc, 0x0c, 0x80, 0xa6, -0xd9, 0xcf, 0xa6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x55, 0x01, 0x22, 0x21, 0xb0, 0x77, 0x18, -0xea, 0x7b, 0xa9, 0xfc, 0x04, 0x66, 0xec, 0xc3, -0x40, 0x28, 0x6d, 0x8b, 0x7e, 0xf2, 0x5c, 0x92, -0x21, 0x80, 0x11, 0x2b, 0x4d, 0xc2, 0x42, 0x52, -0xdf, 0x9c, 0x78, 0x4b, 0xb9, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0xae, -0x50, 0xe7, 0x0b, 0x43, 0xb1, 0xe7, 0x81, 0x6b, -0x12, 0x06, 0xab, 0xef, 0x7b, 0x16, 0xfe, 0x73, -0xf5, 0xe2, 0x8e, 0x8c, 0x93, 0xfd, 0x0e, 0xe1, -0x44, 0x22, 0x92, 0x95, 0x7f, 0xa2, 0x32, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, -0x21, 0x20, 0xaa, 0xc4, 0x19, 0x99, 0x3a, 0xef, -0x37, 0xce, 0x3e, 0x01, 0x95, 0x68, 0x04, 0x2b, -0xcf, 0x17, 0x9b, 0xe2, 0x1d, 0xa1, 0x13, 0x2e, -0x5f, 0x3d, 0x29, 0xb9, 0xce, 0x39, 0xf7, 0xde, -0x9d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, -0x01, 0x22, 0x21, 0x74, 0x14, 0xa2, 0x10, 0x8a, -0x21, 0xdd, 0xe1, 0xa7, 0x5a, 0x87, 0x95, 0x49, -0x16, 0xf6, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x20, 0x37, 0x5c, 0xf5, -0x51, 0xb1, 0xc4, 0xc5, 0x03, 0x04, 0x51, 0x02, -0x00, 0x59, 0x01, 0x22, 0x21, 0x8d, 0x9d, 0x0d, -0xbf, 0x6c, 0x4f, 0x16, 0x55, 0x6c, 0xcb, 0x4f, -0xd2, 0x06, 0x32, 0xa9, 0xbc, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x99, -0x97, 0xae, 0x5c, 0x06, 0x64, 0x68, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x8a, -0x25, 0x3f, 0x83, 0x43, 0x13, 0xf3, 0x3e, 0xe4, -0x90, 0x9d, 0x5b, 0x16, 0x3c, 0x58, 0xf8, 0x92, -0x14, 0x3a, 0xba, 0x92, 0x71, 0xb0, 0xa4, 0xc2, -0xd4, 0x7b, 0x15, 0xef, 0xed, 0xb5, 0xea, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, -0x21, 0x61, 0xac, 0x23, 0x3e, 0x9f, 0xc2, 0xd6, -0x55, 0x37, 0x1d, 0x56, 0x00, 0xd5, 0x12, 0xfc, -0x39, 0x3a, 0xd7, 0xea, 0x8f, 0x23, 0x2a, 0xb7, -0x94, 0x31, 0x50, 0x4d, 0x6e, 0x4a, 0x91, 0x05, -0xe5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, -0x01, 0x22, 0x21, 0x68, 0x4a, 0x4b, 0xd0, 0x7a, -0x17, 0x76, 0xd5, 0xc9, 0x1f, 0x11, 0xe8, 0x74, -0x54, 0xf3, 0x79, 0xd3, 0xbb, 0x01, 0x45, 0x33, -0xe8, 0x0f, 0xa3, 0x43, 0xb7, 0x5d, 0xd6, 0x2d, -0x6b, 0x76, 0xf5, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x5d, 0x01, 0x22, 0x21, 0x88, 0x87, 0xc9, -0xe3, 0x14, 0x27, 0xff, 0x4c, 0x6c, 0x55, 0x72, -0xb2, 0x83, 0x30, 0xe1, 0xb4, 0x46, 0xc1, 0xd7, -0x8c, 0xfc, 0x6b, 0x7f, 0x7a, 0x21, 0x53, 0xf1, -0xe2, 0xe6, 0x88, 0x42, 0x30, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0x8e, -0xf4, 0x1f, 0xe3, 0x76, 0x05, 0xfa, 0xbb, 0xca, -0xcf, 0xa0, 0x64, 0x8e, 0x40, 0x4b, 0xd1, 0x56, -0x65, 0x65, 0xba, 0xe3, 0xba, 0x0a, 0xe5, 0xf9, -0x22, 0x30, 0x0b, 0xf6, 0x67, 0x67, 0x67, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, -0x21, 0x51, 0x89, 0xaa, 0xb4, 0xf7, 0x13, 0xcd, -0xf9, 0x52, 0x7e, 0x88, 0x42, 0xc5, 0xf2, 0xf8, -0xc9, 0xb1, 0xca, 0x4a, 0xb6, 0x66, 0x58, 0x08, -0x88, 0x4d, 0xe3, 0x4a, 0xd4, 0xef, 0x18, 0xcf, -0x19, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, -0x01, 0x22, 0x21, 0x3a, 0x82, 0xe6, 0x47, 0x23, -0x30, 0xd4, 0xb2, 0x88, 0xfa, 0x77, 0x95, 0xf2, -0x92, 0x15, 0x77, 0x03, 0x64, 0x38, 0xfb, 0x4a, -0xc7, 0xb6, 0xc0, 0x57, 0x42, 0x23, 0xca, 0x26, -0x9b, 0xb6, 0x3d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x61, 0x01, 0x22, 0x21, 0x4d, 0x6c, 0x9a, -0x66, 0x5a, 0x7b, 0xed, 0x11, 0xcd, 0x26, 0x04, -0x35, 0xa1, 0xfe, 0x62, 0x5c, 0x36, 0x2b, 0x33, -0x33, 0x29, 0x09, 0x2f, 0x1b, 0x97, 0xca, 0x29, -0x69, 0x1d, 0x1d, 0x25, 0xc9, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x7a, -0x23, 0x79, 0x19, 0x5e, 0x77, 0xba, 0x79, 0x21, -0x7b, 0x66, 0xfd, 0x14, 0x62, 0xff, 0xa4, 0x13, -0x7c, 0xd5, 0x1e, 0x7d, 0xe8, 0x4d, 0xfc, 0x9f, -0x8e, 0x7b, 0x20, 0x28, 0xf4, 0x2e, 0x4d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, -0x21, 0x39, 0xf9, 0x80, 0x55, 0xee, 0x37, 0xf5, -0xdf, 0xcf, 0xeb, 0x7f, 0x1e, 0xb2, 0x3b, 0x71, -0xc4, 0xea, 0x96, 0x03, 0x55, 0x2b, 0xd3, 0xab, -0x4e, 0x4d, 0x17, 0x5c, 0xae, 0x1b, 0x7f, 0x78, -0x7a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, -0x01, 0x22, 0x21, 0x02, 0xf5, 0xac, 0xbc, 0xfc, -0xc0, 0x01, 0x05, 0xf4, 0x50, 0x77, 0xe7, 0xf1, -0xc1, 0x45, 0x9c, 0xd0, 0x18, 0xd6, 0x31, 0x4a, -0x36, 0x72, 0x69, 0x15, 0x06, 0xbf, 0x1a, 0xcb, -0x0a, 0x5e, 0xd7, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x65, 0x01, 0x22, 0x21, 0xc8, 0x6e, 0xba, -0xc6, 0x67, 0x42, 0xec, 0xad, 0xce, 0x4d, 0x1b, -0x3f, 0xb2, 0x7a, 0xef, 0x90, 0x21, 0x5a, 0xd5, -0x88, 0xd5, 0x68, 0xbb, 0x12, 0xb9, 0xf3, 0x7c, -0xb4, 0x89, 0x4d, 0xbc, 0x56, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0xed, -0x49, 0xeb, 0x86, 0x6b, 0x7c, 0xfc, 0xc6, 0x4f, -0x69, 0x95, 0xa9, 0x80, 0xa5, 0x93, 0xac, 0x21, -0xa0, 0x8a, 0xb2, 0xc6, 0x3c, 0xf1, 0xd9, 0x99, -0xfb, 0x4d, 0x7d, 0x09, 0x31, 0x77, 0xf5, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, -0x21, 0xc4, 0x33, 0x52, 0xce, 0xb8, 0xd0, 0x30, -0x60, 0x7d, 0x1e, 0xc6, 0xe4, 0xbc, 0x43, 0xe4, -0x5d, 0x18, 0xf2, 0x95, 0xdc, 0x5b, 0x3c, 0x36, -0x85, 0x1e, 0x03, 0xc6, 0x65, 0x2a, 0x95, 0x35, -0x7b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, -0x01, 0x22, 0x21, 0x5e, 0xfa, 0x0a, 0xf2, 0x60, -0x2a, 0x75, 0xa1, 0x4b, 0x8a, 0xa2, 0xc9, 0x3d, -0xbe, 0xea, 0x79, 0x4e, 0xdd, 0x96, 0x32, 0x5c, -0x76, 0x89, 0x45, 0xa0, 0x4c, 0xf6, 0xaf, 0x56, -0x2d, 0xb2, 0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x69, 0x01, 0x22, 0x21, 0x03, 0x48, 0x56, -0x67, 0x58, 0x93, 0xf0, 0x3e, 0x23, 0x98, 0xda, -0x91, 0xbb, 0xbb, 0x4b, 0x06, 0xa1, 0xbf, 0x46, -0xbb, 0x83, 0x48, 0x8f, 0xd5, 0x1a, 0xb7, 0x45, -0xf6, 0x80, 0xa4, 0x67, 0xba, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x2c, -0x74, 0x36, 0xa9, 0xf2, 0x17, 0xc8, 0x56, 0x75, -0x48, 0xfd, 0x8d, 0x6d, 0xee, 0x5f, 0x40, 0x10, -0x98, 0x87, 0x64, 0x9d, 0x5a, 0xe2, 0xe1, 0x7a, -0x1f, 0xae, 0x00, 0x66, 0x0e, 0x22, 0x06, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, -0x21, 0x60, 0x40, 0xf2, 0x05, 0x82, 0xe2, 0x5a, -0xf6, 0xc6, 0xe9, 0x4d, 0xd9, 0xe4, 0x01, 0x95, -0xc3, 0x95, 0x69, 0xc7, 0xc4, 0x3f, 0x2e, 0xc8, -0x57, 0x96, 0x42, 0xde, 0x84, 0x55, 0x45, 0x65, -0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, -0x01, 0x22, 0x21, 0x91, 0x0a, 0x5c, 0x1c, 0x42, -0xec, 0x49, 0x64, 0x05, 0xdf, 0xa9, 0x31, 0x59, -0x36, 0xe8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xd7, 0xf4, 0x4d, 0x32, -0xbf, 0x8b, 0xa9, 0x68, 0x03, 0x04, 0x51, 0x02, -0x00, 0x6d, 0x01, 0x22, 0x21, 0x03, 0x4d, 0xf7, -0xf4, 0x86, 0x12, 0x63, 0xe9, 0x48, 0xa3, 0xd5, -0x81, 0x81, 0x5a, 0xec, 0x4c, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x75, -0xd4, 0x2d, 0x07, 0xd4, 0xec, 0x9b, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0x0c, -0x21, 0xec, 0x93, 0xa4, 0xf6, 0x14, 0xf5, 0xd2, -0x0f, 0xb6, 0xb8, 0x6d, 0x73, 0xb1, 0x0e, 0xbb, -0x6a, 0x6b, 0x73, 0x81, 0x9a, 0xe1, 0xe9, 0x5b, -0x77, 0xb6, 0xbf, 0x9a, 0x9e, 0x13, 0xbd, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, -0x21, 0xa0, 0x7b, 0xbf, 0x53, 0x11, 0x4a, 0x31, -0xaa, 0xe8, 0x95, 0xac, 0x5e, 0x42, 0xe2, 0x8e, -0xef, 0x49, 0xdb, 0x02, 0xe7, 0x42, 0xf7, 0x84, -0xd6, 0x18, 0x78, 0x07, 0xf9, 0x27, 0x79, 0xd0, -0xb2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, -0x01, 0x22, 0x21, 0xe4, 0x25, 0x60, 0x8d, 0xaf, -0x1b, 0x21, 0x27, 0x8e, 0xf4, 0x52, 0xec, 0x9a, -0x36, 0xa9, 0xf1, 0xd5, 0x04, 0x94, 0x83, 0xf0, -0x7d, 0x7b, 0xf3, 0x30, 0x3a, 0x8c, 0x1a, 0xbb, -0xa3, 0x33, 0x7f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x71, 0x01, 0x22, 0x21, 0x9d, 0x17, 0x47, -0xd9, 0x77, 0x1f, 0x4d, 0x6d, 0x46, 0xbb, 0x9d, -0x63, 0x2b, 0xfc, 0xc9, 0x41, 0x42, 0x4a, 0x97, -0x05, 0x94, 0x8a, 0x06, 0x65, 0x88, 0x4a, 0x18, -0xe6, 0xad, 0xef, 0x76, 0x81, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0x46, -0x29, 0x62, 0x03, 0x0a, 0x08, 0xc0, 0xe5, 0x18, -0xed, 0xa8, 0x24, 0xd0, 0xae, 0x52, 0x29, 0x2a, -0x7c, 0xc3, 0xee, 0x43, 0x39, 0xfa, 0x07, 0x4e, -0x5f, 0xf6, 0x7a, 0x5f, 0x81, 0xc0, 0x3f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, -0x21, 0x95, 0x94, 0xa1, 0xf4, 0xa6, 0xde, 0x04, -0xe5, 0x9e, 0x47, 0x09, 0x69, 0x36, 0x8e, 0x73, -0x5f, 0xfd, 0x2d, 0xc9, 0xc1, 0xaf, 0xf9, 0xe4, -0x1a, 0x43, 0x58, 0xff, 0x16, 0xa4, 0x81, 0x0c, -0x46, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, -0x01, 0x22, 0x21, 0xde, 0xc0, 0xf4, 0x72, 0xda, -0xc3, 0x22, 0xfa, 0x20, 0x9b, 0xef, 0xf2, 0x57, -0xfe, 0x8b, 0x1d, 0x72, 0x4a, 0x12, 0x1c, 0x0c, -0xad, 0xe5, 0x07, 0xda, 0x96, 0x0f, 0xce, 0x73, -0x67, 0xbb, 0x91, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x75, 0x01, 0x22, 0x21, 0x7b, 0x82, 0xa3, -0xf1, 0x55, 0x73, 0xff, 0xe9, 0x21, 0x16, 0x2a, -0x26, 0x4f, 0x82, 0xbf, 0xce, 0x34, 0x04, 0x3d, -0xae, 0x2f, 0x5c, 0x21, 0x67, 0x3d, 0xf7, 0xb0, -0x79, 0x96, 0x50, 0x53, 0xce, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0xfd, -0x79, 0x89, 0xb5, 0x07, 0x58, 0x06, 0x2a, 0x31, -0xe2, 0xd0, 0xc3, 0x53, 0xb6, 0x17, 0x6a, 0x54, -0x3e, 0xe9, 0xc8, 0xf8, 0xf2, 0x6e, 0x7e, 0x34, -0xf9, 0x08, 0x4c, 0xac, 0x68, 0x04, 0x89, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, -0x21, 0x2c, 0x66, 0x46, 0xff, 0x77, 0xc0, 0x83, -0x88, 0xe4, 0xd0, 0xba, 0xd5, 0x55, 0x82, 0x48, -0x8a, 0x34, 0x0d, 0x46, 0x09, 0x0e, 0x2c, 0xc1, -0x0a, 0xdd, 0xe4, 0x38, 0x49, 0x0c, 0x7e, 0xc0, -0x9d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, -0x01, 0x22, 0x21, 0xe1, 0xe8, 0xe6, 0x00, 0x7b, -0x74, 0xf4, 0x4f, 0x08, 0xdd, 0x30, 0xfa, 0x60, -0x9c, 0x37, 0xb2, 0xf7, 0x4b, 0x34, 0x0f, 0xb1, -0xaf, 0x09, 0x85, 0x57, 0x13, 0x20, 0xeb, 0x70, -0x96, 0xaa, 0x61, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x79, 0x01, 0x22, 0x21, 0x31, 0x18, 0x4c, -0xc1, 0xb9, 0x82, 0xa4, 0x4e, 0xd0, 0xc8, 0xf9, -0x82, 0x55, 0xb3, 0xf7, 0xe6, 0x54, 0x0e, 0x50, -0xd9, 0x2e, 0x62, 0x42, 0x3f, 0x7e, 0xa1, 0xb4, -0xa6, 0x38, 0xd9, 0x8b, 0xa8, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0x56, -0x5c, 0x68, 0x31, 0xa0, 0x26, 0x07, 0xf2, 0xc4, -0x32, 0x21, 0x96, 0x23, 0xf0, 0x86, 0x8c, 0x64, -0xc2, 0xf2, 0x5b, 0xca, 0x69, 0x05, 0x64, 0x54, -0xd8, 0x97, 0x1c, 0xda, 0x77, 0xd4, 0x77, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, -0x21, 0x9f, 0x69, 0x28, 0x5d, 0x52, 0xdd, 0x84, -0x25, 0xb8, 0x09, 0x6e, 0xac, 0xaa, 0x2c, 0x24, -0xfa, 0x70, 0xc6, 0x32, 0x5e, 0xa9, 0x99, 0xb2, -0x2a, 0x28, 0x3c, 0x97, 0xf6, 0x82, 0x70, 0x3a, -0x91, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, -0x01, 0x22, 0x21, 0x4a, 0x85, 0xc5, 0xd0, 0xf6, -0x8c, 0x33, 0x88, 0x36, 0x19, 0xc2, 0x07, 0xfd, -0xd3, 0xcb, 0x13, 0x91, 0xdb, 0x2a, 0x29, 0x47, -0x80, 0xc8, 0x72, 0x93, 0xa7, 0x6b, 0x13, 0x7f, -0xc7, 0x33, 0xd1, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x7d, 0x01, 0x22, 0x21, 0xef, 0xdf, 0x29, -0xa4, 0x6b, 0xba, 0x14, 0x6b, 0x97, 0xcd, 0xc3, -0x9c, 0x8b, 0xf0, 0x33, 0xd0, 0x35, 0x1d, 0x7e, -0xba, 0x03, 0xe9, 0x26, 0xb5, 0x73, 0x78, 0x4c, -0x82, 0x36, 0x80, 0x23, 0x6b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0xf4, -0xdb, 0x2c, 0x60, 0xdb, 0xa9, 0x89, 0x24, 0x91, -0xa4, 0x66, 0x26, 0x7a, 0xdd, 0x32, 0xfa, 0x30, -0xcc, 0x09, 0x42, 0xa0, 0x58, 0xe7, 0x97, 0x03, -0x72, 0x5e, 0x97, 0x95, 0x44, 0xf7, 0x2d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, -0x21, 0x02, 0x10, 0x86, 0x41, 0xca, 0x14, 0xad, -0x5a, 0xb6, 0xf4, 0x1a, 0x96, 0xa8, 0xd1, 0x4f, -0xd9, 0xf4, 0xb3, 0xf6, 0xd3, 0x34, 0x39, 0x3a, -0x4f, 0xfb, 0xf8, 0x66, 0xd6, 0x8f, 0xdf, 0xb6, -0x4e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, -0x01, 0x22, 0x21, 0x6f, 0x20, 0xa1, 0x34, 0x53, -0x33, 0xfc, 0x63, 0x52, 0x9e, 0xcf, 0x87, 0xd7, -0x62, 0x62, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x61, 0xd9, 0xb0, 0xc8, -0xce, 0x45, 0x5d, 0xc3, 0x03, 0x04, 0x51, 0x02, -0x00, 0x81, 0x01, 0x22, 0x21, 0x32, 0x75, 0x8c, -0x7b, 0x25, 0xd2, 0x65, 0x71, 0x8a, 0x59, 0xe8, -0x07, 0xe3, 0x43, 0xaa, 0xb4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xd1, -0x21, 0xaf, 0x9e, 0x1f, 0x33, 0x7e, 0x03, 0x04, -0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0xc4, -0x8a, 0x23, 0x38, 0x96, 0xc2, 0x5e, 0x67, 0xf5, -0xa0, 0xfe, 0xbe, 0x39, 0xde, 0x8c, 0x34, 0xba, -0xeb, 0x04, 0x6f, 0xb4, 0x9c, 0xcb, 0x66, 0x36, -0x6f, 0x3a, 0x4d, 0x6b, 0x98, 0x64, 0xed, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, -0x21, 0x31, 0x7b, 0x2b, 0x54, 0xdf, 0x1f, 0x7b, -0x00, 0xac, 0x95, 0x8b, 0x58, 0xd2, 0xd1, 0xd8, -0xfe, 0xff, 0x2f, 0x7d, 0x38, 0x14, 0xc5, 0xed, -0x07, 0x18, 0x55, 0x61, 0xd9, 0x2c, 0xd4, 0xdd, -0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, -0x01, 0x22, 0x21, 0xe7, 0xb8, 0x83, 0x8a, 0x79, -0x1f, 0x49, 0x03, 0xf7, 0x86, 0x19, 0x4e, 0x27, -0x94, 0x41, 0xce, 0xfc, 0x5a, 0x2d, 0x39, 0x45, -0x98, 0x9a, 0x16, 0xa5, 0x18, 0xff, 0x80, 0x12, -0xf6, 0x5f, 0x32, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x85, 0x01, 0x22, 0x21, 0x35, 0x1a, 0xcb, -0xbd, 0xc6, 0xb2, 0x02, 0x2c, 0xef, 0x64, 0xb5, -0x47, 0x93, 0x28, 0x4f, 0x7c, 0x83, 0x0d, 0xee, -0x4b, 0x87, 0xe1, 0x75, 0x08, 0x91, 0x1e, 0x32, -0x60, 0xb0, 0xc7, 0x4a, 0x0c, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0x3c, -0x65, 0x1d, 0x89, 0x67, 0x17, 0xe4, 0x2c, 0xa6, -0xb6, 0x45, 0xe3, 0x93, 0xe1, 0xe7, 0x53, 0x6c, -0x25, 0xe3, 0x2d, 0x2d, 0x3e, 0xae, 0xc3, 0x18, -0xd3, 0x21, 0xa8, 0x0c, 0xff, 0xfd, 0x59, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, -0x21, 0x4d, 0xd0, 0x3c, 0x52, 0x49, 0x7d, 0x0a, -0x03, 0x9b, 0xae, 0xc0, 0x97, 0x4d, 0x14, 0xb8, -0x72, 0xf5, 0xf5, 0x60, 0x10, 0x5f, 0x88, 0x05, -0xb0, 0x22, 0xf8, 0x6d, 0xd1, 0x95, 0x2e, 0x3e, -0x46, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, -0x01, 0x22, 0x21, 0x68, 0xd0, 0x94, 0xe0, 0x11, -0xa8, 0xca, 0xc7, 0xa7, 0x0e, 0xb0, 0x77, 0xbc, -0x07, 0x52, 0x42, 0x84, 0x6d, 0x9a, 0x60, 0xe7, -0xe4, 0x9d, 0xea, 0x70, 0x64, 0xa5, 0xef, 0xe1, -0x71, 0xc8, 0xeb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x89, 0x01, 0x22, 0x21, 0x51, 0xfc, 0xd5, -0x80, 0x56, 0xa9, 0xa6, 0x18, 0xd7, 0xda, 0xa9, -0x49, 0xab, 0x79, 0x29, 0xf5, 0x18, 0x27, 0xdb, -0x4e, 0xa4, 0x58, 0x01, 0xce, 0xea, 0xd6, 0x6e, -0x4d, 0x52, 0xee, 0x37, 0x19, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0xf9, -0x56, 0x3c, 0xb6, 0x05, 0x57, 0x98, 0x68, 0xad, -0xaa, 0xf8, 0x8a, 0xba, 0x73, 0xd4, 0x8a, 0x15, -0x37, 0x9e, 0x65, 0xfc, 0x84, 0x7b, 0xf1, 0x81, -0xdf, 0xf0, 0x6f, 0x1d, 0x4e, 0xf8, 0xed, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, -0x21, 0xb6, 0x56, 0xa6, 0xc5, 0x8d, 0x68, 0xc7, -0x92, 0xc8, 0xdf, 0x0d, 0xc3, 0x68, 0xed, 0xa0, -0xe6, 0xb9, 0x20, 0x4e, 0xc9, 0xe6, 0x17, 0x67, -0x70, 0x79, 0x90, 0x5d, 0xd8, 0x8b, 0x6c, 0xc7, -0x3c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, -0x01, 0x22, 0x21, 0x1c, 0x11, 0x35, 0xcf, 0x3b, -0x55, 0x02, 0x53, 0x61, 0x32, 0x29, 0xc6, 0xe9, -0x0d, 0xd3, 0x0f, 0x7d, 0x66, 0x2a, 0xb5, 0x55, -0xad, 0x1d, 0x1f, 0x59, 0xc4, 0x06, 0x38, 0x2f, -0xd2, 0x87, 0xec, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x8d, 0x01, 0x22, 0x21, 0xc8, 0x93, 0xe7, -0xc4, 0xac, 0xb1, 0x08, 0xaa, 0x17, 0xc4, 0x37, -0x9e, 0x88, 0x3f, 0x22, 0x62, 0xcf, 0x1b, 0xcc, -0x37, 0xb4, 0xd5, 0xf4, 0x45, 0x40, 0x77, 0x27, -0xa3, 0x3a, 0xd8, 0x05, 0xb8, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x4e, -0x3f, 0x3e, 0x67, 0x3a, 0xe6, 0xdd, 0x97, 0x2e, -0xf0, 0xf3, 0xe3, 0xa0, 0x19, 0x2a, 0xb4, 0x4e, -0xed, 0x03, 0x47, 0xd0, 0xa7, 0xf8, 0x67, 0x31, -0xdd, 0x4d, 0x7f, 0x7f, 0xa8, 0x29, 0x48, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, -0x21, 0xbf, 0x3a, 0xa6, 0x25, 0x05, 0x22, 0xbf, -0xe1, 0x06, 0x1a, 0x18, 0xc3, 0x82, 0x60, 0x62, -0x14, 0xe3, 0x75, 0x40, 0xed, 0xb5, 0x4f, 0x1c, -0xfc, 0xc9, 0x78, 0x02, 0x30, 0x33, 0x18, 0x2c, -0xef, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, -0x01, 0x22, 0x21, 0x58, 0x9c, 0xb2, 0x92, 0xc0, -0xa9, 0x60, 0x25, 0xec, 0x7a, 0xf3, 0xe2, 0x1a, -0x35, 0xfc, 0x1c, 0xf4, 0x94, 0x4e, 0x92, 0xc7, -0x64, 0xa8, 0xc4, 0x69, 0x78, 0xf0, 0xc9, 0x83, -0x80, 0xb7, 0x6f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x91, 0x01, 0x22, 0x21, 0x46, 0x15, 0x06, -0x78, 0x91, 0x85, 0x70, 0x31, 0x76, 0xe8, 0x22, -0x52, 0x4a, 0xa5, 0x85, 0x36, 0x77, 0x2d, 0x19, -0xed, 0x96, 0x6f, 0x4e, 0xd3, 0x0a, 0xf0, 0x52, -0x94, 0xaa, 0x98, 0xc6, 0x2a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x2f, -0x58, 0xf4, 0x3f, 0x13, 0xf2, 0x06, 0xa4, 0x4d, -0x2e, 0xfd, 0x47, 0x1f, 0x77, 0xb8, 0x83, 0xa3, -0xc5, 0x1b, 0xd9, 0xde, 0x3f, 0xbe, 0xff, 0x34, -0x36, 0x4f, 0x0d, 0xe9, 0xf5, 0xaa, 0xf0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, -0x21, 0x94, 0x76, 0x38, 0xe4, 0xbf, 0xfc, 0x88, -0xce, 0x8c, 0x7b, 0x72, 0xee, 0xf2, 0x5a, 0xe7, -0xae, 0x1e, 0x7e, 0xcf, 0x60, 0x51, 0x00, 0xb9, -0xbc, 0xfd, 0xb8, 0x51, 0xc3, 0xc4, 0x72, 0x39, -0x4a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, -0x01, 0x22, 0x21, 0xd9, 0x2d, 0xce, 0x9b, 0xbc, -0x48, 0x92, 0xdb, 0x78, 0x2a, 0x95, 0x87, 0xf9, -0x84, 0xe7, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xda, 0x5f, 0x8b, 0x71, -0xf2, 0x16, 0xdf, 0x06, 0x03, 0x04, 0x51, 0x02, -0x00, 0x95, 0x01, 0x22, 0x21, 0x19, 0x3d, 0x43, -0x7e, 0xe7, 0x7d, 0x47, 0xed, 0x54, 0xc8, 0x38, -0xf0, 0xf7, 0x0f, 0x3c, 0x8c, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x48, -0xeb, 0xc0, 0x11, 0x1b, 0x21, 0x2c, 0x03, 0x04, -0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0x50, -0xeb, 0x47, 0xde, 0xa2, 0xec, 0xca, 0x7e, 0xb1, -0x0d, 0x75, 0x4b, 0x0e, 0x22, 0x49, 0xda, 0xb9, -0x19, 0xa5, 0x15, 0x38, 0x8b, 0xd3, 0x65, 0xe6, -0x9a, 0x69, 0xe0, 0xe1, 0xa6, 0x47, 0x11, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, -0x21, 0x15, 0xd0, 0x87, 0xce, 0x69, 0x65, 0xcd, -0xc6, 0x63, 0x50, 0x99, 0x48, 0x70, 0x57, 0x4a, -0x7f, 0x67, 0xea, 0xa2, 0xde, 0x37, 0x9b, 0x73, -0xaa, 0x32, 0x1a, 0xf4, 0xc7, 0xc1, 0xac, 0xe8, -0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, -0x01, 0x22, 0x21, 0xa5, 0x27, 0xaa, 0x25, 0x89, -0x5c, 0xb7, 0xe9, 0xa4, 0xd7, 0x1b, 0x71, 0x53, -0x2e, 0xbb, 0x4b, 0x7b, 0xaf, 0x99, 0x53, 0xb9, -0x7f, 0xa5, 0xec, 0x8a, 0xea, 0x6f, 0x1a, 0x73, -0x34, 0x68, 0x0f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x99, 0x01, 0x22, 0x21, 0x5c, 0x2f, 0x25, -0x76, 0x3c, 0xdd, 0xf0, 0xe3, 0xf1, 0x61, 0x9e, -0xfd, 0x5d, 0x81, 0xcc, 0x0c, 0x6e, 0x20, 0x85, -0xd9, 0x3f, 0xf0, 0x0c, 0x4e, 0xdc, 0x76, 0x16, -0xfd, 0xe8, 0x56, 0xca, 0x75, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0x00, -0xa9, 0x74, 0xf3, 0x58, 0x31, 0xd3, 0x95, 0xf5, -0x8a, 0x99, 0xc6, 0x71, 0xd6, 0xf5, 0x07, 0x1c, -0xe1, 0x07, 0xad, 0x0e, 0xe3, 0x12, 0x4d, 0x78, -0x1d, 0x91, 0x56, 0xae, 0x21, 0x21, 0xc9, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, -0x21, 0x7c, 0xcb, 0x6f, 0x40, 0x61, 0xc5, 0xe1, -0x08, 0x08, 0x08, 0x3d, 0xf8, 0x2c, 0x7e, 0xcd, -0x10, 0x3c, 0x1c, 0xd5, 0x40, 0x61, 0xeb, 0xf5, -0xe3, 0xba, 0xe4, 0xa7, 0x6e, 0x9f, 0x55, 0xcf, -0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, -0x01, 0x22, 0x21, 0x29, 0x20, 0xef, 0x62, 0x43, -0x08, 0x92, 0x76, 0x9a, 0x63, 0x67, 0x1f, 0x9e, -0x82, 0x07, 0x75, 0xf6, 0x8d, 0x72, 0x8e, 0xe1, -0xac, 0xf1, 0xec, 0xa1, 0x09, 0x16, 0xea, 0x4e, -0x93, 0xfc, 0xe7, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x9d, 0x01, 0x22, 0x21, 0x7f, 0x36, 0x94, -0x4e, 0xb1, 0xc4, 0xcb, 0xdd, 0x42, 0x26, 0x9c, -0x43, 0x39, 0x89, 0x64, 0x78, 0x88, 0x28, 0x63, -0x07, 0x34, 0x10, 0x9a, 0x2f, 0x1c, 0x84, 0x7d, -0xd2, 0x45, 0x8c, 0x54, 0x90, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0x7f, -0x8d, 0xd2, 0x83, 0x82, 0x11, 0xd5, 0x66, 0x2f, -0x71, 0xdf, 0x89, 0x13, 0x93, 0x37, 0xb1, 0xa8, -0x8d, 0xb3, 0xd8, 0x5c, 0xc9, 0xe6, 0x02, 0x2a, -0xd8, 0xd3, 0x57, 0xcb, 0xe4, 0xf5, 0x71, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, -0x21, 0x2b, 0xcb, 0xd9, 0xbf, 0x7b, 0x1a, 0x63, -0x6e, 0xe4, 0x66, 0x4b, 0x92, 0x75, 0x4e, 0xfd, -0x2a, 0xae, 0x17, 0xbf, 0xe1, 0x31, 0x98, 0x67, -0x11, 0xc8, 0x46, 0x26, 0xbe, 0x40, 0x3e, 0x51, -0xbf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, -0x01, 0x22, 0x21, 0x93, 0x6a, 0x99, 0x91, 0x91, -0x99, 0x2a, 0x3e, 0xac, 0x48, 0xdf, 0x5a, 0x4d, -0xe1, 0xaf, 0xeb, 0xe6, 0xc0, 0xf4, 0x0a, 0x19, -0xdf, 0x78, 0x9c, 0x1e, 0x6c, 0xa7, 0x43, 0x21, -0x68, 0x2b, 0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa1, 0x01, 0x22, 0x21, 0xb5, 0xaf, 0x33, -0x8c, 0x95, 0x64, 0xee, 0x01, 0xbf, 0x21, 0x3e, -0xf9, 0xa6, 0xe8, 0x44, 0x7d, 0x18, 0xee, 0x74, -0xab, 0xbe, 0xba, 0x5d, 0xae, 0xb7, 0xdf, 0x51, -0xce, 0x1b, 0x4c, 0x39, 0xab, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0xcc, -0x97, 0x90, 0x6a, 0x25, 0xb3, 0x8f, 0xed, 0xe9, -0x31, 0x41, 0x4a, 0x23, 0xe5, 0xfe, 0x64, 0xf4, -0x41, 0xb0, 0x37, 0x41, 0xec, 0x43, 0x39, 0x3d, -0xb1, 0xfe, 0xa1, 0xad, 0x0f, 0x39, 0x4f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, -0x21, 0x59, 0x8c, 0xbe, 0x92, 0x5c, 0x97, 0x74, -0x03, 0xc6, 0x24, 0x68, 0x4a, 0xc6, 0x83, 0xc6, -0x2c, 0xb8, 0x6f, 0xa6, 0x03, 0xd6, 0xbc, 0xb0, -0x94, 0x20, 0x4e, 0xff, 0x54, 0xac, 0xf9, 0x7f, -0x78, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, -0x01, 0x22, 0x21, 0x3c, 0xa8, 0x99, 0xe4, 0x2f, -0x13, 0x3f, 0x00, 0xc8, 0x1c, 0xf3, 0xe2, 0x2f, -0x84, 0x59, 0xbb, 0xc5, 0xf5, 0x57, 0x66, 0x1b, -0x6c, 0x6d, 0x8a, 0x4e, 0x11, 0x8b, 0x12, 0xb7, -0x4c, 0x1e, 0x44, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa5, 0x01, 0x22, 0x21, 0xa6, 0xec, 0x2f, -0x68, 0x10, 0x6a, 0x19, 0x1d, 0x79, 0xa9, 0xad, -0x13, 0x76, 0xd2, 0x59, 0x9f, 0xaf, 0x57, 0x9f, -0x4e, 0xa8, 0x25, 0x33, 0x94, 0xc5, 0x1e, 0xf9, -0x52, 0x4f, 0x91, 0x44, 0xfe, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0xf6, -0x60, 0x6d, 0xc8, 0x21, 0x2a, 0x41, 0xb2, 0xbd, -0x38, 0x7b, 0x8f, 0xa5, 0x74, 0xfe, 0x76, 0xb6, -0xf2, 0x53, 0xcd, 0x19, 0x1d, 0xfc, 0x48, 0x54, -0x4e, 0x62, 0x50, 0x4c, 0xa3, 0x1c, 0x3b, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, -0x21, 0xb8, 0xd5, 0xa8, 0x9f, 0xf6, 0x99, 0xe3, -0x3d, 0x0d, 0xcc, 0xac, 0x4c, 0x25, 0x5b, 0x64, -0x86, 0x08, 0x2e, 0x78, 0xed, 0xbf, 0x75, 0xdd, -0x41, 0x88, 0xff, 0xb7, 0x9b, 0xb2, 0xec, 0x56, -0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, -0x01, 0x22, 0x21, 0x7a, 0xa3, 0x5f, 0x40, 0xb3, -0xf5, 0x19, 0x81, 0xf2, 0xa0, 0x65, 0xef, 0x86, -0x4b, 0x9d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x53, 0xf6, 0x6c, 0x5a, -0x2a, 0xe3, 0xbe, 0x22, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa9, 0x01, 0x22, 0x21, 0x25, 0x22, 0x2e, -0x66, 0xc4, 0x36, 0x27, 0xda, 0x14, 0x13, 0xf8, -0xe5, 0x05, 0xd2, 0xa5, 0x99, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x7a, -0xee, 0xd3, 0xa1, 0x94, 0xe8, 0x78, 0x03, 0x04, -0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0x4b, -0x5e, 0x66, 0xbc, 0x58, 0xe5, 0xe3, 0x06, 0x75, -0x34, 0x36, 0x35, 0x20, 0xae, 0x09, 0xee, 0x3d, -0x05, 0xc3, 0x66, 0x96, 0xbf, 0x76, 0x4f, 0x90, -0xc0, 0x0a, 0x2a, 0x4d, 0x7a, 0xde, 0x1c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, -0x21, 0xd9, 0x91, 0x3f, 0x92, 0xe2, 0xf2, 0xe1, -0xd0, 0xf8, 0xd6, 0xd0, 0x29, 0x9c, 0x62, 0x8a, -0x9a, 0x57, 0x3a, 0x49, 0x66, 0x86, 0xc1, 0xd8, -0x81, 0x92, 0x57, 0x1b, 0x6f, 0x26, 0x83, 0x4a, -0x1e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, -0x01, 0x22, 0x21, 0xf7, 0x13, 0xbd, 0x69, 0x17, -0x44, 0xfa, 0x72, 0x1e, 0x55, 0xcb, 0x61, 0xac, -0x11, 0x45, 0xe5, 0x7c, 0xe5, 0x30, 0xbe, 0x32, -0x1f, 0x84, 0xa0, 0x37, 0x8e, 0xf2, 0xd3, 0xbc, -0xa7, 0xb9, 0x1b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xad, 0x01, 0x22, 0x21, 0x3e, 0x1c, 0x81, -0xcf, 0x0d, 0xbd, 0xe7, 0x56, 0xb3, 0xb9, 0x3a, -0x61, 0x0c, 0x2b, 0xfd, 0x08, 0x18, 0xd5, 0xfa, -0x31, 0xd6, 0xe7, 0xc8, 0x11, 0xa9, 0x25, 0x4b, -0xe0, 0x97, 0x93, 0xef, 0x9d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0x12, -0xde, 0x3a, 0xe5, 0xf9, 0x21, 0xd3, 0x92, 0x6a, -0xbc, 0x77, 0x70, 0xe5, 0x8a, 0x22, 0x80, 0xf7, -0x7c, 0x0b, 0x77, 0xbb, 0x6b, 0x96, 0x94, 0xc7, -0xa6, 0xc3, 0x50, 0xe0, 0x3d, 0x0e, 0x06, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, -0x21, 0xc7, 0xcb, 0xd3, 0x98, 0x33, 0xe1, 0x3d, -0x50, 0xaf, 0x43, 0xf5, 0x4f, 0xa4, 0x8d, 0xe1, -0x59, 0xe8, 0xe0, 0x8a, 0x66, 0xcf, 0x43, 0xbc, -0xf2, 0xa1, 0xde, 0xda, 0x78, 0x82, 0xbc, 0x90, -0x71, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, -0x01, 0x22, 0x21, 0x23, 0x67, 0x7e, 0xb3, 0x91, -0x36, 0x29, 0xc9, 0xb0, 0x32, 0x36, 0x7c, 0x3e, -0xa0, 0x23, 0xa5, 0xed, 0x44, 0xdd, 0x59, 0x69, -0xc0, 0x95, 0xbb, 0x08, 0x3e, 0x6e, 0x16, 0xb5, -0x59, 0xf8, 0x2d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb1, 0x01, 0x22, 0x21, 0x54, 0x8b, 0x4b, -0x4f, 0x05, 0xaa, 0xe0, 0x32, 0xd0, 0x75, 0x1f, -0xe8, 0x23, 0x8c, 0xd0, 0xe9, 0xda, 0xad, 0x54, -0x0e, 0xb2, 0xff, 0x59, 0xa6, 0xff, 0x9c, 0x16, -0xcf, 0xc0, 0xff, 0x35, 0x7f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0x29, -0xf5, 0xd8, 0x36, 0x78, 0x38, 0x7e, 0xfe, 0xe3, -0x62, 0x60, 0x3f, 0xba, 0x5c, 0x60, 0x22, 0x10, -0x19, 0x76, 0xa5, 0xf6, 0x71, 0xe3, 0xb6, 0x1f, -0x6f, 0x37, 0xf6, 0xf5, 0xdc, 0xe3, 0x43, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, -0x21, 0xb3, 0x9f, 0xd2, 0xc0, 0x6f, 0xd8, 0x18, -0xd7, 0xce, 0xeb, 0x04, 0x4f, 0x7c, 0x83, 0x43, -0xb6, 0xbf, 0x34, 0x44, 0xca, 0x58, 0x85, 0x72, -0x7b, 0xa3, 0xad, 0xa4, 0x4a, 0x82, 0x53, 0xec, -0x73, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, -0x01, 0x22, 0x21, 0xbf, 0x67, 0xab, 0x35, 0xb0, -0xf3, 0x6b, 0xc5, 0xea, 0x9f, 0xff, 0xce, 0xa4, -0x4a, 0x70, 0xcb, 0x0f, 0x01, 0xa3, 0x3e, 0xc4, -0xf3, 0x69, 0xd1, 0x29, 0xae, 0xba, 0x91, 0xb5, -0x3e, 0x20, 0xfa, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb5, 0x01, 0x22, 0x21, 0xd4, 0x1f, 0xee, -0x5d, 0x0f, 0x23, 0xd3, 0xf8, 0x58, 0xbe, 0xdf, -0xe2, 0x54, 0xa0, 0xc9, 0x1d, 0x0d, 0xac, 0xd1, -0xfa, 0x69, 0x50, 0x57, 0xea, 0x46, 0xb6, 0x9b, -0x40, 0x25, 0x27, 0xff, 0xed, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0x14, -0x17, 0xd7, 0xc5, 0x15, 0x58, 0x30, 0x9c, 0xdf, -0x67, 0xc9, 0x2d, 0x9b, 0x77, 0x1e, 0x54, 0x14, -0xe9, 0xe1, 0x09, 0xe4, 0x93, 0x67, 0xd5, 0x9b, -0xab, 0x57, 0x28, 0xe1, 0x83, 0xbf, 0x90, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, -0x21, 0x3f, 0x49, 0xc1, 0x02, 0x0b, 0x68, 0x39, -0x0a, 0x01, 0xac, 0xe3, 0x37, 0x1a, 0x7c, 0xdc, -0x19, 0xde, 0x65, 0x96, 0x42, 0x95, 0xc4, 0xa5, -0x3a, 0x8d, 0x21, 0x15, 0x5a, 0x7c, 0x08, 0x64, -0x55, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, -0x01, 0x22, 0x21, 0xb0, 0x06, 0x60, 0x0a, 0xc8, -0x88, 0x77, 0x44, 0x92, 0xc1, 0xe5, 0x93, 0x6f, -0x08, 0x20, 0x3f, 0xde, 0xa0, 0x32, 0xba, 0xec, -0x41, 0xb3, 0x28, 0x3b, 0x56, 0x73, 0xbd, 0xd4, -0xe9, 0x5f, 0x4b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb9, 0x01, 0x22, 0x21, 0xf6, 0x67, 0x8a, -0xaf, 0xe7, 0xbb, 0x01, 0x83, 0xca, 0xbe, 0xde, -0x6d, 0x37, 0x91, 0xcd, 0x80, 0x54, 0x4f, 0x0c, -0x5b, 0xc9, 0x4f, 0xa9, 0xe3, 0x37, 0x5a, 0x20, -0xbb, 0xbe, 0x76, 0xc4, 0xe5, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0xb7, -0xe9, 0x2d, 0x51, 0xa4, 0x38, 0xa1, 0xfe, 0xcb, -0x82, 0x2c, 0x03, 0xb9, 0xd5, 0xad, 0x04, 0x86, -0xf5, 0x7b, 0x62, 0x8e, 0x0e, 0x37, 0x55, 0xba, -0x45, 0x5a, 0x4b, 0x81, 0x13, 0x42, 0xaf, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, -0x21, 0x6c, 0xa3, 0x06, 0xe8, 0xfa, 0xb4, 0xf3, -0x27, 0x9f, 0xaf, 0xe9, 0x2c, 0xd9, 0xb3, 0x16, -0x56, 0x8b, 0x92, 0x45, 0x26, 0xf2, 0xb5, 0x3c, -0x80, 0x14, 0x37, 0xc3, 0x78, 0xa0, 0x9d, 0x04, -0xe9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, -0x01, 0x22, 0x21, 0x7b, 0xc3, 0x8a, 0x58, 0x50, -0x81, 0x01, 0xe0, 0x30, 0x8f, 0x9b, 0x23, 0xb7, -0x66, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x4e, 0x56, 0x58, 0x80, -0xb4, 0x9d, 0x92, 0xaf, 0x03, 0x04, 0x51, 0x02, -0x00, 0xbd, 0x01, 0x22, 0x21, 0x6d, 0xd5, 0x80, -0x78, 0x4a, 0xa0, 0x82, 0x36, 0x41, 0x28, 0x81, -0x9f, 0x83, 0xf8, 0x8b, 0x70, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x8c, -0x61, 0x6c, 0x08, 0xd0, 0x26, 0x12, 0x03, 0x04, -0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0x14, -0x42, 0xf6, 0xab, 0x0b, 0x4e, 0x4e, 0x72, 0xba, -0x08, 0xac, 0x1a, 0x14, 0x96, 0xf9, 0x0f, 0x03, -0x30, 0x3a, 0x0e, 0xf4, 0xc5, 0xea, 0x29, 0xbe, -0x76, 0x3a, 0xb3, 0xf5, 0xa7, 0x89, 0xf1, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, -0x21, 0x6a, 0x72, 0xd7, 0x7b, 0xa0, 0x02, 0x41, -0x07, 0x5d, 0x05, 0xb6, 0x9d, 0xb1, 0x6c, 0x95, -0xdc, 0x1a, 0x90, 0x33, 0x81, 0xf0, 0x81, 0xf6, -0x6e, 0xff, 0x95, 0x7c, 0xc7, 0x8c, 0x2d, 0x15, -0x97, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, -0x01, 0x22, 0x21, 0x96, 0x07, 0x03, 0x4a, 0x37, -0x63, 0x61, 0x4b, 0x26, 0xdb, 0xfe, 0xb2, 0xa1, -0xd9, 0xa6, 0xe1, 0x17, 0x85, 0x48, 0xdd, 0x4e, -0xfa, 0x66, 0xff, 0xc6, 0x38, 0x09, 0xfd, 0x02, -0x80, 0xda, 0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc1, 0x01, 0x22, 0x21, 0x6d, 0x10, 0x26, -0xc5, 0x56, 0x67, 0xbf, 0xc7, 0xa2, 0x55, 0xcf, -0x62, 0x50, 0x86, 0xaf, 0xf2, 0x5f, 0xda, 0x88, -0xfc, 0x5b, 0x16, 0xb3, 0x5f, 0xeb, 0xd1, 0x3c, -0xad, 0x1c, 0x70, 0x83, 0x34, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0xc7, -0x09, 0x2f, 0x93, 0xe1, 0x4d, 0xcc, 0xe2, 0x1f, -0x34, 0x15, 0x0f, 0xa7, 0x99, 0x45, 0x40, 0x0b, -0x82, 0x13, 0xec, 0x97, 0xe8, 0x66, 0x96, 0xd3, -0x7a, 0xe5, 0x5f, 0xc8, 0x69, 0xf9, 0x42, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, -0x21, 0x5d, 0xce, 0x13, 0xc3, 0x82, 0xc3, 0xec, -0x82, 0x95, 0xd5, 0x2e, 0x67, 0x98, 0xc7, 0x72, -0xc3, 0x8e, 0xea, 0xda, 0xaa, 0x3a, 0x98, 0x4d, -0x10, 0x54, 0x1b, 0xab, 0xbe, 0xca, 0x4c, 0x74, -0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, -0x01, 0x22, 0x21, 0x6f, 0x0d, 0x6f, 0x8e, 0xe8, -0x69, 0xab, 0x6d, 0x17, 0xe0, 0xc5, 0x9d, 0xd3, -0x59, 0x82, 0x90, 0x8c, 0x1a, 0x40, 0x31, 0x07, -0x57, 0x5e, 0x8b, 0xd8, 0x97, 0x51, 0x18, 0x44, -0x3a, 0x65, 0xe9, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc5, 0x01, 0x22, 0x21, 0x7e, 0xff, 0x3f, -0x3c, 0x3b, 0xd4, 0xbb, 0x57, 0x42, 0xee, 0x77, -0xce, 0xf0, 0x61, 0x35, 0xa3, 0x4d, 0x49, 0x4d, -0xa2, 0x6b, 0xdf, 0x99, 0xe0, 0xe6, 0x4a, 0x62, -0xd1, 0x64, 0xd6, 0x3a, 0x62, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0x02, -0x42, 0x96, 0xf6, 0xe4, 0x2c, 0xaa, 0x55, 0xf9, -0x3a, 0x14, 0x31, 0x21, 0xf0, 0xac, 0x0f, 0xaa, -0x7e, 0xfa, 0x5f, 0xc0, 0x6c, 0x9c, 0x5c, 0xfd, -0x0b, 0x8c, 0x70, 0x52, 0x98, 0x12, 0x99, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, -0x21, 0x31, 0x41, 0x7d, 0x4e, 0x1c, 0x5e, 0x22, -0x7d, 0x2e, 0x96, 0x9f, 0x5d, 0xed, 0x33, 0xe7, -0xa1, 0x33, 0x12, 0xb5, 0x58, 0xac, 0x78, 0x25, -0x90, 0x3e, 0xa9, 0x6a, 0xb9, 0x78, 0x3d, 0x0f, -0xc4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, -0x01, 0x22, 0x21, 0xed, 0x5c, 0xdb, 0x35, 0x41, -0x5c, 0x7d, 0x80, 0x5a, 0x94, 0x12, 0x1b, 0x55, -0x48, 0x74, 0x9e, 0xeb, 0x21, 0xe3, 0x87, 0xac, -0x0d, 0x2d, 0xcf, 0x57, 0x51, 0x8f, 0x99, 0x31, -0xdd, 0x62, 0x34, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc9, 0x01, 0x22, 0x21, 0x7b, 0x32, 0xad, -0xf8, 0xb7, 0x22, 0xef, 0xdd, 0xf5, 0xad, 0xeb, -0xec, 0x39, 0xbc, 0xca, 0x85, 0x1e, 0xd4, 0x85, -0x1a, 0x07, 0xe4, 0x42, 0x5a, 0xa6, 0xda, 0xfb, -0xc7, 0x3d, 0x56, 0x2c, 0x31, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0x85, -0x02, 0x9f, 0xaf, 0x6f, 0x19, 0x74, 0x18, 0x18, -0x0c, 0x47, 0xea, 0xf0, 0x28, 0x9f, 0x17, 0xa0, -0x5f, 0x43, 0x0e, 0xe6, 0x77, 0x84, 0x1c, 0xe4, -0xbd, 0xee, 0x12, 0x4a, 0x08, 0x1e, 0x52, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, -0x21, 0x62, 0x26, 0x09, 0x15, 0x42, 0xeb, 0x86, -0x0d, 0x87, 0xc0, 0x3b, 0x87, 0xa9, 0x8b, 0xaf, -0x19, 0xe4, 0x28, 0x9f, 0x6b, 0xed, 0xca, 0x66, -0x83, 0xa5, 0xca, 0xf8, 0xe2, 0xc0, 0x09, 0x69, -0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, -0x01, 0x22, 0x21, 0x6a, 0x86, 0x29, 0x72, 0x79, -0xd2, 0x50, 0x49, 0x60, 0x03, 0x11, 0x5a, 0x9a, -0x4e, 0xdf, 0xab, 0x1a, 0xd9, 0x46, 0xf2, 0xd2, -0x21, 0x03, 0xfa, 0x32, 0x84, 0xed, 0x05, 0xce, -0x26, 0xdc, 0xc6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xcd, 0x01, 0x22, 0x21, 0x4c, 0x79, 0x8a, -0x98, 0x63, 0x8f, 0x2f, 0x6a, 0x01, 0x50, 0x80, -0xb8, 0x34, 0xcd, 0xa9, 0xc9, 0xa1, 0x53, 0x7b, -0xe3, 0xe2, 0xe3, 0xf2, 0xc2, 0x03, 0x24, 0xc3, -0x63, 0xe9, 0x9e, 0xb4, 0xb7, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0x64, -0x88, 0x07, 0x69, 0x40, 0xa7, 0xeb, 0x6e, 0x33, -0x08, 0x27, 0xe8, 0xe8, 0x96, 0xcd, 0x2d, 0xbb, -0x4a, 0x6d, 0xb1, 0x0f, 0x8a, 0x8f, 0x94, 0xcd, -0x3a, 0x4a, 0x51, 0x03, 0x86, 0x09, 0x05, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, -0x21, 0x4e, 0xf1, 0x94, 0xc8, 0x9c, 0xe5, 0x30, -0x64, 0x11, 0x45, 0xa0, 0x90, 0x11, 0x4a, 0x93, -0x22, 0x25, 0x42, 0x8b, 0x2a, 0x41, 0x3f, 0xc8, -0x33, 0xe7, 0x25, 0x41, 0x12, 0x60, 0x25, 0xc5, -0xfb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, -0x01, 0x22, 0x21, 0x4c, 0x87, 0x4a, 0xa6, 0x9a, -0xab, 0x8e, 0xff, 0xd1, 0x81, 0x8c, 0xad, 0x13, -0x46, 0x5c, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xf6, 0x40, 0x2f, 0x8a, -0xa6, 0xe3, 0xac, 0x89, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd1, 0x01, 0x22, 0x21, 0x5d, 0x62, 0x27, -0x37, 0xa1, 0xa5, 0xa8, 0xb9, 0x86, 0x5c, 0x7d, -0xfb, 0xc4, 0x61, 0x78, 0x1d, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x6d, -0xb1, 0x84, 0x8c, 0x59, 0xb2, 0x71, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0xae, -0x18, 0x44, 0x18, 0x45, 0x9c, 0xa1, 0x2e, 0xdc, -0x3b, 0xea, 0x2d, 0x4e, 0x14, 0x05, 0x45, 0xe1, -0x1f, 0x4f, 0x9a, 0xcd, 0xe0, 0x67, 0xcc, 0xce, -0x09, 0x98, 0x37, 0xe6, 0x93, 0x08, 0x1b, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, -0x21, 0xb7, 0xf9, 0xf3, 0xf0, 0x1f, 0x1b, 0xff, -0x7c, 0x06, 0x47, 0x49, 0x43, 0x2b, 0xd0, 0xae, -0x00, 0xed, 0xd6, 0xae, 0xb8, 0x81, 0xd9, 0x8e, -0x6a, 0xec, 0x08, 0x96, 0xde, 0xa1, 0x0f, 0x5e, -0x9b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, -0x01, 0x22, 0x21, 0xc1, 0xd8, 0xe2, 0x55, 0x73, -0x5c, 0x98, 0x4d, 0xfb, 0x9c, 0xf9, 0x27, 0xd1, -0x2c, 0xb0, 0x06, 0xcf, 0x6a, 0x54, 0x1e, 0x48, -0x0b, 0x1d, 0xb8, 0x05, 0xcd, 0xdf, 0xa7, 0x41, -0xec, 0x0e, 0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd5, 0x01, 0x22, 0x21, 0xa6, 0xfa, 0x4c, -0xb4, 0xe6, 0xdc, 0x16, 0x39, 0x93, 0x07, 0x5e, -0x52, 0x84, 0x0f, 0xe3, 0xb7, 0x37, 0xf0, 0xb2, -0x21, 0x94, 0x80, 0x31, 0x97, 0xe3, 0x9e, 0x1f, -0xa4, 0x43, 0x22, 0x4f, 0x16, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0x7f, -0x8c, 0xa7, 0x71, 0xb7, 0x45, 0x43, 0x45, 0xf7, -0x21, 0x4b, 0xf7, 0xdf, 0xfd, 0xf4, 0xb9, 0x05, -0xda, 0x23, 0x59, 0x3a, 0x2d, 0x95, 0x28, 0xcf, -0x06, 0x1c, 0x70, 0xed, 0x21, 0x9b, 0x51, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, -0x21, 0xd7, 0x26, 0xd7, 0xf2, 0x8c, 0x16, 0x4b, -0xa1, 0x92, 0x58, 0xae, 0xb1, 0x5a, 0xa6, 0x51, -0x6d, 0xd6, 0x48, 0x9b, 0x38, 0x1f, 0x01, 0xac, -0xfc, 0x3f, 0x16, 0x28, 0xc8, 0x38, 0xdd, 0x18, -0xa5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, -0x01, 0x22, 0x21, 0x88, 0x71, 0x26, 0x68, 0x54, -0x3b, 0xf9, 0xe4, 0xe1, 0x89, 0x16, 0x57, 0x37, -0xc1, 0x1e, 0xee, 0x72, 0x75, 0x38, 0x8f, 0xfb, -0x63, 0xa9, 0xb3, 0x09, 0x2d, 0x8d, 0xa8, 0x27, -0x54, 0x4a, 0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd9, 0x01, 0x22, 0x21, 0x55, 0x9c, 0xa0, -0xa6, 0x98, 0x19, 0xc4, 0x08, 0xdb, 0x58, 0x5c, -0x23, 0xe4, 0xe1, 0x98, 0x7f, 0xaf, 0xbf, 0xeb, -0xb5, 0x39, 0x2e, 0x92, 0xda, 0xa5, 0x8a, 0x8c, -0xfe, 0x19, 0xa8, 0xb8, 0x0a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0x68, -0xc7, 0x4b, 0xb9, 0xcd, 0x75, 0x55, 0xc5, 0xbf, -0x70, 0xe2, 0x14, 0xce, 0xfe, 0x30, 0x3d, 0x64, -0x1f, 0x18, 0x93, 0xfb, 0xd8, 0xe2, 0x40, 0xf1, -0x1f, 0x04, 0xb6, 0x8e, 0xcd, 0x9b, 0x44, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, -0x21, 0xc3, 0x66, 0x01, 0x84, 0xf5, 0xe1, 0xc6, -0xb0, 0x87, 0xe2, 0xbc, 0x53, 0xcd, 0x13, 0xfb, -0x0b, 0xfa, 0xcb, 0xff, 0x53, 0x88, 0xef, 0x1e, -0x8d, 0x4f, 0x52, 0x29, 0x1a, 0xec, 0x57, 0xd2, -0xba, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, -0x01, 0x22, 0x21, 0x03, 0xeb, 0xe2, 0xe5, 0xdf, -0xc6, 0x51, 0xda, 0xa1, 0x40, 0x6c, 0xab, 0xd0, -0xff, 0x89, 0x9b, 0x15, 0xe4, 0x14, 0x9b, 0x22, -0xb2, 0x69, 0x3c, 0x7c, 0xa3, 0x32, 0x9f, 0xb1, -0xe7, 0xe4, 0xea, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xdd, 0x01, 0x22, 0x21, 0xfa, 0x32, 0x37, -0x0d, 0xd7, 0x73, 0xe7, 0x55, 0x36, 0xdd, 0xa7, -0xd9, 0x30, 0xbc, 0x6a, 0x43, 0x23, 0x6d, 0x2d, -0xef, 0xee, 0xa6, 0x5a, 0xdf, 0x1d, 0x3d, 0xae, -0xb6, 0x3f, 0x25, 0xea, 0x53, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x6a, -0xa3, 0x6d, 0x88, 0x0c, 0xde, 0x67, 0x00, 0xe5, -0xb3, 0x82, 0xeb, 0x13, 0x05, 0xc8, 0x36, 0x69, -0x07, 0xfe, 0xb2, 0xc7, 0x87, 0x26, 0xf4, 0x47, -0x22, 0xd6, 0xae, 0x04, 0x7f, 0xa3, 0x47, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, -0x21, 0x3e, 0xe3, 0x91, 0x17, 0x42, 0x7c, 0x76, -0xdc, 0x35, 0xb8, 0x4c, 0xbe, 0x7d, 0x4b, 0x77, -0x1f, 0x54, 0x6f, 0xa1, 0x7f, 0x87, 0x39, 0x1f, -0x2d, 0x81, 0xcd, 0x93, 0x53, 0xb4, 0x00, 0x1b, -0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, -0x01, 0x22, 0x21, 0xd0, 0x5f, 0xf5, 0xd3, 0x05, -0x71, 0x02, 0x9b, 0x4c, 0x6e, 0xa8, 0x72, 0x43, -0xde, 0x35, 0x9c, 0x1e, 0xc5, 0x22, 0x51, 0x66, -0x5d, 0x69, 0x0e, 0x6d, 0x01, 0x0d, 0xbf, 0x67, -0x8f, 0x2f, 0xea, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe1, 0x01, 0x22, 0x21, 0xbd, 0xf7, 0x11, -0x27, 0xb5, 0x88, 0xf2, 0x63, 0x36, 0xc8, 0x64, -0xd2, 0xbb, 0xd5, 0x6b, 0xcc, 0x09, 0xa7, 0x72, -0x5e, 0x4c, 0x0c, 0x86, 0x7a, 0xb1, 0x19, 0xc6, -0x07, 0xe4, 0x4d, 0x59, 0x8c, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0x53, -0x3e, 0x55, 0xd0, 0xde, 0x9e, 0xed, 0x77, 0x6c, -0xe1, 0xa9, 0x0b, 0x65, 0x93, 0x07, 0x3b, 0x9c, -0x22, 0xaf, 0xdc, 0x13, 0x63, 0x04, 0x07, 0xd0, -0x5e, 0x5f, 0x17, 0x01, 0x45, 0x01, 0xf6, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, -0x21, 0xc5, 0x81, 0xde, 0xd1, 0x08, 0x9f, 0x52, -0xf6, 0xb3, 0xef, 0x74, 0xe8, 0xf9, 0x9d, 0x3f, -0xb5, 0x7e, 0x49, 0x90, 0xbd, 0xdd, 0x74, 0x87, -0xc8, 0x16, 0x21, 0x9c, 0xba, 0x0a, 0x02, 0xb1, -0xa4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, -0x01, 0x22, 0x21, 0x95, 0x9e, 0xba, 0xda, 0xdf, -0xe0, 0xdb, 0xc7, 0x96, 0x0d, 0xc5, 0x4f, 0xe2, -0xc7, 0xf1, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xff, 0x24, 0x7a, 0xf9, -0xcb, 0xe6, 0xce, 0x0d, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe5, 0x01, 0x22, 0x21, 0x00, 0xe9, 0x2c, -0x3d, 0xc9, 0x53, 0x04, 0x90, 0x0b, 0xbd, 0xba, -0xae, 0x3e, 0xa5, 0xa4, 0x21, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x72, -0xdb, 0xf3, 0x56, 0x71, 0x57, 0xb5, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x0d, -0xc0, 0x78, 0x12, 0x8e, 0xac, 0x21, 0x08, 0x4c, -0x71, 0x7f, 0x5d, 0x47, 0xd7, 0x7c, 0x2d, 0x79, -0xb1, 0x2e, 0x5e, 0x87, 0x8f, 0x16, 0x13, 0x0f, -0x16, 0x6f, 0x5a, 0x79, 0x95, 0x05, 0x54, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, -0x21, 0x39, 0x54, 0x85, 0x4c, 0xf7, 0xb5, 0x17, -0x7a, 0x80, 0x3e, 0x2f, 0x70, 0xc8, 0xdb, 0x56, -0x15, 0x1a, 0x7a, 0x8f, 0xb5, 0x03, 0x56, 0x1c, -0xb9, 0x4a, 0x19, 0xee, 0x50, 0x72, 0x43, 0xda, -0xd3, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, -0x01, 0x22, 0x21, 0x63, 0xb9, 0xf6, 0x38, 0xde, -0x6b, 0x3f, 0xb6, 0xf0, 0x49, 0x26, 0xa0, 0x25, -0x0e, 0x37, 0x75, 0x24, 0xe6, 0xed, 0x1d, 0x51, -0x88, 0xe2, 0xb6, 0x2f, 0xb1, 0x87, 0xcb, 0x3e, -0xa5, 0xdc, 0xf3, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe9, 0x01, 0x22, 0x21, 0xfa, 0xce, 0xed, -0x36, 0x4b, 0x6e, 0x2d, 0x71, 0x89, 0x8f, 0x0a, -0x71, 0x0a, 0x80, 0x86, 0xeb, 0xca, 0xb3, 0xc1, -0xc7, 0x6f, 0x71, 0x3d, 0x45, 0xfa, 0x78, 0x9b, -0x30, 0x8f, 0x54, 0x69, 0x98, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0x75, -0xec, 0x8f, 0x5b, 0x6b, 0x0a, 0x94, 0x78, 0xa0, -0xb7, 0x22, 0xbe, 0x81, 0x6b, 0xa8, 0x60, 0x43, -0x9c, 0x51, 0x21, 0x0b, 0xb0, 0x31, 0x0b, 0x99, -0x6b, 0xd7, 0x23, 0x39, 0x0c, 0x90, 0x6a, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, -0x21, 0x90, 0xf7, 0xf1, 0xe7, 0x98, 0xca, 0xb9, -0x3a, 0x3f, 0x15, 0xaa, 0x9d, 0x35, 0x0e, 0x77, -0x61, 0x9c, 0x5a, 0xee, 0x5d, 0xe3, 0xf7, 0x9f, -0x3b, 0x8c, 0x90, 0x34, 0x5b, 0xa0, 0xe9, 0xef, -0x9b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, -0x01, 0x22, 0x21, 0x84, 0x40, 0x1c, 0x73, 0x6a, -0x36, 0xba, 0xc3, 0x06, 0x41, 0x2c, 0x7b, 0xf4, -0x3b, 0xf1, 0xa0, 0xf7, 0xe3, 0xbd, 0xb4, 0xa2, -0x96, 0xfb, 0x90, 0x03, 0x22, 0x41, 0x3b, 0x49, -0xfb, 0xad, 0x96, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xed, 0x01, 0x22, 0x21, 0xcb, 0xf4, 0xd9, -0xb4, 0xcc, 0x47, 0xc3, 0xe2, 0xef, 0xbe, 0x4b, -0xb4, 0x40, 0xc7, 0xd3, 0x8f, 0x50, 0x55, 0x24, -0x7c, 0xfe, 0xaa, 0xcd, 0xab, 0x8c, 0xd9, 0x13, -0xc3, 0x89, 0xbd, 0xa6, 0x69, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0xed, -0x30, 0x8b, 0xf1, 0x44, 0x0d, 0x0d, 0xc4, 0xf5, -0xfe, 0xe9, 0x4b, 0x8b, 0xe5, 0x49, 0xe9, 0x39, -0x6c, 0x36, 0xcd, 0x61, 0x82, 0x30, 0x4b, 0xac, -0x20, 0x00, 0x9e, 0xfc, 0xd3, 0xbe, 0xa4, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, -0x21, 0x8f, 0x4a, 0x02, 0xa1, 0xf7, 0x15, 0x5e, -0xb5, 0x71, 0x15, 0xe3, 0xa9, 0x6c, 0xa0, 0xcf, -0x70, 0x35, 0xa0, 0xb7, 0x8a, 0x7e, 0xe2, 0x49, -0xdd, 0xc2, 0xc2, 0x5a, 0xab, 0x3a, 0x24, 0xba, -0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, -0x01, 0x22, 0x21, 0x72, 0x73, 0xa9, 0x03, 0xb3, -0x10, 0xdc, 0x83, 0x62, 0x6e, 0x6e, 0x20, 0x74, -0xc3, 0x94, 0x6c, 0x9b, 0x71, 0x58, 0x64, 0x95, -0x2d, 0xe7, 0xe5, 0x96, 0x33, 0x44, 0xa9, 0x2e, -0x34, 0x1e, 0x59, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf1, 0x01, 0x22, 0x21, 0x76, 0xdf, 0xec, -0x8a, 0xae, 0x96, 0x96, 0x5b, 0x6e, 0xcd, 0xee, -0x8d, 0xc4, 0x59, 0xb0, 0x0b, 0x1a, 0x53, 0x67, -0x57, 0x3d, 0x15, 0xdb, 0xc2, 0xe2, 0xec, 0x7a, -0xb5, 0xa7, 0x57, 0x7b, 0xcf, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0xb4, -0xaf, 0x7e, 0x0e, 0x41, 0x0d, 0x8a, 0x1c, 0xbe, -0xc6, 0xa2, 0xb8, 0x4e, 0xd5, 0x76, 0xb2, 0x7e, -0xb8, 0x8e, 0xa4, 0x02, 0xf9, 0x7f, 0x54, 0x79, -0x43, 0x51, 0x8d, 0xa7, 0x50, 0x5a, 0x4a, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, -0x21, 0xc6, 0x44, 0x8a, 0xa5, 0x76, 0x80, 0xb3, -0x0f, 0xc2, 0x45, 0x81, 0x2a, 0xff, 0x3b, 0x3c, -0x0d, 0x6d, 0x09, 0x52, 0xea, 0xbe, 0xf3, 0x8b, -0x5f, 0x07, 0x0e, 0x02, 0xef, 0x38, 0x18, 0x5a, -0xec, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, -0x01, 0x22, 0x21, 0x13, 0x61, 0xf2, 0x24, 0xab, -0x76, 0x34, 0xc7, 0x98, 0x3d, 0x5c, 0xdd, 0x50, -0xea, 0xa5, 0x29, 0x91, 0x17, 0x8d, 0x35, 0x9c, -0xa3, 0xf8, 0x91, 0x17, 0x42, 0xbb, 0x96, 0xa4, -0x22, 0x33, 0xbe, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf5, 0x01, 0x22, 0x21, 0xc5, 0x56, 0x36, -0x92, 0x99, 0xb7, 0x91, 0x76, 0x33, 0x88, 0xe4, -0x8a, 0x3b, 0xe0, 0x2b, 0x0e, 0x03, 0xf9, 0x69, -0xd3, 0x66, 0xcc, 0xd7, 0x7e, 0x2c, 0xc8, 0xf5, -0x50, 0xa3, 0xc0, 0x7f, 0x99, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0xcf, -0x33, 0x00, 0x18, 0x6c, 0xf2, 0x18, 0xc9, 0xdc, -0x20, 0x33, 0xb2, 0xe0, 0xfb, 0x56, 0xb3, 0x6e, -0x8d, 0xb0, 0x84, 0x8f, 0xd4, 0xf4, 0xcf, 0xf7, -0x8c, 0xdc, 0xc8, 0x76, 0x52, 0x48, 0xa8, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, -0x21, 0xb0, 0x2e, 0xdf, 0x45, 0x23, 0x99, 0x90, -0x4c, 0xe6, 0x41, 0x86, 0x62, 0xd1, 0xd6, 0x07, -0x1f, 0x55, 0x88, 0x7c, 0xc5, 0xb2, 0x2f, 0x91, -0x52, 0xe1, 0x49, 0x1e, 0xab, 0x0c, 0xc6, 0xc4, -0x3e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, -0x01, 0x22, 0x21, 0xac, 0x66, 0xb7, 0x99, 0xea, -0x78, 0xfd, 0x5a, 0xb5, 0x60, 0x16, 0x67, 0xdb, -0x30, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x70, 0xf5, 0x15, 0x47, -0x53, 0x0a, 0x3b, 0xed, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf9, 0x01, 0x22, 0x21, 0xef, 0xf8, 0x8b, -0x4d, 0xb4, 0x2d, 0x16, 0x8c, 0x57, 0x2d, 0x17, -0x8e, 0x0b, 0xdf, 0x2b, 0xd3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x11, -0xa4, 0xb0, 0x69, 0x3e, 0x8f, 0x43, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0xd2, -0x65, 0x2a, 0xd6, 0x1d, 0x08, 0x28, 0xf4, 0xa0, -0x19, 0x42, 0xfc, 0x4d, 0xf9, 0xd1, 0xf4, 0x29, -0x02, 0x03, 0x2a, 0x98, 0xf8, 0xd0, 0xb2, 0xf9, -0x74, 0xc9, 0x2b, 0x92, 0x71, 0xc9, 0xe7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, -0x21, 0xf4, 0x7a, 0x9a, 0x4f, 0x41, 0x56, 0x40, -0x02, 0xaf, 0x6e, 0x1f, 0x1a, 0x6c, 0x82, 0x2c, -0x0b, 0x28, 0xb8, 0xb4, 0x55, 0x48, 0x13, 0xb2, -0x72, 0xa8, 0xc0, 0x57, 0x48, 0x48, 0x17, 0x43, -0x82, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, -0x01, 0x22, 0x21, 0xe3, 0xe6, 0xcc, 0xf0, 0xe3, -0x5a, 0x70, 0xb8, 0xcd, 0xd4, 0xaa, 0x80, 0x96, -0x53, 0x88, 0xe6, 0x65, 0x40, 0x10, 0x13, 0xe3, -0xb5, 0xb2, 0x54, 0x3b, 0x69, 0xf7, 0x61, 0xfe, -0xeb, 0x67, 0xc5, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xfd, 0x01, 0x22, 0x21, 0xfd, 0xa7, 0xf5, -0x9f, 0x7c, 0xbc, 0x34, 0xe8, 0x61, 0xf8, 0x62, -0x76, 0x67, 0xb5, 0xa4, 0x8d, 0x33, 0x76, 0x1f, -0xbb, 0xa5, 0x6c, 0x20, 0xbf, 0x2c, 0x91, 0x09, -0x64, 0xcc, 0xda, 0x1b, 0x78, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0x61, -0x97, 0xeb, 0x61, 0x1c, 0xc2, 0xf8, 0x00, 0xe1, -0x7a, 0x04, 0x4a, 0x04, 0xe8, 0x82, 0x83, 0x69, -0x0a, 0xa6, 0xfd, 0x1b, 0x11, 0x75, 0xf5, 0xe2, -0x30, 0x45, 0x4a, 0x38, 0x2e, 0xba, 0xbb, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, -0x21, 0x06, 0xe0, 0x97, 0xfb, 0x39, 0x43, 0x53, -0x06, 0xe8, 0xe6, 0x07, 0x29, 0x12, 0x5a, 0xa1, -0x4e, 0xec, 0xe9, 0xc9, 0x60, 0xad, 0x8e, 0xd4, -0x9e, 0xb3, 0x14, 0xd8, 0xa2, 0x47, 0xe7, 0x0d, -0x56, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, -0x01, 0x22, 0x21, 0x34, 0x0a, 0xc2, 0x7d, 0x64, -0x22, 0x7f, 0xd4, 0x48, 0x41, 0xb9, 0xa3, 0xa8, -0x12, 0x92, 0x3d, 0x78, 0xd4, 0x17, 0x6b, 0xc6, -0x9a, 0x55, 0x47, 0x26, 0x6c, 0x29, 0x49, 0x13, -0x5a, 0x41, 0x93, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x01, 0x01, 0x22, 0x21, 0xbf, 0xef, 0xa5, -0xc1, 0xa2, 0x20, 0xd8, 0x21, 0xde, 0x75, 0x2d, -0xac, 0x63, 0x87, 0x61, 0x47, 0x01, 0x96, 0x7a, -0xa6, 0x4b, 0x92, 0x66, 0x62, 0x70, 0xe3, 0x27, -0x81, 0x82, 0x4c, 0x5c, 0x4b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0xf6, -0xec, 0xc2, 0x0f, 0x83, 0xe6, 0xdd, 0xe9, 0x05, -0x1d, 0x7c, 0xcc, 0xc2, 0xa5, 0xd8, 0xbb, 0xa1, -0x98, 0x74, 0x3d, 0xa8, 0xc2, 0x17, 0x38, 0x07, -0xf3, 0xa9, 0xdb, 0xfa, 0x25, 0xc9, 0x1d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, -0x21, 0x28, 0x8e, 0x2b, 0xd3, 0x63, 0x1e, 0x77, -0x99, 0xe8, 0x34, 0xcc, 0x3f, 0xca, 0x9a, 0x20, -0x64, 0x89, 0x7f, 0xa2, 0x37, 0x90, 0x9a, 0x61, -0x65, 0xfb, 0xf7, 0x40, 0x0e, 0x59, 0xf5, 0x36, -0xcb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, -0x01, 0x22, 0x21, 0xdb, 0xc7, 0xbe, 0xb4, 0x84, -0x47, 0xd9, 0xb2, 0x79, 0x84, 0x97, 0x9b, 0x19, -0x5d, 0xc9, 0x9d, 0xc9, 0xbc, 0xa3, 0x46, 0x6e, -0x33, 0x48, 0xb3, 0x83, 0xaf, 0x81, 0xc1, 0x31, -0xe4, 0xc7, 0x90, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x05, 0x01, 0x22, 0x21, 0x1e, 0x3b, 0x98, -0x8a, 0xed, 0x0b, 0x20, 0x7f, 0x4c, 0x29, 0xaa, -0x1d, 0x67, 0xdc, 0xcb, 0x43, 0x3c, 0x5d, 0x17, -0x62, 0x7c, 0x00, 0x65, 0x6b, 0xff, 0x41, 0x34, -0x5f, 0xe9, 0x30, 0x68, 0x61, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x75, -0x29, 0x19, 0xba, 0x2b, 0x26, 0xe7, 0x8e, 0x67, -0x9d, 0xe0, 0xb4, 0xf9, 0x71, 0xcd, 0x6f, 0xce, -0xcc, 0xad, 0x3e, 0x73, 0xc9, 0x34, 0xc5, 0x66, -0xe7, 0x3b, 0xce, 0x84, 0xc3, 0xdf, 0xf7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, -0x21, 0x9f, 0x96, 0x9c, 0x2e, 0xbc, 0x15, 0xd2, -0x1e, 0x17, 0xff, 0xaf, 0x4d, 0x8f, 0xea, 0xf1, -0xf4, 0x8e, 0xac, 0xe7, 0x10, 0x01, 0x2e, 0x3a, -0x0b, 0xc3, 0xd8, 0xc8, 0xbd, 0xa9, 0x68, 0xbe, -0xa6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, -0x01, 0x22, 0x21, 0x42, 0x6a, 0xe9, 0x9f, 0xc2, -0xb2, 0xf4, 0x61, 0x10, 0x2a, 0xc3, 0xf7, 0x78, -0xdf, 0xad, 0x68, 0xde, 0x2f, 0x36, 0x6c, 0x06, -0x5f, 0x83, 0x3a, 0x17, 0x1a, 0x66, 0xc6, 0x17, -0xea, 0xaf, 0x40, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x09, 0x01, 0x22, 0x21, 0x48, 0x5a, 0x58, -0x4b, 0x41, 0x33, 0xb1, 0xbc, 0x8c, 0x84, 0x4d, -0x03, 0xa7, 0xfc, 0x2a, 0x67, 0x2a, 0x39, 0xcc, -0x43, 0xcf, 0xec, 0x1a, 0xf4, 0xf2, 0x5d, 0x10, -0x75, 0x7e, 0xd0, 0x9a, 0x2e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0x0f, -0x8c, 0xfd, 0x9a, 0xbc, 0x7f, 0xa4, 0x31, 0xdd, -0x9d, 0x96, 0x69, 0x52, 0xd7, 0xe4, 0x4a, 0x6d, -0xe4, 0x0a, 0xbf, 0x16, 0x25, 0x4a, 0x2c, 0x60, -0xce, 0x88, 0x94, 0x1d, 0x10, 0x8e, 0xf8, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, -0x21, 0x95, 0x04, 0xc2, 0xd7, 0xd5, 0x51, 0x29, -0xde, 0x3a, 0xbe, 0xe5, 0x74, 0xae, 0x79, 0x88, -0x27, 0x1e, 0x8d, 0x02, 0xb1, 0x49, 0x3c, 0x77, -0x2e, 0xef, 0x79, 0x24, 0xeb, 0xf0, 0x74, 0x3f, -0x80, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, -0x01, 0x22, 0x21, 0x67, 0x9a, 0x4a, 0xa5, 0x5e, -0x46, 0x03, 0x61, 0xec, 0x97, 0x61, 0x2f, 0x4b, -0x04, 0x97, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xf2, 0xb8, 0xb0, 0x6b, -0xac, 0x55, 0x06, 0xae, 0x03, 0x04, 0x51, 0x02, -0x00, 0x0d, 0x01, 0x22, 0x21, 0x60, 0xc6, 0x20, -0x9c, 0x49, 0xf1, 0x74, 0x19, 0x97, 0x68, 0x76, -0x2a, 0x68, 0x22, 0x78, 0xa3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x87, -0x1a, 0x00, 0x9b, 0x4a, 0xcf, 0xe4, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0xdb, -0x46, 0xfc, 0xfb, 0xc0, 0xa7, 0xef, 0x8e, 0x1c, -0x0c, 0x24, 0xc2, 0xda, 0xdc, 0xbe, 0x4b, 0x58, -0x8a, 0xb5, 0xe2, 0x1c, 0xe0, 0x86, 0x9c, 0x94, -0x03, 0x85, 0xb2, 0xa3, 0xae, 0x5d, 0x4a, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, -0x21, 0x5e, 0xfe, 0xda, 0x35, 0x70, 0xdc, 0x18, -0x78, 0xc9, 0x18, 0x0c, 0xd7, 0x7c, 0x93, 0x07, -0x98, 0x31, 0xb8, 0x0b, 0xe5, 0x9e, 0x34, 0x3d, -0xfb, 0x91, 0xff, 0xe8, 0x1a, 0x41, 0x79, 0x90, -0x0f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, -0x01, 0x22, 0x21, 0xee, 0xb9, 0x95, 0x85, 0x24, -0x05, 0xbd, 0xe3, 0xa7, 0xfa, 0xb4, 0x91, 0x00, -0x97, 0x38, 0x2b, 0xa3, 0x76, 0xc3, 0xe1, 0xec, -0xc4, 0xbb, 0xbf, 0x75, 0x68, 0x7b, 0xa9, 0x6d, -0xe5, 0x15, 0xc9, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x11, 0x01, 0x22, 0x21, 0x1a, 0xa9, 0xfe, -0x9a, 0xcf, 0xbb, 0xdd, 0x4b, 0xbf, 0xd3, 0x3b, -0xb3, 0xcc, 0x9b, 0x84, 0x9d, 0x43, 0xdb, 0x34, -0x85, 0x90, 0xe0, 0x02, 0xf7, 0xe1, 0xe4, 0xfe, -0x79, 0xbe, 0x02, 0xf7, 0xd1, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0xe8, -0xd3, 0xb3, 0x14, 0x36, 0x27, 0xbf, 0xd8, 0x68, -0x94, 0xab, 0x1f, 0xb9, 0xa9, 0xb8, 0x31, 0xe6, -0xac, 0xb2, 0x24, 0x60, 0xb9, 0xcb, 0x95, 0x67, -0xc4, 0x27, 0x22, 0x78, 0x09, 0xa9, 0xac, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, -0x21, 0xda, 0xff, 0x4b, 0xf8, 0x8d, 0xf4, 0x3a, -0x92, 0x6b, 0x41, 0xcb, 0x49, 0x41, 0x0c, 0x2d, -0xd6, 0x4f, 0x20, 0xf5, 0xb2, 0xc0, 0x01, 0x7c, -0x32, 0x72, 0xc1, 0x6c, 0x0f, 0x35, 0x3a, 0x2a, -0xd8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, -0x01, 0x22, 0x21, 0xad, 0x0a, 0x4d, 0xc9, 0x9e, -0x30, 0x21, 0xd3, 0x6c, 0xf2, 0x5f, 0x05, 0x2c, -0x0f, 0x7e, 0xc0, 0xb6, 0xf4, 0x85, 0x76, 0xa6, -0x58, 0x12, 0x8f, 0x37, 0x74, 0x0c, 0x57, 0xf0, -0x86, 0x3c, 0x2e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x15, 0x01, 0x22, 0x21, 0xc3, 0xda, 0x36, -0x92, 0x48, 0xdf, 0x6c, 0x27, 0x42, 0x16, 0x3b, -0x29, 0xe4, 0xaa, 0x58, 0xa6, 0x0c, 0xc1, 0xb5, -0x49, 0x7c, 0x80, 0x5d, 0x4c, 0xb0, 0xc5, 0xb3, -0x7e, 0x01, 0x87, 0x4d, 0xb3, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0x98, -0x97, 0x52, 0x33, 0x06, 0x56, 0xb7, 0x4f, 0x25, -0x0c, 0xb6, 0x1b, 0x5c, 0xbe, 0x11, 0xbe, 0x02, -0x06, 0xb4, 0x62, 0x34, 0x86, 0x6b, 0x42, 0x4a, -0xbf, 0x06, 0xbc, 0x34, 0xd1, 0xb7, 0x20, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, -0x21, 0x8b, 0xa3, 0xed, 0x16, 0x50, 0xbd, 0x4c, -0x46, 0xeb, 0xb4, 0xcf, 0x95, 0xac, 0xe8, 0x13, -0xc1, 0xd5, 0x8c, 0xf9, 0x07, 0xb8, 0x38, 0x90, -0xd4, 0xc7, 0x26, 0x74, 0xa8, 0x79, 0xc9, 0xb5, -0x90, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, -0x01, 0x22, 0x21, 0x1f, 0xea, 0xf1, 0xd8, 0x22, -0x82, 0xc5, 0x4f, 0x10, 0x11, 0xa5, 0xa7, 0x15, -0x7f, 0xff, 0x3a, 0x60, 0xd4, 0xef, 0x1a, 0x4a, -0x62, 0x03, 0x12, 0x3f, 0x8f, 0x83, 0x1a, 0xb7, -0xf3, 0xfa, 0x11, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x19, 0x01, 0x22, 0x21, 0x24, 0x7a, 0x01, -0x64, 0x37, 0x4b, 0x87, 0xac, 0x48, 0x51, 0x85, -0x68, 0x49, 0x11, 0x8a, 0x7f, 0x11, 0xa6, 0x60, -0x23, 0x75, 0x5c, 0xc2, 0xde, 0x99, 0xf9, 0x78, -0x98, 0xe9, 0x5a, 0xb3, 0x3d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x99, -0x20, 0x0f, 0xad, 0x0a, 0x37, 0x80, 0xa4, 0xdb, -0x09, 0xab, 0xba, 0x8a, 0x02, 0xe5, 0x97, 0x63, -0xa6, 0xc9, 0x7d, 0x4c, 0x51, 0x24, 0x6e, 0x80, -0x0b, 0xe2, 0xf5, 0x0f, 0xa1, 0x53, 0x5a, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, -0x21, 0x97, 0x59, 0x3d, 0xb7, 0xfd, 0x4c, 0xe9, -0x2c, 0x9f, 0xe9, 0x2e, 0xf2, 0x66, 0x0b, 0x9b, -0x88, 0x2a, 0xe9, 0xc6, 0x36, 0x4f, 0x38, 0x42, -0xbe, 0x51, 0x2a, 0x3e, 0xda, 0x63, 0xd7, 0x01, -0x5f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, -0x01, 0x22, 0x21, 0xcf, 0x17, 0x10, 0xea, 0xa9, -0x2c, 0x74, 0x21, 0x51, 0xc8, 0x2a, 0x6b, 0xfd, -0xb8, 0xe1, 0x59, 0x0f, 0xbe, 0x4e, 0xec, 0xe5, -0x14, 0x40, 0x7f, 0x76, 0x7a, 0x49, 0x2d, 0xc5, -0x1b, 0x7e, 0x1d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x1d, 0x01, 0x22, 0x21, 0x58, 0x76, 0x27, -0x52, 0xc2, 0xe8, 0x67, 0x20, 0x2a, 0x36, 0xe7, -0x6e, 0xb3, 0xf7, 0xb6, 0x6e, 0x33, 0x38, 0xfe, -0xef, 0xb0, 0xef, 0x02, 0xb7, 0x11, 0x83, 0x84, -0xd3, 0x95, 0xa6, 0xe4, 0x88, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0x25, -0xed, 0x84, 0xa1, 0xee, 0x7f, 0x89, 0xec, 0x48, -0x60, 0xc3, 0x32, 0xf8, 0xaf, 0xb8, 0x84, 0xcb, -0x4e, 0x0a, 0x7a, 0xb2, 0x32, 0xdd, 0xff, 0xd7, -0x73, 0x70, 0x68, 0xb0, 0x80, 0x6e, 0x6e, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, -0x21, 0xd6, 0x61, 0x49, 0xa8, 0xa6, 0x68, 0xed, -0xa5, 0xb4, 0x87, 0x9f, 0xc6, 0x08, 0x98, 0x0b, -0x9f, 0x04, 0x29, 0x03, 0x72, 0xc7, 0x46, 0xbe, -0x70, 0xeb, 0x20, 0x5c, 0xcd, 0xc6, 0x6a, 0x31, -0x95, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, -0x01, 0x22, 0x21, 0x9d, 0x6d, 0x73, 0x91, 0xd6, -0xc0, 0x4b, 0xa5, 0x76, 0x80, 0xd4, 0x43, 0x2f, -0x5c, 0x0d, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0xfd, 0xb3, -0x4a, 0x7c, 0xd2, 0xbc, 0x03, 0x04, 0x51, 0x02, -0x00, 0x21, 0x01, 0x22, 0x21, 0x6d, 0x98, 0x4d, -0xd0, 0x76, 0x3c, 0xac, 0x44, 0x06, 0x85, 0xd8, -0x28, 0xf7, 0x9e, 0x14, 0xa1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x80, -0xc4, 0x98, 0x3e, 0xbf, 0x13, 0x9d, 0x03, 0x04, -0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0x5d, -0x87, 0x31, 0xa6, 0xb5, 0x06, 0x1f, 0x12, 0xc7, -0x57, 0x9f, 0x2e, 0x9e, 0x24, 0xe9, 0x97, 0x75, -0x34, 0x78, 0x8a, 0x85, 0x7c, 0xe3, 0x29, 0x2a, -0x04, 0xae, 0x6a, 0xc8, 0x95, 0x58, 0xf1, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, -0x21, 0xb9, 0x20, 0x7e, 0x6e, 0x4f, 0x54, 0x43, -0x8e, 0x01, 0x24, 0x41, 0x9e, 0x35, 0x39, 0xb4, -0x39, 0x01, 0xde, 0x24, 0xf7, 0x87, 0xcc, 0xc8, -0x8c, 0xa7, 0xf8, 0xdf, 0xec, 0x7f, 0xd5, 0x59, -0x91, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, -0x01, 0x22, 0x21, 0xd7, 0xec, 0xfd, 0xb6, 0xb4, -0x46, 0xa8, 0x23, 0x1a, 0x3d, 0x35, 0x8f, 0xb3, -0xe9, 0x8a, 0x8a, 0x5f, 0x7c, 0x08, 0x4e, 0xda, -0x17, 0xb6, 0x56, 0xc4, 0x87, 0xda, 0x01, 0xa1, -0x69, 0x46, 0xd5, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x25, 0x01, 0x22, 0x21, 0xf9, 0x2c, 0x53, -0xce, 0xf8, 0x7f, 0xe3, 0x25, 0x41, 0xfd, 0x1a, -0x01, 0x44, 0x00, 0x63, 0x95, 0xaf, 0xbb, 0x2e, -0xa9, 0x3b, 0x32, 0xcb, 0x52, 0x4b, 0x9d, 0xb4, -0xc9, 0x21, 0xd0, 0xb1, 0xc5, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0x6f, -0x05, 0xed, 0x7f, 0x11, 0xe3, 0x31, 0x9a, 0x7b, -0x2c, 0x84, 0xa1, 0xb4, 0x79, 0x72, 0x2a, 0xd3, -0xbd, 0x9f, 0x2d, 0xa4, 0xfa, 0xbb, 0xfd, 0x8b, -0x22, 0x8d, 0xc1, 0xb0, 0x02, 0x48, 0xf7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, -0x21, 0x82, 0xcd, 0xf5, 0x81, 0xee, 0x19, 0x3d, -0xc2, 0x69, 0x6a, 0xf2, 0x5a, 0xa1, 0x16, 0xd1, -0x22, 0x89, 0x71, 0xc1, 0xc4, 0x47, 0x0e, 0xa6, -0x88, 0xd5, 0xf0, 0xbb, 0x70, 0xd4, 0xf4, 0xf2, -0x6b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, -0x01, 0x22, 0x21, 0xab, 0x78, 0xb7, 0xcd, 0x0b, -0x21, 0xa7, 0x24, 0xd3, 0x27, 0x0a, 0xcf, 0x41, -0xba, 0x41, 0xe1, 0x3c, 0x90, 0xda, 0x1a, 0xe6, -0x90, 0x48, 0x98, 0xfd, 0x64, 0x1d, 0x35, 0x6e, -0x10, 0x52, 0x6a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x29, 0x01, 0x22, 0x21, 0x80, 0x49, 0x38, -0x25, 0x1e, 0xfb, 0x0b, 0x72, 0x7c, 0xc1, 0x6b, -0xef, 0xc8, 0x1f, 0x24, 0xca, 0x38, 0x8d, 0xf4, -0xbf, 0xf6, 0xd7, 0x75, 0xde, 0xdd, 0x48, 0x70, -0x2e, 0xc3, 0xd9, 0x21, 0x53, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0x91, -0x06, 0xbe, 0xfd, 0x4e, 0xba, 0xa2, 0x2b, 0x51, -0x36, 0xd6, 0x41, 0x29, 0x84, 0x38, 0x8a, 0x84, -0x87, 0x83, 0x1b, 0x04, 0xbf, 0xf1, 0xfb, 0x3c, -0x4c, 0xa8, 0x2a, 0x26, 0x69, 0x71, 0x6b, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, -0x21, 0x03, 0x1b, 0x27, 0x89, 0x00, 0xfc, 0xe9, -0xf6, 0xbf, 0xc8, 0x9a, 0x18, 0x19, 0x29, 0x12, -0xc3, 0x7d, 0xd8, 0xd8, 0x66, 0x29, 0x61, 0xb5, -0xac, 0xf1, 0x4c, 0xc9, 0x00, 0xd4, 0x38, 0x66, -0x1f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, -0x01, 0x22, 0x21, 0x2c, 0xc4, 0x6e, 0xcd, 0x37, -0xd6, 0xd2, 0x2d, 0x22, 0x00, 0xed, 0x47, 0x6b, -0x9f, 0x36, 0x6e, 0xad, 0x76, 0xca, 0x89, 0x86, -0x33, 0x19, 0x25, 0xeb, 0x39, 0x87, 0x07, 0x0b, -0x12, 0xcf, 0x05, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x2d, 0x01, 0x22, 0x21, 0x30, 0x79, 0x7e, -0xe2, 0x7e, 0x08, 0x14, 0x80, 0xce, 0x87, 0x00, -0x93, 0x00, 0x4a, 0x4d, 0xa6, 0x2d, 0xf1, 0x87, -0x23, 0xe6, 0xd5, 0x8e, 0xca, 0xf8, 0x9a, 0xd6, -0x8f, 0xff, 0xbe, 0x4b, 0x67, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0xd7, -0x57, 0xf7, 0x08, 0x15, 0x22, 0x1b, 0x9d, 0xde, -0x08, 0x64, 0x62, 0xb6, 0x68, 0x2b, 0xa7, 0xd7, -0x16, 0x55, 0xb9, 0xea, 0xd5, 0x57, 0xa2, 0x17, -0xe2, 0xd9, 0xc1, 0x5b, 0xb5, 0xf5, 0x74, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, -0x21, 0xbe, 0x00, 0x8c, 0x5f, 0x20, 0xf3, 0x7e, -0x14, 0x75, 0x2d, 0x01, 0xe3, 0xe3, 0xa2, 0xf1, -0x52, 0x81, 0xbb, 0x05, 0xa0, 0xfe, 0xf7, 0x05, -0xcd, 0x39, 0x9f, 0x95, 0xd7, 0x8a, 0x4c, 0x2d, -0x76, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, -0x01, 0x22, 0x21, 0x80, 0x51, 0x76, 0xd0, 0x50, -0x0f, 0x03, 0x37, 0x9f, 0x2f, 0xd2, 0x6b, 0x0d, -0x8f, 0xae, 0x48, 0xcd, 0x5d, 0x62, 0xdc, 0xe7, -0x6c, 0x67, 0x16, 0x5e, 0xd6, 0x2f, 0x6c, 0x43, -0x70, 0x96, 0x1c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x31, 0x01, 0x22, 0x21, 0xe7, 0xf9, 0x6b, -0x15, 0x3f, 0xe7, 0x3d, 0xdf, 0x61, 0xff, 0x5e, -0xf5, 0xc7, 0xdf, 0x87, 0xfe, 0x58, 0x85, 0x50, -0xad, 0xa8, 0x92, 0xe1, 0x45, 0x1f, 0x24, 0x10, -0xd3, 0x68, 0xba, 0x4e, 0xb7, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0xae, -0x7e, 0xc7, 0xe0, 0xdb, 0xca, 0xb0, 0x18, 0x30, -0x9e, 0xaa, 0x21, 0x9e, 0xe4, 0xc6, 0x7a, 0xa9, -0x8d, 0xd3, 0x55, 0x5b, 0x89, 0x93, 0x7a, 0x58, -0x45, 0x11, 0xe2, 0x37, 0x96, 0xc5, 0xd3, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, -0x21, 0x2c, 0x4c, 0x81, 0xd8, 0xe9, 0x6a, 0x86, -0x0f, 0xfe, 0xa8, 0x8a, 0xf4, 0x6b, 0x95, 0x6f, -0x8c, 0xae, 0xeb, 0x68, 0x48, 0x9d, 0xd5, 0x67, -0xbe, 0xb6, 0x20, 0x5c, 0x05, 0xfb, 0x92, 0x50, -0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, -0x01, 0x22, 0x21, 0x33, 0xa7, 0xbe, 0x74, 0xe1, -0xee, 0xcf, 0xc9, 0x6f, 0x0e, 0x1a, 0x37, 0x4e, -0xea, 0x88, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x48, 0xed, 0x16, 0x25, -0xee, 0x4f, 0x5d, 0x41, 0x03, 0x04, 0x51, 0x02, -0x00, 0x35, 0x01, 0x22, 0x21, 0xd0, 0xec, 0xe7, -0xcf, 0xf2, 0xb8, 0x17, 0xd1, 0x64, 0x5f, 0x20, -0x42, 0x84, 0x97, 0xd0, 0x31, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf5, -0x3f, 0x03, 0x03, 0xd3, 0xfe, 0x28, 0x03, 0x04, -0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x30, -0xd4, 0x4e, 0x26, 0x6a, 0x2a, 0x3a, 0x9c, 0x3a, -0xa1, 0xae, 0x2e, 0x7d, 0xae, 0xa9, 0x37, 0x14, -0x36, 0x20, 0x40, 0x68, 0x1f, 0x1e, 0xe3, 0x43, -0x64, 0xb5, 0xc9, 0x43, 0x0a, 0xd2, 0xa1, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, -0x21, 0x79, 0x56, 0x96, 0x1c, 0x76, 0x49, 0x18, -0xbe, 0x38, 0x04, 0x88, 0x67, 0x69, 0x99, 0x37, -0xc8, 0x32, 0x63, 0x04, 0x52, 0xbd, 0x0b, 0x0f, -0x06, 0x41, 0x19, 0xfe, 0xbe, 0x6a, 0xfa, 0xfc, -0x14, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, -0x01, 0x22, 0x21, 0xb7, 0x65, 0x7b, 0xd0, 0x57, -0xb6, 0xf8, 0xe8, 0xc2, 0xe2, 0x57, 0x73, 0xc6, -0xae, 0xb4, 0x78, 0x05, 0x77, 0x3a, 0xca, 0x4b, -0x93, 0x05, 0xfd, 0x7a, 0xa4, 0x73, 0x1b, 0xec, -0xbd, 0x71, 0x69, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x39, 0x01, 0x22, 0x21, 0x8a, 0x1f, 0x1e, -0x12, 0x10, 0x9a, 0xdc, 0xf3, 0x03, 0x9e, 0x1e, -0xcb, 0x8f, 0xa4, 0x19, 0x8d, 0x67, 0x94, 0xef, -0xc9, 0x31, 0x7d, 0x62, 0x53, 0x08, 0x92, 0x04, -0x22, 0x2d, 0xf8, 0x8e, 0xaa, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0x20, -0x18, 0xf5, 0xb1, 0x1a, 0x08, 0x68, 0x73, 0x23, -0x16, 0x28, 0xe1, 0xaa, 0x88, 0xf8, 0x87, 0xb0, -0xef, 0x9d, 0x9c, 0xb9, 0xf8, 0xa1, 0x6c, 0x05, -0x9e, 0xe3, 0x66, 0x43, 0xb0, 0x74, 0x59, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, -0x21, 0x14, 0x84, 0x20, 0x94, 0x54, 0x1c, 0xff, -0x9d, 0x7c, 0x3b, 0xa5, 0x81, 0xe9, 0x80, 0x99, -0x18, 0x70, 0x71, 0x88, 0xfd, 0x1a, 0x03, 0x43, -0xb4, 0xbb, 0x3d, 0x0b, 0x99, 0x43, 0x6f, 0x9f, -0x56, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, -0x01, 0x22, 0x21, 0xdc, 0xaf, 0x1c, 0xf9, 0x25, -0x66, 0xfc, 0x16, 0xdd, 0x0b, 0x6e, 0xed, 0xf6, -0xe4, 0xf5, 0xf7, 0x39, 0x67, 0xe8, 0x33, 0x13, -0x29, 0xce, 0x8e, 0x3a, 0x9a, 0x38, 0x2b, 0x64, -0x9e, 0xe7, 0x9c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x3d, 0x01, 0x22, 0x21, 0x11, 0x81, 0xc5, -0x54, 0x9f, 0x88, 0x07, 0xff, 0xd6, 0x02, 0x89, -0x58, 0x0f, 0xf4, 0x35, 0xab, 0x8d, 0xcc, 0x77, -0xca, 0x09, 0x00, 0xb3, 0x0b, 0xf9, 0x5c, 0x36, -0xcc, 0xf7, 0xd1, 0x7d, 0x47, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x92, -0x44, 0x64, 0xba, 0xc5, 0xbd, 0x1b, 0x97, 0xc5, -0x42, 0xa8, 0xa7, 0xe9, 0x7c, 0x81, 0xa8, 0xe1, -0x2b, 0x92, 0x9e, 0xb8, 0x59, 0x7f, 0x7d, 0xe1, -0x4f, 0xf1, 0x69, 0x70, 0xeb, 0xd9, 0x00, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, -0x21, 0xec, 0x0e, 0xac, 0x61, 0xcb, 0xcb, 0xee, -0x9d, 0x24, 0x33, 0x85, 0x00, 0x86, 0x83, 0x1a, -0x29, 0x9e, 0xe8, 0x82, 0xda, 0x16, 0x85, 0x00, -0x13, 0xf7, 0xe2, 0xcc, 0xb0, 0x77, 0x66, 0x30, -0x05, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, -0x01, 0x22, 0x21, 0x4a, 0x10, 0xd3, 0x4c, 0x04, -0xf8, 0x0e, 0xcb, 0xaa, 0x25, 0xf6, 0x30, 0xce, -0xb3, 0x61, 0x6d, 0x34, 0xe9, 0x9b, 0xe3, 0xf9, -0x2b, 0x99, 0xa0, 0x9e, 0x8f, 0xfb, 0x75, 0x5b, -0x5b, 0x4c, 0x4b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x41, 0x01, 0x22, 0x21, 0x40, 0x50, 0x47, -0xa8, 0x9c, 0x0e, 0x28, 0x01, 0x65, 0x12, 0x60, -0xdb, 0xca, 0x8e, 0xdb, 0xfb, 0x24, 0x4d, 0x0f, -0x82, 0x28, 0x20, 0xe7, 0x70, 0x5d, 0xd6, 0x52, -0x43, 0xa9, 0xcc, 0x0a, 0x8f, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0xfd, -0x1e, 0x1b, 0xa0, 0xd7, 0x62, 0x85, 0xf1, 0x91, -0x37, 0x88, 0xc9, 0x01, 0xac, 0x47, 0x07, 0xf4, -0x09, 0x74, 0xf1, 0x7c, 0x87, 0xc0, 0xbf, 0x2a, -0x60, 0x63, 0xc9, 0x79, 0x30, 0x14, 0x38, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, -0x21, 0x3a, 0xdc, 0xbe, 0xb8, 0x97, 0x51, 0x2f, -0x05, 0x58, 0x6f, 0x99, 0x50, 0x98, 0x47, 0xa4, -0x00, 0x38, 0x37, 0xdc, 0xe2, 0xce, 0x69, 0x01, -0xad, 0xe8, 0x83, 0x9e, 0xb6, 0x4f, 0xe2, 0x4c, -0x04, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, -0x01, 0x22, 0x21, 0xa8, 0x5c, 0x18, 0x54, 0x0c, -0x9e, 0x17, 0xa3, 0xa0, 0x04, 0xa6, 0x25, 0x6a, -0x28, 0x3e, 0x5f, 0xbd, 0xf6, 0xe0, 0x54, 0x0c, -0x25, 0x38, 0xa7, 0xb8, 0x7c, 0xab, 0x62, 0x61, -0xd4, 0xff, 0x78, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x45, 0x01, 0x22, 0x21, 0xa4, 0x3d, 0xb4, -0x0f, 0x04, 0x1a, 0xac, 0x33, 0x52, 0x62, 0xfb, -0x3f, 0x38, 0x2f, 0xb8, 0x37, 0x34, 0xf9, 0xe2, -0xd6, 0x51, 0xe8, 0xfa, 0xea, 0x77, 0x7f, 0x97, -0x85, 0xab, 0x05, 0xe4, 0x29, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0xad, -0xc6, 0xaa, 0x04, 0x27, 0xb0, 0x48, 0xf8, 0x3b, -0x21, 0xa7, 0x98, 0xa1, 0x2a, 0x57, 0x38, 0x28, -0x45, 0x8f, 0x37, 0xa7, 0x9e, 0x22, 0x8a, 0xa7, -0xf1, 0x69, 0x2b, 0x63, 0x67, 0xc7, 0x1f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, -0x21, 0xe2, 0xb7, 0x75, 0xd4, 0xe2, 0x1b, 0x59, -0xd6, 0x9b, 0x16, 0xe1, 0xf9, 0xf9, 0x05, 0xda, -0x47, 0x35, 0x58, 0x2c, 0x2a, 0x61, 0x48, 0x92, -0x4a, 0x37, 0x96, 0x9a, 0xa6, 0x80, 0x09, 0x1b, -0xa8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, -0x01, 0x22, 0x21, 0x08, 0x67, 0xce, 0xbf, 0x86, -0x1b, 0x31, 0x9e, 0xcc, 0x25, 0xc5, 0xc0, 0x87, -0xbb, 0x43, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x35, 0x3b, 0x31, 0x14, -0xa6, 0x71, 0x3a, 0x7e, 0x03, 0x04, 0x51, 0x02, -0x00, 0x49, 0x01, 0x22, 0x21, 0x36, 0xa4, 0x10, -0x4c, 0xf9, 0xa5, 0x3a, 0xb8, 0x5b, 0x5d, 0x6c, -0x11, 0x03, 0x3b, 0x1d, 0x02, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x3c, -0x4f, 0x0b, 0x1a, 0x9e, 0x00, 0xb0, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0x71, -0xeb, 0x81, 0xbe, 0x5e, 0x57, 0x6a, 0xd8, 0xc7, -0xde, 0x6c, 0x2c, 0xd2, 0xe6, 0x4b, 0x8d, 0xd9, -0x37, 0x7b, 0xc5, 0x2a, 0x87, 0xe3, 0x7a, 0x7c, -0x21, 0xee, 0x65, 0xf0, 0xcf, 0x6e, 0xa4, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, -0x21, 0x80, 0xb3, 0x41, 0xf2, 0xe2, 0x63, 0x41, -0x10, 0x47, 0x6c, 0xf7, 0x17, 0xa4, 0x99, 0xfe, -0x9b, 0x01, 0x95, 0x1b, 0x61, 0x8e, 0x88, 0xa5, -0x7e, 0x8d, 0xc4, 0x76, 0xee, 0x38, 0xf3, 0x46, -0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, -0x01, 0x22, 0x21, 0x71, 0x81, 0x92, 0xc7, 0x3f, -0xd4, 0xa1, 0x91, 0x8f, 0x5e, 0xde, 0xb7, 0xdd, -0xb3, 0x9d, 0xfe, 0x3a, 0x59, 0x42, 0x19, 0x9a, -0xe5, 0x26, 0xa3, 0x37, 0xe6, 0x23, 0x38, 0xdc, -0xa1, 0x1a, 0xbe, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x4d, 0x01, 0x22, 0x21, 0x4a, 0xa8, 0xd9, -0x18, 0xc3, 0x8a, 0xf4, 0xc2, 0xa3, 0xfc, 0x8b, -0x5d, 0x3b, 0xb8, 0x9b, 0xdd, 0xb0, 0xe3, 0xd9, -0x3d, 0x94, 0xc1, 0x12, 0x5d, 0x1e, 0xd3, 0x23, -0xb3, 0x4f, 0x24, 0x6b, 0x45, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0x97, -0xe3, 0x75, 0x20, 0x6d, 0x7d, 0xf4, 0xbc, 0xe1, -0x2e, 0x4c, 0xf4, 0x76, 0x35, 0xdb, 0x67, 0x63, -0x1b, 0xdc, 0xdf, 0x46, 0x62, 0x63, 0x73, 0x16, -0xdc, 0x9f, 0x2d, 0xbc, 0x64, 0xa2, 0xfc, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, -0x21, 0x3f, 0xd1, 0x36, 0xcf, 0x20, 0xa9, 0xd0, -0x04, 0x43, 0x74, 0x36, 0x6d, 0x99, 0x15, 0x6f, -0x2a, 0xfd, 0x6e, 0x1b, 0xb6, 0xb2, 0x7b, 0xbf, -0x55, 0x75, 0x28, 0xfe, 0x71, 0x82, 0x05, 0xaf, -0x47, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, -0x01, 0x22, 0x21, 0xab, 0xbe, 0x1c, 0xfb, 0x5b, -0x96, 0x4e, 0x1b, 0x8c, 0xcf, 0x67, 0xed, 0x9e, -0xb7, 0xc4, 0x96, 0xb0, 0x79, 0xd3, 0x50, 0xd1, -0xc6, 0x62, 0xca, 0x7c, 0x43, 0x74, 0x90, 0x71, -0x72, 0x50, 0x83, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x51, 0x01, 0x22, 0x21, 0x1f, 0x3c, 0xb6, -0xb9, 0x35, 0x9e, 0xf2, 0xbf, 0xf6, 0xe5, 0x4d, -0x35, 0xa5, 0xe5, 0x30, 0xdf, 0x82, 0xd3, 0xbf, -0x88, 0x8e, 0x16, 0x92, 0x52, 0xc2, 0x27, 0xda, -0x60, 0xae, 0x74, 0x79, 0x44, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0xe7, -0xaf, 0xfa, 0xaa, 0xe9, 0xf1, 0xed, 0x4b, 0xc3, -0x6b, 0x80, 0x4f, 0xc1, 0x79, 0xea, 0x9f, 0xbd, -0x4b, 0x8d, 0xde, 0x5c, 0x56, 0x16, 0x45, 0xc3, -0xf7, 0xc1, 0x2c, 0x7e, 0xc4, 0xe9, 0x18, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, -0x21, 0x4f, 0xba, 0x44, 0x70, 0xca, 0xce, 0x63, -0x8e, 0xf1, 0x5d, 0x2c, 0xfe, 0xad, 0xe6, 0xbb, -0xad, 0x20, 0x9e, 0x93, 0xac, 0x1d, 0x6c, 0x7a, -0x59, 0xb2, 0xa9, 0xcd, 0x05, 0x38, 0x5f, 0x01, -0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, -0x01, 0x22, 0x21, 0xdd, 0x67, 0x85, 0x5d, 0xc6, -0xc0, 0xf0, 0x11, 0xc1, 0xdd, 0xec, 0xed, 0xb8, -0x2d, 0xdb, 0x3a, 0x76, 0x99, 0xb3, 0x2e, 0xe3, -0x6d, 0xad, 0x86, 0x59, 0x57, 0x3e, 0xfa, 0x3d, -0x66, 0xdd, 0x14, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x55, 0x01, 0x22, 0x21, 0xa6, 0x92, 0x45, -0xd2, 0x34, 0xf6, 0xf5, 0xad, 0xc7, 0xab, 0x96, -0xe3, 0x79, 0x52, 0xf8, 0x3a, 0x5e, 0x52, 0x4a, -0x84, 0xb3, 0x51, 0xf6, 0x78, 0x28, 0x83, 0x35, -0x31, 0x7f, 0x2f, 0xfe, 0xba, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x41, -0x3e, 0xce, 0xf2, 0x26, 0xa5, 0x77, 0xb7, 0xb0, -0x1d, 0x5a, 0xc1, 0x81, 0xa7, 0x52, 0xc8, 0x0e, -0xb4, 0x5c, 0x36, 0x66, 0xdf, 0xd5, 0x5d, 0x73, -0x8c, 0xdf, 0x91, 0x72, 0x7e, 0xb8, 0x17, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, -0x21, 0x53, 0x82, 0xff, 0x2b, 0xab, 0xff, 0x04, -0x3e, 0x0b, 0x0f, 0x7f, 0xe0, 0x00, 0x81, 0xc6, -0x18, 0x21, 0x18, 0x29, 0x6b, 0x20, 0x44, 0x85, -0xf9, 0xd9, 0xb6, 0x96, 0x5c, 0xe0, 0xb3, 0xa1, -0x3a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, -0x01, 0x22, 0x21, 0x04, 0x0a, 0xc6, 0x8a, 0xc9, -0x52, 0x5d, 0xf1, 0xf0, 0x18, 0xe5, 0x9e, 0x29, -0xe8, 0x2b, 0x41, 0xcf, 0x66, 0xe3, 0xbe, 0xc1, -0xbf, 0x03, 0x64, 0x3b, 0x41, 0xfe, 0xd2, 0xed, -0x4c, 0x1e, 0xe4, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x59, 0x01, 0x22, 0x21, 0x37, 0xac, 0x2f, -0x35, 0x35, 0x29, 0xf6, 0x9b, 0x6a, 0xe1, 0x79, -0xab, 0x33, 0xcb, 0x75, 0x5a, 0x21, 0x88, 0x33, -0x9b, 0x38, 0xe9, 0x75, 0x60, 0xa9, 0x53, 0x56, -0xbc, 0x3d, 0x34, 0x47, 0x6d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x1a, -0x2f, 0x66, 0xf2, 0x61, 0x49, 0x55, 0x87, 0x3c, -0xc2, 0x02, 0xba, 0x62, 0xe5, 0xf4, 0x61, 0xbd, -0xab, 0x63, 0x39, 0xb0, 0x5c, 0xe7, 0xfb, 0x85, -0xf1, 0x2d, 0xec, 0x8f, 0xb0, 0xdd, 0x96, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, -0x21, 0xe2, 0xd7, 0x14, 0x4a, 0xaa, 0xbc, 0xc7, -0x4b, 0x2e, 0x6e, 0x9a, 0xcd, 0xef, 0xd7, 0xcd, -0x04, 0xa0, 0x54, 0x2c, 0xc5, 0x4d, 0x42, 0xe7, -0xd5, 0x08, 0xc7, 0xe1, 0x82, 0x2a, 0xf7, 0xe9, -0xf4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, -0x01, 0x22, 0x21, 0x6a, 0xe1, 0x14, 0xc1, 0xf6, -0x70, 0xb4, 0x85, 0xde, 0xb4, 0xa1, 0x79, 0x93, -0x5b, 0xcc, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xcd, 0xe5, 0x3e, 0x24, -0xbd, 0xd5, 0xd1, 0x47, 0x03, 0x04, 0x51, 0x02, -0x00, 0x5d, 0x01, 0x22, 0x21, 0xcb, 0x06, 0x84, -0xc1, 0x31, 0xc4, 0x05, 0xbf, 0x1f, 0x38, 0x8a, -0x7e, 0x15, 0x8b, 0x87, 0x49, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xa4, -0xd3, 0x90, 0x0c, 0x75, 0xee, 0xd7, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0x25, -0xb9, 0x31, 0x6b, 0xd8, 0xe7, 0xfb, 0xcb, 0x09, -0x6c, 0xed, 0x4e, 0xd0, 0x20, 0x54, 0xd0, 0x66, -0x23, 0xf9, 0xb5, 0xbc, 0x1d, 0x67, 0xd5, 0x92, -0x80, 0xbc, 0xc0, 0x40, 0x3a, 0xd3, 0x70, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, -0x21, 0x9b, 0xea, 0xe4, 0x3f, 0xcb, 0x6d, 0x1b, -0x51, 0xa9, 0x45, 0x67, 0xbc, 0x52, 0xa9, 0x40, -0xc7, 0x52, 0xfc, 0x72, 0x08, 0x0e, 0x5c, 0x4b, -0xad, 0x8a, 0xeb, 0xe6, 0x90, 0x67, 0x94, 0x30, -0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, -0x01, 0x22, 0x21, 0x6c, 0x7d, 0x59, 0xd3, 0x69, -0x3b, 0x52, 0x63, 0xdf, 0x09, 0x19, 0x4e, 0x95, -0xee, 0x6f, 0xd5, 0x06, 0xb2, 0xbd, 0x29, 0x7c, -0xdb, 0xcc, 0x31, 0xf7, 0xe7, 0x93, 0x3f, 0x13, -0xcd, 0xce, 0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x61, 0x01, 0x22, 0x21, 0x3e, 0x9c, 0xf2, -0x5b, 0xc3, 0xd8, 0x43, 0x12, 0x68, 0x2d, 0x22, -0x64, 0x93, 0x08, 0xf4, 0xab, 0x14, 0x61, 0x98, -0x04, 0x71, 0xfe, 0xed, 0xbd, 0xe2, 0x30, 0xa6, -0xc0, 0x6b, 0xd6, 0xc2, 0xa1, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0xd7, -0x81, 0x3f, 0x66, 0xa3, 0x21, 0xbf, 0xc0, 0x95, -0xc5, 0x65, 0x28, 0xb7, 0xac, 0x41, 0x98, 0xe3, -0x6b, 0x3f, 0xd2, 0x08, 0x5e, 0x97, 0xf0, 0x8c, -0xb9, 0x69, 0xce, 0x22, 0x9f, 0xf5, 0x8c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, -0x21, 0xb8, 0x3d, 0x5e, 0x1d, 0x64, 0xf3, 0x8f, -0x63, 0xac, 0x87, 0x39, 0x81, 0x4e, 0x2c, 0x86, -0x47, 0xa9, 0x30, 0xa9, 0xb1, 0xa1, 0x19, 0x2b, -0xb8, 0x17, 0x95, 0xac, 0x20, 0x5a, 0x61, 0x28, -0x67, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, -0x01, 0x22, 0x21, 0x0c, 0x86, 0x12, 0x28, 0xef, -0x2e, 0x35, 0x14, 0xde, 0x5e, 0x97, 0x9f, 0xd3, -0xbe, 0x06, 0x1e, 0xb3, 0x2b, 0xdb, 0x96, 0x35, -0xa9, 0xee, 0x26, 0x48, 0xee, 0x37, 0xdd, 0xc7, -0xfc, 0x72, 0x31, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x65, 0x01, 0x22, 0x21, 0xb8, 0xf9, 0x08, -0xac, 0x89, 0x50, 0xfd, 0x8a, 0x00, 0x22, 0x5c, -0x32, 0xce, 0x11, 0x24, 0xba, 0x4b, 0xad, 0x75, -0x1b, 0xaa, 0x7f, 0xee, 0x5d, 0xe7, 0x71, 0xb3, -0x2d, 0x22, 0x3b, 0xaf, 0x41, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0xdd, -0x94, 0x6f, 0xf8, 0x01, 0x7f, 0x13, 0x51, 0xf1, -0x98, 0x50, 0xce, 0x0d, 0xbe, 0xcf, 0x5d, 0xf4, -0xd9, 0x39, 0x58, 0x16, 0x85, 0x8a, 0x63, 0x5f, -0x79, 0xc4, 0x38, 0x1c, 0x57, 0xf3, 0xad, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, -0x21, 0x6f, 0xfb, 0x06, 0x33, 0x74, 0xfe, 0xc2, -0xcf, 0xc4, 0x82, 0x11, 0xe6, 0xf5, 0x76, 0xf6, -0xf5, 0x6b, 0x07, 0x31, 0x8e, 0x4a, 0xba, 0x0b, -0x52, 0x4d, 0xd9, 0x4e, 0x68, 0x46, 0x78, 0xf0, -0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, -0x01, 0x22, 0x21, 0x66, 0xeb, 0x5e, 0xb0, 0x15, -0x35, 0x99, 0xae, 0xcf, 0x2b, 0xa0, 0xe7, 0xb6, -0x3c, 0x89, 0x36, 0x21, 0x7e, 0x3c, 0x54, 0xe5, -0x99, 0xff, 0xb8, 0xd2, 0x62, 0xa4, 0xff, 0x13, -0xb5, 0x2e, 0x97, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x69, 0x01, 0x22, 0x21, 0x21, 0x1a, 0xca, -0xe4, 0xe1, 0x62, 0x3c, 0xce, 0xe9, 0xd9, 0x92, -0xb7, 0xc6, 0xb5, 0x26, 0x40, 0x83, 0x47, 0x7f, -0x04, 0x68, 0x00, 0x39, 0xbc, 0x24, 0x8f, 0xf2, -0xdb, 0xec, 0x46, 0xc1, 0x98, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x45, -0x7d, 0xae, 0xb9, 0x39, 0x4e, 0xc2, 0x7b, 0x51, -0xf4, 0x27, 0x4e, 0x9d, 0xd5, 0xc6, 0xa6, 0x1e, -0xfe, 0x43, 0xc6, 0x66, 0xe3, 0x0d, 0x5c, 0xe7, -0x7c, 0xd1, 0x11, 0x73, 0x11, 0x5c, 0x64, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, -0x21, 0x49, 0xaf, 0xb5, 0x69, 0x30, 0xee, 0x61, -0x62, 0x9f, 0x2c, 0x7f, 0x51, 0x14, 0x6e, 0xa8, -0x77, 0xff, 0x21, 0xc1, 0x67, 0x11, 0x28, 0x2b, -0xc0, 0x5d, 0xfb, 0x4e, 0xa1, 0x61, 0x98, 0x36, -0x29, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, -0x01, 0x22, 0x21, 0xfe, 0x1e, 0x26, 0x65, 0x92, -0x60, 0x94, 0x60, 0xbd, 0x12, 0x4b, 0x8c, 0x4d, -0xe2, 0x95, 0x3f, 0x20, 0xd4, 0x77, 0x42, 0x1e, -0x31, 0x83, 0xb9, 0x48, 0x8f, 0x94, 0x05, 0xd8, -0xaf, 0x4f, 0x23, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x6d, 0x01, 0x22, 0x21, 0x0b, 0x33, 0x04, -0x0e, 0x04, 0x66, 0xe5, 0x81, 0x13, 0xe2, 0x32, -0xfa, 0x6f, 0x5d, 0x93, 0x90, 0xa1, 0xf6, 0xb0, -0x10, 0x85, 0xed, 0xc3, 0xb3, 0x54, 0xf7, 0xc8, -0x61, 0x23, 0x9f, 0x99, 0x98, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0xcb, -0xb4, 0x47, 0x87, 0x72, 0xde, 0x98, 0x8a, 0x4b, -0x89, 0xf5, 0x4e, 0x51, 0x34, 0xe7, 0xd1, 0xd5, -0x67, 0x08, 0xbb, 0x8d, 0xf9, 0xda, 0x5b, 0x0b, -0x6e, 0x86, 0x79, 0xa2, 0xd0, 0xfd, 0xab, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, -0x21, 0xc3, 0xfa, 0xd4, 0x32, 0x0b, 0xb9, 0x5a, -0x97, 0x42, 0x65, 0x87, 0xa4, 0xed, 0xb6, 0xa8, -0x5d, 0x00, 0xd1, 0x6a, 0xb5, 0x91, 0x6e, 0x5b, -0x1d, 0xf3, 0x08, 0x01, 0x52, 0x9f, 0xd1, 0x13, -0xae, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, -0x01, 0x22, 0x21, 0xbb, 0x8a, 0x96, 0x7b, 0x0d, -0xa3, 0x90, 0xeb, 0x66, 0x3a, 0x96, 0xb1, 0x52, -0x6a, 0xa3, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x95, 0x67, 0xb1, 0x09, -0x3c, 0x85, 0xef, 0x98, 0x03, 0x04, 0x51, 0x02, -0x00, 0x71, 0x01, 0x22, 0x21, 0x42, 0x73, 0xb6, -0xf3, 0x4d, 0x72, 0xf5, 0x4c, 0x11, 0x7d, 0x85, -0xf8, 0x0a, 0xca, 0x00, 0x9c, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x8b, -0x29, 0x2e, 0x4f, 0x8f, 0xcb, 0x48, 0x03, 0x04, -0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0xb3, -0x3f, 0xec, 0x10, 0xda, 0xf9, 0x7b, 0x71, 0x64, -0x07, 0x2e, 0xb0, 0xcc, 0xee, 0xe3, 0x94, 0xaa, -0x8e, 0x4b, 0xf2, 0xa4, 0x4b, 0x4a, 0x44, 0x74, -0xce, 0x42, 0xf5, 0x1b, 0xf2, 0x6c, 0xad, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, -0x21, 0x5c, 0x98, 0xb5, 0x66, 0x33, 0x10, 0xb9, -0x0a, 0x43, 0x7b, 0xbb, 0x53, 0x7f, 0xa3, 0x01, -0x37, 0x64, 0xb2, 0x3b, 0xf8, 0x86, 0xa0, 0x38, -0x10, 0xb6, 0x2f, 0x5e, 0xce, 0x34, 0x16, 0xe0, -0x26, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, -0x01, 0x22, 0x21, 0x45, 0x88, 0xe9, 0x8a, 0x8c, -0x73, 0x69, 0x98, 0xd4, 0x49, 0x08, 0x8b, 0xf4, -0x32, 0xda, 0x6d, 0x28, 0x78, 0xa5, 0x35, 0xad, -0xaa, 0xbe, 0x20, 0x98, 0xbf, 0x80, 0x2c, 0xf7, -0xba, 0x5c, 0xe9, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x75, 0x01, 0x22, 0x21, 0xec, 0x29, 0x0a, -0x63, 0xfa, 0x38, 0xc9, 0xff, 0x0d, 0x98, 0xba, -0xe8, 0xfb, 0xf7, 0x9e, 0xe7, 0x4d, 0xc2, 0x5e, -0x18, 0xfe, 0xa2, 0xb9, 0x91, 0x46, 0x00, 0xc8, -0xb8, 0x2d, 0x50, 0xb2, 0xd6, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0x59, -0x56, 0x88, 0xef, 0xb2, 0x11, 0xb9, 0xe5, 0xa6, -0xe7, 0x28, 0xa8, 0x0a, 0xd9, 0x2d, 0x67, 0x8c, -0xec, 0xcd, 0xf1, 0xcb, 0x86, 0xac, 0xcf, 0xca, -0x5b, 0xe8, 0x0d, 0xd6, 0x32, 0x98, 0x45, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, -0x21, 0xed, 0x24, 0x98, 0xca, 0xff, 0xcf, 0x03, -0x0e, 0x35, 0xef, 0x4c, 0xb2, 0x61, 0xda, 0x16, -0xa1, 0x22, 0x64, 0x56, 0x81, 0x70, 0x41, 0x42, -0x1f, 0x61, 0x6c, 0xaa, 0x06, 0x43, 0xc9, 0xde, -0x72, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, -0x01, 0x22, 0x21, 0x88, 0x15, 0x6e, 0x1a, 0x20, -0x36, 0x8b, 0xda, 0xa0, 0xa8, 0x77, 0x73, 0x8d, -0xc3, 0x11, 0x3e, 0x2d, 0xc6, 0xad, 0x64, 0xfd, -0xed, 0x7b, 0xd3, 0x31, 0x06, 0x0e, 0x86, 0xae, -0xaa, 0x08, 0xd9, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x79, 0x01, 0x22, 0x21, 0x41, 0x62, 0x52, -0xe9, 0xfc, 0x16, 0x50, 0x1f, 0x5e, 0x62, 0xac, -0x3b, 0x6e, 0x54, 0xdd, 0xcd, 0xc0, 0xe7, 0x5d, -0x08, 0xd8, 0xe4, 0x3c, 0x80, 0x5a, 0x9f, 0x67, -0xa4, 0x18, 0x4f, 0x1e, 0x09, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0x4f, -0x53, 0xe0, 0x51, 0x08, 0xa9, 0x45, 0x8c, 0x48, -0x1f, 0x43, 0xd4, 0x8e, 0x3d, 0x1a, 0x0a, 0x62, -0x67, 0x31, 0xae, 0xef, 0x83, 0x69, 0x67, 0x1d, -0x0b, 0x91, 0x50, 0x9b, 0x2d, 0x68, 0xa2, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, -0x21, 0x42, 0xe8, 0x2a, 0x8d, 0x44, 0xf5, 0x98, -0xbc, 0xc5, 0x0c, 0x7f, 0x96, 0x58, 0x63, 0xa4, -0x92, 0xfc, 0xff, 0x80, 0x78, 0x81, 0x92, 0xf8, -0x6c, 0xba, 0xee, 0xd1, 0xf5, 0x6b, 0x50, 0x22, -0xf7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, -0x01, 0x22, 0x21, 0x88, 0x3c, 0xf1, 0xef, 0x91, -0x82, 0x1b, 0x4a, 0xed, 0x2a, 0xd9, 0xcb, 0x78, -0x55, 0x74, 0x95, 0xf5, 0x92, 0x0d, 0xec, 0x5a, -0xb9, 0x09, 0x21, 0x33, 0x30, 0x0b, 0x2f, 0x33, -0xb4, 0xea, 0x69, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x7d, 0x01, 0x22, 0x21, 0xf9, 0xe8, 0x6e, -0xc9, 0x9f, 0xce, 0x6c, 0x4e, 0x57, 0x37, 0xf7, -0xf9, 0x3f, 0x7a, 0xf1, 0x76, 0x0e, 0x57, 0xd9, -0x18, 0xc7, 0xce, 0x6c, 0x5c, 0x4d, 0x84, 0x72, -0xf6, 0x57, 0x0e, 0x70, 0xc4, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0x8b, -0x55, 0x67, 0x12, 0x11, 0xf5, 0x63, 0x36, 0x89, -0x1d, 0xe3, 0xcc, 0x74, 0xe6, 0x28, 0x0b, 0x50, -0x10, 0x0f, 0x52, 0x7c, 0xf8, 0x03, 0x53, 0xbb, -0x77, 0xfa, 0xc5, 0x3e, 0xb6, 0x3d, 0xf8, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, -0x21, 0x39, 0x0c, 0xa1, 0x5b, 0xf2, 0x73, 0x08, -0x25, 0x06, 0xe4, 0x54, 0xa5, 0x7d, 0x31, 0x3d, -0x23, 0x09, 0x70, 0x61, 0x2d, 0xc2, 0xd5, 0x42, -0xc1, 0xe7, 0xb9, 0x3c, 0x2d, 0x93, 0x97, 0x41, -0x56, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, -0x01, 0x22, 0x21, 0xda, 0x69, 0x0d, 0xed, 0xad, -0x40, 0xa0, 0x91, 0x50, 0x73, 0x46, 0x67, 0xaf, -0xf6, 0xb8, 0xd3, 0x13, 0xa5, 0xcd, 0xf1, 0x7e, -0xd9, 0x22, 0xb8, 0xce, 0x2a, 0x93, 0x5e, 0xd7, -0x35, 0x5b, 0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x81, 0x01, 0x22, 0x21, 0x01, 0x67, 0x7c, -0x6c, 0x11, 0xa0, 0x92, 0x09, 0xbb, 0x9e, 0xba, -0x8c, 0xf1, 0x18, 0x33, 0xc0, 0x07, 0xdd, 0xf8, -0x3f, 0x90, 0x62, 0xd5, 0x9a, 0x9e, 0xf9, 0x87, -0x45, 0x84, 0x1e, 0xff, 0xc7, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0xec, -0x1d, 0xb4, 0x7c, 0xef, 0xdf, 0x37, 0xa7, 0x29, -0x3c, 0x91, 0x32, 0x95, 0x30, 0x1a, 0x9c, 0xaf, -0xbf, 0xc1, 0x9f, 0x00, 0x5d, 0x63, 0x3b, 0x1f, -0x01, 0xe4, 0x79, 0xf0, 0x66, 0x06, 0xfd, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, -0x21, 0x50, 0x4f, 0x1e, 0x3c, 0xbe, 0x72, 0xa8, -0xdb, 0x0f, 0xf1, 0x79, 0x74, 0xf0, 0xe9, 0x1c, -0x98, 0x6a, 0x47, 0x27, 0x80, 0x2d, 0x35, 0x9f, -0x04, 0x2c, 0x9d, 0xc6, 0xac, 0x08, 0x97, 0xf0, -0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, -0x01, 0x22, 0x21, 0x52, 0x08, 0xb5, 0x00, 0xbb, -0x3c, 0xf8, 0x23, 0x74, 0xc3, 0x80, 0x11, 0xe3, -0x22, 0xee, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xd1, 0x10, 0xd4, 0x7e, -0xbc, 0x4e, 0xdf, 0xf3, 0x03, 0x04, 0x51, 0x02, -0x00, 0x85, 0x01, 0x22, 0x21, 0x5e, 0x88, 0xda, -0x2f, 0x16, 0x49, 0xcc, 0xf3, 0xa2, 0xe5, 0xd3, -0xc0, 0x7f, 0x49, 0x9d, 0x56, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3d, -0xe6, 0xa7, 0x5a, 0xee, 0x9e, 0x6b, 0x03, 0x04, -0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0xed, -0x78, 0xb9, 0x21, 0xdf, 0xba, 0x5f, 0xe1, 0x8a, -0x84, 0x3e, 0xfb, 0x5e, 0x47, 0x8e, 0x67, 0xf7, -0xeb, 0xda, 0x52, 0xbd, 0x26, 0x65, 0x41, 0x64, -0xcd, 0x2a, 0x17, 0xae, 0xa7, 0x04, 0x64, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, -0x21, 0x52, 0x70, 0x1d, 0x82, 0x63, 0xc3, 0x75, -0x4f, 0xaf, 0x66, 0x8a, 0x70, 0x07, 0x13, 0x4f, -0x1b, 0xdc, 0xe7, 0xb6, 0x3a, 0x7d, 0x0f, 0xe6, -0x6b, 0x55, 0x19, 0x88, 0x0a, 0x9e, 0xa2, 0xa3, -0x59, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, -0x01, 0x22, 0x21, 0xb5, 0x17, 0x9c, 0xb6, 0x4d, -0xea, 0x06, 0x70, 0x62, 0x14, 0xde, 0x50, 0xd7, -0x10, 0x1e, 0x58, 0x35, 0x0b, 0x5a, 0x31, 0x0b, -0x5e, 0x98, 0x59, 0xde, 0x02, 0x6b, 0xdd, 0x73, -0x86, 0xbc, 0xe9, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x89, 0x01, 0x22, 0x21, 0xa8, 0x89, 0x62, -0xb1, 0x93, 0x79, 0xe0, 0x44, 0x86, 0x04, 0x59, -0x1f, 0x2f, 0x61, 0x30, 0x51, 0x27, 0xb4, 0x58, -0x3a, 0x8c, 0x12, 0x50, 0x4a, 0x0b, 0x8c, 0x6b, -0x72, 0xeb, 0xbb, 0xf7, 0xd3, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0x64, -0x6c, 0xe8, 0xfb, 0x6e, 0x46, 0xb9, 0xfe, 0x36, -0x3d, 0x97, 0xa2, 0x93, 0xa7, 0x8e, 0xd6, 0x3f, -0xe0, 0xed, 0x11, 0x8f, 0xc8, 0x0e, 0xb3, 0xcf, -0x55, 0x77, 0xe7, 0x34, 0xeb, 0x8e, 0x59, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, -0x21, 0xb4, 0x78, 0x98, 0x0a, 0x51, 0x01, 0x50, -0x08, 0x3c, 0xd2, 0x9b, 0x4b, 0xd5, 0xb7, 0x5b, -0xc7, 0xb2, 0x20, 0x01, 0x6b, 0x24, 0xbd, 0xf2, -0x0b, 0x36, 0x16, 0x0b, 0x6c, 0x40, 0x1a, 0x7c, -0x55, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, -0x01, 0x22, 0x21, 0x3e, 0xa0, 0x0f, 0x14, 0xfc, -0x85, 0x07, 0x5c, 0xfa, 0x3e, 0xfa, 0x55, 0xf5, -0x54, 0x76, 0xf9, 0x5c, 0x2c, 0xe7, 0x16, 0x21, -0x3b, 0x2b, 0x14, 0x95, 0x9d, 0x00, 0x85, 0x99, -0x5c, 0xa7, 0xe7, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x8d, 0x01, 0x22, 0x21, 0x44, 0x2d, 0x4e, -0xcf, 0x9d, 0x2a, 0xbe, 0xc2, 0x88, 0xca, 0xc7, -0x27, 0xc7, 0x53, 0xc0, 0x65, 0x90, 0xa1, 0x84, -0xfd, 0xb4, 0x16, 0x58, 0xf1, 0x47, 0xe4, 0x25, -0x23, 0x87, 0x19, 0x31, 0xe9, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x1b, -0x40, 0xae, 0xe5, 0x3c, 0x8c, 0x2e, 0x00, 0xfd, -0x24, 0x6f, 0x4d, 0xc6, 0xbc, 0x4a, 0x25, 0x90, -0xc2, 0xfa, 0x91, 0x7e, 0x5b, 0xec, 0x1f, 0xee, -0xf1, 0x28, 0x22, 0xe5, 0x09, 0x19, 0x8c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, -0x21, 0xea, 0x70, 0x5b, 0x5f, 0x4b, 0x55, 0x0c, -0x1c, 0xc1, 0x04, 0xac, 0xff, 0x07, 0x8c, 0xff, -0x62, 0x6b, 0x88, 0xe5, 0x3a, 0x9c, 0xe5, 0xea, -0xa8, 0x3f, 0x21, 0x9c, 0x43, 0xcf, 0xa8, 0x9a, -0x81, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, -0x01, 0x22, 0x21, 0xc8, 0xc6, 0xf6, 0x23, 0xee, -0x2a, 0x0a, 0x63, 0x34, 0x49, 0xf3, 0xf9, 0x66, -0xb7, 0x40, 0x6a, 0xa9, 0x14, 0x57, 0x0b, 0x14, -0xc6, 0x9d, 0x54, 0xb0, 0x67, 0x01, 0x2e, 0x41, -0xda, 0xb6, 0x5c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x91, 0x01, 0x22, 0x21, 0x1d, 0x06, 0x51, -0xb2, 0xd2, 0xa0, 0x19, 0x7b, 0x82, 0x2e, 0x41, -0xd5, 0x01, 0x42, 0x6d, 0x2e, 0x3f, 0x52, 0xf6, -0x34, 0xda, 0x9e, 0xe2, 0x5b, 0xad, 0xca, 0x6c, -0x16, 0x55, 0x45, 0x73, 0x4e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0xe0, -0x85, 0xfc, 0xc3, 0xd1, 0x0c, 0xfa, 0xb6, 0xbd, -0x34, 0xa1, 0xd9, 0x8f, 0xc3, 0xbc, 0x6b, 0x9f, -0x83, 0xe5, 0x23, 0x5a, 0x1f, 0x36, 0xf7, 0x9b, -0xfa, 0x91, 0xc2, 0xd7, 0x27, 0x78, 0xe3, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, -0x21, 0xb8, 0x9f, 0xf3, 0x02, 0x8f, 0xb9, 0x89, -0xaf, 0xd8, 0x13, 0xe9, 0x8e, 0xbf, 0xbf, 0xc7, -0x31, 0xdb, 0xd6, 0xc6, 0xcc, 0x74, 0xf0, 0xb6, -0x8c, 0xa8, 0xa4, 0x61, 0x4d, 0xdf, 0x54, 0x2e, -0x8a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, -0x01, 0x22, 0x21, 0xb2, 0x6b, 0x0c, 0x8b, 0x66, -0xcf, 0x2b, 0x28, 0xbf, 0x04, 0x60, 0x07, 0xfc, -0x64, 0xd2, 0x6f, 0x57, 0x2b, 0x8d, 0xc6, 0x93, -0x2a, 0x73, 0x81, 0x71, 0xf3, 0x86, 0xe8, 0x79, -0xa2, 0xec, 0x3a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x95, 0x01, 0x22, 0x21, 0xdd, 0xa8, 0x56, -0x1a, 0x5c, 0xd9, 0xe5, 0x6d, 0x70, 0xc3, 0xfd, -0x76, 0x26, 0x37, 0x81, 0xbf, 0xea, 0xc1, 0x20, -0xa1, 0xe3, 0x1b, 0x29, 0x36, 0x93, 0x8b, 0x01, -0xe5, 0x2d, 0xb0, 0xea, 0x2a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0x4f, -0x2c, 0xad, 0x0f, 0x37, 0x12, 0x28, 0x9d, 0x81, -0x53, 0xee, 0x4f, 0x7b, 0x36, 0x40, 0xc0, 0xfd, -0x21, 0xb5, 0xa1, 0x72, 0x54, 0x85, 0x65, 0x5b, -0x12, 0xff, 0x98, 0xd4, 0x9f, 0xf6, 0xf0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, -0x21, 0x32, 0xf0, 0xee, 0xf5, 0x5c, 0x67, 0xe2, -0x19, 0x62, 0x9b, 0x7c, 0x7c, 0x35, 0x6a, 0xfe, -0x0c, 0x52, 0x93, 0x38, 0xa3, 0x1d, 0x14, 0x5f, -0x83, 0xcb, 0xbc, 0xe1, 0x72, 0xc2, 0xb3, 0xd9, -0x0e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, -0x01, 0x22, 0x21, 0x29, 0x79, 0xc5, 0x98, 0x67, -0xec, 0x13, 0x3e, 0x6e, 0xc8, 0x27, 0xbc, 0x03, -0x5f, 0x5f, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x14, 0xd6, 0x98, 0x46, -0xd6, 0xfc, 0x52, 0xb1, 0x03, 0x04, 0x51, 0x02, -0x00, 0x99, 0x01, 0x22, 0x21, 0x06, 0x14, 0xb0, -0xf2, 0x47, 0xe2, 0x2f, 0xd6, 0x00, 0x57, 0x7f, -0xba, 0x52, 0x5b, 0x7b, 0x5a, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x39, -0xc8, 0x08, 0x04, 0xe0, 0xfd, 0x87, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0xe0, -0xd1, 0xa4, 0xf5, 0xa7, 0x67, 0xac, 0x58, 0xe6, -0x33, 0x9e, 0x55, 0xee, 0x1e, 0x75, 0xc7, 0xad, -0x10, 0x73, 0x0d, 0x0d, 0xaa, 0x17, 0x3d, 0x4c, -0x46, 0x88, 0x40, 0x12, 0xac, 0x9c, 0xed, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, -0x21, 0xc6, 0x1f, 0x10, 0x2b, 0x83, 0x94, 0xc1, -0xfe, 0x0c, 0x32, 0xe1, 0x68, 0x6e, 0x93, 0x00, -0xdd, 0xc7, 0x88, 0x82, 0x87, 0x80, 0x9a, 0xe2, -0xdb, 0xca, 0xf0, 0xa9, 0xd7, 0xb9, 0xb8, 0xe7, -0x3b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, -0x01, 0x22, 0x21, 0xbd, 0x6c, 0x9a, 0xe2, 0x68, -0x54, 0x0f, 0x4b, 0x01, 0x03, 0x97, 0x42, 0x8f, -0x15, 0x47, 0xfc, 0x61, 0x5d, 0x7d, 0xd2, 0x8a, -0x6a, 0xf4, 0x1a, 0x5a, 0x43, 0x75, 0x99, 0xd3, -0xd4, 0xbf, 0x7d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x9d, 0x01, 0x22, 0x21, 0xda, 0xca, 0x7b, -0x63, 0x4f, 0x79, 0xfd, 0xc7, 0xd9, 0x3f, 0x02, -0x14, 0x4a, 0x6a, 0x7a, 0x99, 0x08, 0xa4, 0x3a, -0xf4, 0xec, 0x55, 0x69, 0x26, 0x4e, 0x55, 0x4f, -0x02, 0xae, 0x63, 0x11, 0x7a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0xd3, -0xc3, 0x8f, 0xbc, 0x65, 0x81, 0xa1, 0x00, 0xb2, -0x0b, 0xe9, 0x72, 0xad, 0xa1, 0x32, 0x5c, 0x0e, -0x8d, 0xd6, 0xbc, 0x51, 0x06, 0xbf, 0x23, 0x0f, -0x2a, 0x0d, 0x5e, 0x7b, 0xc6, 0xf1, 0x49, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, -0x21, 0xae, 0xa0, 0x29, 0x6d, 0x69, 0xf6, 0x41, -0xd5, 0x30, 0xb9, 0xf3, 0xa4, 0x5e, 0xbf, 0x27, -0x58, 0xcf, 0x82, 0x6b, 0xe4, 0xd7, 0x8d, 0xf6, -0x2d, 0xb5, 0xc0, 0x0a, 0x9c, 0x73, 0x23, 0xcd, -0x01, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, -0x01, 0x22, 0x21, 0x56, 0x5a, 0xa8, 0xea, 0x32, -0xc1, 0x9a, 0xb7, 0xfa, 0x8b, 0xe7, 0xed, 0x84, -0xc3, 0x64, 0x11, 0x60, 0xc7, 0x63, 0x20, 0x6e, -0xce, 0xc1, 0x0b, 0xd2, 0xdb, 0x0d, 0x22, 0x2d, -0x2d, 0x97, 0xa7, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa1, 0x01, 0x22, 0x21, 0xfd, 0xa9, 0x43, -0x06, 0x44, 0x0e, 0xd6, 0x70, 0x74, 0xae, 0x5e, -0xe6, 0x78, 0x9b, 0x5b, 0x70, 0xb1, 0x2a, 0x89, -0x61, 0x00, 0x07, 0x0d, 0x3c, 0xfc, 0xd1, 0x2c, -0x8f, 0x8e, 0xa5, 0x5a, 0x9e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0x81, -0x4d, 0x66, 0xd4, 0x26, 0x52, 0x20, 0xc8, 0x52, -0x30, 0x05, 0x0f, 0x6f, 0xaa, 0x51, 0x74, 0x45, -0x3f, 0xd6, 0x18, 0xb8, 0xc3, 0x88, 0x18, 0x04, -0x6c, 0x28, 0x2f, 0x09, 0xe7, 0x16, 0xf7, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, -0x21, 0x20, 0x64, 0xca, 0xb4, 0x18, 0x50, 0x8a, -0x74, 0x1f, 0xe6, 0x09, 0xb7, 0x63, 0x2b, 0xe8, -0x1a, 0xc7, 0x35, 0x77, 0x7b, 0xb4, 0x6b, 0x73, -0x7a, 0x07, 0xd0, 0xe1, 0x66, 0x17, 0x6d, 0x22, -0x60, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, -0x01, 0x22, 0x21, 0x7b, 0xf1, 0x76, 0xbc, 0xa4, -0x54, 0x0d, 0xdf, 0x01, 0xbf, 0x36, 0x45, 0xb0, -0x41, 0x38, 0xe5, 0xee, 0xeb, 0xa7, 0x91, 0x7c, -0xc2, 0xec, 0xb8, 0x13, 0x2a, 0x4c, 0x57, 0xb9, -0x14, 0x86, 0x69, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa5, 0x01, 0x22, 0x21, 0x7c, 0x66, 0x12, -0xc7, 0xde, 0x37, 0x43, 0x49, 0x2c, 0xab, 0x18, -0xcc, 0x68, 0xe9, 0xcb, 0x4f, 0xb3, 0xb0, 0xd5, -0x55, 0xaf, 0x9b, 0xdc, 0x01, 0xa9, 0xa4, 0x8e, -0x2c, 0xf0, 0x86, 0x1b, 0x91, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0xc6, -0xad, 0xd5, 0xd2, 0x35, 0x7a, 0x7a, 0xc4, 0x8f, -0xca, 0x75, 0xa0, 0x4f, 0xf8, 0xec, 0x6f, 0x5e, -0xa8, 0x19, 0x21, 0x9c, 0xf7, 0xda, 0x27, 0x41, -0x7d, 0xab, 0xaf, 0xaf, 0xa1, 0xd5, 0xd5, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, -0x21, 0x19, 0x77, 0x32, 0xd1, 0x89, 0x58, 0x91, -0x6d, 0x68, 0x15, 0x9c, 0xf1, 0xb5, 0x01, 0x41, -0xc7, 0x40, 0x61, 0x1e, 0x1c, 0x9b, 0x1f, 0x98, -0x2b, 0x25, 0xef, 0x19, 0xea, 0x9e, 0x81, 0x7f, -0xa9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, -0x01, 0x22, 0x21, 0x77, 0x26, 0x99, 0x84, 0xa8, -0x88, 0x37, 0x51, 0x2b, 0x9b, 0x56, 0x30, 0x0f, -0x8f, 0xcf, 0x68, 0xef, 0x8b, 0x0b, 0x2e, 0x8d, -0x2a, 0x16, 0x58, 0xc9, 0x47, 0xdc, 0x0a, 0xa7, -0xe6, 0xc3, 0x46, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa9, 0x01, 0x22, 0x21, 0xd3, 0x30, 0x1b, -0xe8, 0xb9, 0xf6, 0xfc, 0x68, 0xac, 0x5b, 0xb6, -0xde, 0xde, 0x6f, 0xc1, 0xac, 0xa9, 0xa7, 0x89, -0x8b, 0x9f, 0x30, 0xc6, 0x45, 0x37, 0xb9, 0xae, -0x3a, 0x94, 0x4e, 0x4c, 0xaf, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0x72, -0x69, 0x31, 0x73, 0xb9, 0x5a, 0x6f, 0xec, 0x46, -0x45, 0x2e, 0xc7, 0x27, 0x2f, 0x3e, 0x46, 0x77, -0x7c, 0x9f, 0x4e, 0xd5, 0xee, 0x39, 0x99, 0x66, -0xbf, 0xfc, 0x71, 0xd6, 0xe5, 0xb8, 0xf1, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, -0x21, 0x93, 0x71, 0x75, 0x0b, 0xb9, 0xd9, 0x41, -0x6f, 0xe7, 0x1f, 0x62, 0xec, 0x72, 0x69, 0xb6, -0x69, 0x5f, 0x37, 0x32, 0xe8, 0x55, 0xab, 0xcd, -0xa2, 0x5b, 0x5a, 0xb2, 0x52, 0x6c, 0xb6, 0xea, -0x11, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, -0x01, 0x22, 0x21, 0xff, 0xc7, 0xb9, 0x15, 0x74, -0xa6, 0x38, 0x0a, 0xd0, 0xfd, 0x16, 0x4e, 0x85, -0xc5, 0x6f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xa1, 0xbd, 0xd2, 0x67, -0xf4, 0x33, 0xa6, 0xcc, 0x03, 0x04, 0x51, 0x02, -0x00, 0xad, 0x01, 0x22, 0x21, 0xa3, 0xa9, 0x8b, -0xe2, 0xff, 0x1d, 0x1e, 0xd1, 0xd2, 0x3b, 0x1b, -0x4b, 0x5a, 0xbb, 0x16, 0x14, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, -0x86, 0x45, 0x64, 0x05, 0xfe, 0xb6, 0x03, 0x04, -0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0x69, -0x9e, 0x94, 0xd2, 0xce, 0xc8, 0x74, 0x12, 0xc5, -0x72, 0xf5, 0xbe, 0x14, 0x57, 0xba, 0x14, 0xf5, -0xc9, 0x23, 0x8d, 0x5c, 0x26, 0x46, 0xcc, 0x42, -0xf0, 0x3d, 0x31, 0xec, 0xea, 0x52, 0x8d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, -0x21, 0xe3, 0xb7, 0x77, 0x21, 0x2d, 0x83, 0x22, -0x36, 0x4e, 0x68, 0xb2, 0xe6, 0x1b, 0x85, 0x03, -0x3d, 0xa0, 0xcf, 0xbc, 0xe8, 0x98, 0x49, 0xd5, -0x2d, 0x47, 0x26, 0x67, 0x8d, 0xfd, 0x5a, 0x97, -0x06, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, -0x01, 0x22, 0x21, 0x6b, 0x8c, 0x5c, 0xfc, 0xcf, -0xf9, 0xe4, 0xba, 0x81, 0xdf, 0x60, 0xfc, 0x5a, -0xab, 0xb4, 0xf3, 0x80, 0x55, 0xb1, 0xc7, 0x36, -0x0d, 0x69, 0xb2, 0x61, 0xd3, 0x35, 0x7b, 0xc8, -0x0e, 0xb4, 0xeb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb1, 0x01, 0x22, 0x21, 0xa8, 0xbb, 0x75, -0x8a, 0x96, 0x78, 0xf1, 0x06, 0xaf, 0x5b, 0xb3, -0xa4, 0x29, 0x12, 0x0b, 0xd3, 0xfe, 0x96, 0x33, -0x98, 0x76, 0xe7, 0xc6, 0xc8, 0x32, 0x03, 0x60, -0x68, 0xba, 0x99, 0x2f, 0xd6, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0x2d, -0x82, 0xd8, 0x3a, 0xd2, 0x4b, 0x59, 0x14, 0x8d, -0x24, 0xdd, 0x43, 0x1c, 0x99, 0x4a, 0x29, 0x88, -0x34, 0x6b, 0x17, 0x8e, 0xd8, 0xc1, 0x55, 0xd4, -0x43, 0x7f, 0xd9, 0xb4, 0x65, 0x00, 0x83, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, -0x21, 0x1d, 0xbc, 0x78, 0x09, 0x1d, 0xa8, 0x6e, -0x28, 0x38, 0x0d, 0x7e, 0x52, 0x34, 0xf9, 0x92, -0x60, 0x92, 0x1c, 0xe9, 0xc2, 0x59, 0x0a, 0x45, -0x5e, 0x63, 0xc8, 0x41, 0x33, 0x11, 0x7b, 0x9b, -0xd7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, -0x01, 0x22, 0x21, 0x1a, 0x51, 0xa0, 0xf2, 0xbf, -0xa4, 0x57, 0xe8, 0x16, 0x3d, 0xe6, 0x06, 0xc8, -0x78, 0x15, 0xda, 0xe0, 0xa2, 0x5c, 0x6f, 0xf1, -0x68, 0x89, 0x5c, 0xc9, 0xbe, 0x37, 0xc3, 0x2f, -0x60, 0x20, 0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb5, 0x01, 0x22, 0x21, 0x25, 0xa9, 0x88, -0x0d, 0x34, 0x65, 0xee, 0x7b, 0xb2, 0x80, 0x59, -0x99, 0x8c, 0xc8, 0x88, 0xd1, 0x89, 0x84, 0xaf, -0x5c, 0x06, 0xb1, 0xaa, 0x5b, 0x24, 0x6e, 0xaa, -0x27, 0xec, 0x0d, 0xdf, 0xa7, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0x22, -0x92, 0x5b, 0xb0, 0xf6, 0x15, 0x5c, 0x5c, 0x5b, -0xf7, 0x4a, 0xfd, 0x02, 0xe2, 0x6b, 0xa3, 0xbd, -0xf3, 0xac, 0x12, 0x1e, 0x1d, 0x65, 0x01, 0xc7, -0x67, 0xa9, 0x2e, 0xca, 0x8d, 0x17, 0x3d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, -0x21, 0xd2, 0x85, 0xac, 0x09, 0x81, 0x92, 0xc3, -0x1f, 0x79, 0x79, 0xd3, 0xbf, 0xbe, 0x32, 0x1b, -0x43, 0xd2, 0x42, 0x4a, 0x0f, 0x7e, 0xb6, 0xe4, -0x02, 0x92, 0xe6, 0x5d, 0x91, 0x07, 0xbd, 0x0b, -0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, -0x01, 0x22, 0x21, 0x60, 0xf2, 0x09, 0x7e, 0xe6, -0x60, 0x40, 0x92, 0x9e, 0xdb, 0x33, 0x69, 0x28, -0xcf, 0x08, 0x03, 0x48, 0x1c, 0xdd, 0x45, 0x58, -0xb5, 0xd0, 0x5a, 0xe9, 0x1b, 0x6b, 0x39, 0x2b, -0x97, 0xba, 0xa7, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb9, 0x01, 0x22, 0x21, 0xb9, 0xe8, 0xb7, -0x70, 0xe0, 0x6a, 0x9e, 0xf2, 0x3c, 0xe6, 0x8f, -0xae, 0x79, 0x3d, 0x9c, 0x70, 0xa5, 0x93, 0x41, -0xd1, 0xaf, 0x64, 0x88, 0x0d, 0x28, 0x27, 0x0d, -0x0b, 0x94, 0x8d, 0x6d, 0x9d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0xd0, -0x5d, 0xa0, 0xa4, 0x44, 0x56, 0x7a, 0xd0, 0xab, -0xbd, 0x7c, 0x46, 0x02, 0xae, 0xce, 0xf6, 0xef, -0x84, 0x32, 0x16, 0x1f, 0x68, 0xe2, 0xc3, 0xbb, -0xf2, 0xc0, 0xb0, 0xaf, 0xed, 0x50, 0x59, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, -0x21, 0x88, 0x3b, 0xa0, 0x41, 0xd0, 0xbc, 0xd4, -0x3d, 0xfe, 0x8d, 0x1c, 0x03, 0x7f, 0x55, 0x65, -0xa5, 0x77, 0xd7, 0x5a, 0x8b, 0x5a, 0xce, 0x66, -0x6e, 0x0f, 0x17, 0x1d, 0x90, 0x8f, 0xfe, 0xa6, -0x39, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, -0x01, 0x22, 0x21, 0x84, 0x4e, 0x6a, 0xb7, 0x8a, -0x78, 0x1f, 0xfb, 0x91, 0x79, 0x82, 0x74, 0xf2, -0x37, 0x13, 0x5a, 0x52, 0x1a, 0xc0, 0x0b, 0xc6, -0xf6, 0xb8, 0x51, 0xa0, 0xda, 0x5d, 0x47, 0xd9, -0x14, 0x9f, 0xb2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xbd, 0x01, 0x22, 0x21, 0x18, 0x5e, 0x3d, -0x3d, 0x5b, 0xb9, 0xc3, 0xae, 0xe2, 0x8b, 0xc9, -0xe6, 0xe0, 0x5c, 0x30, 0x84, 0x3e, 0xcf, 0xdc, -0xbe, 0xf0, 0x70, 0xf6, 0xc7, 0x43, 0xe7, 0x35, -0xcd, 0x55, 0x85, 0x21, 0xad, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0x79, -0x70, 0x14, 0x2e, 0xac, 0xa1, 0xf3, 0x62, 0xa0, -0x32, 0xd6, 0x2f, 0x84, 0x3c, 0x9c, 0xc3, 0x8d, -0xf4, 0x92, 0xb1, 0x8d, 0x02, 0x87, 0x85, 0x8a, -0xf0, 0x85, 0x7b, 0x19, 0x7d, 0xdd, 0xa5, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, -0x21, 0x77, 0xaa, 0x36, 0x21, 0x95, 0xe9, 0x3e, -0x97, 0x53, 0x88, 0x35, 0xae, 0xb2, 0x64, 0x2f, -0x1c, 0x12, 0x26, 0x98, 0xf9, 0x36, 0x84, 0x23, -0xbb, 0xd6, 0x11, 0x21, 0x15, 0x2b, 0xd4, 0x86, -0xd5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, -0x01, 0x22, 0x21, 0xdc, 0xf9, 0x27, 0xd0, 0x28, -0x58, 0xf9, 0xb8, 0x66, 0x92, 0x22, 0x6b, 0x88, -0x5a, 0x18, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x52, 0x22, 0x88, 0x46, -0xaf, 0xdd, 0x2f, 0x3c, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc1, 0x01, 0x22, 0x21, 0xdb, 0x33, 0x53, -0xa8, 0xd0, 0xb2, 0x7e, 0xeb, 0x9b, 0x5b, 0x2e, -0xcc, 0x33, 0x0a, 0xc6, 0xcd, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x90, -0xd1, 0x1c, 0x31, 0xb1, 0xcd, 0xd0, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0x4f, -0xc1, 0xa3, 0xa0, 0x85, 0x4f, 0x5c, 0xbf, 0x37, -0x04, 0x9d, 0x11, 0x96, 0xa1, 0xbe, 0x3b, 0x9c, -0x65, 0x01, 0xe5, 0x0a, 0xc2, 0x76, 0x0c, 0x37, -0xcf, 0x47, 0x2d, 0xdd, 0xc0, 0xd8, 0xee, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, -0x21, 0x76, 0x98, 0xbd, 0x60, 0xaa, 0x21, 0x90, -0xcf, 0xed, 0xb8, 0x4e, 0xec, 0x3c, 0x3e, 0x1b, -0x61, 0x84, 0x98, 0x81, 0x49, 0x0a, 0x97, 0x7e, -0x96, 0x52, 0x70, 0xdd, 0x3f, 0x89, 0x92, 0x1c, -0xb1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, -0x01, 0x22, 0x21, 0xe8, 0xfe, 0x22, 0x38, 0xc6, -0x7c, 0xac, 0xc1, 0x75, 0x1b, 0xba, 0xb4, 0xc9, -0xa7, 0x51, 0x6a, 0x09, 0x9a, 0x72, 0x4f, 0xed, -0xfe, 0xf7, 0x10, 0x79, 0x49, 0xc6, 0xd6, 0xc6, -0x03, 0xff, 0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc5, 0x01, 0x22, 0x21, 0x2f, 0x69, 0xe7, -0xab, 0x6a, 0xc9, 0xf9, 0x3b, 0xcd, 0x32, 0x9f, -0x53, 0x29, 0x67, 0x5a, 0x4e, 0xbc, 0x60, 0x39, -0xbd, 0x4b, 0x4c, 0xce, 0x17, 0xc6, 0x6c, 0x29, -0xf9, 0x6e, 0xa8, 0x6c, 0x17, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0x43, -0x81, 0x1b, 0x9a, 0xfd, 0x64, 0x06, 0xd1, 0xec, -0xd2, 0x99, 0x09, 0xef, 0xaf, 0x10, 0x86, 0x6e, -0xb9, 0xec, 0xd1, 0x28, 0x8e, 0x58, 0xc9, 0x16, -0x44, 0x02, 0xf3, 0xdc, 0x21, 0xb3, 0xc2, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, -0x21, 0xe7, 0xcb, 0xb8, 0xa7, 0x37, 0x51, 0x81, -0x33, 0x72, 0xd9, 0xe5, 0x92, 0xa2, 0xae, 0x91, -0x97, 0x8e, 0x32, 0x4c, 0xb4, 0x90, 0x6d, 0x8f, -0x44, 0xfa, 0x88, 0x16, 0x20, 0x85, 0xac, 0xbe, -0xc2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, -0x01, 0x22, 0x21, 0xa5, 0x7b, 0x94, 0x2a, 0x56, -0x31, 0x21, 0x6f, 0x6a, 0xb9, 0x10, 0x95, 0x6a, -0x84, 0x9d, 0x6c, 0xa3, 0xc5, 0x7c, 0x38, 0xda, -0x4d, 0x4b, 0xb5, 0x67, 0xcc, 0x53, 0x74, 0x25, -0xae, 0x29, 0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc9, 0x01, 0x22, 0x21, 0x2c, 0xaf, 0xb5, -0x9a, 0xb7, 0x43, 0xc3, 0x5e, 0x4f, 0x09, 0xa2, -0x98, 0xc2, 0x92, 0x02, 0x00, 0xd2, 0x5b, 0x08, -0x1c, 0x6c, 0xcf, 0x06, 0xde, 0x7a, 0xe1, 0x93, -0xa2, 0x98, 0x7f, 0xaa, 0x53, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0x2c, -0x37, 0x98, 0xa2, 0x33, 0xe7, 0xd9, 0x1f, 0xb6, -0x63, 0x28, 0x80, 0xc5, 0xc6, 0xde, 0x35, 0x94, -0x74, 0xd6, 0xae, 0xa0, 0xba, 0x09, 0xce, 0x89, -0xe7, 0x7b, 0xcd, 0xfe, 0xc7, 0xdf, 0x67, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, -0x21, 0x6c, 0x84, 0x63, 0x19, 0x07, 0x4b, 0x34, -0x2b, 0xa8, 0x46, 0x85, 0xd3, 0xea, 0xd5, 0x78, -0x71, 0xdc, 0x6d, 0x1a, 0xd5, 0x65, 0xac, 0xc4, -0x0c, 0xc6, 0xc9, 0x0c, 0x73, 0x3e, 0xed, 0xdf, -0xc0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, -0x01, 0x22, 0x21, 0xc0, 0x37, 0x16, 0xcc, 0x5a, -0x70, 0x13, 0xcb, 0xb7, 0x3e, 0x87, 0xa7, 0xab, -0xd1, 0x35, 0x13, 0x0a, 0x89, 0xf6, 0x94, 0xb2, -0x1b, 0xf8, 0x9d, 0x95, 0x34, 0x83, 0x98, 0x4a, -0x8c, 0x3d, 0xed, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xcd, 0x01, 0x22, 0x21, 0x8f, 0xc6, 0xe3, -0x5a, 0x9a, 0xd0, 0x8d, 0x89, 0x30, 0xa1, 0x53, -0x0e, 0x43, 0x04, 0xd1, 0x26, 0x88, 0xb4, 0xa8, -0x22, 0xa2, 0x64, 0xeb, 0xdc, 0x4b, 0xd8, 0x6d, -0x06, 0x7a, 0xc5, 0x80, 0xaa, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0x66, -0x81, 0x0a, 0x24, 0x4d, 0xe0, 0x41, 0x6d, 0x50, -0x8e, 0xa9, 0x95, 0x14, 0x8f, 0x5e, 0x54, 0x09, -0x07, 0x09, 0x16, 0xb0, 0x0f, 0x76, 0x53, 0x79, -0x59, 0x06, 0xaf, 0x41, 0x37, 0x79, 0x96, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, -0x21, 0xcc, 0xa7, 0x00, 0x95, 0x76, 0x27, 0xce, -0xe5, 0x64, 0x22, 0xe7, 0x5e, 0x6b, 0x45, 0xd8, -0x9e, 0x94, 0xeb, 0x6c, 0x21, 0x78, 0x58, 0x60, -0xbb, 0xfe, 0x96, 0xb9, 0x32, 0x95, 0xe8, 0xe5, -0xf6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, -0x01, 0x22, 0x21, 0xf8, 0xdc, 0xa0, 0x6d, 0xe0, -0xfb, 0x63, 0xa2, 0x08, 0xc0, 0xe6, 0xaf, 0x5b, -0xf6, 0x8f, 0x91, 0x99, 0xb5, 0x3b, 0x5d, 0xcc, -0x28, 0xab, 0xd2, 0xde, 0x52, 0x20, 0xcb, 0x61, -0x31, 0x90, 0x1e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd1, 0x01, 0x22, 0x21, 0x9a, 0x6a, 0x42, -0x77, 0x81, 0x1b, 0x63, 0x8c, 0xd2, 0x6b, 0x39, -0x41, 0x63, 0x32, 0xee, 0x7d, 0xe7, 0x86, 0x8d, -0x33, 0x88, 0xff, 0x3b, 0x15, 0x67, 0x2a, 0xa4, -0x91, 0xf3, 0x90, 0x2c, 0x4b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0xa3, -0xd0, 0x59, 0x1c, 0x9b, 0x25, 0xf4, 0xa9, 0x7e, -0xba, 0xf1, 0x20, 0xb5, 0x75, 0xa1, 0x69, 0xd6, -0x54, 0x62, 0x9c, 0x67, 0x65, 0x31, 0x90, 0x23, -0xfc, 0xb3, 0x55, 0x71, 0x0c, 0xed, 0x3f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, -0x21, 0x31, 0x8f, 0x6e, 0x3d, 0xbb, 0xf1, 0x07, -0x69, 0x55, 0xe7, 0xc9, 0xe9, 0xf1, 0xbb, 0xd9, -0x6a, 0xf3, 0x4f, 0x6a, 0x56, 0x85, 0xbd, 0x2a, -0x6f, 0xb0, 0x89, 0x02, 0x1e, 0xb5, 0x57, 0x77, -0x40, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, -0x01, 0x22, 0x21, 0x65, 0xe3, 0x47, 0x85, 0xf3, -0x3a, 0xc7, 0x5f, 0x4d, 0xa5, 0x40, 0x39, 0xd0, -0x86, 0xbe, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xb3, 0x20, 0x37, 0xcb, -0xaa, 0x8c, 0x23, 0xc8, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd5, 0x01, 0x22, 0x21, 0x85, 0xac, 0x9f, -0x49, 0xdf, 0x82, 0x00, 0x9d, 0x43, 0x65, 0x0c, -0xa2, 0x55, 0xcd, 0xe8, 0x11, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x50, -0xa4, 0x6b, 0x6b, 0xd3, 0xd7, 0xdb, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0x43, -0xa3, 0x63, 0x63, 0x33, 0x3b, 0x7a, 0xba, 0xb3, -0xd9, 0x9f, 0xd8, 0xc9, 0xba, 0x4c, 0x39, 0x56, -0x9a, 0x0c, 0xb6, 0x5d, 0x11, 0x31, 0x6c, 0x5a, -0x0d, 0x81, 0x20, 0x23, 0xbb, 0x5b, 0x8f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, -0x21, 0xdd, 0xdf, 0x22, 0xe3, 0x71, 0xb4, 0x6a, -0xfd, 0x56, 0xf3, 0x59, 0x5d, 0x9b, 0xda, 0x12, -0x3f, 0xf2, 0x01, 0xb5, 0x7d, 0x4b, 0xd7, 0x28, -0x11, 0xb3, 0xc5, 0xcb, 0xf1, 0x2b, 0x29, 0x99, -0xfe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, -0x01, 0x22, 0x21, 0xfc, 0xc8, 0xf4, 0xcb, 0xe3, -0xc6, 0x50, 0x49, 0xa4, 0xd6, 0xe3, 0xe1, 0xc8, -0x29, 0x15, 0xd8, 0x12, 0xa4, 0xef, 0x7e, 0x7f, -0x5d, 0xd1, 0x7d, 0xf9, 0xa0, 0x63, 0x10, 0x3f, -0x24, 0x78, 0x9f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd9, 0x01, 0x22, 0x21, 0x6e, 0xa4, 0x0a, -0x6a, 0xf3, 0x45, 0xac, 0xac, 0x7c, 0x92, 0x7c, -0xea, 0x92, 0x1c, 0xe9, 0x00, 0x68, 0x14, 0x8e, -0x73, 0x6d, 0xcc, 0x98, 0xe6, 0x35, 0x41, 0x29, -0x23, 0x5d, 0xce, 0xe7, 0x6d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0x83, -0x82, 0x0a, 0xd1, 0xd2, 0xbc, 0xe0, 0xe0, 0xbd, -0x09, 0x99, 0xc3, 0x91, 0x27, 0xd1, 0xaf, 0x78, -0xeb, 0x82, 0xc7, 0x6d, 0xa8, 0x56, 0xfe, 0x96, -0xe9, 0xbd, 0x35, 0x2c, 0xda, 0x5f, 0x51, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, -0x21, 0xb8, 0xb4, 0xbf, 0x16, 0x6f, 0xfc, 0xea, -0xda, 0x48, 0x10, 0xa6, 0x78, 0x64, 0x91, 0x69, -0xaa, 0x75, 0xfa, 0x56, 0x5a, 0xe9, 0x4a, 0xa3, -0xea, 0x09, 0x66, 0x7c, 0x27, 0x15, 0xc6, 0xb3, -0xe1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, -0x01, 0x22, 0x21, 0x2f, 0x71, 0xd7, 0x33, 0x5b, -0x04, 0xf7, 0x7c, 0x92, 0x30, 0x45, 0x12, 0x74, -0x9c, 0x09, 0x41, 0x9d, 0x7b, 0x8d, 0xfa, 0xb5, -0xa2, 0x9f, 0x79, 0x30, 0xb1, 0x36, 0x3c, 0xa2, -0x07, 0x2c, 0x46, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xdd, 0x01, 0x22, 0x21, 0x32, 0xb0, 0xff, -0x9b, 0xad, 0x69, 0x16, 0xf4, 0xd7, 0x0b, 0x16, -0x25, 0x20, 0x32, 0x12, 0x4b, 0x5c, 0xcd, 0xb9, -0x07, 0xb5, 0xba, 0xc5, 0xa1, 0x67, 0xfa, 0x0f, -0x44, 0xe5, 0x9b, 0x00, 0x28, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x7c, -0x06, 0xd6, 0xf0, 0xf6, 0x75, 0xf9, 0x55, 0x3e, -0x73, 0x86, 0x65, 0x1d, 0xec, 0xef, 0x7e, 0xe8, -0x80, 0x72, 0xd2, 0xcb, 0x90, 0x8c, 0x81, 0x5a, -0x77, 0xc2, 0x4a, 0x2b, 0x63, 0x7f, 0x43, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, -0x21, 0xf4, 0x10, 0xae, 0x4d, 0xfd, 0xf3, 0xee, -0x8f, 0x84, 0xfb, 0x94, 0x9a, 0x0e, 0xba, 0x84, -0xaf, 0x92, 0x07, 0xd9, 0x3d, 0xad, 0x84, 0x2f, -0x1c, 0x32, 0x7c, 0x6f, 0x45, 0x37, 0x89, 0x18, -0x0b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, -0x01, 0x22, 0x21, 0xf6, 0x08, 0xf4, 0x4d, 0x2a, -0xf3, 0x18, 0x12, 0x80, 0xb4, 0x10, 0x65, 0x4c, -0x77, 0x22, 0xdd, 0xf5, 0xd2, 0x6b, 0x9c, 0xbf, -0x40, 0x79, 0xce, 0x45, 0x4b, 0x51, 0x8d, 0x6d, -0x86, 0xce, 0xa1, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe1, 0x01, 0x22, 0x21, 0xae, 0x12, 0xf8, -0x91, 0x5b, 0x0a, 0x36, 0xfc, 0xcd, 0x3e, 0x28, -0x8a, 0xd9, 0x7d, 0x98, 0x0d, 0xaa, 0x0c, 0xb2, -0xae, 0x74, 0xac, 0xd0, 0xf7, 0x65, 0xdb, 0x2e, -0xef, 0x20, 0x07, 0xf1, 0x83, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0x39, -0x60, 0x50, 0xa7, 0xeb, 0xbd, 0x0c, 0x34, 0xcc, -0x4e, 0xed, 0x33, 0xc0, 0x20, 0xee, 0x08, 0x2c, -0x87, 0xfb, 0x79, 0x89, 0xed, 0x01, 0x82, 0xb0, -0xc4, 0xf5, 0xcf, 0xbc, 0x90, 0xcf, 0x23, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, -0x21, 0x72, 0xb8, 0x9a, 0x62, 0xb7, 0x09, 0xbe, -0xf2, 0x0a, 0xf2, 0x02, 0xdd, 0xe8, 0x4f, 0xe7, -0x0d, 0x4e, 0x27, 0x3c, 0xb9, 0x9d, 0xa2, 0x51, -0x06, 0xa0, 0x5d, 0x44, 0xf1, 0x63, 0x79, 0xa8, -0xe8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, -0x01, 0x22, 0x21, 0xd9, 0xa0, 0x43, 0xf7, 0x5a, -0xe5, 0x31, 0x04, 0x7b, 0x07, 0x97, 0x16, 0xa5, -0xd3, 0xe5, 0x4d, 0xe5, 0x88, 0x57, 0x65, 0x72, -0x37, 0x7e, 0x0f, 0x5d, 0xaf, 0x2e, 0x7a, 0x2c, -0xe3, 0xff, 0x65, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe5, 0x01, 0x22, 0x21, 0xce, 0xce, 0x1b, -0x97, 0xcb, 0xad, 0x40, 0x93, 0x50, 0x2f, 0x6e, -0xff, 0xa7, 0xe4, 0xef, 0x26, 0xa7, 0x5c, 0x27, -0x48, 0xc5, 0xc8, 0x18, 0x49, 0x60, 0x49, 0xd0, -0xba, 0x8a, 0x05, 0x40, 0x92, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x82, -0x9a, 0x03, 0x52, 0x30, 0xdc, 0x6f, 0x6b, 0x44, -0x26, 0x3e, 0x22, 0xb1, 0x83, 0x55, 0x35, 0x03, -0xcc, 0x1a, 0x3b, 0xd4, 0x4f, 0x9d, 0xc1, 0x5b, -0x21, 0xdf, 0x3e, 0x3c, 0x13, 0xcb, 0x3f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, -0x21, 0x5b, 0xd9, 0xca, 0xca, 0x16, 0x2f, 0x72, -0x03, 0x5b, 0x44, 0x0f, 0xb9, 0xe2, 0xfc, 0xc1, -0x3d, 0xc4, 0xc5, 0x2d, 0x31, 0x6a, 0x79, 0x0d, -0x0b, 0x4a, 0x5f, 0xa3, 0x9d, 0x4e, 0xad, 0x7d, -0x47, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, -0x01, 0x22, 0x21, 0x60, 0xa7, 0x02, 0xca, 0x3f, -0xf3, 0x16, 0xb0, 0xf2, 0xde, 0x4f, 0x8b, 0x37, -0x15, 0xfa, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xa7, 0x9e, 0xa4, 0xec, -0xcf, 0x9e, 0x64, 0x6f, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe9, 0x01, 0x22, 0x21, 0x7a, 0x63, 0x10, -0x95, 0x8e, 0xe3, 0x65, 0xac, 0xd1, 0x90, 0xb7, -0xd0, 0xe7, 0x31, 0x0f, 0xdc, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x23, -0xe4, 0x53, 0x96, 0x88, 0x53, 0xb8, 0x03, 0x04, -0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0x62, -0x6f, 0x15, 0x2d, 0x9a, 0x2f, 0xc5, 0xbb, 0xba, -0xc3, 0x58, 0x10, 0x68, 0x23, 0xf6, 0x31, 0xb0, -0x23, 0x71, 0x85, 0x2e, 0xfc, 0x3b, 0xca, 0x23, -0x85, 0x8e, 0x20, 0x3f, 0xde, 0xd1, 0xb4, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, -0x21, 0xf5, 0x1a, 0xb6, 0x77, 0x10, 0x8c, 0xbb, -0xf7, 0x64, 0xb5, 0x91, 0x56, 0x31, 0x6d, 0x8f, -0xb0, 0x4c, 0x20, 0x91, 0x15, 0x6e, 0x97, 0x0b, -0x33, 0x1a, 0x1f, 0x33, 0x9f, 0x11, 0x71, 0x0e, -0xad, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, -0x01, 0x22, 0x21, 0xd2, 0x4d, 0x8c, 0x6e, 0xbc, -0x31, 0xfc, 0xaf, 0x7f, 0x1f, 0x89, 0x92, 0x22, -0x65, 0x0c, 0xa0, 0x97, 0x3f, 0x81, 0x7c, 0x42, -0xc6, 0xef, 0xf9, 0x7d, 0x79, 0x72, 0x12, 0xc6, -0xe2, 0x79, 0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xed, 0x01, 0x22, 0x21, 0xac, 0x7a, 0xe9, -0x05, 0x05, 0x80, 0xe5, 0x63, 0x2f, 0xfa, 0x3f, -0x43, 0xc2, 0x30, 0x2a, 0x35, 0xee, 0x31, 0x4e, -0x45, 0x2e, 0x85, 0xdd, 0x9e, 0x0b, 0x96, 0x0b, -0x09, 0x00, 0x7d, 0x6d, 0x76, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0xf8, -0x5c, 0x8c, 0x0b, 0x76, 0x9c, 0xfa, 0xac, 0xd8, -0x52, 0xa5, 0xad, 0xd6, 0x38, 0x41, 0x38, 0xb7, -0xa0, 0x78, 0x4c, 0xc6, 0x93, 0x30, 0x23, 0x5e, -0x48, 0x0e, 0xe6, 0xfe, 0xfc, 0x5b, 0xd0, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, -0x21, 0xbb, 0xf6, 0xe0, 0xfa, 0xcd, 0x08, 0x8d, -0x62, 0x96, 0xde, 0x02, 0x7b, 0x81, 0x34, 0xfe, -0xc7, 0x68, 0xd9, 0x08, 0xce, 0x8a, 0x51, 0x37, -0x61, 0x10, 0x57, 0x81, 0xb6, 0x3b, 0x3c, 0xfe, -0x17, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, -0x01, 0x22, 0x21, 0x02, 0xc0, 0x80, 0xd2, 0xd1, -0x9f, 0xf4, 0x92, 0xaf, 0x02, 0xc3, 0x11, 0x16, -0xbd, 0x11, 0x55, 0xc8, 0xd7, 0x5d, 0x21, 0xa1, -0x64, 0x13, 0x21, 0xe1, 0x7f, 0x96, 0x84, 0x4c, -0x4a, 0xbd, 0xed, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf1, 0x01, 0x22, 0x21, 0x53, 0xc0, 0x1d, -0xb7, 0xa3, 0x48, 0xa9, 0x4b, 0xef, 0x0f, 0x5e, -0xfe, 0x43, 0xd1, 0xde, 0x30, 0x5d, 0xf7, 0x3c, -0x4d, 0xa6, 0x0d, 0x4c, 0x8e, 0x8b, 0x76, 0xa9, -0x94, 0x39, 0xa0, 0x27, 0x2d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0x55, -0x2e, 0xe4, 0xa2, 0x07, 0x75, 0xf8, 0xc2, 0x7d, -0x2a, 0xd0, 0xc3, 0x8b, 0xc6, 0xac, 0x8f, 0x16, -0x27, 0x1c, 0x59, 0x86, 0xb4, 0x9c, 0x3d, 0x8b, -0x2e, 0x35, 0xd7, 0x4c, 0xb9, 0x1d, 0xb2, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, -0x21, 0x86, 0xfa, 0x6e, 0xa9, 0x47, 0x61, 0x49, -0x49, 0x99, 0xa5, 0xeb, 0x8e, 0x7f, 0xb7, 0x81, -0x3a, 0xa8, 0x4e, 0xc0, 0x32, 0x7a, 0x6e, 0xc3, -0x7d, 0xd7, 0x3d, 0x2f, 0xdd, 0x5c, 0x3c, 0x7d, -0x1b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, -0x01, 0x22, 0x21, 0x2a, 0x0b, 0x43, 0xa6, 0x5d, -0x5d, 0x71, 0x66, 0x33, 0xfb, 0x47, 0x1a, 0x62, -0x20, 0x48, 0xbf, 0x68, 0x1a, 0x16, 0x91, 0xb3, -0xeb, 0xd2, 0x7a, 0x2d, 0xd7, 0xd9, 0xb4, 0x28, -0x76, 0x4e, 0x7e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf5, 0x01, 0x22, 0x21, 0x57, 0xaf, 0x8e, -0xe1, 0xfb, 0x11, 0x9b, 0xba, 0xff, 0x16, 0xd9, -0xd6, 0x5f, 0xb1, 0x63, 0xec, 0x1e, 0xb6, 0xe7, -0x5c, 0x50, 0x6a, 0x6c, 0x9e, 0x84, 0x73, 0xdd, -0xd9, 0x68, 0xaf, 0xf0, 0x53, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0x00, -0x5b, 0x8f, 0x1b, 0x10, 0x2e, 0x2b, 0x9e, 0x52, -0xbd, 0xd4, 0xd1, 0xd0, 0xc2, 0x5f, 0xbd, 0x22, -0x07, 0x07, 0x8e, 0x64, 0x2e, 0x36, 0x9f, 0x1f, -0x40, 0xa9, 0x37, 0xd7, 0x4b, 0x6e, 0x83, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, -0x21, 0xfe, 0x39, 0xbd, 0x90, 0xa7, 0x76, 0x19, -0x76, 0x8b, 0x1d, 0xa9, 0x28, 0x0c, 0xad, 0xb9, -0xee, 0xe5, 0x52, 0x2e, 0x04, 0x63, 0x95, 0x29, -0x82, 0x17, 0xc6, 0x10, 0x2c, 0x51, 0x20, 0x20, -0x47, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, -0x01, 0x22, 0x21, 0x96, 0xd5, 0x61, 0x98, 0xd4, -0xbe, 0xf3, 0x80, 0xb8, 0x77, 0x16, 0xf8, 0x0f, -0xc1, 0xdf, 0x44, 0x47, 0x72, 0xd5, 0x9b, 0xd5, -0xae, 0x36, 0xba, 0xb2, 0x73, 0xa1, 0x0a, 0xeb, -0x55, 0x2e, 0x61, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xf9, 0x01, 0x22, 0x21, 0xe9, 0x5c, 0xfe, -0xc5, 0x7b, 0x92, 0x01, 0x5e, 0xde, 0x50, 0xd4, -0x97, 0x5b, 0xb5, 0x12, 0x39, 0x46, 0x51, 0x66, -0x05, 0x91, 0x15, 0x1b, 0x46, 0x1e, 0x99, 0x48, -0x3d, 0x17, 0x28, 0x0a, 0x72, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0x9a, -0x21, 0xd1, 0x1e, 0x6e, 0x5e, 0x54, 0xa7, 0xdc, -0x8a, 0x0b, 0x8b, 0xa6, 0xb2, 0x48, 0x90, 0x33, -0x59, 0x1e, 0x34, 0xe6, 0x34, 0x88, 0x32, 0xe4, -0x2c, 0x2d, 0x01, 0xda, 0x2b, 0x50, 0x91, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, -0x21, 0x89, 0x38, 0x36, 0x02, 0x7f, 0x60, 0x2c, -0xb2, 0x0f, 0xf6, 0x81, 0xb0, 0xd5, 0x92, 0x94, -0x60, 0xd1, 0x28, 0x25, 0x3b, 0xd7, 0x2e, 0x5b, -0x1c, 0x5d, 0xcf, 0xee, 0xcb, 0xe5, 0x83, 0x37, -0x3b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, -0x01, 0x22, 0x21, 0xaf, 0x60, 0xd7, 0x10, 0x6a, -0x93, 0xe2, 0x4f, 0xdf, 0x32, 0xcf, 0x3f, 0xd7, -0xc8, 0x12, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xb1, 0xd5, 0x5d, 0xa5, -0xa9, 0xa0, 0xd3, 0x0a, 0x03, 0x04, 0x51, 0x02, -0x00, 0xfd, 0x01, 0x22, 0x21, 0xa9, 0x74, 0x6f, -0x3d, 0xfb, 0xb4, 0x93, 0x81, 0xba, 0x64, 0xb5, -0x05, 0x5b, 0x00, 0x4a, 0x51, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xf7, -0xa1, 0x76, 0xd0, 0x2d, 0x54, 0xc3, 0x03, 0x04, -0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0x42, -0x51, 0x5f, 0x97, 0x99, 0x39, 0xff, 0x1a, 0xca, -0x33, 0x28, 0xe9, 0x30, 0xbb, 0x98, 0x0a, 0x82, -0xfb, 0x0c, 0x07, 0x00, 0x37, 0x7a, 0x39, 0xf1, -0xe5, 0xac, 0x83, 0x44, 0xe0, 0x15, 0x57, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, -0x21, 0x12, 0x0c, 0xb5, 0xc2, 0xdd, 0x9c, 0x7f, -0x85, 0xac, 0xca, 0xce, 0x21, 0xed, 0x04, 0x20, -0xca, 0x2d, 0x99, 0x68, 0x11, 0xe5, 0x62, 0xa3, -0x41, 0x14, 0x48, 0xad, 0x8b, 0x73, 0x81, 0xa7, -0x61, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, -0x01, 0x22, 0x21, 0x4e, 0xaf, 0xc5, 0xd8, 0xe3, -0x45, 0x0b, 0x0c, 0x4c, 0xbe, 0xd6, 0x9c, 0x23, -0x9a, 0x5e, 0x49, 0xdc, 0xb9, 0xc0, 0x1f, 0x56, -0x70, 0x6c, 0x0a, 0x8b, 0x1b, 0x46, 0x1a, 0x9c, -0x34, 0xb6, 0x66, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x01, 0x01, 0x22, 0x21, 0xa7, 0xf9, 0x1b, -0x7c, 0xb5, 0xcb, 0x55, 0xa0, 0x7a, 0x36, 0x40, -0x39, 0x42, 0xf0, 0x8c, 0x17, 0xb0, 0xd9, 0xf5, -0xd0, 0x61, 0x95, 0xfa, 0x4b, 0x78, 0xe2, 0x75, -0x5b, 0x99, 0x61, 0x91, 0x87, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0x3a, -0xab, 0x15, 0xf7, 0x52, 0x86, 0x8a, 0x19, 0xd3, -0x48, 0x54, 0xc1, 0x2b, 0x09, 0x4c, 0xe5, 0x2b, -0x1f, 0x73, 0x83, 0x9d, 0x8a, 0xbd, 0x0a, 0x6b, -0xf0, 0x07, 0xa0, 0x2c, 0xa3, 0x53, 0x88, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, -0x21, 0x73, 0x16, 0x74, 0x7c, 0x76, 0x67, 0x3a, -0x84, 0xcc, 0xaf, 0xe7, 0x39, 0x7a, 0x39, 0xc4, -0x55, 0x6f, 0xe6, 0xbb, 0x33, 0xc5, 0x52, 0x9a, -0x28, 0x0b, 0x50, 0x7d, 0x9f, 0xd7, 0x33, 0x5f, -0x86, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, -0x01, 0x22, 0x21, 0x2a, 0x5a, 0x20, 0x60, 0xb7, -0x76, 0x87, 0xdf, 0xcb, 0xb4, 0x14, 0x7d, 0xff, -0x38, 0x41, 0x5c, 0x28, 0xb1, 0xe5, 0x8b, 0xc2, -0x6b, 0x70, 0x56, 0xa8, 0x2d, 0x5c, 0xbc, 0x2a, -0xb7, 0x93, 0x2c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x05, 0x01, 0x22, 0x21, 0x13, 0x1d, 0x4d, -0xff, 0x68, 0xa7, 0x1a, 0xdc, 0xcf, 0x8c, 0x48, -0xfc, 0xad, 0x25, 0xc9, 0x10, 0xb1, 0x15, 0x82, -0x18, 0x79, 0x01, 0x46, 0x51, 0x4a, 0x72, 0x92, -0x2d, 0xe5, 0xaf, 0xd9, 0xaa, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x21, -0x43, 0x62, 0xdc, 0x46, 0x5f, 0x06, 0x88, 0x18, -0x91, 0x30, 0x88, 0x70, 0xcb, 0xb8, 0x9a, 0xaa, -0xd2, 0xe9, 0xa6, 0x7b, 0x76, 0x5c, 0x83, 0xf2, -0x6a, 0x04, 0xd2, 0x21, 0xce, 0xda, 0x26, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, -0x21, 0x3f, 0x2b, 0x44, 0xe4, 0xb6, 0xcb, 0x12, -0x5f, 0xe6, 0x7e, 0x40, 0xa0, 0xc9, 0xea, 0x26, -0x75, 0x80, 0x65, 0x07, 0x5c, 0xc2, 0x5e, 0xe1, -0xb5, 0xd3, 0xd6, 0x5f, 0x91, 0xf0, 0x5d, 0x9a, -0xfe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, -0x01, 0x22, 0x21, 0xb9, 0xe3, 0x06, 0x60, 0x43, -0xd7, 0xfe, 0xed, 0xdb, 0x34, 0x1f, 0xcc, 0x4a, -0xbf, 0x2f, 0x5f, 0x70, 0xbf, 0x5a, 0x1e, 0xe3, -0x96, 0xee, 0xc7, 0x8c, 0x2c, 0xdc, 0x04, 0xb8, -0x3d, 0xe3, 0x9b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x09, 0x01, 0x22, 0x21, 0x22, 0xb0, 0x71, -0xfa, 0x0d, 0xe4, 0x2e, 0x83, 0xae, 0x5f, 0xe5, -0x39, 0x9c, 0xf6, 0x8f, 0x25, 0x49, 0x31, 0xdd, -0x4f, 0x26, 0x13, 0xf6, 0x8a, 0x7e, 0x17, 0xed, -0x8d, 0x15, 0x69, 0xc3, 0x18, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0xd4, -0x5c, 0xfa, 0x3a, 0xda, 0x85, 0xcc, 0xe6, 0x64, -0x33, 0x20, 0x8c, 0x7c, 0xd1, 0x8d, 0x34, 0xf4, -0xf0, 0xef, 0x9d, 0xe2, 0xf4, 0x2d, 0xf7, 0xa2, -0x15, 0xe7, 0x35, 0xc9, 0xb0, 0xf3, 0xeb, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, -0x21, 0x6e, 0xd5, 0xa0, 0xcf, 0xb1, 0x97, 0x18, -0xb9, 0x3a, 0x31, 0x20, 0x0d, 0x92, 0x40, 0x49, -0x37, 0x94, 0x90, 0xdf, 0x97, 0x08, 0xdc, 0xaf, -0x5a, 0x14, 0xdf, 0x1c, 0x79, 0xa5, 0xe5, 0x0a, -0xba, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, -0x01, 0x22, 0x21, 0x2e, 0xbb, 0x18, 0xb1, 0xee, -0x6c, 0x39, 0x09, 0xa8, 0xb4, 0x12, 0x3a, 0x9a, -0x4c, 0x64, 0xa6, 0xae, 0x8c, 0xa5, 0xc7, 0x1e, -0xc0, 0x9c, 0xc1, 0x7d, 0x87, 0xfc, 0xee, 0xb8, -0xc4, 0xce, 0x5d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x0d, 0x01, 0x22, 0x21, 0x64, 0x83, 0xf5, -0x7b, 0x11, 0x19, 0xfa, 0x68, 0xa5, 0x76, 0xf5, -0x9a, 0xf4, 0xe5, 0x42, 0x48, 0x66, 0x64, 0x94, -0xe5, 0xa8, 0x76, 0xee, 0x70, 0x5a, 0xa0, 0x6a, -0x16, 0xac, 0x0b, 0x57, 0xe0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0xe5, -0x65, 0xe1, 0x84, 0xf9, 0x4d, 0x42, 0xa1, 0x7b, -0xb6, 0x24, 0xbf, 0xba, 0xc8, 0xef, 0xfc, 0xdf, -0xf4, 0x51, 0xfc, 0x52, 0x43, 0x18, 0xc2, 0x01, -0x8f, 0xf7, 0x16, 0x46, 0xbd, 0xdd, 0x06, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, -0x21, 0x32, 0x2b, 0xb4, 0x67, 0x21, 0x2c, 0xf9, -0x03, 0x8e, 0x03, 0x0c, 0xa7, 0x33, 0x94, 0xd5, -0x23, 0x99, 0xbc, 0x62, 0xb9, 0x18, 0xc7, 0x92, -0x64, 0x75, 0xab, 0xba, 0xc3, 0x57, 0xd3, 0x5b, -0x23, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, -0x01, 0x22, 0x21, 0x9f, 0x6e, 0x60, 0xdf, 0x7e, -0xb0, 0x6a, 0x9a, 0x7b, 0x53, 0x0a, 0xc7, 0xed, -0x62, 0x66, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x77, 0x1d, 0x9d, 0xb2, -0x44, 0x57, 0x29, 0x0c, 0x03, 0x04, 0x51, 0x02, -0x00, 0x11, 0x01, 0x22, 0x21, 0xca, 0x39, 0xe1, -0x27, 0xcf, 0x08, 0x56, 0x9e, 0xaa, 0x8e, 0xaa, -0x7e, 0xab, 0x45, 0x16, 0x30, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xee, -0xd9, 0x5c, 0xdf, 0x50, 0xe9, 0x0e, 0x03, 0x04, -0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0x4a, -0xaa, 0x15, 0x0a, 0x90, 0xf0, 0x68, 0xa7, 0x99, -0xe3, 0x2f, 0xea, 0xed, 0x37, 0xc8, 0x53, 0xbe, -0x53, 0x30, 0x9d, 0xcb, 0x7d, 0xe7, 0x88, 0xda, -0x07, 0x74, 0xaf, 0xf3, 0xfb, 0x71, 0xc2, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, -0x21, 0x6d, 0xd6, 0xa5, 0x87, 0xd5, 0x44, 0x13, -0x88, 0x5f, 0x89, 0x6a, 0x6d, 0x55, 0xa2, 0x5d, -0xf4, 0x91, 0x4d, 0x6f, 0x4b, 0x5c, 0x00, 0xfc, -0x00, 0x25, 0x9c, 0x05, 0x24, 0xdc, 0x2f, 0x2e, -0x43, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, -0x01, 0x22, 0x21, 0xf4, 0xdf, 0x89, 0x1e, 0xd1, -0xbf, 0x55, 0xb1, 0xdb, 0xfc, 0xe9, 0xf3, 0x0e, -0x6a, 0xb7, 0x27, 0xc3, 0x55, 0x3e, 0xe6, 0x30, -0xbd, 0x2b, 0x24, 0x38, 0x72, 0xa0, 0x12, 0x29, -0x49, 0xc9, 0x56, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x15, 0x01, 0x22, 0x21, 0x9f, 0xa3, 0x21, -0xa6, 0xba, 0xd0, 0xf8, 0xd4, 0x39, 0xf9, 0x03, -0xc9, 0x5b, 0x0b, 0x51, 0xa6, 0x97, 0xe3, 0xc8, -0xa0, 0xa8, 0xc0, 0x91, 0x0a, 0xe7, 0x99, 0x1a, -0xc0, 0x8e, 0x2d, 0xf7, 0x68, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0xe2, -0x60, 0x55, 0xd8, 0x76, 0xbb, 0xfd, 0x9f, 0x17, -0xf6, 0x91, 0xa4, 0x8e, 0xa5, 0x23, 0xcf, 0xd4, -0x52, 0x32, 0x20, 0x9a, 0xde, 0x8e, 0x56, 0xeb, -0xcd, 0x46, 0xf6, 0x17, 0x19, 0x38, 0xe4, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, -0x21, 0xb7, 0x96, 0x73, 0xbf, 0xbf, 0xb0, 0xf5, -0x9d, 0xb8, 0xc6, 0x41, 0xcc, 0x98, 0x65, 0x2a, -0xea, 0xf1, 0xa7, 0x29, 0xca, 0x1c, 0xc3, 0x7f, -0x23, 0x57, 0x03, 0x64, 0x2c, 0xc9, 0xb8, 0xad, -0xff, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, -0x01, 0x22, 0x21, 0xf4, 0x6f, 0xc9, 0xfd, 0x59, -0x23, 0x50, 0xcd, 0xa9, 0xb4, 0x36, 0x5a, 0x19, -0xca, 0x4a, 0x6a, 0x0a, 0x53, 0xd4, 0x26, 0x74, -0xf4, 0xbb, 0x3d, 0x0f, 0x14, 0x4b, 0x38, 0x6d, -0x95, 0x8d, 0x0e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x19, 0x01, 0x22, 0x21, 0x22, 0x9d, 0xc3, -0x27, 0x88, 0xbc, 0xed, 0x51, 0x8f, 0x61, 0xd4, -0x35, 0x48, 0x2e, 0x87, 0x85, 0x89, 0xb1, 0x9c, -0x0e, 0x6a, 0x86, 0x1d, 0xf6, 0x60, 0x8a, 0x8a, -0xa7, 0x53, 0x88, 0x10, 0x18, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x23, -0x37, 0xea, 0x6c, 0x0e, 0x93, 0xa3, 0xf7, 0x4e, -0xb5, 0x3e, 0xb7, 0xdd, 0x3b, 0x61, 0x76, 0x8b, -0x7d, 0xa9, 0x7c, 0x0f, 0x07, 0xa6, 0xeb, 0x02, -0x92, 0xa0, 0xe6, 0x2b, 0x44, 0x94, 0xd3, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, -0x21, 0x26, 0x80, 0x06, 0xef, 0x98, 0x22, 0xef, -0x30, 0xc4, 0xa1, 0x07, 0xb7, 0xc8, 0x93, 0x6b, -0x36, 0x04, 0xff, 0x7c, 0x44, 0xae, 0x6f, 0x67, -0x4d, 0x93, 0xfd, 0x51, 0x95, 0xc7, 0x8d, 0x53, -0xc6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, -0x01, 0x22, 0x21, 0x3b, 0xe0, 0x73, 0x86, 0x6d, -0x4c, 0x5a, 0xef, 0xb4, 0x41, 0x63, 0x60, 0x99, -0x81, 0xb2, 0x7f, 0xa9, 0x50, 0xb9, 0x93, 0x89, -0xd6, 0x4f, 0x9d, 0xde, 0x83, 0x1b, 0x5c, 0xcd, -0x69, 0xb1, 0xcb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x1d, 0x01, 0x22, 0x21, 0xb5, 0xf3, 0xba, -0xd4, 0x41, 0x80, 0xca, 0xe9, 0x0c, 0x95, 0x3d, -0x89, 0x03, 0x93, 0x90, 0x53, 0x86, 0xbc, 0xb1, -0x92, 0xfd, 0x9b, 0x31, 0x98, 0x92, 0x95, 0x28, -0xda, 0xe9, 0x2f, 0xdd, 0x25, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0xbf, -0xe7, 0x2d, 0x80, 0x09, 0xae, 0x5f, 0xee, 0x18, -0xfd, 0xfd, 0x4c, 0x3d, 0xb3, 0xf5, 0x35, 0x98, -0x60, 0xee, 0x57, 0x4a, 0x0a, 0xca, 0x5d, 0x4f, -0x5a, 0x4d, 0x5f, 0x2e, 0xce, 0x3d, 0xfc, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, -0x21, 0x41, 0x12, 0xdb, 0xed, 0x0b, 0x58, 0x86, -0xc5, 0x3e, 0xba, 0x0c, 0xb3, 0xd1, 0xca, 0xdc, -0x9c, 0xe1, 0x9d, 0x16, 0x1a, 0xbd, 0x4b, 0x95, -0x7c, 0xba, 0x0a, 0xfd, 0x06, 0x22, 0x4e, 0x49, -0x40, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, -0x01, 0x22, 0x21, 0xd8, 0x27, 0xc1, 0xc2, 0xcc, -0x26, 0xf1, 0x9f, 0x75, 0xb6, 0x10, 0xfa, 0xe7, -0xfe, 0x80, 0x3d, 0x69, 0xbf, 0x9f, 0xb3, 0x57, -0x6f, 0x04, 0x64, 0x32, 0xb7, 0xd4, 0x9c, 0x1f, -0x9e, 0xad, 0x12, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x21, 0x01, 0x22, 0x21, 0x10, 0xb1, 0x3f, -0x16, 0x7a, 0x5b, 0x7a, 0x5c, 0x5c, 0x3b, 0x23, -0x85, 0x20, 0xb4, 0x6a, 0x48, 0x05, 0x4d, 0xdb, -0x00, 0x40, 0x18, 0xcc, 0xd5, 0x0a, 0x73, 0x64, -0x97, 0x69, 0xb0, 0x97, 0xee, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xea, -0x2f, 0xe0, 0xe4, 0x82, 0x90, 0x36, 0x13, 0x2c, -0x61, 0x99, 0x14, 0xc5, 0x81, 0x87, 0x5c, 0xa6, -0x1d, 0x2f, 0x20, 0x90, 0x75, 0x12, 0xfe, 0x32, -0xaf, 0xe4, 0x26, 0x40, 0x4a, 0x53, 0xc3, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, -0x21, 0x87, 0x9b, 0x55, 0xa3, 0xa3, 0xbc, 0x67, -0xa1, 0xc6, 0x35, 0x9f, 0x9a, 0x2c, 0x44, 0x47, -0xbf, 0x7d, 0xda, 0x80, 0x88, 0x32, 0xa2, 0x35, -0x7e, 0x01, 0x94, 0x79, 0x41, 0x97, 0x14, 0xa4, -0x63, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, -0x01, 0x22, 0x21, 0x40, 0xc4, 0x97, 0xdc, 0x3a, -0x56, 0x07, 0xb4, 0xd3, 0xb7, 0x47, 0x8f, 0x43, -0xfe, 0x77, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xc6, 0x8c, 0x41, 0x59, -0x28, 0x8c, 0x07, 0xd5, 0x03, 0x04, 0x51, 0x02, -0x00, 0x25, 0x01, 0x22, 0x21, 0x78, 0x09, 0x36, -0x82, 0x01, 0xf3, 0x0d, 0xea, 0x0b, 0x51, 0xf9, -0x35, 0x78, 0xaa, 0x25, 0xda, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x70, -0xee, 0xa7, 0x3e, 0x55, 0x10, 0x3a, 0x03, 0x04, -0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0xef, -0x46, 0x22, 0x39, 0xb8, 0xb8, 0xe1, 0x30, 0xc1, -0x4d, 0xef, 0xb1, 0x06, 0x9a, 0x18, 0x31, 0x41, -0x4f, 0x2a, 0x3e, 0x14, 0xe8, 0xcb, 0xa3, 0x09, -0xd7, 0xe5, 0xf5, 0x13, 0x6f, 0xfc, 0x41, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, -0x21, 0x51, 0x6a, 0xf6, 0x08, 0x5a, 0x1a, 0x1d, -0x14, 0x6d, 0x40, 0x31, 0x51, 0x47, 0xda, 0xd8, -0xef, 0xab, 0x34, 0x17, 0xf0, 0x8f, 0xa3, 0x5b, -0xa2, 0x35, 0x5b, 0x9a, 0xe7, 0x89, 0x8f, 0x8e, -0x32, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, -0x01, 0x22, 0x21, 0x8b, 0xcf, 0xa3, 0xdd, 0x3d, -0x60, 0x78, 0xcf, 0x35, 0x48, 0xf4, 0xbf, 0xbd, -0x74, 0x7b, 0xd2, 0x99, 0x15, 0xe0, 0xb8, 0xd6, -0x58, 0x4a, 0x5e, 0x83, 0x93, 0x4d, 0xa3, 0x0e, -0x7a, 0x75, 0x41, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x29, 0x01, 0x22, 0x21, 0xb0, 0x1a, 0xaf, -0x42, 0x32, 0x07, 0x91, 0xcc, 0x5c, 0x67, 0xb5, -0x11, 0x6e, 0x52, 0xf0, 0xc2, 0x9a, 0x38, 0xfb, -0xca, 0xf5, 0x20, 0xb4, 0xe3, 0x7a, 0xeb, 0x38, -0x6f, 0x2d, 0x6f, 0xf2, 0xbb, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0xa9, -0x87, 0xe5, 0x91, 0x48, 0x5f, 0xc1, 0x80, 0xc1, -0xdd, 0xee, 0x0b, 0x25, 0x74, 0x48, 0x1c, 0x1a, -0xee, 0x27, 0x61, 0xb6, 0xaa, 0x24, 0x4f, 0x9f, -0x51, 0x13, 0x99, 0x8b, 0xb0, 0x90, 0xfc, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, -0x21, 0x0a, 0x1b, 0x4e, 0x61, 0x6f, 0x82, 0x0f, -0xe7, 0x0e, 0xd0, 0x41, 0x61, 0x43, 0x98, 0x7f, -0x76, 0x0a, 0xb0, 0x59, 0x6a, 0x68, 0xd4, 0xd0, -0xd2, 0x4c, 0xbc, 0xea, 0xef, 0x42, 0x5e, 0x88, -0x84, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, -0x01, 0x22, 0x21, 0xd6, 0xdc, 0xa3, 0x1e, 0x04, -0xad, 0x98, 0x2a, 0x23, 0x1c, 0x17, 0xd5, 0x3a, -0xf5, 0x4d, 0x36, 0x56, 0x65, 0xa1, 0x6e, 0xbc, -0xe9, 0x88, 0xb6, 0x34, 0x2b, 0x19, 0x1a, 0x90, -0x73, 0x84, 0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x2d, 0x01, 0x22, 0x21, 0x52, 0x72, 0x54, -0xbb, 0x95, 0x45, 0xaa, 0x78, 0xe3, 0xf5, 0xf8, -0xe3, 0x13, 0x65, 0x77, 0x65, 0x49, 0x25, 0xdc, -0xe6, 0x8e, 0xb6, 0xd4, 0xac, 0x4c, 0x74, 0x40, -0xce, 0xa1, 0x62, 0x0d, 0x19, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0x87, -0x00, 0x71, 0x38, 0x3a, 0x5a, 0x74, 0xe8, 0x23, -0x62, 0x3b, 0x10, 0x3c, 0xab, 0xd4, 0x6a, 0xc4, -0x71, 0x6b, 0x37, 0x4f, 0x43, 0xea, 0x76, 0xdf, -0x9a, 0x2e, 0xb5, 0x1d, 0x6d, 0xd9, 0x59, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, -0x21, 0x73, 0x5c, 0x1b, 0x25, 0x4e, 0x46, 0xfb, -0xda, 0x4b, 0x45, 0xbc, 0xa6, 0xb1, 0x7d, 0x08, -0x57, 0xcc, 0x1c, 0x67, 0xed, 0x6b, 0x56, 0x5a, -0xf0, 0x18, 0x31, 0x65, 0x36, 0x05, 0xe3, 0x48, -0x48, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, -0x01, 0x22, 0x21, 0x33, 0x48, 0x19, 0x15, 0x4e, -0x22, 0xde, 0x1c, 0xea, 0x56, 0xe5, 0x3f, 0xe6, -0x69, 0xd9, 0xe3, 0x5d, 0xb0, 0x49, 0xc1, 0x5f, -0x17, 0x30, 0x21, 0x5d, 0xcb, 0x47, 0xe4, 0x58, -0x9c, 0x77, 0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x31, 0x01, 0x22, 0x21, 0x62, 0x4d, 0x4a, -0x49, 0x97, 0xe0, 0xbf, 0x6d, 0xd7, 0x24, 0x14, -0x3c, 0x63, 0xad, 0x6b, 0x67, 0xad, 0x6e, 0xca, -0x28, 0x40, 0x07, 0x33, 0x15, 0x90, 0x7b, 0xd8, -0x17, 0xa0, 0x9d, 0x14, 0xc0, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0xaa, -0x9c, 0x60, 0x72, 0x3c, 0x81, 0x3d, 0xb1, 0xfa, -0x76, 0x78, 0xbe, 0xc6, 0x0d, 0x54, 0x19, 0x67, -0x18, 0x1e, 0xe7, 0xd4, 0x2c, 0x5d, 0x0a, 0x75, -0x33, 0x14, 0x53, 0x5f, 0xde, 0x0c, 0x28, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, -0x21, 0x8e, 0xa2, 0x66, 0xef, 0xcd, 0xa7, 0x15, -0x09, 0xa1, 0x83, 0x7c, 0x2e, 0x6d, 0xad, 0x1f, -0xea, 0x3d, 0x90, 0x40, 0xa1, 0x14, 0x7f, 0x30, -0x4d, 0x06, 0x8b, 0x55, 0x98, 0x4c, 0x77, 0xea, -0x13, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, -0x01, 0x22, 0x21, 0xf6, 0x37, 0xc8, 0x55, 0xfe, -0xef, 0x0a, 0x10, 0xef, 0x66, 0x7b, 0x5c, 0x86, -0x23, 0xb6, 0xe8, 0xba, 0x74, 0xf3, 0x20, 0x26, -0xdd, 0xf1, 0xf7, 0x6f, 0xf4, 0xc1, 0x93, 0x41, -0x96, 0x78, 0x85, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x35, 0x01, 0x22, 0x21, 0x60, 0x03, 0x1f, -0x51, 0x23, 0x77, 0x97, 0x4d, 0xce, 0xd5, 0x01, -0xbb, 0x49, 0x26, 0xcc, 0x22, 0x45, 0x0d, 0x7b, -0x47, 0x6f, 0xd3, 0xf5, 0x17, 0x4c, 0x45, 0xa8, -0x3c, 0x87, 0x27, 0xe9, 0x0b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x2c, -0xae, 0x2f, 0x22, 0x30, 0x72, 0xcf, 0x9f, 0xc9, -0x63, 0xa0, 0x99, 0xb7, 0x6c, 0xb8, 0xb6, 0x78, -0x36, 0xc3, 0xe8, 0x37, 0xdc, 0xff, 0x7f, 0xa2, -0x0f, 0x28, 0x89, 0x49, 0x45, 0xac, 0x93, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, -0x21, 0x7c, 0xfb, 0x29, 0xf8, 0x71, 0x88, 0x3c, -0x0e, 0x1c, 0x70, 0xf5, 0x4e, 0x55, 0x20, 0x14, -0x4a, 0x14, 0x0e, 0x47, 0x75, 0x15, 0x13, 0x40, -0x77, 0x5d, 0x40, 0xb2, 0x3d, 0xad, 0x7d, 0xfe, -0x75, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, -0x01, 0x22, 0x21, 0x86, 0x94, 0xbb, 0x13, 0x90, -0xec, 0xfd, 0x34, 0x85, 0x3e, 0x81, 0x8f, 0x6c, -0x5b, 0x4c, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x50, 0xe5, 0x1d, 0xcc, -0xb3, 0xbf, 0xca, 0x71, 0x03, 0x04, 0x51, 0x02, -0x00, 0x39, 0x01, 0x22, 0x21, 0x1d, 0x97, 0x44, -0x06, 0xbc, 0x44, 0x5d, 0xf4, 0xcb, 0xfe, 0x12, -0x46, 0xde, 0xf0, 0x6a, 0x14, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xa9, -0xf0, 0xb7, 0x57, 0xb9, 0xbd, 0x80, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0x46, -0x12, 0x80, 0xd7, 0x46, 0x8d, 0x43, 0x59, 0x06, -0x2b, 0x45, 0xf1, 0xb9, 0x5e, 0x12, 0x93, 0x5a, -0x88, 0x9f, 0x3a, 0xe7, 0xe3, 0xa8, 0x2b, 0xa7, -0xb0, 0x6a, 0x65, 0xa8, 0x64, 0x1c, 0x91, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, -0x21, 0x63, 0x2d, 0xc1, 0x94, 0xd2, 0xce, 0x5d, -0x4d, 0xec, 0x75, 0x05, 0x1f, 0x89, 0x92, 0x27, -0xf1, 0x13, 0xb5, 0xd8, 0xfc, 0xfd, 0xff, 0xa6, -0x46, 0xd5, 0x23, 0x5b, 0xd9, 0xb8, 0x30, 0xcb, -0x57, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, -0x01, 0x22, 0x21, 0x4b, 0xfa, 0x1c, 0x5a, 0xb0, -0x5b, 0x8c, 0xc0, 0xf0, 0x62, 0x90, 0x02, 0x64, -0x60, 0xa8, 0x24, 0x9a, 0x67, 0x11, 0x82, 0x0b, -0x4d, 0x0a, 0x95, 0xd3, 0xf4, 0xa6, 0xb6, 0xa4, -0xc1, 0x3b, 0xb5, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x3d, 0x01, 0x22, 0x21, 0x50, 0x2f, 0xfe, -0x18, 0xcf, 0xee, 0xd6, 0x47, 0x5d, 0x2f, 0x65, -0xc9, 0x2e, 0x8c, 0x70, 0x4c, 0xf9, 0x5d, 0xf3, -0x22, 0x88, 0x54, 0xf7, 0x47, 0x18, 0xdf, 0x6e, -0xf7, 0xce, 0xfd, 0x07, 0x2a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x57, -0x5b, 0x8b, 0x51, 0x41, 0x76, 0xd4, 0xdf, 0xbb, -0x89, 0x7e, 0xcd, 0x2c, 0x5d, 0xa6, 0x89, 0x73, -0xe3, 0x3c, 0x3c, 0x67, 0xed, 0xcb, 0xc3, 0xa2, -0xff, 0xab, 0xcf, 0x2d, 0xef, 0x06, 0x7c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, -0x21, 0xdc, 0xda, 0x81, 0xe1, 0x2d, 0xd0, 0xd7, -0xa9, 0xd2, 0xbb, 0x82, 0x29, 0x8b, 0x5d, 0x76, -0x35, 0x99, 0x00, 0xb0, 0x4b, 0x3e, 0x43, 0x8b, -0xbb, 0xd8, 0xa7, 0xd1, 0x09, 0x62, 0xbd, 0x99, -0x24, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, -0x01, 0x22, 0x21, 0xb7, 0x8f, 0xcd, 0xf0, 0x3e, -0xc1, 0x99, 0x37, 0x87, 0x93, 0xbc, 0x3e, 0x4e, -0x4a, 0x15, 0x9e, 0x71, 0xae, 0x48, 0x21, 0xbc, -0xb7, 0x08, 0xd4, 0xe1, 0x96, 0x8f, 0x98, 0x33, -0x70, 0xde, 0xef, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x41, 0x01, 0x22, 0x21, 0x05, 0xe1, 0x9a, -0xcf, 0xc9, 0xd8, 0x14, 0xb9, 0x1f, 0xb2, 0x39, -0x57, 0x4d, 0xa5, 0x76, 0xc7, 0xfc, 0x1d, 0x05, -0xd3, 0xe6, 0xfc, 0x63, 0x78, 0x51, 0xdf, 0xfe, -0x51, 0xef, 0xe1, 0xdd, 0x25, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0xe3, -0xc3, 0xff, 0x0e, 0x0b, 0xb2, 0x2a, 0xef, 0x05, -0x08, 0xae, 0x89, 0x01, 0x40, 0xec, 0x65, 0x13, -0xd9, 0x8a, 0xe8, 0x2a, 0x4c, 0x8e, 0x02, 0xc5, -0x82, 0x91, 0x84, 0xc6, 0xa1, 0x5d, 0x13, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, -0x21, 0x13, 0x2b, 0xe1, 0x45, 0x79, 0x9e, 0xc0, -0x6e, 0x4e, 0xfb, 0x67, 0xb0, 0x7f, 0x06, 0x94, -0xc4, 0x1a, 0x10, 0x39, 0x2c, 0x69, 0x5f, 0x89, -0xa6, 0x8c, 0xa3, 0xed, 0xa2, 0xde, 0x9b, 0x12, -0xe8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, -0x01, 0x22, 0x21, 0x26, 0x1f, 0xe8, 0x63, 0xd0, -0x5f, 0xbd, 0x9c, 0x27, 0xf9, 0x82, 0xdd, 0x47, -0xaf, 0xcd, 0x72, 0x13, 0xa6, 0x07, 0xc9, 0x2c, -0xd7, 0x34, 0x85, 0xc2, 0xd3, 0x8f, 0xb5, 0x8c, -0x4f, 0x30, 0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x45, 0x01, 0x22, 0x21, 0x50, 0x19, 0xb7, -0xdc, 0xc6, 0x1d, 0x17, 0x98, 0xea, 0xf1, 0xf8, -0xef, 0x8b, 0x73, 0xd8, 0xf8, 0x69, 0x10, 0xf8, -0x5a, 0xe1, 0x17, 0xe7, 0x96, 0x60, 0x5a, 0x78, -0x0b, 0x5c, 0x21, 0x35, 0x46, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0xda, -0x55, 0xca, 0xd7, 0xb7, 0xa9, 0x8b, 0x02, 0x97, -0x66, 0x35, 0x4b, 0xd3, 0x67, 0x63, 0x0b, 0x5f, -0x06, 0x4e, 0xbb, 0x1e, 0xd7, 0xdb, 0x66, 0xe2, -0xf0, 0x04, 0xc6, 0x42, 0x3f, 0x90, 0xc4, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, -0x21, 0xa0, 0xc0, 0xe8, 0x5e, 0xb1, 0xe4, 0x4d, -0xbc, 0x0d, 0x2c, 0x45, 0x21, 0x06, 0x4a, 0x6b, -0x4b, 0x4d, 0x26, 0x40, 0xf9, 0x3d, 0x91, 0xe4, -0xa3, 0xa3, 0xff, 0xcc, 0xdc, 0x67, 0x1c, 0x30, -0xde, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, -0x01, 0x22, 0x21, 0xbe, 0xe6, 0xd0, 0xcd, 0xcd, -0x77, 0xa9, 0xd4, 0x34, 0xf0, 0x0a, 0x95, 0xde, -0x63, 0x80, 0x78, 0x54, 0x31, 0xe7, 0x4f, 0x35, -0x3b, 0x1d, 0x9f, 0x0b, 0x19, 0xbc, 0x4a, 0x2a, -0x54, 0x13, 0xd1, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x49, 0x01, 0x22, 0x21, 0x0d, 0xd3, 0x9a, -0x88, 0xc3, 0x9f, 0x15, 0xd5, 0xe1, 0x03, 0x05, -0xb3, 0xa8, 0xf1, 0x69, 0x05, 0xcc, 0xb4, 0xb7, -0x74, 0xae, 0x47, 0xc2, 0xce, 0x9a, 0x71, 0xb4, -0x05, 0x82, 0x16, 0x28, 0x90, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0xe3, -0x81, 0xf7, 0x9a, 0x96, 0x8d, 0x78, 0x09, 0x4f, -0x68, 0xd2, 0x6c, 0x44, 0x13, 0x59, 0x6b, 0xd4, -0x03, 0x23, 0x6d, 0x06, 0xd5, 0x46, 0x2e, 0x2d, -0xaa, 0xdc, 0xbd, 0x8c, 0x1c, 0x05, 0xab, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, -0x21, 0xfb, 0x56, 0x9e, 0x32, 0x90, 0x07, 0x15, -0x19, 0xfa, 0xeb, 0x47, 0xc9, 0x04, 0x6d, 0x4b, -0x00, 0x81, 0xc0, 0xd1, 0xc7, 0xe5, 0x37, 0x12, -0x6b, 0x69, 0x81, 0x56, 0x95, 0x3f, 0xbf, 0xd2, -0x0b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, -0x01, 0x22, 0x21, 0x7f, 0xda, 0xb9, 0x53, 0x7e, -0x14, 0x8c, 0x6a, 0x85, 0xae, 0xdf, 0x6a, 0x4c, -0x0c, 0xfc, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x80, 0xb4, 0xf1, 0x7e, -0xea, 0xa2, 0xe1, 0x60, 0x03, 0x04, 0x51, 0x02, -0x00, 0x4d, 0x01, 0x22, 0x21, 0xc5, 0xa3, 0x94, -0x9d, 0x2f, 0x43, 0x2e, 0xbd, 0x3c, 0x9a, 0x68, -0x6d, 0x45, 0x01, 0x32, 0x74, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xa1, -0xc6, 0xbb, 0x77, 0xda, 0x70, 0xe6, 0x03, 0x04, -0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0xcb, -0xa7, 0x12, 0xbc, 0x12, 0x39, 0x36, 0x0e, 0x10, -0x93, 0xb8, 0xb6, 0x2e, 0xa9, 0x0e, 0xed, 0x4a, -0xc6, 0xd5, 0x80, 0x1b, 0x81, 0x0f, 0x89, 0xf1, -0xad, 0xdc, 0x38, 0x61, 0x00, 0x2f, 0x10, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, -0x21, 0x9d, 0xbd, 0x76, 0xaa, 0x55, 0x07, 0x2d, -0xd4, 0xec, 0xe2, 0xcc, 0xd4, 0x93, 0xca, 0x22, -0x47, 0xe7, 0xa3, 0x8b, 0xf3, 0x77, 0xe7, 0xac, -0x92, 0x20, 0xdc, 0x47, 0x87, 0x97, 0xdf, 0x44, -0xd2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, -0x01, 0x22, 0x21, 0x27, 0x78, 0x7e, 0xd1, 0x9e, -0xf5, 0x4b, 0x9c, 0x6b, 0x33, 0x73, 0xa7, 0xe7, -0x6d, 0x9a, 0xfa, 0x79, 0x4c, 0x72, 0xfe, 0xe0, -0x8e, 0x69, 0xa3, 0x4b, 0x2c, 0xaf, 0xe7, 0x91, -0x61, 0xfe, 0xd3, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x51, 0x01, 0x22, 0x21, 0xb6, 0xbd, 0xf3, -0xd3, 0xb5, 0x35, 0xac, 0x02, 0xb5, 0xb5, 0xce, -0xaf, 0xd8, 0xd6, 0xd5, 0x7d, 0x16, 0x98, 0x10, -0x4e, 0xe5, 0x6b, 0x57, 0xdf, 0x50, 0x42, 0x7f, -0x0f, 0xd8, 0xfa, 0x0b, 0x14, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0x99, -0xc6, 0xee, 0xd7, 0xed, 0xb6, 0xba, 0x00, 0xf2, -0x23, 0x85, 0x34, 0xf2, 0x86, 0x14, 0x4a, 0x33, -0xce, 0x67, 0x9e, 0xa3, 0xf9, 0x27, 0x2e, 0x1b, -0xfc, 0x9e, 0xf7, 0x83, 0xeb, 0xce, 0x7c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, -0x21, 0x8a, 0xd5, 0x52, 0x9a, 0x16, 0x4a, 0x42, -0x88, 0x07, 0x2e, 0xb5, 0xaf, 0x6f, 0xd2, 0xf5, -0xbb, 0x81, 0xd8, 0xe0, 0x3b, 0x1f, 0x26, 0x2b, -0xc0, 0x67, 0xf1, 0x41, 0x63, 0xc0, 0x78, 0x8e, -0x34, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, -0x01, 0x22, 0x21, 0xfd, 0x9b, 0xce, 0x21, 0x54, -0x15, 0x10, 0xcd, 0x4d, 0xd6, 0x98, 0xac, 0x9c, -0x6c, 0x7e, 0x24, 0x4b, 0x01, 0x4e, 0xaa, 0x29, -0xd0, 0x9d, 0x65, 0x19, 0x2a, 0x7a, 0xae, 0x79, -0x2c, 0x8c, 0xbe, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x55, 0x01, 0x22, 0x21, 0x26, 0x2a, 0xb8, -0x56, 0x37, 0x2a, 0xd7, 0x92, 0x83, 0xeb, 0xb2, -0xbc, 0x3e, 0x32, 0xe3, 0xb8, 0xf8, 0x45, 0x18, -0xb1, 0x22, 0x6b, 0xc0, 0x56, 0xa4, 0x1b, 0x78, -0x9d, 0xd3, 0xff, 0xd8, 0x08, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x0a, -0xfc, 0x1c, 0x8d, 0x07, 0x4d, 0xde, 0x23, 0x95, -0x5a, 0x89, 0x12, 0x42, 0x95, 0x46, 0x7b, 0x29, -0xed, 0xeb, 0x1d, 0xa9, 0x68, 0x6e, 0xe9, 0x0e, -0x34, 0x17, 0x4a, 0x91, 0xc8, 0xd2, 0x82, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, -0x21, 0xe4, 0xb6, 0xc4, 0xfd, 0xf4, 0x6d, 0x7a, -0x03, 0xf4, 0xd8, 0xc0, 0xf5, 0x2d, 0x15, 0xb9, -0xf1, 0x3e, 0xb6, 0xad, 0xc9, 0xe6, 0x67, 0x9c, -0x1f, 0xc0, 0x91, 0x21, 0xe6, 0xca, 0x63, 0x91, -0x11, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, -0x01, 0x22, 0x21, 0x12, 0x08, 0x31, 0x02, 0x1b, -0xd7, 0xcc, 0x94, 0x50, 0x1e, 0x39, 0xf6, 0x77, -0xfc, 0x83, 0xdb, 0x15, 0xb7, 0xb6, 0xaa, 0xa6, -0x02, 0xf8, 0x0e, 0x90, 0xec, 0x5c, 0x16, 0xf7, -0xf1, 0xd4, 0x6c, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x59, 0x01, 0x22, 0x21, 0x38, 0xd6, 0x4b, -0x3a, 0xef, 0xed, 0x13, 0xc6, 0xd9, 0x64, 0xd7, -0xd3, 0xb8, 0xb7, 0x91, 0xd4, 0xe7, 0xbc, 0x83, -0x47, 0x56, 0xa2, 0x96, 0x4b, 0x20, 0x53, 0xb9, -0x77, 0x7a, 0x59, 0x8f, 0x4a, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x70, -0x09, 0x83, 0xc2, 0xdc, 0x00, 0x51, 0xf8, 0x0a, -0x0a, 0xb6, 0x10, 0x2e, 0x91, 0xb6, 0x9c, 0x0a, -0x7d, 0x5e, 0x89, 0x50, 0xbb, 0x83, 0x57, 0x64, -0x65, 0x9b, 0x8e, 0x59, 0xa2, 0x3b, 0x20, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, -0x21, 0x3d, 0x32, 0xa5, 0x8b, 0x51, 0x19, 0xfd, -0xb9, 0x51, 0xbd, 0x79, 0xc5, 0x33, 0xf1, 0x54, -0x6f, 0x74, 0x0d, 0x7c, 0xc3, 0x3e, 0xb6, 0x03, -0x42, 0x6f, 0xbf, 0x39, 0x2a, 0x79, 0xdb, 0xe4, -0x2c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, -0x01, 0x22, 0x21, 0xf8, 0x31, 0x02, 0xaf, 0x66, -0xbe, 0x81, 0xab, 0x65, 0x72, 0x5d, 0x7e, 0x93, -0x9c, 0x69, 0xd9, 0xc1, 0x93, 0x76, 0x94, 0x9e, -0x1f, 0xbf, 0xc0, 0xe7, 0x3b, 0xfe, 0xe6, 0xb1, -0x9e, 0xa1, 0x36, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x5d, 0x01, 0x22, 0x21, 0x8a, 0x8c, 0xa3, -0xdc, 0x70, 0x95, 0xf3, 0x54, 0xcc, 0xd7, 0x1f, -0x3f, 0x7c, 0xfa, 0x4e, 0x41, 0xd4, 0x41, 0x73, -0xe6, 0xed, 0xe9, 0xaa, 0x32, 0x70, 0x14, 0xb0, -0x04, 0xa4, 0xab, 0x1a, 0x30, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0x5d, -0xc6, 0xec, 0x40, 0x6a, 0xe9, 0xeb, 0x24, 0xff, -0x85, 0x82, 0x42, 0x6b, 0x60, 0x61, 0x4c, 0x1e, -0x80, 0x06, 0x51, 0x29, 0xa4, 0xa6, 0x15, 0xaa, -0x57, 0x4c, 0xf7, 0x13, 0xba, 0x0c, 0x4c, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, -0x21, 0x68, 0x84, 0x66, 0x5d, 0x34, 0xdd, 0xe7, -0x2d, 0x23, 0xe6, 0x35, 0x6d, 0x0c, 0x3f, 0x4f, -0xdd, 0x3e, 0x66, 0x26, 0x39, 0x07, 0x46, 0xff, -0x8d, 0x95, 0x1f, 0xdf, 0x3a, 0x7a, 0xef, 0x74, -0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, -0x01, 0x22, 0x21, 0x3f, 0x1e, 0xad, 0x72, 0xc6, -0x0b, 0x09, 0xe0, 0xc6, 0xdd, 0xde, 0x2d, 0x07, -0x0d, 0xae, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x5c, 0xf8, 0xed, 0xd1, -0x09, 0x46, 0x8c, 0xb2, 0x03, 0x04, 0x51, 0x02, -0x00, 0x61, 0x01, 0x22, 0x21, 0xe1, 0x12, 0xa1, -0x97, 0xa0, 0x2d, 0x63, 0x6c, 0xb2, 0x0f, 0x52, -0x8c, 0x99, 0x15, 0x57, 0x81, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x48, -0x46, 0x25, 0x59, 0x88, 0x56, 0x9b, 0x03, 0x04, -0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0xbd, -0x29, 0x3a, 0xa1, 0xdc, 0x92, 0x45, 0x0e, 0xb8, -0x8f, 0x9f, 0x2e, 0xf2, 0xc4, 0x76, 0x35, 0xfc, -0xcd, 0xe6, 0x3d, 0x7b, 0x63, 0x92, 0x7b, 0xfd, -0x06, 0x13, 0x78, 0x6e, 0xe1, 0x24, 0x50, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, -0x21, 0x2c, 0x9b, 0xfa, 0xb8, 0x77, 0x71, 0x3f, -0x48, 0x9b, 0x9a, 0xc6, 0x2f, 0xef, 0x8f, 0xc8, -0x7c, 0x42, 0xd6, 0x26, 0x12, 0x18, 0x64, 0x4f, -0x38, 0x94, 0x47, 0x2e, 0x53, 0xf6, 0x5b, 0x04, -0xc6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, -0x01, 0x22, 0x21, 0x9e, 0xd0, 0x72, 0x7a, 0xec, -0xc4, 0x60, 0xf3, 0x33, 0x82, 0x54, 0x95, 0xe5, -0x31, 0x69, 0x18, 0xde, 0x44, 0x79, 0x90, 0x0e, -0xb3, 0x7c, 0x04, 0xb9, 0x1d, 0x14, 0xed, 0xdd, -0xf3, 0x02, 0xff, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x65, 0x01, 0x22, 0x21, 0x00, 0xc9, 0x56, -0xf8, 0x76, 0x98, 0xf6, 0x2c, 0xfc, 0x20, 0xeb, -0xac, 0xf4, 0xa7, 0xfc, 0xe4, 0x15, 0x8c, 0xdb, -0x6c, 0xd5, 0x0f, 0x3d, 0xef, 0xfa, 0x8b, 0xee, -0xb1, 0x44, 0x0f, 0xb9, 0x60, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0x56, -0x65, 0x35, 0xea, 0x2d, 0xe2, 0x8f, 0xf8, 0x5a, -0xc2, 0x29, 0x9d, 0xcc, 0x07, 0x8d, 0xd3, 0x55, -0x7e, 0x16, 0x0d, 0xeb, 0xd6, 0x3a, 0x2b, 0x9d, -0xb0, 0xeb, 0x79, 0x36, 0xf7, 0x31, 0xb2, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, -0x21, 0x84, 0xd6, 0x31, 0x84, 0x97, 0xfd, 0x1a, -0x39, 0x06, 0xdf, 0x79, 0x11, 0x25, 0x5c, 0x3e, -0xb8, 0x95, 0xc6, 0xee, 0x99, 0x32, 0xda, 0x34, -0x89, 0x7d, 0xa2, 0x02, 0x9e, 0xd9, 0xa6, 0xdb, -0x64, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, -0x01, 0x22, 0x21, 0x40, 0xc8, 0x63, 0xaf, 0xbe, -0x7a, 0x6a, 0x94, 0xbe, 0x5c, 0x95, 0x69, 0x90, -0x0f, 0xcb, 0x19, 0xfb, 0xea, 0xf2, 0x35, 0x96, -0x45, 0xf0, 0xdf, 0x45, 0x60, 0xdb, 0x29, 0x8c, -0xbf, 0xa6, 0x7b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x69, 0x01, 0x22, 0x21, 0x47, 0xe7, 0x4d, -0x91, 0xb6, 0x7c, 0x9e, 0xdb, 0x60, 0xce, 0xc2, -0x6f, 0x6c, 0x26, 0x97, 0xad, 0x74, 0x07, 0xff, -0x5d, 0x27, 0x24, 0xbf, 0x48, 0xa0, 0x2f, 0xdb, -0x97, 0x80, 0x9a, 0xfe, 0xfa, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x2e, -0x86, 0xa5, 0xce, 0xa7, 0x88, 0x9a, 0xde, 0x2f, -0x23, 0x5e, 0x76, 0x98, 0x2e, 0xce, 0x9e, 0xd9, -0xd3, 0x75, 0xd6, 0x02, 0x7a, 0xc1, 0x29, 0xf0, -0x40, 0xb3, 0x8c, 0x7d, 0xce, 0xcd, 0x3b, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, -0x21, 0x4c, 0xad, 0x7c, 0xba, 0xf5, 0xd3, 0x2c, -0x25, 0xc7, 0x13, 0x39, 0x2d, 0x4d, 0x93, 0x20, -0x83, 0x3b, 0xeb, 0x33, 0x94, 0xee, 0x39, 0x2f, -0xe9, 0x8e, 0xd3, 0x16, 0xf0, 0x81, 0x8e, 0xec, -0x31, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, -0x01, 0x22, 0x21, 0x5a, 0x3a, 0x8f, 0xa5, 0xff, -0x7c, 0xaa, 0x52, 0x11, 0x40, 0xa2, 0x62, 0x33, -0x09, 0xf3, 0x7c, 0x4b, 0xc0, 0x4d, 0xb7, 0x7b, -0xcd, 0xbf, 0xe5, 0xd5, 0x62, 0x2b, 0xa5, 0x28, -0x6c, 0xd7, 0x7b, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x6d, 0x01, 0x22, 0x21, 0x0b, 0x4f, 0x35, -0xd8, 0x45, 0x20, 0xff, 0xbd, 0x1a, 0x93, 0x5e, -0xac, 0x58, 0xee, 0x06, 0xdc, 0xb9, 0x0e, 0x70, -0xdf, 0x06, 0x8c, 0x0f, 0x61, 0xcf, 0x4b, 0x98, -0x25, 0x2b, 0x22, 0x19, 0x80, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0x7d, -0x71, 0x7e, 0x56, 0xa4, 0xdd, 0x6e, 0x56, 0xfd, -0x4e, 0x09, 0xf8, 0x83, 0x70, 0x0e, 0xdf, 0xf8, -0x99, 0x88, 0xe9, 0x80, 0x94, 0x9b, 0x63, 0xe1, -0x47, 0xf3, 0x20, 0x07, 0xac, 0xe8, 0xb1, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, -0x21, 0xbf, 0x42, 0xc7, 0xb3, 0xcb, 0x0d, 0xee, -0xa7, 0x7d, 0xcc, 0xe5, 0x20, 0x42, 0x08, 0xd1, -0x5f, 0xd6, 0x89, 0x3f, 0x82, 0xd4, 0xa1, 0xb2, -0x56, 0x57, 0x2a, 0xcb, 0xe1, 0x7c, 0x8b, 0xd6, -0x13, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, -0x01, 0x22, 0x21, 0xaf, 0x80, 0x0a, 0x2e, 0x49, -0x70, 0x61, 0xde, 0xca, 0x80, 0x2b, 0x22, 0x8c, -0x03, 0x34, 0xbf, 0x6f, 0x67, 0x86, 0x2d, 0x5c, -0xf6, 0x13, 0xb1, 0xeb, 0x2c, 0xd4, 0x61, 0x55, -0x20, 0x34, 0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x71, 0x01, 0x22, 0x21, 0xb1, 0xeb, 0x58, -0xa6, 0xc7, 0xe3, 0x3c, 0x2b, 0x42, 0xc7, 0x2f, -0x75, 0x59, 0x09, 0x79, 0x08, 0x66, 0x15, 0x12, -0x91, 0xaf, 0x4e, 0x1c, 0xd1, 0x38, 0x9e, 0x98, -0x42, 0x03, 0x9d, 0xa8, 0xe1, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0xbe, -0xc8, 0x4f, 0xa1, 0xdf, 0xc0, 0x77, 0xb4, 0x47, -0x2f, 0x74, 0x1e, 0xb7, 0x59, 0x34, 0xd6, 0xc0, -0x95, 0x99, 0xc1, 0x88, 0xed, 0xc0, 0xa6, 0x2a, -0x3c, 0xff, 0x69, 0x6e, 0x72, 0xb7, 0x84, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, -0x21, 0x89, 0xf0, 0x0e, 0x19, 0xf9, 0x60, 0x83, -0x72, 0x58, 0x17, 0x4b, 0xd0, 0x16, 0x83, 0x6d, -0xab, 0x1a, 0xa9, 0xcb, 0x75, 0xfa, 0xce, 0x8d, -0x8d, 0xf7, 0xec, 0x60, 0x33, 0x37, 0xfc, 0x56, -0x28, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, -0x01, 0x22, 0x21, 0x11, 0xfc, 0x0e, 0x82, 0x3a, -0x43, 0x5e, 0xeb, 0xa7, 0x37, 0x8f, 0x2c, 0xdf, -0xde, 0x48, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x72, 0xd3, 0x6e, 0x5c, -0x07, 0x3f, 0x01, 0xfa, 0x03, 0x04, 0x51, 0x02, -0x00, 0x75, 0x01, 0x22, 0x21, 0x09, 0x43, 0xf7, -0xc1, 0xcf, 0x06, 0x6c, 0x98, 0x1d, 0x9b, 0x87, -0x04, 0x47, 0x72, 0x4f, 0x62, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x94, -0xac, 0xef, 0xef, 0xfa, 0x1a, 0xe6, 0x03, 0x04, -0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0xd1, -0xaf, 0x11, 0x96, 0xfa, 0x9c, 0xc5, 0x0d, 0x38, -0x97, 0xd0, 0xb0, 0x89, 0xf5, 0xd9, 0x68, 0x1a, -0xfa, 0x9e, 0x14, 0xe2, 0x95, 0xb1, 0x5d, 0x4d, -0xe5, 0x88, 0x1a, 0xa9, 0x35, 0x6e, 0x8d, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, -0x21, 0x29, 0x7a, 0x32, 0x77, 0x81, 0x11, 0xd9, -0xdb, 0x4b, 0x10, 0xa5, 0x97, 0x21, 0x82, 0x5d, -0x05, 0x2a, 0x0f, 0x6c, 0xe7, 0xfd, 0x83, 0xd9, -0x69, 0xcc, 0xdb, 0x6c, 0x33, 0xf5, 0xcf, 0xd0, -0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, -0x01, 0x22, 0x21, 0x2a, 0x9a, 0xec, 0xdd, 0x44, -0x36, 0xfa, 0xe5, 0x5d, 0x6d, 0xe5, 0xf9, 0xd9, -0x63, 0x98, 0x85, 0xf2, 0x3c, 0x0b, 0xea, 0x6c, -0x22, 0xf2, 0xe9, 0x4d, 0xa1, 0x05, 0x90, 0x6e, -0xb2, 0x22, 0xd6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x79, 0x01, 0x22, 0x21, 0xed, 0x8b, 0xf6, -0x28, 0x1c, 0xb9, 0x93, 0x2b, 0x2f, 0xcd, 0x2a, -0xb4, 0x1c, 0xb7, 0x53, 0x40, 0xdc, 0xba, 0xd6, -0xf6, 0x24, 0xca, 0x52, 0xd9, 0x30, 0x53, 0x34, -0xf4, 0xfd, 0xec, 0x31, 0x70, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0x13, -0x2a, 0x7d, 0x8f, 0x51, 0x11, 0x0d, 0xa1, 0xf3, -0x5e, 0xeb, 0xfb, 0x8c, 0x79, 0xf2, 0x7f, 0x22, -0x7d, 0x83, 0x28, 0xb7, 0xac, 0xed, 0xea, 0x3f, -0x48, 0x10, 0xd1, 0xb0, 0x9c, 0xce, 0x5a, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, -0x21, 0x1d, 0xd9, 0xbb, 0x4a, 0xf9, 0xe9, 0xab, -0xe6, 0x79, 0xed, 0x86, 0xd1, 0x90, 0xfc, 0x19, -0xf9, 0x4b, 0x4e, 0xdb, 0x5b, 0x0a, 0x45, 0xcf, -0x23, 0x4e, 0x43, 0x2b, 0xd7, 0x2e, 0x3e, 0xb3, -0x04, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, -0x01, 0x22, 0x21, 0xd1, 0x3e, 0x2c, 0xc8, 0xa5, -0x0f, 0x5a, 0x9f, 0xf4, 0xa8, 0xd6, 0x2d, 0xd8, -0x39, 0xd2, 0x4f, 0xec, 0xfc, 0x58, 0xb9, 0x7b, -0x74, 0x24, 0x0b, 0x39, 0x23, 0x8f, 0x96, 0x2c, -0x4b, 0x3a, 0x15, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x7d, 0x01, 0x22, 0x21, 0x0c, 0xa3, 0xd7, -0xe4, 0x51, 0xf1, 0x2d, 0xbf, 0x4c, 0x6d, 0xd4, -0x3b, 0xd9, 0x29, 0x84, 0x9c, 0x12, 0x56, 0xd6, -0x1f, 0x06, 0xfc, 0xd4, 0xce, 0xf0, 0x80, 0x12, -0xfd, 0x98, 0xf8, 0x85, 0x08, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0x5a, -0x3f, 0x7c, 0x70, 0xe5, 0x58, 0xc7, 0x81, 0x92, -0x9f, 0x48, 0x53, 0x35, 0x0f, 0x65, 0xa3, 0xa3, -0xb6, 0xd6, 0xbb, 0xc1, 0x9d, 0x74, 0xa1, 0x08, -0x16, 0x6f, 0x9f, 0xbe, 0x99, 0x8d, 0x78, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, -0x21, 0xf2, 0xde, 0xdf, 0x9f, 0xd2, 0x07, 0x0c, -0xcb, 0xec, 0xff, 0x4d, 0x21, 0xb3, 0x63, 0xd8, -0xaf, 0x48, 0x47, 0x4f, 0x48, 0xcb, 0x07, 0x6b, -0xee, 0xda, 0x6d, 0xd5, 0xf8, 0x50, 0x19, 0x52, -0x80, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, -0x01, 0x22, 0x21, 0x7a, 0xf4, 0xc9, 0x1a, 0x97, -0xb0, 0x5e, 0xda, 0xab, 0x3c, 0x7e, 0x7a, 0x98, -0x92, 0x5c, 0x53, 0x14, 0xc7, 0x24, 0x41, 0xff, -0x64, 0x2c, 0xfa, 0x55, 0xd9, 0xe0, 0x26, 0x77, -0xe4, 0x64, 0x2d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x81, 0x01, 0x22, 0x21, 0x08, 0xc9, 0x86, -0x00, 0xe6, 0xad, 0x36, 0x92, 0xfc, 0x7e, 0xf4, -0x30, 0x19, 0x1d, 0x56, 0xdc, 0xf8, 0x46, 0x94, -0xcf, 0x0b, 0x2e, 0xc6, 0x7c, 0x2c, 0x2b, 0x6a, -0xa0, 0x78, 0x82, 0xbe, 0x24, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0x32, -0x18, 0x4d, 0x44, 0xb0, 0x8e, 0x71, 0xfc, 0xe3, -0x30, 0x9b, 0x1c, 0x0c, 0xbb, 0xad, 0xa2, 0xdc, -0xa5, 0xa2, 0xa3, 0x16, 0x5d, 0xad, 0x04, 0x21, -0xe4, 0x22, 0x61, 0xc8, 0x51, 0x1c, 0x95, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, -0x21, 0x2d, 0x6f, 0x20, 0x3c, 0x1f, 0x7f, 0x67, -0xee, 0xd7, 0x40, 0x30, 0xad, 0x95, 0x6a, 0x75, -0x88, 0x0c, 0xe8, 0xd1, 0x99, 0x87, 0xf5, 0x70, -0x49, 0x6a, 0xcc, 0x87, 0x35, 0xf2, 0x5e, 0xa1, -0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, -0x01, 0x22, 0x21, 0xbe, 0xe4, 0x27, 0x75, 0x66, -0xb6, 0x0b, 0x79, 0xc1, 0x7d, 0x27, 0xb0, 0x36, -0x09, 0xcb, 0x91, 0x8d, 0xec, 0xa8, 0x2c, 0xce, -0x98, 0x65, 0xfa, 0xd9, 0x4f, 0x7b, 0xc4, 0xf1, -0xac, 0x95, 0xec, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x85, 0x01, 0x22, 0x21, 0x2c, 0x15, 0xd3, -0xfb, 0x40, 0x36, 0xfa, 0xf4, 0x29, 0xde, 0xe1, -0x85, 0xab, 0xe7, 0x62, 0x9a, 0x8a, 0x0f, 0xab, -0x33, 0xab, 0x0c, 0x77, 0x01, 0x77, 0xae, 0x85, -0x50, 0xa9, 0x1b, 0x31, 0x51, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0x10, -0xa1, 0x98, 0x55, 0xbd, 0x73, 0x84, 0x59, 0x83, -0x16, 0x6f, 0x5d, 0xda, 0x13, 0xe7, 0x3a, 0xb4, -0x02, 0xe5, 0x29, 0x4d, 0x2a, 0x72, 0x76, 0x53, -0x75, 0x88, 0x0c, 0xbd, 0xc8, 0xf0, 0x33, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, -0x21, 0x3a, 0x5d, 0xc1, 0xe0, 0x08, 0xa3, 0xd0, -0xc4, 0x2c, 0x44, 0x4b, 0x70, 0xf9, 0x20, 0xba, -0xdc, 0x51, 0xa0, 0x75, 0x23, 0xbf, 0xb9, 0xc5, -0x90, 0xd4, 0x75, 0xbe, 0xb4, 0x97, 0x59, 0x4e, -0x8b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, -0x01, 0x22, 0x21, 0xa9, 0x5c, 0xbd, 0x1c, 0x66, -0x74, 0xc0, 0x2c, 0xbf, 0x4e, 0x88, 0xa9, 0xd5, -0x90, 0xed, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x49, 0xe4, 0x57, 0xd8, -0xe5, 0xa0, 0x41, 0xad, 0x03, 0x04, 0x51, 0x02, -0x00, 0x89, 0x01, 0x22, 0x21, 0x7d, 0x75, 0xce, -0xb5, 0xa8, 0x45, 0xcf, 0xbe, 0xf7, 0x6e, 0x9e, -0x39, 0x4c, 0x37, 0x72, 0xb3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x26, -0x08, 0xff, 0x53, 0x16, 0xef, 0xad, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0x0a, -0x0b, 0xd4, 0x27, 0xd5, 0xf0, 0x8f, 0x95, 0x65, -0x8d, 0xcf, 0xfb, 0xc9, 0x84, 0x0a, 0xf5, 0x44, -0xfa, 0xaa, 0x37, 0x81, 0x1b, 0xab, 0x21, 0x8c, -0xbc, 0x71, 0x28, 0xf6, 0x52, 0x32, 0x1f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, -0x21, 0x9f, 0x5a, 0x44, 0xd1, 0xc5, 0x4a, 0x3c, -0x71, 0x17, 0x00, 0x95, 0xdc, 0x2f, 0x4e, 0xcd, -0x07, 0x85, 0xe6, 0xf1, 0xca, 0x29, 0x43, 0x43, -0xaf, 0xda, 0xb3, 0x24, 0xc7, 0x46, 0xbe, 0x1b, -0xe0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, -0x01, 0x22, 0x21, 0x0a, 0xf7, 0x1e, 0x11, 0x2f, -0xfd, 0x90, 0x12, 0xf7, 0x17, 0xec, 0x30, 0xdc, -0x1a, 0x7c, 0x32, 0x9f, 0x38, 0x06, 0x51, 0x7a, -0xad, 0xf9, 0xbb, 0x1b, 0x09, 0x15, 0x87, 0xbb, -0x25, 0x5a, 0x49, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x8d, 0x01, 0x22, 0x21, 0xd4, 0xb2, 0x1e, -0xe5, 0x8d, 0xd9, 0xf5, 0x43, 0xab, 0x68, 0x91, -0x05, 0x96, 0x0b, 0xea, 0xfe, 0x82, 0x9c, 0x92, -0xc7, 0x71, 0x03, 0xdc, 0xb9, 0x6d, 0xc4, 0xc4, -0x75, 0xc7, 0xd5, 0xc1, 0xc4, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x61, -0xb6, 0x2b, 0x71, 0x7f, 0xf6, 0x83, 0x4e, 0xfe, -0xba, 0xa1, 0x28, 0x87, 0x20, 0xae, 0x6b, 0x96, -0xd5, 0x96, 0x2d, 0x03, 0x15, 0x53, 0x41, 0x08, -0x4a, 0xcc, 0x68, 0x83, 0xd8, 0xe0, 0x7f, 0x00, -0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, -0x21, 0xe2, 0xb1, 0x25, 0xf5, 0x9e, 0x56, 0x12, -0x2b, 0x40, 0x4e, 0x98, 0x36, 0x4f, 0xa1, 0x57, -0x57, 0x6a, 0x61, 0x61, 0xf2, 0xdf, 0xdd, 0x53, -0x95, 0x22, 0xb8, 0x48, 0x56, 0xdf, 0xe5, 0x8c, +0x21, 0x6d, 0x20, 0x74, 0x62, 0x63, 0xf3, 0xf7, +0x4b, 0x3c, 0xb8, 0xaf, 0x67, 0x76, 0x3f, 0x2b, +0x44, 0x3e, 0xba, 0xbd, 0xb5, 0x4a, 0x2b, 0xce, +0x77, 0xe6, 0x1d, 0xb7, 0x8b, 0x38, 0xde, 0x2d, 0x58, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, -0x01, 0x22, 0x21, 0xa2, 0x4b, 0xde, 0xf2, 0xe8, -0xbe, 0x30, 0x2c, 0x50, 0xcc, 0x5e, 0xf2, 0xde, -0x7c, 0x51, 0x03, 0x17, 0x16, 0x3e, 0x47, 0xc3, -0xce, 0xd9, 0xf7, 0xfa, 0x33, 0x51, 0xf9, 0xfc, -0x0b, 0xb4, 0x9a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x91, 0x01, 0x22, 0x21, 0xa1, 0xbc, 0xd6, -0xa2, 0x9d, 0xf7, 0x56, 0xa3, 0x15, 0x89, 0xbd, -0x80, 0xe8, 0x66, 0xf8, 0x46, 0xb7, 0x4f, 0x1f, -0xf1, 0xc7, 0x66, 0x04, 0x3e, 0xef, 0x61, 0xf1, -0x83, 0x84, 0x77, 0x43, 0x3e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x54, -0x1c, 0xb0, 0xdd, 0x23, 0xd9, 0xfc, 0xa5, 0xcc, -0xf2, 0x17, 0xa5, 0x0f, 0x3a, 0xa8, 0x21, 0xd9, -0x80, 0xe0, 0xe5, 0xdd, 0xad, 0x09, 0x93, 0xcb, -0x0d, 0xa0, 0xf7, 0xb0, 0xd9, 0xf4, 0xcc, 0x00, +0x01, 0x22, 0x21, 0x12, 0xb6, 0x28, 0xfc, 0x84, +0x24, 0x83, 0x80, 0x44, 0x06, 0x01, 0x4b, 0x0c, +0x31, 0xc2, 0x24, 0x80, 0x8a, 0x8b, 0xcf, 0xef, +0x3e, 0x70, 0xa0, 0xb9, 0xda, 0x69, 0xdb, 0x44, +0xaa, 0x76, 0x30, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x91, 0x01, 0x22, 0x21, 0x74, 0x4a, 0x87, +0xa1, 0xd6, 0x6f, 0x74, 0x55, 0x64, 0x49, 0xcd, +0xf9, 0x79, 0x7e, 0x99, 0x21, 0xce, 0x6d, 0x6a, +0xa1, 0x83, 0x61, 0x1f, 0x15, 0x70, 0xdf, 0x23, +0x63, 0xd2, 0x30, 0x65, 0xf2, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x67, +0x5c, 0xc7, 0x1f, 0xb9, 0x16, 0x9c, 0xef, 0x9b, +0x7b, 0x8d, 0x18, 0x50, 0x8b, 0x55, 0x32, 0x0b, +0x81, 0x7b, 0xfb, 0x13, 0x4b, 0xa8, 0xde, 0xde, +0x13, 0x2d, 0x66, 0x48, 0x1f, 0x8f, 0x45, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, -0x21, 0x69, 0x26, 0x24, 0x40, 0x2b, 0x65, 0x9a, -0x4b, 0x65, 0x97, 0x85, 0x60, 0xd9, 0x56, 0xcc, -0xe6, 0x6c, 0x00, 0xb1, 0x47, 0xca, 0x65, 0x64, -0xd7, 0x2a, 0xce, 0xc2, 0x5e, 0xc4, 0x0f, 0x63, -0x4b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, -0x01, 0x22, 0x21, 0x4a, 0xe4, 0xe0, 0x67, 0x13, -0x9b, 0x41, 0x80, 0x46, 0x1e, 0x34, 0xbf, 0xde, -0x1e, 0x6c, 0xa5, 0x07, 0x68, 0xaf, 0x63, 0x01, -0x54, 0x7f, 0x47, 0xbe, 0xe4, 0xe1, 0xf6, 0x91, -0xcb, 0x8f, 0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x95, 0x01, 0x22, 0x21, 0xfa, 0xb5, 0x79, -0x63, 0xdc, 0xa8, 0x8e, 0x2b, 0x38, 0xa9, 0x76, -0x73, 0x02, 0x09, 0x2c, 0x34, 0xa8, 0x8d, 0x36, -0x65, 0x2c, 0x86, 0xe8, 0xe1, 0x6e, 0x31, 0xee, -0xb2, 0x27, 0x5f, 0x56, 0xc2, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0xdc, -0xab, 0x60, 0xcf, 0xfe, 0x01, 0xda, 0x2b, 0xf1, -0x17, 0x00, 0xb0, 0x2c, 0xf8, 0xe0, 0x80, 0x79, -0x70, 0x98, 0x64, 0xa4, 0xce, 0xee, 0xff, 0x0a, -0x79, 0x31, 0xb9, 0xbc, 0xc9, 0x69, 0xa4, 0x00, +0x21, 0x59, 0x14, 0x30, 0x17, 0x69, 0x81, 0xec, +0x37, 0x45, 0x04, 0x6d, 0x71, 0xca, 0x16, 0x56, +0x6e, 0xb3, 0x72, 0x8f, 0x77, 0xb5, 0xe7, 0x98, +0x2b, 0x7b, 0x96, 0x45, 0x0d, 0xf9, 0x68, 0x6b, +0x92, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, +0x01, 0x22, 0x21, 0xf7, 0xfa, 0x02, 0x49, 0xdb, +0xbc, 0x2c, 0x09, 0xda, 0xfb, 0x13, 0xa0, 0x53, +0x46, 0x35, 0x49, 0x77, 0xd3, 0xf9, 0x2e, 0x45, +0x02, 0x18, 0x52, 0x48, 0x5c, 0xca, 0xa3, 0x3a, +0xef, 0x54, 0xd9, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x95, 0x01, 0x22, 0x21, 0x01, 0x46, 0x55, +0x5c, 0x0a, 0xc7, 0x2b, 0xa1, 0x44, 0x08, 0xcc, +0xfb, 0xcb, 0xa8, 0x6b, 0xb3, 0xb7, 0x54, 0xea, +0x01, 0xb1, 0x67, 0x3d, 0x66, 0x60, 0xa0, 0xa1, +0x5d, 0xa7, 0xaf, 0x3c, 0x0a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0xfa, +0x2f, 0x33, 0x15, 0xf8, 0x8a, 0x43, 0x7f, 0x71, +0xc1, 0x23, 0xaf, 0x89, 0xb5, 0xca, 0x3a, 0x23, +0xd0, 0xcb, 0x56, 0x9b, 0xb6, 0xf2, 0x1f, 0x97, +0xe8, 0xcb, 0xe3, 0xab, 0x3e, 0x26, 0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, -0x21, 0x4f, 0xf8, 0xc7, 0x0c, 0x7d, 0x8f, 0x00, -0xec, 0xa2, 0x2b, 0x73, 0x26, 0x47, 0x98, 0x90, -0x43, 0x33, 0x5b, 0xb0, 0x30, 0x46, 0x40, 0x25, -0xef, 0xcd, 0x9c, 0x79, 0x4f, 0x99, 0x75, 0x5c, -0x71, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, -0x01, 0x22, 0x21, 0xa7, 0x6d, 0xbf, 0x7c, 0xa2, -0xe1, 0x36, 0xcf, 0x28, 0x5e, 0x25, 0xf8, 0xec, -0x6f, 0x65, 0x5f, 0xc3, 0xe7, 0x29, 0x61, 0x27, -0x9a, 0x45, 0xac, 0xee, 0x57, 0xc3, 0x57, 0xb4, -0x97, 0x7b, 0x4a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0x99, 0x01, 0x22, 0x21, 0x17, 0xbc, 0x36, -0xd9, 0xe5, 0x68, 0x27, 0x78, 0x79, 0xb0, 0x39, -0x2f, 0xbc, 0xcf, 0xde, 0xfe, 0x66, 0xa7, 0x81, -0xfe, 0x95, 0x8b, 0xae, 0x04, 0xb8, 0xa7, 0x49, -0x32, 0xb0, 0xff, 0x67, 0x5b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0x01, -0x12, 0x97, 0x18, 0xd8, 0x2a, 0x98, 0x16, 0x6d, -0x8b, 0xc5, 0x52, 0x51, 0x20, 0xde, 0x90, 0xec, -0xbc, 0x3f, 0x0c, 0x65, 0xbd, 0xba, 0x6b, 0x9d, -0x18, 0x4a, 0x3d, 0xce, 0x1c, 0xe1, 0x8a, 0x00, +0x21, 0xd1, 0x5d, 0x28, 0x17, 0x5f, 0xe9, 0x62, +0x4f, 0xde, 0x4a, 0xdc, 0xa0, 0xdd, 0x2b, 0xde, +0x2f, 0x5a, 0xee, 0xb6, 0x20, 0x11, 0xf5, 0xfb, +0x62, 0xe0, 0x99, 0x61, 0x7d, 0x0e, 0xe4, 0x3e, +0x27, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, +0x01, 0x22, 0x21, 0xa0, 0xaf, 0x15, 0xeb, 0xf8, +0x3e, 0xce, 0x03, 0x87, 0x5c, 0x75, 0x51, 0x56, +0x17, 0x7c, 0xf0, 0xf1, 0x2b, 0x59, 0xac, 0xab, +0x7f, 0xe6, 0x58, 0xb5, 0x42, 0xd1, 0x21, 0x24, +0xd1, 0x68, 0x0e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x99, 0x01, 0x22, 0x21, 0xde, 0xf5, 0x2a, +0xa2, 0x02, 0x3b, 0xc1, 0x2e, 0xc9, 0xb2, 0xf8, +0x3f, 0x72, 0xbd, 0x2b, 0x3d, 0x26, 0x07, 0xd8, +0x63, 0xa2, 0x90, 0x7d, 0x0a, 0x17, 0x68, 0xb8, +0x75, 0x5a, 0x4f, 0xac, 0x0b, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0x4a, +0x65, 0x7c, 0x0c, 0xf2, 0x2e, 0xf2, 0xe3, 0x7e, +0x39, 0x5f, 0xac, 0x78, 0x52, 0x5c, 0x64, 0x47, +0xcd, 0xf2, 0x82, 0xe6, 0xbf, 0xc4, 0xb5, 0x18, +0x57, 0x7c, 0x80, 0x50, 0x3f, 0xa7, 0xb7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, -0x21, 0xca, 0x42, 0xc1, 0xec, 0x62, 0x31, 0xe4, -0x2c, 0x48, 0x0a, 0xb3, 0xfb, 0x51, 0x10, 0x03, -0x01, 0xc0, 0x98, 0x6b, 0x8c, 0xdb, 0x99, 0xf9, -0xba, 0x6e, 0x3a, 0x3f, 0x03, 0xec, 0x2b, 0xbf, -0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, -0x01, 0x22, 0x21, 0x87, 0x06, 0x69, 0xa3, 0x28, -0x0a, 0xe9, 0x89, 0x39, 0x2d, 0x8a, 0x60, 0xb3, -0x4a, 0xd4, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x39, 0xbe, -0xbc, 0xae, 0xba, 0xc9, 0x03, 0x04, 0x51, 0x02, -0x00, 0x9d, 0x01, 0x22, 0x21, 0x6c, 0x3e, 0x72, -0xff, 0x4f, 0x93, 0x91, 0x90, 0xc9, 0x73, 0x89, -0x1a, 0xe9, 0x59, 0xc4, 0x81, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xe9, -0x64, 0x78, 0xa4, 0xb1, 0x8f, 0x60, 0x03, 0x04, -0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0x0c, -0x32, 0xb3, 0xbd, 0x5f, 0x91, 0x40, 0x9e, 0xdc, -0xb9, 0x85, 0x06, 0x07, 0xf6, 0x12, 0x6b, 0x90, -0x46, 0xa5, 0x1b, 0xef, 0xf5, 0xd7, 0xda, 0xce, -0x09, 0x36, 0x24, 0xa8, 0xa1, 0xc6, 0x34, 0x00, +0x21, 0xad, 0x07, 0xf4, 0x57, 0xc9, 0x30, 0x5a, +0x36, 0xf6, 0xae, 0xb4, 0x18, 0x6e, 0xfd, 0xa7, +0xc9, 0x2e, 0x5b, 0x84, 0x8a, 0x99, 0x3a, 0x96, +0x79, 0xcf, 0x54, 0x70, 0x0f, 0x34, 0xfb, 0x97, +0x2b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, +0x01, 0x22, 0x21, 0x27, 0x91, 0x96, 0x9f, 0x1c, +0x61, 0x6e, 0xcf, 0x53, 0x49, 0xd7, 0x91, 0xd8, +0x1a, 0x9b, 0x71, 0x6b, 0x26, 0x97, 0x5a, 0xeb, +0x88, 0x49, 0x9f, 0xb2, 0x33, 0xe7, 0x5c, 0xc5, +0xd6, 0x29, 0xa3, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x9d, 0x01, 0x22, 0x21, 0x43, 0x9d, 0x65, +0xd6, 0xbe, 0xd7, 0x64, 0xef, 0x25, 0x4b, 0x1c, +0xbe, 0x2a, 0x18, 0xc8, 0x87, 0xe8, 0x47, 0x09, +0x01, 0xcd, 0x12, 0x72, 0x95, 0xb8, 0x9e, 0x47, +0xd0, 0xfd, 0xdf, 0x5d, 0xad, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0x07, +0x7f, 0x90, 0xeb, 0x0d, 0xdf, 0x37, 0xec, 0xa4, +0xcd, 0x05, 0xbd, 0x7d, 0xe4, 0x69, 0xaa, 0x11, +0x1e, 0x11, 0xd0, 0xd6, 0x39, 0xee, 0x1b, 0x6a, +0x64, 0xa7, 0x35, 0x42, 0x6d, 0xe8, 0x46, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, -0x21, 0x8e, 0x1e, 0x3e, 0x11, 0xdd, 0x12, 0x49, -0x45, 0xf8, 0x7c, 0x08, 0x0b, 0xc7, 0x5f, 0xa6, -0x97, 0xe1, 0xd5, 0x98, 0xbb, 0x4a, 0x1d, 0x66, -0xee, 0x46, 0x1c, 0x8d, 0xae, 0xb9, 0x6f, 0x68, -0xc7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, -0x01, 0x22, 0x21, 0x7b, 0x19, 0x25, 0x9b, 0xe3, -0xcb, 0xd7, 0x47, 0x3a, 0xd5, 0x0a, 0x42, 0x67, -0x98, 0xdd, 0x86, 0x14, 0x45, 0xcf, 0xbc, 0x46, -0xa8, 0xe2, 0x4c, 0x26, 0x7d, 0xba, 0xdc, 0x00, -0x2d, 0xcd, 0x81, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa1, 0x01, 0x22, 0x21, 0x26, 0xf7, 0x74, -0x73, 0x02, 0x73, 0xa4, 0x97, 0x78, 0x2c, 0xeb, -0x31, 0x0b, 0x92, 0x8c, 0x9f, 0x6d, 0xe7, 0x71, -0x6a, 0x28, 0x6d, 0xcf, 0xad, 0xfa, 0x0a, 0x75, -0xd1, 0x07, 0xe2, 0xc3, 0x94, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0xfe, -0xec, 0x3b, 0x66, 0x47, 0xd9, 0xfb, 0x76, 0x83, -0x1c, 0xa9, 0x60, 0x74, 0x8c, 0x4a, 0x7f, 0xe1, -0xaa, 0x5a, 0x2a, 0x66, 0x5e, 0x47, 0x53, 0x58, -0xcc, 0xbc, 0x8d, 0xc9, 0x98, 0x93, 0xd0, 0x00, +0x21, 0xd8, 0xa6, 0x34, 0xe1, 0x85, 0x63, 0x45, +0xd6, 0x3d, 0xca, 0x2b, 0x4d, 0x20, 0x0a, 0xcf, +0x82, 0x98, 0x08, 0x2f, 0x0f, 0x43, 0x7c, 0x15, +0x06, 0xf1, 0xcc, 0x35, 0xe7, 0xd6, 0x9f, 0x2f, +0xdd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, +0x01, 0x22, 0x21, 0xc1, 0x4f, 0xf7, 0x44, 0x9c, +0x39, 0x30, 0xa6, 0x47, 0xdf, 0x07, 0x2d, 0x70, +0x32, 0x07, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2e, 0x70, 0x5e, 0x87, +0x6a, 0x92, 0x2d, 0x3d, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa1, 0x01, 0x22, 0x21, 0xc3, 0xe6, 0xe1, +0x62, 0x09, 0xca, 0xe2, 0xd4, 0x9d, 0xa6, 0x1a, +0x03, 0x69, 0x4b, 0xbf, 0xf3, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x86, +0x70, 0xbc, 0xd6, 0x6d, 0x81, 0xee, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0x78, +0x74, 0x81, 0x4e, 0xed, 0x50, 0xd4, 0x13, 0xa9, +0xc1, 0x2c, 0xa5, 0x46, 0xb8, 0xc9, 0x26, 0x9c, +0x95, 0x6c, 0x00, 0x5a, 0x7b, 0xaf, 0xdd, 0x1f, +0x7d, 0x78, 0x0d, 0xfe, 0x1b, 0x00, 0x3c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, -0x21, 0x8d, 0xb6, 0xea, 0x6f, 0xc5, 0xaa, 0x3a, -0x3a, 0xaf, 0x86, 0x86, 0x5f, 0x8e, 0xd8, 0x77, -0xdd, 0x12, 0x92, 0x0c, 0x60, 0xbb, 0xb6, 0x98, -0xac, 0xdb, 0x4e, 0x7c, 0xf3, 0xeb, 0xd4, 0x55, -0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, -0x01, 0x22, 0x21, 0x1a, 0xa0, 0xfb, 0x2e, 0x5c, -0x14, 0xb3, 0xff, 0xf0, 0x3f, 0xd7, 0xbe, 0xc7, -0x6c, 0xa0, 0x06, 0xb5, 0x58, 0xb1, 0xf1, 0x77, -0xec, 0x8c, 0x2b, 0x1b, 0xba, 0x73, 0x8c, 0x69, -0xab, 0x34, 0xa6, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa5, 0x01, 0x22, 0x21, 0x8c, 0x10, 0x56, -0xf0, 0x58, 0x1f, 0xb3, 0xbc, 0x86, 0x8e, 0x0b, -0xb7, 0xd5, 0x69, 0xc3, 0xc6, 0xea, 0xb2, 0x27, -0x30, 0xe1, 0x93, 0xfb, 0x1c, 0xc6, 0xa1, 0x92, -0x37, 0x4d, 0x16, 0x60, 0xbd, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0x79, -0x90, 0x0b, 0x75, 0x15, 0x31, 0x22, 0x08, 0x1f, -0xa6, 0x06, 0x36, 0xef, 0x18, 0x2f, 0x1e, 0xc0, -0xb9, 0xc3, 0xed, 0x10, 0x6f, 0x33, 0xf4, 0x88, -0x22, 0x7c, 0x26, 0x30, 0xda, 0x70, 0xd1, 0x00, +0x21, 0x3e, 0x2e, 0x42, 0xd5, 0xde, 0xc7, 0x37, +0x83, 0xb7, 0x99, 0x4b, 0xbb, 0xaf, 0x1a, 0x1a, +0x49, 0x27, 0x4f, 0x8e, 0x87, 0x7d, 0xba, 0xc8, +0x95, 0x7e, 0x55, 0x2c, 0x2e, 0x1c, 0x34, 0x07, +0x26, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, +0x01, 0x22, 0x21, 0x76, 0x59, 0xdd, 0xc7, 0x58, +0xab, 0x36, 0x50, 0xa7, 0x62, 0xad, 0xa4, 0xfb, +0x03, 0x50, 0x6b, 0x10, 0x4d, 0x85, 0xec, 0x0b, +0xcd, 0xb1, 0x22, 0x58, 0x8d, 0x90, 0x93, 0xb2, +0x57, 0xb6, 0x74, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa5, 0x01, 0x22, 0x21, 0x73, 0x96, 0xb3, +0x76, 0xd6, 0x19, 0x81, 0x97, 0xe5, 0x14, 0x71, +0x3b, 0xfa, 0x4c, 0x81, 0xd6, 0xb3, 0x0e, 0xdc, +0xda, 0xe0, 0x09, 0xeb, 0x2d, 0x2b, 0x7a, 0x8f, +0x55, 0xa9, 0x2b, 0x10, 0x8e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0xfb, +0x5a, 0x4d, 0xbf, 0x69, 0x88, 0x6f, 0x9f, 0xe7, +0x42, 0x5b, 0x94, 0x6b, 0x13, 0x89, 0x34, 0xcb, +0xa1, 0xff, 0x1e, 0xaf, 0xed, 0xe9, 0xbe, 0x77, +0x49, 0x89, 0x96, 0x2a, 0x7d, 0x90, 0x2d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, -0x21, 0xfa, 0xab, 0x47, 0xfa, 0x7f, 0xbf, 0x44, -0xfe, 0x63, 0xfb, 0x08, 0xe9, 0xc2, 0x31, 0x51, -0xfa, 0x27, 0xde, 0x0a, 0xf1, 0x25, 0x94, 0xda, -0xd5, 0x03, 0xcd, 0xa5, 0x3a, 0x9f, 0x7c, 0x74, -0x8c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, -0x01, 0x22, 0x21, 0xba, 0x02, 0xd2, 0xbe, 0x76, -0x3e, 0xff, 0x43, 0x3d, 0x24, 0x9d, 0x11, 0x68, -0xad, 0xc5, 0x13, 0x3d, 0x8c, 0x5a, 0x84, 0xea, -0xe7, 0x8b, 0xc0, 0xbe, 0xa1, 0x3a, 0x54, 0x0a, -0xff, 0xa5, 0x06, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xa9, 0x01, 0x22, 0x21, 0x86, 0x78, 0xe1, -0x85, 0x9b, 0x40, 0x9a, 0xce, 0xd5, 0x61, 0x58, -0xf6, 0x60, 0xb7, 0xe8, 0x7b, 0x58, 0xef, 0x42, -0x9a, 0xd9, 0x77, 0x80, 0xdc, 0x0e, 0xb8, 0xd8, -0x02, 0x10, 0xef, 0xe9, 0x99, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0xe6, -0xec, 0xaa, 0x0f, 0xa6, 0x48, 0xe1, 0x81, 0x14, -0xef, 0xa5, 0x6f, 0xec, 0x3f, 0xb7, 0x0f, 0x9d, -0xab, 0x28, 0x5d, 0xc9, 0x94, 0xcb, 0xc7, 0xf2, -0x0a, 0x7d, 0x2c, 0x3b, 0xeb, 0x87, 0x67, 0x00, +0x21, 0x04, 0x34, 0x0a, 0xdc, 0x3d, 0xcc, 0x31, +0x23, 0x92, 0xef, 0xe1, 0xf5, 0x7a, 0xda, 0xa0, +0x3b, 0x0c, 0xd8, 0xcf, 0xeb, 0x12, 0x6f, 0xc4, +0x02, 0xe6, 0x79, 0x87, 0xb5, 0x89, 0x18, 0x20, +0x50, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, +0x01, 0x22, 0x21, 0x8d, 0xbe, 0xae, 0x90, 0x80, +0x92, 0xee, 0x1c, 0x18, 0xcb, 0xc8, 0x14, 0x1c, +0x04, 0x78, 0x5c, 0x87, 0x77, 0x83, 0x07, 0x7f, +0x7d, 0x40, 0x93, 0xf5, 0xc5, 0xa6, 0xbf, 0x66, +0xec, 0xa3, 0x35, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa9, 0x01, 0x22, 0x21, 0x59, 0x24, 0xfe, +0xf3, 0xf1, 0xca, 0xf6, 0x9f, 0xc8, 0x3a, 0xc2, +0x45, 0xf4, 0x6b, 0xf2, 0x8e, 0xa8, 0xc2, 0x41, +0x87, 0x37, 0xd2, 0xf6, 0x8c, 0xd5, 0xb8, 0x62, +0x30, 0x37, 0xbe, 0x8c, 0xa6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0x87, +0x7b, 0x95, 0xa1, 0xbd, 0x43, 0x05, 0x9b, 0x95, +0x5e, 0x96, 0xc2, 0x48, 0x29, 0xc8, 0x1d, 0xae, +0x70, 0xe5, 0xba, 0x0b, 0xa1, 0xf9, 0x4e, 0x20, +0xd3, 0x1f, 0x00, 0x9c, 0xef, 0xa9, 0x00, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, -0x21, 0x70, 0x93, 0x67, 0xc9, 0x3a, 0x04, 0xd2, -0x0a, 0xaf, 0xfa, 0xcf, 0xb3, 0x05, 0xed, 0xfa, -0xe1, 0xab, 0xd8, 0xf0, 0xd4, 0x90, 0x06, 0x90, -0xac, 0xd1, 0x37, 0x40, 0x1f, 0x3e, 0x70, 0xc1, -0x96, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, -0x01, 0x22, 0x21, 0xd6, 0x8a, 0xca, 0x5f, 0x17, -0x6c, 0xee, 0x45, 0xaf, 0xe7, 0x82, 0x44, 0x9b, -0x83, 0x88, 0x10, 0x5c, 0x9c, 0xbd, 0xf8, 0xbb, -0x2d, 0x29, 0xdb, 0x8e, 0xe0, 0x75, 0xd6, 0x7c, -0x38, 0x51, 0x4d, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xad, 0x01, 0x22, 0x21, 0x05, 0xd2, 0x4c, -0xf7, 0x43, 0x1c, 0xcd, 0xab, 0x04, 0x5f, 0x34, -0x95, 0x4c, 0x77, 0xcb, 0x91, 0x91, 0xdc, 0x23, -0xba, 0x69, 0x3e, 0xbc, 0x65, 0x60, 0x02, 0xc9, -0x5b, 0x30, 0xf6, 0x3b, 0x20, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0x53, -0x96, 0xb6, 0x2f, 0x86, 0xe7, 0xaf, 0x16, 0x7c, -0x0d, 0x51, 0x76, 0x94, 0x10, 0xc4, 0x91, 0x80, -0x1a, 0x8f, 0x4a, 0x46, 0xb0, 0x4c, 0x49, 0x56, -0x4d, 0x3c, 0xdc, 0x31, 0x6b, 0xe6, 0xb7, 0x00, +0x21, 0xba, 0xc9, 0x6b, 0x40, 0x1e, 0x5e, 0xbf, +0x2f, 0x96, 0xb2, 0x34, 0x24, 0x70, 0xc2, 0x03, +0xa0, 0xc3, 0x86, 0x44, 0xee, 0x36, 0x04, 0x2c, +0x58, 0x46, 0xfb, 0x30, 0x57, 0xdd, 0x3c, 0xe1, +0x6a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, +0x01, 0x22, 0x21, 0xf3, 0xfe, 0xee, 0x19, 0xc9, +0x5b, 0x34, 0x67, 0xf3, 0x2e, 0xa0, 0xff, 0x17, +0x40, 0xda, 0x92, 0x91, 0xf9, 0xe2, 0x14, 0x25, +0x41, 0xbf, 0xff, 0xeb, 0xe1, 0x87, 0xc3, 0xc1, +0x88, 0x85, 0xcc, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xad, 0x01, 0x22, 0x21, 0xcc, 0x3c, 0xe2, +0xba, 0x03, 0x58, 0x3c, 0x3a, 0x0c, 0xf7, 0x09, +0x59, 0xc7, 0x52, 0x07, 0xb4, 0xd2, 0x23, 0x7a, +0x3f, 0x98, 0xd1, 0x7e, 0xb3, 0x1d, 0x04, 0x2a, +0x3a, 0x8b, 0xf2, 0x2f, 0xa6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0x56, +0x93, 0xc0, 0xf5, 0xd0, 0xc3, 0x48, 0xab, 0xa1, +0x9f, 0x9d, 0x2d, 0x51, 0x7f, 0xdb, 0x4e, 0xd6, +0x63, 0x4f, 0xde, 0x4b, 0xef, 0xc6, 0x40, 0x18, +0x60, 0x01, 0xaf, 0x28, 0xfd, 0x8d, 0x9a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, -0x21, 0x70, 0xda, 0x4b, 0x06, 0x86, 0xad, 0x1c, -0xf0, 0xf6, 0x33, 0x8f, 0xbe, 0x3c, 0x88, 0x4a, -0xf6, 0x0a, 0x80, 0xce, 0x72, 0x10, 0x9b, 0x7f, -0x0f, 0xf4, 0x66, 0x6b, 0xc0, 0xa4, 0x40, 0x26, -0xbd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, -0x01, 0x22, 0x21, 0x32, 0x7c, 0xd2, 0xa4, 0x1a, -0x31, 0x51, 0xfa, 0x3f, 0x8e, 0x7a, 0x73, 0xb2, -0xd8, 0x2e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x2b, 0x35, 0xa9, 0xef, -0x9d, 0xfe, 0xe3, 0xd5, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb1, 0x01, 0x22, 0x21, 0x7e, 0xfb, 0xc8, -0x28, 0x95, 0xf8, 0x15, 0xa9, 0x28, 0xc0, 0x1f, -0x7d, 0x6f, 0xaa, 0x88, 0xe1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x6b, -0x66, 0x1d, 0x05, 0xb3, 0x37, 0xdb, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0xc0, -0x9c, 0xfc, 0x20, 0xb6, 0xc0, 0x0a, 0xb6, 0x6a, -0xe9, 0x6a, 0xdb, 0x4a, 0x76, 0xde, 0xfd, 0xcf, -0x97, 0xc1, 0xf0, 0xb9, 0xbc, 0xe9, 0xdb, 0x88, -0xc8, 0x5f, 0x55, 0xed, 0x51, 0x0e, 0x91, 0x00, +0x21, 0x1b, 0x9e, 0x9a, 0x17, 0xfc, 0xf0, 0x63, +0x22, 0x87, 0x5d, 0x9e, 0x19, 0x02, 0x5e, 0xf4, +0x0e, 0xca, 0x48, 0x9a, 0xea, 0x65, 0xa4, 0x87, +0x0f, 0xff, 0x3c, 0x95, 0xf3, 0x35, 0x76, 0x4c, +0x08, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, +0x01, 0x22, 0x21, 0xca, 0xe6, 0x2d, 0xe3, 0x72, +0x7b, 0x27, 0x53, 0x96, 0x4f, 0x45, 0x1c, 0x47, +0xd7, 0xdf, 0x23, 0xd7, 0x8b, 0x84, 0x01, 0x6b, +0x34, 0x05, 0x1c, 0x32, 0xf7, 0x5c, 0x7b, 0x07, +0x3e, 0x67, 0xb8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb1, 0x01, 0x22, 0x21, 0xd4, 0xb7, 0xf7, +0xd4, 0x19, 0xd2, 0xf5, 0x3e, 0x42, 0x40, 0x8d, +0xac, 0xca, 0x10, 0x18, 0x50, 0xce, 0x73, 0xc4, +0x74, 0xaa, 0x4d, 0x71, 0xef, 0x06, 0xe3, 0x8b, +0x20, 0x0c, 0xcf, 0x79, 0x9c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0x6a, +0x6e, 0x7a, 0x93, 0x79, 0xbf, 0x65, 0x89, 0xa1, +0xd1, 0xda, 0xc2, 0x63, 0x44, 0x59, 0x28, 0x28, +0xb8, 0xf3, 0x9e, 0xd1, 0x07, 0x68, 0x9b, 0xa9, +0x1e, 0x81, 0x1a, 0xf9, 0x77, 0xc1, 0x34, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, -0x21, 0x2c, 0x5a, 0x20, 0x64, 0x82, 0xa8, 0x64, -0x18, 0xc6, 0xde, 0x0e, 0x38, 0xda, 0xe0, 0x9f, -0x12, 0x6d, 0x1f, 0xae, 0xe9, 0xb0, 0x26, 0x4d, -0xd2, 0x9f, 0xa5, 0xf8, 0x60, 0x86, 0xb5, 0x41, -0xe0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, -0x01, 0x22, 0x21, 0x21, 0x2b, 0xd9, 0xc7, 0x5a, -0xd9, 0x3a, 0xdf, 0x0a, 0x90, 0x96, 0xd0, 0x60, -0xbd, 0x81, 0xd3, 0xfb, 0xdc, 0x1d, 0x2d, 0x07, -0xd3, 0xd0, 0x41, 0x50, 0xa5, 0xe6, 0xb9, 0xc9, -0x89, 0x50, 0x46, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb5, 0x01, 0x22, 0x21, 0xdd, 0x05, 0x76, -0x58, 0xb2, 0x3f, 0x9e, 0x71, 0x65, 0xe9, 0x63, -0x6c, 0xeb, 0x94, 0xfd, 0x20, 0x40, 0x28, 0x2d, -0x20, 0x21, 0x98, 0x7f, 0xb2, 0xde, 0xf2, 0x5b, -0x9b, 0x6c, 0xcc, 0x06, 0xcd, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0xf1, -0x40, 0x3a, 0xd3, 0x27, 0x1a, 0xd0, 0x3f, 0x16, -0xf8, 0x26, 0x96, 0x70, 0x66, 0x5a, 0x29, 0x03, -0xcb, 0xbe, 0x16, 0xe2, 0x57, 0xde, 0xa7, 0x3a, -0x00, 0x9c, 0xb6, 0x72, 0x98, 0xa0, 0x51, 0x00, +0x21, 0x62, 0x95, 0xdf, 0x46, 0x2f, 0x37, 0xff, +0x93, 0xef, 0x95, 0x59, 0x66, 0x3c, 0x99, 0xce, +0x17, 0x78, 0xa1, 0x69, 0xdf, 0x15, 0x9f, 0x25, +0x1e, 0x29, 0x29, 0xf0, 0xb6, 0x26, 0x0d, 0xc2, +0xbf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, +0x01, 0x22, 0x21, 0x12, 0xf2, 0x2f, 0x6e, 0x14, +0x28, 0xac, 0x28, 0x8b, 0x2c, 0xa8, 0xfa, 0x1d, +0x0d, 0x4f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2f, 0x55, 0xda, 0xd8, +0x46, 0x49, 0x82, 0xfd, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb5, 0x01, 0x22, 0x21, 0x6b, 0xc7, 0x8f, +0x3b, 0x2e, 0x5f, 0xcc, 0x23, 0x9c, 0x37, 0x4e, +0x56, 0xf5, 0x05, 0x4a, 0x4d, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x94, +0xfe, 0x87, 0x62, 0x2d, 0x7e, 0x2a, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0x3e, +0xff, 0xbc, 0x2c, 0xd4, 0x1a, 0x7f, 0xdb, 0x9f, +0x78, 0xca, 0x65, 0x7f, 0x07, 0x0b, 0x9d, 0x76, +0xdb, 0x72, 0xb6, 0x79, 0x3f, 0x7f, 0xd3, 0x51, +0x14, 0xbe, 0x83, 0x95, 0x29, 0xe6, 0x07, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, -0x21, 0x15, 0x66, 0x18, 0x4c, 0xc4, 0x36, 0x2e, -0x79, 0xbe, 0xa0, 0x80, 0xcf, 0x11, 0x65, 0xf8, -0x26, 0x2b, 0x90, 0x8c, 0x55, 0xe4, 0x23, 0x8e, -0x61, 0x5e, 0xbc, 0x03, 0x0f, 0x87, 0xb5, 0x6e, -0x50, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, -0x01, 0x22, 0x21, 0xe7, 0x2c, 0x9d, 0x28, 0x4b, -0xfb, 0x43, 0x84, 0x43, 0xb3, 0xb6, 0x05, 0xec, -0x43, 0xff, 0x4e, 0x78, 0x2a, 0x9a, 0x7a, 0x99, -0x3c, 0x6b, 0x78, 0x95, 0x37, 0x22, 0x82, 0x31, -0x71, 0x19, 0x38, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xb9, 0x01, 0x22, 0x21, 0xf3, 0x4e, 0x99, -0xcd, 0x86, 0x42, 0x78, 0x91, 0xde, 0x03, 0xb8, -0x30, 0x2a, 0x62, 0x8c, 0x33, 0x48, 0xc9, 0x43, -0x25, 0xfa, 0x94, 0xed, 0x88, 0x91, 0xdf, 0x58, -0x61, 0xc8, 0x5d, 0x8d, 0xf6, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0x30, -0xca, 0xcc, 0x4f, 0x0d, 0x02, 0xc7, 0xab, 0xd0, -0xc2, 0xd9, 0xb9, 0xab, 0x2e, 0x6f, 0xb1, 0x3a, -0x91, 0x9b, 0xb9, 0x38, 0xd5, 0xcd, 0x95, 0xe0, -0x46, 0x4a, 0x3f, 0x44, 0x23, 0xe0, 0x57, 0x00, +0x21, 0xe7, 0x86, 0xb0, 0xb7, 0x38, 0xe8, 0x5f, +0xa2, 0xf5, 0x90, 0x39, 0x39, 0x69, 0x5b, 0xa5, +0x84, 0xfc, 0x34, 0xe5, 0x02, 0xaa, 0x40, 0x58, +0x7d, 0x2a, 0xfc, 0xeb, 0x0a, 0xc8, 0x8e, 0x23, +0x44, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, +0x01, 0x22, 0x21, 0xb3, 0x8f, 0x5f, 0xad, 0x76, +0xbd, 0xa5, 0x76, 0xda, 0x0d, 0x62, 0x76, 0x57, +0x1d, 0xd8, 0xdb, 0x2d, 0xff, 0x77, 0x62, 0xc8, +0xb5, 0x69, 0x7d, 0x3c, 0xeb, 0x8e, 0x89, 0x67, +0x2c, 0x7c, 0x40, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb9, 0x01, 0x22, 0x21, 0xe0, 0xf8, 0x92, +0x53, 0xa0, 0x4c, 0xc4, 0xfd, 0x0c, 0x31, 0x86, +0x2e, 0x19, 0x95, 0x33, 0xdb, 0x90, 0xe2, 0xe0, +0x52, 0x13, 0x7d, 0x4f, 0x67, 0xb3, 0xa0, 0x78, +0x4b, 0xfb, 0x15, 0x52, 0x16, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0x6d, +0x3b, 0x15, 0x24, 0x11, 0x11, 0x7b, 0x9b, 0xf7, +0xc1, 0x22, 0x08, 0xa8, 0xa5, 0x2b, 0x89, 0xe3, +0x13, 0x94, 0x97, 0xa2, 0x14, 0x14, 0xd2, 0x0f, +0x22, 0x9c, 0x7c, 0xfe, 0xb4, 0x3a, 0xed, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, -0x21, 0x54, 0xa7, 0x9d, 0xdc, 0xfd, 0x64, 0xe4, -0xea, 0x26, 0xac, 0x8c, 0xc5, 0x9c, 0xbb, 0xb6, -0x73, 0x4c, 0x0d, 0xfc, 0x8e, 0x35, 0xcf, 0x83, -0xeb, 0x74, 0x38, 0xee, 0xa7, 0x63, 0xaa, 0x55, -0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, -0x01, 0x22, 0x21, 0x3d, 0xe4, 0xb4, 0xe0, 0x6e, -0xa4, 0xff, 0x0e, 0x3a, 0xd9, 0xdd, 0x84, 0x32, -0xbe, 0x29, 0xe3, 0x7b, 0x53, 0x73, 0x83, 0xf8, -0x7f, 0x88, 0x00, 0xe1, 0x45, 0xd4, 0xe3, 0xcc, -0x8c, 0x0d, 0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xbd, 0x01, 0x22, 0x21, 0x30, 0x13, 0xf4, -0x36, 0xe6, 0x13, 0x5b, 0xfd, 0xdd, 0x59, 0x07, -0xa5, 0xa4, 0xec, 0xab, 0xeb, 0x77, 0xf0, 0x66, -0x01, 0x25, 0x7d, 0x2f, 0xd9, 0xf1, 0xc0, 0x12, -0x2f, 0x81, 0x6f, 0xab, 0xba, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0x8f, -0x2b, 0xc1, 0xad, 0xcd, 0x76, 0x33, 0x6f, 0x09, -0x12, 0xec, 0x24, 0x37, 0x87, 0x7c, 0x5a, 0xfd, -0xca, 0xde, 0x48, 0xcc, 0x28, 0x01, 0x63, 0xee, -0x8b, 0xf0, 0xff, 0x16, 0x8e, 0x72, 0x93, 0x00, +0x21, 0x74, 0x0a, 0x64, 0x06, 0xf0, 0xfa, 0x5e, +0xfb, 0x57, 0x75, 0xf6, 0x69, 0x9b, 0xc0, 0xea, +0x77, 0xba, 0x3c, 0x9d, 0x8c, 0x37, 0xeb, 0xfa, +0x27, 0xc9, 0xa3, 0x33, 0x41, 0x1e, 0x54, 0x3b, +0x4a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, +0x01, 0x22, 0x21, 0xb3, 0x53, 0x1c, 0xab, 0xb1, +0x6e, 0x53, 0x7a, 0x76, 0x1e, 0x05, 0x4f, 0xc7, +0x97, 0x97, 0xf0, 0x06, 0xe5, 0x33, 0xaa, 0x5a, +0xf7, 0x50, 0xfe, 0xd9, 0xc3, 0xd1, 0x84, 0x32, +0x90, 0x08, 0x85, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xbd, 0x01, 0x22, 0x21, 0x0f, 0x5c, 0x82, +0xa2, 0xc8, 0x03, 0x8a, 0x6d, 0xa2, 0x7d, 0x29, +0x2d, 0x73, 0xa4, 0xb9, 0xce, 0x06, 0x08, 0x9d, +0x3e, 0x01, 0x6f, 0x08, 0xc5, 0x59, 0x3a, 0x2d, +0x6f, 0x9a, 0x81, 0x4d, 0xaa, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0xb9, +0xeb, 0xba, 0x86, 0x86, 0xbf, 0x25, 0x54, 0x7d, +0xe4, 0xaa, 0xd1, 0xa3, 0x27, 0xce, 0xdd, 0xf2, +0x37, 0x9c, 0xe9, 0xe8, 0xe3, 0xe7, 0x0b, 0xb9, +0xfc, 0x6e, 0x0d, 0xf7, 0x5d, 0x48, 0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, -0x21, 0x86, 0x6e, 0x38, 0x17, 0x84, 0x8e, 0x99, -0x2a, 0x06, 0xdb, 0xdf, 0x62, 0x32, 0x34, 0x5a, -0xb3, 0xda, 0x3f, 0x35, 0xcb, 0x06, 0x78, 0xca, -0x6b, 0xb8, 0x1b, 0x35, 0x44, 0x6a, 0x73, 0x88, -0x84, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, -0x01, 0x22, 0x21, 0x44, 0x40, 0xc7, 0x0b, 0xdd, -0xac, 0xb1, 0x1c, 0x53, 0xe1, 0x12, 0x69, 0x25, -0x51, 0xb7, 0x44, 0x65, 0x25, 0x19, 0xd9, 0x9f, -0x23, 0x26, 0xde, 0x6f, 0x28, 0x36, 0x7c, 0xd3, -0x25, 0xf6, 0xae, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc1, 0x01, 0x22, 0x21, 0x15, 0xd3, 0x1e, -0xbd, 0x40, 0xc8, 0xe1, 0x63, 0x91, 0xaf, 0xea, -0x76, 0x11, 0xd5, 0xd0, 0x19, 0x96, 0xc6, 0x3e, -0xfc, 0x57, 0x9c, 0x8a, 0x72, 0x1e, 0x96, 0xfa, -0x19, 0x5f, 0x72, 0x84, 0xdf, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0xaa, -0x1b, 0xb3, 0x02, 0x32, 0xed, 0xbe, 0x7a, 0x9a, -0x13, 0x66, 0x13, 0xdc, 0xb9, 0x76, 0xcf, 0xf4, -0x34, 0x91, 0xdd, 0xf5, 0x0a, 0x4b, 0xf1, 0xd3, -0xfd, 0xe2, 0xf6, 0x04, 0x9c, 0xc8, 0xd1, 0x00, +0x21, 0xc4, 0xe2, 0xda, 0xa7, 0xfc, 0x35, 0x0b, +0xee, 0x0b, 0x2f, 0x0a, 0x90, 0xb1, 0xb5, 0x08, +0x96, 0x6a, 0xfe, 0x90, 0xa3, 0x19, 0xb8, 0x65, +0xf2, 0xd6, 0xe0, 0x87, 0x28, 0x85, 0x02, 0x4a, +0x4d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, +0x01, 0x22, 0x21, 0x08, 0xf1, 0x9f, 0x8f, 0xa6, +0x91, 0x5d, 0x67, 0x5a, 0x4d, 0x05, 0x00, 0xc5, +0x24, 0xd2, 0x5c, 0x8d, 0xec, 0x7d, 0x0c, 0xcb, +0x50, 0x4c, 0x15, 0x95, 0x54, 0x60, 0x1d, 0x07, +0x85, 0xc9, 0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc1, 0x01, 0x22, 0x21, 0x17, 0xbe, 0x2b, +0x6b, 0xcd, 0x94, 0x67, 0x74, 0xf8, 0x3d, 0x14, +0xc6, 0xdd, 0xdc, 0xd6, 0x0c, 0x74, 0x29, 0x68, +0x3a, 0x6a, 0xca, 0x80, 0x8c, 0x02, 0xfe, 0x82, +0x4b, 0x87, 0x78, 0x8c, 0xa7, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0x21, +0x6d, 0x53, 0xea, 0x65, 0x9c, 0x51, 0x19, 0x16, +0xbc, 0x5e, 0x00, 0x72, 0x9b, 0x52, 0x89, 0x71, +0xc0, 0x4e, 0x71, 0x39, 0x05, 0xbd, 0xa2, 0x9c, +0xe1, 0x5c, 0xc0, 0xdb, 0xc8, 0xa4, 0xc8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, -0x21, 0x02, 0xc6, 0x21, 0x3e, 0x47, 0xb2, 0x1c, -0xbd, 0x97, 0x2b, 0x52, 0xfd, 0x48, 0x81, 0x4b, -0x72, 0x3e, 0x4f, 0xc1, 0x8f, 0x7b, 0xfe, 0xfd, -0x0c, 0xd3, 0x32, 0x1f, 0x1a, 0xe3, 0xb4, 0xec, -0x08, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, -0x01, 0x22, 0x21, 0x87, 0x2a, 0x46, 0x95, 0xe4, -0xf7, 0x85, 0x72, 0xd4, 0x18, 0x66, 0x27, 0xb7, -0x5b, 0x76, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xa3, 0x8a, 0xc8, 0xe3, -0x16, 0x1f, 0xed, 0x97, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc5, 0x01, 0x22, 0x21, 0xf8, 0x27, 0x6c, -0x4f, 0x0e, 0x5d, 0x39, 0x6b, 0xd2, 0xf2, 0x81, -0x98, 0xa2, 0x83, 0x1f, 0xab, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x2e, -0x5b, 0x14, 0x77, 0xdf, 0x88, 0xfd, 0x03, 0x04, -0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0x17, -0x9a, 0xf8, 0xa4, 0xd1, 0xac, 0x27, 0x2d, 0xe5, -0x7b, 0x2c, 0xe6, 0x1b, 0xb8, 0x84, 0x14, 0xfb, -0x14, 0xa8, 0x2e, 0x1a, 0x22, 0x5b, 0x0c, 0x9d, -0x4a, 0xba, 0x27, 0x26, 0x54, 0x13, 0x8a, 0x00, +0x21, 0x14, 0x84, 0x78, 0xd8, 0x81, 0x67, 0xff, +0x7c, 0x0c, 0xed, 0x47, 0xc6, 0x7b, 0x38, 0xac, +0x0f, 0xb2, 0x99, 0xee, 0x76, 0xf5, 0xe6, 0x4b, +0xe9, 0x61, 0xb7, 0xb6, 0xbb, 0x88, 0xe2, 0x95, +0xb0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, +0x01, 0x22, 0x21, 0x39, 0xe3, 0x58, 0x5c, 0xf3, +0x75, 0xee, 0x36, 0x54, 0x5d, 0x50, 0x35, 0xec, +0x13, 0x15, 0xdb, 0xd2, 0x28, 0x93, 0x07, 0xd0, +0x5c, 0x3a, 0xc9, 0xc2, 0x28, 0x60, 0xcd, 0xca, +0x34, 0x5c, 0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc5, 0x01, 0x22, 0x21, 0xb2, 0x63, 0x1c, +0x14, 0x9b, 0x9e, 0x90, 0xbc, 0xec, 0xed, 0x50, +0xfa, 0x59, 0xcd, 0x23, 0x55, 0xbe, 0xbc, 0x31, +0xf1, 0x21, 0x84, 0x12, 0x0b, 0xeb, 0x21, 0xa8, +0x08, 0x17, 0xf1, 0x10, 0xeb, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0xb7, +0xe5, 0x86, 0xcb, 0x9b, 0xf4, 0x9f, 0xf8, 0x9c, +0x22, 0x0f, 0x26, 0xfc, 0xd4, 0x61, 0x56, 0x0a, +0x37, 0x02, 0x08, 0x89, 0x0a, 0xd2, 0x8a, 0xb5, +0x64, 0x03, 0xdd, 0xd5, 0xab, 0xef, 0xad, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, -0x21, 0x40, 0x01, 0xdd, 0xbe, 0x3f, 0xb7, 0xce, -0x7b, 0x8b, 0x98, 0xb9, 0xb9, 0x19, 0xba, 0xbf, -0x00, 0x72, 0x00, 0x00, 0x85, 0xed, 0x6a, 0x4b, -0x34, 0x40, 0x12, 0x88, 0xec, 0xa9, 0x07, 0xb6, -0x44, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, -0x01, 0x22, 0x21, 0x2e, 0x0b, 0x59, 0xb8, 0xe0, -0x4f, 0x1c, 0xd9, 0xd2, 0xbd, 0xfa, 0x72, 0xd1, -0xf3, 0x4e, 0x80, 0xbc, 0x4b, 0xff, 0x57, 0x3d, -0xb8, 0x87, 0x54, 0x2e, 0x6f, 0x5b, 0xf3, 0x9a, -0x72, 0x9e, 0xab, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xc9, 0x01, 0x22, 0x21, 0x88, 0xfd, 0xb7, -0xcb, 0xfe, 0xd7, 0x11, 0xf9, 0x6b, 0x1d, 0x2a, -0xab, 0x18, 0x51, 0xa4, 0x80, 0x1b, 0x87, 0x2b, -0x85, 0x15, 0x35, 0xf5, 0x54, 0xf5, 0xff, 0x8c, -0x6d, 0x55, 0x61, 0x86, 0x3d, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0x3f, -0xb9, 0x7a, 0x32, 0xd4, 0xd1, 0x71, 0x0f, 0xcd, -0xa1, 0x16, 0x79, 0xbf, 0x07, 0x6c, 0x4c, 0x90, -0x56, 0xfa, 0xaa, 0xb6, 0x82, 0x59, 0x1e, 0x6b, -0x19, 0xa5, 0x00, 0x26, 0xb2, 0x39, 0x78, 0x00, +0x21, 0xa8, 0xb9, 0xd7, 0x57, 0x78, 0xb0, 0x2c, +0x82, 0xf9, 0x6b, 0x9e, 0xa7, 0x70, 0x05, 0xac, +0x22, 0x9e, 0xa5, 0x23, 0xc4, 0xdd, 0x93, 0x84, +0x7b, 0x02, 0x24, 0xd6, 0xea, 0x28, 0x25, 0x43, +0xec, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, +0x01, 0x22, 0x21, 0x33, 0x0c, 0xb6, 0x2a, 0x81, +0x88, 0xe2, 0x9a, 0x77, 0x01, 0x60, 0x20, 0x2c, +0x89, 0xe1, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xd9, 0x90, 0x52, 0xb9, +0x09, 0xc9, 0x8b, 0x7a, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc9, 0x01, 0x22, 0x21, 0x73, 0xfa, 0x2d, +0x35, 0x2d, 0x05, 0xc0, 0x64, 0x89, 0x4b, 0x6f, +0xf6, 0x5c, 0xd3, 0xa6, 0xcd, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xfd, +0xc7, 0x4a, 0xdf, 0xca, 0x15, 0x60, 0x03, 0x04, +0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0x45, +0x86, 0x60, 0xae, 0x6a, 0x51, 0x2f, 0xfb, 0x54, +0x57, 0x1b, 0x30, 0xaa, 0x3e, 0x60, 0xed, 0x62, +0x0b, 0x7d, 0xe4, 0x62, 0x96, 0x00, 0x09, 0xa5, +0xc5, 0xce, 0x71, 0x93, 0x1e, 0xb8, 0x18, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, -0x21, 0xb3, 0xfe, 0xf3, 0x1b, 0xc8, 0xe8, 0xeb, -0x8c, 0xfe, 0x3c, 0x07, 0xd0, 0xef, 0x19, 0xe7, -0x3a, 0x40, 0xd4, 0x70, 0xf8, 0xa1, 0xc1, 0xdd, -0xe3, 0x0f, 0x4c, 0x9d, 0xb3, 0x36, 0x48, 0x7b, -0xee, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, -0x01, 0x22, 0x21, 0xc1, 0x35, 0x40, 0x44, 0x4c, -0x6f, 0x19, 0xf4, 0x5f, 0xed, 0xc3, 0xb1, 0x88, -0x46, 0xc6, 0x3a, 0x8b, 0x33, 0x9d, 0xe7, 0x54, -0x5c, 0xad, 0x65, 0x0d, 0xe8, 0x0c, 0x04, 0x1a, -0x31, 0x57, 0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xcd, 0x01, 0x22, 0x21, 0x2e, 0xd4, 0xfd, -0x84, 0x3a, 0x9d, 0x56, 0xab, 0x03, 0x31, 0xdf, -0x7e, 0x1a, 0x52, 0x64, 0x3d, 0x1f, 0xbf, 0xde, -0xa0, 0x9a, 0xaf, 0x62, 0x6a, 0x0e, 0x90, 0x81, -0x24, 0x9c, 0xfe, 0x1c, 0x9b, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0xe6, -0x0a, 0x57, 0x66, 0x67, 0xd3, 0x30, 0x7b, 0xa8, -0x88, 0xad, 0xa7, 0x1f, 0xe3, 0xb6, 0x46, 0xe3, -0x27, 0xf0, 0x18, 0xae, 0x58, 0xf3, 0x8d, 0xb1, -0x96, 0xc5, 0xf5, 0x2b, 0x43, 0x80, 0xd0, 0x00, +0x21, 0x0d, 0x76, 0xd1, 0x3b, 0xc3, 0x78, 0x62, +0x47, 0xc5, 0xc9, 0xa7, 0x44, 0xb2, 0x27, 0xe9, +0x4b, 0xbc, 0xba, 0x80, 0x5e, 0xca, 0x22, 0x2a, +0x9c, 0xc2, 0x82, 0xfd, 0x38, 0x5f, 0xa8, 0xa5, +0xfa, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, +0x01, 0x22, 0x21, 0xc2, 0x09, 0xe2, 0x72, 0x20, +0xef, 0x3b, 0xfb, 0x0c, 0xb9, 0x89, 0xcd, 0x40, +0xc4, 0x0f, 0x42, 0x6d, 0xed, 0xa3, 0x70, 0x17, +0x26, 0x19, 0x31, 0x71, 0x0a, 0xcd, 0xed, 0x82, +0xa5, 0x51, 0x1d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xcd, 0x01, 0x22, 0x21, 0x3b, 0xe3, 0xba, +0x7e, 0x0c, 0x78, 0xd8, 0xfd, 0xd3, 0xd6, 0x2e, +0xf1, 0x88, 0xb7, 0x58, 0xe3, 0xe4, 0x10, 0x38, +0x86, 0x59, 0xb8, 0xac, 0x65, 0x8d, 0x06, 0x3d, +0x31, 0x53, 0x69, 0x23, 0xed, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0x16, +0x23, 0x89, 0xd5, 0xdd, 0x14, 0xac, 0x41, 0x5e, +0x15, 0x90, 0xc1, 0x15, 0x0a, 0xce, 0x4c, 0xea, +0xc0, 0xa2, 0xe1, 0xc3, 0x4c, 0x9b, 0x74, 0x61, +0x8a, 0x66, 0x2f, 0x79, 0x4c, 0x77, 0x46, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, -0x21, 0xfb, 0x3f, 0x59, 0x4d, 0xbe, 0x91, 0x2f, -0x07, 0x2f, 0xd6, 0xa0, 0x7e, 0x87, 0xb7, 0x64, -0xd0, 0xdb, 0x20, 0x6e, 0x2c, 0x8e, 0xed, 0x4c, -0x76, 0x2a, 0xdc, 0xad, 0x8c, 0xf3, 0xab, 0xb2, -0xdb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, -0x01, 0x22, 0x21, 0xbe, 0x91, 0x51, 0x89, 0xfe, -0x23, 0x7c, 0x9d, 0x29, 0xaa, 0x34, 0xcd, 0xe2, -0x26, 0xf4, 0xfd, 0xa3, 0x01, 0x38, 0x20, 0x6a, -0xdf, 0x74, 0xf0, 0xb7, 0xf3, 0xc5, 0xb8, 0x0e, -0xff, 0xaa, 0xdd, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd1, 0x01, 0x22, 0x21, 0xe7, 0xd2, 0x6b, -0xd1, 0x99, 0x0a, 0x07, 0x54, 0xb8, 0x46, 0x95, -0x75, 0x1f, 0xfa, 0x3b, 0xa6, 0x88, 0x44, 0x72, -0xec, 0x3c, 0x57, 0x74, 0x0f, 0x72, 0x68, 0xbc, -0x17, 0x83, 0x2b, 0x60, 0x21, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0x87, -0xfc, 0x52, 0xb8, 0x5f, 0x6f, 0x57, 0x28, 0xc6, -0x82, 0x48, 0xd9, 0xd0, 0xf9, 0x31, 0x59, 0xe7, -0x9d, 0xab, 0x72, 0x90, 0xe3, 0xbb, 0xb6, 0xb5, -0xf9, 0x81, 0x33, 0xcd, 0xe1, 0xfc, 0x41, 0x00, +0x21, 0xb4, 0x13, 0x37, 0x5e, 0x0d, 0xcc, 0x0e, +0xc5, 0x81, 0x06, 0xf6, 0xee, 0x05, 0xef, 0xfe, +0xf4, 0xaa, 0x87, 0x35, 0x65, 0xfd, 0x56, 0xdb, +0xb2, 0xfd, 0xa7, 0xbc, 0xe6, 0xb3, 0xaf, 0x20, +0xa5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, +0x01, 0x22, 0x21, 0x7d, 0xd3, 0x13, 0xee, 0x5c, +0xf2, 0xb2, 0x3c, 0x0a, 0xcf, 0xca, 0x50, 0xf9, +0x4e, 0xaa, 0x98, 0x79, 0xdf, 0xfc, 0x52, 0x9e, +0x7f, 0xcb, 0x46, 0xfc, 0xdf, 0x20, 0xa6, 0x3f, +0x68, 0x7e, 0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd1, 0x01, 0x22, 0x21, 0xc5, 0x2f, 0xe6, +0x22, 0xd8, 0x32, 0xb6, 0xc8, 0xa9, 0x23, 0xb2, +0x0a, 0xc6, 0xbe, 0x58, 0x86, 0x43, 0x86, 0x68, +0x87, 0x25, 0x3f, 0x4a, 0x74, 0x60, 0x21, 0xe1, +0x1f, 0x39, 0x0b, 0x77, 0x46, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0x4c, +0x4f, 0xf3, 0x8a, 0xd5, 0x9e, 0x53, 0xb9, 0xb3, +0x36, 0xb3, 0x5a, 0xfa, 0x87, 0x3d, 0xfd, 0x09, +0x49, 0x8b, 0x99, 0xac, 0xe2, 0x24, 0x1d, 0xa7, +0x13, 0x50, 0x9b, 0x99, 0x13, 0xfb, 0x77, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, -0x21, 0x9e, 0x22, 0xbe, 0x91, 0xb0, 0xc1, 0x90, -0xd2, 0x9c, 0x79, 0x40, 0xf2, 0x8d, 0x67, 0x3c, -0x5f, 0xc7, 0xd6, 0x18, 0xc1, 0xd8, 0xee, 0xd1, -0xf2, 0x66, 0x81, 0xc8, 0x4a, 0x62, 0xf3, 0x8f, -0x5c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, -0x01, 0x22, 0x21, 0x27, 0xf7, 0x1c, 0x63, 0xf2, -0x61, 0x6c, 0x68, 0xf6, 0x58, 0x5e, 0x2d, 0xad, -0x97, 0xae, 0xf6, 0xc7, 0xf2, 0x09, 0xef, 0x00, -0xca, 0x29, 0x9c, 0x14, 0x09, 0x65, 0xc5, 0x55, -0x2c, 0x8e, 0x6f, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd5, 0x01, 0x22, 0x21, 0x60, 0xb7, 0xf2, -0x54, 0x3b, 0xf8, 0x81, 0x37, 0x48, 0xe2, 0x52, -0x08, 0x9e, 0xcf, 0xfb, 0x3f, 0x06, 0xe0, 0xdd, -0x84, 0x76, 0x9b, 0x1e, 0x4f, 0xf2, 0x16, 0xf7, -0x04, 0x7a, 0x11, 0x89, 0x5e, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0xe1, -0x10, 0x05, 0x8d, 0x77, 0xbe, 0xef, 0x63, 0x54, -0x03, 0xe7, 0xa2, 0x18, 0x4f, 0xb7, 0x95, 0x14, -0xd5, 0xd2, 0xc5, 0xb3, 0x8b, 0x71, 0x9e, 0x42, -0x73, 0xf6, 0xd9, 0x71, 0xf3, 0x45, 0x6c, 0x00, +0x21, 0xdb, 0x9a, 0xfa, 0xf5, 0x0a, 0xd3, 0xc3, +0x36, 0x9e, 0x5f, 0x32, 0x53, 0x68, 0xbe, 0x8a, +0xf0, 0xc0, 0xdf, 0x61, 0x36, 0x98, 0x05, 0x29, +0x5e, 0x58, 0x78, 0x9a, 0xb0, 0x26, 0x01, 0x32, +0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, +0x01, 0x22, 0x21, 0x05, 0x6a, 0xc7, 0xfe, 0x57, +0x4c, 0x0b, 0x16, 0xca, 0xe7, 0xb2, 0x70, 0x36, +0x97, 0x96, 0x58, 0x96, 0xf6, 0x0e, 0x42, 0xde, +0x7b, 0xfc, 0xa8, 0xd0, 0x9e, 0x6f, 0x34, 0xe3, +0x8a, 0x11, 0x0e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd5, 0x01, 0x22, 0x21, 0xa7, 0x52, 0xb3, +0x92, 0x74, 0x17, 0x21, 0xfe, 0xa8, 0x82, 0xdc, +0xde, 0xc2, 0x58, 0x6e, 0x1c, 0x18, 0x2a, 0xc6, +0x03, 0x7d, 0xfa, 0x4c, 0x6d, 0xc8, 0x7a, 0xf0, +0x14, 0x0a, 0x89, 0xce, 0x9b, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0x2c, +0xbc, 0xb8, 0x58, 0x6a, 0xac, 0xbb, 0x11, 0xec, +0x44, 0x15, 0x98, 0x5a, 0x1d, 0x01, 0x89, 0xe9, +0xf7, 0xe0, 0x91, 0xe8, 0x2e, 0xa3, 0x86, 0x1d, +0x91, 0xcc, 0xda, 0x7c, 0x70, 0xb2, 0x77, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, -0x21, 0xef, 0x04, 0x33, 0x41, 0x82, 0x27, 0x11, -0x9b, 0xfd, 0xba, 0xe6, 0x7c, 0xc1, 0x99, 0x4d, -0x79, 0x0b, 0x48, 0x89, 0x50, 0x76, 0x26, 0x6d, -0x3b, 0xd2, 0xa1, 0xfe, 0x14, 0x97, 0xd8, 0x84, -0x95, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, -0x01, 0x22, 0x21, 0x96, 0xec, 0x23, 0x90, 0xfc, -0x52, 0x1c, 0xc2, 0x4c, 0xea, 0xf3, 0x00, 0x31, -0x28, 0x1b, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x58, 0xb4, 0x70, 0xa5, -0xb6, 0xe5, 0x24, 0xd0, 0x03, 0x04, 0x51, 0x02, -0x00, 0xd9, 0x01, 0x22, 0x21, 0x44, 0x05, 0x8f, -0xf9, 0x60, 0xb8, 0xe5, 0x16, 0x09, 0xba, 0x8e, -0xd7, 0xd6, 0xf4, 0x09, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xaa, -0xdb, 0x3c, 0x7f, 0x91, 0x13, 0x31, 0x03, 0x04, -0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0x57, -0x0c, 0x11, 0xae, 0x10, 0x38, 0x69, 0x1e, 0xfa, -0x0f, 0x5f, 0x27, 0x90, 0x97, 0x29, 0x4b, 0x43, -0x8d, 0x41, 0x52, 0x08, 0x15, 0x6c, 0x34, 0x58, -0x78, 0x55, 0x89, 0x60, 0x9d, 0x6b, 0x25, 0x00, +0x21, 0xef, 0xf2, 0xd5, 0x61, 0x47, 0x1e, 0x8f, +0x7d, 0x2c, 0xf9, 0x17, 0x42, 0x54, 0x94, 0x1c, +0x36, 0x08, 0x60, 0x93, 0x72, 0x62, 0x59, 0x54, +0x90, 0xf2, 0xb2, 0x9c, 0x44, 0xf0, 0x5e, 0x39, +0x31, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, +0x01, 0x22, 0x21, 0x74, 0x1f, 0x74, 0x9f, 0x66, +0xa4, 0x67, 0x13, 0x50, 0x5b, 0xfb, 0x2b, 0x0b, +0x68, 0x22, 0xf0, 0x22, 0xbd, 0x32, 0xfc, 0xaa, +0x97, 0x7e, 0xac, 0x46, 0x22, 0x0d, 0xec, 0xd5, +0xf1, 0x87, 0x2e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd9, 0x01, 0x22, 0x21, 0xe1, 0x07, 0x9b, +0x93, 0xcf, 0x50, 0xa9, 0xaf, 0x0e, 0x41, 0xa2, +0x2b, 0xc7, 0xd0, 0xf6, 0x31, 0xf8, 0xca, 0x5d, +0xbb, 0xff, 0x8d, 0xec, 0x04, 0x03, 0x93, 0xb8, +0xcc, 0xbe, 0x72, 0x49, 0xdd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0x2c, +0x34, 0x0a, 0x26, 0x95, 0x00, 0x14, 0x70, 0x91, +0x75, 0x9a, 0x15, 0xb7, 0x5d, 0x1e, 0xfe, 0x2f, +0x8c, 0xde, 0x2b, 0x69, 0x0b, 0xb2, 0xb8, 0x1f, +0x83, 0x4c, 0x8a, 0xd1, 0xf8, 0x21, 0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, -0x21, 0xb9, 0x8c, 0x79, 0x47, 0x83, 0x53, 0x96, -0xf5, 0x6f, 0x09, 0xfd, 0x3f, 0xcf, 0xad, 0xc4, -0xfd, 0x68, 0x16, 0xae, 0x2e, 0x9c, 0xdb, 0x51, -0xae, 0x1a, 0x13, 0x64, 0x00, 0x9c, 0x65, 0x6b, -0x85, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, -0x01, 0x22, 0x21, 0x86, 0x2b, 0x1e, 0x58, 0x81, -0x72, 0x35, 0xe4, 0xc9, 0xd4, 0xa6, 0xb7, 0x0c, -0xce, 0xc0, 0x07, 0xe7, 0x8d, 0x3d, 0x33, 0x27, -0xd7, 0x4d, 0x29, 0x75, 0x12, 0x48, 0xfa, 0xe9, -0x96, 0x55, 0x31, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xdd, 0x01, 0x22, 0x21, 0x4f, 0x0d, 0x72, -0x24, 0xb7, 0x02, 0x97, 0x40, 0x2f, 0x65, 0x96, -0xd1, 0x5b, 0xd8, 0xb2, 0x4b, 0xd7, 0x12, 0xe7, -0xc6, 0x1d, 0x79, 0xb2, 0x31, 0x35, 0x2c, 0xd1, -0x1f, 0x30, 0x93, 0x3f, 0x80, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x35, -0x51, 0x36, 0x83, 0x7c, 0xc9, 0x1c, 0x5b, 0x5e, -0x21, 0xa6, 0xbb, 0x07, 0xc7, 0xeb, 0x0c, 0x81, -0xf3, 0xf4, 0xd8, 0x94, 0xb4, 0xc4, 0x0f, 0xe7, -0x55, 0x0c, 0x4d, 0xd8, 0x66, 0xcf, 0x63, 0x00, +0x21, 0xd8, 0x35, 0x37, 0x0d, 0x44, 0x05, 0xe5, +0x89, 0x30, 0x75, 0xdf, 0xb6, 0xbd, 0x0b, 0x89, +0x2d, 0x5c, 0x63, 0x7f, 0x40, 0x05, 0x50, 0xd5, +0xc1, 0x25, 0xfd, 0x65, 0x27, 0x68, 0x05, 0xfa, +0xad, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, +0x01, 0x22, 0x21, 0x7c, 0x70, 0x6d, 0x80, 0xd1, +0xd2, 0x64, 0x0e, 0xdf, 0x1e, 0xcf, 0xc6, 0xc0, +0xed, 0xf7, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x94, 0x05, 0xf6, 0x32, +0x74, 0xce, 0x4e, 0x0f, 0x03, 0x04, 0x51, 0x02, +0x00, 0xdd, 0x01, 0x22, 0x21, 0x8e, 0x10, 0xb3, +0x39, 0xc4, 0x8c, 0xf0, 0xb8, 0xbe, 0x2d, 0x95, +0x00, 0x2c, 0x87, 0x84, 0x2e, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, +0x9e, 0xfa, 0xbe, 0x46, 0x12, 0x65, 0x03, 0x04, +0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x1e, +0x9b, 0x3b, 0x5f, 0x39, 0x10, 0x0a, 0x63, 0x3a, +0x8f, 0xc7, 0x82, 0x22, 0x8e, 0x4f, 0xfb, 0xee, +0xfc, 0x0a, 0x84, 0xa8, 0x2a, 0xf4, 0xe1, 0xf3, +0xdc, 0xb5, 0x0f, 0x7c, 0x7a, 0x39, 0x22, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, -0x21, 0xa3, 0x07, 0x37, 0x27, 0xdb, 0x90, 0x1c, -0x4f, 0xb3, 0x3d, 0x9c, 0xe3, 0x45, 0x59, 0x88, -0x45, 0x50, 0xbf, 0x19, 0xe9, 0x03, 0x25, 0x75, -0xb2, 0x71, 0x22, 0xfc, 0xd0, 0x2b, 0x6a, 0xb0, -0x19, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, -0x01, 0x22, 0x21, 0xd1, 0xf6, 0x7b, 0xb5, 0xfa, -0x5c, 0xde, 0x88, 0x47, 0xdf, 0xa7, 0xb0, 0x53, -0x69, 0x96, 0xee, 0x3c, 0x86, 0x35, 0x72, 0xda, -0x61, 0x57, 0xf9, 0x63, 0x7e, 0x98, 0x1e, 0xf6, -0xea, 0xb1, 0xeb, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe1, 0x01, 0x22, 0x21, 0x99, 0xd6, 0x40, -0xfe, 0x08, 0x01, 0xc1, 0xcd, 0xbe, 0x07, 0x11, -0x88, 0x80, 0x4e, 0x43, 0xd7, 0x26, 0xde, 0x1a, -0x69, 0x02, 0xd0, 0xde, 0xa0, 0x57, 0x12, 0x69, -0x8f, 0x63, 0xee, 0x32, 0xde, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0xa2, -0x97, 0x7b, 0xc9, 0x13, 0xbd, 0x6f, 0xc6, 0xec, -0x0d, 0x62, 0x79, 0x9c, 0x48, 0x1d, 0x1c, 0x14, -0x42, 0xe7, 0xa4, 0x1c, 0xc6, 0x12, 0xd6, 0x9e, -0x54, 0x6e, 0x6e, 0x94, 0x9b, 0x2d, 0x88, 0x00, +0x21, 0xba, 0x3e, 0x86, 0x10, 0x58, 0x6e, 0xeb, +0xdb, 0x3f, 0x13, 0x92, 0x00, 0x0a, 0x22, 0xe3, +0xb8, 0x7a, 0x55, 0x47, 0xa8, 0xa3, 0x35, 0x7c, +0xc4, 0xb6, 0x6b, 0x82, 0x11, 0x53, 0x32, 0xf0, +0xe1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, +0x01, 0x22, 0x21, 0x28, 0x72, 0xf6, 0x79, 0xa0, +0x71, 0xf5, 0xb3, 0x2b, 0xe4, 0x4c, 0x89, 0x4e, +0x6c, 0x96, 0x64, 0x41, 0x7d, 0x63, 0xc5, 0xd5, +0xa2, 0xff, 0x2d, 0xfb, 0xa7, 0x00, 0xb0, 0x0d, +0x3e, 0x2b, 0xea, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe1, 0x01, 0x22, 0x21, 0xad, 0xad, 0x06, +0x25, 0x7d, 0x7e, 0x78, 0xc0, 0x99, 0xb2, 0xba, +0xfe, 0x7b, 0xb5, 0x98, 0x53, 0x5c, 0xcc, 0xad, +0xd7, 0x47, 0xc2, 0x2f, 0x18, 0x10, 0x4f, 0xee, +0xc3, 0x68, 0x9b, 0x80, 0xb4, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0xb1, +0x1c, 0x62, 0x06, 0x98, 0x0c, 0xd1, 0xff, 0x36, +0xcd, 0xed, 0xa5, 0x5a, 0x42, 0xb1, 0x55, 0x4c, +0x09, 0x53, 0xab, 0xff, 0x16, 0xc5, 0xa4, 0x1d, +0xaf, 0xe0, 0x78, 0x57, 0x4b, 0xc4, 0x38, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, -0x21, 0xdd, 0x0f, 0x7f, 0x69, 0x5a, 0xe0, 0x98, -0xfa, 0x14, 0x35, 0x56, 0xf8, 0x8a, 0xdb, 0xcc, -0xcc, 0xe6, 0xab, 0x79, 0x80, 0x90, 0x7a, 0x63, -0xba, 0x28, 0x61, 0x4b, 0xe6, 0xd2, 0x60, 0x71, -0xfb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, -0x01, 0x22, 0x21, 0x35, 0xd6, 0x21, 0x3b, 0xaa, -0xfd, 0x7d, 0x03, 0x34, 0xae, 0x2a, 0x5a, 0xe5, -0x8b, 0x91, 0xd8, 0x13, 0xd0, 0x37, 0xd0, 0xea, -0x66, 0x9a, 0x3b, 0xc0, 0x70, 0xae, 0x75, 0xf6, -0x7b, 0x30, 0x20, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe5, 0x01, 0x22, 0x21, 0xc0, 0x1d, 0x9f, -0x5b, 0xf3, 0xc7, 0x0b, 0x5c, 0x8c, 0xd5, 0xa8, -0xd4, 0x4a, 0xfc, 0x45, 0x9a, 0xba, 0xb2, 0x26, -0xd3, 0x37, 0x5f, 0x15, 0xd7, 0xd6, 0xd5, 0x35, -0xcb, 0x17, 0xa3, 0x97, 0xce, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x7a, -0xc4, 0x20, 0x90, 0x4f, 0xe6, 0x03, 0x90, 0xe9, -0x99, 0x3c, 0xca, 0xe1, 0x38, 0x4a, 0x84, 0xfd, -0xa2, 0x6c, 0xd3, 0xe4, 0x8d, 0x72, 0x76, 0x59, -0x9f, 0x82, 0x2f, 0x00, 0x7d, 0xd6, 0x4e, 0x00, +0x21, 0x92, 0x6b, 0x19, 0xe0, 0xe2, 0xc7, 0xb3, +0x06, 0x4b, 0xde, 0x05, 0x2d, 0x55, 0x35, 0xce, +0x84, 0xb4, 0x90, 0x03, 0xbf, 0xc3, 0x47, 0x8b, +0xc8, 0x54, 0x1c, 0x6e, 0xbf, 0xc2, 0x72, 0xfb, +0x40, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, +0x01, 0x22, 0x21, 0x07, 0x44, 0x5f, 0xd2, 0x82, +0xaf, 0xf6, 0x46, 0x80, 0x38, 0x98, 0x9e, 0x89, +0x2a, 0xa8, 0x45, 0xe5, 0x11, 0x5f, 0xe4, 0x7d, +0xe1, 0x5b, 0xe4, 0xa9, 0xae, 0x1a, 0xcb, 0x32, +0x53, 0x1b, 0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe5, 0x01, 0x22, 0x21, 0xb3, 0x9c, 0x93, +0x65, 0xbc, 0x6a, 0x76, 0x71, 0x15, 0xe1, 0x1f, +0x24, 0xd2, 0x41, 0x9c, 0x0e, 0x6d, 0xce, 0xc6, +0x74, 0x0b, 0xdc, 0xa8, 0xeb, 0x04, 0x3a, 0xa2, +0x6f, 0x7b, 0xea, 0xbb, 0xc5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0xdc, +0x89, 0x14, 0x5e, 0x52, 0x6d, 0x89, 0x1a, 0x22, +0x5c, 0x92, 0xcf, 0x03, 0x69, 0xd8, 0x0c, 0x98, +0x59, 0x20, 0x0b, 0x95, 0x13, 0xca, 0x5a, 0x2f, +0x17, 0xc6, 0x79, 0x51, 0x2a, 0x74, 0x99, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, -0x21, 0x50, 0x4c, 0x5e, 0x08, 0x66, 0x2a, 0xc7, -0x97, 0x2d, 0x93, 0x82, 0x60, 0xb6, 0x34, 0xfc, -0x35, 0x31, 0xb4, 0xa6, 0x7e, 0x8d, 0x1f, 0x65, -0xd2, 0xbd, 0xe5, 0xca, 0x71, 0x62, 0xea, 0x4c, -0xee, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, -0x01, 0x22, 0x21, 0x2a, 0x17, 0x1d, 0x4f, 0x53, -0xf0, 0x39, 0xc0, 0xc8, 0xfe, 0x41, 0xbd, 0x45, -0x2a, 0xf9, 0x77, 0x7a, 0xd5, 0xdc, 0xc3, 0x48, -0x47, 0x30, 0x8b, 0x6a, 0x4e, 0x48, 0x07, 0xf9, -0x7b, 0x6c, 0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, -0x00, 0xe9, 0x01, 0x22, 0x21, 0x67, 0x8b, 0x15, -0x3f, 0x42, 0x3d, 0x04, 0x66, 0x1e, 0x4e, 0xbd, -0x34, 0x92, 0x32, 0x9c, 0xf3, 0xd3, 0x88, 0x93, -0xf5, 0xab, 0x28, 0x06, 0xdd, 0xfe, 0xb8, 0xe6, -0x57, 0x30, 0x4a, 0x1d, 0x00, 0x00, 0x03, 0x04, -0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0xba, -0xb9, 0x27, 0xff, 0x79, 0x9f, 0x9f, 0xbf, 0x86, -0x5f, 0x05, 0xef, 0x59, 0x79, 0x0b, 0x05, 0xde, -0xce, 0x62, 0x46, 0x9c, 0xed, 0x97, 0x85, 0xc4, -0xb3, 0x7e, 0xa7, 0x63, 0xe4, 0xdc, 0x8c, 0x00, +0x21, 0x2c, 0x2a, 0x3d, 0x16, 0xf4, 0x9b, 0xea, +0x25, 0x4c, 0xd9, 0xf9, 0xa2, 0x9b, 0x9e, 0x0d, +0x5f, 0x47, 0xb4, 0xce, 0xbd, 0x22, 0xbb, 0x50, +0xf5, 0x2f, 0x77, 0xb2, 0x0a, 0xbb, 0xe4, 0xd2, +0x40, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, +0x01, 0x22, 0x21, 0x18, 0x30, 0xce, 0x63, 0x6b, +0x22, 0x8b, 0x2f, 0xb7, 0x1a, 0xf3, 0xc0, 0xa5, +0xa2, 0xdb, 0x1d, 0x6a, 0x1c, 0xfc, 0xcf, 0x05, +0xf2, 0xad, 0xd4, 0xd7, 0x3b, 0xc2, 0x3f, 0xf5, +0xc4, 0x03, 0xdf, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe9, 0x01, 0x22, 0x21, 0x53, 0x7a, 0x9c, +0x2f, 0xe0, 0x39, 0x21, 0x84, 0x00, 0x56, 0x11, +0x66, 0x15, 0x5e, 0x46, 0xcb, 0xb1, 0x1e, 0x06, +0xa0, 0x62, 0xcc, 0x04, 0xd4, 0xfc, 0x57, 0x6b, +0x2e, 0x1d, 0xd9, 0xbb, 0x9f, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0x1d, +0x8d, 0xaf, 0x46, 0xbe, 0x20, 0x69, 0xf5, 0x96, +0x08, 0xea, 0xf3, 0xbd, 0x8f, 0x1e, 0xbd, 0xbe, +0x8c, 0xa9, 0xa9, 0xa4, 0x37, 0x25, 0xe2, 0xe4, +0x8b, 0xdb, 0x04, 0xdd, 0xbc, 0x57, 0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, -0x21, 0x16, 0xc9, 0xf8, 0x6f, 0xca, 0xec, 0x3c, -0x0d, 0x54, 0xa1, 0xac, 0x91, 0xae, 0xdd, 0x7a, -0x1c, 0xdf, 0xfe, 0xc4, 0x1d, 0xef, 0x4f, 0x9e, -0x1a, 0xa0, 0x42, 0x46, 0x36, 0x5c, 0xcc, 0x3c, -0x57, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, -0x01, 0x22, 0x21, 0xc0, 0x47, 0x63, 0xb1, 0xa5, -0xb1, 0xd9, 0xdf, 0x55, 0x04, 0xbd, 0xbc, 0x74, -0x93, 0x5a, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xdf, 0x29, 0xbe, 0x8a, -0xd2, 0xe0, 0xa1, 0x06, 0x03, 0x04, 0x51, 0x02, -0x00, 0xed, 0x01, 0x22, 0x21, 0x8a, 0x36, 0xe2, -0x45, 0xd9, 0xcb, 0x8f, 0xa4, 0x17, 0x7f, 0xce, -0xbe, 0x51, 0x1e, 0x0c, 0x39, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x15, -0xa2, 0x5e, 0x28, 0xb2, 0xb4, 0x81, 0x03, 0x04, -0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0x9e, -0x3f, 0x2a, 0x1a, 0x49, 0x74, 0xc0, 0xfc, 0x64, -0xfc, 0xba, 0x3a, 0xa8, 0xf3, 0x4c, 0xd4, 0x00, +0x21, 0xdd, 0xd5, 0x8d, 0x89, 0x78, 0x7e, 0x61, +0x32, 0x14, 0xe4, 0x42, 0xb9, 0x5a, 0xb7, 0x30, +0x0d, 0xd2, 0xdc, 0x36, 0xc0, 0x87, 0xbf, 0x1f, +0xcc, 0xc7, 0xa5, 0xea, 0xe6, 0x16, 0xe6, 0xec, +0x69, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, +0x01, 0x22, 0x21, 0x79, 0x43, 0xd5, 0xc6, 0xed, +0xdc, 0xb9, 0x96, 0x60, 0xd8, 0xe6, 0x5f, 0xb9, +0xb8, 0x52, 0xe3, 0xf9, 0x26, 0xe5, 0x06, 0xd0, +0xb0, 0x0f, 0xf9, 0x3c, 0xc1, 0xeb, 0x47, 0xbe, +0x65, 0x9d, 0xef, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xed, 0x01, 0x22, 0x21, 0x71, 0x7b, 0x8a, +0xf0, 0xd2, 0x59, 0xba, 0xb1, 0x80, 0x42, 0x35, +0xe4, 0x83, 0x45, 0xb9, 0x1c, 0x50, 0x5c, 0x69, +0x29, 0xc7, 0x42, 0xe3, 0x4a, 0xda, 0x32, 0x76, +0xcc, 0x41, 0x71, 0xe7, 0x6c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0xf9, +0x96, 0x0f, 0x08, 0xef, 0x32, 0x0e, 0x08, 0x9c, +0xc4, 0xb9, 0x9a, 0x83, 0x24, 0xca, 0xe4, 0xa9, +0x71, 0xae, 0xf0, 0xeb, 0x02, 0x7b, 0x7f, 0x11, +0x20, 0x9b, 0x5c, 0xc3, 0x77, 0x37, 0xf2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, +0x21, 0x0d, 0xb7, 0x85, 0x23, 0xa9, 0xc6, 0x80, +0xf8, 0x6c, 0x2e, 0x26, 0xde, 0x55, 0x4f, 0x44, +0x9e, 0xd4, 0xd1, 0x30, 0xd7, 0x1a, 0xca, 0xb2, +0x9d, 0xa7, 0x8d, 0xf8, 0x99, 0x69, 0x91, 0x79, +0x98, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, +0x01, 0x22, 0x21, 0xdc, 0xcf, 0xc6, 0x9e, 0x57, +0xa8, 0x80, 0x8d, 0x66, 0xde, 0xf1, 0x6a, 0xc7, +0xce, 0xf4, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0a, 0xa1, 0xf6, 0xa3, +0xb5, 0x3d, 0x34, 0x3c, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf1, 0x01, 0x22, 0x21, 0x85, 0x5e, 0x68, +0xb2, 0x72, 0x0d, 0xfe, 0xb8, 0xa8, 0x13, 0xad, +0x29, 0x87, 0x11, 0xa0, 0x41, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xd3, +0xbf, 0x0a, 0xeb, 0xb7, 0x1b, 0x69, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0xc5, +0x9a, 0x63, 0xd3, 0x49, 0xbf, 0x22, 0xab, 0x7b, +0x4e, 0x63, 0xce, 0xea, 0xb2, 0x95, 0xee, 0x14, +0xfc, 0x4a, 0x10, 0x5c, 0x90, 0x05, 0x08, 0xe4, +0x23, 0xf9, 0x89, 0x27, 0xa7, 0x08, 0x69, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, +0x21, 0x50, 0xb2, 0xce, 0xda, 0x09, 0xc2, 0xee, +0xe2, 0xb2, 0xfb, 0x27, 0xe1, 0x7a, 0x27, 0x63, +0xad, 0xd8, 0x5d, 0x94, 0x89, 0x92, 0x61, 0x1b, +0x9f, 0xb6, 0x79, 0xc9, 0x11, 0x06, 0xef, 0x4b, +0xf6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, +0x01, 0x22, 0x21, 0x86, 0x76, 0xf6, 0x8b, 0x81, +0x95, 0x02, 0x3d, 0x27, 0xf5, 0xf7, 0xd5, 0xf0, +0x50, 0x68, 0xb5, 0x0c, 0xd5, 0x0f, 0xeb, 0xee, +0x35, 0xb2, 0x95, 0x50, 0xd5, 0x0f, 0xc2, 0x63, +0xf2, 0xd9, 0xf1, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf5, 0x01, 0x22, 0x21, 0x8d, 0x41, 0x3b, +0x48, 0xd4, 0x68, 0xd2, 0x94, 0xde, 0x4b, 0x83, +0xb4, 0x88, 0x11, 0x48, 0x2c, 0x5e, 0x79, 0x61, +0x4a, 0xba, 0xdb, 0xd1, 0x90, 0x34, 0xce, 0x84, +0x2d, 0xae, 0x31, 0x3c, 0x73, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0xc8, +0x22, 0x52, 0x81, 0x7a, 0x33, 0xcb, 0x65, 0x7c, +0xe6, 0x3b, 0x05, 0xea, 0x30, 0x3e, 0x57, 0x9e, +0x9e, 0x90, 0x49, 0x65, 0x0a, 0xf5, 0xfc, 0x5a, +0x60, 0xc6, 0x46, 0x89, 0xdd, 0xbb, 0x95, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, +0x21, 0xec, 0xe0, 0x9a, 0xcb, 0xd8, 0x20, 0x43, +0xc0, 0x0c, 0x08, 0xef, 0x96, 0x39, 0xb0, 0x4e, +0x12, 0xf7, 0x8f, 0xb5, 0xc4, 0x8c, 0x98, 0x00, +0x99, 0x9d, 0x10, 0x3b, 0xaa, 0xe9, 0x33, 0xd5, +0x15, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, +0x01, 0x22, 0x21, 0x7e, 0xbe, 0xd8, 0x01, 0x83, +0x60, 0x6c, 0xf2, 0x7f, 0xcd, 0x55, 0x85, 0x9c, +0xaa, 0x42, 0x52, 0x5f, 0xca, 0x24, 0xed, 0x53, +0x25, 0x76, 0x0f, 0x41, 0xd4, 0x65, 0x5b, 0x81, +0x96, 0x93, 0x7e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf9, 0x01, 0x22, 0x21, 0xfb, 0xdc, 0x86, +0x8c, 0xfb, 0x6a, 0x61, 0x18, 0x54, 0x11, 0x83, +0x2f, 0x13, 0x34, 0xdd, 0x70, 0x7a, 0x52, 0x32, +0x79, 0xa4, 0x98, 0x28, 0x62, 0x04, 0xa1, 0x1f, +0x62, 0x8b, 0x61, 0x5f, 0x17, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0xb6, +0x1a, 0x27, 0x94, 0xa7, 0xf4, 0x08, 0x45, 0x11, +0x14, 0xd3, 0x37, 0xa5, 0xa5, 0xb4, 0x59, 0xe5, +0x08, 0x76, 0x32, 0x83, 0xb4, 0x0c, 0x3b, 0xba, +0x9e, 0xd4, 0xbb, 0x0c, 0x08, 0xe0, 0xc7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, +0x21, 0x64, 0x64, 0x82, 0xcf, 0x4f, 0x0b, 0xd4, +0xea, 0x09, 0xd2, 0xde, 0x2f, 0x35, 0x94, 0x20, +0x41, 0x86, 0xa2, 0x91, 0x2b, 0xd9, 0x55, 0x01, +0x85, 0x53, 0xa6, 0x0e, 0xca, 0x9e, 0xfa, 0x0a, +0xc8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, +0x01, 0x22, 0x21, 0x08, 0xa3, 0x77, 0x21, 0x36, +0x1e, 0x6f, 0x1e, 0x09, 0xba, 0xe8, 0x64, 0x78, +0xfb, 0x5b, 0x51, 0x53, 0xc5, 0x9a, 0x31, 0x04, +0xd6, 0xfb, 0x06, 0x5e, 0xaf, 0xb6, 0xa2, 0x6f, +0x5b, 0xb3, 0xef, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xfd, 0x01, 0x22, 0x21, 0x0c, 0xf7, 0xbb, +0x25, 0xa5, 0xaa, 0x39, 0xbb, 0xe1, 0x1e, 0xd9, +0x9c, 0xc8, 0x89, 0x22, 0x10, 0x79, 0x94, 0x18, +0x4d, 0x81, 0xbb, 0xe8, 0x90, 0x92, 0xd0, 0x63, +0xa7, 0xa7, 0xa3, 0xb8, 0xa8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0xe4, +0x2d, 0xc7, 0x1f, 0xe6, 0xb7, 0x0b, 0x83, 0xa7, +0x2a, 0xdc, 0xf0, 0xd2, 0xaa, 0x1b, 0xe2, 0xc1, +0xec, 0x13, 0xbd, 0x49, 0xf1, 0xff, 0x45, 0x1f, +0x5f, 0xc3, 0x56, 0x76, 0x42, 0x91, 0x3f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, +0x21, 0x7d, 0x9d, 0x2d, 0x65, 0x53, 0x20, 0x3e, +0xbe, 0x2c, 0x7d, 0x65, 0x22, 0x64, 0xb9, 0x3e, +0xaa, 0x9e, 0xf2, 0x19, 0xe4, 0xc9, 0xbb, 0x69, +0xd2, 0x09, 0x95, 0x78, 0xee, 0xaa, 0x29, 0x43, +0xde, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, +0x01, 0x22, 0x21, 0x6b, 0x1a, 0xab, 0x9e, 0xc6, +0x51, 0xba, 0x58, 0xe0, 0x3a, 0xbd, 0x17, 0x01, +0x49, 0xe2, 0x99, 0xfd, 0xe5, 0x3c, 0x22, 0x86, +0xcd, 0xf9, 0x13, 0xa0, 0x10, 0xa8, 0x34, 0x5e, +0xdb, 0x6f, 0xbc, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x01, 0x01, 0x22, 0x21, 0xc2, 0xde, 0xfc, +0x9a, 0xa8, 0xba, 0xc7, 0xec, 0x51, 0x4c, 0x5a, +0x81, 0x07, 0x44, 0x1c, 0x75, 0xc6, 0x29, 0x79, +0x70, 0x52, 0x99, 0x33, 0x6e, 0x16, 0x99, 0x5c, +0x74, 0xe6, 0x13, 0xed, 0xf6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0xfc, +0x8a, 0x39, 0xee, 0xfa, 0xbc, 0x6d, 0x19, 0x0e, +0xc5, 0x79, 0xd6, 0xe9, 0xa1, 0x4e, 0xda, 0x60, +0x9c, 0xd8, 0x6d, 0xd2, 0x56, 0x8e, 0xdb, 0x55, +0xde, 0x62, 0x67, 0x9a, 0x22, 0xe4, 0x57, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, +0x21, 0x97, 0xee, 0xea, 0xa8, 0xbf, 0x78, 0x08, +0xe2, 0xa5, 0xa4, 0x1a, 0x0f, 0x17, 0xef, 0x30, +0x6c, 0x5a, 0x0d, 0x90, 0x58, 0xae, 0x82, 0x5d, +0x93, 0x64, 0x11, 0x65, 0x81, 0x64, 0x9e, 0xb3, +0x4f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, +0x01, 0x22, 0x21, 0xd3, 0x30, 0xb2, 0x1b, 0x5a, +0xad, 0x32, 0x53, 0x2e, 0xeb, 0x42, 0xe6, 0xc1, +0xbe, 0xe4, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5f, 0x04, 0x4d, 0x44, +0x02, 0x30, 0xa9, 0x4c, 0x03, 0x04, 0x51, 0x02, +0x00, 0x05, 0x01, 0x22, 0x21, 0xfc, 0x86, 0x80, +0xe4, 0x63, 0x99, 0x5c, 0x57, 0x20, 0x24, 0xb4, +0x80, 0xb4, 0x01, 0x31, 0x13, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xa4, +0x8a, 0x8a, 0xe8, 0x36, 0x85, 0xca, 0x03, 0x04, +0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x6e, +0x76, 0x1b, 0x4f, 0x0b, 0x68, 0xfb, 0xdd, 0x38, +0x6b, 0x8e, 0xc2, 0x4a, 0x60, 0x6a, 0x10, 0x86, +0xd7, 0xb8, 0x58, 0x41, 0xf9, 0x55, 0x44, 0x08, +0x0e, 0x94, 0xf9, 0x17, 0x93, 0xd3, 0x23, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, +0x21, 0xbb, 0xda, 0x39, 0xc5, 0x24, 0x60, 0x73, +0x22, 0xb3, 0xdd, 0xb7, 0xe7, 0xc6, 0xb5, 0xc3, +0x82, 0xe2, 0x6f, 0x9b, 0xb4, 0x05, 0x71, 0x05, +0xc4, 0xdb, 0x3a, 0xda, 0x69, 0xe2, 0x4b, 0x4f, +0xb2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, +0x01, 0x22, 0x21, 0x50, 0x6e, 0xbd, 0xcb, 0xc8, +0xd4, 0x69, 0x5c, 0x70, 0x85, 0x2d, 0x20, 0x7c, +0x63, 0xe5, 0xc1, 0x61, 0x60, 0x4f, 0xd1, 0x66, +0xe1, 0x14, 0x62, 0x02, 0x27, 0xd4, 0xb1, 0xf7, +0xc6, 0x75, 0x38, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x09, 0x01, 0x22, 0x21, 0x3a, 0x9f, 0xf1, +0x76, 0x74, 0xb7, 0xf9, 0x75, 0x50, 0xc4, 0xf0, +0x76, 0xf0, 0x0a, 0xc5, 0xc7, 0x96, 0xfb, 0xe0, +0x51, 0xfe, 0x1a, 0xa9, 0xf1, 0x53, 0x70, 0x49, +0xe9, 0xb2, 0x8e, 0xe9, 0xe9, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0x9a, +0x25, 0x0d, 0x98, 0xbb, 0x68, 0xa7, 0x90, 0xd7, +0xb2, 0x19, 0x8d, 0xd3, 0x5a, 0xf8, 0x02, 0x17, +0xa4, 0xcf, 0xfc, 0x70, 0x49, 0x19, 0x87, 0x6e, +0x14, 0x22, 0x3f, 0x9d, 0xe0, 0x75, 0xb0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, +0x21, 0x88, 0x31, 0x57, 0x95, 0x18, 0xf2, 0x68, +0xd3, 0x06, 0x9d, 0x25, 0x03, 0x77, 0x4b, 0x70, +0x8d, 0x31, 0xee, 0xa4, 0xdc, 0xcb, 0x91, 0xf5, +0x20, 0xbd, 0x22, 0xef, 0xdc, 0x55, 0x98, 0x4b, +0xf6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, +0x01, 0x22, 0x21, 0x5f, 0x37, 0x44, 0xa6, 0x0f, +0x47, 0x5b, 0xa7, 0x8b, 0x1b, 0x61, 0xbd, 0xb9, +0x2a, 0x0c, 0x9c, 0x55, 0xc9, 0x93, 0x54, 0xd0, +0x49, 0xfb, 0x1f, 0x9b, 0xf6, 0x02, 0x68, 0x18, +0x44, 0x7b, 0x14, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x0d, 0x01, 0x22, 0x21, 0xf0, 0x3a, 0x0e, +0x71, 0xac, 0x21, 0xa1, 0xc5, 0xb2, 0x36, 0x6c, +0x08, 0xfd, 0xc1, 0x15, 0xf5, 0x09, 0x94, 0xe4, +0x57, 0x33, 0x0b, 0x48, 0x59, 0xf0, 0xbb, 0xc4, +0xa7, 0x12, 0xc4, 0xba, 0x1e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0x16, +0x8c, 0x27, 0x31, 0x84, 0x58, 0xde, 0x2e, 0x5e, +0x36, 0x99, 0x91, 0xa1, 0xd3, 0x9f, 0x0c, 0x42, +0x48, 0x5b, 0xf7, 0x55, 0xf4, 0x97, 0xe4, 0xb3, +0xcc, 0x2a, 0x42, 0xf3, 0x37, 0xc7, 0xac, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, +0x21, 0x5b, 0x5e, 0x54, 0x64, 0x9b, 0x8f, 0xb5, +0xe6, 0x05, 0xde, 0x4b, 0x8a, 0x02, 0x48, 0xb8, +0x46, 0xd0, 0xd0, 0x09, 0x0d, 0xe1, 0x0d, 0x8e, +0xf0, 0xff, 0x35, 0x45, 0x1d, 0x52, 0x51, 0xde, +0x32, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, +0x01, 0x22, 0x21, 0x88, 0xf6, 0xe4, 0x72, 0x59, +0xee, 0xfd, 0xe8, 0xbc, 0xc9, 0x3c, 0x73, 0xc8, +0x9a, 0x70, 0x4d, 0x6c, 0x8c, 0x54, 0xa8, 0x7e, +0xca, 0x0b, 0xa0, 0x5f, 0x86, 0xca, 0xed, 0xe6, +0x98, 0x17, 0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x11, 0x01, 0x22, 0x21, 0x8a, 0x2b, 0x81, +0xac, 0x33, 0x31, 0x31, 0xc6, 0xe2, 0x67, 0xb8, +0xd2, 0xa9, 0x17, 0xc3, 0xf8, 0x94, 0x4f, 0xe3, +0xc0, 0xf3, 0xbb, 0x6a, 0x96, 0xbb, 0xb4, 0xd2, +0x30, 0x39, 0xca, 0x86, 0xd2, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0xdf, +0x0f, 0x1d, 0x68, 0xab, 0xf2, 0xc4, 0x1d, 0x9b, +0xfe, 0x44, 0x1e, 0x3e, 0x90, 0x01, 0x6d, 0xfb, +0xcc, 0xf1, 0xda, 0x60, 0xb9, 0x2f, 0xde, 0xd7, +0xe1, 0xb4, 0xaa, 0xb0, 0x45, 0x6e, 0x18, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, +0x21, 0xbb, 0x32, 0x9b, 0x2c, 0xb1, 0x61, 0x08, +0x1d, 0x18, 0x03, 0xb2, 0xdb, 0xc5, 0xaf, 0xa4, +0xbd, 0x45, 0xfb, 0x34, 0x2c, 0xe5, 0x81, 0x39, +0x42, 0x6d, 0x1f, 0xec, 0xae, 0xdd, 0xf2, 0xae, +0xef, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, +0x01, 0x22, 0x21, 0xbe, 0xf0, 0xdd, 0x23, 0xbc, +0x80, 0x4f, 0x7e, 0x67, 0x2e, 0x17, 0x83, 0xc2, +0xb6, 0x02, 0x68, 0x6c, 0x40, 0x32, 0x52, 0x7e, +0xd3, 0xa6, 0x48, 0xe4, 0x82, 0xd6, 0x4c, 0xb2, +0xf7, 0xf6, 0xb0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x15, 0x01, 0x22, 0x21, 0x73, 0xcb, 0xed, +0x4b, 0x24, 0x96, 0xa7, 0x3c, 0x63, 0x61, 0xef, +0xfa, 0x2f, 0x58, 0x0b, 0xb6, 0x43, 0x7e, 0x32, +0xb5, 0x57, 0xb5, 0x0b, 0x6d, 0xc0, 0x7f, 0x5e, +0xf9, 0xdf, 0xe9, 0x20, 0x47, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0x58, +0xb0, 0xac, 0xf1, 0x8e, 0xdb, 0x15, 0x30, 0xf7, +0x7d, 0x62, 0xe8, 0x63, 0x75, 0x87, 0xb4, 0xba, +0x91, 0x63, 0x43, 0x7d, 0xb7, 0xe2, 0x96, 0x3b, +0x3e, 0xe3, 0xa0, 0xc1, 0xb5, 0x24, 0x8f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, +0x21, 0xba, 0x02, 0x80, 0x50, 0x8e, 0x27, 0x27, +0x40, 0x22, 0x3c, 0x76, 0xbf, 0x28, 0xf5, 0xda, +0xaa, 0x2c, 0x33, 0x92, 0xda, 0x49, 0x51, 0xe9, +0x9a, 0x45, 0x02, 0x77, 0x5d, 0xd5, 0xf1, 0x08, +0xe4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, +0x01, 0x22, 0x21, 0x38, 0x08, 0x0f, 0x9a, 0x42, +0x3b, 0x31, 0x7b, 0x8f, 0xa8, 0x4b, 0x17, 0xe4, +0xc7, 0x6b, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x71, 0x52, 0x63, 0xe5, +0x9b, 0x4c, 0x82, 0x94, 0x03, 0x04, 0x51, 0x02, +0x00, 0x19, 0x01, 0x22, 0x21, 0x0d, 0x59, 0x95, +0x52, 0xd5, 0x24, 0xb0, 0x34, 0xb0, 0xb6, 0x69, +0x89, 0xb2, 0x46, 0x13, 0xcd, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x73, +0xe4, 0x95, 0xbc, 0x28, 0x3e, 0x6c, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x2e, +0xa9, 0x71, 0xd4, 0x5a, 0x96, 0xfb, 0x97, 0x21, +0xe5, 0x33, 0xd4, 0xb8, 0x55, 0xb3, 0xae, 0x17, +0x20, 0x18, 0xc3, 0xeb, 0xe4, 0xb6, 0xee, 0x83, +0xe2, 0xee, 0x25, 0xbb, 0x1b, 0xa6, 0x20, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, +0x21, 0x57, 0xbe, 0x77, 0xc9, 0x0b, 0x3c, 0x19, +0x30, 0xa1, 0x3c, 0x5f, 0x9c, 0xcd, 0x83, 0x50, +0xc6, 0x28, 0x45, 0x04, 0x3d, 0x71, 0x0c, 0x79, +0x95, 0x1d, 0xb4, 0xbc, 0xa3, 0xa1, 0xf9, 0xcb, +0x47, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, +0x01, 0x22, 0x21, 0xd9, 0xfb, 0x05, 0x85, 0xa5, +0x23, 0xe0, 0x94, 0x74, 0x51, 0x15, 0xfc, 0x5c, +0x4c, 0xee, 0x67, 0x8d, 0x02, 0x61, 0x0b, 0xe1, +0x5e, 0xed, 0x14, 0x64, 0x56, 0x60, 0xb7, 0x50, +0x69, 0x01, 0x0d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x1d, 0x01, 0x22, 0x21, 0x45, 0x55, 0xf2, +0x3a, 0x45, 0x60, 0x98, 0x09, 0x39, 0x6c, 0xc6, +0x0d, 0xd6, 0xcf, 0x8e, 0xe2, 0x1f, 0xfd, 0xe5, +0xba, 0xa9, 0x44, 0xcb, 0xb7, 0x10, 0x84, 0x92, +0x5d, 0x5a, 0xdd, 0x2c, 0x26, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0x52, +0x77, 0x06, 0xeb, 0x90, 0xca, 0x5b, 0x08, 0x31, +0x1d, 0x17, 0x83, 0x66, 0x25, 0x5b, 0xba, 0xdf, +0x7b, 0xd9, 0xc2, 0x9f, 0x8d, 0x31, 0x86, 0x2f, +0x8a, 0xbb, 0x56, 0xf8, 0xa9, 0x97, 0x90, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, +0x21, 0x65, 0x88, 0xdd, 0xad, 0xa4, 0x91, 0xd8, +0xdf, 0x7b, 0xbe, 0x05, 0x12, 0x38, 0x4a, 0x11, +0xf7, 0x24, 0x73, 0x9a, 0x35, 0x6c, 0xef, 0x9c, +0xaa, 0x91, 0xb9, 0x1c, 0x35, 0x92, 0x0f, 0x8d, +0xb7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, +0x01, 0x22, 0x21, 0x66, 0x14, 0x91, 0x7d, 0x09, +0x3f, 0xf1, 0x56, 0x66, 0x71, 0xae, 0x3c, 0xbb, +0x7a, 0x75, 0x63, 0xdd, 0x40, 0xad, 0xdb, 0xcb, +0xd4, 0x65, 0x1b, 0x48, 0x21, 0x84, 0x6f, 0x14, +0x45, 0xa5, 0x47, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x21, 0x01, 0x22, 0x21, 0x59, 0xa1, 0xe6, +0xc4, 0x0d, 0x8e, 0xac, 0xab, 0xa8, 0x18, 0x62, +0xfe, 0xff, 0xf8, 0xd5, 0xe5, 0x6b, 0x67, 0x3c, +0xd3, 0x25, 0x79, 0xb2, 0x05, 0xa0, 0xe7, 0xca, +0x6e, 0x3b, 0xc2, 0x4a, 0x9e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xdb, +0xf3, 0x47, 0xde, 0x75, 0xcb, 0xe5, 0xa3, 0xd1, +0xd8, 0x5a, 0x60, 0x68, 0xaa, 0x2d, 0xb4, 0xd0, +0x3d, 0xfb, 0x6c, 0xae, 0x0c, 0xaa, 0xa1, 0xf3, +0xd2, 0x10, 0x51, 0x53, 0x8a, 0x56, 0x7a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, +0x21, 0xdc, 0x33, 0xfa, 0x84, 0xae, 0xfd, 0xb1, +0xa9, 0x31, 0x74, 0x06, 0x54, 0xdc, 0x6e, 0xf0, +0x34, 0x61, 0x24, 0x20, 0x9d, 0xc5, 0x96, 0x2f, +0x09, 0x25, 0x91, 0x41, 0x44, 0x52, 0x81, 0xe5, +0x79, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, +0x01, 0x22, 0x21, 0x3a, 0xbe, 0x19, 0x16, 0xe3, +0xe5, 0xef, 0x3d, 0x07, 0xc9, 0x92, 0xff, 0xd5, +0xb4, 0xed, 0x3c, 0x2e, 0x8f, 0x68, 0x02, 0xc4, +0x0b, 0x89, 0x30, 0x36, 0x11, 0x6a, 0x84, 0x91, +0xbd, 0x05, 0x80, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x25, 0x01, 0x22, 0x21, 0x16, 0x89, 0x66, +0xfd, 0xd6, 0x88, 0x0d, 0xa5, 0x6c, 0x8c, 0xb7, +0x62, 0xfa, 0xce, 0x35, 0x75, 0xbc, 0x10, 0x58, +0xd3, 0xea, 0x46, 0xc2, 0x89, 0xaa, 0x8e, 0x3e, +0x4e, 0x4f, 0x75, 0xbd, 0x3d, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0x9a, +0x4b, 0x93, 0x53, 0x18, 0x6f, 0x34, 0x90, 0x4d, +0x06, 0xa5, 0x74, 0x18, 0xbb, 0x38, 0xd4, 0x69, +0x00, 0x0f, 0x1d, 0x19, 0x40, 0x51, 0x41, 0x01, +0xe1, 0xa3, 0x79, 0x41, 0xea, 0x47, 0xd6, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, +0x21, 0xac, 0xc3, 0xb8, 0xc3, 0x4d, 0x0d, 0x75, +0xf1, 0xf3, 0xce, 0xf1, 0x2d, 0x42, 0x0a, 0xd9, +0x4f, 0x91, 0x89, 0x52, 0xfc, 0xee, 0x2c, 0x2c, +0x32, 0x0b, 0x0c, 0x9b, 0xa2, 0x7f, 0xd0, 0xa4, +0xa8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, +0x01, 0x22, 0x21, 0x92, 0x66, 0xce, 0x39, 0x09, +0x87, 0x33, 0x30, 0xa4, 0x2a, 0x2b, 0x82, 0x2d, +0xd3, 0x9a, 0xe5, 0xc1, 0x87, 0x7f, 0x69, 0x0d, +0x74, 0x64, 0xfd, 0x1e, 0x33, 0x28, 0x3a, 0xe6, +0x74, 0x43, 0x7b, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x29, 0x01, 0x22, 0x21, 0xe8, 0xc9, 0xfa, +0x00, 0xcc, 0x89, 0x19, 0xc9, 0xc4, 0x26, 0xfc, +0x9c, 0xbe, 0xb9, 0x38, 0x72, 0xb9, 0x26, 0x67, +0xf1, 0xd1, 0xc3, 0x91, 0xac, 0x30, 0x15, 0x77, +0xd0, 0xec, 0x1a, 0x67, 0xb5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0x58, +0x20, 0x2b, 0x2b, 0x45, 0x7a, 0xfa, 0x65, 0x50, +0xd8, 0x7d, 0x5f, 0xf0, 0x10, 0x1a, 0x24, 0x83, +0x77, 0xcf, 0x00, 0x7e, 0xde, 0x4f, 0x3a, 0xb1, +0xeb, 0x6f, 0x10, 0xf9, 0xdd, 0x41, 0xa4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, +0x21, 0xbe, 0xfe, 0x95, 0x74, 0x5e, 0x23, 0x4d, +0xbe, 0x53, 0x42, 0x26, 0x60, 0x00, 0xbc, 0x21, +0x00, 0x2a, 0xa7, 0x21, 0x20, 0x13, 0x2a, 0x79, +0x42, 0xd7, 0xa0, 0xe2, 0x7e, 0x01, 0x01, 0x80, +0x0d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, +0x01, 0x22, 0x21, 0xc7, 0x58, 0x90, 0xa5, 0x20, +0x41, 0x9c, 0x39, 0x65, 0x1b, 0xa5, 0xff, 0xe3, +0x6b, 0x83, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5c, 0x34, 0xf4, 0xe7, +0xad, 0xf7, 0x91, 0xcd, 0x03, 0x04, 0x51, 0x02, +0x00, 0x2d, 0x01, 0x22, 0x21, 0x89, 0x8e, 0x89, +0xe4, 0x71, 0x15, 0x05, 0x8c, 0x39, 0x04, 0x3b, +0x70, 0x7e, 0x43, 0x69, 0x64, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xd7, +0xc9, 0xbc, 0xae, 0xeb, 0x6f, 0x8b, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0x7b, +0xa8, 0xdd, 0x6a, 0x79, 0xf9, 0x25, 0xb3, 0xc5, +0x41, 0x18, 0x6f, 0x38, 0xa3, 0xd0, 0xb5, 0xbf, +0xa6, 0xa7, 0xff, 0xaa, 0xd6, 0x49, 0xe5, 0x3e, +0x55, 0x49, 0xb9, 0x91, 0x80, 0x1c, 0x0f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, +0x21, 0xd0, 0x60, 0x60, 0x6f, 0x49, 0x7c, 0x08, +0x5d, 0xd1, 0x7b, 0xa0, 0x8e, 0xf3, 0xa9, 0x52, +0x52, 0x1d, 0xfd, 0x48, 0x49, 0x9e, 0xed, 0x73, +0x50, 0x86, 0x9d, 0x04, 0x48, 0x9f, 0x55, 0x5c, +0xa1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, +0x01, 0x22, 0x21, 0x10, 0x36, 0x1c, 0x87, 0xa1, +0xfe, 0x5d, 0xe0, 0x1d, 0xc2, 0x95, 0xe7, 0xbb, +0x01, 0x99, 0x05, 0xb2, 0xad, 0xda, 0x7a, 0x4b, +0xf8, 0x40, 0x4f, 0x4e, 0x62, 0xa1, 0x0a, 0x9d, +0xf0, 0x7c, 0xec, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x31, 0x01, 0x22, 0x21, 0x03, 0x5a, 0xd6, +0x7d, 0x70, 0x2d, 0x7e, 0x5c, 0xcc, 0x5c, 0x9c, +0xb4, 0xbc, 0xce, 0x4a, 0x25, 0x80, 0x64, 0x56, +0x6c, 0xc3, 0x2d, 0xc8, 0x09, 0x89, 0x3d, 0xdc, +0xd9, 0x36, 0xe7, 0xb8, 0x3d, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0xc6, +0x8c, 0x9b, 0xaf, 0xbf, 0x34, 0xc1, 0x91, 0xe0, +0x15, 0xe4, 0xcb, 0x2e, 0x8b, 0x6d, 0x7a, 0x8c, +0x94, 0xf0, 0x24, 0x48, 0x30, 0x42, 0x64, 0x8f, +0x45, 0xf4, 0x53, 0x9f, 0xa8, 0x40, 0xb4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, +0x21, 0x34, 0xe4, 0x68, 0xb6, 0xdf, 0xb8, 0xe7, +0x7a, 0xb3, 0x93, 0x2b, 0xf9, 0x10, 0xe9, 0x7c, +0x14, 0xa7, 0x0a, 0xfb, 0xc7, 0x96, 0xd6, 0x3e, +0x59, 0x68, 0xb6, 0xaa, 0x3e, 0x06, 0x93, 0x48, +0x84, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, +0x01, 0x22, 0x21, 0x2b, 0x3b, 0x1e, 0x0d, 0xa2, +0x3a, 0x63, 0xfe, 0x5b, 0x78, 0x60, 0x15, 0x26, +0x95, 0x2c, 0x67, 0x8b, 0xcd, 0xab, 0xd1, 0xea, +0xc4, 0xc2, 0xe3, 0x75, 0x93, 0x17, 0xa7, 0x2b, +0x92, 0xc8, 0x8d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x35, 0x01, 0x22, 0x21, 0xf6, 0xe5, 0x14, +0x09, 0x8f, 0x3e, 0xf7, 0x2a, 0x37, 0x44, 0x2c, +0x41, 0xee, 0x18, 0x59, 0x26, 0x53, 0xc2, 0x01, +0xc1, 0xc6, 0x74, 0x69, 0xc9, 0x74, 0xf4, 0x6b, +0x51, 0xbc, 0xe6, 0x49, 0x78, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0xfa, +0xe6, 0x4e, 0x6a, 0x39, 0x76, 0x05, 0x7c, 0x7d, +0xf9, 0xef, 0x50, 0x4b, 0x77, 0x35, 0xf1, 0x92, +0x25, 0xb5, 0x78, 0x32, 0xdd, 0x81, 0x1e, 0x8c, +0x02, 0xaa, 0xd3, 0xa6, 0x1c, 0xca, 0xc4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, +0x21, 0x5a, 0xe3, 0xab, 0x27, 0xd7, 0x53, 0x2b, +0x83, 0x71, 0x4c, 0xed, 0x43, 0x0e, 0x23, 0xfb, +0xff, 0xeb, 0x0d, 0x59, 0x32, 0x1b, 0xff, 0x2b, +0x83, 0x72, 0x60, 0xcb, 0x82, 0x22, 0x3a, 0x67, +0x14, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, +0x01, 0x22, 0x21, 0x31, 0x7f, 0xe6, 0x09, 0xa8, +0x31, 0xce, 0xd9, 0x4a, 0x7a, 0xd9, 0xcb, 0x5d, +0x2c, 0xf7, 0x39, 0x97, 0xac, 0xa3, 0xf0, 0xcc, +0x14, 0x93, 0xeb, 0x1c, 0x15, 0x25, 0x73, 0xc0, +0x5b, 0xc2, 0xd7, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x39, 0x01, 0x22, 0x21, 0xdd, 0xcf, 0x0f, +0xa5, 0x98, 0x5e, 0xa9, 0x8a, 0xe3, 0xc6, 0x12, +0xb2, 0xfb, 0xab, 0x57, 0xb0, 0x40, 0x7e, 0x58, +0xf3, 0x23, 0x2d, 0xc2, 0x8f, 0x3c, 0x77, 0x88, +0xff, 0xd1, 0xee, 0x59, 0x8e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0x47, +0x88, 0xbf, 0xba, 0xa1, 0x45, 0x30, 0xe1, 0x8b, +0x1b, 0x57, 0x30, 0x77, 0x8f, 0xf8, 0x19, 0x1e, +0xd7, 0xf4, 0xdc, 0x2b, 0x1d, 0x55, 0x23, 0xbc, +0xf5, 0x2c, 0xe5, 0xe2, 0xe3, 0x75, 0x2f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, +0x21, 0xb2, 0xa9, 0x86, 0x10, 0x76, 0x2a, 0x28, +0xaf, 0x62, 0x0b, 0x17, 0x49, 0x17, 0xa8, 0x76, +0xf0, 0x9e, 0x74, 0x52, 0x43, 0x7c, 0xd9, 0x2c, +0x8d, 0x97, 0xe4, 0x4a, 0x46, 0x15, 0xf6, 0x58, +0x63, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, +0x01, 0x22, 0x21, 0xe0, 0xaa, 0x07, 0xab, 0x74, +0x59, 0x7e, 0x2d, 0xfc, 0x4c, 0xaa, 0x67, 0xe1, +0xf6, 0xed, 0xc6, 0x5b, 0x19, 0x25, 0x05, 0x97, +0x03, 0x90, 0xbf, 0x78, 0x7e, 0xd0, 0x1a, 0x10, +0x53, 0xc2, 0xb8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x3d, 0x01, 0x22, 0x21, 0x45, 0x38, 0x2b, +0xf1, 0x4e, 0x62, 0x4e, 0xf0, 0x81, 0x6d, 0xd1, +0xe4, 0xa2, 0x83, 0x5c, 0xb6, 0xa4, 0x25, 0x90, +0x64, 0xc6, 0xad, 0x6f, 0xb1, 0xb5, 0x64, 0x0c, +0x45, 0xae, 0x34, 0x58, 0xc2, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0xa4, +0x23, 0xa7, 0x46, 0xd4, 0xaa, 0xd7, 0xed, 0x77, +0xd7, 0xa4, 0x56, 0x28, 0x85, 0x6e, 0x53, 0x8d, +0x6c, 0xd6, 0xaa, 0x5c, 0x86, 0x8b, 0xd8, 0x9b, +0x59, 0xdc, 0x59, 0xb3, 0xc2, 0xdd, 0x6e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, +0x21, 0xb5, 0xc7, 0x35, 0x99, 0xaa, 0x12, 0x5c, +0x51, 0x94, 0x60, 0x31, 0x74, 0x54, 0xec, 0x16, +0x55, 0x9e, 0x6b, 0x64, 0x5c, 0x1e, 0x59, 0x50, +0x93, 0x20, 0x50, 0xec, 0x3f, 0x32, 0x57, 0x21, +0x96, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, +0x01, 0x22, 0x21, 0xb1, 0x72, 0x05, 0xbf, 0xc1, +0x9e, 0xc9, 0x30, 0xb3, 0x3f, 0x24, 0xfb, 0xc4, +0xb6, 0xce, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x09, 0xb9, 0xf5, 0xdc, +0x37, 0x56, 0x09, 0x46, 0x03, 0x04, 0x51, 0x02, +0x00, 0x41, 0x01, 0x22, 0x21, 0x4b, 0x26, 0x4b, +0x90, 0x31, 0x10, 0x8b, 0x29, 0x3a, 0xe5, 0x8a, +0xde, 0x4a, 0x37, 0x9d, 0xa9, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x09, +0x8d, 0x84, 0x9c, 0xb9, 0x3b, 0x4a, 0x03, 0x04, +0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0xbe, +0x3f, 0x46, 0xf8, 0x5d, 0xc1, 0xa8, 0x51, 0x92, +0x6e, 0x5e, 0x5e, 0x0d, 0x65, 0x4e, 0xce, 0x24, +0xc7, 0x5f, 0xd1, 0x2c, 0xc1, 0x6d, 0x6c, 0x7a, +0x6c, 0xc3, 0xa0, 0x22, 0xa5, 0xf5, 0x2e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, +0x21, 0x41, 0xe3, 0x7c, 0x84, 0x99, 0x13, 0xda, +0xe3, 0x98, 0xc2, 0x38, 0x0e, 0xe6, 0x39, 0x45, +0x2a, 0x0f, 0x66, 0x5b, 0x4e, 0x14, 0x07, 0x34, +0xc9, 0x5d, 0x91, 0x8f, 0xec, 0xf7, 0xdd, 0x8f, +0xe5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, +0x01, 0x22, 0x21, 0x22, 0xfd, 0x78, 0x13, 0xf7, +0xcc, 0x9a, 0xd9, 0xe5, 0x93, 0x41, 0x55, 0xca, +0x0d, 0x0e, 0x24, 0x0f, 0x04, 0x5d, 0x3c, 0xba, +0xbf, 0x9c, 0xf8, 0x32, 0x9d, 0x5a, 0x12, 0xce, +0x53, 0x7c, 0x82, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x45, 0x01, 0x22, 0x21, 0xf5, 0x61, 0x7f, +0xb0, 0xeb, 0x4b, 0xe1, 0x1f, 0x2a, 0xd6, 0x51, +0x8a, 0xc0, 0xde, 0xa5, 0xda, 0x00, 0x32, 0x18, +0x26, 0x17, 0x52, 0xf2, 0x62, 0x43, 0x1b, 0x63, +0xe7, 0x41, 0xa8, 0xde, 0x22, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0xfa, +0x44, 0xed, 0x3f, 0x0d, 0x52, 0xe7, 0xfc, 0xa1, +0xe0, 0x50, 0xd3, 0x91, 0x0e, 0x43, 0x89, 0x1a, +0xb6, 0x1a, 0x5f, 0xb1, 0x5d, 0x6f, 0xc7, 0x3b, +0xd8, 0xb1, 0x0c, 0x6d, 0x46, 0xd1, 0x58, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, +0x21, 0xdf, 0x3a, 0xa3, 0xcb, 0xf5, 0xc6, 0xb6, +0xe1, 0xc5, 0xc4, 0x98, 0xf5, 0x43, 0xed, 0xf8, +0x19, 0x49, 0xed, 0x61, 0x21, 0x6f, 0x87, 0xef, +0x6b, 0xe0, 0xa4, 0x89, 0x8b, 0x08, 0x4b, 0xf1, +0xd2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, +0x01, 0x22, 0x21, 0xfd, 0xf6, 0xd6, 0x57, 0xa5, +0xdb, 0xe5, 0x9b, 0x5e, 0x1f, 0x63, 0x00, 0xbd, +0x5e, 0x3a, 0xff, 0xcd, 0xd0, 0x1a, 0x94, 0x0b, +0x47, 0xf9, 0x7f, 0x84, 0x56, 0x62, 0x97, 0x89, +0xb0, 0x30, 0x81, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x49, 0x01, 0x22, 0x21, 0xd9, 0x90, 0x32, +0x64, 0xba, 0x3d, 0x10, 0x00, 0x5f, 0x93, 0x58, +0x95, 0x31, 0x6e, 0xeb, 0x88, 0x0f, 0x5b, 0xf1, +0x9f, 0xdb, 0x7a, 0x79, 0x0f, 0x9d, 0x9c, 0x91, +0x74, 0xd1, 0xd0, 0x52, 0x2e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0xe9, +0x70, 0x55, 0x15, 0x84, 0x66, 0xa4, 0x19, 0x37, +0xa3, 0xe6, 0x29, 0xe8, 0xba, 0x20, 0x35, 0x63, +0xf1, 0x7a, 0xb7, 0xb7, 0x7f, 0x90, 0xbd, 0x1b, +0x85, 0x5b, 0xf2, 0x9d, 0xe2, 0xda, 0x37, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, +0x21, 0x5b, 0x6b, 0x93, 0x7a, 0x92, 0x67, 0x20, +0x29, 0x5b, 0x3a, 0xab, 0xa9, 0x08, 0x6c, 0x62, +0x49, 0xf0, 0x74, 0xbd, 0x19, 0x00, 0xd8, 0xe5, +0xfb, 0xa6, 0x3f, 0x8a, 0x15, 0xea, 0x0b, 0xcd, +0xd3, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, +0x01, 0x22, 0x21, 0xba, 0x7b, 0x6f, 0xbe, 0x21, +0xd6, 0x79, 0xfc, 0x6a, 0xf5, 0xfd, 0x68, 0xe0, +0x12, 0xba, 0x48, 0x8b, 0x78, 0x87, 0x10, 0xbe, +0xb7, 0x10, 0xfe, 0xe7, 0xaf, 0x53, 0x4b, 0xb4, +0x00, 0xb4, 0x09, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x4d, 0x01, 0x22, 0x21, 0xcb, 0xbd, 0xcc, +0xe3, 0xc9, 0xbe, 0xb3, 0xe5, 0xd0, 0xae, 0x38, +0x26, 0xed, 0xf3, 0x3c, 0x9d, 0x73, 0x83, 0x03, +0xc0, 0xc2, 0x82, 0x35, 0x35, 0xf8, 0xcc, 0x36, +0x30, 0x72, 0x02, 0x16, 0xe6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0x84, +0x29, 0x05, 0x26, 0x3f, 0xde, 0xe1, 0x55, 0x77, +0x74, 0x19, 0x1d, 0x2f, 0xc0, 0x33, 0xb0, 0x0c, +0x6a, 0x67, 0xd4, 0xc3, 0x3c, 0xc8, 0xc6, 0x1a, +0x0b, 0xa0, 0x10, 0x0b, 0xf9, 0x51, 0xe7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, +0x21, 0x99, 0xad, 0xec, 0x41, 0xf6, 0xd9, 0xfa, +0x2b, 0xec, 0xec, 0xd0, 0x2a, 0x21, 0x0d, 0xc4, +0x5e, 0x59, 0x64, 0xf6, 0x87, 0xa9, 0x22, 0x1d, +0xc6, 0xce, 0x39, 0xa0, 0xb6, 0xc8, 0x99, 0xc2, +0x35, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, +0x01, 0x22, 0x21, 0x2b, 0x77, 0xe9, 0xf5, 0x0f, +0xdd, 0x60, 0xad, 0xe5, 0xb5, 0xe5, 0xb3, 0x97, +0xb7, 0x07, 0xf4, 0x7e, 0x93, 0x0a, 0x62, 0x38, +0x33, 0xcd, 0x79, 0xd8, 0x49, 0xf5, 0x92, 0x93, +0x91, 0xe4, 0x52, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x51, 0x01, 0x22, 0x21, 0xdc, 0x2f, 0x8c, +0x7f, 0xe1, 0x80, 0x65, 0x52, 0xb7, 0xe5, 0x8b, +0x7e, 0xfb, 0xd6, 0x6a, 0xeb, 0x46, 0x4b, 0xed, +0x63, 0x33, 0x57, 0xb3, 0x4b, 0x8f, 0x07, 0xb8, +0xb8, 0x3f, 0xf3, 0xfe, 0x48, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0xeb, +0x83, 0x48, 0x82, 0x04, 0x98, 0x49, 0x9f, 0x2b, +0xcd, 0x29, 0xf3, 0x47, 0xcb, 0x27, 0xa6, 0x51, +0x6a, 0xa4, 0xfe, 0x39, 0x58, 0x38, 0x7f, 0x91, +0x1d, 0x67, 0x9e, 0x9b, 0x0d, 0xc6, 0x32, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, +0x21, 0x58, 0xe7, 0x95, 0x67, 0xe0, 0xb1, 0xb4, +0x11, 0x99, 0x9c, 0xe2, 0x91, 0xe6, 0xbf, 0xde, +0x12, 0x82, 0xbc, 0x93, 0x6a, 0x7b, 0xda, 0xd8, +0x89, 0x04, 0xb4, 0xbc, 0xbc, 0xea, 0xd8, 0x14, +0xa8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, +0x01, 0x22, 0x21, 0xe1, 0x5a, 0xc2, 0x3d, 0xef, +0x64, 0x15, 0x66, 0x6c, 0xe4, 0xe8, 0xbd, 0xd2, +0x64, 0x53, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xbe, 0x99, 0x08, 0xc3, +0x61, 0xfc, 0x76, 0x7c, 0x03, 0x04, 0x51, 0x02, +0x00, 0x55, 0x01, 0x22, 0x21, 0xb9, 0x22, 0xf1, +0xb3, 0xa1, 0x04, 0x10, 0x9f, 0xb6, 0x98, 0x77, +0x9e, 0x4e, 0x93, 0xe3, 0x51, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xf0, +0x54, 0x1f, 0xe9, 0xce, 0x7f, 0xa2, 0x03, 0x04, +0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0xf1, +0x3d, 0xc7, 0x1f, 0xd3, 0x86, 0x0c, 0x9e, 0xbf, +0xe4, 0xcf, 0x34, 0xa9, 0xb5, 0xdb, 0xaf, 0x1b, +0xcd, 0xa7, 0xdc, 0x04, 0xd9, 0xce, 0x51, 0xb3, +0xa2, 0x96, 0x3a, 0x0e, 0xdb, 0xe7, 0x8f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, +0x21, 0xd5, 0x00, 0xfa, 0x5c, 0xbe, 0xe8, 0x59, +0x46, 0x7b, 0x6f, 0x8c, 0x18, 0xfb, 0x6d, 0x87, +0x41, 0xeb, 0x20, 0xd3, 0x4b, 0xa2, 0x9a, 0x32, +0x73, 0x1e, 0xad, 0xcb, 0x06, 0x37, 0x97, 0x57, +0x55, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, +0x01, 0x22, 0x21, 0x35, 0xc1, 0x2c, 0x40, 0x2d, +0x22, 0x69, 0x59, 0xfe, 0xf2, 0xe0, 0x26, 0xfe, +0x8c, 0xdf, 0x88, 0xc7, 0xc8, 0x04, 0xf7, 0x28, +0xde, 0x69, 0x95, 0x62, 0x5d, 0x1b, 0x79, 0xa2, +0x96, 0x0a, 0x82, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x59, 0x01, 0x22, 0x21, 0xea, 0xdc, 0xa1, +0x53, 0x1c, 0x1a, 0x9f, 0x3a, 0xd9, 0x66, 0x69, +0xe1, 0xa1, 0x8f, 0x4d, 0x1d, 0x58, 0x4b, 0x80, +0xcf, 0x0b, 0xf8, 0x56, 0x39, 0x9f, 0xad, 0x78, +0xb6, 0xbe, 0x3a, 0x44, 0x5a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0xf3, +0xe6, 0x39, 0x3e, 0x47, 0x07, 0x9f, 0x98, 0xf8, +0x96, 0x6b, 0x8d, 0xf8, 0xc1, 0x14, 0x90, 0xd6, +0xc1, 0x6f, 0x0c, 0xe8, 0xb3, 0x01, 0x62, 0x17, +0x0e, 0x6a, 0xcc, 0xf2, 0x7e, 0x07, 0xfc, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, +0x21, 0x7f, 0x5e, 0x1b, 0x7d, 0xec, 0xe1, 0x6f, +0x38, 0x23, 0x47, 0x0d, 0xd4, 0x10, 0x63, 0xa6, +0x22, 0x73, 0x92, 0x1f, 0x92, 0x3a, 0xb8, 0xfc, +0x4d, 0xec, 0x8d, 0xb9, 0x6e, 0xab, 0x7d, 0xd0, +0x17, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, +0x01, 0x22, 0x21, 0x4c, 0xf9, 0x4d, 0x26, 0xf6, +0x28, 0x25, 0x53, 0x1a, 0x45, 0x5a, 0xf7, 0x14, +0x6e, 0xae, 0xb7, 0xb0, 0x9d, 0xeb, 0xd3, 0x03, +0x4f, 0x6b, 0x93, 0xfb, 0x95, 0xc6, 0xb0, 0x9d, +0x21, 0x74, 0xc5, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x5d, 0x01, 0x22, 0x21, 0x9d, 0xe2, 0x98, +0x93, 0xa8, 0x9e, 0x79, 0x18, 0xe6, 0xf0, 0x6b, +0xca, 0x13, 0x85, 0xe5, 0xbe, 0x60, 0x3e, 0x5a, +0x33, 0x98, 0x98, 0xb0, 0x13, 0xc7, 0x49, 0xe2, +0x71, 0x60, 0xdf, 0xad, 0x4a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0x3b, +0x1f, 0x1e, 0x56, 0xea, 0x4e, 0x7a, 0xd6, 0x03, +0x5f, 0x75, 0xb3, 0xca, 0x7d, 0x73, 0x3c, 0x45, +0x98, 0x2a, 0x8a, 0x68, 0x15, 0xb1, 0xc1, 0x4b, +0x87, 0x1f, 0x13, 0x2f, 0x77, 0x77, 0xb0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, +0x21, 0x60, 0x05, 0xdf, 0x71, 0xb2, 0xbe, 0x9f, +0x1c, 0x36, 0xb5, 0xa2, 0x43, 0x19, 0xfa, 0x35, +0x34, 0x79, 0x8f, 0x55, 0x45, 0xec, 0xf2, 0xf9, +0xff, 0x48, 0xb8, 0xcc, 0x0d, 0x36, 0xe6, 0xc5, +0xf9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, +0x01, 0x22, 0x21, 0x40, 0x41, 0xde, 0x5f, 0x3d, +0x86, 0x2c, 0x19, 0x1c, 0xaa, 0x1e, 0x5a, 0x32, +0x99, 0xd1, 0x59, 0x2b, 0xed, 0x91, 0xaf, 0x2f, +0x7e, 0xb4, 0xfd, 0x5a, 0x9d, 0x6b, 0xa5, 0xf6, +0xae, 0x16, 0xf8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x61, 0x01, 0x22, 0x21, 0x6b, 0xc4, 0x46, +0xed, 0xb4, 0x1b, 0x19, 0xaa, 0xf3, 0xf3, 0x4d, +0xf1, 0xe3, 0xfb, 0xfd, 0xd5, 0x51, 0xbc, 0x4f, +0x24, 0xf3, 0xb8, 0x41, 0xc9, 0x17, 0x7f, 0x8f, +0xa3, 0xcc, 0x87, 0x56, 0x82, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x9d, +0xf8, 0x41, 0xe9, 0x44, 0x04, 0xe8, 0x97, 0x34, +0xd0, 0x9a, 0xfb, 0x82, 0x3a, 0x93, 0x1f, 0x9f, +0x55, 0x17, 0xcb, 0xe2, 0x49, 0xee, 0x00, 0x37, +0x5a, 0x12, 0x10, 0x3f, 0x8d, 0x17, 0x72, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, +0x21, 0xe2, 0x83, 0xcf, 0xa4, 0x2b, 0x49, 0xee, +0x1b, 0x02, 0x17, 0x95, 0x86, 0x03, 0x5d, 0xdf, +0xcf, 0x94, 0x95, 0x1f, 0x69, 0x35, 0xd5, 0x9f, +0x12, 0xff, 0x2f, 0xae, 0x4d, 0x7b, 0x43, 0x96, +0xd2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, +0x01, 0x22, 0x21, 0xf0, 0x27, 0x56, 0xdc, 0xb2, +0x3f, 0xfb, 0x69, 0x49, 0x18, 0x2e, 0xf4, 0x41, +0xf0, 0xdb, 0x1e, 0xaf, 0x30, 0x37, 0x2c, 0xc5, +0x2f, 0xe4, 0x0e, 0x4b, 0x43, 0x8f, 0x20, 0x5f, +0x7e, 0x40, 0x9a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x65, 0x01, 0x22, 0x21, 0x7c, 0x24, 0xc7, +0xeb, 0xc5, 0xc6, 0x68, 0x2e, 0x07, 0x9d, 0xf9, +0x75, 0x78, 0x49, 0x66, 0x0d, 0x19, 0xcf, 0xe9, +0x89, 0x4d, 0x05, 0xaa, 0xbb, 0x16, 0x85, 0xd2, +0x3e, 0xfc, 0xeb, 0xa9, 0x73, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0x7b, +0x78, 0x78, 0x5c, 0xe3, 0x03, 0x79, 0x65, 0x47, +0x3d, 0xd5, 0x46, 0x92, 0x8c, 0xab, 0x2f, 0xf6, +0xc1, 0xef, 0x6c, 0x86, 0x98, 0x58, 0x1a, 0xa2, +0xea, 0x85, 0xa7, 0xe1, 0xb4, 0x5f, 0x03, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, +0x21, 0xef, 0x31, 0xf2, 0x98, 0xc0, 0x30, 0x9d, +0x7a, 0x54, 0x5e, 0xce, 0x1d, 0x6a, 0x3c, 0xb3, +0xf1, 0x18, 0x4c, 0xe2, 0x13, 0xa3, 0x8e, 0x80, +0x77, 0x8a, 0x9e, 0xb6, 0x11, 0x06, 0x8e, 0x4e, +0x7d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, +0x01, 0x22, 0x21, 0x3f, 0x2c, 0x03, 0x13, 0x30, +0x50, 0xae, 0x21, 0x72, 0x40, 0x4b, 0xb9, 0xf5, +0x03, 0x41, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x19, 0xc9, 0xdf, 0xb6, +0x47, 0x7e, 0x9c, 0xc6, 0x03, 0x04, 0x51, 0x02, +0x00, 0x69, 0x01, 0x22, 0x21, 0x32, 0x3f, 0xd6, +0x93, 0xdb, 0x20, 0xef, 0x66, 0x90, 0xcb, 0xaf, +0xfc, 0xaf, 0xe6, 0x9b, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x90, +0x8e, 0x98, 0x54, 0x16, 0x3f, 0x60, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0xf3, +0xf2, 0x7d, 0x5e, 0x20, 0x73, 0x26, 0x6e, 0x0c, +0x19, 0x40, 0x9f, 0xd2, 0x43, 0xeb, 0x28, 0xe3, +0xcc, 0x9d, 0x72, 0xe4, 0x57, 0x3a, 0x56, 0xa8, +0x28, 0xb6, 0x69, 0xf9, 0x2d, 0xc4, 0xcc, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, +0x21, 0x2f, 0x33, 0x6b, 0x66, 0x98, 0xbd, 0xf7, +0x89, 0xc1, 0x8d, 0x58, 0x55, 0x56, 0x4c, 0x60, +0x2a, 0x7e, 0x47, 0x35, 0x36, 0xea, 0x0a, 0xae, +0xa7, 0x34, 0x5e, 0x76, 0xac, 0xb7, 0xf6, 0x31, +0xea, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, +0x01, 0x22, 0x21, 0x3d, 0xb1, 0x6d, 0x25, 0xf8, +0x87, 0x2e, 0x6f, 0xe9, 0xb8, 0xf1, 0xff, 0x45, +0xda, 0xeb, 0xad, 0x11, 0x96, 0xcf, 0x74, 0x25, +0x2f, 0xc3, 0x69, 0xb4, 0xfb, 0xc5, 0x40, 0xe7, +0x4d, 0x14, 0xb9, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x6d, 0x01, 0x22, 0x21, 0x8c, 0xd6, 0x8e, +0xf0, 0x42, 0xd9, 0x88, 0xcd, 0xc9, 0x4a, 0x44, +0x27, 0xb1, 0xa8, 0x51, 0x4b, 0x9e, 0x35, 0x20, +0xcb, 0xfb, 0xb8, 0xa2, 0xc8, 0x41, 0x31, 0xf9, +0xcf, 0x9c, 0x74, 0x8c, 0x8a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0xae, +0x89, 0x8b, 0x85, 0x20, 0x07, 0x03, 0x57, 0x78, +0x27, 0xc3, 0xab, 0x4f, 0xee, 0x5c, 0x38, 0xa4, +0x82, 0x93, 0xad, 0x6b, 0xc0, 0x04, 0x19, 0x4d, +0x2b, 0x07, 0xae, 0xb6, 0x31, 0x4b, 0x40, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, +0x21, 0x3b, 0x11, 0x25, 0xfb, 0x22, 0xba, 0xd7, +0x06, 0x33, 0x66, 0x02, 0xc5, 0x11, 0xff, 0x45, +0xfc, 0xf3, 0xcf, 0xe9, 0x82, 0x57, 0xf8, 0x65, +0x2b, 0x03, 0xce, 0xf3, 0x2f, 0xcf, 0x53, 0x4f, +0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, +0x01, 0x22, 0x21, 0x07, 0xe2, 0xa1, 0xf8, 0x96, +0x82, 0xb6, 0x28, 0x7e, 0xb0, 0xe5, 0x7e, 0xd0, +0xc6, 0xf6, 0xf4, 0xdb, 0xf6, 0x97, 0xec, 0xc7, +0x02, 0x56, 0x71, 0x12, 0xcc, 0x53, 0xa2, 0x42, +0xae, 0x8d, 0xc9, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x71, 0x01, 0x22, 0x21, 0xde, 0x6a, 0xa4, +0x84, 0x0d, 0x60, 0x66, 0x97, 0x89, 0x8b, 0x07, +0x5d, 0x23, 0x00, 0x41, 0x91, 0xa0, 0x72, 0x81, +0xdf, 0xf8, 0x2a, 0xd0, 0x1d, 0x87, 0x9c, 0x7b, +0x9e, 0xce, 0x89, 0x51, 0x5e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0x1f, +0x32, 0xd4, 0xbd, 0xe8, 0x1c, 0x4d, 0x29, 0x14, +0xca, 0x77, 0x40, 0x72, 0x54, 0xc6, 0xb2, 0xa6, +0x7f, 0xe0, 0xe7, 0x36, 0xdf, 0x40, 0x06, 0x01, +0x5e, 0x0d, 0x49, 0xe2, 0xd6, 0xd0, 0xb5, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, +0x21, 0x4d, 0x57, 0x2d, 0x8c, 0xb1, 0x99, 0x97, +0x16, 0xbe, 0x96, 0x53, 0xa2, 0x25, 0x8e, 0x10, +0x32, 0xa2, 0x76, 0x87, 0x9e, 0x3e, 0xc5, 0x6e, +0xb1, 0x1f, 0x0f, 0xf2, 0x4b, 0x17, 0x87, 0xa2, +0x61, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, +0x01, 0x22, 0x21, 0x7a, 0x7f, 0x55, 0xba, 0x72, +0xc5, 0x18, 0xf3, 0x0c, 0x3b, 0x99, 0xb7, 0x89, +0x9d, 0x7c, 0xbc, 0x3a, 0x50, 0xe2, 0xef, 0x34, +0x89, 0x4a, 0x62, 0x66, 0xe9, 0x2a, 0x14, 0xf0, +0xb1, 0x63, 0xa6, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x75, 0x01, 0x22, 0x21, 0x71, 0x5c, 0xeb, +0xa1, 0x32, 0xc1, 0x1a, 0xe6, 0x8a, 0xba, 0x36, +0x83, 0xd5, 0xb9, 0xd5, 0xbb, 0x96, 0x2a, 0x4e, +0xfb, 0xae, 0xd7, 0x46, 0x04, 0x40, 0x01, 0x04, +0xd5, 0xab, 0x47, 0xc6, 0xd5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0xf8, +0x38, 0xe7, 0x23, 0x9e, 0x06, 0xc6, 0xa0, 0xd3, +0x8b, 0xc2, 0xec, 0xef, 0x31, 0xa5, 0x7b, 0x1f, +0xcf, 0x5b, 0x49, 0x38, 0x03, 0x8c, 0x07, 0xaf, +0x56, 0x1d, 0x52, 0xfa, 0x27, 0x9b, 0x5d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, +0x21, 0x47, 0x3b, 0xc5, 0xf0, 0xff, 0xbc, 0x65, +0x65, 0xcb, 0xa5, 0x31, 0xa8, 0x3c, 0xc3, 0x46, +0xba, 0x8f, 0xf8, 0x97, 0xda, 0x80, 0x3e, 0xf0, +0xaf, 0x16, 0xe1, 0xa6, 0x26, 0x1e, 0xf7, 0xdf, +0xf9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, +0x01, 0x22, 0x21, 0x68, 0xe9, 0x6c, 0xb6, 0x98, +0x0b, 0x6b, 0x92, 0x87, 0xa5, 0x34, 0xb1, 0xaa, +0x9e, 0x92, 0xdc, 0x74, 0x42, 0xde, 0xd1, 0x1e, +0x86, 0x0f, 0xa5, 0x48, 0xb7, 0x4c, 0x0a, 0xbc, +0xb7, 0xe9, 0x56, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x79, 0x01, 0x22, 0x21, 0x5d, 0xec, 0xf3, +0xac, 0xb6, 0x65, 0x07, 0x15, 0xd3, 0x78, 0x75, +0x2c, 0x67, 0x6a, 0xb7, 0xaa, 0xe3, 0xfc, 0x6a, +0x61, 0x2e, 0xd0, 0xbe, 0xdd, 0x52, 0x10, 0x56, +0xd9, 0x55, 0xdc, 0x2f, 0xb0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0x6d, +0x2e, 0xe6, 0x4b, 0x56, 0xf1, 0x5c, 0x47, 0x32, +0xfd, 0xbe, 0xed, 0x5f, 0x7b, 0x64, 0xd1, 0xce, +0x65, 0xcc, 0x81, 0x01, 0xef, 0x2d, 0xdf, 0x25, +0x91, 0xa5, 0xd7, 0x0a, 0x48, 0x2c, 0xa0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, +0x21, 0xc2, 0xaa, 0x52, 0xdd, 0xf4, 0x60, 0x36, +0x51, 0x3a, 0x61, 0x9d, 0xf2, 0x9f, 0x99, 0x71, +0xdd, 0x49, 0xc3, 0xf2, 0xfa, 0xf4, 0x85, 0xaf, +0xa6, 0xad, 0x26, 0x36, 0x19, 0x9d, 0x25, 0xb5, +0xfe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, +0x01, 0x22, 0x21, 0xf0, 0x87, 0x56, 0xe1, 0x6b, +0xf3, 0xf3, 0x96, 0xbd, 0x77, 0x1b, 0xd6, 0x65, +0x33, 0x8b, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7b, 0xb9, 0x3a, 0x7d, +0x91, 0xfe, 0x19, 0xe6, 0x03, 0x04, 0x51, 0x02, +0x00, 0x7d, 0x01, 0x22, 0x21, 0x1a, 0xa0, 0x9b, +0x0a, 0xe7, 0x9a, 0x61, 0x1a, 0x55, 0x65, 0x9f, +0x5d, 0x3f, 0xc5, 0xf2, 0x94, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x65, +0x1d, 0x90, 0x1f, 0x60, 0x65, 0xd8, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0x88, +0x64, 0x7c, 0xb4, 0x13, 0x67, 0xba, 0x55, 0xa0, +0x16, 0x70, 0x09, 0x6c, 0x62, 0x9d, 0x79, 0x7f, +0x79, 0x07, 0xf0, 0xe2, 0xc0, 0x38, 0xc4, 0xba, +0xa0, 0x47, 0xd5, 0x52, 0x73, 0xf1, 0x84, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, +0x21, 0x7d, 0xe9, 0xf6, 0x30, 0x35, 0xec, 0x2f, +0x79, 0x0d, 0x8c, 0x4f, 0x11, 0xbe, 0xb1, 0xd4, +0xe6, 0xd9, 0x07, 0x29, 0xe4, 0x1b, 0x98, 0xd7, +0xde, 0xd2, 0x0c, 0xc2, 0x89, 0xd4, 0xdc, 0x40, +0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, +0x01, 0x22, 0x21, 0x11, 0xeb, 0x4e, 0xc6, 0x73, +0x97, 0x6d, 0x9b, 0xdb, 0xb2, 0xf0, 0x1f, 0x68, +0x8f, 0xa1, 0x6f, 0x28, 0xde, 0x6b, 0x5c, 0xa7, +0xc1, 0xa3, 0x38, 0xc8, 0x0f, 0xc6, 0x1e, 0xdd, +0x32, 0xf3, 0x8a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x81, 0x01, 0x22, 0x21, 0x1c, 0xba, 0xf8, +0xef, 0x33, 0xa2, 0xa2, 0x76, 0x00, 0xf6, 0x0b, +0xee, 0x8d, 0xdc, 0xc3, 0xf4, 0x0c, 0x72, 0xd7, +0xac, 0x44, 0x0a, 0x6c, 0x10, 0x2a, 0xf9, 0xc0, +0x49, 0xd3, 0x74, 0x98, 0xca, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0x5e, +0x70, 0xdf, 0x70, 0x1a, 0xcc, 0x1e, 0x21, 0x2e, +0xee, 0xa2, 0xba, 0xc3, 0xbb, 0x39, 0xe4, 0x89, +0x1c, 0x79, 0x6a, 0x4e, 0x6e, 0x12, 0xf7, 0xab, +0x5f, 0xf9, 0x36, 0x58, 0x2f, 0xed, 0x16, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, +0x21, 0x21, 0x9a, 0x10, 0x0e, 0x9d, 0x0c, 0x1f, +0x16, 0x33, 0xd0, 0x36, 0x50, 0x14, 0x92, 0x63, +0xab, 0x9f, 0xfb, 0xec, 0xf4, 0x3c, 0xa4, 0xf5, +0x66, 0xc2, 0x40, 0x3e, 0x91, 0x8e, 0xe3, 0xe5, +0xb9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, +0x01, 0x22, 0x21, 0x1a, 0x50, 0x8d, 0x75, 0x2a, +0x07, 0xd5, 0x0a, 0x45, 0x0a, 0xcd, 0x3a, 0x1b, +0x95, 0x9f, 0x4b, 0xf8, 0xab, 0x42, 0x76, 0xab, +0x65, 0x00, 0xf5, 0xb2, 0xc0, 0xdd, 0x35, 0xf2, +0x53, 0x38, 0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x85, 0x01, 0x22, 0x21, 0x88, 0x3c, 0x0b, +0xe8, 0x90, 0x1e, 0xf3, 0x97, 0x4d, 0xf5, 0x90, +0xf1, 0x5d, 0x34, 0x62, 0x3d, 0xfe, 0x3d, 0xae, +0xbf, 0xb3, 0x11, 0x18, 0x0a, 0x40, 0x42, 0x4d, +0xb6, 0x03, 0x88, 0xca, 0x9a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0x73, +0x56, 0x0d, 0xc3, 0x08, 0x60, 0x0e, 0x00, 0x91, +0x52, 0x1e, 0x4c, 0x46, 0xea, 0xa5, 0x6e, 0xe7, +0xbe, 0x8d, 0x45, 0xc7, 0x33, 0xf0, 0x90, 0x3f, +0x94, 0xd2, 0x30, 0x23, 0xa7, 0x78, 0xad, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, +0x21, 0x90, 0x90, 0xf0, 0xca, 0x78, 0x6c, 0xec, +0x4b, 0x29, 0x36, 0x88, 0x8c, 0xcf, 0xf0, 0xfd, +0x10, 0x1d, 0x2b, 0xe8, 0xe3, 0xa4, 0xb4, 0x4c, +0xb4, 0x07, 0x3d, 0x9f, 0x83, 0x1f, 0x4d, 0x32, +0x2b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, +0x01, 0x22, 0x21, 0x1b, 0x00, 0x41, 0xd7, 0x94, +0x0b, 0xb9, 0xff, 0x32, 0x8a, 0x1c, 0x7f, 0xcf, +0xf5, 0xdb, 0x92, 0xad, 0x04, 0x2d, 0xc9, 0x81, +0x53, 0x48, 0x11, 0x8d, 0xe0, 0x9f, 0x48, 0x75, +0xd3, 0x4f, 0x36, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x89, 0x01, 0x22, 0x21, 0x3f, 0x1d, 0x49, +0x9a, 0x06, 0x51, 0x70, 0xb2, 0x7f, 0x4d, 0x52, +0x37, 0xe8, 0x5e, 0x8b, 0xae, 0xae, 0x7c, 0x8c, +0x12, 0x2e, 0x6a, 0x25, 0x3b, 0x4e, 0x1d, 0xc1, +0x95, 0x1b, 0xb6, 0x21, 0xcb, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0xec, +0xd2, 0x01, 0xe1, 0x6d, 0x28, 0x27, 0xf3, 0xde, +0x7e, 0xe5, 0x46, 0xb2, 0x00, 0x67, 0x7a, 0x14, +0xb8, 0xcc, 0x1c, 0x57, 0x29, 0x84, 0xfa, 0x1e, +0x2a, 0x67, 0x4a, 0x85, 0xa5, 0xe6, 0x05, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, +0x21, 0x24, 0x40, 0xe1, 0x93, 0x52, 0xff, 0x5a, +0x44, 0x60, 0xd5, 0xe9, 0x14, 0xa0, 0x32, 0x66, +0x2a, 0x0b, 0x75, 0x04, 0xc1, 0x25, 0x9b, 0x97, +0xed, 0xe2, 0xdb, 0x11, 0xba, 0xe8, 0xe7, 0x07, +0x4f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, +0x01, 0x22, 0x21, 0x97, 0x89, 0x42, 0x50, 0x3e, +0xbc, 0x21, 0x5d, 0x22, 0x57, 0x2b, 0x9a, 0x21, +0x40, 0xbf, 0xde, 0xdb, 0xf9, 0x4a, 0xbf, 0xfe, +0x41, 0xa7, 0x49, 0xc4, 0x5d, 0xf4, 0xa0, 0xfe, +0xad, 0x1a, 0xa1, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x8d, 0x01, 0x22, 0x21, 0x49, 0xfe, 0x83, +0x57, 0x35, 0xad, 0xa9, 0x66, 0x6e, 0x5f, 0x28, +0xf9, 0xb8, 0x48, 0x11, 0x47, 0xf7, 0x38, 0x50, +0x14, 0xe9, 0xf4, 0x19, 0x53, 0xa8, 0x0e, 0xe4, +0xaf, 0x5b, 0xed, 0xec, 0x54, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x04, +0x08, 0xf8, 0x67, 0x27, 0x27, 0x16, 0xd2, 0x84, +0x0c, 0x07, 0x71, 0x99, 0xad, 0x7e, 0xc6, 0x98, +0x51, 0x3f, 0x18, 0x04, 0xd7, 0x7e, 0x73, 0x3a, +0x48, 0xe6, 0xd7, 0x42, 0x9a, 0x1f, 0x75, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, +0x21, 0x5d, 0xda, 0x2e, 0xa4, 0x92, 0xd9, 0x80, +0x84, 0x0d, 0x76, 0x88, 0x4d, 0xc8, 0x93, 0x96, +0x90, 0xcd, 0xc2, 0xf2, 0xad, 0x5d, 0x95, 0x7d, +0xaa, 0xa8, 0x3b, 0x1f, 0x6c, 0xe3, 0xf1, 0x72, +0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, +0x01, 0x22, 0x21, 0x0c, 0x81, 0xcc, 0xce, 0xd6, +0x5c, 0x96, 0xc8, 0xdc, 0x45, 0x59, 0xe0, 0x24, +0xbd, 0xf3, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x8e, 0xc6, 0xe2, 0xc7, +0x10, 0x17, 0x66, 0x96, 0x03, 0x04, 0x51, 0x02, +0x00, 0x91, 0x01, 0x22, 0x21, 0xcf, 0x1b, 0x01, +0xf2, 0xa4, 0x99, 0x4d, 0x4b, 0x6c, 0xaa, 0x3c, +0xb2, 0xf4, 0xb6, 0xd8, 0x92, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x24, +0x84, 0x34, 0x06, 0x3d, 0xf9, 0xb9, 0x03, 0x04, +0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x23, +0x62, 0x5b, 0x81, 0xfd, 0xf9, 0x30, 0xc1, 0xa5, +0xeb, 0x09, 0x70, 0x53, 0xee, 0xf4, 0x7f, 0x6a, +0x34, 0x6f, 0xec, 0xbd, 0x30, 0x5b, 0x95, 0x3b, +0x29, 0xf3, 0x3c, 0xbf, 0xa6, 0xdf, 0x0c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, +0x21, 0x24, 0xe2, 0x70, 0x50, 0x28, 0xe5, 0xd4, +0xfd, 0xac, 0x7a, 0x95, 0xaa, 0xce, 0xe6, 0x7f, +0x12, 0x8b, 0xa7, 0xb7, 0xae, 0x73, 0xdb, 0xb4, +0xf4, 0xab, 0xdc, 0x08, 0x1a, 0xdf, 0x1f, 0x47, +0xbd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, +0x01, 0x22, 0x21, 0x9b, 0xb1, 0x1c, 0x7b, 0x74, +0x32, 0xf6, 0xeb, 0xa6, 0x48, 0xc1, 0xae, 0x24, +0x64, 0xa4, 0xda, 0x16, 0x0a, 0xe2, 0xf1, 0x50, +0x48, 0x95, 0x7f, 0xf1, 0x7f, 0xae, 0x86, 0xcd, +0x12, 0x9c, 0xc7, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x95, 0x01, 0x22, 0x21, 0xf5, 0x08, 0x52, +0x29, 0x28, 0x7b, 0x9c, 0x5e, 0x07, 0xf3, 0x6b, +0x22, 0x37, 0x29, 0xf1, 0x9c, 0xd4, 0xdf, 0xd5, +0x96, 0x93, 0x9c, 0xfb, 0x97, 0x7b, 0x29, 0x95, +0xa9, 0x82, 0xb7, 0xe4, 0xeb, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0xea, +0x71, 0xf5, 0x27, 0x13, 0x81, 0xb8, 0x56, 0xe8, +0xb4, 0x77, 0xe0, 0x2e, 0x06, 0x0f, 0x76, 0x87, +0x79, 0xd8, 0x1e, 0xc4, 0x8e, 0x5d, 0x5c, 0x36, +0x14, 0xdd, 0x08, 0x3a, 0x08, 0x3e, 0xdf, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, +0x21, 0x4a, 0xdb, 0x71, 0x1c, 0x9c, 0x62, 0xff, +0xc0, 0xb0, 0x05, 0x97, 0xf1, 0xa5, 0x13, 0xfc, +0x53, 0x4b, 0x6e, 0x4f, 0x09, 0xab, 0x57, 0x81, +0xd8, 0xc1, 0xc4, 0x45, 0x48, 0x2a, 0x04, 0x73, +0x17, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, +0x01, 0x22, 0x21, 0xb2, 0xb6, 0x03, 0xdb, 0x83, +0xf6, 0x55, 0xc3, 0x30, 0x04, 0xd0, 0x32, 0xa1, +0x2b, 0x32, 0x57, 0xd5, 0x43, 0xc7, 0xf5, 0xd2, +0x18, 0x9c, 0x52, 0x47, 0xb6, 0x20, 0xb7, 0x5f, +0x1c, 0x6a, 0xdb, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x99, 0x01, 0x22, 0x21, 0x0d, 0x9f, 0xc6, +0x33, 0x5c, 0xf4, 0x50, 0x10, 0x11, 0x9e, 0x89, +0xd6, 0x43, 0x95, 0x15, 0x07, 0xf3, 0x7f, 0x2e, +0x33, 0x44, 0xe9, 0x7b, 0x9d, 0xa8, 0x6d, 0xb8, +0xfe, 0x33, 0x0c, 0xd7, 0xdb, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0x0e, +0xdb, 0x71, 0x88, 0x48, 0x83, 0x19, 0x34, 0x27, +0x49, 0xfe, 0xe6, 0xe1, 0xab, 0xdd, 0xe6, 0x1d, +0x94, 0x3f, 0x0e, 0xe2, 0x40, 0x66, 0x7d, 0x38, +0x06, 0x63, 0x40, 0xa7, 0x01, 0xeb, 0x55, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, +0x21, 0x80, 0x68, 0xa3, 0xa6, 0xd7, 0xec, 0xa1, +0x89, 0xd3, 0x2e, 0x5e, 0x00, 0xf1, 0x87, 0x26, +0x18, 0x63, 0x4d, 0x1e, 0x1f, 0xe5, 0xa9, 0x3d, +0xaa, 0x31, 0x84, 0xce, 0xd3, 0x59, 0x12, 0xe7, +0x41, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, +0x01, 0x22, 0x21, 0xa1, 0x9b, 0x31, 0xa5, 0x45, +0xef, 0x84, 0x62, 0x07, 0x30, 0xec, 0x50, 0x58, +0x7b, 0x89, 0x92, 0xf2, 0x54, 0x76, 0x21, 0x86, +0x5c, 0x46, 0x48, 0x6c, 0xbc, 0x9c, 0xd4, 0x87, +0xd1, 0xc3, 0xc5, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x9d, 0x01, 0x22, 0x21, 0x2d, 0x28, 0xbf, +0xe9, 0x42, 0x72, 0xbb, 0x01, 0x1f, 0x8b, 0x49, +0x31, 0xf5, 0xaa, 0x3b, 0xbd, 0x71, 0x15, 0xe3, +0xa5, 0x98, 0xa8, 0xa8, 0xea, 0xa9, 0x94, 0x3a, +0x72, 0xc5, 0x4b, 0xe8, 0xae, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0xfd, +0x93, 0x09, 0xc8, 0x43, 0x0f, 0x99, 0xfe, 0xd4, +0x95, 0x59, 0x60, 0xca, 0xca, 0x98, 0xa1, 0xbe, +0x88, 0xe5, 0xd9, 0x6b, 0x22, 0xf7, 0x6a, 0xb4, +0x19, 0x34, 0x9e, 0xf8, 0xfb, 0x86, 0x01, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, +0x21, 0xb6, 0x57, 0xd5, 0x0a, 0xe8, 0xf3, 0xb3, +0xf5, 0x6a, 0x45, 0xc5, 0x71, 0x86, 0x48, 0xe6, +0x86, 0xf4, 0x32, 0x63, 0xc3, 0x8a, 0x09, 0x12, +0x4c, 0x85, 0xd1, 0x68, 0x53, 0x42, 0x16, 0x1e, +0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, +0x01, 0x22, 0x21, 0xb8, 0x8b, 0x4b, 0x21, 0xff, +0x7b, 0x09, 0x62, 0x30, 0x68, 0xc4, 0x6a, 0xe2, +0xec, 0x10, 0x4c, 0xbf, 0x52, 0xdf, 0x20, 0x73, +0x72, 0xb3, 0xb5, 0xd2, 0xd0, 0xdd, 0xa2, 0x45, +0xf4, 0xf0, 0x0d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa1, 0x01, 0x22, 0x21, 0xb8, 0x1b, 0x15, +0xe6, 0x9a, 0x96, 0xff, 0x5b, 0xe8, 0x5f, 0x5d, +0x25, 0xf5, 0x8f, 0xe5, 0x0b, 0xce, 0xaa, 0xd2, +0xb0, 0xd3, 0xfa, 0xc7, 0x86, 0xbf, 0xf8, 0xe5, +0xaf, 0x31, 0xe1, 0x88, 0x58, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0xfd, +0xb8, 0xc9, 0x7e, 0x59, 0x18, 0x92, 0x12, 0x4a, +0x41, 0xe7, 0xa0, 0x98, 0x9a, 0x4e, 0x11, 0xeb, +0x29, 0xe3, 0x3b, 0x9f, 0x6e, 0xaa, 0xa7, 0x86, +0xe3, 0x4b, 0xcd, 0xcb, 0x9e, 0xf6, 0x9e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, +0x21, 0xbb, 0xca, 0xcd, 0xb7, 0xfa, 0xea, 0x97, +0xbf, 0x5b, 0x89, 0xda, 0xfa, 0xe9, 0xa1, 0x57, +0xc4, 0x8b, 0xd1, 0xb0, 0xf1, 0x30, 0x2b, 0x5c, +0xe7, 0x16, 0xbd, 0x42, 0x22, 0xb1, 0xc4, 0x10, +0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, +0x01, 0x22, 0x21, 0x15, 0x37, 0x4e, 0xcd, 0xdb, +0x9c, 0xfa, 0xb0, 0x50, 0xfb, 0x1e, 0x70, 0xff, +0xb6, 0x84, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x04, 0xb7, 0x31, 0x29, +0x59, 0x11, 0x22, 0x18, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa5, 0x01, 0x22, 0x21, 0xa3, 0xb3, 0xa5, +0xa1, 0x56, 0x61, 0x1e, 0x37, 0xc9, 0xf3, 0xc5, +0xc6, 0x3c, 0x07, 0x1a, 0x46, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x48, +0x36, 0x2d, 0x5a, 0x67, 0x6a, 0x73, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0xba, +0xcd, 0xb9, 0x90, 0x56, 0xcb, 0xf0, 0x06, 0xb7, +0xa8, 0x9b, 0x47, 0x7b, 0x71, 0x8c, 0x9b, 0xec, +0x38, 0x7e, 0x41, 0x6a, 0xb3, 0x0b, 0x01, 0xcf, +0x19, 0xdd, 0x09, 0x10, 0x73, 0xc0, 0xaa, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, +0x21, 0x5e, 0xf0, 0xbe, 0x13, 0xf3, 0x21, 0x39, +0x1b, 0x53, 0x2e, 0x6c, 0x21, 0xfa, 0x1c, 0xbf, +0x95, 0xf5, 0xbd, 0x18, 0xe0, 0x23, 0x9a, 0x88, +0x65, 0xf0, 0x47, 0x08, 0x6b, 0x18, 0x62, 0x6e, +0x28, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, +0x01, 0x22, 0x21, 0x38, 0xa6, 0x1d, 0x54, 0xa9, +0xd6, 0x0a, 0xd1, 0xee, 0x97, 0x3e, 0xa7, 0x59, +0x05, 0xf1, 0x13, 0x07, 0x18, 0x53, 0x3a, 0x83, +0x54, 0xb4, 0x46, 0x41, 0xad, 0xc1, 0x85, 0x92, +0xec, 0xd1, 0xa7, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa9, 0x01, 0x22, 0x21, 0xee, 0x57, 0x1b, +0x37, 0x6a, 0x2f, 0x95, 0x3e, 0x4a, 0x8c, 0x26, +0x6c, 0xe0, 0x03, 0x5f, 0xbe, 0x28, 0xf3, 0xc5, +0xd8, 0x6b, 0xb1, 0x90, 0x27, 0x38, 0xda, 0xd3, +0x67, 0xc5, 0x55, 0x9f, 0x69, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0x20, +0x06, 0x0a, 0xf7, 0xc2, 0x57, 0xaa, 0x4a, 0x54, +0xac, 0xf3, 0xd2, 0xa1, 0x7a, 0x9c, 0x27, 0xf5, +0x23, 0x37, 0x00, 0x56, 0x27, 0xe0, 0x82, 0xd6, +0xa1, 0x74, 0xab, 0xad, 0x94, 0xf8, 0xa7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, +0x21, 0x9e, 0xc3, 0xa0, 0x7e, 0x43, 0x9e, 0x94, +0x06, 0xcd, 0xe1, 0xd0, 0xd4, 0x8a, 0x9f, 0x0e, +0xbe, 0x64, 0xc8, 0x7f, 0xc5, 0xbb, 0x88, 0xa2, +0xb1, 0x7f, 0xe2, 0xab, 0xa2, 0x43, 0x88, 0x0a, +0x43, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, +0x01, 0x22, 0x21, 0xd2, 0x03, 0x2c, 0xc0, 0x21, +0x4f, 0x3e, 0xe4, 0x71, 0xe1, 0x06, 0x01, 0xef, +0x18, 0x31, 0xbe, 0xe1, 0x01, 0x94, 0x40, 0x1b, +0xd1, 0x22, 0xfe, 0x5e, 0xc5, 0x41, 0xbb, 0xf5, +0x28, 0xf0, 0x3a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xad, 0x01, 0x22, 0x21, 0x4e, 0xba, 0x55, +0xf6, 0xd1, 0x9b, 0x59, 0x7e, 0x0a, 0x9c, 0x39, +0xbf, 0x62, 0xfc, 0x62, 0x64, 0xab, 0x37, 0x9f, +0x58, 0xd3, 0xb7, 0x69, 0x1a, 0x11, 0x8d, 0x8d, +0x49, 0x2b, 0x17, 0x54, 0xc6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0xf7, +0x09, 0x83, 0x0d, 0x1e, 0xee, 0x6c, 0xa1, 0xac, +0xb0, 0x77, 0xe0, 0x0c, 0xf3, 0x7c, 0x9b, 0xa1, +0x69, 0x85, 0x48, 0x5a, 0x61, 0xe3, 0xd3, 0x53, +0x77, 0x3a, 0x83, 0xed, 0xe7, 0xac, 0xb3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, +0x21, 0x7f, 0xce, 0xb6, 0x5f, 0x0c, 0x02, 0x86, +0x8c, 0xec, 0x99, 0xdb, 0x7e, 0x6c, 0xda, 0x9c, +0x94, 0xa1, 0x6d, 0x80, 0xb7, 0x85, 0x6c, 0x44, +0x26, 0x0a, 0x6f, 0x34, 0xf7, 0x89, 0xd6, 0xc5, +0xff, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, +0x01, 0x22, 0x21, 0xc8, 0x13, 0x58, 0x6c, 0xba, +0x98, 0x8b, 0xda, 0xd0, 0x95, 0x54, 0x96, 0x19, +0x25, 0x8e, 0xd5, 0x5d, 0x1c, 0xc4, 0x14, 0xb7, +0x08, 0x19, 0x0a, 0x86, 0xaa, 0x11, 0xbc, 0xaf, +0xa1, 0xa9, 0xff, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb1, 0x01, 0x22, 0x21, 0x77, 0xd7, 0xcf, +0x00, 0x7a, 0x14, 0x0a, 0x05, 0x27, 0xf1, 0xa6, +0x98, 0xe2, 0x20, 0xdd, 0x11, 0xbf, 0x64, 0x05, +0x08, 0x2f, 0x06, 0x59, 0x3d, 0x7e, 0xcf, 0x73, +0x24, 0x2d, 0x0b, 0x29, 0x45, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0x2c, +0x60, 0xaf, 0x2d, 0xc8, 0xe4, 0xbe, 0x3f, 0xb5, +0x97, 0xe5, 0x1f, 0x98, 0x8a, 0x04, 0xc4, 0x1a, +0x5e, 0x0b, 0x26, 0xfd, 0xbc, 0x51, 0xc5, 0x7b, +0x15, 0x8c, 0xc8, 0x96, 0x85, 0x14, 0x20, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, +0x21, 0x60, 0x41, 0x5d, 0xda, 0x9d, 0xdf, 0xc1, +0xa4, 0x88, 0x4a, 0x2f, 0x4e, 0x05, 0x3a, 0x05, +0xf1, 0x9c, 0x22, 0xe0, 0x4d, 0x1f, 0x98, 0xac, +0x3b, 0x22, 0x06, 0xf9, 0x23, 0xda, 0x95, 0x68, +0xb7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, +0x01, 0x22, 0x21, 0xf9, 0xd9, 0x49, 0x3f, 0x6d, +0xff, 0x01, 0x43, 0x0a, 0xcf, 0xd0, 0x8b, 0x65, +0xe8, 0xd3, 0xf5, 0x91, 0x8b, 0x68, 0xbf, 0xcb, +0x19, 0x50, 0xec, 0x7a, 0x9c, 0x2c, 0x3a, 0x3c, +0xbd, 0x31, 0x18, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb5, 0x01, 0x22, 0x21, 0xd4, 0xa8, 0x28, +0x40, 0x6c, 0x93, 0xf2, 0xe2, 0xf0, 0x2b, 0x9b, +0x6e, 0x09, 0x5d, 0xa0, 0xfb, 0xdd, 0x3c, 0x95, +0x61, 0x8c, 0x9f, 0x05, 0x56, 0x48, 0x65, 0x99, +0x35, 0x0b, 0x07, 0x22, 0x80, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0x77, +0x56, 0x28, 0xcb, 0xfc, 0xd8, 0x16, 0xc9, 0x1c, +0x43, 0x75, 0x24, 0x9a, 0x14, 0x3b, 0xba, 0x07, +0x52, 0x87, 0x0a, 0xc1, 0xac, 0xfb, 0x0a, 0x3e, +0xe8, 0x14, 0x09, 0x9c, 0xfe, 0x1b, 0xe0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, +0x21, 0xab, 0x8f, 0xcf, 0x73, 0xb7, 0x47, 0xce, +0x2f, 0xe1, 0x18, 0xa7, 0xa2, 0x34, 0xdc, 0xb0, +0xf5, 0xee, 0xd5, 0x64, 0x64, 0x4e, 0x51, 0x8f, +0xde, 0x9f, 0xe5, 0xba, 0xe2, 0x37, 0x2c, 0x90, +0x7d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, +0x01, 0x22, 0x21, 0xbf, 0x7e, 0xf1, 0x5d, 0xf8, +0x6d, 0x26, 0xf1, 0xdb, 0xaa, 0xa6, 0xaa, 0x82, +0x73, 0x81, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0x5b, 0x8f, +0x14, 0x66, 0x02, 0xfb, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb9, 0x01, 0x22, 0x21, 0x84, 0xe4, 0xf4, +0xef, 0x1a, 0x4c, 0x30, 0x15, 0x1a, 0xaf, 0xcd, +0x2c, 0x03, 0x50, 0x56, 0xf9, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x83, +0x5e, 0x6c, 0xf7, 0x4e, 0x91, 0xc9, 0x03, 0x04, +0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0xf4, +0x94, 0x3f, 0x5a, 0xba, 0xc7, 0x67, 0xe4, 0x20, +0x1a, 0x50, 0x59, 0x23, 0xa4, 0x0f, 0xcc, 0x92, +0x3f, 0xba, 0x59, 0x5f, 0x98, 0x8c, 0xcf, 0x01, +0xdb, 0x09, 0x12, 0xec, 0x6a, 0x5a, 0xb6, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, +0x21, 0x12, 0x08, 0xa6, 0xf8, 0x9c, 0xb2, 0x22, +0xc3, 0xd0, 0x7f, 0xc6, 0x6b, 0x32, 0x0a, 0x97, +0x74, 0x0c, 0x46, 0x9c, 0xac, 0x9f, 0xa6, 0xb9, +0xdb, 0xee, 0xa7, 0xf4, 0x5e, 0x9e, 0x08, 0x44, +0x0f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, +0x01, 0x22, 0x21, 0x8f, 0x65, 0xcb, 0x6f, 0x4d, +0xe4, 0xc3, 0x53, 0x10, 0x43, 0xbf, 0x67, 0xd0, +0x75, 0x80, 0xe1, 0xec, 0x91, 0xbd, 0x1f, 0x93, +0xbb, 0xf6, 0xc5, 0x36, 0xb6, 0xd3, 0x36, 0xc5, +0xfa, 0xa4, 0x85, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xbd, 0x01, 0x22, 0x21, 0x72, 0x4e, 0x4b, +0x72, 0x84, 0xe4, 0x0c, 0xfb, 0x56, 0xa0, 0xf7, +0xb6, 0x94, 0x8c, 0x1c, 0x5e, 0xe7, 0x5c, 0xa0, +0x38, 0x08, 0x93, 0x21, 0x2f, 0x41, 0xb7, 0xb6, +0xaf, 0x6a, 0x2d, 0xed, 0x1d, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0x09, +0x44, 0xb5, 0x0e, 0x31, 0xe1, 0xd5, 0xcf, 0x7a, +0x42, 0x34, 0x8c, 0x33, 0x50, 0x95, 0xbd, 0xd7, +0x88, 0x52, 0x05, 0x30, 0x63, 0xdd, 0xd4, 0xab, +0x8b, 0x0f, 0x20, 0xad, 0x8a, 0xdf, 0xd0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, +0x21, 0xd5, 0x7a, 0x8f, 0xc4, 0x06, 0xd9, 0xf0, +0xc7, 0xa6, 0xfe, 0x3f, 0x94, 0x65, 0x94, 0x86, +0x35, 0xd4, 0x62, 0xf5, 0xfa, 0xd5, 0xe6, 0x8e, +0x30, 0xcf, 0xa9, 0xdd, 0xd7, 0x1b, 0x76, 0xf7, +0xe7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, +0x01, 0x22, 0x21, 0x84, 0x83, 0xfc, 0xb3, 0x20, +0x69, 0x8b, 0xe7, 0x5a, 0x24, 0xd2, 0xe8, 0x1f, +0x93, 0x9c, 0x5f, 0x34, 0xcb, 0x8e, 0x34, 0x7d, +0xbb, 0xf7, 0xb1, 0xd0, 0x8c, 0xc8, 0x00, 0xc3, +0xdd, 0x51, 0xe6, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc1, 0x01, 0x22, 0x21, 0x71, 0x86, 0xe5, +0x41, 0x87, 0x61, 0xfd, 0x72, 0xda, 0x41, 0xa2, +0xc5, 0x03, 0x54, 0x5a, 0xb0, 0xda, 0x92, 0x27, +0x90, 0x58, 0xce, 0x4c, 0x4d, 0x58, 0xef, 0xeb, +0x24, 0xc8, 0x55, 0xee, 0x9a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0x68, +0x13, 0xce, 0x32, 0x9c, 0xcc, 0xeb, 0x3c, 0xc1, +0x6f, 0xd7, 0x1e, 0x7a, 0xd6, 0x1c, 0xea, 0xb7, +0x3b, 0xdf, 0xf9, 0x90, 0x15, 0x77, 0x17, 0x70, +0xdd, 0x90, 0x89, 0x34, 0x6e, 0x1f, 0x7e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, +0x21, 0x3a, 0xd7, 0x1e, 0x7d, 0xc1, 0x92, 0x3a, +0x1e, 0x8f, 0xb0, 0xa9, 0x07, 0xec, 0x86, 0xfb, +0x2e, 0x71, 0x4a, 0x91, 0x88, 0x83, 0xe4, 0x05, +0x8f, 0xfe, 0x1b, 0xdd, 0x3a, 0xae, 0x23, 0x0c, +0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, +0x01, 0x22, 0x21, 0x76, 0x15, 0xbe, 0xad, 0x6c, +0xf7, 0x21, 0xd5, 0x76, 0xff, 0xc8, 0xc3, 0x10, +0x9d, 0x6b, 0xb6, 0xca, 0x71, 0x44, 0xe4, 0x8e, +0x8e, 0xf5, 0x05, 0x73, 0xb4, 0x23, 0x16, 0x10, +0xb1, 0x6f, 0x8c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc5, 0x01, 0x22, 0x21, 0x4c, 0x96, 0xfc, +0x73, 0xdb, 0x07, 0x70, 0x03, 0x3e, 0xaf, 0x73, +0x4d, 0xf9, 0xa5, 0x8a, 0xee, 0xa7, 0x77, 0xfb, +0xfe, 0xef, 0x65, 0xab, 0x1f, 0x0b, 0x9e, 0x09, +0x99, 0x36, 0x9e, 0x61, 0x7a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0x2d, +0xb9, 0xd4, 0x2a, 0x7c, 0x2b, 0x91, 0x1b, 0xfc, +0x06, 0x6d, 0x77, 0x4f, 0xb3, 0x61, 0x7a, 0x6c, +0xef, 0xd2, 0xf8, 0x37, 0x6e, 0x9e, 0x7e, 0x00, +0x67, 0xbd, 0xd2, 0xbb, 0x8d, 0x0d, 0xb3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, +0x21, 0x96, 0xbf, 0x19, 0x75, 0xe9, 0xd3, 0x5a, +0xa1, 0x97, 0x31, 0xd6, 0x30, 0x3a, 0xe8, 0x17, +0x0d, 0xc9, 0xc6, 0x97, 0xa4, 0xe9, 0xaf, 0x48, +0x92, 0xa4, 0xc5, 0xc1, 0x64, 0x38, 0x3a, 0xd1, +0xdf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, +0x01, 0x22, 0x21, 0xf4, 0x9c, 0xcc, 0x54, 0xc3, +0xd1, 0xc7, 0xd6, 0xc5, 0x80, 0x31, 0x82, 0x84, +0xe6, 0xb1, 0x11, 0xd3, 0x7f, 0x2f, 0x60, 0x19, +0xf8, 0xab, 0x89, 0x7b, 0xcc, 0xf8, 0x46, 0xb8, +0xc3, 0x6a, 0x0d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc9, 0x01, 0x22, 0x21, 0xbd, 0x4b, 0x40, +0x3c, 0x46, 0x6b, 0xad, 0x67, 0x6e, 0xdb, 0xb0, +0x8e, 0x59, 0xfd, 0x38, 0x99, 0xad, 0x1d, 0xeb, +0x35, 0x34, 0xae, 0x7a, 0x91, 0x4c, 0x70, 0xa3, +0xc5, 0x77, 0x19, 0x8c, 0xd8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0xa7, +0x67, 0xc8, 0xd4, 0xd2, 0x53, 0xa8, 0x59, 0xae, +0x53, 0xf8, 0xe4, 0x60, 0x3c, 0xcd, 0x9c, 0x53, +0x8c, 0xa1, 0x71, 0xeb, 0x54, 0x77, 0x0e, 0x48, +0xe7, 0x05, 0x44, 0xfd, 0xd6, 0x2e, 0xdd, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, +0x21, 0xd3, 0x8c, 0x37, 0x69, 0xe9, 0xc9, 0x41, +0x81, 0xbd, 0x3a, 0xfc, 0xee, 0x8e, 0xac, 0x74, +0x7d, 0x39, 0x60, 0x80, 0x53, 0x98, 0x3d, 0xf7, +0xef, 0x77, 0x84, 0xc3, 0x11, 0xf7, 0x4a, 0x36, +0xed, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, +0x01, 0x22, 0x21, 0x40, 0xae, 0x87, 0xed, 0xca, +0x63, 0x4b, 0x49, 0x4e, 0x59, 0x4b, 0x29, 0x4f, +0x39, 0x40, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xa1, 0x5b, 0x5a, 0x01, +0x41, 0x9a, 0x5d, 0x9d, 0x03, 0x04, 0x51, 0x02, +0x00, 0xcd, 0x01, 0x22, 0x21, 0x62, 0x0f, 0xeb, +0xe0, 0x55, 0xe2, 0x9a, 0xfd, 0x0c, 0xb8, 0x58, +0xf6, 0xc9, 0x4a, 0x0a, 0x1e, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xfc, +0x70, 0x97, 0x7e, 0x05, 0xf5, 0xe8, 0x03, 0x04, +0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0xf6, +0x43, 0xfb, 0x2b, 0xd7, 0x21, 0x92, 0x7c, 0x68, +0x4b, 0x1f, 0xf0, 0x46, 0x22, 0xf8, 0x9e, 0x1b, +0x43, 0x81, 0xb5, 0xa3, 0x53, 0xfa, 0x02, 0x42, +0x55, 0x3f, 0x14, 0xfd, 0x46, 0xc9, 0x83, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, +0x21, 0x08, 0xd9, 0x86, 0x73, 0xf5, 0x82, 0xba, +0x30, 0x7b, 0x99, 0xa4, 0xd3, 0x3b, 0xb1, 0x19, +0x97, 0x9e, 0xb3, 0xfe, 0x31, 0xb2, 0xef, 0x66, +0x3f, 0x71, 0x50, 0x9b, 0xd2, 0xe1, 0x2e, 0x0b, +0x69, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, +0x01, 0x22, 0x21, 0x0a, 0x5b, 0x4a, 0x54, 0x4b, +0x16, 0x77, 0x79, 0x6f, 0xc5, 0xbd, 0x41, 0x58, +0x6f, 0xf8, 0x8c, 0x44, 0x03, 0x9f, 0x54, 0xca, +0x19, 0x23, 0x92, 0x38, 0x34, 0x0b, 0xe2, 0x31, +0xd8, 0x30, 0x99, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd1, 0x01, 0x22, 0x21, 0x81, 0x16, 0x10, +0x5f, 0xa3, 0xc0, 0x75, 0x75, 0xb0, 0x35, 0xe8, +0x57, 0x27, 0x00, 0x8f, 0x9f, 0x3c, 0x87, 0xff, +0xa8, 0x97, 0x7f, 0xcf, 0x3d, 0xf0, 0x40, 0x52, +0x3b, 0x35, 0xf4, 0x40, 0xb5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0xc1, +0x1a, 0x5c, 0x19, 0x7d, 0x4e, 0xd9, 0xec, 0xaf, +0xc3, 0x07, 0x9f, 0x63, 0x69, 0xbf, 0x23, 0x86, +0x7b, 0x90, 0x95, 0x73, 0x4c, 0x71, 0x25, 0xa7, +0xa6, 0x6a, 0x62, 0x43, 0x1a, 0x4c, 0xa9, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, +0x21, 0x7b, 0xf2, 0x9e, 0xa1, 0x2c, 0xbe, 0x39, +0x1c, 0xcc, 0xea, 0x4f, 0x43, 0x7c, 0x99, 0xc0, +0xb2, 0x8b, 0xb0, 0x51, 0x20, 0x0b, 0x96, 0xc0, +0x65, 0xef, 0x9f, 0x90, 0xad, 0x06, 0x8d, 0x4a, +0xe7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, +0x01, 0x22, 0x21, 0x44, 0xc9, 0x83, 0xd9, 0x6b, +0xe6, 0xcc, 0x63, 0x75, 0xa4, 0xa2, 0xb8, 0x9b, +0xda, 0xce, 0x2a, 0xc0, 0x5c, 0xa6, 0x8d, 0x01, +0x01, 0x93, 0xa7, 0x6e, 0xad, 0x28, 0xba, 0xa8, +0xa3, 0x89, 0xf4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd5, 0x01, 0x22, 0x21, 0x26, 0x88, 0x91, +0x8c, 0xea, 0x97, 0x76, 0x20, 0xff, 0x28, 0xba, +0x09, 0x0e, 0xb7, 0x35, 0x3e, 0xde, 0xa0, 0x3b, +0x64, 0x13, 0x79, 0x29, 0xb4, 0x59, 0x1f, 0x70, +0x56, 0xb2, 0x6b, 0xad, 0x96, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0x6a, +0x81, 0x93, 0xf0, 0x52, 0xb1, 0x1e, 0x5c, 0x3e, +0xcc, 0x83, 0x42, 0x66, 0x66, 0x74, 0x9d, 0x4d, +0x77, 0x2b, 0x27, 0xcd, 0x90, 0x53, 0x48, 0x94, +0xc4, 0x3d, 0xf7, 0xc3, 0x0e, 0x67, 0x44, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, +0x21, 0xf4, 0xc1, 0x96, 0xe2, 0x45, 0x2a, 0xe7, +0x01, 0xf1, 0xba, 0x45, 0x9f, 0xb9, 0x0e, 0x2c, +0xd8, 0x97, 0xa5, 0xbe, 0x58, 0xc5, 0x07, 0x5d, +0x62, 0x75, 0xc4, 0xf7, 0x55, 0x3d, 0x8f, 0x1c, +0x0d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, +0x01, 0x22, 0x21, 0x78, 0x42, 0xdf, 0x85, 0x91, +0x60, 0xbb, 0xdb, 0x41, 0x07, 0x07, 0x70, 0x2f, +0xd9, 0xbe, 0x59, 0x3d, 0x13, 0x95, 0x1c, 0x8a, +0xf3, 0x8d, 0xbc, 0xd3, 0xc1, 0x1a, 0x51, 0x39, +0xbf, 0xcd, 0x51, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd9, 0x01, 0x22, 0x21, 0x63, 0x23, 0x26, +0xdd, 0xc2, 0x5f, 0xc3, 0xff, 0x11, 0x36, 0x0d, +0xd5, 0x39, 0x04, 0x8c, 0x46, 0xea, 0xda, 0x8e, +0x7c, 0x23, 0x66, 0xf0, 0x10, 0x48, 0x47, 0xd2, +0x69, 0x7c, 0xbf, 0x2e, 0x58, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0xd7, +0xcb, 0x32, 0xe9, 0x2e, 0x00, 0xba, 0x9a, 0xbb, +0x14, 0xa9, 0x6d, 0x55, 0xe0, 0x29, 0x17, 0xf0, +0x8a, 0x37, 0xe8, 0xdf, 0x5f, 0x72, 0x48, 0xfa, +0xa3, 0xee, 0x57, 0x3c, 0x69, 0x08, 0xb9, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, +0x21, 0x8e, 0x2c, 0x19, 0x05, 0xc1, 0x48, 0xd8, +0x66, 0x52, 0xe0, 0x99, 0x51, 0x40, 0x33, 0xaf, +0xe2, 0x5f, 0x32, 0xf0, 0x90, 0x26, 0xa0, 0xd7, +0x48, 0xa9, 0x2f, 0x8e, 0x77, 0x74, 0x99, 0x6e, +0xf7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, +0x01, 0x22, 0x21, 0xcb, 0x93, 0x95, 0x6f, 0xb7, +0x81, 0x94, 0x50, 0xed, 0xb0, 0x7d, 0x58, 0x1b, +0x8d, 0xc5, 0xec, 0x4f, 0x94, 0xf0, 0x36, 0x4a, +0x8d, 0x67, 0x7f, 0x31, 0xcd, 0x58, 0xdc, 0xfc, +0x3f, 0xd2, 0xae, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xdd, 0x01, 0x22, 0x21, 0x37, 0x2b, 0xfe, +0xcb, 0x71, 0xc5, 0x8f, 0xf7, 0xae, 0x63, 0xea, +0x93, 0x77, 0x57, 0x7c, 0x7f, 0x58, 0xf3, 0xe0, +0xa9, 0xb3, 0xfb, 0x1f, 0x0f, 0x13, 0x20, 0x2b, +0x97, 0xf9, 0x96, 0xca, 0x99, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x48, +0x15, 0x2a, 0x55, 0xe3, 0xc4, 0x39, 0xa9, 0xf0, +0x76, 0xaf, 0xbf, 0xaf, 0x90, 0x82, 0x53, 0x19, +0x0f, 0xab, 0xa9, 0x63, 0xd6, 0x7e, 0x79, 0xaf, +0xb0, 0xf7, 0xe9, 0x72, 0x9a, 0x1e, 0xd1, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, +0x21, 0xf5, 0x2c, 0x35, 0x06, 0xb2, 0x83, 0x7e, +0xef, 0x52, 0x53, 0x03, 0xf8, 0x35, 0x99, 0xc1, +0x32, 0xe1, 0xdb, 0xd0, 0x99, 0x8e, 0xb8, 0xfb, +0x1f, 0x09, 0xde, 0x4f, 0xb6, 0x94, 0xb4, 0x51, +0x38, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, +0x01, 0x22, 0x21, 0xdd, 0xe9, 0x0f, 0x11, 0xb8, +0x0e, 0x84, 0xfa, 0xd6, 0x91, 0x23, 0xd3, 0x74, +0x73, 0xf4, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x84, 0x9c, 0xd0, 0xc2, +0x84, 0x41, 0x30, 0x6a, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe1, 0x01, 0x22, 0x21, 0xeb, 0x75, 0x4a, +0xc7, 0x73, 0x08, 0xce, 0xc1, 0xc3, 0xb7, 0x25, +0x43, 0x03, 0x57, 0xc2, 0x73, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xc4, +0x82, 0xab, 0x68, 0x3b, 0x25, 0x21, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0x1c, +0xa6, 0x74, 0xb6, 0x36, 0x48, 0x91, 0xbf, 0x80, +0x16, 0x0c, 0x04, 0x1b, 0x6d, 0xb8, 0xa6, 0x6e, +0xaa, 0x6d, 0x00, 0x0f, 0x55, 0x89, 0x60, 0xe5, +0xa6, 0xe8, 0x58, 0x58, 0xd6, 0x6c, 0x58, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, +0x21, 0x21, 0xe8, 0x69, 0xae, 0x4d, 0x8e, 0x62, +0x5f, 0xb4, 0x54, 0x94, 0x38, 0xd1, 0x5f, 0x78, +0x55, 0x35, 0xb6, 0xeb, 0x46, 0xee, 0x84, 0x4a, +0xe3, 0x8c, 0xa1, 0x4c, 0xe9, 0x80, 0xb3, 0x28, +0x77, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, +0x01, 0x22, 0x21, 0x71, 0x48, 0xcd, 0x68, 0x43, +0xb1, 0x11, 0xc9, 0xba, 0x6a, 0x85, 0x29, 0x53, +0x5c, 0x5f, 0x9d, 0x64, 0x85, 0x53, 0x89, 0x8c, +0xb1, 0x55, 0x83, 0x10, 0x54, 0x19, 0x3f, 0x5b, +0x13, 0x52, 0x4a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe5, 0x01, 0x22, 0x21, 0x23, 0xdf, 0xd7, +0x43, 0x2e, 0x98, 0x2c, 0xc3, 0x99, 0xf8, 0x8b, +0x64, 0x19, 0x32, 0xd9, 0xba, 0xe5, 0x97, 0x7f, +0x9c, 0x69, 0xbe, 0xfd, 0x4e, 0xd7, 0xe2, 0x5c, +0x91, 0x34, 0xbb, 0xd0, 0xa6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x5b, +0x4c, 0xb1, 0x0e, 0x07, 0x50, 0x49, 0xdc, 0x53, +0x5f, 0x31, 0xb1, 0x3d, 0x32, 0x27, 0xd5, 0xc7, +0x32, 0x07, 0xb4, 0xf8, 0xb0, 0x0a, 0x43, 0xe9, +0xbb, 0xbe, 0xc0, 0xcc, 0xdf, 0x4a, 0xc9, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, +0x21, 0x90, 0x9a, 0xd0, 0x5f, 0x89, 0x86, 0xbb, +0x1c, 0x5b, 0x5b, 0x21, 0x71, 0x00, 0x91, 0x36, +0xef, 0x63, 0xfc, 0x0b, 0x47, 0x85, 0xc7, 0x5b, +0xe8, 0x8c, 0x26, 0x8b, 0x87, 0x76, 0x65, 0xa9, +0x89, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, +0x01, 0x22, 0x21, 0xc9, 0x06, 0xf5, 0xd9, 0x03, +0xde, 0x4f, 0x12, 0xf1, 0xe0, 0xb9, 0xe5, 0x33, +0xb6, 0xbd, 0x47, 0x5b, 0xec, 0x0c, 0x4b, 0x43, +0xff, 0x1f, 0x13, 0x5c, 0x49, 0x15, 0x7f, 0xbd, +0x53, 0x69, 0x39, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe9, 0x01, 0x22, 0x21, 0xba, 0x53, 0xa8, +0x42, 0x19, 0x94, 0x3d, 0xb1, 0x8f, 0x98, 0x1b, +0x06, 0xbb, 0x88, 0xe8, 0xb0, 0xcf, 0x72, 0x1d, +0x39, 0xb2, 0x95, 0x98, 0x71, 0x47, 0xe6, 0x7a, +0x1f, 0x18, 0x9e, 0xee, 0x14, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0x28, +0x16, 0xc7, 0xc2, 0xa7, 0xc0, 0xd5, 0xbd, 0xce, +0x2f, 0x92, 0x55, 0x82, 0x08, 0xde, 0x28, 0xda, +0x69, 0x18, 0xed, 0x45, 0xd1, 0xee, 0xd3, 0xa3, +0x4c, 0x27, 0xb4, 0xb2, 0xb5, 0xb5, 0x12, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, +0x21, 0x3e, 0xcd, 0x20, 0x32, 0x9a, 0xb0, 0xef, +0x38, 0x35, 0xaf, 0x09, 0xdb, 0x63, 0xa4, 0x0b, +0xcf, 0x48, 0xdf, 0xcd, 0x2a, 0xb7, 0x0f, 0x12, +0xa3, 0x99, 0x51, 0xac, 0x0d, 0x32, 0x10, 0xba, +0xfa, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, +0x01, 0x22, 0x21, 0xf7, 0x08, 0x5e, 0x46, 0xf2, +0x85, 0xa6, 0xfa, 0xbe, 0x03, 0xe7, 0x77, 0x3d, +0x30, 0x4d, 0x1b, 0x96, 0xce, 0xff, 0x18, 0xb3, +0x54, 0x5a, 0x14, 0xa0, 0x32, 0xae, 0x38, 0xd1, +0xf4, 0x67, 0x6a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xed, 0x01, 0x22, 0x21, 0x7e, 0x1a, 0x99, +0x69, 0x33, 0xae, 0x38, 0xb9, 0x2f, 0xa8, 0x00, +0xef, 0x92, 0xd9, 0x29, 0x34, 0x87, 0x22, 0xc1, +0x2b, 0x58, 0xe7, 0x0a, 0x56, 0xa0, 0x23, 0x89, +0x3c, 0xbc, 0x0f, 0xd3, 0x6d, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0x7f, +0xdb, 0xea, 0x64, 0x41, 0xe5, 0x51, 0x63, 0x3d, +0x3d, 0xa0, 0xe9, 0x68, 0xea, 0xf8, 0x46, 0xfa, +0x5f, 0x76, 0x12, 0x00, 0xca, 0x29, 0x44, 0x49, +0x26, 0x0b, 0xfd, 0x01, 0xef, 0xff, 0x45, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, +0x21, 0xd7, 0x25, 0x91, 0x6c, 0x70, 0x26, 0x4a, +0x83, 0x67, 0x3a, 0xc3, 0x5a, 0xcb, 0xee, 0x06, +0xcf, 0x1c, 0x71, 0x61, 0x17, 0x64, 0xb0, 0x3d, +0x12, 0xec, 0xe5, 0xf7, 0x29, 0x87, 0x6d, 0xb1, +0x6f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, +0x01, 0x22, 0x21, 0x1d, 0xd0, 0xe1, 0x87, 0x9a, +0x78, 0x04, 0x08, 0x26, 0x94, 0x6b, 0x16, 0x86, +0x63, 0x99, 0x89, 0x70, 0x30, 0x3d, 0x7e, 0x8e, +0x68, 0x9d, 0xa6, 0xa8, 0xb2, 0x6a, 0xde, 0x4b, +0xe0, 0x61, 0x47, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf1, 0x01, 0x22, 0x21, 0xea, 0xf6, 0x5a, +0x09, 0x62, 0x5c, 0xc9, 0xe2, 0x83, 0x4f, 0x08, +0x09, 0x31, 0xa7, 0x77, 0x5b, 0x9f, 0xdf, 0xb0, +0x53, 0xaa, 0xf6, 0xaf, 0xc4, 0x55, 0xcd, 0x61, +0xd2, 0x2d, 0xb5, 0xe0, 0x0c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0x20, +0x80, 0x41, 0x0d, 0x5d, 0xee, 0x47, 0x8a, 0x4a, +0xd1, 0x79, 0xdf, 0x53, 0x8b, 0x03, 0x8e, 0x02, +0x12, 0x8b, 0xc0, 0xe1, 0xa5, 0xd5, 0x3a, 0x12, +0xfb, 0x64, 0xdf, 0x89, 0xe7, 0xbc, 0x2e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, +0x21, 0xf7, 0x2d, 0x14, 0xc4, 0x6e, 0xe8, 0x7d, +0xbe, 0xef, 0xd3, 0xd1, 0xc8, 0x81, 0x7f, 0x49, +0x68, 0x24, 0x9c, 0x24, 0xc5, 0xec, 0xfa, 0x0f, +0x3b, 0x4b, 0x04, 0x96, 0xb5, 0xe4, 0x64, 0x96, +0x1b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, +0x01, 0x22, 0x21, 0x1d, 0xeb, 0x73, 0x0b, 0xbf, +0xfd, 0x1a, 0x20, 0x7c, 0x96, 0x96, 0x27, 0xb6, +0x49, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xbe, 0xf0, 0xc7, 0xf6, +0xd6, 0x8a, 0x30, 0x3e, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf5, 0x01, 0x22, 0x21, 0x60, 0xfd, 0xf9, +0x1c, 0x7e, 0x3d, 0xb6, 0xe9, 0x61, 0x0f, 0xa7, +0xb1, 0xa9, 0xbd, 0xfa, 0x53, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x0d, +0xa2, 0x28, 0x9f, 0x4f, 0x3d, 0xd5, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0xd4, +0x84, 0xf1, 0xd0, 0xcc, 0xe4, 0xeb, 0x57, 0x40, +0x03, 0x91, 0x48, 0x70, 0xca, 0x27, 0xdd, 0x81, +0x62, 0x17, 0x98, 0x93, 0x61, 0x0c, 0xf6, 0x25, +0x0c, 0xc7, 0x3e, 0x4f, 0xcc, 0xab, 0x5e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, +0x21, 0x5b, 0xbd, 0x0a, 0x19, 0x7e, 0x95, 0xa4, +0xe3, 0xd0, 0x72, 0x98, 0x52, 0x9b, 0x80, 0xf5, +0x16, 0x0d, 0x1e, 0x5d, 0x17, 0x80, 0x5d, 0x7f, +0x8f, 0xa4, 0xa9, 0x74, 0xa6, 0x84, 0xd5, 0xc8, +0x10, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, +0x01, 0x22, 0x21, 0xd6, 0x19, 0x76, 0x80, 0x67, +0xf2, 0xf4, 0xcf, 0x5d, 0x36, 0x78, 0xc8, 0x99, +0x0f, 0x2d, 0xd4, 0x01, 0x69, 0xa8, 0x87, 0x28, +0x6e, 0xda, 0x2c, 0x85, 0x92, 0x52, 0xb4, 0xe1, +0xba, 0x42, 0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf9, 0x01, 0x22, 0x21, 0xf1, 0xd1, 0x1c, +0xd1, 0xc4, 0x00, 0x45, 0x85, 0x78, 0xbc, 0x88, +0x81, 0x55, 0x6a, 0x87, 0x70, 0xcf, 0xdb, 0xb1, +0x9c, 0xdd, 0x70, 0xb1, 0x41, 0x81, 0xa1, 0xdd, +0xb0, 0xfe, 0x38, 0xde, 0x54, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0xea, +0x29, 0x79, 0x57, 0xd5, 0x8d, 0x5b, 0xf2, 0xab, +0x82, 0xf9, 0x0c, 0xad, 0x57, 0xe3, 0xaf, 0x48, +0x2e, 0xcf, 0x09, 0x96, 0xb9, 0x3a, 0x8b, 0xfc, +0x77, 0x8f, 0x4e, 0xd7, 0x40, 0x9f, 0x49, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, +0x21, 0xa1, 0x41, 0xd9, 0xac, 0xc1, 0xf1, 0xff, +0x5a, 0x59, 0xfb, 0x92, 0x74, 0xff, 0x15, 0xe1, +0x56, 0xb7, 0x54, 0xf6, 0x25, 0x9f, 0xd1, 0xe4, +0xb2, 0x07, 0xaa, 0x05, 0x71, 0x98, 0x9e, 0x48, +0x5e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, +0x01, 0x22, 0x21, 0x9c, 0xb6, 0x48, 0x5a, 0xa3, +0xc7, 0xa3, 0x65, 0xee, 0xed, 0x64, 0x23, 0xb1, +0xf4, 0xdc, 0xe2, 0x08, 0xed, 0xb5, 0x90, 0x3d, +0x03, 0x00, 0xd8, 0xe7, 0x66, 0x21, 0xc4, 0x49, +0x4f, 0xf9, 0xbd, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xfd, 0x01, 0x22, 0x21, 0x1c, 0x6e, 0xf2, +0x4d, 0xc0, 0x25, 0xd1, 0xed, 0x9e, 0xa7, 0x48, +0x56, 0xd8, 0x30, 0x62, 0xb1, 0xd6, 0xfb, 0xef, +0x50, 0x04, 0xeb, 0xc5, 0x0d, 0x27, 0xe3, 0x54, +0x5f, 0x75, 0x75, 0x59, 0x7d, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0xac, +0xe1, 0x42, 0x2d, 0x89, 0x06, 0xa2, 0x0c, 0x50, +0x79, 0x2c, 0xc5, 0x3b, 0x7c, 0x7a, 0x64, 0x44, +0x75, 0xf3, 0xc0, 0x83, 0x84, 0x52, 0x21, 0x07, +0xfc, 0x2f, 0x9c, 0x02, 0xf8, 0xee, 0x0d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, +0x21, 0x8d, 0x5f, 0x9c, 0x82, 0x9a, 0xe1, 0x8b, +0xcf, 0xb9, 0xa9, 0xd7, 0x34, 0x77, 0xc1, 0xa5, +0x44, 0xc9, 0xab, 0x4a, 0xd8, 0x83, 0xc2, 0x12, +0x98, 0x52, 0x54, 0xa4, 0xd5, 0xfa, 0x00, 0x43, +0x19, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, +0x01, 0x22, 0x21, 0x7b, 0x8a, 0x1b, 0x6e, 0x27, +0x59, 0x23, 0xac, 0x62, 0x7c, 0xd3, 0x65, 0x25, +0xb0, 0x72, 0x1a, 0x97, 0x9a, 0x10, 0xa3, 0xbb, +0xff, 0x81, 0x14, 0xcc, 0x5d, 0xbd, 0x06, 0xae, +0x2c, 0xbc, 0xd5, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x01, 0x01, 0x22, 0x21, 0x3d, 0x28, 0xf6, +0x6c, 0x5e, 0xd8, 0xb3, 0xcb, 0x87, 0x9b, 0x41, +0x3e, 0x01, 0xd1, 0xdf, 0x87, 0xb4, 0x22, 0xb9, +0x67, 0xdc, 0x23, 0x1e, 0x31, 0xdb, 0xbb, 0xc0, +0x91, 0x9f, 0x81, 0xae, 0xe5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0x5f, +0xc7, 0x64, 0x0d, 0x5c, 0xab, 0x54, 0x9b, 0xa4, +0x8d, 0xcf, 0xa2, 0xa9, 0x78, 0x08, 0x2e, 0x2f, +0xc8, 0x2d, 0xb7, 0x40, 0x95, 0x44, 0x1c, 0x8c, +0x62, 0x63, 0x4d, 0x84, 0x98, 0x24, 0x40, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, +0x21, 0x61, 0x55, 0x12, 0xb5, 0x8e, 0xe9, 0x42, +0xc0, 0xc2, 0x6a, 0x04, 0x69, 0xc4, 0x9f, 0x90, +0xb9, 0x0c, 0x57, 0xc9, 0x6f, 0x42, 0xc6, 0x02, +0xd0, 0x6e, 0x73, 0x52, 0x79, 0x89, 0xae, 0x0b, +0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, +0x01, 0x22, 0x21, 0xb5, 0x7f, 0xbe, 0x75, 0xed, +0x61, 0x93, 0x5c, 0x0a, 0x1c, 0xdd, 0xaa, 0x5a, +0x83, 0x35, 0x15, 0x86, 0x01, 0x44, 0x62, 0x69, +0xa0, 0x45, 0x26, 0x82, 0x0c, 0x97, 0x78, 0x42, +0x54, 0x84, 0xce, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x05, 0x01, 0x22, 0x21, 0x0d, 0xba, 0x86, +0xc8, 0xc6, 0x61, 0x27, 0x08, 0x03, 0x26, 0xff, +0x89, 0xdc, 0x3f, 0xfa, 0x2a, 0x44, 0xde, 0x17, +0x2b, 0x08, 0x49, 0xd6, 0xcd, 0x1d, 0xbd, 0x8d, +0xf4, 0xb6, 0x3d, 0xf0, 0xd9, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0xf9, +0x43, 0x4e, 0x86, 0x25, 0xf9, 0x69, 0x39, 0xbc, +0x4e, 0x32, 0x54, 0x6b, 0x20, 0x7d, 0xf6, 0xf9, +0xd9, 0xf7, 0xc2, 0xf6, 0x9b, 0xb0, 0x2b, 0xab, +0x9b, 0xa0, 0xd8, 0xbe, 0xd9, 0x0e, 0x6e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, +0x21, 0x98, 0x12, 0x91, 0x34, 0xe4, 0xcb, 0x76, +0xc5, 0x3f, 0xd7, 0x4a, 0x4f, 0x93, 0x72, 0xce, +0xf5, 0x82, 0x24, 0xc7, 0xc0, 0x14, 0x9c, 0x41, +0x6b, 0x3c, 0x0f, 0xe7, 0xd3, 0xda, 0xa8, 0x08, +0x05, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, +0x01, 0x22, 0x21, 0xd1, 0xa9, 0x33, 0xed, 0x2c, +0x7f, 0xf7, 0x4e, 0x3c, 0x18, 0x11, 0x59, 0x84, +0x78, 0xbd, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xb7, 0xcc, 0x90, 0x3d, +0x8e, 0xf9, 0x1f, 0x05, 0x03, 0x04, 0x51, 0x02, +0x00, 0x09, 0x01, 0x22, 0x21, 0xef, 0x9c, 0xa5, +0x2a, 0xd1, 0x67, 0xd3, 0x11, 0x0c, 0x61, 0x0c, +0xaa, 0x15, 0x7c, 0x6c, 0x48, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x1c, +0xc7, 0x66, 0x5c, 0x57, 0xfd, 0x48, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0x78, +0xbf, 0x86, 0xb8, 0xed, 0x07, 0x60, 0x0b, 0xe2, +0xc6, 0x47, 0xbc, 0xaa, 0xdb, 0xbf, 0x7d, 0x3f, +0xca, 0xad, 0x18, 0x35, 0x91, 0x1b, 0xfb, 0x2e, +0xa1, 0x0f, 0x6e, 0x79, 0x22, 0x77, 0x90, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, +0x21, 0xe4, 0x7e, 0x62, 0x12, 0xee, 0x62, 0x9b, +0xa3, 0x66, 0x90, 0x47, 0x68, 0x2d, 0xa6, 0x85, +0xb4, 0xfc, 0x26, 0xde, 0xb2, 0xb8, 0x61, 0xe9, +0xa7, 0x41, 0xe4, 0x3f, 0x1c, 0x4d, 0xf3, 0x04, +0xff, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, +0x01, 0x22, 0x21, 0xc9, 0x10, 0xb8, 0xf3, 0x92, +0xac, 0x83, 0xea, 0x9b, 0x10, 0xec, 0xbc, 0x68, +0x7a, 0x0c, 0x51, 0x67, 0x6b, 0x62, 0x33, 0x3d, +0x46, 0xc7, 0x33, 0x70, 0xdc, 0xa3, 0xe9, 0x32, +0xd0, 0x80, 0xc4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x0d, 0x01, 0x22, 0x21, 0x7f, 0xe0, 0xa4, +0x71, 0x40, 0xa7, 0x0f, 0x7b, 0x41, 0x76, 0x33, +0x08, 0xf7, 0x8a, 0xdb, 0xeb, 0x4a, 0xcc, 0xfe, +0x41, 0x9a, 0xcc, 0x05, 0x69, 0x2e, 0xaf, 0x4c, +0x20, 0x3f, 0xd6, 0x89, 0xe8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0x86, +0xc0, 0x9b, 0x0e, 0x30, 0x11, 0xf3, 0x41, 0xc8, +0x02, 0x5a, 0xfd, 0xba, 0x63, 0x93, 0x5c, 0xbc, +0x01, 0x72, 0x7f, 0xd9, 0x94, 0xc4, 0x12, 0x38, +0xf8, 0x27, 0xaa, 0x42, 0xf6, 0xd1, 0xe0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, +0x21, 0x6d, 0x94, 0xef, 0xf5, 0x18, 0xaf, 0x94, +0xca, 0x39, 0xf6, 0xd8, 0xa1, 0xa1, 0x33, 0x07, +0xdc, 0xb5, 0xbf, 0x1d, 0xf6, 0x40, 0x95, 0xb2, +0x20, 0x07, 0x46, 0x31, 0xfe, 0x49, 0xe0, 0x83, +0x68, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, +0x01, 0x22, 0x21, 0xc5, 0xfd, 0x32, 0xd3, 0x36, +0x4c, 0xbc, 0x11, 0xb6, 0x12, 0xdb, 0xfb, 0x15, +0x96, 0x1f, 0x82, 0x17, 0x91, 0xdf, 0x9d, 0xfd, +0x70, 0xad, 0xa2, 0x50, 0x4d, 0xdf, 0x44, 0xf5, +0x66, 0xde, 0xe0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x11, 0x01, 0x22, 0x21, 0x05, 0xda, 0xc4, +0xd1, 0xe1, 0xb0, 0x0b, 0x74, 0x01, 0x2b, 0xd1, +0xc2, 0x99, 0x51, 0x84, 0xc3, 0x85, 0x5b, 0x72, +0xf9, 0xdb, 0x96, 0xb6, 0xc9, 0x4b, 0x0b, 0x0a, +0x3f, 0xf7, 0xae, 0x57, 0x75, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0xaa, +0x4a, 0xf4, 0x91, 0xff, 0x09, 0xa0, 0x53, 0xbe, +0xcb, 0x13, 0xe3, 0x5c, 0x08, 0x9b, 0x21, 0x3a, +0xf6, 0xf2, 0xe1, 0x14, 0xad, 0x17, 0x1b, 0x4c, +0xdc, 0x20, 0x23, 0x75, 0xec, 0xc5, 0x3d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, +0x21, 0xed, 0x6e, 0x3f, 0xbe, 0xd2, 0x92, 0xea, +0xb2, 0x53, 0x55, 0x40, 0xe5, 0xfa, 0x64, 0x4e, +0xcb, 0xa6, 0x49, 0x04, 0xae, 0x90, 0x3c, 0x98, +0x6e, 0x4c, 0xa2, 0x40, 0x7a, 0x61, 0xb1, 0x34, +0x81, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, +0x01, 0x22, 0x21, 0xfa, 0x02, 0x17, 0x01, 0x7d, +0x0d, 0x3e, 0xff, 0xa0, 0x8f, 0xb7, 0x7d, 0x14, +0x5c, 0x50, 0x05, 0x47, 0x0e, 0x29, 0xcf, 0xc8, +0x60, 0x01, 0x02, 0x7d, 0x08, 0x19, 0x24, 0xdd, +0x9c, 0xaf, 0x79, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x15, 0x01, 0x22, 0x21, 0x5a, 0x90, 0x2a, +0x90, 0x5f, 0x7a, 0x70, 0x1e, 0xd3, 0xa8, 0xe6, +0x85, 0x53, 0x07, 0xd8, 0x83, 0x1a, 0x3a, 0x4e, +0x0f, 0xad, 0xab, 0xcf, 0x7a, 0x29, 0xaa, 0x5e, +0x97, 0x89, 0xf3, 0x1a, 0xbd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0x5f, +0x98, 0x52, 0xc5, 0x57, 0x16, 0xf2, 0xa6, 0xd7, +0xe0, 0x66, 0x9b, 0x3e, 0x8e, 0x4b, 0x33, 0x12, +0xac, 0x9c, 0x8a, 0x92, 0xb2, 0xd2, 0x13, 0x1b, +0xa0, 0xc7, 0xf4, 0xd4, 0x57, 0x3b, 0x6c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, +0x21, 0x9b, 0x2f, 0xf0, 0xfb, 0x19, 0xb9, 0xa0, +0xa5, 0x10, 0xda, 0xbd, 0x7e, 0x49, 0x8b, 0x00, +0x4e, 0xee, 0x5e, 0x62, 0xca, 0x28, 0x7f, 0x1a, +0xad, 0xbe, 0x08, 0xce, 0xd1, 0x0f, 0x03, 0x4d, +0x69, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, +0x01, 0x22, 0x21, 0x77, 0xed, 0xe2, 0x00, 0x58, +0xa5, 0xb0, 0x2c, 0x13, 0x1c, 0xc9, 0xf8, 0xa5, +0xe9, 0xeb, 0x10, 0xe7, 0xed, 0xf7, 0xd2, 0x6c, +0xc5, 0x4e, 0x78, 0x48, 0x79, 0x02, 0xd8, 0x66, +0xdf, 0x6f, 0x87, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x19, 0x01, 0x22, 0x21, 0xed, 0x95, 0x15, +0xd3, 0xc1, 0x13, 0x79, 0x50, 0x29, 0x4f, 0xdf, +0x36, 0xf0, 0xd6, 0xc5, 0xde, 0x28, 0x43, 0xaa, +0xeb, 0x56, 0x33, 0x9b, 0x7b, 0x2f, 0x5e, 0xf3, +0xd7, 0xb6, 0x85, 0x11, 0xe0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x5b, +0x4f, 0x26, 0x7e, 0xef, 0xc9, 0x1f, 0x94, 0x14, +0x2b, 0x36, 0x98, 0x47, 0xc9, 0xbf, 0x8b, 0x75, +0x20, 0x24, 0x84, 0xa9, 0xda, 0x59, 0x26, 0xa2, +0xeb, 0xe6, 0xd9, 0x36, 0x1a, 0x56, 0x9f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, +0x21, 0xf7, 0x8b, 0xb8, 0xed, 0xca, 0xde, 0x2e, +0x06, 0x81, 0xeb, 0x3d, 0x72, 0x24, 0xd9, 0x1c, +0x6c, 0x40, 0x4a, 0x16, 0x47, 0xae, 0x32, 0x19, +0x21, 0x39, 0xd9, 0x59, 0xd3, 0x75, 0x1d, 0xc0, +0xe4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, +0x01, 0x22, 0x21, 0x83, 0xfd, 0xc0, 0xfd, 0x9a, +0x23, 0x64, 0x8a, 0x9f, 0x2c, 0xe2, 0x7b, 0xd9, +0x96, 0x5a, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x91, 0xec, 0xb8, 0x3e, +0xe0, 0xdd, 0xc5, 0x1b, 0x03, 0x04, 0x51, 0x02, +0x00, 0x1d, 0x01, 0x22, 0x21, 0x54, 0x5e, 0x46, +0x5c, 0xbf, 0xa8, 0x91, 0x61, 0x8f, 0x99, 0x14, +0x31, 0xa8, 0x79, 0x51, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xab, +0xe0, 0xac, 0x5d, 0x8b, 0x20, 0x50, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0x72, +0xc7, 0x96, 0xc1, 0xdc, 0x70, 0x19, 0x7d, 0x91, +0x3e, 0x00, 0x06, 0x6d, 0x68, 0x3f, 0x8c, 0xec, +0xfb, 0x49, 0x69, 0x86, 0x88, 0xb4, 0x26, 0x98, +0x61, 0x3c, 0x3b, 0x72, 0x60, 0x2b, 0xd3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, +0x21, 0xd7, 0x75, 0xab, 0xad, 0xe6, 0xc9, 0x4a, +0xd8, 0x7a, 0xe4, 0xc5, 0x85, 0x2e, 0x3c, 0xb0, +0x65, 0x84, 0x1a, 0x49, 0x50, 0x77, 0xd2, 0x79, +0x34, 0x2a, 0x93, 0x53, 0x56, 0x7b, 0xb3, 0x53, +0x54, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, +0x01, 0x22, 0x21, 0x68, 0x2e, 0x90, 0xb1, 0x3d, +0xcf, 0x93, 0x46, 0x6f, 0x56, 0x92, 0x75, 0xe8, +0xed, 0x7e, 0xd7, 0xc6, 0x5c, 0x19, 0xc8, 0x87, +0x55, 0xab, 0xda, 0x4e, 0xa7, 0xd4, 0x29, 0xb2, +0xa1, 0x90, 0xd8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x21, 0x01, 0x22, 0x21, 0x15, 0xd8, 0xf9, +0x3a, 0xba, 0x34, 0x13, 0x79, 0xb3, 0x79, 0xe1, +0xd9, 0x82, 0x01, 0xc5, 0xdf, 0x8f, 0x0f, 0xa5, +0x91, 0xd5, 0x31, 0x73, 0x76, 0x80, 0xda, 0x96, +0x65, 0xfc, 0x75, 0x8a, 0x8c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xa1, +0x72, 0x64, 0xd2, 0x27, 0xd4, 0x00, 0x6c, 0x45, +0x5b, 0x38, 0x97, 0xc5, 0x57, 0x69, 0xfc, 0x5a, +0x5f, 0x13, 0x43, 0x70, 0x93, 0xad, 0x86, 0xb1, +0x40, 0x7a, 0x07, 0x15, 0xec, 0xd5, 0x2c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, +0x21, 0x0a, 0x11, 0xfd, 0xc3, 0xf9, 0x09, 0xa1, +0x32, 0xdf, 0x6c, 0x03, 0xdf, 0xbe, 0x85, 0x85, +0x15, 0xf8, 0x98, 0x2e, 0xbd, 0xe8, 0xe1, 0x66, +0xb3, 0x6c, 0xde, 0x15, 0x85, 0x67, 0xc1, 0xbb, +0x1d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, +0x01, 0x22, 0x21, 0xdc, 0xc4, 0x11, 0xc4, 0x8e, +0xd6, 0xcd, 0xa6, 0x85, 0xbc, 0xca, 0x94, 0x8f, +0xbd, 0xea, 0xf9, 0xa7, 0xf6, 0xcf, 0x91, 0x0f, +0x7c, 0x23, 0xa1, 0x80, 0xe6, 0x89, 0xc2, 0x8e, +0x9d, 0x6b, 0x3a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x25, 0x01, 0x22, 0x21, 0xb1, 0xd1, 0x91, +0x3b, 0x19, 0xd1, 0xe9, 0xfc, 0x94, 0x7a, 0xd1, +0x08, 0xbe, 0xa9, 0x6a, 0x70, 0x80, 0xfa, 0x16, +0x8c, 0xfe, 0x7e, 0x90, 0x29, 0x06, 0x2a, 0x04, +0x56, 0x3b, 0x96, 0x26, 0xa6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0x7e, +0x02, 0x3e, 0xe2, 0x3b, 0x23, 0xfb, 0x89, 0x0a, +0xf1, 0x9f, 0x4a, 0x3b, 0x72, 0x61, 0x5f, 0xa3, +0xcc, 0x6c, 0x78, 0xe0, 0xa9, 0xed, 0xcd, 0x89, +0xfb, 0x98, 0x3e, 0x48, 0xdc, 0x70, 0x92, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, +0x21, 0xbc, 0xee, 0x00, 0x18, 0x55, 0x66, 0x3b, +0x14, 0x90, 0xec, 0x7a, 0x6d, 0x85, 0x4d, 0x49, +0x03, 0xcf, 0x8e, 0x10, 0xc2, 0xec, 0x4b, 0x00, +0x85, 0xa9, 0x40, 0x88, 0x8b, 0x88, 0xb0, 0x1a, +0xd2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, +0x01, 0x22, 0x21, 0x17, 0x43, 0x8d, 0x28, 0x6d, +0x57, 0xd0, 0x40, 0x78, 0x50, 0xb2, 0xaf, 0x53, +0xb3, 0x65, 0xb2, 0xd7, 0x8b, 0x7b, 0x0f, 0xe7, +0x5b, 0x37, 0x78, 0x9c, 0x80, 0xc4, 0x50, 0x61, +0x41, 0xc9, 0x9f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x29, 0x01, 0x22, 0x21, 0x73, 0xa6, 0x15, +0xcd, 0xed, 0xcb, 0x47, 0xea, 0xcb, 0x9a, 0xfa, +0x31, 0x86, 0x14, 0x17, 0x58, 0x36, 0x35, 0x26, +0x94, 0x5d, 0xc0, 0xa7, 0xfb, 0xe5, 0x27, 0xfb, +0x16, 0x0d, 0x09, 0xd9, 0x25, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0x89, +0xdd, 0xa6, 0xe0, 0x8f, 0x06, 0xd9, 0x23, 0xd3, +0xcb, 0x4a, 0x3a, 0x38, 0x1b, 0x68, 0xac, 0x36, +0x40, 0xc1, 0xf4, 0x19, 0xa4, 0x0f, 0x0e, 0x42, +0x41, 0xcb, 0x66, 0xa7, 0x9e, 0xd3, 0x45, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, +0x21, 0xea, 0x81, 0xdf, 0x28, 0xda, 0xc9, 0x10, +0x5a, 0x96, 0x98, 0x1f, 0x7b, 0xfc, 0x91, 0x06, +0x71, 0xda, 0x4f, 0x37, 0xd8, 0x79, 0xb5, 0x0a, +0xd6, 0xe8, 0x30, 0x49, 0xb0, 0x37, 0xb1, 0xec, +0x47, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, +0x01, 0x22, 0x21, 0x9e, 0x95, 0x5e, 0x71, 0xc9, +0xc0, 0x64, 0x21, 0xda, 0xc9, 0x49, 0x4b, 0x76, +0x6a, 0xfd, 0xcf, 0x61, 0x40, 0x2f, 0xcc, 0x0b, +0x03, 0xea, 0x38, 0xcb, 0xe7, 0xcf, 0xa0, 0xae, +0xf6, 0xd5, 0x52, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x2d, 0x01, 0x22, 0x21, 0x28, 0x7a, 0xb1, +0xed, 0x5c, 0x4d, 0xfc, 0xc0, 0xb3, 0xf9, 0x52, +0xfe, 0x73, 0x18, 0x89, 0xae, 0x3a, 0xdf, 0x87, +0x49, 0xe7, 0x8c, 0xe5, 0x7d, 0xcc, 0x7f, 0xe1, +0xad, 0x3b, 0xfd, 0xb0, 0x1c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0x61, +0x34, 0x56, 0xe2, 0x44, 0xca, 0x95, 0xb3, 0x48, +0x86, 0x46, 0x88, 0x4b, 0x26, 0x43, 0x08, 0xce, +0xd9, 0x43, 0x81, 0x45, 0xd8, 0x56, 0x8d, 0xe6, +0xc8, 0x0b, 0x01, 0x6e, 0xdc, 0x17, 0x31, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, +0x21, 0x09, 0x26, 0x94, 0xa8, 0x0c, 0xa6, 0x73, +0x94, 0xff, 0xc2, 0xa8, 0xa9, 0x44, 0x86, 0x32, +0xb6, 0x80, 0x4d, 0x1b, 0x47, 0x39, 0x94, 0x64, +0x00, 0x88, 0x67, 0x04, 0x07, 0x32, 0xad, 0x6f, +0x74, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, +0x01, 0x22, 0x21, 0xe9, 0x68, 0x14, 0xfb, 0x5a, +0x8e, 0x44, 0x14, 0xfb, 0xf6, 0xb8, 0xd1, 0xad, +0x2f, 0xc8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x99, +0x69, 0x14, 0x23, 0x50, 0x03, 0x04, 0x51, 0x02, +0x00, 0x31, 0x01, 0x22, 0x21, 0xae, 0x34, 0xac, +0x4e, 0x32, 0x4f, 0xd0, 0xaa, 0x69, 0x22, 0x6b, +0x64, 0xac, 0xe8, 0x34, 0x5b, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x33, +0x8e, 0x48, 0x4d, 0x89, 0x1f, 0x6b, 0x03, 0x04, +0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0xfd, +0xb0, 0x22, 0x3f, 0x25, 0x03, 0x07, 0x9b, 0x4e, +0x37, 0x16, 0x1a, 0x25, 0x51, 0x4c, 0x17, 0x0f, +0xd7, 0xe1, 0xd2, 0xb9, 0x09, 0x7f, 0xad, 0x4e, +0x01, 0xe9, 0xb9, 0xb6, 0xe2, 0x80, 0x12, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, +0x21, 0x4c, 0xac, 0x6f, 0x5e, 0x7e, 0x4c, 0xcd, +0x65, 0x43, 0x44, 0xc6, 0x37, 0x01, 0x7e, 0x36, +0x33, 0xbf, 0x33, 0x5c, 0x68, 0x5b, 0xbd, 0x14, +0x68, 0xce, 0x22, 0xd0, 0x7b, 0xba, 0x59, 0xa4, +0x40, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, +0x01, 0x22, 0x21, 0x0c, 0x06, 0x68, 0x35, 0x31, +0xbe, 0xc0, 0x4b, 0x7a, 0x34, 0x32, 0xa8, 0xd2, +0x70, 0x46, 0xd9, 0x1f, 0x7a, 0xdf, 0x5b, 0x66, +0x1d, 0x8b, 0xd5, 0xf2, 0xdc, 0xd7, 0xdd, 0x77, +0x27, 0x09, 0x4c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x35, 0x01, 0x22, 0x21, 0xa5, 0xa8, 0x88, +0x32, 0x04, 0x84, 0x18, 0xe7, 0xba, 0x7b, 0x6a, +0x3e, 0x2e, 0x86, 0x95, 0xa4, 0x1e, 0x02, 0xe3, +0x7a, 0x1c, 0xcb, 0x61, 0x1e, 0x95, 0x8f, 0xdc, +0xa1, 0xd9, 0x87, 0xe2, 0x16, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x1b, +0x48, 0xc9, 0x88, 0xd3, 0xec, 0x2e, 0x18, 0x67, +0xbe, 0x4e, 0x73, 0xbf, 0xd8, 0xa0, 0x91, 0x26, +0xfc, 0xbd, 0xda, 0xad, 0xac, 0x84, 0xc4, 0x1c, +0x5f, 0x48, 0xc2, 0xfc, 0x37, 0xa1, 0x6a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, +0x21, 0x09, 0xd5, 0x88, 0x90, 0x5c, 0x6f, 0xf6, +0xde, 0x9e, 0x95, 0x30, 0xf0, 0x42, 0xcd, 0x39, +0xc0, 0xf2, 0xfe, 0x08, 0x87, 0x0f, 0x0e, 0x2a, +0xfd, 0xc5, 0x96, 0xaf, 0x62, 0x18, 0xd1, 0x7a, +0x97, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, +0x01, 0x22, 0x21, 0xde, 0xbb, 0x37, 0xc2, 0x6b, +0xd8, 0x26, 0xbc, 0xf0, 0x4c, 0xf7, 0x94, 0x0f, +0x86, 0x09, 0x44, 0x8c, 0x11, 0xaf, 0x04, 0xbe, +0x02, 0x92, 0x74, 0xe0, 0xfe, 0x8f, 0x38, 0x15, +0x32, 0x4d, 0x2f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x39, 0x01, 0x22, 0x21, 0xb7, 0xed, 0x18, +0xb3, 0x10, 0x71, 0xcd, 0x5b, 0x8d, 0x19, 0x69, +0xcd, 0xbb, 0x58, 0x52, 0x68, 0x93, 0x1b, 0x5f, +0xd6, 0xa2, 0x94, 0xf8, 0x8c, 0x5e, 0x91, 0x5b, +0xf5, 0x05, 0x0a, 0x7b, 0xdb, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0xa1, +0x2a, 0x6b, 0x0c, 0xf8, 0x1f, 0xa9, 0x7d, 0xbb, +0xcf, 0x0a, 0xcb, 0x8c, 0x7c, 0x33, 0x6a, 0x36, +0x7b, 0xfa, 0x33, 0x63, 0x84, 0x03, 0xbb, 0x0f, +0xef, 0x3f, 0x27, 0x95, 0x18, 0x6b, 0x93, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, +0x21, 0x7d, 0x99, 0x90, 0x32, 0x31, 0x85, 0x8b, +0x36, 0x44, 0xf5, 0x81, 0x2a, 0x0d, 0xd4, 0x29, +0x8a, 0x8d, 0x05, 0x4c, 0x44, 0x9a, 0x9a, 0x13, +0x75, 0x5d, 0xe6, 0xad, 0x0d, 0x62, 0x32, 0xa1, +0xae, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, +0x01, 0x22, 0x21, 0x6f, 0xb8, 0x5f, 0x77, 0xd0, +0x43, 0x7a, 0x5b, 0x49, 0x5f, 0xdf, 0x30, 0xc9, +0xbd, 0x47, 0x28, 0x7d, 0x49, 0x8c, 0x14, 0x57, +0x60, 0x46, 0xc5, 0x78, 0xdb, 0x4d, 0xc3, 0xf2, +0x18, 0x46, 0xa0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x3d, 0x01, 0x22, 0x21, 0x13, 0x94, 0xb8, +0x4e, 0xb9, 0x75, 0xe8, 0x2b, 0x30, 0xfc, 0xfa, +0x50, 0x83, 0x08, 0x0b, 0xc2, 0x8d, 0x95, 0xd6, +0xa4, 0xa5, 0x05, 0x7a, 0xc8, 0x1d, 0xfa, 0x2c, +0x89, 0xfb, 0x05, 0x52, 0x6f, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x34, +0x96, 0x42, 0xd0, 0x04, 0xe1, 0x18, 0xfc, 0x29, +0x96, 0x84, 0x2b, 0x24, 0x62, 0x93, 0x18, 0xea, +0xeb, 0x24, 0x6e, 0x03, 0x3d, 0x24, 0x75, 0x2e, +0x74, 0x8f, 0x28, 0xb1, 0x7b, 0x35, 0xa4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, +0x21, 0x80, 0x19, 0x15, 0x8c, 0x3d, 0x00, 0x63, +0xd5, 0x9b, 0x70, 0x90, 0x26, 0xec, 0x84, 0x96, +0xa5, 0xc5, 0x9c, 0xe2, 0x7a, 0x03, 0x0c, 0xc0, +0xa8, 0xc9, 0x3a, 0x33, 0x87, 0x32, 0xf6, 0x0d, +0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, +0x01, 0x22, 0x21, 0x56, 0x9b, 0xd8, 0xa9, 0x6a, +0x34, 0x55, 0x2a, 0x10, 0x7f, 0x54, 0x42, 0x1d, +0xc2, 0xec, 0x7b, 0x6c, 0x4a, 0x33, 0xad, 0x7c, +0xe2, 0x5d, 0x59, 0xce, 0xca, 0x90, 0xd5, 0x8c, +0x77, 0xf3, 0x3c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x41, 0x01, 0x22, 0x21, 0x39, 0xb5, 0x79, +0xee, 0xb9, 0x51, 0x54, 0x9d, 0xe8, 0x52, 0xd7, +0x98, 0x2f, 0x7b, 0xce, 0xca, 0x20, 0x3c, 0x65, +0xce, 0xb4, 0xdd, 0xd8, 0xe9, 0x64, 0xb0, 0x7f, +0x59, 0x04, 0x83, 0x13, 0xcf, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0x0a, +0xc6, 0xf3, 0x94, 0x0f, 0x17, 0xf8, 0x26, 0xe7, +0x2b, 0xde, 0x49, 0x6c, 0x2a, 0xbc, 0x14, 0x4b, +0xb0, 0x56, 0x89, 0xf1, 0x7a, 0x33, 0x1f, 0x0d, +0xc6, 0x9e, 0x49, 0x7f, 0x58, 0x35, 0x6d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, +0x21, 0x43, 0x31, 0x31, 0xa1, 0x2c, 0x13, 0x39, +0xf3, 0xc0, 0x86, 0xcf, 0xab, 0x45, 0x99, 0xd6, +0xf0, 0x2d, 0x3d, 0xee, 0x5f, 0x0a, 0x97, 0xe6, +0x24, 0xda, 0x46, 0x1e, 0x58, 0xe1, 0x8f, 0x75, +0x5e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, +0x01, 0x22, 0x21, 0x9a, 0xc0, 0x47, 0x01, 0x84, +0x94, 0x44, 0xf4, 0x74, 0x4a, 0xe1, 0xe6, 0xa7, +0x95, 0x62, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xd9, 0xce, 0xd5, 0x2c, +0xae, 0x30, 0x15, 0xa5, 0x03, 0x04, 0x51, 0x02, +0x00, 0x45, 0x01, 0x22, 0x21, 0x4f, 0xf0, 0x50, +0x21, 0x26, 0xf0, 0x0e, 0xdc, 0x41, 0xab, 0x68, +0x1b, 0x80, 0xaa, 0xbc, 0x68, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x23, +0xf6, 0xca, 0x05, 0x31, 0x07, 0xcf, 0x03, 0x04, +0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0xf2, +0x28, 0xac, 0xda, 0xf6, 0x27, 0xef, 0x55, 0x1c, +0xd0, 0x47, 0xf3, 0xae, 0x22, 0x42, 0xf2, 0x6e, +0xb2, 0x29, 0xd2, 0x73, 0xb6, 0xad, 0x57, 0x41, +0xfc, 0x78, 0x28, 0xb1, 0x49, 0xd4, 0x64, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, +0x21, 0xc1, 0x86, 0x11, 0x40, 0xf3, 0xb9, 0x49, +0x4b, 0xc0, 0x3f, 0xc3, 0xfe, 0xf4, 0xf5, 0x82, +0x96, 0x45, 0x8d, 0xa9, 0xc9, 0x03, 0x57, 0x72, +0x77, 0x05, 0x2d, 0x93, 0x0c, 0x61, 0x62, 0xea, +0x06, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, +0x01, 0x22, 0x21, 0xf0, 0xdc, 0xe0, 0xca, 0xde, +0xb3, 0xae, 0xce, 0x9e, 0x1f, 0x73, 0x28, 0x7c, +0xd8, 0x96, 0xfc, 0x77, 0x31, 0xf9, 0xd4, 0x31, +0x00, 0x72, 0x79, 0xb0, 0x01, 0xa5, 0xc6, 0x6d, +0x2a, 0x15, 0x88, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x49, 0x01, 0x22, 0x21, 0xe8, 0x72, 0x71, +0xe5, 0x81, 0x8d, 0xf7, 0x29, 0x62, 0xab, 0x4c, +0xb1, 0xbf, 0x78, 0xd5, 0x11, 0x61, 0xf9, 0x6e, +0x88, 0x6c, 0x0e, 0x42, 0x07, 0x44, 0x60, 0xcd, +0x3b, 0x5a, 0x74, 0xe0, 0x6e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0x99, +0x68, 0xc9, 0xd4, 0x87, 0x79, 0xe4, 0x71, 0x80, +0xdd, 0xeb, 0x6a, 0xb4, 0x1b, 0x0d, 0x64, 0xa5, +0x62, 0xcd, 0x93, 0x04, 0x9b, 0xad, 0x34, 0x19, +0xa9, 0x13, 0xeb, 0x31, 0x84, 0x1b, 0xf1, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, +0x21, 0xbb, 0x2c, 0x55, 0x62, 0x23, 0x43, 0x6e, +0x5d, 0x19, 0x5e, 0xa0, 0x75, 0xb6, 0x22, 0x3f, +0x3d, 0xf0, 0xdb, 0x74, 0x2e, 0x8a, 0xbd, 0x6e, +0xde, 0x5d, 0x33, 0xc1, 0x7f, 0xe4, 0xeb, 0x58, +0x8c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, +0x01, 0x22, 0x21, 0x6b, 0xcf, 0x4e, 0x81, 0xd3, +0x68, 0x92, 0x96, 0xe3, 0x2f, 0x29, 0x5b, 0x25, +0x28, 0x19, 0x4b, 0xf8, 0xe9, 0x2a, 0x68, 0x16, +0x24, 0x4a, 0xad, 0xfb, 0x55, 0x59, 0xa0, 0x37, +0x7c, 0xe0, 0x06, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x4d, 0x01, 0x22, 0x21, 0xff, 0x03, 0x7b, +0x54, 0xae, 0x4f, 0x04, 0xa4, 0x69, 0x41, 0xbd, +0xbc, 0x73, 0x8c, 0x35, 0x74, 0x16, 0x6c, 0x62, +0x72, 0xc3, 0xc1, 0xe8, 0xcd, 0xee, 0x25, 0x90, +0xf8, 0xc2, 0xc6, 0x44, 0x66, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0x86, +0x87, 0x6e, 0x60, 0x1f, 0xdb, 0x4c, 0x42, 0xdd, +0x43, 0x88, 0xb3, 0x58, 0x9f, 0xdc, 0x5e, 0xf8, +0xda, 0x34, 0x9e, 0xa0, 0x41, 0x06, 0x51, 0xd4, +0xcf, 0x5d, 0x00, 0x53, 0xd6, 0xc5, 0x19, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, +0x21, 0xe7, 0x80, 0xc2, 0x3c, 0xf2, 0x07, 0xcb, +0x1c, 0x30, 0xa4, 0xb5, 0x5f, 0xd6, 0x47, 0xf1, +0xd2, 0x94, 0x34, 0x6e, 0x37, 0x33, 0xf4, 0xf3, +0x4b, 0x27, 0xad, 0xcd, 0x8f, 0xa4, 0xf6, 0xe5, +0xfe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, +0x01, 0x22, 0x21, 0x5b, 0xfe, 0xb5, 0xc1, 0x76, +0xda, 0x52, 0xa2, 0x8b, 0xd8, 0xae, 0x32, 0xc5, +0x12, 0xf2, 0x61, 0x6c, 0xa2, 0xbf, 0xc8, 0x3b, +0x7d, 0x11, 0xf2, 0x8b, 0x3c, 0xd3, 0xa4, 0xb3, +0x44, 0x82, 0x00, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x51, 0x01, 0x22, 0x21, 0xbb, 0x4c, 0x5b, +0x0e, 0x6f, 0x9b, 0x71, 0x26, 0xc1, 0x25, 0xa6, +0x3f, 0xbb, 0xa5, 0x58, 0x07, 0x34, 0xd5, 0xf0, +0x47, 0xd0, 0xfc, 0xf9, 0x4d, 0x65, 0x40, 0x9b, +0x59, 0x79, 0xae, 0x2e, 0xda, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0x51, +0xdf, 0x7d, 0x6a, 0xdd, 0x04, 0xf9, 0x6d, 0x44, +0x5f, 0x0e, 0x2b, 0x01, 0x08, 0x5a, 0x55, 0x8a, +0x64, 0xfd, 0xf7, 0xc4, 0x19, 0x05, 0x02, 0x5c, +0xdb, 0x30, 0x91, 0x84, 0x5b, 0xe3, 0x65, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, +0x21, 0x83, 0x31, 0x6b, 0x27, 0xe9, 0x8c, 0xa1, +0x54, 0x91, 0x20, 0xea, 0xb7, 0xe4, 0x17, 0x28, +0x25, 0x34, 0x6c, 0x38, 0xdc, 0x25, 0xd4, 0x79, +0x73, 0xa2, 0xd4, 0x19, 0x25, 0xbc, 0x7a, 0x41, +0x26, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, +0x01, 0x22, 0x21, 0x44, 0x90, 0xf6, 0x09, 0x6c, +0x67, 0x67, 0x00, 0xf2, 0x52, 0x20, 0x91, 0x8c, +0xb0, 0x42, 0x2a, 0x65, 0x03, 0xc0, 0x07, 0x83, +0x44, 0x7b, 0xaf, 0xa1, 0xb6, 0x95, 0x2b, 0x9a, +0xf5, 0x15, 0x82, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x55, 0x01, 0x22, 0x21, 0x7d, 0xe0, 0x17, +0x3a, 0x2a, 0xb0, 0x2e, 0x24, 0x8f, 0x86, 0xc4, +0xf0, 0x08, 0xfd, 0x17, 0x31, 0x64, 0x0b, 0xf3, +0x3b, 0xae, 0xec, 0x6e, 0xb2, 0x7a, 0xfe, 0x16, +0x7c, 0xe4, 0x06, 0x91, 0xdc, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x26, +0x0b, 0x28, 0x0a, 0xe2, 0x0a, 0x03, 0x2b, 0x66, +0x48, 0x98, 0x3c, 0x7d, 0x53, 0xd0, 0x28, 0xb0, +0x5b, 0xe8, 0x5a, 0xd1, 0xf7, 0xba, 0x5c, 0x6d, +0x07, 0x71, 0xb1, 0x9e, 0x49, 0xea, 0x89, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, +0x21, 0x6b, 0x14, 0x75, 0x0a, 0x38, 0x43, 0x69, +0x42, 0xa5, 0x1e, 0x51, 0x61, 0x23, 0x0c, 0x78, +0xfa, 0x2b, 0x0a, 0x88, 0x2d, 0x17, 0xd5, 0xcd, +0xa5, 0xb9, 0x50, 0x67, 0xf4, 0xb5, 0xb7, 0xe6, +0x95, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, +0x01, 0x22, 0x21, 0x62, 0x06, 0xe2, 0xec, 0x6d, +0xd1, 0x0c, 0x14, 0x2f, 0x6b, 0x5c, 0x7a, 0xa6, +0x70, 0xea, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0x52, 0x93, +0x1c, 0x1d, 0x78, 0xdc, 0x03, 0x04, 0x51, 0x02, +0x00, 0x59, 0x01, 0x22, 0x21, 0x62, 0xb6, 0xbc, +0xb9, 0xb3, 0x77, 0xea, 0x3c, 0x23, 0x07, 0xeb, +0x41, 0x62, 0xf2, 0xf8, 0x1b, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x0e, +0x46, 0x02, 0xbc, 0xff, 0x79, 0x7c, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x25, +0x6d, 0x82, 0x7a, 0x46, 0x91, 0x76, 0xae, 0x59, +0xfa, 0xbc, 0x64, 0x8b, 0xbb, 0xce, 0x38, 0x67, +0xe8, 0x77, 0x88, 0x21, 0x6e, 0x66, 0xc0, 0x56, +0x65, 0xd1, 0x15, 0xa9, 0x59, 0x53, 0x09, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, +0x21, 0x2c, 0x77, 0xa8, 0xce, 0x31, 0xd0, 0x9c, +0xc8, 0xae, 0x58, 0x0e, 0xa0, 0x33, 0xe6, 0x85, +0xfe, 0xda, 0x9b, 0x33, 0x10, 0x6c, 0xe3, 0xa2, +0xcb, 0x23, 0xe0, 0x31, 0xdc, 0xb5, 0xb4, 0x11, +0x91, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, +0x01, 0x22, 0x21, 0x9d, 0x2b, 0xed, 0xc8, 0x9c, +0xa4, 0xbe, 0xfc, 0x64, 0x2a, 0x76, 0x90, 0xa3, +0x64, 0xb6, 0xe6, 0xd4, 0x5e, 0x43, 0x5a, 0x3b, +0x44, 0xd2, 0x7b, 0xde, 0xd2, 0x7b, 0x6e, 0x13, +0x74, 0x34, 0x61, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x5d, 0x01, 0x22, 0x21, 0xd2, 0x5a, 0x33, +0xd7, 0xbf, 0xc4, 0x70, 0x05, 0x9e, 0x35, 0xcf, +0x92, 0x51, 0x74, 0xe1, 0xf6, 0x37, 0x6f, 0x9c, +0x37, 0x17, 0x82, 0xd0, 0xd9, 0x0d, 0x06, 0x69, +0x45, 0xbc, 0xdd, 0x01, 0x54, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0x32, +0x20, 0xbd, 0x19, 0x53, 0x1f, 0xad, 0x06, 0x97, +0xf9, 0x1a, 0x1e, 0x97, 0xf8, 0xf1, 0x4b, 0x08, +0x0e, 0x20, 0x7b, 0x07, 0x23, 0xe2, 0x95, 0x7d, +0xab, 0x1d, 0x7e, 0x2f, 0x54, 0xca, 0x52, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, +0x21, 0xb9, 0x4a, 0x7f, 0x7b, 0x56, 0x3c, 0x6e, +0x46, 0x19, 0xc6, 0xea, 0x34, 0x32, 0x5d, 0x6f, +0xe8, 0x2a, 0x0f, 0x77, 0x89, 0x7a, 0xe9, 0xc6, +0x4f, 0xc0, 0x50, 0xf6, 0xf0, 0xb3, 0xd3, 0x2f, +0x56, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, +0x01, 0x22, 0x21, 0x48, 0x26, 0x05, 0xba, 0x80, +0xba, 0x1e, 0x20, 0xea, 0x45, 0xe5, 0xf8, 0xc5, +0xee, 0x7a, 0x79, 0x57, 0x1d, 0x46, 0xa2, 0x31, +0xcf, 0x97, 0x80, 0xd6, 0x75, 0xc2, 0xb7, 0x43, +0xbe, 0xad, 0x1f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x61, 0x01, 0x22, 0x21, 0x37, 0x52, 0xd6, +0x9f, 0x0c, 0xa4, 0x41, 0x1a, 0xff, 0xf7, 0xba, +0xab, 0xc5, 0x96, 0xe7, 0x61, 0x43, 0x33, 0x85, +0x1b, 0x48, 0xe8, 0xd7, 0xed, 0x12, 0x82, 0xbb, +0x7d, 0x9a, 0x5a, 0x62, 0x56, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x51, +0xf2, 0xbe, 0x35, 0xff, 0xf6, 0x18, 0x72, 0x3f, +0x85, 0x83, 0x3a, 0xf6, 0x49, 0xa0, 0xe9, 0xe7, +0x6a, 0x62, 0x5f, 0xed, 0x0b, 0x70, 0x99, 0x7e, +0xe5, 0xd2, 0xce, 0x1d, 0xe1, 0x99, 0x17, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, +0x21, 0xda, 0xc7, 0x1f, 0x8c, 0x35, 0x7c, 0xb2, +0xcc, 0xea, 0x6e, 0x16, 0x67, 0xe5, 0xe8, 0xaa, +0x3e, 0xfe, 0x4c, 0x77, 0x70, 0xa2, 0x2e, 0x03, +0x38, 0xd8, 0xec, 0xa9, 0xae, 0x4a, 0xff, 0x71, +0x4b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, +0x01, 0x22, 0x21, 0xf7, 0x0a, 0x6b, 0x9f, 0x5e, +0xed, 0x41, 0x95, 0x44, 0x38, 0xbb, 0x91, 0xba, +0x19, 0x66, 0x03, 0x00, 0x6a, 0x5c, 0x98, 0x37, +0x12, 0x14, 0xaf, 0x8d, 0xac, 0x87, 0x52, 0x9a, +0x71, 0xc4, 0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x65, 0x01, 0x22, 0x21, 0x5a, 0x1e, 0x7e, +0xfd, 0x4f, 0xe9, 0xd3, 0x21, 0xa6, 0xa9, 0x59, +0x23, 0x6e, 0x86, 0xed, 0x12, 0x06, 0xa3, 0x20, +0x1b, 0x32, 0x1d, 0x6d, 0x18, 0x5a, 0x63, 0xcf, +0x3b, 0x2c, 0xf2, 0xa3, 0x15, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0x79, +0x6f, 0x16, 0x4f, 0x53, 0x74, 0x67, 0x4f, 0xf0, +0x1c, 0x34, 0x8f, 0x4e, 0x0f, 0xd8, 0xb5, 0xe3, +0xbe, 0x1b, 0x80, 0xeb, 0xbe, 0x94, 0x96, 0x0e, +0xe7, 0xee, 0x62, 0x1a, 0x6a, 0x83, 0xca, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, +0x21, 0xdc, 0x3f, 0xe7, 0xfd, 0x77, 0xa3, 0xed, +0x86, 0x29, 0xc1, 0xe2, 0x2f, 0x3f, 0x69, 0x5e, +0xef, 0xd1, 0x67, 0x06, 0x96, 0xcb, 0x25, 0xfb, +0xfc, 0x67, 0x5c, 0xae, 0x85, 0xb4, 0x02, 0xf4, +0x67, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, +0x01, 0x22, 0x21, 0x42, 0x64, 0x4d, 0xc4, 0x72, +0xaf, 0x6e, 0xb2, 0x27, 0x08, 0x74, 0x6d, 0x05, +0xdf, 0xd7, 0xfa, 0xcf, 0xe2, 0xf2, 0x51, 0x5e, +0xbe, 0xf7, 0x5b, 0xb1, 0x49, 0x79, 0x51, 0x65, +0xea, 0xa2, 0xbd, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x69, 0x01, 0x22, 0x21, 0x9e, 0x19, 0xad, +0xef, 0xeb, 0x39, 0x83, 0x14, 0x82, 0xfd, 0xc3, +0x1d, 0xc5, 0x78, 0xcf, 0xa8, 0x11, 0x4f, 0x15, +0xfa, 0xa9, 0xd5, 0x09, 0x97, 0x2b, 0xf8, 0xc5, +0x74, 0x8a, 0x99, 0xad, 0xee, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x9d, +0x48, 0x9b, 0x50, 0x3a, 0x47, 0x4d, 0x5e, 0xde, +0xe9, 0xfa, 0xcd, 0xbc, 0x80, 0x22, 0x58, 0xcb, +0x4e, 0x72, 0xfc, 0x56, 0x8f, 0x7c, 0x23, 0x20, +0x7a, 0xb5, 0xb5, 0x34, 0xac, 0x19, 0xb2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, +0x21, 0x94, 0xee, 0xfa, 0x9e, 0x61, 0x7f, 0xc2, +0xb8, 0x0e, 0xa9, 0xa8, 0x5e, 0x38, 0x5f, 0x1b, +0x23, 0xa7, 0x21, 0xe3, 0x27, 0xe9, 0x1f, 0x71, +0x5d, 0x29, 0x2d, 0xeb, 0x85, 0x82, 0x9c, 0x93, +0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, +0x01, 0x22, 0x21, 0xd4, 0xbe, 0x53, 0xbe, 0x7c, +0x1d, 0xe2, 0xc2, 0x61, 0x52, 0xcf, 0x1a, 0xfc, +0x6a, 0x3f, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x6e, 0x64, 0x06, 0x9c, +0xb7, 0x1a, 0x49, 0xc9, 0x03, 0x04, 0x51, 0x02, +0x00, 0x6d, 0x01, 0x22, 0x21, 0xa4, 0x5b, 0xa0, +0x93, 0x07, 0xae, 0xa7, 0x9f, 0x5d, 0x18, 0xd5, +0x96, 0x00, 0x45, 0x18, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x76, +0xf1, 0x70, 0xd7, 0x4b, 0xe4, 0x4b, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0x1f, +0x9a, 0xad, 0xcf, 0xf8, 0xa2, 0x37, 0x95, 0x59, +0x89, 0x82, 0xa1, 0xdd, 0xb9, 0x07, 0xfb, 0x40, +0x93, 0x33, 0x2e, 0x91, 0x97, 0x18, 0xaf, 0x59, +0x0b, 0x66, 0x3d, 0xbb, 0xad, 0xda, 0x08, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, +0x21, 0x35, 0xa8, 0xcc, 0xf5, 0x66, 0x84, 0x7c, +0x59, 0x09, 0x87, 0xe7, 0x7a, 0x98, 0xa4, 0x60, +0x94, 0x7c, 0x16, 0x95, 0x54, 0xef, 0x0c, 0x22, +0xeb, 0xed, 0xc4, 0x35, 0x56, 0xf3, 0xdb, 0x02, +0x29, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, +0x01, 0x22, 0x21, 0x94, 0xcc, 0x08, 0x8e, 0x2c, +0x1a, 0xdb, 0xb0, 0xaf, 0x2e, 0x66, 0x8a, 0x1d, +0x35, 0xbc, 0x1b, 0x27, 0xaf, 0x57, 0x36, 0x55, +0xb6, 0x58, 0x3e, 0xf8, 0xb5, 0x05, 0x1b, 0x1a, +0xba, 0xe2, 0xf2, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x71, 0x01, 0x22, 0x21, 0x39, 0x51, 0x4c, +0x71, 0x0b, 0xb7, 0x94, 0x34, 0xb3, 0x1b, 0x08, +0x5a, 0x25, 0xa7, 0x87, 0x63, 0xa0, 0x7c, 0xaa, +0x2f, 0x4d, 0x49, 0x2c, 0x8d, 0xda, 0xa5, 0x5a, +0x48, 0xe1, 0x9c, 0x83, 0xbf, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0x8f, +0x6e, 0x07, 0x5c, 0xcf, 0x15, 0x22, 0x5e, 0x06, +0xb7, 0x7f, 0x88, 0x4c, 0x36, 0x28, 0xe0, 0x4f, +0x7f, 0x75, 0x10, 0xa5, 0x36, 0x26, 0x7c, 0x19, +0x0a, 0xae, 0x60, 0x96, 0x53, 0x36, 0xe2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, +0x21, 0x32, 0x51, 0x1a, 0x2f, 0xcd, 0x7c, 0x6e, +0x93, 0xa7, 0x52, 0x82, 0x11, 0x72, 0x7f, 0x5c, +0xc8, 0x66, 0x4d, 0x3b, 0xbc, 0x81, 0x4c, 0x8c, +0xf9, 0x86, 0x2e, 0x8e, 0x1c, 0x9b, 0x6d, 0x23, +0xb7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, +0x01, 0x22, 0x21, 0xb2, 0x8f, 0x3e, 0xc1, 0xf8, +0x95, 0x51, 0xa7, 0xe1, 0x05, 0x63, 0x96, 0xf8, +0x8b, 0x45, 0x92, 0x21, 0xea, 0x7c, 0x55, 0xd5, +0xa6, 0xfe, 0x97, 0xb3, 0xba, 0xef, 0xda, 0x12, +0x7d, 0x9a, 0xef, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x75, 0x01, 0x22, 0x21, 0x93, 0x87, 0x11, +0x03, 0xe0, 0xcc, 0x80, 0xcb, 0xfd, 0xdc, 0xf5, +0x9d, 0xed, 0xc0, 0xd9, 0xc0, 0x96, 0xe6, 0xce, +0x7e, 0x3f, 0xfb, 0x24, 0xc2, 0x48, 0x17, 0x48, +0xfc, 0x45, 0x33, 0x6a, 0x44, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0xce, +0xf3, 0x55, 0x99, 0xec, 0xdd, 0xbe, 0x4c, 0xe5, +0x17, 0x15, 0x39, 0x9a, 0x8e, 0x93, 0xd4, 0xb3, +0x55, 0x7c, 0x2e, 0x1a, 0x6b, 0x39, 0x6c, 0x5a, +0xdd, 0x4f, 0x22, 0x12, 0xbb, 0x25, 0xcc, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, +0x21, 0xf4, 0x12, 0x19, 0x04, 0x01, 0x6d, 0xd2, +0xe3, 0xe0, 0x03, 0x7b, 0x52, 0x9b, 0x3e, 0x16, +0xad, 0xe9, 0xbe, 0x51, 0xd1, 0x71, 0x47, 0x60, +0x02, 0x86, 0x0d, 0xa5, 0x5f, 0xf6, 0x3c, 0x20, +0x73, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, +0x01, 0x22, 0x21, 0xb5, 0x3c, 0x18, 0x18, 0x01, +0x96, 0x08, 0x54, 0x90, 0x1e, 0x8b, 0xc1, 0xd1, +0x1c, 0x74, 0x4c, 0xe4, 0x2d, 0xe0, 0x7e, 0xe5, +0x1c, 0xf5, 0x77, 0x19, 0x2e, 0xd0, 0x7b, 0xa2, +0x76, 0x80, 0xc4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x79, 0x01, 0x22, 0x21, 0xb1, 0xb6, 0xcd, +0xd6, 0x50, 0xae, 0x10, 0xdf, 0x8d, 0x01, 0xfd, +0x41, 0xb4, 0x94, 0x26, 0x1f, 0x5c, 0x29, 0xa8, +0x35, 0xc2, 0xba, 0x3a, 0xa9, 0xbd, 0x8c, 0x73, +0x24, 0x87, 0xed, 0x6b, 0x0f, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0xa0, +0xb3, 0x0c, 0x21, 0x0e, 0x9c, 0x28, 0x45, 0x71, +0x39, 0xfe, 0xe2, 0x30, 0x22, 0x3e, 0xcb, 0xd9, +0x41, 0xb0, 0x42, 0x19, 0x05, 0xb1, 0xd3, 0x3c, +0x67, 0xdd, 0x52, 0xd4, 0x84, 0x5e, 0x45, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, +0x21, 0x82, 0xa0, 0xd2, 0x79, 0xfb, 0x95, 0x63, +0xdd, 0x7d, 0x03, 0xaf, 0x89, 0x4f, 0xaf, 0x66, +0x9d, 0xe3, 0x86, 0xf9, 0x23, 0xc7, 0xe7, 0x6f, +0x33, 0xbc, 0x94, 0x50, 0xa3, 0x52, 0x97, 0x6d, +0x84, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, +0x01, 0x22, 0x21, 0xdb, 0x43, 0xd5, 0x4b, 0x1b, +0x9d, 0xca, 0xab, 0xec, 0x02, 0x3e, 0x50, 0x5c, +0x76, 0x45, 0x09, 0xb2, 0x6f, 0xef, 0x39, 0xdc, +0x03, 0x9c, 0x8b, 0x32, 0x46, 0x0c, 0x2b, 0x8a, +0x07, 0xdd, 0x30, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x7d, 0x01, 0x22, 0x21, 0xe9, 0x4d, 0x23, +0x34, 0xdf, 0x75, 0xaa, 0x3f, 0xe8, 0x04, 0xff, +0x7b, 0x16, 0x5c, 0xe0, 0x44, 0x3a, 0xac, 0x70, +0xa1, 0xcf, 0x1c, 0xb0, 0xde, 0x7f, 0x42, 0x5f, +0x92, 0x92, 0x65, 0x45, 0xde, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0xe3, +0xb5, 0x4d, 0x9c, 0x26, 0xbf, 0x48, 0xf7, 0x95, +0xa0, 0x4f, 0x6d, 0x03, 0x69, 0xef, 0x02, 0x92, +0x57, 0x9d, 0x77, 0x0d, 0xf7, 0xb8, 0x15, 0xc5, +0x9c, 0x84, 0xbc, 0x1c, 0xa3, 0xe7, 0x3c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, +0x21, 0xd1, 0xdb, 0x41, 0xb8, 0xff, 0x6f, 0xcf, +0xab, 0xed, 0x0a, 0xf8, 0x2c, 0x21, 0xd6, 0x1a, +0x33, 0x73, 0x7d, 0xc8, 0x40, 0x17, 0x82, 0x7c, +0xd7, 0xe3, 0xb4, 0x3b, 0xe0, 0x5b, 0x88, 0x90, +0xdb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, +0x01, 0x22, 0x21, 0x83, 0xa2, 0x78, 0xe2, 0x4a, +0x25, 0x35, 0xa1, 0xfc, 0x01, 0x3b, 0x10, 0xda, +0x66, 0xd5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x14, 0xf8, 0x42, 0xf2, +0x95, 0x84, 0xbb, 0x01, 0x03, 0x04, 0x51, 0x02, +0x00, 0x81, 0x01, 0x22, 0x21, 0x8b, 0xd0, 0x51, +0x13, 0x50, 0x17, 0x03, 0x85, 0x45, 0xb4, 0x7a, +0xab, 0x15, 0x3e, 0x10, 0xc6, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x08, +0xf3, 0x27, 0xba, 0xaa, 0x2c, 0xf8, 0x03, 0x04, +0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0x0f, +0xfd, 0x20, 0xc7, 0x20, 0x3b, 0x65, 0x55, 0x32, +0x10, 0xef, 0xbc, 0xce, 0x84, 0x15, 0x07, 0x33, +0x91, 0x55, 0xae, 0xad, 0xe8, 0x9a, 0x38, 0x54, +0x3b, 0x25, 0x3c, 0xd9, 0xe2, 0x1e, 0xd8, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, +0x21, 0xb9, 0x68, 0x67, 0x06, 0x5d, 0x1d, 0x9d, +0x4f, 0xbb, 0x5d, 0xc1, 0x9d, 0xad, 0x56, 0xaa, +0x03, 0x84, 0x43, 0x8a, 0x26, 0xe3, 0x60, 0xdf, +0x41, 0x27, 0x7b, 0x80, 0x26, 0xfb, 0xa8, 0x77, +0x10, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, +0x01, 0x22, 0x21, 0xf2, 0x9d, 0x6b, 0x17, 0xad, +0x88, 0xb3, 0x70, 0xe1, 0xd8, 0x36, 0x2c, 0x58, +0x8f, 0x25, 0x0a, 0x6c, 0x8a, 0x54, 0xd5, 0x56, +0x5d, 0x1a, 0x23, 0x39, 0xaf, 0x03, 0xe8, 0x70, +0xec, 0x0c, 0xba, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x85, 0x01, 0x22, 0x21, 0xe5, 0x87, 0x95, +0xa0, 0x53, 0x83, 0x0c, 0xd5, 0x89, 0x21, 0x55, +0xc2, 0x54, 0x8e, 0x82, 0x32, 0xd8, 0xa6, 0x95, +0x17, 0x99, 0x55, 0x98, 0x3b, 0x8f, 0x57, 0x72, +0xc4, 0x05, 0x23, 0x67, 0x46, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0x5a, +0x3c, 0xc3, 0xb5, 0xfd, 0x69, 0x1d, 0x84, 0xe5, +0x35, 0x4e, 0x84, 0x29, 0x93, 0x5e, 0x92, 0x64, +0x14, 0x19, 0x91, 0x34, 0x48, 0xb6, 0x93, 0xb6, +0x48, 0xd4, 0xf2, 0xea, 0xef, 0xc3, 0x90, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, +0x21, 0x5d, 0x14, 0x1d, 0x23, 0x91, 0x05, 0x40, +0x5a, 0x42, 0x42, 0xba, 0x04, 0x2b, 0x29, 0x89, +0xe8, 0x0d, 0xc1, 0x39, 0x52, 0x8b, 0xf2, 0x48, +0x1f, 0xb6, 0xf9, 0x64, 0x40, 0xb3, 0xa5, 0x8b, +0xa0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, +0x01, 0x22, 0x21, 0xe7, 0xa7, 0x0d, 0x88, 0x43, +0x94, 0xb6, 0x9b, 0xc1, 0x78, 0xbd, 0xc9, 0x8d, +0xd4, 0x6f, 0xba, 0x5d, 0x92, 0x72, 0xc7, 0xda, +0xd6, 0xda, 0xe8, 0x67, 0xf3, 0x23, 0xa8, 0x2e, +0x91, 0x87, 0x9d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x89, 0x01, 0x22, 0x21, 0xfb, 0x2e, 0x20, +0x4b, 0xb5, 0xc3, 0x80, 0x9f, 0xe9, 0x33, 0xc1, +0x32, 0x36, 0x51, 0x61, 0x65, 0x4e, 0xed, 0x30, +0x0c, 0xd1, 0x09, 0x70, 0xcf, 0x28, 0x21, 0x8a, +0xc1, 0x75, 0x2f, 0x51, 0x16, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0xd1, +0x05, 0x4a, 0x03, 0x11, 0x47, 0xc0, 0x01, 0x79, +0xb7, 0x7f, 0x26, 0xa8, 0x75, 0x1e, 0xef, 0x8f, +0xdd, 0x60, 0xa7, 0xbc, 0xf5, 0xa4, 0xa6, 0xdb, +0x6e, 0x5c, 0x21, 0x01, 0x08, 0x92, 0xf5, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, +0x21, 0x29, 0x89, 0xf0, 0x0c, 0x3c, 0x3d, 0x29, +0x39, 0x9e, 0xe0, 0x91, 0xca, 0x4a, 0xe7, 0x6c, +0x2b, 0x09, 0x2e, 0x83, 0x28, 0x61, 0x79, 0x11, +0x5d, 0x69, 0xd6, 0x2d, 0xb3, 0x83, 0x75, 0xc0, +0x2a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, +0x01, 0x22, 0x21, 0xbb, 0xa4, 0x5c, 0x43, 0x9b, +0x3b, 0x41, 0x28, 0xc4, 0x80, 0xf6, 0xc5, 0x04, +0x76, 0x56, 0x6d, 0x45, 0xc2, 0x11, 0x32, 0x20, +0x89, 0xeb, 0x4f, 0xea, 0xbc, 0xdd, 0x57, 0xff, +0x75, 0xfb, 0xa1, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x8d, 0x01, 0x22, 0x21, 0x6a, 0x74, 0x9e, +0x69, 0x43, 0x22, 0x4d, 0x9b, 0x42, 0xfd, 0xbf, +0x40, 0xea, 0x04, 0x1e, 0x78, 0x51, 0x3a, 0x67, +0x1f, 0xa1, 0xbf, 0xdf, 0xd9, 0xaa, 0x29, 0x0c, +0xc1, 0x09, 0x24, 0xe9, 0xfe, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x64, +0x1a, 0xa6, 0x95, 0x83, 0xa3, 0xff, 0xef, 0x76, +0xf6, 0xf9, 0x6f, 0xc4, 0x3e, 0x42, 0x68, 0x47, +0xfa, 0x27, 0xbf, 0x8d, 0xe1, 0xc9, 0x0d, 0x75, +0x38, 0xee, 0x83, 0x5c, 0x45, 0xdb, 0xae, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, +0x21, 0xd0, 0x69, 0xb3, 0x4c, 0xe0, 0x25, 0x40, +0xe2, 0x59, 0x69, 0x7f, 0x32, 0xf4, 0x92, 0x07, +0xc9, 0x69, 0x1c, 0x3f, 0x34, 0x6d, 0xe9, 0xda, +0xb7, 0xd4, 0xbf, 0x3d, 0xb3, 0xa7, 0xce, 0x9f, +0xab, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, +0x01, 0x22, 0x21, 0x17, 0x81, 0x5f, 0xb8, 0xce, +0xbe, 0x5a, 0x72, 0xdf, 0x6d, 0x47, 0x00, 0xc4, +0xb1, 0x93, 0x9e, 0x85, 0x8e, 0x71, 0x2a, 0x05, +0xd7, 0x1e, 0x2c, 0x4e, 0xc3, 0x05, 0x26, 0xa7, +0x40, 0xd0, 0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x91, 0x01, 0x22, 0x21, 0xb8, 0x16, 0xd7, +0x33, 0x23, 0x0f, 0xf7, 0x62, 0xc0, 0xac, 0x3b, +0x67, 0x57, 0x06, 0x12, 0x8e, 0xca, 0xbf, 0xcc, +0xfb, 0x4f, 0x3c, 0xad, 0x88, 0xeb, 0x77, 0x93, +0xc4, 0x27, 0xd5, 0x0b, 0x3b, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x60, +0xb6, 0x26, 0xb2, 0x5f, 0x1c, 0x9b, 0x00, 0x33, +0xb2, 0xeb, 0x7b, 0x0f, 0x0d, 0x0d, 0xcd, 0xe1, +0x2d, 0x9c, 0x23, 0xbe, 0x07, 0xc2, 0x19, 0x6b, +0x7f, 0xc1, 0x99, 0xf6, 0xeb, 0x17, 0x3a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, +0x21, 0x72, 0x0b, 0x57, 0x3c, 0x27, 0x7e, 0xbc, +0x34, 0xf1, 0xe1, 0xaa, 0x67, 0x3e, 0x8c, 0xcb, +0xf4, 0x0e, 0x6b, 0x6f, 0x05, 0x31, 0x6c, 0x5c, +0x50, 0x4d, 0x98, 0x12, 0xf5, 0x23, 0xc1, 0x07, +0x5f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, +0x01, 0x22, 0x21, 0xa2, 0x61, 0xda, 0x6c, 0x1a, +0x90, 0x22, 0x2c, 0xb7, 0x6b, 0x4a, 0x9e, 0x2c, +0xf0, 0xa4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x87, 0x5a, 0x05, 0x3d, +0x86, 0x69, 0xbc, 0x0a, 0x03, 0x04, 0x51, 0x02, +0x00, 0x95, 0x01, 0x22, 0x21, 0x2c, 0xd1, 0xb9, +0x78, 0x1a, 0x6b, 0x63, 0xcc, 0x5e, 0x4c, 0x8d, +0x52, 0x3e, 0x91, 0xb8, 0xd7, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, +0x6e, 0x71, 0x37, 0x98, 0x8b, 0x20, 0x03, 0x04, +0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0xf8, +0x18, 0x3c, 0x47, 0x30, 0xe2, 0x5b, 0x10, 0x58, +0x3e, 0xf8, 0x39, 0x38, 0x4a, 0x27, 0x0d, 0xf7, +0x7a, 0x4f, 0x67, 0x44, 0xcf, 0x8c, 0x0e, 0x8e, +0xca, 0xd4, 0x8c, 0x34, 0x2f, 0x36, 0xea, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, +0x21, 0xa1, 0xe2, 0x15, 0x31, 0x71, 0xb0, 0xa0, +0x90, 0x05, 0x28, 0x86, 0x8d, 0x97, 0xbb, 0x4d, +0x6d, 0xa4, 0xb2, 0xae, 0xa2, 0x76, 0x7f, 0x2a, +0x1c, 0x91, 0x93, 0x65, 0xa5, 0x65, 0xdc, 0xe0, +0xd3, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, +0x01, 0x22, 0x21, 0x59, 0x65, 0x1b, 0x68, 0x15, +0x74, 0xdc, 0xbf, 0xdf, 0x12, 0xbb, 0x13, 0x3b, +0xb4, 0x43, 0xa2, 0x5b, 0x51, 0xf7, 0x1d, 0xa8, +0x95, 0x81, 0x66, 0x48, 0x5f, 0x07, 0x77, 0xf4, +0x87, 0x48, 0xb6, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x99, 0x01, 0x22, 0x21, 0x5d, 0xae, 0xad, +0x9f, 0x39, 0x9c, 0x50, 0xf8, 0x1b, 0xb1, 0xb1, +0x66, 0x74, 0xd3, 0x59, 0xe7, 0xbd, 0x6c, 0xa1, +0x4c, 0x80, 0x16, 0xdf, 0x4b, 0x75, 0xaf, 0x04, +0x02, 0xb2, 0xb0, 0x74, 0xf4, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0x1c, +0x27, 0xba, 0x34, 0x96, 0xa9, 0x23, 0x61, 0xfb, +0xda, 0x39, 0xa2, 0x1d, 0xf9, 0x43, 0x9f, 0x70, +0x91, 0x63, 0x14, 0x40, 0x97, 0x0c, 0xfe, 0x8d, +0x50, 0x39, 0xac, 0x7d, 0x63, 0xce, 0xd7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, +0x21, 0xe7, 0x52, 0x03, 0x33, 0x83, 0xa4, 0x4b, +0xcb, 0x94, 0x15, 0x25, 0xda, 0x32, 0x86, 0x14, +0x3c, 0x27, 0x0b, 0x38, 0xe5, 0x66, 0xc4, 0x51, +0x9c, 0xaa, 0xd9, 0xc6, 0x01, 0xf3, 0x88, 0xd6, +0x89, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, +0x01, 0x22, 0x21, 0x22, 0x51, 0xda, 0x5e, 0xd6, +0xac, 0x36, 0x03, 0xc3, 0xe4, 0x0d, 0x00, 0x12, +0x23, 0xc6, 0xd3, 0x0f, 0x3e, 0x17, 0x88, 0x4b, +0xe7, 0xb7, 0xf8, 0x8e, 0xe1, 0x5d, 0x09, 0x3d, +0x72, 0x6c, 0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x9d, 0x01, 0x22, 0x21, 0xc3, 0x32, 0xff, +0x36, 0x78, 0x65, 0xd1, 0xa4, 0x9f, 0xf8, 0x5f, +0x0c, 0xd4, 0x53, 0x98, 0x31, 0xa2, 0xb0, 0x14, +0xe3, 0xfa, 0x48, 0x11, 0xbf, 0xa0, 0x28, 0x50, +0x7e, 0xf8, 0xbb, 0x32, 0xa8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0x0b, +0xa1, 0x58, 0x11, 0xa4, 0x76, 0xb4, 0x1a, 0xec, +0x75, 0xed, 0x39, 0xc9, 0xed, 0x45, 0xb0, 0x42, +0xb1, 0xbc, 0x12, 0x52, 0x43, 0x32, 0xf2, 0xeb, +0x83, 0x0c, 0x3d, 0x8d, 0x37, 0xee, 0x5b, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, +0x21, 0x3e, 0xd8, 0xa8, 0x55, 0xdf, 0x08, 0x29, +0xcd, 0x21, 0x90, 0xda, 0x97, 0x96, 0x85, 0xec, +0x96, 0x2b, 0x95, 0x1e, 0x53, 0x03, 0xf8, 0xe9, +0x56, 0xbe, 0x84, 0xef, 0xe2, 0x79, 0x07, 0x3f, +0xa1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, +0x01, 0x22, 0x21, 0x9d, 0xee, 0x70, 0x7c, 0x84, +0x94, 0x4d, 0x49, 0x0a, 0x7e, 0xca, 0x0c, 0x77, +0x59, 0x7d, 0x64, 0xe9, 0x5f, 0x98, 0x1d, 0xb1, +0x3c, 0x6f, 0x59, 0x01, 0x8e, 0xcb, 0xf1, 0x15, +0x9d, 0xf3, 0x32, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa1, 0x01, 0x22, 0x21, 0x53, 0x45, 0x8f, +0xbe, 0x25, 0x0f, 0xc6, 0x23, 0xcb, 0x12, 0xb4, +0x90, 0x23, 0x27, 0xcb, 0x3c, 0x65, 0x12, 0x6e, +0xf8, 0x48, 0x74, 0x04, 0xb2, 0x72, 0x9d, 0x8f, +0x3c, 0x9c, 0xc7, 0x0d, 0xc0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0x42, +0x13, 0xe6, 0xe3, 0x54, 0x82, 0xd5, 0x39, 0x04, +0x4e, 0xd9, 0xd8, 0xf1, 0x9a, 0xe8, 0x8e, 0xce, +0xb3, 0x04, 0x52, 0x1b, 0xb4, 0xf6, 0xae, 0xfb, +0x8b, 0x2f, 0xb4, 0x39, 0xcc, 0xbc, 0x59, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, +0x21, 0xb0, 0xac, 0x3d, 0x44, 0xcf, 0x56, 0x1a, +0xca, 0x74, 0x4a, 0x47, 0xf2, 0x86, 0x55, 0x96, +0x1a, 0x41, 0xb9, 0xd3, 0x71, 0xe4, 0x26, 0x27, +0x55, 0x4c, 0x46, 0xd2, 0xc2, 0x83, 0x58, 0xa3, +0x36, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, +0x01, 0x22, 0x21, 0xc8, 0x34, 0x6c, 0x60, 0xd0, +0x90, 0x01, 0xdf, 0xc3, 0x36, 0x92, 0x8d, 0xc9, +0x07, 0x8e, 0x5b, 0x34, 0x04, 0x10, 0x0c, 0x07, +0xbd, 0x2d, 0xec, 0xa2, 0xac, 0xe3, 0xb6, 0xee, +0x10, 0x94, 0xe4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa5, 0x01, 0x22, 0x21, 0x67, 0x88, 0x42, +0xc9, 0xf7, 0x09, 0xab, 0x22, 0x89, 0x1a, 0x70, +0x3d, 0x25, 0x21, 0x40, 0xad, 0xed, 0x5f, 0x29, +0x0d, 0x1e, 0x65, 0x6b, 0xa7, 0x11, 0x6b, 0xc3, +0x0a, 0xd4, 0xc5, 0x20, 0x6a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0x85, +0x31, 0x1b, 0x24, 0x2d, 0x90, 0xd1, 0x65, 0xe3, +0x1b, 0xb7, 0x60, 0x0d, 0x47, 0xa3, 0x2c, 0x61, +0xea, 0x45, 0x5d, 0xd0, 0x8e, 0x8b, 0x30, 0xf9, +0xb7, 0x9f, 0xfd, 0x3d, 0x30, 0x6f, 0x0b, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, +0x21, 0xed, 0xac, 0x1e, 0x00, 0xdd, 0xe2, 0x5a, +0xd9, 0xd8, 0x8c, 0x01, 0x03, 0x61, 0xde, 0x60, +0x2e, 0x55, 0x47, 0x46, 0xac, 0xaf, 0xe9, 0xb0, +0xce, 0xa2, 0xd4, 0x75, 0xa9, 0xba, 0xcc, 0x9a, +0xb0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, +0x01, 0x22, 0x21, 0x3d, 0x9b, 0x9d, 0x4c, 0x99, +0x23, 0x5f, 0x73, 0xb2, 0x01, 0xe8, 0xd9, 0x76, +0xd6, 0x89, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x8e, 0xeb, 0x9f, 0x1b, +0xfb, 0x94, 0x24, 0x02, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa9, 0x01, 0x22, 0x21, 0x04, 0xfb, 0x64, +0xaf, 0x86, 0x88, 0x5b, 0x8b, 0xc4, 0x83, 0xb6, +0xbe, 0x84, 0xd6, 0xf6, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x42, +0xcd, 0x4c, 0x74, 0xc8, 0x5c, 0x8e, 0x03, 0x04, +0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0xb8, +0x22, 0xd0, 0xdd, 0xe8, 0xe2, 0x30, 0x1a, 0xe4, +0x79, 0xd5, 0x6d, 0x00, 0xc5, 0x46, 0xe5, 0xfa, +0x46, 0xaf, 0x01, 0x91, 0x0c, 0x4c, 0xad, 0xf6, +0xdc, 0xd0, 0xa4, 0xcc, 0xa3, 0x6b, 0x10, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, +0x21, 0xfc, 0xad, 0xbb, 0x8c, 0xc7, 0xf4, 0xa2, +0xfc, 0x00, 0x64, 0x37, 0xfd, 0x2c, 0x72, 0xe9, +0xf9, 0x7e, 0xd2, 0x31, 0x65, 0xe2, 0x2b, 0xf6, +0x4b, 0x0f, 0x6a, 0xc9, 0x47, 0x1b, 0xd9, 0x42, +0x05, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, +0x01, 0x22, 0x21, 0xe7, 0x73, 0xbe, 0xa8, 0xd1, +0xc4, 0xd5, 0x20, 0xc4, 0x48, 0x14, 0xae, 0x57, +0x28, 0xae, 0xdd, 0x20, 0xd8, 0xea, 0xb3, 0x25, +0x7f, 0x89, 0x43, 0xd3, 0x22, 0x5e, 0x64, 0x3a, +0x6a, 0x0a, 0x23, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xad, 0x01, 0x22, 0x21, 0x34, 0x1e, 0x10, +0x7c, 0xec, 0x3e, 0x5a, 0xf0, 0xa2, 0x5c, 0x0d, +0xeb, 0xad, 0x80, 0x81, 0x1b, 0x5a, 0x56, 0x6f, +0xc5, 0x67, 0xb0, 0x06, 0x7b, 0xec, 0xaf, 0x51, +0xca, 0x8a, 0xa9, 0x70, 0xd5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0x47, +0xfa, 0xe6, 0x6a, 0x23, 0xfc, 0xf5, 0xa3, 0xc4, +0xe1, 0x31, 0x30, 0x72, 0x4b, 0x7b, 0xf8, 0xe2, +0x43, 0x52, 0x87, 0x9f, 0x32, 0x03, 0xc1, 0xb0, +0x67, 0xc9, 0xf5, 0x2f, 0xfd, 0x76, 0x2a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, +0x21, 0x57, 0xb0, 0x60, 0x7c, 0x73, 0x93, 0x67, +0xe4, 0xea, 0x95, 0xd9, 0xdf, 0x4e, 0x72, 0x17, +0xa9, 0x75, 0xa4, 0x18, 0x70, 0x13, 0x4d, 0xb6, +0x49, 0xee, 0xe4, 0x65, 0xd5, 0xe3, 0xe9, 0xa5, +0x2c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, +0x01, 0x22, 0x21, 0x7a, 0x6f, 0x33, 0xd9, 0x7c, +0x27, 0xc9, 0x0d, 0xab, 0x3e, 0x7a, 0x25, 0x23, +0x9a, 0xbe, 0x52, 0x53, 0xbe, 0xfa, 0x52, 0x1f, +0x57, 0xff, 0xc9, 0xbd, 0x70, 0x2c, 0xdb, 0xa2, +0x14, 0xfd, 0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb1, 0x01, 0x22, 0x21, 0x30, 0x79, 0x9d, +0x25, 0xf3, 0xfb, 0xa9, 0xdc, 0x73, 0xe6, 0xbc, +0x22, 0x93, 0x52, 0x4b, 0xc7, 0x31, 0x9d, 0x3f, +0x3e, 0xcb, 0x4e, 0x98, 0x2c, 0xc8, 0xb0, 0x00, +0x99, 0x26, 0x1c, 0x74, 0xf3, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0xd0, +0x4d, 0xaf, 0xbe, 0x69, 0x8c, 0x64, 0x21, 0xc5, +0x1f, 0x4a, 0x2e, 0xb7, 0x44, 0xb3, 0xde, 0xca, +0xf2, 0x33, 0xfc, 0x5c, 0x1e, 0xda, 0xae, 0x2e, +0x50, 0xa5, 0xce, 0x6c, 0x45, 0x12, 0xe7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, +0x21, 0x5c, 0xae, 0x61, 0x90, 0x68, 0x43, 0xcf, +0xfe, 0xbf, 0x7c, 0x93, 0xd3, 0x2b, 0xb2, 0xae, +0x37, 0xb3, 0xc2, 0x0a, 0xf0, 0x88, 0x4c, 0x4a, +0x0f, 0xe7, 0xd3, 0x77, 0x6d, 0x2d, 0xa1, 0x6d, +0xc6, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, +0x01, 0x22, 0x21, 0x75, 0xff, 0xa7, 0xcb, 0x6e, +0x18, 0x33, 0x60, 0xc8, 0x77, 0x49, 0x2c, 0xb5, +0x0b, 0x0e, 0xf4, 0x22, 0x84, 0xb8, 0xdf, 0xec, +0x3d, 0xe5, 0x0f, 0x2b, 0x5d, 0x94, 0x70, 0xdd, +0x57, 0x74, 0x15, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb5, 0x01, 0x22, 0x21, 0x6d, 0xab, 0x69, +0x65, 0xda, 0x6b, 0xaf, 0x12, 0x35, 0x41, 0xca, +0xa0, 0x67, 0xa2, 0x27, 0x99, 0xc2, 0x2b, 0xfb, +0xe7, 0x90, 0xaa, 0x8e, 0x68, 0xae, 0xee, 0x28, +0x70, 0x94, 0x3a, 0x71, 0xe0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0xb8, +0x74, 0x2f, 0x43, 0xc7, 0x0f, 0x25, 0xb8, 0xe9, +0xf9, 0x95, 0x14, 0x0e, 0xaf, 0xae, 0x53, 0x02, +0x3a, 0xcb, 0x09, 0x37, 0xf7, 0x05, 0xc8, 0x92, +0xae, 0x9b, 0x6e, 0x5f, 0x1b, 0x7b, 0x62, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, +0x21, 0xc3, 0x6e, 0x17, 0x19, 0x4e, 0x20, 0x09, +0xef, 0x62, 0xe0, 0x47, 0x22, 0x32, 0x18, 0x92, +0x31, 0xe2, 0xae, 0x1e, 0xbe, 0x9b, 0xe1, 0x9d, +0x48, 0xf4, 0xfc, 0x98, 0x3b, 0x9f, 0xf8, 0xfc, +0x8a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, +0x01, 0x22, 0x21, 0xd0, 0x05, 0x1a, 0x2e, 0xa0, +0x51, 0xe6, 0x2c, 0x85, 0xa2, 0x77, 0x24, 0xd7, +0x39, 0xfd, 0xf4, 0x4f, 0xa1, 0x53, 0x1e, 0x70, +0xdf, 0x47, 0xb6, 0x85, 0x21, 0xec, 0xa1, 0x10, +0xfa, 0xa2, 0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb9, 0x01, 0x22, 0x21, 0xed, 0x55, 0x4d, +0x12, 0x06, 0x30, 0xa4, 0x3d, 0xe5, 0xaa, 0xac, +0xf3, 0x1c, 0x25, 0xb9, 0x27, 0x52, 0x2f, 0xdf, +0x7b, 0x6e, 0x8f, 0xea, 0xed, 0xdf, 0xba, 0xe2, +0xda, 0x24, 0x8f, 0x5b, 0xf0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0x46, +0xc2, 0x4d, 0x4c, 0xf9, 0x28, 0x0f, 0x3b, 0xb9, +0xec, 0xfd, 0x99, 0xed, 0x9a, 0x42, 0x01, 0xff, +0xcd, 0xd1, 0x25, 0x44, 0x8d, 0xb5, 0x99, 0x10, +0x59, 0x54, 0x6f, 0x5e, 0x5c, 0xec, 0x15, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, +0x21, 0xdd, 0x37, 0xd5, 0x27, 0x94, 0xe6, 0x65, +0x7e, 0x16, 0x98, 0x67, 0xb5, 0xd1, 0xab, 0x1c, +0x0f, 0x60, 0x8a, 0x51, 0x09, 0xae, 0x31, 0x62, +0x1d, 0xdf, 0x6d, 0xa5, 0xe9, 0x71, 0x94, 0x44, +0x15, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, +0x01, 0x22, 0x21, 0xf1, 0x60, 0xfc, 0xb5, 0x71, +0xc9, 0x07, 0x76, 0xce, 0x2a, 0x50, 0x61, 0xa0, +0x5a, 0xb3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xa8, 0x67, 0x92, 0x13, +0x24, 0x45, 0x3f, 0x19, 0x03, 0x04, 0x51, 0x02, +0x00, 0xbd, 0x01, 0x22, 0x21, 0xed, 0xed, 0x8b, +0x88, 0x2d, 0x89, 0x6d, 0xc7, 0x81, 0x08, 0x73, +0x16, 0x0c, 0x4b, 0x4f, 0x59, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x89, +0x48, 0x90, 0xa9, 0x02, 0x9c, 0xec, 0x03, 0x04, +0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0xaa, +0xf0, 0x9e, 0xa6, 0x05, 0x7f, 0xdf, 0x13, 0x15, +0x85, 0x06, 0x9d, 0x75, 0x4d, 0x35, 0x51, 0x01, +0xbb, 0xd1, 0xf2, 0x35, 0xb3, 0x57, 0xff, 0xc3, +0x45, 0x78, 0xd4, 0x2d, 0x2c, 0x39, 0xd7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, +0x21, 0xb5, 0x09, 0xbc, 0x77, 0xfc, 0x7e, 0x2e, +0xfe, 0x98, 0x1c, 0x39, 0x6f, 0x48, 0x2a, 0x57, +0x2f, 0xac, 0x2f, 0xa0, 0xd4, 0xa5, 0x21, 0xc1, +0xe6, 0x99, 0xd6, 0xc0, 0x87, 0xd8, 0x2f, 0x0e, +0x08, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, +0x01, 0x22, 0x21, 0x14, 0xc7, 0xdf, 0x63, 0x5c, +0x0b, 0x3e, 0x3c, 0x17, 0xe6, 0x93, 0xfe, 0xd8, +0xc3, 0x68, 0x7a, 0x3b, 0xb4, 0x42, 0xee, 0xb6, +0x3a, 0x5f, 0x7f, 0x6d, 0x1e, 0x72, 0x58, 0xd2, +0x45, 0xd2, 0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc1, 0x01, 0x22, 0x21, 0x85, 0xf8, 0x19, +0x57, 0x8e, 0x3a, 0x89, 0x90, 0xd6, 0xaa, 0x72, +0x8b, 0x5b, 0x92, 0x00, 0xdd, 0xa8, 0xbe, 0xff, +0xec, 0xac, 0x14, 0x91, 0xc9, 0xec, 0xc7, 0xcc, +0xca, 0x44, 0x2b, 0x1f, 0x80, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0x8b, +0x09, 0x17, 0x23, 0x2c, 0x42, 0x5d, 0x9d, 0x30, +0xe4, 0x97, 0x23, 0x82, 0x13, 0x64, 0x6b, 0x1a, +0x8d, 0x48, 0xbe, 0x6d, 0x35, 0x72, 0x36, 0xa7, +0xc2, 0x49, 0xc0, 0xc4, 0x3f, 0x87, 0x31, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, +0x21, 0xbd, 0xf3, 0xca, 0xaf, 0x4f, 0x40, 0x5d, +0xcf, 0x7d, 0x3c, 0x62, 0x96, 0x1c, 0x25, 0xfb, +0x20, 0xae, 0x72, 0x11, 0x6a, 0xf2, 0xd1, 0x27, +0x74, 0xba, 0x3f, 0x55, 0x0b, 0x5f, 0x10, 0xfe, +0x9a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, +0x01, 0x22, 0x21, 0xb7, 0x57, 0x10, 0xfe, 0x22, +0x70, 0x54, 0x19, 0xe0, 0x0e, 0x8d, 0x13, 0x40, +0xd6, 0xaf, 0x6e, 0x5a, 0x6b, 0x26, 0x04, 0xe0, +0x22, 0x7e, 0x04, 0x8a, 0x15, 0x2e, 0x17, 0x0a, +0x08, 0x0f, 0x90, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc5, 0x01, 0x22, 0x21, 0x46, 0xf1, 0xa8, +0xbb, 0x82, 0x18, 0x40, 0x69, 0x06, 0xd5, 0x8c, +0x75, 0xde, 0x54, 0xef, 0x52, 0x4b, 0x6b, 0x53, +0x9a, 0x9c, 0x92, 0x09, 0x3b, 0xe2, 0x4c, 0xba, +0xb1, 0x00, 0x89, 0xab, 0x38, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0x0b, +0xcc, 0x76, 0x78, 0x43, 0x5b, 0x78, 0x0b, 0xa4, +0xac, 0x1b, 0x3d, 0x9d, 0xff, 0x2b, 0xeb, 0x1e, +0xb6, 0x1c, 0x9f, 0xfc, 0xb0, 0xae, 0xe5, 0xd2, +0x48, 0xaf, 0x6d, 0xb1, 0x83, 0x48, 0x8f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, +0x21, 0xd7, 0xe1, 0x8c, 0xde, 0x38, 0x96, 0x10, +0x7a, 0xe1, 0x1d, 0xab, 0x10, 0xc3, 0xe8, 0xa0, +0xfe, 0x71, 0xf2, 0x18, 0x38, 0xae, 0x51, 0x3d, +0xf6, 0x77, 0xb4, 0x0e, 0xe0, 0x35, 0x0e, 0xb3, +0xe7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, +0x01, 0x22, 0x21, 0xaa, 0x99, 0x15, 0xf2, 0xc5, +0x79, 0x9f, 0x7b, 0x78, 0xa4, 0x34, 0xba, 0xc9, +0xeb, 0x2e, 0xee, 0xc7, 0xe1, 0x0c, 0xda, 0xa5, +0xe9, 0xc0, 0xb0, 0xb0, 0x0b, 0xec, 0x88, 0xe1, +0xdb, 0xcb, 0xd0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc9, 0x01, 0x22, 0x21, 0x50, 0xdf, 0xda, +0x45, 0xed, 0xb5, 0x83, 0x2d, 0xaa, 0x91, 0xdc, +0x5a, 0x76, 0x0d, 0xbf, 0xed, 0xd7, 0x8e, 0x9c, +0x56, 0x9b, 0xa4, 0x9f, 0x10, 0x83, 0x12, 0x26, +0x10, 0xa5, 0x5b, 0x47, 0xb2, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0x39, +0x9d, 0x7a, 0x9b, 0xe5, 0x9f, 0x59, 0x70, 0xd5, +0xe0, 0xba, 0x7d, 0x5f, 0xa7, 0x8c, 0x32, 0x58, +0x9a, 0xdb, 0xc7, 0xef, 0xec, 0x25, 0xf6, 0x3e, +0x0b, 0x55, 0x4a, 0x80, 0xc4, 0x20, 0x3b, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, +0x21, 0xeb, 0x62, 0xe2, 0x09, 0x5a, 0xf2, 0xdf, +0x21, 0xfb, 0x9d, 0x4b, 0x48, 0x5a, 0x81, 0x58, +0x54, 0xb6, 0x95, 0x5b, 0x69, 0x68, 0x73, 0x83, +0x4c, 0xa9, 0x2e, 0xc7, 0x96, 0xf2, 0xaa, 0xeb, +0x3e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, +0x01, 0x22, 0x21, 0x1d, 0xfb, 0x65, 0x7d, 0x69, +0x36, 0xf6, 0x6c, 0x72, 0x50, 0x93, 0x65, 0x59, +0xcd, 0x61, 0x44, 0x83, 0xbf, 0xd3, 0xeb, 0xb0, +0x66, 0xf6, 0x1a, 0xb5, 0xb2, 0x3d, 0xf4, 0xa0, +0x70, 0x01, 0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xcd, 0x01, 0x22, 0x21, 0x6c, 0xb1, 0x83, +0x40, 0x7c, 0xf7, 0xbf, 0x96, 0x70, 0xf8, 0xa3, +0x2b, 0xe2, 0x82, 0x4f, 0xfe, 0x2f, 0xcb, 0x4e, +0xc7, 0x1d, 0x22, 0x15, 0x7e, 0xf9, 0x4e, 0xd1, +0x57, 0x7a, 0x57, 0x55, 0xce, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0xd2, +0xeb, 0x03, 0x95, 0x48, 0xd8, 0x70, 0xbe, 0x0f, +0x6c, 0xb1, 0xe9, 0x22, 0x5d, 0xaa, 0xeb, 0x4c, +0xdb, 0x01, 0x86, 0x2f, 0x5f, 0xe0, 0x6e, 0x80, +0x01, 0x66, 0xb6, 0xc5, 0xb3, 0xe5, 0xe6, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, +0x21, 0x31, 0xab, 0x80, 0x61, 0xe4, 0x02, 0xeb, +0xe2, 0x15, 0x5a, 0xd8, 0xa2, 0x6d, 0xdd, 0x9e, +0x07, 0x69, 0x74, 0x5c, 0x47, 0x63, 0xad, 0xe7, +0xc6, 0xa0, 0x22, 0x1c, 0x19, 0x09, 0xa5, 0xbf, +0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, +0x01, 0x22, 0x21, 0xea, 0x09, 0x08, 0x78, 0xa4, +0x8f, 0xdb, 0x1c, 0xc0, 0x16, 0x7a, 0x2a, 0xf5, +0x64, 0x99, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe6, 0xe8, 0x0d, 0x52, +0xac, 0x35, 0x97, 0x50, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd1, 0x01, 0x22, 0x21, 0xde, 0xb3, 0xff, +0x23, 0xb5, 0x03, 0x3f, 0x22, 0x96, 0x17, 0xee, +0x6f, 0x51, 0x2e, 0xf3, 0x91, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xf6, +0x79, 0x10, 0xa1, 0x1d, 0xaf, 0x84, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0x35, +0x8a, 0xe5, 0x84, 0xeb, 0x7f, 0x20, 0x29, 0x71, +0xfe, 0xa5, 0x50, 0x6a, 0xaf, 0x4f, 0x83, 0x9b, +0x64, 0x49, 0x83, 0x7c, 0x23, 0xc0, 0x78, 0xb8, +0xfb, 0x8e, 0x6c, 0xe2, 0x41, 0x2a, 0xdd, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, +0x21, 0x24, 0x39, 0x99, 0x26, 0xf3, 0x03, 0x40, +0xe1, 0x61, 0x01, 0xd5, 0x2b, 0xc3, 0x3b, 0x8a, +0x4c, 0xf4, 0x2f, 0x2a, 0xb2, 0xd9, 0x4f, 0xcf, +0x2f, 0x1f, 0xc4, 0xfd, 0xd8, 0x80, 0x2d, 0x61, +0x29, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, +0x01, 0x22, 0x21, 0x32, 0x57, 0x24, 0x93, 0x3d, +0x11, 0xbb, 0x19, 0x15, 0x37, 0xc1, 0xe7, 0xdb, +0x18, 0x5b, 0x84, 0x8a, 0x49, 0x55, 0x50, 0x53, +0xea, 0x3a, 0x70, 0xb6, 0x57, 0xdc, 0x74, 0xbb, +0xd0, 0xd3, 0x90, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd5, 0x01, 0x22, 0x21, 0xef, 0x06, 0x55, +0x91, 0x14, 0xe2, 0xf2, 0x26, 0xa8, 0x78, 0x20, +0x9a, 0xdd, 0x46, 0x11, 0xfe, 0xff, 0x9e, 0x1a, +0x19, 0x7c, 0x44, 0xfd, 0x76, 0x85, 0x5a, 0x5d, +0x81, 0x2b, 0x5a, 0xe5, 0x41, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0x5d, +0xf6, 0xcd, 0xae, 0x5f, 0x60, 0xec, 0xdf, 0x00, +0x31, 0xb0, 0xf1, 0x2d, 0x36, 0x29, 0x6d, 0x83, +0xe2, 0x20, 0xf8, 0x4f, 0x70, 0x85, 0x4b, 0x9c, +0x1c, 0x9a, 0x76, 0xfb, 0xf7, 0xe3, 0xd7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, +0x21, 0xaf, 0xce, 0xc6, 0x3d, 0x0a, 0x20, 0x71, +0x78, 0xda, 0x15, 0x85, 0x7a, 0x8f, 0xa6, 0xf1, +0x70, 0x99, 0xd8, 0x27, 0x65, 0x55, 0x4b, 0x37, +0xab, 0xc3, 0x6e, 0x39, 0x86, 0xe0, 0xd2, 0x64, +0x3b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, +0x01, 0x22, 0x21, 0x13, 0xa4, 0xb4, 0x5a, 0xaa, +0x15, 0x2f, 0xb1, 0xd6, 0x8f, 0xc5, 0x4f, 0x2b, +0xe4, 0xec, 0x8b, 0x1c, 0xfe, 0x55, 0x24, 0x41, +0x31, 0x87, 0x4a, 0x95, 0x9b, 0x5b, 0x09, 0xc6, +0x55, 0xd3, 0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd9, 0x01, 0x22, 0x21, 0x3d, 0x33, 0xe7, +0xd7, 0xef, 0x26, 0x30, 0x46, 0x4f, 0x0b, 0xd9, +0x3a, 0xdb, 0xa7, 0x04, 0xf0, 0x40, 0x71, 0xfa, +0x4f, 0xf5, 0xf1, 0xa9, 0x0c, 0x42, 0x50, 0x80, +0x88, 0x65, 0xf5, 0xaa, 0xbc, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0x95, +0xba, 0xa0, 0xae, 0x82, 0x3d, 0xcf, 0x7a, 0x2b, +0x4f, 0x2f, 0x74, 0xbe, 0x58, 0x0c, 0xd8, 0xce, +0x02, 0x17, 0x0d, 0x0f, 0x3c, 0x38, 0xd7, 0xa4, +0x33, 0xf9, 0x0f, 0xdc, 0x1a, 0xac, 0x20, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, +0x21, 0x3e, 0x1a, 0xc2, 0x2a, 0xc6, 0xd0, 0x82, +0x50, 0xe4, 0x3b, 0x28, 0x5d, 0x7c, 0xe9, 0x0e, +0x96, 0xd6, 0x18, 0xe5, 0x57, 0x0b, 0x3d, 0x44, +0xbe, 0xae, 0xb1, 0x04, 0x5d, 0xa3, 0x8a, 0xd3, +0xf7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, +0x01, 0x22, 0x21, 0x47, 0xdc, 0xdc, 0xab, 0x6a, +0xf9, 0xbf, 0x2b, 0x5d, 0xda, 0x21, 0xfd, 0x76, +0x49, 0xc6, 0xba, 0x49, 0xb0, 0x98, 0x5e, 0x05, +0x6e, 0x80, 0xeb, 0x96, 0xae, 0x0b, 0xd3, 0xce, +0xdc, 0xf1, 0x4d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xdd, 0x01, 0x22, 0x21, 0x29, 0x61, 0x58, +0x6c, 0x4f, 0x75, 0x97, 0x8c, 0x35, 0xa3, 0x15, +0xcb, 0x9b, 0x8e, 0x41, 0x44, 0x13, 0x73, 0xd3, +0x5a, 0x01, 0x68, 0x39, 0x7e, 0xee, 0x98, 0x9f, +0xb4, 0xfc, 0x27, 0xb5, 0xb8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x38, +0xb9, 0xa6, 0xb9, 0x77, 0x9f, 0x41, 0x46, 0x40, +0xa4, 0xd0, 0xbe, 0x9a, 0xbc, 0x44, 0xbd, 0x06, +0x3b, 0xc0, 0x23, 0x1d, 0x1b, 0x62, 0xc5, 0x6d, +0xef, 0x2c, 0x1f, 0x71, 0x93, 0x9e, 0x0d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, +0x21, 0x07, 0xd1, 0xe7, 0x44, 0xe4, 0x7d, 0x73, +0xd9, 0xa2, 0x1f, 0x0f, 0x19, 0x8f, 0xa2, 0x45, +0xe9, 0x98, 0xb4, 0x43, 0x80, 0x9f, 0x63, 0x1b, +0xcf, 0xde, 0xf3, 0x8d, 0x22, 0xef, 0xfd, 0x10, +0x78, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, +0x01, 0x22, 0x21, 0xcd, 0xd3, 0x38, 0x6c, 0xd4, +0x5c, 0x87, 0x5c, 0x2f, 0xeb, 0xcb, 0x14, 0x6b, +0xd4, 0x24, 0x4e, 0x8b, 0x67, 0x89, 0xfe, 0x0e, +0x39, 0x47, 0x8e, 0x56, 0x7e, 0x7e, 0x6d, 0x29, +0x51, 0x6b, 0x6d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe1, 0x01, 0x22, 0x21, 0xb8, 0x01, 0x8f, +0x50, 0xb2, 0x2f, 0x79, 0x61, 0xc0, 0x75, 0x16, +0xd6, 0xa3, 0x5c, 0x32, 0xf8, 0x93, 0xbd, 0x35, +0x1f, 0x2d, 0xee, 0xd9, 0x7d, 0xb4, 0xd9, 0x09, +0xd9, 0x50, 0xf7, 0x86, 0x6d, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0x42, +0xd7, 0xfd, 0x1d, 0xc2, 0xed, 0xe1, 0xea, 0x66, +0x12, 0x7e, 0x65, 0x11, 0x6e, 0x35, 0xad, 0x3e, +0x06, 0xef, 0x83, 0xc5, 0xc7, 0xa6, 0xfa, 0x95, +0x98, 0x4d, 0x76, 0x54, 0x47, 0x74, 0x96, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, +0x21, 0x5f, 0xca, 0xa9, 0x9c, 0x85, 0x8f, 0xdb, +0x38, 0x93, 0xf4, 0xa2, 0x3e, 0x97, 0xf9, 0xc0, +0x9e, 0x5c, 0x86, 0xaf, 0x89, 0xd1, 0x02, 0x33, +0xbc, 0x75, 0x98, 0xab, 0x59, 0x27, 0x00, 0xd9, +0x1b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, +0x01, 0x22, 0x21, 0xb8, 0x38, 0x27, 0xa6, 0x1f, +0xc7, 0xa4, 0x2f, 0xf0, 0x0f, 0xcc, 0xe6, 0x1d, +0x28, 0x61, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x24, 0x88, 0x36, 0x14, +0xc6, 0x18, 0x5c, 0x48, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe5, 0x01, 0x22, 0x21, 0xa5, 0x92, 0xee, +0xf5, 0x91, 0xae, 0x97, 0x3a, 0xe7, 0xfd, 0xf6, +0x79, 0x20, 0xf2, 0x6f, 0x94, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xcf, +0x98, 0xab, 0xaf, 0xf3, 0x44, 0xa8, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0xf3, +0xaa, 0xcf, 0xd5, 0x55, 0x87, 0x28, 0xff, 0x23, +0x4b, 0x4a, 0xaa, 0xd3, 0x0d, 0x67, 0xe3, 0xa4, +0xa7, 0x77, 0x60, 0x10, 0xbe, 0xb3, 0xad, 0x9d, +0xd6, 0xec, 0x5f, 0x60, 0xa0, 0x2c, 0x25, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, +0x21, 0x35, 0x02, 0x13, 0x68, 0x12, 0xe6, 0x2d, +0x08, 0x13, 0x1f, 0x18, 0xef, 0x2d, 0x5e, 0xe0, +0xfe, 0x53, 0x24, 0xb1, 0x9f, 0xec, 0xbf, 0xcc, +0x39, 0x6b, 0x81, 0xe9, 0x36, 0x13, 0x36, 0x4a, +0x51, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, +0x01, 0x22, 0x21, 0xbb, 0xad, 0x22, 0x3c, 0x03, +0x78, 0xf3, 0xe6, 0x57, 0xa5, 0xc5, 0x8c, 0x27, +0xd6, 0x73, 0xbd, 0xeb, 0xcf, 0x2c, 0x22, 0x4a, +0x86, 0x5d, 0x4b, 0x3a, 0xb5, 0x8c, 0xff, 0x17, +0x39, 0x85, 0xe0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe9, 0x01, 0x22, 0x21, 0xe1, 0xcf, 0x00, +0x03, 0x6f, 0xb3, 0x27, 0x0f, 0x33, 0x9b, 0x8e, +0x55, 0x93, 0xb2, 0x0c, 0xb2, 0x32, 0xd1, 0x1f, +0x6f, 0x3c, 0x73, 0x54, 0xa6, 0xb2, 0x97, 0x2e, +0xff, 0x3a, 0x4b, 0x6d, 0xe6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0x57, +0x6b, 0xc8, 0x74, 0x9c, 0xbc, 0x8e, 0x13, 0xa1, +0x3d, 0x82, 0x44, 0x02, 0x78, 0xbf, 0x33, 0xbb, +0x97, 0x23, 0x2c, 0x79, 0xd6, 0xd1, 0x85, 0x9a, +0xc8, 0x0a, 0x16, 0xa6, 0x25, 0x05, 0xa7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, +0x21, 0x4a, 0x32, 0x45, 0x9c, 0x03, 0x99, 0x33, +0xd2, 0x76, 0x08, 0x87, 0xad, 0x4d, 0x87, 0xb6, +0x31, 0x0b, 0x68, 0x04, 0x7a, 0xb7, 0x46, 0x87, +0x5b, 0x0e, 0xab, 0x49, 0xc0, 0xdf, 0xa5, 0x63, +0x74, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, +0x01, 0x22, 0x21, 0xca, 0xdc, 0x34, 0xbe, 0xfc, +0x62, 0x40, 0xb3, 0x69, 0x7d, 0xa1, 0x29, 0x2a, +0xe5, 0xb4, 0x23, 0x55, 0xa2, 0x3d, 0x52, 0x66, +0x8b, 0x2f, 0x21, 0x80, 0x04, 0xb6, 0x3a, 0x07, +0x91, 0x41, 0x86, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xed, 0x01, 0x22, 0x21, 0x56, 0x1a, 0x23, +0xc2, 0xc4, 0x0f, 0x0c, 0xe5, 0x2b, 0x38, 0x81, +0xa1, 0x13, 0x61, 0x4f, 0x75, 0xb3, 0x46, 0x39, +0x00, 0xe1, 0xc5, 0x62, 0x00, 0xe6, 0xbd, 0x85, +0x48, 0x0f, 0xba, 0x47, 0x32, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0xac, +0x17, 0x0c, 0x97, 0x4b, 0x00, 0x0b, 0xf1, 0xf7, +0x1a, 0x0b, 0xa6, 0x97, 0xda, 0x49, 0x16, 0x34, +0x09, 0x67, 0xe2, 0xc8, 0x1d, 0x07, 0xbd, 0xee, +0x3f, 0xc8, 0xf8, 0x7c, 0x00, 0xbb, 0x69, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, +0x21, 0x78, 0x51, 0xe7, 0xa5, 0xfc, 0x9b, 0x50, +0x04, 0x7d, 0xfd, 0x5e, 0xde, 0x74, 0xd1, 0xd9, +0x03, 0xbd, 0x95, 0x63, 0x13, 0x6b, 0x98, 0x98, +0x63, 0xe5, 0x43, 0x84, 0x4c, 0xa1, 0x3d, 0xd2, +0xff, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, +0x01, 0x22, 0x21, 0xad, 0x67, 0x05, 0x91, 0xd9, +0x57, 0x89, 0x51, 0x65, 0x32, 0xab, 0x76, 0xc2, +0xb3, 0xcc, 0x9b, 0x3b, 0x11, 0xa2, 0x3d, 0x9b, +0xe5, 0xa9, 0x7a, 0xeb, 0xe2, 0x5e, 0xf3, 0x85, +0x96, 0xe2, 0x04, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf1, 0x01, 0x22, 0x21, 0x0b, 0xfd, 0xd8, +0x69, 0x55, 0x32, 0x42, 0x6e, 0xc5, 0x03, 0xc1, +0xa8, 0x3c, 0xd6, 0x69, 0x68, 0x6c, 0xc8, 0xc9, +0x3f, 0x91, 0x4d, 0xb1, 0x74, 0x42, 0xc0, 0x32, +0xc0, 0x45, 0xd8, 0xd5, 0x72, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0xdd, +0x58, 0x0a, 0xf8, 0x50, 0xc6, 0x4f, 0x2e, 0x58, +0x9f, 0x52, 0xc6, 0x0c, 0x5b, 0x6d, 0x1f, 0x4c, +0x4a, 0xf5, 0x0a, 0xc4, 0x04, 0xf9, 0xb2, 0x5a, +0x57, 0xf8, 0xa6, 0x6b, 0x52, 0x51, 0xcd, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, +0x21, 0x9d, 0x07, 0xfc, 0xee, 0x01, 0xa7, 0x22, +0x3a, 0xf4, 0xe1, 0xe0, 0x66, 0x20, 0x88, 0x46, +0xcf, 0xbb, 0xb7, 0x89, 0xf4, 0x28, 0xf5, 0x91, +0x88, 0xb5, 0xcc, 0x86, 0x04, 0x0c, 0x27, 0x95, +0x87, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, +0x01, 0x22, 0x21, 0x23, 0x7e, 0xda, 0x76, 0x28, +0x6d, 0xfc, 0x32, 0x24, 0x5e, 0x81, 0xeb, 0xf8, +0x01, 0x20, 0xa0, 0xd7, 0x95, 0x6a, 0x74, 0x22, +0x98, 0xb1, 0xe2, 0x45, 0x5c, 0xce, 0xed, 0xa7, +0x14, 0x28, 0xcb, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf5, 0x01, 0x22, 0x21, 0xa9, 0xac, 0x16, +0x3c, 0x19, 0x0d, 0x10, 0x4c, 0x2e, 0xc9, 0xc6, +0x46, 0x3e, 0x61, 0x28, 0x5e, 0x44, 0x42, 0xa0, +0x3b, 0x0a, 0x53, 0x7f, 0x10, 0x86, 0x00, 0xb0, +0x7f, 0x6e, 0xb4, 0xe2, 0x1f, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0x8f, +0x4d, 0x76, 0xd3, 0xcc, 0x8a, 0x3a, 0x21, 0xc7, +0x99, 0xec, 0xe4, 0xb7, 0x6c, 0x86, 0x4b, 0xc8, +0x53, 0xc8, 0xda, 0xc0, 0x8e, 0xe6, 0xb5, 0x97, +0x54, 0xde, 0x43, 0x44, 0x7e, 0xc6, 0x88, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, +0x21, 0xc7, 0x34, 0xcb, 0xe8, 0xb8, 0xa6, 0xf6, +0x42, 0x0b, 0x47, 0x3f, 0xb2, 0xad, 0xe6, 0x6d, +0xfb, 0xbf, 0x67, 0xac, 0xd3, 0x7f, 0x14, 0x57, +0xf2, 0xc6, 0x3e, 0xf8, 0xed, 0x96, 0xf9, 0xd2, +0x70, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, +0x01, 0x22, 0x21, 0x56, 0xab, 0x18, 0x46, 0x79, +0xfc, 0x5f, 0x76, 0xff, 0xdf, 0x94, 0x56, 0x13, +0xd2, 0xd4, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xb6, 0x02, 0x89, 0x8e, +0xb6, 0x3c, 0xd3, 0x04, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf9, 0x01, 0x22, 0x21, 0x81, 0x48, 0x76, +0x3d, 0x96, 0x7e, 0xe8, 0xb1, 0x3d, 0x0a, 0x09, +0x5f, 0xb0, 0x5b, 0x99, 0x35, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x0c, +0x79, 0xd0, 0xd5, 0x49, 0x5a, 0xb8, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0x9f, +0x1c, 0xdc, 0xbb, 0x57, 0xbd, 0x08, 0x5d, 0xeb, +0xdc, 0x2a, 0xc8, 0xd9, 0x1d, 0x84, 0x40, 0x32, +0x6d, 0x76, 0x89, 0x08, 0x13, 0x0a, 0x91, 0x03, +0x4c, 0xaf, 0xcb, 0xe8, 0xcd, 0x19, 0x36, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, +0x21, 0x28, 0xc0, 0x4e, 0xcd, 0x20, 0xf7, 0xb7, +0x40, 0x75, 0x05, 0xd4, 0x76, 0x5d, 0x5b, 0x45, +0xa2, 0xdc, 0x00, 0xa5, 0x6e, 0xee, 0x85, 0x06, +0xff, 0x79, 0xf5, 0xf5, 0x50, 0x69, 0x41, 0x05, +0x16, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, +0x01, 0x22, 0x21, 0xc3, 0xb2, 0x20, 0x91, 0xa8, +0xe7, 0x5e, 0x01, 0x5d, 0x67, 0x0a, 0x95, 0x71, +0x62, 0x81, 0x61, 0x71, 0xe6, 0xcb, 0xf6, 0x3f, +0x34, 0x40, 0xf8, 0x9a, 0x17, 0xf5, 0xe1, 0x36, +0x6e, 0xc6, 0xa1, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xfd, 0x01, 0x22, 0x21, 0x1e, 0xde, 0x95, +0x5a, 0x71, 0x2c, 0xf5, 0x08, 0xbe, 0x60, 0x32, +0x43, 0x96, 0x17, 0x30, 0xeb, 0xee, 0xbb, 0xb8, +0x3b, 0xfd, 0xca, 0xc1, 0xc5, 0x57, 0x5d, 0x23, +0x14, 0x21, 0x4b, 0xd9, 0x54, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0xac, +0xd1, 0x5c, 0xb6, 0x72, 0x6f, 0xe9, 0x63, 0xfa, +0xea, 0x8b, 0xf7, 0x78, 0x10, 0xec, 0x4a, 0x32, +0x4e, 0xd5, 0xfe, 0xf9, 0xaf, 0xc9, 0x6e, 0xf7, +0x69, 0x29, 0x76, 0x08, 0xb3, 0xb4, 0x72, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, +0x21, 0x7f, 0x3e, 0xb5, 0x3f, 0x65, 0xd7, 0xec, +0x8d, 0x52, 0x1b, 0x7c, 0x2b, 0xa7, 0x69, 0xf6, +0x82, 0x4f, 0xb5, 0xd9, 0xec, 0x7a, 0x05, 0x55, +0x47, 0x0a, 0x52, 0xf0, 0xcf, 0x91, 0x6f, 0x9a, +0x14, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, +0x01, 0x22, 0x21, 0x8d, 0xa5, 0x7e, 0x91, 0xdc, +0x35, 0x6b, 0x23, 0xc3, 0xe9, 0xcd, 0x65, 0x82, +0x84, 0xf8, 0x1e, 0x54, 0x24, 0x86, 0x11, 0x58, +0x5a, 0x37, 0x91, 0xd3, 0xda, 0x31, 0x03, 0x99, +0xee, 0xe8, 0x8e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x01, 0x01, 0x22, 0x21, 0x27, 0x87, 0x71, +0xd2, 0x41, 0x32, 0xfa, 0x44, 0x57, 0xf4, 0x5c, +0xbe, 0x8a, 0x1d, 0x6f, 0xae, 0x5e, 0x2d, 0x57, +0x83, 0xcb, 0x47, 0x67, 0xfa, 0x45, 0x7b, 0x0b, +0xc4, 0x04, 0x36, 0x44, 0xd8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0xbe, +0xf1, 0x71, 0x60, 0xbf, 0x5d, 0x1f, 0xd8, 0x07, +0x31, 0x94, 0xae, 0x89, 0xf7, 0xf2, 0x10, 0xe9, +0xe6, 0x3a, 0xd1, 0x9b, 0x1a, 0x0a, 0xf2, 0x8a, +0x8c, 0xdb, 0xc1, 0xe9, 0xf2, 0xef, 0xde, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, +0x21, 0x28, 0xc7, 0xa0, 0x1a, 0x51, 0x20, 0x75, +0x6e, 0x8a, 0x91, 0xcd, 0xa5, 0x54, 0xf2, 0x2f, +0x66, 0x37, 0x5d, 0xde, 0x45, 0x3f, 0xff, 0x1f, +0xe5, 0x4b, 0x34, 0xed, 0xf4, 0x27, 0x66, 0xd1, +0xe5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, +0x01, 0x22, 0x21, 0x0e, 0x09, 0xd5, 0x19, 0x68, +0x10, 0xc0, 0x96, 0x31, 0x6a, 0xa2, 0xe6, 0xf9, +0x7f, 0x51, 0x45, 0xc6, 0x99, 0x09, 0xbf, 0xec, +0x00, 0xe1, 0x02, 0x55, 0x96, 0xcf, 0x64, 0xad, +0xe1, 0x8a, 0x7e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x05, 0x01, 0x22, 0x21, 0xe9, 0x92, 0x08, +0x11, 0x64, 0xbe, 0x49, 0x3a, 0xd0, 0x03, 0x56, +0x31, 0x7f, 0x62, 0xec, 0x42, 0x45, 0x68, 0xa1, +0x35, 0xd9, 0xa7, 0x6f, 0x10, 0x3c, 0x61, 0x2a, +0x90, 0x75, 0x73, 0x2e, 0x77, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0xcf, +0x5b, 0x79, 0x08, 0x01, 0x08, 0x61, 0x8c, 0x25, +0x42, 0x27, 0x47, 0x31, 0x08, 0x40, 0xe9, 0x34, +0xb7, 0xad, 0xad, 0xd3, 0x1e, 0x4e, 0xda, 0x4b, +0x7f, 0xa6, 0x19, 0xa3, 0x72, 0x24, 0x91, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, +0x21, 0xc5, 0x59, 0x26, 0x30, 0xe6, 0xb9, 0xb2, +0xb0, 0xa1, 0x09, 0x03, 0xf1, 0x66, 0xe5, 0x63, +0x01, 0x46, 0xa8, 0x2e, 0x8b, 0x65, 0x41, 0xea, +0x19, 0x6f, 0xdb, 0xd2, 0x84, 0xbf, 0xa4, 0x51, +0x4a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, +0x01, 0x22, 0x21, 0xac, 0x2c, 0x94, 0x93, 0x70, +0xa3, 0x2a, 0x26, 0x29, 0x7c, 0x12, 0xb7, 0x89, +0x4a, 0x00, 0x48, 0xf6, 0x9c, 0x7b, 0xdf, 0xc0, +0x20, 0xef, 0xae, 0x3d, 0xd0, 0x2b, 0xe0, 0x2c, +0xf3, 0x7e, 0x4f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x09, 0x01, 0x22, 0x21, 0x43, 0x60, 0x00, +0x07, 0x8a, 0xd9, 0xce, 0x24, 0x6c, 0xbd, 0x0f, +0xa0, 0x4f, 0x6d, 0xcc, 0xd6, 0x32, 0x9e, 0x58, +0x70, 0x6f, 0x92, 0xb2, 0x0b, 0xa1, 0xc2, 0xd8, +0x97, 0x8c, 0x4b, 0xee, 0x89, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0x68, +0xb2, 0xeb, 0xd5, 0xcc, 0x43, 0x88, 0x94, 0x75, +0xb1, 0x94, 0x53, 0x10, 0xfc, 0x27, 0xeb, 0x29, +0x6a, 0x3e, 0x32, 0x51, 0x68, 0x91, 0xf3, 0x2c, +0x45, 0x13, 0x3f, 0x2a, 0x6b, 0xed, 0x01, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, +0x21, 0x1f, 0xa3, 0x0e, 0xb5, 0xc5, 0xf7, 0xd2, +0xb7, 0x87, 0x31, 0xd3, 0xdc, 0xcd, 0x38, 0xb3, +0x8e, 0xf3, 0x00, 0x38, 0xc2, 0xac, 0x61, 0x79, +0x5e, 0xbf, 0x48, 0x55, 0x83, 0xe5, 0xee, 0x9d, +0x6e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, +0x01, 0x22, 0x21, 0xb9, 0x2e, 0xd7, 0x79, 0x7e, +0xd9, 0xa3, 0x8d, 0xae, 0xa2, 0xa7, 0xd6, 0x2e, +0x02, 0x8c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x37, 0x72, 0x53, 0x7f, +0x94, 0x3e, 0xae, 0x08, 0x03, 0x04, 0x51, 0x02, +0x00, 0x0d, 0x01, 0x22, 0x21, 0x9b, 0x89, 0x06, +0x77, 0xe6, 0x68, 0xb8, 0x8c, 0x6b, 0x32, 0x67, +0x84, 0xab, 0x22, 0xd8, 0x44, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x19, +0x28, 0x9c, 0xca, 0x6c, 0xe9, 0x13, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0x0d, +0x46, 0xd6, 0x09, 0x65, 0xb9, 0xe6, 0xda, 0x4b, +0xed, 0x69, 0x01, 0x89, 0x6f, 0xb8, 0xc2, 0xd9, +0x1f, 0x0d, 0x63, 0xac, 0x9d, 0xd1, 0x19, 0x20, +0x01, 0x4a, 0xc5, 0xcc, 0xae, 0x83, 0xed, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, +0x21, 0x18, 0x97, 0x44, 0x6c, 0x4d, 0xc0, 0xd5, +0xc0, 0x55, 0xd7, 0x4f, 0x14, 0x19, 0x72, 0x14, +0xb5, 0x05, 0xdb, 0xd5, 0xb4, 0xf4, 0xdc, 0xb5, +0x9a, 0x68, 0x37, 0xbb, 0x21, 0x01, 0x1d, 0x30, +0x8e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, +0x01, 0x22, 0x21, 0x32, 0x65, 0xa8, 0x40, 0xb1, +0xfc, 0x49, 0x53, 0x7a, 0xff, 0xf2, 0x06, 0x7c, +0x7d, 0x99, 0x1a, 0x3c, 0x44, 0x4c, 0x58, 0x90, +0xe9, 0x30, 0x6d, 0x6e, 0x66, 0x66, 0x9e, 0x9a, +0x9f, 0x44, 0x6d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x11, 0x01, 0x22, 0x21, 0x96, 0x23, 0x27, +0x91, 0xb9, 0x4e, 0x30, 0x6d, 0x06, 0x24, 0x0a, +0x31, 0xc7, 0x00, 0x0c, 0xea, 0x35, 0x64, 0xd4, +0x8d, 0x14, 0xd7, 0x65, 0x4d, 0x2a, 0x93, 0xf8, +0xf7, 0x91, 0xd1, 0x6d, 0x6e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0x89, +0x3d, 0x65, 0x23, 0x7e, 0x3f, 0x71, 0x6f, 0x2f, +0x08, 0x2b, 0x6a, 0x09, 0xef, 0xc5, 0xbb, 0xf4, +0x9e, 0x94, 0xc8, 0xae, 0x57, 0x65, 0x6f, 0x85, +0xa2, 0xa2, 0x57, 0x0e, 0xb4, 0x9a, 0x90, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, +0x21, 0x11, 0x80, 0x07, 0x3b, 0x4e, 0x7e, 0xf7, +0xde, 0xc1, 0x97, 0x98, 0x77, 0xd4, 0x57, 0x81, +0x64, 0xda, 0x7b, 0xb1, 0x02, 0x95, 0xb8, 0x4c, +0x27, 0x31, 0xb9, 0xd2, 0x53, 0x0f, 0x8a, 0x1c, +0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, +0x01, 0x22, 0x21, 0xfa, 0xf9, 0x2d, 0x08, 0xfc, +0x05, 0x53, 0x59, 0x7b, 0x00, 0xeb, 0x16, 0xc9, +0x68, 0x85, 0x48, 0x1f, 0x5c, 0xa9, 0xc3, 0x8a, +0xe0, 0x9d, 0xc7, 0xcc, 0xce, 0x40, 0xe3, 0x29, +0xd7, 0xb0, 0x2e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x15, 0x01, 0x22, 0x21, 0xf4, 0x08, 0xdd, +0x7e, 0x50, 0xe9, 0x19, 0x4f, 0x0b, 0x2c, 0x82, +0xc4, 0xf6, 0x74, 0xb9, 0xfd, 0x30, 0xdb, 0xf8, +0xb3, 0xd5, 0x0b, 0xb4, 0xdb, 0x77, 0x73, 0xa5, +0x98, 0xb7, 0x52, 0xa6, 0x72, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0xfe, +0x28, 0x8b, 0xe6, 0x78, 0x6f, 0xe9, 0x96, 0xff, +0x40, 0x3e, 0x71, 0x61, 0xb6, 0x46, 0x48, 0x27, +0x2d, 0x3c, 0x6e, 0x47, 0xf7, 0xba, 0x39, 0xfb, +0x15, 0x1b, 0xa7, 0x5f, 0x05, 0xe4, 0xcc, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, +0x21, 0x3b, 0x09, 0x35, 0x31, 0xb2, 0x52, 0xf0, +0xfa, 0x7e, 0xaa, 0xb0, 0xec, 0xb1, 0xf8, 0xa7, +0xa5, 0x79, 0xdf, 0x55, 0xbb, 0x81, 0x52, 0xf0, +0xfe, 0x44, 0x7c, 0x41, 0xf9, 0x71, 0x21, 0xe9, +0x91, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, +0x01, 0x22, 0x21, 0x36, 0xf2, 0xad, 0x13, 0x01, +0xa3, 0x2c, 0xf1, 0xa4, 0x18, 0x5a, 0x3d, 0x03, +0x33, 0xa7, 0x30, 0xe7, 0x08, 0x47, 0x90, 0xad, +0x72, 0x55, 0x74, 0xa0, 0xae, 0x96, 0x70, 0xf2, +0xfa, 0x31, 0x46, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x19, 0x01, 0x22, 0x21, 0x84, 0x74, 0x87, +0x07, 0x75, 0xd5, 0x33, 0xc0, 0xcd, 0xfa, 0x48, +0x87, 0x18, 0xce, 0x41, 0xdc, 0xa4, 0xa3, 0xc2, +0x2a, 0x4e, 0x4e, 0x5d, 0x0a, 0x9c, 0x41, 0x11, +0x4a, 0x46, 0x1f, 0x6c, 0x15, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x00, +0x20, 0xb0, 0x8c, 0xc4, 0x8e, 0xc8, 0x44, 0xbc, +0xa5, 0x2c, 0x9c, 0x0f, 0xc5, 0xdd, 0x51, 0x4b, +0x32, 0x54, 0x58, 0x67, 0x60, 0x8e, 0x16, 0xa0, +0x13, 0x3d, 0xa3, 0x2c, 0xa3, 0x41, 0x51, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, +0x21, 0x28, 0x44, 0xa8, 0x46, 0xc8, 0xd3, 0xc1, +0x57, 0x62, 0xd6, 0x80, 0x6a, 0x6f, 0xff, 0x0e, +0x3b, 0x40, 0xdc, 0x23, 0x11, 0x02, 0x9e, 0xd8, +0x54, 0x94, 0xa1, 0x6b, 0xae, 0x9a, 0x5a, 0xef, +0x6f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, +0x01, 0x22, 0x21, 0x7e, 0x13, 0x28, 0xef, 0x10, +0x57, 0x4a, 0x0d, 0x07, 0x96, 0xa6, 0x40, 0x04, +0x13, 0xc7, 0x8b, 0x5a, 0x58, 0x36, 0xfd, 0xf0, +0x2d, 0xa3, 0x49, 0xda, 0xf5, 0x00, 0x1b, 0x9d, +0xd8, 0xa5, 0x8b, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x1d, 0x01, 0x22, 0x21, 0xf9, 0xbe, 0xfa, +0xe9, 0x09, 0x28, 0x47, 0x6e, 0x02, 0x84, 0x90, +0x6f, 0x09, 0x5f, 0x64, 0x98, 0xfa, 0x27, 0x75, +0x05, 0xe1, 0x3d, 0xd2, 0x91, 0xfd, 0xdc, 0x71, +0x67, 0x66, 0xc4, 0x56, 0x05, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0xb1, +0x6c, 0x9c, 0x71, 0xc0, 0xd8, 0x50, 0xe0, 0x1c, +0x4a, 0xd2, 0x5b, 0x12, 0x4e, 0xbe, 0x57, 0x3f, +0xc3, 0xea, 0xfd, 0xdf, 0x3f, 0x5c, 0x5f, 0x68, +0x8e, 0xd7, 0x1f, 0xd6, 0xcd, 0x0b, 0xfe, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, +0x21, 0xdb, 0x03, 0xc7, 0xec, 0x76, 0xcb, 0x25, +0x87, 0x11, 0xb9, 0x4a, 0xb8, 0x3c, 0x8e, 0x6b, +0xba, 0xba, 0xec, 0x51, 0xa4, 0x51, 0x78, 0x03, +0xf8, 0x79, 0x1f, 0xbd, 0x35, 0x9f, 0xfb, 0x28, +0xae, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, +0x01, 0x22, 0x21, 0xac, 0x6f, 0x61, 0xb9, 0x3c, +0xa6, 0x6a, 0xf3, 0x7d, 0x66, 0x98, 0x32, 0x21, +0xab, 0xe0, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xfb, 0x14, 0x15, 0x21, +0xd1, 0xa3, 0x01, 0x28, 0x03, 0x04, 0x51, 0x02, +0x00, 0x21, 0x01, 0x22, 0x21, 0xa0, 0xab, 0x5d, +0xf7, 0xca, 0x73, 0x65, 0x00, 0xf9, 0xc6, 0xb1, +0x67, 0x36, 0x7e, 0xea, 0x2c, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x48, +0x9d, 0xc4, 0xd4, 0x2f, 0x3a, 0xef, 0x03, 0x04, +0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xee, +0x7e, 0x75, 0xbe, 0x73, 0xf1, 0x5b, 0x4d, 0x6f, +0x2f, 0xde, 0x61, 0x2e, 0xea, 0xae, 0x78, 0xe6, +0x87, 0x51, 0x7c, 0xe2, 0x22, 0xb7, 0x29, 0xd9, +0x9a, 0x0f, 0xa1, 0xa7, 0xc7, 0xd8, 0x50, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, +0x21, 0xc4, 0xef, 0x95, 0x5f, 0xca, 0xf0, 0x45, +0x92, 0xd5, 0xf1, 0xda, 0xac, 0x40, 0xe5, 0xa1, +0x3e, 0xaf, 0x90, 0xfc, 0xc4, 0xe4, 0xec, 0x6d, +0xe0, 0x80, 0x12, 0x2f, 0x39, 0x4a, 0x73, 0xb2, +0x28, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, +0x01, 0x22, 0x21, 0x7f, 0xfd, 0x94, 0x6c, 0x5f, +0x42, 0x99, 0x30, 0x6d, 0xea, 0x90, 0x3f, 0xcc, +0x7d, 0xb8, 0x0a, 0xe9, 0x0d, 0x1b, 0xe8, 0xce, +0x0c, 0x32, 0xaa, 0x32, 0x92, 0x4a, 0x23, 0xfd, +0xcc, 0x78, 0x8e, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x25, 0x01, 0x22, 0x21, 0xf2, 0x9e, 0x00, +0x30, 0x14, 0x5d, 0x7a, 0xf0, 0x24, 0xa4, 0xe1, +0xad, 0xa1, 0xe7, 0x9f, 0x17, 0x5b, 0xce, 0x73, +0x40, 0xa6, 0x12, 0xf9, 0x50, 0xe4, 0xac, 0x85, +0x39, 0x42, 0xc4, 0xb4, 0x24, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0x51, +0xa7, 0x54, 0x7a, 0x2c, 0xe8, 0xd8, 0x8e, 0x9c, +0xd6, 0x05, 0x98, 0x97, 0xb0, 0x9d, 0x0f, 0x54, +0xf2, 0x02, 0x33, 0x13, 0xae, 0xf5, 0x41, 0xec, +0xd5, 0x7b, 0xf2, 0xb3, 0xaf, 0x34, 0xdf, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, +0x21, 0xc3, 0x9c, 0x0c, 0x89, 0xfd, 0xe7, 0x81, +0x1a, 0xed, 0x0e, 0x96, 0x07, 0xcb, 0x3d, 0x9b, +0x2e, 0x97, 0x63, 0xfa, 0xcd, 0xdd, 0x54, 0x65, +0x48, 0x6e, 0x13, 0x8f, 0x1d, 0x7d, 0x73, 0xff, +0x03, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, +0x01, 0x22, 0x21, 0x2b, 0x10, 0xfb, 0x26, 0xf4, +0xe8, 0x3f, 0x8c, 0x1b, 0x14, 0x1a, 0xa4, 0x8e, +0xb7, 0x14, 0xd8, 0x64, 0x22, 0x77, 0x78, 0xd2, +0xb8, 0x54, 0x8a, 0x18, 0xb8, 0xc8, 0x0a, 0xbf, +0xa3, 0xb4, 0x40, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x29, 0x01, 0x22, 0x21, 0xb1, 0x5e, 0x73, +0x2b, 0xaa, 0xfb, 0xb0, 0x0f, 0xd3, 0xf5, 0x21, +0xe9, 0x74, 0x0c, 0xfa, 0xda, 0xa3, 0xe4, 0x6b, +0xf5, 0x31, 0x41, 0x61, 0x4f, 0x96, 0xdc, 0x65, +0x01, 0xac, 0xcf, 0x39, 0x11, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0x79, +0xc7, 0x82, 0x68, 0x97, 0xdf, 0x35, 0x85, 0x1a, +0xf1, 0xc5, 0x76, 0x15, 0x14, 0x8c, 0x1a, 0xb7, +0x1f, 0x13, 0xf7, 0x00, 0xf5, 0x08, 0x22, 0x70, +0x51, 0x41, 0x41, 0xd5, 0x70, 0xce, 0xa2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, +0x21, 0x5b, 0xb8, 0x55, 0x4b, 0x8f, 0x01, 0xb0, +0x82, 0xfb, 0x23, 0x90, 0x0d, 0xe1, 0x67, 0x47, +0x79, 0x2e, 0xaf, 0x28, 0x6f, 0x79, 0xc9, 0x76, +0xb2, 0x3c, 0xae, 0x4e, 0x56, 0xd3, 0x78, 0xac, +0xdb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, +0x01, 0x22, 0x21, 0x9e, 0x8e, 0x30, 0xaf, 0x63, +0x28, 0x82, 0x7c, 0xb4, 0xa9, 0x3b, 0x4a, 0x5d, +0x86, 0x01, 0x10, 0x3f, 0x44, 0x69, 0x88, 0x34, +0x64, 0x34, 0x36, 0x9e, 0x0b, 0xe4, 0x71, 0x2d, +0x76, 0xb4, 0x0d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x2d, 0x01, 0x22, 0x21, 0xfc, 0x0f, 0x84, +0xce, 0x38, 0x73, 0xe9, 0xfa, 0x63, 0xbe, 0x56, +0xca, 0x83, 0x4e, 0x42, 0x2f, 0xaa, 0x4d, 0xe9, +0x19, 0x4d, 0x3e, 0x21, 0x32, 0x76, 0x7a, 0xed, +0x37, 0xa2, 0x14, 0xee, 0x59, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0xc4, +0x41, 0xef, 0x70, 0x1c, 0x3d, 0xf5, 0xda, 0x88, +0x17, 0x54, 0xee, 0x03, 0xde, 0xe1, 0x97, 0x5d, +0xa5, 0xef, 0x7a, 0xb9, 0x4a, 0x37, 0x86, 0x33, +0xbf, 0x0c, 0x79, 0xa2, 0x31, 0xd2, 0x25, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, +0x21, 0x0d, 0xd6, 0xb0, 0x3b, 0xbe, 0x1a, 0x5d, +0xdf, 0x54, 0x74, 0xf3, 0xb1, 0xac, 0x64, 0xaf, +0x18, 0x41, 0x93, 0xba, 0x5f, 0x6f, 0x97, 0x8f, +0x71, 0x19, 0x67, 0x99, 0x05, 0xe3, 0xc5, 0x76, +0x58, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, +0x01, 0x22, 0x21, 0x3b, 0x28, 0x3c, 0x8a, 0x02, +0xb8, 0x04, 0x2a, 0x67, 0x77, 0xb0, 0x2e, 0xd0, +0x21, 0x22, 0xbc, 0xb3, 0x73, 0x29, 0xff, 0x22, +0xd0, 0x76, 0x09, 0x68, 0xb3, 0x4b, 0x8b, 0x01, +0x6c, 0x63, 0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x31, 0x01, 0x22, 0x21, 0x5b, 0x1c, 0xb9, +0x12, 0x9d, 0x32, 0xa7, 0x7c, 0xe0, 0x21, 0xac, +0xd2, 0x0c, 0xfc, 0x98, 0xd6, 0x9e, 0x6d, 0x49, +0xf0, 0x58, 0x3c, 0xda, 0x89, 0x93, 0xd5, 0xdc, +0xea, 0xd4, 0x95, 0x3f, 0xb8, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0xa1, +0xa3, 0x14, 0x49, 0x91, 0xbf, 0xe8, 0xbe, 0xf6, +0xfa, 0xdb, 0xb9, 0x50, 0x8d, 0x1c, 0xeb, 0xab, +0x67, 0x3a, 0x69, 0xb4, 0x78, 0x94, 0x03, 0x77, +0x00, 0x04, 0x82, 0x51, 0xdf, 0x7b, 0x50, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, +0x21, 0x1b, 0x02, 0xc0, 0x83, 0x99, 0x29, 0x87, +0xa0, 0xb1, 0xcd, 0xc9, 0x1a, 0xce, 0x38, 0x7d, +0x3b, 0xb8, 0x7b, 0xae, 0xa1, 0x5e, 0x9e, 0xf9, +0xab, 0x52, 0x12, 0x93, 0xa6, 0x5d, 0x3f, 0xea, +0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, +0x01, 0x22, 0x21, 0x73, 0x01, 0x8c, 0xbf, 0x40, +0x3a, 0x60, 0xb7, 0x1c, 0x09, 0x5c, 0x40, 0xef, +0x84, 0x69, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xd6, 0xb7, 0x01, 0xab, +0x3a, 0x5f, 0x9d, 0x15, 0x03, 0x04, 0x51, 0x02, +0x00, 0x35, 0x01, 0x22, 0x21, 0x6c, 0xf2, 0x49, +0xd5, 0x73, 0x14, 0xc9, 0x11, 0x24, 0x6f, 0xb4, +0x93, 0x33, 0xd6, 0xcf, 0x42, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x41, +0x71, 0xc4, 0xff, 0xde, 0x13, 0xd2, 0x03, 0x04, +0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x6c, +0xb1, 0xe0, 0xd6, 0x99, 0xc8, 0x1a, 0x6c, 0x18, +0xe3, 0xb1, 0x02, 0x38, 0x1d, 0x66, 0xea, 0x40, +0x13, 0x22, 0xfd, 0x7d, 0x65, 0x1f, 0x1b, 0xc5, +0x19, 0xba, 0xa7, 0xbb, 0x51, 0x9f, 0xe2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, +0x21, 0xf9, 0x20, 0x13, 0x0e, 0xdb, 0x2d, 0xf7, +0x2e, 0x3f, 0x2e, 0x20, 0x70, 0xe2, 0x90, 0xfa, +0x80, 0xcc, 0x55, 0x7f, 0x3d, 0xc2, 0x08, 0xf3, +0x9d, 0x75, 0x9a, 0x51, 0x0e, 0x7c, 0x1b, 0x3f, +0x0a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, +0x01, 0x22, 0x21, 0x74, 0x4b, 0xf6, 0x16, 0xb1, +0xe0, 0x27, 0xc0, 0x75, 0x21, 0x71, 0xf4, 0xe6, +0x9e, 0x18, 0x7b, 0xfc, 0x5e, 0x48, 0xb5, 0x3a, +0x6b, 0x96, 0xbf, 0x1d, 0xc5, 0x57, 0x26, 0x7b, +0xa5, 0x43, 0x5c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x39, 0x01, 0x22, 0x21, 0x27, 0x14, 0x46, +0x39, 0xf5, 0xe2, 0x0c, 0xa7, 0xf2, 0x0a, 0xea, +0x03, 0xf0, 0x66, 0x6f, 0x4a, 0x8c, 0xfe, 0xf2, +0x84, 0x30, 0x36, 0xc1, 0xe9, 0x71, 0x05, 0xb5, +0xb3, 0x56, 0x39, 0x9f, 0x5c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0x7c, +0xfe, 0xe0, 0xd7, 0x86, 0xf9, 0x12, 0x61, 0x25, +0xf0, 0xba, 0x22, 0x02, 0x32, 0xad, 0x40, 0xce, +0x99, 0x99, 0x30, 0xed, 0x66, 0x9e, 0x0b, 0xf4, +0x79, 0x2f, 0x8e, 0x0b, 0x8b, 0x6d, 0x9c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, +0x21, 0xc8, 0x3f, 0x1d, 0x2a, 0x13, 0xb1, 0xb9, +0x17, 0x98, 0x1d, 0xb6, 0xf7, 0xc5, 0x86, 0x25, +0x69, 0x38, 0x8a, 0x71, 0xaa, 0x15, 0x8c, 0xa7, +0x66, 0xa2, 0xd6, 0xd3, 0x9c, 0x16, 0xa7, 0x80, +0xcc, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, +0x01, 0x22, 0x21, 0xd5, 0x7d, 0x41, 0xfd, 0xa6, +0x2b, 0x28, 0x0c, 0xe0, 0x94, 0xc9, 0x67, 0xc5, +0xa0, 0x9e, 0x46, 0xec, 0x64, 0xbb, 0x11, 0xe0, +0xff, 0x1e, 0x36, 0x2a, 0x36, 0x00, 0x6d, 0xc9, +0x93, 0x8b, 0x9b, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x3d, 0x01, 0x22, 0x21, 0xb6, 0x1d, 0x80, +0x70, 0xe3, 0x30, 0xa0, 0xf2, 0x8a, 0x6d, 0x47, +0x75, 0x01, 0xb8, 0xf8, 0xa6, 0xed, 0xf4, 0x50, +0xd2, 0x88, 0xd2, 0x27, 0x27, 0x45, 0xf6, 0x90, +0xd4, 0xfc, 0x49, 0x4b, 0xea, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x32, +0x89, 0x93, 0x4a, 0xc2, 0xbf, 0xaa, 0x75, 0xff, +0x85, 0xed, 0xca, 0xc3, 0x01, 0x71, 0xb3, 0x74, +0x40, 0x92, 0xb0, 0xe7, 0x7d, 0xd8, 0x85, 0x43, +0xdb, 0xee, 0x5c, 0x1f, 0x41, 0x4c, 0x45, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, +0x21, 0xc9, 0x25, 0x85, 0x51, 0x56, 0x7a, 0xd5, +0x57, 0xda, 0xad, 0x4f, 0x12, 0x50, 0x4d, 0x62, +0x5a, 0xed, 0xab, 0x97, 0x52, 0xa5, 0x12, 0xa9, +0x84, 0x45, 0x47, 0x72, 0x0d, 0x75, 0xf6, 0xa7, +0xd9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, +0x01, 0x22, 0x21, 0x24, 0x1f, 0xc5, 0xda, 0x76, +0x18, 0x3b, 0xff, 0x6d, 0x17, 0xa5, 0xc6, 0x85, +0xd5, 0xc2, 0x67, 0x0b, 0xd7, 0xf9, 0x22, 0x57, +0x7f, 0x36, 0xa9, 0xed, 0xbb, 0x69, 0x26, 0xc0, +0xe6, 0xe7, 0x7c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x41, 0x01, 0x22, 0x21, 0x74, 0x6a, 0xc0, +0xc2, 0x32, 0xdb, 0x3d, 0xef, 0x1b, 0xe0, 0x19, +0x59, 0x97, 0xf2, 0xa4, 0x58, 0x27, 0x5f, 0x2e, +0x81, 0x0c, 0x07, 0xa2, 0xfd, 0xee, 0x17, 0xbf, +0x54, 0xaa, 0xca, 0x61, 0x14, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0x70, +0xaf, 0x3e, 0x68, 0x6c, 0x6c, 0x28, 0xb3, 0x96, +0xb3, 0x20, 0x46, 0xf8, 0xfd, 0x33, 0x1c, 0x0e, +0xe7, 0x07, 0x16, 0x61, 0x4a, 0xdc, 0x26, 0xec, +0x61, 0x3f, 0x82, 0x03, 0x68, 0x77, 0x97, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, +0x21, 0xe5, 0xdd, 0x29, 0x49, 0x98, 0x89, 0x4f, +0x7c, 0xe0, 0x2c, 0x2e, 0x66, 0xc9, 0xd2, 0xe1, +0xc5, 0x91, 0x72, 0x96, 0x97, 0xe0, 0x70, 0x17, +0x35, 0x5f, 0xcd, 0xd3, 0xb5, 0x26, 0xa7, 0xfc, +0x95, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, +0x01, 0x22, 0x21, 0x0a, 0xb2, 0x13, 0x3f, 0xd7, +0x40, 0xb0, 0x5a, 0x81, 0x2b, 0x7b, 0x1e, 0x21, +0xff, 0x79, 0x1c, 0x0a, 0xc0, 0xb7, 0x17, 0x21, +0x40, 0xe9, 0x59, 0x16, 0xef, 0x1d, 0xd1, 0xa5, +0x6f, 0xb8, 0x9f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x45, 0x01, 0x22, 0x21, 0x7e, 0x2c, 0xd9, +0x30, 0xa1, 0x2a, 0x9d, 0x03, 0xb8, 0x04, 0xb5, +0x13, 0xe0, 0xe3, 0x5a, 0xd7, 0x0e, 0x8b, 0xe1, +0xa2, 0x26, 0x16, 0x65, 0x1b, 0xf1, 0xc8, 0xdf, +0x07, 0xea, 0x31, 0xc0, 0x07, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0x1d, +0xdb, 0xf2, 0x56, 0x2b, 0x9a, 0x13, 0x93, 0xb9, +0x7d, 0xf3, 0xf2, 0x14, 0x0a, 0x22, 0x86, 0x3a, +0x24, 0x40, 0x5b, 0xc0, 0x41, 0x26, 0xa0, 0x23, +0xd0, 0x5c, 0x78, 0xbd, 0x02, 0x20, 0xff, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, +0x21, 0x8e, 0x32, 0xdf, 0x2f, 0xb1, 0x05, 0x13, +0x2a, 0x7c, 0xf4, 0x8f, 0x4a, 0x1c, 0x96, 0x02, +0xae, 0xa0, 0xb7, 0x60, 0x34, 0xec, 0x72, 0x80, +0x39, 0x0e, 0xd4, 0x45, 0xf8, 0x76, 0xf6, 0xe6, +0x00, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, +0x01, 0x22, 0x21, 0xf9, 0xbb, 0xce, 0x02, 0xd7, +0xe8, 0x1d, 0xc7, 0x70, 0x15, 0xa1, 0x90, 0x42, +0x64, 0x7c, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe0, 0x12, 0x52, 0x55, +0xaa, 0x2f, 0xc9, 0x99, 0x03, 0x04, 0x51, 0x02, +0x00, 0x49, 0x01, 0x22, 0x21, 0x67, 0x31, 0x92, +0xb8, 0x51, 0xd4, 0xea, 0xd6, 0x9c, 0x1d, 0x10, +0x81, 0x05, 0x5b, 0xc3, 0x16, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x11, +0x4c, 0xec, 0xf2, 0xbc, 0xd6, 0x28, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0x0b, +0x7a, 0x90, 0x55, 0x71, 0x4c, 0x18, 0x9a, 0xfc, +0xd3, 0x6a, 0x1a, 0x0e, 0xaa, 0xef, 0x54, 0xd1, +0xb3, 0x58, 0xbb, 0xa3, 0x35, 0x30, 0x0c, 0x31, +0x74, 0xe5, 0xb1, 0x3c, 0x61, 0x84, 0x24, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, +0x21, 0x56, 0xb0, 0xe1, 0xe4, 0x77, 0x9c, 0x1d, +0xb8, 0x1f, 0x24, 0xee, 0xcd, 0xdb, 0xce, 0xf1, +0x9c, 0x63, 0xeb, 0xe0, 0x08, 0x9f, 0xc0, 0x6c, +0x77, 0x17, 0xf7, 0xc8, 0x5e, 0x27, 0x7d, 0x58, +0x8b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, +0x01, 0x22, 0x21, 0xdf, 0x69, 0x99, 0xcf, 0x41, +0xef, 0xba, 0x92, 0x20, 0x16, 0xec, 0x8c, 0xa9, +0xa2, 0xa8, 0xd1, 0x9e, 0xe4, 0xf3, 0xcc, 0x0d, +0x90, 0xe3, 0x2d, 0x40, 0xc7, 0x7b, 0xdd, 0x7f, +0xd4, 0xa0, 0xbe, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x4d, 0x01, 0x22, 0x21, 0xa6, 0x18, 0xa4, +0xa6, 0xce, 0x7d, 0xfd, 0x78, 0x08, 0xb0, 0x7c, +0x91, 0xf6, 0x7d, 0xa1, 0xa2, 0xa8, 0xa6, 0x9b, +0x0d, 0x3f, 0x8f, 0x65, 0x01, 0x20, 0xd7, 0x4f, +0x8e, 0x8f, 0xbf, 0x80, 0xfc, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0xd1, +0x33, 0x4f, 0xce, 0x4d, 0xd5, 0x37, 0x68, 0xe1, +0x75, 0xc1, 0x32, 0xfc, 0x03, 0xb0, 0xde, 0x57, +0xa5, 0xa5, 0x59, 0x1b, 0x5b, 0x4a, 0x8b, 0xa3, +0x8b, 0x9b, 0x28, 0x17, 0xd5, 0x70, 0x22, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, +0x21, 0xcf, 0x84, 0x48, 0x2a, 0x8a, 0xeb, 0xbf, +0x7c, 0x6c, 0x89, 0xe0, 0x6c, 0x17, 0x61, 0x2e, +0x3d, 0xcf, 0x68, 0x65, 0x53, 0xf4, 0xe4, 0x2d, +0xfc, 0xd7, 0x95, 0x5e, 0x2d, 0x10, 0x4d, 0xc8, +0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, +0x01, 0x22, 0x21, 0x6a, 0x2f, 0x74, 0x8e, 0x12, +0x7b, 0xa7, 0x7e, 0xf8, 0x8f, 0x8a, 0x02, 0x12, +0xc9, 0x82, 0xe2, 0x31, 0x56, 0x80, 0xc5, 0x8e, +0x03, 0x22, 0x0a, 0xf3, 0xe0, 0x16, 0x90, 0x57, +0x50, 0x3d, 0x51, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x51, 0x01, 0x22, 0x21, 0x24, 0xb9, 0xa9, +0x43, 0x3d, 0x3e, 0xca, 0x71, 0xa0, 0x47, 0xd7, +0x13, 0xb1, 0x41, 0xf2, 0x73, 0x3f, 0x37, 0xc1, +0x6f, 0xb2, 0x47, 0xce, 0xc9, 0x3f, 0xc9, 0x87, +0x8b, 0x89, 0x7b, 0xb2, 0xa4, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0x61, +0x8a, 0xad, 0x29, 0x89, 0xb3, 0xba, 0x2f, 0x6e, +0xd4, 0x91, 0xab, 0x21, 0x7d, 0xf4, 0x8e, 0xfc, +0xa1, 0x6d, 0xfd, 0xae, 0xe9, 0x56, 0xe7, 0x68, +0xc7, 0xa1, 0x3c, 0x96, 0x25, 0xc2, 0x6c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, +0x21, 0xb6, 0x0f, 0x6e, 0x6b, 0xd3, 0x96, 0xd5, +0xed, 0x33, 0x9e, 0xf1, 0x3a, 0x8f, 0x90, 0x99, +0xc5, 0x13, 0xb7, 0x43, 0x12, 0xd1, 0xc8, 0x90, +0x41, 0x62, 0x74, 0xd7, 0x01, 0x31, 0x74, 0xa8, +0x9b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, +0x01, 0x22, 0x21, 0x25, 0xde, 0x5b, 0x33, 0xd7, +0xbc, 0x97, 0x76, 0x2c, 0x0c, 0x35, 0xb0, 0xe5, +0xac, 0x8f, 0x1c, 0xed, 0x36, 0x0a, 0x16, 0xf2, +0x54, 0xa6, 0x83, 0x81, 0xc7, 0x76, 0x62, 0x03, +0x2b, 0xb0, 0x27, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x55, 0x01, 0x22, 0x21, 0x0d, 0x56, 0x25, +0xb0, 0x8b, 0x11, 0x9c, 0xb6, 0xfa, 0xce, 0xb8, +0x22, 0xb0, 0x34, 0xf6, 0x56, 0xc0, 0xed, 0xe9, +0x93, 0xde, 0xe6, 0xf4, 0xde, 0xba, 0x7d, 0x1a, +0x1e, 0x3e, 0x4e, 0x1c, 0x43, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x1e, +0xeb, 0xbb, 0x06, 0x5b, 0x2b, 0x94, 0x87, 0x69, +0xa8, 0xcd, 0x09, 0x1e, 0xc2, 0x49, 0x88, 0x13, +0x71, 0xae, 0x3a, 0x80, 0x79, 0x81, 0xaa, 0x64, +0xa6, 0x0c, 0x88, 0x77, 0xad, 0x3d, 0xb8, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, +0x21, 0x4b, 0xfd, 0x2d, 0x90, 0x1e, 0xdd, 0x9c, +0x5e, 0x27, 0xf8, 0x13, 0x4b, 0x9a, 0x29, 0x5c, +0x45, 0x7b, 0xb5, 0x6b, 0x8d, 0x29, 0x1e, 0xdb, +0x43, 0x24, 0x28, 0x43, 0x11, 0x7a, 0x2b, 0x9d, +0x22, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, +0x01, 0x22, 0x21, 0xae, 0xb4, 0xbc, 0xb0, 0x5e, +0x62, 0x6e, 0xc5, 0xcf, 0x44, 0x1d, 0x55, 0x79, +0x7d, 0x77, 0x35, 0xdf, 0xcd, 0x2c, 0x93, 0x30, +0x44, 0xc1, 0x8e, 0x8d, 0xf3, 0xdf, 0x38, 0x83, +0x61, 0x3f, 0x3d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x59, 0x01, 0x22, 0x21, 0x9a, 0x86, 0x9c, +0x0a, 0x58, 0xa4, 0xea, 0x73, 0x6e, 0x7c, 0xff, +0xd4, 0x2a, 0x36, 0x92, 0xb9, 0xd9, 0xb6, 0x21, +0x83, 0x54, 0x65, 0xa9, 0xd5, 0x5f, 0xdd, 0xc9, +0x27, 0x62, 0xf9, 0xd5, 0x61, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x33, +0x4b, 0xdf, 0x3d, 0x33, 0x0a, 0x10, 0xa3, 0xc6, +0x9d, 0xb6, 0x7a, 0xbf, 0xb4, 0xba, 0x49, 0x19, +0x3b, 0x96, 0xb1, 0xa3, 0x80, 0x7f, 0x7c, 0xf9, +0x98, 0xdd, 0x24, 0xf5, 0xdb, 0xa7, 0xb2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, +0x21, 0xdb, 0x94, 0x6e, 0x5b, 0x54, 0xfd, 0x08, +0xfe, 0x69, 0x2a, 0x74, 0x0e, 0xf8, 0x11, 0x78, +0x7f, 0x0b, 0xcd, 0xd2, 0x57, 0x79, 0x5a, 0x06, +0x54, 0x2f, 0x1e, 0x27, 0x4f, 0xce, 0x62, 0xe4, +0x07, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, +0x01, 0x22, 0x21, 0xe4, 0x3e, 0xf1, 0xfe, 0x2a, +0xa5, 0x5f, 0x58, 0x91, 0xcf, 0x56, 0x75, 0x65, +0x71, 0x51, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe0, 0xf5, 0x82, 0x4e, +0x7b, 0xc0, 0xc7, 0x30, 0x03, 0x04, 0x51, 0x02, +0x00, 0x5d, 0x01, 0x22, 0x21, 0x16, 0xc6, 0x3f, +0x09, 0x16, 0x52, 0xa8, 0x5a, 0xc8, 0xa3, 0xcb, +0x21, 0xa1, 0x2a, 0x43, 0x8d, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x42, +0x6c, 0x8b, 0x2e, 0x7a, 0x06, 0x8a, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0xf7, +0x5f, 0x4b, 0x1b, 0xdb, 0x00, 0x1b, 0x8b, 0xee, +0xf7, 0x61, 0x49, 0xcf, 0x0b, 0xe8, 0x44, 0x21, +0xf4, 0xa9, 0x29, 0x31, 0x03, 0x40, 0xb9, 0xaf, +0x45, 0x0c, 0x0b, 0xca, 0x8f, 0x69, 0xb3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, +0x21, 0xd4, 0xc8, 0x0e, 0x44, 0x6b, 0x36, 0x1f, +0x53, 0xdc, 0xd6, 0x94, 0xd4, 0x3a, 0xab, 0xce, +0xc0, 0x80, 0xa7, 0x96, 0xf9, 0x2d, 0x70, 0xe0, +0x80, 0xfd, 0xb8, 0x84, 0x3c, 0xc1, 0xc7, 0xef, +0x45, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, +0x01, 0x22, 0x21, 0x30, 0xf6, 0xc5, 0x18, 0x3c, +0xe7, 0xfe, 0x90, 0x6c, 0x47, 0x47, 0x7a, 0x6a, +0x11, 0x60, 0xf5, 0x3c, 0xe8, 0x38, 0xe4, 0xd2, +0x64, 0x30, 0x28, 0x7a, 0xb8, 0xad, 0xc1, 0x7f, +0x3a, 0xa2, 0x08, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x61, 0x01, 0x22, 0x21, 0x79, 0x93, 0x01, +0xd8, 0xd0, 0x34, 0x81, 0x6a, 0x1b, 0x2c, 0x8f, +0xb5, 0x0c, 0x7e, 0x4c, 0xd9, 0x46, 0x33, 0x36, +0xe7, 0x97, 0x42, 0x80, 0x28, 0xfc, 0x84, 0x58, +0x03, 0x2a, 0x58, 0x6c, 0x9c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x33, +0xbc, 0x4b, 0x4e, 0xeb, 0xd3, 0xcf, 0x85, 0xed, +0x3c, 0x86, 0x14, 0x07, 0xec, 0x24, 0xd7, 0xab, +0xfb, 0x8c, 0xa6, 0xc1, 0x77, 0x62, 0xc8, 0xe9, +0x33, 0xc7, 0x22, 0x36, 0x63, 0x31, 0x22, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, +0x21, 0x1f, 0xba, 0xf0, 0xde, 0x4f, 0x9e, 0xe8, +0xe5, 0x56, 0x30, 0xe5, 0x67, 0x9a, 0x53, 0x1d, +0x01, 0x27, 0x51, 0xe1, 0x4e, 0x0e, 0x20, 0x18, +0xbc, 0xd7, 0x80, 0xd5, 0xc8, 0xb5, 0x8a, 0xa6, +0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, +0x01, 0x22, 0x21, 0xcd, 0xdb, 0x5a, 0x04, 0x83, +0x3f, 0x94, 0x06, 0x06, 0x64, 0x75, 0xcc, 0x71, +0x70, 0x68, 0x80, 0x98, 0x8e, 0x17, 0x93, 0x5b, +0xef, 0x7d, 0xd9, 0x75, 0x02, 0xda, 0xaa, 0x34, +0x7a, 0x6a, 0x93, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x65, 0x01, 0x22, 0x21, 0xfa, 0x2b, 0x22, +0xed, 0x1d, 0xbf, 0x86, 0x7e, 0xaf, 0xa7, 0x51, +0x50, 0x73, 0xee, 0x06, 0xad, 0x73, 0xb0, 0x7c, +0xfd, 0xe9, 0x89, 0x5b, 0xc4, 0x1a, 0xb1, 0x27, +0xd4, 0x19, 0x68, 0x72, 0xdd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0x56, +0x44, 0x0f, 0x64, 0x2d, 0x2f, 0xf2, 0xe8, 0x0a, +0x3d, 0x4d, 0xc6, 0xef, 0xb6, 0x2d, 0x62, 0x05, +0x06, 0x0b, 0xa4, 0x60, 0x9f, 0x90, 0x98, 0x74, +0x6e, 0xd8, 0x6a, 0x1c, 0x17, 0x98, 0x1e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, +0x21, 0x07, 0xa5, 0x96, 0x08, 0x93, 0x98, 0x1b, +0x24, 0x23, 0x5d, 0x1e, 0xa4, 0xca, 0x42, 0xd0, +0xd7, 0xe9, 0x43, 0x2c, 0x3a, 0x92, 0x68, 0x17, +0xf2, 0x88, 0x11, 0xaf, 0xac, 0x47, 0x58, 0xc8, +0x64, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, +0x01, 0x22, 0x21, 0xa7, 0x02, 0xd1, 0xeb, 0xe8, +0x34, 0xc2, 0x3f, 0x5a, 0x7c, 0x33, 0x4a, 0x92, +0x23, 0x73, 0x28, 0xce, 0xc7, 0x94, 0xfe, 0x22, +0xba, 0xa0, 0x16, 0xe8, 0x13, 0xc3, 0x4c, 0xb2, +0xbb, 0xae, 0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x69, 0x01, 0x22, 0x21, 0x59, 0x9a, 0xfa, +0xda, 0x18, 0x10, 0xfc, 0xc5, 0x4c, 0x1f, 0x7e, +0x06, 0xc8, 0xb1, 0x4d, 0x1d, 0xb8, 0xb8, 0x04, +0x2b, 0x18, 0xa7, 0x81, 0x8d, 0xf4, 0x00, 0x70, +0x4b, 0x9b, 0x84, 0x14, 0xa0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0x0b, +0xb6, 0xa3, 0x98, 0xf0, 0x3b, 0x98, 0x6b, 0xb6, +0xc0, 0x29, 0xa0, 0x0f, 0xbd, 0x8e, 0x80, 0xc0, +0xe6, 0xd4, 0x1c, 0x01, 0x30, 0x1a, 0x44, 0xc3, +0x7e, 0x26, 0xa3, 0xf5, 0xf9, 0x65, 0x78, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, +0x21, 0x8b, 0x62, 0x46, 0x24, 0x7a, 0x54, 0xf5, +0x4d, 0xfd, 0xc8, 0x26, 0x7a, 0x11, 0xab, 0x46, +0xb3, 0xa2, 0xdd, 0x2e, 0x23, 0x7a, 0xfd, 0x12, +0x0c, 0x03, 0xcb, 0xf0, 0xcf, 0xc4, 0x19, 0x2f, +0xd0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, +0x01, 0x22, 0x21, 0x30, 0x4c, 0x53, 0xf5, 0x27, +0xfb, 0xd4, 0x2e, 0xc9, 0xc2, 0x90, 0x51, 0x61, +0xa8, 0xb2, 0x43, 0x4e, 0x52, 0x9d, 0x92, 0xa1, +0x9c, 0x5a, 0xbd, 0xd8, 0x6b, 0x31, 0x71, 0xbd, +0x8f, 0x5e, 0xb0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x6d, 0x01, 0x22, 0x21, 0xc8, 0xe8, 0xce, +0x17, 0x26, 0xfb, 0x54, 0x61, 0xd4, 0xff, 0xc6, +0xc2, 0xb0, 0xa4, 0x22, 0xef, 0xf8, 0x51, 0x73, +0x89, 0x42, 0x9a, 0xfe, 0x5e, 0xf8, 0xdc, 0x26, +0x25, 0x21, 0xb6, 0x0a, 0xec, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0x1b, +0xd9, 0x0d, 0xeb, 0x30, 0xd7, 0x82, 0x04, 0x00, +0x5a, 0xfb, 0xe7, 0xb9, 0xa0, 0xb5, 0xcd, 0x81, +0x83, 0x60, 0x6b, 0x07, 0xcb, 0x09, 0xa4, 0x61, +0x81, 0xb2, 0x64, 0x56, 0x52, 0xa3, 0x90, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, +0x21, 0x9c, 0x1a, 0x3d, 0xf4, 0xec, 0xae, 0x12, +0x79, 0x64, 0x62, 0xef, 0x12, 0x9e, 0x66, 0xcb, +0x91, 0x87, 0x6d, 0x86, 0xbf, 0x75, 0x36, 0xf9, +0x54, 0x09, 0x85, 0x37, 0xbd, 0x02, 0x14, 0x61, +0x57, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, +0x01, 0x22, 0x21, 0x6b, 0x4c, 0xaa, 0xd4, 0xa0, +0x20, 0xe3, 0xad, 0x1e, 0x45, 0xbb, 0x68, 0x7e, +0x36, 0x6f, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4f, 0x5d, 0xf6, 0x43, +0x80, 0xe0, 0xd4, 0xbd, 0x03, 0x04, 0x51, 0x02, +0x00, 0x71, 0x01, 0x22, 0x21, 0xe8, 0xb9, 0xd7, +0x69, 0xc2, 0x78, 0xf9, 0x10, 0xea, 0x1b, 0x33, +0xf4, 0x0c, 0x4c, 0xfb, 0xd4, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x0a, +0xf9, 0x3d, 0x84, 0xfd, 0x37, 0x26, 0x03, 0x04, +0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0x95, +0x7d, 0x8d, 0xdd, 0x34, 0xd5, 0x58, 0x5b, 0x13, +0x59, 0x2d, 0x08, 0xaa, 0x5f, 0x6d, 0x30, 0xa1, +0x12, 0x5e, 0x7b, 0xf7, 0x22, 0xbc, 0x55, 0xcf, +0x2d, 0xb2, 0x88, 0x47, 0x3d, 0x55, 0x75, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, +0x21, 0x7e, 0x49, 0xad, 0x8b, 0xb5, 0x86, 0x63, +0x14, 0x14, 0x82, 0xa4, 0x99, 0xf9, 0xcb, 0xbf, +0x49, 0x53, 0x64, 0x07, 0xbd, 0x6f, 0x85, 0x16, +0x59, 0xfa, 0xdf, 0xba, 0x82, 0xd9, 0x8d, 0x21, +0xcb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, +0x01, 0x22, 0x21, 0x77, 0x46, 0x66, 0x1f, 0x63, +0xa9, 0x36, 0xf2, 0x6e, 0xca, 0x29, 0x2c, 0x6d, +0x4b, 0x80, 0x4c, 0x0e, 0x6e, 0x4c, 0xc6, 0x6c, +0x6b, 0x5e, 0x93, 0x26, 0x4a, 0x4d, 0x95, 0xdb, +0x9a, 0xfb, 0x4f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x75, 0x01, 0x22, 0x21, 0xc8, 0xe0, 0x09, +0x24, 0xcf, 0x15, 0xf6, 0x6d, 0xad, 0x15, 0x2e, +0xc3, 0xe4, 0xb3, 0x8e, 0x61, 0xd2, 0x8d, 0x88, +0x76, 0x9b, 0x61, 0x89, 0x0a, 0x50, 0xf9, 0x82, +0x2d, 0xaa, 0x80, 0x24, 0x78, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0xcb, +0xef, 0x24, 0xa4, 0xba, 0x57, 0xfb, 0x68, 0xab, +0xd4, 0x20, 0x26, 0xf0, 0xe7, 0x3a, 0x6a, 0xe6, +0x99, 0x33, 0xd5, 0x00, 0x8e, 0x7a, 0xab, 0x10, +0x6e, 0x6b, 0x88, 0x0d, 0xd6, 0x03, 0x0d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, +0x21, 0x1a, 0x76, 0xfc, 0x68, 0x3c, 0xbe, 0x9a, +0x52, 0x37, 0x72, 0xeb, 0x6b, 0x88, 0xdb, 0xfc, +0xda, 0x0a, 0x05, 0xe9, 0xa4, 0x52, 0x03, 0xc1, +0x14, 0x52, 0x91, 0x34, 0x03, 0x55, 0x69, 0x36, +0xd7, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, +0x01, 0x22, 0x21, 0xff, 0x4b, 0x36, 0x1d, 0x8e, +0x48, 0x2e, 0x01, 0x1c, 0x92, 0xf2, 0x29, 0xa3, +0x7e, 0x60, 0x18, 0x85, 0x75, 0xc0, 0x2a, 0x7e, +0x73, 0x0a, 0xdf, 0x5e, 0x06, 0x15, 0x9e, 0x97, +0x93, 0xbe, 0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x79, 0x01, 0x22, 0x21, 0x5a, 0x69, 0xd4, +0x29, 0x99, 0x1d, 0x32, 0xa1, 0xcd, 0x9f, 0x9e, +0xce, 0x92, 0x77, 0x7e, 0xe2, 0xd0, 0xea, 0xc2, +0xe5, 0x4a, 0x08, 0x47, 0x4d, 0x8b, 0x2e, 0x00, +0x95, 0x61, 0x92, 0x67, 0xf5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0x0c, +0xd0, 0x6a, 0x3b, 0xa1, 0x95, 0x57, 0x4b, 0xe0, +0x1a, 0x74, 0x98, 0x74, 0xce, 0xae, 0xde, 0x53, +0xe2, 0x48, 0x35, 0x07, 0x99, 0xf5, 0x85, 0x7a, +0x25, 0xdf, 0x4c, 0x5b, 0xdd, 0x26, 0x18, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, +0x21, 0x76, 0x16, 0x9e, 0x7a, 0x7f, 0xe8, 0xf2, +0xa5, 0x63, 0xc2, 0xae, 0xb0, 0xe3, 0x60, 0x3e, +0xf2, 0x26, 0x3c, 0xb1, 0xfd, 0x31, 0xa0, 0x6d, +0x94, 0x81, 0xc9, 0x76, 0xe8, 0x45, 0xb1, 0x64, +0x73, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, +0x01, 0x22, 0x21, 0x50, 0x68, 0xc7, 0x40, 0x8e, +0xf5, 0x24, 0xa8, 0xfd, 0xa6, 0x51, 0xcb, 0x34, +0x55, 0x98, 0x5a, 0x8f, 0x20, 0x70, 0x45, 0x78, +0x60, 0xda, 0xc8, 0x79, 0x81, 0x9c, 0xf4, 0x76, +0xa2, 0xb2, 0x95, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x7d, 0x01, 0x22, 0x21, 0xae, 0x43, 0xb5, +0x0b, 0x8f, 0xe2, 0xda, 0x84, 0x87, 0x61, 0x27, +0x9d, 0x6b, 0x1e, 0xea, 0xc4, 0x86, 0xfa, 0xed, +0x04, 0x87, 0xd3, 0x23, 0x0c, 0xfe, 0x29, 0xf2, +0xef, 0xe4, 0xe7, 0x90, 0x7e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0x97, +0xd0, 0x82, 0x3a, 0xff, 0xa8, 0x85, 0x08, 0x0c, +0x4b, 0xab, 0xbe, 0xf4, 0xf5, 0x21, 0x8e, 0x0c, +0x24, 0xbc, 0xb0, 0x10, 0xa7, 0x0e, 0xb0, 0x13, +0x38, 0x28, 0x66, 0xda, 0xd0, 0x40, 0x2e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, +0x21, 0x57, 0xa4, 0x44, 0xbd, 0x1a, 0xa0, 0xdf, +0x59, 0x59, 0xac, 0x3c, 0x96, 0x41, 0x83, 0x7f, +0xda, 0x0b, 0x08, 0xb1, 0x91, 0xef, 0x8a, 0xf1, +0x98, 0xe6, 0x36, 0xba, 0x1c, 0x1a, 0xf9, 0x35, +0xe8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, +0x01, 0x22, 0x21, 0xac, 0x1b, 0x56, 0xca, 0x7a, +0x0e, 0xd0, 0xe9, 0xb7, 0xd9, 0x70, 0x84, 0x3a, +0x7a, 0xe8, 0x75, 0x27, 0xe5, 0x72, 0x2f, 0x2b, +0xa7, 0xad, 0x84, 0x58, 0x9d, 0xa8, 0x80, 0x45, +0x98, 0xec, 0xc4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x81, 0x01, 0x22, 0x21, 0x3e, 0x86, 0xab, +0xae, 0xef, 0x3f, 0x77, 0x39, 0xda, 0xaf, 0x2c, +0x74, 0xb8, 0xcd, 0x57, 0x1b, 0x3b, 0x54, 0x93, +0x52, 0xbc, 0xc7, 0xab, 0xf2, 0x6d, 0x72, 0xb4, +0x7c, 0xb8, 0xc6, 0x6e, 0xf3, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0xca, +0xe8, 0x8b, 0x8a, 0x22, 0x7b, 0x84, 0x58, 0xf5, +0x72, 0xf8, 0xd8, 0x66, 0xec, 0x20, 0xd2, 0x05, +0x9b, 0x3e, 0x3f, 0x38, 0x0d, 0x89, 0x41, 0x13, +0x8d, 0x12, 0x8a, 0x8f, 0x49, 0xa7, 0x03, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, +0x21, 0x5a, 0xdd, 0xad, 0xaf, 0xae, 0x56, 0x75, +0xcc, 0xc0, 0xbb, 0xbc, 0x50, 0x88, 0xe4, 0x31, +0xf7, 0x37, 0x4c, 0xf4, 0x79, 0x4a, 0x40, 0xfd, +0x0e, 0x93, 0x43, 0x19, 0x6c, 0x9a, 0x14, 0x9e, +0x13, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, +0x01, 0x22, 0x21, 0xb6, 0xb5, 0xc1, 0x3e, 0xd8, +0x2d, 0x8d, 0x2b, 0xe7, 0xfb, 0x97, 0xe6, 0xf0, +0xf4, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x67, 0xd6, 0xbe, 0x7e, +0x6a, 0x40, 0xb0, 0xbb, 0x03, 0x04, 0x51, 0x02, +0x00, 0x85, 0x01, 0x22, 0x21, 0xcb, 0x66, 0xc1, +0xe6, 0x6d, 0xd6, 0x13, 0xa4, 0x0e, 0xd9, 0xa2, +0xd2, 0xb6, 0x0f, 0xe4, 0x2b, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x5a, +0x39, 0x0e, 0xf8, 0xc7, 0x37, 0xe3, 0x03, 0x04, +0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0xba, +0x62, 0xd2, 0xbe, 0x79, 0x95, 0xac, 0xfb, 0x55, +0x03, 0x00, 0x6d, 0x98, 0xcd, 0x95, 0x67, 0xc5, +0xa0, 0xe7, 0x25, 0x89, 0xa0, 0xa1, 0x8b, 0x88, +0x3b, 0x9e, 0xaf, 0xc9, 0x3b, 0xc6, 0x27, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, +0x21, 0x0b, 0x1c, 0x91, 0xd2, 0x43, 0x3f, 0xf1, +0xf6, 0xab, 0x41, 0x7d, 0xde, 0x6e, 0xf6, 0x78, +0x6c, 0xbc, 0xdc, 0x38, 0xa4, 0xaf, 0x81, 0x1c, +0xc6, 0x0c, 0x78, 0x70, 0xb2, 0x27, 0x92, 0xd6, +0x41, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, +0x01, 0x22, 0x21, 0x79, 0x09, 0xb4, 0xa8, 0x0b, +0x6a, 0xa2, 0x0b, 0xdb, 0x81, 0xbe, 0x4b, 0x7e, +0x91, 0x01, 0x15, 0xdc, 0x36, 0x69, 0x10, 0x6f, +0xf3, 0xf9, 0x54, 0x2f, 0xbd, 0x03, 0xfa, 0xf2, +0x74, 0xd7, 0xe0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x89, 0x01, 0x22, 0x21, 0xb1, 0x3e, 0x6d, +0x14, 0xd0, 0x4e, 0x8e, 0xfa, 0x1e, 0x97, 0xc7, +0x4f, 0x9a, 0x41, 0x70, 0x2a, 0x24, 0xfe, 0xd0, +0x75, 0x70, 0xb8, 0x8f, 0x8b, 0xd0, 0xd4, 0x97, +0x6f, 0x85, 0xef, 0x69, 0xee, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0x8b, +0xa6, 0x5a, 0x94, 0x0a, 0xbc, 0x19, 0x90, 0x29, +0xd4, 0xeb, 0x1f, 0xae, 0x7b, 0x0c, 0x4e, 0xc5, +0xba, 0x39, 0xed, 0x04, 0x42, 0x00, 0xbc, 0x01, +0x87, 0x8a, 0x29, 0xb2, 0x13, 0x68, 0x0d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, +0x21, 0x0d, 0x79, 0xc5, 0x00, 0xe4, 0xb9, 0xd7, +0xc8, 0xf8, 0x3e, 0x87, 0x3f, 0x87, 0xfe, 0x80, +0x96, 0x0d, 0xf2, 0x6b, 0xf9, 0xf0, 0xf6, 0xc3, +0x8e, 0x41, 0x18, 0xdb, 0x54, 0xa0, 0xbc, 0xf1, +0xe4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, +0x01, 0x22, 0x21, 0x2b, 0x6e, 0x5a, 0x0b, 0x34, +0x9f, 0xef, 0x06, 0x64, 0x5c, 0x2d, 0x8a, 0x2a, +0x22, 0xa0, 0x3c, 0xba, 0xfb, 0x22, 0x52, 0xd2, +0x71, 0x39, 0xf7, 0x3d, 0x62, 0xa4, 0x2f, 0x94, +0x37, 0x8c, 0xad, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x8d, 0x01, 0x22, 0x21, 0x39, 0x23, 0xda, +0x58, 0x3f, 0x1e, 0xb6, 0x8b, 0xb7, 0x8d, 0xb0, +0xaf, 0x43, 0x3b, 0x5a, 0x9e, 0x43, 0xd0, 0x8c, +0xed, 0x9a, 0x2f, 0xea, 0x13, 0x30, 0x47, 0x4e, +0x96, 0xb4, 0xd8, 0x85, 0xfc, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x69, +0x21, 0xd5, 0x60, 0x1a, 0xc4, 0xc9, 0x13, 0xbd, +0xb1, 0x5c, 0xca, 0x3e, 0xe6, 0x35, 0xc2, 0xec, +0x4b, 0xf6, 0x0c, 0xfc, 0x0c, 0x66, 0xb6, 0xc0, +0x72, 0x85, 0x81, 0xcb, 0x4a, 0xe3, 0x08, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, +0x21, 0xaa, 0x4b, 0xdb, 0xcd, 0xbf, 0xee, 0x69, +0x99, 0xd8, 0x1c, 0x14, 0x9a, 0x06, 0x1a, 0x53, +0x41, 0x31, 0xe6, 0xce, 0x1f, 0xd4, 0x72, 0x38, +0x8a, 0x8c, 0x36, 0x17, 0x94, 0x53, 0xdc, 0x7d, +0x3d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, +0x01, 0x22, 0x21, 0x54, 0x6c, 0x84, 0x5c, 0x05, +0xfe, 0xdf, 0x87, 0xdf, 0x5b, 0x19, 0x20, 0x2a, +0x5b, 0xc5, 0xf5, 0x74, 0x0b, 0x1c, 0x08, 0xc0, +0x7b, 0x3a, 0x8e, 0x5f, 0xe1, 0x9e, 0xe9, 0xd3, +0x48, 0x74, 0x07, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x91, 0x01, 0x22, 0x21, 0x1c, 0x92, 0x46, +0x25, 0xdc, 0x92, 0x34, 0x5f, 0xd0, 0x55, 0x94, +0x18, 0x84, 0x45, 0xb4, 0x16, 0xd8, 0x5c, 0x52, +0xf6, 0xb4, 0xc7, 0xf1, 0x5c, 0x54, 0x0d, 0x15, +0xd2, 0x3d, 0x28, 0xbd, 0xdc, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0x38, +0x67, 0x22, 0xec, 0x32, 0xed, 0xcd, 0x2d, 0xb4, +0xc9, 0x53, 0x73, 0x26, 0x81, 0xee, 0x96, 0xcd, +0x3e, 0x49, 0x1d, 0xb3, 0x61, 0xea, 0x0b, 0xc9, +0x0d, 0xa7, 0x05, 0x43, 0xc8, 0x7b, 0x82, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, +0x21, 0xbb, 0xf7, 0xc5, 0xeb, 0xdf, 0xb2, 0xfb, +0x0d, 0x38, 0x04, 0xc3, 0x8e, 0x33, 0xf2, 0xb5, +0x5c, 0x57, 0x4b, 0xda, 0xee, 0x5e, 0xba, 0xa4, +0x38, 0x65, 0xfa, 0xab, 0x84, 0xfd, 0xdd, 0x86, +0xf2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, +0x01, 0x22, 0x21, 0xfc, 0x1f, 0x3c, 0x66, 0x1c, +0x2a, 0xad, 0xcb, 0xa6, 0x33, 0x91, 0xfd, 0xdc, +0xc6, 0x0e, 0xff, 0x5e, 0x2f, 0xe9, 0x62, 0xe2, +0x86, 0xe5, 0x82, 0x77, 0x26, 0x0b, 0xc5, 0x57, +0x9b, 0x3d, 0xc9, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x95, 0x01, 0x22, 0x21, 0x91, 0x6b, 0x27, +0x79, 0xea, 0xc2, 0x58, 0x94, 0xce, 0xfa, 0x9d, +0xb4, 0xf3, 0xdc, 0x98, 0xad, 0x43, 0x4a, 0x7d, +0xc1, 0xc1, 0x12, 0x43, 0x4c, 0xd0, 0xcb, 0x66, +0x92, 0xd7, 0x8e, 0x11, 0x16, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0xaf, +0xc7, 0x79, 0xab, 0xda, 0xb0, 0xea, 0xa1, 0x6f, +0x34, 0x97, 0xb6, 0x0f, 0x12, 0x23, 0x64, 0x30, +0x52, 0x72, 0x3a, 0x4d, 0x8c, 0x80, 0xc7, 0x74, +0x76, 0xd6, 0xa7, 0xe7, 0xa5, 0xb8, 0x99, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, +0x21, 0xdf, 0x66, 0x8e, 0x23, 0x6b, 0x82, 0x6c, +0xcf, 0x59, 0x75, 0xfb, 0x0d, 0x88, 0x5b, 0xf8, +0x94, 0x00, 0x50, 0xa5, 0xba, 0x13, 0x11, 0x0a, +0xbf, 0x3a, 0x0b, 0x64, 0x77, 0xcd, 0x5b, 0x23, +0xd5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, +0x01, 0x22, 0x21, 0x72, 0x3b, 0x43, 0x69, 0xd5, +0x51, 0x0f, 0xb5, 0x96, 0x94, 0x01, 0x79, 0xa5, +0xae, 0x48, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xb8, 0x15, 0xe5, 0xb7, +0x62, 0x49, 0x9d, 0xb4, 0x03, 0x04, 0x51, 0x02, +0x00, 0x99, 0x01, 0x22, 0x21, 0x13, 0x71, 0x5c, +0xce, 0x0f, 0x89, 0x2f, 0xdd, 0x38, 0x6f, 0xd3, +0xfa, 0x64, 0x3b, 0x5d, 0x56, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xe9, +0x6d, 0x22, 0x70, 0x81, 0x06, 0x9a, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0x2d, +0x64, 0xe8, 0x01, 0xe5, 0x1d, 0x87, 0x21, 0xb8, +0xf5, 0x2d, 0xee, 0x94, 0x82, 0x32, 0x9e, 0x2e, +0x79, 0x43, 0xa9, 0x82, 0x24, 0xfc, 0x59, 0x6e, +0xb0, 0x36, 0xe7, 0x5c, 0x79, 0x89, 0x69, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, +0x21, 0x0d, 0xa5, 0x6c, 0x50, 0x05, 0x8c, 0xf8, +0xe2, 0x1b, 0x5c, 0xab, 0xf9, 0x6f, 0x46, 0x39, +0xac, 0x3a, 0xc3, 0x78, 0xfa, 0x54, 0x15, 0xe5, +0xf2, 0xe5, 0x8e, 0xbf, 0xaa, 0x2a, 0xb0, 0x59, +0x3a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, +0x01, 0x22, 0x21, 0x41, 0x93, 0x98, 0x58, 0xe2, +0x98, 0xd9, 0xbd, 0xb5, 0x60, 0xb5, 0x4b, 0x70, +0x44, 0x58, 0xf7, 0xde, 0x28, 0x14, 0xde, 0x96, +0x8c, 0x04, 0xd0, 0xb0, 0x06, 0xb1, 0xa0, 0xfe, +0x71, 0xcb, 0xf8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x9d, 0x01, 0x22, 0x21, 0x67, 0x88, 0x2b, +0xfa, 0x4f, 0x19, 0xc1, 0xcb, 0x4d, 0x5b, 0x1d, +0x4e, 0xe4, 0x74, 0x44, 0x5a, 0x58, 0x7a, 0xe2, +0xfc, 0x1e, 0x80, 0xef, 0x79, 0xec, 0xbb, 0x7b, +0x2b, 0xb1, 0x41, 0xcf, 0x53, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0x00, +0x93, 0xb3, 0xcc, 0x9d, 0x47, 0xe1, 0x29, 0x12, +0xcf, 0x56, 0x5a, 0x36, 0xba, 0x3f, 0x4d, 0x1e, +0xd2, 0x32, 0xac, 0x11, 0xfa, 0x1e, 0xbf, 0x5d, +0xa0, 0x9f, 0x25, 0x88, 0x1c, 0xf6, 0xec, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, +0x21, 0x40, 0xe9, 0x5a, 0x21, 0x18, 0x65, 0x7c, +0x20, 0x2a, 0x78, 0x56, 0x53, 0x67, 0x97, 0x1a, +0xd4, 0x5a, 0x12, 0x4c, 0x74, 0x5c, 0x11, 0x71, +0x5c, 0xc8, 0x31, 0xbd, 0xdb, 0xd5, 0x66, 0x61, +0xe9, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, +0x01, 0x22, 0x21, 0xb4, 0x9f, 0x9c, 0xec, 0x01, +0x5c, 0xb5, 0x97, 0x0a, 0xe6, 0xb4, 0x23, 0x4b, +0x6a, 0x6f, 0xa8, 0x00, 0x40, 0xb4, 0x20, 0x40, +0x15, 0xf6, 0x9b, 0x37, 0x3b, 0x58, 0xf9, 0x44, +0xd9, 0xa5, 0x73, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa1, 0x01, 0x22, 0x21, 0x5f, 0xb9, 0x30, +0xac, 0x51, 0x7f, 0x86, 0x98, 0xce, 0x9f, 0x92, +0x66, 0x6d, 0x09, 0x65, 0xeb, 0xe2, 0x57, 0xd2, +0xbb, 0x7c, 0xd0, 0xdb, 0x76, 0x81, 0x53, 0x3e, +0x8c, 0xa9, 0x87, 0xe5, 0x1c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0x4c, +0x4e, 0x8b, 0xe3, 0xda, 0x4f, 0xb2, 0x48, 0xc0, +0x1d, 0xe3, 0xe1, 0xa9, 0x59, 0xe8, 0xce, 0x17, +0x5a, 0xb4, 0x2b, 0xa0, 0xe4, 0x2a, 0x1f, 0x11, +0x2a, 0xf9, 0x71, 0x25, 0x4e, 0x3b, 0xd4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, +0x21, 0xad, 0x12, 0x45, 0x80, 0x70, 0xc3, 0xaf, +0x34, 0x5f, 0xa5, 0xe9, 0x75, 0x72, 0x3e, 0xe4, +0x4f, 0x7b, 0x9b, 0x46, 0x38, 0xb8, 0x96, 0xf2, +0xee, 0x5a, 0x6a, 0x6b, 0x23, 0x83, 0xd2, 0x5c, +0x9c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, +0x01, 0x22, 0x21, 0xdd, 0x2e, 0x07, 0xc0, 0x5d, +0x32, 0x3e, 0x71, 0x88, 0xf4, 0x6f, 0xbc, 0xc7, +0xe7, 0x38, 0x62, 0x0d, 0x81, 0x09, 0x2b, 0xce, +0x28, 0x42, 0x73, 0x8b, 0x28, 0xa8, 0x96, 0xf4, +0xc1, 0x42, 0x7b, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa5, 0x01, 0x22, 0x21, 0x57, 0x0e, 0x63, +0x80, 0x84, 0x3c, 0xbd, 0xa6, 0x19, 0x4a, 0x84, +0xe9, 0x45, 0x03, 0x4a, 0xbe, 0xb1, 0x1a, 0x06, +0xd6, 0x1b, 0xa5, 0x59, 0x5e, 0x8a, 0xf3, 0xbd, +0xdb, 0x62, 0x68, 0x42, 0xd9, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0xc4, +0x5d, 0x0f, 0x29, 0x17, 0xe5, 0xa7, 0x91, 0xe5, +0x61, 0xf7, 0x63, 0x61, 0x61, 0xcc, 0x40, 0x47, +0x49, 0xbd, 0x37, 0x58, 0x5c, 0xb7, 0xe2, 0x26, +0x55, 0xea, 0x33, 0xae, 0xa2, 0xd8, 0x06, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, +0x21, 0x2e, 0x52, 0xe1, 0x21, 0xcd, 0xa4, 0x01, +0x76, 0x12, 0x06, 0x4b, 0x63, 0xd4, 0x5e, 0x24, +0xcc, 0x0e, 0xf2, 0xa0, 0xf0, 0xff, 0x21, 0x83, +0xcf, 0x00, 0x48, 0xe0, 0x62, 0x7e, 0x1f, 0x21, +0x38, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, +0x01, 0x22, 0x21, 0x89, 0xbe, 0x3e, 0x3b, 0xe0, +0x21, 0x77, 0x9e, 0xa1, 0x5b, 0x45, 0x90, 0xb6, +0x34, 0x85, 0x46, 0x51, 0x6a, 0xd3, 0xc4, 0x17, +0x62, 0x22, 0xd9, 0x24, 0xd5, 0x1c, 0x6b, 0x96, +0x50, 0xf2, 0x61, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa9, 0x01, 0x22, 0x21, 0xc9, 0x1b, 0xbc, +0x6a, 0xc7, 0x4b, 0x06, 0x6f, 0x0f, 0x16, 0xf2, +0xd2, 0x4b, 0x51, 0xa5, 0xfc, 0xa6, 0x64, 0x7a, +0x03, 0xfd, 0x1e, 0x95, 0xf9, 0x56, 0x73, 0x42, +0x2a, 0x87, 0x70, 0x61, 0xce, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0x1d, +0xc4, 0xe3, 0x09, 0x96, 0x50, 0x58, 0x36, 0x1c, +0x07, 0xe1, 0xc9, 0x73, 0x9a, 0xb8, 0x85, 0xc1, +0xb0, 0x5c, 0xec, 0xb5, 0x3d, 0xc8, 0xef, 0x77, +0x6f, 0xf6, 0x6a, 0x1e, 0x2f, 0x2d, 0x36, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, +0x21, 0x07, 0x13, 0xae, 0x68, 0x2e, 0xf0, 0xe2, +0x23, 0x0d, 0xba, 0xa1, 0x8f, 0xb1, 0x1b, 0x7d, +0xeb, 0x43, 0x84, 0x85, 0xa9, 0xe5, 0x9e, 0xcf, +0x10, 0x31, 0x64, 0xc2, 0x62, 0xbc, 0x92, 0x5f, +0x83, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, +0x01, 0x22, 0x21, 0x2a, 0xd2, 0x36, 0xa9, 0x0e, +0xe0, 0x3e, 0x51, 0x38, 0x55, 0x83, 0x0d, 0x82, +0xd8, 0x1b, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x19, 0x78, 0xaa, 0x22, +0xf8, 0xbb, 0x8f, 0x29, 0x03, 0x04, 0x51, 0x02, +0x00, 0xad, 0x01, 0x22, 0x21, 0x4d, 0xd3, 0x56, +0xa3, 0x4b, 0x95, 0x6f, 0x2d, 0x56, 0x2f, 0xb1, +0x82, 0xcd, 0xf1, 0xae, 0x05, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x76, +0xee, 0xa6, 0x40, 0x38, 0xc7, 0x61, 0x03, 0x04, +0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0x3f, +0x69, 0x25, 0x51, 0xa6, 0x88, 0x76, 0xa2, 0xf6, +0x40, 0x97, 0x08, 0x1f, 0xdd, 0x2e, 0xdf, 0xca, +0xc7, 0xf3, 0x32, 0x04, 0xd7, 0x28, 0xb7, 0xd3, +0x93, 0x1f, 0x66, 0xde, 0x3d, 0x74, 0x42, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, +0x21, 0x09, 0x28, 0x8e, 0xa5, 0xbf, 0x57, 0xba, +0xe9, 0xbe, 0x1b, 0xc9, 0xcc, 0xc3, 0x2e, 0x99, +0xa0, 0x14, 0x7b, 0xa1, 0xbc, 0xad, 0x17, 0xce, +0xca, 0xa3, 0x6b, 0x8d, 0x1e, 0x32, 0x20, 0x1b, +0x52, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, +0x01, 0x22, 0x21, 0xb4, 0xab, 0x75, 0xa6, 0x7a, +0x9e, 0x3f, 0x9a, 0x90, 0x6f, 0xcc, 0xe2, 0x16, +0x65, 0x3d, 0xf1, 0x86, 0x38, 0xe4, 0x15, 0x35, +0x15, 0x61, 0x75, 0xb6, 0xe2, 0xa0, 0x22, 0xa9, +0x21, 0x19, 0xe0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb1, 0x01, 0x22, 0x21, 0x35, 0x64, 0x65, +0x0f, 0x20, 0x42, 0xc5, 0xa6, 0x72, 0x06, 0x40, +0x02, 0x03, 0xf0, 0xd5, 0xb9, 0xa3, 0xdf, 0x8d, +0x1e, 0x4b, 0x83, 0xd8, 0x19, 0x34, 0xe8, 0xc9, +0xa5, 0x8c, 0xba, 0xc6, 0x82, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0xee, +0x2b, 0xee, 0x86, 0x17, 0x14, 0x11, 0xc6, 0x2b, +0x05, 0x2a, 0xc2, 0xa9, 0x9c, 0x56, 0x4d, 0x5b, +0x42, 0x35, 0x35, 0x5b, 0x1d, 0xf1, 0x44, 0xb8, +0x84, 0x9f, 0xa0, 0xbf, 0xe9, 0x7f, 0x5a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, +0x21, 0xff, 0xee, 0x1d, 0x29, 0xcc, 0x37, 0xec, +0x8b, 0x38, 0xf7, 0xd7, 0xb6, 0xf3, 0x3f, 0xff, +0x15, 0xbe, 0xf0, 0x98, 0x06, 0x51, 0x0b, 0x24, +0xd2, 0x9f, 0x81, 0x33, 0x09, 0xe9, 0xa4, 0xa5, +0xd3, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, +0x01, 0x22, 0x21, 0x50, 0xbf, 0x49, 0xe2, 0x30, +0x95, 0x7c, 0x41, 0x8f, 0xce, 0x98, 0xcc, 0x64, +0x83, 0x9e, 0x68, 0x67, 0x78, 0xef, 0xd9, 0xe9, +0xbf, 0x31, 0x41, 0xeb, 0x81, 0x19, 0x96, 0x50, +0xc7, 0xe8, 0x5c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb5, 0x01, 0x22, 0x21, 0xd0, 0xec, 0xe3, +0x2d, 0x88, 0x5f, 0x3a, 0x31, 0x51, 0x11, 0xcf, +0x4c, 0x6a, 0xa5, 0x7f, 0x74, 0x25, 0xca, 0x95, +0x85, 0xb5, 0x8a, 0x48, 0x13, 0x98, 0xd0, 0x04, +0xd9, 0x58, 0x7a, 0xcb, 0x48, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0x4b, +0x16, 0x17, 0x5a, 0xa5, 0xa2, 0x2a, 0x53, 0x19, +0x76, 0xa3, 0x71, 0xd4, 0xcf, 0x64, 0x0b, 0x77, +0x4f, 0x9c, 0x81, 0x2e, 0x99, 0xf1, 0xf0, 0x6d, +0xae, 0xba, 0x17, 0xe9, 0x6a, 0x69, 0xc1, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, +0x21, 0x2b, 0x92, 0xb7, 0x76, 0x3b, 0x4b, 0xbd, +0xca, 0x0d, 0xe5, 0xa9, 0x7f, 0xd7, 0x93, 0xbf, +0x6b, 0xfc, 0x4b, 0x56, 0xd7, 0xb9, 0x75, 0x2e, +0xdc, 0x18, 0xc1, 0x20, 0xe1, 0x6e, 0x3e, 0x77, +0x7b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, +0x01, 0x22, 0x21, 0x31, 0xf8, 0x2f, 0x2a, 0xb0, +0x71, 0x82, 0x6e, 0x63, 0x1c, 0xe0, 0x13, 0x86, +0xd2, 0x29, 0xa9, 0x0d, 0xfa, 0x43, 0xfd, 0x10, +0x72, 0x76, 0x4b, 0x78, 0x2b, 0x89, 0x1a, 0xaa, +0x38, 0x67, 0xaf, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb9, 0x01, 0x22, 0x21, 0x13, 0x24, 0xba, +0xcf, 0xd3, 0x9e, 0x5f, 0x38, 0xae, 0x7b, 0x7f, +0xf1, 0x4b, 0x5c, 0x3f, 0x68, 0x75, 0xfd, 0x93, +0xe2, 0x12, 0x01, 0xf1, 0x70, 0x39, 0xb6, 0x79, +0xc0, 0xb0, 0x36, 0xca, 0x14, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0xb3, +0xb8, 0x8e, 0xac, 0x24, 0xc9, 0x81, 0x49, 0xcb, +0x66, 0xd1, 0x37, 0x0f, 0x5d, 0x60, 0x9d, 0x98, +0x06, 0x3a, 0xef, 0x7b, 0xcc, 0x9a, 0x33, 0x72, +0x08, 0x20, 0x96, 0xec, 0xe6, 0xcb, 0xb5, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, +0x21, 0x31, 0x89, 0x3a, 0x08, 0xef, 0x71, 0x37, +0x0e, 0x05, 0x9c, 0x76, 0xe0, 0x17, 0xdc, 0x47, +0x2b, 0xc5, 0x57, 0x9b, 0x9b, 0xee, 0xc7, 0x18, +0x2a, 0x61, 0x0c, 0xee, 0x89, 0x3e, 0x3d, 0x29, +0x5e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, +0x01, 0x22, 0x21, 0x9d, 0x2b, 0xad, 0x77, 0xb0, +0xe6, 0xd0, 0x6c, 0x7f, 0x1a, 0x33, 0x76, 0x62, +0x81, 0x25, 0xa2, 0x0c, 0x40, 0x0a, 0xa8, 0xa9, +0x8f, 0x11, 0x26, 0xcd, 0x34, 0xde, 0xe7, 0x22, +0x77, 0xb1, 0x56, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xbd, 0x01, 0x22, 0x21, 0x90, 0xa4, 0x39, +0x6c, 0xa4, 0xb3, 0x01, 0xfe, 0x89, 0x12, 0x1e, +0x2a, 0xb2, 0x2e, 0xe3, 0xdf, 0xc6, 0xa2, 0xc4, +0xca, 0x27, 0xa3, 0x95, 0x82, 0xeb, 0xed, 0xa4, +0x16, 0x31, 0xc3, 0x6b, 0xaa, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0x57, +0xfb, 0xa0, 0xe8, 0x6a, 0xe8, 0x91, 0x30, 0xde, +0xe8, 0xb1, 0x07, 0x8b, 0xd4, 0x83, 0x17, 0x23, +0xeb, 0x34, 0x51, 0xaf, 0xfd, 0x4f, 0xa6, 0xe2, +0xe5, 0xfb, 0x45, 0x6c, 0x81, 0x34, 0xa2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, +0x21, 0xc1, 0x99, 0xdc, 0x7f, 0xa5, 0x17, 0x5c, +0x89, 0x68, 0xda, 0xd8, 0x42, 0x36, 0x9e, 0x7d, +0xee, 0xc8, 0xf0, 0xa9, 0x8b, 0x7b, 0x49, 0x7f, +0x62, 0x47, 0x0c, 0x05, 0x24, 0xfb, 0x26, 0x9d, +0xe8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, +0x01, 0x22, 0x21, 0xc4, 0x18, 0x33, 0x10, 0x7a, +0x4a, 0xbf, 0x9f, 0x7b, 0xb5, 0xd1, 0xac, 0x5d, +0xa2, 0x9e, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xa0, 0x83, 0x25, 0x74, +0x9b, 0xcd, 0xd2, 0x45, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc1, 0x01, 0x22, 0x21, 0xdc, 0xaa, 0x15, +0xb7, 0x4d, 0xbf, 0xbd, 0xd5, 0x03, 0x6b, 0x0d, +0xd0, 0x29, 0x81, 0x69, 0xe6, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x6c, +0x33, 0xfd, 0x98, 0x6d, 0x01, 0x8d, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0x66, +0x38, 0xd1, 0xca, 0x6a, 0x6d, 0x75, 0x72, 0x7d, +0x55, 0xfb, 0xfe, 0x67, 0x4c, 0x66, 0x5f, 0x81, +0x01, 0x9f, 0x96, 0x3b, 0x04, 0x85, 0x2f, 0x5e, +0xae, 0xdb, 0x36, 0xbe, 0x8e, 0x44, 0x45, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, +0x21, 0x0b, 0x88, 0x3c, 0x86, 0x34, 0x63, 0xbd, +0xae, 0x73, 0xe2, 0x61, 0x29, 0x96, 0xaf, 0x58, +0xd5, 0x32, 0x96, 0x2f, 0x17, 0xa1, 0x89, 0xa0, +0x5a, 0x73, 0x54, 0x78, 0x12, 0x86, 0xa5, 0x6c, +0xcf, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, +0x01, 0x22, 0x21, 0x59, 0x4e, 0xa1, 0x66, 0xb3, +0x15, 0xa2, 0xe8, 0x88, 0xd4, 0xf8, 0xcb, 0x0d, +0x36, 0x9d, 0x08, 0xb0, 0x52, 0x4b, 0xa1, 0x8f, +0x31, 0xf0, 0xdf, 0x92, 0x1a, 0x5a, 0xdd, 0x00, +0xdf, 0xc0, 0x91, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc5, 0x01, 0x22, 0x21, 0x4c, 0x30, 0x41, +0x2d, 0x9c, 0x65, 0x6c, 0xdc, 0x53, 0x83, 0xc0, +0x10, 0xdc, 0xe2, 0xe8, 0x17, 0x29, 0x23, 0x09, +0x27, 0xbd, 0xc0, 0xba, 0x8a, 0x39, 0xf3, 0x15, +0x9b, 0x5e, 0x35, 0xc6, 0x97, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0xcd, +0x3b, 0xed, 0x72, 0x93, 0xe4, 0x10, 0x89, 0x37, +0x5d, 0x60, 0x11, 0x81, 0xa4, 0x04, 0x77, 0x92, +0x2b, 0xcc, 0xdf, 0x54, 0x09, 0x2b, 0x94, 0xf9, +0x2c, 0xbe, 0xb5, 0x7b, 0x17, 0x89, 0x26, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, +0x21, 0x27, 0x1c, 0x67, 0x43, 0x94, 0x33, 0x3e, +0xcd, 0x67, 0x85, 0xfb, 0xc9, 0x76, 0xc5, 0x78, +0x6f, 0x14, 0x1e, 0x69, 0x22, 0x2e, 0x0a, 0x9d, +0x65, 0x66, 0x62, 0x2e, 0xa3, 0xdc, 0xc6, 0x2c, +0x18, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, +0x01, 0x22, 0x21, 0x73, 0x54, 0x75, 0x0c, 0x1d, +0xca, 0x3e, 0x89, 0xda, 0x48, 0xea, 0x7c, 0x78, +0x66, 0x88, 0xe1, 0x9c, 0x44, 0xc3, 0x2a, 0x15, +0xdc, 0x41, 0x43, 0x8f, 0x6a, 0xc6, 0x51, 0x23, +0xcf, 0xa3, 0xee, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc9, 0x01, 0x22, 0x21, 0xa0, 0x89, 0x0b, +0xd6, 0x12, 0x53, 0x9c, 0xc3, 0xa9, 0xf9, 0x73, +0xb4, 0x1a, 0x94, 0x18, 0x89, 0x01, 0xbc, 0x74, +0x29, 0x7e, 0x60, 0x93, 0x2c, 0xde, 0xa5, 0xdb, +0x62, 0x1f, 0x95, 0x88, 0x2b, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0xd2, +0x1d, 0xdf, 0xab, 0xb1, 0xbc, 0x7e, 0x14, 0x4e, +0xee, 0x76, 0x00, 0x08, 0x70, 0x46, 0x36, 0x7e, +0x4e, 0xc3, 0x13, 0x3f, 0x52, 0x2a, 0x2e, 0x1b, +0x20, 0x36, 0xb9, 0x55, 0x72, 0x17, 0xa5, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, +0x21, 0xd5, 0x25, 0x03, 0xa1, 0xab, 0x1e, 0x92, +0x61, 0x74, 0x3c, 0x08, 0xae, 0x25, 0xab, 0x0a, +0x96, 0xc9, 0x14, 0x19, 0x56, 0xfb, 0xd7, 0x59, +0xde, 0xed, 0x92, 0x2b, 0x31, 0x95, 0x8e, 0x22, +0xf1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, +0x01, 0x22, 0x21, 0xa0, 0xba, 0x28, 0x1e, 0xb1, +0x44, 0xe7, 0x95, 0xb9, 0x29, 0x10, 0x1c, 0x16, +0x53, 0x97, 0xc9, 0xfc, 0x2f, 0x1c, 0x78, 0xab, +0xfa, 0xe0, 0x30, 0xe8, 0x76, 0x21, 0x0a, 0x14, +0x6f, 0xa5, 0x92, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xcd, 0x01, 0x22, 0x21, 0x68, 0xf0, 0xd2, +0x2d, 0x87, 0x40, 0xe1, 0xbc, 0x5d, 0x0b, 0x86, +0x4d, 0xf4, 0x11, 0x81, 0xd7, 0x5f, 0xf8, 0xf9, +0xb7, 0x08, 0x9a, 0x75, 0x8a, 0xa3, 0xbc, 0x5f, +0x99, 0x80, 0x1d, 0xd0, 0x4e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0xf3, +0x27, 0x51, 0x40, 0xc4, 0x6a, 0x55, 0x46, 0x07, +0x9b, 0xe3, 0xc4, 0xef, 0xf3, 0xa5, 0x09, 0x5f, +0x6d, 0xeb, 0x62, 0x90, 0x19, 0xd8, 0x31, 0x6f, +0xa5, 0xd0, 0xd7, 0x4c, 0xf4, 0xcb, 0x26, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, +0x21, 0x7e, 0x63, 0xdd, 0x92, 0xd0, 0x52, 0xdd, +0x39, 0xc2, 0x2f, 0xbe, 0x4a, 0xba, 0xb6, 0x2c, +0x68, 0x6f, 0x03, 0x59, 0x7a, 0xaa, 0xc7, 0xb2, +0x78, 0x60, 0x52, 0xe4, 0xb3, 0xd5, 0x2f, 0x89, +0x68, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, +0x01, 0x22, 0x21, 0x39, 0xe3, 0x66, 0x2f, 0x2d, +0xe4, 0x20, 0x24, 0x57, 0x98, 0x39, 0x73, 0xe5, +0xf7, 0xb1, 0x1d, 0x0b, 0xb0, 0x36, 0xd6, 0x01, +0xb7, 0xd1, 0x0d, 0xa2, 0x00, 0x0b, 0x18, 0xa4, +0xd6, 0x28, 0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd1, 0x01, 0x22, 0x21, 0xfe, 0x9c, 0x4c, +0x10, 0x0b, 0x4a, 0x57, 0xbd, 0x10, 0x36, 0x6f, +0xe1, 0xc0, 0xa1, 0xbf, 0xe2, 0x7a, 0x4f, 0xfc, +0x67, 0x97, 0x0a, 0x97, 0xc6, 0x9b, 0x77, 0xbb, +0xca, 0x56, 0xd9, 0x22, 0xce, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0x35, +0xfc, 0x41, 0x95, 0x3a, 0x6c, 0xd1, 0xd2, 0x98, +0xe0, 0xa8, 0x5a, 0xf3, 0x73, 0xc8, 0x73, 0xe5, +0xd8, 0x7a, 0x51, 0x9c, 0x10, 0x77, 0xf7, 0xca, +0xf8, 0x58, 0xba, 0x71, 0xf0, 0xe1, 0x07, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, +0x21, 0x61, 0x99, 0x08, 0xcd, 0x9d, 0x55, 0x00, +0x5e, 0x8b, 0x33, 0xb7, 0xf2, 0x9b, 0xfd, 0x26, +0x0e, 0xc3, 0x53, 0x1e, 0xfe, 0xac, 0xfc, 0xa5, +0x1a, 0x86, 0xe9, 0x70, 0xe7, 0x73, 0x67, 0xcf, +0x39, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, +0x01, 0x22, 0x21, 0x3f, 0xf3, 0xa2, 0x23, 0x10, +0x44, 0x91, 0x45, 0x9b, 0x20, 0xe1, 0x67, 0xef, +0x37, 0xd1, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe9, 0x69, 0x72, 0xdf, +0x8f, 0x45, 0x34, 0x03, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd5, 0x01, 0x22, 0x21, 0x4e, 0xc2, 0xc1, +0x65, 0xb6, 0x2c, 0x03, 0xfc, 0x09, 0xa9, 0x20, +0x14, 0x7d, 0x96, 0x26, 0x78, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x43, +0xe9, 0xe1, 0xbe, 0x62, 0x79, 0x1b, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0xe9, +0xf0, 0x57, 0xfa, 0x75, 0x49, 0xee, 0xf7, 0x97, +0xc6, 0x9f, 0x21, 0x7f, 0xd9, 0xa8, 0xe3, 0x94, +0xe4, 0xdf, 0xe3, 0xa1, 0xb7, 0xfe, 0x64, 0xd6, +0x7c, 0x54, 0x84, 0x08, 0x90, 0x29, 0x44, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, +0x21, 0xe2, 0x63, 0x8b, 0xc4, 0xb5, 0x0f, 0xa9, +0x50, 0x76, 0x9c, 0x75, 0x27, 0xe0, 0x6a, 0xd0, +0xcb, 0x99, 0x23, 0x2f, 0xb3, 0x7a, 0x74, 0x66, +0x4a, 0x0e, 0x27, 0xf0, 0x65, 0xfa, 0xcb, 0x12, +0xbb, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, +0x01, 0x22, 0x21, 0x72, 0x73, 0xe6, 0xbc, 0x1d, +0x22, 0x5b, 0x35, 0xc0, 0x0c, 0x4c, 0x9e, 0x85, +0x8b, 0x7d, 0x9a, 0x77, 0x64, 0x06, 0xfb, 0xe5, +0x15, 0x29, 0x30, 0x48, 0xcd, 0xea, 0xd6, 0x6f, +0x3c, 0x21, 0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd9, 0x01, 0x22, 0x21, 0x56, 0x84, 0x40, +0xf6, 0xb3, 0xca, 0xe8, 0xe2, 0x31, 0x81, 0xb2, +0xd2, 0xd9, 0xa5, 0xd7, 0x47, 0xea, 0xb1, 0x02, +0xfe, 0x13, 0xbe, 0x91, 0xa6, 0x42, 0x69, 0xc1, +0xa7, 0xc6, 0xe0, 0xf0, 0x04, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0xc9, +0x5c, 0x06, 0xe0, 0x92, 0x15, 0xc8, 0xbc, 0x99, +0xe5, 0xc3, 0x6b, 0xcf, 0x9c, 0xd0, 0x63, 0x4e, +0xd2, 0xc3, 0x40, 0xf5, 0x8f, 0x66, 0x32, 0x66, +0xbc, 0x1a, 0xd5, 0xc1, 0x31, 0xf7, 0xe0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, +0x21, 0x2a, 0x60, 0xb5, 0x1a, 0x96, 0xe5, 0x06, +0xba, 0x7e, 0x93, 0x11, 0xf2, 0xc6, 0x42, 0x51, +0x4f, 0xdb, 0xee, 0xa6, 0x5e, 0x8d, 0xd6, 0x36, +0xbd, 0x30, 0xb0, 0xd8, 0xd1, 0x47, 0x71, 0xc4, +0x46, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, +0x01, 0x22, 0x21, 0x77, 0xd5, 0x95, 0xe6, 0xbb, +0x70, 0x68, 0x4d, 0x9b, 0xe8, 0x14, 0xce, 0xfb, +0x8e, 0xb4, 0xf7, 0xc4, 0x0c, 0xd1, 0xd6, 0x06, +0x14, 0xc2, 0xcc, 0x7d, 0x3b, 0x46, 0xae, 0x91, +0x63, 0x46, 0x44, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xdd, 0x01, 0x22, 0x21, 0xcf, 0x23, 0xff, +0x3f, 0x0d, 0xf0, 0x1e, 0xe7, 0xb6, 0xd9, 0xc8, +0x69, 0x26, 0x9e, 0x9f, 0x31, 0xab, 0x8d, 0x3d, +0x53, 0xc2, 0xca, 0xe4, 0xb1, 0x35, 0x2b, 0x09, +0x32, 0x53, 0xec, 0xdb, 0xc6, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0xa2, +0xf6, 0xe8, 0x9b, 0xac, 0xd4, 0xa2, 0x54, 0x17, +0xf4, 0x53, 0x09, 0xf5, 0x8b, 0x56, 0x74, 0xdd, +0xa7, 0xe1, 0xad, 0xf4, 0xc7, 0x69, 0xa8, 0xaf, +0xd5, 0x26, 0x09, 0xda, 0x47, 0x1e, 0xdf, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, +0x21, 0xdc, 0x9d, 0x8f, 0x0c, 0xeb, 0xb6, 0x1d, +0x8a, 0x02, 0xdb, 0x8d, 0xb4, 0xad, 0xe0, 0x3c, +0x48, 0xc0, 0xad, 0x29, 0x9f, 0xa3, 0xc4, 0x3f, +0x1d, 0xcf, 0x15, 0xa3, 0xe8, 0x95, 0x14, 0x56, +0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, +0x01, 0x22, 0x21, 0x87, 0xb3, 0x0d, 0x5e, 0x54, +0x21, 0xa9, 0x84, 0xc2, 0xf2, 0x9d, 0x56, 0x9b, +0xfa, 0x40, 0xc9, 0x4c, 0xc1, 0xf7, 0xe6, 0xe2, +0x04, 0x6f, 0xce, 0xa7, 0x60, 0xdf, 0xe2, 0x7f, +0x1a, 0xb3, 0x7a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe1, 0x01, 0x22, 0x21, 0x96, 0xd8, 0x39, +0x93, 0xe5, 0xd4, 0xfd, 0x33, 0x2e, 0xa7, 0x51, +0x49, 0xe2, 0x04, 0x10, 0xf1, 0xf8, 0xbc, 0xc9, +0xfc, 0x60, 0x79, 0xb2, 0x69, 0xad, 0x77, 0x50, +0xdf, 0x95, 0x11, 0x4f, 0x51, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0x78, +0x8e, 0xd7, 0x5b, 0x76, 0xc5, 0xe5, 0x5e, 0xd9, +0x2e, 0x50, 0x0c, 0x5c, 0xd8, 0xa3, 0xcc, 0x54, +0x7e, 0x28, 0xe8, 0x3f, 0xbb, 0x8c, 0x8f, 0xdb, +0x53, 0xf1, 0xcb, 0x76, 0x1d, 0xa6, 0x25, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, +0x21, 0x2a, 0xda, 0x6b, 0xcd, 0xe6, 0x9a, 0x9d, +0xa8, 0x9d, 0x92, 0xf3, 0xe1, 0x0d, 0xa0, 0xcb, +0x4d, 0x5e, 0x76, 0xbb, 0x6d, 0xdf, 0x16, 0x34, +0x46, 0xba, 0x95, 0x35, 0x6c, 0x2a, 0x7d, 0x00, +0xc8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, +0x01, 0x22, 0x21, 0x48, 0x3f, 0x02, 0xbb, 0xb3, +0x07, 0x94, 0xb0, 0x6c, 0xce, 0xd8, 0xa2, 0xf0, +0x94, 0x7f, 0x1d, 0xd5, 0xd3, 0x9e, 0xb7, 0x04, +0xc4, 0x1a, 0xd5, 0x99, 0xac, 0xce, 0x45, 0xbb, +0x31, 0x02, 0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe5, 0x01, 0x22, 0x21, 0x56, 0x30, 0x6b, +0x99, 0xa6, 0x02, 0x19, 0xfe, 0xab, 0x9f, 0xdb, +0xab, 0x6d, 0x7a, 0x42, 0xa4, 0xde, 0xfc, 0xaf, +0x12, 0xaf, 0x9d, 0x11, 0xca, 0x27, 0xf4, 0x59, +0x41, 0x0b, 0x2a, 0xab, 0x21, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x3c, +0xcd, 0xf8, 0x62, 0x1a, 0x90, 0x2c, 0x0a, 0x9a, +0x58, 0xb8, 0x18, 0x0f, 0x3f, 0xdc, 0x62, 0x5a, +0xe3, 0x72, 0xf5, 0xeb, 0xaf, 0x91, 0x4a, 0xf8, +0x81, 0x1a, 0xa8, 0x85, 0x92, 0x34, 0x1b, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, +0x21, 0x66, 0xa5, 0x37, 0x8d, 0x03, 0xc3, 0xa7, +0x2b, 0x14, 0xe4, 0x2f, 0xbe, 0xe7, 0x06, 0x76, +0xa6, 0x57, 0x18, 0xfe, 0x16, 0xba, 0xa7, 0x5c, +0x5d, 0xfe, 0x75, 0x8f, 0x1f, 0x5f, 0x06, 0xca, +0x21, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, +0x01, 0x22, 0x21, 0xcb, 0x1c, 0xfb, 0xd0, 0x52, +0x39, 0x1b, 0x46, 0x08, 0x0f, 0x49, 0xd6, 0x01, +0x3b, 0xf5, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x57, 0x98, 0x34, 0x8d, +0x10, 0xc1, 0xa8, 0x42, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe9, 0x01, 0x22, 0x21, 0x6a, 0x95, 0x13, +0x1a, 0xd6, 0x23, 0x8a, 0x01, 0xd1, 0xbd, 0xac, +0xa3, 0xa5, 0xbb, 0xb5, 0x21, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x45, +0x30, 0xd9, 0xfd, 0x43, 0xfa, 0xb3, 0x03, 0x04, +0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0xd3, +0xb5, 0x21, 0xcb, 0xe1, 0xc7, 0x8f, 0x68, 0x65, +0xe1, 0x4a, 0x82, 0x74, 0x3c, 0xe5, 0x5c, 0x11, +0x9e, 0x1b, 0x2c, 0x55, 0x3b, 0x4b, 0x96, 0x51, +0x20, 0x81, 0xff, 0x5e, 0x08, 0xb3, 0xc0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, +0x21, 0x76, 0xe9, 0x77, 0x73, 0x6f, 0x49, 0x39, +0x38, 0x71, 0x63, 0x4e, 0xc8, 0x56, 0x41, 0xd0, +0xfe, 0x7f, 0x16, 0xbc, 0x55, 0xa1, 0x5f, 0xdf, +0xe4, 0x77, 0x01, 0xc2, 0x68, 0x9d, 0x22, 0x5e, +0x15, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, +0x01, 0x22, 0x21, 0xaa, 0x7f, 0x47, 0xf7, 0x69, +0x3d, 0x8b, 0x24, 0xfc, 0xf0, 0xcd, 0xa5, 0x43, +0x66, 0x6e, 0xbb, 0xb8, 0x59, 0x0f, 0xb5, 0x3b, +0x14, 0xb0, 0x5e, 0x38, 0x94, 0xd1, 0xc9, 0xf8, +0x09, 0xbd, 0xf9, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xed, 0x01, 0x22, 0x21, 0x31, 0x8f, 0x2f, +0xf2, 0xc1, 0xd4, 0xfe, 0x16, 0x2f, 0x88, 0xdd, +0x82, 0x24, 0x84, 0x5b, 0x9b, 0x31, 0xec, 0x77, +0x27, 0xd6, 0xad, 0x5b, 0x03, 0x4b, 0x3e, 0x70, +0x9c, 0xc5, 0x08, 0x34, 0x14, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0x0c, +0xd7, 0x88, 0xd0, 0xbb, 0x4c, 0x1a, 0x5c, 0x6e, +0xeb, 0xda, 0x3a, 0x26, 0xbe, 0x3b, 0xb2, 0x38, +0x81, 0xd1, 0x40, 0x6f, 0x74, 0x4d, 0x00, 0xc1, +0x01, 0xd9, 0xa9, 0x95, 0x9a, 0x0a, 0x0c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x01, 0x22, +0x21, 0x38, 0x80, 0x00, 0x0f, 0xe5, 0x3b, 0xee, +0x16, 0x79, 0xbe, 0x15, 0xb7, 0x0c, 0x56, 0x59, +0xfa, 0x4a, 0x4c, 0x10, 0x36, 0xef, 0xb8, 0xc7, +0xd4, 0xd1, 0x6a, 0xfe, 0xb3, 0x5a, 0x21, 0xe2, +0x06, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf0, +0x01, 0x22, 0x21, 0x58, 0xa1, 0x25, 0x45, 0xae, +0xeb, 0x10, 0x3d, 0x09, 0xd8, 0xa0, 0xa8, 0x26, +0x96, 0xd7, 0x3f, 0x86, 0x63, 0x16, 0x7d, 0x0d, +0xc8, 0x84, 0x7a, 0x4c, 0x78, 0x13, 0x1a, 0x31, +0xa8, 0xea, 0xb2, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf1, 0x01, 0x22, 0x21, 0x3a, 0x13, 0xe0, +0x03, 0x5e, 0xea, 0x5e, 0x75, 0x53, 0x59, 0x88, +0x5f, 0x74, 0x89, 0xbb, 0x49, 0xfd, 0x55, 0x95, +0x46, 0xfa, 0x59, 0x63, 0xe5, 0x08, 0x14, 0x00, +0x9a, 0xd8, 0x3a, 0xe7, 0x5f, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf2, 0x01, 0x22, 0x21, 0x0e, +0xca, 0xb4, 0xb9, 0x65, 0xff, 0xce, 0xf5, 0xc7, +0x56, 0xf1, 0x2b, 0x9e, 0xc0, 0x88, 0x99, 0x24, +0x70, 0x6d, 0x30, 0xc9, 0xd7, 0xc8, 0x68, 0x47, +0x5d, 0x58, 0x2d, 0xdf, 0xd7, 0x54, 0x1d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf3, 0x01, 0x22, +0x21, 0xbb, 0x47, 0xc2, 0x6e, 0x07, 0x75, 0x55, +0xd8, 0x43, 0x90, 0x1b, 0x7b, 0x11, 0xb9, 0x25, +0xa7, 0x50, 0x17, 0x01, 0xd0, 0xc5, 0x09, 0xb6, +0xba, 0x63, 0x94, 0xc8, 0xf9, 0xd5, 0xa4, 0x51, +0x6d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf4, +0x01, 0x22, 0x21, 0x01, 0xe5, 0xaa, 0xe7, 0x0b, +0x42, 0x3f, 0x90, 0xe2, 0x58, 0x42, 0xaf, 0x20, +0x92, 0xe3, 0x22, 0x20, 0xf8, 0xb2, 0x20, 0xc9, +0x4d, 0xcb, 0x79, 0x44, 0x09, 0x8e, 0x7e, 0x7d, +0x94, 0x00, 0x10, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf5, 0x01, 0x22, 0x21, 0xc7, 0xc9, 0x46, +0xa8, 0x98, 0x08, 0x47, 0x17, 0x60, 0xaa, 0x2d, +0xe2, 0x84, 0xd5, 0x59, 0x8d, 0xc9, 0x4d, 0xe8, +0x9b, 0x29, 0x6f, 0x24, 0x98, 0xf7, 0xfa, 0x15, +0x2e, 0x4f, 0x95, 0x0e, 0x14, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xf6, 0x01, 0x22, 0x21, 0x44, +0xc0, 0xea, 0xff, 0xa2, 0xa2, 0x21, 0x33, 0x43, +0x94, 0x70, 0x15, 0xe4, 0xfc, 0x49, 0x7e, 0x24, +0x19, 0x83, 0x73, 0x85, 0x2a, 0x31, 0xc0, 0x52, +0x59, 0xc9, 0x63, 0xe1, 0xb7, 0x66, 0xcb, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xf7, 0x01, 0x22, +0x21, 0xdc, 0xfd, 0x80, 0x02, 0xba, 0x3b, 0xcf, +0x1a, 0xc5, 0xb5, 0xfd, 0x63, 0xa4, 0xb8, 0x66, +0x8c, 0xa7, 0x9e, 0x00, 0x10, 0xa9, 0xe4, 0x5d, +0x3f, 0x65, 0x4d, 0xdb, 0xa8, 0x0b, 0x47, 0x61, +0x5a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xf8, +0x01, 0x22, 0x21, 0xe3, 0x51, 0x9a, 0x6f, 0x49, +0x83, 0xc2, 0xbd, 0x47, 0x1b, 0x66, 0xea, 0x8d, +0x9e, 0xda, 0xb1, 0x46, 0xc3, 0x47, 0x77, 0xd5, +0xcc, 0x4d, 0x50, 0x69, 0x37, 0x57, 0xea, 0x1f, +0x66, 0x0a, 0xf2, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xf9, 0x01, 0x22, 0x21, 0x2f, 0xd6, 0xd1, +0xda, 0x96, 0x2f, 0x3f, 0x85, 0xb4, 0x1c, 0xef, +0x69, 0x5e, 0x7a, 0x1e, 0x86, 0xdf, 0xce, 0x2f, +0x14, 0xf7, 0x4a, 0xde, 0x59, 0xfb, 0x28, 0xde, +0x81, 0xac, 0x3b, 0x3d, 0x47, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfa, 0x01, 0x22, 0x21, 0xc1, +0x2b, 0x67, 0x70, 0x33, 0x61, 0x4c, 0x61, 0x83, +0x08, 0xf1, 0x69, 0xb3, 0xa4, 0x40, 0x0e, 0x49, +0x72, 0x0b, 0xc3, 0x52, 0x65, 0xf5, 0x47, 0xeb, +0x26, 0xc1, 0xb1, 0x92, 0x4d, 0x2c, 0x61, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xfb, 0x01, 0x22, +0x21, 0x1e, 0x65, 0x3d, 0xf1, 0x6d, 0xd7, 0x2e, +0x92, 0x28, 0x09, 0x57, 0xa2, 0xf7, 0x34, 0x98, +0xe8, 0xe6, 0xbd, 0x42, 0x30, 0x1f, 0xcc, 0xcf, +0x1c, 0xbd, 0xfb, 0x93, 0xbd, 0xbc, 0x61, 0xb4, +0x73, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xfc, +0x01, 0x22, 0x21, 0x28, 0x32, 0xc0, 0x7d, 0x81, +0xe9, 0x48, 0x57, 0x87, 0x1a, 0x21, 0x49, 0x4c, +0x66, 0x3a, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xc7, 0x15, 0x4b, 0xa0, +0x2b, 0x4b, 0x9b, 0xc4, 0x03, 0x04, 0x51, 0x02, +0x00, 0xfd, 0x01, 0x22, 0x21, 0xef, 0xc0, 0x19, +0x9e, 0x4e, 0x0a, 0x8a, 0x88, 0xa6, 0xb2, 0x8f, +0xca, 0x89, 0xb1, 0xd7, 0xb7, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x21, +0xf3, 0xc1, 0xad, 0x3e, 0x0b, 0x2f, 0x03, 0x04, +0x51, 0x02, 0x00, 0xfe, 0x01, 0x22, 0x21, 0xff, +0x41, 0x78, 0xc1, 0x85, 0x65, 0x8c, 0x2e, 0xb0, +0x83, 0xc4, 0x3b, 0x6b, 0x04, 0x6a, 0xad, 0xa1, +0x3b, 0x56, 0x8e, 0xe8, 0x24, 0xb0, 0xa3, 0x0e, +0x32, 0x7c, 0x03, 0x1f, 0x29, 0x93, 0x85, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xff, 0x01, 0x22, +0x21, 0x4f, 0xad, 0x52, 0x3c, 0xd4, 0x2d, 0xd2, +0xb0, 0xdb, 0xa8, 0x0d, 0x33, 0xc0, 0x85, 0x62, +0x06, 0x8a, 0xc5, 0x41, 0x2a, 0x0f, 0x45, 0xaa, +0x0d, 0xf5, 0x3b, 0x91, 0x1b, 0xd1, 0xf8, 0xf0, +0x8c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x00, +0x01, 0x22, 0x21, 0xd9, 0x57, 0xd1, 0x35, 0xa6, +0x34, 0x25, 0x48, 0xa4, 0x5b, 0x7e, 0x20, 0x3c, +0x5c, 0xc0, 0x52, 0x57, 0x0c, 0xd2, 0x9a, 0xdb, +0x4d, 0xc8, 0xde, 0xd8, 0xb6, 0x9d, 0x21, 0xc3, +0x36, 0xa8, 0xff, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x01, 0x01, 0x22, 0x21, 0x23, 0x9a, 0x36, +0xda, 0x0d, 0xe2, 0xf8, 0xcf, 0xaf, 0xcf, 0x44, +0xa4, 0xcb, 0xc8, 0x93, 0xef, 0x94, 0x08, 0x85, +0xb1, 0x19, 0x63, 0x2a, 0xed, 0x0f, 0x5f, 0x94, +0x68, 0x7f, 0xad, 0x5b, 0x87, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x02, 0x01, 0x22, 0x21, 0xe9, +0xf7, 0x7b, 0xbe, 0xbc, 0x6b, 0xa2, 0x98, 0x04, +0xce, 0xd9, 0xbc, 0xe2, 0x2b, 0xe2, 0xb3, 0x44, +0x8c, 0xef, 0x51, 0xd5, 0x1e, 0xa4, 0x20, 0x7a, +0x9a, 0xc6, 0x20, 0xb0, 0x4e, 0x6e, 0x6a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x03, 0x01, 0x22, +0x21, 0xd7, 0x05, 0x4d, 0x07, 0x10, 0xcf, 0x22, +0x10, 0x87, 0x30, 0x31, 0xea, 0xec, 0x26, 0xcd, +0x31, 0x1a, 0x8b, 0x6c, 0x22, 0x00, 0x68, 0x73, +0x38, 0x6b, 0x76, 0x7d, 0x5c, 0x4f, 0xdd, 0x78, +0x9d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x04, +0x01, 0x22, 0x21, 0xc6, 0x5f, 0xdd, 0x70, 0x16, +0x52, 0x26, 0xce, 0xa9, 0xcf, 0xbb, 0x6e, 0x6d, +0xe7, 0xba, 0x8c, 0xa1, 0x82, 0x33, 0xcc, 0xef, +0x83, 0x65, 0x13, 0x8a, 0x56, 0x54, 0x55, 0x5c, +0xc7, 0x4e, 0x40, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x05, 0x01, 0x22, 0x21, 0xef, 0xd4, 0xf0, +0x4e, 0x6a, 0xb2, 0xf3, 0xca, 0x78, 0xa8, 0x3c, +0x1a, 0x0a, 0x01, 0x07, 0x53, 0x2a, 0xba, 0x99, +0x4a, 0x82, 0x08, 0xa2, 0xbe, 0x58, 0xf0, 0x4e, +0xbd, 0x70, 0x11, 0x9d, 0x11, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x06, 0x01, 0x22, 0x21, 0x94, +0x58, 0x3f, 0xe9, 0x5a, 0x99, 0xc4, 0xf5, 0x85, +0x5d, 0xfd, 0x92, 0xd7, 0x33, 0xeb, 0x29, 0xb6, +0xe9, 0x1c, 0x20, 0xe7, 0x1a, 0xed, 0x1b, 0xe8, +0x98, 0x2c, 0x0a, 0xf9, 0xd0, 0xd3, 0x90, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x07, 0x01, 0x22, +0x21, 0xcd, 0xf7, 0x6d, 0xf4, 0x77, 0x45, 0xcc, +0xad, 0xee, 0x3e, 0x47, 0xc3, 0x0e, 0x16, 0x30, +0xcd, 0x79, 0xef, 0x4e, 0xcf, 0xcd, 0xbc, 0xfc, +0xdd, 0x4f, 0x56, 0x31, 0x31, 0x25, 0x2d, 0xf4, +0xe1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x08, +0x01, 0x22, 0x21, 0x49, 0xe8, 0x53, 0xa3, 0x18, +0xb2, 0xcb, 0x1e, 0x3a, 0x2b, 0x66, 0x57, 0x01, +0x6a, 0xfd, 0x8e, 0x4c, 0x08, 0x67, 0x1f, 0xa7, +0xdd, 0xaa, 0x1e, 0x44, 0x4a, 0x8c, 0xa9, 0x16, +0x16, 0xbe, 0xad, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x09, 0x01, 0x22, 0x21, 0x9a, 0xcb, 0xb5, +0x7b, 0x26, 0x05, 0x6d, 0x17, 0x86, 0xc0, 0x3b, +0xc6, 0x50, 0xd9, 0x14, 0x76, 0x15, 0x6b, 0x7e, +0xc2, 0xd7, 0x00, 0x94, 0x07, 0xf2, 0xa8, 0x21, +0x8a, 0xa9, 0xe7, 0x77, 0xcb, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0a, 0x01, 0x22, 0x21, 0x59, +0xe0, 0x61, 0x68, 0x20, 0xd4, 0x49, 0xc3, 0xcb, +0xe9, 0x73, 0xbe, 0x52, 0xa4, 0x75, 0x98, 0x9a, +0x08, 0x0b, 0x82, 0x92, 0x96, 0x47, 0x07, 0x53, +0xad, 0x23, 0xe9, 0x17, 0x75, 0x1b, 0x84, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0b, 0x01, 0x22, +0x21, 0x96, 0x39, 0xdd, 0x7d, 0x75, 0xe9, 0x17, +0xaa, 0xb5, 0x4b, 0x76, 0x5b, 0x68, 0x53, 0x44, +0x53, 0x1d, 0x57, 0x38, 0xdc, 0x5e, 0x1d, 0x81, +0x07, 0xfa, 0xf2, 0x85, 0x41, 0x30, 0xb6, 0x64, +0x31, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x0c, +0x01, 0x22, 0x21, 0x37, 0x5c, 0xb7, 0x96, 0x29, +0x35, 0x7a, 0x5c, 0xca, 0x4b, 0x60, 0x5a, 0xaa, +0xd1, 0xb6, 0xca, 0x07, 0x4b, 0xaf, 0xae, 0x7c, +0xf4, 0x0e, 0x85, 0x78, 0xd8, 0x14, 0xb7, 0xff, +0xf7, 0x45, 0x1c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x0d, 0x01, 0x22, 0x21, 0x87, 0xd4, 0xb5, +0x81, 0x74, 0x19, 0xf2, 0xc8, 0x08, 0xa1, 0x34, +0x9a, 0x07, 0x22, 0x0f, 0xea, 0x88, 0xf0, 0x53, +0x09, 0x35, 0xf9, 0xd6, 0x42, 0xb5, 0x9c, 0x2c, +0x62, 0x97, 0xdf, 0xe6, 0x47, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x0e, 0x01, 0x22, 0x21, 0x22, +0x6f, 0xb6, 0x34, 0x9b, 0x9f, 0xb1, 0x7e, 0xeb, +0x49, 0x8d, 0x52, 0x52, 0x8d, 0x64, 0xaa, 0x45, +0x08, 0xbb, 0x8d, 0x4c, 0x37, 0x8e, 0x38, 0xcc, +0x18, 0xb7, 0x6a, 0x7c, 0x0f, 0x46, 0x25, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x0f, 0x01, 0x22, +0x21, 0x0b, 0x14, 0xc3, 0x9e, 0x53, 0x47, 0xc9, +0x19, 0xd6, 0x45, 0x5e, 0x0a, 0xed, 0x77, 0x80, +0xc1, 0xcf, 0x0d, 0x7c, 0x8b, 0xdc, 0x42, 0xa0, +0xae, 0x1f, 0xb7, 0x56, 0x09, 0xef, 0x09, 0x44, +0xc1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x10, +0x01, 0x22, 0x21, 0x9e, 0xd8, 0x2f, 0xf3, 0xee, +0x4c, 0x3f, 0x08, 0x5e, 0x2f, 0xc4, 0xcc, 0x54, +0x63, 0xd2, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x56, 0x47, 0xce, 0x22, +0x5c, 0xd0, 0xaa, 0xef, 0x03, 0x04, 0x51, 0x02, +0x00, 0x11, 0x01, 0x22, 0x21, 0x59, 0x0c, 0xf3, +0x7f, 0x59, 0x83, 0x24, 0x00, 0x3c, 0x1f, 0x5a, +0xce, 0x8b, 0xfb, 0xac, 0x5c, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0xa6, +0x57, 0xab, 0xb3, 0x74, 0x60, 0xae, 0x03, 0x04, +0x51, 0x02, 0x00, 0x12, 0x01, 0x22, 0x21, 0xcf, +0x00, 0xc8, 0x8c, 0xcf, 0x1c, 0xd4, 0xde, 0xcf, +0xff, 0x5d, 0x92, 0xc4, 0x1e, 0xdf, 0xf4, 0x64, +0x61, 0xde, 0xd5, 0xd9, 0xc1, 0x3a, 0x44, 0x75, +0xdf, 0xef, 0xd0, 0xf4, 0xf9, 0x2d, 0xd5, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x13, 0x01, 0x22, +0x21, 0x70, 0x4d, 0xbc, 0x42, 0xa9, 0xdb, 0x11, +0xc6, 0xe6, 0x3d, 0x67, 0xc6, 0xc2, 0xe1, 0x7e, +0x42, 0xe0, 0xeb, 0x97, 0xd0, 0xb2, 0xb8, 0xaf, +0x29, 0x7a, 0x08, 0xec, 0x07, 0x2c, 0xec, 0xf9, +0x03, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x14, +0x01, 0x22, 0x21, 0x03, 0x0a, 0x4e, 0x25, 0xab, +0x4d, 0xbd, 0x69, 0xbe, 0xc5, 0x3c, 0x2b, 0xe9, +0x29, 0x60, 0x2e, 0xd8, 0x54, 0xba, 0x30, 0x71, +0x3c, 0x00, 0x42, 0xf0, 0x42, 0x6b, 0x2b, 0x14, +0x25, 0xe2, 0xd5, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x15, 0x01, 0x22, 0x21, 0xba, 0x26, 0x1b, +0x25, 0x51, 0x9e, 0xf5, 0xe4, 0x12, 0x7d, 0x4c, +0xcb, 0x4e, 0xe4, 0xaf, 0xa2, 0x3c, 0x01, 0x55, +0x85, 0xf4, 0xe6, 0x41, 0x3f, 0xdf, 0x55, 0xef, +0x14, 0xd2, 0x28, 0x4d, 0x37, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x16, 0x01, 0x22, 0x21, 0x2b, +0x7f, 0x7b, 0x85, 0xcc, 0x85, 0x36, 0x31, 0xe3, +0x46, 0xa3, 0xe2, 0x33, 0x07, 0x1d, 0x2d, 0x7e, +0x07, 0x90, 0x1b, 0x06, 0x3f, 0x63, 0x13, 0x74, +0x60, 0x1e, 0xa6, 0xcf, 0x27, 0x0d, 0xd3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x17, 0x01, 0x22, +0x21, 0x00, 0x05, 0x9d, 0x28, 0x98, 0x08, 0x0f, +0x2f, 0xf5, 0x8f, 0xf1, 0x92, 0x90, 0xaa, 0x6e, +0x4c, 0x66, 0x32, 0x8d, 0x5c, 0x5a, 0x60, 0x38, +0x56, 0x3b, 0xf4, 0x03, 0x82, 0xa5, 0x66, 0x5d, +0x64, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x18, +0x01, 0x22, 0x21, 0xdd, 0xf0, 0x74, 0x52, 0x68, +0xa9, 0x56, 0x8a, 0xf2, 0x90, 0x6a, 0xdc, 0xf2, +0x44, 0xfd, 0x38, 0xd0, 0x54, 0xab, 0x51, 0x9e, +0x4e, 0x46, 0x8e, 0xd5, 0x73, 0xe5, 0xaf, 0x51, +0x56, 0x56, 0xd7, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x19, 0x01, 0x22, 0x21, 0x3b, 0xad, 0xb9, +0x9c, 0xac, 0x7a, 0x85, 0x07, 0xab, 0x5b, 0x47, +0x5d, 0x26, 0xd4, 0x65, 0xc3, 0x23, 0xf8, 0xa9, +0x5f, 0x8e, 0x08, 0xbf, 0x8f, 0xa7, 0xce, 0x57, +0x0b, 0x1b, 0x39, 0xbb, 0x3a, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1a, 0x01, 0x22, 0x21, 0x39, +0x2d, 0xe7, 0x93, 0x5c, 0xf8, 0xb3, 0xa2, 0x0a, +0x7e, 0x59, 0xbf, 0xb3, 0x9c, 0x0d, 0x89, 0x3d, +0xae, 0x30, 0x85, 0xc9, 0x56, 0x01, 0xe5, 0x3c, +0x0f, 0xab, 0x33, 0x42, 0xab, 0x5b, 0xf3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1b, 0x01, 0x22, +0x21, 0x16, 0xd5, 0x31, 0xee, 0xff, 0x42, 0x1f, +0xc1, 0x0e, 0x08, 0x8f, 0x5d, 0x14, 0x1e, 0xbd, +0x8d, 0x4e, 0x2a, 0x4b, 0x04, 0xff, 0xd3, 0xa9, +0x9d, 0x99, 0xd4, 0x2f, 0x1e, 0x22, 0xa6, 0x38, +0x7e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x1c, +0x01, 0x22, 0x21, 0x66, 0xa1, 0xc4, 0x69, 0x17, +0xdb, 0xb8, 0x30, 0xfb, 0x2c, 0xb1, 0xd9, 0x3d, +0x5b, 0xb6, 0xa3, 0x04, 0xac, 0x94, 0xef, 0x9f, +0xea, 0x66, 0x88, 0xde, 0xa4, 0x25, 0x6b, 0x23, +0x06, 0xe0, 0x8f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x1d, 0x01, 0x22, 0x21, 0x38, 0x4b, 0xf5, +0x66, 0x66, 0x5b, 0xea, 0x0d, 0x45, 0x49, 0xe9, +0x84, 0xe2, 0x74, 0x52, 0x29, 0x30, 0x32, 0xa8, +0x2f, 0xf4, 0xcd, 0x13, 0x47, 0xe3, 0xc1, 0x71, +0x95, 0x54, 0xd5, 0xe2, 0x55, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x1e, 0x01, 0x22, 0x21, 0x50, +0x03, 0x3d, 0xfe, 0x20, 0x11, 0x9d, 0x2b, 0xab, +0x81, 0xd9, 0x41, 0xa5, 0xa2, 0xa3, 0x90, 0x19, +0x45, 0xa8, 0x3e, 0xa1, 0x38, 0xb5, 0xe3, 0xde, +0x04, 0x89, 0xf9, 0x1d, 0x8a, 0x2d, 0x2e, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x1f, 0x01, 0x22, +0x21, 0x75, 0x79, 0xa6, 0xfb, 0xa7, 0xd9, 0x4b, +0xfa, 0x87, 0xe4, 0x38, 0x77, 0xb7, 0xb1, 0xdd, +0x9c, 0x2c, 0xd8, 0x53, 0x35, 0x7c, 0xd1, 0x25, +0x52, 0x4c, 0x8f, 0x75, 0x21, 0x86, 0x07, 0xa0, +0xd2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x20, +0x01, 0x22, 0x21, 0x8c, 0xa7, 0xd7, 0x7b, 0xb0, +0x66, 0x94, 0x2c, 0x6c, 0x8b, 0x9e, 0xe5, 0x8f, +0x74, 0x51, 0x7f, 0x16, 0x55, 0xf4, 0x58, 0x4d, +0xeb, 0x0f, 0x26, 0xec, 0x5b, 0x1a, 0xb7, 0x27, +0xb8, 0xf5, 0x00, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x21, 0x01, 0x22, 0x21, 0xae, 0x3f, 0x4f, +0x63, 0x73, 0x68, 0x4a, 0x39, 0x18, 0x9a, 0x87, +0x7c, 0x55, 0x32, 0xc7, 0x62, 0xa2, 0xff, 0xc2, +0xd6, 0xbb, 0x4a, 0xeb, 0x11, 0x89, 0x99, 0x3c, +0x8c, 0x2a, 0x47, 0xc7, 0x55, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x22, 0x01, 0x22, 0x21, 0xf7, +0x25, 0x77, 0x6f, 0x03, 0xca, 0x24, 0x59, 0xba, +0x8e, 0x52, 0x03, 0x0b, 0x73, 0xdd, 0xbe, 0xda, +0x61, 0xea, 0x44, 0xc4, 0x87, 0xed, 0x60, 0xcb, +0xa0, 0x7b, 0xf7, 0xc2, 0xab, 0x2c, 0x23, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x23, 0x01, 0x22, +0x21, 0x2a, 0xb6, 0x39, 0xa9, 0xe5, 0x19, 0x84, +0x44, 0xd8, 0x47, 0x55, 0x4b, 0xa2, 0xcd, 0x54, +0xb3, 0x7a, 0xf1, 0xa4, 0x5a, 0xd9, 0x42, 0xb4, +0xfd, 0x8d, 0xb9, 0x9f, 0x4d, 0xb3, 0xbe, 0xbc, +0xae, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x24, +0x01, 0x22, 0x21, 0x31, 0x2f, 0x1a, 0x26, 0x50, +0x1e, 0x1a, 0x02, 0xa6, 0x45, 0x3b, 0x77, 0x66, +0xb7, 0xcc, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x8a, 0x69, 0xe5, 0x15, +0x70, 0x33, 0xa7, 0x5c, 0x03, 0x04, 0x51, 0x02, +0x00, 0x25, 0x01, 0x22, 0x21, 0xc9, 0x18, 0x72, +0x47, 0x5a, 0x07, 0xc9, 0x63, 0x8c, 0x61, 0x5b, +0x4f, 0xa7, 0xfa, 0x45, 0x9e, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf3, +0x1a, 0x47, 0x91, 0xd5, 0x2a, 0x9b, 0x03, 0x04, +0x51, 0x02, 0x00, 0x26, 0x01, 0x22, 0x21, 0x16, +0x9a, 0xd5, 0x67, 0x66, 0x42, 0xfb, 0xcb, 0x41, +0x09, 0x1e, 0xbd, 0x03, 0xcc, 0xef, 0x28, 0x85, +0xee, 0x6b, 0x91, 0xf2, 0x6a, 0x49, 0xf5, 0x37, +0x69, 0x2d, 0x72, 0x7e, 0x14, 0x4d, 0x13, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x27, 0x01, 0x22, +0x21, 0xf3, 0x73, 0xcd, 0xf2, 0x7b, 0xaf, 0x2f, +0x90, 0x4a, 0x67, 0x59, 0x35, 0x17, 0xe6, 0xf0, +0xff, 0x70, 0x66, 0x3e, 0x4d, 0xca, 0x63, 0xe7, +0xd0, 0x6a, 0x4a, 0x9a, 0xea, 0xbd, 0xe9, 0x08, +0x82, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x28, +0x01, 0x22, 0x21, 0xe5, 0x98, 0x32, 0x6a, 0xb9, +0x9c, 0x0c, 0xd1, 0x07, 0xa0, 0x03, 0x1b, 0x08, +0xea, 0x6f, 0xdc, 0x90, 0xb1, 0xcb, 0xbb, 0xb6, +0xe2, 0xdb, 0x5b, 0xa3, 0x84, 0x70, 0x86, 0xb8, +0x95, 0xfb, 0x25, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x29, 0x01, 0x22, 0x21, 0x0c, 0x53, 0x93, +0xce, 0x26, 0x63, 0x9f, 0x2a, 0xa3, 0xf1, 0x10, +0x63, 0xd6, 0x15, 0xd8, 0x0c, 0x1b, 0x27, 0x51, +0x27, 0xce, 0x9c, 0x19, 0xee, 0x63, 0x28, 0x7e, +0x77, 0x98, 0x73, 0x4b, 0xe9, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2a, 0x01, 0x22, 0x21, 0xdf, +0xff, 0x8b, 0xca, 0xab, 0x9d, 0xe5, 0x43, 0x7f, +0xac, 0xdb, 0x51, 0x9c, 0xef, 0x2e, 0xcf, 0xd7, +0x01, 0x72, 0xdc, 0xaa, 0xaf, 0x85, 0x63, 0x35, +0xf5, 0xe9, 0x76, 0x39, 0x45, 0x17, 0xc0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2b, 0x01, 0x22, +0x21, 0x87, 0x4b, 0x72, 0x96, 0x95, 0x13, 0x6b, +0x4d, 0x70, 0xca, 0x90, 0xfb, 0xd5, 0x4c, 0x00, +0x2c, 0xcb, 0x6c, 0x8e, 0x74, 0x4d, 0x13, 0xde, +0x76, 0x42, 0x9a, 0x13, 0xa4, 0x72, 0xff, 0x8d, +0x0c, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x2c, +0x01, 0x22, 0x21, 0x08, 0x73, 0xf0, 0x43, 0x23, +0xdf, 0x3c, 0xc3, 0xf9, 0xdb, 0x4f, 0x98, 0x15, +0x07, 0xe0, 0x54, 0xc9, 0x64, 0x91, 0x74, 0x50, +0x4e, 0xbb, 0xd1, 0x9a, 0x96, 0x52, 0x63, 0xd3, +0x4c, 0x0f, 0xe8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x2d, 0x01, 0x22, 0x21, 0x36, 0x1e, 0xd2, +0x13, 0x04, 0xb0, 0x7d, 0x8c, 0xdc, 0xc5, 0xfe, +0x0b, 0x83, 0x8d, 0x20, 0x58, 0x08, 0x5b, 0x35, +0x24, 0x9c, 0xdb, 0x98, 0x86, 0x63, 0x88, 0xee, +0x3e, 0x53, 0x6a, 0x8b, 0x74, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x2e, 0x01, 0x22, 0x21, 0xbe, +0x53, 0x85, 0xff, 0xd6, 0x9d, 0xc5, 0x47, 0xae, +0x34, 0xcb, 0x51, 0x63, 0x6f, 0xa1, 0x25, 0xd3, +0x81, 0x02, 0x2b, 0x65, 0xad, 0xb2, 0x8a, 0x5a, +0xab, 0xcf, 0xb9, 0xbd, 0xe4, 0x5d, 0x38, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x2f, 0x01, 0x22, +0x21, 0x80, 0xf4, 0x3c, 0x33, 0xe4, 0xcf, 0xc3, +0x92, 0x4a, 0xe2, 0xfc, 0x1f, 0x5a, 0xdc, 0x2c, +0x2d, 0xbb, 0x5c, 0x37, 0xc4, 0xc5, 0xc6, 0x85, +0x5c, 0xd4, 0x17, 0x42, 0x42, 0x15, 0x8f, 0x97, +0x18, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x30, +0x01, 0x22, 0x21, 0x5d, 0x9f, 0xc2, 0xb5, 0xe3, +0x48, 0xe9, 0x4d, 0x7e, 0x1f, 0xab, 0x7d, 0x40, +0xd9, 0x68, 0x64, 0x98, 0xdd, 0xec, 0xf0, 0x56, +0x1e, 0xd6, 0x0e, 0x26, 0x8b, 0xdc, 0x1f, 0xe0, +0xa1, 0x3f, 0x81, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x31, 0x01, 0x22, 0x21, 0x01, 0x39, 0x4f, +0xf1, 0xdf, 0x01, 0x65, 0x97, 0x77, 0x91, 0xd0, +0xf0, 0xe5, 0x0e, 0x24, 0xff, 0xed, 0xa0, 0xf6, +0x40, 0xdb, 0x00, 0x60, 0x62, 0x03, 0x76, 0xcc, +0x90, 0x16, 0x9b, 0xfa, 0x38, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x32, 0x01, 0x22, 0x21, 0x33, +0xd2, 0x61, 0xd0, 0xb5, 0xda, 0x40, 0xd7, 0xfd, +0x77, 0xc8, 0xea, 0xc9, 0x29, 0x06, 0x6d, 0xd7, +0xb4, 0x62, 0x37, 0xbb, 0x8a, 0x7f, 0xb5, 0x29, +0xb7, 0x9a, 0x9d, 0xdc, 0xcc, 0xda, 0xd4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x33, 0x01, 0x22, +0x21, 0x24, 0xea, 0x31, 0xc1, 0x51, 0x27, 0x14, +0x34, 0xce, 0x55, 0xb8, 0xef, 0xdc, 0xc9, 0xdc, +0x5f, 0xea, 0xd6, 0x16, 0x2f, 0x99, 0x8d, 0x29, +0x17, 0x9c, 0x6f, 0x6b, 0x7b, 0x7c, 0x33, 0x83, +0xf3, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x34, +0x01, 0x22, 0x21, 0x3a, 0x68, 0x71, 0x56, 0xc4, +0x7a, 0x6c, 0x9f, 0xff, 0x3f, 0xfe, 0x9d, 0x0e, +0x15, 0xf4, 0x7c, 0x51, 0xa0, 0x7f, 0xae, 0xa2, +0x83, 0x2f, 0x9b, 0x32, 0xbc, 0x0d, 0x52, 0x91, +0xbf, 0x0f, 0x18, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x35, 0x01, 0x22, 0x21, 0x50, 0xad, 0x28, +0x92, 0x46, 0x2a, 0x53, 0xea, 0xbc, 0x0c, 0xb6, +0x8c, 0x40, 0xf8, 0xd6, 0x28, 0x2c, 0xcf, 0x74, +0xd2, 0x6a, 0xd9, 0x5e, 0xd2, 0x32, 0xe7, 0x99, +0x75, 0x76, 0x72, 0x3d, 0xcd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x36, 0x01, 0x22, 0x21, 0x8f, +0x27, 0xa8, 0x5a, 0x3c, 0xec, 0x27, 0x7b, 0x64, +0x6e, 0x30, 0x3a, 0xb3, 0xc9, 0x9d, 0x71, 0xbc, +0xfc, 0x07, 0x3e, 0x84, 0x00, 0x1d, 0xcf, 0xf7, +0xab, 0x93, 0xbb, 0xd5, 0x4e, 0xe5, 0x92, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x37, 0x01, 0x22, +0x21, 0x6b, 0xba, 0x79, 0x41, 0xd1, 0xe2, 0xc9, +0xc2, 0x5b, 0xf5, 0x62, 0x68, 0x6a, 0x69, 0x49, +0xc7, 0xb7, 0x7d, 0x67, 0xd8, 0xa4, 0xf4, 0x7e, +0xa9, 0x9c, 0xc6, 0x7a, 0x70, 0x30, 0xeb, 0x83, +0x22, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x38, +0x01, 0x22, 0x21, 0xde, 0xf4, 0x9f, 0x4a, 0x68, +0x96, 0x9c, 0x3c, 0x13, 0x70, 0x24, 0x88, 0x45, +0x61, 0x5a, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x14, 0x5b, 0x97, 0x33, +0xe9, 0x59, 0x9b, 0x6b, 0x03, 0x04, 0x51, 0x02, +0x00, 0x39, 0x01, 0x22, 0x21, 0x05, 0xda, 0x6d, +0x56, 0x4e, 0xe1, 0xa6, 0x6c, 0xcc, 0x3b, 0x1f, +0x77, 0xa4, 0x90, 0x02, 0xb2, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x72, +0x07, 0x94, 0xd7, 0x17, 0x77, 0xe6, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3a, 0x01, 0x22, 0x21, 0xea, +0xa0, 0x8f, 0xe0, 0x58, 0x87, 0xbb, 0x28, 0x50, +0x48, 0x85, 0x45, 0xd9, 0x82, 0xad, 0xa9, 0x20, +0x4d, 0x4e, 0xcf, 0x16, 0xf9, 0x6e, 0xce, 0xfa, +0xa2, 0xc6, 0x03, 0x0b, 0xca, 0x38, 0xb3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3b, 0x01, 0x22, +0x21, 0xcf, 0x3a, 0x5d, 0xc5, 0xa4, 0x1a, 0xde, +0x11, 0xeb, 0xd5, 0x38, 0x1a, 0xdd, 0x96, 0x69, +0xd0, 0xbe, 0xfa, 0x33, 0xd8, 0x94, 0xf4, 0x81, +0x7a, 0x45, 0xdc, 0x18, 0x75, 0x6f, 0x64, 0x4c, +0x39, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x3c, +0x01, 0x22, 0x21, 0xeb, 0x36, 0x17, 0xa5, 0xa2, +0x78, 0x4c, 0x31, 0x22, 0x95, 0x5b, 0x69, 0x8b, +0x63, 0x87, 0xe7, 0x1f, 0x32, 0x86, 0xaa, 0x23, +0x2b, 0x16, 0x84, 0x25, 0x64, 0x33, 0x09, 0x4a, +0xab, 0xd7, 0x64, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x3d, 0x01, 0x22, 0x21, 0x0a, 0x0d, 0x55, +0x11, 0x53, 0xb5, 0xb7, 0xeb, 0xf9, 0x5f, 0x24, +0xc7, 0xc3, 0x67, 0xf2, 0x5e, 0xc3, 0xb1, 0x18, +0x9c, 0x16, 0x17, 0x72, 0xb5, 0x21, 0x6a, 0xfb, +0x7d, 0x9c, 0xda, 0x76, 0x64, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x3e, 0x01, 0x22, 0x21, 0x07, +0x3d, 0xac, 0xd3, 0x26, 0xeb, 0x27, 0x88, 0x2a, +0xf6, 0x31, 0xaa, 0x0f, 0x9e, 0x59, 0x55, 0xa6, +0x09, 0x0e, 0x06, 0xbc, 0xe0, 0x0c, 0xb5, 0x3b, +0x12, 0x5d, 0x56, 0xa1, 0xd5, 0xd8, 0x54, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x3f, 0x01, 0x22, +0x21, 0x62, 0xbf, 0xd6, 0x21, 0x44, 0x1e, 0x54, +0x5d, 0x41, 0x5a, 0x44, 0x8b, 0x6e, 0x60, 0x21, +0x6d, 0x3f, 0x9b, 0xa2, 0xac, 0x81, 0xd2, 0xf1, +0xf5, 0x63, 0xe8, 0x19, 0xbe, 0xa3, 0xa2, 0xc6, +0x2d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x40, +0x01, 0x22, 0x21, 0x0c, 0x0e, 0x7e, 0xf4, 0x02, +0xa7, 0x23, 0xb4, 0xf2, 0x09, 0xbf, 0x87, 0xfd, +0x28, 0xe8, 0x69, 0x4c, 0x17, 0x60, 0xc7, 0x54, +0xb1, 0xc1, 0x4c, 0x01, 0xaa, 0x9c, 0xc5, 0xc3, +0x40, 0xef, 0xaa, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x41, 0x01, 0x22, 0x21, 0xd3, 0xd3, 0xa0, +0xa4, 0xd8, 0xe7, 0x79, 0xf2, 0xd9, 0xd6, 0x26, +0xbc, 0x63, 0xd3, 0x19, 0xbc, 0xf6, 0x3c, 0xab, +0xb3, 0x04, 0x39, 0xf5, 0x8c, 0x21, 0x2f, 0xa5, +0xa7, 0xf3, 0x15, 0x5c, 0x69, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x42, 0x01, 0x22, 0x21, 0x88, +0x38, 0x55, 0x2b, 0x34, 0x8b, 0xfa, 0x74, 0xc7, +0xa4, 0x45, 0xaa, 0x5f, 0xea, 0x77, 0x99, 0x4e, +0x0a, 0xc8, 0x0b, 0xa0, 0xe3, 0x41, 0x28, 0x6e, +0x04, 0x2f, 0x14, 0x9e, 0x6c, 0x82, 0x6a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x43, 0x01, 0x22, +0x21, 0x9c, 0xbe, 0xdf, 0x87, 0xfd, 0x1e, 0xfa, +0x77, 0xbe, 0x1d, 0x13, 0x50, 0xd4, 0x35, 0x88, +0x2e, 0x7e, 0xed, 0x94, 0x17, 0x13, 0xf3, 0xd4, +0x09, 0xaa, 0xe4, 0x9d, 0xca, 0x68, 0xc1, 0x16, +0x29, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x44, +0x01, 0x22, 0x21, 0xf0, 0x90, 0x59, 0x4c, 0xa0, +0xcc, 0x54, 0x97, 0xbf, 0xa8, 0xc9, 0x88, 0xfa, +0x95, 0xd3, 0x53, 0x89, 0xca, 0x46, 0x20, 0x51, +0x1d, 0xdd, 0x6c, 0x96, 0x1c, 0x75, 0x97, 0x51, +0x08, 0x1a, 0xa4, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x45, 0x01, 0x22, 0x21, 0x5c, 0xa6, 0x33, +0x5d, 0xb6, 0x55, 0xe6, 0xc0, 0x9c, 0x16, 0x26, +0x4d, 0xef, 0x3b, 0x5c, 0xff, 0x1e, 0x74, 0x54, +0x82, 0x38, 0x25, 0xbe, 0x5e, 0xa9, 0x2a, 0x84, +0x90, 0x5d, 0x6c, 0x9d, 0xe0, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x46, 0x01, 0x22, 0x21, 0x03, +0x4b, 0xc2, 0x74, 0x0e, 0x98, 0xc6, 0xe9, 0x0b, +0x95, 0x9e, 0xd6, 0x5f, 0x5f, 0xf6, 0xb0, 0xff, +0x1c, 0xbd, 0x14, 0xa0, 0xf9, 0xfe, 0xe4, 0x68, +0x31, 0x7e, 0xfc, 0x38, 0x32, 0x57, 0x1a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x47, 0x01, 0x22, +0x21, 0x83, 0x38, 0x6e, 0x2c, 0xcd, 0x08, 0x63, +0x54, 0x1f, 0x6d, 0xba, 0xd9, 0xda, 0x2f, 0x65, +0x7f, 0xcf, 0xdf, 0x0c, 0xd7, 0x61, 0x19, 0xa4, +0x26, 0x38, 0xf1, 0xad, 0x6d, 0x7d, 0x74, 0xc3, +0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x48, +0x01, 0x22, 0x21, 0x1e, 0x4f, 0x00, 0x8e, 0x08, +0x8d, 0x46, 0x8b, 0xd9, 0x48, 0x3c, 0xd0, 0x5a, +0x49, 0x2c, 0x89, 0x20, 0x03, 0x36, 0xb5, 0x19, +0x3d, 0x5a, 0xf3, 0x1b, 0xe8, 0x7d, 0xe5, 0x99, +0x22, 0x0a, 0x69, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x49, 0x01, 0x22, 0x21, 0xd3, 0x4b, 0x47, +0xc4, 0x9f, 0xa4, 0xd8, 0x12, 0x5b, 0xd1, 0x3a, +0xd4, 0x9f, 0xd8, 0x1f, 0xd9, 0xfb, 0x3d, 0x65, +0x7e, 0xef, 0x2e, 0x23, 0x23, 0xb2, 0x57, 0x60, +0x81, 0x58, 0x21, 0x7b, 0xab, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4a, 0x01, 0x22, 0x21, 0xef, +0x95, 0xe9, 0x10, 0xc9, 0xdf, 0xab, 0x58, 0x15, +0x52, 0xdb, 0x5b, 0x82, 0xd5, 0x1b, 0x93, 0x2e, +0x4c, 0xa6, 0xb1, 0x94, 0xf0, 0xe9, 0x83, 0xb7, +0x39, 0x77, 0x2d, 0xc3, 0x83, 0x9a, 0xb9, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4b, 0x01, 0x22, +0x21, 0x89, 0x60, 0x3c, 0xb1, 0xe1, 0x34, 0x24, +0x8c, 0x26, 0x4d, 0x17, 0xc5, 0x60, 0xdb, 0x25, +0x42, 0x7a, 0xe3, 0xe4, 0x11, 0x1f, 0xac, 0xc2, +0x8e, 0xa9, 0x22, 0xa1, 0x42, 0xc4, 0x3d, 0x2f, +0xf5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x4c, +0x01, 0x22, 0x21, 0xd6, 0x36, 0x1d, 0x5f, 0xe0, +0x7c, 0x31, 0x20, 0x2d, 0xfc, 0xfe, 0x3a, 0xb8, +0x4f, 0x19, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x25, 0x5d, 0xf0, 0x6a, +0x24, 0x12, 0xb7, 0x90, 0x03, 0x04, 0x51, 0x02, +0x00, 0x4d, 0x01, 0x22, 0x21, 0xa4, 0x6e, 0x13, +0xa2, 0x38, 0x4f, 0x8c, 0x14, 0x37, 0x9c, 0xe2, +0x3d, 0x89, 0x15, 0x51, 0xf7, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x2d, +0xdc, 0x5d, 0xde, 0x7b, 0x8f, 0x6b, 0x03, 0x04, +0x51, 0x02, 0x00, 0x4e, 0x01, 0x22, 0x21, 0xc1, +0x07, 0x90, 0x56, 0xc5, 0x78, 0x3f, 0x92, 0x6c, +0xd4, 0x1d, 0xdf, 0xbc, 0x8e, 0x80, 0x3a, 0xb8, +0x77, 0x49, 0xda, 0x63, 0x66, 0xf6, 0xa5, 0x4e, +0x72, 0xff, 0x4f, 0x95, 0x28, 0xe1, 0x7d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x4f, 0x01, 0x22, +0x21, 0x6b, 0x4f, 0x5f, 0xc4, 0x38, 0xd5, 0x65, +0x72, 0x66, 0x44, 0x23, 0xac, 0x62, 0xdb, 0x20, +0x18, 0x16, 0xaf, 0x6c, 0xae, 0x90, 0xa7, 0x9b, +0xf7, 0xb7, 0xa8, 0x5b, 0xc4, 0xa9, 0xff, 0x16, +0xad, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x50, +0x01, 0x22, 0x21, 0xb9, 0xe1, 0x34, 0xe8, 0x2c, +0x62, 0x5c, 0x0c, 0x52, 0xb8, 0x5d, 0x89, 0x46, +0x2f, 0x0a, 0x0c, 0x8c, 0xc1, 0x73, 0xa4, 0xef, +0x58, 0xfd, 0x0f, 0x97, 0x39, 0xd8, 0x72, 0x95, +0x21, 0xf2, 0x39, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x51, 0x01, 0x22, 0x21, 0xf6, 0xf4, 0x13, +0xae, 0xfc, 0x35, 0x35, 0x3d, 0x12, 0x46, 0x86, +0xb5, 0xb2, 0xc2, 0xb1, 0xd9, 0x5d, 0x75, 0xfc, +0x4e, 0x89, 0xf1, 0xff, 0xd4, 0xaf, 0x14, 0x70, +0x52, 0xd9, 0xe6, 0xdc, 0x4e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x52, 0x01, 0x22, 0x21, 0x65, +0xab, 0xe6, 0x2c, 0x20, 0x35, 0x32, 0x1f, 0xb8, +0x11, 0x82, 0xb2, 0xe1, 0xfe, 0x85, 0x92, 0x54, +0xc2, 0x76, 0xd4, 0xfe, 0x68, 0x62, 0x50, 0xbe, +0x4f, 0x6f, 0xf2, 0x0d, 0x0c, 0x64, 0xdb, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x53, 0x01, 0x22, +0x21, 0xdd, 0x5e, 0x39, 0x72, 0x93, 0xa9, 0x36, +0xa8, 0x6f, 0x4d, 0x83, 0xc0, 0x3e, 0x79, 0xbd, +0x83, 0x59, 0xa1, 0xa9, 0x33, 0x53, 0x80, 0x7b, +0x7f, 0x1c, 0x42, 0x3f, 0x87, 0xd8, 0x35, 0x98, +0x5f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x54, +0x01, 0x22, 0x21, 0x75, 0x40, 0x9f, 0x92, 0x17, +0xcc, 0xb1, 0xa5, 0xa2, 0xeb, 0x5e, 0x11, 0x52, +0xe5, 0xa0, 0x58, 0xb4, 0x1e, 0x15, 0x8c, 0x0b, +0x72, 0xbc, 0x44, 0x46, 0xb7, 0x16, 0x30, 0x48, +0xfc, 0x11, 0x27, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x55, 0x01, 0x22, 0x21, 0xc5, 0x9d, 0x5d, +0xf7, 0x9f, 0x30, 0x35, 0xc2, 0xff, 0x61, 0xbf, +0x12, 0x9f, 0x1a, 0xa4, 0xb2, 0xe9, 0x28, 0x35, +0x64, 0x3c, 0x7e, 0x38, 0xc8, 0xdc, 0x2f, 0x8f, +0x03, 0xe3, 0x30, 0x38, 0xae, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x56, 0x01, 0x22, 0x21, 0x06, +0x1b, 0x8a, 0x62, 0x59, 0x7a, 0x2e, 0xa2, 0x54, +0x8e, 0x3c, 0x07, 0x48, 0x13, 0x1e, 0x13, 0x66, +0xdc, 0xb2, 0xf0, 0xdd, 0x15, 0x02, 0x59, 0xbb, +0xda, 0xa8, 0xdf, 0x42, 0x1d, 0xfd, 0xf9, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x57, 0x01, 0x22, +0x21, 0x42, 0xc9, 0xc9, 0x6e, 0x9d, 0x19, 0x1f, +0x19, 0x50, 0x85, 0xd6, 0x2c, 0xc8, 0x84, 0x9f, +0x3e, 0x44, 0xe4, 0xfd, 0xa4, 0xa6, 0xfd, 0x67, +0xbe, 0x9c, 0x8f, 0x52, 0x65, 0x35, 0x95, 0xc0, +0x2e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x58, +0x01, 0x22, 0x21, 0x5d, 0x7d, 0x8b, 0xd4, 0xf2, +0x6d, 0xdc, 0x45, 0x6d, 0xf9, 0xcc, 0xd8, 0x4c, +0xca, 0xf3, 0xe9, 0xb6, 0x9a, 0x37, 0x67, 0x8f, +0x23, 0xd1, 0x44, 0x91, 0x2b, 0x17, 0xf2, 0x6b, +0xc2, 0x16, 0x75, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x59, 0x01, 0x22, 0x21, 0x47, 0x46, 0x6b, +0x68, 0x63, 0xba, 0x79, 0xbf, 0x16, 0x4d, 0x92, +0x76, 0x40, 0xd2, 0x6c, 0xc1, 0x79, 0x57, 0xc5, +0x04, 0xff, 0xe5, 0xba, 0xce, 0x4c, 0xa7, 0x51, +0x50, 0x26, 0xeb, 0x3b, 0x36, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5a, 0x01, 0x22, 0x21, 0x37, +0xdc, 0x6b, 0x16, 0x25, 0x49, 0x8f, 0xe1, 0x32, +0x98, 0x5a, 0x82, 0xca, 0xb3, 0xba, 0x50, 0x45, +0x13, 0xe9, 0x2e, 0xd8, 0xe2, 0x58, 0x62, 0xbf, +0x49, 0xdd, 0x47, 0x99, 0xa2, 0x46, 0x4a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5b, 0x01, 0x22, +0x21, 0xa1, 0xa5, 0xd0, 0x94, 0xe4, 0x4c, 0x05, +0x1e, 0x10, 0xf9, 0x49, 0xfc, 0x39, 0x17, 0xff, +0x73, 0xe3, 0xb0, 0xb6, 0xdf, 0xde, 0x6d, 0xe2, +0xa7, 0xf9, 0x06, 0xb6, 0x23, 0xf3, 0x76, 0x0e, +0xfe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x5c, +0x01, 0x22, 0x21, 0xa9, 0xf4, 0xb0, 0xe0, 0x14, +0xdc, 0x4a, 0xba, 0x4b, 0x62, 0x98, 0xf7, 0x6d, +0x2d, 0xd6, 0x60, 0x69, 0x6e, 0xe4, 0xf2, 0xb6, +0x6d, 0xbf, 0x78, 0x12, 0x0a, 0x8a, 0x5e, 0xa4, +0x94, 0xf6, 0x37, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x5d, 0x01, 0x22, 0x21, 0x97, 0x1d, 0xff, +0x65, 0xa5, 0x33, 0x21, 0xab, 0xd6, 0xd4, 0xd5, +0x8e, 0x21, 0x3c, 0xae, 0xf2, 0x2e, 0x64, 0x9c, +0x7b, 0xef, 0x38, 0x76, 0x80, 0x7d, 0x43, 0xd5, +0x5b, 0x50, 0xc3, 0x19, 0x64, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x5e, 0x01, 0x22, 0x21, 0xa9, +0x9f, 0x08, 0xb6, 0xb3, 0xe3, 0x3c, 0x8e, 0x1a, +0x3b, 0x32, 0x05, 0x99, 0xa3, 0x58, 0x43, 0x85, +0xdc, 0x41, 0x80, 0xc2, 0xd0, 0x4d, 0x33, 0x34, +0xca, 0xc0, 0x8f, 0x52, 0x63, 0xf4, 0x62, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x5f, 0x01, 0x22, +0x21, 0x20, 0xac, 0x31, 0x96, 0xdb, 0xa5, 0x6c, +0x95, 0x18, 0x7e, 0xa6, 0xf8, 0x00, 0xe9, 0x3e, +0xa4, 0x02, 0x5b, 0x07, 0xca, 0x99, 0x7a, 0x38, +0x1e, 0x20, 0xc2, 0xe3, 0xbf, 0x35, 0xf8, 0xa2, +0xc2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x60, +0x01, 0x22, 0x21, 0xb9, 0x2f, 0x71, 0x2f, 0x70, +0x1b, 0xe6, 0xa5, 0xf9, 0x68, 0x68, 0x3f, 0x21, +0x41, 0x14, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x7d, 0xee, 0xdd, 0x95, +0x10, 0x50, 0xcc, 0x2c, 0x03, 0x04, 0x51, 0x02, +0x00, 0x61, 0x01, 0x22, 0x21, 0x47, 0x01, 0xbc, +0xc3, 0x4e, 0xcb, 0x59, 0x43, 0xb8, 0x70, 0x45, +0x7f, 0xbf, 0x83, 0x1c, 0x8c, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xd2, +0xec, 0x1c, 0xd4, 0xe7, 0xe2, 0x06, 0x03, 0x04, +0x51, 0x02, 0x00, 0x62, 0x01, 0x22, 0x21, 0x72, +0xfd, 0x7d, 0x90, 0x0b, 0xcf, 0x01, 0x7c, 0x2f, +0xbe, 0x97, 0x8d, 0x2c, 0x55, 0x76, 0x06, 0x5a, +0x4b, 0xc6, 0x12, 0xe3, 0x1b, 0xb4, 0x52, 0x2d, +0x91, 0x5d, 0xf9, 0x8c, 0x89, 0x56, 0x40, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x63, 0x01, 0x22, +0x21, 0xef, 0xee, 0x94, 0x76, 0xe6, 0x12, 0x48, +0x01, 0xfa, 0x7d, 0x68, 0x04, 0x7d, 0x03, 0x7e, +0xea, 0xb6, 0x06, 0x0b, 0x6c, 0xfd, 0x3f, 0xbb, +0xb8, 0xf5, 0x52, 0x6b, 0xf9, 0x9a, 0xfc, 0xfc, +0x51, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x64, +0x01, 0x22, 0x21, 0xc2, 0x80, 0x0e, 0x20, 0x07, +0xd2, 0x26, 0xc3, 0x78, 0xa1, 0xa4, 0x8d, 0xa2, +0x1a, 0x76, 0x7f, 0xae, 0x16, 0xe9, 0x83, 0x80, +0xcb, 0x05, 0xab, 0xcc, 0xfb, 0x56, 0xfc, 0x63, +0xa8, 0x20, 0x07, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x65, 0x01, 0x22, 0x21, 0xd7, 0x4e, 0xf9, +0x8f, 0x83, 0xa7, 0xab, 0xa2, 0x8f, 0xfc, 0xe6, +0xed, 0xd4, 0x07, 0xfd, 0x92, 0x9e, 0xd7, 0x9d, +0xfa, 0x39, 0xff, 0x1d, 0x2c, 0xf2, 0x25, 0x89, +0x74, 0x6e, 0xba, 0x54, 0xd2, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x66, 0x01, 0x22, 0x21, 0xda, +0xf2, 0x21, 0xd0, 0x75, 0xb2, 0x43, 0x26, 0x59, +0x0b, 0x19, 0x37, 0x38, 0xea, 0xa1, 0x3f, 0x10, +0xf9, 0x14, 0x40, 0x09, 0x26, 0x95, 0x47, 0x31, +0x62, 0x64, 0xec, 0xb8, 0x01, 0x61, 0x0f, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x67, 0x01, 0x22, +0x21, 0x81, 0x30, 0x11, 0x56, 0x34, 0x30, 0x09, +0xf0, 0xe1, 0x82, 0x1c, 0xe3, 0x30, 0xd5, 0xa3, +0x78, 0xc7, 0x72, 0x2d, 0x36, 0x6f, 0x6f, 0x5b, +0xae, 0x4b, 0x44, 0x9d, 0x8a, 0xfd, 0x78, 0xf0, +0x3f, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x68, +0x01, 0x22, 0x21, 0x0b, 0xfb, 0x38, 0xce, 0x7e, +0x70, 0xa8, 0xea, 0x71, 0x71, 0x57, 0x0a, 0xcd, +0xf8, 0xe7, 0xbe, 0xd4, 0xce, 0x22, 0x2e, 0x5b, +0xcc, 0x07, 0x8a, 0x02, 0xb5, 0x52, 0x21, 0x7e, +0xb5, 0x48, 0x1c, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x69, 0x01, 0x22, 0x21, 0xef, 0x88, 0xae, +0x6e, 0x57, 0x93, 0x54, 0x2b, 0xeb, 0xcf, 0x09, +0x0f, 0x1d, 0xad, 0x41, 0x87, 0xba, 0x1c, 0xbb, +0xf0, 0x6e, 0xf7, 0xa8, 0x5f, 0xe5, 0x28, 0x19, +0x46, 0xeb, 0x66, 0x22, 0xdd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6a, 0x01, 0x22, 0x21, 0xca, +0x50, 0x20, 0xa0, 0x45, 0xe9, 0x0a, 0x57, 0x9b, +0x0a, 0xe6, 0x66, 0x3e, 0x85, 0x13, 0x0f, 0x43, +0x0b, 0x26, 0xbf, 0xfd, 0x37, 0x1e, 0xdb, 0x47, +0xf7, 0xfb, 0x83, 0x6b, 0x27, 0x4b, 0x43, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6b, 0x01, 0x22, +0x21, 0x2d, 0x9c, 0xc4, 0x8f, 0xb5, 0xf2, 0x6a, +0x2b, 0x4f, 0x91, 0x9b, 0x66, 0x2e, 0x0a, 0x76, +0x4c, 0x66, 0x26, 0xd0, 0x6f, 0x42, 0x7c, 0x90, +0x49, 0x63, 0x57, 0x9a, 0xeb, 0x3c, 0x6f, 0x59, +0xda, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x6c, +0x01, 0x22, 0x21, 0xfe, 0x6d, 0x4f, 0x87, 0xc6, +0x64, 0xe4, 0x05, 0xe7, 0x50, 0xf1, 0xb3, 0xd0, +0x34, 0x18, 0x24, 0x99, 0x1c, 0xf0, 0x8d, 0x43, +0x6b, 0x19, 0xc5, 0xff, 0xac, 0xc2, 0x84, 0x78, +0x91, 0x92, 0xb0, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x6d, 0x01, 0x22, 0x21, 0x58, 0x7c, 0x39, +0x15, 0x2c, 0xbb, 0x70, 0x4e, 0x6f, 0x73, 0xd6, +0x76, 0x65, 0x9e, 0x0d, 0xfb, 0x7a, 0x17, 0x5a, +0x69, 0xf9, 0xa6, 0xd9, 0xb7, 0x90, 0x7d, 0xd1, +0xa1, 0x1d, 0x19, 0xae, 0x73, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x6e, 0x01, 0x22, 0x21, 0xbb, +0x21, 0x74, 0xea, 0xdb, 0x19, 0x5a, 0x33, 0x4f, +0xae, 0xaf, 0x64, 0xec, 0xff, 0x7b, 0xbb, 0x1f, +0x26, 0x6c, 0xef, 0xef, 0xa4, 0xb8, 0x79, 0x60, +0x2a, 0x37, 0x8b, 0x9f, 0x6c, 0x49, 0xdc, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x6f, 0x01, 0x22, +0x21, 0x5a, 0x71, 0xce, 0xe3, 0x4c, 0x27, 0xa8, +0xe9, 0x7b, 0xb2, 0x2e, 0x2b, 0x0e, 0x98, 0x94, +0x1c, 0x85, 0xf6, 0xf3, 0xdd, 0x0c, 0xed, 0x98, +0xe5, 0x31, 0x75, 0xdd, 0x38, 0xe4, 0x3d, 0x68, +0x66, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x70, +0x01, 0x22, 0x21, 0x2a, 0x9d, 0xd5, 0x40, 0x68, +0x4f, 0xe2, 0x87, 0x0e, 0x11, 0xfe, 0xf8, 0xfe, +0x78, 0x1c, 0x06, 0x38, 0x9f, 0xcd, 0xed, 0xc0, +0x24, 0x67, 0x68, 0xe2, 0xc1, 0x8e, 0x8d, 0x01, +0x41, 0xef, 0x61, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x71, 0x01, 0x22, 0x21, 0xbf, 0x9b, 0x18, +0x2f, 0x94, 0x29, 0x3e, 0xea, 0x4c, 0xc6, 0x7d, +0xfd, 0x31, 0xc2, 0x2a, 0xd3, 0x57, 0x22, 0x0b, +0x2b, 0xa6, 0x76, 0x5c, 0x17, 0x5c, 0xfa, 0x3d, +0x70, 0x54, 0x1a, 0xfd, 0x47, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x72, 0x01, 0x22, 0x21, 0xf5, +0xb0, 0xe6, 0xba, 0xe1, 0xae, 0x88, 0x21, 0xbd, +0xa3, 0x6c, 0xac, 0xeb, 0xd6, 0x0d, 0x1f, 0x7b, +0x41, 0x55, 0xc8, 0xbc, 0xc2, 0xf0, 0xcb, 0xf1, +0x93, 0x66, 0x89, 0xb9, 0xa0, 0xa1, 0x28, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x73, 0x01, 0x22, +0x21, 0xaf, 0x1a, 0x95, 0x80, 0x02, 0x22, 0x63, +0xea, 0x07, 0x66, 0xb4, 0xf6, 0xec, 0x8e, 0x5c, +0x40, 0xf0, 0x13, 0x61, 0x74, 0xc8, 0x20, 0x50, +0x97, 0x1c, 0x64, 0x31, 0x96, 0xc8, 0x44, 0xa9, +0xd8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x74, +0x01, 0x22, 0x21, 0xd9, 0xdf, 0x15, 0xf5, 0x20, +0x21, 0xd0, 0x33, 0xe9, 0x2f, 0xb8, 0x99, 0x9b, +0x96, 0xec, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x9b, 0x6e, 0xc1, 0x71, +0x87, 0x53, 0x7b, 0xfc, 0x03, 0x04, 0x51, 0x02, +0x00, 0x75, 0x01, 0x22, 0x21, 0x74, 0x3c, 0x74, +0xb7, 0xc7, 0xc5, 0xe4, 0x5d, 0x21, 0x09, 0xe0, +0x4c, 0x4a, 0x52, 0x5c, 0x27, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x32, +0x37, 0x89, 0x14, 0x5d, 0x40, 0x26, 0x03, 0x04, +0x51, 0x02, 0x00, 0x76, 0x01, 0x22, 0x21, 0x96, +0x3c, 0x90, 0xfd, 0xac, 0x32, 0x25, 0xce, 0xe2, +0x39, 0x6e, 0x51, 0x27, 0x46, 0x0c, 0x34, 0x08, +0x76, 0xc2, 0x98, 0x0a, 0x12, 0xe5, 0x7b, 0xec, +0x4e, 0x26, 0x23, 0x20, 0x77, 0xfc, 0xff, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x77, 0x01, 0x22, +0x21, 0xb1, 0x3f, 0x04, 0x0b, 0x16, 0x50, 0xca, +0xa9, 0x3b, 0xa1, 0x99, 0xdb, 0xc6, 0x4d, 0xd3, +0x63, 0x72, 0x62, 0x16, 0xbb, 0x2f, 0xfe, 0x1e, +0x40, 0x4b, 0x1f, 0xa0, 0xce, 0xc6, 0x0b, 0x0c, +0x4a, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x78, +0x01, 0x22, 0x21, 0x6b, 0x7a, 0x99, 0x03, 0x90, +0x24, 0x29, 0x10, 0x7c, 0x8b, 0x2a, 0x5f, 0xc9, +0x3c, 0x91, 0x5c, 0xea, 0x82, 0x23, 0x96, 0x42, +0x9d, 0x53, 0x96, 0x2b, 0x8c, 0x7f, 0x01, 0x96, +0x22, 0x87, 0x37, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x79, 0x01, 0x22, 0x21, 0xb1, 0x67, 0x72, +0xe7, 0xae, 0x1e, 0xb9, 0x50, 0x02, 0xb2, 0x48, +0x38, 0xe7, 0xf0, 0xbe, 0x88, 0x70, 0xc9, 0xcd, +0xb2, 0xd5, 0x99, 0x22, 0xde, 0xfb, 0x90, 0x48, +0x58, 0x3b, 0x9f, 0xff, 0xa5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7a, 0x01, 0x22, 0x21, 0x21, +0x3d, 0xfb, 0xdd, 0xeb, 0x00, 0x1c, 0xac, 0x7a, +0x2c, 0xcf, 0xc2, 0x77, 0xe5, 0x20, 0x11, 0x3f, +0xd8, 0x40, 0x1b, 0x3f, 0xf6, 0xa2, 0x8a, 0x4c, +0x6c, 0xd5, 0x4e, 0xb6, 0xf1, 0x7e, 0x45, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7b, 0x01, 0x22, +0x21, 0xf4, 0x54, 0x4d, 0x7c, 0x5f, 0xb7, 0x49, +0xb0, 0x74, 0x37, 0xb5, 0x18, 0x04, 0xd9, 0x00, +0x2e, 0x25, 0x77, 0x44, 0xb1, 0xbe, 0x72, 0xc5, +0x7c, 0x7e, 0xc3, 0x4f, 0xe8, 0xa2, 0xc7, 0x50, +0xe2, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x7c, +0x01, 0x22, 0x21, 0x02, 0xc6, 0xe1, 0x1d, 0xfa, +0x68, 0xee, 0xeb, 0x07, 0x66, 0x54, 0xec, 0x71, +0x8c, 0x88, 0x80, 0xea, 0x49, 0x35, 0x37, 0x37, +0x5c, 0x41, 0x9f, 0x29, 0xf5, 0x9a, 0x20, 0x4c, +0xd7, 0x30, 0xa2, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x7d, 0x01, 0x22, 0x21, 0xcd, 0x1e, 0xe2, +0x2b, 0xb4, 0xaa, 0x0d, 0xf7, 0x70, 0xd0, 0x4d, +0x30, 0x3b, 0xd7, 0x41, 0x71, 0x86, 0x7c, 0x63, +0x6d, 0xd2, 0x80, 0x24, 0xe6, 0x0f, 0xb9, 0x9a, +0x81, 0x17, 0xdf, 0x78, 0x41, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x7e, 0x01, 0x22, 0x21, 0xd7, +0x19, 0xdc, 0x18, 0x1b, 0x7f, 0xc0, 0xf0, 0x27, +0x5c, 0xb9, 0x4d, 0x83, 0x99, 0x95, 0xc1, 0x3b, +0x77, 0x43, 0xb6, 0x47, 0x42, 0x38, 0xb8, 0xe6, +0x04, 0xd6, 0x9b, 0x65, 0xfb, 0x9c, 0x02, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x7f, 0x01, 0x22, +0x21, 0x10, 0xfe, 0x5d, 0x50, 0x59, 0x68, 0x56, +0x40, 0xda, 0x14, 0x40, 0xcf, 0x6b, 0x7a, 0xbb, +0x1e, 0xd0, 0xb2, 0xf8, 0x92, 0x01, 0xa9, 0xb6, +0x14, 0x4f, 0x6a, 0x4e, 0xdc, 0x5d, 0xfa, 0xfa, +0x1e, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x80, +0x01, 0x22, 0x21, 0x8b, 0x16, 0x9e, 0x9d, 0xd1, +0x70, 0x06, 0x4d, 0x35, 0xff, 0xb9, 0xf9, 0x4f, +0x19, 0xe2, 0x92, 0x6a, 0x1c, 0xce, 0xff, 0x22, +0x58, 0x59, 0x95, 0x05, 0x1a, 0xf1, 0x0a, 0x7c, +0xaf, 0xdc, 0xf8, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x81, 0x01, 0x22, 0x21, 0x3a, 0x7d, 0x0e, +0x90, 0xad, 0x75, 0xe7, 0x9e, 0x1c, 0x2d, 0xd6, +0x2f, 0x0f, 0x1b, 0x5f, 0x78, 0x9f, 0xa5, 0x22, +0x84, 0x2d, 0x3c, 0xfb, 0x20, 0xc6, 0x53, 0x39, +0xc5, 0xa0, 0x50, 0x35, 0x25, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x82, 0x01, 0x22, 0x21, 0x10, +0xd2, 0x53, 0x62, 0xb0, 0xc4, 0xf0, 0x28, 0x30, +0x9c, 0x18, 0x82, 0x95, 0x4f, 0xf0, 0x64, 0xdb, +0xb0, 0xf1, 0x6f, 0xb4, 0xca, 0x36, 0xf9, 0x3e, +0xa9, 0xd2, 0x96, 0x85, 0x1b, 0xf5, 0x4c, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x83, 0x01, 0x22, +0x21, 0xe0, 0xaa, 0xeb, 0x8c, 0xf8, 0x28, 0xbf, +0x8b, 0xfd, 0xa1, 0x9c, 0xb9, 0x48, 0xc1, 0x9f, +0x47, 0x81, 0xf8, 0xcb, 0x10, 0x3c, 0xe6, 0x4a, +0x7c, 0x2a, 0xd2, 0x2c, 0xef, 0xdc, 0xa2, 0xb1, +0xff, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x84, +0x01, 0x22, 0x21, 0x92, 0xe7, 0x98, 0x9d, 0xea, +0x15, 0xa1, 0xb7, 0x38, 0x1b, 0xa9, 0x0c, 0x0c, +0x83, 0x79, 0xd8, 0xd8, 0x3e, 0x7a, 0xd4, 0x83, +0xcd, 0x67, 0xe8, 0x79, 0xae, 0x60, 0x05, 0x6d, +0xb9, 0x8f, 0x3d, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x85, 0x01, 0x22, 0x21, 0x9f, 0x81, 0xab, +0xe6, 0x39, 0x0f, 0xa3, 0x7d, 0x8f, 0xd3, 0x97, +0x98, 0x7d, 0x40, 0xa9, 0x9d, 0x57, 0x82, 0x65, +0xfc, 0xd9, 0x7d, 0xe4, 0xad, 0xc6, 0x10, 0x7e, +0xb2, 0x49, 0x37, 0x4c, 0x85, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x86, 0x01, 0x22, 0x21, 0x93, +0x79, 0xb9, 0xf4, 0xaf, 0xb1, 0x36, 0x3e, 0x73, +0xd8, 0x4e, 0x9c, 0x7a, 0x96, 0xdd, 0xfd, 0xd2, +0x39, 0xb8, 0x77, 0xb4, 0x70, 0x2f, 0x76, 0x97, +0xf4, 0x61, 0xa7, 0x7b, 0x3c, 0x88, 0x09, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x87, 0x01, 0x22, +0x21, 0xe3, 0xcd, 0x34, 0x8f, 0x2d, 0x72, 0xd9, +0xac, 0x43, 0x9b, 0x42, 0x35, 0xd0, 0x32, 0x79, +0x68, 0x21, 0x6f, 0x23, 0x21, 0xa2, 0xc9, 0xc2, +0xfd, 0x6f, 0xea, 0xa9, 0x5b, 0x5b, 0x00, 0xf3, +0x35, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x88, +0x01, 0x22, 0x21, 0x3b, 0x31, 0x29, 0x37, 0x3a, +0xff, 0x50, 0x20, 0xb5, 0x7f, 0x6e, 0x8b, 0xfd, +0xf6, 0x88, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xa4, 0xda, 0xf3, 0x18, +0x74, 0x8b, 0x7f, 0x24, 0x03, 0x04, 0x51, 0x02, +0x00, 0x89, 0x01, 0x22, 0x21, 0xc4, 0x80, 0x87, +0x71, 0xb1, 0xe8, 0xdd, 0x28, 0x1b, 0xdb, 0x2f, +0x84, 0xc0, 0x96, 0xe3, 0xef, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xab, +0x52, 0xe0, 0xb1, 0x5c, 0x7d, 0xfc, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8a, 0x01, 0x22, 0x21, 0x7b, +0x70, 0x8f, 0x45, 0xea, 0xa0, 0x04, 0x30, 0xe4, +0x6e, 0xaa, 0xe6, 0x8e, 0x0c, 0x7b, 0x4d, 0xd1, +0x24, 0x31, 0x6f, 0x56, 0x94, 0xcf, 0x8d, 0xe1, +0xa2, 0x39, 0x81, 0xfd, 0x7f, 0xb2, 0x59, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8b, 0x01, 0x22, +0x21, 0xe9, 0x82, 0x2f, 0x0c, 0x78, 0x57, 0x6c, +0xdc, 0xc3, 0xee, 0x37, 0xb2, 0x57, 0xb4, 0x1a, +0x17, 0x3e, 0xbb, 0xa3, 0xb3, 0x6e, 0x7c, 0x4a, +0x06, 0xf1, 0x5d, 0x05, 0x62, 0x7b, 0x0e, 0x62, +0xf5, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x8c, +0x01, 0x22, 0x21, 0x6c, 0x34, 0x6c, 0x1a, 0xd7, +0x39, 0x57, 0xc2, 0xa1, 0x39, 0xca, 0x67, 0xb8, +0xea, 0x6d, 0x44, 0x67, 0xba, 0xc2, 0xd3, 0x4c, +0xa0, 0x64, 0xe0, 0x77, 0xec, 0x8a, 0xf9, 0xad, +0x12, 0xec, 0x21, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x8d, 0x01, 0x22, 0x21, 0xa9, 0xba, 0x3d, +0x79, 0x46, 0x1f, 0x2c, 0x27, 0xd2, 0xb3, 0xd5, +0x61, 0x27, 0xbe, 0x6c, 0xfd, 0x75, 0x88, 0x50, +0x3b, 0xc5, 0x04, 0xf4, 0xca, 0xd5, 0x44, 0x3e, +0x8a, 0x0a, 0x54, 0xf5, 0xfb, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x8e, 0x01, 0x22, 0x21, 0x03, +0x37, 0x0d, 0xd9, 0xeb, 0x76, 0xd3, 0x0b, 0x52, +0xf0, 0x52, 0x3f, 0x15, 0x6c, 0x84, 0x05, 0x27, +0x61, 0xe4, 0x84, 0xe6, 0xb0, 0x25, 0xc9, 0x0c, +0xba, 0xbd, 0x0d, 0x10, 0x9a, 0x8c, 0xd7, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x8f, 0x01, 0x22, +0x21, 0x03, 0x31, 0x03, 0xf8, 0xf2, 0xbc, 0x7d, +0x1c, 0x2f, 0x66, 0xb7, 0xb4, 0xb5, 0x12, 0xbf, +0x42, 0x08, 0x24, 0x41, 0x02, 0xff, 0x36, 0xd7, +0x52, 0xe6, 0xe8, 0xaa, 0x07, 0xd2, 0xa3, 0xc4, +0xb3, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x90, +0x01, 0x22, 0x21, 0xb8, 0xc5, 0x6a, 0xae, 0x82, +0x52, 0xdb, 0xb2, 0x8a, 0x5a, 0xca, 0x90, 0x87, +0x44, 0x24, 0x9c, 0x0c, 0xfa, 0x1a, 0x2a, 0xf9, +0xc7, 0x99, 0xb5, 0x82, 0x6f, 0x7a, 0xbd, 0xba, +0xfe, 0xd9, 0x74, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x91, 0x01, 0x22, 0x21, 0x45, 0xa2, 0x7f, +0x5f, 0xbf, 0x14, 0xb8, 0x5d, 0xd6, 0x5c, 0x2b, +0x9d, 0xff, 0x4e, 0xa6, 0xdc, 0x23, 0x37, 0xdc, +0x9e, 0x78, 0xd2, 0x86, 0xec, 0x94, 0x04, 0xe8, +0xa5, 0xee, 0x55, 0xcc, 0xa1, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x92, 0x01, 0x22, 0x21, 0xde, +0x65, 0x3d, 0xa7, 0x2e, 0x2e, 0xa4, 0x39, 0x41, +0xb9, 0x0d, 0xe1, 0xd2, 0xd3, 0x55, 0xf5, 0xa7, +0xef, 0x64, 0x6c, 0xbd, 0xb0, 0x3a, 0xde, 0x64, +0x27, 0xcb, 0x2d, 0x8f, 0x21, 0xe9, 0x0a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x93, 0x01, 0x22, +0x21, 0x1f, 0x93, 0x06, 0xb8, 0x08, 0x6f, 0x5f, +0x70, 0x9c, 0xe6, 0x31, 0x4a, 0xeb, 0x8e, 0xa1, +0x1e, 0xe6, 0x20, 0xe6, 0xab, 0xec, 0x97, 0xf5, +0xad, 0x0b, 0x49, 0x55, 0x9c, 0xde, 0x79, 0x40, +0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x94, +0x01, 0x22, 0x21, 0xa2, 0x5f, 0x2f, 0x7b, 0x3c, +0x41, 0x85, 0x70, 0xe2, 0xbb, 0x8d, 0x3f, 0xa8, +0x6a, 0x5e, 0x44, 0x41, 0x3b, 0x93, 0x33, 0x0d, +0x22, 0xc7, 0x12, 0x54, 0xde, 0xc2, 0x0b, 0xa5, +0x71, 0x9f, 0x50, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x95, 0x01, 0x22, 0x21, 0xae, 0x7e, 0xa6, +0xe1, 0x0a, 0xe0, 0x37, 0xfe, 0xd8, 0xf2, 0x7e, +0x14, 0xf3, 0xbc, 0x67, 0x37, 0xb6, 0xd1, 0x28, +0x97, 0x53, 0xb5, 0x6d, 0x20, 0x1f, 0xb5, 0x12, +0x33, 0x06, 0x5f, 0x60, 0x1f, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x96, 0x01, 0x22, 0x21, 0x9e, +0x95, 0x33, 0x70, 0xa3, 0x18, 0x96, 0xa2, 0xa3, +0x58, 0xcd, 0x56, 0xe1, 0x1f, 0xee, 0x5b, 0x59, +0x96, 0x12, 0xfa, 0x16, 0xef, 0x62, 0xd1, 0x1d, +0x96, 0x94, 0x00, 0x66, 0x33, 0x38, 0x5b, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x97, 0x01, 0x22, +0x21, 0xa2, 0x16, 0x1f, 0xc0, 0x9e, 0x59, 0x5d, +0xfa, 0x9a, 0x9b, 0x8a, 0x39, 0x22, 0x73, 0xc9, +0xdf, 0x04, 0x86, 0xe8, 0xe1, 0x72, 0xa5, 0x3b, +0xbd, 0xa4, 0x94, 0x40, 0x22, 0x28, 0xbb, 0x5a, +0x6b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x98, +0x01, 0x22, 0x21, 0x02, 0x54, 0xe3, 0x91, 0x76, +0x8f, 0xb9, 0x5d, 0x62, 0xa7, 0xc1, 0x52, 0x48, +0xd4, 0x0c, 0x39, 0x88, 0xbc, 0x33, 0xb6, 0x6f, +0x20, 0x75, 0xc8, 0xa9, 0x3a, 0xf4, 0xa0, 0x9c, +0xb5, 0x91, 0x7a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0x99, 0x01, 0x22, 0x21, 0x6d, 0x37, 0x39, +0xaf, 0xf4, 0xc9, 0x2a, 0xd9, 0xe5, 0xda, 0xfb, +0xf2, 0xba, 0xd8, 0x6a, 0x16, 0x90, 0x52, 0x70, +0x41, 0x2c, 0xf2, 0xe2, 0x9d, 0x11, 0x25, 0xb1, +0xf1, 0xc3, 0x29, 0xda, 0x71, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9a, 0x01, 0x22, 0x21, 0xbd, +0xe1, 0x92, 0xf7, 0x03, 0x30, 0x67, 0x2b, 0x47, +0x5d, 0x8f, 0x87, 0xc6, 0xe0, 0x90, 0xde, 0xa8, +0xc3, 0xd5, 0x44, 0xe8, 0x34, 0x4a, 0x59, 0x7e, +0x0a, 0x15, 0xd5, 0xe0, 0x91, 0x63, 0xc2, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9b, 0x01, 0x22, +0x21, 0xf2, 0x31, 0xd0, 0x46, 0x85, 0xd7, 0x15, +0x7a, 0xa3, 0xf0, 0xf4, 0x3d, 0x66, 0xe0, 0x84, +0xb5, 0xb8, 0x24, 0x43, 0x85, 0x64, 0xf7, 0xe3, +0x87, 0x63, 0x13, 0x7c, 0x30, 0x4d, 0xc1, 0x1e, +0xbc, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0x9c, +0x01, 0x22, 0x21, 0x5d, 0xa2, 0x3e, 0x5b, 0x73, +0x6d, 0xba, 0x91, 0x5c, 0x3f, 0xc1, 0x06, 0x11, +0xac, 0xd5, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xd8, 0x50, 0xfb, 0xbe, +0x40, 0x1e, 0x1a, 0xfe, 0x03, 0x04, 0x51, 0x02, +0x00, 0x9d, 0x01, 0x22, 0x21, 0x2f, 0x3f, 0x4c, +0x7d, 0x42, 0x0f, 0xef, 0xbf, 0x60, 0x51, 0xe5, +0x64, 0x10, 0xb7, 0x60, 0xd2, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xd9, +0x18, 0x26, 0xdc, 0x71, 0x08, 0x62, 0x03, 0x04, +0x51, 0x02, 0x00, 0x9e, 0x01, 0x22, 0x21, 0xee, +0xdb, 0xe8, 0x8e, 0xbb, 0x0c, 0xfb, 0xb6, 0x9f, +0x46, 0x08, 0x37, 0x6d, 0xbe, 0x18, 0xcd, 0xa4, +0xba, 0x0a, 0x70, 0x4a, 0xf0, 0x9b, 0x78, 0x12, +0xbe, 0x56, 0x41, 0xe5, 0x5f, 0xd5, 0xde, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0x9f, 0x01, 0x22, +0x21, 0x9c, 0x40, 0x04, 0xc5, 0x87, 0xb5, 0x2e, +0x71, 0xe1, 0x97, 0x81, 0x25, 0x85, 0xc0, 0x11, +0x33, 0x88, 0xbe, 0x00, 0xc6, 0xda, 0x66, 0x27, +0x5b, 0xac, 0x35, 0x02, 0xc1, 0xf6, 0x9c, 0xb7, +0xb4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa0, +0x01, 0x22, 0x21, 0xbe, 0x3c, 0xd9, 0x34, 0xd9, +0x07, 0x09, 0x63, 0xa8, 0xa2, 0x70, 0x0d, 0x5f, +0x85, 0x52, 0xbf, 0x63, 0x45, 0xf4, 0x0c, 0x2d, +0xff, 0x0c, 0xf0, 0x17, 0xd6, 0x99, 0x35, 0x6c, +0x7e, 0x33, 0xef, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa1, 0x01, 0x22, 0x21, 0xe8, 0x5e, 0x69, +0x78, 0x6c, 0xef, 0x7b, 0xc8, 0xa0, 0x67, 0x9b, +0xf5, 0xa7, 0x20, 0x68, 0x71, 0xa7, 0x13, 0xf2, +0x83, 0x6a, 0xc6, 0x0d, 0x63, 0x53, 0x88, 0xe8, +0x9c, 0x89, 0x5d, 0x6d, 0xab, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa2, 0x01, 0x22, 0x21, 0xc9, +0x3e, 0xa0, 0x46, 0xab, 0x69, 0x0f, 0x4d, 0x65, +0xc6, 0x7e, 0x64, 0x42, 0xe8, 0xd8, 0x3f, 0xd5, +0x37, 0x9f, 0xe9, 0x62, 0xee, 0x1f, 0x62, 0x86, +0x10, 0x99, 0xf6, 0xd5, 0x20, 0x95, 0x1b, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa3, 0x01, 0x22, +0x21, 0xbe, 0x5a, 0x83, 0x4b, 0x45, 0x7a, 0x12, +0xd4, 0x9f, 0x3e, 0x77, 0xfd, 0x63, 0xda, 0x9c, +0xf2, 0xa7, 0x91, 0x5f, 0x0c, 0x15, 0x4f, 0x69, +0x39, 0xbb, 0xac, 0xea, 0x7c, 0x0a, 0x2b, 0xbb, +0xc8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa4, +0x01, 0x22, 0x21, 0x23, 0xe6, 0x90, 0x0b, 0xc7, +0x77, 0x57, 0x25, 0x8c, 0x19, 0x10, 0x93, 0xa6, +0xf8, 0x70, 0xb0, 0xde, 0xe5, 0x41, 0x50, 0xa5, +0x83, 0x8c, 0xb2, 0x0a, 0x52, 0xc3, 0xb8, 0x85, +0x43, 0xf3, 0x78, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa5, 0x01, 0x22, 0x21, 0x33, 0x09, 0xa4, +0xc7, 0xc8, 0x9f, 0x27, 0xb1, 0x4f, 0x29, 0xe4, +0xa4, 0x86, 0x94, 0x73, 0x37, 0x54, 0x96, 0xf4, +0xc5, 0xb7, 0x50, 0x1f, 0x77, 0x5c, 0x30, 0xc7, +0x3d, 0xde, 0xdf, 0x9e, 0xf5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xa6, 0x01, 0x22, 0x21, 0x00, +0xe8, 0x25, 0xc7, 0xb7, 0xf3, 0xc5, 0xf4, 0x84, +0x04, 0xf9, 0x38, 0x52, 0xb3, 0x9a, 0x67, 0xbf, +0xc6, 0x34, 0x63, 0x3b, 0xb8, 0x0c, 0xf1, 0xcb, +0x29, 0x50, 0xf8, 0xf3, 0xbf, 0x09, 0x63, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xa7, 0x01, 0x22, +0x21, 0x9b, 0x41, 0x45, 0xeb, 0xb1, 0x26, 0xf6, +0x8d, 0x98, 0x9b, 0x39, 0x68, 0x5f, 0x8d, 0x94, +0x97, 0x3c, 0x7d, 0x4f, 0xc3, 0x9d, 0x3d, 0x4c, +0x82, 0xd0, 0x30, 0x23, 0xc3, 0xb9, 0xac, 0xee, +0xcd, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xa8, +0x01, 0x22, 0x21, 0xe6, 0xee, 0xc0, 0x07, 0xbd, +0xa3, 0xab, 0x0e, 0xb4, 0x2f, 0xcc, 0xbd, 0x3a, +0xa7, 0xd7, 0xdb, 0x52, 0x0a, 0x45, 0xe2, 0xb5, +0xd5, 0x91, 0x0b, 0xe8, 0xee, 0x0e, 0x55, 0x60, +0x4c, 0x8e, 0x90, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xa9, 0x01, 0x22, 0x21, 0x74, 0xfa, 0x3a, +0xc5, 0xfb, 0xbf, 0x38, 0x34, 0xd0, 0x22, 0x63, +0x8a, 0x4e, 0x0c, 0x13, 0xa6, 0x13, 0x72, 0xb2, +0xa3, 0x7a, 0x8d, 0x96, 0xbf, 0x80, 0xbb, 0x98, +0x58, 0x22, 0x6b, 0xbd, 0xbf, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xaa, 0x01, 0x22, 0x21, 0xee, +0xc1, 0xeb, 0x9f, 0x3e, 0xae, 0x06, 0xf2, 0xc1, +0x03, 0x94, 0xa1, 0x4a, 0x57, 0xfb, 0x47, 0x03, +0xaa, 0x26, 0x00, 0x4b, 0xe9, 0x21, 0xb5, 0x26, +0x6d, 0xe5, 0x00, 0xdd, 0x1a, 0x1d, 0xd0, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xab, 0x01, 0x22, +0x21, 0x00, 0xc5, 0xc1, 0x5b, 0x07, 0xd7, 0xe5, +0xc1, 0xef, 0x0d, 0x3f, 0x17, 0x08, 0xca, 0x40, +0x60, 0xd3, 0xb1, 0x0a, 0x3e, 0x03, 0x0e, 0xfc, +0x9b, 0xf6, 0x8b, 0xe3, 0x0b, 0xc7, 0x52, 0xe0, +0x92, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xac, +0x01, 0x22, 0x21, 0x6e, 0x2f, 0xda, 0x66, 0xf8, +0x8d, 0xef, 0xba, 0x25, 0x8c, 0xa4, 0x76, 0xe8, +0xe1, 0xa8, 0xd6, 0x9d, 0x68, 0x99, 0xb2, 0x9f, +0x2e, 0x07, 0xbc, 0x59, 0xfa, 0x8a, 0xb5, 0x58, +0xa1, 0x4b, 0x85, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xad, 0x01, 0x22, 0x21, 0xc9, 0x60, 0x13, +0x57, 0xe9, 0xc8, 0xa9, 0xae, 0x2a, 0xbc, 0xf9, +0x4e, 0x85, 0x4d, 0x80, 0x3c, 0x30, 0x16, 0xae, +0xba, 0x46, 0x41, 0x93, 0x61, 0x82, 0x96, 0xce, +0x2d, 0x36, 0xd2, 0x8f, 0x9c, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xae, 0x01, 0x22, 0x21, 0x3e, +0x81, 0x22, 0x32, 0x7c, 0x54, 0xb3, 0x90, 0x80, +0xcb, 0xa3, 0x3e, 0x3f, 0x1a, 0x02, 0xeb, 0x93, +0x1c, 0x06, 0xaa, 0x65, 0x67, 0x47, 0x37, 0x93, +0xc1, 0xbd, 0x62, 0xf5, 0x86, 0x17, 0x00, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xaf, 0x01, 0x22, +0x21, 0x74, 0x92, 0x2f, 0x55, 0x67, 0x26, 0x5c, +0x3b, 0x79, 0xab, 0x25, 0xff, 0xe1, 0xdd, 0x63, +0xa5, 0xd4, 0xdc, 0x4f, 0x4a, 0x98, 0x99, 0x79, +0x87, 0xb8, 0x04, 0x2d, 0x13, 0xe5, 0xc8, 0x6a, +0x88, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb0, +0x01, 0x22, 0x21, 0x3d, 0xaa, 0x16, 0x77, 0xaa, +0x28, 0xaf, 0x62, 0x37, 0x7a, 0x5c, 0x63, 0xbc, +0x79, 0x30, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xe8, 0x43, 0x8a, 0x3d, +0xd8, 0x6a, 0x97, 0x9f, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb1, 0x01, 0x22, 0x21, 0x7a, 0xbc, 0x18, +0x7b, 0xdc, 0xf6, 0xa0, 0xaf, 0xbb, 0xa7, 0x78, +0x9f, 0xfd, 0x99, 0x8e, 0x21, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x49, +0x28, 0xf7, 0x44, 0xf2, 0xa4, 0xbd, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb2, 0x01, 0x22, 0x21, 0x47, +0x38, 0x4f, 0x20, 0x78, 0x7b, 0x7c, 0x42, 0x40, +0x62, 0x44, 0x24, 0xe6, 0x16, 0x76, 0xd8, 0xef, +0x30, 0x5b, 0x06, 0xc5, 0xc4, 0xe1, 0xdd, 0xf7, +0x6f, 0x02, 0xbd, 0xf5, 0x93, 0x8f, 0xc3, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb3, 0x01, 0x22, +0x21, 0x43, 0x3b, 0x54, 0x1e, 0xe7, 0xb4, 0x41, +0x38, 0x05, 0xe6, 0xb0, 0x93, 0xa5, 0xe9, 0x0d, +0x0f, 0xd2, 0x92, 0xc4, 0xaf, 0x84, 0xba, 0x38, +0x24, 0x50, 0x37, 0xe3, 0x75, 0xc8, 0xdf, 0x3c, +0x11, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb4, +0x01, 0x22, 0x21, 0x04, 0x3f, 0x39, 0xc2, 0xb7, +0x4c, 0x6c, 0xab, 0x0a, 0x9e, 0xb5, 0xf3, 0x4f, +0x61, 0x3e, 0x3f, 0xa7, 0x10, 0x71, 0x0a, 0xed, +0xbd, 0x88, 0x6d, 0x02, 0x6d, 0xe2, 0xe6, 0xf9, +0xd1, 0x4d, 0x66, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb5, 0x01, 0x22, 0x21, 0xfe, 0xc7, 0x71, +0x59, 0xe3, 0x4c, 0x1c, 0xcb, 0x44, 0x64, 0x75, +0x31, 0x89, 0xcc, 0x35, 0xee, 0x93, 0x78, 0xf9, +0x0a, 0x72, 0xef, 0x0b, 0xf3, 0x70, 0xa6, 0x71, +0xf1, 0x47, 0xdb, 0x9b, 0x28, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xb6, 0x01, 0x22, 0x21, 0x08, +0x17, 0xf2, 0xa2, 0x8f, 0x2a, 0x56, 0x15, 0x35, +0x60, 0x3d, 0x0a, 0x09, 0x2e, 0x4b, 0x7d, 0x34, +0xb1, 0x31, 0x83, 0x47, 0x1b, 0xd4, 0xe2, 0x1c, +0x49, 0x67, 0x41, 0xbe, 0x26, 0x6f, 0x84, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xb7, 0x01, 0x22, +0x21, 0x28, 0xa5, 0x7d, 0xce, 0x51, 0x9b, 0x55, +0x7d, 0x45, 0x29, 0x9a, 0x2c, 0xeb, 0x57, 0x24, +0x93, 0x3e, 0x0a, 0x9f, 0xa7, 0x9e, 0x84, 0xb1, +0xd5, 0xfe, 0x5b, 0x65, 0xf3, 0xb6, 0x29, 0x7a, +0x66, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xb8, +0x01, 0x22, 0x21, 0xb0, 0x59, 0x3f, 0x7e, 0xc0, +0x90, 0x81, 0x99, 0x44, 0xa5, 0xfb, 0xbc, 0x22, +0x57, 0xd7, 0xed, 0x87, 0x69, 0x78, 0x74, 0x1d, +0xb6, 0x8a, 0x11, 0x12, 0x3a, 0x08, 0x91, 0x90, +0xc3, 0xc3, 0x00, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xb9, 0x01, 0x22, 0x21, 0x7e, 0x05, 0x12, +0x6b, 0x2c, 0x38, 0xee, 0x89, 0x11, 0x36, 0xdf, +0x60, 0x03, 0x1c, 0xac, 0x2f, 0xa6, 0xaa, 0xac, +0x12, 0xc0, 0xee, 0x8f, 0xd8, 0x38, 0xa8, 0x5d, +0x64, 0x41, 0x0f, 0xe0, 0x32, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xba, 0x01, 0x22, 0x21, 0xdd, +0xa6, 0x95, 0xe5, 0x03, 0xae, 0xd6, 0x21, 0x16, +0x1b, 0xc9, 0xea, 0xd5, 0x02, 0x08, 0x20, 0x70, +0xef, 0xb4, 0x31, 0xf0, 0x4a, 0x4f, 0xb2, 0xad, +0x88, 0x90, 0x23, 0x38, 0xad, 0x8f, 0x76, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbb, 0x01, 0x22, +0x21, 0xe6, 0x8d, 0xbb, 0x2b, 0x05, 0x1d, 0x04, +0x6d, 0x87, 0x2d, 0xba, 0x4e, 0x38, 0xdb, 0x43, +0x02, 0xf5, 0x4d, 0xeb, 0x4a, 0x03, 0x69, 0x5d, +0x2d, 0x04, 0x54, 0xe3, 0xc1, 0x18, 0xd9, 0xa9, +0xbe, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xbc, +0x01, 0x22, 0x21, 0x5c, 0xc7, 0x78, 0x2f, 0xb8, +0xf0, 0x97, 0x11, 0xec, 0x76, 0xd4, 0x2c, 0x00, +0x12, 0xf5, 0x8c, 0x98, 0x85, 0x2e, 0xa0, 0x59, +0x3e, 0x7f, 0x8f, 0xff, 0xdf, 0x9a, 0x04, 0x7d, +0x01, 0xfb, 0x15, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xbd, 0x01, 0x22, 0x21, 0xfb, 0xa7, 0x22, +0x16, 0x7e, 0xa0, 0xc6, 0x5a, 0xfe, 0x81, 0x9c, +0xdc, 0x03, 0x34, 0x24, 0x0b, 0x45, 0x47, 0xb3, +0x8a, 0x8a, 0x38, 0xa3, 0x54, 0x16, 0x59, 0xb6, +0x89, 0xff, 0xfc, 0x26, 0x7e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xbe, 0x01, 0x22, 0x21, 0x11, +0xef, 0x96, 0xbc, 0x7d, 0x06, 0x3e, 0x0f, 0x54, +0xcc, 0x96, 0x91, 0x93, 0xe7, 0x26, 0xee, 0x77, +0x9c, 0xc4, 0x1d, 0xac, 0x07, 0x4b, 0x0c, 0xe1, +0xfb, 0x43, 0x79, 0x07, 0x95, 0xdb, 0x64, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xbf, 0x01, 0x22, +0x21, 0x77, 0xf7, 0xf8, 0x57, 0xc7, 0x64, 0xaf, +0x0c, 0x1a, 0xe6, 0x48, 0x02, 0x97, 0x90, 0x8f, +0xad, 0xe4, 0x8c, 0xb2, 0x2b, 0x2f, 0xe1, 0xe3, +0x91, 0x26, 0x6b, 0xd8, 0x1f, 0xf3, 0x56, 0x92, +0x86, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc0, +0x01, 0x22, 0x21, 0xb4, 0xbc, 0xb6, 0x75, 0xc3, +0x9c, 0xb9, 0x32, 0xf0, 0x65, 0xca, 0x18, 0x15, +0xe2, 0xb0, 0xb0, 0xcc, 0xfb, 0xc6, 0x95, 0xea, +0xe9, 0x4e, 0x9d, 0x2e, 0xdf, 0x7b, 0xb3, 0x1b, +0x8c, 0x04, 0xb2, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc1, 0x01, 0x22, 0x21, 0x07, 0x86, 0xcb, +0x39, 0x49, 0xb4, 0xa5, 0xe8, 0x01, 0xb1, 0x9e, +0xe1, 0xd9, 0x49, 0xd2, 0x88, 0xf6, 0x9a, 0x57, +0x14, 0x17, 0x0d, 0xaf, 0x26, 0x9e, 0xc5, 0xa1, +0x60, 0xce, 0x78, 0x6a, 0x76, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc2, 0x01, 0x22, 0x21, 0x98, +0x35, 0x78, 0x3f, 0x2e, 0xd4, 0x11, 0xce, 0xcc, +0xe9, 0x12, 0x70, 0xc8, 0x1c, 0x3e, 0x8a, 0xae, +0x50, 0x46, 0xda, 0x49, 0xfb, 0x7b, 0x9a, 0xdf, +0x1b, 0x19, 0x1a, 0x66, 0xf5, 0x78, 0x1d, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc3, 0x01, 0x22, +0x21, 0x63, 0x38, 0x37, 0xcb, 0xdc, 0x4b, 0xb5, +0x03, 0x69, 0x6c, 0x71, 0x26, 0x7a, 0x26, 0xc9, +0xfd, 0xc2, 0x2b, 0xa3, 0x86, 0x58, 0x03, 0x66, +0xd1, 0xb9, 0x11, 0xa4, 0x80, 0xac, 0xc6, 0xf0, +0x1b, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc4, +0x01, 0x22, 0x21, 0x94, 0x72, 0x9a, 0x57, 0xdc, +0x84, 0x51, 0x7d, 0xff, 0xba, 0xbf, 0xf3, 0x91, +0x34, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x10, 0x16, 0x6c, 0x44, +0x04, 0x0e, 0x14, 0x07, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc5, 0x01, 0x22, 0x21, 0x1f, 0x7e, 0xcb, +0x09, 0xa4, 0x1b, 0xb1, 0xb6, 0x0c, 0x76, 0x27, +0xfd, 0x29, 0xb5, 0xe3, 0x5a, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x75, +0xd6, 0x8e, 0xfc, 0x4b, 0x9d, 0x82, 0x03, 0x04, +0x51, 0x02, 0x00, 0xc6, 0x01, 0x22, 0x21, 0xdd, +0xf4, 0x50, 0x32, 0xb7, 0x3f, 0xcb, 0x3e, 0x71, +0xf2, 0x06, 0x21, 0x88, 0x6c, 0x14, 0x1d, 0xc1, +0x45, 0x12, 0xaa, 0xc0, 0x7f, 0x6f, 0xbe, 0xca, +0xac, 0x60, 0x54, 0x08, 0x92, 0xd1, 0x43, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xc7, 0x01, 0x22, +0x21, 0x7d, 0x35, 0xbe, 0xe5, 0xfe, 0x82, 0xb2, +0xc0, 0x0e, 0xcc, 0x75, 0x86, 0x74, 0x5e, 0x1b, +0x7b, 0x8b, 0x8f, 0xe6, 0xcb, 0x75, 0xda, 0x33, +0x49, 0x49, 0xbf, 0x9d, 0x0a, 0xee, 0xe4, 0x20, +0x3d, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xc8, +0x01, 0x22, 0x21, 0x71, 0x34, 0x33, 0xfe, 0x72, +0x7f, 0x45, 0x85, 0xd9, 0x14, 0xd1, 0xe0, 0xba, +0x21, 0x87, 0x41, 0xc9, 0xe2, 0xf3, 0xf4, 0xb9, +0xe3, 0x9f, 0xae, 0x7f, 0x7a, 0x35, 0x56, 0x2a, +0xfd, 0xdc, 0x28, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xc9, 0x01, 0x22, 0x21, 0x1b, 0xf0, 0x73, +0xa6, 0xc9, 0x25, 0x72, 0x01, 0xd7, 0x9c, 0x00, +0x60, 0x36, 0xa3, 0x15, 0xc0, 0x77, 0x74, 0x1b, +0x0f, 0xe0, 0xf6, 0x39, 0xb9, 0x8d, 0x97, 0x2b, +0x9a, 0x25, 0x5d, 0xfb, 0xcd, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xca, 0x01, 0x22, 0x21, 0xaf, +0xe7, 0x59, 0x84, 0x26, 0xe4, 0x6f, 0x46, 0xaa, +0x47, 0xa5, 0xb1, 0x97, 0x33, 0xd4, 0x43, 0x70, +0x3c, 0xa0, 0xd9, 0xd3, 0xc9, 0x1d, 0xe4, 0x14, +0xf5, 0x37, 0x54, 0x7c, 0x49, 0x6e, 0xe4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcb, 0x01, 0x22, +0x21, 0x3c, 0x28, 0x2f, 0xba, 0xbe, 0x78, 0x7c, +0x2e, 0xbc, 0x26, 0x7d, 0xd4, 0xda, 0x75, 0x2e, +0xbd, 0x5c, 0x8c, 0x61, 0xc0, 0xe7, 0xd9, 0x0f, +0x65, 0x17, 0x8f, 0x78, 0xc1, 0x1f, 0xdd, 0x99, +0xef, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xcc, +0x01, 0x22, 0x21, 0x7d, 0x93, 0x61, 0xc4, 0x62, +0x50, 0x56, 0x57, 0xd4, 0xfc, 0x5a, 0x97, 0x5b, +0x26, 0x9b, 0x63, 0xb2, 0x20, 0xc9, 0xc4, 0x29, +0xa7, 0x94, 0xec, 0x96, 0xbb, 0x8b, 0x53, 0x4d, +0x30, 0x26, 0xca, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xcd, 0x01, 0x22, 0x21, 0x0b, 0x67, 0x42, +0xc9, 0xde, 0x1d, 0x95, 0x06, 0x8c, 0x81, 0x7c, +0x30, 0xc1, 0x0c, 0xe9, 0xb3, 0xf8, 0xad, 0x3c, +0xde, 0x98, 0x19, 0xaa, 0x45, 0xde, 0x2f, 0x72, +0xb0, 0xcf, 0x99, 0xa9, 0x9e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xce, 0x01, 0x22, 0x21, 0xae, +0x7b, 0x6a, 0x4f, 0xb3, 0x83, 0xa1, 0x93, 0xd0, +0x74, 0xf9, 0x91, 0xf4, 0xbf, 0x6d, 0x2a, 0xbc, +0xb3, 0x58, 0xa7, 0x92, 0xbd, 0x57, 0x79, 0x95, +0x67, 0xd9, 0xd8, 0xe0, 0xe4, 0x24, 0xdf, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xcf, 0x01, 0x22, +0x21, 0xf9, 0x8f, 0x52, 0x2f, 0xce, 0x8d, 0xce, +0x9a, 0x52, 0x7d, 0x42, 0xfa, 0xe2, 0xdb, 0x39, +0xb5, 0x62, 0x8c, 0x27, 0x5a, 0xed, 0x93, 0x60, +0x76, 0x79, 0xd6, 0xd3, 0xa2, 0x33, 0x76, 0xd6, +0x47, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd0, +0x01, 0x22, 0x21, 0xbf, 0x15, 0x9f, 0x9f, 0x09, +0xb0, 0x52, 0x2d, 0x2b, 0xe4, 0x6b, 0xdc, 0x90, +0xbe, 0x85, 0x05, 0x67, 0xd9, 0x89, 0x07, 0xb5, +0x36, 0x24, 0x69, 0x53, 0xbe, 0xd2, 0x84, 0x4b, +0xb0, 0x06, 0x9f, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd1, 0x01, 0x22, 0x21, 0x3c, 0x15, 0xb7, +0x71, 0x17, 0x61, 0x29, 0x50, 0x38, 0x09, 0x19, +0x1a, 0xf6, 0x92, 0xef, 0x75, 0x2b, 0x40, 0xd2, +0x1d, 0xd9, 0x26, 0x81, 0xb7, 0xb3, 0x7d, 0xb5, +0x4d, 0x2e, 0x8d, 0x88, 0x6e, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd2, 0x01, 0x22, 0x21, 0xdc, +0xab, 0xdc, 0x71, 0x8f, 0x06, 0xa6, 0xa4, 0x8c, +0x61, 0xcc, 0x2c, 0xe6, 0xc6, 0x78, 0x40, 0xf0, +0x9b, 0xda, 0xa5, 0x45, 0x65, 0x5e, 0xbf, 0x2d, +0x2e, 0xed, 0xb6, 0xd3, 0x2f, 0x16, 0xb9, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd3, 0x01, 0x22, +0x21, 0xc4, 0xf3, 0xdb, 0xb8, 0x9f, 0x57, 0x29, +0x75, 0xd8, 0x23, 0xb1, 0xed, 0x43, 0x5b, 0x00, +0x6f, 0x51, 0x53, 0xf1, 0x12, 0x47, 0x3a, 0x9d, +0x6c, 0x1d, 0x43, 0xa5, 0x80, 0x25, 0xb0, 0x12, +0xf1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd4, +0x01, 0x22, 0x21, 0x58, 0x3f, 0x42, 0xe1, 0x85, +0xc2, 0xcb, 0x8e, 0xfc, 0xc4, 0x6d, 0x1e, 0xa4, +0x80, 0x97, 0x70, 0x46, 0x39, 0xd4, 0x07, 0xbe, +0x03, 0x4e, 0x1f, 0xc7, 0x72, 0xfa, 0xf1, 0xdc, +0x59, 0xbd, 0x95, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd5, 0x01, 0x22, 0x21, 0x5d, 0x20, 0xde, +0x97, 0x41, 0xf3, 0x79, 0x57, 0xce, 0x86, 0xe3, +0x07, 0x93, 0x97, 0xc4, 0x60, 0xa5, 0xb4, 0xcd, +0x45, 0x3a, 0xc1, 0x93, 0x9c, 0x70, 0xca, 0x13, +0xa9, 0x1c, 0x34, 0x29, 0xef, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xd6, 0x01, 0x22, 0x21, 0x59, +0x4c, 0x4d, 0x3f, 0x8f, 0x54, 0x8e, 0xbd, 0xd3, +0x19, 0xae, 0x8b, 0x7f, 0x27, 0xb7, 0x76, 0x1c, +0xd1, 0x0d, 0x5a, 0xf8, 0x9f, 0x9e, 0x65, 0xde, +0x0a, 0xcc, 0x89, 0x52, 0xd5, 0xf8, 0x7a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xd7, 0x01, 0x22, +0x21, 0x79, 0xc4, 0xeb, 0x2e, 0x2e, 0x93, 0x53, +0x9c, 0xb1, 0x75, 0xf9, 0x40, 0xf6, 0x9c, 0xcb, +0xef, 0x98, 0xa6, 0xe0, 0x0d, 0x5e, 0x10, 0x81, +0xfa, 0x08, 0xe8, 0x78, 0x5d, 0x3a, 0x3a, 0x15, +0xc8, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xd8, +0x01, 0x22, 0x21, 0x2d, 0x49, 0x83, 0xab, 0x9d, +0xb0, 0x22, 0x32, 0x9e, 0x1d, 0xd1, 0xc2, 0x2b, +0x98, 0xb4, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xf0, 0xa4, 0x6f, 0x69, +0xff, 0x16, 0x96, 0xf0, 0x03, 0x04, 0x51, 0x02, +0x00, 0xd9, 0x01, 0x22, 0x21, 0xdb, 0x59, 0x54, +0x47, 0xf5, 0xbe, 0x8c, 0x1a, 0xf4, 0x03, 0x8f, +0x88, 0xc7, 0x56, 0x5e, 0xd4, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x3c, +0xcf, 0xb6, 0x52, 0x3b, 0xea, 0x85, 0x03, 0x04, +0x51, 0x02, 0x00, 0xda, 0x01, 0x22, 0x21, 0xcf, +0x00, 0x14, 0x48, 0x2b, 0xea, 0x9a, 0xa2, 0x00, +0x49, 0x68, 0x44, 0x1d, 0xec, 0xf8, 0xb3, 0x45, +0xea, 0x51, 0xb7, 0x07, 0xf7, 0x9a, 0x9b, 0x93, +0x58, 0x4d, 0x35, 0xbc, 0x85, 0x2b, 0x31, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdb, 0x01, 0x22, +0x21, 0xb1, 0x82, 0xbd, 0xaa, 0x50, 0xbd, 0x23, +0xea, 0xed, 0x90, 0x01, 0x98, 0xf8, 0x09, 0x69, +0xc3, 0xc3, 0x0b, 0x58, 0x08, 0x72, 0x8b, 0x3f, +0x26, 0xaa, 0xf3, 0x80, 0x32, 0xd2, 0x81, 0xcb, +0xd0, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xdc, +0x01, 0x22, 0x21, 0x23, 0xc4, 0xd8, 0x8e, 0x8f, +0x99, 0x37, 0x24, 0x0a, 0x22, 0x9e, 0x45, 0xd6, +0x08, 0xba, 0x82, 0xd7, 0x93, 0x7d, 0xbf, 0x9f, +0xd0, 0xde, 0xa2, 0xd8, 0x9d, 0xb1, 0xba, 0x3a, +0xa0, 0xa3, 0xd6, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xdd, 0x01, 0x22, 0x21, 0xa4, 0xc2, 0xf9, +0x74, 0xa1, 0xb9, 0x73, 0x8d, 0xdf, 0xa0, 0xf5, +0xa6, 0xa7, 0xac, 0x10, 0x61, 0xca, 0xa6, 0xbe, +0x6a, 0x96, 0xca, 0x90, 0x88, 0xad, 0x99, 0x48, +0x70, 0xb6, 0xe1, 0xb8, 0x91, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xde, 0x01, 0x22, 0x21, 0x61, +0xad, 0xa5, 0x84, 0x61, 0xeb, 0x6d, 0xb6, 0x13, +0x41, 0xec, 0x4a, 0x2b, 0xb9, 0xb2, 0xff, 0xc7, +0x35, 0xea, 0x49, 0xd9, 0xd2, 0x4a, 0x99, 0x8a, +0x15, 0x2f, 0x45, 0xea, 0xdf, 0xc7, 0xf4, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xdf, 0x01, 0x22, +0x21, 0x8d, 0xcc, 0x61, 0xe8, 0xe1, 0x06, 0x19, +0x49, 0x50, 0x20, 0x1c, 0x5d, 0x51, 0x74, 0x5d, +0xf0, 0xcd, 0x31, 0xca, 0x60, 0x25, 0xad, 0x0f, +0x73, 0x75, 0x7c, 0x8b, 0xf9, 0xe4, 0x3d, 0xc8, +0xd4, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe0, +0x01, 0x22, 0x21, 0x46, 0x6c, 0x53, 0xe6, 0x9e, +0x98, 0x3f, 0x21, 0x9f, 0x92, 0x75, 0x4e, 0x61, +0x6d, 0xf5, 0x2f, 0xf2, 0xec, 0xd8, 0x61, 0x80, +0x3c, 0x7a, 0xea, 0x4f, 0xdb, 0xc0, 0x7c, 0xc3, +0xaa, 0x8a, 0xa7, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe1, 0x01, 0x22, 0x21, 0x54, 0xc2, 0xf1, +0xed, 0xb1, 0xe8, 0xa3, 0x97, 0xc9, 0xb2, 0x3e, +0xd8, 0x11, 0x63, 0x6e, 0x0d, 0x9c, 0x66, 0xa8, +0xab, 0x32, 0x1c, 0x8d, 0xf5, 0x2b, 0x38, 0xe3, +0xd0, 0x24, 0x3a, 0x73, 0xb5, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe2, 0x01, 0x22, 0x21, 0xbc, +0x15, 0x94, 0xf5, 0x00, 0x20, 0x4f, 0x6a, 0xee, +0xb0, 0x4e, 0x98, 0x02, 0x79, 0x2e, 0x22, 0x7b, +0x8f, 0x8a, 0x0f, 0x2f, 0x60, 0xc6, 0x30, 0x09, +0xd0, 0x52, 0xa8, 0x8a, 0x26, 0x63, 0xd1, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe3, 0x01, 0x22, +0x21, 0x9c, 0xdd, 0x0c, 0x5b, 0xe5, 0x37, 0x40, +0x93, 0xe0, 0xb3, 0x35, 0x8f, 0xe7, 0xd3, 0xd8, +0x8f, 0xcb, 0x58, 0x6d, 0x01, 0x0f, 0xac, 0x85, +0xa2, 0x0c, 0x19, 0xd7, 0x20, 0xaf, 0x9c, 0x4f, +0xab, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe4, +0x01, 0x22, 0x21, 0x6d, 0x79, 0xef, 0x88, 0x71, +0xff, 0xa0, 0xbc, 0x3a, 0x50, 0x63, 0xf6, 0x33, +0x32, 0x9c, 0x3c, 0x7a, 0x3b, 0x4b, 0x9f, 0x1f, +0x40, 0x67, 0x22, 0xa7, 0x95, 0xcd, 0x97, 0xf5, +0x04, 0xe4, 0x7a, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe5, 0x01, 0x22, 0x21, 0xcf, 0x5c, 0x52, +0x93, 0x1f, 0xd1, 0x9c, 0xcb, 0x69, 0xc1, 0xc1, +0x47, 0x0d, 0x97, 0x71, 0xdf, 0x54, 0x35, 0x1b, +0x60, 0xa4, 0x24, 0x9d, 0x5d, 0xf2, 0xcc, 0x4e, +0x62, 0x17, 0xd9, 0xe2, 0x97, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xe6, 0x01, 0x22, 0x21, 0x6f, +0xf5, 0x14, 0xda, 0x76, 0x04, 0xb3, 0x05, 0x4a, +0x8f, 0x90, 0xe2, 0xc1, 0x5c, 0xde, 0xf3, 0x31, +0xf5, 0xed, 0x78, 0x35, 0x49, 0x95, 0x15, 0x3b, +0x12, 0x95, 0xbc, 0x32, 0xb2, 0x2e, 0x6a, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xe7, 0x01, 0x22, +0x21, 0xfa, 0x05, 0xea, 0x29, 0xb8, 0xe8, 0x7a, +0xd1, 0x34, 0x95, 0xc2, 0x7d, 0x78, 0xd8, 0xf4, +0xec, 0xe2, 0x1d, 0x45, 0x2f, 0x03, 0x69, 0xc3, +0xc0, 0xbd, 0x0d, 0xcb, 0xea, 0x29, 0xcb, 0x45, +0x70, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xe8, +0x01, 0x22, 0x21, 0x6f, 0x82, 0xd1, 0x87, 0xbc, +0x3c, 0xca, 0xbc, 0x46, 0x8f, 0x02, 0xfe, 0x7c, +0xc8, 0x97, 0xae, 0x7b, 0x0b, 0xef, 0x47, 0x96, +0xe7, 0x47, 0xff, 0x70, 0x53, 0x56, 0x48, 0x0b, +0x49, 0x18, 0x04, 0x00, 0x03, 0x04, 0x51, 0x02, +0x00, 0xe9, 0x01, 0x22, 0x21, 0x39, 0xbe, 0x52, +0x62, 0x24, 0xdf, 0x51, 0xbb, 0x73, 0xaf, 0x10, +0x97, 0x77, 0x2e, 0x48, 0x7e, 0x1e, 0x65, 0x99, +0xff, 0xa3, 0xcf, 0x8a, 0x9e, 0xb7, 0x51, 0x41, +0x3a, 0x5a, 0x5f, 0x9e, 0x70, 0x00, 0x03, 0x04, +0x51, 0x02, 0x00, 0xea, 0x01, 0x22, 0x21, 0xca, +0xf1, 0x48, 0x35, 0x10, 0x1a, 0xc9, 0x37, 0x25, +0x42, 0xb2, 0x20, 0x90, 0x10, 0xbf, 0xa9, 0xc0, +0x23, 0x93, 0x5b, 0x68, 0x8a, 0x27, 0xc9, 0xb6, +0xae, 0xed, 0x29, 0x06, 0xdc, 0x1d, 0xdb, 0x00, +0x03, 0x04, 0x51, 0x02, 0x00, 0xeb, 0x01, 0x22, +0x21, 0xf4, 0x50, 0x98, 0x97, 0xe1, 0xab, 0xea, +0xe4, 0xe6, 0x63, 0xa8, 0x04, 0x70, 0xa7, 0xc5, +0x88, 0x8e, 0xee, 0x43, 0xa9, 0x7a, 0x7d, 0x43, +0x47, 0xaa, 0x4b, 0x18, 0x9e, 0x55, 0x8f, 0x9e, +0xe1, 0x00, 0x03, 0x04, 0x51, 0x02, 0x00, 0xec, +0x01, 0x22, 0x21, 0x4b, 0xdb, 0xd1, 0x41, 0x96, +0x22, 0xda, 0x58, 0x9d, 0x92, 0x68, 0x99, 0x2f, +0xef, 0xd4, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0xf1, 0xd6, 0x7b, +0x4b, 0xe4, 0x86, 0x09, 0x03, 0x04, 0x51, 0x02, +0x00, 0xed, 0x01, 0x22, 0x21, 0xf1, 0xdf, 0x92, +0x3b, 0xb2, 0xcd, 0x6f, 0x0a, 0x9e, 0xcd, 0x9d, +0x85, 0x65, 0xc7, 0xd5, 0x5c, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0xc3, +0x16, 0x0a, 0x17, 0x16, 0x48, 0x72, 0x03, 0x04, +0x51, 0x02, 0x00, 0xee, 0x01, 0x22, 0x21, 0xa9, +0x57, 0x61, 0xea, 0x8b, 0x99, 0x9e, 0xf3, 0x0b, +0x9e, 0xf1, 0xcc, 0x07, 0x72, 0x21, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x1c, 0x38, 0x85, 0x09, 0xfd, 0x6e, 0x5f, 0xa9, +0xec, 0xea, 0x60, 0x0d, 0xc5, 0x6a, 0x45, 0x1f, 0x03, 0x04, 0x51, 0x02, 0x00, 0xef, 0x00 }; diff --git a/include/linux/defex.h b/include/linux/defex.h index 8fa60cc7e9d4..a20e580ba39c 100644 --- a/include/linux/defex.h +++ b/include/linux/defex.h @@ -12,5 +12,6 @@ /* Defex init API */ int task_defex_enforce(struct task_struct *p, struct file *f, int syscall); int task_defex_zero_creds(struct task_struct *tsk); +int task_defex_user_exec(const char *new_file); void __init defex_load_rules(void); #endif /* CONFIG_SECURITY_DEFEX_H */ diff --git a/kernel/kmod.c b/kernel/kmod.c index 0277d1216f80..cef1821f7fcd 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -43,6 +43,10 @@ #include +#ifdef CONFIG_SECURITY_DEFEX +#include +#endif + extern int max_threads; #define CAP_BSET (void *)1 @@ -566,6 +570,13 @@ int call_usermodehelper_exec(struct subprocess_info *sub_info, int wait) retval = -EBUSY; goto out; } + +#if defined(CONFIG_SECURITY_DEFEX) && ANDROID_VERSION >= 100000 /* Over Q in case of Exynos */ + if (task_defex_user_exec(sub_info->path)) { + goto out; + } +#endif + /* * Set the completion pointer only if there is a waiter. * This makes it possible to use umh_complete to free diff --git a/security/samsung/defex_lsm/Makefile b/security/samsung/defex_lsm/Makefile index 02549ef13f38..67d03db63cc7 100644 --- a/security/samsung/defex_lsm/Makefile +++ b/security/samsung/defex_lsm/Makefile @@ -4,10 +4,10 @@ # Features to Enable PED_ENABLE=true -PED_BASED_ON_TGID_ENABLE=true SAFEPLACE_ENABLE=true IMMUTABLE_ENABLE=true LP_ENABLE=true +UMH_RESTRICTION_ENABLE=true ifneq ($(wildcard $(srctree)/include/crypto/internal/rsa.h),) $(warning [DEFEX] INTEGRITY_ENABLE) @@ -52,12 +52,19 @@ ifeq ($(CONFIG_DEFEX_KERNEL_ONLY), y) endif endif +ifeq ($(CONFIG_SEC_FACTORY), y) + DEFEX_DEFINES += -DDEFEX_FACTORY_ENABLE +endif + +ifeq ($(CONFIG_KUNIT), y) + DEFEX_DEFINES += -DDEFEX_KUNIT_ENABLED +else + DEFEX_DEFINES += -D__visible_for_testing=static +endif + ifeq ($(PED_ENABLE), true) obj-y += defex_priv.o DEFEX_DEFINES += -DDEFEX_PED_ENABLE -ifeq ($(PED_BASED_ON_TGID_ENABLE), true) - DEFEX_DEFINES += -DDEFEX_PED_BASED_ON_TGID_ENABLE -endif endif ifeq ($(SAFEPLACE_ENABLE), true) @@ -78,6 +85,10 @@ ifeq ($(LP_ENABLE), true) DEFEX_DEFINES += -DDEFEX_LP_ENABLE endif +ifeq ($(UMH_RESTRICTION_ENABLE), true) + DEFEX_DEFINES += -DDEFEX_UMH_RESTRICTION_ENABLE +endif + ifeq ($(CACHES_ENABLE), true) obj-y += defex_caches.o DEFEX_DEFINES += -DDEFEX_CACHES_ENABLE @@ -109,15 +120,7 @@ else endif endif -ifeq ($(SEC_BUILD_OPTION_VTS), true) - $(warning [DEFEX] VTS true $(SEC_BUILD_OPTION_VTS)) - DEFEX_DEFINES += -DDEFEX_PERMISSIVE_SP - DEFEX_DEFINES += -DDEFEX_PERMISSIVE_PED - DEFEX_DEFINES += -DDEFEX_PERMISSIVE_IM - DEFEX_DEFINES += -DDEFEX_PERMISSIVE_LP -else - $(warning [DEFEX] VTS false $(SEC_BUILD_OPTION_VTS)) -endif +ccflags-y := -Wformat EXTRA_CFLAGS += -I$(srctree)/$(src)/cert EXTRA_AFLAGS += -Isecurity/samsung/defex_lsm/cert diff --git a/security/samsung/defex_lsm/defex_common.c b/security/samsung/defex_lsm/defex_common.c index 5362c3322ac1..26e4665249ee 100644 --- a/security/samsung/defex_lsm/defex_common.c +++ b/security/samsung/defex_lsm/defex_common.c @@ -7,6 +7,8 @@ */ +#include +#include #include #include #include @@ -32,11 +34,60 @@ #include #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + +inline ssize_t __vfs_read(struct file *file, char __user *buf, + size_t count, loff_t *pos) +{ + ssize_t ret; + + if (file->f_op->read) + ret = file->f_op->read(file, buf, count, pos); + else if (file->f_op->aio_read) + ret = do_sync_read(file, buf, count, pos); + else if (file->f_op->read_iter) + ret = new_sync_read(file, buf, count, pos); + else + ret = -EINVAL; + + return ret; +} +#endif + +struct file *local_fopen(const char *fname, int flags, umode_t mode) +{ + struct file *f; + mm_segment_t old_fs; + + old_fs = get_fs(); + set_fs(get_ds()); + f = filp_open(fname, flags, mode); + set_fs(old_fs); + return f; +} + +int local_fread(struct file *f, loff_t offset, void *ptr, unsigned long bytes) +{ + mm_segment_t old_fs; + char __user *buf = (char __user *)ptr; + ssize_t ret; + + if (!(f->f_mode & FMODE_READ)) + return -EBADF; + + old_fs = get_fs(); + set_fs(get_ds()); + ret = __vfs_read(f, buf, bytes, &offset); + set_fs(old_fs); + return (int)ret; +} const char unknown_file[] = ""; void init_defex_context(struct defex_context *dc, int syscall, struct task_struct *p, struct file *f) { + const struct cred *cred_ptr; + dc->syscall_no = syscall; dc->task = p; dc->process_file = NULL; @@ -47,6 +98,12 @@ void init_defex_context(struct defex_context *dc, int syscall, struct task_struc dc->target_name = NULL; dc->process_name_buff = NULL; dc->target_name_buff = NULL; + if (p == current) + cred_ptr = get_current_cred(); + else + cred_ptr = get_task_cred(p); + memcpy(&dc->cred, cred_ptr, sizeof(struct cred)); + put_cred(cred_ptr); } void release_defex_context(struct defex_context *dc) @@ -93,7 +150,7 @@ char *get_dc_process_name(struct defex_context *dc) if (!dc->process_name) { dpath = get_dc_process_dpath(dc); if (dpath) { - dc->process_name_buff = kzalloc(PATH_MAX, GFP_ATOMIC); + dc->process_name_buff = kmalloc(PATH_MAX, GFP_KERNEL); if (dc->process_name_buff) path = d_path(dpath, dc->process_name_buff, PATH_MAX); } @@ -127,7 +184,7 @@ char *get_dc_target_name(struct defex_context *dc) if (!dc->target_name) { dpath = get_dc_target_dpath(dc); if (dpath) { - dc->target_name_buff = kzalloc(PATH_MAX, GFP_ATOMIC); + dc->target_name_buff = kmalloc(PATH_MAX, GFP_KERNEL); if (dc->target_name_buff) path = d_path(dpath, dc->target_name_buff, PATH_MAX); } @@ -198,7 +255,7 @@ char *defex_get_filename(struct task_struct *p) dpath = &exe_file->f_path; - buff = kzalloc(PATH_MAX, GFP_ATOMIC); + buff = kmalloc(PATH_MAX, GFP_KERNEL); if (buff) path = d_path(dpath, buff, PATH_MAX); @@ -208,7 +265,7 @@ char *defex_get_filename(struct task_struct *p) out_filename: if (path && !IS_ERR(path)) - filename = kstrdup(path, GFP_ATOMIC); + filename = kstrdup(path, GFP_KERNEL); if (!filename) filename = (char *)unknown_file; @@ -231,7 +288,7 @@ char* defex_resolve_filename(const char *name, char **out_buff) if (*out_buff) buff = *out_buff; else - buff = kzalloc(PATH_MAX, GFP_ATOMIC); + buff = kmalloc(PATH_MAX, GFP_KERNEL); if (buff) { if (!kern_path(name, LOOKUP_FOLLOW, &path)) { target_file = d_path(&path, buff, PATH_MAX); diff --git a/security/samsung/defex_lsm/defex_debug.c b/security/samsung/defex_lsm/defex_debug.c index fcd4b1b3c39b..d18fcfd9f07c 100644 --- a/security/samsung/defex_lsm/defex_debug.c +++ b/security/samsung/defex_lsm/defex_debug.c @@ -19,7 +19,7 @@ static int last_cmd; -static int set_user(struct cred *new_cred) +__visible_for_testing int set_user(struct cred *new_cred) { struct user_struct *new_user; @@ -35,7 +35,7 @@ static int set_user(struct cred *new_cred) /* * target_id = (0 - set all uids, 1 - set fsuid, 2 - set all gids) */ -static int set_cred(int target_id, int new_val) +__visible_for_testing int set_cred(int target_id, int new_val) { struct user_namespace *ns = current_user_ns(); const struct cred *old_cred; @@ -86,7 +86,7 @@ do_abort: return -EPERM; } -static ssize_t debug_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) +__visible_for_testing ssize_t debug_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) { struct task_struct *p = current; int i, l, new_val = -1; @@ -124,7 +124,7 @@ static ssize_t debug_store(struct kobject *kobj, struct kobj_attribute *attr, co return (!ret)?count:ret; } -static ssize_t debug_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) +__visible_for_testing ssize_t debug_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { struct task_struct *p = current; int res = 0; @@ -146,7 +146,7 @@ static ssize_t debug_show(struct kobject *kobj, struct kobj_attribute *attr, cha return res; } -static struct kobj_attribute debug_attribute = __ATTR(debug, 0660, debug_show, debug_store); +__visible_for_testing struct kobj_attribute debug_attribute = __ATTR(debug, 0660, debug_show, debug_store); int defex_create_debug(struct kset *defex_kset) { diff --git a/security/samsung/defex_lsm/defex_ht.c b/security/samsung/defex_lsm/defex_ht.c index 706984ad221c..34e5675e2a04 100644 --- a/security/samsung/defex_lsm/defex_ht.c +++ b/security/samsung/defex_lsm/defex_ht.c @@ -8,48 +8,80 @@ #include #include +#include #include #include #include +#include #include "include/defex_catch_list.h" #include "include/defex_internal.h" -#define MAX_PID_32 32768 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +#include +#include +#endif -#ifdef DEFEX_PED_ENABLE -DECLARE_HASHTABLE(creds_hash, 15); -#endif /* DEFEX_PED_ENABLE */ +#define MAX_PID_32 32768 +#define DEFEX_MEM_CACHE_SIZE 32 +#define DEFEX_MEM_CACHE_COUNT 3 +#define CACHE_CRED_DATA 0 +#define CACHE_CRED_DATA_ID 1 +#define CACHE_HTABLE_ITEM 2 -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE struct id_set { unsigned int uid, fsuid, egid; }; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ struct proc_cred_data { - unsigned int uid, fsuid, egid; unsigned short cred_flags; -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE unsigned short tcnt; - struct id_set upd_ids[]; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ + struct id_set default_ids; + struct id_set main_ids[]; }; -struct proc_cred_struct { +struct hash_item_struct { struct hlist_node node; - struct proc_cred_data cred_data; + struct proc_cred_data *cred_data; + int id; }; +struct mem_cache_list { + atomic_t count; + char name[8]; + struct kmem_cache *allocator; + void *mem_cache_array[DEFEX_MEM_CACHE_SIZE]; +}; + +#ifdef DEFEX_PED_ENABLE +DECLARE_HASHTABLE(creds_hash, 15); static DEFINE_SPINLOCK(creds_hash_update_lock); static struct proc_cred_data *creds_fast_hash[MAX_PID_32 + 1]; -static int creds_fast_hash_ready; +static struct mem_cache_list mem_cache[DEFEX_MEM_CACHE_COUNT]; +static int creds_fast_hash_ready __ro_after_init; +__visible_for_testing void mem_cache_alloc(void); -void creds_fast_hash_init(void) + +void __init creds_fast_hash_init(void) { unsigned int i; + static const int sizes[DEFEX_MEM_CACHE_COUNT] __initdata = { + sizeof(struct proc_cred_data), + sizeof(struct proc_cred_data) + sizeof(struct id_set), + sizeof(struct hash_item_struct) + }; + hash_init(creds_hash); for (i = 0; i <= MAX_PID_32; i++) creds_fast_hash[i] = NULL; + + for(i = 0; i < ARRAY_SIZE(sizes); i++) { + snprintf(mem_cache[i].name, sizeof(mem_cache[i].name), "defex%d", i); + mem_cache[i].allocator = kmem_cache_create(mem_cache[i].name, sizes[i], 0, 0, NULL); + } + + for(i = 0; i < (DEFEX_MEM_CACHE_SIZE / 2); i++) + mem_cache_alloc(); + creds_fast_hash_ready = 1; } @@ -58,339 +90,295 @@ int is_task_creds_ready(void) return creds_fast_hash_ready; } -#ifdef DEFEX_PED_ENABLE -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE -void get_task_creds(struct task_struct *p, unsigned int *uid_ptr, unsigned int *fsuid_ptr, unsigned int *egid_ptr, unsigned short *cred_flags_ptr) -#else -void get_task_creds(int pid, unsigned int *uid_ptr, unsigned int *fsuid_ptr, unsigned int *egid_ptr, unsigned short *cred_flags_ptr) -#endif +__visible_for_testing inline void *mem_cache_get(int cache_number) { - struct proc_cred_struct *obj; - struct proc_cred_data *cred_data; + int n; + n = atomic_read(&mem_cache[cache_number].count); + if (n) { + atomic_dec(&mem_cache[cache_number].count); + return mem_cache[cache_number].mem_cache_array[n - 1]; + } + return NULL; +} + +__visible_for_testing inline void *mem_cache_reclaim(int cache_number, void *ptr) +{ + int n; + n = atomic_read(&mem_cache[cache_number].count); + if (n < DEFEX_MEM_CACHE_SIZE) { + atomic_inc(&mem_cache[cache_number].count); + mem_cache[cache_number].mem_cache_array[n] = ptr; + ptr = NULL; + } + return ptr; +} + +__visible_for_testing void mem_cache_alloc(void) +{ + int mem_allocated = 0; + int i, n; + unsigned long flags; + void *mem_block[DEFEX_MEM_CACHE_COUNT]; + + for(i = 0; i < DEFEX_MEM_CACHE_COUNT; i++) { + mem_block[i] = NULL; + n = atomic_read(&mem_cache[i].count); + if (n < (DEFEX_MEM_CACHE_SIZE / 2)) { + mem_block[i] = kmem_cache_alloc(mem_cache[i].allocator, in_atomic() ? GFP_ATOMIC:GFP_KERNEL); + mem_allocated++; + } + } + + if (!mem_allocated) + return; + + spin_lock_irqsave(&creds_hash_update_lock, flags); + for(i = 0; i < DEFEX_MEM_CACHE_COUNT; i++) { + n = atomic_read(&mem_cache[i].count); + if (mem_block[i] && n < DEFEX_MEM_CACHE_SIZE) { + mem_cache[i].mem_cache_array[n] = mem_block[i]; + mem_block[i] = NULL; + atomic_inc(&mem_cache[i].count); + mem_allocated--; + } + } + spin_unlock_irqrestore(&creds_hash_update_lock, flags); + + if (!mem_allocated) + return; + + for(i = 0; i < DEFEX_MEM_CACHE_COUNT; i++) { + if (mem_block[i]) { + kmem_cache_free(mem_cache[i].allocator, mem_block[i]); + } + } +} + +__visible_for_testing struct proc_cred_data *get_cred_data(int id) +{ + struct proc_cred_data *cred_data = NULL; + struct hash_item_struct *obj; + + if (id < 0) + return NULL; + if (id <= MAX_PID_32) { + cred_data = creds_fast_hash[id]; + } else { + hash_for_each_possible(creds_hash, obj, node, id) { + if (obj->id == id) { + cred_data = obj->cred_data; + break; + } + } + } + return cred_data; +} + +__visible_for_testing struct proc_cred_data **get_cred_ptr(int id) +{ + struct proc_cred_data **cred_ptr = NULL; + struct hash_item_struct *obj; + + if (id < 0) + return NULL; + if (id <= MAX_PID_32) { + cred_ptr = &creds_fast_hash[id]; + } else { + hash_for_each_possible(creds_hash, obj, node, id) { + if (obj->id == id) { + cred_ptr = &obj->cred_data; + break; + } + } + } + return cred_ptr; +} + +__visible_for_testing void set_cred_data(int id, struct proc_cred_data **cred_ptr, struct proc_cred_data *cred_data) +{ + struct hash_item_struct *obj; + + if (id < 0) + return; + if (cred_ptr) { + *cred_ptr = cred_data; + } else { + if (id > MAX_PID_32) { + obj = mem_cache_get(CACHE_HTABLE_ITEM); + if (!obj) + return; + obj->id = id; + obj->cred_data = cred_data; + hash_add(creds_hash, &obj->node, id); + } + } +} + +void get_task_creds(struct task_struct *p, unsigned int *uid_ptr, unsigned int *fsuid_ptr, unsigned int *egid_ptr, unsigned short *cred_flags_ptr) +{ + struct proc_cred_data *cred_data, *thread_cred_data; + struct id_set *ids_ptr; unsigned int uid = 0, fsuid = 0, egid = 0; unsigned short cred_flags = CRED_FLAGS_PROOT; unsigned long flags; -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE int tgid = p->tgid, pid = p->pid; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - if (pid <= MAX_PID_32) { - spin_lock_irqsave(&creds_hash_update_lock, flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - cred_data = creds_fast_hash[tgid]; - if (cred_data) { - if (tgid == pid) { - if (cred_data->cred_flags & CRED_FLAGS_MAIN_UPDATED) { - GET_CREDS(upd_ids->uid, upd_ids->fsuid, upd_ids->egid, cred_flags); - } else { - GET_CREDS(uid, fsuid, egid, cred_flags); - } - } else { - if ((cred_data->cred_flags & CRED_FLAGS_SUB_UPDATED) && creds_fast_hash[pid]) - cred_data = creds_fast_hash[pid]; - GET_CREDS(uid, fsuid, egid, cred_flags); - } - } -#else - cred_data = creds_fast_hash[pid]; - if (cred_data) { - GET_CREDS(uid, fsuid, egid, cred_flags); - } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - } else { - spin_lock_irqsave(&creds_hash_update_lock, flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE + spin_lock_irqsave(&creds_hash_update_lock, flags); + cred_data = get_cred_data(tgid); + if (cred_data) { if (tgid == pid) { - hash_for_each_possible(creds_hash, obj, node, tgid) { - if (obj->cred_data.cred_flags & CRED_FLAGS_MAIN_UPDATED) { - GET_CREDS_OBJ(upd_ids->uid, upd_ids->fsuid, upd_ids->egid, cred_flags); - } else { - GET_CREDS_OBJ(uid, fsuid, egid, cred_flags); - } - break; - } + ids_ptr = (cred_data->cred_flags & CRED_FLAGS_MAIN_UPDATED) ? \ + (&cred_data->main_ids[0]) : (&cred_data->default_ids); } else { - hash_for_each_possible(creds_hash, obj, node, tgid) { - GET_CREDS_OBJ(uid, fsuid, egid, cred_flags); - break; - } - if (cred_flags & CRED_FLAGS_SUB_UPDATED) { -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - hash_for_each_possible(creds_hash, obj, node, pid) { - GET_CREDS_OBJ(uid, fsuid, egid, cred_flags); - break; - } -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE + if (cred_data->cred_flags & CRED_FLAGS_SUB_UPDATED) { + thread_cred_data = get_cred_data(pid); + if (thread_cred_data) + cred_data = thread_cred_data; } + ids_ptr = &cred_data->default_ids; } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - spin_unlock_irqrestore(&creds_hash_update_lock, flags); + GET_CREDS(ids_ptr, cred_data); } + spin_unlock_irqrestore(&creds_hash_update_lock, flags); *uid_ptr = uid; *fsuid_ptr = fsuid; *egid_ptr = egid; *cred_flags_ptr = cred_flags; } -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE int set_task_creds(struct task_struct *p, unsigned int uid, unsigned int fsuid, unsigned int egid, unsigned short cred_flags) -#else -int set_task_creds(int pid, unsigned int uid, unsigned int fsuid, unsigned int egid, unsigned short cred_flags) -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ { - struct proc_cred_struct *obj; - struct proc_cred_data *cred_data = NULL, *tmp_data = NULL; + struct proc_cred_data *cred_data = NULL, *tmp_data, **cred_ptr; + struct id_set *ids_ptr; unsigned long flags; -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - struct proc_cred_struct *tmp_obj = NULL; - int tgid = p->tgid, pid = p->pid; - unsigned short tmp_cred_flags = 0x80; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ + int err = -1, tgid = p->tgid, pid = p->pid; + void *free_buff = NULL; -alloc_obj:; - if (pid <= MAX_PID_32) { -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - if (!creds_fast_hash[tgid]) { -#else - if (!creds_fast_hash[pid]) { -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - tmp_data = kmalloc(sizeof(struct proc_cred_data), GFP_ATOMIC); - if (!tmp_data) - return -1; - } - spin_lock_irqsave(&creds_hash_update_lock, flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - cred_data = creds_fast_hash[tgid]; -#else - cred_data = creds_fast_hash[pid]; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - if (!cred_data) { - if (!tmp_data) { - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - goto alloc_obj; - } - cred_data = tmp_data; -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - cred_data->cred_flags = 0; - cred_data->tcnt = 1; - creds_fast_hash[tgid] = cred_data; -#else - creds_fast_hash[pid] = cred_data; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - tmp_data = NULL; - } -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - if (cred_data && cred_data->tcnt >= 2) { - if (tgid == pid) { - if (!(cred_data->cred_flags & CRED_FLAGS_MAIN_UPDATED)) { - cred_data->cred_flags |= CRED_FLAGS_MAIN_UPDATED; - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - tmp_data = kmalloc(sizeof(struct proc_cred_data) + sizeof(struct id_set), GFP_ATOMIC); - if (!tmp_data) { - return -1; - } - spin_lock_irqsave(&creds_hash_update_lock, flags); - *tmp_data = *cred_data; - kfree(cred_data); - cred_data = tmp_data; - creds_fast_hash[tgid] = cred_data; - tmp_data = NULL; - } - SET_CREDS(upd_ids->uid, upd_ids->fsuid, upd_ids->egid, cred_flags); - } else { - cred_data->cred_flags |= CRED_FLAGS_SUB_UPDATED; - cred_data = creds_fast_hash[pid]; - if (!cred_data) { - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - tmp_data = kmalloc(sizeof(struct proc_cred_data), GFP_ATOMIC); - if (!tmp_data) { - return -1; - } - spin_lock_irqsave(&creds_hash_update_lock, flags); - cred_data = tmp_data; - creds_fast_hash[pid] = cred_data; - tmp_data = NULL; - } - cred_data->cred_flags = 0; - SET_CREDS(uid, fsuid, egid, cred_flags); - } - } else { -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - SET_CREDS(uid, fsuid, egid, cred_flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - if (tmp_data) - kfree(tmp_data); - return 0; - } + mem_cache_alloc(); spin_lock_irqsave(&creds_hash_update_lock, flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - hash_for_each_possible(creds_hash, obj, node, tgid) { - if (obj->cred_data.tcnt >= 2) { - tmp_cred_flags = obj->cred_data.cred_flags; - obj->cred_data.cred_flags |= ((tgid == pid) ? CRED_FLAGS_MAIN_UPDATED : CRED_FLAGS_SUB_UPDATED); - break; - } -#else - hash_for_each_possible(creds_hash, obj, node, pid) { -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - SET_CREDS_OBJ(uid, fsuid, egid, cred_flags); - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return 0; - } - spin_unlock_irqrestore(&creds_hash_update_lock, flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - if (tmp_cred_flags == 0x80) { -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - obj = kmalloc(sizeof(struct proc_cred_struct), GFP_ATOMIC); - if (!obj) - return -1; - obj->cred_data.cred_flags = 0; - SET_CREDS_OBJ(uid, fsuid, egid, cred_flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - obj->cred_data.tcnt = 1; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - spin_lock_irqsave(&creds_hash_update_lock, flags); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - hash_add(creds_hash, &obj->node, tgid); -#else - hash_add(creds_hash, &obj->node, pid); -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return 0; -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - if (tgid == pid) { - if (!(tmp_cred_flags & CRED_FLAGS_MAIN_UPDATED)) { - obj = kmalloc(sizeof(struct proc_cred_struct) + sizeof(struct id_set), GFP_ATOMIC); - if (!obj) - return -1; - spin_lock_irqsave(&creds_hash_update_lock, flags); - hash_for_each_possible(creds_hash, tmp_obj, node, tgid) { - *obj = *tmp_obj; - hash_del(&tmp_obj->node); - kfree(tmp_obj); - break; + /* Search for main proces's data */ + cred_ptr = get_cred_ptr(tgid); + cred_data = (cred_ptr) ? (*cred_ptr) : NULL; + if (!cred_data) { + /* Not found? Allocate a new data */ + cred_data = mem_cache_get(CACHE_CRED_DATA); + if (!cred_data) + goto set_finish; + cred_data->cred_flags = 0; + cred_data->tcnt = 1; + set_cred_data(tgid, cred_ptr, cred_data); + } + ids_ptr = &cred_data->default_ids; + + if (cred_data->tcnt >= 2) { + if (tgid == pid) { + /* Allocate extended data for main process, copy and remove old data */ + if (!(cred_data->cred_flags & CRED_FLAGS_MAIN_UPDATED)) { + cred_data->cred_flags |= CRED_FLAGS_MAIN_UPDATED; + tmp_data = mem_cache_get(CACHE_CRED_DATA_ID); + if (!tmp_data) + goto set_finish; + *tmp_data = *cred_data; + free_buff = mem_cache_reclaim(CACHE_CRED_DATA, cred_data); + cred_data = tmp_data; + set_cred_data(tgid, cred_ptr, cred_data); } - SET_CREDS_OBJ(upd_ids->uid, upd_ids->fsuid, upd_ids->egid, cred_flags); - hash_add(creds_hash, &obj->node, tgid); - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return 0; + ids_ptr = &cred_data->main_ids[0]; } else { - spin_lock_irqsave(&creds_hash_update_lock, flags); - hash_for_each_possible(creds_hash, obj, node, tgid) { - SET_CREDS_OBJ(upd_ids->uid, upd_ids->fsuid, upd_ids->egid, cred_flags); - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return 0; + cred_data->cred_flags |= CRED_FLAGS_SUB_UPDATED; + /* Search for thread's data. Allocate, if not found */ + cred_ptr = get_cred_ptr(pid); + cred_data = (cred_ptr) ? (*cred_ptr) : NULL; + if (!cred_data) { + cred_data = mem_cache_get(CACHE_CRED_DATA); + if (!cred_data) + goto set_finish; + set_cred_data(pid, cred_ptr, cred_data); } - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return -1; + cred_data->cred_flags = 0; + ids_ptr = &cred_data->default_ids; } - } else { - spin_lock_irqsave(&creds_hash_update_lock, flags); - hash_for_each_possible(creds_hash, obj, node, pid) { - SET_CREDS_OBJ(uid, fsuid, egid, cred_flags); - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return 0; - } - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - obj = kmalloc(sizeof(struct proc_cred_struct), GFP_ATOMIC); - if (!obj) - return -1; - obj->cred_data.cred_flags = 0; - SET_CREDS_OBJ(uid, fsuid, egid, cred_flags); - spin_lock_irqsave(&creds_hash_update_lock, flags); - hash_add(creds_hash, &obj->node, pid); - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return 0; } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ -} -#endif /* DEFEX_PED_ENABLE */ + SET_CREDS(ids_ptr, cred_data); + err = 0; + +set_finish: + spin_unlock_irqrestore(&creds_hash_update_lock, flags); + /* Free the pending pointer */ + if (free_buff) + kmem_cache_free(mem_cache[CACHE_CRED_DATA].allocator, free_buff); + mem_cache_alloc(); + return err; +} -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE void set_task_creds_tcnt(struct task_struct *p, int addition) { - struct proc_cred_struct *tgid_obj, *pid_obj; - struct proc_cred_data *tgid_cred_data = NULL, *pid_cred_data = NULL; - unsigned long flags; + struct hash_item_struct *tgid_obj = NULL, *pid_obj = NULL; + struct proc_cred_data **cred_ptr, *tgid_cred_data = NULL, *pid_cred_data = NULL; + struct proc_cred_data *free_buff1 = NULL, *free_buff2 = NULL; int tgid = p->tgid, pid = p->pid; - - if (pid <= MAX_PID_32) { - spin_lock_irqsave(&creds_hash_update_lock, flags); - if (tgid != pid && addition == -1) { - pid_cred_data = creds_fast_hash[pid]; - if (pid_cred_data) { - creds_fast_hash[pid] = NULL; - kfree(pid_cred_data); - } - } - tgid_cred_data = creds_fast_hash[tgid]; - if (tgid_cred_data) { - tgid_cred_data->tcnt += addition; - if (!tgid_cred_data->tcnt) { - creds_fast_hash[tgid] = NULL; - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - kfree(tgid_cred_data); - return; - } - } - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - return; - } + unsigned long flags; spin_lock_irqsave(&creds_hash_update_lock, flags); + /* Remove the thread's data, if found */ if (tgid != pid && addition == -1) { - hash_for_each_possible(creds_hash, pid_obj, node, pid) { + cred_ptr = get_cred_ptr(pid); + pid_cred_data = (cred_ptr) ? (*cred_ptr) : NULL; + if (pid_cred_data) { + *cred_ptr = NULL; + /* Return to pre-allocated pool, if possible */ + free_buff1 = mem_cache_reclaim(CACHE_CRED_DATA, pid_cred_data); + } + /* Remove the thread's hash container */ + if (cred_ptr && pid > MAX_PID_32) { + pid_obj = container_of(cred_ptr, struct hash_item_struct, cred_data); hash_del(&pid_obj->node); - kfree(pid_obj); - break; + /* Return to pre-allocated pool, if possible */ + pid_obj = mem_cache_reclaim(CACHE_HTABLE_ITEM, pid_obj); } } - hash_for_each_possible(creds_hash, tgid_obj, node, tgid) { - tgid_obj->cred_data.tcnt += addition; - if (!tgid_obj->cred_data.tcnt) { - hash_del(&tgid_obj->node); - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - kfree(tgid_obj); - return; + /* Search for the main process's data */ + cred_ptr = get_cred_ptr(tgid); + tgid_cred_data = (cred_ptr) ? (*cred_ptr) : NULL; + if (tgid_cred_data) { + tgid_cred_data->tcnt += addition; + /* No threads, remove process data */ + if (!tgid_cred_data->tcnt) { + *cred_ptr = NULL; + /* Return to pre-allocated pool, if possible */ + free_buff2 = mem_cache_reclaim((tgid_cred_data->cred_flags & CRED_FLAGS_MAIN_UPDATED) ? \ + CACHE_CRED_DATA_ID : CACHE_CRED_DATA, tgid_cred_data); + /* Remove the process's hash container */ + if (tgid > MAX_PID_32) { + tgid_obj = container_of(cred_ptr, struct hash_item_struct, cred_data); + hash_del(&tgid_obj->node); + /* Return to pre-allocated pool, if possible */ + tgid_obj = mem_cache_reclaim(CACHE_HTABLE_ITEM, tgid_obj); + } } - break; } spin_unlock_irqrestore(&creds_hash_update_lock, flags); + /* Free all pending pointers */ + if (free_buff1) + kmem_cache_free(mem_cache[CACHE_CRED_DATA].allocator, free_buff1); + if (free_buff2) + kmem_cache_free(mem_cache[(free_buff2->cred_flags & CRED_FLAGS_MAIN_UPDATED) ? \ + CACHE_CRED_DATA_ID : CACHE_CRED_DATA].allocator, free_buff2); + if (pid_obj) + kmem_cache_free(mem_cache[CACHE_HTABLE_ITEM].allocator, pid_obj); + if (tgid_obj) + kmem_cache_free(mem_cache[CACHE_HTABLE_ITEM].allocator, tgid_obj); return; } + #else -void delete_task_creds(int pid) + +void set_task_creds_tcnt(struct task_struct *p, int addition) { - struct proc_cred_struct *obj; - struct proc_cred_data *cred_data; - unsigned long flags; - - if (pid <= MAX_PID_32) { - spin_lock_irqsave(&creds_hash_update_lock, flags); - cred_data = creds_fast_hash[pid]; - creds_fast_hash[pid] = NULL; - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - kfree(cred_data); - return; - } - - spin_lock_irqsave(&creds_hash_update_lock, flags); - hash_for_each_possible(creds_hash, obj, node, pid) { - hash_del(&obj->node); - spin_unlock_irqrestore(&creds_hash_update_lock, flags); - kfree(obj); - return; - } - spin_unlock_irqrestore(&creds_hash_update_lock, flags); + (void)p; + (void)addition; } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ +#endif /* DEFEX_PED_ENABLE */ diff --git a/security/samsung/defex_lsm/defex_immutable.c b/security/samsung/defex_lsm/defex_immutable.c index dad25543b7c7..bade735d44e6 100644 --- a/security/samsung/defex_lsm/defex_immutable.c +++ b/security/samsung/defex_lsm/defex_immutable.c @@ -55,7 +55,7 @@ ssize_t task_defex_immutable_attr_store(struct kobject *kobj, return attribute->store(immutable, attribute, buf, len); } -static void task_defex_immutable_release(struct kobject *kobj) +__visible_for_testing void task_defex_immutable_release(struct kobject *kobj) { struct defex_immutable *immutable_obj; diff --git a/security/samsung/defex_lsm/defex_lsm.c b/security/samsung/defex_lsm/defex_lsm.c index 21fa42abd94e..8a030634f79a 100644 --- a/security/samsung/defex_lsm/defex_lsm.c +++ b/security/samsung/defex_lsm/defex_lsm.c @@ -50,17 +50,16 @@ asmlinkage int defex_syscall_enter(long int syscallno, struct pt_regs *regs) } //INIT///////////////////////////////////////////////////////////////////////// -static int __init defex_lsm_init(void) +__visible_for_testing int __init defex_lsm_init(void) { int ret; #ifdef DEFEX_CACHES_ENABLE defex_file_cache_init(); #endif /* DEFEX_CACHES_ENABLE */ - creds_fast_hash_init(); #ifdef DEFEX_PED_ENABLE - hash_init(creds_hash); + creds_fast_hash_init(); #endif /* DEFEX_PED_ENABLE */ ret = defex_init_sysfs(); diff --git a/security/samsung/defex_lsm/defex_priv.c b/security/samsung/defex_lsm/defex_priv.c index 59cfb77ef11e..f3213cb0b63b 100644 --- a/security/samsung/defex_lsm/defex_priv.c +++ b/security/samsung/defex_lsm/defex_priv.c @@ -39,17 +39,6 @@ ssize_t task_defex_privesc_show_status(struct defex_privesc *privesc_obj, return snprintf(buf, 3, "%u\n", privesc_obj->status); } -ssize_t task_defex_privesc_show_tgid(struct defex_privesc *privesc_obj, - struct privesc_attribute *attr, char *buf) -{ -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE - unsigned int val = 1; -#else - unsigned int val = 0; -#endif - return snprintf(buf, 3, "%u\n", val); -} - ssize_t task_defex_privesc_attr_store(struct kobject *kobj, struct attribute *attr, const char *buf, size_t len) { @@ -122,12 +111,8 @@ void task_defex_destroy_privesc_obj(struct defex_privesc *privesc) static struct privesc_attribute privesc_status_attribute = __ATTR(status, 0660, task_defex_privesc_show_status, task_defex_privesc_store_status); -static struct privesc_attribute privesc_tgid_attribute = - __ATTR(tgid, 0444, task_defex_privesc_show_tgid, NULL); - static struct attribute *privesc_default_attrs[] = { &privesc_status_attribute.attr, - &privesc_tgid_attribute.attr, NULL, }; diff --git a/security/samsung/defex_lsm/defex_procs.c b/security/samsung/defex_lsm/defex_procs.c index acdca937eed4..15dc781e3d52 100644 --- a/security/samsung/defex_lsm/defex_procs.c +++ b/security/samsung/defex_lsm/defex_procs.c @@ -57,6 +57,18 @@ static int __init verifiedboot_state_setup(char *str) __setup("androidboot.verifiedbootstate=", verifiedboot_state_setup); #endif /* DEFEX_DEPENDING_ON_OEMUNLOCK */ +__visible_for_testing struct task_struct *get_parent_task(const struct task_struct *p) +{ + struct task_struct *parent = NULL; + + read_lock(&tasklist_lock); + parent = p->parent; + if (parent) + get_task_struct(parent); + read_unlock(&tasklist_lock); + return parent; +} + #ifdef DEFEX_DSMS_ENABLE # define PED_VIOLATION "DFX1" @@ -73,11 +85,10 @@ static void defex_report_violation(const char *violation, uint64_t counter, stru char message[MESSAGE_BUFFER_SIZE + 1]; struct task_struct *parent = NULL, *p = dc->task; - const uid_t uid = uid_get_value(p->cred->uid); - const uid_t euid = uid_get_value(p->cred->euid); - const uid_t fsuid = uid_get_value(p->cred->fsuid); - const uid_t egid = uid_get_value(p->cred->egid); - const pid_t pid = p->pid, tgid = p->tgid; + const uid_t uid = uid_get_value(dc->cred.uid); + const uid_t euid = uid_get_value(dc->cred.euid); + const uid_t fsuid = uid_get_value(dc->cred.fsuid); + const uid_t egid = uid_get_value(dc->cred.egid); const char *process_name = p->comm; const char *prt_process_name = NULL; const char *program_path = get_dc_process_name(dc); @@ -85,15 +96,9 @@ static void defex_report_violation(const char *violation, uint64_t counter, stru char *file_path = NULL; char stored_creds[STORED_CREDS_SIZE + 1]; - read_lock(&tasklist_lock); - parent = p->parent; - if (!parent) { - read_unlock(&tasklist_lock); + parent = get_parent_task(p); + if (!parent) return; - } - - get_task_struct(parent); - read_unlock(&tasklist_lock); prt_process_name = parent->comm; prt_program_path = defex_get_filename(parent); @@ -105,13 +110,13 @@ static void defex_report_violation(const char *violation, uint64_t counter, stru stored_creds[sizeof(stored_creds) - 1] = 0; } #ifdef DEFEX_DEPENDING_ON_OEMUNLOCK - snprintf(message, sizeof(message), "%d, sc=%d, tsk=%s(%s %u %u), %s(%s), [%ld %ld %ld %ld], %s%s, %d", - boot_state_unlocked, dc->syscall_no, process_name, program_path, pid, tgid, prt_process_name, + snprintf(message, sizeof(message), "%d, sc=%d, tsk=%s(%s), %s(%s), [%ld %ld %ld %ld], %s%s, %d", + boot_state_unlocked, dc->syscall_no, process_name, program_path, prt_process_name, prt_program_path, (long)uid, (long)euid, (long)fsuid, (long)egid, (file_path ? "file=" : "stored "), (file_path ? file_path : stored_creds), case_num); #else - snprintf(message, sizeof(message), "sc=%d, tsk=%s(%s %u %u), %s(%s), [%ld %ld %ld %ld], %s%s, %d", - dc->syscall_no, process_name, program_path, pid, tgid, prt_process_name, + snprintf(message, sizeof(message), "sc=%d, tsk=%s(%s), %s(%s), [%ld %ld %ld %ld], %s%s, %d", + dc->syscall_no, process_name, program_path, prt_process_name, prt_program_path, (long)uid, (long)euid, (long)fsuid, (long)egid, (file_path ? "file=" : "stored "), (file_path ? file_path : stored_creds), case_num); #endif @@ -129,7 +134,7 @@ static void defex_report_violation(const char *violation, uint64_t counter, stru #endif /* DEFEX_DSMS_ENABLE */ #ifdef DEFEX_SAFEPLACE_ENABLE -static long kill_process(struct task_struct *p) +__visible_for_testing long kill_process(struct task_struct *p) { read_lock(&tasklist_lock); force_sig(SIGKILL, p); @@ -139,7 +144,7 @@ static long kill_process(struct task_struct *p) #endif /* DEFEX_SAFEPLACE_ENABLE */ #ifdef DEFEX_PED_ENABLE -static long kill_process_group(struct task_struct *p, int tgid, int pid) +__visible_for_testing long kill_process_group(struct task_struct *p, int tgid, int pid) { read_lock(&tasklist_lock); for_each_process(p) { @@ -151,7 +156,7 @@ static long kill_process_group(struct task_struct *p, int tgid, int pid) return 0; } -static int task_defex_is_secured(struct defex_context *dc) +__visible_for_testing int task_defex_is_secured(struct defex_context *dc) { struct file *exe_file = get_dc_process_file(dc); char *proc_name = get_dc_process_name(dc); @@ -164,7 +169,7 @@ static int task_defex_is_secured(struct defex_context *dc) return is_secured; } -static int at_same_group(unsigned int uid1, unsigned int uid2) +__visible_for_testing int at_same_group(unsigned int uid1, unsigned int uid2) { static const unsigned int lod_base = 0x61A8; @@ -178,7 +183,7 @@ static int at_same_group(unsigned int uid1, unsigned int uid2) return ((uid1 >> 16) == lod_base) && ((uid2 >> 16) == lod_base); } -static int at_same_group_gid(unsigned int gid1, unsigned int gid2) +__visible_for_testing int at_same_group_gid(unsigned int gid1, unsigned int gid2) { static const unsigned int lod_base = 0x61A8, inet = 3003; @@ -194,27 +199,18 @@ static int at_same_group_gid(unsigned int gid1, unsigned int gid2) #ifdef DEFEX_LP_ENABLE /* Lower Permission feature decision function */ -static int lower_adb_permission(struct task_struct *p, unsigned short cred_flags) +__visible_for_testing int lower_adb_permission(struct defex_context *dc, unsigned short cred_flags) { char *parent_file; - struct task_struct *parent = NULL; + struct task_struct *parent = NULL, *p = dc->task; #ifndef DEFEX_PERMISSIVE_LP struct cred *shellcred; static const char adbd_str[] = "/system/bin/adbd"; #endif /* DEFEX_PERMISSIVE_LP */ int ret = 0; - read_lock(&tasklist_lock); - parent = p->parent; - if (!parent) { - read_unlock(&tasklist_lock); - goto out; - } - - get_task_struct(parent); - read_unlock(&tasklist_lock); - - if (p->pid == 1 || parent->pid == 1) + parent = get_parent_task(p); + if (!parent || p->pid == 1 || parent->pid == 1) goto out; parent_file = defex_get_filename(parent); @@ -238,8 +234,8 @@ static int lower_adb_permission(struct task_struct *p, unsigned short cred_flags uid_set_value(shellcred->egid, 2000); uid_set_value(shellcred->fsgid, 2000); commit_creds(shellcred); - - set_task_creds(REF_PID(p), 2000, 2000, 2000, cred_flags); + memcpy(&dc->cred, shellcred, sizeof(struct cred)); + set_task_creds(p, 2000, 2000, 2000, cred_flags); ret = 1; } @@ -255,8 +251,10 @@ out: /* Cred. violation feature decision function */ #define AID_MEDIA_RW 1023 -#define SECUREFD_MEDIA_RW 0xE4E5BF -static int task_defex_check_creds(struct defex_context *dc) +#define AID_MEDIA_OBB 1059 +#define AID_SYSTEM 1000 + +__visible_for_testing int task_defex_check_creds(struct defex_context *dc) { char *path = NULL; int check_deeper, case_num; @@ -264,32 +262,20 @@ static int task_defex_check_creds(struct defex_context *dc) unsigned int ref_uid, ref_fsuid, ref_egid; struct task_struct *parent, *p = dc->task; unsigned short cred_flags; -#ifndef DEFEX_PED_BASED_ON_TGID_ENABLE - unsigned int g_uid, g_fsuid, g_egid; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ + const struct cred *parent_cred; static const unsigned int dead_uid = 0xDEADBEAF; if (!is_task_creds_ready() || !p->cred) goto out; - get_task_creds(REF_PID(p), &ref_uid, &ref_fsuid, &ref_egid, &cred_flags); -#ifndef DEFEX_PED_BASED_ON_TGID_ENABLE - if (p->tgid != p->pid) { - get_task_creds(p->tgid, &g_uid, &g_fsuid, &g_egid, &cred_flags); - } else { - g_uid = ref_uid; - g_fsuid = ref_fsuid; - g_egid = ref_egid; - } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ + get_task_creds(p, &ref_uid, &ref_fsuid, &ref_egid, &cred_flags); - cur_uid = uid_get_value(p->cred->uid); - cur_euid = uid_get_value(p->cred->euid); - cur_fsuid = uid_get_value(p->cred->fsuid); - cur_egid = uid_get_value(p->cred->egid); + cur_uid = uid_get_value(dc->cred.uid); + cur_euid = uid_get_value(dc->cred.euid); + cur_fsuid = uid_get_value(dc->cred.fsuid); + cur_egid = uid_get_value(dc->cred.egid); if (!ref_uid) { -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE if (p->tgid != p->pid && p->tgid != 1) { path = get_dc_process_name(dc); pr_crit("defex[6]: cred wasn't stored [task=%s, filename=%s, uid=%d, tgid=%u, pid=%u, ppid=%u]\n", @@ -298,37 +284,30 @@ static int task_defex_check_creds(struct defex_context *dc) ref_uid, ref_fsuid, ref_egid, cur_uid, cur_euid, cur_fsuid, cur_egid); goto exit; } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - read_lock(&tasklist_lock); - parent = p->parent; - if (parent) - get_task_struct(parent); - read_unlock(&tasklist_lock); - if (parent) { - if (CHECK_ROOT_CREDS(parent)) - cred_flags |= CRED_FLAGS_PROOT; + parent = get_parent_task(p); + if (parent) { + parent_cred = get_task_cred(parent); + if (CHECK_ROOT_CREDS(parent_cred)) + cred_flags |= CRED_FLAGS_PROOT; + put_cred(parent_cred); put_task_struct(parent); } - if (CHECK_ROOT_CREDS(p)) { + if (CHECK_ROOT_CREDS(&dc->cred)) { #ifdef DEFEX_LP_ENABLE - if (!lower_adb_permission(p, cred_flags)) + if (!lower_adb_permission(dc, cred_flags)) #endif /* DEFEX_LP_ENABLE */ { - set_task_creds(REF_PID(p), 1, 1, 1, cred_flags); + set_task_creds(p, 1, 1, 1, cred_flags); } } else - set_task_creds(REF_PID(p), cur_euid, cur_fsuid, cur_egid, cred_flags); + set_task_creds(p, cur_euid, cur_fsuid, cur_egid, cred_flags); } else if (ref_uid == 1) { - if (!CHECK_ROOT_CREDS(p)) - set_task_creds(REF_PID(p), cur_euid, cur_fsuid, cur_egid, cred_flags); - } else if (ref_uid == dead_uid -#ifndef DEFEX_PED_BASED_ON_TGID_ENABLE - || g_uid == dead_uid -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - ) { + if (!CHECK_ROOT_CREDS(&dc->cred)) + set_task_creds(p, cur_euid, cur_fsuid, cur_egid, cred_flags); + } else if (ref_uid == dead_uid) { path = get_dc_process_name(dc); pr_crit("defex[5]: process wasn't killed [task=%s, filename=%s, uid=%d, tgid=%u, pid=%u, ppid=%u]\n", p->comm, path, cur_uid, p->tgid, p->pid, p->real_parent->pid); @@ -343,13 +322,14 @@ static int task_defex_check_creds(struct defex_context *dc) (cur_egid != ref_egid) || !((cur_fsuid == ref_fsuid) || (cur_fsuid == ref_uid) || - (cur_fsuid == AID_MEDIA_RW) || - (cur_fsuid == SECUREFD_MEDIA_RW)) ) { + (cur_fsuid%100000 == AID_SYSTEM) || + (cur_fsuid%100000 == AID_MEDIA_RW) || + (cur_fsuid%100000 == AID_MEDIA_OBB)) ) { check_deeper = 1; - if (CHECK_ROOT_CREDS(p)) - set_task_creds(REF_PID(p), 1, 1, 1, cred_flags); + if (CHECK_ROOT_CREDS(&dc->cred)) + set_task_creds(p, 1, 1, 1, cred_flags); else - set_task_creds(REF_PID(p), cur_euid, cur_fsuid, cur_egid, cred_flags); + set_task_creds(p, cur_euid, cur_fsuid, cur_egid, cred_flags); } if (check_deeper && (!at_same_group(cur_uid, ref_uid) || @@ -357,34 +337,13 @@ static int task_defex_check_creds(struct defex_context *dc) !at_same_group_gid(cur_egid, ref_egid) || !at_same_group(cur_fsuid, ref_fsuid)) && task_defex_is_secured(dc)) { -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE case_num = ((p->tgid == p->pid) ? 1 : 2); -#else - case_num = 1; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ goto trigger_violation; } - -#ifndef DEFEX_PED_BASED_ON_TGID_ENABLE - if (p->tgid != p->pid) { - if ((g_uid > 1) && - (!at_same_group(cur_uid, g_uid) || - !at_same_group(cur_euid, g_uid) || - !at_same_group_gid(cur_egid, g_egid)) && - task_defex_is_secured(dc)) { - case_num = 2; - goto trigger_violation; - } - } -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ } - if (CHECK_ROOT_CREDS(p) && !(cred_flags & CRED_FLAGS_PROOT) && task_defex_is_secured(dc)) { - if ((p->tgid != p->pid) -#ifndef DEFEX_PED_BASED_ON_TGID_ENABLE - && (g_uid > 1) -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - ) { + if (CHECK_ROOT_CREDS(&dc->cred) && !(cred_flags & CRED_FLAGS_PROOT) && task_defex_is_secured(dc)) { + if (p->tgid != p->pid) { case_num = 3; goto trigger_violation; } @@ -396,11 +355,7 @@ out: return DEFEX_ALLOW; trigger_violation: - set_task_creds(REF_PID(p), dead_uid, dead_uid, dead_uid, cred_flags); -#ifndef DEFEX_PED_BASED_ON_TGID_ENABLE - if (p->tgid != p->pid) - set_task_creds(p->tgid, dead_uid, dead_uid, dead_uid, cred_flags); -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ + set_task_creds(p, dead_uid, dead_uid, dead_uid, cred_flags); path = get_dc_process_name(dc); pr_crit("defex[%d]: credential violation [task=%s, filename=%s, uid=%d, tgid=%u, pid=%u, ppid=%u]\n", case_num, p->comm, path, cur_uid, p->tgid, p->pid, p->real_parent->pid); @@ -418,13 +373,13 @@ exit: #ifdef DEFEX_SAFEPLACE_ENABLE /* Safeplace feature decision function */ -static int task_defex_safeplace(struct defex_context *dc) +__visible_for_testing int task_defex_safeplace(struct defex_context *dc) { int ret = DEFEX_ALLOW, is_violation = 0; char *proc_file, *new_file; struct task_struct *p = dc->task; - if (!CHECK_ROOT_CREDS(p)) + if (!CHECK_ROOT_CREDS(&dc->cred)) goto out; if (!get_dc_target_dpath(dc)) @@ -444,7 +399,7 @@ static int task_defex_safeplace(struct defex_context *dc) #ifdef DEFEX_INTEGRITY_ENABLE if (is_violation == DEFEX_INTEGRITY_FAIL) { pr_crit("defex: integrity violation [task=%s (%s), child=%s, uid=%d]\n", - p->comm, proc_file, new_file, uid_get_value(p->cred->uid)); + p->comm, proc_file, new_file, uid_get_value(dc->cred.uid)); #ifdef DEFEX_DSMS_ENABLE defex_report_violation(INTEGRITY_VIOLATION, 0, dc, 0, 0, 0, 0); #endif /* DEFEX_DSMS_ENABLE */ @@ -458,7 +413,7 @@ static int task_defex_safeplace(struct defex_context *dc) #endif /* DEFEX_INTEGRITY_ENABLE */ { pr_crit("defex: safeplace violation [task=%s (%s), child=%s, uid=%d]\n", - p->comm, proc_file, new_file, uid_get_value(p->cred->uid)); + p->comm, proc_file, new_file, uid_get_value(dc->cred.uid)); #ifdef DEFEX_DSMS_ENABLE defex_report_violation(SAFEPLACE_VIOLATION, 0, dc, 0, 0, 0, 0); #endif /* DEFEX_DSMS_ENABLE */ @@ -472,7 +427,7 @@ out: #ifdef DEFEX_IMMUTABLE_ENABLE /* Immutable feature decision function */ -static int task_defex_src_exception(struct defex_context *dc) +__visible_for_testing int task_defex_src_exception(struct defex_context *dc) { struct file *exe_file = get_dc_process_file(dc); char *proc_name = get_dc_process_name(dc); @@ -487,7 +442,7 @@ static int task_defex_src_exception(struct defex_context *dc) } /* Immutable feature decision function */ -static int task_defex_immutable(struct defex_context *dc, int attribute) +__visible_for_testing int task_defex_immutable(struct defex_context *dc, int attribute) { int ret = DEFEX_ALLOW, is_violation = 0; char *proc_file, *new_file; @@ -540,9 +495,9 @@ int task_defex_enforce(struct task_struct *p, struct file *f, int syscall) } feature_flag = defex_get_features(); + get_task_struct(p); init_defex_context(&dc, syscall, p, f); - get_task_struct(p); #ifdef DEFEX_PED_ENABLE /* Credential escalation feature */ if (feature_flag & FEATURE_CHECK_CREDS) { @@ -597,25 +552,19 @@ do_deny: int task_defex_zero_creds(struct task_struct *tsk) { -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE int is_fork = -1; -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ get_task_struct(tsk); if (tsk->flags & (PF_KTHREAD | PF_WQ_WORKER)) { put_task_struct(tsk); return 0; } if (is_task_creds_ready()) { -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE is_fork = ((tsk->flags & PF_FORKNOEXEC) && (!READ_ONCE(tsk->on_rq))); #ifdef TASK_NEW if (!is_fork && (tsk->state & TASK_NEW)) is_fork = 1; #endif /* TASK_NEW */ - set_task_creds_tcnt(REF_PID(tsk), is_fork?1:-1); -#else - delete_task_creds(REF_PID(tsk)); -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ + set_task_creds_tcnt(tsk, is_fork?1:-1); } #ifdef DEFEX_CACHES_ENABLE @@ -625,3 +574,45 @@ int task_defex_zero_creds(struct task_struct *tsk) return 0; } +static unsigned int rules_load_cnt = 0; +int task_defex_user_exec(const char *new_file) +{ +#ifdef DEFEX_UMH_RESTRICTION_ENABLE + int res = DEFEX_DENY, is_violation = DEFEX_DENY; + struct file *fp = NULL; + +#ifdef DEFEX_DEPENDING_ON_OEMUNLOCK + if(boot_state_unlocked) + return DEFEX_ALLOW; +#endif /* DEFEX_DEPENDING_ON_OEMUNLOCK */ + + if (!check_rules_ready()) { + if (rules_load_cnt++%100 == 0) + printk("[DEFEX] Rules not ready\n"); + goto umh_out; + } + + if (current == NULL || current->fs == NULL) { + goto umh_out; + } + + fp = local_fopen(new_file, O_RDONLY, 0); + if (IS_ERR(fp) || (fp == NULL)) { + goto umh_out; + } else { + filp_close(fp, NULL); + } + + is_violation = !rules_lookup2(new_file, feature_umhbin_path, NULL); + if (is_violation) { + printk("[DEFEX] UMH Exec Denied: %s\n", new_file); + goto umh_out; + } + + res = DEFEX_ALLOW; +umh_out: + return res; +#else + return DEFEX_ALLOW; +#endif /* DEFEX_UMH_RESTRICTION_ENABLE */ +} diff --git a/security/samsung/defex_lsm/defex_rules.c b/security/samsung/defex_lsm/defex_rules.c index 754dbcfcf1cf..cb364ebb55a6 100644 --- a/security/samsung/defex_lsm/defex_rules.c +++ b/security/samsung/defex_lsm/defex_rules.c @@ -161,6 +161,7 @@ const struct static_rule defex_static_rules[] = { {feature_safeplace_path,"/vendor/bin/shsusrd"}, {feature_safeplace_path,"/system/bin/defrag_f2fs"}, {feature_safeplace_path,"/system/bin/fastbootd"}, + {feature_safeplace_path,"/vendor/bin/hw/vendor.qti.hardware.perf@2.1-service"}, {feature_safeplace_path,"/tmp/update_binary"}, {feature_safeplace_path,"/system/bin/install-recovery.sh"}, {feature_safeplace_path,"/system/bin/install-recovery.sh"}, /* DEFAULT */ @@ -171,6 +172,7 @@ const struct static_rule defex_static_rules[] = { {feature_immutable_src_exception,"/system/bin/icd"}, {feature_immutable_src_exception,"/system/bin/iof"}, {feature_immutable_src_exception,"/system/bin/sh"}, + {feature_immutable_src_exception,"/system/bin/app_process32"}, {feature_immutable_src_exception,"/system/bin/app_process64"}, {feature_immutable_src_exception,"/system/bin/crash_dump32"}, {feature_immutable_src_exception,"/system/bin/crash_dump64"}, diff --git a/security/samsung/defex_lsm/defex_safeplace.c b/security/samsung/defex_lsm/defex_safeplace.c index 13f99aed3518..3f7a70296cbc 100644 --- a/security/samsung/defex_lsm/defex_safeplace.c +++ b/security/samsung/defex_lsm/defex_safeplace.c @@ -55,7 +55,7 @@ ssize_t task_defex_safeplace_attr_store(struct kobject *kobj, return attribute->store(safeplace, attribute, buf, len); } -static void task_defex_safeplace_release(struct kobject *kobj) +__visible_for_testing void task_defex_safeplace_release(struct kobject *kobj) { struct defex_safeplace *safeplace_obj; diff --git a/security/samsung/defex_lsm/defex_sign.c b/security/samsung/defex_lsm/defex_sign.c index b94de7f707b3..1115306bdf5c 100644 --- a/security/samsung/defex_lsm/defex_sign.c +++ b/security/samsung/defex_lsm/defex_sign.c @@ -18,6 +18,9 @@ #include "include/defex_debug.h" #include "include/defex_sign.h" +#ifdef DEFEX_KUNIT_ENABLED +#include +#endif #define SIGN_SIZE 256 #define SHA256_DIGEST_SIZE 32 @@ -28,7 +31,7 @@ extern char defex_public_key_end[]; #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0) -static int __init defex_public_key_verify_signature(unsigned char *pub_key, +__visible_for_testing int __init defex_public_key_verify_signature(unsigned char *pub_key, int pub_key_size, unsigned char *signature, unsigned char *hash_sha256) @@ -48,7 +51,7 @@ static int __init defex_public_key_verify_signature(unsigned char *pub_key, static struct key *defex_keyring; -static struct key* __init defex_keyring_alloc(const char *description, +__visible_for_testing struct key* __init defex_keyring_alloc(const char *description, kuid_t uid, kgid_t gid, const struct cred *cred, unsigned long flags) @@ -64,7 +67,7 @@ static struct key* __init defex_keyring_alloc(const char *description, #endif } -static int __init defex_keyring_init(void) +__visible_for_testing int __init defex_keyring_init(void) { int err = 0; const struct cred *cred = current_cred(); @@ -83,7 +86,7 @@ static int __init defex_keyring_init(void) return err; } -static int __init defex_public_key_verify_signature(unsigned char *pub_key, +__visible_for_testing int __init defex_public_key_verify_signature(unsigned char *pub_key, int pub_key_size, unsigned char *signature, unsigned char *hash_sha256) @@ -156,11 +159,15 @@ void __init blob(const char *buffer, const size_t bufLen, const int lineSize) for(j = 0; j < line; j++) offset += snprintf(stringToPrint + offset, MAX_DATA_LEN - offset, "%02X ", (unsigned char)buffer[i + j]); + if (line < lineSize) { + for(j = 0; j < lineSize - line; j++) + offset += snprintf(stringToPrint + offset, MAX_DATA_LEN - offset, " "); + } offset += snprintf(stringToPrint + offset, MAX_DATA_LEN - offset, "| "); - for(j = 0; j < lineSize; j++) { + for(j = 0; j < line; j++) { c = buffer[i + j]; - c = (c < 0x20)?'.':c; + c = (c < 0x20)||(c >= 0x7F)?'.':c; offset += snprintf(stringToPrint + offset, MAX_DATA_LEN - offset, "%c", c); } if (line < lineSize) { @@ -225,16 +232,16 @@ int __init defex_rules_signature_check(const char *rules_buffer, unsigned int ru unsigned char *signature; unsigned char *pub_key; - hash_sha256_first = kzalloc(SHA256_DIGEST_SIZE, GFP_KERNEL); + hash_sha256_first = kmalloc(SHA256_DIGEST_SIZE, GFP_KERNEL); if (!hash_sha256_first) return res; - hash_sha256 = kzalloc(SHA256_DIGEST_SIZE, GFP_KERNEL); + hash_sha256 = kmalloc(SHA256_DIGEST_SIZE, GFP_KERNEL); if (!hash_sha256) goto clean_hash_sha256_first; - signature = kzalloc(SIGN_SIZE, GFP_KERNEL); + signature = kmalloc(SIGN_SIZE, GFP_KERNEL); if (!signature) goto clean_hash_sha256; - pub_key = kzalloc(defex_public_key_size, GFP_KERNEL); + pub_key = kmalloc(defex_public_key_size, GFP_KERNEL); if (!pub_key) goto clean_signature; diff --git a/security/samsung/defex_lsm/defex_sysfs.c b/security/samsung/defex_lsm/defex_sysfs.c index 4b9a009a4173..02711629b8dd 100644 --- a/security/samsung/defex_lsm/defex_sysfs.c +++ b/security/samsung/defex_lsm/defex_sysfs.c @@ -17,9 +17,11 @@ #include #include #include +#include #include #include #include +#include #include #include "include/defex_debug.h" #include "include/defex_internal.h" @@ -51,9 +53,16 @@ #endif #if (DEFEX_RULES_ARRAY_SIZE < 8) #undef DEFEX_RULES_ARRAY_SIZE -#define DEFEX_RULES_ARRAY_SIZE sizeof(struct rule_item_struct) +#define DEFEX_RULES_ARRAY_SIZE sizeof(struct rule_item_struct) #endif +#ifdef DEFEX_KERNEL_ONLY +#undef DEFEX_RULES_ARRAY_SIZE +#define DEFEX_RULES_ARRAY_SIZE (256 * 1024) +static unsigned char defex_packed_rules[DEFEX_RULES_ARRAY_SIZE] = {0}; +int load_rules_late(void); +#else static unsigned char defex_packed_rules[DEFEX_RULES_ARRAY_SIZE] __ro_after_init = {0}; +#endif /* DEFEX_KERNEL_ONLY */ #endif /* DEFEX_RAMDISK_ENABLE */ #endif /* DEFEX_USE_PACKED_RULES */ @@ -71,28 +80,7 @@ static unsigned char defex_packed_rules[DEFEX_RULES_ARRAY_SIZE] __ro_after_init static struct kset *defex_kset; static int is_recovery = 0; -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) -#include - -static inline ssize_t __vfs_read(struct file *file, char __user *buf, - size_t count, loff_t *pos) -{ - ssize_t ret; - - if (file->f_op->read) - ret = file->f_op->read(file, buf, count, pos); - else if (file->f_op->aio_read) - ret = do_sync_read(file, buf, count, pos); - else if (file->f_op->read_iter) - ret = new_sync_read(file, buf, count, pos); - else - ret = -EINVAL; - - return ret; -} -#endif - -static int __init bootmode_setup(char *str) +__visible_for_testing int __init bootmode_setup(char *str) { if (str && *str == '2') { is_recovery = 1; @@ -102,35 +90,13 @@ static int __init bootmode_setup(char *str) } __setup("bootmode=", bootmode_setup); -static struct file *local_fopen(const char *fname, int flags, umode_t mode) +int check_rules_ready(void) { - struct file *f; - mm_segment_t old_fs; - - old_fs = get_fs(); - set_fs(get_ds()); - f = filp_open(fname, flags, mode); - set_fs(old_fs); - return f; + struct rule_item_struct *base = (struct rule_item_struct *)defex_packed_rules; + return (!base || !base->data_size)?0:1; } -static int local_fread(struct file *f, loff_t offset, void *ptr, unsigned long bytes) -{ - mm_segment_t old_fs; - char __user *buf = (char __user *)ptr; - ssize_t ret; - - if (!(f->f_mode & FMODE_READ)) - return -EBADF; - - old_fs = get_fs(); - set_fs(get_ds()); - ret = __vfs_read(f, buf, bytes, &offset); - set_fs(old_fs); - return (int)ret; -} - -static int check_system_mount(void) +__visible_for_testing int check_system_mount(void) { static int mount_system_root = -1; struct file *fp; @@ -161,7 +127,7 @@ static int check_system_mount(void) return (mount_system_root > 0); } -static void parse_static_rules(const struct static_rule *rules, size_t max_len, int rules_number) +__visible_for_testing void parse_static_rules(const struct static_rule *rules, size_t max_len, int rules_number) { int i; size_t count; @@ -204,7 +170,7 @@ static void parse_static_rules(const struct static_rule *rules, size_t max_len, #ifdef DEFEX_INTEGRITY_ENABLE -static int defex_check_integrity(struct file *f, unsigned char *hash) +__visible_for_testing int defex_check_integrity(struct file *f, unsigned char *hash) { struct crypto_shash *handle = NULL; struct shash_desc* shash = NULL; @@ -278,7 +244,7 @@ static int defex_check_integrity(struct file *f, unsigned char *hash) } -static int defex_integrity_default(const char *file_path) +__visible_for_testing int defex_integrity_default(const char *file_path) { static const char integrity_default[] = "/system/bin/install-recovery.sh"; return strncmp(integrity_default, file_path, sizeof(integrity_default)); @@ -287,7 +253,7 @@ static int defex_integrity_default(const char *file_path) #endif /* DEFEX_INTEGRITY_ENABLE */ #ifdef DEFEX_USE_PACKED_RULES -static struct rule_item_struct *lookup_dir(struct rule_item_struct *base, const char *name, int l, int for_recovery) +__visible_for_testing struct rule_item_struct *lookup_dir(struct rule_item_struct *base, const char *name, int l, int for_recovery) { struct rule_item_struct *item = NULL; unsigned int offset; @@ -306,7 +272,7 @@ static struct rule_item_struct *lookup_dir(struct rule_item_struct *base, const return NULL; } -static int lookup_tree(const char *file_path, int attribute, struct file *f) +__visible_for_testing int lookup_tree(const char *file_path, int attribute, struct file *f) { const char *ptr, *next_separator; struct rule_item_struct *base, *cur_item = NULL; @@ -315,11 +281,17 @@ static int lookup_tree(const char *file_path, int attribute, struct file *f) if (!file_path || *file_path != '/') return 0; +#ifdef DEFEX_KERNEL_ONLY +try_to_load: +#endif base = (struct rule_item_struct *)defex_packed_rules; if (!base || !base->data_size) { #ifdef DEFEX_KERNEL_ONLY /* allow all requests if rules were not loaded for Recovery mode */ - if (is_recovery) + l = load_rules_late(); + if (l > 0) + goto try_to_load; + if (!l || is_recovery) return (attribute == feature_ped_exception || attribute == feature_safeplace_path)?1:0; #endif /* DEFEX_KERNEL_ONLY */ /* block all requests if rules were not loaded instead */ @@ -409,7 +381,7 @@ int rules_lookup(const struct path *dpath, int attribute, struct file *f) int ret = 0; char *target_file, *buff; - buff = kzalloc(PATH_MAX, GFP_ATOMIC); + buff = kmalloc(PATH_MAX, GFP_KERNEL); if (!buff) return ret; target_file = d_path(dpath, buff, PATH_MAX); @@ -478,7 +450,71 @@ immutable_error: #if defined(DEFEX_RAMDISK_ENABLE) -static int __init do_load_rules(void) +#ifdef DEFEX_KERNEL_ONLY +int load_rules_late(void) +{ + struct file *f; + int rc, data_size, rules_size, res = 0; + unsigned char *data_buff; + static unsigned long start_time = 0; + static unsigned long last_time = 0; + unsigned long cur_time = get_seconds(); + static DEFINE_SPINLOCK(load_lock); + static atomic_t in_progress = ATOMIC_INIT(0); + + if (!spin_trylock(&load_lock)) + return res; + + if (atomic_read(&in_progress) != 0) { + spin_unlock(&load_lock); + return res; + } + + atomic_set(&in_progress, 1); + spin_unlock(&load_lock); + + /* The first try to load, initialize time values */ + if (!start_time) + start_time = get_seconds(); + /* Skip this try, wait for next second */ + if (cur_time == last_time) + goto do_exit; + /* Load has been attempted for 30 seconds, give up. */ + if ((cur_time - start_time) > 30) { + res = -1; + goto do_exit; + } + last_time = cur_time; + + f = local_fopen(DEFEX_RULES_FILE, O_RDONLY, 0); + if (IS_ERR(f)) { + rc = PTR_ERR(f); + pr_err("[DEFEX] Failed to open rules file (%d)\n", rc); + goto do_exit; + } + + data_size = i_size_read(file_inode(f)); + if (data_size <= 0) + goto do_exit; + data_buff = kmalloc(data_size, GFP_KERNEL); + if (!data_buff) + goto do_exit; + + rules_size = local_fread(f, 0, data_buff, data_size); + printk(KERN_INFO "[DEFEX] Late load rules file: %s.\n", DEFEX_RULES_FILE); + printk(KERN_INFO "[DEFEX] Read %d bytes.\n", rules_size); + filp_close(f, NULL); + + memcpy(defex_packed_rules, data_buff, rules_size); + kfree(data_buff); + res = (rules_size > 0); +do_exit: + atomic_set(&in_progress, 0); + return res; +} +#endif /* DEFEX_KERNEL_ONLY */ + +__visible_for_testing int __init do_load_rules(void) { struct file *f; int res = -1, rc, data_size, rules_size; @@ -500,12 +536,12 @@ static int __init do_load_rules(void) data_size = i_size_read(file_inode(f)); if (data_size <= 0) return res; - data_buff = kzalloc(data_size, GFP_KERNEL); + data_buff = kmalloc(data_size, GFP_KERNEL); if (!data_buff) return res; rules_size = local_fread(f, 0, data_buff, data_size); - printk(KERN_INFO "[DEFEX] Readed %d bytes.\n", rules_size); + printk(KERN_INFO "[DEFEX] Read %d bytes.\n", rules_size); filp_close(f, NULL); #ifdef DEFEX_SIGN_ENABLE @@ -513,10 +549,10 @@ static int __init do_load_rules(void) if (!res && rules_size > sizeof(defex_packed_rules)) res = -1; - if (!res) { + if (!res) printk("[DEFEX] Rules signature verified successfully.\n"); - } else - pr_err("[DEFEX] Rules signature verified error!!!\n"); + else + pr_err("[DEFEX] Rules signature incorrect!!!\n"); #else res = 0; #endif @@ -541,7 +577,7 @@ void __init defex_load_rules(void) { #if defined(DEFEX_RAMDISK_ENABLE) if ( !boot_state_unlocked && do_load_rules() != 0) { -#if !defined(DEFEX_DEBUG_ENABLE) +#if !(defined(DEFEX_DEBUG_ENABLE) || defined(DEFEX_KERNEL_ONLY)) panic("[DEFEX] Signature mismatch.\n"); #endif } diff --git a/security/samsung/defex_lsm/include/defex_internal.h b/security/samsung/defex_lsm/include/defex_internal.h index 0f7a2e70dca0..e0a2d03e460f 100644 --- a/security/samsung/defex_lsm/include/defex_internal.h +++ b/security/samsung/defex_lsm/include/defex_internal.h @@ -9,6 +9,7 @@ #ifndef __CONFIG_SECURITY_DEFEX_INTERNAL_H #define __CONFIG_SECURITY_DEFEX_INTERNAL_H +#include #include #include #include @@ -19,6 +20,10 @@ #include #include "defex_config.h" +#ifdef DEFEX_KUNIT_ENABLED +#include +#endif + #define DEFEX_MAJOR_VERSION 2 #define DEFEX_MINOR_VERSION 6 #define DEFEX_REVISION "rel" @@ -55,69 +60,47 @@ #define DEFEX_INTEGRITY_FAIL (1 << 1) -/* -------------------------------------------------------------------------- */ -/* Hash tables */ -/* -------------------------------------------------------------------------- */ -extern DECLARE_HASHTABLE(creds_hash, 15); -void creds_fast_hash_init(void); - /* -------------------------------------------------------------------------- */ /* PrivEsc feature */ /* -------------------------------------------------------------------------- */ #ifdef STRICT_UID_TYPE_CHECKS -#define CHECK_ROOT_CREDS(x) (uid_eq(x->cred->uid, GLOBAL_ROOT_UID) || \ - gid_eq(x->cred->gid, GLOBAL_ROOT_GID) || \ - uid_eq(x->cred->euid, GLOBAL_ROOT_UID) || \ - gid_eq(x->cred->egid, GLOBAL_ROOT_GID)) +#define CHECK_ROOT_CREDS(x) (uid_eq((x)->uid, GLOBAL_ROOT_UID) || \ + gid_eq((x)->gid, GLOBAL_ROOT_GID) || \ + uid_eq((x)->euid, GLOBAL_ROOT_UID) || \ + gid_eq((x)->egid, GLOBAL_ROOT_GID)) #define GLOBAL_SYS_UID KUIDT_INIT(1000) #define GLOBAL_SYS_GID KGIDT_INIT(1000) -#define CHECK_SYS_CREDS(x) (uid_eq(x->cred->uid, GLOBAL_SYS_UID) || \ - gid_eq(x->cred->gid, GLOBAL_SYS_GID) || \ - uid_eq(x->cred->euid, GLOBAL_SYS_UID) || \ - gid_eq(x->cred->egid, GLOBAL_SYS_GID)) +#define CHECK_SYS_CREDS(x) (uid_eq((x)->uid, GLOBAL_SYS_UID) || \ + gid_eq((x)->gid, GLOBAL_SYS_GID) || \ + uid_eq((x)->euid, GLOBAL_SYS_UID) || \ + gid_eq((x)->egid, GLOBAL_SYS_GID)) #define uid_get_value(x) (x.val) #define uid_set_value(x, v) x.val = v #else -#define CHECK_ROOT_CREDS(x) ((x->cred->uid == 0) || (x->cred->gid == 0) || \ - (x->cred->euid == 0) || (x->cred->egid == 0)) +#define CHECK_ROOT_CREDS(x) (((x)->uid == 0) || ((x)->gid == 0) || \ + ((x)->euid == 0) || ((x)->egid == 0)) #define uid_get_value(x) (x) #define uid_set_value(x, v) (x = v) #endif /* STRICT_UID_TYPE_CHECKS */ -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE -# define REF_PID(p) (p) -#else -# define REF_PID(p) ((p)->pid) -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ - #define CRED_FLAGS_PROOT (1 << 0) /* parent is root */ #define CRED_FLAGS_MAIN_UPDATED (1 << 1) /* main thread's permission updated */ #define CRED_FLAGS_SUB_UPDATED (1 << 2) /* sub thread's permission updated */ -#define GET_CREDS(x, y, z, w) uid = cred_data->x; \ - fsuid = cred_data->y; \ - egid = cred_data->z; \ - cred_flags = cred_data->w; +#define GET_CREDS(ids_ptr, cred_data_ptr) do { uid = (ids_ptr)->uid; \ + fsuid = (ids_ptr)->fsuid; \ + egid = (ids_ptr)->egid; \ + cred_flags = (cred_data_ptr)->cred_flags; } while(0) -#define GET_CREDS_OBJ(x, y, z, w) uid = obj->cred_data.x; \ - fsuid = obj->cred_data.y; \ - egid = obj->cred_data.z; \ - cred_flags = obj->cred_data.w; - -#define SET_CREDS(x, y, z, w) cred_data->x = uid; \ - cred_data->y = fsuid; \ - cred_data->z = egid; \ - cred_data->w |= cred_flags; - -#define SET_CREDS_OBJ(x, y, z, w) obj->cred_data.x = uid; \ - obj->cred_data.y = fsuid; \ - obj->cred_data.z = egid; \ - obj->cred_data.w |= cred_flags; +#define SET_CREDS(ids_ptr, cred_data_ptr) do { (ids_ptr)->uid = uid; \ + (ids_ptr)->fsuid = fsuid; \ + (ids_ptr)->egid = egid; \ + (cred_data_ptr)->cred_flags |= cred_flags; } while(0) struct defex_privesc { struct kobject kobj; @@ -138,15 +121,9 @@ extern struct defex_privesc *global_privesc_obj; ssize_t task_defex_privesc_store_status(struct defex_privesc *privesc_obj, struct privesc_attribute *attr, const char *buf, size_t count); -#ifdef DEFEX_PED_BASED_ON_TGID_ENABLE void get_task_creds(struct task_struct *p, unsigned int *uid_ptr, unsigned int *fsuid_ptr, unsigned int *egid_ptr, unsigned short *cred_flags_ptr); int set_task_creds(struct task_struct *p, unsigned int uid, unsigned int fsuid, unsigned int egid, unsigned short cred_flags); void set_task_creds_tcnt(struct task_struct *p, int addition); -#else -void get_task_creds(int pid, unsigned int *uid_ptr, unsigned int *fsuid_ptr, unsigned int *egid_ptr, unsigned short *cred_flags_ptr); -int set_task_creds(int pid, unsigned int uid, unsigned int fsuid, unsigned int egid, unsigned short cred_flags); -void delete_task_creds(int pid); -#endif /* DEFEX_PED_BASED_ON_TGID_ENABLE */ int is_task_creds_ready(void); /* -------------------------------------------------------------------------- */ @@ -203,6 +180,7 @@ struct defex_context { int syscall_no; struct task_struct *task; struct file *process_file; + struct cred cred; struct file *target_file; const struct path *process_dpath; const struct path *target_dpath; @@ -214,6 +192,8 @@ struct defex_context { extern const char unknown_file[]; +struct file *local_fopen(const char *fname, int flags, umode_t mode); +int local_fread(struct file *f, loff_t offset, void *ptr, unsigned long bytes); void init_defex_context(struct defex_context *dc, int syscall, struct task_struct *p, struct file *f); void release_defex_context(struct defex_context *dc); struct file *get_dc_process_file(struct defex_context *dc); @@ -243,6 +223,7 @@ int rules_lookup2(const char *target_file, int attribute, struct file *f); /* -------------------------------------------------------------------------- */ int __init defex_init_sysfs(void); +void __init creds_fast_hash_init(void); #ifdef DEFEX_DEPENDING_ON_OEMUNLOCK extern bool boot_state_unlocked __ro_after_init; diff --git a/security/samsung/defex_lsm/include/defex_rules.h b/security/samsung/defex_lsm/include/defex_rules.h index 3d24b81c2389..5f7f07fd3d94 100644 --- a/security/samsung/defex_lsm/include/defex_rules.h +++ b/security/samsung/defex_lsm/include/defex_rules.h @@ -27,7 +27,8 @@ enum feature_types { feature_immutable_path_open = 128, feature_immutable_path_write = 256, feature_immutable_src_exception = 512, - feature_immutable_status = 1024 + feature_immutable_status = 1024, + feature_umhbin_path = 2048 }; struct feature_match_entry { @@ -59,4 +60,6 @@ struct rule_item_struct { extern const struct static_rule defex_static_rules[]; extern const int static_rule_count; +int check_rules_ready(void); + #endif /* __DEFEX_RULES_H */ diff --git a/security/samsung/defex_lsm/pack_rules.c b/security/samsung/defex_lsm/pack_rules.c index 4411f3d76f33..20822df6826c 100644 --- a/security/samsung/defex_lsm/pack_rules.c +++ b/security/samsung/defex_lsm/pack_rules.c @@ -20,6 +20,7 @@ const struct feature_match_entry feature_match[] = { {"feature_immutable_path_open", feature_immutable_path_open}, {"feature_immutable_path_write", feature_immutable_path_write}, {"feature_immutable_src_exception", feature_immutable_src_exception}, + {"feature_umhbin_path", feature_umhbin_path}, }; const int feature_match_size = sizeof(feature_match) / sizeof(feature_match[0]); @@ -412,7 +413,7 @@ int load_file_list(const char *name) !strncmp(str, "/system/", 8) || !strncmp(str, "/tmp/", 5) || !strncmp(str, "/vendor/", 8) || -#if defined(CONFIG_SEC_FACTORY) +#if defined(DEFEX_FACTORY_ENABLE) !strncmp(str, "/data/", 6) || #endif !strncmp(str, "/apex/", 6))) { diff --git a/security/samsung/dsms/Makefile b/security/samsung/dsms/Makefile index 6ec4b47cee06..b151bcf053d9 100644 --- a/security/samsung/dsms/Makefile +++ b/security/samsung/dsms/Makefile @@ -18,3 +18,7 @@ EXTRA_CFLAGS += -DDSMS_WHITELIST_IGNORE_NAME_SUFFIXES_ENABLE ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) # CFLAGS_dsms_debug.o := -DDEBUG endif + +ifneq ($(CONFIG_KUNIT), y) + EXTRA_CFLAGS += -D__visible_for_testing=static +endif diff --git a/security/samsung/dsms/dsms_access_control.c b/security/samsung/dsms/dsms_access_control.c index 57a1d4c7a751..6eb2caccab34 100644 --- a/security/samsung/dsms/dsms_access_control.c +++ b/security/samsung/dsms/dsms_access_control.c @@ -24,7 +24,7 @@ typedef int (*cmp_fn_t)(const void *key, const void *element); * * Returns lexicographic order of the two compared function names */ -static int compare_policy_entries(const char *function_name, +__visible_for_testing int compare_policy_entries(const char *function_name, const struct dsms_policy_entry *entry) { return strncmp(function_name, entry->function_name, KSYM_NAME_LEN); @@ -37,7 +37,7 @@ static int compare_policy_entries(const char *function_name, * Returns a pointer to the policy entry for the given function, * or NULL if not found. */ -static struct dsms_policy_entry *find_policy_entry(const char *function_name) +__visible_for_testing struct dsms_policy_entry *find_policy_entry(const char *function_name) { void *entry; diff --git a/security/samsung/dsms/dsms_access_control.h b/security/samsung/dsms/dsms_access_control.h index acc9a0de6231..ca989b70affa 100644 --- a/security/samsung/dsms/dsms_access_control.h +++ b/security/samsung/dsms/dsms_access_control.h @@ -9,6 +9,9 @@ #ifndef _DSMS_ACCESS_CONTROL_H #define _DSMS_ACCESS_CONTROL_H +#ifdef CONFIG_KUNIT +#include +#endif #include #define CALLER_FRAME (0) @@ -32,7 +35,12 @@ struct dsms_policy_entry { extern struct dsms_policy_entry dsms_policy[]; extern size_t dsms_policy_size(void); - extern int dsms_verify_access(const void *address); -#endif /* _DSMS_ACCESS_CONTROL_H */ \ No newline at end of file +#ifdef CONFIG_KUNIT +extern int compare_policy_entries(const char *function_name, + const struct dsms_policy_entry *entry); +extern struct dsms_policy_entry *find_policy_entry(const char *function_name); +#endif + +#endif /* _DSMS_ACCESS_CONTROL_H */ diff --git a/security/samsung/dsms/dsms_kernel_api.c b/security/samsung/dsms/dsms_kernel_api.c index d9cb5472ea39..f4661d0b0c69 100644 --- a/security/samsung/dsms/dsms_kernel_api.c +++ b/security/samsung/dsms/dsms_kernel_api.c @@ -21,6 +21,7 @@ #include "dsms_debug.h" #include "dsms_init.h" #include "dsms_rate_limit.h" +#include "dsms_kernel_api.h" #define MAX_ALLOWED_DETAIL_LENGTH (1024) #define VALUE_STRLEN (22) @@ -49,7 +50,7 @@ static const char *dsms_environ[] = { static atomic_t message_counter = ATOMIC_INIT(0); -static char *dsms_alloc_user_string(const char *string) +__visible_for_testing char *dsms_alloc_user_string(const char *string) { size_t size; char *string_cpy; @@ -67,7 +68,7 @@ static char *dsms_alloc_user_string(const char *string) return string_cpy; } -static char *dsms_alloc_user_value(int64_t value) +__visible_for_testing char *dsms_alloc_user_value(int64_t value) { char *string = (char *) kmalloc(VALUE_STRLEN, GFP_USER); if (string) { @@ -77,14 +78,14 @@ static char *dsms_alloc_user_value(int64_t value) return string; } -static void dsms_free_user_string(const char *string) +__visible_for_testing void dsms_free_user_string(const char *string) { if (string == NULL || *string == 0) return; kfree(string); } -static void dsms_message_cleanup(struct subprocess_info *info) +__visible_for_testing void dsms_message_cleanup(struct subprocess_info *info) { if (info && info->argv) { dsms_free_user_string(info->argv[FEATURE_INDEX]); @@ -95,24 +96,7 @@ static void dsms_message_cleanup(struct subprocess_info *info) atomic_dec(&message_counter); } -static int check_recovery_mode(void) -{ - static int recovery = -1; - struct file *fp; - - if (recovery < 0) { - fp = filp_open("/sbin/recovery", O_RDONLY, 0); - if (IS_ERR(fp)) { - recovery = 0; - } else { - filp_close(fp, NULL); - recovery = 1; - } - } - return (recovery > 0); -} - -static inline int dsms_send_allowed_message(const char *feature_code, +__visible_for_testing inline int dsms_send_allowed_message(const char *feature_code, const char *detail, int64_t value) { @@ -181,12 +165,6 @@ int noinline dsms_send_message(const char *feature_code, int ret = DSMS_DENY; size_t len; - // DSMS doesn't work in recovery mode - if (check_recovery_mode()) { - dsms_log_write(LOG_ERROR, "Recovery mode, DSMS is disabled."); - goto exit_send; - } - len = strnlen(detail, MAX_ALLOWED_DETAIL_LENGTH); dsms_log_write(LOG_DEBUG, "{'%s', '%s' (%zu bytes), %lld}", feature_code, detail, len, value); diff --git a/security/samsung/dsms/dsms_kernel_api.h b/security/samsung/dsms/dsms_kernel_api.h new file mode 100644 index 000000000000..e09d15da54a4 --- /dev/null +++ b/security/samsung/dsms/dsms_kernel_api.h @@ -0,0 +1,15 @@ +#ifdef CONFIG_KUNIT +#include +#endif +#include +#include + +#ifdef CONFIG_KUNIT +extern char *dsms_alloc_user_string(const char *string); +extern char *dsms_alloc_user_value(int64_t value); +extern void dsms_free_user_string(const char *string); +extern void dsms_message_cleanup(struct subprocess_info *info); +extern inline int dsms_send_allowed_message(const char *feature_code, + const char *detail, + int64_t value); +#endif diff --git a/security/samsung/dsms/dsms_rate_limit.c b/security/samsung/dsms/dsms_rate_limit.c index 436a9bc9e276..0b6dc01f6398 100644 --- a/security/samsung/dsms/dsms_rate_limit.c +++ b/security/samsung/dsms/dsms_rate_limit.c @@ -20,16 +20,23 @@ static int dsms_message_count; static u64 dsms_round_start_ms; -static __always_inline u64 round_end_ms(u64 round_start_ms) { +#if defined(CONFIG_KUNIT) && IS_ENABLED(CONFIG_KUNIT) +int dsms_max_messages_per_round(void) +{ + return MAX_MESSAGES_PER_ROUND; +} +#endif + +__visible_for_testing __always_inline u64 round_end_ms(u64 round_start_ms) { return round_start_ms + ROUND_DURATION_MS; } -static __always_inline int is_new_round(u64 now_ms, u64 last_round_start_ms) +__visible_for_testing __always_inline int is_new_round(u64 now_ms, u64 last_round_start_ms) { return now_ms >= round_end_ms(last_round_start_ms); } -static __always_inline u64 dsms_get_time_ms(void) { +__visible_for_testing __always_inline u64 dsms_get_time_ms(void) { return div_u64(ktime_get_ns(), NSEC_PER_MSEC); } diff --git a/security/samsung/dsms/dsms_rate_limit.h b/security/samsung/dsms/dsms_rate_limit.h index 43c3d3a1287e..29d6c64511e3 100644 --- a/security/samsung/dsms/dsms_rate_limit.h +++ b/security/samsung/dsms/dsms_rate_limit.h @@ -9,7 +9,18 @@ #ifndef _DSMS_RATE_LIMIT_H #define _DSMS_RATE_LIMIT_H +#ifdef CONFIG_KUNIT +#include +#endif + extern void dsms_rate_limit_init(void); extern int dsms_check_message_rate_limit(void); +#ifdef CONFIG_KUNIT +extern int dsms_max_messages_per_round(void); +extern __always_inline u64 round_end_ms(u64 round_start_ms); +extern __always_inline int is_new_round(u64 now_ms, u64 last_round_start_ms); +extern __always_inline u64 dsms_get_time_ms(void); +#endif + #endif /* _DSMS_RATE_LIMIT_H */ diff --git a/security/samsung/five/Makefile b/security/samsung/five/Makefile index 0a92f9e94db7..66f4f0e55beb 100644 --- a/security/samsung/five/Makefile +++ b/security/samsung/five/Makefile @@ -7,7 +7,6 @@ obj-$(CONFIG_FIVE_TEE_DRIVER) += five_tee_interface.o EXTRA_CFLAGS += -I$(src) asflags-y += -Isecurity/integrity/five asflags-y += -Isecurity/samsung/five -ccflags-y += -Isecurity ccflags-y += -I$(srctree) ccflags-y += -Wformat diff --git a/security/samsung/five/five.h b/security/samsung/five/five.h index 48462c01962f..42d28c16cb83 100644 --- a/security/samsung/five/five.h +++ b/security/samsung/five/five.h @@ -95,7 +95,8 @@ int five_appraise_measurement(struct task_struct *task, int func, int five_read_xattr(struct dentry *dentry, char **xattr_value); int five_check_params(struct task_struct *task, struct file *file); -const char *five_d_path(const struct path *path, char **pathbuf); +const char *five_d_path(const struct path *path, char **pathbuf, + char *namebuf); int five_digsig_verify(struct five_cert *cert, const char *digest, int digestlen); diff --git a/security/samsung/five/five_appraise.c b/security/samsung/five/five_appraise.c index e3cb2a809c85..1ddadb9712a6 100644 --- a/security/samsung/five/five_appraise.c +++ b/security/samsung/five/five_appraise.c @@ -483,7 +483,7 @@ static int five_update_xattr(struct task_struct *task, struct inode *inode = file_inode(file); rc = __vfs_getxattr(d_real_comp(dentry), inode, XATTR_NAME_FIVE, - dummy, sizeof(dummy)); + dummy, sizeof(dummy), XATTR_NOSECURITY); // Check if xattr is exist if (rc > 0 || rc != -ENODATA) { @@ -826,7 +826,7 @@ int five_fcntl_close(struct file *file) if (iint->five_signing) { dentry = file->f_path.dentry; xattr_len = __vfs_getxattr(d_real_comp(dentry), inode, - XATTR_NAME_FIVE, NULL, 0); + XATTR_NAME_FIVE, NULL, 0, XATTR_NOSECURITY); if (xattr_len == 0) rc = __vfs_removexattr(d_real_comp(dentry), XATTR_NAME_FIVE); diff --git a/security/samsung/five/five_audit.c b/security/samsung/five/five_audit.c index 55ba48beacd6..7860ad1848a1 100644 --- a/security/samsung/five/five_audit.c +++ b/security/samsung/five/five_audit.c @@ -90,6 +90,7 @@ static void five_audit_msg(struct task_struct *task, struct file *file, struct inode *inode = NULL; const char *fname = NULL; char *pathbuf = NULL; + char filename[NAME_MAX]; char comm[TASK_COMM_LEN]; const char *name = ""; struct task_struct *tsk = task ? task : current; @@ -97,7 +98,7 @@ static void five_audit_msg(struct task_struct *task, struct file *file, if (file) { inode = file_inode(file); - fname = five_d_path(&file->f_path, &pathbuf); + fname = five_d_path(&file->f_path, &pathbuf, filename); } ab = audit_log_start(current->audit_context, GFP_KERNEL, @@ -172,11 +173,12 @@ void five_audit_hexinfo(struct file *file, const char *msg, char *data, struct audit_buffer *ab; struct inode *inode = NULL; const unsigned char *fname = NULL; + char filename[NAME_MAX]; char *pathbuf = NULL; struct integrity_iint_cache *iint = NULL; if (file) { - fname = five_d_path(&file->f_path, &pathbuf); + fname = five_d_path(&file->f_path, &pathbuf, filename); inode = file_inode(file); } diff --git a/security/samsung/five/five_cache.h b/security/samsung/five/five_cache.h index 790ef9e045ec..a40bfa019f96 100644 --- a/security/samsung/five/five_cache.h +++ b/security/samsung/five/five_cache.h @@ -20,7 +20,7 @@ #ifndef __LINUX_FIVE_CACHE_H #define __LINUX_FIVE_CACHE_H -#include "integrity/integrity.h" +#include "security/integrity/integrity.h" enum five_file_integrity five_get_cache_status( const struct integrity_iint_cache *iint); diff --git a/security/samsung/five/five_crypto.c b/security/samsung/five/five_crypto.c index 2ede15b04a0d..959030acdaa9 100644 --- a/security/samsung/five/five_crypto.c +++ b/security/samsung/five/five_crypto.c @@ -33,7 +33,7 @@ #include "five.h" #include "five_crypto_comp.h" #include "five_porting.h" -#include "integrity/integrity.h" +#include "security/integrity/integrity.h" struct ahash_completion { struct completion completion; @@ -382,7 +382,9 @@ static int five_calc_file_hash_tfm(struct file *file, return -EINVAL; shash->tfm = tfm; + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) shash->flags = 0; + #endif rc = crypto_shash_init(shash); if (rc != 0) @@ -444,7 +446,9 @@ static int five_calc_hash_tfm(const u8 *data, size_t data_len, return -EINVAL; shash->tfm = tfm; + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) shash->flags = 0; + #endif rc = crypto_shash_init(shash); if (rc != 0) diff --git a/security/samsung/five/five_crypto_comp.h b/security/samsung/five/five_crypto_comp.h index cf65e34b9bea..c93e65220cd4 100644 --- a/security/samsung/five/five_crypto_comp.h +++ b/security/samsung/five/five_crypto_comp.h @@ -41,6 +41,23 @@ static inline int five_verify_signature(struct key *key, return ret; } +#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0) +static inline int five_verify_signature(struct key *key, + struct public_key_signature *pks, + struct five_cert *cert, + struct five_cert_header *header) +{ + int ret = -ENOMEM; + + pks->pkey_algo = "rsa"; + pks->hash_algo = hash_algo_name[header->hash_algo]; + pks->s = cert->signature->value; + pks->s_size = cert->signature->length; + + ret = verify_signature(key, pks); + + return ret; +} #else static inline int five_verify_signature(struct key *key, struct public_key_signature *pks, @@ -50,6 +67,7 @@ static inline int five_verify_signature(struct key *key, int ret = -ENOMEM; pks->pkey_algo = "rsa"; + pks->encoding = "pkcs1"; pks->hash_algo = hash_algo_name[header->hash_algo]; pks->s = cert->signature->value; pks->s_size = cert->signature->length; @@ -78,4 +96,9 @@ static inline struct key *five_keyring_alloc(const char *description, } #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0) +#define keyring_search(keyring, type, desc, recurse) \ + keyring_search(keyring, type, desc) +#endif + #endif /* __LINUX_FIVE_CRYPTO_COMP_H */ diff --git a/security/samsung/five/five_dmverity.c b/security/samsung/five/five_dmverity.c index be9c42dd5b46..8b92d011ae45 100644 --- a/security/samsung/five/five_dmverity.c +++ b/security/samsung/five/five_dmverity.c @@ -141,7 +141,7 @@ static enum five_dmverity_codes is_dmverity_partition( */ for (i = 0; i < ARRAY_SIZE(dm_targets_name); ++i) { if (!strncmp(target->type->name, dm_targets_name[i], - strlen(dm_targets_name[i]))) { + strlen(dm_targets_name[i]) + 1)) { result = FIVE_DMV_PARTITION; break; } @@ -240,12 +240,11 @@ static bool is_dmverity_prebuit_path(const struct file *file) }; const char *pathname = NULL; char *pathbuf = NULL; + char filename[NAME_MAX]; bool result = false; size_t i; - pathname = five_d_path(&file->f_path, &pathbuf); - if (!pathname) - goto exit; + pathname = five_d_path(&file->f_path, &pathbuf, filename); for (i = 0; i < ARRAY_SIZE(paths); ++i) { if (!strncmp(pathname, paths[i], strlen(paths[i]))) { @@ -254,7 +253,6 @@ static bool is_dmverity_prebuit_path(const struct file *file) } } -exit: if (pathbuf) __putname(pathbuf); diff --git a/security/samsung/five/five_dsms.c b/security/samsung/five/five_dsms.c index 610fd0c407f5..6f8257f383b9 100644 --- a/security/samsung/five/five_dsms.c +++ b/security/samsung/five/five_dsms.c @@ -79,7 +79,7 @@ void five_dsms_sign_err(const char *app, int result) if (sign_err_events[i].count == 0) { same_event = &sign_err_events[i]; current_count = ++same_event->count; - strncpy(same_event->comm, app, TASK_COMM_LEN); + strlcpy(same_event->comm, app, TASK_COMM_LEN); same_event->result = result; break; } else if (sign_err_events[i].result == result && diff --git a/security/samsung/five/five_hooks.c b/security/samsung/five/five_hooks.c index 2006577ebe28..fdb6fac09111 100644 --- a/security/samsung/five/five_hooks.c +++ b/security/samsung/five/five_hooks.c @@ -39,6 +39,8 @@ struct five_hook_heads five_hook_heads = { LIST_HEAD_INIT(five_hook_heads.task_forked), .integrity_reset = LIST_HEAD_INIT(five_hook_heads.integrity_reset), + .integrity_reset2 = + LIST_HEAD_INIT(five_hook_heads.integrity_reset2), }; enum five_hook_event { @@ -73,6 +75,8 @@ struct hook_wq_event { } forked; struct { struct task_struct *task; + struct file *file; + enum task_integrity_reset_cause cause; } reset; }; }; @@ -103,6 +107,8 @@ static void hook_wq_event_destroy(struct hook_wq_event *event) break; } case INTEGRITY_RESET: { + if (event->reset.file) + fput(event->reset.file); put_task_struct(event->reset.task); break; } @@ -165,6 +171,8 @@ static void hook_handler(struct work_struct *in_data) case INTEGRITY_RESET: { call_void_hook(integrity_reset, event->reset.task); + call_void_hook(integrity_reset2, event->reset.task, + event->reset.file, event->reset.cause); break; } } @@ -283,7 +291,9 @@ int five_hook_wq_init(void) return 0; } -void five_hook_integrity_reset(struct task_struct *task) +void five_hook_integrity_reset(struct task_struct *task, + struct file *file, + enum task_integrity_reset_cause cause) { struct hook_wq_event event = {0}; @@ -292,7 +302,11 @@ void five_hook_integrity_reset(struct task_struct *task) event.event = INTEGRITY_RESET; get_task_struct(task); + if (file) + get_file(file); event.reset.task = task; + event.reset.file = file; + event.reset.cause = cause; if (__push_event(&event, GFP_KERNEL) < 0) hook_wq_event_destroy(&event); diff --git a/security/samsung/five/five_hooks.h b/security/samsung/five/five_hooks.h index e9c9768b3de2..78b6dfb4931d 100644 --- a/security/samsung/five/five_hooks.h +++ b/security/samsung/five/five_hooks.h @@ -36,7 +36,9 @@ void five_hook_file_signed(struct task_struct *task, struct file *file, void *xattr, size_t xattr_size, int result); -void five_hook_integrity_reset(struct task_struct *task); +void five_hook_integrity_reset(struct task_struct *task, + struct file *file, + enum task_integrity_reset_cause cause); union five_list_options { void (*file_processed)(struct task_struct *task, @@ -60,6 +62,9 @@ union five_list_options { struct file *file, void *xattr, size_t xattr_size, int result); void (*integrity_reset)(struct task_struct *task); + void (*integrity_reset2)(struct task_struct *task, + struct file *file, + enum task_integrity_reset_cause cause); }; struct five_hook_heads { @@ -68,6 +73,7 @@ struct five_hook_heads { struct list_head file_signed; struct list_head task_forked; struct list_head integrity_reset; + struct list_head integrity_reset2; }; /* diff --git a/security/samsung/five/five_keyring.c b/security/samsung/five/five_keyring.c index 29860c518167..cf3362b7171a 100644 --- a/security/samsung/five/five_keyring.c +++ b/security/samsung/five/five_keyring.c @@ -47,7 +47,7 @@ static struct key *five_request_asymmetric_key(uint32_t keyid) key_ref_t kref; kref = keyring_search(make_key_ref(five_keyring, 1), - &key_type_asymmetric, name); + &key_type_asymmetric, name, true); if (IS_ERR(kref)) key = ERR_CAST(kref); else diff --git a/security/samsung/five/five_main.c b/security/samsung/five/five_main.c index 447ef24cf69d..8c961669cc11 100644 --- a/security/samsung/five/five_main.c +++ b/security/samsung/five/five_main.c @@ -193,7 +193,8 @@ static void work_handler(struct work_struct *in_data) } case FIVE_RESET_INTEGRITY: { task_integrity_reset(intg); - five_hook_integrity_reset(five_file->task); + five_hook_integrity_reset(five_file->task, + NULL, CAUSE_UNKNOWN); break; } default: @@ -211,7 +212,7 @@ static void work_handler(struct work_struct *in_data) kfree(context); } -const char *five_d_path(const struct path *path, char **pathbuf) +const char *five_d_path(const struct path *path, char **pathbuf, char *namebuf) { char *pathname = NULL; @@ -225,11 +226,12 @@ const char *five_d_path(const struct path *path, char **pathbuf) } } - if (!pathname || !*pathbuf) { - pr_err("FIVE: Can't obtain absolute path: %p %p\n", - pathname, *pathbuf); + if (!pathname) { + strlcpy(namebuf, path->dentry->d_name.name, NAME_MAX); + pathname = namebuf; } - return pathname ?: (const char *)path->dentry->d_name.name; + + return pathname; } int five_check_params(struct task_struct *task, struct file *file) @@ -367,13 +369,13 @@ static int push_reset_event(struct task_struct *task, GFP_KERNEL); if (unlikely(!five_reset)) { task_integrity_reset_both(current_tint); - five_hook_integrity_reset(task); + five_hook_integrity_reset(task, file, cause); task_integrity_put(current_tint); return -ENOMEM; } task_integrity_reset_both(current_tint); - five_hook_integrity_reset(task); + five_hook_integrity_reset(task, file, cause); spin_lock(¤t_tint->list_lock); if (!list_empty(¤t_tint->events.list)) { list_cut_tail(¤t_tint->events.list, &dead_list); @@ -466,6 +468,7 @@ static inline bool is_dex2oat_binary(const struct file *file) "/apex/com.android.art/bin/dex2oat", /* R OS */ "/apex/com.android.runtime/bin/dex2oat" /* Q OS */ }; + char filename[NAME_MAX]; bool res = false; size_t i; @@ -476,9 +479,7 @@ static inline bool is_dex2oat_binary(const struct file *file) sizeof("dex2oat"))) return false; - pathname = five_d_path(&file->f_path, &pathbuf); - if (!pathname) - goto exit; + pathname = five_d_path(&file->f_path, &pathbuf, filename); for (i = 0; i < ARRAY_SIZE(dex2oat_full_path); ++i) { if (!strncmp(pathname, dex2oat_full_path[i], @@ -488,7 +489,6 @@ static inline bool is_dex2oat_binary(const struct file *file) } } -exit: if (pathbuf) __putname(pathbuf); diff --git a/security/samsung/five/five_porting.h b/security/samsung/five/five_porting.h index 08dadc6c5ad3..2ff4bfcb1e0f 100644 --- a/security/samsung/five/five_porting.h +++ b/security/samsung/five/five_porting.h @@ -43,6 +43,18 @@ #define inode_unlock(inode) mutex_unlock(&(inode)->i_mutex) #endif +#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 19, 115) +/* It is added for initialization purposes. + * For developing LSM, please, use DEFINE_LSM + */ +#define security_initcall(fn) late_initcall(fn) +#endif + +#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 20, 17) +/* This file was added in v5.0.0 */ +#include +#endif + #if LINUX_VERSION_CODE > KERNEL_VERSION(4, 14, 20) /* kmemcheck is gone. * Since Kernel 4.14.21 SLAB_NOTRACK isn't present in Kernel. @@ -84,6 +96,16 @@ static inline ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, } #endif +#if defined(CONFIG_ANDROID) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0) +/* + * __vfs_getxattr was changed in Android Kernel v5.4 + * https://android.googlesource.com/kernel/common/+/3484eba91d6b529cc606486a2db79513f3db6c67 + */ +#define XATTR_NOSECURITY 0x4 /* get value, do not involve security check */ +#define __vfs_getxattr(dentry, inode, name, value, size, flags) \ + __vfs_getxattr(dentry, inode, name, value, size) +#endif + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0) /* __GFP_WAIT was changed to __GFP_RECLAIM in * https://lore.kernel.org/patchwork/patch/592262/ diff --git a/security/samsung/five/five_state.c b/security/samsung/five/five_state.c index 5ce0cc845066..497869c4c004 100644 --- a/security/samsung/five/five_state.c +++ b/security/samsung/five/five_state.c @@ -350,16 +350,19 @@ void five_state_proceed(struct task_integrity *integrity, if (task_result.new_tint == INTEGRITY_NONE) { task_integrity_set_reset_reason(integrity, state_to_reason_cause(task_result.cause), file); - five_hook_integrity_reset(task); + five_hook_integrity_reset(task, file, + state_to_reason_cause(task_result.cause)); if (fn != BPRM_CHECK) { char comm[TASK_COMM_LEN]; + char filename[NAME_MAX]; char *pathbuf = NULL; five_dsms_reset_integrity( get_task_comm(comm, task), task_result.cause, - five_d_path(&file->f_path, &pathbuf)); + five_d_path(&file->f_path, &pathbuf, + filename)); if (pathbuf) __putname(pathbuf); } diff --git a/security/samsung/five/five_tee_interface.c b/security/samsung/five/five_tee_interface.c index c9768e720848..3857208dd88e 100644 --- a/security/samsung/five/five_tee_interface.c +++ b/security/samsung/five/five_tee_interface.c @@ -53,7 +53,7 @@ exit: return rc; } -EXPORT_SYMBOL(register_five_tee_driver); +EXPORT_SYMBOL_GPL(register_five_tee_driver); void unregister_five_tee_driver(void) { @@ -65,7 +65,7 @@ void unregister_five_tee_driver(void) } up_write(&usage_lock); } -EXPORT_SYMBOL(unregister_five_tee_driver); +EXPORT_SYMBOL_GPL(unregister_five_tee_driver); int verify_hash(enum hash_algo algo, const void *hash, size_t hash_len, const void *label, size_t label_len,