From 1821cb978a1e4f9d42827f472a76f907e33438ab Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Tue, 5 Aug 2025 16:17:01 +0200 Subject: [PATCH 001/117] checkpatch: temporarily ignore results The checkpatch tool fails to properly parse the kind of C++ code used in the Arduino libraries. Do not treat this as an error for now; will be replaced soon with a better solution. Signed-off-by: Luca Burelli --- .github/workflows/checkpatch.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/checkpatch.yml b/.github/workflows/checkpatch.yml index 41e2f69b6..5b4bad137 100644 --- a/.github/workflows/checkpatch.yml +++ b/.github/workflows/checkpatch.yml @@ -18,6 +18,7 @@ jobs: my_review: name: checkpatch review runs-on: ubuntu-latest + continue-on-error: true steps: - name: 'Calculate PR commits + 1' run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> $GITHUB_ENV From 7dac8c2bd1f08f7b7223305ddf4421edd82a681f Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 6 Aug 2025 10:42:49 +0200 Subject: [PATCH 002/117] Restore Debug menu functionality Completes https://github.com/arduino/ArduinoCore-zephyr/commit/c89521ccb9fe94075c3102dc15e40dc24d10d594 for all the boards --- boards.txt | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/boards.txt b/boards.txt index ff52cb7ef..d4bcd7f83 100644 --- a/boards.txt +++ b/boards.txt @@ -10,9 +10,7 @@ giga.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ giga.menu.debug.false=Standard giga.menu.debug.true=Debug - -giga.menu.debug.false.postbuild_debug= -giga.menu.debug.true.postbuild_debug=-debug +giga.menu.debug.true.build.zsk_args.debug=-debug giga.build.zephyr_target=arduino_giga_r1//m7 giga.build.zephyr_args=--shield arduino_giga_display_shield @@ -74,9 +72,7 @@ nano33ble.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ nano33ble.menu.debug.false=Standard nano33ble.menu.debug.true=Debug - -nano33ble.menu.debug.false.postbuild_debug= -nano33ble.menu.debug.true.postbuild_debug=-debug +nano33ble.menu.debug.true.build.zsk_args.debug=-debug nano33ble.build.zephyr_target=arduino_nano_33_ble//sense nano33ble.build.zephyr_args= @@ -136,9 +132,7 @@ ek_ra8d1.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ ek_ra8d1.menu.debug.false=Standard ek_ra8d1.menu.debug.true=Debug - -ek_ra8d1.menu.debug.false.postbuild_debug= -ek_ra8d1.menu.debug.true.postbuild_debug=-debug +ek_ra8d1.menu.debug.true.build.zsk_args.debug=-debug ek_ra8d1.build.zephyr_target=ek_ra8d1 ek_ra8d1.build.zephyr_args= @@ -192,9 +186,7 @@ frdm_mcxn947.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin frdm_mcxn947.menu.debug.false=Standard frdm_mcxn947.menu.debug.true=Debug - -frdm_mcxn947.menu.debug.false.postbuild_debug= -frdm_mcxn947.menu.debug.true.postbuild_debug=-debug +frdm_mcxn947.menu.debug.true.build.zsk_args.debug=-debug frdm_mcxn947.build.zephyr_target=frdm_mcxn947//cpu0 frdm_mcxn947.build.zephyr_args= @@ -243,9 +235,7 @@ portentah7.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ portentah7.menu.debug.false=Standard portentah7.menu.debug.true=Debug - -portentah7.menu.debug.false.postbuild_debug= -portentah7.menu.debug.true.postbuild_debug=-debug +portentah7.menu.debug.true.build.zsk_args.debug=-debug portentah7.build.zephyr_target=arduino_portenta_h7@1.0.0//m7 portentah7.build.zephyr_args= @@ -307,9 +297,7 @@ frdm_rw612.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ frdm_rw612.menu.debug.false=Standard frdm_rw612.menu.debug.true=Debug - -frdm_rw612.menu.debug.false.postbuild_debug= -frdm_rw612.menu.debug.true.postbuild_debug=-debug +frdm_rw612.menu.debug.true.build.zsk_args.debug=-debug frdm_rw612.build.zephyr_target=frdm_rw612 frdm_rw612.build.zephyr_args= @@ -357,9 +345,7 @@ niclasense.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ niclasense.menu.debug.false=Standard niclasense.menu.debug.true=Debug - -niclasense.menu.debug.false.postbuild_debug= -niclasense.menu.debug.true.postbuild_debug=-debug +niclasense.menu.debug.true.build.zsk_args.debug=-debug niclasense.build.zephyr_target=arduino_nicla_sense_me niclasense.build.zephyr_args= @@ -481,9 +467,7 @@ opta.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ opta.menu.debug.false=Standard opta.menu.debug.true=Debug - -opta.menu.debug.false.postbuild_debug= -opta.menu.debug.true.postbuild_debug=-debug +opta.menu.debug.true.build.zsk_args.debug=-debug opta.build.zephyr_target=arduino_opta//m7 opta.build.zephyr_args= From afab45f9998a1b2e24c9a9d5e13c712484b48020 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 7 Aug 2025 16:04:58 +0200 Subject: [PATCH 003/117] loader: Export bt_ctlr_set_public_addr. Needed for Nano 33 BLE and the like. Signed-off-by: iabdalkader --- loader/llext_exports.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/loader/llext_exports.c b/loader/llext_exports.c index b1e733471..f70575d2a 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -125,6 +125,9 @@ FORCE_EXPORT_SYM(bt_h4_vnd_setup); FORCE_EXPORT_SYM(brcm_patchram_buf); FORCE_EXPORT_SYM(brcm_patch_ram_length); #endif +#if defined(CONFIG_BT_LL_SW_SPLIT) +FORCE_EXPORT_SYM(bt_ctlr_set_public_addr); +#endif #endif #if defined(CONFIG_STACK_CANARIES) From f24a5762e8f9f681f088ca247007e6ba74f20559 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 12 Aug 2025 16:17:26 +0200 Subject: [PATCH 004/117] nano33ble: clean initVariant function Remove commented code and Serial.println() Signed-off-by: pennam --- variants/arduino_nano_33_ble_nrf52840_sense/variant.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/variants/arduino_nano_33_ble_nrf52840_sense/variant.cpp b/variants/arduino_nano_33_ble_nrf52840_sense/variant.cpp index de0de2f76..a1e6cab0d 100644 --- a/variants/arduino_nano_33_ble_nrf52840_sense/variant.cpp +++ b/variants/arduino_nano_33_ble_nrf52840_sense/variant.cpp @@ -12,12 +12,8 @@ void initVariant(void) { GPIO_DT_SPEC_GET(DT_PATH(zephyr_user), pin_enable_gpios); if (gpio_is_ready_dt(&enable_sensors)) { gpio_flags_t flags = enable_sensors.dt_flags | GPIO_OUTPUT_HIGH | GPIO_ACTIVE_HIGH | NRF_GPIO_DRIVE_H0H1; - Serial.println((uint32_t)flags, HEX); - gpio_pin_configure(enable_sensors.port, enable_sensors.pin, flags); gpio_pin_set(enable_sensors.port, enable_sensors.pin, HIGH); - //Serial.println("### Sensor pin enabled ###"); - delay(500); } } From ecd42cae38bafba9dc3ce09e69f024e295562372 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 5 Aug 2025 15:22:50 +0200 Subject: [PATCH 005/117] stm32h7: restore 1200bps functionality by enabling Backup area access Backup area access is needed to write magic number and reboot in dfu mode Signed-off-by: Martino Facchin --- loader/fixups.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/loader/fixups.c b/loader/fixups.c index cf5e60cd1..7b320debb 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -39,6 +39,17 @@ SYS_INIT(disable_bootloader_mpu, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAU SYS_INIT(disable_mpu_rasr_xn, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #endif +#if defined(CONFIG_SOC_STM32H747XX_M7) +int enable_bkp_access(void) +{ + /* Enable access to the backup domain */ + // HAL_PWR_EnableBkUpAccess(); + SET_BIT(PWR->CR1, PWR_CR1_DBP); + return 0; +} +SYS_INIT(enable_bkp_access, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +#endif + #if defined(CONFIG_BOARD_ARDUINO_GIGA_R1) && defined(CONFIG_VIDEO) #include #include From a02edfec3a743d5d64283f5634ce7c226f0ec5cd Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 8 Aug 2025 11:12:20 +0200 Subject: [PATCH 006/117] giga: disable M4 boot at init Disabling M4 boot at init improves sketch upload reliability Signed-off-by: pennam --- .../arduino_giga_r1_stm32h747xx_m7.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf index 8ad58579d..f0e58cddf 100644 --- a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf +++ b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf @@ -64,3 +64,5 @@ CONFIG_CYW4343W_MURATA_1DX=y CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_BT_RX_STACK_SIZE=4096 CONFIG_BT_HCI_TX_STACK_SIZE=4096 + +CONFIG_STM32H7_BOOT_M4_AT_INIT=n From 47df7e551c80681255eceb5c281928d6a7a8ae2b Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 8 Aug 2025 11:12:39 +0200 Subject: [PATCH 007/117] opta: disable M4 boot at init Disabling M4 boot at init improves sketch upload reliability Signed-off-by: pennam --- .../arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf index 8aac28592..ff80cd3e5 100644 --- a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf +++ b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf @@ -90,3 +90,4 @@ CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=7168 CONFIG_MBEDTLS_HASH_ALL_ENABLED=y CONFIG_MBEDTLS_CMAC=y +CONFIG_STM32H7_BOOT_M4_AT_INIT=n From 1b394dfdfb3702c4faaf75aac0278018d8e941a9 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 8 Aug 2025 12:50:49 +0200 Subject: [PATCH 008/117] opta: fix i2c1 pins conflicting with BLE hci Assign pb6(scl) and pb7(sda) to i2c1 Signed-off-by: pennam --- .../arduino_opta_stm32h747xx_m7.overlay | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay index 4e11c75cc..315a56a6d 100644 --- a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay +++ b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay @@ -23,7 +23,7 @@ &i2c1 { status = "okay"; - pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb9>; + pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb7>; pinctrl-names = "default"; clock-frequency = ; }; From f72f88ec4ffb1a09f668d740ac9c39a1cf6552cc Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 8 Aug 2025 12:13:21 +0200 Subject: [PATCH 009/117] portentah7: enable BLE Add configs to enable BLE on Portenta H7 Signed-off-by: pennam --- boards.txt | 2 +- .../arduino_portenta_h7_stm32h747xx_m7.conf | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/boards.txt b/boards.txt index d4bcd7f83..50948ae33 100644 --- a/boards.txt +++ b/boards.txt @@ -239,7 +239,7 @@ portentah7.menu.debug.true.build.zsk_args.debug=-debug portentah7.build.zephyr_target=arduino_portenta_h7@1.0.0//m7 portentah7.build.zephyr_args= -portentah7.build.zephyr_hals=hal_stm32 +portentah7.build.zephyr_hals=hal_stm32 hal_infineon portentah7.build.variant=arduino_portenta_h7_stm32h747xx_m7 portentah7.build.mcu=cortex-m7 portentah7.build.fpu=-mfpu=fpv5-d16 diff --git a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf index d8242394c..c5b70a014 100644 --- a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf +++ b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf @@ -95,4 +95,22 @@ CONFIG_VIDEO_BUFFER_POOL_ALIGN=32 CONFIG_VIDEO_BUFFER_USE_SHARED_MULTI_HEAP=y CONFIG_VIDEO_BUFFER_SMH_ATTRIBUTE=2 CONFIG_FLASH=y -CONFIG_STM32H7_BOOT_M4_AT_INIT=n + + +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_HCI_RAW_H4=y +CONFIG_BT_HCI_RAW_H4_ENABLE=y +CONFIG_BT_BUF_ACL_RX_SIZE=255 +CONFIG_BT_BUF_CMD_TX_SIZE=255 +CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 +CONFIG_BT_MAX_CONN=4 +CONFIG_BT_CTLR_ADV_EXT=y +CONFIG_BT_CTLR_ADV_PERIODIC=y +CONFIG_BT_CTLR_DTM_HCI=y +CONFIG_CYW4343W_MURATA_1DX=y +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 +CONFIG_BT_RX_STACK_SIZE=4096 +CONFIG_BT_HCI_TX_STACK_SIZE=4096 + +CONFIG_STM32H7_BOOT_M4_AT_INIT=n From 457d47b04207b6e721de9eecc97afd966e4448fb Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 8 Aug 2025 12:28:51 +0200 Subject: [PATCH 010/117] opta: enable BLE Add configs to enable BLE on OPTA Signed-off-by: pennam --- boards.txt | 2 +- .../arduino_opta_stm32h747xx_m7.conf | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/boards.txt b/boards.txt index 50948ae33..dcaaa27c3 100644 --- a/boards.txt +++ b/boards.txt @@ -471,7 +471,7 @@ opta.menu.debug.true.build.zsk_args.debug=-debug opta.build.zephyr_target=arduino_opta//m7 opta.build.zephyr_args= -opta.build.zephyr_hals=hal_stm32 +opta.build.zephyr_hals=hal_stm32 hal_infineon opta.build.variant=arduino_opta_stm32h747xx_m7 opta.build.mcu=cortex-m7 opta.build.fpu=-mfpu=fpv5-d16 diff --git a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf index ff80cd3e5..4019d77b1 100644 --- a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf +++ b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf @@ -90,4 +90,20 @@ CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=7168 CONFIG_MBEDTLS_HASH_ALL_ENABLED=y CONFIG_MBEDTLS_CMAC=y +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_HCI_RAW_H4=y +CONFIG_BT_HCI_RAW_H4_ENABLE=y +CONFIG_BT_BUF_ACL_RX_SIZE=255 +CONFIG_BT_BUF_CMD_TX_SIZE=255 +CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 +CONFIG_BT_MAX_CONN=4 +CONFIG_BT_CTLR_ADV_EXT=y +CONFIG_BT_CTLR_ADV_PERIODIC=y +CONFIG_BT_CTLR_DTM_HCI=y +CONFIG_CYW4343W_MURATA_1DX=y +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 +CONFIG_BT_RX_STACK_SIZE=4096 +CONFIG_BT_HCI_TX_STACK_SIZE=4096 + CONFIG_STM32H7_BOOT_M4_AT_INIT=n From c1621488e8915fa42a64d03d66d68e4368838d7e Mon Sep 17 00:00:00 2001 From: Kurt Eckhardt Date: Thu, 5 Jun 2025 08:05:07 -0700 Subject: [PATCH 011/117] GiGA Touch - define a callback function forwarder. Register a callback function to be called by the zephyr input system. This includes adding a callback function that is linked in to the zephyr build, and export a function to call to allow us to register our own. Signed-off-by: Kurt Eckhardt --- loader/fixups.c | 21 +++++++++++++++++++++ loader/llext_exports.c | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/loader/fixups.c b/loader/fixups.c index 7b320debb..22129659f 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -50,6 +50,27 @@ int enable_bkp_access(void) SYS_INIT(enable_bkp_access, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #endif +#if defined(CONFIG_INPUT) +#include +#include +#include +typedef void (*zephyr_input_callback_t)(struct input_event *evt, void *user_data); + +static zephyr_input_callback_t zephyr_input_cb = NULL; + +void zephyr_input_register_callback(zephyr_input_callback_t cb) { + zephyr_input_cb = cb; +} + +static void zephyr_input_callback(struct input_event *evt, void *user_data) { + if (zephyr_input_cb) { + zephyr_input_cb(evt, user_data); + } +} + +INPUT_CALLBACK_DEFINE(NULL, zephyr_input_callback, NULL); +#endif + #if defined(CONFIG_BOARD_ARDUINO_GIGA_R1) && defined(CONFIG_VIDEO) #include #include diff --git a/loader/llext_exports.c b/loader/llext_exports.c index f70575d2a..9ba633684 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -141,6 +141,9 @@ FORCE_EXPORT_SYM(video_buffer_alloc); FORCE_EXPORT_SYM(video_buffer_release); FORCE_EXPORT_SYM(video_set_ctrl); #endif +#if defined(CONFIG_INPUT) +FORCE_EXPORT_SYM(zephyr_input_register_callback); +#endif #if defined(CONFIG_SHARED_MULTI_HEAP) FORCE_EXPORT_SYM(shared_multi_heap_aligned_alloc); @@ -246,4 +249,4 @@ FORCE_EXPORT_SYM(__aeabi_dcmpge); #if defined (CONFIG_CPP) FORCE_EXPORT_SYM(__cxa_pure_virtual); -#endif \ No newline at end of file +#endif From 43302ee0b655bd30593fcea29ca82514ba8e1714 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 25 Aug 2025 15:48:17 +0200 Subject: [PATCH 012/117] llext: wrap *ipv4* function exports inside CONFIG_NET_IPV4 Fixes loader build if CONFIG_NET_IPV4 is not set Signed-off-by: pennam --- loader/llext_exports.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/loader/llext_exports.c b/loader/llext_exports.c index 9ba633684..ce461ecf4 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -70,11 +70,13 @@ EXPORT_SYMBOL(z_log_msg_runtime_vcreate); FORCE_EXPORT_SYM(net_if_foreach); FORCE_EXPORT_SYM(net_if_down); FORCE_EXPORT_SYM(net_if_get_by_iface); +#if defined(CONFIG_NET_IPV4) FORCE_EXPORT_SYM(net_if_ipv4_maddr_add); FORCE_EXPORT_SYM(net_if_ipv4_maddr_join); FORCE_EXPORT_SYM(net_if_ipv4_set_gw); FORCE_EXPORT_SYM(net_if_ipv4_addr_add); FORCE_EXPORT_SYM(net_if_ipv4_set_netmask_by_addr); +#endif FORCE_EXPORT_SYM(net_if_lookup_by_dev); #endif From a1c4db89959672c51922d998af616b68c383060b Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Wed, 30 Jul 2025 14:50:04 +0200 Subject: [PATCH 013/117] loader: Export missing ring_buf symbols. Used by Wire. Signed-off-by: iabdalkader --- loader/llext_exports.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/loader/llext_exports.c b/loader/llext_exports.c index 9ba633684..1f240796f 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -209,13 +209,16 @@ EXPORT_SYMBOL(printf); EXPORT_SYMBOL(sprintf); EXPORT_SYMBOL(snprintf); EXPORT_SYMBOL(cbvprintf); -; FORCE_EXPORT_SYM(abort); + #if defined(CONFIG_RING_BUFFER) EXPORT_SYMBOL(ring_buf_get); EXPORT_SYMBOL(ring_buf_peek); EXPORT_SYMBOL(ring_buf_put); +EXPORT_SYMBOL(ring_buf_area_claim); +EXPORT_SYMBOL(ring_buf_area_finish); #endif + EXPORT_SYMBOL(sys_clock_cycle_get_32); FORCE_EXPORT_SYM(__aeabi_dcmpun); FORCE_EXPORT_SYM(__aeabi_dcmple); From 0447d3cd379e5814cbab04b4d45eb2f163b3f01d Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 26 Aug 2025 16:37:32 +0200 Subject: [PATCH 014/117] variants/arduino_giga_r1_stm32h747xx_m7: Increase event queue size. Overflows easily with 5 touch points. Signed-off-by: iabdalkader --- .../arduino_giga_r1_stm32h747xx_m7.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf index f0e58cddf..0b0aa2319 100644 --- a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf +++ b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf @@ -46,6 +46,7 @@ CONFIG_VIDEO_GC2145=y CONFIG_DISPLAY=y CONFIG_INPUT=y +CONFIG_INPUT_QUEUE_MAX_MSGS=64 CONFIG_STM32_LTDC_FB_USE_SHARED_MULTI_HEAP=y CONFIG_STM32_LTDC_FB_SMH_ATTRIBUTE=2 From f8d044fa811ed45a48c73b1d165479993daebd29 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 29 Jul 2025 19:18:53 +0200 Subject: [PATCH 015/117] libraries/Wire: Add support for target mode. - Add support for I2C target mode. - Fix buffer overflows, bad return values etc.. Signed-off-by: iabdalkader --- libraries/Wire/Wire.cpp | 242 ++++++++++++++++++++++++++++------------ libraries/Wire/Wire.h | 29 +++-- 2 files changed, 191 insertions(+), 80 deletions(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 0453db62d..0fd34ff6f 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -5,104 +5,146 @@ */ #include +#include #include -arduino::ZephyrI2C::ZephyrI2C(const struct device *i2c) : i2c_dev(i2c) -{ +// Helper function to get ZephyrI2C instance from config pointer. +static arduino::ZephyrI2C* getInstance(struct i2c_target_config *config) { + return reinterpret_cast( + reinterpret_cast(config) - offsetof(arduino::ZephyrI2C, i2c_cfg) + ); +} + +static int i2c_target_stop_cb(struct i2c_target_config *config) { + arduino::ZephyrI2C *instance = getInstance(config); + return instance->stopCallback(config); +} + +static int i2c_target_write_requested_cb(struct i2c_target_config *config) { + arduino::ZephyrI2C *instance = getInstance(config); + return instance->writeRequestedCallback(config); +} + +static int i2c_target_write_received_cb(struct i2c_target_config *config, uint8_t val) { + arduino::ZephyrI2C *instance = getInstance(config); + return instance->writeReceivedCallback(config, val); +} + +static int i2c_target_read_requested_cb(struct i2c_target_config *config, uint8_t *val) { + arduino::ZephyrI2C *instance = getInstance(config); + return instance->readRequestedCallback(config, val); +} + +static int i2c_target_read_processed_cb(struct i2c_target_config *config, uint8_t *val) { + arduino::ZephyrI2C *instance = getInstance(config); + return instance->readProcessedCallback(config, val); +} + +// I2C target callback structure. +static struct i2c_target_callbacks target_callbacks = { + .write_requested = i2c_target_write_requested_cb, + .read_requested = i2c_target_read_requested_cb, + .write_received = i2c_target_write_received_cb, + .read_processed = i2c_target_read_processed_cb, + .stop = i2c_target_stop_cb, +}; + +arduino::ZephyrI2C::ZephyrI2C(const struct device *i2c) : i2c_dev(i2c), i2c_cfg({0}) { + ring_buf_init(&txRingBuffer.rb, sizeof(txRingBuffer.buffer), txRingBuffer.buffer); + ring_buf_init(&rxRingBuffer.rb, sizeof(rxRingBuffer.buffer), rxRingBuffer.buffer); } void arduino::ZephyrI2C::begin() { - ring_buf_init(&rxRingBuffer.rb, sizeof(rxRingBuffer.buffer), rxRingBuffer.buffer); + } void arduino::ZephyrI2C::begin(uint8_t slaveAddr) { + i2c_cfg.address = slaveAddr; + i2c_cfg.callbacks = &target_callbacks; + // Register I2C target + i2c_target_register(i2c_dev, &i2c_cfg); } -void arduino::ZephyrI2C::end() {} +void arduino::ZephyrI2C::end() { + // Unregister I2C target + if (i2c_cfg.address) { + i2c_target_unregister(i2c_dev, &i2c_cfg); + memset(&i2c_cfg, 0, sizeof(i2c_cfg)); + } +} void arduino::ZephyrI2C::setClock(uint32_t freq) { - uint8_t speed = I2C_SPEED_STANDARD; - if(freq > 0x06u ) { - if(freq == 100000) { - speed = I2C_SPEED_STANDARD; - } else if(freq == 400000) { - speed = I2C_SPEED_FAST; - } else if(freq == 1000000) { - speed = I2C_SPEED_FAST_PLUS; - } else { - speed = I2C_SPEED_STANDARD; - } - } else { - speed = (uint8_t) freq; - } - uint32_t i2c_cfg = I2C_MODE_CONTROLLER | - I2C_SPEED_SET(speed); - - if (i2c_configure(i2c_dev, i2c_cfg)) { - //Serial.println("Failed to configure i2c interface."); - } -} - -void arduino::ZephyrI2C::beginTransmission(uint8_t address) { // TODO for ADS1115 + uint8_t speed; + + if (freq == 100000) { + speed = I2C_SPEED_STANDARD; + } else if (freq == 400000) { + speed = I2C_SPEED_FAST; + } else if (freq == 1000000) { + speed = I2C_SPEED_FAST_PLUS; + } else { + speed = I2C_SPEED_STANDARD; + } + + i2c_configure(i2c_dev, I2C_SPEED_SET(speed) | I2C_MODE_CONTROLLER); +} + +void arduino::ZephyrI2C::beginTransmission(uint8_t address) { _address = address; - usedTxBuffer = 0; + ring_buf_reset(&txRingBuffer.rb); + ring_buf_reset(&rxRingBuffer.rb); } uint8_t arduino::ZephyrI2C::endTransmission(bool stopBit) { - int ret = i2c_write(i2c_dev, txBuffer, usedTxBuffer, _address); - if (ret) { - return 1; // fail - } - return 0; + int ret = -EIO; + uint8_t *buf = NULL; + size_t max = ring_buf_capacity_get(&txRingBuffer.rb); + size_t len = ring_buf_get_claim(&txRingBuffer.rb, &buf, max); + + ret = i2c_write(i2c_dev, buf, len, _address); + + // Must be called even if 0 bytes claimed. + ring_buf_get_finish(&txRingBuffer.rb, len); + + return ret ? 1 : 0; } -uint8_t arduino::ZephyrI2C::endTransmission(void) { // TODO for ADS1115 +uint8_t arduino::ZephyrI2C::endTransmission(void) { return endTransmission(true); } -size_t arduino::ZephyrI2C::requestFrom(uint8_t address, size_t len, - bool stopBit) { - uint8_t buf[len]; - int ret = i2c_read(i2c_dev, buf, len, address); - if (ret != 0) - { - return 0; - } - ret = ring_buf_put(&rxRingBuffer.rb, buf, len); - if (ret == 0) - { - return 0; +size_t arduino::ZephyrI2C::requestFrom(uint8_t address, size_t len_in, bool stopBit) { + int ret = -EIO; + uint8_t *buf = NULL; + size_t len = ring_buf_put_claim(&rxRingBuffer.rb, &buf, len_in); + + if (len && buf) { + ret = i2c_read(i2c_dev, buf, len, address); } - return len; + + // Must be called even if 0 bytes claimed. + ring_buf_put_finish(&rxRingBuffer.rb, len); + + return ret ? 0 : len; } -size_t arduino::ZephyrI2C::requestFrom(uint8_t address, size_t len) { // TODO for ADS1115 +size_t arduino::ZephyrI2C::requestFrom(uint8_t address, size_t len) { return requestFrom(address, len, true); } -size_t arduino::ZephyrI2C::write(uint8_t data) { // TODO for ADS1115 - txBuffer[usedTxBuffer++] = data; - return 1; +size_t arduino::ZephyrI2C::write(uint8_t data) { + return ring_buf_put(&txRingBuffer.rb, &data, 1); } size_t arduino::ZephyrI2C::write(const uint8_t *buffer, size_t size) { - if (usedTxBuffer + size > 256) { - size = 256 - usedTxBuffer; - } - memcpy(txBuffer + usedTxBuffer, buffer, size); - usedTxBuffer += size; - return size; + return ring_buf_put(&txRingBuffer.rb, buffer, size); } int arduino::ZephyrI2C::read() { - uint8_t buf[1]; - if (ring_buf_size_get(&rxRingBuffer.rb)) { - int ret = ring_buf_get(&rxRingBuffer.rb, buf, 1); - if (ret == 0) { - return -1; - } - return (int)buf[0]; + uint8_t buf; + if (ring_buf_get(&rxRingBuffer.rb, &buf, 1)) { + return (int) buf; } return -1; } @@ -112,18 +154,74 @@ int arduino::ZephyrI2C::available() { } int arduino::ZephyrI2C::peek() { - uint8_t buf[1]; - int bytes_read = ring_buf_peek(&rxRingBuffer.rb, buf, 1); - if (bytes_read == 0){ - return 0; + uint8_t buf; + if (ring_buf_peek(&rxRingBuffer.rb, &buf, 1)) { + return (int) buf; } - return (int)buf[0]; + return -1; +} + +void arduino::ZephyrI2C::flush() { + +} + +void arduino::ZephyrI2C::onReceive(voidFuncPtrParamInt cb) { + onReceiveCb = cb; +} + +void arduino::ZephyrI2C::onRequest(voidFuncPtr cb) { + onRequestCb = cb; +} + +int arduino::ZephyrI2C::writeRequestedCallback(struct i2c_target_config *config) { + // Reset the buffer on write requests. + ring_buf_reset(&rxRingBuffer.rb); + return 0; +} + +int arduino::ZephyrI2C::writeReceivedCallback(struct i2c_target_config *config, uint8_t val) { + size_t len = ring_buf_size_get(&rxRingBuffer.rb); + size_t max = ring_buf_capacity_get(&rxRingBuffer.rb); + + // If the buffer is about to overflow, invoke the callback + // with the current length. + if (onReceiveCb && ((len + 1) > max)) { + onReceiveCb(len); + } + + return ring_buf_put(&rxRingBuffer.rb, &val, 1) ? 0 : -1; } -void arduino::ZephyrI2C::flush() {} +int arduino::ZephyrI2C::readRequestedCallback(struct i2c_target_config *config, uint8_t *val) { + // Reset the buffer on read requests. + ring_buf_reset(&txRingBuffer.rb); + + if (onRequestCb) { + onRequestCb(); + } + + return readProcessedCallback(config, val); +} -void arduino::ZephyrI2C::onReceive(voidFuncPtrParamInt cb) {} -void arduino::ZephyrI2C::onRequest(voidFuncPtr cb) {} +int arduino::ZephyrI2C::readProcessedCallback(struct i2c_target_config *config, uint8_t *val) { + *val = 0xFF; + ring_buf_get(&txRingBuffer.rb, val, 1); + // Returning a negative value here is not handled gracefully and + // causes the target/board to stop responding (at least with ST). + return 0; +} + +int arduino::ZephyrI2C::stopCallback(struct i2c_target_config *config) { + // If the RX buffer is not empty invoke the callback with the + // remaining data length. + if (onReceiveCb) { + size_t len = ring_buf_size_get(&rxRingBuffer.rb); + if (len) { + onReceiveCb(len); + } + } + return 0; +} #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), i2cs) #if (DT_PROP_LEN(DT_PATH(zephyr_user), i2cs) > 1) diff --git a/libraries/Wire/Wire.h b/libraries/Wire/Wire.h index 6e289f8c1..cb5fb0c77 100644 --- a/libraries/Wire/Wire.h +++ b/libraries/Wire/Wire.h @@ -15,6 +15,11 @@ typedef void (*voidFuncPtrParamInt)(int); namespace arduino { +struct i2c_ring { + struct ring_buf rb; + uint8_t buffer[256]; +}; + class ZephyrI2C : public HardwareI2C { public: ZephyrI2C(const struct device* i2c); @@ -43,16 +48,24 @@ class ZephyrI2C : public HardwareI2C { virtual void flush(); virtual int available(); + // I2C target callbacks + int writeRequestedCallback(struct i2c_target_config *config); + int writeReceivedCallback(struct i2c_target_config *config, uint8_t val); + int readRequestedCallback(struct i2c_target_config *config, uint8_t *val); + int readProcessedCallback(struct i2c_target_config *config, uint8_t *val); + int stopCallback(struct i2c_target_config *config); + + struct i2c_target_config i2c_cfg; + private: int _address; - uint8_t txBuffer[256]; - uint32_t usedTxBuffer; - struct rx_ring_buf{ - struct ring_buf rb; - uint8_t buffer[256]; - }; - struct rx_ring_buf rxRingBuffer; - const struct device* i2c_dev; + + struct i2c_ring txRingBuffer; + struct i2c_ring rxRingBuffer; + const struct device *i2c_dev; + + voidFuncPtr onRequestCb = NULL; + voidFuncPtrParamInt onReceiveCb = NULL; }; } // namespace arduino From af01ce4fa421d7636708f5df1658ddca74dc5812 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 31 Jul 2025 14:21:55 +0200 Subject: [PATCH 016/117] variants/arduino_giga_r1_stm32h747xx_m7: Enable I2C target. Enable target support for Giga R1. Signed-off-by: iabdalkader --- .../arduino_giga_r1_stm32h747xx_m7.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf index f0e58cddf..2b7571aa3 100644 --- a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf +++ b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf @@ -21,6 +21,7 @@ CONFIG_FPU=y CONFIG_ADC=y CONFIG_DAC=y CONFIG_PWM=y +CONFIG_I2C_TARGET=y CONFIG_ICACHE=y CONFIG_DCACHE=y From a18719b5656906b2d1770d516f6a6c5ffe718184 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 22 Aug 2025 14:23:37 +0200 Subject: [PATCH 017/117] variants/arduino_portenta_h7_stm32h747xx_m7: Enable I2C target. Enable target support for Giga R1. Signed-off-by: iabdalkader --- .../arduino_portenta_h7_stm32h747xx_m7.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf index c5b70a014..257d27999 100644 --- a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf +++ b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf @@ -33,6 +33,7 @@ CONFIG_DMA=y CONFIG_MEMC=y CONFIG_SPI_ASYNC=y CONFIG_SPI_STM32_INTERRUPT=y +CONFIG_I2C_TARGET=y CONFIG_NET_CORE_LOG_LEVEL_DBG=y From 9ca4074407391d1c7c73aff11c540800dce3fc71 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 7 Aug 2025 10:23:47 +0200 Subject: [PATCH 018/117] workflows: Remove checkpatch workflow. Signed-off-by: iabdalkader --- .github/workflows/checkpatch.yml | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 .github/workflows/checkpatch.yml diff --git a/.github/workflows/checkpatch.yml b/.github/workflows/checkpatch.yml deleted file mode 100644 index 5b4bad137..000000000 --- a/.github/workflows/checkpatch.yml +++ /dev/null @@ -1,31 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: checkpatch review - -# Controls when the workflow will run -on: - # Triggers the workflow on push or pull request events but only for the "main" branch - push: - branches: [ "main", "next" ] - pull_request: - branches: [ "main", "next" ] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - my_review: - name: checkpatch review - runs-on: ubuntu-latest - continue-on-error: true - steps: - - name: 'Calculate PR commits + 1' - run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> $GITHUB_ENV - - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.head.sha }} - fetch-depth: ${{ env.PR_FETCH_DEPTH }} - - name: Run checkpatch review - uses: webispy/checkpatch-action@v9 - From d41a2f4aba7db6c010a97e57c39d6a98d06a6f3b Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 7 Aug 2025 10:24:07 +0200 Subject: [PATCH 019/117] workflows: Add clang format check workflow. Signed-off-by: iabdalkader --- .clang-format | 121 +++++++++++++++++++++++++++++ .github/workflows/format_check.yml | 62 +++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 .clang-format create mode 100644 .github/workflows/format_check.yml diff --git a/.clang-format b/.clang-format new file mode 100644 index 000000000..96b776d99 --- /dev/null +++ b/.clang-format @@ -0,0 +1,121 @@ +# SPDX-License-Identifier: Apache-2.0 +# +# Note: The list of ForEachMacros can be obtained using: +# +# git grep -h '^#define [^[:space:]]*FOR_EACH[^[:space:]]*(' include/ \ +# | sed "s,^#define \([^[:space:]]*FOR_EACH[^[:space:]]*\)(.*$, - '\1'," \ +# | sort | uniq +# +# References: +# - https://clang.llvm.org/docs/ClangFormatStyleOptions.html + +--- +BasedOnStyle: LLVM +AlignOperands: Align +BreakBeforeTernaryOperators: false +EmptyLineBeforeAccessModifier: LogicalBlock +AlignConsecutiveMacros: AcrossComments +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AttributeMacros: + - __aligned + - __deprecated + - __packed + - __printf_like + - __syscall + - __syscall_always_inline + - __subsystem +BitFieldColonSpacing: After +BreakBeforeBraces: Attach +ColumnLimit: 100 +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +ForEachMacros: + - 'ARRAY_FOR_EACH' + - 'ARRAY_FOR_EACH_PTR' + - 'FOR_EACH' + - 'FOR_EACH_FIXED_ARG' + - 'FOR_EACH_IDX' + - 'FOR_EACH_IDX_FIXED_ARG' + - 'FOR_EACH_NONEMPTY_TERM' + - 'FOR_EACH_FIXED_ARG_NONEMPTY_TERM' + - 'RB_FOR_EACH' + - 'RB_FOR_EACH_CONTAINER' + - 'SYS_DLIST_FOR_EACH_CONTAINER' + - 'SYS_DLIST_FOR_EACH_CONTAINER_SAFE' + - 'SYS_DLIST_FOR_EACH_NODE' + - 'SYS_DLIST_FOR_EACH_NODE_SAFE' + - 'SYS_SEM_LOCK' + - 'SYS_SFLIST_FOR_EACH_CONTAINER' + - 'SYS_SFLIST_FOR_EACH_CONTAINER_SAFE' + - 'SYS_SFLIST_FOR_EACH_NODE' + - 'SYS_SFLIST_FOR_EACH_NODE_SAFE' + - 'SYS_SLIST_FOR_EACH_CONTAINER' + - 'SYS_SLIST_FOR_EACH_CONTAINER_SAFE' + - 'SYS_SLIST_FOR_EACH_NODE' + - 'SYS_SLIST_FOR_EACH_NODE_SAFE' + - '_WAIT_Q_FOR_EACH' + - 'Z_FOR_EACH' + - 'Z_FOR_EACH_ENGINE' + - 'Z_FOR_EACH_EXEC' + - 'Z_FOR_EACH_FIXED_ARG' + - 'Z_FOR_EACH_FIXED_ARG_EXEC' + - 'Z_FOR_EACH_IDX' + - 'Z_FOR_EACH_IDX_EXEC' + - 'Z_FOR_EACH_IDX_FIXED_ARG' + - 'Z_FOR_EACH_IDX_FIXED_ARG_EXEC' + - 'Z_GENLIST_FOR_EACH_CONTAINER' + - 'Z_GENLIST_FOR_EACH_CONTAINER_SAFE' + - 'Z_GENLIST_FOR_EACH_NODE' + - 'Z_GENLIST_FOR_EACH_NODE_SAFE' + - 'STRUCT_SECTION_FOREACH' + - 'STRUCT_SECTION_FOREACH_ALTERNATE' + - 'TYPE_SECTION_FOREACH' + - 'K_SPINLOCK' + - 'COAP_RESOURCE_FOREACH' + - 'COAP_SERVICE_FOREACH' + - 'COAP_SERVICE_FOREACH_RESOURCE' + - 'HTTP_RESOURCE_FOREACH' + - 'HTTP_SERVER_CONTENT_TYPE_FOREACH' + - 'HTTP_SERVICE_FOREACH' + - 'HTTP_SERVICE_FOREACH_RESOURCE' + - 'I3C_BUS_FOR_EACH_I3CDEV' + - 'I3C_BUS_FOR_EACH_I2CDEV' + - 'MIN_HEAP_FOREACH' +IfMacros: + - 'CHECKIF' +IncludeCategories: + - Regex: '^".*\.h"$' + Priority: 0 + - Regex: '^<(assert|complex|ctype|errno|fenv|float|inttypes|limits|locale|math|setjmp|signal|stdarg|stdbool|stddef|stdint|stdio|stdlib|string|tgmath|time|wchar|wctype)\.h>$' + Priority: 1 + - Regex: '^\$' + Priority: 2 + - Regex: '.*' + Priority: 3 +IndentCaseLabels: false +IndentGotoLabels: true +IndentAccessModifiers: false +AccessModifierOffset: -4 +IndentWidth: 4 +InsertBraces: true +InsertNewlineAtEOF: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SortIncludes: Never +SeparateDefinitionBlocks: Always +UseTab: ForContinuationAndIndentation +TabWidth: 4 +WhitespaceSensitiveMacros: + - COND_CODE_0 + - COND_CODE_1 + - IF_DISABLED + - IF_ENABLED + - LISTIFY + - STRINGIFY + - Z_STRINGIFY + - DT_FOREACH_PROP_ELEM_SEP diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml new file mode 100644 index 000000000..5370244dd --- /dev/null +++ b/.github/workflows/format_check.yml @@ -0,0 +1,62 @@ +name: 'Format Check' + +on: + push: + branches: + - 'main' + paths: + - '**/*.c' + - '**/*.cpp' + - '**/*.h' + - '**/*.hpp' + + pull_request: + types: + - opened + - edited + - reopened + - synchronize + branches: + - 'main' + paths: + - '**/*.c' + - '**/*.cpp' + - '**/*.h' + - '**/*.hpp' + + workflow_dispatch: + inputs: + logLevel: + description: 'Log level' + required: true + default: 'warning' + +jobs: + format-check: + runs-on: ubuntu-latest + strategy: + matrix: + path: + - check: 'cores/arduino/' + exclude: 'cores/arduino/api/' + - check: 'loader/' + exclude: 'loader/llext_exports\.c$' + - check: 'libraries/' + exclude: 'examples' + exclude: 'extras' + exclude: 'ea_malloc' + fail-fast: false + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: false + persist-credentials: false + + - name: Run clang-format check + uses: jidicula/clang-format-action@v4.15.0 + with: + clang-format-version: '19' + check-path: ${{ matrix.path['check'] }} + exclude-regex: ${{ matrix.path['exclude'] }} From fd2943f9b71a54c1a0e60014ac1812e72afd1bc2 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 7 Aug 2025 12:11:06 +0200 Subject: [PATCH 020/117] workflows: Add commit message check. Signed-off-by: iabdalkader --- .github/workflows/commit_check.yml | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/commit_check.yml diff --git a/.github/workflows/commit_check.yml b/.github/workflows/commit_check.yml new file mode 100644 index 000000000..da0408a74 --- /dev/null +++ b/.github/workflows/commit_check.yml @@ -0,0 +1,35 @@ +name: 'Check Commit Message' + +on: + pull_request: + types: + - opened + - edited + - reopened + - synchronize + branches: + - 'main' + +jobs: + check-commit-messages: + runs-on: ubuntu-latest + steps: + - name: 'Check commit messages format' + uses: gsactions/commit-message-checker@v2 + with: + pattern: '^[^!]+: [A-Za-z]+.+ .+$' + flags: 'gm' + error: 'Commit subject line must match the following pattern: : ' + excludeTitle: 'false' + excludeDescription: 'true' + checkAllCommitMessages: 'true' + accessToken: ${{ secrets.GITHUB_TOKEN }} + - name: 'Check commit messages length' + uses: gsactions/commit-message-checker@v2 + with: + pattern: '^[^#].{10,80}$' + error: 'Commit subject line maximum line length of 80 characters is exceeded.' + excludeTitle: 'false' + excludeDescription: 'true' + checkAllCommitMessages: 'true' + accessToken: ${{ secrets.GITHUB_TOKEN }} From cd681bec65659b4da407ff8123ea3705bbef301d Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 28 Aug 2025 15:41:30 +0200 Subject: [PATCH 021/117] misc: Format repo using clang-format. Signed-off-by: iabdalkader --- cores/arduino/Arduino.h | 60 +- cores/arduino/SerialUSB.h | 22 +- cores/arduino/USB.cpp | 113 ++-- cores/arduino/abi.cpp | 48 +- cores/arduino/itoa.cpp | 171 +++-- cores/arduino/main.cpp | 115 ++-- cores/arduino/new.cpp | 163 ++--- cores/arduino/overloads.h | 2 +- cores/arduino/threads.cpp | 39 +- cores/arduino/usb_device_descriptor.c | 43 +- cores/arduino/zephyrCommon.cpp | 636 +++++++++--------- cores/arduino/zephyrSerial.cpp | 73 +- cores/arduino/zephyrSerial.h | 88 ++- libraries/Camera/src/camera.cpp | 191 +++--- libraries/Camera/src/camera.h | 152 ++--- libraries/SPI/SPI.cpp | 172 ++--- libraries/SPI/SPI.h | 44 +- libraries/SocketWrapper/Ethernet.cpp | 2 +- libraries/SocketWrapper/Ethernet.h | 90 +-- libraries/SocketWrapper/SocketHelpers.h | 239 ++++--- libraries/SocketWrapper/SocketWrapper.h | 464 ++++++------- libraries/SocketWrapper/WiFi.h | 185 ++--- libraries/SocketWrapper/ZephyrClient.h | 140 ++-- libraries/SocketWrapper/ZephyrSSLClient.h | 15 +- libraries/SocketWrapper/ZephyrServer.h | 96 +-- libraries/SocketWrapper/ZephyrUDP.h | 585 ++++++++-------- .../SocketWrapper/utility/wl_definitions.h | 72 +- libraries/Wire/Wire.cpp | 219 +++--- libraries/Wire/Wire.h | 74 +- libraries/Zephyr_SDRAM/src/SDRAM.cpp | 95 +-- libraries/Zephyr_SDRAM/src/SDRAM.h | 19 +- loader/fixups.c | 55 +- loader/main.c | 70 +- 33 files changed, 2306 insertions(+), 2246 deletions(-) diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index 0d07764c5..588adfdbd 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -25,9 +25,9 @@ /* Check all pins are defined only once */ #define DIGITAL_PIN_CHECK_UNIQUE(i, _) \ - ((DT_FOREACH_PROP_ELEM_SEP_VARGS( \ - DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, (+), \ - DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), digital_pin_gpios, i)), \ + ((DT_FOREACH_PROP_ELEM_SEP_VARGS( \ + DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, (+), \ + DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), digital_pin_gpios, i)), \ DT_PHA_BY_IDX(DT_PATH(zephyr_user), digital_pin_gpios, i, pin))) == 1) #if !LISTIFY(DT_PROP_LEN(DT_PATH(zephyr_user), digital_pin_gpios), DIGITAL_PIN_CHECK_UNIQUE, (&&)) @@ -44,36 +44,37 @@ (DIGITAL_PIN_EXISTS(n, p, i, dev, num) ? i : 0) /* Only matched pin returns non-zero value, so the sum is matched pin's index */ -#define DIGITAL_PIN_GPIOS_FIND_PIN(dev, pin) \ - DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_PATH(zephyr_user), digital_pin_gpios, \ - LED_BUILTIN_INDEX_BY_REG_AND_PINNUM, (+), dev, pin) +#define DIGITAL_PIN_GPIOS_FIND_PIN(dev, pin) \ + DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_PATH(zephyr_user), digital_pin_gpios, \ + LED_BUILTIN_INDEX_BY_REG_AND_PINNUM, (+), dev, pin) #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), builtin_led_gpios) && \ (DT_PROP_LEN(DT_PATH(zephyr_user), builtin_led_gpios) > 0) -#if !(DT_FOREACH_PROP_ELEM_SEP_VARGS( \ - DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, (+), \ - DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)), \ - DT_PHA_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0, pin)) > 0) +#if !(DT_FOREACH_PROP_ELEM_SEP_VARGS( \ + DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, (+), \ + DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)), \ + DT_PHA_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0, pin)) > 0) #warning "pin not found in digital_pin_gpios" #else #define LED_BUILTIN \ - DIGITAL_PIN_GPIOS_FIND_PIN( \ - DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)), \ + DIGITAL_PIN_GPIOS_FIND_PIN( \ + DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)), \ DT_PHA_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0, pin)) #endif /* If digital-pin-gpios is not defined, tries to use the led0 alias */ #elif DT_NODE_EXISTS(DT_ALIAS(led0)) -#if !(DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, \ - (+), DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_ALIAS(led0), gpios, 0)), \ - DT_PHA_BY_IDX(DT_ALIAS(led0), gpios, 0, pin)) > 0) +#if !(DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, \ + (+), \ + DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_ALIAS(led0), gpios, 0)), \ + DT_PHA_BY_IDX(DT_ALIAS(led0), gpios, 0, pin)) > 0) #warning "pin not found in digital_pin_gpios" #else #define LED_BUILTIN \ - DIGITAL_PIN_GPIOS_FIND_PIN(DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_ALIAS(led0), gpios, 0)), \ - DT_PHA_BY_IDX(DT_ALIAS(led0), gpios, 0, pin)) + DIGITAL_PIN_GPIOS_FIND_PIN(DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_ALIAS(led0), gpios, 0)), \ + DT_PHA_BY_IDX(DT_ALIAS(led0), gpios, 0, pin)) #endif #endif // builtin_led_gpios @@ -95,11 +96,13 @@ enum digitalPins { #ifdef CONFIG_ADC -#define AN_ENUMS(n, p, i) A ## i = DIGITAL_PIN_GPIOS_FIND_PIN( \ - DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), p, i)), \ - DT_PHA_BY_IDX(DT_PATH(zephyr_user), p, i, pin)), -enum analogPins { DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), - adc_pin_gpios, AN_ENUMS) }; +#define AN_ENUMS(n, p, i) \ + A##i = DIGITAL_PIN_GPIOS_FIND_PIN(DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), p, i)), \ + DT_PHA_BY_IDX(DT_PATH(zephyr_user), p, i, pin)), + +enum analogPins { + DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), adc_pin_gpios, AN_ENUMS) +}; // We provide analogReadResolution APIs void analogReadResolution(int bits); @@ -112,8 +115,11 @@ void analogReadResolution(int bits); #undef DAC1 #undef DAC2 #undef DAC3 -#define DAC_ENUMS(n, p, i) DAC ## i = i, -enum dacPins { DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), dac_channels, DAC_ENUMS) NUM_OF_DACS }; +#define DAC_ENUMS(n, p, i) DAC##i = i, + +enum dacPins { + DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), dac_channels, DAC_ENUMS) NUM_OF_DACS +}; #endif @@ -122,10 +128,10 @@ void noInterrupts(void); int digitalPinToInterrupt(pin_size_t pin); -#define digitalPinToPort(x) (x) +#define digitalPinToPort(x) (x) #define digitalPinToBitMask(x) (x) -#define portOutputRegister(x) (x) -#define portInputRegister(x) (x) +#define portOutputRegister(x) (x) +#define portInputRegister(x) (x) void analogReadResolution(int bits); void analogWriteResolution(int bits); diff --git a/cores/arduino/SerialUSB.h b/cores/arduino/SerialUSB.h index be1377f8b..f6459d3c4 100644 --- a/cores/arduino/SerialUSB.h +++ b/cores/arduino/SerialUSB.h @@ -13,13 +13,22 @@ namespace arduino { class SerialUSB_ : public ZephyrSerial { public: - SerialUSB_(const struct device *dev) : ZephyrSerial(dev) { } + SerialUSB_(const struct device *dev) : ZephyrSerial(dev) { + } + void begin(unsigned long baudrate, uint16_t config); - void begin(unsigned long baudrate) { begin(baudrate, SERIAL_8N1); } + + void begin(unsigned long baudrate) { + begin(baudrate, SERIAL_8N1); + } operator bool() override; size_t write(const uint8_t *buffer, size_t size) override; - size_t write(const uint8_t data) override { return write(&data, 1); } + + size_t write(const uint8_t data) override { + return write(&data, 1); + } + void flush() override; protected: @@ -32,8 +41,9 @@ class SerialUSB_ : public ZephyrSerial { struct k_timer baud_timer; bool started = false; }; -} // namespace arduino +} // namespace arduino -#if (DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) +#if (DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && \ + (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) extern arduino::SerialUSB_ Serial; -#endif \ No newline at end of file +#endif diff --git a/cores/arduino/USB.cpp b/cores/arduino/USB.cpp index 60f5fc7ae..6e0179ea1 100644 --- a/cores/arduino/USB.cpp +++ b/cores/arduino/USB.cpp @@ -10,53 +10,51 @@ #include #include -#if ((DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm)) && (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) -const struct device *const usb_dev = DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0)); +#if ((DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm)) && \ + (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) +const struct device *const usb_dev = + DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0)); void usb_status_cb(enum usb_dc_status_code cb_status, const uint8_t *param) { - (void)param; // unused - if (cb_status == USB_DC_CONFIGURED) { - - } + (void)param; // unused + if (cb_status == USB_DC_CONFIGURED) { + } } void __attribute__((weak)) _on_1200_bps() { - NVIC_SystemReset(); + NVIC_SystemReset(); } -void arduino::SerialUSB_::_baudChangeHandler() -{ - uart_line_ctrl_get(uart, UART_LINE_CTRL_BAUD_RATE, &baudrate); - if (baudrate == 1200) { - usb_disable(); - _on_1200_bps(); - } +void arduino::SerialUSB_::_baudChangeHandler() { + uart_line_ctrl_get(uart, UART_LINE_CTRL_BAUD_RATE, &baudrate); + if (baudrate == 1200) { + usb_disable(); + _on_1200_bps(); + } } -static void _baudChangeHandler(const struct device *dev, uint32_t rate) -{ - (void)dev; // unused - if (rate == 1200) { - usb_disable(); - _on_1200_bps(); - } +static void _baudChangeHandler(const struct device *dev, uint32_t rate) { + (void)dev; // unused + if (rate == 1200) { + usb_disable(); + _on_1200_bps(); + } } #if defined(CONFIG_USB_DEVICE_STACK_NEXT) extern "C" { - #include - struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb); +#include +struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb); } struct usbd_context *_usbd; int usb_disable() { - return usbd_disable(_usbd); + return usbd_disable(_usbd); } -static void usbd_next_cb(struct usbd_context *const ctx, const struct usbd_msg *msg) -{ +static void usbd_next_cb(struct usbd_context *const ctx, const struct usbd_msg *msg) { if (usbd_can_detect_vbus(ctx)) { if (msg->type == USBD_MSG_VBUS_READY) { usbd_enable(ctx); @@ -68,14 +66,13 @@ static void usbd_next_cb(struct usbd_context *const ctx, const struct usbd_msg * } if (msg->type == USBD_MSG_CDC_ACM_LINE_CODING) { - uint32_t baudrate; + uint32_t baudrate; uart_line_ctrl_get(ctx->dev, UART_LINE_CTRL_BAUD_RATE, &baudrate); - _baudChangeHandler(nullptr, baudrate); + _baudChangeHandler(nullptr, baudrate); } } -static int enable_usb_device_next(void) -{ +static int enable_usb_device_next(void) { int err; //_usbd = usbd_init_device(usbd_next_cb); @@ -95,44 +92,46 @@ static int enable_usb_device_next(void) #endif /* defined(CONFIG_USB_DEVICE_STACK_NEXT) */ void arduino::SerialUSB_::_baudChangeDispatch(struct k_timer *timer) { - arduino::SerialUSB_* dev = (arduino::SerialUSB_*)k_timer_user_data_get(timer); - dev->_baudChangeHandler(); + arduino::SerialUSB_ *dev = (arduino::SerialUSB_ *)k_timer_user_data_get(timer); + dev->_baudChangeHandler(); } - void arduino::SerialUSB_::begin(unsigned long baudrate, uint16_t config) { - if (!started) { - #ifndef CONFIG_USB_DEVICE_STACK_NEXT - usb_enable(NULL); - #ifndef CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT - k_timer_init(&baud_timer, SerialUSB_::_baudChangeDispatch, NULL); - k_timer_user_data_set(&baud_timer, this); - k_timer_start(&baud_timer, K_MSEC(100), K_MSEC(100)); - #else - cdc_acm_dte_rate_callback_set(usb_dev, ::_baudChangeHandler); - #endif - #else - enable_usb_device_next(); - #endif - ZephyrSerial::begin(baudrate, config); - started = true; - } + if (!started) { +#ifndef CONFIG_USB_DEVICE_STACK_NEXT + usb_enable(NULL); +#ifndef CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT + k_timer_init(&baud_timer, SerialUSB_::_baudChangeDispatch, NULL); + k_timer_user_data_set(&baud_timer, this); + k_timer_start(&baud_timer, K_MSEC(100), K_MSEC(100)); +#else + cdc_acm_dte_rate_callback_set(usb_dev, ::_baudChangeHandler); +#endif +#else + enable_usb_device_next(); +#endif + ZephyrSerial::begin(baudrate, config); + started = true; + } } arduino::SerialUSB_::operator bool() { - uart_line_ctrl_get(uart, UART_LINE_CTRL_DTR, &dtr); - return dtr; + uart_line_ctrl_get(uart, UART_LINE_CTRL_DTR, &dtr); + return dtr; } - -size_t arduino::SerialUSB_::write(const uint8_t *buffer, size_t size) { - if (!Serial) return 0; - return arduino::ZephyrSerial::write(buffer, size); +size_t arduino::SerialUSB_::write(const uint8_t *buffer, size_t size) { + if (!Serial) { + return 0; + } + return arduino::ZephyrSerial::write(buffer, size); } void arduino::SerialUSB_::flush() { - if (!Serial) return; - arduino::ZephyrSerial::flush(); + if (!Serial) { + return; + } + arduino::ZephyrSerial::flush(); } arduino::SerialUSB_ Serial(usb_dev); diff --git a/cores/arduino/abi.cpp b/cores/arduino/abi.cpp index 9e8fabd6d..872c8d083 100644 --- a/cores/arduino/abi.cpp +++ b/cores/arduino/abi.cpp @@ -7,34 +7,44 @@ #include namespace std { - void __throw_length_error(const char* __s __attribute__((unused))) {} - void __throw_bad_alloc() {} - void __throw_bad_function_call() {} -}; +void __throw_length_error(const char *__s __attribute__((unused))) { +} + +void __throw_bad_alloc() { +} + +void __throw_bad_function_call() { +} +}; // namespace std extern "C" { -void* __dso_handle = (void*) &__dso_handle; +void *__dso_handle = (void *)&__dso_handle; + +void __cxa_pure_virtual(void) { +} + +void __cxa_deleted_virtual(void) { +} -void __cxa_pure_virtual(void) {} -void __cxa_deleted_virtual(void) {} -int __cxa_atexit(void (*func) (void *), void * arg, void * dso_handle) { - (void)func; (void)arg; (void)dso_handle; // unused - return 0; +int __cxa_atexit(void (*func)(void *), void *arg, void *dso_handle) { + (void)func; + (void)arg; + (void)dso_handle; // unused + return 0; } int atexit(void (*func)(void)) { - (void)func; - return 0; + (void)func; + return 0; } -int strcmp(const char* s1, const char* s2) { - while(*s1 && (*s1 == *s2)) - { - s1++; - s2++; - } - return *(const unsigned char*)s1 - *(const unsigned char*)s2; +int strcmp(const char *s1, const char *s2) { + while (*s1 && (*s1 == *s2)) { + s1++; + s2++; + } + return *(const unsigned char *)s1 - *(const unsigned char *)s2; } } /* extern "C" */ diff --git a/cores/arduino/itoa.cpp b/cores/arduino/itoa.cpp index 929ec4d0a..193cd6ab9 100644 --- a/cores/arduino/itoa.cpp +++ b/cores/arduino/itoa.cpp @@ -13,102 +13,93 @@ extern "C" { #include -extern char* itoa( int value, char *string, int radix ) -{ - return ltoa( value, string, radix ) ; +extern char *itoa(int value, char *string, int radix) { + return ltoa(value, string, radix); } -extern char* ltoa( long value, char *string, int radix ) -{ - char tmp[33]; - char *tp = tmp; - long i; - unsigned long v; - int sign; - char *sp; - - if ( string == NULL ) - { - return 0 ; - } - - if (radix > 36 || radix <= 1) - { - return 0 ; - } - - sign = (radix == 10 && value < 0); - if (sign) - { - v = -value; - } - else - { - v = (unsigned long)value; - } - - while (v || tp == tmp) - { - i = v % radix; - v = v / radix; - if (i < 10) - *tp++ = i+'0'; - else - *tp++ = i + 'a' - 10; - } - - sp = string; - - if (sign) - *sp++ = '-'; - while (tp > tmp) - *sp++ = *--tp; - *sp = 0; - - return string; +extern char *ltoa(long value, char *string, int radix) { + char tmp[33]; + char *tp = tmp; + long i; + unsigned long v; + int sign; + char *sp; + + if (string == NULL) { + return 0; + } + + if (radix > 36 || radix <= 1) { + return 0; + } + + sign = (radix == 10 && value < 0); + if (sign) { + v = -value; + } else { + v = (unsigned long)value; + } + + while (v || tp == tmp) { + i = v % radix; + v = v / radix; + if (i < 10) { + *tp++ = i + '0'; + } else { + *tp++ = i + 'a' - 10; + } + } + + sp = string; + + if (sign) { + *sp++ = '-'; + } + while (tp > tmp) { + *sp++ = *--tp; + } + *sp = 0; + + return string; } -extern char* utoa( unsigned int value, char *string, int radix ) -{ - return ultoa( value, string, radix ) ; +extern char *utoa(unsigned int value, char *string, int radix) { + return ultoa(value, string, radix); } -extern char* ultoa( unsigned long value, char *string, int radix ) -{ - char tmp[33]; - char *tp = tmp; - long i; - unsigned long v = value; - char *sp; - - if ( string == NULL ) - { - return 0; - } - - if (radix > 36 || radix <= 1) - { - return 0; - } - - while (v || tp == tmp) - { - i = v % radix; - v = v / radix; - if (i < 10) - *tp++ = i+'0'; - else - *tp++ = i + 'a' - 10; - } - - sp = string; - - - while (tp > tmp) - *sp++ = *--tp; - *sp = 0; - - return string; +extern char *ultoa(unsigned long value, char *string, int radix) { + char tmp[33]; + char *tp = tmp; + long i; + unsigned long v = value; + char *sp; + + if (string == NULL) { + return 0; + } + + if (radix > 36 || radix <= 1) { + return 0; + } + + while (v || tp == tmp) { + i = v % radix; + v = v / radix; + if (i < 10) { + *tp++ = i + '0'; + } else { + *tp++ = i + 'a' - 10; + } + } + + sp = string; + + while (tp > tmp) { + *sp++ = *--tp; + } + *sp = 0; + + return string; } #ifdef __cplusplus diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp index 9359e745e..bd37be8f6 100644 --- a/cores/arduino/main.cpp +++ b/cores/arduino/main.cpp @@ -15,34 +15,32 @@ void start_static_threads(); #endif - // This function will be overwriten by most variants. -void __attribute__((weak))initVariant(void) { - +void __attribute__((weak)) initVariant(void) { } - int main(void) { #if (DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_USB_CDC_ACM) - Serial.begin(115200); + Serial.begin(115200); #endif - initVariant(); + initVariant(); #ifdef CONFIG_MULTITHREADING - start_static_threads(); + start_static_threads(); #endif - setup(); + setup(); - for (;;) { - loop(); - #if 0 //(DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_USB_CDC_ACM) || DT_NODE_HAS_PROP(DT_PATH(zephyr_user), serials) + for (;;) { + loop(); +#if 0 //(DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_USB_CDC_ACM) || + // DT_NODE_HAS_PROP(DT_PATH(zephyr_user), serials) if (arduino::serialEventRun) arduino::serialEventRun(); - #endif - } +#endif + } - return 0; + return 0; } #ifdef CONFIG_LLEXT @@ -50,49 +48,52 @@ LL_EXTENSION_SYMBOL(main); #endif /* These magic symbols are provided by the linker. */ -extern void (*__preinit_array_start []) (void) __attribute__((weak)); -extern void (*__preinit_array_end []) (void) __attribute__((weak)); -extern void (*__init_array_start []) (void) __attribute__((weak)); -extern void (*__init_array_end []) (void) __attribute__((weak)); - -static void __libc_init_array (void) -{ - size_t count; - size_t i; - - count = __preinit_array_end - __preinit_array_start; - for (i = 0; i < count; i++) - __preinit_array_start[i] (); - - count = __init_array_end - __init_array_start; - for (i = 0; i < count; i++) - __init_array_start[i] (); +extern void (*__preinit_array_start[])(void) __attribute__((weak)); +extern void (*__preinit_array_end[])(void) __attribute__((weak)); +extern void (*__init_array_start[])(void) __attribute__((weak)); +extern void (*__init_array_end[])(void) __attribute__((weak)); + +static void __libc_init_array(void) { + size_t count; + size_t i; + + count = __preinit_array_end - __preinit_array_start; + for (i = 0; i < count; i++) { + __preinit_array_start[i](); + } + + count = __init_array_end - __init_array_start; + for (i = 0; i < count; i++) { + __init_array_start[i](); + } } -extern "C" __attribute__((section(".entry_point"), used)) void entry_point(struct k_heap* stack, size_t stack_size) { - (void)stack; (void)stack_size; // unused - - // copy .data in the right place - // .bss should already be in the right place - // call constructors - extern uintptr_t _sidata; - extern uintptr_t _sdata; - extern uintptr_t _edata; - extern uintptr_t _sbss; - extern uintptr_t _ebss; - extern uintptr_t __heap_start; - extern uintptr_t __heap_end; - extern uintptr_t kheap_llext_heap; - extern uintptr_t kheap_llext_heap_size; - - //__asm volatile ("cpsie i"); - - printk("System Heap end: %p\n", &__heap_end); - printk("System Heap start: %p\n", &__heap_start); - printk("Sketch Heap start: %p, size %p\n", &kheap_llext_heap, &kheap_llext_heap_size); - - memcpy(&_sdata, &_sidata, (&_edata - &_sdata) * sizeof(uint32_t)); - memset(&_sbss, 0, &_ebss - &_sbss); - __libc_init_array(); - main(); +extern "C" __attribute__((section(".entry_point"), used)) void entry_point(struct k_heap *stack, + size_t stack_size) { + (void)stack; + (void)stack_size; // unused + + // copy .data in the right place + // .bss should already be in the right place + // call constructors + extern uintptr_t _sidata; + extern uintptr_t _sdata; + extern uintptr_t _edata; + extern uintptr_t _sbss; + extern uintptr_t _ebss; + extern uintptr_t __heap_start; + extern uintptr_t __heap_end; + extern uintptr_t kheap_llext_heap; + extern uintptr_t kheap_llext_heap_size; + + //__asm volatile ("cpsie i"); + + printk("System Heap end: %p\n", &__heap_end); + printk("System Heap start: %p\n", &__heap_start); + printk("Sketch Heap start: %p, size %p\n", &kheap_llext_heap, &kheap_llext_heap_size); + + memcpy(&_sdata, &_sidata, (&_edata - &_sdata) * sizeof(uint32_t)); + memset(&_sbss, 0, &_ebss - &_sbss); + __libc_init_array(); + main(); } diff --git a/cores/arduino/new.cpp b/cores/arduino/new.cpp index ed203f860..7b2a63a90 100644 --- a/cores/arduino/new.cpp +++ b/cores/arduino/new.cpp @@ -18,128 +18,141 @@ // #define NEW_TERMINATES_ON_FAILURE namespace std { - // Defined in abi.cpp - void terminate(); +// Defined in abi.cpp +void terminate(); - const nothrow_t nothrow; -} +const nothrow_t nothrow; +} // namespace std -static void * new_helper(std::size_t size) { - // Even zero-sized allocations should return a unique pointer, but - // malloc does not guarantee this - if (size == 0) - size = 1; - return malloc(size); +static void *new_helper(std::size_t size) { + // Even zero-sized allocations should return a unique pointer, but + // malloc does not guarantee this + if (size == 0) { + size = 1; + } + return malloc(size); } -void * operator new(std::size_t size) { - void *res = new_helper(size); +void *operator new(std::size_t size) { + void *res = new_helper(size); #if defined(NEW_TERMINATES_ON_FAILURE) - if (!res) - std::terminate(); + if (!res) { + std::terminate(); + } #endif - return res; + return res; } -void * operator new[](std::size_t size) { - return operator new(size); + +void *operator new[](std::size_t size) { + return operator new(size); } #if __cplusplus >= 201703L -void* operator new(std::size_t count, std::align_val_t al) { - (void)al; // unused - return operator new(count); +void *operator new(std::size_t count, std::align_val_t al) { + (void)al; // unused + return operator new(count); } -void* operator new[](std::size_t count, std::align_val_t al) { - (void)al; // unused - return operator new(count); +void *operator new[](std::size_t count, std::align_val_t al) { + (void)al; // unused + return operator new(count); } -void * operator new(std::size_t size, std::align_val_t al, const std::nothrow_t tag) noexcept { - (void)al; (void)tag; // unused +void *operator new(std::size_t size, std::align_val_t al, const std::nothrow_t tag) noexcept { + (void)al; + (void)tag; // unused #if defined(NEW_TERMINATES_ON_FAILURE) - // Cannot call throwing operator new as standard suggests, so call - // new_helper directly then - return new_helper(size); + // Cannot call throwing operator new as standard suggests, so call + // new_helper directly then + return new_helper(size); #else - return operator new(size); + return operator new(size); #endif } -void * operator new[](std::size_t size, std::align_val_t al, const std::nothrow_t& tag) noexcept { - (void)al; (void)tag; // unused +void *operator new[](std::size_t size, std::align_val_t al, const std::nothrow_t &tag) noexcept { + (void)al; + (void)tag; // unused #if defined(NEW_TERMINATES_ON_FAILURE) - // Cannot call throwing operator new[] as standard suggests, so call - // malloc directly then - return new_helper(size); + // Cannot call throwing operator new[] as standard suggests, so call + // malloc directly then + return new_helper(size); #else - return operator new[](size); + return operator new[](size); #endif } #endif -void * operator new(std::size_t size, const std::nothrow_t tag) noexcept { - (void)tag; // unused +void *operator new(std::size_t size, const std::nothrow_t tag) noexcept { + (void)tag; // unused #if defined(NEW_TERMINATES_ON_FAILURE) - // Cannot call throwing operator new as standard suggests, so call - // new_helper directly then - return new_helper(size); + // Cannot call throwing operator new as standard suggests, so call + // new_helper directly then + return new_helper(size); #else - return operator new(size); + return operator new(size); #endif } -void * operator new[](std::size_t size, const std::nothrow_t& tag) noexcept { - (void)tag; // unused + +void *operator new[](std::size_t size, const std::nothrow_t &tag) noexcept { + (void)tag; // unused #if defined(NEW_TERMINATES_ON_FAILURE) - // Cannot call throwing operator new[] as standard suggests, so call - // malloc directly then - return new_helper(size); + // Cannot call throwing operator new[] as standard suggests, so call + // malloc directly then + return new_helper(size); #else - return operator new[](size); + return operator new[](size); #endif } -void * operator new(std::size_t size, void *place) noexcept { - // Nothing to do - (void)size; // unused - return place; +void *operator new(std::size_t size, void *place) noexcept { + // Nothing to do + (void)size; // unused + return place; } -void * operator new[](std::size_t size, void *place) noexcept { - return operator new(size, place); + +void *operator new[](std::size_t size, void *place) noexcept { + return operator new(size, place); } -void operator delete(void * ptr) noexcept { - free(ptr); +void operator delete(void *ptr) noexcept { + free(ptr); } -void operator delete[](void * ptr) noexcept { - operator delete(ptr); + +void operator delete[](void *ptr) noexcept { + operator delete(ptr); } #if __cplusplus >= 201402L -void operator delete(void* ptr, std::size_t size) noexcept { - (void)size; // unused - operator delete(ptr); +void operator delete(void *ptr, std::size_t size) noexcept { + (void)size; // unused + operator delete(ptr); } -void operator delete[](void * ptr, std::size_t size) noexcept { - (void)size; // unused - operator delete[](ptr); + +void operator delete[](void *ptr, std::size_t size) noexcept { + (void)size; // unused + operator delete[](ptr); } #endif // __cplusplus >= 201402L -void operator delete(void* ptr, const std::nothrow_t& tag) noexcept { - (void)tag; // unused - operator delete(ptr); +void operator delete(void *ptr, const std::nothrow_t &tag) noexcept { + (void)tag; // unused + operator delete(ptr); } -void operator delete[](void* ptr, const std::nothrow_t& tag) noexcept { - (void)tag; // unused - operator delete[](ptr); + +void operator delete[](void *ptr, const std::nothrow_t &tag) noexcept { + (void)tag; // unused + operator delete[](ptr); } -void operator delete(void* ptr, void* place) noexcept { - (void)ptr; (void)place; // unused - // Nothing to do +void operator delete(void *ptr, void *place) noexcept { + (void)ptr; + (void)place; // unused + // Nothing to do } -void operator delete[](void* ptr, void* place) noexcept { - (void)ptr; (void)place; // unused - // Nothing to do + +void operator delete[](void *ptr, void *place) noexcept { + (void)ptr; + (void)place; // unused + // Nothing to do } diff --git a/cores/arduino/overloads.h b/cores/arduino/overloads.h index 5670b2701..a96653d7f 100644 --- a/cores/arduino/overloads.h +++ b/cores/arduino/overloads.h @@ -6,4 +6,4 @@ void analogWrite(enum dacPins pinNumber, int value); // In c++ mode, we also provide analogReadResolution and analogWriteResolution getters int analogReadResolution(); -int analogWriteResolution(); \ No newline at end of file +int analogWriteResolution(); diff --git a/cores/arduino/threads.cpp b/cores/arduino/threads.cpp index 99a4a141c..f34a7f6d9 100644 --- a/cores/arduino/threads.cpp +++ b/cores/arduino/threads.cpp @@ -8,25 +8,26 @@ #ifdef CONFIG_MULTITHREADING void start_static_threads() { - #define _FOREACH_STATIC_THREAD(thread_data) \ - STRUCT_SECTION_FOREACH(_static_thread_data, thread_data) +#define _FOREACH_STATIC_THREAD(thread_data) \ + STRUCT_SECTION_FOREACH (_static_thread_data, thread_data) - _FOREACH_STATIC_THREAD(thread_data) { - k_thread_create(thread_data->init_thread, thread_data->init_stack, thread_data->init_stack_size, thread_data->init_entry, - thread_data->init_p1, thread_data->init_p2, thread_data->init_p3, thread_data->init_prio, - thread_data->init_options, thread_data->init_delay); - k_thread_name_set(thread_data->init_thread, thread_data->init_name); - thread_data->init_thread->init_data = thread_data; - } + _FOREACH_STATIC_THREAD(thread_data) { + k_thread_create(thread_data->init_thread, thread_data->init_stack, + thread_data->init_stack_size, thread_data->init_entry, thread_data->init_p1, + thread_data->init_p2, thread_data->init_p3, thread_data->init_prio, + thread_data->init_options, thread_data->init_delay); + k_thread_name_set(thread_data->init_thread, thread_data->init_name); + thread_data->init_thread->init_data = thread_data; + } - /* - * Take a sched lock to prevent them from running - * until they are all started. - */ - k_sched_lock(); - _FOREACH_STATIC_THREAD(thread_data) { - k_thread_start(thread_data->init_thread); - } - k_sched_unlock(); + /* + * Take a sched lock to prevent them from running + * until they are all started. + */ + k_sched_lock(); + _FOREACH_STATIC_THREAD(thread_data) { + k_thread_start(thread_data->init_thread); + } + k_sched_unlock(); } -#endif \ No newline at end of file +#endif diff --git a/cores/arduino/usb_device_descriptor.c b/cores/arduino/usb_device_descriptor.c index 1c0eb887d..396379370 100644 --- a/cores/arduino/usb_device_descriptor.c +++ b/cores/arduino/usb_device_descriptor.c @@ -21,9 +21,8 @@ static const char *const blocklist[] = { }; /* doc device instantiation start */ -USBD_DEVICE_DEFINE(usbd, - DEVICE_DT_GET(DT_NODELABEL(zephyr_udc0)), - CONFIG_USB_DEVICE_VID, CONFIG_USB_DEVICE_PID); +USBD_DEVICE_DEFINE(usbd, DEVICE_DT_GET(DT_NODELABEL(zephyr_udc0)), CONFIG_USB_DEVICE_VID, + CONFIG_USB_DEVICE_PID); /* doc device instantiation end */ /* doc string instantiation start */ @@ -40,14 +39,10 @@ USBD_DESC_CONFIG_DEFINE(hs_cfg_desc, "HS Configuration"); static const uint8_t attributes = 0; /* Full speed configuration */ -USBD_CONFIGURATION_DEFINE(sample_fs_config, - attributes, - 250, &fs_cfg_desc); +USBD_CONFIGURATION_DEFINE(sample_fs_config, attributes, 250, &fs_cfg_desc); /* High speed configuration */ -USBD_CONFIGURATION_DEFINE(sample_hs_config, - attributes, - 250, &hs_cfg_desc); +USBD_CONFIGURATION_DEFINE(sample_hs_config, attributes, 250, &hs_cfg_desc); /* doc configuration instantiation end */ /* @@ -63,28 +58,22 @@ static const struct usb_bos_capability_lpm bos_cap_lpm = { USBD_DESC_BOS_DEFINE(sample_usbext, sizeof(bos_cap_lpm), &bos_cap_lpm); -static void sample_fix_code_triple(struct usbd_context *uds_ctx, - const enum usbd_speed speed) -{ +static void sample_fix_code_triple(struct usbd_context *uds_ctx, const enum usbd_speed speed) { /* Always use class code information from Interface Descriptors */ - if (IS_ENABLED(CONFIG_USBD_CDC_ACM_CLASS) || - IS_ENABLED(CONFIG_USBD_CDC_ECM_CLASS) || - IS_ENABLED(CONFIG_USBD_CDC_NCM_CLASS) || - IS_ENABLED(CONFIG_USBD_AUDIO2_CLASS)) { + if (IS_ENABLED(CONFIG_USBD_CDC_ACM_CLASS) || IS_ENABLED(CONFIG_USBD_CDC_ECM_CLASS) || + IS_ENABLED(CONFIG_USBD_CDC_NCM_CLASS) || IS_ENABLED(CONFIG_USBD_AUDIO2_CLASS)) { /* * Class with multiple interfaces have an Interface * Association Descriptor available, use an appropriate triple * to indicate it. */ - usbd_device_set_code_triple(uds_ctx, speed, - USB_BCC_MISCELLANEOUS, 0x02, 0x01); + usbd_device_set_code_triple(uds_ctx, speed, USB_BCC_MISCELLANEOUS, 0x02, 0x01); } else { usbd_device_set_code_triple(uds_ctx, speed, 0, 0, 0); } } -struct usbd_context *usbd_setup_device(usbd_msg_cb_t msg_cb) -{ +struct usbd_context *usbd_setup_device(usbd_msg_cb_t msg_cb) { int err; /* doc add string descriptor start */ @@ -110,14 +99,12 @@ struct usbd_context *usbd_setup_device(usbd_msg_cb_t msg_cb) /* doc add string descriptor end */ if (usbd_caps_speed(&usbd) == USBD_SPEED_HS) { - err = usbd_add_configuration(&usbd, USBD_SPEED_HS, - &sample_hs_config); + err = usbd_add_configuration(&usbd, USBD_SPEED_HS, &sample_hs_config); if (err) { return NULL; } - err = usbd_register_all_classes(&usbd, USBD_SPEED_HS, 1, - blocklist); + err = usbd_register_all_classes(&usbd, USBD_SPEED_HS, 1, blocklist); if (err) { return NULL; } @@ -126,8 +113,7 @@ struct usbd_context *usbd_setup_device(usbd_msg_cb_t msg_cb) } /* doc configuration register start */ - err = usbd_add_configuration(&usbd, USBD_SPEED_FS, - &sample_fs_config); + err = usbd_add_configuration(&usbd, USBD_SPEED_FS, &sample_fs_config); if (err) { return NULL; } @@ -164,8 +150,7 @@ struct usbd_context *usbd_setup_device(usbd_msg_cb_t msg_cb) return &usbd; } -struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb) -{ +struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb) { int err; if (usbd_setup_device(msg_cb) == NULL) { @@ -182,4 +167,4 @@ struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb) return &usbd; } -#endif \ No newline at end of file +#endif diff --git a/cores/arduino/zephyrCommon.cpp b/cores/arduino/zephyrCommon.cpp index f0b6e8ba5..ca61ea577 100644 --- a/cores/arduino/zephyrCommon.cpp +++ b/cores/arduino/zephyrCommon.cpp @@ -7,7 +7,8 @@ #include #include "zephyrInternal.h" -static const struct gpio_dt_spec arduino_pins[] = {DT_FOREACH_PROP_ELEM_SEP( +static const struct gpio_dt_spec arduino_pins[] = { + DT_FOREACH_PROP_ELEM_SEP( DT_PATH(zephyr_user), digital_pin_gpios, GPIO_DT_SPEC_GET_BY_IDX, (, ))}; namespace { @@ -18,57 +19,49 @@ namespace { * Calculate GPIO ports/pins number statically from devicetree configuration */ -template constexpr N sum_of_list(const N sum, const Head &head) -{ - return sum + head; +template constexpr N sum_of_list(const N sum, const Head &head) { + return sum + head; } template -constexpr N sum_of_list(const N sum, const Head &head, const Tail &...tail) -{ - return sum_of_list(sum + head, tail...); +constexpr N sum_of_list(const N sum, const Head &head, const Tail &...tail) { + return sum_of_list(sum + head, tail...); } -template constexpr N max_in_list(const N max, const Head &head) -{ - return (max >= head) ? max : head; +template constexpr N max_in_list(const N max, const Head &head) { + return (max >= head) ? max : head; } template -constexpr N max_in_list(const N max, const Head &head, const Tail &...tail) -{ - return max_in_list((max >= head) ? max : head, tail...); +constexpr N max_in_list(const N max, const Head &head, const Tail &...tail) { + return max_in_list((max >= head) ? max : head, tail...); } template constexpr size_t is_first_appearance(const size_t &idx, const size_t &at, const size_t &found, - const Query &query, const Head &head) -{ - return ((found == ((size_t)-1)) && (query == head) && (idx == at)) ? 1 : 0; + const Query &query, const Head &head) { + return ((found == ((size_t)-1)) && (query == head) && (idx == at)) ? 1 : 0; } template constexpr size_t is_first_appearance(const size_t &idx, const size_t &at, const size_t &found, - const Query &query, const Head &head, - const Tail &...tail) -{ - return ((found == ((size_t)-1)) && (query == head) && (idx == at)) - ? 1 - : is_first_appearance(idx + 1, at, (query == head ? idx : found), query, - tail...); + const Query &query, const Head &head, const Tail &...tail) { + return ((found == ((size_t)-1)) && (query == head) && (idx == at)) ? + 1 : + is_first_appearance(idx + 1, at, (query == head ? idx : found), query, tail...); } #define GET_DEVICE_VARGS(n, p, i, _) DEVICE_DT_GET(DT_GPIO_CTLR_BY_IDX(n, p, i)) #define FIRST_APPEARANCE(n, p, i) \ - is_first_appearance(0, i, ((size_t)-1), DEVICE_DT_GET(DT_GPIO_CTLR_BY_IDX(n, p, i)), \ - DT_FOREACH_PROP_ELEM_SEP_VARGS(n, p, GET_DEVICE_VARGS, (, ), 0)) -const int port_num = - sum_of_list(0, DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, + is_first_appearance(0, i, ((size_t)-1), DEVICE_DT_GET(DT_GPIO_CTLR_BY_IDX(n, p, i)), \ + DT_FOREACH_PROP_ELEM_SEP_VARGS(n, p, GET_DEVICE_VARGS, (, ), 0)) +const int port_num = sum_of_list( + 0, DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, FIRST_APPEARANCE, (, ))); #define GPIO_NGPIOS(n, p, i) DT_PROP(DT_GPIO_CTLR_BY_IDX(n, p, i), ngpios) const int max_ngpios = max_in_list( - 0, DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, GPIO_NGPIOS, (, ))); + 0, DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, GPIO_NGPIOS, (, ))); #else @@ -82,137 +75,132 @@ const int max_ngpios = 0; */ struct arduino_callback { - voidFuncPtr handler; - bool enabled; + voidFuncPtr handler; + bool enabled; }; struct gpio_port_callback { - struct gpio_callback callback; - struct arduino_callback handlers[max_ngpios]; - gpio_port_pins_t pins; - const struct device *dev; + struct gpio_callback callback; + struct arduino_callback handlers[max_ngpios]; + gpio_port_pins_t pins; + const struct device *dev; } port_callback[port_num] = {0}; -struct gpio_port_callback *find_gpio_port_callback(const struct device *dev) -{ - for (size_t i = 0; i < ARRAY_SIZE(port_callback); i++) { - if (port_callback[i].dev == dev) { - return &port_callback[i]; - } - if (port_callback[i].dev == nullptr) { - port_callback[i].dev = dev; - return &port_callback[i]; - } - } +struct gpio_port_callback *find_gpio_port_callback(const struct device *dev) { + for (size_t i = 0; i < ARRAY_SIZE(port_callback); i++) { + if (port_callback[i].dev == dev) { + return &port_callback[i]; + } + if (port_callback[i].dev == nullptr) { + port_callback[i].dev = dev; + return &port_callback[i]; + } + } - return nullptr; + return nullptr; } -void setInterruptHandler(pin_size_t pinNumber, voidFuncPtr func) -{ - struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); +void setInterruptHandler(pin_size_t pinNumber, voidFuncPtr func) { + struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); - if (pcb) { - pcb->handlers[BIT(arduino_pins[pinNumber].pin)].handler = func; - } + if (pcb) { + pcb->handlers[BIT(arduino_pins[pinNumber].pin)].handler = func; + } } -void handleGpioCallback(const struct device *port, struct gpio_callback *cb, uint32_t pins) -{ - (void)port; // unused - struct gpio_port_callback *pcb = (struct gpio_port_callback *)cb; +void handleGpioCallback(const struct device *port, struct gpio_callback *cb, uint32_t pins) { + (void)port; // unused + struct gpio_port_callback *pcb = (struct gpio_port_callback *)cb; - for (uint32_t i = 0; i < max_ngpios; i++) { - if (pins & BIT(i) && pcb->handlers[BIT(i)].enabled) { - pcb->handlers[BIT(i)].handler(); - } - } + for (uint32_t i = 0; i < max_ngpios; i++) { + if (pins & BIT(i) && pcb->handlers[BIT(i)].enabled) { + pcb->handlers[BIT(i)].handler(); + } + } } #ifdef CONFIG_PWM -#define PWM_DT_SPEC(n,p,i) PWM_DT_SPEC_GET_BY_IDX(n, i), -#define PWM_PINS(n, p, i) \ - DIGITAL_PIN_GPIOS_FIND_PIN( \ - DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), p, i)), \ - DT_PHA_BY_IDX(DT_PATH(zephyr_user), p, i, pin)), +#define PWM_DT_SPEC(n, p, i) PWM_DT_SPEC_GET_BY_IDX(n, i), +#define PWM_PINS(n, p, i) \ + DIGITAL_PIN_GPIOS_FIND_PIN(DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), p, i)), \ + DT_PHA_BY_IDX(DT_PATH(zephyr_user), p, i, pin)), -const struct pwm_dt_spec arduino_pwm[] = - { DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), pwms, PWM_DT_SPEC) }; +const struct pwm_dt_spec arduino_pwm[] = { + DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), pwms, PWM_DT_SPEC)}; /* pwm-pins node provides a mapping digital pin numbers to pwm channels */ -const pin_size_t arduino_pwm_pins[] = - { DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), pwm_pin_gpios, PWM_PINS) }; +const pin_size_t arduino_pwm_pins[] = { + DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), pwm_pin_gpios, PWM_PINS)}; size_t pwm_pin_index(pin_size_t pinNumber) { - for(size_t i=0; i 0) { - timer = &arduino_pin_timers_timeout[pinNumber]; - k_timer_init(timer, tone_timeout_cb, NULL); - k_timer_user_data_set(timer, (void*)(uintptr_t)pinNumber); - k_timer_start(timer, K_MSEC(duration), K_NO_WAIT); - } + if (duration > 0) { + timer = &arduino_pin_timers_timeout[pinNumber]; + k_timer_init(timer, tone_timeout_cb, NULL); + k_timer_user_data_set(timer, (void *)(uintptr_t)pinNumber); + k_timer_start(timer, K_MSEC(duration), K_NO_WAIT); + } } void noTone(pin_size_t pinNumber) { - k_timer_stop(&arduino_pin_timers[pinNumber]); - gpio_pin_set_dt(&arduino_pins[pinNumber], 0); + k_timer_stop(&arduino_pin_timers[pinNumber]); + gpio_pin_set_dt(&arduino_pins[pinNumber], 0); } -void delay(unsigned long ms) { k_sleep(K_MSEC(ms)); } +void delay(unsigned long ms) { + k_sleep(K_MSEC(ms)); +} -void delayMicroseconds(unsigned int us) { k_sleep(K_USEC(us)); } +void delayMicroseconds(unsigned int us) { + k_sleep(K_USEC(us)); +} unsigned long micros(void) { #ifdef CONFIG_TIMER_HAS_64BIT_CYCLE_COUNTER - return k_cyc_to_us_floor32(k_cycle_get_64()); + return k_cyc_to_us_floor32(k_cycle_get_64()); #else - return k_cyc_to_us_floor32(k_cycle_get_32()); + return k_cyc_to_us_floor32(k_cycle_get_32()); #endif - } +} -unsigned long millis(void) { return k_uptime_get_32(); } +unsigned long millis(void) { + return k_uptime_get_32(); +} #if defined(CONFIG_DAC) || defined(CONFIG_PWM) static int _analog_write_resolution = 8; + void analogWriteResolution(int bits) { - _analog_write_resolution = bits; + _analog_write_resolution = bits; } + int analogWriteResolution() { - return _analog_write_resolution; + return _analog_write_resolution; } #endif #ifdef CONFIG_PWM -void analogWrite(pin_size_t pinNumber, int value) -{ - size_t idx = pwm_pin_index(pinNumber); +void analogWrite(pin_size_t pinNumber, int value) { + size_t idx = pwm_pin_index(pinNumber); - if (idx >= ARRAY_SIZE(arduino_pwm) ) { - return; - } + if (idx >= ARRAY_SIZE(arduino_pwm)) { + return; + } - if (!pwm_is_ready_dt(&arduino_pwm[idx])) { - return; - } + if (!pwm_is_ready_dt(&arduino_pwm[idx])) { + return; + } - value = map(value, 0, 1 << _analog_write_resolution, 0, arduino_pwm[idx].period); + value = map(value, 0, 1 << _analog_write_resolution, 0, arduino_pwm[idx].period); - if (((uint32_t)value) > arduino_pwm[idx].period) { - value = arduino_pwm[idx].period; - } else if (value < 0) { - value = 0; - } + if (((uint32_t)value) > arduino_pwm[idx].period) { + value = arduino_pwm[idx].period; + } else if (value < 0) { + value = 0; + } - /* - * A duty ratio determines by the period value defined in dts - * and the value arguments. So usually the period value sets as 255. - */ - (void)pwm_set_pulse_dt(&arduino_pwm[idx], value); + /* + * A duty ratio determines by the period value defined in dts + * and the value arguments. So usually the period value sets as 255. + */ + (void)pwm_set_pulse_dt(&arduino_pwm[idx], value); } #endif #ifdef CONFIG_DAC -void analogWrite(enum dacPins dacName, int value) -{ - if (dacName >= NUM_OF_DACS) { - return; - } +void analogWrite(enum dacPins dacName, int value) { + if (dacName >= NUM_OF_DACS) { + return; + } - dac_channel_setup(dac_dev, &dac_ch_cfg[dacName]); + dac_channel_setup(dac_dev, &dac_ch_cfg[dacName]); - const int max_dac_value = 1U << dac_ch_cfg[dacName].resolution; - dac_write_value(dac_dev, dac_ch_cfg[dacName].channel_id, map(value, 0, 1 << _analog_write_resolution, 0, max_dac_value)); + const int max_dac_value = 1U << dac_ch_cfg[dacName].resolution; + dac_write_value(dac_dev, dac_ch_cfg[dacName].channel_id, + map(value, 0, 1 << _analog_write_resolution, 0, max_dac_value)); } #endif - #ifdef CONFIG_ADC -void analogReference(uint8_t mode) -{ - /* - * The Arduino API not clearly defined what means of - * the mode argument of analogReference(). - * Treat the value as equivalent to zephyr's adc_reference. - */ - for (size_t i=0; i(mode); - } +void analogReference(uint8_t mode) { + /* + * The Arduino API not clearly defined what means of + * the mode argument of analogReference(). + * Treat the value as equivalent to zephyr's adc_reference. + */ + for (size_t i = 0; i < ARRAY_SIZE(channel_cfg); i++) { + channel_cfg[i].reference = static_cast(mode); + } } // Note: We can not update the arduino_adc structure as it is read only... static int read_resolution = 10; -void analogReadResolution(int bits) -{ - read_resolution = bits; +void analogReadResolution(int bits) { + read_resolution = bits; } -int analogReadResolution() -{ - return read_resolution; +int analogReadResolution() { + return read_resolution; } +int analogRead(pin_size_t pinNumber) { + int err; + uint16_t buf; + struct adc_sequence seq = {.buffer = &buf, .buffer_size = sizeof(buf)}; + size_t idx = analog_pin_index(pinNumber); -int analogRead(pin_size_t pinNumber) -{ - int err; - uint16_t buf; - struct adc_sequence seq = { .buffer = &buf, .buffer_size = sizeof(buf) }; - size_t idx = analog_pin_index(pinNumber); + if (idx >= ARRAY_SIZE(arduino_adc)) { + return -EINVAL; + } - if (idx >= ARRAY_SIZE(arduino_adc) ) { - return -EINVAL; - } + /* + * ADC that is on MCU supported by Zephyr exists + * only 16bit resolution, currently. + */ + if (arduino_adc[idx].resolution > 16) { + return -ENOTSUP; + } - /* - * ADC that is on MCU supported by Zephyr exists - * only 16bit resolution, currently. - */ - if (arduino_adc[idx].resolution > 16) { - return -ENOTSUP; - } + err = adc_channel_setup(arduino_adc[idx].dev, &arduino_adc[idx].channel_cfg); + if (err < 0) { + return err; + } - err = adc_channel_setup(arduino_adc[idx].dev, &arduino_adc[idx].channel_cfg); - if (err < 0) { - return err; - } + seq.channels = BIT(arduino_adc[idx].channel_id); + seq.resolution = arduino_adc[idx].resolution; + seq.oversampling = arduino_adc[idx].oversampling; - seq.channels = BIT(arduino_adc[idx].channel_id); - seq.resolution = arduino_adc[idx].resolution; - seq.oversampling = arduino_adc[idx].oversampling; + err = adc_read(arduino_adc[idx].dev, &seq); + if (err < 0) { + return err; + } - err = adc_read(arduino_adc[idx].dev, &seq); - if (err < 0) { - return err; - } - - /* - * If necessary map the return value to the - * number of bits the user has asked for - */ - if (read_resolution == seq.resolution) return buf; - if (read_resolution < seq.resolution) return buf >> (seq.resolution - read_resolution); - return buf << (read_resolution - seq.resolution) ; + /* + * If necessary map the return value to the + * number of bits the user has asked for + */ + if (read_resolution == seq.resolution) { + return buf; + } + if (read_resolution < seq.resolution) { + return buf >> (seq.resolution - read_resolution); + } + return buf << (read_resolution - seq.resolution); } #endif -void attachInterrupt(pin_size_t pinNumber, voidFuncPtr callback, PinStatus pinStatus) -{ - struct gpio_port_callback *pcb; - gpio_flags_t intmode = 0; +void attachInterrupt(pin_size_t pinNumber, voidFuncPtr callback, PinStatus pinStatus) { + struct gpio_port_callback *pcb; + gpio_flags_t intmode = 0; - if (!callback) { - return; - } + if (!callback) { + return; + } - if (pinStatus == LOW) { - intmode |= GPIO_INT_LEVEL_LOW; - } else if (pinStatus == HIGH) { - intmode |= GPIO_INT_LEVEL_HIGH; - } else if (pinStatus == CHANGE) { - intmode |= GPIO_INT_EDGE_BOTH; - } else if (pinStatus == FALLING) { - intmode |= GPIO_INT_EDGE_FALLING; - } else if (pinStatus == RISING) { - intmode |= GPIO_INT_EDGE_RISING; - } else { - return; - } + if (pinStatus == LOW) { + intmode |= GPIO_INT_LEVEL_LOW; + } else if (pinStatus == HIGH) { + intmode |= GPIO_INT_LEVEL_HIGH; + } else if (pinStatus == CHANGE) { + intmode |= GPIO_INT_EDGE_BOTH; + } else if (pinStatus == FALLING) { + intmode |= GPIO_INT_EDGE_FALLING; + } else if (pinStatus == RISING) { + intmode |= GPIO_INT_EDGE_RISING; + } else { + return; + } - pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); - __ASSERT(pcb != nullptr, "gpio_port_callback not found"); + pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); + __ASSERT(pcb != nullptr, "gpio_port_callback not found"); - pcb->pins |= BIT(arduino_pins[pinNumber].pin); - setInterruptHandler(pinNumber, callback); - enableInterrupt(pinNumber); + pcb->pins |= BIT(arduino_pins[pinNumber].pin); + setInterruptHandler(pinNumber, callback); + enableInterrupt(pinNumber); - gpio_pin_interrupt_configure(arduino_pins[pinNumber].port, arduino_pins[pinNumber].pin, intmode); - gpio_init_callback(&pcb->callback, handleGpioCallback, pcb->pins); - gpio_add_callback(arduino_pins[pinNumber].port, &pcb->callback); + gpio_pin_interrupt_configure(arduino_pins[pinNumber].port, arduino_pins[pinNumber].pin, + intmode); + gpio_init_callback(&pcb->callback, handleGpioCallback, pcb->pins); + gpio_add_callback(arduino_pins[pinNumber].port, &pcb->callback); } -void detachInterrupt(pin_size_t pinNumber) -{ - setInterruptHandler(pinNumber, nullptr); - disableInterrupt(pinNumber); +void detachInterrupt(pin_size_t pinNumber) { + setInterruptHandler(pinNumber, nullptr); + disableInterrupt(pinNumber); } #ifndef CONFIG_MINIMAL_LIBC_RAND @@ -493,80 +483,82 @@ long random(long max) { #ifdef CONFIG_GPIO_GET_DIRECTION unsigned long pulseIn(pin_size_t pinNumber, uint8_t state, unsigned long timeout) { - struct k_timer timer; - int64_t start, end, delta = 0; - const struct gpio_dt_spec *spec = &arduino_pins[pinNumber]; - - k_timer_init(&timer, NULL, NULL); - k_timer_start(&timer, K_MSEC(timeout), K_NO_WAIT); - - if (!gpio_is_ready_dt(spec)) { - goto cleanup; - } - - if (!gpio_pin_is_input_dt(spec)) { - goto cleanup; - } - - while(gpio_pin_get_dt(spec) == state && k_timer_status_get(&timer) == 0); - if (k_timer_status_get(&timer) > 0) { - goto cleanup; - } - - while(gpio_pin_get_dt(spec) != state && k_timer_status_get(&timer) == 0); - if (k_timer_status_get(&timer) > 0) { - goto cleanup; - } - - start = k_uptime_ticks(); - while(gpio_pin_get_dt(spec) == state && k_timer_status_get(&timer) == 0); - if (k_timer_status_get(&timer) > 0) { - goto cleanup; - } - end = k_uptime_ticks(); - - delta = k_ticks_to_us_floor64(end - start); + struct k_timer timer; + int64_t start, end, delta = 0; + const struct gpio_dt_spec *spec = &arduino_pins[pinNumber]; + + k_timer_init(&timer, NULL, NULL); + k_timer_start(&timer, K_MSEC(timeout), K_NO_WAIT); + + if (!gpio_is_ready_dt(spec)) { + goto cleanup; + } + + if (!gpio_pin_is_input_dt(spec)) { + goto cleanup; + } + + while (gpio_pin_get_dt(spec) == state && k_timer_status_get(&timer) == 0) + ; + if (k_timer_status_get(&timer) > 0) { + goto cleanup; + } + + while (gpio_pin_get_dt(spec) != state && k_timer_status_get(&timer) == 0) + ; + if (k_timer_status_get(&timer) > 0) { + goto cleanup; + } + + start = k_uptime_ticks(); + while (gpio_pin_get_dt(spec) == state && k_timer_status_get(&timer) == 0) + ; + if (k_timer_status_get(&timer) > 0) { + goto cleanup; + } + end = k_uptime_ticks(); + + delta = k_ticks_to_us_floor64(end - start); cleanup: - k_timer_stop(&timer); - return (unsigned long)delta; + k_timer_stop(&timer); + return (unsigned long)delta; } #endif // CONFIG_GPIO_GET_DIRECTION void enableInterrupt(pin_size_t pinNumber) { - struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); + struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); - if (pcb) { - pcb->handlers[BIT(arduino_pins[pinNumber].pin)].enabled = true; - } + if (pcb) { + pcb->handlers[BIT(arduino_pins[pinNumber].pin)].enabled = true; + } } void disableInterrupt(pin_size_t pinNumber) { - struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); + struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); - if (pcb) { - pcb->handlers[BIT(arduino_pins[pinNumber].pin)].enabled = false; - } + if (pcb) { + pcb->handlers[BIT(arduino_pins[pinNumber].pin)].enabled = false; + } } void interrupts(void) { - if (interrupts_disabled) { - irq_unlock(irq_key); - interrupts_disabled = false; - } + if (interrupts_disabled) { + irq_unlock(irq_key); + interrupts_disabled = false; + } } void noInterrupts(void) { - if (!interrupts_disabled) { - irq_key = irq_lock(); - interrupts_disabled = true; - } + if (!interrupts_disabled) { + irq_key = irq_lock(); + interrupts_disabled = true; + } } int digitalPinToInterrupt(pin_size_t pin) { - struct gpio_port_callback *pcb = - find_gpio_port_callback(arduino_pins[pin].port); + struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pin].port); - return (pcb) ? pin : -1; + return (pcb) ? pin : -1; } diff --git a/cores/arduino/zephyrSerial.cpp b/cores/arduino/zephyrSerial.cpp index d2b44b511..2ebece7b9 100644 --- a/cores/arduino/zephyrSerial.cpp +++ b/cores/arduino/zephyrSerial.cpp @@ -11,11 +11,9 @@ #include #include -namespace -{ +namespace { -enum uart_config_parity conf_parity(uint16_t conf) -{ +enum uart_config_parity conf_parity(uint16_t conf) { switch (conf & SERIAL_PARITY_MASK) { case SERIAL_PARITY_EVEN: return UART_CFG_PARITY_EVEN; @@ -26,8 +24,7 @@ enum uart_config_parity conf_parity(uint16_t conf) } } -enum uart_config_stop_bits conf_stop_bits(uint16_t conf) -{ +enum uart_config_stop_bits conf_stop_bits(uint16_t conf) { switch (conf & SERIAL_STOP_BIT_MASK) { case SERIAL_STOP_BIT_1_5: return UART_CFG_STOP_BITS_1_5; @@ -38,8 +35,7 @@ enum uart_config_stop_bits conf_stop_bits(uint16_t conf) } } -enum uart_config_data_bits conf_data_bits(uint16_t conf) -{ +enum uart_config_data_bits conf_data_bits(uint16_t conf) { switch (conf & SERIAL_DATA_MASK) { case SERIAL_DATA_5: return UART_CFG_DATA_BITS_5; @@ -54,8 +50,7 @@ enum uart_config_data_bits conf_data_bits(uint16_t conf) } // anonymous namespace -void arduino::ZephyrSerial::begin(unsigned long baud, uint16_t conf) -{ +void arduino::ZephyrSerial::begin(unsigned long baud, uint16_t conf) { struct uart_config config = { .baudrate = baud, .parity = conf_parity(conf), @@ -73,8 +68,7 @@ void arduino::ZephyrSerial::begin(unsigned long baud, uint16_t conf) uart_irq_rx_enable(uart); } -void arduino::ZephyrSerial::IrqHandler() -{ +void arduino::ZephyrSerial::IrqHandler() { uint8_t buf[8]; int length; int ret = 0; @@ -114,14 +108,12 @@ void arduino::ZephyrSerial::IrqHandler() k_sem_give(&tx.sem); } -void arduino::ZephyrSerial::IrqDispatch(const struct device *dev, void *data) -{ +void arduino::ZephyrSerial::IrqDispatch(const struct device *dev, void *data) { (void)dev; // unused reinterpret_cast(data)->IrqHandler(); } -int arduino::ZephyrSerial::available() -{ +int arduino::ZephyrSerial::available() { int ret; k_sem_take(&rx.sem, K_FOREVER); @@ -131,8 +123,7 @@ int arduino::ZephyrSerial::available() return ret; } -int arduino::ZephyrSerial::availableForWrite() -{ +int arduino::ZephyrSerial::availableForWrite() { int ret; k_sem_take(&rx.sem, K_FOREVER); @@ -142,35 +133,32 @@ int arduino::ZephyrSerial::availableForWrite() return ret; } -int arduino::ZephyrSerial::peek() -{ +int arduino::ZephyrSerial::peek() { uint8_t data; k_sem_take(&rx.sem, K_FOREVER); uint32_t cb_ret = ring_buf_peek(&rx.ringbuf, &data, 1); k_sem_give(&rx.sem); - return cb_ret? data : -1; + return cb_ret ? data : -1; } -int arduino::ZephyrSerial::read() -{ +int arduino::ZephyrSerial::read() { uint8_t data; k_sem_take(&rx.sem, K_FOREVER); uint32_t cb_ret = ring_buf_get(&rx.ringbuf, &data, 1); k_sem_give(&rx.sem); - return cb_ret? data : -1; + return cb_ret ? data : -1; } -size_t arduino::ZephyrSerial::write(const uint8_t *buffer, size_t size) -{ +size_t arduino::ZephyrSerial::write(const uint8_t *buffer, size_t size) { size_t idx = 0; while (1) { k_sem_take(&tx.sem, K_FOREVER); - auto ret = ring_buf_put(&tx.ringbuf, &buffer[idx], size-idx); + auto ret = ring_buf_put(&tx.ringbuf, &buffer[idx], size - idx); k_sem_give(&tx.sem); if (ret < 0) { return 0; @@ -194,7 +182,7 @@ void arduino::ZephyrSerial::flush() { while (ring_buf_size_get(&tx.ringbuf) > 0) { k_yield(); } - while (uart_irq_tx_complete(uart) == 0){ + while (uart_irq_tx_complete(uart) == 0) { k_yield(); } } @@ -206,9 +194,11 @@ void arduino::ZephyrSerial::flush() { #endif #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), serials) -#if !(DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) +#if !(DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && \ + (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) // If CDC USB, use that object as Serial (and SerialUSB) -arduino::ZephyrSerial Serial(DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), serials, FIRST_UART_INDEX))); +arduino::ZephyrSerial + Serial(DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), serials, FIRST_UART_INDEX))); #endif #if (DT_PROP_LEN(DT_PATH(zephyr_user), serials) > 1) #define ARDUINO_SERIAL_DEFINED_0 1 @@ -220,13 +210,17 @@ arduino::ZephyrSerial Serial(DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user COND_CODE_1(ARDUINO_SERIAL_DEFINED_##i, (DECL_SERIAL_0(n, p, i)), (DECL_SERIAL_N(n, p, i))) #define CALL_EVENT_0(n, p, i) -#define CALL_EVENT_N(n, p, i) if (_CONCAT(Serial, i).available()) _CONCAT(_CONCAT(serial, i), Event)(); -#define CALL_SERIALEVENT_N(n, p, i) \ +#define CALL_EVENT_N(n, p, i) \ + if (_CONCAT(Serial, i).available()) \ + _CONCAT(_CONCAT(serial, i), Event)(); +#define CALL_SERIALEVENT_N(n, p, i) \ COND_CODE_1(ARDUINO_SERIAL_DEFINED_##i, (CALL_EVENT_0(n, p, i)), (CALL_EVENT_N(n, p, i))); #define DECL_EVENT_0(n, p, i) -#define DECL_EVENT_N(n, p, i) __attribute__((weak)) void serial##i##Event() { } -#define DECLARE_SERIALEVENT_N(n, p, i) \ +#define DECL_EVENT_N(n, p, i) \ + __attribute__((weak)) void serial##i##Event() { \ + } +#define DECLARE_SERIALEVENT_N(n, p, i) \ COND_CODE_1(ARDUINO_SERIAL_DEFINED_##i, (DECL_EVENT_0(n, p, i)), (DECL_EVENT_N(n, p, i))); DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), serials, DECLARE_SERIAL_N) @@ -238,15 +232,16 @@ arduino::ZephyrSerial Serial(DEVICE_DT_GET(DT_NODELABEL(arduino_serial))); arduino::ZephyrSerialStub Serial; #endif - -__attribute__((weak)) void serialEvent() { } +__attribute__((weak)) void serialEvent() { +} #if (DT_PROP_LEN(DT_PATH(zephyr_user), serials) > 1) DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), serials, DECLARE_SERIALEVENT_N) #endif -void arduino::serialEventRun(void) -{ - if (Serial.available()) serialEvent(); +void arduino::serialEventRun(void) { + if (Serial.available()) { + serialEvent(); + } #if (DT_PROP_LEN(DT_PATH(zephyr_user), serials) > 1) DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), serials, CALL_SERIALEVENT_N) #endif diff --git a/cores/arduino/zephyrSerial.h b/cores/arduino/zephyrSerial.h index ecc18a81b..5e1d15fe7 100644 --- a/cores/arduino/zephyrSerial.h +++ b/cores/arduino/zephyrSerial.h @@ -12,58 +12,84 @@ namespace arduino { -class ZephyrSerialStub : public HardwareSerial -{ +class ZephyrSerialStub : public HardwareSerial { public: - void begin(__attribute__((unused)) unsigned long baudRate) { } - void begin(__attribute__((unused)) unsigned long baudrate, __attribute__((unused)) uint16_t config) { } - void end() { } - int available() { return 0; } - int peek() { return 0; } - int read() { return 0; } - void flush() { } - size_t write(const uint8_t data) - { + void begin(__attribute__((unused)) unsigned long baudRate) { + } + + void begin(__attribute__((unused)) unsigned long baudrate, + __attribute__((unused)) uint16_t config) { + } + + void end() { + } + + int available() { + return 0; + } + + int peek() { + return 0; + } + + int read() { + return 0; + } + + void flush() { + } + + size_t write(const uint8_t data) { printk("%c", static_cast(data)); return 1; } - operator bool() { return true; } + operator bool() { + return true; + } }; -class ZephyrSerial : public HardwareSerial -{ +class ZephyrSerial : public HardwareSerial { public: - template - class ZephyrSerialBuffer - { + template class ZephyrSerialBuffer { friend arduino::ZephyrSerial; struct ring_buf ringbuf; uint8_t buffer[SZ]; struct k_sem sem; - ZephyrSerialBuffer() - { + ZephyrSerialBuffer() { k_sem_init(&sem, 1, 1); ring_buf_init(&ringbuf, sizeof(buffer), buffer); } }; - ZephyrSerial(const struct device *dev) : uart(dev) { } + ZephyrSerial(const struct device *dev) : uart(dev) { + } + void begin(unsigned long baudrate, uint16_t config); - void begin(unsigned long baudrate) { begin(baudrate, SERIAL_8N1); } + + void begin(unsigned long baudrate) { + begin(baudrate, SERIAL_8N1); + } + void flush(); - void end() { } + + void end() { + } + size_t write(const uint8_t *buffer, size_t size); - size_t write(const uint8_t data) { return write(&data, 1); } + + size_t write(const uint8_t data) { + return write(&data, 1); + } + using Print::write; // pull in write(str) and write(buf, size) from Print int available(); - int availableForWrite(); + int availableForWrite(); int peek(); int read(); - operator bool() - { + operator bool() { return true; } @@ -78,17 +104,17 @@ class ZephyrSerial : public HardwareSerial ZephyrSerialBuffer rx; }; - -} // namespace arduino +} // namespace arduino #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), serials) -#if !(DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) +#if !(DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && \ + (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) // If CDC USB, use that object as Serial (and SerialUSB) extern arduino::ZephyrSerial Serial; #endif #if (DT_PROP_LEN(DT_PATH(zephyr_user), serials) > 1) -#define SERIAL_DEFINED_0 1 -#define EXTERN_SERIAL_N(i) extern arduino::ZephyrSerial Serial##i; +#define SERIAL_DEFINED_0 1 +#define EXTERN_SERIAL_N(i) extern arduino::ZephyrSerial Serial##i; #define DECLARE_EXTERN_SERIAL_N(n, p, i) COND_CODE_1(SERIAL_DEFINED_##i, (), (EXTERN_SERIAL_N(i))) /* Declare Serial1, Serial2, ... */ diff --git a/libraries/Camera/src/camera.cpp b/libraries/Camera/src/camera.cpp index fd4ac2acc..c8562094c 100644 --- a/libraries/Camera/src/camera.cpp +++ b/libraries/Camera/src/camera.cpp @@ -25,89 +25,86 @@ #include FrameBuffer::FrameBuffer() : vbuf(NULL) { - } uint32_t FrameBuffer::getBufferSize() { - if (this->vbuf) { - return this->vbuf->bytesused; - } + if (this->vbuf) { + return this->vbuf->bytesused; + } } -uint8_t* FrameBuffer::getBuffer() { - if (this->vbuf) { - return this->vbuf->buffer; - } +uint8_t *FrameBuffer::getBuffer() { + if (this->vbuf) { + return this->vbuf->buffer; + } } Camera::Camera() : vdev(NULL), byte_swap(false), yuv_to_gray(false) { for (size_t i = 0; i < ARRAY_SIZE(this->vbuf); i++) { this->vbuf[i] = NULL; - } + } } bool Camera::begin(uint32_t width, uint32_t height, uint32_t pixformat, bool byte_swap) { - #if DT_HAS_CHOSEN(zephyr_camera) - this->vdev = DEVICE_DT_GET(DT_CHOSEN(zephyr_camera)); - #endif - - if (!this->vdev || !device_is_ready(this->vdev)) { - return false; - } - - switch (pixformat) { - case CAMERA_RGB565: - this->byte_swap = byte_swap; - pixformat = VIDEO_PIX_FMT_RGB565; - break; - case CAMERA_GRAYSCALE: - // There's no support for mono sensors. - this->yuv_to_gray = true; - pixformat = VIDEO_PIX_FMT_YUYV; - break; - default: - break; - } - - // Get capabilities - struct video_caps caps; - if (video_get_caps(this->vdev, &caps)) { - return false; - } - - for (size_t i=0; caps.format_caps[i].pixelformat != NULL; i++) { - const struct video_format_cap *fcap = &caps.format_caps[i]; - if (fcap->width_min == width && - fcap->height_min == height && - fcap->pixelformat == pixformat) { - break; - } - if (caps.format_caps[i+1].pixelformat == NULL) { - Serial.println("The specified format is not supported"); - return false; - } - } - - // Set format. - static struct video_format fmt = { - .pixelformat = pixformat, - .width = width, - .height = height, - .pitch = width * 2, - }; +#if DT_HAS_CHOSEN(zephyr_camera) + this->vdev = DEVICE_DT_GET(DT_CHOSEN(zephyr_camera)); +#endif + + if (!this->vdev || !device_is_ready(this->vdev)) { + return false; + } + + switch (pixformat) { + case CAMERA_RGB565: + this->byte_swap = byte_swap; + pixformat = VIDEO_PIX_FMT_RGB565; + break; + case CAMERA_GRAYSCALE: + // There's no support for mono sensors. + this->yuv_to_gray = true; + pixformat = VIDEO_PIX_FMT_YUYV; + break; + default: + break; + } + + // Get capabilities + struct video_caps caps; + if (video_get_caps(this->vdev, &caps)) { + return false; + } + + for (size_t i = 0; caps.format_caps[i].pixelformat != NULL; i++) { + const struct video_format_cap *fcap = &caps.format_caps[i]; + if (fcap->width_min == width && fcap->height_min == height && + fcap->pixelformat == pixformat) { + break; + } + if (caps.format_caps[i + 1].pixelformat == NULL) { + Serial.println("The specified format is not supported"); + return false; + } + } + + // Set format. + static struct video_format fmt = { + .pixelformat = pixformat, + .width = width, + .height = height, + .pitch = width * 2, + }; if (video_set_format(this->vdev, &fmt)) { - Serial.println("Failed to set video format"); + Serial.println("Failed to set video format"); return false; } // Allocate video buffers. for (size_t i = 0; i < ARRAY_SIZE(this->vbuf); i++) { this->vbuf[i] = video_buffer_aligned_alloc(fmt.pitch * fmt.height, - CONFIG_VIDEO_BUFFER_POOL_ALIGN, - K_FOREVER); + CONFIG_VIDEO_BUFFER_POOL_ALIGN, K_FOREVER); if (this->vbuf[i] == NULL) { - Serial.println("Failed to allocate video buffers"); + Serial.println("Failed to allocate video buffers"); return false; } video_enqueue(this->vdev, this->vbuf[i]); @@ -115,58 +112,58 @@ bool Camera::begin(uint32_t width, uint32_t height, uint32_t pixformat, bool byt // Start video capture if (video_stream_start(this->vdev, VIDEO_BUF_TYPE_OUTPUT)) { - Serial.println("Failed to start capture"); + Serial.println("Failed to start capture"); return false; } - return true; + return true; } bool Camera::grabFrame(FrameBuffer &fb, uint32_t timeout) { - if (this->vdev == NULL) { - return false; - } - - if (video_dequeue(this->vdev, &fb.vbuf, K_MSEC(timeout))) { - return false; - } - - if (this->byte_swap) { - uint16_t *pixels = (uint16_t *) fb.vbuf->buffer; - for (size_t i=0; ibytesused / 2; i++) { - pixels[i] = __REVSH(pixels[i]); - } - } - - if (this->yuv_to_gray) { - uint8_t *pixels = (uint8_t *) fb.vbuf->buffer; - for (size_t i=0; ibytesused / 2; i++) { - pixels[i] = pixels[i*2]; - } - fb.vbuf->bytesused /= 2; - } - - return true; + if (this->vdev == NULL) { + return false; + } + + if (video_dequeue(this->vdev, &fb.vbuf, K_MSEC(timeout))) { + return false; + } + + if (this->byte_swap) { + uint16_t *pixels = (uint16_t *)fb.vbuf->buffer; + for (size_t i = 0; i < fb.vbuf->bytesused / 2; i++) { + pixels[i] = __REVSH(pixels[i]); + } + } + + if (this->yuv_to_gray) { + uint8_t *pixels = (uint8_t *)fb.vbuf->buffer; + for (size_t i = 0; i < fb.vbuf->bytesused / 2; i++) { + pixels[i] = pixels[i * 2]; + } + fb.vbuf->bytesused /= 2; + } + + return true; } bool Camera::releaseFrame(FrameBuffer &fb) { - if (this->vdev == NULL) { - return false; - } + if (this->vdev == NULL) { + return false; + } - if (video_enqueue(this->vdev, fb.vbuf)) { - return false; + if (video_enqueue(this->vdev, fb.vbuf)) { + return false; } - return true; + return true; } bool Camera::setVerticalFlip(bool flip_enable) { - struct video_control ctrl = {.id = VIDEO_CID_VFLIP, .val = flip_enable}; - return video_set_ctrl(this->vdev, &ctrl) == 0; + struct video_control ctrl = {.id = VIDEO_CID_VFLIP, .val = flip_enable}; + return video_set_ctrl(this->vdev, &ctrl) == 0; } bool Camera::setHorizontalMirror(bool mirror_enable) { - struct video_control ctrl = {.id = VIDEO_CID_HFLIP, .val = mirror_enable}; - return video_set_ctrl(this->vdev, &ctrl) == 0; + struct video_control ctrl = {.id = VIDEO_CID_HFLIP, .val = mirror_enable}; + return video_set_ctrl(this->vdev, &ctrl) == 0; } diff --git a/libraries/Camera/src/camera.h b/libraries/Camera/src/camera.h index c456c5ffd..d6f05e200 100644 --- a/libraries/Camera/src/camera.h +++ b/libraries/Camera/src/camera.h @@ -17,17 +17,18 @@ */ #ifndef __CAMERA_H__ #define __CAMERA_H__ -/** + +/** * @enum CameraPixelFormat * @brief Camera pixel format enumeration. - * + * * The different formats use different numbers of bits per pixel: * - Grayscale (8-bit) * - RGB565 (16-bit) */ enum CameraPixelFormat { - CAMERA_RGB565, /**< RGB565 format (16-bit). */ - CAMERA_GRAYSCALE, /**< Grayscale format (8-bit). */ + CAMERA_RGB565, /**< RGB565 format (16-bit). */ + CAMERA_GRAYSCALE, /**< Grayscale format (8-bit). */ }; /** @@ -35,31 +36,31 @@ enum CameraPixelFormat { * @brief Frame buffer class for storing captured frames. */ class FrameBuffer { - private: - struct video_buffer *vbuf; +private: + struct video_buffer *vbuf; - public: - /** - * @brief Construct a new FrameBuffer object. - */ - FrameBuffer(); +public: + /** + * @brief Construct a new FrameBuffer object. + */ + FrameBuffer(); - /** - * @brief Get the buffer size in bytes. - * @return uint32_t The buffer size in bytes. - */ - uint32_t getBufferSize(); + /** + * @brief Get the buffer size in bytes. + * @return uint32_t The buffer size in bytes. + */ + uint32_t getBufferSize(); - /** - * @brief Get a pointer to the frame buffer. - * - * This can be used to read the pixels from the frame buffer. - * For example, to print all pixels to the serial monitor as hex values. - * - * @return uint8_t* Pointer to the frame buffer. - */ - uint8_t* getBuffer(); - friend class Camera; + /** + * @brief Get a pointer to the frame buffer. + * + * This can be used to read the pixels from the frame buffer. + * For example, to print all pixels to the serial monitor as hex values. + * + * @return uint8_t* Pointer to the frame buffer. + */ + uint8_t *getBuffer(); + friend class Camera; }; /** @@ -67,61 +68,62 @@ class FrameBuffer { * @brief The main class for controlling a camera. */ class Camera { - private: - bool byte_swap; - bool yuv_to_gray; - const struct device *vdev; - struct video_buffer *vbuf[CONFIG_VIDEO_BUFFER_POOL_NUM_MAX]; +private: + bool byte_swap; + bool yuv_to_gray; + const struct device *vdev; + struct video_buffer *vbuf[CONFIG_VIDEO_BUFFER_POOL_NUM_MAX]; - public: - /** - * @brief Construct a new Camera object. - */ - Camera(); +public: + /** + * @brief Construct a new Camera object. + */ + Camera(); - /** - * @brief Initialize the camera. - * - * @param width Frame width in pixels. - * @param height Frame height in pixels. - * @param pixformat Initial pixel format (default: CAMERA_RGB565). - * @param byte_swap Enable byte swapping (default: false). - * @return true if the camera is successfully initialized, otherwise false. - */ - bool begin(uint32_t width, uint32_t height, uint32_t pixformat = CAMERA_RGB565, bool byte_swap = false); + /** + * @brief Initialize the camera. + * + * @param width Frame width in pixels. + * @param height Frame height in pixels. + * @param pixformat Initial pixel format (default: CAMERA_RGB565). + * @param byte_swap Enable byte swapping (default: false). + * @return true if the camera is successfully initialized, otherwise false. + */ + bool begin(uint32_t width, uint32_t height, uint32_t pixformat = CAMERA_RGB565, + bool byte_swap = false); - /** - * @brief Capture a frame. - * - * @param fb Reference to a FrameBuffer object to store the frame data. - * @param timeout Time in milliseconds to wait for a frame (default: 5000). - * @return true if the frame is successfully captured, otherwise false. - */ - bool grabFrame(FrameBuffer &fb, uint32_t timeout = 5000); + /** + * @brief Capture a frame. + * + * @param fb Reference to a FrameBuffer object to store the frame data. + * @param timeout Time in milliseconds to wait for a frame (default: 5000). + * @return true if the frame is successfully captured, otherwise false. + */ + bool grabFrame(FrameBuffer &fb, uint32_t timeout = 5000); - /** - * @brief Release a frame buffer. - * - * @param fb Reference to a FrameBuffer object to release. - * @return true if the frame buffer is successfully released, otherwise false. - */ - bool releaseFrame(FrameBuffer &fb); + /** + * @brief Release a frame buffer. + * + * @param fb Reference to a FrameBuffer object to release. + * @return true if the frame buffer is successfully released, otherwise false. + */ + bool releaseFrame(FrameBuffer &fb); - /** - * @brief Flip the camera image vertically. - * - * @param flip_enable Set to true to enable vertical flip, false to disable. - * @return true on success, false on failure. - */ - bool setVerticalFlip(bool flip_enable); + /** + * @brief Flip the camera image vertically. + * + * @param flip_enable Set to true to enable vertical flip, false to disable. + * @return true on success, false on failure. + */ + bool setVerticalFlip(bool flip_enable); - /** - * @brief Mirror the camera image horizontally. - * - * @param mirror_enable Set to true to enable horizontal mirror, false to disable. - * @return true on success, false on failure. - */ - bool setHorizontalMirror(bool mirror_enable); + /** + * @brief Mirror the camera image horizontally. + * + * @param mirror_enable Set to true to enable horizontal mirror, false to disable. + * @return true on success, false on failure. + */ + bool setHorizontalMirror(bool mirror_enable); }; #endif // __CAMERA_H__ diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 897d57f2a..8dd61f21e 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -8,69 +8,70 @@ #include "zephyrInternal.h" #include -arduino::ZephyrSPI::ZephyrSPI(const struct device *spi) : spi_dev(spi) {} +arduino::ZephyrSPI::ZephyrSPI(const struct device *spi) : spi_dev(spi) { +} uint8_t arduino::ZephyrSPI::transfer(uint8_t data) { - int ret; - uint8_t rx; - const struct spi_buf tx_buf = {.buf = &data, .len = sizeof(data)}; - const struct spi_buf_set tx_buf_set = { - .buffers = &tx_buf, - .count = 1, - }; - const struct spi_buf rx_buf = {.buf = &rx, .len = sizeof(rx)}; - const struct spi_buf_set rx_buf_set = { - .buffers = &rx_buf, - .count = 1, - }; - - ret = spi_transceive(spi_dev, &config, &tx_buf_set, &rx_buf_set); - if (ret < 0) { - return 0; - } - - return rx; + int ret; + uint8_t rx; + const struct spi_buf tx_buf = {.buf = &data, .len = sizeof(data)}; + const struct spi_buf_set tx_buf_set = { + .buffers = &tx_buf, + .count = 1, + }; + const struct spi_buf rx_buf = {.buf = &rx, .len = sizeof(rx)}; + const struct spi_buf_set rx_buf_set = { + .buffers = &rx_buf, + .count = 1, + }; + + ret = spi_transceive(spi_dev, &config, &tx_buf_set, &rx_buf_set); + if (ret < 0) { + return 0; + } + + return rx; } uint16_t arduino::ZephyrSPI::transfer16(uint16_t data) { - int ret; - uint16_t rx; - const struct spi_buf tx_buf = {.buf = &data, .len = sizeof(data)}; - const struct spi_buf_set tx_buf_set = { - .buffers = &tx_buf, - .count = 1, - }; - const struct spi_buf rx_buf = {.buf = &rx, .len = sizeof(rx)}; - const struct spi_buf_set rx_buf_set = { - .buffers = &rx_buf, - .count = 1, - }; - - ret = spi_transceive(spi_dev, &config16, &tx_buf_set, &rx_buf_set); - if (ret < 0) { - return 0; - } - - return rx; + int ret; + uint16_t rx; + const struct spi_buf tx_buf = {.buf = &data, .len = sizeof(data)}; + const struct spi_buf_set tx_buf_set = { + .buffers = &tx_buf, + .count = 1, + }; + const struct spi_buf rx_buf = {.buf = &rx, .len = sizeof(rx)}; + const struct spi_buf_set rx_buf_set = { + .buffers = &rx_buf, + .count = 1, + }; + + ret = spi_transceive(spi_dev, &config16, &tx_buf_set, &rx_buf_set); + if (ret < 0) { + return 0; + } + + return rx; } void arduino::ZephyrSPI::transfer(void *buf, size_t count) { - int ret; - const struct spi_buf tx_buf = {.buf = buf, .len = count}; - const struct spi_buf_set tx_buf_set = { - .buffers = &tx_buf, - .count = 1, - }; - - uint8_t rx[count]; - const struct spi_buf rx_buf = {.buf = &rx, .len = count}; - const struct spi_buf_set rx_buf_set = { - .buffers = &rx_buf, - .count = 1, - }; - - spi_transceive(spi_dev, &config, &tx_buf_set, &rx_buf_set); - memcpy(buf, rx, count); + int ret; + const struct spi_buf tx_buf = {.buf = buf, .len = count}; + const struct spi_buf_set tx_buf_set = { + .buffers = &tx_buf, + .count = 1, + }; + + uint8_t rx[count]; + const struct spi_buf rx_buf = {.buf = &rx, .len = count}; + const struct spi_buf_set rx_buf_set = { + .buffers = &rx_buf, + .count = 1, + }; + + spi_transceive(spi_dev, &config, &tx_buf_set, &rx_buf_set); + memcpy(buf, rx, count); } void arduino::ZephyrSPI::usingInterrupt(int interruptNumber) { @@ -84,41 +85,52 @@ void arduino::ZephyrSPI::notUsingInterrupt(int interruptNumber) { #endif void arduino::ZephyrSPI::beginTransaction(SPISettings settings) { - memset(&config, 0, sizeof(config)); - memset(&config16, 0, sizeof(config16)); - config.frequency = settings.getClockFreq() > SPI_MIN_CLOCK_FEQUENCY ? settings.getClockFreq() : SPI_MIN_CLOCK_FEQUENCY; - config16.frequency = config.frequency; - - auto mode = SPI_MODE_CPOL | SPI_MODE_CPHA; - switch (settings.getDataMode()) { - case SPI_MODE0: - mode = 0; break; - case SPI_MODE1: - mode = SPI_MODE_CPHA; break; - case SPI_MODE2: - mode = SPI_MODE_CPOL; break; - case SPI_MODE3: - mode = SPI_MODE_CPOL | SPI_MODE_CPHA; break; - } - config.operation = SPI_WORD_SET(8) | (settings.getBitOrder() == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | mode; - config16.operation = SPI_WORD_SET(16) | (settings.getBitOrder() == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | mode; + memset(&config, 0, sizeof(config)); + memset(&config16, 0, sizeof(config16)); + config.frequency = settings.getClockFreq() > SPI_MIN_CLOCK_FEQUENCY ? settings.getClockFreq() : + SPI_MIN_CLOCK_FEQUENCY; + config16.frequency = config.frequency; + + auto mode = SPI_MODE_CPOL | SPI_MODE_CPHA; + switch (settings.getDataMode()) { + case SPI_MODE0: + mode = 0; + break; + case SPI_MODE1: + mode = SPI_MODE_CPHA; + break; + case SPI_MODE2: + mode = SPI_MODE_CPOL; + break; + case SPI_MODE3: + mode = SPI_MODE_CPOL | SPI_MODE_CPHA; + break; + } + config.operation = SPI_WORD_SET(8) | + (settings.getBitOrder() == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | + mode; + config16.operation = + SPI_WORD_SET(16) | + (settings.getBitOrder() == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | mode; } void arduino::ZephyrSPI::endTransaction(void) { - spi_release(spi_dev, &config); + spi_release(spi_dev, &config); } -void arduino::ZephyrSPI::attachInterrupt() {} - -void arduino::ZephyrSPI::detachInterrupt() {} +void arduino::ZephyrSPI::attachInterrupt() { +} +void arduino::ZephyrSPI::detachInterrupt() { +} void arduino::ZephyrSPI::begin() { - beginTransaction(SPISettings()); - endTransaction(); + beginTransaction(SPISettings()); + endTransaction(); } -void arduino::ZephyrSPI::end() {} +void arduino::ZephyrSPI::end() { +} #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), spis) #if (DT_PROP_LEN(DT_PATH(zephyr_user), spis) > 1) diff --git a/libraries/SPI/SPI.h b/libraries/SPI/SPI.h index ec3b68695..95c41ce25 100644 --- a/libraries/SPI/SPI.h +++ b/libraries/SPI/SPI.h @@ -19,43 +19,43 @@ #define CPOL 3 #define MSTR 4 #define DORD 5 -#define SPE 6 +#define SPE 6 #define SPIE 7 /* Count the number of GPIOs for limit of number of interrupts */ #define INTERRUPT_HELPER(n, p, i) 1 -#define INTERRUPT_COUNT \ - DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, \ +#define INTERRUPT_COUNT \ + DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, \ INTERRUPT_HELPER, (+)) namespace arduino { class ZephyrSPI : public HardwareSPI { public: - ZephyrSPI(const struct device *spi); + ZephyrSPI(const struct device *spi); - virtual uint8_t transfer(uint8_t data); - virtual uint16_t transfer16(uint16_t data); - virtual void transfer(void *buf, size_t count); + virtual uint8_t transfer(uint8_t data); + virtual uint16_t transfer16(uint16_t data); + virtual void transfer(void *buf, size_t count); - // Transaction Functions - virtual void usingInterrupt(int interruptNumber); - virtual void notUsingInterrupt(int interruptNumber); - virtual void beginTransaction(SPISettings settings); - virtual void endTransaction(void); + // Transaction Functions + virtual void usingInterrupt(int interruptNumber); + virtual void notUsingInterrupt(int interruptNumber); + virtual void beginTransaction(SPISettings settings); + virtual void endTransaction(void); - // SPI Configuration methods - virtual void attachInterrupt(); - virtual void detachInterrupt(); + // SPI Configuration methods + virtual void attachInterrupt(); + virtual void detachInterrupt(); - virtual void begin(); - virtual void end(); + virtual void begin(); + virtual void end(); protected: - const struct device *spi_dev; - struct spi_config config; - struct spi_config config16; - int interrupt[INTERRUPT_COUNT]; - size_t interrupt_pos = 0; + const struct device *spi_dev; + struct spi_config config; + struct spi_config config16; + int interrupt[INTERRUPT_COUNT]; + size_t interrupt_pos = 0; }; } // namespace arduino diff --git a/libraries/SocketWrapper/Ethernet.cpp b/libraries/SocketWrapper/Ethernet.cpp index 94802bb30..03300d439 100644 --- a/libraries/SocketWrapper/Ethernet.cpp +++ b/libraries/SocketWrapper/Ethernet.cpp @@ -2,4 +2,4 @@ #if DT_HAS_COMPAT_STATUS_OKAY(ethernet_phy) EthernetClass Ethernet; -#endif \ No newline at end of file +#endif diff --git a/libraries/SocketWrapper/Ethernet.h b/libraries/SocketWrapper/Ethernet.h index a3cbcd847..e93107298 100644 --- a/libraries/SocketWrapper/Ethernet.h +++ b/libraries/SocketWrapper/Ethernet.h @@ -5,60 +5,64 @@ #if DT_HAS_COMPAT_STATUS_OKAY(ethernet_phy) enum EthernetLinkStatus { - Unknown, - LinkON, - LinkOFF + Unknown, + LinkON, + LinkOFF }; enum EthernetHardwareStatus { - EthernetNoHardware, - EthernetOk + EthernetNoHardware, + EthernetOk }; -class EthernetClass: public NetworkInterface -{ +class EthernetClass : public NetworkInterface { public: - EthernetClass() {} - virtual ~EthernetClass() {} + EthernetClass() { + } - EthernetLinkStatus linkStatus() { - hardwareStatus(); - if (net_if_is_up(netif)) { - return LinkON; - } else { - return LinkOFF; - } - } + virtual ~EthernetClass() { + } - bool begin(bool blocking = true, uint32_t additional_event_mask = 0) { - hardwareStatus(); - return NetworkInterface::begin(blocking, additional_event_mask); - } + EthernetLinkStatus linkStatus() { + hardwareStatus(); + if (net_if_is_up(netif)) { + return LinkON; + } else { + return LinkOFF; + } + } - bool begin(uint8_t* mac_address, int _timeout, int _response_timeout) { - return begin(); - } + bool begin(bool blocking = true, uint32_t additional_event_mask = 0) { + hardwareStatus(); + return NetworkInterface::begin(blocking, additional_event_mask); + } - bool begin(uint8_t* mac_address, IPAddress _ip, IPAddress _dns, IPAddress _gateway, IPAddress _netmask, int _timeout, int _response_timeout) { - return begin(); - } + bool begin(uint8_t *mac_address, int _timeout, int _response_timeout) { + return begin(); + } - EthernetHardwareStatus hardwareStatus() { - const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); - if (device_is_ready(dev)) { - for (int i = 1; i < 4; i++) { - auto _if = net_if_get_by_index(i); - if (_if && !net_eth_type_is_wifi(_if)) { - netif = _if; - break; - } - } - return EthernetOk; - } else { - return EthernetNoHardware; - } - } + bool begin(uint8_t *mac_address, IPAddress _ip, IPAddress _dns, IPAddress _gateway, + IPAddress _netmask, int _timeout, int _response_timeout) { + return begin(); + } + + EthernetHardwareStatus hardwareStatus() { + const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); + if (device_is_ready(dev)) { + for (int i = 1; i < 4; i++) { + auto _if = net_if_get_by_index(i); + if (_if && !net_eth_type_is_wifi(_if)) { + netif = _if; + break; + } + } + return EthernetOk; + } else { + return EthernetNoHardware; + } + } }; + extern EthernetClass Ethernet; -#endif \ No newline at end of file +#endif diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index bc6ca6c7f..acf510a4c 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -24,145 +24,138 @@ class NetworkInterface { private: - - uint8_t ntp_server[4]; - static struct net_mgmt_event_callback mgmt_cb; - static struct net_dhcpv4_option_callback dhcp_cb; - - static void event_handler(struct net_mgmt_event_callback *cb, - uint64_t mgmt_event, - struct net_if *iface) - { - int i = 0; - - if (mgmt_event != NET_EVENT_IPV4_ADDR_ADD) { - return; - } - - for (i = 0; i < NET_IF_MAX_IPV4_ADDR; i++) { - char buf[NET_IPV4_ADDR_LEN]; - - if (iface->config.ip.ipv4->unicast[i].ipv4.addr_type != - NET_ADDR_DHCP) { - continue; - } - - LOG_INF(" Address[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, - &iface->config.ip.ipv4->unicast[i].ipv4.address.in_addr, - buf, sizeof(buf))); - LOG_INF(" Subnet[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, - &iface->config.ip.ipv4->unicast[i].netmask, - buf, sizeof(buf))); - LOG_INF(" Router[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, - &iface->config.ip.ipv4->gw, - buf, sizeof(buf))); - LOG_INF("Lease time[%d]: %u seconds", net_if_get_by_iface(iface), - iface->config.dhcpv4.lease_time); - } - } - - static void option_handler(struct net_dhcpv4_option_callback *cb, - size_t length, - enum net_dhcpv4_msg_type msg_type, - struct net_if *iface) - { - char buf[NET_IPV4_ADDR_LEN]; - - LOG_INF("DHCP Option %d: %s", cb->option, - net_addr_ntop(AF_INET, cb->data, buf, sizeof(buf))); - } + uint8_t ntp_server[4]; + static struct net_mgmt_event_callback mgmt_cb; + static struct net_dhcpv4_option_callback dhcp_cb; + + static void event_handler(struct net_mgmt_event_callback *cb, uint64_t mgmt_event, + struct net_if *iface) { + int i = 0; + + if (mgmt_event != NET_EVENT_IPV4_ADDR_ADD) { + return; + } + + for (i = 0; i < NET_IF_MAX_IPV4_ADDR; i++) { + char buf[NET_IPV4_ADDR_LEN]; + + if (iface->config.ip.ipv4->unicast[i].ipv4.addr_type != NET_ADDR_DHCP) { + continue; + } + + LOG_INF(" Address[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, &iface->config.ip.ipv4->unicast[i].ipv4.address.in_addr, + buf, sizeof(buf))); + LOG_INF(" Subnet[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, &iface->config.ip.ipv4->unicast[i].netmask, buf, + sizeof(buf))); + LOG_INF(" Router[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, &iface->config.ip.ipv4->gw, buf, sizeof(buf))); + LOG_INF("Lease time[%d]: %u seconds", net_if_get_by_iface(iface), + iface->config.dhcpv4.lease_time); + } + } + + static void option_handler(struct net_dhcpv4_option_callback *cb, size_t length, + enum net_dhcpv4_msg_type msg_type, struct net_if *iface) { + char buf[NET_IPV4_ADDR_LEN]; + + LOG_INF("DHCP Option %d: %s", cb->option, + net_addr_ntop(AF_INET, cb->data, buf, sizeof(buf))); + } protected: + struct net_if *netif = nullptr; - struct net_if *netif = nullptr; - int dhcp() - { - net_mgmt_init_event_callback(&mgmt_cb, event_handler, NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IF_UP | NET_EVENT_IF_DOWN); - net_mgmt_add_event_callback(&mgmt_cb); - - net_dhcpv4_init_option_callback(&dhcp_cb, option_handler, - DHCP_OPTION_NTP, ntp_server, - sizeof(ntp_server)); + int dhcp() { + net_mgmt_init_event_callback(&mgmt_cb, event_handler, + NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IF_UP | NET_EVENT_IF_DOWN); + net_mgmt_add_event_callback(&mgmt_cb); - net_dhcpv4_add_option_callback(&dhcp_cb); + net_dhcpv4_init_option_callback(&dhcp_cb, option_handler, DHCP_OPTION_NTP, ntp_server, + sizeof(ntp_server)); - net_dhcpv4_start(netif); + net_dhcpv4_add_option_callback(&dhcp_cb); - return 0; - } + net_dhcpv4_start(netif); - void enable_dhcpv4_server(struct net_if *netif, char* _netmask = "255.255.255.0") - { - static struct in_addr addr; - static struct in_addr netmaskAddr; + return 0; + } - if (net_addr_pton(AF_INET, String(localIP()).c_str(), &addr)) { - LOG_ERR("Invalid address: %s", String(localIP()).c_str()); - return; - } + void enable_dhcpv4_server(struct net_if *netif, char *_netmask = "255.255.255.0") { + static struct in_addr addr; + static struct in_addr netmaskAddr; - if (net_addr_pton(AF_INET, _netmask, &netmaskAddr)) { - LOG_ERR("Invalid netmask: %s", _netmask); - return; - } + if (net_addr_pton(AF_INET, String(localIP()).c_str(), &addr)) { + LOG_ERR("Invalid address: %s", String(localIP()).c_str()); + return; + } - net_if_ipv4_set_gw(netif, &addr); + if (net_addr_pton(AF_INET, _netmask, &netmaskAddr)) { + LOG_ERR("Invalid netmask: %s", _netmask); + return; + } - if (net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0) == NULL) { - LOG_ERR("unable to set IP address for AP interface"); - } + net_if_ipv4_set_gw(netif, &addr); - if (!net_if_ipv4_set_netmask_by_addr(netif, &addr, &netmaskAddr)) { - LOG_ERR("Unable to set netmask for AP interface: %s", _netmask); - } + if (net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0) == NULL) { + LOG_ERR("unable to set IP address for AP interface"); + } - addr.s4_addr[3] += 10; /* Starting IPv4 address for DHCPv4 address pool. */ + if (!net_if_ipv4_set_netmask_by_addr(netif, &addr, &netmaskAddr)) { + LOG_ERR("Unable to set netmask for AP interface: %s", _netmask); + } - if (net_dhcpv4_server_start(netif, &addr) != 0) { - LOG_ERR("DHCP server is not started for desired IP"); - return; - } + addr.s4_addr[3] += 10; /* Starting IPv4 address for DHCPv4 address pool. */ - LOG_INF("DHCPv4 server started...\n"); - } + if (net_dhcpv4_server_start(netif, &addr) != 0) { + LOG_ERR("DHCP server is not started for desired IP"); + return; + } + LOG_INF("DHCPv4 server started...\n"); + } public: - NetworkInterface() {} - ~NetworkInterface() {} - IPAddress localIP() { - return IPAddress(netif->config.ip.ipv4->unicast[0].ipv4.address.in_addr.s_addr); - } - - IPAddress subnetMask() { - return IPAddress(netif->config.ip.ipv4->unicast[0].netmask.s_addr); - } - IPAddress gatewayIP() { - return IPAddress(netif->config.ip.ipv4->gw.s_addr); - } - IPAddress dnsServerIP() { - return arduino::INADDR_NONE; - } - - IPAddress dnsIP(int n = 0); - - void setMACAddress(const uint8_t* mac); - - bool begin(bool blocking = true, uint32_t additional_event_mask = 0) { - dhcp(); - int ret = net_mgmt_event_wait_on_iface(netif, NET_EVENT_IPV4_ADDR_ADD | additional_event_mask, - NULL, NULL, NULL, blocking ? K_FOREVER : K_SECONDS(1)); - return (ret == 0); - } - - bool disconnect() { - return (net_if_down(netif) == 0); - } - - // TODO: manual functions for setting IP address, subnet mask, gateway, etc. - // net_if_ipv4_set_netmask_by_addr(iface, &addr4, &nm); - // net_if_ipv4_addr_add(iface, &addr4, NET_ADDR_MANUAL, 0); + NetworkInterface() { + } + + ~NetworkInterface() { + } + + IPAddress localIP() { + return IPAddress(netif->config.ip.ipv4->unicast[0].ipv4.address.in_addr.s_addr); + } + + IPAddress subnetMask() { + return IPAddress(netif->config.ip.ipv4->unicast[0].netmask.s_addr); + } + + IPAddress gatewayIP() { + return IPAddress(netif->config.ip.ipv4->gw.s_addr); + } + + IPAddress dnsServerIP() { + return arduino::INADDR_NONE; + } + + IPAddress dnsIP(int n = 0); + + void setMACAddress(const uint8_t *mac); + + bool begin(bool blocking = true, uint32_t additional_event_mask = 0) { + dhcp(); + int ret = + net_mgmt_event_wait_on_iface(netif, NET_EVENT_IPV4_ADDR_ADD | additional_event_mask, + NULL, NULL, NULL, blocking ? K_FOREVER : K_SECONDS(1)); + return (ret == 0); + } + + bool disconnect() { + return (net_if_down(netif) == 0); + } + + // TODO: manual functions for setting IP address, subnet mask, gateway, etc. + // net_if_ipv4_set_netmask_by_addr(iface, &addr4, &nm); + // net_if_ipv4_addr_add(iface, &addr4, NET_ADDR_MANUAL, 0); }; diff --git a/libraries/SocketWrapper/SocketWrapper.h b/libraries/SocketWrapper/SocketWrapper.h index ad5c36db2..6165d5aca 100644 --- a/libraries/SocketWrapper/SocketWrapper.h +++ b/libraries/SocketWrapper/SocketWrapper.h @@ -10,260 +10,262 @@ class ZephyrSocketWrapper { protected: - int sock_fd; - bool is_ssl = false; - int ssl_sock_temp_char = -1; + int sock_fd; + bool is_ssl = false; + int ssl_sock_temp_char = -1; public: - ZephyrSocketWrapper() : sock_fd(-1) {} - ZephyrSocketWrapper(int sock_fd) : sock_fd(sock_fd) {} + ZephyrSocketWrapper() : sock_fd(-1) { + } - ~ZephyrSocketWrapper() { - if (sock_fd != -1) { - ::close(sock_fd); - } - } + ZephyrSocketWrapper(int sock_fd) : sock_fd(sock_fd) { + } - bool connect(const char* host, uint16_t port) { + ~ZephyrSocketWrapper() { + if (sock_fd != -1) { + ::close(sock_fd); + } + } - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - bool rv = true; + bool connect(const char *host, uint16_t port) { - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + bool rv = true; - int resolve_attempts = 100; - int ret; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + int resolve_attempts = 100; + int ret; - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - if (ret != 0) { - rv = false; - goto exit; - } + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - rv = false; + if (ret != 0) { + rv = false; + goto exit; + } - goto exit; - } + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + rv = false; - if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { - ::close(sock_fd); - sock_fd = -1; - rv = false; - goto exit; - } + goto exit; + } - exit: - if(res != nullptr) { - freeaddrinfo(res); - res = nullptr; - } + if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { + ::close(sock_fd); + sock_fd = -1; + rv = false; + goto exit; + } - return rv; - } + exit: + if (res != nullptr) { + freeaddrinfo(res); + res = nullptr; + } - bool connect(IPAddress host, uint16_t port) { + return rv; + } - const char* _host = host.toString().c_str(); + bool connect(IPAddress host, uint16_t port) { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - inet_pton(AF_INET, _host, &addr.sin_addr); + const char *_host = host.toString().c_str(); - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - return false; - } + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + inet_pton(AF_INET, _host, &addr.sin_addr); - if (::connect(sock_fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + return false; + } - return true; - } + if (::connect(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } #if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) - bool connectSSL(const char* host, uint16_t port, char* ca_certificate_pem = nullptr) { - - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; - - int resolve_attempts = 100; - int ret; - bool rv = true; - - sec_tag_t sec_tag_opt[] = { - CA_CERTIFICATE_TAG, - }; - - uint32_t timeo_optval = 100; - - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } - - if (ret != 0) { - rv = false; - goto exit; - } - - if (ca_certificate_pem != nullptr) { - ret = tls_credential_add(CA_CERTIFICATE_TAG, TLS_CREDENTIAL_CA_CERTIFICATE, - ca_certificate_pem, strlen(ca_certificate_pem) + 1); - } - - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2); - if (sock_fd < 0) { - rv = false; - goto exit; - } - - setsockopt(sock_fd, SOL_TLS, TLS_SEC_TAG_LIST, - sec_tag_opt, sizeof(sec_tag_opt)); - - setsockopt(sock_fd, SOL_TLS, TLS_HOSTNAME, host, strlen(host)); - - setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeo_optval, sizeof(timeo_optval)); - - if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { - ::close(sock_fd); - sock_fd = -1; - rv = false; - goto exit; - } - is_ssl = true; - - exit: - if(res != nullptr) { - freeaddrinfo(res); - res = nullptr; - } - - return rv; - } + bool connectSSL(const char *host, uint16_t port, char *ca_certificate_pem = nullptr) { + + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + int resolve_attempts = 100; + int ret; + bool rv = true; + + sec_tag_t sec_tag_opt[] = { + CA_CERTIFICATE_TAG, + }; + + uint32_t timeo_optval = 100; + + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } + + if (ret != 0) { + rv = false; + goto exit; + } + + if (ca_certificate_pem != nullptr) { + ret = tls_credential_add(CA_CERTIFICATE_TAG, TLS_CREDENTIAL_CA_CERTIFICATE, + ca_certificate_pem, strlen(ca_certificate_pem) + 1); + } + + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2); + if (sock_fd < 0) { + rv = false; + goto exit; + } + + setsockopt(sock_fd, SOL_TLS, TLS_SEC_TAG_LIST, sec_tag_opt, sizeof(sec_tag_opt)); + + setsockopt(sock_fd, SOL_TLS, TLS_HOSTNAME, host, strlen(host)); + + setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeo_optval, sizeof(timeo_optval)); + + if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { + ::close(sock_fd); + sock_fd = -1; + rv = false; + goto exit; + } + is_ssl = true; + + exit: + if (res != nullptr) { + freeaddrinfo(res); + res = nullptr; + } + + return rv; + } #endif - int available() { - int count = 0; - if (is_ssl) { - /* - TODO: HACK: - The correct colution would be to call - ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_PEEK | MSG_DONTWAIT); - but it doesn't seem to work. Instead, save a temporary variable - and use it in read() - */ - if (ssl_sock_temp_char != -1) { - return 1; - } - count = ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_DONTWAIT); - } else { - zsock_ioctl(sock_fd, ZFD_IOCTL_FIONREAD, &count); - } - if (count <= 0) { - delay(1); - count = 0; - } - return count; - } - - int recv(uint8_t* buffer, size_t size, int flags = MSG_DONTWAIT) { - if (sock_fd == -1) { - return -1; - } - // TODO: see available() - if (ssl_sock_temp_char != -1) { - int ret = ::recv(sock_fd, &buffer[1], size - 1, flags); - buffer[0] = ssl_sock_temp_char; - ssl_sock_temp_char = -1; - return ret + 1; - } - return ::recv(sock_fd, buffer, size, flags); - } - - int send(const uint8_t* buffer, size_t size) { - if (sock_fd == -1) { - return -1; - } - return ::send(sock_fd, buffer, size, 0); - } - - void close() { - if (sock_fd != -1) { - ::close(sock_fd); - sock_fd = -1; - } - } - - bool bind(uint16_t port) { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = INADDR_ANY; - - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - return false; - } - - zsock_ioctl(sock_fd, ZFD_IOCTL_FIONBIO); - - if (::bind(sock_fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } - - return true; - } - - bool listen(int backlog = 5) { - if (sock_fd == -1) { - return false; - } - - if (::listen(sock_fd, backlog) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } - - return true; - } - - int accept() { - if (sock_fd == -1) { - return -1; - } - - return ::accept(sock_fd, nullptr, nullptr); - } - - friend class ZephyrClient; + int available() { + int count = 0; + if (is_ssl) { + /* + TODO: HACK: + The correct colution would be to call + ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_PEEK | MSG_DONTWAIT); + but it doesn't seem to work. Instead, save a temporary variable + and use it in read() + */ + if (ssl_sock_temp_char != -1) { + return 1; + } + count = ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_DONTWAIT); + } else { + zsock_ioctl(sock_fd, ZFD_IOCTL_FIONREAD, &count); + } + if (count <= 0) { + delay(1); + count = 0; + } + return count; + } + + int recv(uint8_t *buffer, size_t size, int flags = MSG_DONTWAIT) { + if (sock_fd == -1) { + return -1; + } + // TODO: see available() + if (ssl_sock_temp_char != -1) { + int ret = ::recv(sock_fd, &buffer[1], size - 1, flags); + buffer[0] = ssl_sock_temp_char; + ssl_sock_temp_char = -1; + return ret + 1; + } + return ::recv(sock_fd, buffer, size, flags); + } + + int send(const uint8_t *buffer, size_t size) { + if (sock_fd == -1) { + return -1; + } + return ::send(sock_fd, buffer, size, 0); + } + + void close() { + if (sock_fd != -1) { + ::close(sock_fd); + sock_fd = -1; + } + } + + bool bind(uint16_t port) { + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_ANY; + + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + return false; + } + + zsock_ioctl(sock_fd, ZFD_IOCTL_FIONBIO); + + if (::bind(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } + + bool listen(int backlog = 5) { + if (sock_fd == -1) { + return false; + } + + if (::listen(sock_fd, backlog) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } + + int accept() { + if (sock_fd == -1) { + return -1; + } + + return ::accept(sock_fd, nullptr, nullptr); + } + + friend class ZephyrClient; }; diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/SocketWrapper/WiFi.h index c83846b20..df61620c4 100644 --- a/libraries/SocketWrapper/WiFi.h +++ b/libraries/SocketWrapper/WiFi.h @@ -4,102 +4,107 @@ #include #define NET_EVENT_WIFI_MASK \ - (NET_EVENT_WIFI_CONNECT_RESULT | NET_EVENT_WIFI_DISCONNECT_RESULT | \ - NET_EVENT_WIFI_AP_ENABLE_RESULT | NET_EVENT_WIFI_AP_DISABLE_RESULT | \ - NET_EVENT_WIFI_AP_STA_CONNECTED | NET_EVENT_WIFI_AP_STA_DISCONNECTED | \ + (NET_EVENT_WIFI_CONNECT_RESULT | NET_EVENT_WIFI_DISCONNECT_RESULT | \ + NET_EVENT_WIFI_AP_ENABLE_RESULT | NET_EVENT_WIFI_AP_DISABLE_RESULT | \ + NET_EVENT_WIFI_AP_STA_CONNECTED | NET_EVENT_WIFI_AP_STA_DISCONNECTED | \ NET_EVENT_WIFI_SCAN_RESULT) - -class WiFiClass: public NetworkInterface -{ +class WiFiClass : public NetworkInterface { public: - WiFiClass() {} - ~WiFiClass() {} - - bool begin(const char* ssid, const char* passphrase, wl_enc_type security = ENC_TYPE_UNKNOWN, bool blocking = false) { - sta_iface = net_if_get_wifi_sta(); - netif = sta_iface; - sta_config.ssid = (const uint8_t *)ssid; - sta_config.ssid_length = strlen(ssid); - sta_config.psk = (const uint8_t *)passphrase; - sta_config.psk_length = strlen(passphrase); - // TODO: change these fields with scan() results - sta_config.security = WIFI_SECURITY_TYPE_PSK; - sta_config.channel = WIFI_CHANNEL_ANY; - sta_config.band = WIFI_FREQ_BAND_2_4_GHZ; - sta_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; - - int ret = net_mgmt(NET_REQUEST_WIFI_CONNECT, sta_iface, &sta_config, - sizeof(struct wifi_connect_req_params)); - if (ret) { - return false; - } - - NetworkInterface::begin(false, NET_EVENT_WIFI_MASK); - if (blocking) { - net_mgmt_event_wait_on_iface(sta_iface, NET_EVENT_WIFI_AP_STA_CONNECTED, NULL, NULL, NULL, K_FOREVER); - } - - return true; - } - - bool beginAP(char* ssid, char* passphrase, int channel = WIFI_CHANNEL_ANY, bool blocking = false) { - if (ap_iface != NULL) { - return false; - } - ap_iface = net_if_get_wifi_sap(); - netif = ap_iface; - ap_config.ssid = (const uint8_t *)ssid; - ap_config.ssid_length = strlen(ssid); - ap_config.psk = (const uint8_t *)passphrase; - ap_config.psk_length = strlen(passphrase); - ap_config.security = WIFI_SECURITY_TYPE_PSK; - ap_config.channel = channel; - ap_config.band = WIFI_FREQ_BAND_2_4_GHZ; - ap_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; - - int ret = net_mgmt(NET_REQUEST_WIFI_AP_ENABLE, ap_iface, &ap_config, - sizeof(struct wifi_connect_req_params)); - - if (ret) { - return false; - } - - enable_dhcpv4_server(ap_iface); - - if (blocking) { - net_mgmt_event_wait_on_iface(ap_iface, NET_EVENT_WIFI_AP_ENABLE_RESULT, NULL, NULL, NULL, K_FOREVER); - } - - return true; - } - - int status() { - struct wifi_iface_status status = { 0 }; - - if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, netif, &status, - sizeof(struct wifi_iface_status))) { - return WL_NO_SHIELD; - } - - if (status.state >= WIFI_STATE_ASSOCIATED) { - return WL_CONNECTED; - } else { - return WL_DISCONNECTED; - } - return WL_NO_SHIELD; - } - - int8_t scanNetworks() { - // TODO: borrow code from mbed core for scan results handling - } + WiFiClass() { + } + + ~WiFiClass() { + } + + bool begin(const char *ssid, const char *passphrase, wl_enc_type security = ENC_TYPE_UNKNOWN, + bool blocking = false) { + sta_iface = net_if_get_wifi_sta(); + netif = sta_iface; + sta_config.ssid = (const uint8_t *)ssid; + sta_config.ssid_length = strlen(ssid); + sta_config.psk = (const uint8_t *)passphrase; + sta_config.psk_length = strlen(passphrase); + // TODO: change these fields with scan() results + sta_config.security = WIFI_SECURITY_TYPE_PSK; + sta_config.channel = WIFI_CHANNEL_ANY; + sta_config.band = WIFI_FREQ_BAND_2_4_GHZ; + sta_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; + + int ret = net_mgmt(NET_REQUEST_WIFI_CONNECT, sta_iface, &sta_config, + sizeof(struct wifi_connect_req_params)); + if (ret) { + return false; + } + + NetworkInterface::begin(false, NET_EVENT_WIFI_MASK); + if (blocking) { + net_mgmt_event_wait_on_iface(sta_iface, NET_EVENT_WIFI_AP_STA_CONNECTED, NULL, NULL, + NULL, K_FOREVER); + } + + return true; + } + + bool beginAP(char *ssid, char *passphrase, int channel = WIFI_CHANNEL_ANY, + bool blocking = false) { + if (ap_iface != NULL) { + return false; + } + ap_iface = net_if_get_wifi_sap(); + netif = ap_iface; + ap_config.ssid = (const uint8_t *)ssid; + ap_config.ssid_length = strlen(ssid); + ap_config.psk = (const uint8_t *)passphrase; + ap_config.psk_length = strlen(passphrase); + ap_config.security = WIFI_SECURITY_TYPE_PSK; + ap_config.channel = channel; + ap_config.band = WIFI_FREQ_BAND_2_4_GHZ; + ap_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; + + int ret = net_mgmt(NET_REQUEST_WIFI_AP_ENABLE, ap_iface, &ap_config, + sizeof(struct wifi_connect_req_params)); + + if (ret) { + return false; + } + + enable_dhcpv4_server(ap_iface); + + if (blocking) { + net_mgmt_event_wait_on_iface(ap_iface, NET_EVENT_WIFI_AP_ENABLE_RESULT, NULL, NULL, + NULL, K_FOREVER); + } + + return true; + } + + int status() { + struct wifi_iface_status status = {0}; + + if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, netif, &status, + sizeof(struct wifi_iface_status))) { + return WL_NO_SHIELD; + } + + if (status.state >= WIFI_STATE_ASSOCIATED) { + return WL_CONNECTED; + } else { + return WL_DISCONNECTED; + } + return WL_NO_SHIELD; + } + + int8_t scanNetworks() { + // TODO: borrow code from mbed core for scan results handling + } private: - struct net_if *sta_iface = nullptr; - struct net_if *ap_iface = nullptr; + struct net_if *sta_iface = nullptr; + struct net_if *ap_iface = nullptr; - struct wifi_connect_req_params ap_config; - struct wifi_connect_req_params sta_config; + struct wifi_connect_req_params ap_config; + struct wifi_connect_req_params sta_config; }; extern WiFiClass WiFi; diff --git a/libraries/SocketWrapper/ZephyrClient.h b/libraries/SocketWrapper/ZephyrClient.h index 8d9479638..94e135cae 100644 --- a/libraries/SocketWrapper/ZephyrClient.h +++ b/libraries/SocketWrapper/ZephyrClient.h @@ -7,53 +7,57 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper { private: - bool _connected = false; + bool _connected = false; protected: - void setSocket(int sock) { - sock_fd = sock; - _connected = true; - } + void setSocket(int sock) { + sock_fd = sock; + _connected = true; + } public: - int connect(const char* host, uint16_t port) override { - auto ret = ZephyrSocketWrapper::connect((char*)host, port); - if (ret) { - _connected = true; - } - return ret; - } - int connect(IPAddress ip, uint16_t port) { - auto ret = ZephyrSocketWrapper::connect(ip, port); - if (ret) { - _connected = true; - } - return ret; - } + int connect(const char *host, uint16_t port) override { + auto ret = ZephyrSocketWrapper::connect((char *)host, port); + if (ret) { + _connected = true; + } + return ret; + } + + int connect(IPAddress ip, uint16_t port) { + auto ret = ZephyrSocketWrapper::connect(ip, port); + if (ret) { + _connected = true; + } + return ret; + } #if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) - int connectSSL(const char* host, uint16_t port, char* cert) { - auto ret = ZephyrSocketWrapper::connectSSL((char*)host, port, cert); - if (ret) { - _connected = true; - } - return ret; - } + int connectSSL(const char *host, uint16_t port, char *cert) { + auto ret = ZephyrSocketWrapper::connectSSL((char *)host, port, cert); + if (ret) { + _connected = true; + } + return ret; + } #endif - uint8_t connected() override { - return _connected; - } - int available() override { - return ZephyrSocketWrapper::available(); - } - int read() override { - uint8_t c; - read(&c, 1); - return c; - } - int read(uint8_t* buffer, size_t size) override { - auto received = recv(buffer, size); + uint8_t connected() override { + return _connected; + } + + int available() override { + return ZephyrSocketWrapper::available(); + } + + int read() override { + uint8_t c; + read(&c, 1); + return c; + } + + int read(uint8_t *buffer, size_t size) override { + auto received = recv(buffer, size); - if (received == 0) { + if (received == 0) { return 0; } else if (received < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK) { @@ -62,28 +66,34 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper { return 0; } } - return received; - } - size_t write(uint8_t c) override { - return write(&c, 1); - } - size_t write(const uint8_t* buffer, size_t size) override { - return send(buffer, size); - } - void flush() override { - // No-op - } - int peek() override { - uint8_t c; - recv(&c, 1, MSG_PEEK); - return c; - } - void stop() override { - ZephyrSocketWrapper::close(); - _connected = false; - } - operator bool() { - return sock_fd != -1; - } - friend class ZephyrServer; -}; \ No newline at end of file + return received; + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t *buffer, size_t size) override { + return send(buffer, size); + } + + void flush() override { + // No-op + } + + int peek() override { + uint8_t c; + recv(&c, 1, MSG_PEEK); + return c; + } + + void stop() override { + ZephyrSocketWrapper::close(); + _connected = false; + } + + operator bool() { + return sock_fd != -1; + } + friend class ZephyrServer; +}; diff --git a/libraries/SocketWrapper/ZephyrSSLClient.h b/libraries/SocketWrapper/ZephyrSSLClient.h index 71f47aedd..2c7bd461a 100644 --- a/libraries/SocketWrapper/ZephyrSSLClient.h +++ b/libraries/SocketWrapper/ZephyrSSLClient.h @@ -10,11 +10,12 @@ class ZephyrSSLClient : public ZephyrClient { public: - int connect(const char* host, uint16_t port) override { - return connectSSL(host, port, nullptr); - } - int connect(const char* host, uint16_t port, char* cert) { - return connectSSL(host, port, cert); - } + int connect(const char *host, uint16_t port) override { + return connectSSL(host, port, nullptr); + } + + int connect(const char *host, uint16_t port, char *cert) { + return connectSSL(host, port, cert); + } }; -#endif \ No newline at end of file +#endif diff --git a/libraries/SocketWrapper/ZephyrServer.h b/libraries/SocketWrapper/ZephyrServer.h index 286f9cc54..d5385588d 100644 --- a/libraries/SocketWrapper/ZephyrServer.h +++ b/libraries/SocketWrapper/ZephyrServer.h @@ -7,50 +7,56 @@ class ZephyrServer : public arduino::Server, ZephyrSocketWrapper { private: - int _port; + int _port; public: - ZephyrServer() : _port(80){}; - ZephyrServer(uint16_t port) : _port(port){}; - - virtual ~ZephyrServer() { - end(); - } - void end() { - ZephyrSocketWrapper::close(); - } - void begin(uint16_t port) { - _port = port; - begin(); - } - void begin() { - ZephyrSocketWrapper::bind(_port); - ZephyrSocketWrapper::listen(5); - } - uint8_t status() { - return 0; - } - explicit operator bool() { - return sock_fd != -1; - } - - ZephyrClient accept(uint8_t* status = nullptr) { - ZephyrClient client; - int sock = ZephyrSocketWrapper::accept(); - client.setSocket(sock); - return client; - } - - ZephyrClient available(uint8_t* status = nullptr) __attribute__((deprecated("Use accept()."))) { - return accept(status); - } - - size_t write(uint8_t c) override { - return write(&c, 1); - } - size_t write(const uint8_t* buffer, size_t size) override { - return send(buffer, size); - } - - friend class ZephyrClient; -}; \ No newline at end of file + ZephyrServer() : _port(80) {}; + ZephyrServer(uint16_t port) : _port(port) {}; + + virtual ~ZephyrServer() { + end(); + } + + void end() { + ZephyrSocketWrapper::close(); + } + + void begin(uint16_t port) { + _port = port; + begin(); + } + + void begin() { + ZephyrSocketWrapper::bind(_port); + ZephyrSocketWrapper::listen(5); + } + + uint8_t status() { + return 0; + } + + explicit operator bool() { + return sock_fd != -1; + } + + ZephyrClient accept(uint8_t *status = nullptr) { + ZephyrClient client; + int sock = ZephyrSocketWrapper::accept(); + client.setSocket(sock); + return client; + } + + ZephyrClient available(uint8_t *status = nullptr) __attribute__((deprecated("Use accept()."))) { + return accept(status); + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t *buffer, size_t size) override { + return send(buffer, size); + } + + friend class ZephyrClient; +}; diff --git a/libraries/SocketWrapper/ZephyrUDP.h b/libraries/SocketWrapper/ZephyrUDP.h index d06202052..facf37229 100644 --- a/libraries/SocketWrapper/ZephyrUDP.h +++ b/libraries/SocketWrapper/ZephyrUDP.h @@ -31,300 +31,299 @@ class ZephyrUDP : public arduino::UDP { private: - int _socket; + int _socket; public: - ZephyrUDP() : _socket(-1) {} // Constructor - ~ZephyrUDP() { - stop(); - } - - // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use - virtual uint8_t begin(uint16_t port) { - - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = INADDR_ANY; - - _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - - zsock_ioctl(_socket, ZFD_IOCTL_FIONBIO); - - if (::bind(_socket, (struct sockaddr*)&addr, sizeof(addr)) < 0) { - ::close(_socket); - _socket = -1; - return false; - } - - return true; - } - - // initialize, start listening on specified multicast IP address and port. Returns 1 if successful, 0 if there are no sockets available to use - virtual uint8_t beginMulticast(IPAddress ip, uint16_t port) { - bool ret = begin(port); - if (ret == false) { - return false; - } - - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = ip; - - net_if_ipv4_maddr_join(net_if_get_by_index(1), net_if_ipv4_maddr_add(net_if_get_by_index(1), (struct in_addr*)&addr)); - return true; - } - - // Finish with the UDP socket - virtual void stop() { - if (_socket != -1) { - ::close(_socket); - _socket = -1; - } - } - - // Sending UDP packets - - // Start building up a packet to send to the remote host specific in ip and port - // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port - virtual int beginPacket(IPAddress ip, uint16_t port) { - _send_to_ip = ip; - _send_to_port = port; - - /* Make sure that the transmit data buffer is empty. */ - _tx_data.clear(); - return true; - } - - // Start building up a packet to send to the remote host specific in host and port - // Returns 1 if successful, 0 if there was a problem resolving the hostname or port - virtual int beginPacket(const char* host, uint16_t port) { - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_DGRAM; - - int resolve_attempts = 100; - int ret; - - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } - - if (ret != 0) { - return false; - } - - return beginPacket(IPAddress(((sockaddr_in*)(res->ai_addr))->sin_addr.s_addr), port); - } - - // Finish off this packet and send it - // Returns 1 if the packet was sent successfully, 0 if there was an error - virtual int endPacket() { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(_send_to_port); - addr.sin_addr.s_addr = _send_to_ip; - return ::sendto(_socket, _tx_data.data(), _tx_data.size(), 0, (sockaddr*)&addr, sizeof(addr)); - } - - // Write a single byte into the packet - virtual size_t write(uint8_t data) { - _tx_data.push_back(data); - return 1; - } - - // Write size bytes from buffer into the packet - virtual size_t write(uint8_t* buffer, size_t size) { - std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); - return size; - } - - // Write size bytes from buffer into the packet - virtual size_t write(const uint8_t* buffer, size_t size) { - std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); - return size; - } - - using Print::write; - - int parsePacket() - { - struct sockaddr_in addr; - socklen_t addrlen = sizeof(addr); - uint8_t tmp_buf[512]; - - int ret = ::recvfrom(_socket, tmp_buf, sizeof(tmp_buf), 0, (sockaddr*)&addr, &addrlen); - if (ret > 0) - { - auto pkt = std::make_shared( - IPAddress(addr.sin_addr.s_addr), - ntohs(addr.sin_port), tmp_buf, ret); - - _rx_pkt_list.push_back(pkt); - - // drop the oldest packet if the list is full - if(_rx_pkt_list.size() > _rx_pkt_list_size) { - _rx_pkt_list.pop_front(); - } - } - - if (_rx_pkt_list.size()) - { - /* Discard UdpRxPacket object previously held by _rx_pkt - * and replace it with the new one. - */ - _rx_pkt = _rx_pkt_list.front(); - _rx_pkt_list.pop_front(); - return _rx_pkt->totalSize(); - } - else - { - /* Otherwise ensure that _rx_pkt definitely - * does not hold any UdpRxPacket object anymore. - */ - _rx_pkt.reset(); - return 0; - } - } - - int available() - { - if (_rx_pkt) - return _rx_pkt->available(); - else - return 0; - } - - int read() - { - if (_rx_pkt) - return _rx_pkt->read(); - else - return -1; - } - - int read(unsigned char* buffer, size_t len) - { - if (_rx_pkt) - return _rx_pkt->read(buffer, len); - else - return -1; - } - - int read(char* buffer, size_t len) - { - if (_rx_pkt) - return _rx_pkt->read(buffer, len); - else - return -1; - } - - int peek() - { - if (_rx_pkt) - return _rx_pkt->peek(); - else - return -1; - } - - void flush() - { - /* Delete UdpRxPacket object held by _rx_pkt. */ - if (_rx_pkt) - _rx_pkt.reset(); - } - - virtual IPAddress remoteIP() { - if (_rx_pkt) - return _rx_pkt->remoteIP(); - else - return IPAddress(); - } - - virtual uint16_t remotePort() { - if (_rx_pkt) - return _rx_pkt->remotePort(); - else - return 0; - } + ZephyrUDP() : _socket(-1) { + } // Constructor + + ~ZephyrUDP() { + stop(); + } + + // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no + // sockets available to use + virtual uint8_t begin(uint16_t port) { + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_ANY; + + _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + + zsock_ioctl(_socket, ZFD_IOCTL_FIONBIO); + + if (::bind(_socket, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + ::close(_socket); + _socket = -1; + return false; + } + + return true; + } + + // initialize, start listening on specified multicast IP address and port. Returns 1 if + // successful, 0 if there are no sockets available to use + virtual uint8_t beginMulticast(IPAddress ip, uint16_t port) { + bool ret = begin(port); + if (ret == false) { + return false; + } + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = ip; + + net_if_ipv4_maddr_join( + net_if_get_by_index(1), + net_if_ipv4_maddr_add(net_if_get_by_index(1), (struct in_addr *)&addr)); + return true; + } + + // Finish with the UDP socket + virtual void stop() { + if (_socket != -1) { + ::close(_socket); + _socket = -1; + } + } + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) { + _send_to_ip = ip; + _send_to_port = port; + + /* Make sure that the transmit data buffer is empty. */ + _tx_data.clear(); + return true; + } + + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) { + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + int resolve_attempts = 100; + int ret; + + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } + + if (ret != 0) { + return false; + } + + return beginPacket(IPAddress(((sockaddr_in *)(res->ai_addr))->sin_addr.s_addr), port); + } + + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() { + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(_send_to_port); + addr.sin_addr.s_addr = _send_to_ip; + return ::sendto(_socket, _tx_data.data(), _tx_data.size(), 0, (sockaddr *)&addr, + sizeof(addr)); + } + + // Write a single byte into the packet + virtual size_t write(uint8_t data) { + _tx_data.push_back(data); + return 1; + } + + // Write size bytes from buffer into the packet + virtual size_t write(uint8_t *buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + using Print::write; + + int parsePacket() { + struct sockaddr_in addr; + socklen_t addrlen = sizeof(addr); + uint8_t tmp_buf[512]; + + int ret = ::recvfrom(_socket, tmp_buf, sizeof(tmp_buf), 0, (sockaddr *)&addr, &addrlen); + if (ret > 0) { + auto pkt = std::make_shared(IPAddress(addr.sin_addr.s_addr), + ntohs(addr.sin_port), tmp_buf, ret); + + _rx_pkt_list.push_back(pkt); + + // drop the oldest packet if the list is full + if (_rx_pkt_list.size() > _rx_pkt_list_size) { + _rx_pkt_list.pop_front(); + } + } + + if (_rx_pkt_list.size()) { + /* Discard UdpRxPacket object previously held by _rx_pkt + * and replace it with the new one. + */ + _rx_pkt = _rx_pkt_list.front(); + _rx_pkt_list.pop_front(); + return _rx_pkt->totalSize(); + } else { + /* Otherwise ensure that _rx_pkt definitely + * does not hold any UdpRxPacket object anymore. + */ + _rx_pkt.reset(); + return 0; + } + } + + int available() { + if (_rx_pkt) { + return _rx_pkt->available(); + } else { + return 0; + } + } + + int read() { + if (_rx_pkt) { + return _rx_pkt->read(); + } else { + return -1; + } + } + + int read(unsigned char *buffer, size_t len) { + if (_rx_pkt) { + return _rx_pkt->read(buffer, len); + } else { + return -1; + } + } + + int read(char *buffer, size_t len) { + if (_rx_pkt) { + return _rx_pkt->read(buffer, len); + } else { + return -1; + } + } + + int peek() { + if (_rx_pkt) { + return _rx_pkt->peek(); + } else { + return -1; + } + } + + void flush() { + /* Delete UdpRxPacket object held by _rx_pkt. */ + if (_rx_pkt) { + _rx_pkt.reset(); + } + } + + virtual IPAddress remoteIP() { + if (_rx_pkt) { + return _rx_pkt->remoteIP(); + } else { + return IPAddress(); + } + } + + virtual uint16_t remotePort() { + if (_rx_pkt) { + return _rx_pkt->remotePort(); + } else { + return 0; + } + } private: - - /* UDP TRANSMISSION */ - IPAddress _send_to_ip; - uint16_t _send_to_port; - std::vector _tx_data; - int _rx_pkt_list_size = 10; - /* UDP RECEPTION */ - class UdpRxPacket - { - private: - IPAddress const _remote_ip; - uint16_t const _remote_port; - size_t const _rx_data_len; - std::deque _rx_data; - - public: - UdpRxPacket( - IPAddress const remote_ip, - uint16_t const remote_port, - uint8_t const * p_data, - size_t const data_len) - : _remote_ip(remote_ip) - , _remote_port(remote_port) - , _rx_data_len(data_len) - , _rx_data(p_data, p_data + data_len) - { - } - - typedef std::shared_ptr SharedPtr; - - IPAddress remoteIP() const { return _remote_ip; } - uint16_t remotePort() const { return _remote_port; } - size_t totalSize() const { return _rx_data_len; } - - int available() - { - return _rx_data.size(); - } - - int read() - { - uint8_t const data = _rx_data.front(); - _rx_data.pop_front(); - return data; - } - - int read(unsigned char* buffer, size_t len) - { - size_t bytes_read = 0; - for (; bytes_read < len && !_rx_data.empty(); bytes_read++) - { - buffer[bytes_read] = _rx_data.front(); - _rx_data.pop_front(); - } - return bytes_read; - } - - int read(char* buffer, size_t len) - { - return read((unsigned char*)buffer, len); - } - - int peek() - { - return _rx_data.front(); - } - }; - std::list _rx_pkt_list; - UdpRxPacket::SharedPtr _rx_pkt; -}; \ No newline at end of file + /* UDP TRANSMISSION */ + IPAddress _send_to_ip; + uint16_t _send_to_port; + std::vector _tx_data; + int _rx_pkt_list_size = 10; + + /* UDP RECEPTION */ + class UdpRxPacket { + private: + IPAddress const _remote_ip; + uint16_t const _remote_port; + size_t const _rx_data_len; + std::deque _rx_data; + + public: + UdpRxPacket(IPAddress const remote_ip, uint16_t const remote_port, uint8_t const *p_data, + size_t const data_len) + : _remote_ip(remote_ip), _remote_port(remote_port), _rx_data_len(data_len), + _rx_data(p_data, p_data + data_len) { + } + + typedef std::shared_ptr SharedPtr; + + IPAddress remoteIP() const { + return _remote_ip; + } + + uint16_t remotePort() const { + return _remote_port; + } + + size_t totalSize() const { + return _rx_data_len; + } + + int available() { + return _rx_data.size(); + } + + int read() { + uint8_t const data = _rx_data.front(); + _rx_data.pop_front(); + return data; + } + + int read(unsigned char *buffer, size_t len) { + size_t bytes_read = 0; + for (; bytes_read < len && !_rx_data.empty(); bytes_read++) { + buffer[bytes_read] = _rx_data.front(); + _rx_data.pop_front(); + } + return bytes_read; + } + + int read(char *buffer, size_t len) { + return read((unsigned char *)buffer, len); + } + + int peek() { + return _rx_data.front(); + } + }; + + std::list _rx_pkt_list; + UdpRxPacket::SharedPtr _rx_pkt; +}; diff --git a/libraries/SocketWrapper/utility/wl_definitions.h b/libraries/SocketWrapper/utility/wl_definitions.h index 1c49a7af3..59128dc73 100644 --- a/libraries/SocketWrapper/utility/wl_definitions.h +++ b/libraries/SocketWrapper/utility/wl_definitions.h @@ -24,54 +24,54 @@ #define WL_DEFINITIONS_H_ // Maximum size of a SSID -#define WL_SSID_MAX_LENGTH 32 +#define WL_SSID_MAX_LENGTH 32 // Length of passphrase. Valid lengths are 8-63. -#define WL_WPA_KEY_MAX_LENGTH 63 +#define WL_WPA_KEY_MAX_LENGTH 63 // Length of key in bytes. Valid values are 5 and 13. -#define WL_WEP_KEY_MAX_LENGTH 13 +#define WL_WEP_KEY_MAX_LENGTH 13 // Size of a MAC-address or BSSID -#define WL_MAC_ADDR_LENGTH 6 +#define WL_MAC_ADDR_LENGTH 6 // Size of a MAC-address or BSSID -#define WL_IPV4_LENGTH 4 +#define WL_IPV4_LENGTH 4 // Maximum size of a SSID list -#define WL_NETWORKS_LIST_MAXNUM 10 +#define WL_NETWORKS_LIST_MAXNUM 10 // Maxmium number of socket -#define MAX_SOCK_NUM 4 +#define MAX_SOCK_NUM 4 // Socket not available constant -#define SOCK_NOT_AVAIL 255 +#define SOCK_NOT_AVAIL 255 // Default state value for Wifi state field -#define NA_STATE -1 -//Maximum number of attempts to establish wifi connection -#define WL_MAX_ATTEMPT_CONNECTION 10 +#define NA_STATE -1 +// Maximum number of attempts to establish wifi connection +#define WL_MAX_ATTEMPT_CONNECTION 10 typedef enum { - WL_NO_SHIELD = 255, - WL_NO_MODULE = 255, - WL_IDLE_STATUS = 0, - WL_NO_SSID_AVAIL, - WL_SCAN_COMPLETED, - WL_CONNECTED, - WL_CONNECT_FAILED, - WL_CONNECTION_LOST, - WL_DISCONNECTED, - WL_AP_LISTENING, - WL_AP_CONNECTED, - WL_AP_FAILED + WL_NO_SHIELD = 255, + WL_NO_MODULE = 255, + WL_IDLE_STATUS = 0, + WL_NO_SSID_AVAIL, + WL_SCAN_COMPLETED, + WL_CONNECTED, + WL_CONNECT_FAILED, + WL_CONNECTION_LOST, + WL_DISCONNECTED, + WL_AP_LISTENING, + WL_AP_CONNECTED, + WL_AP_FAILED } wl_status_t; /* Encryption modes */ -enum wl_enc_type { /* Values map to 802.11 Cipher Algorithm Identifier */ - ENC_TYPE_WEP = 5, - ENC_TYPE_TKIP = 2, - ENC_TYPE_WPA = ENC_TYPE_TKIP, - ENC_TYPE_CCMP = 4, - ENC_TYPE_WPA2 = ENC_TYPE_CCMP, - ENC_TYPE_GCMP = 6, - ENC_TYPE_WPA3 = ENC_TYPE_GCMP, - /* ... except these two, 7 and 8 are reserved in 802.11-2007 */ - ENC_TYPE_NONE = 7, - ENC_TYPE_UNKNOWN = 9, - ENC_TYPE_AUTO = 8 +enum wl_enc_type { /* Values map to 802.11 Cipher Algorithm Identifier */ + ENC_TYPE_WEP = 5, + ENC_TYPE_TKIP = 2, + ENC_TYPE_WPA = ENC_TYPE_TKIP, + ENC_TYPE_CCMP = 4, + ENC_TYPE_WPA2 = ENC_TYPE_CCMP, + ENC_TYPE_GCMP = 6, + ENC_TYPE_WPA3 = ENC_TYPE_GCMP, + /* ... except these two, 7 and 8 are reserved in 802.11-2007 */ + ENC_TYPE_NONE = 7, + ENC_TYPE_UNKNOWN = 9, + ENC_TYPE_AUTO = 8 }; -#endif /* WL_DEFINITIONS_H_ */ \ No newline at end of file +#endif /* WL_DEFINITIONS_H_ */ diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 0fd34ff6f..18ec6140c 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -9,218 +9,215 @@ #include // Helper function to get ZephyrI2C instance from config pointer. -static arduino::ZephyrI2C* getInstance(struct i2c_target_config *config) { - return reinterpret_cast( - reinterpret_cast(config) - offsetof(arduino::ZephyrI2C, i2c_cfg) - ); +static arduino::ZephyrI2C *getInstance(struct i2c_target_config *config) { + return reinterpret_cast(reinterpret_cast(config) - + offsetof(arduino::ZephyrI2C, i2c_cfg)); } static int i2c_target_stop_cb(struct i2c_target_config *config) { - arduino::ZephyrI2C *instance = getInstance(config); - return instance->stopCallback(config); + arduino::ZephyrI2C *instance = getInstance(config); + return instance->stopCallback(config); } static int i2c_target_write_requested_cb(struct i2c_target_config *config) { - arduino::ZephyrI2C *instance = getInstance(config); - return instance->writeRequestedCallback(config); + arduino::ZephyrI2C *instance = getInstance(config); + return instance->writeRequestedCallback(config); } static int i2c_target_write_received_cb(struct i2c_target_config *config, uint8_t val) { - arduino::ZephyrI2C *instance = getInstance(config); - return instance->writeReceivedCallback(config, val); + arduino::ZephyrI2C *instance = getInstance(config); + return instance->writeReceivedCallback(config, val); } static int i2c_target_read_requested_cb(struct i2c_target_config *config, uint8_t *val) { - arduino::ZephyrI2C *instance = getInstance(config); - return instance->readRequestedCallback(config, val); + arduino::ZephyrI2C *instance = getInstance(config); + return instance->readRequestedCallback(config, val); } static int i2c_target_read_processed_cb(struct i2c_target_config *config, uint8_t *val) { - arduino::ZephyrI2C *instance = getInstance(config); - return instance->readProcessedCallback(config, val); + arduino::ZephyrI2C *instance = getInstance(config); + return instance->readProcessedCallback(config, val); } // I2C target callback structure. static struct i2c_target_callbacks target_callbacks = { - .write_requested = i2c_target_write_requested_cb, - .read_requested = i2c_target_read_requested_cb, - .write_received = i2c_target_write_received_cb, - .read_processed = i2c_target_read_processed_cb, - .stop = i2c_target_stop_cb, + .write_requested = i2c_target_write_requested_cb, + .read_requested = i2c_target_read_requested_cb, + .write_received = i2c_target_write_received_cb, + .read_processed = i2c_target_read_processed_cb, + .stop = i2c_target_stop_cb, }; arduino::ZephyrI2C::ZephyrI2C(const struct device *i2c) : i2c_dev(i2c), i2c_cfg({0}) { - ring_buf_init(&txRingBuffer.rb, sizeof(txRingBuffer.buffer), txRingBuffer.buffer); - ring_buf_init(&rxRingBuffer.rb, sizeof(rxRingBuffer.buffer), rxRingBuffer.buffer); + ring_buf_init(&txRingBuffer.rb, sizeof(txRingBuffer.buffer), txRingBuffer.buffer); + ring_buf_init(&rxRingBuffer.rb, sizeof(rxRingBuffer.buffer), rxRingBuffer.buffer); } void arduino::ZephyrI2C::begin() { - } void arduino::ZephyrI2C::begin(uint8_t slaveAddr) { - i2c_cfg.address = slaveAddr; - i2c_cfg.callbacks = &target_callbacks; + i2c_cfg.address = slaveAddr; + i2c_cfg.callbacks = &target_callbacks; - // Register I2C target - i2c_target_register(i2c_dev, &i2c_cfg); + // Register I2C target + i2c_target_register(i2c_dev, &i2c_cfg); } void arduino::ZephyrI2C::end() { - // Unregister I2C target - if (i2c_cfg.address) { - i2c_target_unregister(i2c_dev, &i2c_cfg); - memset(&i2c_cfg, 0, sizeof(i2c_cfg)); - } + // Unregister I2C target + if (i2c_cfg.address) { + i2c_target_unregister(i2c_dev, &i2c_cfg); + memset(&i2c_cfg, 0, sizeof(i2c_cfg)); + } } void arduino::ZephyrI2C::setClock(uint32_t freq) { - uint8_t speed; + uint8_t speed; - if (freq == 100000) { - speed = I2C_SPEED_STANDARD; - } else if (freq == 400000) { - speed = I2C_SPEED_FAST; - } else if (freq == 1000000) { - speed = I2C_SPEED_FAST_PLUS; - } else { - speed = I2C_SPEED_STANDARD; - } + if (freq == 100000) { + speed = I2C_SPEED_STANDARD; + } else if (freq == 400000) { + speed = I2C_SPEED_FAST; + } else if (freq == 1000000) { + speed = I2C_SPEED_FAST_PLUS; + } else { + speed = I2C_SPEED_STANDARD; + } - i2c_configure(i2c_dev, I2C_SPEED_SET(speed) | I2C_MODE_CONTROLLER); + i2c_configure(i2c_dev, I2C_SPEED_SET(speed) | I2C_MODE_CONTROLLER); } void arduino::ZephyrI2C::beginTransmission(uint8_t address) { - _address = address; - ring_buf_reset(&txRingBuffer.rb); - ring_buf_reset(&rxRingBuffer.rb); + _address = address; + ring_buf_reset(&txRingBuffer.rb); + ring_buf_reset(&rxRingBuffer.rb); } uint8_t arduino::ZephyrI2C::endTransmission(bool stopBit) { - int ret = -EIO; - uint8_t *buf = NULL; - size_t max = ring_buf_capacity_get(&txRingBuffer.rb); - size_t len = ring_buf_get_claim(&txRingBuffer.rb, &buf, max); + int ret = -EIO; + uint8_t *buf = NULL; + size_t max = ring_buf_capacity_get(&txRingBuffer.rb); + size_t len = ring_buf_get_claim(&txRingBuffer.rb, &buf, max); - ret = i2c_write(i2c_dev, buf, len, _address); + ret = i2c_write(i2c_dev, buf, len, _address); - // Must be called even if 0 bytes claimed. - ring_buf_get_finish(&txRingBuffer.rb, len); + // Must be called even if 0 bytes claimed. + ring_buf_get_finish(&txRingBuffer.rb, len); - return ret ? 1 : 0; + return ret ? 1 : 0; } uint8_t arduino::ZephyrI2C::endTransmission(void) { - return endTransmission(true); + return endTransmission(true); } size_t arduino::ZephyrI2C::requestFrom(uint8_t address, size_t len_in, bool stopBit) { - int ret = -EIO; - uint8_t *buf = NULL; - size_t len = ring_buf_put_claim(&rxRingBuffer.rb, &buf, len_in); + int ret = -EIO; + uint8_t *buf = NULL; + size_t len = ring_buf_put_claim(&rxRingBuffer.rb, &buf, len_in); - if (len && buf) { - ret = i2c_read(i2c_dev, buf, len, address); - } + if (len && buf) { + ret = i2c_read(i2c_dev, buf, len, address); + } - // Must be called even if 0 bytes claimed. - ring_buf_put_finish(&rxRingBuffer.rb, len); + // Must be called even if 0 bytes claimed. + ring_buf_put_finish(&rxRingBuffer.rb, len); - return ret ? 0 : len; + return ret ? 0 : len; } size_t arduino::ZephyrI2C::requestFrom(uint8_t address, size_t len) { - return requestFrom(address, len, true); + return requestFrom(address, len, true); } size_t arduino::ZephyrI2C::write(uint8_t data) { - return ring_buf_put(&txRingBuffer.rb, &data, 1); + return ring_buf_put(&txRingBuffer.rb, &data, 1); } size_t arduino::ZephyrI2C::write(const uint8_t *buffer, size_t size) { - return ring_buf_put(&txRingBuffer.rb, buffer, size); + return ring_buf_put(&txRingBuffer.rb, buffer, size); } int arduino::ZephyrI2C::read() { - uint8_t buf; - if (ring_buf_get(&rxRingBuffer.rb, &buf, 1)) { - return (int) buf; - } - return -1; + uint8_t buf; + if (ring_buf_get(&rxRingBuffer.rb, &buf, 1)) { + return (int)buf; + } + return -1; } int arduino::ZephyrI2C::available() { - return ring_buf_size_get(&rxRingBuffer.rb); + return ring_buf_size_get(&rxRingBuffer.rb); } int arduino::ZephyrI2C::peek() { - uint8_t buf; - if (ring_buf_peek(&rxRingBuffer.rb, &buf, 1)) { - return (int) buf; - } - return -1; + uint8_t buf; + if (ring_buf_peek(&rxRingBuffer.rb, &buf, 1)) { + return (int)buf; + } + return -1; } void arduino::ZephyrI2C::flush() { - } void arduino::ZephyrI2C::onReceive(voidFuncPtrParamInt cb) { - onReceiveCb = cb; + onReceiveCb = cb; } void arduino::ZephyrI2C::onRequest(voidFuncPtr cb) { - onRequestCb = cb; + onRequestCb = cb; } int arduino::ZephyrI2C::writeRequestedCallback(struct i2c_target_config *config) { - // Reset the buffer on write requests. - ring_buf_reset(&rxRingBuffer.rb); - return 0; + // Reset the buffer on write requests. + ring_buf_reset(&rxRingBuffer.rb); + return 0; } int arduino::ZephyrI2C::writeReceivedCallback(struct i2c_target_config *config, uint8_t val) { - size_t len = ring_buf_size_get(&rxRingBuffer.rb); - size_t max = ring_buf_capacity_get(&rxRingBuffer.rb); + size_t len = ring_buf_size_get(&rxRingBuffer.rb); + size_t max = ring_buf_capacity_get(&rxRingBuffer.rb); - // If the buffer is about to overflow, invoke the callback - // with the current length. - if (onReceiveCb && ((len + 1) > max)) { - onReceiveCb(len); - } + // If the buffer is about to overflow, invoke the callback + // with the current length. + if (onReceiveCb && ((len + 1) > max)) { + onReceiveCb(len); + } - return ring_buf_put(&rxRingBuffer.rb, &val, 1) ? 0 : -1; + return ring_buf_put(&rxRingBuffer.rb, &val, 1) ? 0 : -1; } int arduino::ZephyrI2C::readRequestedCallback(struct i2c_target_config *config, uint8_t *val) { - // Reset the buffer on read requests. - ring_buf_reset(&txRingBuffer.rb); + // Reset the buffer on read requests. + ring_buf_reset(&txRingBuffer.rb); - if (onRequestCb) { - onRequestCb(); - } + if (onRequestCb) { + onRequestCb(); + } - return readProcessedCallback(config, val); + return readProcessedCallback(config, val); } int arduino::ZephyrI2C::readProcessedCallback(struct i2c_target_config *config, uint8_t *val) { - *val = 0xFF; - ring_buf_get(&txRingBuffer.rb, val, 1); - // Returning a negative value here is not handled gracefully and - // causes the target/board to stop responding (at least with ST). - return 0; + *val = 0xFF; + ring_buf_get(&txRingBuffer.rb, val, 1); + // Returning a negative value here is not handled gracefully and + // causes the target/board to stop responding (at least with ST). + return 0; } int arduino::ZephyrI2C::stopCallback(struct i2c_target_config *config) { - // If the RX buffer is not empty invoke the callback with the - // remaining data length. - if (onReceiveCb) { - size_t len = ring_buf_size_get(&rxRingBuffer.rb); - if (len) { - onReceiveCb(len); - } - } - return 0; + // If the RX buffer is not empty invoke the callback with the + // remaining data length. + if (onReceiveCb) { + size_t len = ring_buf_size_get(&rxRingBuffer.rb); + if (len) { + onReceiveCb(len); + } + } + return 0; } #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), i2cs) diff --git a/libraries/Wire/Wire.h b/libraries/Wire/Wire.h index cb5fb0c77..47b126965 100644 --- a/libraries/Wire/Wire.h +++ b/libraries/Wire/Wire.h @@ -16,56 +16,60 @@ typedef void (*voidFuncPtrParamInt)(int); namespace arduino { struct i2c_ring { - struct ring_buf rb; - uint8_t buffer[256]; + struct ring_buf rb; + uint8_t buffer[256]; }; class ZephyrI2C : public HardwareI2C { public: - ZephyrI2C(const struct device* i2c); + ZephyrI2C(const struct device *i2c); - virtual void begin(); - virtual void end(); - virtual void begin(uint8_t address); - virtual void setClock(uint32_t freq); + virtual void begin(); + virtual void end(); + virtual void begin(uint8_t address); + virtual void setClock(uint32_t freq); - virtual void beginTransmission(uint8_t address); - virtual uint8_t endTransmission(bool stopBit); - virtual uint8_t endTransmission(void); + virtual void beginTransmission(uint8_t address); + virtual uint8_t endTransmission(bool stopBit); + virtual uint8_t endTransmission(void); - virtual size_t requestFrom(uint8_t address, size_t len, bool stopBit); - virtual size_t requestFrom(uint8_t address, size_t len); + virtual size_t requestFrom(uint8_t address, size_t len, bool stopBit); + virtual size_t requestFrom(uint8_t address, size_t len); - virtual void onReceive(void (*)(int)); - virtual void onRequest(void (*)(void)); + virtual void onReceive(void (*)(int)); + virtual void onRequest(void (*)(void)); - virtual size_t write(uint8_t data); - virtual size_t write(int data) { return write((uint8_t)data); }; - virtual size_t write(const uint8_t *buffer, size_t size); - using Print::write; - virtual int read(); - virtual int peek(); - virtual void flush(); - virtual int available(); + virtual size_t write(uint8_t data); - // I2C target callbacks - int writeRequestedCallback(struct i2c_target_config *config); - int writeReceivedCallback(struct i2c_target_config *config, uint8_t val); - int readRequestedCallback(struct i2c_target_config *config, uint8_t *val); - int readProcessedCallback(struct i2c_target_config *config, uint8_t *val); - int stopCallback(struct i2c_target_config *config); + virtual size_t write(int data) { + return write((uint8_t)data); + }; - struct i2c_target_config i2c_cfg; + virtual size_t write(const uint8_t *buffer, size_t size); + using Print::write; + virtual int read(); + virtual int peek(); + virtual void flush(); + virtual int available(); + + // I2C target callbacks + int writeRequestedCallback(struct i2c_target_config *config); + int writeReceivedCallback(struct i2c_target_config *config, uint8_t val); + int readRequestedCallback(struct i2c_target_config *config, uint8_t *val); + int readProcessedCallback(struct i2c_target_config *config, uint8_t *val); + int stopCallback(struct i2c_target_config *config); + + struct i2c_target_config i2c_cfg; private: - int _address; + int _address; - struct i2c_ring txRingBuffer; - struct i2c_ring rxRingBuffer; - const struct device *i2c_dev; + struct i2c_ring txRingBuffer; + struct i2c_ring rxRingBuffer; + const struct device *i2c_dev; - voidFuncPtr onRequestCb = NULL; - voidFuncPtrParamInt onReceiveCb = NULL; + voidFuncPtr onRequestCb = NULL; + voidFuncPtrParamInt onReceiveCb = NULL; }; } // namespace arduino diff --git a/libraries/Zephyr_SDRAM/src/SDRAM.cpp b/libraries/Zephyr_SDRAM/src/SDRAM.cpp index 23c93f031..76fa2f850 100644 --- a/libraries/Zephyr_SDRAM/src/SDRAM.cpp +++ b/libraries/Zephyr_SDRAM/src/SDRAM.cpp @@ -3,67 +3,70 @@ int SDRAMClass::begin(uint32_t start_address) { if (start_address) { - malloc_addblock((void*)start_address, SDRAM_END_ADDRESS - start_address); + malloc_addblock((void *)start_address, SDRAM_END_ADDRESS - start_address); } return 1; } -void* SDRAMClass::malloc(size_t size) { +void *SDRAMClass::malloc(size_t size) { return ea_malloc(size); } -void SDRAMClass::free(void* ptr) { +void SDRAMClass::free(void *ptr) { ea_free(ptr); } -bool SDRAMClass::test(bool fast, Stream& _serial) { - uint8_t const pattern = 0xaa; - uint8_t const antipattern = 0x55; - uint8_t *const mem_base = (uint8_t*)SDRAM_START_ADDRESS; +bool SDRAMClass::test(bool fast, Stream &_serial) { + uint8_t const pattern = 0xaa; + uint8_t const antipattern = 0x55; + uint8_t *const mem_base = (uint8_t *)SDRAM_START_ADDRESS; - /* test data bus */ - for (uint8_t i = 1; i; i <<= 1) { - *mem_base = i; - if (*mem_base != i) { - _serial.println("data bus lines test failed! data (" + String(i) + ")"); - __asm__ volatile ("BKPT"); - } - } + /* test data bus */ + for (uint8_t i = 1; i; i <<= 1) { + *mem_base = i; + if (*mem_base != i) { + _serial.println("data bus lines test failed! data (" + String(i) + ")"); + __asm__ volatile("BKPT"); + } + } - /* test address bus */ - /* Check individual address lines */ - for (uint32_t i = 1; i < HW_SDRAM_SIZE; i <<= 1) { - mem_base[i] = pattern; - if (mem_base[i] != pattern) { - _serial.println("address bus lines test failed! address ("+ String((uint32_t)&mem_base[i], HEX) + ")"); - __asm__ volatile ("BKPT"); - } - } + /* test address bus */ + /* Check individual address lines */ + for (uint32_t i = 1; i < HW_SDRAM_SIZE; i <<= 1) { + mem_base[i] = pattern; + if (mem_base[i] != pattern) { + _serial.println("address bus lines test failed! address (" + + String((uint32_t)&mem_base[i], HEX) + ")"); + __asm__ volatile("BKPT"); + } + } - /* Check for aliasing (overlaping addresses) */ - mem_base[0] = antipattern; - for (uint32_t i = 1; i < HW_SDRAM_SIZE; i <<= 1) { - if (mem_base[i] != pattern) { - _serial.println("address bus overlap! address ("+ String((uint32_t)&mem_base[i], HEX) + ")"); - __asm__ volatile ("BKPT"); - } - } + /* Check for aliasing (overlaping addresses) */ + mem_base[0] = antipattern; + for (uint32_t i = 1; i < HW_SDRAM_SIZE; i <<= 1) { + if (mem_base[i] != pattern) { + _serial.println("address bus overlap! address (" + String((uint32_t)&mem_base[i], HEX) + + ")"); + __asm__ volatile("BKPT"); + } + } - /* test all ram cells */ - if (!fast) { - for (uint32_t i = 0; i < HW_SDRAM_SIZE; ++i) { - mem_base[i] = pattern; - if (mem_base[i] != pattern) { - _serial.println("address bus test failed! address ("+ String((uint32_t)&mem_base[i], HEX) + ")"); - __asm__ volatile ("BKPT"); - } - } - } else { - memset(mem_base, pattern, HW_SDRAM_SIZE); - } + /* test all ram cells */ + if (!fast) { + for (uint32_t i = 0; i < HW_SDRAM_SIZE; ++i) { + mem_base[i] = pattern; + if (mem_base[i] != pattern) { + _serial.println("address bus test failed! address (" + + String((uint32_t)&mem_base[i], HEX) + ")"); + __asm__ volatile("BKPT"); + } + } + } else { + memset(mem_base, pattern, HW_SDRAM_SIZE); + } - return true; + return true; } -SDRAMClass SDRAM; \ No newline at end of file +SDRAMClass SDRAM; diff --git a/libraries/Zephyr_SDRAM/src/SDRAM.h b/libraries/Zephyr_SDRAM/src/SDRAM.h index 853b705ac..f7991cbf7 100644 --- a/libraries/Zephyr_SDRAM/src/SDRAM.h +++ b/libraries/Zephyr_SDRAM/src/SDRAM.h @@ -7,20 +7,23 @@ #include "Arduino.h" -#define SDRAM_END_ADDRESS (0xc0800000) -#define SDRAM_START_ADDRESS (0xc0000000) -#define HW_SDRAM_SIZE (8 * 1024 * 1024) +#define SDRAM_END_ADDRESS (0xc0800000) +#define SDRAM_START_ADDRESS (0xc0000000) +#define HW_SDRAM_SIZE (8 * 1024 * 1024) class SDRAMClass { public: - SDRAMClass() {} + SDRAMClass() { + } + int begin(uint32_t start_address = SDRAM_START_ADDRESS); - void* malloc(size_t size); - void free(void* ptr); - bool test(bool fast = false, Stream& _serial = Serial); -private: + void *malloc(size_t size); + void free(void *ptr); + bool test(bool fast = false, Stream &_serial = Serial); +private: }; + extern SDRAMClass SDRAM; #endif diff --git a/loader/fixups.c b/loader/fixups.c index 22129659f..0a64442fc 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -1,7 +1,7 @@ #include #include -int disable_mpu_rasr_xn(void) -{ + +int disable_mpu_rasr_xn(void) { uint32_t index; /* Kept the max index as 8(irrespective of soc) because the sram * would most likely be set at index 2. @@ -30,8 +30,9 @@ int disable_bootloader_mpu() { __DMB(); MPU->CTRL = 0; __enable_irq(); - return 0; + return 0; } + SYS_INIT(disable_bootloader_mpu, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #endif @@ -40,13 +41,13 @@ SYS_INIT(disable_mpu_rasr_xn, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT) #endif #if defined(CONFIG_SOC_STM32H747XX_M7) -int enable_bkp_access(void) -{ +int enable_bkp_access(void) { /* Enable access to the backup domain */ // HAL_PWR_EnableBkUpAccess(); SET_BIT(PWR->CR1, PWR_CR1_DBP); return 0; } + SYS_INIT(enable_bkp_access, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #endif @@ -65,7 +66,7 @@ void zephyr_input_register_callback(zephyr_input_callback_t cb) { static void zephyr_input_callback(struct input_event *evt, void *user_data) { if (zephyr_input_cb) { zephyr_input_cb(evt, user_data); - } + } } INPUT_CALLBACK_DEFINE(NULL, zephyr_input_callback, NULL); @@ -77,8 +78,7 @@ INPUT_CALLBACK_DEFINE(NULL, zephyr_input_callback, NULL); #include #include -int camera_ext_clock_enable(void) -{ +int camera_ext_clock_enable(void) { int ret; uint32_t rate; const struct device *cam_ext_clk_dev = DEVICE_DT_GET(DT_NODELABEL(pwmclock)); @@ -109,25 +109,25 @@ SYS_INIT(camera_ext_clock_enable, POST_KERNEL, CONFIG_CLOCK_CONTROL_PWM_INIT_PRI #include #include -__stm32_sdram1_section static uint8_t __aligned(32) smh_pool[4*1024*1024]; +__stm32_sdram1_section static uint8_t __aligned(32) smh_pool[4 * 1024 * 1024]; int smh_init(void) { - int ret = 0; - ret = shared_multi_heap_pool_init(); - if (ret != 0) { - return ret; - } - - struct shared_multi_heap_region smh_sdram = { - .addr = (uintptr_t) smh_pool, - .size = sizeof(smh_pool), - .attr = SMH_REG_ATTR_EXTERNAL, - }; - - ret = shared_multi_heap_add(&smh_sdram, NULL); - if (ret != 0) { - return ret; - } + int ret = 0; + ret = shared_multi_heap_pool_init(); + if (ret != 0) { + return ret; + } + + struct shared_multi_heap_region smh_sdram = { + .addr = (uintptr_t)smh_pool, + .size = sizeof(smh_pool), + .attr = SMH_REG_ATTR_EXTERNAL, + }; + + ret = shared_multi_heap_add(&smh_sdram, NULL); + if (ret != 0) { + return ret; + } return 0; } @@ -138,12 +138,11 @@ SYS_INIT(smh_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #include #include -int maybe_flash_bootloader(void) -{ +int maybe_flash_bootloader(void) { // memcmp the first 256bytes of "embedded bootloader" and address 0x0 // if they are different, flash the bootloader const uint8_t embedded_bootloader[] = { - #include "c33_bl_patch/c33_bl.bin.inc" +#include "c33_bl_patch/c33_bl.bin.inc" }; const struct flash_area *fa; diff --git a/loader/main.c b/loader/main.c index 643da9d75..6aa2b4c84 100644 --- a/loader/main.c +++ b/loader/main.c @@ -27,25 +27,24 @@ struct sketch_header_v1 { uint32_t len; // @ 0x08 uint16_t magic; // @ 0x0c uint8_t flags; // @ 0x0e -} __attribute__ ((packed)); +} __attribute__((packed)); -#define SKETCH_FLAG_DEBUG 0x01 -#define SKETCH_FLAG_LINKED 0x02 +#define SKETCH_FLAG_DEBUG 0x01 +#define SKETCH_FLAG_LINKED 0x02 -#define TARGET_HAS_USB_CDC_SHELL \ - DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_SHELL && CONFIG_USB_DEVICE_STACK +#define TARGET_HAS_USB_CDC_SHELL \ + DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_SHELL &&CONFIG_USB_DEVICE_STACK #if TARGET_HAS_USB_CDC_SHELL -const struct device *const usb_dev = DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0)); +const struct device *const usb_dev = + DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0)); -static int enable_shell_usb(void) -{ +static int enable_shell_usb(void) { bool log_backend = CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > 0; - uint32_t level = - (CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > LOG_LEVEL_DBG) ? - CONFIG_LOG_MAX_LEVEL : CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL; - static const struct shell_backend_config_flags cfg_flags = - SHELL_DEFAULT_BACKEND_CONFIG_FLAGS; + uint32_t level = (CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > LOG_LEVEL_DBG) ? + CONFIG_LOG_MAX_LEVEL : + CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL; + static const struct shell_backend_config_flags cfg_flags = SHELL_DEFAULT_BACKEND_CONFIG_FLAGS; shell_init(shell_backend_uart_get_ptr(), usb_dev, cfg_flags, log_backend, level); @@ -57,19 +56,17 @@ static int enable_shell_usb(void) K_THREAD_STACK_DEFINE(llext_stack, CONFIG_MAIN_STACK_SIZE); struct k_thread llext_thread; -void llext_entry(void *arg0, void *arg1, void *arg2) -{ - void (*fn)(struct llext_loader*, struct llext*) = arg0; +void llext_entry(void *arg0, void *arg1, void *arg2) { + void (*fn)(struct llext_loader *, struct llext *) = arg0; fn(arg1, arg2); } #endif /* CONFIG_USERSPACE */ -__attribute__((retain)) const uintptr_t sketch_base_addr = DT_REG_ADDR(DT_GPARENT(DT_NODELABEL(user_sketch))) + - DT_REG_ADDR(DT_NODELABEL(user_sketch)); +__attribute__((retain)) const uintptr_t sketch_base_addr = + DT_REG_ADDR(DT_GPARENT(DT_NODELABEL(user_sketch))) + DT_REG_ADDR(DT_NODELABEL(user_sketch)); __attribute__((retain)) const uintptr_t sketch_max_size = DT_REG_SIZE(DT_NODELABEL(user_sketch)); -static int loader(const struct shell *sh) -{ +static int loader(const struct shell *sh) { const struct flash_area *fa; int rc; @@ -80,8 +77,8 @@ static int loader(const struct shell *sh) return rc; } - uintptr_t base_addr = DT_REG_ADDR(DT_GPARENT(DT_NODELABEL(user_sketch))) + - DT_REG_ADDR(DT_NODELABEL(user_sketch)); + uintptr_t base_addr = + DT_REG_ADDR(DT_GPARENT(DT_NODELABEL(user_sketch))) + DT_REG_ADDR(DT_NODELABEL(user_sketch)); char header[HEADER_LEN]; rc = flash_area_read(fa, 0, header, sizeof(header)); @@ -117,17 +114,17 @@ static int loader(const struct shell *sh) #endif if (sketch_hdr->flags & SKETCH_FLAG_LINKED) { - #ifdef CONFIG_BOARD_ARDUINO_PORTENTA_C33 - #if CONFIG_MPU +#ifdef CONFIG_BOARD_ARDUINO_PORTENTA_C33 +#if CONFIG_MPU barrier_dmem_fence_full(); - #endif - #if CONFIG_DCACHE +#endif +#if CONFIG_DCACHE barrier_dsync_fence_full(); - #endif - #if CONFIG_ICACHE +#endif +#if CONFIG_ICACHE barrier_isync_fence_full(); - #endif - #endif +#endif +#endif extern struct k_heap llext_heap; typedef void (*entry_point_t)(struct k_heap *heap, size_t heap_size); @@ -140,7 +137,7 @@ static int loader(const struct shell *sh) } #if defined(CONFIG_LLEXT_STORAGE_WRITABLE) - uint8_t* sketch_buf = k_aligned_alloc(4096, sketch_buf_len); + uint8_t *sketch_buf = k_aligned_alloc(4096, sketch_buf_len); if (!sketch_buf) { printk("Unable to allocate %d bytes\n", sketch_buf_len); @@ -153,7 +150,7 @@ static int loader(const struct shell *sh) } #else // Assuming the sketch is stored in the same flash device as the loader - uint8_t* sketch_buf = (uint8_t*)base_addr; + uint8_t *sketch_buf = (uint8_t *)base_addr; #endif #ifdef CONFIG_LLEXT @@ -203,10 +200,8 @@ static int loader(const struct shell *sh) return -1; } - k_thread_create(&llext_thread, llext_stack, - K_THREAD_STACK_SIZEOF(llext_stack), - &llext_entry, llext_bootstrap, ext, main_fn, - 1, K_INHERIT_PERMS, K_FOREVER); + k_thread_create(&llext_thread, llext_stack, K_THREAD_STACK_SIZEOF(llext_stack), &llext_entry, + llext_bootstrap, ext, main_fn, 1, K_INHERIT_PERMS, K_FOREVER); k_mem_domain_add_thread(&domain, &llext_thread); @@ -227,8 +222,7 @@ static int loader(const struct shell *sh) SHELL_CMD_REGISTER(sketch, NULL, "Run sketch", loader); #endif -int main(void) -{ +int main(void) { loader(NULL); return 0; } From a5bc3e58ad6520c2005522cc4f90fa3c7bfb2bdd Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 09:32:46 +0200 Subject: [PATCH 022/117] misc: fix clang-format exclude regex --- .github/workflows/format_check.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 5370244dd..b64170370 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -42,9 +42,7 @@ jobs: - check: 'loader/' exclude: 'loader/llext_exports\.c$' - check: 'libraries/' - exclude: 'examples' - exclude: 'extras' - exclude: 'ea_malloc' + exclude: '(examples|extras|ea_malloc)' fail-fast: false steps: From 79ca67470769a5a1892ad63022dcd6a5b284bacb Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 3 Apr 2025 12:38:43 +0200 Subject: [PATCH 023/117] usb: refactor USBD_NEXT and implement 1200bps touch --- cores/arduino/SerialUSB.h | 16 ++++++++++--- cores/arduino/USB.cpp | 50 ++++++++------------------------------- cores/arduino/main.cpp | 3 ++- loader/CMakeLists.txt | 5 ++++ loader/main.c | 23 +++++++++++++++++- 5 files changed, 52 insertions(+), 45 deletions(-) diff --git a/cores/arduino/SerialUSB.h b/cores/arduino/SerialUSB.h index f6459d3c4..ba2ac9c6c 100644 --- a/cores/arduino/SerialUSB.h +++ b/cores/arduino/SerialUSB.h @@ -8,6 +8,11 @@ #include +#if defined(CONFIG_USB_DEVICE_STACK_NEXT) +#include +extern "C" struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb); +#endif + namespace arduino { class SerialUSB_ : public ZephyrSerial { @@ -34,12 +39,17 @@ class SerialUSB_ : public ZephyrSerial { protected: uint32_t dtr = 0; uint32_t baudrate; - void _baudChangeHandler(); - static void _baudChangeDispatch(struct k_timer *timer); + static void baudChangeHandler(const struct device *dev, uint32_t rate); private: - struct k_timer baud_timer; bool started = false; + +#if defined(CONFIG_USB_DEVICE_STACK_NEXT) + struct usbd_context *_usbd; + int enable_usb_device_next(); + static void usbd_next_cb(struct usbd_context *const ctx, const struct usbd_msg *msg); + static int usb_disable(); +#endif }; } // namespace arduino diff --git a/cores/arduino/USB.cpp b/cores/arduino/USB.cpp index 6e0179ea1..2b74c08d0 100644 --- a/cores/arduino/USB.cpp +++ b/cores/arduino/USB.cpp @@ -15,25 +15,11 @@ const struct device *const usb_dev = DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0)); -void usb_status_cb(enum usb_dc_status_code cb_status, const uint8_t *param) { - (void)param; // unused - if (cb_status == USB_DC_CONFIGURED) { - } -} - void __attribute__((weak)) _on_1200_bps() { NVIC_SystemReset(); } -void arduino::SerialUSB_::_baudChangeHandler() { - uart_line_ctrl_get(uart, UART_LINE_CTRL_BAUD_RATE, &baudrate); - if (baudrate == 1200) { - usb_disable(); - _on_1200_bps(); - } -} - -static void _baudChangeHandler(const struct device *dev, uint32_t rate) { +void arduino::SerialUSB_::baudChangeHandler(const struct device *dev, uint32_t rate) { (void)dev; // unused if (rate == 1200) { usb_disable(); @@ -42,19 +28,11 @@ static void _baudChangeHandler(const struct device *dev, uint32_t rate) { } #if defined(CONFIG_USB_DEVICE_STACK_NEXT) - -extern "C" { -#include -struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb); +int arduino::SerialUSB_::usb_disable() { + return usbd_disable(Serial._usbd); } -struct usbd_context *_usbd; - -int usb_disable() { - return usbd_disable(_usbd); -} - -static void usbd_next_cb(struct usbd_context *const ctx, const struct usbd_msg *msg) { +void arduino::SerialUSB_::usbd_next_cb(struct usbd_context *const ctx, const struct usbd_msg *msg) { if (usbd_can_detect_vbus(ctx)) { if (msg->type == USBD_MSG_VBUS_READY) { usbd_enable(ctx); @@ -67,16 +45,15 @@ static void usbd_next_cb(struct usbd_context *const ctx, const struct usbd_msg * if (msg->type == USBD_MSG_CDC_ACM_LINE_CODING) { uint32_t baudrate; - uart_line_ctrl_get(ctx->dev, UART_LINE_CTRL_BAUD_RATE, &baudrate); - _baudChangeHandler(nullptr, baudrate); + uart_line_ctrl_get(Serial.uart, UART_LINE_CTRL_BAUD_RATE, &baudrate); + Serial.baudChangeHandler(nullptr, baudrate); } } -static int enable_usb_device_next(void) { +int arduino::SerialUSB_::enable_usb_device_next(void) { int err; - //_usbd = usbd_init_device(usbd_next_cb); - _usbd = usbd_init_device(nullptr); + _usbd = usbd_init_device(arduino::SerialUSB_::usbd_next_cb); if (_usbd == NULL) { return -ENODEV; } @@ -91,21 +68,14 @@ static int enable_usb_device_next(void) { } #endif /* defined(CONFIG_USB_DEVICE_STACK_NEXT) */ -void arduino::SerialUSB_::_baudChangeDispatch(struct k_timer *timer) { - arduino::SerialUSB_ *dev = (arduino::SerialUSB_ *)k_timer_user_data_get(timer); - dev->_baudChangeHandler(); -} - void arduino::SerialUSB_::begin(unsigned long baudrate, uint16_t config) { if (!started) { #ifndef CONFIG_USB_DEVICE_STACK_NEXT usb_enable(NULL); #ifndef CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT - k_timer_init(&baud_timer, SerialUSB_::_baudChangeDispatch, NULL); - k_timer_user_data_set(&baud_timer, this); - k_timer_start(&baud_timer, K_MSEC(100), K_MSEC(100)); +#warning "Can't read CDC baud change, please enable CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT" #else - cdc_acm_dte_rate_callback_set(usb_dev, ::_baudChangeHandler); + cdc_acm_dte_rate_callback_set(usb_dev, SerialUSB_::baudChangeHandler); #endif #else enable_usb_device_next(); diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp index bd37be8f6..c18b5013f 100644 --- a/cores/arduino/main.cpp +++ b/cores/arduino/main.cpp @@ -20,7 +20,8 @@ void __attribute__((weak)) initVariant(void) { } int main(void) { -#if (DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_USB_CDC_ACM) +#if (DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && \ + (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) Serial.begin(115200); #endif diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt index c62b3b3a2..9cecfe1f2 100644 --- a/loader/CMakeLists.txt +++ b/loader/CMakeLists.txt @@ -16,6 +16,11 @@ project(app LANGUAGES C CXX) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/blobs) +# for USB device stack NEXT +target_sources_ifdef(CONFIG_USB_DEVICE_STACK_NEXT app PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/../cores/arduino/usb_device_descriptor.c +) + FILE(GLOB app_sources *.c) target_sources(app PRIVATE ${app_sources}) diff --git a/loader/main.c b/loader/main.c index 6aa2b4c84..b879171fe 100644 --- a/loader/main.c +++ b/loader/main.c @@ -33,12 +33,33 @@ struct sketch_header_v1 { #define SKETCH_FLAG_LINKED 0x02 #define TARGET_HAS_USB_CDC_SHELL \ - DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_SHELL &&CONFIG_USB_DEVICE_STACK + DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_SHELL && \ + (CONFIG_USB_DEVICE_STACK || CONFIG_USB_DEVICE_STACK_NEXT) #if TARGET_HAS_USB_CDC_SHELL const struct device *const usb_dev = DEVICE_DT_GET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), cdc_acm, 0)); +#if CONFIG_USB_DEVICE_STACK_NEXT +#include +struct usbd_context *usbd_init_device(usbd_msg_cb_t msg_cb); + +int usb_enable(usb_dc_status_callback status_cb) { + int err; + struct usbd_context *_usbd = usbd_init_device(NULL); + if (_usbd == NULL) { + return -ENODEV; + } + if (!usbd_can_detect_vbus(_usbd)) { + err = usbd_enable(_usbd); + if (err) { + return err; + } + } + return 0; +} +#endif + static int enable_shell_usb(void) { bool log_backend = CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > 0; uint32_t level = (CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL > LOG_LEVEL_DBG) ? From ff3bd8c1921cf1a668ffeb724f55a13adfa7b37a Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 12 Aug 2025 16:12:39 +0200 Subject: [PATCH 024/117] portentac33: add -w flag to dfu-util --- boards.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards.txt b/boards.txt index dcaaa27c3..204651f96 100644 --- a/boards.txt +++ b/boards.txt @@ -449,7 +449,7 @@ portentac33.upload.native_usb=true portentac33.upload.maximum_size=1966080 portentac33.upload.maximum_data_size=523624 portentac33.upload.address=0x100000 -portentac33.upload.dfuse=-Q +portentac33.upload.dfuse=-Q -w portentac33.bootloader.tool=dfu-util portentac33.bootloader.tool.default=dfu-util From 59f61cc43455a6a2eb20602f2ee8b73f34a6950c Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 22 Aug 2025 10:37:55 +0200 Subject: [PATCH 025/117] portentac33: add sleep to avoid dfu protocol error --- cores/arduino/USB.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cores/arduino/USB.cpp b/cores/arduino/USB.cpp index 2b74c08d0..fe3291887 100644 --- a/cores/arduino/USB.cpp +++ b/cores/arduino/USB.cpp @@ -29,6 +29,8 @@ void arduino::SerialUSB_::baudChangeHandler(const struct device *dev, uint32_t r #if defined(CONFIG_USB_DEVICE_STACK_NEXT) int arduino::SerialUSB_::usb_disable() { + // To avoid Cannot perform port reset: 1200-bps touch: setting DTR to OFF: protocol error + k_sleep(K_MSEC(100)); return usbd_disable(Serial._usbd); } From a26551eb625ac5e667a6e293a8492717cf4cb87c Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Thu, 4 Sep 2025 16:18:59 +0200 Subject: [PATCH 026/117] github: add catch-all verify-core job Add a verifcation job to simplify Github Actions workflow dependencies. This job depends on both packaging and testing jobs, so that any failure in either will prevent PR acceptance. --- .github/workflows/package_core.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 6991ecf52..5a69c882b 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -55,7 +55,7 @@ jobs: path: distrib/${{ env.CORE_ARTIFACT }}.tar.bz2 test-core: - name: Test ${{ matrix.board }} board + name: Test on ${{ matrix.board }} runs-on: ubuntu-latest needs: package-core strategy: @@ -112,7 +112,7 @@ jobs: repo: context.repo.repo, run_id: context.runId }); - const job_name = `Test ${{ matrix.board }} board` + const job_name = `Test on ${{ matrix.board }}` return workflow_run.jobs.find((job) => job.name === job_name).id; - name: Prepare log @@ -183,6 +183,17 @@ jobs: name: test-report-* failOnError: false + verify-core: + name: Collect job errors + runs-on: ubuntu-latest + if: cancelled() || contains(needs.*.result, 'failure') + needs: + - package-core + - test-core + steps: + - name: Notify failure + run: exit 1 + publish-core: name: Publish core runs-on: ubuntu-latest From 491a8c6df064d205b259f36518c07bb22d6ead64 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Tue, 9 Sep 2025 11:24:10 +0200 Subject: [PATCH 027/117] format-check: rework to test modified files only The Github UI for required checks does not integrate with the workflows described in the .github directory. Currently jobs that are never started due to conditional execution are not even reported, so the UI shows "expected" and locks up merges. Rework the format-check workflow to first list the modified files that need to be checked, and then run the check only on those files. This way the test runs on every pull request, but has minimal impact unless one or more source files are actually modified. Requires a branched version of jidicula/clang-format-action 4.15.0 that adds the 'check-files-from' input parameter. Signed-off-by: Luca Burelli --- .github/workflows/format_check.yml | 55 ++++++++++++------------------ 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index b64170370..ca295961f 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -4,11 +4,6 @@ on: push: branches: - 'main' - paths: - - '**/*.c' - - '**/*.cpp' - - '**/*.h' - - '**/*.hpp' pull_request: types: @@ -18,43 +13,37 @@ on: - synchronize branches: - 'main' - paths: - - '**/*.c' - - '**/*.cpp' - - '**/*.h' - - '**/*.hpp' - - workflow_dispatch: - inputs: - logLevel: - description: 'Log level' - required: true - default: 'warning' jobs: - format-check: + verify-format: runs-on: ubuntu-latest - strategy: - matrix: - path: - - check: 'cores/arduino/' - exclude: 'cores/arduino/api/' - - check: 'loader/' - exclude: 'loader/llext_exports\.c$' - - check: 'libraries/' - exclude: '(examples|extras|ea_malloc)' - fail-fast: false - steps: - name: Checkout code uses: actions/checkout@v4 with: submodules: false persist-credentials: false - + - name: Get changed source files that need format check + id: changed-files + uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 + with: + files: | + cores/arduino/**/*.{c,cpp,h,hpp,ino} + loader/**/*.{c,cpp,h,hpp,ino} + libraries/**/*.{c,cpp,h,hpp,ino} + files_ignore: | + cores/arduino/api/** + loader/llext_exports.c + libraries/examples/** + libraries/extras/** + libraries/ea_malloc/** + write_output_files: true + - name: List changed files + if: steps.changed-files.outputs.any_changed == 'true' + run: cat .github/outputs/all_changed_files.txt - name: Run clang-format check - uses: jidicula/clang-format-action@v4.15.0 + if: steps.changed-files.outputs.any_changed == 'true' + uses: pillo79/clang-format-action@05f671e71f0758aba4d3c9dbb0ee81bc5f0137c6 with: clang-format-version: '19' - check-path: ${{ matrix.path['check'] }} - exclude-regex: ${{ matrix.path['exclude'] }} + check-files-from: .github/outputs/all_changed_files.txt From 846dc360c7234b1afd88a04e10fa6718e70c1a72 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Tue, 9 Sep 2025 16:38:50 +0200 Subject: [PATCH 028/117] package_core: Fix format check UI Do not set a name for the verify-core job, as this causes the GitHub UI to show a generic name in the required status checks list. --- .github/workflows/package_core.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 5a69c882b..53347c210 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -184,7 +184,6 @@ jobs: failOnError: false verify-core: - name: Collect job errors runs-on: ubuntu-latest if: cancelled() || contains(needs.*.result, 'failure') needs: From f30ad5acf7654c0d4890934cd528e64becea1ff2 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 26 Aug 2025 14:45:44 +0200 Subject: [PATCH 029/117] loader: Add input callback data. Signed-off-by: iabdalkader --- loader/fixups.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/loader/fixups.c b/loader/fixups.c index 0a64442fc..2784179df 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -57,15 +57,17 @@ SYS_INIT(enable_bkp_access, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #include typedef void (*zephyr_input_callback_t)(struct input_event *evt, void *user_data); -static zephyr_input_callback_t zephyr_input_cb = NULL; +static zephyr_input_callback_t zephyr_input_cb_func = NULL; +static void *zephyr_input_cb_data = NULL; -void zephyr_input_register_callback(zephyr_input_callback_t cb) { - zephyr_input_cb = cb; +void zephyr_input_register_callback(zephyr_input_callback_t cb, void *user_data) { + zephyr_input_cb_func = cb; + zephyr_input_cb_data = user_data; } static void zephyr_input_callback(struct input_event *evt, void *user_data) { - if (zephyr_input_cb) { - zephyr_input_cb(evt, user_data); + if (zephyr_input_cb_func) { + zephyr_input_cb_func(evt, zephyr_input_cb_data); } } From 2cfdd778e3df3401d316aceb361898ff45e6a229 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 27 Aug 2025 11:52:10 +0200 Subject: [PATCH 030/117] opta: swap i2c1 and i2c3 to restore compatibility with mbed cores With mbed core Wire uses PH_7 PH_8 pins connected to the expansion bus Wire 1 uses PB_6 PB_7 pins connected to the crypto Signed-off-by: pennam --- .../arduino_opta_stm32h747xx_m7.overlay | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay index 315a56a6d..eebf45e32 100644 --- a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay +++ b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.overlay @@ -101,7 +101,7 @@ serials = <&board_cdc_acm_uart>, <&usart3>, <&usart6>; cdc-acm = <&board_cdc_acm_uart>; - i2cs = <&i2c1>, <&i2c3>; + i2cs = <&i2c3>, <&i2c1>; io-channels = <&adc1 0>, <&adc3 0>, From 22bff94175cb8f7d076d08aa01d584b1697ac528 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Thu, 18 Sep 2025 17:17:14 +0200 Subject: [PATCH 031/117] format_check: properly export changed files When multiple files change, tj-action/changed-files separates file names with a space, so the output is ambiguous. Switch to JSON output and use jq to convert the array to a text file with one file name per line, a format that is readily usable for clang-format-action. Signed-off-by: Luca Burelli --- .github/workflows/format_check.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index ca295961f..2a60b359f 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -37,13 +37,15 @@ jobs: libraries/examples/** libraries/extras/** libraries/ea_malloc/** - write_output_files: true - - name: List changed files + json: true + - name: Export changed files in a text file, one per line if: steps.changed-files.outputs.any_changed == 'true' - run: cat .github/outputs/all_changed_files.txt + run: | + echo ${{ steps.changed-files.outputs.all_changed_files }} | jq -r '.[]' > all_changed_files.txt + cat all_changed_files.txt - name: Run clang-format check if: steps.changed-files.outputs.any_changed == 'true' uses: pillo79/clang-format-action@05f671e71f0758aba4d3c9dbb0ee81bc5f0137c6 with: clang-format-version: '19' - check-files-from: .github/outputs/all_changed_files.txt + check-files-from: all_changed_files.txt From 3b4ba1434fe6b58d8b4cfe820ae77c9fca27e2e8 Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sat, 23 Aug 2025 05:55:58 +0900 Subject: [PATCH 032/117] zephyrCommon: Fixed a bug in the interrupt handler acquisition Fixed an issue where the reference location for the interrupt handler was a bit mask instead of an index value. Signed-off-by: TOKITA Hiroshi --- cores/arduino/zephyrCommon.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cores/arduino/zephyrCommon.cpp b/cores/arduino/zephyrCommon.cpp index ca61ea577..c42457234 100644 --- a/cores/arduino/zephyrCommon.cpp +++ b/cores/arduino/zephyrCommon.cpp @@ -104,7 +104,7 @@ void setInterruptHandler(pin_size_t pinNumber, voidFuncPtr func) { struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); if (pcb) { - pcb->handlers[BIT(arduino_pins[pinNumber].pin)].handler = func; + pcb->handlers[arduino_pins[pinNumber].pin].handler = func; } } @@ -113,8 +113,8 @@ void handleGpioCallback(const struct device *port, struct gpio_callback *cb, uin struct gpio_port_callback *pcb = (struct gpio_port_callback *)cb; for (uint32_t i = 0; i < max_ngpios; i++) { - if (pins & BIT(i) && pcb->handlers[BIT(i)].enabled) { - pcb->handlers[BIT(i)].handler(); + if (pins & BIT(i) && pcb->handlers[i].enabled) { + pcb->handlers[i].handler(); } } } @@ -531,7 +531,7 @@ void enableInterrupt(pin_size_t pinNumber) { struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); if (pcb) { - pcb->handlers[BIT(arduino_pins[pinNumber].pin)].enabled = true; + pcb->handlers[arduino_pins[pinNumber].pin].enabled = true; } } @@ -539,7 +539,7 @@ void disableInterrupt(pin_size_t pinNumber) { struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port); if (pcb) { - pcb->handlers[BIT(arduino_pins[pinNumber].pin)].enabled = false; + pcb->handlers[arduino_pins[pinNumber].pin].enabled = false; } } From c5039a77bc14960d0a4b4a7fda60c17b0b27609f Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Tue, 30 Sep 2025 17:24:11 +0200 Subject: [PATCH 033/117] ci: replace ci docker image with ci-base + action-setup-zephyr The Github runner is now more limited and does not accept the standard zephyrprojectrtos/ci image. Use the ci-base image and manually install the few extra dependencies we need via action-setup-zephyr. This brings an additional path issue: the west workspace will be initialized in $GITHUB_WORKSPACE/.., so we need to move the repo checkout to a subfolder and then move it to the right place. --- .github/workflows/build.yml | 47 ++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba5417990..0547628aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,35 +6,50 @@ jobs: build: name: Build native Zephyr samples runs-on: ubuntu-latest - container: zephyrprojectrtos/ci:latest + container: zephyrprojectrtos/ci-base:latest env: CMAKE_PREFIX_PATH: /opt/toolchains CCACHE_IGNOREOPTIONS: -specs=* - REPOSITORY: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - BRANCH: ${{ github.event.pull_request.head.ref || github.ref_name }} + MODULE_PATH: ../modules/lib/ArduinoCore-zephyr + + # action-setup-zephyr will initialize the repo in $GITHUB_WORKSPACE/.., + # so we need to put the module in $GITHUB_WORKSPACE's parent, but + # actions/checkout would not be able to checkout the module there + # directly, so we use "subfolder" and move it later. + # + # using action-setup-zephyr also requires a local west.yml and so the + # folder must be manually added to Zephyr as a module via + # EXTRA_ZEPHYR_MODULES. + steps: - - name: Initialize + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + path: subfolder + + - name: Fix module path run: | - mkdir build && cd build - west init -m https://github.com/${{ env.REPOSITORY }} --mr ${{ env.BRANCH }} - west update -o=--filter=tree:0 + mkdir -p $(dirname $MODULE_PATH) && mv subfolder $MODULE_PATH - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 + - name: Setup Zephyr project + uses: zephyrproject-rtos/action-zephyr-setup@v1 with: - verbose: 1 + toolchains: arm-zephyr-eabi + manifest-file-name: ${{ env.MODULE_PATH }}/west.yml + + - name: Add manifest path as module + run: | + echo EXTRA_ZEPHYR_MODULES="$(pwd)/$MODULE_PATH" >> $GITHUB_ENV - name: Build fade - working-directory: build run: | - west build -p -b arduino_nano_33_ble//sense modules/lib/ArduinoCore-zephyr/samples/fade + west build -p -b arduino_nano_33_ble//sense $MODULE_PATH/samples/fade - name: Build i2cdemo - working-directory: build run: | - west build -p -b ek_ra8d1 modules/lib/ArduinoCore-zephyr/samples/i2cdemo + west build -p -b ek_ra8d1 $MODULE_PATH/samples/i2cdemo - name: Build adc - working-directory: build run: | - west build -p -b arduino_nano_33_ble/nrf52840/sense modules/lib/ArduinoCore-zephyr/samples/analog_input + west build -p -b arduino_nano_33_ble/nrf52840/sense $MODULE_PATH/samples/analog_input From 2ad333666e99cd2f8473b4f6258094411c328caf Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Tue, 30 Sep 2025 17:28:48 +0200 Subject: [PATCH 034/117] ci: optimize list of HALs to reduce download size Limit the list of HALs to only those needed by the boards in boards.txt. Copied verbatim from bootstrap.sh. --- .github/workflows/build.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0547628aa..b7d804557 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,15 +28,22 @@ jobs: persist-credentials: false path: subfolder - - name: Fix module path + - name: Fix module path, list needed HALs run: | mkdir -p $(dirname $MODULE_PATH) && mv subfolder $MODULE_PATH + NEEDED_HALS=$(grep 'build.zephyr_hals=' $MODULE_PATH/boards.txt | cut -d '=' -f 2 | xargs -n 1 echo | sort -u) + HAL_FILTER="-hal_.*" + for hal in $NEEDED_HALS; do + HAL_FILTER="$HAL_FILTER,+$hal" + done + echo "HAL_FILTER=$HAL_FILTER" | tee -a $GITHUB_ENV - name: Setup Zephyr project uses: zephyrproject-rtos/action-zephyr-setup@v1 with: toolchains: arm-zephyr-eabi manifest-file-name: ${{ env.MODULE_PATH }}/west.yml + west-project-filter: ${{ env.HAL_FILTER }} - name: Add manifest path as module run: | From 310ca6879f3816dcb7a54c1f38f7fffd14bba667 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Tue, 30 Sep 2025 17:46:42 +0200 Subject: [PATCH 035/117] ci: disable ccache on build job ccache takes a long time to save, almost as much as downloading the archive every time, so skip it. --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b7d804557..7ea17b70f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,6 +44,7 @@ jobs: toolchains: arm-zephyr-eabi manifest-file-name: ${{ env.MODULE_PATH }}/west.yml west-project-filter: ${{ env.HAL_FILTER }} + enable-ccache: false - name: Add manifest path as module run: | From cdb608b666f7cf12bc4ad9958a0c1b3a1ef19aad Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Wed, 17 Sep 2025 17:40:04 +0200 Subject: [PATCH 036/117] libraries/SPI: Add support for peripheral mode Signed-off-by: iabdalkader --- libraries/SPI/SPI.cpp | 100 +++++++++++++++++++----------------------- libraries/SPI/SPI.h | 11 +++++ 2 files changed, 55 insertions(+), 56 deletions(-) diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 8dd61f21e..057b75d66 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -12,66 +12,42 @@ arduino::ZephyrSPI::ZephyrSPI(const struct device *spi) : spi_dev(spi) { } uint8_t arduino::ZephyrSPI::transfer(uint8_t data) { - int ret; - uint8_t rx; - const struct spi_buf tx_buf = {.buf = &data, .len = sizeof(data)}; - const struct spi_buf_set tx_buf_set = { - .buffers = &tx_buf, - .count = 1, - }; - const struct spi_buf rx_buf = {.buf = &rx, .len = sizeof(rx)}; - const struct spi_buf_set rx_buf_set = { - .buffers = &rx_buf, - .count = 1, - }; - - ret = spi_transceive(spi_dev, &config, &tx_buf_set, &rx_buf_set); - if (ret < 0) { + uint8_t rx = data; + if (transfer(&rx, sizeof(rx), &config) < 0) { return 0; } - return rx; } uint16_t arduino::ZephyrSPI::transfer16(uint16_t data) { - int ret; - uint16_t rx; - const struct spi_buf tx_buf = {.buf = &data, .len = sizeof(data)}; - const struct spi_buf_set tx_buf_set = { - .buffers = &tx_buf, - .count = 1, - }; - const struct spi_buf rx_buf = {.buf = &rx, .len = sizeof(rx)}; - const struct spi_buf_set rx_buf_set = { - .buffers = &rx_buf, - .count = 1, - }; - - ret = spi_transceive(spi_dev, &config16, &tx_buf_set, &rx_buf_set); - if (ret < 0) { + uint16_t rx = data; + if (transfer(&rx, sizeof(rx), &config16) < 0) { return 0; } - return rx; } void arduino::ZephyrSPI::transfer(void *buf, size_t count) { + int ret = transfer(buf, count, &config); + (void)ret; +} + +int arduino::ZephyrSPI::transfer(void *buf, size_t len, const struct spi_config *config) { int ret; - const struct spi_buf tx_buf = {.buf = buf, .len = count}; + + const struct spi_buf tx_buf = {.buf = buf, .len = len}; const struct spi_buf_set tx_buf_set = { .buffers = &tx_buf, .count = 1, }; - uint8_t rx[count]; - const struct spi_buf rx_buf = {.buf = &rx, .len = count}; + const struct spi_buf rx_buf = {.buf = buf, .len = len}; const struct spi_buf_set rx_buf_set = { .buffers = &rx_buf, .count = 1, }; - spi_transceive(spi_dev, &config, &tx_buf_set, &rx_buf_set); - memcpy(buf, rx, count); + return spi_transceive(spi_dev, config, &tx_buf_set, &rx_buf_set); } void arduino::ZephyrSPI::usingInterrupt(int interruptNumber) { @@ -80,21 +56,31 @@ void arduino::ZephyrSPI::usingInterrupt(int interruptNumber) { void arduino::ZephyrSPI::notUsingInterrupt(int interruptNumber) { } -#ifndef SPI_MIN_CLOCK_FEQUENCY -#define SPI_MIN_CLOCK_FEQUENCY 1000000 -#endif - void arduino::ZephyrSPI::beginTransaction(SPISettings settings) { - memset(&config, 0, sizeof(config)); - memset(&config16, 0, sizeof(config16)); - config.frequency = settings.getClockFreq() > SPI_MIN_CLOCK_FEQUENCY ? settings.getClockFreq() : - SPI_MIN_CLOCK_FEQUENCY; - config16.frequency = config.frequency; + uint32_t mode = 0; + + // Set bus mode + switch (settings.getBusMode()) { + case SPI_CONTROLLER: + break; + case SPI_PERIPHERAL: + mode |= SPI_OP_MODE_SLAVE; + break; + } - auto mode = SPI_MODE_CPOL | SPI_MODE_CPHA; + // Set data format + switch (settings.getBitOrder()) { + case LSBFIRST: + mode |= SPI_TRANSFER_LSB; + break; + case MSBFIRST: + mode |= SPI_TRANSFER_MSB; + break; + } + + // Set data mode switch (settings.getDataMode()) { case SPI_MODE0: - mode = 0; break; case SPI_MODE1: mode = SPI_MODE_CPHA; @@ -106,12 +92,16 @@ void arduino::ZephyrSPI::beginTransaction(SPISettings settings) { mode = SPI_MODE_CPOL | SPI_MODE_CPHA; break; } - config.operation = SPI_WORD_SET(8) | - (settings.getBitOrder() == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | - mode; - config16.operation = - SPI_WORD_SET(16) | - (settings.getBitOrder() == MSBFIRST ? SPI_TRANSFER_MSB : SPI_TRANSFER_LSB) | mode; + + // Set SPI configuration structure for 8-bit transfers + memset(&config, 0, sizeof(struct spi_config)); + config.operation = mode | SPI_WORD_SET(8); + config.frequency = max(SPI_MIN_CLOCK_FEQUENCY, settings.getClockFreq()); + + // Set SPI configuration structure for 16-bit transfers + memset(&config16, 0, sizeof(struct spi_config)); + config16.operation = mode | SPI_WORD_SET(16); + config16.frequency = max(SPI_MIN_CLOCK_FEQUENCY, settings.getClockFreq()); } void arduino::ZephyrSPI::endTransaction(void) { @@ -125,8 +115,6 @@ void arduino::ZephyrSPI::detachInterrupt() { } void arduino::ZephyrSPI::begin() { - beginTransaction(SPISettings()); - endTransaction(); } void arduino::ZephyrSPI::end() { diff --git a/libraries/SPI/SPI.h b/libraries/SPI/SPI.h index 95c41ce25..1e3f369db 100644 --- a/libraries/SPI/SPI.h +++ b/libraries/SPI/SPI.h @@ -22,6 +22,14 @@ #define SPE 6 #define SPIE 7 +#define SPI_HAS_PERIPHERAL_MODE (1) + +// TODO: +// This depends on the clock settings, can't be used for all boards. +#ifndef SPI_MIN_CLOCK_FEQUENCY +#define SPI_MIN_CLOCK_FEQUENCY 1000000 +#endif + /* Count the number of GPIOs for limit of number of interrupts */ #define INTERRUPT_HELPER(n, p, i) 1 #define INTERRUPT_COUNT \ @@ -50,6 +58,9 @@ class ZephyrSPI : public HardwareSPI { virtual void begin(); virtual void end(); +private: + int transfer(void *buf, size_t len, const struct spi_config *config); + protected: const struct device *spi_dev; struct spi_config config; From d3322268601a7318cb009e1db945e3e305cdfd5e Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 26 Sep 2025 14:28:50 +0200 Subject: [PATCH 037/117] format check: exclude .ino files from workflow --- .github/workflows/format_check.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/format_check.yml b/.github/workflows/format_check.yml index 2a60b359f..31ceb9206 100644 --- a/.github/workflows/format_check.yml +++ b/.github/workflows/format_check.yml @@ -28,9 +28,9 @@ jobs: uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 with: files: | - cores/arduino/**/*.{c,cpp,h,hpp,ino} - loader/**/*.{c,cpp,h,hpp,ino} - libraries/**/*.{c,cpp,h,hpp,ino} + cores/arduino/**/*.{c,cpp,h,hpp} + loader/**/*.{c,cpp,h,hpp} + libraries/**/*.{c,cpp,h,hpp} files_ignore: | cores/arduino/api/** loader/llext_exports.c From 36cf198137b88fb22c97e1922b6b66e60cff2aa7 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Mon, 6 Oct 2025 17:35:35 +0200 Subject: [PATCH 038/117] feat: add tool for upload jomla sketch --- extra/install_remoteocd.sh | 25 +++++++++++++++++++++++++ extra/zephyr-core-template.json | 13 +++++++++++++ platform.txt | 14 ++++++++++++++ 3 files changed, 52 insertions(+) create mode 100755 extra/install_remoteocd.sh diff --git a/extra/install_remoteocd.sh b/extra/install_remoteocd.sh new file mode 100755 index 000000000..cface41f4 --- /dev/null +++ b/extra/install_remoteocd.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +REPO_URL="https://github.com/bcmi-labs/orchestrator.git" +BRANCH_NAME="main" + +set -xe + +TMP_DIR=$(mktemp -d) + +# pull the repo +git clone "$REPO_URL" "$TMP_DIR" +cd "$TMP_DIR" +git checkout "$BRANCH_NAME" + +# compile remoteocd +go build -o build/remoteocd ./cmd/remoteocd + +# move into arduino tools +TARGET_PATH=$(arduino-cli config get directories.data)/packages/arduino/tools/remoteocd/0.0.1 +mkdir -p "$TARGET_PATH" +cp build/remoteocd "$TARGET_PATH" + +rm -rf "$TMP_DIR" + +echo "remoteocd is in $TARGET_PATH/remoteocd" diff --git a/extra/zephyr-core-template.json b/extra/zephyr-core-template.json index f1c1fddb6..5c945f28f 100644 --- a/extra/zephyr-core-template.json +++ b/extra/zephyr-core-template.json @@ -38,6 +38,9 @@ }, { "name": "NXP FRDM RW612" + }, + { + "name": "Arduino UNO Q" } ], "toolsDependencies": [ @@ -65,6 +68,16 @@ "packager": "arduino", "name": "sync-zephyr-artifacts", "version": "0.1.0" + }, + { + "packager": "arduino", + "name": "adb", + "version": "32.0.0" + }, + { + "packager": "arduino", + "name": "remoteocd", + "version": "0.0.3-rc.2" } ] } diff --git a/platform.txt b/platform.txt index fe8970706..628177f9f 100644 --- a/platform.txt +++ b/platform.txt @@ -262,6 +262,20 @@ tools.adb.upload.params.verbose=-v tools.adb.upload.params.quiet= tools.adb.upload.pattern="{path}/{cmd}" push "{build.path}/{build.project_name}.elf" "/tmp/arduino/m4-user-sketch.elf" +# +# REMOTEOCD +# +tools.remoteocd.path={runtime.tools.remoteocd.path} +tools.remoteocd.cmd=remoteocd +tools.remoteocd.upload.params.verbose= +tools.remoteocd.upload.params.quiet= +tools.remoteocd.upload.pattern="{path}/{cmd}" --adb-path {runtime.tools.adb.path}/adb -s "{upload.port.properties.serialNumber}" upload -a "{upload.address}" "{build.path}/{build.project_name}.{upload.extension}" + +tools.remoteocd.bootloader.params.verbose= +tools.remoteocd.bootloader.params.quiet= +tools.remoteocd.erase.pattern= +tools.remoteocd.bootloader.pattern="{path}/{cmd}" --adb-path {runtime.tools.adb.path}/adb -s "{upload.port.properties.serialNumber}" upload "{runtime.platform.path}/firmwares/{bootloader.file}" + # # PYOCD WRAPPER # From 7b01324b7ffeaafc050c1aedd6faf2d183bb8169 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 10 Jul 2025 11:39:18 +0200 Subject: [PATCH 039/117] core: implement weak loop hook --- cores/arduino/main.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp index c18b5013f..50fde6de1 100644 --- a/cores/arduino/main.cpp +++ b/cores/arduino/main.cpp @@ -19,6 +19,10 @@ void start_static_threads(); void __attribute__((weak)) initVariant(void) { } +// This function can be overwriten by one library. +void __attribute__((weak)) __loopHook(void) { +} + int main(void) { #if (DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && \ (CONFIG_USB_CDC_ACM || CONFIG_USBD_CDC_ACM_CLASS)) @@ -39,6 +43,7 @@ int main(void) { // DT_NODE_HAS_PROP(DT_PATH(zephyr_user), serials) if (arduino::serialEventRun) arduino::serialEventRun(); #endif + __loopHook(); } return 0; From 7e1c87f8efa9c2dc144b0f0004f84f96a371f3fa Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 4 Aug 2025 12:10:02 +0200 Subject: [PATCH 040/117] UNO Q: initial import --- boards.txt | 52 ++++ loader/fixups.c | 28 +++ loader/llext_exports.c | 16 ++ loader/main.c | 5 + loader/matrix.inc | 231 ++++++++++++++++++ .../arduino_uno_q_stm32u585xx.conf | 46 ++++ .../arduino_uno_q_stm32u585xx.overlay | 200 +++++++++++++++ variants/arduino_uno_q_stm32u585xx/variant.h | 13 + 8 files changed, 591 insertions(+) create mode 100644 loader/matrix.inc create mode 100644 variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf create mode 100644 variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay create mode 100644 variants/arduino_uno_q_stm32u585xx/variant.h diff --git a/boards.txt b/boards.txt index 204651f96..da0b9e186 100644 --- a/boards.txt +++ b/boards.txt @@ -521,3 +521,55 @@ opta.debug.cortex-debug.custom.request=attach opta.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd ############################################################################################################## + +unoq.name=Arduino UNO Q +unoq.build.core=arduino +unoq.build.crossprefix=arm-zephyr-eabi- +unoq.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ + +unoq.menu.link_mode.dynamic=Dynamic +unoq.menu.link_mode.static=Static +unoq.menu.link_mode.static.build.link_mode=static +unoq.menu.link_mode.static.upload.extension=bin-zsk.bin + +unoq.build.zephyr_target=arduino_uno_q +unoq.build.zephyr_args= +unoq.build.variant=arduino_uno_q_stm32u585xx +unoq.build.mcu=cortex-m33 +unoq.build.fpu=-mfpu=fpv5-sp-d16 +unoq.build.architecture=cortex-m33 +unoq.compiler.zephyr.arch.define= + +unoq.build.float-abi=-mfloat-abi=hard +unoq.build.extra_flags= +unoq.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit +unoq.build.board=UNO_Q +unoq.build.zephyr_hals=hal_stm32 +unoq.compiler.zephyr.arch.define= +unoq.compiler.zephyr= +unoq.vid.0=0x2341 +unoq.pid.0=0x0078 +unoq.upload_port.0.vid=0x2341 +unoq.upload_port.0.pid=0x0078 +unoq.upload.address=0x80F0000 +unoq.upload.target=stm32u585zitxq + +unoq.upload.tool=remoteocd +unoq.upload.tool.default=remoteocd +unoq.upload.protocol= +unoq.upload.transport= +unoq.upload.vid=0x2341 +unoq.upload.pid=0x0078 +unoq.upload.interface=0 +unoq.upload.use_1200bps_touch=false +unoq.upload.wait_for_upload_port=false +unoq.upload.native_usb=true +unoq.upload.maximum_size=1966080 +unoq.upload.maximum_data_size=523624 + +unoq.bootloader.tool=remoteocd +unoq.bootloader.tool.default=remoteocd +unoq.bootloader.file=zephyr-{build.variant}.elf +unoq.bootloader.target=stm32u585zitxq + +########################################################################################## diff --git a/loader/fixups.c b/loader/fixups.c index 2784179df..e78068cba 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -178,3 +178,31 @@ int maybe_flash_bootloader(void) { SYS_INIT(maybe_flash_bootloader, POST_KERNEL, CONFIG_FILE_SYSTEM_INIT_PRIORITY); #endif + +#if defined(CONFIG_BOARD_ARDUINO_UNO_Q) +#include "matrix.inc" + +#include "../variants/arduino_uno_q_stm32u585xx/variant.h" +#include +#include + +static int enable_adc_reference(void) { + uint8_t init_status; + /* VREF+ is not connected to VDDA by default */ + /* Use 2.5V as reference (instead of 3.3V) for internal channels + * calculation + */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + /* VREF_OUT2 = 2.5 V */ + HAL_SYSCFG_VREFBUF_VoltageScalingConfig(SYSCFG_VREFBUF_VOLTAGE_SCALE1); + HAL_SYSCFG_VREFBUF_HighImpedanceConfig(SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE); + + init_status = HAL_SYSCFG_EnableVREFBUF(); + __ASSERT(init_status == HAL_OK, "ADC Conversion value may be incorrect"); + + return init_status; +} + +SYS_INIT(enable_adc_reference, POST_KERNEL, 0); +#endif diff --git a/loader/llext_exports.c b/loader/llext_exports.c index 6550ea9c1..2b2205eb2 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -255,3 +255,19 @@ FORCE_EXPORT_SYM(__aeabi_dcmpge); #if defined (CONFIG_CPP) FORCE_EXPORT_SYM(__cxa_pure_virtual); #endif + +#if defined(CONFIG_BOARD_ARDUINO_UNO_Q) +FORCE_EXPORT_SYM(matrixBegin); +FORCE_EXPORT_SYM(matrixWrite); +FORCE_EXPORT_SYM(matrixPlay); +FORCE_EXPORT_SYM(matrixGrayscaleWrite); +FORCE_EXPORT_SYM(matrixSetGrayscaleBits); +FORCE_EXPORT_SYM(matrixEnd); +#endif + +#if defined(CONFIG_FLASH) +FORCE_EXPORT_SYM(flash_area_open); +FORCE_EXPORT_SYM(flash_area_read); +FORCE_EXPORT_SYM(flash_area_write); +FORCE_EXPORT_SYM(flash_area_erase); +#endif diff --git a/loader/main.c b/loader/main.c index b879171fe..1a85058f9 100644 --- a/loader/main.c +++ b/loader/main.c @@ -108,6 +108,11 @@ static int loader(const struct shell *sh) { return rc; } +#if defined(CONFIG_BOARD_ARDUINO_UNO_Q) + void matrixBegin(void); + matrixBegin(); +#endif + struct sketch_header_v1 *sketch_hdr = (struct sketch_header_v1 *)(header + 7); if (sketch_hdr->ver != 0x1 || sketch_hdr->magic != 0x2341) { printk("Invalid sketch header\n"); diff --git a/loader/matrix.inc b/loader/matrix.inc new file mode 100644 index 000000000..0fb35cb39 --- /dev/null +++ b/loader/matrix.inc @@ -0,0 +1,231 @@ +#include +#include +#include +#include +#include + +static const uint8_t pins[][2] = { + { 0, 1 }, // 0 + { 1, 0 }, + { 0, 2 }, + { 2, 0 }, + { 1, 2 }, + { 2, 1 }, + { 0, 3 }, + { 3, 0 }, + { 1, 3 }, + { 3, 1 }, + { 2, 3 }, // 10 + { 3, 2 }, + { 0, 4 }, + { 4, 0 }, + { 1, 4 }, + { 4, 1 }, + { 2, 4 }, + { 4, 2 }, + { 3, 4 }, + { 4, 3 }, + { 0, 5 }, // 20 + { 5, 0 }, + { 1, 5 }, + { 5, 1 }, + { 2, 5 }, + { 5, 2 }, + { 3, 5 }, + { 5, 3 }, + { 4, 5 }, + { 5, 4 }, + { 0, 6 }, // 30 + { 6, 0 }, + { 1, 6 }, + { 6, 1 }, + { 2, 6 }, + { 6, 2 }, + { 3, 6 }, + { 6, 3 }, + { 4, 6 }, + { 6, 4 }, + { 5, 6 }, // 40 + { 6, 5 }, + { 0, 7 }, + { 7, 0 }, + { 1, 7 }, + { 7, 1 }, + { 2, 7 }, + { 7, 2 }, + { 3, 7 }, + { 7, 3 }, + { 4, 7 }, // 50 + { 7, 4 }, + { 5, 7 }, + { 7, 5 }, + { 6, 7 }, + { 7, 6 }, + { 0, 8 }, + { 8, 0 }, + { 1, 8 }, + { 8, 1 }, + { 2, 8 }, // 60 + { 8, 2 }, + { 3, 8 }, + { 8, 3 }, + { 4, 8 }, + { 8, 4 }, + { 5, 8 }, + { 8, 5 }, + { 6, 8 }, + { 8, 6 }, + { 7, 8 }, // 70 + { 8, 7 }, + { 0, 9 }, + { 9, 0 }, + { 1, 9 }, + { 9, 1 }, + { 2, 9 }, + { 9, 2 }, + { 3, 9 }, + { 9, 3 }, + { 4, 9 }, // 80 + { 9, 4 }, + { 5, 9 }, + { 9, 5 }, + { 6, 9 }, + { 9, 6 }, + { 7, 9 }, + { 9, 7 }, + { 8, 9 }, + { 9, 8 }, + { 0, 10 }, // 90 + { 10, 0 }, + { 1, 10 }, + { 10, 1 }, + { 2, 10 }, + { 10, 2 }, + { 3, 10 }, + { 10, 3 }, + { 4, 10 }, + { 10, 4 }, + { 5, 10 }, // 100 + { 10, 5 }, + { 6, 10 }, + { 10, 6 }, + }; + + +const int idxToPin(int idx) { + return idx; +} + +#define NUM_MATRIX_LEDS 104 +static uint8_t __attribute__((aligned)) framebuffer[NUM_MATRIX_LEDS / 8]; +static uint8_t __attribute__((aligned)) framebuffer_color[NUM_MATRIX_LEDS]; + +static void turnLed(int idx, bool on) { + GPIOF->MODER &= ~(0xFFFFFF); + + if (on) { + GPIOF->BSRR |= (1 << (idxToPin(pins[idx][0])) | 1 << (idxToPin(pins[idx][1]) + 16)); + GPIOF->MODER |= (1 << (idxToPin(pins[idx][0]) * 2) | 1 << (idxToPin(pins[idx][1]) * 2)); + } +} + +static uint32_t reverse(uint32_t x) +{ + x = ((x >> 1) & 0x55555555u) | ((x & 0x55555555u) << 1); + x = ((x >> 2) & 0x33333333u) | ((x & 0x33333333u) << 2); + x = ((x >> 4) & 0x0f0f0f0fu) | ((x & 0x0f0f0f0fu) << 4); + x = ((x >> 8) & 0x00ff00ffu) | ((x & 0x00ff00ffu) << 8); + x = ((x >> 16) & 0xffffu) | ((x & 0xffffu) << 16); + return x; +} + +static bool color = false; +static uint8_t _max_grayscale_bits = 3; + +static void timer_irq_handler_fn(const struct device *counter_dev, void *user_data) +{ + static volatile int i_isr = 0; + if (color) { + static volatile int counter = 0; + switch ((framebuffer_color[i_isr] * 8 / (1 << _max_grayscale_bits))) { + case 0: + turnLed(i_isr, false); + break; + case 1: + turnLed(i_isr, counter % 31 == 0); + break; + case 2: + turnLed(i_isr, counter % 23 == 0); + break; + case 3: + turnLed(i_isr, counter % 15 == 0); + break; + case 4: + turnLed(i_isr, counter % 9 == 0); + break; + case 5: + turnLed(i_isr, counter % 5 == 0); + break; + case 6: + turnLed(i_isr, counter % 3 == 0); + break; + case 7: + turnLed(i_isr, true); + break; + } + counter++; + } else { + turnLed(i_isr, ((framebuffer[i_isr >> 3] & (1 << (i_isr % 8))) != 0)); + } + i_isr = (i_isr + 1) % NUM_MATRIX_LEDS; +} + +void matrixWrite(uint32_t* buf) { + memcpy(framebuffer, buf, NUM_MATRIX_LEDS/8); + color = false; +} + +void matrixGrayscaleWrite(uint8_t* buf) { + memcpy(framebuffer_color, buf, NUM_MATRIX_LEDS); + color = true; +} + +void matrixSetGrayscaleBits(uint8_t _max) { + _max_grayscale_bits = _max; +} + +#define TIMER DT_NODELABEL(counter_matrix) + +void matrixBegin() { + const struct device *const counter_dev = DEVICE_DT_GET(TIMER); + counter_start(counter_dev); + + struct counter_top_cfg top_cfg; + top_cfg.ticks = counter_us_to_ticks(counter_dev, 10); + top_cfg.callback = timer_irq_handler_fn; + top_cfg.user_data = &top_cfg; + top_cfg.flags = 0; + + int err = counter_set_top_value(counter_dev, &top_cfg); + if (err) { + printk("Failed to set counter_set_top_value"); + } + + //uint32_t buf[4] = {0x38E22, 0x8A09375D, 0x824A288E, 0x38000000}; + /* + uint32_t buf[4] = { + 0b00000000000000011100011100010001, + 0b01000101000001001001101110101110, + 0b11000001001001010001010001000111, + 0b00011100000000000000000000000000}; + */ + uint32_t buf[4] = { + 0b01111111000000100000100000010000, + 0b01000000100000100000010001010000, + 0b00100001100000011111111000000000, + 0b00110000000000000000000000000000}; + for (int i = 0; i < 4 ; i++) { + buf[i] = reverse(buf[i]); + } + //matrixWrite(buf); +} \ No newline at end of file diff --git a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf new file mode 100644 index 000000000..2f7db5856 --- /dev/null +++ b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf @@ -0,0 +1,46 @@ +CONFIG_LLEXT_STORAGE_WRITABLE=n +CONFIG_HEAP_MEM_POOL_SIZE=32768 +CONFIG_SHELL_STACK_SIZE=32768 +CONFIG_MAIN_STACK_SIZE=32768 +CONFIG_LLEXT_HEAP_SIZE=128 + +CONFIG_FPU=y + +CONFIG_ADC=y +CONFIG_DAC=y +CONFIG_PWM=y + +CONFIG_ICACHE=y +CONFIG_DCACHE=y +CONFIG_CACHE_MANAGEMENT=y + +CONFIG_DMA=y +CONFIG_MEMC=y +CONFIG_SPI_ASYNC=y +CONFIG_SPI_STM32_INTERRUPT=y +CONFIG_SPI_SLAVE=y + +CONFIG_ARM_MPU=n + +CONFIG_ENTROPY_GENERATOR=y +CONFIG_TEST_RANDOM_GENERATOR=y + +CONFIG_LOG_MODE_IMMEDIATE=n + +CONFIG_COUNTER=y +CONFIG_COUNTER_SHELL=y + +CONFIG_DEBUG_THREAD_INFO=y + +CONFIG_MAX_THREAD_BYTES=6 +CONFIG_DYNAMIC_THREAD=y +CONFIG_DYNAMIC_THREAD_POOL_SIZE=2 +CONFIG_DYNAMIC_THREAD_ALLOC=y + +#CONFIG_VIDEO=y +#CONFIG_VIDEO_LOG_LEVEL_DBG=y +#CONFIG_VIDEO_STM32_DCMI=y +#CONFIG_VIDEO_BUFFER_POOL_NUM_MAX=2 +#CONFIG_VIDEO_BUFFER_POOL_SZ_MAX=200000 +#CONFIG_VIDEO_BUFFER_POOL_ALIGN=32 +#CONFIG_VIDEO_GC2145=y diff --git a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay new file mode 100644 index 000000000..eb7854476 --- /dev/null +++ b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay @@ -0,0 +1,200 @@ +&i2c4 { + status = "okay"; + pinctrl-0 = <&i2c4_scl_pd12 &i2c4_sda_pd13>; + pinctrl-1 = <&i2c4_scl_pf14 &i2c4_sda_pf15>; + pinctrl-names = "default", "sleep"; /* TODO: sleep is jmisc mux */ + clock-frequency = ; + +/* + gc2145: gc2145@3c { + status = "okay"; + compatible = "galaxycore,gc2145"; + reg = <0x3c>; + reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>; + pwdn-gpios = <&gpiod 2 GPIO_ACTIVE_LOW>; + + port { + gc2145_ep_out: endpoint { + remote-endpoint = <&dcmi_ep_in>; + }; + }; + }; +*/ +}; + +/* clock from HSI48 */ +&mco1 { + status = "okay"; + clocks = <&rcc STM32_SRC_HSI48 MCO1_SEL(8)>; + prescaler = ; + pinctrl-0 = <&rcc_mco_pa8>; + pinctrl-names = "default"; +}; + +/* +&dcmi { + status = "okay"; + pinctrl-0 = <&dcmi_hsync_pd8 &dcmi_pixclk_pd9 &dcmi_vsync_pi5 + &dcmi_d0_pc6 &dcmi_d1_pc7 &dcmi_d2_pc8 &dcmi_d3_pc9 + &dcmi_d4_pe4 &dcmi_d5_pi4 &dcmi_d6_pi6 &dcmi_d7_pi7>; + pinctrl-names = "default"; + dmas = <&gpdma1 12 86 (STM32_DMA_PERIPH_TO_MEMORY | STM32_DMA_PERIPH_NO_INC | + STM32_DMA_MEM_INC | STM32_DMA_PERIPH_32BITS | STM32_DMA_MEM_32BITS | + STM32_DMA_PRIORITY_HIGH) STM32_DMA_FIFO_1_4>; + + port { + dcmi_ep_in: endpoint { + remote-endpoint-label = "gc2145_ep_out"; + bus-width = <8>; + hsync-active = <0>; + vsync-active = <0>; + pclk-sample = <0>; + }; + }; +}; +*/ + +&flash0 { + partitions { + bootanimation: partition@90000 { + reg = <0x090000 DT_SIZE_K(64)>; + }; + user_sketch: partition@f0000 { + reg = <0x0F0000 DT_SIZE_K(64)>; + }; + }; +}; + +&timers16 { + status = "okay"; + st,prescaler = <4>; + + counter_servo: counter { + status = "okay"; + label = "SERVO_COUNTER"; + }; +}; + + +&timers17 { + status = "okay"; + st,prescaler = <4>; + + counter_matrix: counter { + status = "okay"; + label = "LED_MATRIX_COUNTER"; + }; +}; + +/ { + zephyr,user { + digital-pin-gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>, /* JDIGITAL */ + <&gpiob 6 GPIO_ACTIVE_HIGH>, + <&gpiob 3 GPIO_ACTIVE_HIGH>, + <&gpiob 0 GPIO_ACTIVE_HIGH>, + <&gpioa 12 GPIO_ACTIVE_HIGH>, + <&gpioa 11 GPIO_ACTIVE_HIGH>, + <&gpiob 1 GPIO_ACTIVE_HIGH>, + <&gpiob 2 GPIO_ACTIVE_HIGH>, + <&gpiob 4 GPIO_ACTIVE_HIGH>, + <&gpiob 8 GPIO_ACTIVE_HIGH>, + <&gpiob 9 GPIO_ACTIVE_HIGH>, + <&gpiob 15 GPIO_ACTIVE_HIGH>, + <&gpiob 14 GPIO_ACTIVE_HIGH>, + <&gpiob 13 GPIO_ACTIVE_HIGH>, + + <&gpioa 4 GPIO_ACTIVE_HIGH>, /* ADCs */ + <&gpioa 5 GPIO_ACTIVE_HIGH>, + <&gpioa 6 GPIO_ACTIVE_HIGH>, + <&gpioa 7 GPIO_ACTIVE_HIGH>, + <&gpioc 1 GPIO_ACTIVE_HIGH>, + <&gpioc 0 GPIO_ACTIVE_HIGH>, + + <&gpiob 11 GPIO_ACTIVE_HIGH>, /* D20 - PB11 */ + <&gpiob 10 GPIO_ACTIVE_HIGH>, /* D21 - PB10 */ + + <&gpioc 2 GPIO_ACTIVE_HIGH>, /* JSPI */ + <&gpioc 3 GPIO_ACTIVE_HIGH>, + <&gpiod 1 GPIO_ACTIVE_HIGH>, + + <&gpioc 6 GPIO_ACTIVE_HIGH>, /* JMISC */ + <&gpiod 2 GPIO_ACTIVE_HIGH>, + <&gpioc 7 GPIO_ACTIVE_HIGH>, + <&gpioe 2 GPIO_ACTIVE_HIGH>, + <&gpioc 8 GPIO_ACTIVE_HIGH>, + <&gpioe 3 GPIO_ACTIVE_HIGH>, + <&gpioc 9 GPIO_ACTIVE_HIGH>, + <&gpioe 5 GPIO_ACTIVE_HIGH>, + <&gpioe 4 GPIO_ACTIVE_HIGH>, + <&gpioe 6 GPIO_ACTIVE_HIGH>, + <&gpioi 4 GPIO_ACTIVE_HIGH>, + <&gpioe 7 GPIO_ACTIVE_HIGH>, + <&gpioi 6 GPIO_ACTIVE_HIGH>, + <&gpioe 8 GPIO_ACTIVE_HIGH>, + <&gpioi 7 GPIO_ACTIVE_HIGH>, + <&gpiof 14 GPIO_ACTIVE_HIGH>, + <&gpiod 9 GPIO_ACTIVE_HIGH>, + <&gpiof 15 GPIO_ACTIVE_HIGH>, + <&gpioi 5 GPIO_ACTIVE_HIGH>, + <&gpioa 3 GPIO_ACTIVE_HIGH>, + <&gpiod 8 GPIO_ACTIVE_HIGH>, + <&gpioa 0 GPIO_ACTIVE_HIGH>, + <&gpioa 8 GPIO_ACTIVE_HIGH>, + <&gpioa 1 GPIO_ACTIVE_HIGH>, + <&gpioa 10 GPIO_ACTIVE_HIGH>, + + <&gpioh 10 GPIO_ACTIVE_HIGH>, /* LEDs */ + <&gpioh 11 GPIO_ACTIVE_HIGH>, + <&gpioh 12 GPIO_ACTIVE_HIGH>, + <&gpioh 13 GPIO_ACTIVE_HIGH>, + <&gpioh 14 GPIO_ACTIVE_HIGH>, + <&gpioh 15 GPIO_ACTIVE_HIGH>, + + <&gpiof 0 GPIO_ACTIVE_HIGH>, /* LED matrix */ + <&gpiof 1 GPIO_ACTIVE_HIGH>, + <&gpiof 2 GPIO_ACTIVE_HIGH>, + <&gpiof 3 GPIO_ACTIVE_HIGH>, + <&gpiof 4 GPIO_ACTIVE_HIGH>, + <&gpiof 5 GPIO_ACTIVE_HIGH>, + <&gpiof 6 GPIO_ACTIVE_HIGH>, + <&gpiof 7 GPIO_ACTIVE_HIGH>, + <&gpiof 8 GPIO_ACTIVE_HIGH>, + <&gpiof 9 GPIO_ACTIVE_HIGH>, + <&gpiof 10 GPIO_ACTIVE_HIGH>, + + <&gpiog 13 GPIO_ACTIVE_HIGH>, /* Internal SPI RDY */ + <&gpioh 3 GPIO_ACTIVE_HIGH>; /* BOOT0 */ + + builtin-led-gpios = <&gpioh 10 GPIO_ACTIVE_HIGH>, + <&gpioh 11 GPIO_ACTIVE_HIGH>, + <&gpioh 12 GPIO_ACTIVE_HIGH>, + <&gpioh 13 GPIO_ACTIVE_HIGH>, + <&gpioh 14 GPIO_ACTIVE_HIGH>, + <&gpioh 15 GPIO_ACTIVE_HIGH>; + + pwm-pin-gpios = <>; + + adc-pin-gpios = <&gpioa 4 0>, + <&gpioa 5 0>, + <&gpioa 6 0>, + <&gpioa 7 0>, + <&gpioc 1 0>, + <&gpioc 0 0>; + + serials = <&usart1>, <&lpuart1>; + i2cs = <&i2c2>, <&i2c4>; + spis = <&spi3>; + pwms = <>; + + io-channels = <&adc1 9>, + <&adc1 10>, + <&adc1 11>, + <&adc1 12>, + <&adc1 1>, + <&adc1 2>; + + dac = <&dac1>; + dac-channels = <1>, <2>; + dac-resolution = <12>; + }; +}; diff --git a/variants/arduino_uno_q_stm32u585xx/variant.h b/variants/arduino_uno_q_stm32u585xx/variant.h new file mode 100644 index 000000000..68c33a896 --- /dev/null +++ b/variants/arduino_uno_q_stm32u585xx/variant.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2022 Dhruva Gole + * + * SPDX-License-Identifier: Apache-2.0 + */ + +// TODO: correctly handle these legacy defines +#define MOSI 0 +#define MISO 0 +#define SCK 0 +#define SS 0 +#define SDA 0 +#define SCL 0 From 6eb03ae980015735dd9408fcedca6fb6fde5767c Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 11 Jul 2025 13:11:37 +0200 Subject: [PATCH 041/117] unoq: add bootanimation support --- loader/bootanimation.h | 4900 +++++++++++++++++ loader/main.c | 84 +- loader/matrix.inc | 43 +- .../arduino_uno_q_stm32u585xx.overlay | 3 +- 4 files changed, 4995 insertions(+), 35 deletions(-) create mode 100644 loader/bootanimation.h diff --git a/loader/bootanimation.h b/loader/bootanimation.h new file mode 100644 index 000000000..01aeacece --- /dev/null +++ b/loader/bootanimation.h @@ -0,0 +1,4900 @@ +static const unsigned char bootanimation[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x16, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x7e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x16, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x6f, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x43, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5f, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x4f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x9a, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xa2, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x9c, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8d, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7d, 0x7b, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x8d, 0x69, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x8e, 0x5a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x35, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x84, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x81, 0x76, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x9a, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, + 0xa2, 0x5a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x9c, 0x4e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, + 0x8f, 0x44, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x82, 0x3b, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x9e, + 0x76, 0x33, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x95, 0x6c, 0x2a, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x8a, + 0x62, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x58, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x85, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, + 0x50, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x47, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6e, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, + 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x37, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5f, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, + 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x13, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x51, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x6b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x45, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x72, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x8d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x65, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x7b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x82, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x31, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5a, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x19, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xbd, + 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x75, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xbc, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x17, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xb4, + 0xab, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x69, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xa9, 0xb2, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x46, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x13, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xa1, + 0xb2, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x5d, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x99, 0xa7, 0xbd, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x58, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x92, + 0x9f, 0xbf, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x53, 0x00, 0x00, 0x2b, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x8b, 0x98, 0xba, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x35, 0x4e, 0x00, 0x00, 0x2b, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x84, + 0x91, 0xb3, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x4a, 0x00, 0x00, 0x24, 0xc7, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x7d, 0x8a, 0xac, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2e, 0x44, 0x00, 0x00, 0x21, 0xce, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x76, + 0x83, 0xa5, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x40, 0x00, 0x00, 0x1f, 0xc5, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x44, 0x83, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x70, 0x7d, 0x9d, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x27, 0x3c, 0x00, 0x00, 0x1d, 0xbd, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x6a, + 0x76, 0x96, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x37, 0x00, 0x00, 0x1b, 0xb5, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x40, 0xb1, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x64, 0x70, 0x8f, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x34, 0x00, 0x00, 0x19, 0xae, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xae, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x5d, + 0x6a, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x2f, 0x00, 0x00, 0x17, 0xa6, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x9f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x58, 0x65, 0x82, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1b, 0x2b, 0x00, 0x00, 0x16, 0x9f, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa7, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x53, + 0x5f, 0x7b, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x28, 0x00, 0x00, 0x14, 0x97, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x35, 0x92, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x3a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xcd, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x4e, 0x5a, 0x75, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x15, 0x24, 0x00, 0x00, 0x13, 0x92, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, + 0x00, 0x00, 0x00, 0x00, 0x32, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x9a, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, + 0xc8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x49, + 0x55, 0x6f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x21, 0x00, 0x00, 0x12, 0x8b, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x86, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x35, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xc1, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xc0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x44, 0x50, 0x6a, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x1e, 0x00, 0x00, 0x10, 0x84, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8e, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0xba, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xcc, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x40, + 0x4c, 0x65, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x1a, 0x00, 0x00, 0x0e, 0x7f, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x7b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xb3, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xc6, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3b, 0x47, 0x5f, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x17, 0x00, 0x00, 0x0d, 0x79, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x83, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0xac, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xbf, 0xa5, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x34, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x37, + 0x43, 0x5a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x14, 0x00, 0x00, 0x0c, 0x73, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x26, 0x71, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x2b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0xa6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xba, 0xa3, 0xa6, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x34, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x33, 0x3e, 0x55, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x12, 0x00, 0x00, 0x0b, 0x6d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x79, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, + 0xa0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xb3, 0xa0, + 0xb7, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x34, 0x27, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x2f, + 0x3b, 0x51, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x00, 0x00, 0x0a, 0x69, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x67, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x9a, 0x0e, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xad, 0x9b, 0xb3, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x33, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2b, 0x37, 0x4c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x08, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6f, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, + 0x95, 0x0d, 0x00, 0x00, 0x62, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xa7, 0x96, + 0xb0, 0xb2, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x31, 0x25, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, + 0x33, 0x48, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x07, 0x5f, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x5e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x8f, 0x0c, 0x00, 0x00, 0x76, 0x88, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xa1, 0x91, 0xad, 0xad, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x2f, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x24, 0x30, 0x44, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x5a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x22, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, + 0x8a, 0x0b, 0x00, 0x00, 0x75, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x9b, 0x8c, + 0xa8, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x22, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x21, + 0x2d, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x05, 0x56, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x20, 0x00, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x85, 0x0a, 0x00, 0x00, 0x72, 0x92, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x96, 0x87, 0xa2, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x1e, 0x2a, 0x3d, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x52, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5e, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, + 0x80, 0x09, 0x00, 0x00, 0x6e, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x91, 0x83, + 0x9d, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, + 0x27, 0x39, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x4e, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x4f, 0x00, 0x00, + 0x00, 0x00, 0x09, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x1d, 0x00, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7b, 0x09, 0x00, 0x00, 0x6b, 0x88, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x8c, 0x7f, 0x99, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x24, 0x36, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x4a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x10, 0xbc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x56, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x77, 0x08, 0x00, 0x00, 0x68, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x87, 0x7a, + 0x94, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x16, + 0x21, 0x33, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x47, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x48, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x73, 0x07, 0x00, 0x00, 0x65, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x83, 0x77, 0x8f, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x1f, 0x30, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x02, 0x00, 0x00, 0x00, 0x00, 0x91, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x13, 0x45, 0x00, 0x00, 0x00, 0x00, 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x19, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0x6e, 0x06, 0x00, 0x00, 0x62, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x7e, 0x73, + 0x8b, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, + 0x1c, 0x2d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x93, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x42, 0x00, 0x00, + 0x00, 0x00, 0x04, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x17, 0x00, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x6b, 0x06, 0x00, 0x00, 0x5f, 0x79, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x7b, 0x6f, 0x87, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1a, 0x2b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x85, + 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x90, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x03, 0xa7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x49, 0x16, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x67, 0x05, 0x00, 0x00, 0x5d, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x77, 0x6c, + 0x83, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0x18, 0x27, 0x06, 0x00, 0x00, 0x00, 0x0b, 0xba, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x63, 0x04, 0x00, 0x00, 0x5a, 0x72, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x73, 0x68, 0x80, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x15, 0x25, 0x04, 0x00, 0x00, 0x00, 0x59, 0xbf, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x71, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x39, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0x13, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, + 0x5f, 0x04, 0x00, 0x00, 0x57, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6f, 0x65, + 0x7c, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x13, 0x22, 0x04, 0x00, 0x00, 0x00, 0xa3, 0xbd, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x37, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x13, 0x00, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x5d, 0x03, 0x00, 0x00, 0x55, 0x6d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x6c, 0x62, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x11, 0x20, 0x03, 0x00, 0x00, 0x42, 0xb1, 0xbb, + 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x6c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x34, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x59, 0x03, 0x00, 0x00, 0x53, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x68, 0x5f, + 0x75, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x10, 0x1d, 0x02, 0x00, 0x00, 0x95, 0xb2, 0xb9, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x32, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x57, 0x02, 0x00, 0x00, 0x51, 0x67, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x65, 0x5d, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x1c, 0x02, 0x00, 0x10, 0xbf, 0xaf, 0xb7, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x15, 0x00, 0x00, 0x7f, 0x67, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x91, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x39, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x53, 0x02, 0x00, 0x00, 0x4e, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x62, 0x5a, + 0x6f, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x19, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x0c, 0x19, 0x01, 0x00, 0x38, 0xc6, 0xad, 0xb6, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0x00, 0x2b, 0x28, 0x00, 0x00, 0x7c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x2e, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x51, 0x02, 0x00, 0x00, 0x4c, 0x62, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x5f, 0x57, 0x6d, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x25, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x17, 0x00, 0x00, 0x46, 0xc4, 0xad, 0xb3, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x77, 0x2b, 0x00, 0x00, 0x79, 0x63, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x35, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x4e, 0x01, 0x00, 0x00, 0x4b, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x5d, 0x55, + 0x6a, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x16, 0x00, 0x00, 0x43, 0xc2, 0xac, 0xb0, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x10, 0xaf, 0x26, 0x00, 0x00, 0x77, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x31, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x4c, 0x00, 0x00, 0x00, 0x49, 0x5e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x5a, 0x53, 0x67, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x25, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x00, 0x00, 0x40, 0xc0, 0xa9, 0xac, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0xc6, 0x24, 0x00, 0x00, 0x75, 0x5f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x31, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x49, 0x00, 0x00, 0x00, 0x47, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x57, 0x51, + 0x65, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x12, 0x00, 0x00, 0x3e, 0xbf, 0xa6, 0xa9, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, + 0x34, 0xc7, 0x23, 0x00, 0x00, 0x73, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7a, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x47, 0x00, 0x00, 0x00, 0x46, 0x5a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x55, 0x4f, 0x63, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x23, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0x3d, 0xbd, 0xa4, 0xa6, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x38, 0xc7, 0x22, 0x00, 0x00, 0x70, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0xa1, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x45, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x44, 0x00, 0x00, 0x00, 0x44, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x53, 0x4d, + 0x60, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x0f, 0x00, 0x00, 0x3c, 0xbb, 0xa1, 0xa4, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, + 0x37, 0xc4, 0x21, 0x00, 0x00, 0x6f, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xaf, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00, 0x00, 0x00, 0x43, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x50, 0x4b, 0x5e, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x13, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x22, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x3b, 0xb9, 0x9f, 0xa0, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x36, 0xc2, 0x20, 0x00, 0x00, 0x6d, 0x58, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0xbd, 0x30, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x13, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x44, 0x00, 0x00, 0x00, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4e, 0x49, + 0x5b, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x00, 0x00, 0x3a, 0xb6, 0x9c, 0x9e, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, + 0x35, 0xbf, 0x20, 0x00, 0x00, 0x6b, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xbd, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x9f, 0x13, 0x00, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x44, 0x00, 0x00, 0x00, 0x40, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x4c, 0x47, 0x59, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x39, 0xb4, 0x9a, 0x9c, + 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x34, 0xbd, 0x1f, 0x00, 0x00, 0x69, 0x54, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0xb9, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0xba, 0x11, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x42, 0x00, 0x00, 0x00, 0x3e, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x4a, 0x45, + 0x58, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x38, 0xb1, 0x98, 0x9a, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, + 0x32, 0xba, 0x1f, 0x00, 0x00, 0x67, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xb6, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xc1, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x3d, 0x4e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x48, 0x43, 0x55, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x37, 0xaf, 0x96, 0x98, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x31, 0xb8, 0x1e, 0x00, 0x00, 0x66, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0xb4, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x36, 0xc1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x43, + 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x46, 0x41, + 0x54, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x36, 0xad, 0x94, 0x96, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, + 0x31, 0xb6, 0x1e, 0x00, 0x00, 0x64, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xb1, 0x2d, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xbf, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x46, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x4c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x44, 0x40, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x36, 0xab, 0x92, 0x93, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x30, 0xb4, 0x1d, 0x00, 0x00, 0x63, 0x4f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xaf, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0xbd, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x43, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x0f, 0x42, 0x3e, + 0x50, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x35, 0xa8, 0x8f, 0x91, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, + 0x2e, 0xb2, 0x1d, 0x00, 0x00, 0x61, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xac, 0x2c, 0x00, + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xbb, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc5, 0x41, 0x3b, 0x00, 0x00, 0x00, 0x37, 0x48, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x36, 0x00, 0x0f, 0x40, 0x3c, 0x4f, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x34, 0xa6, 0x8e, 0x8f, + 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x2d, 0xb0, 0x1c, 0x00, 0x00, 0x60, 0x4c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0xaa, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2c, 0xb8, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x3f, + 0x34, 0x00, 0x00, 0x00, 0x37, 0x47, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x4f, 0x00, 0x0d, 0x3f, 0x3b, + 0x4d, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x33, 0xa4, 0x8c, 0x8e, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x2d, 0xae, 0x1c, 0x00, 0x00, 0x5e, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xa8, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xb6, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x15, 0xc7, 0x3e, 0x33, 0x00, 0x00, 0x00, 0x36, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x5e, 0x59, 0x00, 0x0c, 0x3e, 0x3a, 0x4b, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xa3, 0x8a, 0x8b, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x2c, 0xac, 0x1b, 0x00, 0x00, 0x5d, 0x49, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0xa5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2b, 0xb3, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x16, 0xc5, 0x3d, + 0x31, 0x00, 0x00, 0x00, 0x34, 0x44, 0x00, 0x00, 0x00, 0x00, 0x91, 0x59, 0x00, 0x0c, 0x3c, 0x39, + 0x49, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x32, 0xa1, 0x89, 0x8a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x2b, 0xaa, 0x1b, 0x00, 0x00, 0x5b, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa3, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xb1, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x00, 0x15, 0xc3, 0x3c, 0x2e, 0x00, 0x00, 0x00, 0x33, 0x43, 0x00, 0x00, + 0x00, 0x00, 0xb8, 0x54, 0x00, 0x0a, 0x39, 0x37, 0x49, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x9f, 0x87, 0x89, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x2a, 0xa9, 0x1a, 0x00, 0x00, 0x5a, 0x48, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0xa1, 0x29, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0xb0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x13, 0xc2, 0x3b, + 0x2d, 0x00, 0x00, 0x00, 0x32, 0x41, 0x00, 0x00, 0x00, 0x14, 0xca, 0x51, 0x00, 0x0a, 0x37, 0x35, + 0x48, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x9d, 0x85, 0x87, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x29, 0xa6, 0x1a, 0x00, 0x00, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9f, 0x29, 0x00, + 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xae, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x12, 0xc0, 0x3a, 0x2d, 0x00, 0x00, 0x00, 0x32, 0x41, 0x00, 0x00, + 0x00, 0x38, 0xcf, 0x4e, 0x00, 0x0a, 0x38, 0x35, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x9c, 0x84, 0x85, + 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x29, 0xa5, 0x19, 0x00, 0x00, 0x58, 0x46, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x9d, 0x28, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x29, 0xac, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x12, 0xbf, 0x3a, + 0x2c, 0x00, 0x00, 0x00, 0x31, 0x40, 0x00, 0x00, 0x00, 0x5e, 0xd0, 0x4d, 0x00, 0x09, 0x36, 0x34, + 0x44, 0x47, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x9a, 0x83, 0x83, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x28, 0xa3, 0x19, 0x00, 0x00, 0x57, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x9c, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x12, 0xbd, 0x38, 0x2a, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x00, 0x00, + 0x00, 0x80, 0xce, 0x4d, 0x00, 0x09, 0x35, 0x33, 0x43, 0x46, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x98, 0x81, 0x82, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x27, 0xa2, 0x19, 0x00, 0x00, 0x56, 0x44, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x99, 0x27, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0xa8, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x12, 0xbb, 0x38, + 0x29, 0x00, 0x00, 0x00, 0x2f, 0x3e, 0x00, 0x00, 0x00, 0x97, 0xcc, 0x4c, 0x00, 0x08, 0x34, 0x32, + 0x42, 0x45, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x97, 0x80, 0x81, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x26, 0xa0, 0x19, 0x00, 0x00, 0x55, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x97, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xa6, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x12, 0xba, 0x37, 0x28, 0x00, 0x00, 0x00, 0x2e, 0x3d, 0x00, 0x00, + 0x14, 0x9d, 0xca, 0x4b, 0x00, 0x08, 0x32, 0x30, 0x40, 0x44, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x95, 0x7e, 0x7f, + 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x26, 0x9f, 0x18, 0x00, 0x00, 0x53, 0x42, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x96, 0x26, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0xa5, 0x09, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x12, 0xb8, 0x36, + 0x27, 0x00, 0x00, 0x00, 0x2d, 0x3c, 0x00, 0x00, 0x36, 0x9f, 0xc9, 0x4b, 0x00, 0x07, 0x32, 0x2f, + 0x40, 0x43, 0x00, 0x00, 0x00, 0x11, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x95, 0x7e, 0x7f, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x26, 0x9e, 0x18, 0x00, 0x00, 0x53, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x96, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xa4, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb8, 0x36, 0x26, 0x00, 0x00, 0x00, 0x2d, 0x3b, 0x00, 0x00, + 0x58, 0x9f, 0xc8, 0x4a, 0x00, 0x07, 0x30, 0x2f, 0x3f, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x3d, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x94, 0x7d, 0x7e, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x25, 0x9d, 0x18, 0x00, 0x00, 0x52, 0x41, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x94, 0x26, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0xa2, 0x09, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb7, 0x35, + 0x25, 0x00, 0x00, 0x00, 0x2c, 0x3a, 0x00, 0x00, 0x7c, 0xa0, 0xc7, 0x4a, 0x00, 0x06, 0x2f, 0x2e, + 0x3e, 0x41, 0x00, 0x00, 0x00, 0x29, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x93, 0x7c, 0x7d, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x25, 0x9d, 0x18, 0x00, 0x00, 0x52, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x94, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xa2, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb7, 0x35, 0x24, 0x00, 0x00, 0x00, 0x2c, 0x3a, 0x00, 0x00, + 0x97, 0x9f, 0xc7, 0x4a, 0x00, 0x06, 0x2f, 0x2d, 0x3d, 0x41, 0x00, 0x00, 0x00, 0x2f, 0x3d, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x93, 0x7c, 0x7d, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x24, 0x9d, 0x18, 0x00, 0x00, 0x52, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x93, 0x25, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0xa1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb6, 0x34, + 0x24, 0x00, 0x00, 0x00, 0x2c, 0x3a, 0x00, 0x0d, 0xa6, 0x9e, 0xc7, 0x4a, 0x00, 0x06, 0x2e, 0x2d, + 0x3d, 0x41, 0x00, 0x00, 0x00, 0x31, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x93, 0x7c, 0x7d, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x24, 0x9d, 0x18, 0x00, 0x00, 0x51, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x93, 0x25, 0x00, + 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xa1, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb7, 0x34, 0x23, 0x00, 0x00, 0x00, 0x2b, 0x3a, 0x00, 0x29, + 0xad, 0x9d, 0xc7, 0x4a, 0x00, 0x06, 0x2e, 0x2d, 0x3c, 0x40, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x93, 0x7c, 0x7d, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x25, 0x9d, 0x18, 0x00, 0x00, 0x52, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x93, 0x26, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0xa1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb7, 0x34, + 0x23, 0x00, 0x00, 0x00, 0x2b, 0x3a, 0x00, 0x49, 0xb2, 0x9d, 0xc7, 0x4a, 0x00, 0x06, 0x2e, 0x2d, + 0x3c, 0x40, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x94, 0x7d, 0x7d, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x25, 0x9d, 0x18, 0x00, 0x00, 0x52, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x93, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xa2, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb7, 0x35, 0x23, 0x00, 0x00, 0x00, 0x2b, 0x3a, 0x00, 0x69, + 0xb4, 0x9c, 0xc8, 0x4a, 0x00, 0x06, 0x2e, 0x2d, 0x3c, 0x40, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x94, 0x7d, 0x7e, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x25, 0x9e, 0x18, 0x00, 0x00, 0x52, 0x41, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x94, 0x26, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0xa2, 0x08, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x00, 0x12, 0xb8, 0x35, + 0x23, 0x00, 0x00, 0x00, 0x2c, 0x3a, 0x00, 0x86, 0xb4, 0x9c, 0xc9, 0x4b, 0x00, 0x06, 0x2e, 0x2d, + 0x3d, 0x40, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x96, 0x7f, 0x7f, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x25, 0xa0, 0x19, 0x00, 0x00, 0x53, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x95, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xa4, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x13, 0x00, 0x00, 0x12, 0xba, 0x36, 0x24, 0x00, 0x00, 0x00, 0x2c, 0x3b, 0x00, 0x9c, + 0xb3, 0x9c, 0xca, 0x4c, 0x00, 0x06, 0x2e, 0x2d, 0x3d, 0x41, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x98, 0x80, 0x81, + 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x26, 0xa1, 0x19, 0x00, 0x00, 0x54, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x96, 0x27, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0xa5, 0x08, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x24, 0x00, 0x00, 0x12, 0xbc, 0x36, + 0x24, 0x00, 0x00, 0x00, 0x2d, 0x3c, 0x00, 0xac, 0xb2, 0x9c, 0xcb, 0x4c, 0x00, 0x06, 0x2f, 0x2e, + 0x3e, 0x42, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x9a, 0x82, 0x82, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x26, 0xa3, 0x19, 0x00, 0x00, 0x56, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x98, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xa8, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x36, 0x00, 0x00, 0x13, 0xbe, 0x37, 0x25, 0x00, 0x00, 0x00, 0x2e, 0x3d, 0x00, 0xb4, + 0xb1, 0x9d, 0xcc, 0x4d, 0x00, 0x07, 0x30, 0x2f, 0x3f, 0x43, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x9c, 0x84, 0x85, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x27, 0xa6, 0x1a, 0x00, 0x00, 0x57, 0x45, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x9b, 0x29, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x29, 0xaa, 0x09, 0x00, 0x00, 0x00, 0x00, 0x56, 0x0a, 0x47, 0x00, 0x00, 0x13, 0xc1, 0x39, + 0x26, 0x00, 0x00, 0x00, 0x2e, 0x3e, 0x01, 0xb8, 0xb0, 0x9d, 0xcd, 0x4f, 0x00, 0x07, 0x31, 0x30, + 0x41, 0x44, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x9f, 0x87, 0x87, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x28, 0xa9, 0x1a, 0x00, 0x00, 0x59, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x9e, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xad, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x58, 0x1c, 0x57, 0x00, 0x00, 0x14, 0xc4, 0x3a, 0x28, 0x00, 0x00, 0x00, 0x30, 0x40, 0x05, 0xba, + 0xb0, 0x9d, 0xcd, 0x50, 0x00, 0x07, 0x32, 0x31, 0x42, 0x46, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xa2, 0x89, 0x8a, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0xac, 0x1b, 0x00, 0x00, 0x5a, 0x48, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xa1, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2b, 0xb0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x30, 0x64, 0x00, 0x00, 0x14, 0xc7, 0x3b, + 0x29, 0x00, 0x00, 0x00, 0x31, 0x41, 0x07, 0xba, 0xb0, 0x9d, 0xce, 0x51, 0x00, 0x08, 0x34, 0x33, + 0x44, 0x48, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0xa5, 0x8c, 0x8d, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x2b, 0xaf, 0x1c, 0x00, 0x00, 0x5c, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xa4, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xb4, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x5d, 0x46, 0x6e, 0x00, 0x00, 0x14, 0xca, 0x3c, 0x2b, 0x00, 0x00, 0x00, 0x32, 0x43, 0x07, 0xba, + 0xb0, 0x9d, 0xce, 0x52, 0x00, 0x09, 0x36, 0x34, 0x46, 0x4a, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xa9, 0x8f, 0x90, + 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x2c, 0xb4, 0x1d, 0x00, 0x00, 0x5f, 0x4b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xa8, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2d, 0xb8, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x5b, 0x76, 0x00, 0x00, 0x14, 0xcd, 0x3e, + 0x2c, 0x00, 0x00, 0x00, 0x34, 0x44, 0x06, 0xb9, 0xb0, 0x9d, 0xce, 0x52, 0x00, 0x09, 0x37, 0x36, + 0x48, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x37, 0xad, 0x93, 0x94, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x2e, 0xb8, 0x1e, 0x00, 0x00, 0x62, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xac, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xbc, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x63, 0x6e, 0x7b, 0x00, 0x00, 0x13, 0xcd, 0x40, 0x2f, 0x00, 0x00, 0x00, 0x36, 0x47, 0x05, 0xb9, + 0xb0, 0x9d, 0xce, 0x52, 0x00, 0x0a, 0x3a, 0x38, 0x4b, 0x4e, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xb2, 0x97, 0x99, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x30, 0xbd, 0x1f, 0x00, 0x00, 0x65, 0x51, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0xb1, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0xc0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x65, 0x7e, 0x7e, 0x00, 0x00, 0x13, 0xce, 0x41, + 0x31, 0x00, 0x00, 0x00, 0x38, 0x4a, 0x03, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x0b, 0x3c, 0x3b, + 0x4d, 0x51, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3b, 0xb7, 0x9c, 0x9d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x32, 0xc2, 0x20, 0x00, 0x00, 0x69, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xb6, 0x31, 0x00, + 0x00, 0x00, 0x00, 0x74, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xc2, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x8a, 0x80, 0x00, 0x00, 0x13, 0xce, 0x41, 0x33, 0x00, 0x00, 0x00, 0x3b, 0x4d, 0x01, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x0c, 0x3f, 0x3d, 0x50, 0x55, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x23, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xbc, 0xa2, 0xa2, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x33, 0xc8, 0x21, 0x00, 0x00, 0x6c, 0x57, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xb9, 0x32, 0x00, 0x00, 0x00, 0x00, 0x78, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0xc4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x93, 0x81, 0x00, 0x00, 0x13, 0xce, 0x42, + 0x36, 0x00, 0x00, 0x00, 0x3d, 0x50, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x0d, 0x42, 0x40, + 0x54, 0x58, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0xa7, 0xa8, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x35, 0xcd, 0x23, 0x00, 0x00, 0x70, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xbb, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x7e, 0x39, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xc5, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x72, 0x98, 0x81, 0x00, 0x00, 0x13, 0xce, 0x43, 0x38, 0x00, 0x00, 0x00, 0x41, 0x54, 0x00, 0xb8, + 0xb0, 0x9d, 0xce, 0x52, 0x00, 0x0f, 0x46, 0x43, 0x57, 0x5c, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x25, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc4, 0xab, 0xaf, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x36, 0xd0, 0x24, 0x00, 0x00, 0x75, 0x5f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0xbd, 0x33, 0x00, 0x00, 0x00, 0x00, 0x82, 0x4d, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0xc6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x77, 0x9a, 0x81, 0x00, 0x00, 0x13, 0xce, 0x43, + 0x3c, 0x00, 0x00, 0x00, 0x44, 0x58, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x10, 0x49, 0x47, + 0x5c, 0x60, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x11, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0xc6, 0xad, 0xb6, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, + 0x36, 0xd1, 0x24, 0x00, 0x00, 0x7a, 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0xbe, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x88, 0x62, 0x00, 0x00, 0x01, 0x00, 0x2f, 0xc8, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x9b, 0x81, 0x00, 0x00, 0x13, 0xce, 0x44, 0x3f, 0x00, 0x00, 0x00, 0x47, 0x5c, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x12, 0x4e, 0x4b, 0x60, 0x65, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x13, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc8, 0xae, 0xb9, + 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x37, 0xd1, 0x24, 0x00, 0x00, 0x7f, 0x68, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x0c, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x01, 0x8f, 0x75, 0x00, 0x00, 0x04, + 0x00, 0x2f, 0xc9, 0x12, 0x00, 0x00, 0x00, 0x00, 0x83, 0x9a, 0x81, 0x00, 0x00, 0x13, 0xce, 0x46, + 0x43, 0x00, 0x00, 0x00, 0x4a, 0x60, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x14, 0x52, 0x4f, + 0x65, 0x6a, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbc, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, + 0x37, 0xd1, 0x24, 0x00, 0x00, 0x85, 0x6d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0c, 0xc0, 0x33, 0x00, + 0x00, 0x00, 0x01, 0x96, 0x87, 0x01, 0x00, 0x07, 0x00, 0x2f, 0xcb, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x89, 0x99, 0x81, 0x00, 0x00, 0x13, 0xce, 0x46, 0x47, 0x00, 0x00, 0x00, 0x4e, 0x65, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x15, 0x57, 0x53, 0x6b, 0x6f, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbd, + 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0xd1, 0x24, 0x00, 0x00, 0x8b, 0x72, 0x00, + 0x00, 0x01, 0x0c, 0x00, 0x0d, 0xc1, 0x32, 0x00, 0x00, 0x00, 0x02, 0x9d, 0x97, 0x02, 0x00, 0x0b, + 0x00, 0x2f, 0xcc, 0x13, 0x00, 0x00, 0x00, 0x00, 0x91, 0x98, 0x81, 0x00, 0x00, 0x13, 0xce, 0x47, + 0x4b, 0x00, 0x00, 0x00, 0x52, 0x6a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x17, 0x5c, 0x58, + 0x70, 0x75, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x18, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, + 0x38, 0xd1, 0x24, 0x00, 0x00, 0x91, 0x77, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0e, 0xc3, 0x33, 0x00, + 0x00, 0x00, 0x03, 0xa5, 0xa4, 0x02, 0x00, 0x10, 0x00, 0x2f, 0xce, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x96, 0x80, 0x00, 0x00, 0x13, 0xce, 0x48, 0x50, 0x00, 0x00, 0x00, 0x57, 0x70, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x1a, 0x62, 0x5d, 0x77, 0x7c, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x39, 0xd1, 0x24, 0x00, 0x00, 0x95, 0x7d, 0x02, + 0x00, 0x08, 0x15, 0x00, 0x0f, 0xc5, 0x33, 0x00, 0x00, 0x00, 0x03, 0xae, 0xaf, 0x03, 0x03, 0x15, + 0x00, 0x2f, 0xd1, 0x16, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x95, 0x80, 0x00, 0x00, 0x13, 0xce, 0x49, + 0x55, 0x02, 0x00, 0x00, 0x5c, 0x77, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x1c, 0x69, 0x63, + 0x7e, 0x83, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, + 0x3a, 0xd1, 0x24, 0x00, 0x00, 0x98, 0x82, 0x0c, 0x00, 0x0b, 0x1b, 0x00, 0x0f, 0xc7, 0x33, 0x00, + 0x00, 0x00, 0x04, 0xb7, 0xb8, 0x03, 0x06, 0x1a, 0x00, 0x2e, 0xd3, 0x17, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0x94, 0x81, 0x00, 0x00, 0x13, 0xce, 0x4b, 0x5b, 0x03, 0x00, 0x00, 0x61, 0x7d, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x1f, 0x6f, 0x69, 0x85, 0x8a, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x3b, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0x18, + 0x00, 0x0e, 0x21, 0x00, 0x10, 0xc8, 0x33, 0x00, 0x00, 0x00, 0x05, 0xbe, 0xbf, 0x04, 0x0a, 0x20, + 0x00, 0x2e, 0xd5, 0x17, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x93, 0x81, 0x00, 0x00, 0x13, 0xce, 0x4c, + 0x60, 0x04, 0x00, 0x00, 0x67, 0x85, 0x00, 0xb8, 0xb1, 0x9d, 0xcf, 0x52, 0x00, 0x21, 0x76, 0x70, + 0x8d, 0x92, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, + 0x3c, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0x25, 0x00, 0x12, 0x27, 0x00, 0x11, 0xcb, 0x33, 0x00, + 0x01, 0x00, 0x05, 0xc1, 0xc4, 0x04, 0x0d, 0x26, 0x00, 0x2e, 0xd8, 0x19, 0x00, 0x01, 0x00, 0x00, + 0xbc, 0x92, 0x81, 0x00, 0x00, 0x12, 0xce, 0x4e, 0x67, 0x05, 0x00, 0x00, 0x6e, 0x8d, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x25, 0x7e, 0x78, 0x96, 0x9b, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x25, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x3d, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0x32, + 0x00, 0x16, 0x2c, 0x00, 0x12, 0xcd, 0x33, 0x00, 0x04, 0x00, 0x05, 0xc1, 0xc7, 0x04, 0x11, 0x2c, + 0x00, 0x2f, 0xdb, 0x1a, 0x00, 0x04, 0x00, 0x00, 0xc0, 0x92, 0x81, 0x00, 0x00, 0x12, 0xce, 0x4f, + 0x6e, 0x06, 0x00, 0x00, 0x74, 0x95, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x28, 0x87, 0x7f, + 0x9f, 0xa4, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x00, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, + 0x3e, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0x40, 0x00, 0x19, 0x32, 0x00, 0x13, 0xd0, 0x33, 0x00, + 0x08, 0x00, 0x05, 0xc1, 0xc8, 0x04, 0x14, 0x32, 0x00, 0x2f, 0xdf, 0x1c, 0x00, 0x08, 0x00, 0x00, + 0xc1, 0x92, 0x80, 0x00, 0x00, 0x12, 0xce, 0x51, 0x76, 0x08, 0x00, 0x00, 0x78, 0x99, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x2c, 0x91, 0x88, 0xaa, 0xad, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x00, 0x42, 0xc8, 0xae, 0xbe, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x3f, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0x4e, + 0x00, 0x1c, 0x37, 0x00, 0x14, 0xd2, 0x33, 0x00, 0x0c, 0x00, 0x04, 0xc1, 0xc9, 0x04, 0x18, 0x37, + 0x00, 0x2e, 0xe2, 0x1d, 0x00, 0x0c, 0x00, 0x00, 0xc1, 0x92, 0x80, 0x00, 0x00, 0x12, 0xce, 0x53, + 0x7e, 0x09, 0x00, 0x00, 0x7a, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x30, 0x9a, 0x91, + 0xb0, 0xb3, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x25, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x1b, 0x04, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0x41, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0x5c, 0x00, 0x1f, 0x3b, 0x00, 0x16, 0xd6, 0x33, 0x00, + 0x12, 0x00, 0x05, 0xc1, 0xca, 0x04, 0x1a, 0x3b, 0x00, 0x2e, 0xe6, 0x20, 0x00, 0x12, 0x00, 0x00, + 0xc1, 0x92, 0x80, 0x00, 0x00, 0x12, 0xce, 0x56, 0x88, 0x0b, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x34, 0xa6, 0x9b, 0xb3, 0xb5, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x01, 0x33, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1f, 0x05, 0x00, 0x42, 0xc8, 0xae, 0xbe, + 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0xd1, 0x23, 0x00, 0x00, 0x99, 0x84, 0x67, + 0x00, 0x21, 0x40, 0x00, 0x18, 0xd9, 0x33, 0x00, 0x18, 0x00, 0x04, 0xc1, 0xc9, 0x04, 0x1d, 0x40, + 0x00, 0x2e, 0xea, 0x22, 0x00, 0x18, 0x00, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x12, 0xce, 0x58, + 0x91, 0x0d, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x39, 0xb2, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x03, 0x34, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x25, 0x08, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, + 0x44, 0xd2, 0x23, 0x00, 0x00, 0x99, 0x84, 0x73, 0x00, 0x23, 0x43, 0x00, 0x1a, 0xdd, 0x33, 0x00, + 0x20, 0x01, 0x04, 0xc1, 0xc9, 0x03, 0x1f, 0x43, 0x00, 0x2e, 0xee, 0x24, 0x00, 0x20, 0x03, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xce, 0x5a, 0x9c, 0x0f, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x3e, 0xbe, 0xa2, 0xb6, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x04, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x2a, 0x0a, 0x00, 0x42, 0xc8, 0xae, 0xbe, + 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x46, 0xd1, 0x23, 0x00, 0x00, 0x99, 0x83, 0x7d, + 0x00, 0x25, 0x46, 0x00, 0x1c, 0xe1, 0x33, 0x00, 0x27, 0x05, 0x04, 0xc1, 0xc8, 0x03, 0x22, 0x46, + 0x00, 0x2e, 0xf1, 0x26, 0x00, 0x27, 0x07, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xce, 0x5c, + 0xa8, 0x10, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x44, 0xc7, 0xa3, + 0xb6, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x30, 0x0d, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, + 0x49, 0xd2, 0x23, 0x00, 0x00, 0x99, 0x83, 0x87, 0x00, 0x27, 0x49, 0x00, 0x1e, 0xe7, 0x33, 0x00, + 0x31, 0x0a, 0x04, 0xc1, 0xc7, 0x03, 0x23, 0x49, 0x00, 0x2e, 0xf5, 0x29, 0x00, 0x31, 0x0b, 0x00, + 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xcf, 0x5f, 0xb5, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x4a, 0xcb, 0xa3, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x38, 0x10, 0x00, 0x42, 0xc8, 0xae, 0xbe, + 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x62, 0x4a, 0xd2, 0x23, 0x00, 0x00, 0x99, 0x83, 0x8f, + 0x00, 0x28, 0x4a, 0x00, 0x20, 0xec, 0x33, 0x00, 0x3b, 0x0f, 0x03, 0xc1, 0xc6, 0x03, 0x24, 0x4a, + 0x00, 0x2e, 0xf8, 0x2c, 0x00, 0x3b, 0x10, 0x00, 0xc1, 0x91, 0x80, 0x00, 0x00, 0x11, 0xcf, 0x62, + 0xc1, 0x13, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x4e, 0xcd, 0xa2, + 0xb6, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x40, 0x14, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6d, + 0x4d, 0xd2, 0x22, 0x00, 0x00, 0x99, 0x83, 0x95, 0x00, 0x29, 0x4a, 0x00, 0x24, 0xf2, 0x33, 0x00, + 0x45, 0x14, 0x03, 0xc1, 0xc6, 0x03, 0x26, 0x4a, 0x00, 0x2f, 0xfb, 0x2f, 0x00, 0x46, 0x16, 0x00, + 0xc1, 0x91, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x65, 0xca, 0x13, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa2, 0xb6, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x48, 0x17, 0x00, 0x42, 0xc8, 0xae, 0xbe, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x77, 0x4f, 0xd2, 0x22, 0x00, 0x00, 0x99, 0x83, 0x9b, + 0x00, 0x2a, 0x4b, 0x00, 0x26, 0xf5, 0x33, 0x00, 0x50, 0x19, 0x03, 0xc1, 0xc5, 0x02, 0x27, 0x4b, + 0x00, 0x2f, 0xfd, 0x32, 0x00, 0x50, 0x1b, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x66, + 0xcf, 0x13, 0x00, 0x00, 0x7a, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa2, + 0xb5, 0xb5, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x25, 0x52, 0x1b, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x84, + 0x52, 0xd2, 0x22, 0x00, 0x00, 0x99, 0x83, 0xa2, 0x00, 0x2b, 0x4b, 0x00, 0x2a, 0xf9, 0x33, 0x00, + 0x5a, 0x1e, 0x02, 0xc1, 0xc4, 0x02, 0x28, 0x4b, 0x00, 0x2f, 0xff, 0x33, 0x00, 0x5a, 0x20, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x66, 0xd0, 0x13, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa2, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2d, 0x5e, 0x20, 0x00, 0x42, 0xc8, 0xae, 0xbd, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x92, 0x55, 0xd3, 0x22, 0x00, 0x00, 0x98, 0x83, 0xa7, + 0x00, 0x2b, 0x4b, 0x00, 0x2e, 0xfc, 0x34, 0x00, 0x64, 0x23, 0x01, 0xc1, 0xc4, 0x02, 0x29, 0x4b, + 0x00, 0x2f, 0xff, 0x33, 0x00, 0x64, 0x25, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x66, + 0xd0, 0x13, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa2, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x35, 0x6a, 0x25, 0x00, 0x42, 0xc8, 0xad, 0xbd, 0xa0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0xa0, + 0x58, 0xd3, 0x22, 0x00, 0x00, 0x98, 0x83, 0xab, 0x00, 0x2c, 0x4b, 0x00, 0x31, 0xff, 0x34, 0x00, + 0x6d, 0x28, 0x01, 0xc1, 0xc3, 0x02, 0x2a, 0x4b, 0x00, 0x2f, 0xff, 0x33, 0x00, 0x6d, 0x2a, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x13, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa2, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x12, 0x3f, 0x77, 0x2a, 0x00, 0x42, 0xc8, 0xad, 0xbd, + 0xa0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xb0, 0x5a, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xae, + 0x01, 0x2c, 0x4b, 0x00, 0x35, 0xff, 0x34, 0x00, 0x75, 0x2c, 0x01, 0xc1, 0xc3, 0x02, 0x2a, 0x4b, + 0x00, 0x2f, 0xff, 0x33, 0x00, 0x75, 0x2d, 0x00, 0xc1, 0x91, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x13, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x19, + 0x4a, 0x87, 0x30, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa0, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x18, 0xbe, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb2, 0x01, 0x2d, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, + 0x7c, 0x2f, 0x01, 0xc1, 0xc2, 0x02, 0x2b, 0x4b, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x7c, 0x31, 0x00, + 0xc1, 0x91, 0x80, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa2, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x57, 0x98, 0x36, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0xca, 0x5d, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb4, + 0x02, 0x2d, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, 0x83, 0x32, 0x01, 0xc1, 0xc2, 0x01, 0x2b, 0x4b, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x82, 0x34, 0x00, 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xd0, 0x66, + 0xd0, 0x12, 0x00, 0x00, 0x7a, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa2, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0x65, 0xa9, 0x3b, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x11, 0x00, 0x00, 0x00, 0x21, 0xcf, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb6, 0x02, 0x2d, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, + 0x88, 0x35, 0x00, 0xc2, 0xc2, 0x01, 0x2b, 0x4b, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x88, 0x37, 0x00, + 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xcf, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa2, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x34, 0x74, 0xb8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0xd2, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x99, 0x83, 0xb8, + 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, 0x8d, 0x37, 0x00, 0xc2, 0xc2, 0x01, 0x2b, 0x4b, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x8d, 0x39, 0x00, 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xd0, 0x66, + 0xcf, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x42, + 0x87, 0xc1, 0x3f, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x18, 0x03, 0x00, 0x00, 0x25, 0xd3, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x99, 0x83, 0xb9, 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, + 0x91, 0x3a, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4b, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x90, 0x3b, 0x00, + 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x50, 0x98, 0xc6, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x1b, 0x09, 0x00, 0x00, 0x25, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb9, + 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, 0x92, 0x3b, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4b, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x92, 0x3c, 0x00, 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xd0, 0x66, + 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x15, 0x61, + 0xa8, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, 0xa0, 0x00, 0x1e, 0x0f, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb8, 0x03, 0x2d, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, + 0x94, 0x3d, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x94, 0x3f, 0x00, + 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xd0, 0x66, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x1e, 0x74, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, + 0xa0, 0x00, 0x20, 0x16, 0x00, 0x00, 0x25, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb7, + 0x02, 0x2d, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, 0x96, 0x3e, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x96, 0x40, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x66, + 0xd0, 0x12, 0x00, 0x00, 0x7a, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x12, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x29, 0x87, + 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, 0xa0, 0x00, 0x23, 0x1f, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb5, 0x01, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, + 0x97, 0x3f, 0x00, 0xc2, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x97, 0x41, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x66, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x35, 0x9a, 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, + 0xa0, 0x00, 0x28, 0x28, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb3, + 0x00, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x33, 0x00, 0x98, 0x40, 0x00, 0xc2, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x98, 0x42, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x43, 0xaa, + 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x2f, 0x33, 0x00, 0x00, 0x25, 0xd3, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, 0x00, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x99, 0x41, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x98, 0x43, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x19, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x51, 0xb6, 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x35, 0x3d, 0x00, 0x00, 0x25, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x00, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x99, 0x42, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x99, 0x43, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x60, 0xbb, + 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3c, 0x49, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, 0x00, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x99, 0x42, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x99, 0x44, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x6e, 0xbd, 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x42, 0x54, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x00, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x99, 0x42, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x99, 0x44, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x7a, 0xbe, + 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa0, 0x00, 0x4a, 0x61, 0x00, 0x00, 0x26, 0xd3, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, 0x00, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x99, 0x43, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x99, 0x44, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x84, 0xbf, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa0, 0x00, 0x52, 0x6c, 0x00, 0x00, 0x25, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, + 0x00, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc2, 0xc1, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x06, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x8c, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, 0xa0, 0x00, 0x5a, 0x76, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb3, 0x00, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x92, 0xbf, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, + 0xa0, 0x00, 0x61, 0x7f, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb5, + 0x00, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x96, 0xbf, + 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, 0xa1, 0x00, 0x67, 0x87, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb7, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x99, 0xbf, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, + 0xa1, 0x00, 0x6d, 0x8c, 0x00, 0x00, 0x26, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x99, 0x83, 0xb8, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0xbf, + 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbd, 0xa1, 0x00, 0x70, 0x90, 0x00, 0x00, 0x25, 0xd3, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x99, 0x83, 0xba, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x73, 0x93, 0x00, 0x00, 0x25, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, + 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x74, 0x94, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x75, 0x94, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x75, 0x94, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x75, 0x94, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x74, 0x94, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x74, 0x94, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9b, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x74, 0x93, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x73, 0x92, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x72, 0x92, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xbb, 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x72, 0x91, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xba, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x71, 0x90, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xba, 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xba, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x99, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x6f, 0x8e, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xba, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x99, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x6e, 0x8d, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb9, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x98, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x6d, 0x8c, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb9, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x97, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x6b, 0x8a, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb8, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x96, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x6a, 0x89, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb8, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x95, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x69, 0x87, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb8, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x94, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x67, 0x85, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb7, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x93, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x66, 0x84, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb7, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x92, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x64, 0x81, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb7, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x90, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x63, 0x7f, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb6, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x8e, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x61, 0x7c, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb6, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x8c, 0xbf, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x60, 0x7a, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb5, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x8a, 0xbf, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x5e, 0x77, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb5, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x87, 0xbe, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x5c, 0x74, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb4, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x84, 0xbe, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x5a, 0x72, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb4, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x81, 0xbe, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x5a, 0x6f, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb4, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x7e, 0xbe, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x58, 0x6c, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb4, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x7b, 0xbd, 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x56, 0x69, 0x00, 0x00, 0x26, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb3, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x77, 0xbd, + 0xb0, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x55, 0x66, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb3, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x73, 0xbc, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x53, 0x63, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb3, + 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x6f, 0xbc, + 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x52, 0x60, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb3, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x6b, 0xbb, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x51, 0x5d, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb2, + 0x01, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x00, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x19, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x66, 0xba, + 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x4f, 0x5a, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb2, 0x01, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x19, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x62, 0xb8, 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x4e, 0x58, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb2, + 0x02, 0x2b, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x19, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x5e, 0xb6, + 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x4d, 0x55, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb2, 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x18, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x59, 0xb1, 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x4c, 0x52, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, + 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x55, 0xad, + 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x4b, 0x50, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x17, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x51, 0xa7, 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x4a, 0x4e, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, + 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x16, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x4d, 0xa2, + 0xb1, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x49, 0x4b, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x14, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x49, 0x9c, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x48, 0x49, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, + 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x13, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x46, 0x96, + 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x48, 0x47, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x43, 0x90, 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x47, 0x45, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, + 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc1, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x3f, 0x8a, + 0xb0, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x46, 0x43, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb1, 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x84, 0xaf, 0xc8, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x45, 0x41, 0x00, 0x00, 0x26, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, + 0x02, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x39, 0x7e, + 0xab, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x45, 0x3f, 0x00, 0x00, 0x26, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x36, 0x78, 0xa6, 0xc7, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x44, 0x3e, 0x00, 0x00, 0x25, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, + 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x34, 0x73, + 0xa1, 0xc6, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x44, 0x3c, 0x00, 0x00, 0x25, 0xd4, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x31, 0x6e, 0x9b, 0xc4, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x43, 0x3a, 0x00, 0x00, 0x25, 0xd4, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, + 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x2f, 0x69, + 0x95, 0xc2, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x42, 0x39, 0x00, 0x00, 0x25, 0xd3, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x09, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x2d, 0x65, 0x8f, 0xc0, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x42, 0x38, 0x00, 0x00, 0x24, 0xd3, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, + 0x03, 0x2c, 0x4b, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x2a, 0x60, + 0x89, 0xbc, 0x3e, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x41, 0x36, 0x00, 0x00, 0x24, 0xd3, + 0x5d, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xb0, 0x03, 0x2c, 0x4c, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x07, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x28, 0x5c, 0x83, 0xb8, 0x3d, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x41, 0x35, 0x00, 0x00, 0x23, 0xd2, 0x5d, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x03, 0x2c, 0x4c, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x26, 0x58, + 0x7e, 0xb3, 0x3b, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x40, 0x34, 0x00, 0x00, 0x22, 0xd1, + 0x5d, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, 0x03, 0x2c, 0x4c, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x24, 0x54, 0x79, 0xad, 0x3a, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x40, 0x33, 0x00, 0x00, 0x21, 0xce, 0x5d, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x03, 0x2d, 0x4c, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x22, 0x50, + 0x74, 0xa7, 0x38, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3f, 0x32, 0x00, 0x00, 0x1f, 0xcb, + 0x5d, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, 0x03, 0x2d, 0x4c, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x04, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x4c, 0x6f, 0xa0, 0x36, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3e, 0x30, 0x00, 0x00, 0x1d, 0xc8, 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x03, 0x2d, 0x4c, 0x00, 0x37, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x1f, 0x49, + 0x6b, 0x9a, 0x33, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3e, 0x30, 0x00, 0x00, 0x1c, 0xc3, + 0x5c, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, 0x03, 0x2d, 0x4c, 0x00, 0x37, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x46, 0x66, 0x95, 0x31, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3e, 0x2e, 0x00, 0x00, 0x1a, 0xbd, 0x5b, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x03, 0x2d, 0x4c, 0x00, 0x36, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x43, + 0x62, 0x8f, 0x2f, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3e, 0x2d, 0x00, 0x00, 0x18, 0xb7, + 0x5b, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, 0x03, 0x2d, 0x4b, 0x00, 0x35, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x1a, 0x3f, 0x5d, 0x89, 0x2c, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3d, 0x2d, 0x00, 0x00, 0x16, 0xb1, 0x5a, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x03, 0x2d, 0x4b, 0x00, 0x34, 0xff, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x19, 0x3d, + 0x5a, 0x84, 0x2b, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3d, 0x2c, 0x00, 0x00, 0x15, 0xab, + 0x59, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, 0x03, 0x2d, 0x4b, 0x00, 0x32, 0xff, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x17, 0x3a, 0x56, 0x7e, 0x28, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3d, 0x2b, 0x00, 0x00, 0x14, 0xa5, 0x58, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, + 0x03, 0x2d, 0x4b, 0x00, 0x30, 0xfe, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x16, 0x37, + 0x53, 0x7a, 0x27, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3d, 0x2a, 0x00, 0x00, 0x13, 0x9f, + 0x57, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xaf, 0x03, 0x2d, 0x4b, 0x00, 0x2f, 0xfd, 0x32, 0x00, + 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x14, 0x34, 0x4e, 0x74, 0x24, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3c, 0x29, 0x00, 0x00, 0x11, 0x99, 0x55, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xae, + 0x04, 0x2d, 0x4b, 0x00, 0x2d, 0xfc, 0x32, 0x00, 0x9a, 0x44, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, + 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x13, 0x32, + 0x4b, 0x70, 0x23, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3c, 0x29, 0x00, 0x00, 0x10, 0x94, + 0x54, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xae, 0x04, 0x2d, 0x4b, 0x00, 0x2c, 0xfb, 0x32, 0x00, + 0x9a, 0x43, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xff, 0x32, 0x00, 0x9a, 0x45, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x67, 0xd0, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xce, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x12, 0x2f, 0x48, 0x6b, 0x21, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3c, 0x28, 0x00, 0x00, 0x0f, 0x8e, 0x53, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xae, + 0x04, 0x2d, 0x4b, 0x00, 0x2b, 0xf9, 0x32, 0x00, 0x99, 0x43, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xfe, 0x31, 0x00, 0x99, 0x44, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x66, + 0xcf, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x11, 0x2d, + 0x45, 0x67, 0x1f, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3c, 0x27, 0x00, 0x00, 0x0e, 0x89, + 0x52, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xae, 0x04, 0x2d, 0x4b, 0x00, 0x29, 0xf7, 0x32, 0x00, + 0x99, 0x42, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xfe, 0x30, 0x00, 0x99, 0x44, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xd0, 0x66, 0xce, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x2b, 0x42, 0x63, 0x1d, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3b, 0x27, 0x00, 0x00, 0x0c, 0x84, 0x50, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xae, + 0x04, 0x2d, 0x4c, 0x00, 0x28, 0xf6, 0x32, 0x00, 0x98, 0x40, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2f, 0xfc, 0x2f, 0x00, 0x98, 0x42, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x65, + 0xcb, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x50, 0xcd, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x0f, 0x29, + 0x3f, 0x5f, 0x1b, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3b, 0x26, 0x00, 0x00, 0x0b, 0x7f, + 0x50, 0xd3, 0x21, 0x00, 0x00, 0x98, 0x83, 0xae, 0x04, 0x2d, 0x4c, 0x00, 0x26, 0xf4, 0x31, 0x00, + 0x95, 0x3e, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2f, 0xfb, 0x2d, 0x00, 0x95, 0x40, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x64, 0xc7, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x4f, 0xcd, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x27, 0x3c, 0x5b, 0x1a, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3b, 0x26, 0x00, 0x00, 0x0a, 0x7b, 0x4f, 0xd3, 0x21, 0x00, 0x00, 0x99, 0x83, 0xae, + 0x04, 0x2d, 0x4c, 0x00, 0x25, 0xf3, 0x31, 0x00, 0x91, 0x3a, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xfa, 0x2c, 0x00, 0x91, 0x3b, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x63, + 0xc2, 0x12, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x4e, 0xcd, 0xa2, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x0d, 0x25, + 0x39, 0x57, 0x19, 0x00, 0x42, 0xc8, 0xad, 0xbe, 0xa1, 0x00, 0x3a, 0x25, 0x00, 0x00, 0x09, 0x76, + 0x4e, 0xd2, 0x21, 0x00, 0x00, 0x99, 0x83, 0xae, 0x04, 0x2d, 0x4c, 0x00, 0x24, 0xf1, 0x31, 0x00, + 0x88, 0x35, 0x00, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xf9, 0x2a, 0x00, 0x88, 0x37, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x62, 0xbc, 0x11, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x4c, 0xcc, 0xa2, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x0b, 0x22, 0x36, 0x53, 0x17, 0x00, 0x42, 0xc8, 0xad, 0xbe, + 0xa1, 0x00, 0x3a, 0x24, 0x00, 0x00, 0x08, 0x72, 0x4d, 0xd2, 0x21, 0x00, 0x00, 0x99, 0x83, 0xae, + 0x04, 0x2d, 0x4c, 0x00, 0x22, 0xef, 0x31, 0x00, 0x78, 0x2d, 0x01, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, + 0x00, 0x2e, 0xf7, 0x29, 0x00, 0x78, 0x2f, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x60, + 0xb6, 0x10, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x49, 0xcb, 0xa2, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x0a, 0x1f, + 0x33, 0x4f, 0x15, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa1, 0x00, 0x3a, 0x24, 0x00, 0x00, 0x07, 0x6c, + 0x4c, 0xd2, 0x22, 0x00, 0x00, 0x99, 0x83, 0xaf, 0x04, 0x2d, 0x4c, 0x00, 0x21, 0xec, 0x32, 0x00, + 0x63, 0x23, 0x01, 0xc1, 0xc2, 0x01, 0x2c, 0x4c, 0x00, 0x2e, 0xf6, 0x28, 0x00, 0x63, 0x24, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x5f, 0xaf, 0x10, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x46, 0xc7, 0xa2, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x05, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x1d, 0x30, 0x4a, 0x14, 0x00, 0x42, 0xc8, 0xae, 0xbe, + 0xa1, 0x00, 0x3b, 0x23, 0x00, 0x00, 0x05, 0x68, 0x4a, 0xd2, 0x22, 0x00, 0x00, 0x99, 0x83, 0xaf, + 0x04, 0x2d, 0x4c, 0x00, 0x20, 0xea, 0x33, 0x00, 0x4b, 0x17, 0x02, 0xc1, 0xc2, 0x01, 0x2b, 0x4b, + 0x00, 0x2e, 0xf4, 0x27, 0x00, 0x4b, 0x18, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x5e, + 0xa8, 0x0f, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x43, 0xc3, 0xa2, + 0xb6, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x04, 0x35, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x19, + 0x2c, 0x46, 0x12, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa0, 0x00, 0x3c, 0x23, 0x00, 0x00, 0x04, 0x62, + 0x49, 0xd2, 0x23, 0x00, 0x00, 0x99, 0x83, 0xb0, 0x04, 0x2c, 0x4c, 0x00, 0x1e, 0xe6, 0x33, 0x00, + 0x31, 0x0a, 0x04, 0xc1, 0xc2, 0x01, 0x2b, 0x4b, 0x00, 0x2e, 0xf2, 0x26, 0x00, 0x31, 0x0c, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x5c, 0xa1, 0x0e, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x3f, 0xbd, 0xa1, 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x04, 0x35, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x05, 0x15, 0x27, 0x40, 0x10, 0x00, 0x42, 0xc8, 0xae, 0xbe, + 0xa0, 0x00, 0x3d, 0x23, 0x00, 0x00, 0x03, 0x5d, 0x48, 0xd2, 0x23, 0x00, 0x00, 0x99, 0x83, 0xb1, + 0x05, 0x2b, 0x4b, 0x00, 0x1c, 0xe3, 0x33, 0x00, 0x1c, 0x00, 0x04, 0xc1, 0xc2, 0x01, 0x2a, 0x4b, + 0x00, 0x2e, 0xef, 0x25, 0x00, 0x1c, 0x01, 0x00, 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x5b, + 0x9a, 0x0e, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x3c, 0xb5, 0xa1, + 0xb5, 0xb6, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x03, 0x34, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x03, 0x11, + 0x23, 0x3b, 0x0e, 0x00, 0x42, 0xc8, 0xae, 0xbe, 0xa1, 0x00, 0x3d, 0x23, 0x00, 0x00, 0x02, 0x57, + 0x47, 0xd2, 0x24, 0x00, 0x00, 0x99, 0x83, 0xb2, 0x05, 0x29, 0x4b, 0x00, 0x1b, 0xe0, 0x33, 0x00, + 0x0d, 0x00, 0x05, 0xc1, 0xc2, 0x01, 0x28, 0x4b, 0x00, 0x2e, 0xed, 0x23, 0x00, 0x0d, 0x00, 0x00, + 0xc1, 0x92, 0x81, 0x00, 0x00, 0x11, 0xcf, 0x59, 0x93, 0x0d, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x39, 0xad, 0x9e, 0xb3, 0xb5, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x02, 0x34, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x1e, 0x35, 0x0c, 0x00, 0x42, 0xc8, 0xaf, 0xbe, + 0xa0, 0x00, 0x3f, 0x23, 0x00, 0x00, 0x00, 0x50, 0x45, 0xd2, 0x24, 0x00, 0x00, 0x99, 0x83, 0xb6, + 0x06, 0x26, 0x4a, 0x00, 0x1a, 0xdd, 0x34, 0x00, 0x03, 0x00, 0x05, 0xc2, 0xc1, 0x01, 0x25, 0x4a, + 0x00, 0x2e, 0xea, 0x21, 0x00, 0x03, 0x00, 0x00, 0xc1, 0x92, 0x80, 0x00, 0x00, 0x11, 0xcf, 0x57, + 0x8c, 0x0b, 0x00, 0x00, 0x7b, 0x9a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x35, 0xa5, 0x97, + 0xb1, 0xb3, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x01, 0x31, 0x26, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x19, 0x30, 0x0a, 0x00, 0x42, 0xc8, 0xaf, 0xbe, 0xa1, 0x00, 0x40, 0x22, 0x00, 0x00, 0x00, 0x4a, + 0x44, 0xd2, 0x24, 0x00, 0x00, 0x99, 0x83, 0xb9, 0x07, 0x22, 0x46, 0x00, 0x18, 0xda, 0x34, 0x00, + 0x00, 0x00, 0x05, 0xc1, 0xc1, 0x01, 0x21, 0x46, 0x00, 0x2e, 0xe6, 0x20, 0x00, 0x00, 0x00, 0x00, + 0xc1, 0x92, 0x80, 0x00, 0x00, 0x12, 0xce, 0x55, 0x84, 0x0a, 0x00, 0x00, 0x7a, 0x99, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x32, 0x9c, 0x8f, 0xae, 0xaf, 0x02, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x2a, 0x07, 0x00, 0x42, 0xc8, 0xaf, 0xbe, + 0xa0, 0x00, 0x46, 0x1e, 0x00, 0x00, 0x00, 0x44, 0x42, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0xbf, + 0x0a, 0x1c, 0x3d, 0x00, 0x17, 0xd7, 0x34, 0x00, 0x00, 0x00, 0x06, 0xc2, 0xc1, 0x01, 0x1c, 0x3d, + 0x00, 0x2e, 0xe3, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x92, 0x81, 0x00, 0x00, 0x12, 0xcf, 0x53, + 0x7c, 0x09, 0x00, 0x00, 0x76, 0x96, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x2e, 0x94, 0x88, + 0xa7, 0xa9, 0x01, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x22, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x23, 0x05, 0x00, 0x42, 0xc8, 0xaf, 0xbe, 0xa1, 0x00, 0x52, 0x1f, 0x00, 0x00, 0x00, 0x3e, + 0x41, 0xd2, 0x24, 0x00, 0x00, 0x99, 0x83, 0xc3, 0x0d, 0x15, 0x32, 0x00, 0x15, 0xd4, 0x34, 0x00, + 0x00, 0x00, 0x06, 0xc2, 0xc1, 0x02, 0x14, 0x31, 0x00, 0x2e, 0xe0, 0x1d, 0x00, 0x00, 0x00, 0x00, + 0xbf, 0x92, 0x81, 0x00, 0x00, 0x12, 0xce, 0x51, 0x75, 0x08, 0x00, 0x00, 0x71, 0x91, 0x00, 0xb7, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x2b, 0x8b, 0x81, 0x9f, 0xa2, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x1e, 0x03, 0x00, 0x42, 0xc8, 0xaf, 0xbe, + 0xa0, 0x00, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x37, 0x3f, 0xd1, 0x24, 0x00, 0x00, 0x99, 0x83, 0xc4, + 0x0f, 0x0c, 0x23, 0x00, 0x14, 0xd1, 0x34, 0x00, 0x00, 0x00, 0x06, 0xc1, 0xc0, 0x02, 0x0b, 0x24, + 0x00, 0x2f, 0xdd, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x92, 0x80, 0x00, 0x00, 0x12, 0xce, 0x50, + 0x6e, 0x06, 0x00, 0x00, 0x6c, 0x8b, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x27, 0x83, 0x7a, + 0x96, 0x9a, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x17, 0x01, 0x00, 0x42, 0xc8, 0xaf, 0xbe, 0xa0, 0x00, 0x65, 0x29, 0x00, 0x00, 0x00, 0x30, + 0x3d, 0xd1, 0x25, 0x00, 0x00, 0x99, 0x83, 0xc4, 0x10, 0x03, 0x15, 0x00, 0x13, 0xcd, 0x34, 0x00, + 0x00, 0x00, 0x06, 0xbc, 0xc0, 0x02, 0x02, 0x15, 0x00, 0x2f, 0xd9, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0x92, 0x81, 0x00, 0x00, 0x13, 0xce, 0x4e, 0x66, 0x05, 0x00, 0x00, 0x66, 0x84, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x24, 0x7a, 0x72, 0x8e, 0x92, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbf, + 0xa0, 0x00, 0x6c, 0x32, 0x00, 0x00, 0x00, 0x2a, 0x3c, 0xd1, 0x25, 0x00, 0x00, 0x97, 0x80, 0xc3, + 0x10, 0x00, 0x09, 0x00, 0x12, 0xca, 0x33, 0x00, 0x00, 0x00, 0x04, 0xb4, 0xc0, 0x03, 0x00, 0x09, + 0x00, 0x2f, 0xd6, 0x18, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x92, 0x81, 0x00, 0x00, 0x13, 0xce, 0x4c, + 0x5f, 0x03, 0x00, 0x00, 0x61, 0x7c, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x21, 0x72, 0x6b, + 0x86, 0x8a, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x20, 0x19, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, 0xa0, 0x00, 0x72, 0x3c, 0x00, 0x00, 0x00, 0x23, + 0x3a, 0xd1, 0x24, 0x00, 0x00, 0x94, 0x7b, 0xc3, 0x10, 0x00, 0x01, 0x00, 0x10, 0xc7, 0x33, 0x00, + 0x00, 0x00, 0x03, 0xab, 0xc0, 0x03, 0x00, 0x01, 0x00, 0x2f, 0xd2, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x9e, 0x92, 0x80, 0x00, 0x00, 0x13, 0xce, 0x4a, 0x57, 0x02, 0x00, 0x00, 0x5b, 0x75, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x1d, 0x6a, 0x64, 0x7e, 0x82, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x1d, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbe, + 0x9d, 0x00, 0x78, 0x48, 0x00, 0x00, 0x00, 0x1d, 0x39, 0xd2, 0x24, 0x00, 0x00, 0x8f, 0x76, 0xc2, + 0x10, 0x00, 0x00, 0x00, 0x0e, 0xc4, 0x33, 0x00, 0x00, 0x00, 0x03, 0xa2, 0xc0, 0x03, 0x00, 0x00, + 0x00, 0x2f, 0xcf, 0x15, 0x00, 0x00, 0x00, 0x00, 0x95, 0x92, 0x81, 0x00, 0x00, 0x13, 0xce, 0x48, + 0x4f, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x1a, 0x61, 0x5c, + 0x76, 0x7a, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbd, 0x97, 0x00, 0x7d, 0x54, 0x00, 0x00, 0x00, 0x15, + 0x37, 0xd2, 0x25, 0x00, 0x00, 0x88, 0x6f, 0xc2, 0x0f, 0x00, 0x00, 0x00, 0x0d, 0xbf, 0x32, 0x00, + 0x00, 0x00, 0x01, 0x9a, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x2f, 0xcb, 0x13, 0x00, 0x00, 0x00, 0x00, + 0x8d, 0x92, 0x80, 0x00, 0x00, 0x13, 0xce, 0x46, 0x47, 0x00, 0x00, 0x00, 0x50, 0x67, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x16, 0x59, 0x55, 0x6d, 0x72, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc8, 0xaf, 0xbb, + 0x8f, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x0f, 0x35, 0xd2, 0x25, 0x00, 0x00, 0x82, 0x6a, 0xc1, + 0x0e, 0x00, 0x00, 0x00, 0x0b, 0xbd, 0x33, 0x00, 0x00, 0x00, 0x01, 0x92, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x30, 0xc8, 0x11, 0x00, 0x00, 0x00, 0x00, 0x85, 0x92, 0x80, 0x00, 0x00, 0x13, 0xce, 0x44, + 0x40, 0x00, 0x00, 0x00, 0x4b, 0x61, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x13, 0x51, 0x4e, + 0x65, 0x6a, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1a, 0x00, 0x00, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0xc7, 0xae, 0xb7, 0x88, 0x00, 0x82, 0x6e, 0x00, 0x00, 0x00, 0x08, + 0x34, 0xd1, 0x24, 0x00, 0x00, 0x7b, 0x63, 0xc1, 0x0d, 0x00, 0x00, 0x00, 0x0a, 0xb9, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x88, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x2f, 0xc5, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x92, 0x80, 0x00, 0x00, 0x13, 0xce, 0x43, 0x39, 0x00, 0x00, 0x00, 0x46, 0x5a, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x0f, 0x48, 0x47, 0x5d, 0x63, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x25, 0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc5, 0xac, 0xaf, + 0x81, 0x00, 0x83, 0x7a, 0x00, 0x00, 0x00, 0x02, 0x33, 0xd0, 0x24, 0x00, 0x00, 0x74, 0x5e, 0xc1, + 0x0b, 0x00, 0x00, 0x00, 0x08, 0xb6, 0x33, 0x00, 0x00, 0x00, 0x00, 0x81, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x30, 0xc1, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x74, 0x92, 0x80, 0x00, 0x00, 0x13, 0xce, 0x41, + 0x31, 0x00, 0x00, 0x00, 0x40, 0x54, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x0c, 0x40, 0x40, + 0x56, 0x5b, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x16, 0x00, 0x00, 0x00, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0xa6, 0xa6, 0x79, 0x00, 0x83, 0x84, 0x00, 0x00, 0x00, 0x00, + 0x31, 0xce, 0x23, 0x00, 0x00, 0x6d, 0x57, 0xc1, 0x0a, 0x00, 0x00, 0x00, 0x06, 0xb3, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x78, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x2f, 0xbe, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x6b, 0x92, 0x7f, 0x00, 0x00, 0x13, 0xce, 0x3f, 0x29, 0x00, 0x00, 0x00, 0x3b, 0x4d, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x08, 0x38, 0x38, 0x4d, 0x53, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x22, 0x14, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xba, 0x9e, 0x9d, + 0x73, 0x00, 0x82, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xc7, 0x21, 0x00, 0x00, 0x67, 0x52, 0xc1, + 0x09, 0x00, 0x00, 0x00, 0x05, 0xaf, 0x31, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x30, 0xba, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x64, 0x92, 0x80, 0x00, 0x00, 0x13, 0xce, 0x3d, + 0x22, 0x00, 0x00, 0x00, 0x35, 0x47, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x05, 0x2f, 0x32, + 0x46, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x4f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x39, 0xb2, 0x96, 0x95, 0x6c, 0x00, 0x81, 0x94, 0x00, 0x00, 0x00, 0x00, + 0x2d, 0xbf, 0x1f, 0x00, 0x00, 0x60, 0x4c, 0xc1, 0x08, 0x00, 0x00, 0x00, 0x06, 0xac, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x68, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x2f, 0xb5, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x5c, 0x92, 0x80, 0x00, 0x00, 0x13, 0xce, 0x3b, 0x1a, 0x00, 0x00, 0x00, 0x30, 0x40, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x02, 0x27, 0x2a, 0x3e, 0x45, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xa9, 0x8e, 0x8c, + 0x65, 0x00, 0x81, 0x99, 0x00, 0x00, 0x00, 0x00, 0x24, 0xba, 0x1d, 0x00, 0x00, 0x5a, 0x47, 0xc1, + 0x08, 0x00, 0x00, 0x00, 0x00, 0xae, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x30, 0xb0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x54, 0x92, 0x80, 0x00, 0x00, 0x14, 0xce, 0x38, + 0x13, 0x00, 0x00, 0x00, 0x2b, 0x3a, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x00, 0x1f, 0x23, + 0x36, 0x3d, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x7a, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x32, 0xa0, 0x86, 0x84, 0x5e, 0x00, 0x81, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x20, 0xb5, 0x1b, 0x00, 0x00, 0x53, 0x41, 0xc1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x96, 0x36, 0x00, + 0x00, 0x00, 0x00, 0x58, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x30, 0xb0, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0x92, 0x80, 0x00, 0x00, 0x14, 0xcc, 0x34, 0x0b, 0x00, 0x00, 0x00, 0x25, 0x34, 0x00, 0xb8, + 0xb1, 0x9d, 0xce, 0x52, 0x00, 0x00, 0x16, 0x1c, 0x2e, 0x35, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x0d, 0x00, 0x00, 0x00, 0x8d, 0x11, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x98, 0x7e, 0x7b, + 0x57, 0x00, 0x81, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xad, 0x19, 0x00, 0x00, 0x4d, 0x3c, 0xc1, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x33, 0x00, 0x00, 0x00, 0x00, 0x50, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x2d, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x92, 0x80, 0x00, 0x00, 0x14, 0xc7, 0x30, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x2e, 0x00, 0xb8, 0xb1, 0x9d, 0xce, 0x51, 0x00, 0x00, 0x0f, 0x16, + 0x27, 0x2e, 0x00, 0x00, 0x00, 0x30, 0x3e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0c, 0x00, 0x00, 0x00, 0x9a, 0x26, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x90, 0x76, 0x73, 0x51, 0x00, 0x81, 0x9d, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0xa4, 0x16, 0x00, 0x00, 0x46, 0x36, 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x92, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x49, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x32, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3d, 0x92, 0x80, 0x00, 0x00, 0x13, 0xc3, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x27, 0x00, 0xb8, + 0xb1, 0x9d, 0xcd, 0x4e, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x27, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x0a, 0x00, 0x00, 0x00, 0xa2, 0x41, 0x00, 0x00, 0x00, 0x00, 0x29, 0x87, 0x6f, 0x6b, + 0x4a, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x19, 0x9b, 0x14, 0x00, 0x00, 0x40, 0x31, 0xc1, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x31, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x33, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x92, 0x80, 0x00, 0x00, 0x11, 0xc0, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x22, 0x00, 0xb8, 0xb1, 0x9d, 0xca, 0x4b, 0x00, 0x00, 0x00, 0x08, + 0x17, 0x20, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0xa6, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x26, 0x7e, 0x67, 0x63, 0x43, 0x00, 0x81, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x92, 0x12, 0x00, 0x00, 0x3a, 0x2b, 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x88, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x39, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x31, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x92, 0x80, 0x00, 0x00, 0x10, 0xb8, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1b, 0x00, 0xb8, + 0xb1, 0x9c, 0xc5, 0x47, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0xa6, 0x81, 0x00, 0x00, 0x00, 0x00, 0x23, 0x76, 0x5f, 0x5b, + 0x3d, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x15, 0x8a, 0x11, 0x00, 0x00, 0x33, 0x26, 0xc1, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x81, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x32, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x2e, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x91, 0x80, 0x00, 0x00, 0x0f, 0xb0, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x15, 0x00, 0xb7, 0xb0, 0x9c, 0xbf, 0x44, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x11, 0x00, 0x00, 0x00, 0x30, 0x3d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x05, 0x00, 0x00, 0x00, 0xa4, 0x9f, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x6e, 0x57, 0x52, 0x36, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x82, 0x0e, 0x00, 0x00, 0x2d, 0x20, 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x2b, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x91, 0x80, 0x00, 0x00, 0x0e, 0xa8, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x00, 0xb7, + 0xaf, 0x99, 0xb8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2f, 0x3c, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x03, 0x00, 0x00, 0x00, 0xa1, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x66, 0x50, 0x4a, + 0x2f, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x11, 0x79, 0x0c, 0x00, 0x00, 0x26, 0x1b, 0xc1, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x73, 0x25, 0x00, 0x00, 0x00, 0x00, 0x22, 0xc0, 0x04, 0x00, 0x00, + 0x00, 0x28, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x91, 0x7f, 0x00, 0x00, 0x0d, 0xa1, 0x1b, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0xb4, 0xad, 0x95, 0xb0, 0x3d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x3b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x9e, 0xbe, + 0x11, 0x00, 0x00, 0x00, 0x1a, 0x5e, 0x48, 0x42, 0x29, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x71, 0x0b, 0x00, 0x00, 0x20, 0x15, 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x22, 0x00, + 0x00, 0x00, 0x00, 0x1b, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x26, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x8e, 0x7c, 0x00, 0x00, 0x0b, 0x99, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xaf, + 0xab, 0x8f, 0xa9, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x38, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x17, 0x55, 0x41, 0x39, + 0x22, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x69, 0x09, 0x00, 0x00, 0x1a, 0x10, 0xc1, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x65, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x13, 0xbe, 0x04, 0x00, 0x00, + 0x00, 0x23, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8b, 0x78, 0x00, 0x00, 0x0a, 0x91, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xa5, 0x88, 0xa1, 0x37, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x35, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc2, + 0x57, 0x00, 0x00, 0x00, 0x14, 0x4d, 0x39, 0x31, 0x1c, 0x00, 0x80, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x60, 0x07, 0x00, 0x00, 0x13, 0x0a, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0xb9, 0x03, 0x00, 0x00, 0x00, 0x20, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x86, 0x74, 0x00, 0x00, 0x09, 0x89, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, + 0x9e, 0x82, 0x99, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x32, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc2, 0x7e, 0x00, 0x00, 0x00, 0x11, 0x44, 0x31, 0x28, + 0x14, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x09, 0x58, 0x05, 0x00, 0x00, 0x0c, 0x04, 0xbd, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x56, 0x19, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb3, 0x03, 0x00, 0x00, + 0x00, 0x1e, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x70, 0x00, 0x00, 0x08, 0x81, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x97, 0x7c, 0x91, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc1, + 0xa2, 0x00, 0x00, 0x00, 0x0e, 0x3c, 0x29, 0x1f, 0x0d, 0x00, 0x7e, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x4f, 0x02, 0x00, 0x00, 0x05, 0x00, 0xb9, 0x06, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x16, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xad, 0x02, 0x00, 0x00, 0x00, 0x1b, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x6b, 0x00, 0x00, 0x07, 0x79, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, + 0x91, 0x76, 0x8a, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x2c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xc0, 0xae, 0x16, 0x00, 0x00, 0x0b, 0x32, 0x20, 0x15, + 0x05, 0x00, 0x7b, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x05, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x47, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x02, 0x00, 0x00, + 0x00, 0x17, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x67, 0x00, 0x00, 0x05, 0x71, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x8a, 0x70, 0x81, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0xc0, + 0xb2, 0x3f, 0x00, 0x00, 0x08, 0x29, 0x17, 0x0c, 0x00, 0x00, 0x78, 0x97, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x15, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x73, 0x63, 0x00, 0x00, 0x04, 0x68, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, + 0x84, 0x6a, 0x79, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x27, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xbf, 0xb4, 0x70, 0x00, 0x00, 0x04, 0x20, 0x0f, 0x02, + 0x00, 0x00, 0x74, 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x37, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5f, 0x00, 0x00, 0x03, 0x60, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x7d, 0x63, 0x71, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xbe, + 0xb3, 0x9e, 0x00, 0x00, 0x01, 0x16, 0x06, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x68, 0x5a, 0x00, 0x00, 0x02, 0x57, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, + 0x76, 0x5d, 0x69, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xbd, 0xb1, 0xbb, 0x04, 0x00, 0x00, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x6c, 0x8a, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x26, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x55, 0x00, 0x00, 0x00, 0x4d, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x6e, 0x56, 0x5f, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x19, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xbb, + 0xb0, 0xc5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x86, 0x00, 0x00, 0x20, 0x0a, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x08, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5e, 0x51, 0x00, 0x00, 0x00, 0x44, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, + 0x67, 0x4e, 0x56, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x1b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xba, 0xaf, 0xc7, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x81, 0x00, 0x00, 0x2b, 0x32, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x5f, 0x47, 0x4d, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x17, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xb7, + 0xaf, 0xc6, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x7b, 0x00, 0x00, 0x2f, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x46, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, + 0x57, 0x3f, 0x42, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xb0, 0xae, 0xc4, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5a, 0x76, 0x00, 0x00, 0x2c, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x40, 0x00, 0x00, 0x00, 0x23, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4e, 0x37, 0x37, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x15, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xaa, + 0xab, 0xc2, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x71, 0x00, 0x00, 0x29, 0xbf, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x3a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, + 0x45, 0x2e, 0x2c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xa3, 0xa6, 0xbf, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x6b, 0x00, 0x00, 0x26, 0xd2, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x34, 0x00, 0x00, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x3b, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x12, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x9b, + 0x9f, 0xbb, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x64, 0x00, 0x00, 0x24, 0xd6, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x38, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x37, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, + 0x30, 0x1a, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x1d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x93, 0x98, 0xb5, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0x5d, 0x00, 0x00, 0x23, 0xd0, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x24, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x8a, + 0x91, 0xae, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x55, 0x00, 0x00, 0x21, 0xc9, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x46, 0xad, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, + 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x81, 0x89, 0xa6, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x37, 0x4d, 0x00, 0x00, 0x1f, 0xc3, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x76, + 0x80, 0x9e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x44, 0x00, 0x00, 0x1d, 0xbb, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x41, 0xb1, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x6b, 0x76, 0x94, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x26, 0x3a, 0x00, 0x00, 0x1b, 0xb1, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xb0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x5f, + 0x6b, 0x89, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x2f, 0x00, 0x00, 0x18, 0xa8, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xa1, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x51, 0x60, 0x7e, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x23, 0x00, 0x00, 0x15, 0x9e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa9, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x41, + 0x52, 0x71, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x16, 0x00, 0x00, 0x12, 0x92, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x34, 0x90, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x3d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x2d, 0x40, 0x5d, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0d, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x91, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, + 0xbf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x19, + 0x2d, 0x49, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x69, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x6e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x2d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xae, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1a, 0x34, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x54, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6d, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, + 0x9a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x95, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x20, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x86, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xa3, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0x72, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x91, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x26, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x78, 0x71, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x48, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x63, 0x68, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x4e, 0x53, 0x5e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x39, 0x40, + 0x5c, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2f, 0x48, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x1e, + 0x35, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x26, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x23, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x17, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +unsigned int bootanimation_len = 36504; + +static const unsigned char bootanimation_end[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x17, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x4d, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x42, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x44, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, + 0x1c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x4c, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x25, 0x45, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x17, 0x16, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x38, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x0e, 0x3d, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x13, 0x2f, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x14, 0x0b, 0x3a, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x28, 0x23, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x11, 0x08, 0x31, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x22, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x0e, 0x06, 0x2b, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3d, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1b, 0x19, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x04, 0x25, 0x49, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x03, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x1d, 0x3d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x21, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, + 0x94, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x71, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x89, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x82, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0x7e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7c, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x72, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, + 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x6b, 0x3f, 0x2e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x65, 0x36, 0x56, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x30, 0x61, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x59, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x5a, 0x2d, 0x5e, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x53, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x54, 0x2a, 0x58, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x4d, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4f, 0x28, 0x54, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x48, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x25, 0x50, 0x1b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x47, 0x23, 0x4c, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x05, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x21, 0x48, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x45, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x29, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x1c, 0x42, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x37, 0x1b, 0x3f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x19, 0x3d, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x31, 0x17, 0x3a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x16, 0x37, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3d, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2b, 0x14, 0x35, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x1e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x13, 0x32, 0x0d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x39, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x57, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x26, 0x11, 0x2f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x2d, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x21, 0x10, 0x2b, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1a, 0x50, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x29, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x4c, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x27, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x56, 0x47, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0d, 0x25, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x60, 0x43, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0x0c, 0x24, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x13, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x04, 0x00, 0x1e, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x60, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0b, 0x22, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x29, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x07, 0x00, + 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x5e, 0x3e, 0x42, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x14, 0x0a, 0x21, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x06, 0x00, 0x1a, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x5b, 0x3c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x09, 0x1f, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x05, 0x00, + 0x19, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x58, 0x3a, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x11, 0x08, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x13, 0x00, 0x00, 0x00, 0x24, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x05, 0x00, 0x17, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x56, 0x39, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x1d, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x21, 0x00, 0x00, 0x00, 0x23, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x07, 0x00, + 0x16, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x37, 0x3b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x07, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x29, 0x00, 0x00, 0x00, 0x22, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x08, 0x00, 0x15, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x52, 0x36, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x06, 0x1b, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, + 0x2c, 0x00, 0x00, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x08, 0x00, + 0x14, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x34, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x06, 0x1a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x2d, 0x00, 0x00, 0x00, 0x1f, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x09, 0x00, 0x13, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4e, 0x33, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x05, 0x1a, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, + 0x2d, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x09, 0x00, + 0x12, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x32, 0x36, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x04, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x2e, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x0a, 0x00, 0x12, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4b, 0x32, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x04, 0x18, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x05, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, + 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x0b, 0x00, + 0x11, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x31, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x04, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x0c, 0x00, 0x11, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x49, 0x31, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x18, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0x30, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x0d, 0x00, + 0x10, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x30, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x03, 0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x30, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x0e, 0x00, 0x10, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x47, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x07, 0x03, 0x16, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, + 0x31, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x0e, 0x00, + 0x10, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x30, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x03, 0x00, 0x07, 0x03, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x32, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x0f, 0x00, 0x0f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x46, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x14, 0x00, 0x07, 0x03, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, + 0x33, 0x00, 0x00, 0x00, 0x1c, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x0f, 0x00, + 0x0f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x30, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2d, 0x29, 0x00, 0x06, 0x02, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x34, 0x00, 0x00, 0x00, 0x1c, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x10, 0x00, 0x0f, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x46, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x3d, 0x00, 0x06, 0x02, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, + 0x35, 0x00, 0x00, 0x00, 0x1b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x11, 0x00, + 0x0f, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x30, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2d, 0x4d, 0x00, 0x06, 0x02, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x36, 0x00, 0x00, 0x00, 0x1c, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x12, 0x00, 0x0f, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x46, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x59, 0x00, 0x05, 0x02, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x36, 0x00, 0x00, 0x00, 0x1b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x12, 0x00, + 0x0f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x31, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x61, 0x00, 0x03, 0x02, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x37, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x13, 0x00, 0x0f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x46, 0x31, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x66, 0x01, 0x02, 0x02, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x38, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x14, 0x00, + 0x0f, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x32, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0x69, 0x0e, 0x01, 0x02, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x39, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x14, 0x00, 0x0f, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x47, 0x32, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x20, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x69, 0x1c, 0x02, 0x02, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x3a, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x15, 0x00, + 0x10, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x33, 0x36, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1d, 0x29, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x6a, 0x29, 0x05, 0x01, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x3c, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x16, 0x00, 0x10, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x49, 0x34, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x2e, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x69, 0x34, 0x0c, 0x00, 0x15, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, + 0x3d, 0x00, 0x00, 0x00, 0x1d, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x17, 0x00, + 0x10, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x35, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1d, 0x30, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x6a, 0x3c, 0x16, 0x00, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x3e, 0x00, 0x00, 0x00, 0x1e, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x17, 0x00, 0x11, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4b, 0x36, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x31, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x6a, 0x42, 0x26, 0x00, 0x16, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, + 0x40, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x19, 0x00, + 0x11, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x37, 0x3a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1d, 0x31, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x6b, 0x46, 0x38, 0x00, 0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x42, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x1a, 0x00, 0x11, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4e, 0x38, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x32, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x6c, 0x48, 0x48, 0x00, 0x17, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, + 0x44, 0x00, 0x00, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x1a, 0x00, + 0x12, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x3a, 0x3d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x32, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x6d, 0x48, 0x55, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x46, 0x00, 0x00, 0x00, 0x21, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x1c, 0x00, 0x13, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x53, 0x3c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x33, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x6e, 0x49, 0x65, 0x00, 0x18, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, + 0x48, 0x00, 0x00, 0x00, 0x22, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x1d, 0x00, + 0x14, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x3d, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x33, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2f, 0x6f, 0x49, 0x71, 0x02, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x4b, 0x00, 0x00, 0x00, 0x24, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1e, 0x00, 0x15, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x58, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x34, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x70, 0x49, 0x79, 0x05, 0x19, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x65, 0x03, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x4e, 0x00, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x00, + 0x16, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x43, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x35, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x71, 0x49, 0x7f, 0x08, 0x1a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x51, 0x00, 0x00, 0x00, 0x27, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x22, 0x00, 0x17, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x46, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x35, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x72, 0x49, 0x83, 0x0a, 0x1b, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x26, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x67, 0x03, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, + 0x54, 0x00, 0x00, 0x00, 0x2a, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x24, 0x00, + 0x19, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x4a, 0x4e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x36, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x73, 0x4a, 0x84, 0x0b, 0x1d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, + 0x31, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x55, 0x00, 0x00, 0x00, 0x2c, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x28, 0x00, 0x1b, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6b, 0x4f, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x36, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x74, 0x4b, 0x85, 0x0c, 0x1f, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x3c, 0x0b, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x69, 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, + 0x56, 0x00, 0x00, 0x00, 0x30, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x2a, 0x00, + 0x1e, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x54, 0x58, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x22, 0x37, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x75, 0x4c, 0x87, 0x0c, 0x22, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, + 0x47, 0x12, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x57, 0x00, 0x00, 0x00, 0x34, 0x19, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x2c, 0x00, 0x21, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x59, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x38, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x76, 0x4d, 0x87, 0x0d, 0x25, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x4f, 0x19, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, + 0x58, 0x00, 0x00, 0x00, 0x39, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x2c, 0x00, + 0x25, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x5f, 0x66, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x22, 0x39, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x77, 0x4e, 0x88, 0x0e, 0x29, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, + 0x56, 0x1c, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x58, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x2d, 0x00, 0x2a, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7b, 0x63, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x39, 0x00, 0x08, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x78, 0x4e, 0x8a, 0x0f, 0x2e, 0x0d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x5d, 0x20, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, + 0x59, 0x00, 0x00, 0x00, 0x45, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x2d, 0x00, + 0x2e, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x65, 0x77, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x39, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x35, 0x79, 0x4f, 0x8b, 0x11, 0x33, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, + 0x64, 0x21, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x05, 0x00, 0x04, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x5a, 0x00, 0x00, 0x00, 0x4d, 0x29, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2e, 0x00, 0x33, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7d, 0x65, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x3a, 0x00, 0x0c, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x7a, 0x4f, 0x8d, 0x13, 0x39, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x6a, 0x21, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6f, 0x05, 0x00, 0x0d, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x5b, 0x00, 0x00, 0x00, 0x56, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x2e, 0x00, + 0x34, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x7b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x3b, 0x00, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x7b, 0x51, 0x8e, 0x16, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, + 0x6f, 0x21, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x05, 0x00, 0x17, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x2f, 0x00, 0x35, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0x67, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x3c, 0x00, 0x12, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7d, 0x51, 0x90, 0x19, 0x48, 0x19, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x75, 0x21, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x71, 0x06, 0x00, 0x21, 0x00, 0x03, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, + 0x5d, 0x00, 0x00, 0x00, 0x5f, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x2f, 0x00, + 0x35, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x68, 0x7d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x25, 0x3c, 0x00, 0x16, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x7d, 0x52, 0x93, 0x1d, 0x50, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x7a, 0x20, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x06, 0x00, 0x2a, 0x00, 0x04, + 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x5e, 0x00, 0x00, 0x00, 0x60, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x2f, 0x00, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x81, 0x69, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x3d, 0x00, 0x1a, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7e, 0x52, 0x95, 0x20, 0x5a, 0x23, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x7e, 0x20, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x06, 0x00, 0x2f, 0x00, 0x04, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, + 0x5f, 0x00, 0x00, 0x00, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x30, 0x00, + 0x36, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x69, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x26, 0x3d, 0x00, 0x1e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x7f, 0x53, 0x97, 0x25, 0x64, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, + 0x84, 0x1f, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x06, 0x00, 0x37, 0x00, 0x05, + 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x5f, 0x00, 0x00, 0x00, 0x62, 0x3a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x30, 0x00, 0x37, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x83, 0x6a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x3e, 0x00, 0x23, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x80, 0x53, 0x9a, 0x2a, 0x70, 0x2f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x89, 0x1e, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x75, 0x06, 0x00, 0x3b, 0x00, 0x05, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, + 0x60, 0x00, 0x00, 0x00, 0x63, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x31, 0x00, + 0x38, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x6b, 0x81, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x3e, 0x00, 0x28, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0x81, 0x53, 0x9d, 0x30, 0x7b, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, + 0x8e, 0x1d, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x06, 0x00, 0x40, 0x00, 0x05, + 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x61, 0x00, 0x00, 0x00, 0x64, 0x3b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x32, 0x00, 0x38, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x85, 0x6b, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x3e, 0x00, 0x2f, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x82, 0x53, 0xa1, 0x37, 0x83, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x94, 0x1d, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x06, 0x00, 0x44, 0x00, 0x05, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0x62, 0x00, 0x00, 0x00, 0x64, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x32, 0x00, + 0x39, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x6c, 0x83, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x3f, 0x00, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3a, 0x83, 0x54, 0xa4, 0x3e, 0x87, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, + 0x9a, 0x1c, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x06, 0x00, 0x48, 0x00, 0x05, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x62, 0x00, 0x00, 0x00, 0x65, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x32, 0x00, 0x3a, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x87, 0x6d, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x3f, 0x01, 0x3d, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x85, 0x54, 0xa8, 0x45, 0x89, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xa0, 0x1b, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x79, 0x06, 0x00, 0x49, 0x00, 0x05, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, + 0x63, 0x00, 0x00, 0x00, 0x66, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x33, 0x00, + 0x3a, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x6d, 0x86, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x29, 0x40, 0x02, 0x43, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x85, 0x54, 0xac, 0x4b, 0x8a, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, + 0xa6, 0x1a, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x06, 0x00, 0x4b, 0x00, 0x05, + 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x64, 0x00, 0x00, 0x00, 0x67, 0x3d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x34, 0x00, 0x3a, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x89, 0x6e, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x40, 0x04, 0x46, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x86, 0x55, 0xb2, 0x51, 0x8a, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0xab, 0x19, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7a, 0x06, 0x00, 0x4c, 0x00, 0x05, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x65, 0x00, 0x00, 0x00, 0x68, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x34, 0x00, + 0x3b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x6f, 0x88, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x40, 0x07, 0x48, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x87, 0x55, 0xb7, 0x55, 0x8b, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, + 0xb1, 0x19, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x06, 0x00, 0x4d, 0x00, 0x05, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x66, 0x00, 0x00, 0x00, 0x69, 0x3e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x35, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0x6f, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x41, 0x08, 0x48, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x88, 0x55, 0xbd, 0x57, 0x8b, 0x34, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0xb6, 0x19, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x06, 0x00, 0x4e, 0x00, 0x06, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x67, 0x00, 0x00, 0x00, 0x6a, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x36, 0x00, + 0x3c, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x70, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x41, 0x09, 0x49, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x89, 0x56, 0xc1, 0x59, 0x8c, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, + 0xbd, 0x19, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x06, 0x00, 0x4e, 0x00, 0x06, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x67, 0x00, 0x00, 0x00, 0x6a, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x36, 0x00, 0x3d, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8d, 0x71, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x41, 0x09, 0x4a, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x89, 0x57, 0xc4, 0x59, 0x8d, 0x35, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x01, 0xc2, 0x19, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x07, 0x00, 0x4f, 0x00, 0x06, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, + 0x68, 0x00, 0x00, 0x00, 0x6b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x36, 0x00, + 0x3d, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x71, 0x8b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x42, 0x09, 0x4a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x8a, 0x58, 0xc7, 0x59, 0x8e, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x05, + 0xc9, 0x19, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x07, 0x00, 0x4f, 0x00, 0x07, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x69, 0x00, 0x00, 0x00, 0x6c, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x37, 0x00, 0x3e, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8f, 0x72, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x42, 0x09, 0x4b, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x8b, 0x5a, 0xca, 0x5a, 0x8f, 0x37, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x08, 0xcf, 0x18, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x07, 0x00, 0x50, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, + 0x6a, 0x00, 0x00, 0x00, 0x6d, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x37, 0x00, + 0x3f, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x72, 0x8d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x43, 0x09, 0x4b, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x8c, 0x5b, 0xcd, 0x5a, 0x90, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x0a, + 0xd5, 0x18, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x4f, 0x00, 0x07, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x6a, 0x00, 0x00, 0x00, 0x6d, 0x42, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x38, 0x00, 0x3f, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x91, 0x73, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x43, 0x09, 0x4c, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8c, 0x5e, 0xd1, 0x5b, 0x91, 0x37, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x0d, 0xdb, 0x18, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x81, 0x07, 0x00, 0x50, 0x00, 0x07, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, + 0x6b, 0x00, 0x00, 0x00, 0x6e, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x39, 0x00, + 0x40, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x74, 0x8f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x43, 0x09, 0x4d, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x8d, 0x5f, 0xd3, 0x5b, 0x92, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x10, + 0xe1, 0x18, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x50, 0x00, 0x07, + 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x6c, 0x00, 0x00, 0x00, 0x6f, 0x43, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x39, 0x00, 0x40, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x93, 0x74, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x43, 0x09, 0x4d, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8e, 0x61, 0xd5, 0x5c, 0x93, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x12, 0xe6, 0x17, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x83, 0x08, 0x00, 0x50, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x6d, 0x00, 0x00, 0x00, 0x6f, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x39, 0x00, + 0x40, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x75, 0x91, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x44, 0x0a, 0x4e, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x8e, 0x62, 0xd7, 0x5c, 0x93, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x14, + 0xea, 0x17, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x08, 0x00, 0x50, 0x00, 0x07, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x44, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x3a, 0x00, 0x41, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x94, 0x75, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x44, 0x0a, 0x4e, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x8f, 0x63, 0xd8, 0x5c, 0x94, 0x39, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x16, 0xec, 0x17, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x84, 0x08, 0x00, 0x51, 0x00, 0x08, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, + 0x6d, 0x00, 0x00, 0x00, 0x71, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x3a, 0x00, + 0x41, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x76, 0x92, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x44, 0x0a, 0x4e, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x8f, 0x64, 0xd9, 0x5d, 0x95, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x17, + 0xef, 0x18, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x09, 0x00, 0x51, 0x00, 0x08, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x6e, 0x00, 0x00, 0x00, 0x71, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x3b, 0x00, 0x42, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x96, 0x76, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x45, 0x0a, 0x4f, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x90, 0x65, 0xd9, 0x5e, 0x96, 0x3a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x18, 0xf1, 0x18, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x85, 0x09, 0x00, 0x51, 0x00, 0x08, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, + 0x6f, 0x00, 0x00, 0x00, 0x72, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x3b, 0x00, + 0x42, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x77, 0x94, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x45, 0x0a, 0x4f, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0x90, 0x65, 0xda, 0x5e, 0x96, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x19, + 0xf1, 0x18, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x09, 0x00, 0x52, 0x00, 0x08, + 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x6f, 0x00, 0x00, 0x00, 0x73, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3b, 0x00, 0x43, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x97, 0x77, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x45, 0x0b, 0x4f, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x91, 0x66, 0xda, 0x5e, 0x97, 0x3b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, 0xf2, 0x18, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x09, 0x00, 0x52, 0x00, 0x08, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, + 0x70, 0x00, 0x00, 0x00, 0x73, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3c, 0x00, + 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x78, 0x95, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x45, 0x0a, 0x50, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x66, 0xdb, 0x5f, 0x97, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, + 0xf3, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x09, 0x00, 0x52, 0x00, 0x08, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x70, 0x00, 0x00, 0x00, 0x73, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x98, 0x78, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x46, 0x0b, 0x50, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x66, 0xdb, 0x5f, 0x97, 0x3b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x87, 0x09, 0x00, 0x53, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x66, 0xdc, 0x5f, 0x98, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x71, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3d, 0x00, 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x87, 0x0a, 0x00, 0x53, 0x00, 0x09, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, + 0x71, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3d, 0x00, + 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x45, 0x0a, 0x4f, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x93, 0x67, 0xdb, 0x5f, 0x98, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x19, + 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0a, 0x00, 0x53, 0x00, 0x09, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x72, 0x00, 0x00, 0x00, 0x75, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3e, 0x00, 0x45, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x98, 0x7a, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x45, 0x0a, 0x4e, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x93, 0x67, 0xdb, 0x60, 0x98, 0x3a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, 0xf4, 0x18, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x87, 0x0b, 0x00, 0x53, 0x00, 0x0a, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, + 0x73, 0x00, 0x00, 0x00, 0x76, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x3f, 0x00, + 0x46, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x7b, 0x94, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x44, 0x09, 0x4d, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x93, 0x68, 0xda, 0x60, 0x98, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, + 0xf4, 0x18, 0x01, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x0c, 0x00, 0x52, 0x00, 0x0b, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x74, 0x00, 0x00, 0x00, 0x77, 0x42, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x41, 0x00, 0x48, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x96, 0x7c, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x43, 0x08, 0x4c, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x94, 0x69, 0xd9, 0x61, 0x98, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x18, 0xf4, 0x17, 0x02, 0x89, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x85, 0x0d, 0x00, 0x52, 0x00, 0x0d, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x76, 0x00, 0x00, 0x00, 0x79, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x43, 0x00, + 0x4a, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x7e, 0x91, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x41, 0x06, 0x49, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3d, 0x95, 0x6a, 0xd7, 0x62, 0x98, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x17, + 0xf4, 0x15, 0x04, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x0f, 0x00, 0x51, 0x00, 0x0f, + 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x79, 0x00, 0x00, 0x00, 0x7c, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x47, 0x00, 0x4d, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x92, 0x81, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x3e, 0x05, 0x46, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x95, 0x6c, 0xd5, 0x64, 0x98, 0x34, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x01, 0x16, 0xf4, 0x14, 0x06, 0x85, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x13, 0x00, 0x50, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x7c, 0x00, 0x00, 0x00, 0x7f, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x4b, 0x00, + 0x51, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x85, 0x8c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x3a, 0x02, 0x41, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x35, 0x96, 0x6e, 0xd2, 0x66, 0x98, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x04, 0x15, + 0xf3, 0x12, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x17, 0x00, 0x4e, 0x00, 0x17, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x81, 0x00, 0x00, 0x00, 0x83, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x52, 0x00, 0x57, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8a, 0x8b, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x34, 0x00, 0x3a, + 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x96, 0x71, 0xcc, 0x6a, 0x98, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x0b, 0x13, 0xf3, 0x0e, 0x0e, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x74, 0x1f, 0x00, 0x4b, 0x00, 0x1f, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, + 0x86, 0x00, 0x00, 0x00, 0x89, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x5b, 0x00, + 0x5f, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x91, 0x7e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x2a, 0x00, 0x2e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x97, 0x74, 0xc1, 0x6e, 0x97, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x17, 0x10, + 0xf1, 0x09, 0x17, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x2c, 0x00, 0x47, 0x00, 0x2c, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x8d, 0x00, 0x00, 0x00, 0x8f, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x6a, 0x00, 0x6d, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x72, 0x9c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x1e, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x93, 0x7a, 0xb1, 0x75, 0x94, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x28, 0x0b, 0xef, 0x02, 0x24, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x53, 0x3e, 0x00, 0x42, 0x00, 0x3e, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x91, 0x00, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x79, 0x00, + 0x7b, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xa8, 0x5c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x8e, 0x7c, 0xa4, 0x77, 0x8f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x34, 0x0a, + 0xee, 0x00, 0x2d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x4b, 0x00, 0x40, 0x00, 0x4b, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x7f, 0x00, 0x82, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x51, 0xac, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8b, 0x7d, 0x9c, 0x78, 0x8c, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x3b, 0x09, 0xed, 0x00, 0x33, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3b, 0x52, 0x00, 0x3e, 0x00, 0x51, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8c, 0x01, 0x00, 0x05, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x82, 0x00, + 0x84, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xad, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x88, 0x7e, 0x98, 0x79, 0x89, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x3e, 0x09, + 0xec, 0x00, 0x37, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x55, 0x00, 0x3d, 0x00, 0x56, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x05, 0x00, 0x09, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, 0x85, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x45, 0xae, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x7f, 0x95, 0x7a, 0x88, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x08, 0xeb, 0x00, 0x39, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x32, 0x57, 0x00, 0x3c, 0x00, 0x59, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x87, 0x08, 0x00, 0x0c, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x84, 0x00, + 0x86, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xaf, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x85, 0x7f, 0x93, 0x7a, 0x87, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x43, 0x08, + 0xeb, 0x00, 0x3b, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x59, 0x00, 0x3b, 0x00, 0x5a, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x0a, 0x00, 0x0e, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x85, 0x00, 0x86, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0xaf, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x80, 0x91, 0x7b, 0x86, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x45, 0x08, 0xea, 0x00, 0x3d, 0x4a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2d, 0x5b, 0x00, 0x3b, 0x00, 0x5c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x0b, 0x00, 0x10, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x85, 0x00, + 0x86, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xaf, 0x3b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x82, 0x7f, 0x90, 0x7b, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x46, 0x08, + 0xea, 0x00, 0x3d, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x5c, 0x00, 0x3b, 0x00, 0x5d, + 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x0c, 0x00, 0x11, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x85, 0x00, 0x86, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0xaf, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x80, 0x8f, 0x7b, 0x84, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x46, 0x07, 0xea, 0x00, 0x3e, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2b, 0x5c, 0x00, 0x3a, 0x00, 0x5d, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x83, 0x0c, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x85, 0x00, + 0x86, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xb0, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0x80, 0x8f, 0x7b, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x46, 0x08, + 0xe9, 0x00, 0x3e, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x5d, 0x00, 0x3a, 0x00, 0x5e, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0d, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x85, 0x00, 0x87, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3d, 0xb0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x7f, 0x8f, 0x7b, 0x84, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x47, 0x08, 0xe9, 0x00, 0x3e, 0x47, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0x5d, 0x00, 0x3a, 0x00, 0x5e, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x82, 0x0d, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x85, 0x00, + 0x86, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xaf, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0x7f, 0x8e, 0x7b, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x47, 0x08, + 0xe9, 0x00, 0x3f, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x5d, 0x00, 0x3a, 0x00, 0x5e, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0d, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x85, 0x00, 0x86, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0xaf, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x40, 0x00, 0x44, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x8c, 0x6a, 0xd1, 0x62, 0x8c, 0x47, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x15, 0xf1, 0x0e, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x26, 0x00, 0x3a, 0x00, 0x25, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, + 0x8f, 0x00, 0x00, 0x00, 0x91, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x64, 0x00, + 0x66, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8d, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5c, 0x61, 0x19, 0x68, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6c, 0x71, 0x59, 0xe8, 0x50, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x22, + 0xf3, 0x1d, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x09, 0x00, 0x3b, 0x00, 0x07, + 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x7a, 0x00, 0x00, 0x00, 0x7c, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x43, 0x00, 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x9e, 0x6a, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x7a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x76, 0x2d, 0x7e, + 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x57, 0x4e, 0xf3, 0x43, 0x5c, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x96, 0x00, 0x2a, 0xf2, 0x28, 0x00, 0x95, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x9a, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, + 0x64, 0x00, 0x00, 0x00, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x2a, 0x00, + 0x2c, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xac, 0x4e, 0xac, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x91, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x8a, 0x84, 0x3d, 0x8c, 0x84, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9a, 0x43, 0x46, 0xfa, 0x3c, 0x49, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x93, 0x00, 0x30, + 0xf2, 0x2f, 0x00, 0x92, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0x9d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x51, 0x00, 0x00, 0x00, 0x52, 0x7b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x18, 0x00, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xb1, 0x3a, 0xb0, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x22, 0xa1, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x95, 0x8d, 0x4a, 0x95, + 0x91, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x33, 0x40, 0xfd, 0x37, 0x3a, 0xa4, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x8e, 0x00, 0x33, 0xf2, 0x34, 0x00, 0x8e, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x9d, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x9c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, + 0x42, 0x00, 0x00, 0x00, 0x43, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xb5, 0x0b, 0x00, + 0x0e, 0xb5, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xb0, 0x2a, 0xb0, 0x2c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xa9, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1d, 0x9d, 0x94, 0x55, 0x9b, 0x9b, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xac, 0x28, 0x3d, 0xff, 0x34, 0x30, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x88, 0x00, 0x36, + 0xf2, 0x39, 0x00, 0x89, 0x24, 0x00, 0x00, 0x00, 0x00, 0x11, 0x9b, 0x00, 0x00, 0x3f, 0x00, 0x00, + 0x99, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x37, 0x00, 0x00, 0x00, 0x37, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0xb7, 0x03, 0x00, 0x06, 0xb7, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3d, 0xae, 0x20, 0xb0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0xb0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xa3, 0x99, 0x5e, 0x9f, + 0xa1, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x20, 0x3b, 0xff, 0x32, 0x28, 0xaf, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x83, 0x00, 0x39, 0xf2, 0x3c, 0x00, 0x85, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x98, 0x00, 0x00, 0x40, 0x00, 0x00, 0x96, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, + 0x2e, 0x00, 0x00, 0x00, 0x2e, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xb6, 0x00, 0x00, + 0x00, 0xb7, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xac, 0x18, 0xae, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xb4, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2b, 0xa6, 0x9c, 0x63, 0xa2, 0xa5, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xb2, 0x1a, 0x39, 0xff, 0x31, 0x22, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7f, 0x00, 0x3a, + 0xf2, 0x3e, 0x00, 0x82, 0x31, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x96, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x94, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x27, 0x00, 0x00, 0x00, 0x28, 0xa3, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x21, 0xb5, 0x00, 0x00, 0x00, 0xb7, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0xa9, 0x11, 0xac, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4b, 0xb6, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xa8, 0x9e, 0x67, 0xa4, + 0xa7, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb3, 0x15, 0x37, 0xff, 0x30, 0x1d, 0xb4, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x7b, 0x00, 0x3b, 0xf2, 0x40, 0x00, 0x80, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x95, 0x00, 0x00, 0x41, 0x00, 0x00, 0x91, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, + 0x23, 0x00, 0x00, 0x00, 0x23, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xb4, 0x00, 0x00, + 0x00, 0xb6, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xa7, 0x0d, 0xaa, 0x51, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xb8, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x32, 0xaa, 0xa0, 0x6a, 0xa5, 0xa9, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0xb4, 0x12, 0x36, 0xff, 0x30, 0x1a, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x79, 0x00, 0x3c, + 0xf2, 0x41, 0x00, 0x7e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x24, 0x93, 0x00, 0x00, 0x41, 0x00, 0x00, + 0x90, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x20, 0x00, 0x00, 0x00, 0x20, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xb3, 0x00, 0x00, 0x00, 0xb5, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0xa5, 0x0b, 0xa9, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xb9, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xaa, 0xa0, 0x6c, 0xa6, + 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb4, 0x10, 0x36, 0xff, 0x30, 0x19, 0xb5, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x78, 0x00, 0x3d, 0xf2, 0x42, 0x00, 0x7c, 0x39, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x92, 0x00, 0x00, 0x41, 0x00, 0x00, 0x8f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xb2, 0x00, 0x00, + 0x00, 0xb5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xa4, 0x09, 0xa8, 0x57, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xba, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x34, 0xaa, 0xa0, 0x6d, 0xa6, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xb5, 0x10, 0x36, 0xff, 0x2f, 0x19, 0xb5, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x77, 0x00, 0x3d, + 0xf2, 0x42, 0x00, 0x7c, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x26, 0x92, 0x00, 0x00, 0x41, 0x00, 0x00, + 0x8e, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x1e, 0x00, 0x00, 0x00, 0x1e, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0xb2, 0x00, 0x00, 0x00, 0xb5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5e, 0xa4, 0x09, 0xa8, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0xba, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xaa, 0xa0, 0x6c, 0xa6, + 0xaa, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb4, 0x10, 0x36, 0xff, 0x2f, 0x19, 0xb5, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x78, 0x00, 0x3d, 0xf2, 0x42, 0x00, 0x7d, 0x39, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x92, 0x00, 0x00, 0x41, 0x00, 0x00, 0x8f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xb2, 0x00, 0x00, + 0x00, 0xb5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xa4, 0x09, 0xa8, 0x57, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xba, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x32, 0xa9, 0xa0, 0x6b, 0xa5, 0xa9, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0xb4, 0x13, 0x36, 0xff, 0x30, 0x1b, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x79, 0x00, 0x3d, + 0xf2, 0x41, 0x00, 0x7e, 0x37, 0x00, 0x00, 0x00, 0x00, 0x24, 0x93, 0x00, 0x00, 0x41, 0x00, 0x00, + 0x90, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x1f, 0x00, 0x00, 0x00, 0x20, 0xa9, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0xb3, 0x00, 0x00, 0x00, 0xb5, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0xa5, 0x0b, 0xa9, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xb9, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xa8, 0x9e, 0x67, 0xa4, + 0xa7, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb3, 0x16, 0x37, 0xff, 0x30, 0x1f, 0xb3, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x7c, 0x00, 0x3c, 0xf2, 0x41, 0x00, 0x81, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x94, 0x00, 0x00, 0x42, 0x00, 0x00, 0x92, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, + 0x22, 0x00, 0x00, 0x00, 0x23, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xb4, 0x00, 0x00, + 0x00, 0xb6, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xa7, 0x0f, 0xab, 0x50, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x27, 0xa6, 0x9b, 0x62, 0xa2, 0xa3, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb1, 0x1e, 0x39, 0xff, 0x31, 0x26, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x81, 0x00, 0x3a, + 0xf2, 0x3f, 0x00, 0x85, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x96, 0x00, 0x00, 0x43, 0x00, 0x00, + 0x94, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x28, 0x00, 0x00, 0x00, 0x29, 0xa2, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x21, 0xb5, 0x00, 0x00, 0x00, 0xb7, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0xaa, 0x16, 0xae, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0xb4, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x9d, 0x95, 0x59, 0x9d, + 0x9b, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x2a, 0x3c, 0xff, 0x34, 0x34, 0xa9, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x89, 0x00, 0x38, 0xf1, 0x3c, 0x00, 0x8d, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x9a, 0x00, 0x00, 0x44, 0x00, 0x00, 0x99, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, + 0x32, 0x00, 0x00, 0x00, 0x34, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xb6, 0x00, 0x00, + 0x06, 0xb8, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xae, 0x24, 0xb3, 0x39, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xad, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x8a, 0x87, 0x44, 0x90, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x49, 0x44, 0xfb, 0x3a, 0x53, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x96, 0x00, 0x31, + 0xf3, 0x35, 0x00, 0x97, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9d, 0x00, 0x00, 0x48, 0x00, 0x00, + 0x9d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x47, 0x00, 0x00, 0x00, 0x4d, 0x82, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0xb4, 0x13, 0x00, 0x1c, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x26, 0xb1, 0x43, 0xb2, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x22, 0x99, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x62, 0x1f, 0x6e, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x7f, 0x57, 0xec, 0x4f, 0x86, 0x5c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x00, 0x23, 0xf3, 0x24, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x04, 0x00, 0x4e, 0x00, 0x04, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0x6f, 0x00, 0x00, 0x00, 0x79, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x3e, 0x00, + 0x51, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x81, 0x97, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x39, 0x4e, 0x10, 0x58, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x63, 0xe1, 0x5a, 0x95, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x1b, + 0xf4, 0x1b, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x13, 0x00, 0x52, 0x00, 0x15, + 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7f, 0x00, 0x00, 0x00, 0x89, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x54, 0x00, 0x6a, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8d, 0x9b, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x45, 0x0a, 0x4f, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x97, 0x67, 0xdb, 0x60, 0x99, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x17, 0xf4, 0x17, 0x0e, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x1b, 0x00, 0x54, 0x00, 0x1e, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, + 0x85, 0x00, 0x00, 0x00, 0x8e, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x5d, 0x00, + 0x73, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xa6, 0x72, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x40, 0x07, 0x49, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x98, 0x6b, 0xd8, 0x62, 0x9a, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x15, + 0xf4, 0x15, 0x13, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x1f, 0x00, 0x54, 0x00, 0x22, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x88, 0x00, 0x00, 0x00, 0x91, 0x25, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x63, 0x00, 0x79, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7d, 0xaa, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3d, 0x05, 0x46, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x9a, 0x6d, 0xd6, 0x64, 0x9b, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x11, 0x14, 0xf3, 0x14, 0x16, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x75, 0x22, 0x00, 0x55, 0x00, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, + 0x89, 0x00, 0x00, 0x00, 0x92, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x00, + 0x7b, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xac, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x22, 0x3c, 0x05, 0x45, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0x9a, 0x6e, 0xd5, 0x65, 0x9b, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x13, 0x14, + 0xf3, 0x13, 0x18, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x23, 0x00, 0x55, 0x00, 0x26, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x8a, 0x00, 0x00, 0x00, 0x93, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x67, 0x00, 0x7c, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x79, 0xad, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x3b, 0x04, 0x44, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x9a, 0x6e, 0xd5, 0x66, 0x9b, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x13, 0x14, 0xf3, 0x13, 0x19, 0x77, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x23, 0x00, 0x55, 0x00, 0x27, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, + 0x8a, 0x00, 0x00, 0x00, 0x93, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x67, 0x00, + 0x7d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xad, 0x65, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x3b, 0x04, 0x44, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0x9a, 0x6e, 0xd5, 0x65, 0x9b, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x13, 0x14, + 0xf3, 0x13, 0x18, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x23, 0x00, 0x55, 0x00, 0x26, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x8a, 0x00, 0x00, 0x00, 0x93, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x67, 0x00, 0x7c, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x79, 0xad, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x3c, 0x05, 0x45, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x9a, 0x6e, 0xd5, 0x65, 0x9b, 0x27, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x12, 0x14, 0xf3, 0x13, 0x18, 0x77, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x74, 0x22, 0x00, 0x55, 0x00, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, + 0x89, 0x00, 0x00, 0x00, 0x92, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x66, 0x00, + 0x7b, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xab, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x3c, 0x05, 0x45, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x99, 0x6d, 0xd6, 0x65, 0x9b, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x10, 0x14, + 0xf3, 0x14, 0x16, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x20, 0x00, 0x55, 0x00, 0x24, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x88, 0x00, 0x00, 0x00, 0x90, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x63, 0x00, 0x78, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7c, 0xa9, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x3f, 0x06, 0x48, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x98, 0x6c, 0xd7, 0x64, 0x9b, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0b, 0x15, 0xf4, 0x15, 0x12, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7a, 0x1b, 0x00, 0x54, 0x00, 0x1d, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x84, 0x00, 0x00, 0x00, 0x8c, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x5b, 0x00, + 0x6e, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xa1, 0x74, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x43, 0x09, 0x4d, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3d, 0x96, 0x68, 0xda, 0x61, 0x99, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x18, + 0xf4, 0x17, 0x06, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x0f, 0x00, 0x54, 0x00, 0x11, + 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x79, 0x00, 0x00, 0x00, 0x7e, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x48, 0x00, 0x55, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x91, 0x8a, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x45, 0x0a, 0x4f, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x93, 0x67, 0xdb, 0x60, 0x98, 0x39, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, 0xf4, 0x18, 0x02, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x0c, 0x00, 0x53, 0x00, 0x0b, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x74, 0x00, 0x00, 0x00, 0x78, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x41, 0x00, + 0x4a, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x7f, 0x92, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x46, 0x0b, 0x50, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x93, 0x67, 0xdb, 0x5f, 0x98, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0a, 0x00, 0x53, 0x00, 0x0a, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x72, 0x00, 0x00, 0x00, 0x75, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3e, 0x00, 0x45, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x98, 0x7b, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x66, 0xdc, 0x5f, 0x98, 0x3b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x71, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3d, 0x00, + 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x71, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3d, 0x00, + 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0a, 0x00, 0x53, 0x00, 0x08, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x71, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3d, 0x00, 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x45, 0x0a, 0x4f, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdb, 0x5f, 0x98, 0x3b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x19, 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x87, 0x0a, 0x00, 0x53, 0x00, 0x09, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, + 0x72, 0x00, 0x00, 0x00, 0x75, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3e, 0x00, + 0x45, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x7a, 0x95, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x45, 0x0a, 0x4e, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0x93, 0x67, 0xdb, 0x60, 0x98, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, + 0xf4, 0x18, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0b, 0x00, 0x53, 0x00, 0x0a, + 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x73, 0x00, 0x00, 0x00, 0x76, 0x44, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x3f, 0x00, 0x46, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x97, 0x7b, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x44, 0x09, 0x4d, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x93, 0x68, 0xda, 0x60, 0x98, 0x39, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, 0xf4, 0x17, 0x01, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x0c, 0x00, 0x52, 0x00, 0x0b, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, + 0x74, 0x00, 0x00, 0x00, 0x77, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x41, 0x00, + 0x47, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x7c, 0x93, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x43, 0x08, 0x4c, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x94, 0x69, 0xd9, 0x61, 0x98, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x18, + 0xf4, 0x17, 0x02, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x0d, 0x00, 0x52, 0x00, 0x0d, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x76, 0x00, 0x00, 0x00, 0x79, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x43, 0x00, 0x4a, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x95, 0x7e, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x41, 0x06, 0x49, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x95, 0x6a, 0xd7, 0x62, 0x98, 0x36, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x17, 0xf4, 0x15, 0x04, 0x87, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x83, 0x0f, 0x00, 0x51, 0x00, 0x0f, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, + 0x79, 0x00, 0x00, 0x00, 0x7c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x47, 0x00, + 0x4d, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x81, 0x8f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x3e, 0x05, 0x45, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0x96, 0x6c, 0xd5, 0x63, 0x98, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x01, 0x16, + 0xf4, 0x14, 0x06, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x13, 0x00, 0x50, 0x00, 0x12, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7c, 0x00, 0x00, 0x00, 0x7f, 0x37, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x4b, 0x00, 0x51, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8e, 0x85, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x3a, 0x02, 0x41, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x96, 0x6e, 0xd2, 0x66, 0x98, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x04, 0x15, 0xf3, 0x12, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x17, 0x00, 0x4e, 0x00, 0x17, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, + 0x81, 0x00, 0x00, 0x00, 0x83, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x53, 0x00, + 0x57, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x8b, 0x87, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x34, 0x00, 0x3a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2d, 0x96, 0x71, 0xcc, 0x6a, 0x98, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x0b, 0x13, + 0xf3, 0x0e, 0x0e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x1f, 0x00, 0x4b, 0x00, 0x1f, + 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x86, 0x00, 0x00, 0x00, 0x89, 0x25, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x5b, 0x00, 0x5f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x91, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x2a, 0x00, 0x2e, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x97, 0x74, 0xc1, 0x6e, 0x97, 0x22, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x17, 0x10, 0xf1, 0x09, 0x17, 0x75, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x68, 0x2c, 0x00, 0x47, 0x00, 0x2c, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, + 0x8d, 0x00, 0x00, 0x00, 0x90, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x6a, 0x00, + 0x6d, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x9c, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x1e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x93, 0x7b, 0xb1, 0x75, 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x28, 0x0b, + 0xef, 0x02, 0x24, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x3e, 0x00, 0x42, 0x00, 0x3e, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x91, 0x00, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x79, 0x00, 0x7b, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5d, 0xa8, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x8e, 0x7c, 0xa4, 0x77, 0x8f, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x34, 0x0a, 0xee, 0x00, 0x2d, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0x4b, 0x00, 0x40, 0x00, 0x4b, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x7f, 0x00, + 0x82, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xac, 0x4f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x8b, 0x7d, 0x9c, 0x78, 0x8c, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x3b, 0x09, + 0xed, 0x00, 0x33, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x52, 0x00, 0x3e, 0x00, 0x52, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x05, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x82, 0x00, 0x84, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x49, 0xad, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x7e, 0x98, 0x79, 0x89, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x3e, 0x09, 0xec, 0x00, 0x37, 0x51, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x36, 0x55, 0x00, 0x3d, 0x00, 0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x89, 0x05, 0x00, 0x09, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, + 0x85, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xae, 0x42, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x86, 0x7f, 0x95, 0x7a, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x41, 0x08, + 0xeb, 0x00, 0x39, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x57, 0x00, 0x3c, 0x00, 0x59, + 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x08, 0x00, 0x0c, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x84, 0x00, 0x86, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x42, 0xaf, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x7f, 0x93, 0x7a, 0x87, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x43, 0x08, 0xeb, 0x00, 0x3b, 0x4b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x5a, 0x00, 0x3c, 0x00, 0x5a, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x85, 0x0a, 0x00, 0x0e, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x84, 0x00, + 0x86, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xb0, 0x3d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x83, 0x80, 0x91, 0x7b, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x45, 0x08, + 0xeb, 0x00, 0x3c, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x5b, 0x00, 0x3b, 0x00, 0x5c, + 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x0b, 0x00, 0x0f, 0x83, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x86, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3f, 0xaf, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x7f, 0x90, 0x7b, 0x85, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x46, 0x08, 0xea, 0x00, 0x3d, 0x49, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2c, 0x5c, 0x00, 0x3b, 0x00, 0x5d, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x0c, 0x00, 0x11, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x85, 0x00, + 0x86, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xaf, 0x3a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x82, 0x7f, 0x90, 0x7b, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x46, 0x07, + 0xea, 0x00, 0x3e, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x5c, 0x00, 0x3b, 0x00, 0x5d, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x0c, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x85, 0x00, 0x86, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3d, 0xb0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x80, 0x8f, 0x7b, 0x84, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x46, 0x08, 0xe9, 0x00, 0x3e, 0x47, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2b, 0x5d, 0x00, 0x3a, 0x00, 0x5e, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x83, 0x0d, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x85, 0x00, + 0x87, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xb0, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0x7f, 0x8f, 0x7b, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x47, 0x08, + 0xe9, 0x00, 0x3e, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x5d, 0x00, 0x3a, 0x00, 0x5e, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0d, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x85, 0x00, 0x86, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0xb0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x7f, 0x8e, 0x7b, 0x84, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x47, 0x08, 0xe9, 0x00, 0x3f, 0x47, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0x5d, 0x00, 0x3a, 0x00, 0x5e, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x82, 0x0d, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x85, 0x00, + 0x86, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xaf, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x32, 0x40, 0x00, 0x44, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x8c, 0x6a, 0xd1, 0x62, 0x8c, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x15, + 0xf1, 0x0e, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x26, 0x00, 0x3a, 0x00, 0x24, + 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x8f, 0x00, 0x00, 0x00, 0x91, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x64, 0x00, 0x66, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x8d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x61, 0x19, 0x68, + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x71, 0x59, 0xe8, 0x50, 0x73, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x22, 0xf3, 0x1c, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8f, 0x09, 0x00, 0x3b, 0x00, 0x07, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, + 0x7a, 0x00, 0x00, 0x00, 0x7c, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x43, 0x00, + 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x6a, 0x9e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x76, 0x2d, 0x7e, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x57, 0x4e, 0xf3, 0x43, 0x5c, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x96, 0x00, 0x2a, + 0xf3, 0x28, 0x00, 0x95, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x3c, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x64, 0x00, 0x00, 0x00, 0x65, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x2a, 0x00, 0x2c, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0xac, 0x4e, 0xac, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x91, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x8a, 0x85, 0x3d, 0x8c, + 0x84, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x43, 0x46, 0xfa, 0x3c, 0x49, 0x9a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x93, 0x00, 0x30, 0xf2, 0x2e, 0x00, 0x92, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x9d, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x9d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x18, 0x00, + 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xb1, 0x3a, 0xb0, 0x1d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xa1, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x13, 0x95, 0x8d, 0x4a, 0x95, 0x91, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa4, 0x33, 0x40, 0xfd, 0x37, 0x3a, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x8e, 0x00, 0x34, + 0xf2, 0x34, 0x00, 0x8d, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x08, 0x9d, 0x00, 0x00, 0x3e, 0x00, 0x00, + 0x9c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x42, 0x00, 0x00, 0x00, 0x43, 0x8b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0xb5, 0x0b, 0x00, 0x0e, 0xb5, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2f, 0xb0, 0x2a, 0xb0, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0xa9, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x9d, 0x94, 0x55, 0x9b, + 0x9b, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x28, 0x3d, 0xff, 0x34, 0x30, 0xab, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x88, 0x00, 0x37, 0xf2, 0x39, 0x00, 0x89, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x9b, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x99, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, + 0x37, 0x00, 0x00, 0x00, 0x37, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xb7, 0x03, 0x00, + 0x06, 0xb7, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xae, 0x20, 0xb0, 0x39, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xb0, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x24, 0xa3, 0x99, 0x5e, 0x9f, 0xa1, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb0, 0x20, 0x3a, 0xff, 0x32, 0x28, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x83, 0x00, 0x39, + 0xf2, 0x3c, 0x00, 0x85, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x18, 0x98, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x96, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x2e, 0x00, 0x00, 0x00, 0x2e, 0x9d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0xb6, 0x00, 0x00, 0x00, 0xb7, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x48, 0xac, 0x18, 0xae, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0xb4, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xa6, 0x9c, 0x63, 0xa2, + 0xa5, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb2, 0x1a, 0x39, 0xff, 0x31, 0x22, 0xb2, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x36, 0x7f, 0x00, 0x3a, 0xf2, 0x3e, 0x00, 0x82, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0x96, 0x00, 0x00, 0x40, 0x00, 0x00, 0x94, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, + 0x28, 0x00, 0x00, 0x00, 0x28, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xb5, 0x00, 0x00, + 0x00, 0xb6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xa9, 0x11, 0xac, 0x4c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xb6, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2f, 0xa8, 0x9e, 0x67, 0xa4, 0xa7, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xb4, 0x15, 0x37, 0xff, 0x30, 0x1d, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x7b, 0x00, 0x3b, + 0xf2, 0x40, 0x00, 0x80, 0x35, 0x00, 0x00, 0x00, 0x00, 0x21, 0x95, 0x00, 0x00, 0x41, 0x00, 0x00, + 0x91, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x23, 0x00, 0x00, 0x00, 0x23, 0xa6, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0xb4, 0x00, 0x00, 0x00, 0xb6, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x56, 0xa7, 0x0d, 0xaa, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0xb8, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xaa, 0xa0, 0x6a, 0xa5, + 0xa9, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xb4, 0x12, 0x36, 0xff, 0x30, 0x1a, 0xb5, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3d, 0x79, 0x00, 0x3d, 0xf2, 0x41, 0x00, 0x7e, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x93, 0x00, 0x00, 0x41, 0x00, 0x00, 0x90, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, + 0x20, 0x00, 0x00, 0x00, 0x20, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xb3, 0x00, 0x00, + 0x00, 0xb5, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0xa5, 0x0b, 0xa9, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xba, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x34, 0xaa, 0xa0, 0x6c, 0xa6, 0xaa, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xb4, 0x10, 0x36, 0xff, 0x30, 0x19, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x78, 0x00, 0x3d, + 0xf2, 0x42, 0x00, 0x7d, 0x39, 0x00, 0x00, 0x00, 0x00, 0x26, 0x92, 0x00, 0x00, 0x41, 0x00, 0x00, + 0x8f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0xb2, 0x00, 0x00, 0x00, 0xb5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5d, 0xa4, 0x09, 0xa8, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0xba, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xaa, 0xa0, 0x6d, 0xa6, + 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb5, 0x10, 0x36, 0xff, 0x2f, 0x19, 0xb5, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x77, 0x00, 0x3d, 0xf2, 0x42, 0x00, 0x7c, 0x3a, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x91, 0x00, 0x00, 0x41, 0x00, 0x00, 0x8e, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xb2, 0x00, 0x00, + 0x00, 0xb5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xa4, 0x09, 0xa8, 0x58, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xba, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x34, 0xaa, 0xa0, 0x6c, 0xa6, 0xaa, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xb4, 0x10, 0x36, 0xff, 0x2f, 0x19, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x78, 0x00, 0x3d, + 0xf2, 0x42, 0x00, 0x7d, 0x39, 0x00, 0x00, 0x00, 0x00, 0x26, 0x92, 0x00, 0x00, 0x41, 0x00, 0x00, + 0x8f, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0xb2, 0x00, 0x00, 0x00, 0xb5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5d, 0xa4, 0x09, 0xa8, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0xba, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xaa, 0xa0, 0x6b, 0xa5, + 0xa9, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xb4, 0x13, 0x36, 0xff, 0x30, 0x1b, 0xb5, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3d, 0x79, 0x00, 0x3d, 0xf2, 0x41, 0x00, 0x7e, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x93, 0x00, 0x00, 0x41, 0x00, 0x00, 0x90, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xb3, 0x00, 0x00, + 0x00, 0xb5, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0xa5, 0x0b, 0xa9, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xb9, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2e, 0xa8, 0x9e, 0x67, 0xa4, 0xa7, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0xb3, 0x16, 0x37, 0xff, 0x30, 0x1f, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x7c, 0x00, 0x3c, + 0xf2, 0x41, 0x00, 0x81, 0x34, 0x00, 0x00, 0x00, 0x00, 0x21, 0x94, 0x00, 0x00, 0x42, 0x00, 0x00, + 0x92, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x22, 0x00, 0x00, 0x00, 0x23, 0xa6, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0xb4, 0x00, 0x00, 0x00, 0xb6, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x57, 0xa7, 0x0f, 0xab, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4f, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xa6, 0x9b, 0x62, 0xa2, + 0xa3, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x1e, 0x39, 0xff, 0x31, 0x26, 0xb0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x32, 0x81, 0x00, 0x3a, 0xf2, 0x3f, 0x00, 0x85, 0x2c, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x96, 0x00, 0x00, 0x43, 0x00, 0x00, 0x94, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, + 0x28, 0x00, 0x00, 0x00, 0x29, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xb5, 0x00, 0x00, + 0x00, 0xb7, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xaa, 0x16, 0xae, 0x48, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb4, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1b, 0x9d, 0x95, 0x59, 0x9d, 0x9b, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xac, 0x2a, 0x3c, 0xff, 0x34, 0x34, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x89, 0x00, 0x38, + 0xf1, 0x3c, 0x00, 0x8d, 0x21, 0x00, 0x00, 0x00, 0x00, 0x12, 0x9a, 0x00, 0x00, 0x44, 0x00, 0x00, + 0x99, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x32, 0x00, 0x00, 0x00, 0x34, 0x99, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0xb7, 0x00, 0x00, 0x06, 0xb8, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x41, 0xae, 0x24, 0xb3, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0xad, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x8a, 0x87, 0x44, 0x90, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x49, 0x44, 0xfb, 0x3a, 0x53, 0x95, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x96, 0x00, 0x31, 0xf3, 0x35, 0x00, 0x97, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x9d, 0x00, 0x00, 0x48, 0x00, 0x00, 0x9d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, + 0x47, 0x00, 0x00, 0x00, 0x4d, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xb5, 0x13, 0x00, + 0x1c, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xb1, 0x43, 0xb2, 0x1b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x99, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0x62, 0x1f, 0x6e, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x62, 0x7f, 0x57, 0xec, 0x4f, 0x86, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x00, 0x23, + 0xf3, 0x24, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x04, 0x00, 0x4e, 0x00, 0x04, + 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x6f, 0x00, 0x00, 0x00, 0x79, 0x4e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x3e, 0x00, 0x51, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x9f, 0x81, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x4e, 0x10, 0x58, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x91, 0x63, 0xe1, 0x5a, 0x95, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x1b, 0xf4, 0x1b, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x83, 0x13, 0x00, 0x52, 0x00, 0x15, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0x7f, 0x00, 0x00, 0x00, 0x89, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x54, 0x00, + 0x6a, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x9b, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x45, 0x0a, 0x4f, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x96, 0x68, 0xdb, 0x60, 0x99, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x17, + 0xf4, 0x17, 0x0e, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x1b, 0x00, 0x54, 0x00, 0x1e, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x85, 0x00, 0x00, 0x00, 0x8f, 0x2a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x5d, 0x00, 0x73, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x83, 0xa6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x40, 0x07, 0x49, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x98, 0x6b, 0xd8, 0x62, 0x9a, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x15, 0xf4, 0x14, 0x13, 0x7b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x1f, 0x00, 0x54, 0x00, 0x22, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, + 0x88, 0x00, 0x00, 0x00, 0x91, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x63, 0x00, + 0x79, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xaa, 0x6c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x3d, 0x05, 0x46, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x99, 0x6d, 0xd6, 0x64, 0x9b, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x11, 0x14, + 0xf3, 0x14, 0x16, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x22, 0x00, 0x55, 0x00, 0x25, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x8a, 0x00, 0x00, 0x00, 0x92, 0x22, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x00, 0x7b, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7b, 0xac, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x3c, 0x05, 0x45, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x9a, 0x6e, 0xd5, 0x65, 0x9b, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x13, 0x14, 0xf3, 0x13, 0x18, 0x77, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x74, 0x23, 0x00, 0x55, 0x00, 0x26, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, + 0x8a, 0x00, 0x00, 0x00, 0x93, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x67, 0x00, + 0x7c, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xad, 0x66, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x3b, 0x04, 0x44, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0x9a, 0x6e, 0xd5, 0x66, 0x9b, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x13, 0x14, + 0xf3, 0x13, 0x19, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x23, 0x00, 0x55, 0x00, 0x27, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x8a, 0x00, 0x00, 0x00, 0x93, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x67, 0x00, 0x7d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0xad, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x3b, 0x04, 0x44, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x9a, 0x6e, 0xd5, 0x65, 0x9b, 0x26, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x13, 0x14, 0xf3, 0x13, 0x18, 0x77, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x23, 0x00, 0x55, 0x00, 0x26, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, + 0x8a, 0x00, 0x00, 0x00, 0x93, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x67, 0x00, + 0x7c, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xad, 0x66, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x22, 0x3c, 0x05, 0x45, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0x9a, 0x6e, 0xd5, 0x65, 0x9b, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x12, 0x14, + 0xf3, 0x13, 0x18, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x22, 0x00, 0x55, 0x00, 0x25, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x89, 0x00, 0x00, 0x00, 0x92, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x66, 0x00, 0x7b, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7a, 0xab, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3c, 0x05, 0x45, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x99, 0x6d, 0xd6, 0x65, 0x9b, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x10, 0x14, 0xf3, 0x14, 0x16, 0x79, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x76, 0x20, 0x00, 0x55, 0x00, 0x24, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0x88, 0x00, 0x00, 0x00, 0x90, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x63, 0x00, + 0x78, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xa9, 0x6b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x25, 0x3f, 0x06, 0x48, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x98, 0x6c, 0xd7, 0x63, 0x9b, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x0b, 0x15, + 0xf4, 0x15, 0x12, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x1b, 0x00, 0x54, 0x00, 0x1d, + 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x84, 0x00, 0x00, 0x00, 0x8c, 0x2a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x5b, 0x00, 0x6e, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x82, 0xa1, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x43, 0x09, 0x4d, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x96, 0x68, 0xda, 0x61, 0x99, 0x35, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x18, 0xf4, 0x17, 0x06, 0x86, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x83, 0x0f, 0x00, 0x54, 0x00, 0x11, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x79, 0x00, 0x00, 0x00, 0x7e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x48, 0x00, + 0x55, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x8a, 0x8b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2f, 0x45, 0x0a, 0x4f, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x93, 0x67, 0xdb, 0x60, 0x98, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x19, + 0xf4, 0x19, 0x02, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x0c, 0x00, 0x53, 0x00, 0x0b, + 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x74, 0x00, 0x00, 0x00, 0x78, 0x42, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x41, 0x00, 0x4a, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x96, 0x7f, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x46, 0x0b, 0x50, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x67, 0xdb, 0x60, 0x98, 0x3b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x87, 0x0a, 0x00, 0x53, 0x00, 0x09, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, + 0x72, 0x00, 0x00, 0x00, 0x75, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3e, 0x00, + 0x46, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x7b, 0x95, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x71, 0x00, 0x00, 0x00, 0x74, 0x46, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3d, 0x00, 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x50, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x44, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, + 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x46, 0x0b, 0x51, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x92, 0x67, 0xdc, 0x5f, 0x98, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x1a, 0xf4, 0x19, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0x09, 0x00, 0x53, 0x00, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x70, 0x00, 0x00, 0x00, 0x74, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3c, 0x00, + 0x43, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x79, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x46, 0x0b, 0x50, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0x8f, 0x66, 0xd8, 0x5f, 0x94, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x19, + 0xef, 0x18, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x00, 0x52, 0x00, 0x08, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x6e, 0x00, 0x00, 0x00, 0x71, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x3b, 0x00, 0x42, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x95, 0x77, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x44, 0x0b, 0x4f, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8a, 0x65, 0xd2, 0x5d, 0x8e, 0x37, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x17, 0xe6, 0x16, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x08, 0x00, 0x4f, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, + 0x69, 0x00, 0x00, 0x00, 0x6c, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x38, 0x00, + 0x3f, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x75, 0x8d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x42, 0x0a, 0x4d, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3d, 0x84, 0x62, 0xcc, 0x5b, 0x89, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x15, + 0xde, 0x15, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x4c, 0x00, 0x06, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x65, 0x00, 0x00, 0x00, 0x68, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x36, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8a, 0x72, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x40, 0x09, 0x4a, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x7f, 0x5e, 0xc5, 0x57, 0x84, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x13, 0xd5, 0x13, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x76, 0x06, 0x00, 0x49, 0x00, 0x06, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, + 0x61, 0x00, 0x00, 0x00, 0x64, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x33, 0x00, + 0x39, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x6f, 0x82, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x3d, 0x08, 0x47, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x7a, 0x5a, 0xbd, 0x54, 0x7e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x12, + 0xcd, 0x12, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x05, 0x00, 0x45, 0x00, 0x05, + 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x5d, 0x00, 0x00, 0x00, 0x60, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x00, 0x37, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0x6b, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x39, 0x07, 0x43, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x73, 0x55, 0xb4, 0x4f, 0x77, 0x2d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x11, 0xc3, 0x10, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6b, 0x04, 0x00, 0x41, 0x00, 0x04, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, + 0x58, 0x00, 0x00, 0x00, 0x5a, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x2e, 0x00, + 0x33, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x65, 0x76, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x36, 0x06, 0x3f, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x6e, 0x51, 0xad, 0x4b, 0x72, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x0f, + 0xbb, 0x0f, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x04, 0x00, 0x3e, 0x00, 0x03, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x54, 0x00, 0x00, 0x00, 0x57, 0x33, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x2b, 0x00, 0x30, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x73, 0x61, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x33, 0x06, 0x3c, + 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x69, 0x4d, 0xa4, 0x47, 0x6d, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x0e, 0xb2, 0x0e, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x02, 0x00, 0x3b, 0x00, 0x02, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, + 0x4f, 0x00, 0x00, 0x00, 0x52, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x29, 0x00, + 0x2e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x5c, 0x6b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x04, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x63, 0x49, 0x9c, 0x43, 0x66, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0c, + 0xa8, 0x0c, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x37, 0x00, 0x01, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x4b, 0x00, 0x00, 0x00, 0x4d, 0x2d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x26, 0x00, 0x2b, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x67, 0x57, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x2d, 0x04, 0x35, + 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x5e, 0x45, 0x93, 0x3f, 0x61, 0x23, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x0b, 0xa0, 0x0b, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x56, 0x00, 0x00, 0x34, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, + 0x46, 0x00, 0x00, 0x00, 0x49, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x24, 0x00, + 0x28, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x52, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x2a, 0x03, 0x32, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x26, 0x58, 0x40, 0x8b, 0x3b, 0x5b, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x0a, + 0x97, 0x0a, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x42, 0x00, 0x00, 0x00, 0x44, 0x27, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x21, 0x00, 0x25, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5c, 0x4d, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x27, 0x01, 0x2e, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x52, 0x3c, 0x83, 0x37, 0x55, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x09, 0x8e, 0x08, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4c, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x3e, 0x00, 0x00, 0x00, 0x40, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x1e, 0x00, + 0x22, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x48, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x24, 0x01, 0x2a, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x4d, 0x38, 0x7b, 0x33, 0x50, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x07, + 0x85, 0x07, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x29, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x39, 0x00, 0x00, 0x00, 0x3c, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x1c, 0x00, 0x1f, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0x43, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x21, 0x00, 0x27, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x47, 0x33, 0x73, 0x2f, 0x4a, 0x19, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x05, 0x7c, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x41, 0x00, 0x00, 0x26, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x35, 0x00, 0x00, 0x00, 0x37, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x19, 0x00, + 0x1c, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x3e, 0x49, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x1e, 0x00, 0x24, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x42, 0x2f, 0x6a, 0x2b, 0x44, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x04, + 0x73, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x23, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x31, 0x00, 0x00, 0x00, 0x32, 0x1b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0x00, 0x1a, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x45, 0x39, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1b, 0x00, 0x20, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x2b, 0x62, 0x27, 0x3f, 0x13, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x03, 0x6a, 0x03, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x37, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x2c, 0x00, 0x00, 0x00, 0x2e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x14, 0x00, + 0x17, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x34, 0x3e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x18, 0x00, 0x1d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x37, 0x27, 0x5a, 0x23, 0x39, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x02, + 0x62, 0x01, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x00, 0x00, 0x00, 0x2a, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x11, 0x00, 0x14, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3a, 0x2f, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x15, 0x00, 0x19, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x32, 0x22, 0x51, 0x1f, 0x33, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x59, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2d, 0x00, 0x00, 0x18, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, + 0x23, 0x00, 0x00, 0x00, 0x25, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00, + 0x11, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x2a, 0x32, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x16, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x2c, 0x1e, 0x49, 0x1b, 0x2d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x15, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x0c, 0x00, 0x0e, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2e, 0x25, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x00, 0x12, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x26, 0x1a, 0x40, 0x17, 0x28, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x46, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x22, 0x00, 0x00, 0x11, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x09, 0x00, + 0x0b, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x27, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x21, 0x15, 0x39, 0x13, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x00, 0x00, 0x00, 0x17, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x07, 0x00, 0x09, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x22, 0x1b, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1b, 0x11, 0x30, 0x0f, 0x1c, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x35, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x17, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x00, 0x00, 0x13, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x04, 0x00, + 0x06, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x16, 0x1b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x15, 0x0d, 0x28, 0x0b, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x03, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x16, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x08, 0x20, 0x07, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x23, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x09, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x0c, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x05, 0x17, 0x03, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x07, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x11, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +unsigned int bootanimation_end_len = 41808; diff --git a/loader/main.c b/loader/main.c index 1a85058f9..b23f8411a 100644 --- a/loader/main.c +++ b/loader/main.c @@ -16,6 +16,8 @@ LOG_MODULE_REGISTER(app); #include #include +#include +#include #include #include #include @@ -29,8 +31,9 @@ struct sketch_header_v1 { uint8_t flags; // @ 0x0e } __attribute__((packed)); -#define SKETCH_FLAG_DEBUG 0x01 -#define SKETCH_FLAG_LINKED 0x02 +#define SKETCH_FLAG_DEBUG 0x01 +#define SKETCH_FLAG_LINKED 0x02 +#define SKETCH_FLAG_IMMEDIATE 0x04 #define TARGET_HAS_USB_CDC_SHELL \ DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_SHELL && \ @@ -108,21 +111,84 @@ static int loader(const struct shell *sh) { return rc; } -#if defined(CONFIG_BOARD_ARDUINO_UNO_Q) - void matrixBegin(void); - matrixBegin(); -#endif - + bool sketch_valid = true; struct sketch_header_v1 *sketch_hdr = (struct sketch_header_v1 *)(header + 7); if (sketch_hdr->ver != 0x1 || sketch_hdr->magic != 0x2341) { printk("Invalid sketch header\n"); - return -EINVAL; + sketch_valid = false; + // This is not a valid sketch, but try to start a shell anyway + } + +#if defined(CONFIG_BOARD_ARDUINO_UNO_Q) + void matrixBegin(void); + void matrixEnd(void); + void matrixPlay(uint8_t *buf, uint32_t len); + void matrixSetGrayscaleBits(uint8_t _max); + void matrixGrayscaleWrite(uint8_t *buf); +#include "bootanimation.h" + + uint8_t *_bootanimation = (uint8_t *)bootanimation; + size_t _bootanimation_len = bootanimation_len; + uint8_t *_bootanimation_end = (uint8_t *)bootanimation_end; + size_t _bootanimation_end_len = bootanimation_end_len; + + __attribute__((packed)) struct bootanimation_user_data { + size_t magic; // must be 0xBA for bootanimation + size_t len_loop; + size_t len_end; + size_t empty; + char buf_loop; + }; + + uintptr_t bootanimation_addr = DT_REG_ADDR(DT_GPARENT(DT_NODELABEL(bootanimation))) + + DT_REG_ADDR(DT_NODELABEL(bootanimation)); + + struct bootanimation_user_data *user_bootanimation = + (struct bootanimation_user_data *)bootanimation_addr; + if (user_bootanimation->magic == 0xBA) { + _bootanimation = &(user_bootanimation->buf_loop); + _bootanimation_len = user_bootanimation->len_loop; + _bootanimation_end_len = user_bootanimation->len_end; + _bootanimation_end = _bootanimation + user_bootanimation->len_loop; } + if ((!sketch_valid) || !(sketch_hdr->flags & SKETCH_FLAG_IMMEDIATE)) { + // Start the bootanimation while waiting for the MPU to boot + const struct gpio_dt_spec spec = + GPIO_DT_SPEC_GET_BY_IDX(DT_PATH(zephyr_user), control_gpios, 0); + + gpio_pin_configure_dt(&spec, GPIO_INPUT | GPIO_PULL_DOWN); + k_sleep(K_MSEC(200)); + if (gpio_pin_get_dt(&spec) == 0) { + matrixBegin(); + matrixSetGrayscaleBits(8); + while (gpio_pin_get_dt(&spec) == 0) { + matrixPlay(_bootanimation, _bootanimation_len); + } + matrixPlay(_bootanimation_end, _bootanimation_end_len); + uint8_t _framebuffer[104] = {0}; + matrixGrayscaleWrite(_framebuffer); + k_sleep(K_MSEC(10)); + matrixEnd(); + } + while (!sketch_valid) { + __asm__("bkpt"); + // poll the first bytes, if filled try to use them for booting + sketch_hdr = (struct sketch_header_v1 *)(ram_firmware + 7); + if (sketch_hdr->ver == 0x1 && sketch_hdr->magic == 0x2341) { + // Found valid data, use it for booting + base_addr = (uintptr_t)ram_firmware; + *ram_start = 0; + sketch_valid = true; + } + } + } +#endif + size_t sketch_buf_len = sketch_hdr->len; #if TARGET_HAS_USB_CDC_SHELL - int debug = sketch_hdr->flags & SKETCH_FLAG_DEBUG; + int debug = (!sketch_valid) || (sketch_hdr->flags & SKETCH_FLAG_DEBUG); if (debug && strcmp(k_thread_name_get(k_current_get()), "main") == 0) { // disables default shell on UART shell_uninit(shell_backend_uart_get_ptr(), NULL); diff --git a/loader/matrix.inc b/loader/matrix.inc index 0fb35cb39..da595a130 100644 --- a/loader/matrix.inc +++ b/loader/matrix.inc @@ -152,23 +152,19 @@ static void timer_irq_handler_fn(const struct device *counter_dev, void *user_da turnLed(i_isr, false); break; case 1: - turnLed(i_isr, counter % 31 == 0); + turnLed(i_isr, counter % 23 == 0); break; case 2: - turnLed(i_isr, counter % 23 == 0); + turnLed(i_isr, counter % 15 == 0); break; case 3: - turnLed(i_isr, counter % 15 == 0); + turnLed(i_isr, counter % 5 == 0); break; case 4: - turnLed(i_isr, counter % 9 == 0); + turnLed(i_isr, counter % 3 == 0); break; case 5: - turnLed(i_isr, counter % 5 == 0); - break; case 6: - turnLed(i_isr, counter % 3 == 0); - break; case 7: turnLed(i_isr, true); break; @@ -210,22 +206,19 @@ void matrixBegin() { if (err) { printk("Failed to set counter_set_top_value"); } +} - //uint32_t buf[4] = {0x38E22, 0x8A09375D, 0x824A288E, 0x38000000}; - /* - uint32_t buf[4] = { - 0b00000000000000011100011100010001, - 0b01000101000001001001101110101110, - 0b11000001001001010001010001000111, - 0b00011100000000000000000000000000}; - */ - uint32_t buf[4] = { - 0b01111111000000100000100000010000, - 0b01000000100000100000010001010000, - 0b00100001100000011111111000000000, - 0b00110000000000000000000000000000}; - for (int i = 0; i < 4 ; i++) { - buf[i] = reverse(buf[i]); +void matrixEnd() { + const struct device *const counter_dev = DEVICE_DT_GET(TIMER); + counter_stop(counter_dev); +} + + +void matrixPlay(uint8_t* buf, uint32_t len) { + int i = 0; + while (i < (len / 104)) { + matrixGrayscaleWrite(&buf[i*104]); + i++; + k_msleep(16); } - //matrixWrite(buf); -} \ No newline at end of file +} diff --git a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay index eb7854476..0477f7e35 100644 --- a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay +++ b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay @@ -161,7 +161,6 @@ <&gpiof 8 GPIO_ACTIVE_HIGH>, <&gpiof 9 GPIO_ACTIVE_HIGH>, <&gpiof 10 GPIO_ACTIVE_HIGH>, - <&gpiog 13 GPIO_ACTIVE_HIGH>, /* Internal SPI RDY */ <&gpioh 3 GPIO_ACTIVE_HIGH>; /* BOOT0 */ @@ -186,6 +185,8 @@ spis = <&spi3>; pwms = <>; + control-gpios = <&gpiog 13 GPIO_ACTIVE_HIGH>; /* Internal SPI RDY */ + io-channels = <&adc1 9>, <&adc1 10>, <&adc1 11>, From 3a63c0c9697b5596b179162a39b00169bbc43abd Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 7 Aug 2025 17:45:32 +0200 Subject: [PATCH 042/117] unoq: add led matrix library --- .../examples/Basic/Basic.ino | 115 + .../Reflash_Bootanimation.ino | 63 + .../Reflash_Bootanimation/bootanimation.h | 1387 +++++ .../examples/Video/Video.ino | 13 + .../examples/Video/bad_apple.h | 4682 +++++++++++++++++ .../Arduino_LED_Matrix/library.properties | 10 + .../src/Arduino_LED_Matrix.h | 254 + 7 files changed, 6524 insertions(+) create mode 100644 libraries/Arduino_LED_Matrix/examples/Basic/Basic.ino create mode 100644 libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/Reflash_Bootanimation.ino create mode 100644 libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/bootanimation.h create mode 100644 libraries/Arduino_LED_Matrix/examples/Video/Video.ino create mode 100644 libraries/Arduino_LED_Matrix/examples/Video/bad_apple.h create mode 100644 libraries/Arduino_LED_Matrix/library.properties create mode 100644 libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h diff --git a/libraries/Arduino_LED_Matrix/examples/Basic/Basic.ino b/libraries/Arduino_LED_Matrix/examples/Basic/Basic.ino new file mode 100644 index 000000000..3444c0f3c --- /dev/null +++ b/libraries/Arduino_LED_Matrix/examples/Basic/Basic.ino @@ -0,0 +1,115 @@ +#include "ArduinoGraphics.h" +#include "Arduino_LED_Matrix.h" + +Arduino_LED_Matrix matrix; + +void setup() { + // put your setup code here, to run once: + matrix.begin(); + matrix.textFont(Font_5x7); + matrix.textScrollSpeed(100); + matrix.clear(); + Serial.begin(115200); +} + +uint8_t shades[104] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, +}; + +const uint32_t animation[][5] = { + { 0x38022020, + 0x810408a0, + 0x2200e800, + 0x20000000, + 66 }, + { 0x1c011010, + 0x40820450, + 0x11007400, + 0x10000000, + 66 }, + { 0x0e008808, + 0x20410228, + 0x08803a00, + 0x08000000, + 66 }, + { 0x07004404, + 0x10208114, + 0x04401d00, + 0x04000000, + 66 }, + { 0x03802202, + 0x0810408a, + 0x02200e80, + 0x02000000, + 66 }, + { 0x01c01101, + 0x04082045, + 0x01100740, + 0x01000000, + 66 }, + { 0x00e00880, + 0x82041022, + 0x808803a0, + 0x00000000, + 66 }, + { 0x00700440, + 0x40020011, + 0x004401c0, + 0x00000000, + 66 }, + { 0x00380200, + 0x20010008, + 0x802000e0, + 0x00000000, + 66 }, + { 0x00180100, + 0x10008004, + 0x00100060, + 0x00000000, + 66 }, + { 0x00080080, + 0x08004002, + 0x00080020, + 0x00000000, + 66 }, + { 0x00000040, + 0x04002001, + 0x00040000, + 0x00000000, + 66 }, + { 0x00000000, + 0x02001000, + 0x80000000, + 0x00000000, + 66 }, + { 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 66 } +}; + +void loop() { + // Roll a string using ArduinoGraphics + matrix.beginText(0, 0, 127, 0, 0); // X, Y, then R, G, B + matrix.print(" arduino.cc/uno-q "); + matrix.endText(SCROLL_LEFT); + delay(1000); + // Draw shades + matrix.setGrayscaleBits(3); + matrix.draw(shades); + delay(1000); + matrix.clear(); + // Play an animation + matrix.loadSequence(animation); + for (int i = 0; i < 10; i++) { + matrix.playSequence(); + } +} \ No newline at end of file diff --git a/libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/Reflash_Bootanimation.ino b/libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/Reflash_Bootanimation.ino new file mode 100644 index 000000000..a1f89fb70 --- /dev/null +++ b/libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/Reflash_Bootanimation.ino @@ -0,0 +1,63 @@ +#include "bootanimation.h" +#include "ArduinoGraphics.h" +#include "Arduino_LED_Matrix.h" +#include + +Arduino_LED_Matrix matrix; + +bool ok = false; + +void setup() { + + Serial.begin(115200); + matrix.begin(); + matrix.textFont(Font_5x7); + matrix.setGrayscaleBits(8); + + // Before flashing, show the animation + for (int i = 0; i < 2; i++) { + matrix.playVideo(bootanimation.buf_loop, bootanimation.len_loop); + } + matrix.playVideo((uint8_t*)(bootanimation.buf_loop + bootanimation.len_loop), bootanimation.len_end); + + const struct flash_area *fa; + int rc; + rc = flash_area_open(FIXED_PARTITION_ID(bootanimation), &fa); + if (rc) { + return; + } + + // flash the bootanimation header + rc = flash_area_erase(fa, 0, fa->fa_size); + if (rc) { + return; + } + int header_len = sizeof(bootanimation) - sizeof(char*); + rc = flash_area_write(fa, 0, &bootanimation, header_len); + if (rc) { + return; + } + rc = flash_area_write(fa, header_len, bootanimation.buf_loop, bootanimation.len_loop + bootanimation.len_end); + if (rc) { + return; + } + uint32_t flash_area[256]; + flash_area_read(fa, 0, flash_area, 256); + Serial.println(flash_area[0], HEX); + Serial.println(flash_area[1], HEX); + Serial.println(flash_area[2], HEX); + Serial.println(flash_area[3], HEX); + Serial.println(flash_area[4], HEX); + Serial.println(flash_area[5], HEX); + ok = true; +} + +void loop() { + matrix.beginText(0, 0, 127, 0, 0); // X, Y, then R, G, B + if (ok) { + matrix.print("OK :)"); + } else { + matrix.print("KO :("); + } + matrix.endText(); +} \ No newline at end of file diff --git a/libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/bootanimation.h b/libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/bootanimation.h new file mode 100644 index 000000000..07ba16cf5 --- /dev/null +++ b/libraries/Arduino_LED_Matrix/examples/Reflash_Bootanimation/bootanimation.h @@ -0,0 +1,1387 @@ +#include "stdint.h" + +__attribute__((packed)) struct bootanimation_user_data { + size_t magic; // must be 0xBA for bootanimation + size_t len_loop; + size_t len_end; + size_t empty; + uint8_t *buf_loop; +}; + +unsigned int bootanimation_end_len = 3120; +unsigned int bootanimation_len = 18720; + +const uint8_t bootanimation_buf[] = { + 0x06, 0x06, 0x09, 0x09, 0x07, 0x01, 0x01, 0x08, 0x14, 0x42, 0x5b, 0x2a, 0x05, 0x05, 0x05, 0x01, + 0x06, 0x00, 0x00, 0x06, 0x1b, 0x6f, 0x7b, 0x49, 0x50, 0x10, 0x05, 0x04, 0x01, 0x03, 0x01, 0x05, + 0x1c, 0x81, 0x73, 0x18, 0x05, 0x1b, 0x18, 0x20, 0x1c, 0x08, 0x00, 0x07, 0x1c, 0x86, 0x7e, 0x15, + 0x04, 0x00, 0x09, 0x0d, 0xaf, 0x92, 0x12, 0x04, 0x1b, 0x87, 0x91, 0x1a, 0x01, 0x00, 0x00, 0x05, + 0x05, 0xfd, 0xd6, 0x28, 0x2a, 0x8f, 0xa1, 0x27, 0x0a, 0x03, 0x02, 0x01, 0x01, 0x05, 0x97, 0xd8, + 0x8b, 0xb3, 0x9e, 0x2f, 0x0d, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x22, 0x79, 0xb1, 0x7a, 0x26, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x08, 0x09, 0x07, 0x01, 0x02, 0x08, + 0x13, 0x41, 0x58, 0x28, 0x04, 0x05, 0x05, 0x02, 0x07, 0x00, 0x00, 0x06, 0x1b, 0x6e, 0x78, 0x46, + 0x4c, 0x0e, 0x08, 0x07, 0x02, 0x03, 0x01, 0x05, 0x1b, 0x80, 0x72, 0x17, 0x05, 0x18, 0x15, 0x35, + 0x2b, 0x08, 0x00, 0x07, 0x1c, 0x86, 0x7d, 0x14, 0x04, 0x01, 0x08, 0x0b, 0xd1, 0xa4, 0x12, 0x04, + 0x1a, 0x87, 0x90, 0x1a, 0x01, 0x00, 0x00, 0x05, 0x05, 0xfb, 0xcb, 0x24, 0x2a, 0x8f, 0xa1, 0x26, + 0x0a, 0x04, 0x02, 0x00, 0x01, 0x05, 0x83, 0xd2, 0x89, 0xb2, 0x9e, 0x2f, 0x0d, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x1d, 0x78, 0xb1, 0x7a, 0x26, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x05, 0x07, 0x09, 0x07, 0x01, 0x02, 0x08, 0x13, 0x3f, 0x56, 0x27, 0x04, 0x05, 0x05, 0x01, + 0x07, 0x00, 0x00, 0x06, 0x1a, 0x6c, 0x76, 0x44, 0x46, 0x0c, 0x0c, 0x0b, 0x02, 0x03, 0x01, 0x04, + 0x1b, 0x7e, 0x70, 0x16, 0x04, 0x16, 0x12, 0x51, 0x3c, 0x07, 0x00, 0x08, 0x1b, 0x85, 0x7b, 0x14, + 0x04, 0x02, 0x05, 0x08, 0xed, 0xb1, 0x12, 0x04, 0x1a, 0x85, 0x8f, 0x19, 0x01, 0x00, 0x00, 0x05, + 0x05, 0xf2, 0xc0, 0x22, 0x2a, 0x8d, 0x9f, 0x25, 0x0a, 0x04, 0x02, 0x00, 0x03, 0x07, 0x73, 0xcd, + 0x88, 0xb1, 0x9d, 0x2e, 0x0d, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x1b, 0x76, 0xb0, 0x79, 0x26, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x06, 0x09, 0x07, 0x01, 0x02, 0x08, + 0x12, 0x3d, 0x52, 0x25, 0x04, 0x05, 0x05, 0x01, 0x05, 0x00, 0x00, 0x05, 0x19, 0x6b, 0x74, 0x43, + 0x42, 0x0a, 0x11, 0x0e, 0x02, 0x00, 0x01, 0x05, 0x1b, 0x7e, 0x6f, 0x15, 0x04, 0x11, 0x0f, 0x73, + 0x50, 0x09, 0x00, 0x08, 0x1b, 0x83, 0x7a, 0x13, 0x04, 0x00, 0x05, 0x05, 0xff, 0xb9, 0x11, 0x04, + 0x1a, 0x84, 0x8e, 0x19, 0x01, 0x00, 0x00, 0x05, 0x05, 0xe2, 0xb2, 0x1f, 0x2a, 0x8d, 0x9e, 0x25, + 0x0a, 0x04, 0x02, 0x01, 0x03, 0x07, 0x65, 0xca, 0x87, 0xb1, 0x9c, 0x2e, 0x0d, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x19, 0x76, 0xaf, 0x78, 0x25, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x05, 0x06, 0x09, 0x07, 0x01, 0x02, 0x07, 0x12, 0x3c, 0x50, 0x22, 0x04, 0x05, 0x05, 0x02, + 0x05, 0x00, 0x00, 0x05, 0x18, 0x69, 0x71, 0x40, 0x3d, 0x08, 0x17, 0x12, 0x03, 0x00, 0x01, 0x04, + 0x1a, 0x7b, 0x6d, 0x15, 0x04, 0x0f, 0x0a, 0x98, 0x66, 0x09, 0x00, 0x08, 0x1a, 0x82, 0x79, 0x12, + 0x03, 0x00, 0x03, 0x05, 0xff, 0xbb, 0x10, 0x04, 0x1a, 0x83, 0x8c, 0x18, 0x00, 0x00, 0x00, 0x03, + 0x05, 0xd2, 0xa5, 0x1c, 0x2a, 0x8c, 0x9c, 0x25, 0x0a, 0x04, 0x02, 0x01, 0x03, 0x06, 0x5d, 0xc9, + 0x85, 0xb0, 0x9b, 0x2d, 0x0c, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x18, 0x74, 0xae, 0x77, 0x24, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x03, 0x08, 0x07, 0x01, 0x02, 0x07, + 0x12, 0x3b, 0x4d, 0x20, 0x03, 0x06, 0x06, 0x01, 0x03, 0x00, 0x00, 0x06, 0x18, 0x68, 0x6f, 0x3e, + 0x37, 0x06, 0x27, 0x1b, 0x05, 0x00, 0x00, 0x04, 0x1a, 0x7a, 0x6c, 0x14, 0x05, 0x0d, 0x08, 0xbd, + 0x7d, 0x09, 0x00, 0x08, 0x1a, 0x80, 0x77, 0x12, 0x03, 0x01, 0x02, 0x05, 0xff, 0xb8, 0x10, 0x04, + 0x1a, 0x82, 0x8a, 0x18, 0x00, 0x00, 0x00, 0x02, 0x05, 0xc0, 0x9b, 0x1b, 0x2a, 0x8b, 0x9c, 0x24, + 0x0a, 0x04, 0x02, 0x01, 0x04, 0x06, 0x58, 0xc8, 0x85, 0xaf, 0x9a, 0x2d, 0x0c, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x17, 0x74, 0xae, 0x77, 0x24, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x05, 0x03, 0x08, 0x07, 0x01, 0x02, 0x07, 0x11, 0x39, 0x4b, 0x1d, 0x03, 0x0b, 0x08, 0x03, + 0x03, 0x00, 0x00, 0x06, 0x17, 0x65, 0x6c, 0x3b, 0x31, 0x04, 0x3f, 0x2a, 0x07, 0x00, 0x00, 0x04, + 0x1a, 0x78, 0x6a, 0x14, 0x05, 0x0a, 0x06, 0xde, 0x92, 0x09, 0x00, 0x08, 0x1a, 0x7f, 0x76, 0x12, + 0x03, 0x01, 0x02, 0x05, 0xff, 0xb0, 0x0f, 0x04, 0x19, 0x81, 0x89, 0x17, 0x00, 0x00, 0x00, 0x02, + 0x05, 0xb0, 0x92, 0x18, 0x29, 0x8a, 0x9a, 0x24, 0x0a, 0x04, 0x02, 0x01, 0x05, 0x06, 0x57, 0xc8, + 0x83, 0xae, 0x99, 0x2d, 0x0c, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x17, 0x73, 0xad, 0x76, 0x24, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x03, 0x07, 0x07, 0x01, 0x01, 0x07, + 0x10, 0x37, 0x48, 0x1b, 0x02, 0x0e, 0x0c, 0x03, 0x03, 0x00, 0x00, 0x05, 0x17, 0x64, 0x6a, 0x38, + 0x2a, 0x03, 0x5c, 0x3c, 0x07, 0x00, 0x00, 0x04, 0x1a, 0x76, 0x68, 0x13, 0x04, 0x08, 0x05, 0xf5, + 0xa5, 0x0a, 0x00, 0x08, 0x19, 0x7e, 0x74, 0x12, 0x02, 0x00, 0x02, 0x05, 0xf4, 0xa7, 0x0f, 0x04, + 0x19, 0x80, 0x88, 0x17, 0x00, 0x00, 0x00, 0x02, 0x05, 0xa3, 0x8c, 0x17, 0x29, 0x8a, 0x99, 0x24, + 0x0a, 0x03, 0x02, 0x01, 0x05, 0x06, 0x55, 0xc7, 0x83, 0xad, 0x98, 0x2c, 0x0c, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x17, 0x73, 0xac, 0x75, 0x23, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x05, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x10, 0x36, 0x44, 0x18, 0x01, 0x12, 0x0e, 0x04, + 0x01, 0x00, 0x00, 0x05, 0x17, 0x61, 0x67, 0x35, 0x25, 0x01, 0x7d, 0x52, 0x07, 0x00, 0x00, 0x04, + 0x18, 0x75, 0x66, 0x12, 0x03, 0x05, 0x04, 0xff, 0xb3, 0x0c, 0x00, 0x08, 0x18, 0x7d, 0x72, 0x11, + 0x02, 0x00, 0x00, 0x05, 0xe6, 0x9a, 0x0c, 0x04, 0x18, 0x7f, 0x86, 0x16, 0x00, 0x00, 0x00, 0x02, + 0x05, 0x9b, 0x87, 0x15, 0x28, 0x88, 0x98, 0x23, 0x0a, 0x03, 0x02, 0x01, 0x05, 0x06, 0x54, 0xc6, + 0x81, 0xac, 0x97, 0x2b, 0x0c, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x17, 0x72, 0xab, 0x74, 0x22, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x02, 0x06, 0x07, 0x01, 0x02, 0x07, + 0x10, 0x35, 0x41, 0x16, 0x01, 0x1f, 0x18, 0x02, 0x01, 0x00, 0x00, 0x05, 0x16, 0x60, 0x65, 0x33, + 0x20, 0x01, 0xa2, 0x6b, 0x0a, 0x00, 0x00, 0x04, 0x18, 0x74, 0x65, 0x12, 0x04, 0x05, 0x04, 0xff, + 0xbb, 0x0e, 0x00, 0x08, 0x18, 0x7b, 0x72, 0x10, 0x02, 0x00, 0x00, 0x05, 0xd5, 0x8d, 0x0c, 0x04, + 0x18, 0x7e, 0x86, 0x16, 0x00, 0x00, 0x00, 0x02, 0x05, 0x96, 0x84, 0x15, 0x28, 0x88, 0x97, 0x23, + 0x0a, 0x04, 0x02, 0x01, 0x05, 0x06, 0x54, 0xc6, 0x81, 0xab, 0x96, 0x2b, 0x0c, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x17, 0x72, 0xab, 0x73, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x03, 0x03, 0x06, 0x01, 0x03, 0x07, 0x0e, 0x33, 0x3d, 0x13, 0x02, 0x2e, 0x21, 0x06, + 0x00, 0x00, 0x00, 0x04, 0x16, 0x5d, 0x62, 0x30, 0x1a, 0x00, 0xc4, 0x85, 0x0a, 0x00, 0x00, 0x04, + 0x18, 0x72, 0x63, 0x10, 0x03, 0x04, 0x04, 0xff, 0xbd, 0x0e, 0x00, 0x08, 0x17, 0x7a, 0x70, 0x0f, + 0x02, 0x00, 0x00, 0x05, 0xc6, 0x82, 0x0b, 0x04, 0x18, 0x7d, 0x84, 0x15, 0x00, 0x00, 0x00, 0x02, + 0x05, 0x95, 0x83, 0x14, 0x27, 0x86, 0x96, 0x23, 0x0a, 0x04, 0x02, 0x01, 0x05, 0x06, 0x53, 0xc6, + 0x80, 0xaa, 0x95, 0x2b, 0x0b, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x17, 0x71, 0xaa, 0x73, 0x22, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x08, 0x03, 0x03, 0x04, 0x01, 0x03, 0x06, + 0x0e, 0x31, 0x39, 0x10, 0x00, 0x42, 0x31, 0x08, 0x00, 0x00, 0x00, 0x04, 0x15, 0x5d, 0x5f, 0x2d, + 0x15, 0x01, 0xde, 0xa1, 0x0c, 0x00, 0x00, 0x04, 0x17, 0x71, 0x61, 0x10, 0x02, 0x04, 0x04, 0xfb, + 0xbb, 0x10, 0x00, 0x08, 0x17, 0x79, 0x6e, 0x0f, 0x02, 0x00, 0x00, 0x05, 0xb9, 0x77, 0x0a, 0x04, + 0x18, 0x7b, 0x83, 0x15, 0x00, 0x00, 0x00, 0x02, 0x05, 0x93, 0x82, 0x13, 0x28, 0x85, 0x95, 0x22, + 0x0a, 0x04, 0x02, 0x01, 0x05, 0x06, 0x52, 0xc5, 0x80, 0xaa, 0x94, 0x2a, 0x0c, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x16, 0x70, 0xa9, 0x72, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x0b, 0x03, 0x03, 0x06, 0x01, 0x02, 0x06, 0x0d, 0x2e, 0x35, 0x0d, 0x01, 0x5b, 0x45, 0x0b, + 0x00, 0x00, 0x00, 0x04, 0x14, 0x5b, 0x5d, 0x2a, 0x11, 0x04, 0xf1, 0xb9, 0x10, 0x00, 0x00, 0x03, + 0x17, 0x6e, 0x5f, 0x0f, 0x01, 0x03, 0x04, 0xed, 0xb4, 0x11, 0x00, 0x08, 0x17, 0x77, 0x6d, 0x0e, + 0x02, 0x00, 0x00, 0x02, 0xb1, 0x6f, 0x07, 0x04, 0x16, 0x7a, 0x81, 0x14, 0x00, 0x00, 0x00, 0x04, + 0x09, 0x94, 0x81, 0x12, 0x27, 0x84, 0x93, 0x21, 0x09, 0x04, 0x03, 0x02, 0x05, 0x09, 0x52, 0xc4, + 0x7f, 0xa8, 0x93, 0x2a, 0x0c, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x16, 0x6f, 0xa8, 0x71, 0x21, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x05, 0x02, 0x04, 0x01, 0x02, 0x06, + 0x0d, 0x2d, 0x31, 0x0b, 0x00, 0x79, 0x61, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x14, 0x59, 0x5b, 0x26, + 0x0d, 0x05, 0xf8, 0xce, 0x16, 0x00, 0x00, 0x03, 0x17, 0x6d, 0x5d, 0x0f, 0x01, 0x03, 0x04, 0xdc, + 0xaa, 0x11, 0x00, 0x08, 0x16, 0x76, 0x6c, 0x0e, 0x02, 0x00, 0x00, 0x02, 0xaa, 0x68, 0x07, 0x04, + 0x16, 0x79, 0x80, 0x14, 0x00, 0x00, 0x00, 0x04, 0x09, 0x92, 0x81, 0x12, 0x26, 0x83, 0x92, 0x21, + 0x09, 0x04, 0x03, 0x01, 0x05, 0x09, 0x52, 0xc3, 0x7f, 0xa8, 0x93, 0x29, 0x0b, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x16, 0x6f, 0xa7, 0x71, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x1b, 0x07, 0x02, 0x04, 0x01, 0x02, 0x05, 0x0c, 0x2b, 0x2e, 0x09, 0x00, 0x95, 0x80, 0x11, + 0x00, 0x00, 0x00, 0x04, 0x14, 0x56, 0x56, 0x24, 0x0a, 0x03, 0xf6, 0xda, 0x1b, 0x00, 0x00, 0x04, + 0x17, 0x6c, 0x5c, 0x0f, 0x02, 0x03, 0x06, 0xcc, 0xa0, 0x11, 0x00, 0x08, 0x16, 0x75, 0x6b, 0x0e, + 0x01, 0x00, 0x00, 0x04, 0xa9, 0x63, 0x07, 0x03, 0x16, 0x78, 0x7f, 0x13, 0x00, 0x00, 0x00, 0x04, + 0x08, 0x92, 0x80, 0x12, 0x26, 0x82, 0x91, 0x21, 0x09, 0x04, 0x03, 0x01, 0x05, 0x09, 0x51, 0xc2, + 0x7e, 0xa7, 0x91, 0x29, 0x0b, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x16, 0x6e, 0xa7, 0x70, 0x21, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x28, 0x09, 0x02, 0x03, 0x01, 0x02, 0x05, + 0x0c, 0x29, 0x29, 0x08, 0x00, 0xad, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x05, 0x13, 0x55, 0x55, 0x20, + 0x08, 0x02, 0xee, 0xe3, 0x21, 0x00, 0x00, 0x04, 0x16, 0x6a, 0x5a, 0x0d, 0x02, 0x03, 0x06, 0xbe, + 0x94, 0x11, 0x00, 0x07, 0x16, 0x73, 0x68, 0x0d, 0x02, 0x00, 0x00, 0x04, 0xa8, 0x61, 0x07, 0x03, + 0x16, 0x77, 0x7d, 0x13, 0x00, 0x00, 0x00, 0x03, 0x08, 0x91, 0x81, 0x12, 0x26, 0x82, 0x90, 0x20, + 0x09, 0x04, 0x03, 0x01, 0x04, 0x09, 0x51, 0xc1, 0x7d, 0xa6, 0x91, 0x29, 0x0b, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x16, 0x6d, 0xa6, 0x6f, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x38, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x05, 0x0b, 0x27, 0x25, 0x09, 0x03, 0xbc, 0xc0, 0x20, + 0x00, 0x00, 0x00, 0x04, 0x12, 0x52, 0x51, 0x1c, 0x04, 0x01, 0xe0, 0xe7, 0x26, 0x00, 0x00, 0x03, + 0x16, 0x68, 0x58, 0x0c, 0x02, 0x00, 0x05, 0xb4, 0x88, 0x11, 0x00, 0x07, 0x17, 0x71, 0x67, 0x0e, + 0x01, 0x00, 0x03, 0x07, 0xa6, 0x5f, 0x05, 0x03, 0x15, 0x76, 0x7c, 0x12, 0x00, 0x00, 0x00, 0x05, + 0x08, 0x8f, 0x7f, 0x11, 0x25, 0x80, 0x8f, 0x20, 0x08, 0x02, 0x03, 0x02, 0x04, 0x09, 0x50, 0xc1, + 0x7c, 0xa5, 0x90, 0x28, 0x0b, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x15, 0x6c, 0xa5, 0x6e, 0x20, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x4e, 0x14, 0x02, 0x02, 0x02, 0x02, 0x05, + 0x0b, 0x26, 0x20, 0x07, 0x02, 0xc4, 0xdd, 0x2c, 0x00, 0x00, 0x00, 0x05, 0x12, 0x51, 0x4e, 0x19, + 0x05, 0x01, 0xd2, 0xe6, 0x2d, 0x00, 0x00, 0x03, 0x15, 0x66, 0x56, 0x0c, 0x02, 0x00, 0x06, 0xae, + 0x7e, 0x10, 0x00, 0x07, 0x16, 0x71, 0x66, 0x0e, 0x01, 0x00, 0x02, 0x06, 0xa6, 0x5f, 0x03, 0x04, + 0x15, 0x75, 0x7b, 0x12, 0x00, 0x00, 0x00, 0x05, 0x08, 0x91, 0x7f, 0x11, 0x24, 0x80, 0x8e, 0x1f, + 0x08, 0x02, 0x03, 0x01, 0x04, 0x09, 0x50, 0xc0, 0x7c, 0xa4, 0x8f, 0x28, 0x0b, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x15, 0x6c, 0xa5, 0x6e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x53, 0x69, 0x1a, 0x02, 0x02, 0x02, 0x02, 0x05, 0x0b, 0x23, 0x1c, 0x07, 0x03, 0xc4, 0xf4, 0x38, + 0x00, 0x00, 0x00, 0x05, 0x11, 0x4f, 0x4a, 0x15, 0x03, 0x00, 0xc0, 0xe1, 0x31, 0x00, 0x00, 0x03, + 0x15, 0x65, 0x54, 0x0c, 0x02, 0x01, 0x06, 0xaa, 0x76, 0x0e, 0x00, 0x07, 0x16, 0x6f, 0x64, 0x0d, + 0x01, 0x00, 0x03, 0x06, 0xa5, 0x5e, 0x02, 0x04, 0x14, 0x73, 0x79, 0x12, 0x00, 0x00, 0x00, 0x05, + 0x08, 0x90, 0x7e, 0x10, 0x24, 0x7f, 0x8d, 0x1f, 0x08, 0x02, 0x03, 0x01, 0x04, 0x09, 0x4f, 0xbf, + 0x7b, 0xa3, 0x8e, 0x27, 0x0b, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x15, 0x6c, 0xa4, 0x6d, 0x1f, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x85, 0x23, 0x02, 0x02, 0x02, 0x02, 0x05, + 0x0a, 0x21, 0x19, 0x04, 0x04, 0xbe, 0xff, 0x47, 0x00, 0x00, 0x00, 0x05, 0x10, 0x4c, 0x47, 0x13, + 0x06, 0x00, 0xb1, 0xda, 0x33, 0x00, 0x00, 0x03, 0x14, 0x63, 0x52, 0x0b, 0x02, 0x01, 0x05, 0xa9, + 0x70, 0x0c, 0x00, 0x07, 0x15, 0x6d, 0x63, 0x0d, 0x01, 0x00, 0x00, 0x06, 0xa5, 0x5d, 0x02, 0x04, + 0x14, 0x72, 0x78, 0x11, 0x00, 0x00, 0x00, 0x07, 0x08, 0x8f, 0x7e, 0x10, 0x23, 0x7e, 0x8d, 0x1f, + 0x08, 0x02, 0x04, 0x01, 0x04, 0x09, 0x4f, 0xbf, 0x7b, 0xa2, 0x8d, 0x27, 0x0b, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x15, 0x6b, 0xa3, 0x6c, 0x1f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x65, 0xa3, 0x31, 0x02, 0x02, 0x02, 0x01, 0x05, 0x0a, 0x1e, 0x14, 0x07, 0x01, 0xb0, 0xff, 0x59, + 0x00, 0x00, 0x00, 0x04, 0x0f, 0x4a, 0x43, 0x11, 0x02, 0x02, 0xa5, 0xd2, 0x36, 0x00, 0x00, 0x02, + 0x13, 0x60, 0x50, 0x0a, 0x01, 0x00, 0x06, 0xa7, 0x6b, 0x0b, 0x00, 0x06, 0x14, 0x6c, 0x61, 0x0c, + 0x00, 0x00, 0x03, 0x06, 0xa5, 0x5c, 0x01, 0x04, 0x14, 0x71, 0x76, 0x10, 0x00, 0x00, 0x00, 0x08, + 0x08, 0x8e, 0x7d, 0x10, 0x24, 0x7c, 0x8a, 0x1e, 0x08, 0x02, 0x04, 0x01, 0x04, 0x09, 0x4e, 0xbe, + 0x79, 0xa1, 0x8b, 0x26, 0x0b, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x14, 0x6a, 0xa2, 0x6b, 0x1e, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xbc, 0x42, 0x04, 0x02, 0x02, 0x02, 0x05, + 0x09, 0x1a, 0x10, 0x05, 0x03, 0x9f, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x47, 0x3e, 0x0e, + 0x02, 0x03, 0x9c, 0xca, 0x3a, 0x03, 0x00, 0x02, 0x12, 0x5f, 0x4d, 0x0a, 0x01, 0x00, 0x04, 0xa7, + 0x68, 0x0b, 0x00, 0x06, 0x14, 0x6b, 0x60, 0x0c, 0x01, 0x00, 0x02, 0x06, 0xa5, 0x5b, 0x01, 0x01, + 0x15, 0x71, 0x76, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x8e, 0x7d, 0x10, 0x23, 0x7c, 0x89, 0x1e, + 0x08, 0x02, 0x04, 0x01, 0x04, 0x09, 0x4e, 0xbc, 0x79, 0xa1, 0x8b, 0x26, 0x0b, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x14, 0x6a, 0xa1, 0x6b, 0x1e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x62, 0xd1, 0x57, 0x05, 0x02, 0x01, 0x02, 0x05, 0x08, 0x17, 0x0e, 0x05, 0x03, 0x8f, 0xff, 0x7c, + 0x03, 0x00, 0x00, 0x04, 0x0e, 0x44, 0x39, 0x0a, 0x02, 0x05, 0x97, 0xc1, 0x3b, 0x04, 0x00, 0x02, + 0x11, 0x5e, 0x4b, 0x09, 0x00, 0x00, 0x06, 0xa6, 0x66, 0x0a, 0x00, 0x04, 0x13, 0x69, 0x5e, 0x0b, + 0x01, 0x00, 0x02, 0x06, 0xa3, 0x5b, 0x01, 0x00, 0x16, 0x6f, 0x74, 0x10, 0x00, 0x00, 0x00, 0x08, + 0x08, 0x8d, 0x7b, 0x0f, 0x22, 0x7a, 0x88, 0x1d, 0x07, 0x03, 0x04, 0x01, 0x04, 0x09, 0x4d, 0xbc, + 0x78, 0x9f, 0x8a, 0x25, 0x0a, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x14, 0x69, 0xa0, 0x6a, 0x1e, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xdf, 0x70, 0x05, 0x02, 0x01, 0x03, 0x05, + 0x08, 0x15, 0x0d, 0x06, 0x03, 0x7e, 0xff, 0x8e, 0x03, 0x00, 0x00, 0x04, 0x0e, 0x41, 0x34, 0x07, + 0x03, 0x05, 0x94, 0xb9, 0x3d, 0x03, 0x00, 0x02, 0x10, 0x5a, 0x48, 0x08, 0x00, 0x00, 0x05, 0xa7, + 0x64, 0x0a, 0x00, 0x04, 0x14, 0x68, 0x5b, 0x0b, 0x01, 0x00, 0x02, 0x06, 0xa2, 0x5b, 0x01, 0x00, + 0x15, 0x6e, 0x73, 0x0f, 0x00, 0x00, 0x01, 0x08, 0x08, 0x8d, 0x7b, 0x10, 0x22, 0x7a, 0x87, 0x1c, + 0x07, 0x02, 0x04, 0x01, 0x04, 0x09, 0x4d, 0xbb, 0x77, 0x9e, 0x89, 0x25, 0x0a, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x14, 0x68, 0x9f, 0x69, 0x1d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4f, 0xe9, 0x8a, 0x0a, 0x02, 0x00, 0x03, 0x05, 0x07, 0x11, 0x0b, 0x02, 0x04, 0x6f, 0xff, 0xa0, + 0x08, 0x00, 0x00, 0x05, 0x0d, 0x3e, 0x2e, 0x03, 0x00, 0x01, 0x92, 0xb1, 0x3d, 0x06, 0x00, 0x02, + 0x10, 0x58, 0x45, 0x07, 0x00, 0x00, 0x06, 0xa5, 0x62, 0x08, 0x00, 0x04, 0x12, 0x65, 0x59, 0x0a, + 0x00, 0x00, 0x05, 0x08, 0xa1, 0x5a, 0x01, 0x00, 0x14, 0x6c, 0x71, 0x0d, 0x00, 0x00, 0x02, 0x08, + 0x08, 0x8c, 0x7a, 0x0f, 0x21, 0x78, 0x85, 0x1c, 0x06, 0x02, 0x04, 0x02, 0x05, 0x09, 0x4c, 0xba, + 0x76, 0x9d, 0x88, 0x24, 0x0a, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x13, 0x68, 0x9e, 0x68, 0x1d, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xec, 0xa5, 0x10, 0x02, 0x00, 0x03, 0x05, + 0x06, 0x0e, 0x09, 0x02, 0x09, 0x64, 0xff, 0xb0, 0x0f, 0x00, 0x00, 0x04, 0x0c, 0x3a, 0x29, 0x02, + 0x00, 0x05, 0x91, 0xa9, 0x3e, 0x08, 0x00, 0x03, 0x0e, 0x56, 0x42, 0x06, 0x00, 0x01, 0x06, 0xa5, + 0x60, 0x06, 0x00, 0x03, 0x11, 0x63, 0x58, 0x08, 0x00, 0x00, 0x05, 0x08, 0xa1, 0x59, 0x01, 0x00, + 0x13, 0x6b, 0x6e, 0x0d, 0x00, 0x00, 0x01, 0x08, 0x08, 0x8b, 0x7a, 0x0f, 0x21, 0x77, 0x83, 0x1a, + 0x06, 0x03, 0x04, 0x01, 0x05, 0x09, 0x4b, 0xb9, 0x75, 0x9c, 0x87, 0x24, 0x0a, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x13, 0x67, 0x9d, 0x67, 0x1c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x37, 0xe8, 0xc2, 0x1a, 0x02, 0x00, 0x03, 0x05, 0x06, 0x0b, 0x08, 0x02, 0x09, 0x5d, 0xff, 0xc1, + 0x17, 0x00, 0x00, 0x04, 0x0b, 0x36, 0x22, 0x02, 0x00, 0x05, 0x90, 0xa4, 0x40, 0x0b, 0x00, 0x03, + 0x0d, 0x54, 0x3e, 0x06, 0x00, 0x00, 0x06, 0xa4, 0x5f, 0x06, 0x00, 0x03, 0x11, 0x61, 0x56, 0x07, + 0x00, 0x00, 0x05, 0x08, 0xa0, 0x58, 0x01, 0x00, 0x14, 0x68, 0x6d, 0x0d, 0x00, 0x00, 0x01, 0x08, + 0x08, 0x8b, 0x78, 0x0e, 0x20, 0x76, 0x82, 0x1a, 0x06, 0x04, 0x04, 0x01, 0x05, 0x09, 0x4b, 0xb8, + 0x74, 0x9b, 0x85, 0x23, 0x0a, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x13, 0x66, 0x9c, 0x66, 0x1c, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xdc, 0xdb, 0x26, 0x02, 0x00, 0x03, 0x05, + 0x05, 0x09, 0x08, 0x02, 0x09, 0x57, 0xf7, 0xce, 0x22, 0x00, 0x00, 0x04, 0x0b, 0x31, 0x1c, 0x01, + 0x00, 0x05, 0x8f, 0x9f, 0x40, 0x0f, 0x00, 0x03, 0x0d, 0x51, 0x3a, 0x03, 0x00, 0x00, 0x06, 0xa3, + 0x5e, 0x05, 0x00, 0x02, 0x0f, 0x5f, 0x53, 0x06, 0x00, 0x00, 0x05, 0x08, 0x9f, 0x58, 0x01, 0x00, + 0x14, 0x67, 0x6b, 0x0c, 0x00, 0x00, 0x01, 0x08, 0x08, 0x89, 0x78, 0x0f, 0x20, 0x74, 0x81, 0x1a, + 0x06, 0x04, 0x04, 0x01, 0x05, 0x09, 0x4a, 0xb7, 0x73, 0x99, 0x84, 0x23, 0x0a, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x13, 0x65, 0x9b, 0x65, 0x1c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0xcb, 0xf1, 0x37, 0x02, 0x01, 0x04, 0x05, 0x04, 0x07, 0x08, 0x02, 0x09, 0x54, 0xf0, 0xdb, + 0x31, 0x00, 0x00, 0x03, 0x0a, 0x2c, 0x17, 0x01, 0x00, 0x06, 0x8f, 0x9c, 0x42, 0x12, 0x00, 0x02, + 0x0c, 0x4e, 0x37, 0x02, 0x00, 0x01, 0x07, 0xa2, 0x5d, 0x06, 0x00, 0x02, 0x10, 0x5d, 0x50, 0x06, + 0x00, 0x00, 0x04, 0x08, 0x9e, 0x58, 0x01, 0x00, 0x14, 0x65, 0x69, 0x0c, 0x00, 0x00, 0x01, 0x08, + 0x08, 0x89, 0x77, 0x0e, 0x1f, 0x72, 0x7e, 0x1a, 0x06, 0x04, 0x04, 0x01, 0x05, 0x09, 0x4a, 0xb6, + 0x72, 0x98, 0x82, 0x22, 0x0a, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x12, 0x64, 0x99, 0x64, 0x1b, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xb8, 0xff, 0x4b, 0x02, 0x01, 0x04, 0x05, + 0x03, 0x06, 0x08, 0x02, 0x09, 0x52, 0xe9, 0xe4, 0x42, 0x00, 0x00, 0x03, 0x09, 0x26, 0x12, 0x01, + 0x00, 0x06, 0x8e, 0x98, 0x45, 0x16, 0x00, 0x02, 0x0b, 0x4a, 0x32, 0x00, 0x00, 0x03, 0x07, 0xa1, + 0x5d, 0x05, 0x00, 0x02, 0x0f, 0x5b, 0x4d, 0x07, 0x00, 0x00, 0x07, 0x08, 0x9d, 0x57, 0x01, 0x00, + 0x13, 0x63, 0x67, 0x0b, 0x00, 0x00, 0x02, 0x08, 0x08, 0x88, 0x76, 0x0e, 0x1f, 0x72, 0x7d, 0x19, + 0x06, 0x02, 0x04, 0x02, 0x05, 0x09, 0x49, 0xb4, 0x71, 0x96, 0x81, 0x22, 0x0a, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x12, 0x63, 0x99, 0x63, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0xa4, 0xff, 0x64, 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x06, 0x04, 0x09, 0x50, 0xe1, 0xe9, + 0x57, 0x01, 0x00, 0x04, 0x0a, 0x20, 0x0d, 0x03, 0x00, 0x08, 0x8d, 0x92, 0x47, 0x1c, 0x03, 0x02, + 0x0b, 0x47, 0x2d, 0x00, 0x00, 0x04, 0x08, 0xa0, 0x5b, 0x06, 0x00, 0x00, 0x0f, 0x58, 0x4b, 0x04, + 0x00, 0x00, 0x09, 0x09, 0x9c, 0x56, 0x01, 0x00, 0x12, 0x61, 0x64, 0x0a, 0x00, 0x00, 0x01, 0x09, + 0x09, 0x85, 0x74, 0x0d, 0x1e, 0x70, 0x7b, 0x19, 0x06, 0x03, 0x04, 0x01, 0x06, 0x09, 0x48, 0xb3, + 0x70, 0x95, 0x7f, 0x21, 0x0a, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x12, 0x61, 0x97, 0x62, 0x19, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x93, 0xff, 0x7f, 0x05, 0x02, 0x02, 0x03, + 0x05, 0x07, 0x05, 0x04, 0x09, 0x4f, 0xdb, 0xeb, 0x70, 0x03, 0x00, 0x05, 0x09, 0x1a, 0x09, 0x05, + 0x00, 0x08, 0x8d, 0x90, 0x4a, 0x23, 0x00, 0x01, 0x0b, 0x42, 0x28, 0x00, 0x00, 0x05, 0x08, 0x9f, + 0x5b, 0x06, 0x00, 0x00, 0x10, 0x55, 0x48, 0x04, 0x00, 0x00, 0x09, 0x09, 0x9c, 0x56, 0x01, 0x00, + 0x10, 0x5f, 0x62, 0x09, 0x00, 0x00, 0x02, 0x09, 0x09, 0x85, 0x74, 0x0d, 0x1e, 0x6e, 0x79, 0x17, + 0x06, 0x03, 0x04, 0x01, 0x06, 0x09, 0x47, 0xb1, 0x6f, 0x93, 0x7e, 0x21, 0x0a, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x12, 0x61, 0x96, 0x61, 0x1a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x85, 0xff, 0x9b, 0x0a, 0x02, 0x02, 0x04, 0x05, 0x07, 0x07, 0x04, 0x09, 0x4f, 0xd5, 0xeb, + 0x8b, 0x07, 0x00, 0x04, 0x08, 0x16, 0x08, 0x06, 0x00, 0x08, 0x8c, 0x8c, 0x4b, 0x2c, 0x01, 0x00, + 0x0a, 0x3c, 0x21, 0x00, 0x00, 0x04, 0x08, 0x9e, 0x59, 0x06, 0x01, 0x01, 0x10, 0x52, 0x44, 0x04, + 0x00, 0x00, 0x09, 0x09, 0x9a, 0x55, 0x01, 0x01, 0x0e, 0x5d, 0x5f, 0x09, 0x00, 0x00, 0x02, 0x09, + 0x09, 0x84, 0x73, 0x0c, 0x1c, 0x6c, 0x77, 0x16, 0x06, 0x04, 0x04, 0x01, 0x06, 0x09, 0x46, 0xb0, + 0x6e, 0x91, 0x7c, 0x1f, 0x09, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x11, 0x60, 0x94, 0x5f, 0x18, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x7c, 0xfb, 0xb7, 0x13, 0x02, 0x01, 0x04, + 0x05, 0x07, 0x06, 0x04, 0x09, 0x4f, 0xd1, 0xe9, 0xaa, 0x0f, 0x00, 0x03, 0x06, 0x0f, 0x07, 0x07, + 0x00, 0x08, 0x8b, 0x89, 0x4c, 0x36, 0x04, 0x00, 0x0a, 0x37, 0x1d, 0x00, 0x00, 0x04, 0x08, 0x9e, + 0x59, 0x07, 0x03, 0x01, 0x0f, 0x4f, 0x3f, 0x02, 0x00, 0x00, 0x09, 0x09, 0x99, 0x54, 0x01, 0x01, + 0x0d, 0x5b, 0x5c, 0x08, 0x00, 0x00, 0x03, 0x09, 0x09, 0x83, 0x72, 0x0c, 0x1b, 0x6a, 0x75, 0x15, + 0x06, 0x04, 0x04, 0x03, 0x06, 0x09, 0x46, 0xaf, 0x6d, 0x90, 0x7a, 0x1e, 0x09, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x11, 0x5f, 0x93, 0x5e, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x75, 0xef, 0xcf, 0x20, 0x02, 0x00, 0x04, 0x05, 0x07, 0x04, 0x05, 0x09, 0x4d, 0xcd, 0xe4, + 0xc9, 0x1e, 0x00, 0x01, 0x05, 0x0b, 0x07, 0x08, 0x00, 0x08, 0x8a, 0x85, 0x49, 0x45, 0x0a, 0x00, + 0x0b, 0x30, 0x17, 0x00, 0x01, 0x04, 0x08, 0x9c, 0x58, 0x06, 0x03, 0x01, 0x0d, 0x4b, 0x3a, 0x00, + 0x00, 0x00, 0x09, 0x09, 0x98, 0x54, 0x01, 0x01, 0x0d, 0x58, 0x59, 0x06, 0x00, 0x00, 0x03, 0x09, + 0x09, 0x81, 0x70, 0x0b, 0x1b, 0x67, 0x71, 0x14, 0x06, 0x07, 0x04, 0x03, 0x06, 0x09, 0x44, 0xad, + 0x6b, 0x8e, 0x78, 0x1e, 0x09, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x10, 0x5d, 0x90, 0x5c, 0x17, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x72, 0xe0, 0xe1, 0x31, 0x02, 0x00, 0x04, + 0x05, 0x07, 0x04, 0x05, 0x09, 0x4c, 0xc9, 0xda, 0xe5, 0x31, 0x00, 0x01, 0x04, 0x08, 0x07, 0x08, + 0x00, 0x08, 0x89, 0x83, 0x46, 0x53, 0x11, 0x00, 0x0a, 0x29, 0x11, 0x00, 0x01, 0x04, 0x08, 0x9b, + 0x58, 0x07, 0x04, 0x01, 0x0d, 0x46, 0x35, 0x00, 0x00, 0x00, 0x09, 0x09, 0x97, 0x52, 0x01, 0x01, + 0x0d, 0x55, 0x54, 0x06, 0x00, 0x00, 0x04, 0x09, 0x09, 0x80, 0x6f, 0x0b, 0x1a, 0x66, 0x6f, 0x13, + 0x06, 0x07, 0x04, 0x03, 0x06, 0x09, 0x44, 0xac, 0x69, 0x8c, 0x76, 0x1c, 0x09, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x10, 0x5c, 0x8f, 0x5b, 0x16, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x70, 0xcf, 0xe9, 0x45, 0x02, 0x00, 0x01, 0x05, 0x07, 0x04, 0x07, 0x09, 0x4c, 0xc7, 0xce, + 0xfd, 0x4b, 0x00, 0x00, 0x03, 0x06, 0x06, 0x03, 0x06, 0x08, 0x88, 0x80, 0x42, 0x67, 0x1c, 0x00, + 0x08, 0x21, 0x0b, 0x00, 0x00, 0x07, 0x08, 0x98, 0x56, 0x07, 0x08, 0x04, 0x0c, 0x43, 0x2d, 0x00, + 0x00, 0x03, 0x09, 0x09, 0x95, 0x51, 0x01, 0x02, 0x0c, 0x52, 0x51, 0x05, 0x00, 0x00, 0x07, 0x09, + 0x09, 0x80, 0x6e, 0x0b, 0x18, 0x63, 0x6c, 0x12, 0x06, 0x07, 0x04, 0x03, 0x06, 0x09, 0x43, 0xaa, + 0x68, 0x88, 0x73, 0x1c, 0x09, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x10, 0x5b, 0x8d, 0x59, 0x16, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x6e, 0xc1, 0xe6, 0x5a, 0x02, 0x00, 0x01, + 0x05, 0x06, 0x04, 0x07, 0x09, 0x4b, 0xc5, 0xc0, 0xff, 0x6c, 0x00, 0x00, 0x03, 0x06, 0x07, 0x03, + 0x06, 0x08, 0x88, 0x7f, 0x3d, 0x7a, 0x2c, 0x04, 0x06, 0x1a, 0x07, 0x00, 0x02, 0x07, 0x08, 0x98, + 0x55, 0x09, 0x0d, 0x07, 0x07, 0x3f, 0x27, 0x00, 0x00, 0x04, 0x09, 0x09, 0x94, 0x50, 0x01, 0x02, + 0x0b, 0x4f, 0x4d, 0x04, 0x00, 0x00, 0x07, 0x09, 0x09, 0x7e, 0x6c, 0x0a, 0x17, 0x60, 0x69, 0x11, + 0x06, 0x07, 0x04, 0x03, 0x06, 0x09, 0x42, 0xa8, 0x66, 0x87, 0x71, 0x1b, 0x09, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x0f, 0x59, 0x8b, 0x57, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x6e, 0xb5, 0xda, 0x6e, 0x05, 0x01, 0x01, 0x05, 0x06, 0x04, 0x07, 0x09, 0x4b, 0xc5, 0xb3, + 0xff, 0x93, 0x04, 0x00, 0x03, 0x06, 0x01, 0x03, 0x06, 0x08, 0x86, 0x7d, 0x35, 0x8b, 0x44, 0x01, + 0x04, 0x11, 0x04, 0x00, 0x01, 0x07, 0x08, 0x96, 0x54, 0x09, 0x12, 0x0c, 0x07, 0x3a, 0x20, 0x00, + 0x00, 0x03, 0x09, 0x09, 0x92, 0x4f, 0x01, 0x02, 0x0a, 0x4b, 0x46, 0x03, 0x00, 0x00, 0x07, 0x09, + 0x09, 0x7d, 0x6b, 0x0a, 0x16, 0x5e, 0x64, 0x10, 0x06, 0x07, 0x04, 0x03, 0x06, 0x09, 0x41, 0xa6, + 0x65, 0x85, 0x6f, 0x1a, 0x08, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x57, 0x89, 0x55, 0x14, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x6e, 0xb0, 0xc9, 0x7f, 0x0d, 0x02, 0x00, + 0x05, 0x08, 0x04, 0x07, 0x09, 0x4b, 0xc4, 0xa7, 0xff, 0xba, 0x0e, 0x00, 0x01, 0x06, 0x02, 0x03, + 0x06, 0x08, 0x85, 0x7c, 0x2e, 0x98, 0x64, 0x07, 0x02, 0x0c, 0x03, 0x00, 0x01, 0x07, 0x08, 0x95, + 0x53, 0x0a, 0x16, 0x12, 0x07, 0x34, 0x19, 0x00, 0x02, 0x03, 0x09, 0x09, 0x91, 0x4e, 0x01, 0x01, + 0x0b, 0x47, 0x41, 0x03, 0x00, 0x00, 0x07, 0x09, 0x09, 0x7b, 0x69, 0x0a, 0x15, 0x5b, 0x62, 0x0e, + 0x06, 0x08, 0x04, 0x03, 0x06, 0x09, 0x40, 0xa4, 0x63, 0x82, 0x6c, 0x19, 0x09, 0x07, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x0f, 0x57, 0x87, 0x54, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x6d, 0xac, 0xb4, 0x89, 0x15, 0x02, 0x00, 0x08, 0x07, 0x07, 0x09, 0x09, 0x49, 0xc2, 0x9c, + 0xff, 0xdd, 0x1e, 0x00, 0x00, 0x04, 0x06, 0x09, 0x07, 0x08, 0x83, 0x7b, 0x24, 0x9c, 0x8b, 0x10, + 0x00, 0x09, 0x03, 0x01, 0x08, 0x07, 0x08, 0x93, 0x51, 0x08, 0x1c, 0x1c, 0x09, 0x2d, 0x13, 0x00, + 0x00, 0x07, 0x07, 0x09, 0x8f, 0x4c, 0x01, 0x01, 0x0a, 0x43, 0x3b, 0x00, 0x00, 0x00, 0x07, 0x08, + 0x09, 0x78, 0x68, 0x08, 0x13, 0x59, 0x5d, 0x0d, 0x04, 0x08, 0x03, 0x02, 0x06, 0x09, 0x3e, 0xa1, + 0x61, 0x80, 0x6a, 0x18, 0x08, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x0e, 0x54, 0x85, 0x52, 0x12, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x6c, 0xab, 0xa0, 0x88, 0x1e, 0x02, 0x00, + 0x09, 0x07, 0x07, 0x09, 0x09, 0x47, 0xc2, 0x95, 0xf3, 0xf6, 0x35, 0x00, 0x00, 0x04, 0x06, 0x09, + 0x07, 0x08, 0x83, 0x79, 0x1e, 0x97, 0xb6, 0x23, 0x00, 0x07, 0x03, 0x01, 0x08, 0x07, 0x08, 0x92, + 0x50, 0x07, 0x21, 0x27, 0x10, 0x25, 0x0c, 0x00, 0x00, 0x07, 0x07, 0x09, 0x8e, 0x4c, 0x01, 0x01, + 0x0b, 0x3f, 0x35, 0x00, 0x00, 0x00, 0x07, 0x08, 0x09, 0x77, 0x66, 0x08, 0x12, 0x55, 0x59, 0x0b, + 0x05, 0x08, 0x03, 0x02, 0x06, 0x09, 0x3e, 0x9f, 0x5f, 0x7d, 0x66, 0x16, 0x08, 0x07, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x0e, 0x53, 0x83, 0x50, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x6a, 0xaa, 0x8f, 0x7e, 0x26, 0x02, 0x00, 0x09, 0x07, 0x07, 0x09, 0x09, 0x46, 0xc1, 0x91, + 0xe3, 0xff, 0x50, 0x00, 0x00, 0x03, 0x07, 0x09, 0x07, 0x09, 0x82, 0x78, 0x19, 0x8a, 0xdb, 0x3d, + 0x00, 0x04, 0x04, 0x02, 0x08, 0x07, 0x09, 0x90, 0x4f, 0x06, 0x23, 0x39, 0x14, 0x1c, 0x09, 0x00, + 0x00, 0x07, 0x07, 0x09, 0x8c, 0x4a, 0x01, 0x01, 0x0b, 0x3b, 0x2d, 0x00, 0x00, 0x00, 0x07, 0x08, + 0x09, 0x76, 0x65, 0x07, 0x12, 0x52, 0x55, 0x0a, 0x04, 0x08, 0x03, 0x02, 0x06, 0x09, 0x3d, 0x9d, + 0x5d, 0x7a, 0x64, 0x15, 0x07, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x0d, 0x52, 0x81, 0x4e, 0x10, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x69, 0xa9, 0x84, 0x6c, 0x2c, 0x04, 0x02, + 0x05, 0x07, 0x07, 0x09, 0x09, 0x46, 0xbf, 0x8e, 0xd4, 0xfd, 0x6c, 0x03, 0x00, 0x00, 0x07, 0x09, + 0x07, 0x09, 0x81, 0x77, 0x17, 0x77, 0xf2, 0x64, 0x01, 0x00, 0x04, 0x02, 0x08, 0x07, 0x09, 0x8f, + 0x4e, 0x02, 0x24, 0x51, 0x21, 0x11, 0x06, 0x00, 0x00, 0x07, 0x07, 0x09, 0x8a, 0x49, 0x00, 0x02, + 0x0c, 0x37, 0x25, 0x00, 0x00, 0x00, 0x07, 0x08, 0x09, 0x74, 0x64, 0x08, 0x11, 0x50, 0x4f, 0x09, + 0x04, 0x08, 0x03, 0x02, 0x06, 0x09, 0x3c, 0x9b, 0x5b, 0x77, 0x60, 0x14, 0x08, 0x07, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x0d, 0x50, 0x7e, 0x4b, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x68, 0xa8, 0x7d, 0x58, 0x2d, 0x05, 0x02, 0x04, 0x07, 0x07, 0x09, 0x09, 0x45, 0xbe, 0x8c, + 0xc9, 0xf2, 0x85, 0x06, 0x00, 0x00, 0x07, 0x09, 0x07, 0x08, 0x7f, 0x76, 0x17, 0x63, 0xff, 0x93, + 0x04, 0x00, 0x04, 0x02, 0x08, 0x07, 0x08, 0x8d, 0x4d, 0x00, 0x21, 0x6a, 0x38, 0x0c, 0x02, 0x01, + 0x00, 0x07, 0x07, 0x09, 0x89, 0x49, 0x00, 0x04, 0x10, 0x33, 0x1d, 0x00, 0x00, 0x00, 0x07, 0x08, + 0x09, 0x72, 0x62, 0x0a, 0x11, 0x4b, 0x49, 0x07, 0x04, 0x09, 0x03, 0x02, 0x06, 0x09, 0x3a, 0x98, + 0x5a, 0x73, 0x5c, 0x12, 0x07, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x4e, 0x7b, 0x49, 0x0e, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x67, 0xa7, 0x7a, 0x47, 0x29, 0x07, 0x02, + 0x05, 0x07, 0x07, 0x09, 0x09, 0x44, 0xbc, 0x8b, 0xc2, 0xe1, 0x94, 0x0e, 0x00, 0x00, 0x07, 0x09, + 0x07, 0x09, 0x7d, 0x75, 0x17, 0x51, 0xff, 0xc4, 0x10, 0x00, 0x03, 0x02, 0x08, 0x07, 0x09, 0x8b, + 0x4c, 0x00, 0x1b, 0x7f, 0x5b, 0x0c, 0x00, 0x03, 0x00, 0x07, 0x07, 0x09, 0x86, 0x47, 0x00, 0x04, + 0x16, 0x31, 0x15, 0x00, 0x00, 0x00, 0x07, 0x08, 0x09, 0x71, 0x60, 0x0a, 0x10, 0x48, 0x44, 0x06, + 0x05, 0x07, 0x03, 0x02, 0x06, 0x09, 0x38, 0x96, 0x58, 0x71, 0x59, 0x11, 0x07, 0x07, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x0b, 0x4c, 0x78, 0x47, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x65, 0xa5, 0x78, 0x3b, 0x25, 0x09, 0x02, 0x02, 0x07, 0x07, 0x09, 0x09, 0x43, 0xba, 0x8a, + 0xc1, 0xcf, 0x97, 0x19, 0x00, 0x00, 0x07, 0x09, 0x07, 0x08, 0x7b, 0x73, 0x17, 0x42, 0xf2, 0xea, + 0x25, 0x00, 0x03, 0x02, 0x08, 0x07, 0x08, 0x88, 0x4a, 0x00, 0x15, 0x8a, 0x8a, 0x16, 0x00, 0x03, + 0x00, 0x07, 0x07, 0x09, 0x83, 0x46, 0x00, 0x04, 0x1a, 0x32, 0x11, 0x00, 0x00, 0x00, 0x07, 0x08, + 0x09, 0x6e, 0x5e, 0x0a, 0x0e, 0x44, 0x3c, 0x04, 0x07, 0x07, 0x03, 0x02, 0x06, 0x09, 0x37, 0x92, + 0x55, 0x6d, 0x55, 0x0f, 0x07, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x0b, 0x4a, 0x75, 0x44, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x64, 0xa5, 0x77, 0x33, 0x1d, 0x0c, 0x02, + 0x02, 0x07, 0x07, 0x09, 0x09, 0x42, 0xb9, 0x89, 0xc0, 0xbe, 0x8e, 0x22, 0x00, 0x00, 0x07, 0x09, + 0x07, 0x08, 0x79, 0x72, 0x17, 0x39, 0xdd, 0xff, 0x42, 0x00, 0x00, 0x02, 0x08, 0x07, 0x08, 0x87, + 0x49, 0x00, 0x0e, 0x87, 0xbd, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x07, 0x09, 0x82, 0x45, 0x00, 0x03, + 0x1e, 0x38, 0x10, 0x00, 0x00, 0x00, 0x07, 0x08, 0x09, 0x6c, 0x5c, 0x09, 0x0d, 0x3e, 0x33, 0x02, + 0x06, 0x09, 0x03, 0x02, 0x06, 0x09, 0x36, 0x90, 0x53, 0x69, 0x50, 0x0e, 0x07, 0x07, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x0b, 0x49, 0x72, 0x42, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x63, 0xa3, 0x75, 0x2d, 0x18, 0x0a, 0x01, 0x02, 0x09, 0x09, 0x09, 0x09, 0x41, 0xb7, 0x86, + 0xbf, 0xb0, 0x7a, 0x29, 0x04, 0x00, 0x07, 0x09, 0x09, 0x09, 0x78, 0x70, 0x17, 0x33, 0xc7, 0xff, + 0x60, 0x00, 0x00, 0x03, 0x09, 0x09, 0x09, 0x85, 0x48, 0x00, 0x09, 0x7a, 0xe4, 0x4e, 0x01, 0x00, + 0x00, 0x09, 0x09, 0x09, 0x80, 0x43, 0x00, 0x01, 0x23, 0x4b, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x09, + 0x09, 0x6a, 0x5a, 0x08, 0x0c, 0x39, 0x2d, 0x04, 0x02, 0x07, 0x07, 0x03, 0x06, 0x09, 0x35, 0x8d, + 0x50, 0x64, 0x4b, 0x0d, 0x07, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x46, 0x6e, 0x3f, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x62, 0xa1, 0x74, 0x2b, 0x11, 0x07, 0x01, + 0x02, 0x08, 0x09, 0x09, 0x09, 0x3f, 0xb5, 0x85, 0xbe, 0xab, 0x61, 0x29, 0x03, 0x00, 0x03, 0x09, + 0x09, 0x09, 0x76, 0x6f, 0x16, 0x31, 0xb6, 0xfa, 0x7b, 0x02, 0x00, 0x00, 0x09, 0x09, 0x09, 0x84, + 0x47, 0x00, 0x06, 0x66, 0xf8, 0x80, 0x01, 0x00, 0x00, 0x09, 0x09, 0x09, 0x7e, 0x42, 0x00, 0x01, + 0x23, 0x63, 0x2d, 0x01, 0x00, 0x00, 0x07, 0x09, 0x09, 0x69, 0x59, 0x08, 0x0b, 0x35, 0x28, 0x07, + 0x05, 0x06, 0x06, 0x03, 0x06, 0x09, 0x34, 0x8a, 0x4e, 0x60, 0x46, 0x0b, 0x07, 0x07, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x0a, 0x44, 0x6c, 0x3c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x60, 0xa0, 0x73, 0x29, 0x0f, 0x06, 0x01, 0x02, 0x08, 0x09, 0x09, 0x09, 0x3f, 0xb2, 0x83, + 0xbc, 0xa7, 0x4f, 0x27, 0x05, 0x00, 0x03, 0x09, 0x09, 0x09, 0x74, 0x6e, 0x16, 0x30, 0xab, 0xeb, + 0x8d, 0x0a, 0x00, 0x00, 0x09, 0x09, 0x09, 0x81, 0x45, 0x00, 0x05, 0x50, 0xff, 0xb4, 0x0c, 0x00, + 0x00, 0x09, 0x09, 0x09, 0x7c, 0x40, 0x00, 0x00, 0x1f, 0x7d, 0x4f, 0x05, 0x00, 0x00, 0x07, 0x09, + 0x09, 0x67, 0x57, 0x07, 0x09, 0x2f, 0x26, 0x0e, 0x05, 0x05, 0x04, 0x03, 0x06, 0x09, 0x32, 0x87, + 0x4b, 0x5b, 0x40, 0x0a, 0x06, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x09, 0x42, 0x68, 0x39, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x5f, 0x9d, 0x72, 0x29, 0x0d, 0x06, 0x01, + 0x02, 0x08, 0x09, 0x09, 0x09, 0x3e, 0xb1, 0x82, 0xbc, 0xa7, 0x41, 0x20, 0x06, 0x00, 0x03, 0x09, + 0x09, 0x09, 0x73, 0x6b, 0x16, 0x31, 0xa7, 0xd8, 0x90, 0x15, 0x00, 0x00, 0x07, 0x09, 0x09, 0x80, + 0x44, 0x00, 0x04, 0x3e, 0xf7, 0xe0, 0x1f, 0x00, 0x00, 0x03, 0x09, 0x09, 0x7a, 0x3f, 0x00, 0x00, + 0x17, 0x8d, 0x80, 0x10, 0x00, 0x00, 0x05, 0x09, 0x09, 0x65, 0x55, 0x08, 0x0a, 0x28, 0x26, 0x15, + 0x08, 0x05, 0x04, 0x04, 0x06, 0x09, 0x31, 0x84, 0x49, 0x56, 0x3a, 0x09, 0x06, 0x06, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x09, 0x41, 0x65, 0x36, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x5e, 0x9c, 0x70, 0x29, 0x0d, 0x06, 0x02, 0x02, 0x08, 0x09, 0x09, 0x09, 0x3c, 0xaf, 0x81, + 0xbb, 0xa5, 0x37, 0x18, 0x07, 0x00, 0x03, 0x09, 0x09, 0x09, 0x71, 0x69, 0x14, 0x30, 0xa5, 0xc6, + 0x87, 0x1d, 0x00, 0x00, 0x08, 0x09, 0x09, 0x7e, 0x43, 0x00, 0x05, 0x30, 0xe2, 0xfd, 0x39, 0x00, + 0x00, 0x03, 0x09, 0x09, 0x78, 0x3e, 0x00, 0x00, 0x10, 0x90, 0xb8, 0x26, 0x00, 0x00, 0x03, 0x09, + 0x09, 0x62, 0x53, 0x07, 0x08, 0x20, 0x2b, 0x2a, 0x0e, 0x05, 0x04, 0x03, 0x06, 0x09, 0x2f, 0x80, + 0x45, 0x51, 0x33, 0x0a, 0x09, 0x06, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x3e, 0x61, 0x32, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x5d, 0x9b, 0x6f, 0x28, 0x0c, 0x05, 0x02, + 0x02, 0x08, 0x09, 0x09, 0x09, 0x3c, 0xad, 0x80, 0xb9, 0xa4, 0x32, 0x11, 0x09, 0x00, 0x03, 0x09, + 0x09, 0x09, 0x70, 0x69, 0x14, 0x2f, 0xa5, 0xb8, 0x72, 0x22, 0x00, 0x00, 0x09, 0x09, 0x09, 0x7c, + 0x42, 0x00, 0x05, 0x2a, 0xca, 0xff, 0x58, 0x00, 0x00, 0x04, 0x09, 0x09, 0x76, 0x3c, 0x00, 0x00, + 0x0b, 0x84, 0xe5, 0x49, 0x00, 0x00, 0x02, 0x09, 0x09, 0x60, 0x51, 0x05, 0x06, 0x17, 0x2d, 0x47, + 0x1b, 0x06, 0x04, 0x02, 0x06, 0x09, 0x2e, 0x7d, 0x43, 0x4c, 0x2c, 0x0a, 0x0d, 0x09, 0x07, 0x04, + 0x00, 0x00, 0x00, 0x08, 0x3c, 0x5d, 0x2f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x5c, 0x99, 0x6d, 0x27, 0x0b, 0x05, 0x02, 0x00, 0x08, 0x09, 0x09, 0x09, 0x3a, 0xab, 0x7e, + 0xb7, 0xa1, 0x31, 0x0f, 0x06, 0x00, 0x03, 0x09, 0x09, 0x09, 0x6e, 0x67, 0x13, 0x2e, 0xa3, 0xb1, + 0x5d, 0x24, 0x02, 0x00, 0x07, 0x09, 0x09, 0x7a, 0x40, 0x00, 0x06, 0x27, 0xb6, 0xf8, 0x70, 0x03, + 0x00, 0x02, 0x09, 0x09, 0x74, 0x3a, 0x00, 0x00, 0x05, 0x70, 0xfc, 0x78, 0x01, 0x00, 0x01, 0x09, + 0x09, 0x5d, 0x4e, 0x04, 0x05, 0x0f, 0x30, 0x67, 0x2f, 0x05, 0x04, 0x01, 0x06, 0x09, 0x2c, 0x79, + 0x3f, 0x46, 0x25, 0x0a, 0x11, 0x0b, 0x07, 0x04, 0x00, 0x00, 0x00, 0x07, 0x3a, 0x58, 0x2b, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x5a, 0x98, 0x6c, 0x26, 0x0b, 0x05, 0x03, + 0x00, 0x08, 0x09, 0x09, 0x09, 0x39, 0xa9, 0x7d, 0xb6, 0xa1, 0x30, 0x0c, 0x06, 0x00, 0x03, 0x09, + 0x09, 0x09, 0x6d, 0x65, 0x13, 0x2d, 0xa2, 0xae, 0x49, 0x1f, 0x03, 0x00, 0x05, 0x09, 0x09, 0x78, + 0x3f, 0x00, 0x06, 0x25, 0xaa, 0xe7, 0x81, 0x08, 0x00, 0x00, 0x09, 0x09, 0x71, 0x39, 0x00, 0x00, + 0x05, 0x58, 0xff, 0xac, 0x09, 0x00, 0x00, 0x09, 0x09, 0x5b, 0x4d, 0x04, 0x03, 0x0a, 0x29, 0x85, + 0x51, 0x09, 0x04, 0x00, 0x06, 0x09, 0x2b, 0x76, 0x3c, 0x3e, 0x1d, 0x0b, 0x16, 0x13, 0x08, 0x04, + 0x00, 0x00, 0x00, 0x07, 0x38, 0x54, 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x58, 0x96, 0x6b, 0x25, 0x0b, 0x03, 0x00, 0x03, 0x08, 0x09, 0x09, 0x09, 0x38, 0xa7, 0x7b, + 0xb5, 0xa0, 0x2f, 0x0b, 0x01, 0x00, 0x03, 0x09, 0x09, 0x09, 0x6a, 0x63, 0x13, 0x2c, 0xa1, 0xad, + 0x3a, 0x1b, 0x06, 0x00, 0x05, 0x09, 0x09, 0x76, 0x3e, 0x00, 0x05, 0x26, 0xa5, 0xd4, 0x84, 0x11, + 0x00, 0x00, 0x09, 0x09, 0x6e, 0x38, 0x00, 0x00, 0x02, 0x43, 0xfe, 0xd8, 0x19, 0x00, 0x00, 0x09, + 0x09, 0x59, 0x4b, 0x03, 0x03, 0x04, 0x1f, 0x99, 0x82, 0x11, 0x03, 0x00, 0x06, 0x09, 0x2a, 0x72, + 0x39, 0x36, 0x15, 0x0b, 0x1f, 0x1d, 0x0a, 0x03, 0x00, 0x00, 0x00, 0x07, 0x35, 0x50, 0x22, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x57, 0x95, 0x6a, 0x25, 0x0b, 0x03, 0x00, + 0x02, 0x08, 0x09, 0x09, 0x09, 0x38, 0xa5, 0x7a, 0xb3, 0x9f, 0x2e, 0x08, 0x00, 0x00, 0x03, 0x08, + 0x09, 0x09, 0x68, 0x62, 0x12, 0x2c, 0xa0, 0xac, 0x34, 0x16, 0x07, 0x00, 0x03, 0x09, 0x09, 0x75, + 0x3d, 0x00, 0x05, 0x24, 0xa3, 0xc2, 0x7b, 0x19, 0x00, 0x00, 0x09, 0x09, 0x6c, 0x37, 0x00, 0x00, + 0x04, 0x37, 0xe9, 0xf5, 0x32, 0x00, 0x00, 0x09, 0x09, 0x57, 0x4a, 0x03, 0x03, 0x05, 0x18, 0x9d, + 0xb9, 0x25, 0x04, 0x00, 0x05, 0x09, 0x29, 0x6f, 0x36, 0x2f, 0x10, 0x0b, 0x29, 0x30, 0x12, 0x03, + 0x00, 0x00, 0x00, 0x06, 0x33, 0x4c, 0x1e, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x56, 0x93, 0x68, 0x24, 0x0a, 0x04, 0x00, 0x04, 0x08, 0x09, 0x09, 0x09, 0x37, 0xa3, 0x78, + 0xb1, 0x9d, 0x2d, 0x08, 0x00, 0x00, 0x03, 0x08, 0x09, 0x09, 0x67, 0x60, 0x11, 0x2b, 0x9f, 0xab, + 0x30, 0x13, 0x05, 0x00, 0x03, 0x09, 0x09, 0x73, 0x3c, 0x00, 0x04, 0x24, 0xa3, 0xb5, 0x6a, 0x20, + 0x00, 0x00, 0x09, 0x09, 0x69, 0x34, 0x00, 0x00, 0x04, 0x2f, 0xd2, 0xfe, 0x4d, 0x00, 0x00, 0x05, + 0x09, 0x55, 0x46, 0x01, 0x02, 0x04, 0x11, 0x91, 0xe6, 0x44, 0x04, 0x00, 0x01, 0x09, 0x27, 0x6c, + 0x32, 0x26, 0x0b, 0x0a, 0x31, 0x49, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x05, 0x30, 0x47, 0x19, 0x00, + 0x00, 0x04, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x55, 0x92, 0x67, 0x24, 0x0a, 0x04, 0x00, + 0x04, 0x08, 0x09, 0x09, 0x09, 0x35, 0xa1, 0x78, 0xaf, 0x9c, 0x2d, 0x08, 0x00, 0x00, 0x02, 0x09, + 0x09, 0x09, 0x66, 0x60, 0x11, 0x2b, 0x9d, 0xaa, 0x2e, 0x10, 0x05, 0x00, 0x05, 0x08, 0x09, 0x71, + 0x3c, 0x00, 0x04, 0x23, 0xa3, 0xad, 0x55, 0x20, 0x02, 0x00, 0x03, 0x09, 0x68, 0x33, 0x00, 0x00, + 0x05, 0x2c, 0xbf, 0xf4, 0x65, 0x03, 0x00, 0x00, 0x09, 0x52, 0x45, 0x00, 0x02, 0x04, 0x0d, 0x7c, + 0xfb, 0x70, 0x02, 0x00, 0x00, 0x09, 0x26, 0x68, 0x2e, 0x1f, 0x09, 0x09, 0x32, 0x67, 0x2f, 0x06, + 0x00, 0x00, 0x00, 0x05, 0x2e, 0x41, 0x15, 0x00, 0x00, 0x05, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x54, 0x90, 0x65, 0x23, 0x0a, 0x04, 0x00, 0x04, 0x08, 0x09, 0x09, 0x09, 0x34, 0x9f, 0x75, + 0xad, 0x9a, 0x2b, 0x07, 0x00, 0x00, 0x02, 0x09, 0x09, 0x09, 0x64, 0x5d, 0x11, 0x2a, 0x9c, 0xa8, + 0x2b, 0x0b, 0x03, 0x00, 0x05, 0x08, 0x09, 0x6e, 0x39, 0x00, 0x04, 0x23, 0xa0, 0xa9, 0x42, 0x1d, + 0x02, 0x00, 0x03, 0x09, 0x65, 0x32, 0x00, 0x00, 0x04, 0x29, 0xb2, 0xe4, 0x76, 0x07, 0x00, 0x00, + 0x09, 0x4f, 0x43, 0x00, 0x03, 0x05, 0x0b, 0x64, 0xff, 0xa2, 0x06, 0x00, 0x00, 0x09, 0x24, 0x64, + 0x2a, 0x18, 0x07, 0x07, 0x2f, 0x85, 0x4e, 0x08, 0x00, 0x00, 0x00, 0x05, 0x2b, 0x3c, 0x10, 0x00, + 0x00, 0x08, 0x14, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x52, 0x90, 0x65, 0x22, 0x0a, 0x04, 0x00, + 0x04, 0x08, 0x09, 0x09, 0x09, 0x34, 0x9d, 0x75, 0xac, 0x99, 0x2b, 0x07, 0x00, 0x00, 0x00, 0x09, + 0x09, 0x09, 0x63, 0x5d, 0x10, 0x2a, 0x9b, 0xa7, 0x2b, 0x0b, 0x02, 0x00, 0x05, 0x08, 0x09, 0x6c, + 0x38, 0x00, 0x03, 0x22, 0xa0, 0xa8, 0x36, 0x18, 0x05, 0x00, 0x03, 0x09, 0x63, 0x31, 0x00, 0x00, + 0x04, 0x28, 0xae, 0xd2, 0x7e, 0x0c, 0x00, 0x00, 0x09, 0x4d, 0x41, 0x00, 0x03, 0x05, 0x0c, 0x50, + 0xff, 0xcd, 0x16, 0x00, 0x00, 0x09, 0x22, 0x5f, 0x26, 0x12, 0x06, 0x06, 0x27, 0x98, 0x79, 0x11, + 0x00, 0x00, 0x00, 0x04, 0x28, 0x36, 0x0c, 0x00, 0x00, 0x08, 0x1d, 0x19, 0x03, 0x00, 0x00, 0x00, + 0x0e, 0x51, 0x8e, 0x64, 0x22, 0x0a, 0x04, 0x00, 0x04, 0x08, 0x09, 0x09, 0x09, 0x33, 0x9b, 0x73, + 0xaa, 0x97, 0x2a, 0x07, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x61, 0x5c, 0x0f, 0x29, 0x9a, 0xa6, + 0x2b, 0x09, 0x02, 0x00, 0x05, 0x08, 0x09, 0x69, 0x37, 0x00, 0x03, 0x22, 0x9f, 0xa7, 0x2f, 0x16, + 0x08, 0x00, 0x03, 0x09, 0x61, 0x2e, 0x00, 0x00, 0x04, 0x28, 0xac, 0xbf, 0x7a, 0x14, 0x00, 0x00, + 0x09, 0x4b, 0x3f, 0x00, 0x03, 0x05, 0x0c, 0x40, 0xf0, 0xea, 0x29, 0x00, 0x00, 0x09, 0x21, 0x5b, + 0x21, 0x0d, 0x07, 0x05, 0x1e, 0x9e, 0xaa, 0x20, 0x00, 0x00, 0x00, 0x03, 0x26, 0x30, 0x08, 0x00, + 0x00, 0x07, 0x27, 0x29, 0x09, 0x00, 0x00, 0x00, 0x0e, 0x51, 0x8d, 0x63, 0x21, 0x0a, 0x04, 0x00, + 0x05, 0x08, 0x09, 0x09, 0x09, 0x31, 0x99, 0x72, 0xa9, 0x97, 0x2a, 0x07, 0x00, 0x00, 0x00, 0x09, + 0x09, 0x09, 0x5f, 0x5a, 0x0f, 0x29, 0x98, 0xa5, 0x2a, 0x09, 0x00, 0x00, 0x05, 0x08, 0x09, 0x67, + 0x36, 0x00, 0x03, 0x21, 0x9f, 0xa6, 0x2b, 0x14, 0x08, 0x00, 0x03, 0x09, 0x5e, 0x2d, 0x00, 0x00, + 0x04, 0x28, 0xad, 0xb2, 0x6e, 0x1a, 0x00, 0x00, 0x09, 0x49, 0x3c, 0x00, 0x02, 0x05, 0x0d, 0x39, + 0xdb, 0xfb, 0x43, 0x00, 0x00, 0x09, 0x1f, 0x57, 0x1c, 0x0a, 0x07, 0x06, 0x18, 0x95, 0xd7, 0x39, + 0x00, 0x00, 0x00, 0x03, 0x23, 0x2a, 0x05, 0x00, 0x00, 0x05, 0x2d, 0x3f, 0x13, 0x00, 0x00, 0x00, + 0x0e, 0x4f, 0x8b, 0x62, 0x21, 0x0a, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x30, 0x97, 0x71, + 0xa7, 0x95, 0x2a, 0x07, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x5d, 0x58, 0x0e, 0x28, 0x96, 0xa4, + 0x2a, 0x08, 0x00, 0x00, 0x04, 0x08, 0x09, 0x65, 0x35, 0x00, 0x04, 0x20, 0x9d, 0xa5, 0x28, 0x10, + 0x08, 0x00, 0x03, 0x08, 0x5d, 0x2d, 0x00, 0x00, 0x04, 0x27, 0xac, 0xa8, 0x5c, 0x1e, 0x03, 0x00, + 0x06, 0x47, 0x3a, 0x00, 0x02, 0x04, 0x0d, 0x35, 0xc9, 0xf8, 0x5b, 0x02, 0x00, 0x03, 0x1e, 0x52, + 0x17, 0x07, 0x07, 0x06, 0x12, 0x83, 0xf5, 0x5d, 0x00, 0x00, 0x00, 0x03, 0x20, 0x23, 0x03, 0x00, + 0x00, 0x03, 0x2f, 0x5a, 0x22, 0x00, 0x00, 0x00, 0x0d, 0x4e, 0x8a, 0x61, 0x20, 0x0a, 0x04, 0x00, + 0x06, 0x09, 0x09, 0x09, 0x09, 0x30, 0x95, 0x70, 0xa7, 0x94, 0x29, 0x07, 0x00, 0x00, 0x02, 0x09, + 0x09, 0x09, 0x5c, 0x57, 0x0e, 0x27, 0x96, 0xa3, 0x28, 0x09, 0x00, 0x00, 0x04, 0x08, 0x09, 0x62, + 0x33, 0x00, 0x04, 0x20, 0x9c, 0xa3, 0x26, 0x0b, 0x05, 0x00, 0x03, 0x08, 0x5b, 0x2c, 0x00, 0x00, + 0x04, 0x26, 0xac, 0xa2, 0x4b, 0x21, 0x02, 0x00, 0x04, 0x44, 0x37, 0x00, 0x03, 0x04, 0x0d, 0x34, + 0xbe, 0xed, 0x72, 0x03, 0x00, 0x00, 0x1c, 0x4d, 0x14, 0x06, 0x07, 0x06, 0x10, 0x6e, 0xff, 0x88, + 0x06, 0x00, 0x00, 0x02, 0x1d, 0x1e, 0x01, 0x00, 0x00, 0x01, 0x2c, 0x75, 0x39, 0x03, 0x00, 0x00, + 0x0c, 0x4c, 0x88, 0x60, 0x20, 0x0a, 0x04, 0x00, 0x06, 0x09, 0x09, 0x09, 0x09, 0x2f, 0x94, 0x6f, + 0xa5, 0x93, 0x29, 0x07, 0x00, 0x00, 0x02, 0x09, 0x09, 0x09, 0x5b, 0x56, 0x0e, 0x26, 0x95, 0xa1, + 0x28, 0x08, 0x00, 0x00, 0x04, 0x08, 0x09, 0x61, 0x32, 0x00, 0x02, 0x1f, 0x9b, 0xa2, 0x26, 0x0a, + 0x03, 0x00, 0x03, 0x08, 0x59, 0x2a, 0x00, 0x00, 0x03, 0x26, 0xac, 0xa1, 0x3e, 0x1f, 0x04, 0x00, + 0x04, 0x42, 0x35, 0x00, 0x04, 0x03, 0x0d, 0x34, 0xb8, 0xde, 0x82, 0x0b, 0x00, 0x00, 0x1a, 0x49, + 0x0f, 0x05, 0x07, 0x06, 0x0f, 0x5a, 0xff, 0xb4, 0x0f, 0x00, 0x00, 0x02, 0x19, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x25, 0x89, 0x5a, 0x08, 0x00, 0x00, 0x0c, 0x4c, 0x87, 0x5f, 0x20, 0x0a, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x2f, 0x92, 0x6e, 0xa5, 0x92, 0x29, 0x07, 0x00, 0x00, 0x02, 0x09, + 0x09, 0x09, 0x58, 0x54, 0x0e, 0x26, 0x94, 0xa0, 0x28, 0x08, 0x00, 0x00, 0x04, 0x08, 0x09, 0x5e, + 0x32, 0x00, 0x02, 0x1f, 0x9a, 0xa2, 0x25, 0x09, 0x03, 0x00, 0x03, 0x08, 0x56, 0x29, 0x00, 0x00, + 0x03, 0x26, 0xab, 0x9f, 0x36, 0x1d, 0x06, 0x00, 0x03, 0x3f, 0x32, 0x00, 0x05, 0x02, 0x0d, 0x33, + 0xb6, 0xce, 0x8a, 0x14, 0x00, 0x00, 0x19, 0x44, 0x0c, 0x05, 0x07, 0x07, 0x10, 0x4b, 0xf5, 0xd9, + 0x1f, 0x00, 0x00, 0x01, 0x16, 0x13, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x92, 0x83, 0x12, 0x00, 0x00, + 0x0c, 0x4b, 0x85, 0x5e, 0x20, 0x0a, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x2e, 0x90, 0x6d, + 0xa3, 0x91, 0x28, 0x07, 0x00, 0x00, 0x02, 0x09, 0x09, 0x09, 0x57, 0x52, 0x0d, 0x25, 0x92, 0xa0, + 0x28, 0x08, 0x00, 0x00, 0x03, 0x08, 0x09, 0x5d, 0x30, 0x00, 0x03, 0x1e, 0x9a, 0xa1, 0x25, 0x09, + 0x02, 0x00, 0x03, 0x08, 0x54, 0x29, 0x00, 0x00, 0x03, 0x25, 0xaa, 0x9e, 0x30, 0x1a, 0x07, 0x00, + 0x03, 0x3d, 0x31, 0x00, 0x05, 0x02, 0x0c, 0x33, 0xb7, 0xc0, 0x8b, 0x1e, 0x00, 0x00, 0x17, 0x3e, + 0x09, 0x05, 0x07, 0x06, 0x0f, 0x42, 0xe4, 0xf5, 0x36, 0x00, 0x00, 0x01, 0x13, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x8d, 0xab, 0x22, 0x00, 0x00, 0x0b, 0x4a, 0x84, 0x5e, 0x1f, 0x0a, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x2c, 0x8e, 0x6c, 0xa1, 0x90, 0x27, 0x07, 0x00, 0x00, 0x02, 0x09, + 0x09, 0x09, 0x55, 0x51, 0x0d, 0x24, 0x91, 0x9f, 0x27, 0x08, 0x00, 0x00, 0x03, 0x08, 0x09, 0x5b, + 0x2f, 0x00, 0x02, 0x1e, 0x99, 0xa0, 0x24, 0x09, 0x03, 0x00, 0x03, 0x08, 0x51, 0x27, 0x00, 0x00, + 0x03, 0x25, 0xaa, 0x9e, 0x2c, 0x17, 0x09, 0x00, 0x03, 0x3a, 0x2e, 0x00, 0x05, 0x02, 0x0b, 0x32, + 0xb6, 0xb4, 0x86, 0x26, 0x00, 0x00, 0x16, 0x39, 0x06, 0x05, 0x07, 0x07, 0x10, 0x3d, 0xd3, 0xff, + 0x52, 0x00, 0x00, 0x01, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x81, 0xce, 0x3a, 0x00, 0x00, + 0x0b, 0x49, 0x83, 0x5d, 0x1e, 0x09, 0x04, 0x00, 0x06, 0x09, 0x09, 0x09, 0x09, 0x2b, 0x8c, 0x6b, + 0xa0, 0x8f, 0x26, 0x06, 0x00, 0x00, 0x03, 0x09, 0x09, 0x09, 0x53, 0x4f, 0x0d, 0x24, 0x90, 0x9e, + 0x26, 0x08, 0x00, 0x00, 0x03, 0x09, 0x09, 0x59, 0x2d, 0x00, 0x02, 0x1e, 0x97, 0x9f, 0x24, 0x08, + 0x02, 0x00, 0x02, 0x08, 0x4f, 0x26, 0x00, 0x00, 0x03, 0x24, 0xa8, 0x9c, 0x28, 0x15, 0x09, 0x00, + 0x03, 0x37, 0x2c, 0x00, 0x06, 0x02, 0x0b, 0x33, 0xb5, 0xaa, 0x7c, 0x2f, 0x05, 0x00, 0x14, 0x33, + 0x04, 0x05, 0x07, 0x07, 0x0f, 0x3a, 0xc4, 0xff, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x6e, 0xe1, 0x5a, 0x01, 0x00, 0x0b, 0x48, 0x82, 0x5b, 0x1e, 0x09, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x2a, 0x8b, 0x6a, 0x9f, 0x8e, 0x26, 0x06, 0x00, 0x00, 0x04, 0x09, + 0x09, 0x09, 0x52, 0x4e, 0x0c, 0x24, 0x90, 0x9e, 0x26, 0x08, 0x00, 0x00, 0x04, 0x09, 0x09, 0x58, + 0x2d, 0x00, 0x01, 0x1d, 0x96, 0x9e, 0x24, 0x08, 0x01, 0x01, 0x01, 0x08, 0x4d, 0x25, 0x00, 0x00, + 0x03, 0x23, 0xa7, 0x9c, 0x27, 0x12, 0x08, 0x00, 0x03, 0x35, 0x2a, 0x00, 0x06, 0x02, 0x0b, 0x32, + 0xb5, 0xa5, 0x6f, 0x35, 0x03, 0x00, 0x12, 0x2e, 0x02, 0x05, 0x07, 0x07, 0x0f, 0x39, 0xba, 0xff, + 0x8e, 0x05, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x5d, 0xec, 0x7f, 0x06, 0x00, + 0x0b, 0x46, 0x7f, 0x5b, 0x1d, 0x09, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x2a, 0x8a, 0x69, + 0x9d, 0x8c, 0x26, 0x06, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x51, 0x4c, 0x0b, 0x24, 0x8f, 0x9c, + 0x26, 0x07, 0x00, 0x00, 0x04, 0x08, 0x09, 0x56, 0x2b, 0x00, 0x01, 0x1d, 0x95, 0x9d, 0x23, 0x07, + 0x00, 0x00, 0x02, 0x08, 0x4b, 0x24, 0x00, 0x00, 0x03, 0x22, 0xa6, 0x9c, 0x25, 0x0f, 0x07, 0x02, + 0x03, 0x32, 0x28, 0x00, 0x06, 0x02, 0x0a, 0x31, 0xb5, 0xa1, 0x62, 0x3b, 0x07, 0x00, 0x11, 0x28, + 0x01, 0x05, 0x07, 0x07, 0x0f, 0x39, 0xb2, 0xfc, 0xa8, 0x0e, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x4b, 0xef, 0xa6, 0x0e, 0x00, 0x0b, 0x46, 0x7f, 0x5a, 0x1d, 0x09, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x29, 0x89, 0x68, 0x9d, 0x8c, 0x25, 0x06, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x50, 0x4b, 0x0b, 0x24, 0x8f, 0x9c, 0x26, 0x07, 0x00, 0x00, 0x04, 0x08, 0x09, 0x55, + 0x2a, 0x00, 0x01, 0x1d, 0x95, 0x9d, 0x23, 0x07, 0x00, 0x00, 0x02, 0x08, 0x49, 0x22, 0x00, 0x00, + 0x03, 0x22, 0xa6, 0x9c, 0x24, 0x0e, 0x07, 0x02, 0x03, 0x2f, 0x25, 0x00, 0x05, 0x02, 0x0a, 0x31, + 0xb5, 0xa0, 0x5a, 0x3f, 0x0c, 0x00, 0x0f, 0x22, 0x01, 0x05, 0x07, 0x07, 0x0f, 0x39, 0xaf, 0xf4, + 0xbf, 0x1a, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0x3f, 0xe5, 0xca, 0x1b, 0x00, + 0x0b, 0x45, 0x7e, 0x59, 0x1d, 0x09, 0x04, 0x00, 0x06, 0x09, 0x09, 0x09, 0x09, 0x28, 0x86, 0x67, + 0x9b, 0x8a, 0x24, 0x06, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x4e, 0x4a, 0x0a, 0x23, 0x8d, 0x99, + 0x26, 0x07, 0x00, 0x00, 0x04, 0x08, 0x09, 0x52, 0x28, 0x00, 0x00, 0x1c, 0x94, 0x9b, 0x23, 0x07, + 0x00, 0x00, 0x02, 0x08, 0x47, 0x20, 0x00, 0x00, 0x03, 0x22, 0xa5, 0x9a, 0x24, 0x0d, 0x06, 0x02, + 0x03, 0x2d, 0x22, 0x00, 0x05, 0x02, 0x0a, 0x30, 0xb4, 0x9f, 0x50, 0x41, 0x10, 0x00, 0x0d, 0x1d, + 0x00, 0x05, 0x07, 0x07, 0x0f, 0x38, 0xac, 0xeb, 0xd0, 0x29, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x35, 0xd5, 0xe7, 0x2d, 0x00, 0x0b, 0x44, 0x7d, 0x58, 0x1c, 0x09, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x27, 0x85, 0x66, 0x9a, 0x89, 0x24, 0x06, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x4c, 0x48, 0x0a, 0x22, 0x8c, 0x99, 0x24, 0x07, 0x00, 0x00, 0x04, 0x08, 0x09, 0x50, + 0x28, 0x00, 0x01, 0x1b, 0x94, 0x9b, 0x23, 0x07, 0x00, 0x00, 0x03, 0x07, 0x44, 0x1f, 0x00, 0x00, + 0x03, 0x22, 0xa5, 0x9a, 0x24, 0x0d, 0x07, 0x03, 0x03, 0x2a, 0x1f, 0x00, 0x04, 0x02, 0x0a, 0x30, + 0xb3, 0x9e, 0x4a, 0x44, 0x14, 0x00, 0x0c, 0x19, 0x00, 0x05, 0x07, 0x07, 0x0f, 0x38, 0xac, 0xe1, + 0xdd, 0x3c, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0x31, 0xc3, 0xfb, 0x45, 0x00, + 0x0a, 0x43, 0x7b, 0x56, 0x1b, 0x08, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x26, 0x83, 0x65, + 0x98, 0x88, 0x23, 0x05, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x4c, 0x47, 0x0a, 0x22, 0x8b, 0x97, + 0x24, 0x07, 0x00, 0x00, 0x04, 0x08, 0x08, 0x4e, 0x27, 0x00, 0x01, 0x1b, 0x93, 0x9a, 0x22, 0x07, + 0x00, 0x00, 0x03, 0x08, 0x40, 0x1e, 0x00, 0x00, 0x03, 0x22, 0xa4, 0x99, 0x23, 0x0c, 0x06, 0x04, + 0x00, 0x27, 0x1d, 0x00, 0x03, 0x02, 0x0a, 0x2f, 0xb2, 0x9e, 0x44, 0x45, 0x1a, 0x02, 0x0a, 0x14, + 0x00, 0x05, 0x07, 0x07, 0x0f, 0x37, 0xab, 0xd7, 0xe3, 0x50, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x2d, 0xb1, 0xff, 0x60, 0x00, 0x0b, 0x43, 0x7b, 0x56, 0x1b, 0x08, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x25, 0x81, 0x65, 0x98, 0x88, 0x23, 0x06, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x49, 0x46, 0x0a, 0x22, 0x8a, 0x97, 0x23, 0x07, 0x00, 0x00, 0x04, 0x08, 0x08, 0x4c, + 0x25, 0x00, 0x01, 0x1a, 0x92, 0x99, 0x22, 0x07, 0x00, 0x00, 0x03, 0x06, 0x3e, 0x1b, 0x00, 0x00, + 0x03, 0x21, 0xa3, 0x98, 0x23, 0x0c, 0x06, 0x05, 0x03, 0x24, 0x19, 0x00, 0x03, 0x02, 0x0a, 0x2f, + 0xb1, 0x9d, 0x3f, 0x45, 0x1f, 0x02, 0x08, 0x0f, 0x00, 0x05, 0x07, 0x07, 0x0f, 0x37, 0xab, 0xd1, + 0xe5, 0x68, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x2c, 0xa3, 0xff, 0x7c, 0x03, + 0x0a, 0x41, 0x79, 0x55, 0x1b, 0x08, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x24, 0x7f, 0x63, + 0x96, 0x85, 0x23, 0x05, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x48, 0x44, 0x0a, 0x21, 0x89, 0x96, + 0x23, 0x07, 0x00, 0x00, 0x05, 0x08, 0x08, 0x4a, 0x23, 0x00, 0x00, 0x1a, 0x90, 0x98, 0x22, 0x07, + 0x00, 0x00, 0x03, 0x05, 0x3b, 0x1a, 0x00, 0x00, 0x04, 0x21, 0xa2, 0x97, 0x23, 0x0c, 0x06, 0x05, + 0x04, 0x20, 0x16, 0x00, 0x03, 0x02, 0x0a, 0x2e, 0xb1, 0x9c, 0x3b, 0x45, 0x26, 0x03, 0x06, 0x0c, + 0x00, 0x05, 0x07, 0x07, 0x0f, 0x37, 0xab, 0xca, 0xe4, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x2c, 0x97, 0xff, 0x99, 0x07, 0x09, 0x41, 0x78, 0x55, 0x1b, 0x08, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x23, 0x7d, 0x63, 0x96, 0x86, 0x23, 0x06, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x46, 0x43, 0x0a, 0x21, 0x88, 0x95, 0x23, 0x07, 0x00, 0x00, 0x05, 0x08, 0x08, 0x49, + 0x23, 0x00, 0x01, 0x1a, 0x90, 0x98, 0x22, 0x07, 0x00, 0x00, 0x03, 0x04, 0x38, 0x19, 0x00, 0x00, + 0x04, 0x21, 0xa2, 0x96, 0x22, 0x0b, 0x07, 0x06, 0x04, 0x1e, 0x13, 0x00, 0x03, 0x02, 0x0a, 0x2e, + 0xb0, 0x9c, 0x39, 0x45, 0x2e, 0x06, 0x05, 0x08, 0x00, 0x05, 0x07, 0x07, 0x0f, 0x37, 0xab, 0xc6, + 0xe2, 0x99, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x2c, 0x8f, 0xfe, 0xb4, 0x0f, + 0x09, 0x3f, 0x76, 0x53, 0x1b, 0x08, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x22, 0x7b, 0x61, + 0x94, 0x85, 0x22, 0x04, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x44, 0x41, 0x0a, 0x20, 0x86, 0x94, + 0x23, 0x06, 0x00, 0x00, 0x05, 0x08, 0x08, 0x46, 0x21, 0x00, 0x01, 0x1a, 0x8f, 0x96, 0x20, 0x06, + 0x00, 0x00, 0x03, 0x04, 0x35, 0x16, 0x00, 0x00, 0x04, 0x20, 0xa1, 0x95, 0x22, 0x0b, 0x07, 0x06, + 0x04, 0x1a, 0x10, 0x00, 0x03, 0x02, 0x0b, 0x2d, 0xaf, 0x9b, 0x35, 0x44, 0x37, 0x0a, 0x03, 0x05, + 0x00, 0x05, 0x07, 0x06, 0x0e, 0x36, 0xaa, 0xc2, 0xdd, 0xb4, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x2b, 0x87, 0xf6, 0xcb, 0x1a, 0x09, 0x3e, 0x75, 0x53, 0x1b, 0x08, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x22, 0x7a, 0x5f, 0x93, 0x84, 0x21, 0x04, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x43, 0x3f, 0x0a, 0x1f, 0x86, 0x93, 0x22, 0x06, 0x00, 0x00, 0x05, 0x08, 0x08, 0x44, + 0x20, 0x00, 0x01, 0x19, 0x8e, 0x96, 0x20, 0x06, 0x00, 0x00, 0x03, 0x05, 0x32, 0x15, 0x00, 0x00, + 0x04, 0x1f, 0xa0, 0x95, 0x22, 0x0a, 0x07, 0x07, 0x05, 0x16, 0x0e, 0x00, 0x03, 0x02, 0x0b, 0x2d, + 0xae, 0x9b, 0x34, 0x44, 0x42, 0x0f, 0x02, 0x03, 0x00, 0x05, 0x07, 0x06, 0x0e, 0x35, 0xaa, 0xbf, + 0xd8, 0xcc, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x2c, 0x85, 0xeb, 0xdc, 0x27, + 0x09, 0x3d, 0x73, 0x51, 0x1a, 0x07, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x21, 0x78, 0x5e, + 0x91, 0x83, 0x21, 0x04, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x40, 0x3e, 0x09, 0x1f, 0x85, 0x92, + 0x22, 0x06, 0x00, 0x00, 0x05, 0x08, 0x08, 0x41, 0x1e, 0x00, 0x01, 0x19, 0x8d, 0x95, 0x20, 0x06, + 0x00, 0x00, 0x03, 0x05, 0x2f, 0x13, 0x00, 0x00, 0x04, 0x1f, 0x9f, 0x94, 0x22, 0x0a, 0x07, 0x09, + 0x05, 0x14, 0x0c, 0x01, 0x03, 0x02, 0x0b, 0x2d, 0xad, 0x9a, 0x33, 0x43, 0x4e, 0x13, 0x01, 0x02, + 0x00, 0x05, 0x07, 0x06, 0x0e, 0x35, 0xa9, 0xbe, 0xd1, 0xe1, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x2c, 0x83, 0xe0, 0xe8, 0x35, 0x09, 0x3c, 0x72, 0x50, 0x19, 0x07, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x20, 0x74, 0x5d, 0x8f, 0x80, 0x21, 0x05, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x3e, 0x3c, 0x09, 0x1e, 0x84, 0x91, 0x22, 0x06, 0x00, 0x00, 0x04, 0x07, 0x07, 0x3e, + 0x1d, 0x00, 0x01, 0x19, 0x8c, 0x94, 0x20, 0x07, 0x00, 0x01, 0x04, 0x05, 0x2a, 0x10, 0x00, 0x00, + 0x04, 0x1f, 0x9e, 0x93, 0x21, 0x0a, 0x0a, 0x0c, 0x08, 0x11, 0x0b, 0x01, 0x03, 0x02, 0x0b, 0x2d, + 0xad, 0x9a, 0x31, 0x43, 0x5d, 0x1a, 0x00, 0x01, 0x00, 0x05, 0x07, 0x06, 0x0e, 0x35, 0xa9, 0xbc, + 0xca, 0xf4, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x2b, 0x82, 0xd5, 0xed, 0x44, + 0x08, 0x3b, 0x70, 0x4f, 0x19, 0x07, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x1e, 0x73, 0x5b, + 0x8e, 0x7f, 0x20, 0x04, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x3d, 0x3a, 0x08, 0x1e, 0x82, 0x90, + 0x22, 0x06, 0x00, 0x00, 0x04, 0x07, 0x07, 0x3a, 0x1b, 0x00, 0x01, 0x18, 0x8b, 0x93, 0x1f, 0x06, + 0x00, 0x01, 0x04, 0x04, 0x25, 0x0e, 0x00, 0x00, 0x04, 0x1e, 0x9c, 0x92, 0x20, 0x09, 0x0b, 0x0f, + 0x08, 0x0f, 0x09, 0x04, 0x03, 0x02, 0x0b, 0x2c, 0xad, 0x99, 0x30, 0x42, 0x6e, 0x24, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x06, 0x0e, 0x34, 0xa8, 0xba, 0xc3, 0xff, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x2b, 0x80, 0xc9, 0xea, 0x51, 0x08, 0x39, 0x6f, 0x4f, 0x18, 0x07, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x1e, 0x70, 0x5b, 0x8d, 0x7e, 0x20, 0x06, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x3b, 0x37, 0x08, 0x1d, 0x81, 0x8f, 0x20, 0x06, 0x00, 0x00, 0x04, 0x06, 0x06, 0x37, + 0x19, 0x00, 0x01, 0x18, 0x8a, 0x91, 0x1f, 0x06, 0x00, 0x01, 0x05, 0x05, 0x20, 0x0c, 0x00, 0x00, + 0x04, 0x1e, 0x9c, 0x91, 0x20, 0x09, 0x0c, 0x14, 0x0b, 0x0b, 0x08, 0x07, 0x03, 0x02, 0x0b, 0x2c, + 0xac, 0x98, 0x2f, 0x40, 0x82, 0x32, 0x00, 0x00, 0x00, 0x05, 0x07, 0x06, 0x0e, 0x34, 0xa8, 0xba, + 0xbb, 0xff, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x2b, 0x81, 0xc2, 0xe1, 0x5c, + 0x07, 0x38, 0x6c, 0x4d, 0x18, 0x07, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x1c, 0x6e, 0x5a, + 0x8b, 0x7c, 0x20, 0x06, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x38, 0x35, 0x08, 0x1d, 0x7f, 0x8d, + 0x20, 0x06, 0x00, 0x00, 0x04, 0x06, 0x06, 0x32, 0x16, 0x00, 0x01, 0x17, 0x89, 0x90, 0x1e, 0x06, + 0x00, 0x01, 0x05, 0x05, 0x1c, 0x0a, 0x00, 0x00, 0x04, 0x1e, 0x9b, 0x8f, 0x20, 0x09, 0x0e, 0x1a, + 0x0f, 0x09, 0x04, 0x06, 0x03, 0x02, 0x0a, 0x2b, 0xa9, 0x98, 0x2e, 0x3f, 0x95, 0x44, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x06, 0x0e, 0x33, 0xa6, 0xb9, 0xb3, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x2a, 0x81, 0xbc, 0xd3, 0x64, 0x07, 0x37, 0x6c, 0x4c, 0x17, 0x07, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x1c, 0x6b, 0x58, 0x8a, 0x7b, 0x1f, 0x06, 0x00, 0x00, 0x05, 0x09, + 0x09, 0x09, 0x37, 0x33, 0x05, 0x1d, 0x7e, 0x8c, 0x1f, 0x06, 0x00, 0x00, 0x04, 0x06, 0x06, 0x30, + 0x14, 0x00, 0x01, 0x16, 0x88, 0x90, 0x1e, 0x06, 0x00, 0x02, 0x05, 0x05, 0x18, 0x09, 0x00, 0x00, + 0x04, 0x1d, 0x99, 0x8f, 0x20, 0x08, 0x10, 0x21, 0x14, 0x07, 0x03, 0x06, 0x04, 0x02, 0x0a, 0x2b, + 0xa9, 0x97, 0x2c, 0x3d, 0xa8, 0x59, 0x00, 0x00, 0x00, 0x05, 0x07, 0x06, 0x0e, 0x33, 0xa6, 0xb9, + 0xac, 0xff, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x2a, 0x80, 0xb8, 0xc4, 0x66, + 0x07, 0x33, 0x68, 0x4a, 0x16, 0x07, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x1a, 0x66, 0x55, + 0x86, 0x7a, 0x1e, 0x06, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x30, 0x2f, 0x06, 0x1b, 0x7c, 0x8b, + 0x1f, 0x06, 0x00, 0x00, 0x03, 0x05, 0x04, 0x2b, 0x12, 0x00, 0x02, 0x16, 0x87, 0x8e, 0x1e, 0x05, + 0x00, 0x03, 0x06, 0x04, 0x14, 0x07, 0x00, 0x00, 0x03, 0x1d, 0x98, 0x8e, 0x20, 0x08, 0x11, 0x29, + 0x1d, 0x05, 0x03, 0x06, 0x02, 0x02, 0x0a, 0x2a, 0xa8, 0x95, 0x2c, 0x3a, 0xbb, 0x74, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x0d, 0x32, 0xa4, 0xb7, 0xa6, 0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x29, 0x80, 0xb5, 0xb3, 0x64, 0x07, 0x33, 0x68, 0x4a, 0x16, 0x07, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x1a, 0x65, 0x54, 0x85, 0x78, 0x1d, 0x06, 0x00, 0x00, 0x05, 0x08, + 0x08, 0x09, 0x2f, 0x2e, 0x05, 0x1a, 0x7c, 0x8a, 0x1e, 0x06, 0x00, 0x00, 0x04, 0x05, 0x03, 0x26, + 0x10, 0x00, 0x02, 0x16, 0x85, 0x8e, 0x1e, 0x05, 0x00, 0x04, 0x05, 0x04, 0x10, 0x07, 0x01, 0x00, + 0x03, 0x1d, 0x98, 0x8d, 0x20, 0x07, 0x11, 0x31, 0x25, 0x05, 0x02, 0x05, 0x02, 0x02, 0x0a, 0x2a, + 0xa8, 0x95, 0x2c, 0x38, 0xcc, 0x91, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0d, 0x32, 0xa4, 0xb7, + 0x9f, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x29, 0x80, 0xb5, 0xa2, 0x5c, + 0x06, 0x32, 0x64, 0x48, 0x16, 0x07, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x17, 0x61, 0x51, + 0x82, 0x76, 0x1d, 0x06, 0x00, 0x00, 0x05, 0x09, 0x07, 0x07, 0x2b, 0x2c, 0x06, 0x18, 0x7a, 0x89, + 0x1e, 0x06, 0x00, 0x00, 0x04, 0x05, 0x05, 0x21, 0x0e, 0x00, 0x02, 0x15, 0x84, 0x8c, 0x1d, 0x05, + 0x00, 0x04, 0x09, 0x07, 0x0d, 0x06, 0x00, 0x00, 0x03, 0x1c, 0x97, 0x8b, 0x1f, 0x07, 0x12, 0x3f, + 0x32, 0x05, 0x02, 0x03, 0x02, 0x02, 0x0a, 0x29, 0xa6, 0x94, 0x2b, 0x35, 0xd8, 0xb0, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0d, 0x31, 0xa3, 0xb6, 0x9a, 0xff, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x28, 0x7e, 0xb4, 0x94, 0x50, 0x06, 0x30, 0x63, 0x47, 0x16, 0x08, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x16, 0x5f, 0x50, 0x82, 0x75, 0x1d, 0x06, 0x00, 0x00, 0x05, 0x08, + 0x07, 0x07, 0x28, 0x28, 0x05, 0x19, 0x79, 0x87, 0x1d, 0x07, 0x00, 0x00, 0x04, 0x05, 0x05, 0x1b, + 0x0b, 0x00, 0x02, 0x15, 0x83, 0x8b, 0x1c, 0x05, 0x00, 0x04, 0x0c, 0x0b, 0x09, 0x04, 0x00, 0x00, + 0x03, 0x1b, 0x96, 0x8b, 0x1f, 0x06, 0x12, 0x51, 0x48, 0x05, 0x02, 0x04, 0x02, 0x02, 0x0a, 0x29, + 0xa6, 0x94, 0x2b, 0x32, 0xdf, 0xcc, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0d, 0x31, 0xa3, 0xb6, + 0x95, 0xf9, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x28, 0x7e, 0xb3, 0x88, 0x42, + 0x05, 0x2f, 0x61, 0x45, 0x15, 0x08, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x14, 0x5a, 0x4f, + 0x7f, 0x73, 0x1c, 0x06, 0x00, 0x00, 0x06, 0x06, 0x05, 0x05, 0x24, 0x25, 0x05, 0x18, 0x76, 0x85, + 0x1d, 0x06, 0x00, 0x00, 0x04, 0x05, 0x05, 0x16, 0x09, 0x00, 0x02, 0x15, 0x80, 0x8a, 0x1b, 0x05, + 0x00, 0x05, 0x11, 0x11, 0x07, 0x05, 0x00, 0x00, 0x03, 0x1b, 0x94, 0x8a, 0x1f, 0x06, 0x11, 0x64, + 0x62, 0x05, 0x02, 0x03, 0x02, 0x02, 0x0a, 0x28, 0xa4, 0x93, 0x2b, 0x2f, 0xe1, 0xe4, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0d, 0x30, 0xa1, 0xb5, 0x91, 0xee, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x27, 0x7d, 0xb3, 0x81, 0x35, 0x05, 0x2d, 0x5e, 0x44, 0x15, 0x08, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x13, 0x56, 0x4c, 0x7d, 0x72, 0x1b, 0x06, 0x00, 0x00, 0x06, 0x06, + 0x05, 0x05, 0x20, 0x21, 0x04, 0x17, 0x75, 0x84, 0x1c, 0x06, 0x00, 0x00, 0x04, 0x05, 0x05, 0x10, + 0x08, 0x00, 0x02, 0x15, 0x80, 0x89, 0x1b, 0x05, 0x00, 0x06, 0x17, 0x18, 0x05, 0x05, 0x00, 0x00, + 0x03, 0x1b, 0x93, 0x89, 0x1d, 0x06, 0x11, 0x79, 0x83, 0x05, 0x02, 0x03, 0x02, 0x02, 0x0a, 0x28, + 0xa3, 0x92, 0x2b, 0x2c, 0xde, 0xf4, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0d, 0x30, 0xa1, 0xb4, + 0x8e, 0xe3, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x27, 0x7c, 0xb3, 0x7d, 0x2c, + 0x05, 0x2a, 0x5b, 0x42, 0x15, 0x08, 0x04, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x11, 0x51, 0x4a, + 0x7b, 0x71, 0x1b, 0x06, 0x00, 0x00, 0x06, 0x04, 0x05, 0x05, 0x1b, 0x1e, 0x03, 0x17, 0x73, 0x82, + 0x1c, 0x07, 0x00, 0x00, 0x04, 0x04, 0x04, 0x0f, 0x08, 0x00, 0x02, 0x14, 0x7e, 0x88, 0x1b, 0x06, + 0x00, 0x08, 0x1d, 0x20, 0x05, 0x01, 0x01, 0x00, 0x03, 0x1b, 0x91, 0x88, 0x1d, 0x05, 0x12, 0x8d, + 0xa7, 0x05, 0x00, 0x02, 0x02, 0x02, 0x0a, 0x27, 0xa3, 0x91, 0x2b, 0x29, 0xd8, 0xfc, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0d, 0x2f, 0xa0, 0xb4, 0x8c, 0xdb, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x27, 0x7b, 0xb2, 0x7a, 0x24, 0x04, 0x29, 0x59, 0x41, 0x14, 0x08, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x4d, 0x47, 0x78, 0x6e, 0x1b, 0x06, 0x00, 0x00, 0x06, 0x04, + 0x05, 0x05, 0x17, 0x19, 0x04, 0x15, 0x72, 0x80, 0x1b, 0x07, 0x00, 0x00, 0x04, 0x06, 0x07, 0x0b, + 0x07, 0x00, 0x02, 0x13, 0x7d, 0x86, 0x1a, 0x06, 0x00, 0x08, 0x2a, 0x33, 0x05, 0x01, 0x00, 0x00, + 0x03, 0x1a, 0x90, 0x87, 0x1d, 0x05, 0x12, 0xa0, 0xc9, 0x05, 0x00, 0x02, 0x01, 0x02, 0x0a, 0x27, + 0xa2, 0x90, 0x2b, 0x25, 0xce, 0xfd, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0d, 0x2f, 0x9f, 0xb3, + 0x8a, 0xd3, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x26, 0x7a, 0xb2, 0x78, 0x1e, + 0x04, 0x27, 0x56, 0x3f, 0x13, 0x08, 0x04, 0x00, 0x05, 0x09, 0x09, 0x06, 0x06, 0x0c, 0x49, 0x44, + 0x76, 0x6d, 0x1a, 0x06, 0x00, 0x00, 0x06, 0x01, 0x05, 0x05, 0x13, 0x17, 0x05, 0x15, 0x71, 0x7f, + 0x1b, 0x07, 0x00, 0x00, 0x01, 0x0a, 0x0c, 0x08, 0x04, 0x00, 0x02, 0x12, 0x7b, 0x85, 0x1a, 0x06, + 0x00, 0x09, 0x38, 0x4b, 0x05, 0x00, 0x00, 0x00, 0x02, 0x1a, 0x8f, 0x85, 0x1c, 0x05, 0x11, 0xae, + 0xe6, 0x06, 0x00, 0x02, 0x01, 0x02, 0x0a, 0x25, 0xa0, 0x8e, 0x2a, 0x22, 0xc1, 0xf5, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2e, 0x9d, 0xb2, 0x88, 0xce, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x26, 0x79, 0xb0, 0x77, 0x1a, 0x04, 0x26, 0x53, 0x3e, 0x12, 0x07, 0x04, 0x00, + 0x05, 0x09, 0x09, 0x06, 0x06, 0x0b, 0x44, 0x42, 0x73, 0x6c, 0x19, 0x06, 0x00, 0x00, 0x05, 0x01, + 0x05, 0x05, 0x0f, 0x13, 0x03, 0x14, 0x6f, 0x7e, 0x1a, 0x07, 0x00, 0x00, 0x01, 0x0d, 0x11, 0x06, + 0x04, 0x00, 0x00, 0x12, 0x7a, 0x84, 0x19, 0x06, 0x00, 0x09, 0x4b, 0x6b, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x19, 0x8e, 0x84, 0x1c, 0x04, 0x11, 0xb8, 0xfb, 0x06, 0x00, 0x03, 0x02, 0x02, 0x0a, 0x25, + 0x9f, 0x8e, 0x2b, 0x1f, 0xb5, 0xe7, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2e, 0x9d, 0xb1, + 0x87, 0xcb, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x25, 0x78, 0xb0, 0x76, 0x1a, + 0x04, 0x24, 0x51, 0x3d, 0x12, 0x07, 0x03, 0x00, 0x05, 0x09, 0x05, 0x05, 0x05, 0x09, 0x3e, 0x40, + 0x71, 0x6a, 0x19, 0x07, 0x00, 0x00, 0x05, 0x03, 0x05, 0x05, 0x0e, 0x11, 0x03, 0x13, 0x6d, 0x7c, + 0x1a, 0x07, 0x00, 0x00, 0x04, 0x12, 0x15, 0x05, 0x02, 0x00, 0x01, 0x12, 0x79, 0x82, 0x19, 0x06, + 0x00, 0x08, 0x61, 0x8f, 0x05, 0x00, 0x00, 0x00, 0x01, 0x18, 0x8d, 0x83, 0x1c, 0x04, 0x11, 0xbb, + 0xff, 0x08, 0x00, 0x02, 0x02, 0x02, 0x0a, 0x25, 0x9e, 0x8d, 0x2b, 0x1d, 0xa8, 0xd6, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2e, 0x9c, 0xb0, 0x86, 0xc9, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x25, 0x78, 0xaf, 0x75, 0x19, 0x04, 0x21, 0x4e, 0x3b, 0x11, 0x07, 0x03, 0x00, + 0x05, 0x08, 0x06, 0x05, 0x05, 0x07, 0x38, 0x3e, 0x6f, 0x68, 0x18, 0x07, 0x00, 0x00, 0x04, 0x03, + 0x05, 0x05, 0x0d, 0x0e, 0x03, 0x13, 0x6c, 0x7a, 0x19, 0x06, 0x00, 0x00, 0x03, 0x1a, 0x24, 0x04, + 0x02, 0x00, 0x01, 0x11, 0x77, 0x81, 0x19, 0x06, 0x00, 0x09, 0x78, 0xb4, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x18, 0x8b, 0x82, 0x1b, 0x04, 0x0f, 0xb9, 0xff, 0x09, 0x00, 0x02, 0x02, 0x02, 0x0a, 0x24, + 0x9d, 0x8c, 0x2b, 0x1b, 0x9d, 0xc4, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2d, 0x9b, 0xb0, + 0x85, 0xc9, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x24, 0x77, 0xae, 0x75, 0x18, + 0x01, 0x1e, 0x4a, 0x39, 0x11, 0x07, 0x03, 0x01, 0x05, 0x06, 0x03, 0x05, 0x05, 0x05, 0x32, 0x3b, + 0x6c, 0x66, 0x18, 0x07, 0x00, 0x00, 0x01, 0x03, 0x07, 0x09, 0x0a, 0x0b, 0x04, 0x13, 0x6a, 0x79, + 0x19, 0x06, 0x00, 0x00, 0x06, 0x26, 0x38, 0x04, 0x03, 0x00, 0x00, 0x11, 0x76, 0x7f, 0x19, 0x06, + 0x00, 0x09, 0x8d, 0xd6, 0x05, 0x00, 0x00, 0x00, 0x01, 0x17, 0x89, 0x81, 0x1b, 0x04, 0x0f, 0xb3, + 0xff, 0x09, 0x02, 0x03, 0x02, 0x02, 0x0a, 0x24, 0x9b, 0x8a, 0x29, 0x18, 0x94, 0xb3, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2c, 0x99, 0xae, 0x84, 0xc8, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x23, 0x76, 0xad, 0x74, 0x18, 0x01, 0x1c, 0x48, 0x37, 0x10, 0x06, 0x03, 0x00, + 0x05, 0x06, 0x03, 0x05, 0x05, 0x05, 0x2c, 0x38, 0x6b, 0x64, 0x17, 0x07, 0x00, 0x00, 0x01, 0x03, + 0x0a, 0x0d, 0x07, 0x09, 0x05, 0x13, 0x68, 0x77, 0x18, 0x06, 0x00, 0x00, 0x07, 0x36, 0x53, 0x03, + 0x03, 0x00, 0x00, 0x10, 0x74, 0x7e, 0x18, 0x05, 0x00, 0x0a, 0xa1, 0xf1, 0x07, 0x00, 0x00, 0x00, + 0x01, 0x17, 0x88, 0x80, 0x1b, 0x04, 0x0f, 0xa8, 0xf8, 0x09, 0x02, 0x04, 0x03, 0x02, 0x0a, 0x24, + 0x9a, 0x8a, 0x29, 0x17, 0x8e, 0xa7, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2c, 0x99, 0xae, + 0x83, 0xc8, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x23, 0x75, 0xad, 0x73, 0x17, + 0x01, 0x19, 0x44, 0x36, 0x10, 0x07, 0x03, 0x00, 0x05, 0x06, 0x04, 0x05, 0x05, 0x05, 0x27, 0x35, + 0x68, 0x63, 0x16, 0x07, 0x00, 0x00, 0x01, 0x04, 0x0d, 0x11, 0x05, 0x07, 0x04, 0x12, 0x67, 0x75, + 0x18, 0x07, 0x00, 0x00, 0x06, 0x4b, 0x72, 0x03, 0x02, 0x00, 0x00, 0x0f, 0x72, 0x7d, 0x17, 0x05, + 0x00, 0x0c, 0xb1, 0xff, 0x07, 0x00, 0x00, 0x00, 0x01, 0x16, 0x87, 0x7f, 0x1b, 0x04, 0x0c, 0x9d, + 0xe9, 0x09, 0x02, 0x03, 0x02, 0x02, 0x0a, 0x23, 0x99, 0x89, 0x29, 0x16, 0x88, 0x9d, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2c, 0x98, 0xad, 0x82, 0xc7, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x23, 0x75, 0xac, 0x72, 0x17, 0x00, 0x16, 0x41, 0x35, 0x10, 0x06, 0x03, 0x00, + 0x06, 0x06, 0x04, 0x05, 0x05, 0x02, 0x21, 0x33, 0x66, 0x60, 0x16, 0x07, 0x00, 0x00, 0x01, 0x04, + 0x15, 0x1b, 0x07, 0x06, 0x04, 0x11, 0x65, 0x74, 0x17, 0x06, 0x00, 0x00, 0x07, 0x63, 0x98, 0x03, + 0x01, 0x00, 0x00, 0x0f, 0x72, 0x7c, 0x16, 0x06, 0x00, 0x0d, 0xba, 0xff, 0x07, 0x00, 0x00, 0x00, + 0x01, 0x16, 0x85, 0x7e, 0x1a, 0x04, 0x0c, 0x91, 0xd9, 0x09, 0x02, 0x03, 0x02, 0x02, 0x0a, 0x23, + 0x98, 0x88, 0x29, 0x15, 0x85, 0x97, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2b, 0x97, 0xac, + 0x82, 0xc7, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x22, 0x74, 0xab, 0x72, 0x17, + 0x00, 0x13, 0x3e, 0x32, 0x0f, 0x06, 0x03, 0x00, 0x06, 0x03, 0x04, 0x07, 0x06, 0x03, 0x1c, 0x30, + 0x63, 0x5e, 0x16, 0x07, 0x00, 0x00, 0x00, 0x06, 0x1f, 0x29, 0x07, 0x04, 0x03, 0x10, 0x63, 0x72, + 0x16, 0x06, 0x00, 0x00, 0x0a, 0x80, 0xbb, 0x03, 0x01, 0x00, 0x00, 0x0e, 0x71, 0x7a, 0x16, 0x05, + 0x00, 0x0e, 0xbd, 0xff, 0x07, 0x00, 0x00, 0x00, 0x01, 0x15, 0x84, 0x7c, 0x19, 0x05, 0x0b, 0x85, + 0xca, 0x09, 0x02, 0x03, 0x02, 0x02, 0x0a, 0x22, 0x96, 0x86, 0x27, 0x14, 0x84, 0x95, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2b, 0x96, 0xaa, 0x80, 0xc6, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x22, 0x73, 0xa9, 0x70, 0x17, 0x00, 0x10, 0x3a, 0x31, 0x0e, 0x05, 0x03, 0x01, + 0x06, 0x02, 0x02, 0x08, 0x0a, 0x03, 0x16, 0x2d, 0x60, 0x5d, 0x15, 0x07, 0x00, 0x00, 0x00, 0x08, + 0x2c, 0x3e, 0x07, 0x04, 0x03, 0x0f, 0x61, 0x71, 0x16, 0x05, 0x00, 0x00, 0x0c, 0x9b, 0xd8, 0x03, + 0x02, 0x00, 0x00, 0x0e, 0x6f, 0x78, 0x17, 0x05, 0x00, 0x0f, 0xbc, 0xfe, 0x08, 0x00, 0x00, 0x00, + 0x01, 0x15, 0x83, 0x7b, 0x19, 0x04, 0x0a, 0x79, 0xbd, 0x09, 0x02, 0x03, 0x03, 0x02, 0x0a, 0x22, + 0x96, 0x86, 0x27, 0x13, 0x82, 0x95, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2b, 0x96, 0xaa, + 0x80, 0xc5, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x22, 0x73, 0xa9, 0x70, 0x16, + 0x00, 0x0e, 0x37, 0x2f, 0x0e, 0x05, 0x03, 0x01, 0x05, 0x02, 0x03, 0x0c, 0x0d, 0x03, 0x12, 0x2a, + 0x5d, 0x5b, 0x14, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x40, 0x56, 0x07, 0x04, 0x02, 0x0e, 0x5f, 0x6f, + 0x15, 0x05, 0x00, 0x00, 0x10, 0xb5, 0xed, 0x03, 0x04, 0x00, 0x00, 0x0d, 0x6d, 0x77, 0x17, 0x05, + 0x00, 0x10, 0xb6, 0xf0, 0x07, 0x01, 0x00, 0x00, 0x01, 0x14, 0x82, 0x7a, 0x18, 0x04, 0x07, 0x70, + 0xb2, 0x09, 0x01, 0x03, 0x03, 0x02, 0x0a, 0x22, 0x94, 0x84, 0x27, 0x13, 0x81, 0x94, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2a, 0x94, 0xa9, 0x7f, 0xc4, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x22, 0x72, 0xa8, 0x70, 0x16, 0x02, 0x0c, 0x33, 0x2d, 0x0d, 0x05, 0x03, 0x01, + 0x05, 0x02, 0x04, 0x10, 0x13, 0x00, 0x0f, 0x27, 0x5b, 0x58, 0x14, 0x07, 0x00, 0x00, 0x00, 0x0c, + 0x59, 0x72, 0x04, 0x03, 0x01, 0x0f, 0x5e, 0x6e, 0x15, 0x05, 0x00, 0x00, 0x14, 0xc9, 0xf8, 0x08, + 0x02, 0x00, 0x00, 0x0d, 0x6c, 0x76, 0x16, 0x04, 0x00, 0x11, 0xad, 0xe0, 0x07, 0x03, 0x00, 0x00, + 0x01, 0x13, 0x80, 0x78, 0x18, 0x04, 0x07, 0x69, 0xad, 0x09, 0x01, 0x03, 0x04, 0x02, 0x0a, 0x21, + 0x93, 0x84, 0x26, 0x12, 0x80, 0x92, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0c, 0x2a, 0x94, 0xa8, + 0x7e, 0xc3, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x22, 0x71, 0xa8, 0x6f, 0x16, + 0x01, 0x0b, 0x2f, 0x2c, 0x0d, 0x05, 0x03, 0x00, 0x04, 0x02, 0x06, 0x19, 0x1d, 0x00, 0x0b, 0x24, + 0x57, 0x57, 0x14, 0x07, 0x00, 0x00, 0x00, 0x10, 0x77, 0x8f, 0x06, 0x03, 0x01, 0x0f, 0x5c, 0x6c, + 0x15, 0x06, 0x00, 0x00, 0x1a, 0xd7, 0xf8, 0x07, 0x03, 0x00, 0x00, 0x0d, 0x6b, 0x74, 0x15, 0x05, + 0x00, 0x11, 0xa2, 0xd0, 0x07, 0x03, 0x00, 0x00, 0x01, 0x14, 0x7f, 0x78, 0x18, 0x04, 0x07, 0x65, + 0xa9, 0x09, 0x02, 0x03, 0x04, 0x02, 0x0a, 0x20, 0x92, 0x83, 0x26, 0x12, 0x81, 0x91, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0c, 0x29, 0x92, 0xa7, 0x7d, 0xc3, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x21, 0x70, 0xa7, 0x6e, 0x16, 0x01, 0x08, 0x2b, 0x2a, 0x0d, 0x05, 0x03, 0x02, + 0x02, 0x02, 0x09, 0x25, 0x29, 0x00, 0x09, 0x22, 0x55, 0x55, 0x13, 0x06, 0x00, 0x00, 0x00, 0x15, + 0x99, 0xa7, 0x06, 0x02, 0x00, 0x0d, 0x5a, 0x6b, 0x15, 0x05, 0x00, 0x00, 0x1f, 0xe1, 0xf1, 0x08, + 0x02, 0x00, 0x00, 0x0c, 0x69, 0x74, 0x16, 0x04, 0x00, 0x12, 0x98, 0xc1, 0x07, 0x03, 0x01, 0x00, + 0x01, 0x13, 0x7e, 0x77, 0x18, 0x04, 0x07, 0x62, 0xa8, 0x09, 0x01, 0x03, 0x04, 0x02, 0x0a, 0x20, + 0x91, 0x82, 0x25, 0x12, 0x80, 0x91, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0c, 0x29, 0x92, 0xa6, + 0x7d, 0xc2, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x21, 0x6f, 0xa6, 0x6e, 0x16, + 0x02, 0x08, 0x26, 0x28, 0x0b, 0x05, 0x03, 0x01, 0x02, 0x02, 0x0d, 0x35, 0x35, 0x00, 0x06, 0x1e, + 0x51, 0x53, 0x13, 0x06, 0x00, 0x00, 0x00, 0x1e, 0xb9, 0xb9, 0x02, 0x01, 0x00, 0x0d, 0x57, 0x69, + 0x14, 0x05, 0x00, 0x00, 0x25, 0xe6, 0xe4, 0x07, 0x02, 0x00, 0x00, 0x0b, 0x67, 0x72, 0x15, 0x04, + 0x00, 0x11, 0x8a, 0xb6, 0x09, 0x04, 0x00, 0x00, 0x01, 0x12, 0x7c, 0x76, 0x18, 0x03, 0x05, 0x5f, + 0xa8, 0x09, 0x04, 0x00, 0x03, 0x02, 0x0a, 0x1f, 0x8f, 0x81, 0x25, 0x10, 0x7f, 0x90, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0b, 0x28, 0x90, 0xa5, 0x7c, 0xc1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x20, 0x6e, 0xa5, 0x6d, 0x15, 0x03, 0x07, 0x22, 0x25, 0x0b, 0x05, 0x02, 0x02, + 0x02, 0x02, 0x12, 0x47, 0x42, 0x00, 0x04, 0x1b, 0x4e, 0x51, 0x12, 0x06, 0x00, 0x00, 0x00, 0x28, + 0xd7, 0xc3, 0x02, 0x02, 0x00, 0x0d, 0x56, 0x67, 0x13, 0x04, 0x00, 0x00, 0x2a, 0xe6, 0xd4, 0x07, + 0x03, 0x00, 0x00, 0x0a, 0x66, 0x70, 0x16, 0x04, 0x00, 0x0f, 0x80, 0xb0, 0x09, 0x04, 0x00, 0x00, + 0x01, 0x12, 0x7b, 0x74, 0x18, 0x03, 0x02, 0x5f, 0xa7, 0x09, 0x04, 0x00, 0x03, 0x02, 0x09, 0x1e, + 0x8e, 0x80, 0x25, 0x10, 0x7f, 0x90, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0b, 0x28, 0x90, 0xa4, + 0x7b, 0xc0, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x6e, 0xa5, 0x6d, 0x15, + 0x02, 0x05, 0x1d, 0x24, 0x0b, 0x05, 0x02, 0x01, 0x02, 0x02, 0x17, 0x62, 0x50, 0x00, 0x02, 0x16, + 0x4b, 0x4f, 0x11, 0x06, 0x00, 0x00, 0x00, 0x35, 0xf0, 0xc5, 0x02, 0x03, 0x02, 0x0d, 0x55, 0x65, + 0x13, 0x05, 0x00, 0x00, 0x2f, 0xe2, 0xc4, 0x07, 0x02, 0x00, 0x00, 0x0a, 0x65, 0x6f, 0x15, 0x04, + 0x00, 0x0d, 0x77, 0xab, 0x09, 0x04, 0x00, 0x00, 0x01, 0x11, 0x7a, 0x73, 0x17, 0x04, 0x02, 0x5e, + 0xa6, 0x09, 0x04, 0x00, 0x03, 0x02, 0x08, 0x1e, 0x8e, 0x7f, 0x25, 0x10, 0x7e, 0x90, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0b, 0x27, 0x8e, 0xa3, 0x7a, 0xc0, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x1f, 0x6d, 0xa4, 0x6c, 0x15, 0x02, 0x04, 0x1a, 0x21, 0x0a, 0x05, 0x02, 0x01, + 0x02, 0x02, 0x21, 0x7e, 0x5b, 0x00, 0x01, 0x14, 0x48, 0x4c, 0x10, 0x05, 0x00, 0x00, 0x00, 0x44, + 0xff, 0xbf, 0x02, 0x04, 0x01, 0x0c, 0x52, 0x63, 0x12, 0x04, 0x00, 0x00, 0x33, 0xdc, 0xb4, 0x07, + 0x04, 0x00, 0x00, 0x0a, 0x63, 0x6d, 0x14, 0x04, 0x00, 0x0c, 0x72, 0xa9, 0x09, 0x05, 0x00, 0x00, + 0x01, 0x11, 0x78, 0x72, 0x17, 0x04, 0x02, 0x5c, 0xa6, 0x09, 0x04, 0x00, 0x04, 0x02, 0x08, 0x1e, + 0x8d, 0x7e, 0x24, 0x10, 0x7e, 0x90, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0b, 0x27, 0x8e, 0xa3, + 0x7a, 0xbf, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1f, 0x6d, 0xa3, 0x6b, 0x15, + 0x02, 0x03, 0x15, 0x1f, 0x0a, 0x05, 0x02, 0x01, 0x02, 0x02, 0x2d, 0x9c, 0x63, 0x00, 0x01, 0x10, + 0x43, 0x4a, 0x10, 0x05, 0x00, 0x00, 0x00, 0x54, 0xff, 0xb3, 0x02, 0x05, 0x02, 0x0b, 0x50, 0x61, + 0x11, 0x04, 0x00, 0x00, 0x36, 0xd5, 0xa7, 0x07, 0x03, 0x00, 0x00, 0x09, 0x61, 0x6c, 0x14, 0x03, + 0x00, 0x0c, 0x6d, 0xa8, 0x09, 0x05, 0x00, 0x00, 0x01, 0x10, 0x77, 0x72, 0x17, 0x04, 0x02, 0x5c, + 0xa5, 0x09, 0x04, 0x00, 0x04, 0x02, 0x08, 0x1d, 0x8b, 0x7e, 0x23, 0x10, 0x7d, 0x8f, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0b, 0x27, 0x8d, 0xa2, 0x7a, 0xbf, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x1f, 0x6c, 0xa2, 0x6b, 0x14, 0x05, 0x06, 0x11, 0x1b, 0x09, 0x05, 0x02, 0x01, + 0x02, 0x04, 0x3e, 0xb7, 0x65, 0x03, 0x00, 0x0d, 0x3f, 0x48, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x66, + 0xff, 0xa3, 0x01, 0x02, 0x03, 0x0a, 0x4e, 0x60, 0x11, 0x04, 0x00, 0x00, 0x39, 0xcc, 0x9e, 0x07, + 0x07, 0x00, 0x00, 0x09, 0x60, 0x6b, 0x12, 0x03, 0x00, 0x0b, 0x69, 0xa7, 0x09, 0x05, 0x00, 0x00, + 0x01, 0x10, 0x76, 0x71, 0x17, 0x04, 0x02, 0x5b, 0xa5, 0x09, 0x04, 0x00, 0x04, 0x02, 0x08, 0x1d, + 0x8a, 0x7c, 0x22, 0x10, 0x7d, 0x8e, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0b, 0x27, 0x8c, 0xa1, + 0x7a, 0xbe, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1e, 0x6b, 0xa1, 0x6a, 0x14, + 0x02, 0x02, 0x0e, 0x18, 0x08, 0x05, 0x02, 0x00, 0x02, 0x06, 0x51, 0xcc, 0x64, 0x00, 0x00, 0x09, + 0x39, 0x45, 0x0e, 0x05, 0x00, 0x00, 0x03, 0x78, 0xff, 0x94, 0x02, 0x02, 0x01, 0x09, 0x4b, 0x5c, + 0x10, 0x05, 0x00, 0x00, 0x3a, 0xc3, 0x98, 0x07, 0x07, 0x00, 0x00, 0x09, 0x5e, 0x69, 0x11, 0x04, + 0x00, 0x0a, 0x67, 0xa7, 0x09, 0x05, 0x00, 0x00, 0x01, 0x10, 0x74, 0x70, 0x17, 0x01, 0x01, 0x5b, + 0xa4, 0x09, 0x04, 0x00, 0x03, 0x02, 0x08, 0x1d, 0x88, 0x7b, 0x22, 0x0f, 0x7c, 0x8e, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0a, 0x25, 0x8b, 0x9f, 0x78, 0xbd, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x1e, 0x6a, 0xa0, 0x69, 0x14, 0x02, 0x02, 0x0d, 0x15, 0x08, 0x05, 0x02, 0x00, + 0x02, 0x05, 0x69, 0xdc, 0x5c, 0x04, 0x00, 0x03, 0x36, 0x43, 0x0e, 0x05, 0x00, 0x00, 0x03, 0x8a, + 0xff, 0x82, 0x07, 0x01, 0x00, 0x08, 0x49, 0x5b, 0x10, 0x04, 0x00, 0x02, 0x3c, 0xbb, 0x94, 0x07, + 0x05, 0x02, 0x00, 0x08, 0x5c, 0x67, 0x11, 0x03, 0x00, 0x0a, 0x65, 0xa6, 0x09, 0x06, 0x00, 0x00, + 0x01, 0x0f, 0x73, 0x6e, 0x16, 0x01, 0x01, 0x5b, 0xa3, 0x09, 0x04, 0x00, 0x03, 0x02, 0x07, 0x1d, + 0x88, 0x7a, 0x22, 0x0f, 0x7b, 0x8d, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0a, 0x25, 0x8a, 0x9e, + 0x78, 0xbc, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1e, 0x69, 0xa0, 0x69, 0x13, + 0x09, 0x02, 0x0b, 0x12, 0x07, 0x05, 0x02, 0x00, 0x02, 0x09, 0x84, 0xe7, 0x52, 0x09, 0x00, 0x04, + 0x2f, 0x3f, 0x0d, 0x05, 0x00, 0x00, 0x07, 0x9c, 0xff, 0x72, 0x09, 0x00, 0x00, 0x07, 0x46, 0x58, + 0x10, 0x03, 0x00, 0x04, 0x3d, 0xb3, 0x93, 0x09, 0x05, 0x00, 0x00, 0x07, 0x5a, 0x66, 0x12, 0x02, + 0x00, 0x08, 0x63, 0xa5, 0x09, 0x07, 0x00, 0x00, 0x01, 0x0e, 0x71, 0x6c, 0x15, 0x01, 0x01, 0x5a, + 0xa1, 0x09, 0x05, 0x00, 0x03, 0x02, 0x07, 0x1c, 0x86, 0x79, 0x22, 0x0f, 0x7a, 0x8c, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0a, 0x24, 0x89, 0x9e, 0x77, 0xbb, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x1d, 0x69, 0x9e, 0x68, 0x13, 0x09, 0x02, 0x0a, 0x0f, 0x06, 0x05, 0x02, 0x00, + 0x02, 0x0e, 0xa0, 0xeb, 0x45, 0x09, 0x00, 0x02, 0x29, 0x3b, 0x0d, 0x05, 0x00, 0x00, 0x0c, 0xac, + 0xff, 0x67, 0x09, 0x00, 0x00, 0x06, 0x43, 0x56, 0x0f, 0x04, 0x00, 0x05, 0x3d, 0xab, 0x91, 0x09, + 0x05, 0x00, 0x00, 0x06, 0x57, 0x64, 0x11, 0x02, 0x00, 0x07, 0x60, 0xa4, 0x09, 0x07, 0x00, 0x00, + 0x01, 0x0e, 0x70, 0x6c, 0x15, 0x02, 0x01, 0x5a, 0xa1, 0x09, 0x04, 0x00, 0x03, 0x02, 0x07, 0x1c, + 0x84, 0x77, 0x20, 0x0f, 0x79, 0x8b, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0a, 0x24, 0x88, 0x9c, + 0x76, 0xb9, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1c, 0x67, 0x9d, 0x67, 0x13, + 0x09, 0x02, 0x08, 0x0b, 0x06, 0x05, 0x02, 0x01, 0x02, 0x16, 0xbb, 0xea, 0x3a, 0x09, 0x00, 0x01, + 0x22, 0x37, 0x0b, 0x05, 0x00, 0x00, 0x14, 0xbc, 0xff, 0x5e, 0x09, 0x02, 0x00, 0x07, 0x3e, 0x54, + 0x0e, 0x02, 0x00, 0x09, 0x3e, 0xa5, 0x8f, 0x09, 0x06, 0x00, 0x00, 0x06, 0x56, 0x61, 0x12, 0x01, + 0x00, 0x06, 0x5f, 0xa3, 0x09, 0x07, 0x00, 0x00, 0x01, 0x0d, 0x6d, 0x68, 0x15, 0x00, 0x01, 0x59, + 0xa0, 0x09, 0x04, 0x00, 0x03, 0x02, 0x07, 0x19, 0x82, 0x76, 0x20, 0x0f, 0x79, 0x8a, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0a, 0x23, 0x86, 0x9b, 0x74, 0xb8, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x1c, 0x66, 0x9c, 0x66, 0x13, 0x09, 0x02, 0x05, 0x08, 0x06, 0x03, 0x03, 0x01, + 0x02, 0x21, 0xd6, 0xde, 0x2e, 0x09, 0x00, 0x00, 0x1c, 0x33, 0x0d, 0x05, 0x00, 0x00, 0x1e, 0xcb, + 0xf9, 0x58, 0x09, 0x01, 0x00, 0x05, 0x3b, 0x51, 0x0d, 0x02, 0x00, 0x0d, 0x41, 0xa0, 0x8f, 0x09, + 0x06, 0x00, 0x00, 0x05, 0x54, 0x60, 0x12, 0x01, 0x00, 0x07, 0x5f, 0xa3, 0x09, 0x07, 0x00, 0x00, + 0x01, 0x0d, 0x6c, 0x67, 0x15, 0x00, 0x01, 0x59, 0x9f, 0x09, 0x04, 0x00, 0x03, 0x02, 0x07, 0x19, + 0x81, 0x75, 0x1f, 0x0f, 0x79, 0x8a, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0a, 0x23, 0x85, 0x9a, + 0x74, 0xb7, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1c, 0x65, 0x9c, 0x65, 0x13, + 0x09, 0x03, 0x04, 0x07, 0x04, 0x03, 0x03, 0x01, 0x02, 0x32, 0xec, 0xcf, 0x26, 0x09, 0x00, 0x00, + 0x17, 0x2e, 0x0c, 0x05, 0x00, 0x00, 0x2c, 0xd8, 0xf2, 0x54, 0x09, 0x01, 0x00, 0x03, 0x37, 0x4d, + 0x0c, 0x02, 0x00, 0x10, 0x42, 0x9c, 0x8f, 0x09, 0x06, 0x00, 0x00, 0x05, 0x50, 0x5c, 0x11, 0x01, + 0x00, 0x06, 0x5d, 0xa2, 0x09, 0x07, 0x02, 0x00, 0x00, 0x0c, 0x69, 0x65, 0x14, 0x01, 0x01, 0x58, + 0x9e, 0x09, 0x04, 0x02, 0x03, 0x02, 0x07, 0x18, 0x80, 0x73, 0x1f, 0x0f, 0x78, 0x89, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x06, 0x0a, 0x22, 0x84, 0x98, 0x73, 0xb6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x1b, 0x64, 0x9a, 0x64, 0x12, 0x09, 0x02, 0x04, 0x07, 0x03, 0x03, 0x03, 0x01, + 0x02, 0x46, 0xfd, 0xbb, 0x20, 0x09, 0x00, 0x00, 0x13, 0x28, 0x0c, 0x05, 0x00, 0x00, 0x3c, 0xe2, + 0xea, 0x52, 0x09, 0x02, 0x00, 0x00, 0x33, 0x4b, 0x0c, 0x02, 0x00, 0x13, 0x45, 0x98, 0x8f, 0x09, + 0x07, 0x00, 0x00, 0x04, 0x4e, 0x5b, 0x10, 0x01, 0x01, 0x06, 0x5d, 0xa1, 0x09, 0x07, 0x02, 0x00, + 0x00, 0x0c, 0x67, 0x64, 0x14, 0x02, 0x01, 0x58, 0x9e, 0x09, 0x04, 0x02, 0x03, 0x02, 0x07, 0x18, + 0x7e, 0x72, 0x1c, 0x0e, 0x77, 0x88, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x0a, 0x22, 0x82, 0x97, + 0x72, 0xb5, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1b, 0x63, 0x98, 0x63, 0x12, + 0x09, 0x03, 0x03, 0x06, 0x04, 0x04, 0x04, 0x02, 0x00, 0x5e, 0xff, 0xa9, 0x1c, 0x09, 0x00, 0x00, + 0x0e, 0x22, 0x0a, 0x05, 0x00, 0x02, 0x50, 0xe8, 0xe3, 0x50, 0x09, 0x03, 0x00, 0x00, 0x2d, 0x47, + 0x0b, 0x01, 0x00, 0x19, 0x47, 0x94, 0x8e, 0x09, 0x08, 0x00, 0x00, 0x04, 0x4b, 0x59, 0x10, 0x00, + 0x01, 0x06, 0x5c, 0x9f, 0x09, 0x07, 0x02, 0x00, 0x00, 0x0a, 0x65, 0x62, 0x13, 0x02, 0x01, 0x57, + 0x9c, 0x09, 0x04, 0x02, 0x03, 0x01, 0x06, 0x17, 0x7b, 0x70, 0x1d, 0x0d, 0x76, 0x87, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x07, 0x0a, 0x21, 0x80, 0x95, 0x70, 0xb3, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x1a, 0x62, 0x98, 0x62, 0x12, 0x09, 0x03, 0x03, 0x06, 0x05, 0x04, 0x03, 0x02, + 0x05, 0x78, 0xff, 0x98, 0x1a, 0x09, 0x00, 0x00, 0x0a, 0x1c, 0x0a, 0x05, 0x00, 0x05, 0x6a, 0xeb, + 0xdd, 0x50, 0x09, 0x03, 0x00, 0x00, 0x28, 0x42, 0x0b, 0x01, 0x00, 0x1f, 0x49, 0x90, 0x8e, 0x09, + 0x08, 0x00, 0x00, 0x04, 0x48, 0x56, 0x0f, 0x00, 0x03, 0x06, 0x5b, 0x9f, 0x09, 0x07, 0x02, 0x00, + 0x00, 0x0a, 0x62, 0x5f, 0x12, 0x03, 0x01, 0x56, 0x9c, 0x09, 0x04, 0x02, 0x03, 0x01, 0x06, 0x16, + 0x7a, 0x6f, 0x1c, 0x0e, 0x75, 0x86, 0x00, 0x00, 0x00, 0x05, 0x08, 0x07, 0x0a, 0x20, 0x7f, 0x93, + 0x6e, 0xb2, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1a, 0x61, 0x96, 0x61, 0x11, + 0x09, 0x03, 0x03, 0x07, 0x05, 0x04, 0x03, 0x02, 0x09, 0x94, 0xff, 0x89, 0x19, 0x09, 0x00, 0x00, + 0x07, 0x15, 0x09, 0x05, 0x00, 0x07, 0x84, 0xec, 0xd6, 0x4f, 0x09, 0x03, 0x00, 0x00, 0x22, 0x3d, + 0x0a, 0x01, 0x00, 0x28, 0x4b, 0x8d, 0x8b, 0x09, 0x08, 0x00, 0x00, 0x05, 0x44, 0x52, 0x0f, 0x00, + 0x02, 0x07, 0x5a, 0x9e, 0x09, 0x08, 0x02, 0x00, 0x00, 0x09, 0x60, 0x5d, 0x10, 0x03, 0x01, 0x55, + 0x9b, 0x09, 0x05, 0x02, 0x03, 0x00, 0x06, 0x15, 0x77, 0x6c, 0x1b, 0x0e, 0x73, 0x84, 0x00, 0x00, + 0x00, 0x05, 0x08, 0x07, 0x09, 0x1f, 0x7d, 0x92, 0x6d, 0xb0, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x19, 0x5f, 0x94, 0x60, 0x11, 0x09, 0x07, 0x03, 0x07, 0x05, 0x04, 0x02, 0x02, + 0x11, 0xb1, 0xfd, 0x7d, 0x19, 0x09, 0x08, 0x00, 0x05, 0x0f, 0x07, 0x05, 0x00, 0x0c, 0xa3, 0xea, + 0xd1, 0x4e, 0x09, 0x09, 0x00, 0x00, 0x1b, 0x37, 0x09, 0x00, 0x04, 0x31, 0x4b, 0x89, 0x8b, 0x09, + 0x09, 0x00, 0x00, 0x04, 0x3f, 0x4f, 0x0f, 0x01, 0x03, 0x07, 0x5a, 0x9d, 0x09, 0x07, 0x02, 0x00, + 0x00, 0x08, 0x5b, 0x5a, 0x0e, 0x02, 0x01, 0x54, 0x99, 0x09, 0x04, 0x02, 0x03, 0x01, 0x06, 0x14, + 0x75, 0x6b, 0x1a, 0x0c, 0x72, 0x83, 0x00, 0x00, 0x00, 0x05, 0x08, 0x07, 0x09, 0x1f, 0x7b, 0x90, + 0x6c, 0xb0, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x5e, 0x93, 0x5f, 0x11, + 0x09, 0x09, 0x07, 0x07, 0x05, 0x05, 0x01, 0x02, 0x1d, 0xc9, 0xf3, 0x76, 0x19, 0x09, 0x05, 0x02, + 0x05, 0x0b, 0x05, 0x03, 0x00, 0x19, 0xc2, 0xe5, 0xcd, 0x4e, 0x09, 0x05, 0x00, 0x00, 0x16, 0x31, + 0x09, 0x00, 0x09, 0x40, 0x4b, 0x86, 0x89, 0x09, 0x09, 0x00, 0x00, 0x02, 0x3a, 0x4b, 0x0e, 0x01, + 0x03, 0x07, 0x58, 0x9b, 0x09, 0x09, 0x03, 0x00, 0x00, 0x06, 0x59, 0x58, 0x0d, 0x02, 0x01, 0x53, + 0x98, 0x09, 0x06, 0x02, 0x06, 0x03, 0x06, 0x15, 0x71, 0x68, 0x1a, 0x0c, 0x70, 0x81, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x09, 0x1d, 0x78, 0x8d, 0x6b, 0xad, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x16, 0x5b, 0x91, 0x5d, 0x10, 0x09, 0x09, 0x07, 0x07, 0x05, 0x05, 0x00, 0x02, + 0x2c, 0xdd, 0xe4, 0x72, 0x18, 0x09, 0x05, 0x02, 0x05, 0x08, 0x05, 0x01, 0x00, 0x2b, 0xdf, 0xdd, + 0xc9, 0x4d, 0x09, 0x05, 0x00, 0x00, 0x11, 0x2b, 0x0a, 0x00, 0x10, 0x50, 0x47, 0x83, 0x89, 0x09, + 0x09, 0x00, 0x00, 0x00, 0x36, 0x47, 0x0d, 0x01, 0x05, 0x07, 0x58, 0x9a, 0x09, 0x09, 0x03, 0x00, + 0x00, 0x06, 0x55, 0x55, 0x0c, 0x01, 0x01, 0x53, 0x97, 0x09, 0x06, 0x02, 0x06, 0x05, 0x06, 0x13, + 0x6f, 0x66, 0x1a, 0x0b, 0x6f, 0x81, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x09, 0x1d, 0x77, 0x8c, + 0x69, 0xac, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x16, 0x5b, 0x90, 0x5c, 0x10, + 0x09, 0x09, 0x07, 0x06, 0x05, 0x05, 0x00, 0x02, 0x3f, 0xe7, 0xd2, 0x70, 0x18, 0x09, 0x05, 0x02, + 0x06, 0x07, 0x04, 0x00, 0x00, 0x43, 0xf8, 0xd1, 0xc8, 0x4c, 0x09, 0x05, 0x00, 0x00, 0x0d, 0x23, + 0x09, 0x00, 0x18, 0x62, 0x43, 0x81, 0x89, 0x09, 0x09, 0x02, 0x00, 0x00, 0x2f, 0x42, 0x0c, 0x03, + 0x08, 0x07, 0x56, 0x98, 0x09, 0x09, 0x05, 0x00, 0x00, 0x05, 0x51, 0x53, 0x0c, 0x02, 0x01, 0x51, + 0x95, 0x09, 0x06, 0x02, 0x06, 0x05, 0x06, 0x12, 0x6c, 0x64, 0x18, 0x0b, 0x6e, 0x7f, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x09, 0x1b, 0x74, 0x8a, 0x68, 0xaa, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x16, 0x59, 0x8d, 0x5b, 0x10, 0x09, 0x09, 0x07, 0x05, 0x05, 0x01, 0x00, 0x03, + 0x55, 0xe8, 0xc4, 0x6e, 0x18, 0x09, 0x05, 0x02, 0x07, 0x06, 0x03, 0x00, 0x00, 0x64, 0xff, 0xc4, + 0xc6, 0x4c, 0x09, 0x05, 0x00, 0x01, 0x08, 0x1a, 0x08, 0x03, 0x28, 0x74, 0x3f, 0x7f, 0x88, 0x09, + 0x09, 0x02, 0x00, 0x00, 0x28, 0x3e, 0x09, 0x06, 0x0c, 0x09, 0x55, 0x98, 0x09, 0x09, 0x05, 0x00, + 0x00, 0x04, 0x4d, 0x4f, 0x0b, 0x02, 0x01, 0x51, 0x94, 0x09, 0x06, 0x02, 0x06, 0x05, 0x06, 0x12, + 0x69, 0x61, 0x18, 0x0b, 0x6d, 0x7e, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x09, 0x1b, 0x73, 0x88, + 0x67, 0xa8, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x15, 0x58, 0x8c, 0x5a, 0x0f, + 0x09, 0x09, 0x07, 0x05, 0x05, 0x00, 0x00, 0x05, 0x6b, 0xde, 0xb8, 0x6f, 0x17, 0x09, 0x09, 0x02, + 0x08, 0x07, 0x03, 0x00, 0x03, 0x8a, 0xff, 0xb5, 0xc4, 0x4a, 0x09, 0x09, 0x04, 0x01, 0x06, 0x12, + 0x05, 0x01, 0x3d, 0x87, 0x37, 0x7d, 0x87, 0x09, 0x09, 0x09, 0x00, 0x00, 0x21, 0x3a, 0x07, 0x0b, + 0x11, 0x09, 0x54, 0x97, 0x09, 0x09, 0x07, 0x00, 0x00, 0x03, 0x47, 0x4b, 0x0b, 0x02, 0x01, 0x4f, + 0x92, 0x09, 0x06, 0x02, 0x06, 0x06, 0x06, 0x0f, 0x66, 0x5f, 0x16, 0x0a, 0x6c, 0x7c, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x09, 0x1a, 0x70, 0x85, 0x65, 0xa6, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x14, 0x56, 0x8a, 0x58, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x01, 0x0b, + 0x7c, 0xce, 0xb1, 0x6e, 0x17, 0x09, 0x09, 0x09, 0x06, 0x04, 0x00, 0x00, 0x0b, 0xb2, 0xff, 0xa9, + 0xc3, 0x4b, 0x09, 0x09, 0x09, 0x01, 0x03, 0x0e, 0x02, 0x05, 0x5b, 0x96, 0x2f, 0x7b, 0x85, 0x09, + 0x09, 0x09, 0x00, 0x00, 0x1a, 0x34, 0x07, 0x11, 0x16, 0x09, 0x52, 0x95, 0x09, 0x09, 0x07, 0x00, + 0x00, 0x03, 0x42, 0x47, 0x0a, 0x01, 0x01, 0x4f, 0x91, 0x09, 0x06, 0x02, 0x06, 0x06, 0x06, 0x0e, + 0x63, 0x5c, 0x15, 0x09, 0x6a, 0x7b, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x08, 0x19, 0x6e, 0x83, + 0x63, 0xa4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x54, 0x88, 0x57, 0x0f, + 0x09, 0x09, 0x09, 0x09, 0x08, 0x00, 0x02, 0x13, 0x87, 0xba, 0xad, 0x6d, 0x17, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x00, 0x00, 0x19, 0xd5, 0xff, 0x9e, 0xc2, 0x49, 0x09, 0x09, 0x09, 0x02, 0x04, 0x08, + 0x00, 0x0e, 0x81, 0x9c, 0x27, 0x7b, 0x83, 0x09, 0x09, 0x09, 0x00, 0x00, 0x14, 0x2e, 0x09, 0x19, + 0x1b, 0x07, 0x51, 0x93, 0x09, 0x09, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x0b, 0x01, 0x01, 0x4d, + 0x90, 0x09, 0x06, 0x02, 0x06, 0x06, 0x04, 0x0d, 0x5e, 0x59, 0x14, 0x09, 0x68, 0x78, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x08, 0x17, 0x6b, 0x80, 0x61, 0xa2, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x12, 0x52, 0x85, 0x55, 0x0e, 0x09, 0x09, 0x09, 0x09, 0x08, 0x00, 0x02, 0x1c, + 0x88, 0xa5, 0xab, 0x6c, 0x16, 0x09, 0x09, 0x09, 0x06, 0x07, 0x00, 0x00, 0x2e, 0xf2, 0xf7, 0x97, + 0xc1, 0x48, 0x09, 0x09, 0x09, 0x02, 0x03, 0x05, 0x00, 0x1e, 0xac, 0x99, 0x1f, 0x7a, 0x83, 0x09, + 0x09, 0x09, 0x00, 0x00, 0x0d, 0x26, 0x0c, 0x24, 0x20, 0x07, 0x50, 0x92, 0x09, 0x09, 0x07, 0x00, + 0x00, 0x00, 0x36, 0x40, 0x09, 0x01, 0x01, 0x4c, 0x8e, 0x09, 0x06, 0x02, 0x06, 0x07, 0x05, 0x0d, + 0x5a, 0x56, 0x14, 0x08, 0x67, 0x77, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x08, 0x16, 0x68, 0x7e, + 0x60, 0xa0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x50, 0x83, 0x54, 0x0e, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x24, 0x81, 0x93, 0xaa, 0x6a, 0x16, 0x09, 0x09, 0x09, + 0x09, 0x08, 0x00, 0x00, 0x49, 0xff, 0xe7, 0x91, 0xc0, 0x47, 0x09, 0x09, 0x09, 0x08, 0x03, 0x00, + 0x00, 0x36, 0xd3, 0x8e, 0x1a, 0x77, 0x82, 0x09, 0x09, 0x09, 0x01, 0x00, 0x0c, 0x1d, 0x12, 0x34, + 0x22, 0x05, 0x4f, 0x91, 0x09, 0x09, 0x07, 0x00, 0x00, 0x00, 0x2f, 0x3b, 0x0a, 0x01, 0x00, 0x4a, + 0x8c, 0x09, 0x06, 0x02, 0x07, 0x07, 0x02, 0x0c, 0x55, 0x52, 0x12, 0x08, 0x65, 0x75, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x07, 0x15, 0x65, 0x7b, 0x5e, 0x9e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x10, 0x4e, 0x80, 0x52, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x09, 0x02, 0x07, 0x2b, + 0x71, 0x86, 0xaa, 0x6a, 0x16, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x00, 0x64, 0xff, 0xd7, 0x8f, + 0xc0, 0x46, 0x09, 0x09, 0x09, 0x08, 0x03, 0x00, 0x00, 0x59, 0xed, 0x7c, 0x17, 0x77, 0x81, 0x09, + 0x09, 0x09, 0x01, 0x00, 0x06, 0x16, 0x1e, 0x4a, 0x24, 0x03, 0x4e, 0x8f, 0x09, 0x09, 0x07, 0x00, + 0x00, 0x00, 0x26, 0x37, 0x0a, 0x02, 0x00, 0x4a, 0x8b, 0x09, 0x06, 0x02, 0x07, 0x07, 0x03, 0x0c, + 0x50, 0x50, 0x11, 0x08, 0x65, 0x74, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x07, 0x14, 0x62, 0x77, + 0x5c, 0x9c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x4d, 0x7f, 0x50, 0x0c, + 0x09, 0x09, 0x09, 0x09, 0x06, 0x02, 0x05, 0x2d, 0x5d, 0x7e, 0xa9, 0x69, 0x16, 0x09, 0x09, 0x09, + 0x09, 0x01, 0x00, 0x05, 0x7f, 0xf5, 0xcc, 0x8d, 0xbe, 0x45, 0x09, 0x09, 0x09, 0x08, 0x00, 0x00, + 0x03, 0x88, 0xfd, 0x68, 0x16, 0x76, 0x7f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x02, 0x0c, 0x31, 0x63, + 0x22, 0x02, 0x4d, 0x8e, 0x09, 0x09, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x34, 0x0f, 0x04, 0x00, 0x48, + 0x89, 0x09, 0x06, 0x02, 0x06, 0x07, 0x04, 0x09, 0x4a, 0x4b, 0x11, 0x08, 0x63, 0x72, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x07, 0x13, 0x5d, 0x74, 0x5a, 0x99, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x4a, 0x7b, 0x4f, 0x0c, 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x07, 0x2a, + 0x4a, 0x7a, 0xa6, 0x67, 0x15, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x0c, 0x92, 0xe6, 0xc4, 0x8b, + 0xbc, 0x44, 0x09, 0x09, 0x09, 0x08, 0x00, 0x00, 0x0c, 0xb8, 0xff, 0x55, 0x16, 0x75, 0x7d, 0x09, + 0x09, 0x09, 0x01, 0x00, 0x00, 0x0b, 0x51, 0x7a, 0x1e, 0x00, 0x4b, 0x8b, 0x09, 0x09, 0x07, 0x00, + 0x00, 0x00, 0x16, 0x30, 0x14, 0x05, 0x00, 0x47, 0x86, 0x09, 0x06, 0x02, 0x06, 0x07, 0x05, 0x08, + 0x44, 0x48, 0x10, 0x09, 0x62, 0x71, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x07, 0x11, 0x5a, 0x71, + 0x58, 0x97, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x48, 0x79, 0x4d, 0x0c, + 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x09, 0x26, 0x3e, 0x79, 0xa6, 0x66, 0x15, 0x09, 0x09, 0x09, + 0x09, 0x00, 0x00, 0x16, 0x97, 0xd4, 0xc1, 0x8a, 0xba, 0x43, 0x09, 0x09, 0x09, 0x08, 0x00, 0x00, + 0x20, 0xe2, 0xf6, 0x46, 0x17, 0x74, 0x7b, 0x09, 0x09, 0x09, 0x03, 0x00, 0x00, 0x13, 0x7f, 0x88, + 0x17, 0x00, 0x4b, 0x89, 0x09, 0x09, 0x07, 0x01, 0x00, 0x00, 0x12, 0x31, 0x19, 0x04, 0x00, 0x46, + 0x85, 0x09, 0x06, 0x02, 0x08, 0x07, 0x06, 0x05, 0x3d, 0x44, 0x0f, 0x0a, 0x60, 0x6f, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x07, 0x10, 0x55, 0x6d, 0x56, 0x94, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0c, 0x45, 0x76, 0x4b, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x0b, 0x20, + 0x34, 0x77, 0xa6, 0x65, 0x14, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x1f, 0x92, 0xc1, 0xc0, 0x89, + 0xb9, 0x41, 0x09, 0x09, 0x09, 0x08, 0x00, 0x00, 0x39, 0xff, 0xe2, 0x3b, 0x17, 0x72, 0x79, 0x09, + 0x09, 0x09, 0x03, 0x00, 0x00, 0x25, 0xb0, 0x89, 0x11, 0x00, 0x49, 0x88, 0x09, 0x09, 0x07, 0x01, + 0x00, 0x00, 0x11, 0x35, 0x1d, 0x03, 0x00, 0x44, 0x82, 0x09, 0x06, 0x02, 0x08, 0x07, 0x07, 0x04, + 0x35, 0x3f, 0x0d, 0x09, 0x5d, 0x6c, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x07, 0x0e, 0x51, 0x6a, + 0x53, 0x91, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x42, 0x73, 0x49, 0x0b, + 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x0a, 0x19, 0x2e, 0x75, 0xa3, 0x63, 0x14, 0x09, 0x09, 0x09, + 0x09, 0x00, 0x00, 0x27, 0x80, 0xb3, 0xbf, 0x86, 0xb7, 0x40, 0x09, 0x09, 0x09, 0x05, 0x00, 0x00, + 0x59, 0xff, 0xcd, 0x34, 0x16, 0x70, 0x78, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x44, 0xdc, 0x7f, + 0x0a, 0x00, 0x48, 0x86, 0x09, 0x09, 0x07, 0x01, 0x00, 0x00, 0x16, 0x44, 0x21, 0x01, 0x00, 0x43, + 0x80, 0x09, 0x06, 0x02, 0x08, 0x07, 0x06, 0x04, 0x2e, 0x3a, 0x0c, 0x08, 0x5b, 0x6a, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x07, 0x0d, 0x4d, 0x65, 0x51, 0x8e, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x40, 0x70, 0x47, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x02, 0x01, 0x09, 0x13, + 0x2c, 0x75, 0xa1, 0x63, 0x13, 0x09, 0x09, 0x09, 0x06, 0x00, 0x03, 0x2a, 0x68, 0xac, 0xbf, 0x86, + 0xb6, 0x40, 0x09, 0x09, 0x09, 0x01, 0x00, 0x02, 0x75, 0xfd, 0xbb, 0x32, 0x16, 0x6f, 0x77, 0x09, + 0x09, 0x09, 0x00, 0x00, 0x01, 0x72, 0xf4, 0x6c, 0x07, 0x00, 0x47, 0x85, 0x09, 0x09, 0x07, 0x00, + 0x00, 0x00, 0x27, 0x5d, 0x23, 0x01, 0x00, 0x42, 0x7f, 0x09, 0x06, 0x02, 0x06, 0x07, 0x05, 0x06, + 0x29, 0x36, 0x0b, 0x07, 0x59, 0x69, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x07, 0x0b, 0x47, 0x61, + 0x4e, 0x8b, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x3d, 0x6d, 0x45, 0x0a, + 0x09, 0x09, 0x09, 0x08, 0x02, 0x02, 0x05, 0x0f, 0x29, 0x73, 0xa0, 0x60, 0x12, 0x09, 0x09, 0x09, + 0x04, 0x00, 0x05, 0x29, 0x53, 0xa8, 0xbc, 0x83, 0xb3, 0x3e, 0x09, 0x09, 0x09, 0x00, 0x00, 0x08, + 0x8a, 0xf0, 0xad, 0x2f, 0x16, 0x6d, 0x75, 0x09, 0x09, 0x09, 0x00, 0x00, 0x09, 0xa7, 0xff, 0x55, + 0x05, 0x00, 0x45, 0x81, 0x09, 0x09, 0x07, 0x00, 0x00, 0x04, 0x45, 0x77, 0x21, 0x01, 0x00, 0x40, + 0x7c, 0x09, 0x06, 0x02, 0x06, 0x06, 0x05, 0x0b, 0x26, 0x31, 0x09, 0x07, 0x58, 0x67, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x07, 0x07, 0x0a, 0x41, 0x5c, 0x4c, 0x88, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x3a, 0x69, 0x43, 0x09, 0x09, 0x09, 0x09, 0x08, 0x02, 0x02, 0x05, 0x0f, + 0x29, 0x71, 0x9e, 0x5f, 0x12, 0x09, 0x09, 0x09, 0x03, 0x00, 0x07, 0x23, 0x45, 0xa7, 0xbc, 0x82, + 0xb1, 0x3e, 0x09, 0x09, 0x09, 0x00, 0x00, 0x11, 0x91, 0xdd, 0xa8, 0x32, 0x16, 0x6b, 0x74, 0x09, + 0x09, 0x09, 0x00, 0x00, 0x19, 0xd6, 0xfc, 0x41, 0x05, 0x00, 0x44, 0x80, 0x09, 0x09, 0x07, 0x00, + 0x00, 0x0d, 0x72, 0x8c, 0x1a, 0x00, 0x00, 0x3f, 0x7a, 0x09, 0x06, 0x02, 0x06, 0x05, 0x07, 0x12, + 0x24, 0x29, 0x09, 0x07, 0x56, 0x65, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x06, 0x09, 0x3b, 0x57, + 0x49, 0x85, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x37, 0x65, 0x41, 0x09, + 0x09, 0x09, 0x09, 0x08, 0x02, 0x02, 0x05, 0x0d, 0x28, 0x70, 0x9d, 0x5e, 0x11, 0x09, 0x09, 0x09, + 0x03, 0x00, 0x07, 0x1c, 0x3a, 0xa5, 0xbb, 0x81, 0xaf, 0x3c, 0x09, 0x09, 0x09, 0x00, 0x00, 0x1b, + 0x8a, 0xcb, 0xa5, 0x30, 0x14, 0x69, 0x71, 0x09, 0x09, 0x09, 0x00, 0x00, 0x31, 0xf9, 0xe7, 0x33, + 0x04, 0x00, 0x43, 0x7e, 0x09, 0x09, 0x07, 0x00, 0x00, 0x1f, 0xaa, 0x91, 0x12, 0x00, 0x00, 0x3e, + 0x78, 0x09, 0x06, 0x02, 0x06, 0x05, 0x0d, 0x22, 0x27, 0x21, 0x08, 0x06, 0x54, 0x63, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x06, 0x07, 0x08, 0x34, 0x52, 0x46, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x33, 0x61, 0x3f, 0x08, 0x09, 0x09, 0x09, 0x08, 0x02, 0x01, 0x03, 0x0b, + 0x28, 0x70, 0x9c, 0x5e, 0x12, 0x09, 0x09, 0x09, 0x03, 0x00, 0x07, 0x14, 0x33, 0xa5, 0xba, 0x80, + 0xae, 0x3c, 0x09, 0x09, 0x09, 0x00, 0x00, 0x22, 0x77, 0xbb, 0xa5, 0x2f, 0x14, 0x69, 0x70, 0x09, + 0x09, 0x09, 0x00, 0x00, 0x50, 0xff, 0xcf, 0x2b, 0x05, 0x00, 0x42, 0x7c, 0x09, 0x09, 0x07, 0x00, + 0x00, 0x3e, 0xdc, 0x89, 0x0c, 0x00, 0x00, 0x3c, 0x76, 0x09, 0x06, 0x02, 0x06, 0x05, 0x18, 0x3d, + 0x2b, 0x19, 0x06, 0x06, 0x51, 0x60, 0x00, 0x00, 0x00, 0x05, 0x07, 0x08, 0x0c, 0x09, 0x2d, 0x4c, + 0x44, 0x7f, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x5e, 0x3d, 0x08, + 0x09, 0x09, 0x09, 0x08, 0x05, 0x00, 0x01, 0x0b, 0x25, 0x6d, 0x9a, 0x5c, 0x11, 0x09, 0x09, 0x09, + 0x03, 0x00, 0x04, 0x10, 0x31, 0xa2, 0xb7, 0x7e, 0xab, 0x3a, 0x09, 0x09, 0x07, 0x00, 0x02, 0x26, + 0x63, 0xb3, 0xa4, 0x2e, 0x14, 0x66, 0x6e, 0x09, 0x09, 0x02, 0x00, 0x03, 0x6a, 0xfb, 0xba, 0x27, + 0x06, 0x00, 0x40, 0x7c, 0x09, 0x09, 0x01, 0x00, 0x01, 0x6a, 0xf7, 0x75, 0x06, 0x00, 0x00, 0x3b, + 0x74, 0x09, 0x06, 0x01, 0x04, 0x04, 0x2a, 0x5e, 0x2c, 0x11, 0x04, 0x04, 0x4f, 0x5f, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x0b, 0x11, 0x0a, 0x26, 0x45, 0x40, 0x7b, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x2c, 0x5a, 0x3a, 0x07, 0x09, 0x09, 0x09, 0x08, 0x04, 0x00, 0x01, 0x0b, + 0x25, 0x6c, 0x99, 0x5b, 0x11, 0x09, 0x09, 0x09, 0x03, 0x00, 0x03, 0x0e, 0x30, 0xa1, 0xb6, 0x7d, + 0xa9, 0x39, 0x09, 0x09, 0x05, 0x00, 0x02, 0x24, 0x4f, 0xb0, 0xa3, 0x2d, 0x13, 0x65, 0x6d, 0x09, + 0x09, 0x00, 0x00, 0x07, 0x7d, 0xec, 0xac, 0x26, 0x05, 0x00, 0x3f, 0x78, 0x09, 0x09, 0x00, 0x00, + 0x04, 0xa0, 0xff, 0x5d, 0x05, 0x00, 0x00, 0x3a, 0x71, 0x09, 0x06, 0x00, 0x04, 0x08, 0x49, 0x7d, + 0x29, 0x0a, 0x04, 0x03, 0x4d, 0x5b, 0x00, 0x00, 0x00, 0x05, 0x08, 0x10, 0x13, 0x0a, 0x1e, 0x3f, + 0x3e, 0x78, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x56, 0x38, 0x07, + 0x09, 0x09, 0x09, 0x08, 0x03, 0x00, 0x01, 0x0b, 0x25, 0x6b, 0x97, 0x59, 0x10, 0x09, 0x09, 0x09, + 0x03, 0x01, 0x03, 0x0c, 0x2e, 0xa0, 0xb5, 0x7c, 0xa7, 0x38, 0x09, 0x09, 0x05, 0x00, 0x06, 0x1d, + 0x3e, 0xae, 0xa1, 0x2c, 0x12, 0x64, 0x6b, 0x09, 0x09, 0x00, 0x00, 0x0d, 0x84, 0xd9, 0xa6, 0x25, + 0x07, 0x00, 0x3e, 0x76, 0x09, 0x09, 0x00, 0x00, 0x15, 0xcf, 0xff, 0x48, 0x04, 0x00, 0x00, 0x38, + 0x6e, 0x09, 0x06, 0x00, 0x03, 0x0f, 0x74, 0x97, 0x22, 0x06, 0x01, 0x03, 0x4b, 0x59, 0x00, 0x00, + 0x00, 0x05, 0x09, 0x19, 0x1d, 0x0b, 0x17, 0x38, 0x3a, 0x74, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x24, 0x51, 0x36, 0x06, 0x09, 0x09, 0x09, 0x09, 0x02, 0x00, 0x01, 0x0b, + 0x25, 0x6a, 0x96, 0x59, 0x10, 0x09, 0x09, 0x09, 0x04, 0x01, 0x00, 0x0a, 0x2e, 0x9f, 0xb4, 0x7a, + 0xa5, 0x38, 0x09, 0x09, 0x05, 0x00, 0x07, 0x16, 0x34, 0xac, 0xa0, 0x2b, 0x12, 0x62, 0x69, 0x09, + 0x09, 0x00, 0x00, 0x15, 0x7e, 0xc5, 0xa5, 0x25, 0x06, 0x00, 0x3d, 0x74, 0x09, 0x09, 0x00, 0x00, + 0x2b, 0xf0, 0xef, 0x39, 0x03, 0x00, 0x00, 0x36, 0x6c, 0x09, 0x06, 0x00, 0x03, 0x20, 0xad, 0x9e, + 0x1a, 0x04, 0x01, 0x03, 0x4a, 0x58, 0x00, 0x00, 0x00, 0x04, 0x11, 0x2b, 0x27, 0x0b, 0x11, 0x30, + 0x37, 0x71, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x1f, 0x4d, 0x33, 0x06, + 0x09, 0x09, 0x09, 0x09, 0x02, 0x00, 0x01, 0x0b, 0x24, 0x69, 0x94, 0x57, 0x10, 0x09, 0x09, 0x09, + 0x04, 0x01, 0x00, 0x09, 0x2d, 0x9e, 0xb2, 0x78, 0xa2, 0x37, 0x09, 0x09, 0x05, 0x00, 0x07, 0x14, + 0x30, 0xab, 0x9f, 0x2a, 0x11, 0x60, 0x67, 0x09, 0x09, 0x00, 0x00, 0x1c, 0x70, 0xb7, 0xa3, 0x25, + 0x04, 0x00, 0x3c, 0x73, 0x09, 0x09, 0x00, 0x00, 0x45, 0xff, 0xd7, 0x2f, 0x02, 0x00, 0x00, 0x35, + 0x6b, 0x09, 0x06, 0x00, 0x04, 0x3b, 0xdc, 0x95, 0x10, 0x02, 0x01, 0x02, 0x47, 0x56, 0x00, 0x00, + 0x00, 0x04, 0x19, 0x42, 0x2f, 0x0a, 0x0b, 0x26, 0x33, 0x6c, 0x27, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x06, 0x04, 0x00, 0x00, 0x1a, 0x48, 0x31, 0x05, 0x09, 0x09, 0x09, 0x09, 0x02, 0x00, 0x01, 0x0a, + 0x24, 0x68, 0x93, 0x55, 0x0f, 0x09, 0x09, 0x09, 0x04, 0x01, 0x00, 0x0a, 0x2c, 0x9c, 0xaf, 0x77, + 0xa1, 0x35, 0x09, 0x09, 0x05, 0x00, 0x07, 0x11, 0x2f, 0xaa, 0x9e, 0x2a, 0x11, 0x60, 0x65, 0x09, + 0x08, 0x00, 0x02, 0x1e, 0x5b, 0xaf, 0xa3, 0x25, 0x04, 0x00, 0x3b, 0x71, 0x09, 0x04, 0x00, 0x04, + 0x60, 0xf7, 0xc3, 0x2d, 0x02, 0x00, 0x00, 0x33, 0x68, 0x09, 0x01, 0x00, 0x02, 0x67, 0xf6, 0x81, + 0x0e, 0x03, 0x02, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x06, 0x2b, 0x5f, 0x32, 0x09, 0x09, 0x1f, + 0x30, 0x68, 0x26, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x05, 0x00, 0x00, 0x16, 0x43, 0x2e, 0x05, + 0x09, 0x09, 0x09, 0x09, 0x04, 0x00, 0x01, 0x0a, 0x23, 0x67, 0x92, 0x54, 0x0e, 0x09, 0x09, 0x09, + 0x03, 0x00, 0x00, 0x09, 0x2b, 0x9a, 0xae, 0x76, 0xa0, 0x34, 0x09, 0x09, 0x05, 0x00, 0x05, 0x0c, + 0x2d, 0xa9, 0x9c, 0x29, 0x10, 0x5e, 0x64, 0x09, 0x05, 0x00, 0x03, 0x1f, 0x47, 0xaa, 0xa2, 0x24, + 0x04, 0x00, 0x3a, 0x6e, 0x09, 0x01, 0x00, 0x03, 0x73, 0xe8, 0xb5, 0x29, 0x03, 0x00, 0x00, 0x32, + 0x67, 0x09, 0x00, 0x00, 0x05, 0x96, 0xff, 0x6a, 0x0b, 0x03, 0x02, 0x00, 0x44, 0x51, 0x00, 0x00, + 0x00, 0x08, 0x45, 0x7f, 0x30, 0x07, 0x07, 0x18, 0x2b, 0x65, 0x24, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x12, 0x07, 0x00, 0x00, 0x11, 0x3d, 0x2c, 0x04, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x0a, + 0x23, 0x66, 0x90, 0x53, 0x0e, 0x09, 0x09, 0x09, 0x04, 0x00, 0x00, 0x09, 0x2b, 0x9a, 0xad, 0x75, + 0x9d, 0x34, 0x09, 0x09, 0x05, 0x00, 0x00, 0x09, 0x2c, 0xa8, 0x9b, 0x29, 0x10, 0x5d, 0x63, 0x09, + 0x05, 0x00, 0x03, 0x1a, 0x36, 0xa8, 0xa1, 0x22, 0x04, 0x00, 0x38, 0x6c, 0x09, 0x00, 0x00, 0x0c, + 0x7d, 0xd5, 0xaf, 0x29, 0x04, 0x00, 0x00, 0x30, 0x64, 0x09, 0x00, 0x00, 0x12, 0xc3, 0xff, 0x54, + 0x0c, 0x04, 0x02, 0x00, 0x42, 0x4e, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x93, 0x29, 0x06, 0x07, 0x12, + 0x27, 0x60, 0x22, 0x00, 0x00, 0x00, 0x02, 0x15, 0x1b, 0x07, 0x00, 0x00, 0x0d, 0x38, 0x29, 0x04, + 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x02, 0x0a, 0x22, 0x65, 0x8e, 0x51, 0x0d, 0x09, 0x09, 0x09, + 0x04, 0x00, 0x00, 0x09, 0x2a, 0x98, 0xab, 0x74, 0x9b, 0x32, 0x09, 0x08, 0x06, 0x00, 0x00, 0x09, + 0x2b, 0xa6, 0x9a, 0x28, 0x0f, 0x5c, 0x61, 0x09, 0x04, 0x01, 0x06, 0x17, 0x31, 0xa8, 0xa0, 0x22, + 0x04, 0x00, 0x38, 0x6a, 0x09, 0x00, 0x00, 0x14, 0x7d, 0xc4, 0xad, 0x28, 0x04, 0x00, 0x00, 0x30, + 0x62, 0x09, 0x00, 0x00, 0x24, 0xe4, 0xf3, 0x44, 0x0d, 0x05, 0x02, 0x00, 0x3f, 0x4c, 0x00, 0x00, + 0x00, 0x1c, 0x9c, 0x9d, 0x21, 0x06, 0x07, 0x0c, 0x22, 0x5d, 0x21, 0x00, 0x00, 0x00, 0x07, 0x24, + 0x25, 0x07, 0x00, 0x00, 0x09, 0x31, 0x26, 0x03, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x02, 0x0a, + 0x22, 0x64, 0x8d, 0x50, 0x0d, 0x09, 0x09, 0x09, 0x04, 0x00, 0x00, 0x09, 0x2a, 0x97, 0xaa, 0x73, + 0x9a, 0x32, 0x09, 0x07, 0x05, 0x00, 0x00, 0x09, 0x2b, 0xa5, 0x99, 0x27, 0x0f, 0x5a, 0x5f, 0x09, + 0x03, 0x00, 0x06, 0x13, 0x2c, 0xa6, 0x9f, 0x21, 0x03, 0x00, 0x37, 0x67, 0x09, 0x00, 0x00, 0x1b, + 0x71, 0xb4, 0xad, 0x28, 0x04, 0x00, 0x00, 0x2e, 0x5f, 0x09, 0x00, 0x00, 0x3c, 0xf8, 0xdf, 0x3c, + 0x0c, 0x05, 0x02, 0x00, 0x3d, 0x49, 0x00, 0x00, 0x00, 0x34, 0xcb, 0x97, 0x19, 0x06, 0x07, 0x08, + 0x1d, 0x59, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x39, 0x2b, 0x06, 0x00, 0x00, 0x06, 0x2b, 0x24, 0x03, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x0a, 0x21, 0x62, 0x8b, 0x4f, 0x0c, 0x09, 0x09, 0x09, + 0x05, 0x00, 0x00, 0x09, 0x2a, 0x95, 0xa8, 0x71, 0x97, 0x30, 0x09, 0x07, 0x06, 0x00, 0x00, 0x09, + 0x2a, 0xa4, 0x97, 0x27, 0x0e, 0x59, 0x5d, 0x09, 0x03, 0x00, 0x05, 0x10, 0x2a, 0xa4, 0x9d, 0x20, + 0x03, 0x00, 0x35, 0x65, 0x09, 0x00, 0x01, 0x21, 0x62, 0xab, 0xad, 0x27, 0x03, 0x00, 0x00, 0x2d, + 0x5d, 0x09, 0x00, 0x00, 0x54, 0xfa, 0xcc, 0x36, 0x0c, 0x04, 0x02, 0x00, 0x39, 0x47, 0x00, 0x00, + 0x00, 0x53, 0xee, 0x86, 0x13, 0x05, 0x07, 0x06, 0x18, 0x54, 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x53, + 0x2f, 0x03, 0x00, 0x00, 0x02, 0x24, 0x20, 0x02, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x0a, + 0x21, 0x61, 0x8a, 0x4e, 0x0c, 0x09, 0x09, 0x09, 0x05, 0x00, 0x00, 0x09, 0x2a, 0x94, 0xa7, 0x70, + 0x96, 0x30, 0x09, 0x08, 0x05, 0x00, 0x00, 0x09, 0x2a, 0xa3, 0x96, 0x26, 0x0e, 0x57, 0x5c, 0x09, + 0x04, 0x00, 0x04, 0x0d, 0x27, 0xa4, 0x9c, 0x20, 0x04, 0x00, 0x34, 0x64, 0x07, 0x00, 0x02, 0x22, + 0x50, 0xa4, 0xad, 0x26, 0x03, 0x00, 0x00, 0x2c, 0x5b, 0x03, 0x00, 0x04, 0x6c, 0xf1, 0xc0, 0x35, + 0x0d, 0x03, 0x02, 0x00, 0x38, 0x45, 0x00, 0x00, 0x04, 0x7e, 0xff, 0x73, 0x11, 0x06, 0x07, 0x05, + 0x14, 0x4f, 0x1d, 0x00, 0x00, 0x02, 0x33, 0x6f, 0x2d, 0x01, 0x00, 0x00, 0x01, 0x1e, 0x1e, 0x02, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x0a, 0x20, 0x60, 0x89, 0x4d, 0x0c, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x09, 0x29, 0x93, 0xa6, 0x70, 0x94, 0x2f, 0x09, 0x08, 0x04, 0x00, 0x00, 0x09, + 0x2a, 0xa2, 0x95, 0x25, 0x0e, 0x56, 0x5a, 0x09, 0x04, 0x00, 0x02, 0x0a, 0x25, 0xa3, 0x9b, 0x1f, + 0x04, 0x00, 0x33, 0x61, 0x04, 0x00, 0x02, 0x22, 0x40, 0xa1, 0xac, 0x26, 0x03, 0x00, 0x00, 0x2b, + 0x59, 0x00, 0x00, 0x08, 0x7f, 0xe2, 0xb8, 0x33, 0x0d, 0x03, 0x04, 0x00, 0x35, 0x42, 0x00, 0x00, + 0x0c, 0xa8, 0xff, 0x5d, 0x0e, 0x06, 0x07, 0x04, 0x10, 0x4b, 0x1b, 0x00, 0x00, 0x07, 0x52, 0x85, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1a, 0x02, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x0a, + 0x20, 0x60, 0x87, 0x4c, 0x0c, 0x09, 0x09, 0x09, 0x07, 0x00, 0x00, 0x09, 0x29, 0x92, 0xa5, 0x6f, + 0x92, 0x2e, 0x09, 0x09, 0x04, 0x00, 0x00, 0x08, 0x29, 0xa1, 0x95, 0x25, 0x0e, 0x55, 0x58, 0x09, + 0x05, 0x00, 0x00, 0x0a, 0x25, 0xa2, 0x9b, 0x1f, 0x04, 0x00, 0x32, 0x60, 0x04, 0x00, 0x06, 0x21, + 0x38, 0xa0, 0xab, 0x26, 0x03, 0x00, 0x00, 0x2a, 0x57, 0x00, 0x00, 0x11, 0x89, 0xd2, 0xb6, 0x34, + 0x0d, 0x02, 0x04, 0x00, 0x33, 0x40, 0x00, 0x00, 0x1a, 0xd0, 0xf8, 0x4f, 0x0f, 0x06, 0x07, 0x04, + 0x0d, 0x46, 0x1a, 0x00, 0x00, 0x0f, 0x79, 0x90, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x14, 0x17, 0x02, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x0a, 0x1f, 0x5f, 0x86, 0x4a, 0x0c, 0x09, 0x09, 0x09, + 0x07, 0x00, 0x00, 0x09, 0x28, 0x91, 0xa2, 0x6d, 0x90, 0x2e, 0x09, 0x09, 0x04, 0x00, 0x00, 0x07, + 0x28, 0x9f, 0x92, 0x24, 0x0e, 0x53, 0x57, 0x09, 0x05, 0x00, 0x00, 0x08, 0x25, 0xa0, 0x9a, 0x1e, + 0x03, 0x00, 0x30, 0x5d, 0x04, 0x00, 0x07, 0x1e, 0x31, 0x9f, 0xab, 0x25, 0x03, 0x00, 0x00, 0x28, + 0x54, 0x00, 0x00, 0x1c, 0x8b, 0xc3, 0xb6, 0x33, 0x0b, 0x02, 0x04, 0x00, 0x31, 0x3d, 0x00, 0x00, + 0x30, 0xee, 0xe7, 0x43, 0x0f, 0x06, 0x07, 0x04, 0x09, 0x41, 0x18, 0x00, 0x00, 0x1c, 0xa2, 0x90, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x14, 0x01, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x0a, + 0x1f, 0x5e, 0x85, 0x4a, 0x0b, 0x09, 0x09, 0x09, 0x07, 0x00, 0x00, 0x09, 0x28, 0x90, 0xa2, 0x6d, + 0x8f, 0x2c, 0x09, 0x09, 0x03, 0x00, 0x00, 0x08, 0x28, 0x9f, 0x92, 0x24, 0x0e, 0x51, 0x55, 0x09, + 0x05, 0x00, 0x00, 0x09, 0x25, 0xa0, 0x99, 0x1e, 0x03, 0x00, 0x2f, 0x5c, 0x04, 0x00, 0x09, 0x1a, + 0x2d, 0x9e, 0xaa, 0x25, 0x03, 0x00, 0x00, 0x27, 0x52, 0x00, 0x00, 0x24, 0x88, 0xb7, 0xb5, 0x33, + 0x0b, 0x02, 0x03, 0x00, 0x2e, 0x3b, 0x00, 0x00, 0x4c, 0xff, 0xd6, 0x3e, 0x0f, 0x06, 0x07, 0x04, + 0x07, 0x3b, 0x17, 0x00, 0x00, 0x33, 0xc7, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x01, + 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x0a, 0x1e, 0x5c, 0x83, 0x49, 0x0b, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x09, 0x27, 0x8f, 0xa0, 0x6c, 0x8d, 0x2b, 0x09, 0x09, 0x02, 0x00, 0x00, 0x08, + 0x28, 0x9e, 0x90, 0x23, 0x0d, 0x50, 0x54, 0x07, 0x04, 0x00, 0x00, 0x08, 0x24, 0x9f, 0x98, 0x1e, + 0x03, 0x00, 0x2e, 0x5a, 0x02, 0x00, 0x09, 0x17, 0x29, 0x9d, 0xaa, 0x25, 0x03, 0x00, 0x00, 0x26, + 0x50, 0x00, 0x04, 0x2c, 0x7f, 0xac, 0xb5, 0x33, 0x0a, 0x02, 0x03, 0x00, 0x2d, 0x38, 0x00, 0x00, + 0x69, 0xff, 0xc6, 0x39, 0x0f, 0x06, 0x08, 0x04, 0x04, 0x36, 0x15, 0x00, 0x00, 0x51, 0xde, 0x73, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x01, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x0a, + 0x1e, 0x5b, 0x82, 0x48, 0x0b, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x09, 0x27, 0x8e, 0x9f, 0x6b, + 0x8b, 0x2a, 0x09, 0x09, 0x02, 0x00, 0x00, 0x08, 0x28, 0x9e, 0x90, 0x23, 0x0d, 0x4e, 0x52, 0x07, + 0x02, 0x00, 0x00, 0x09, 0x24, 0x9e, 0x97, 0x1d, 0x03, 0x00, 0x2d, 0x58, 0x02, 0x00, 0x09, 0x14, + 0x27, 0x9c, 0xa8, 0x24, 0x03, 0x01, 0x00, 0x25, 0x4e, 0x00, 0x04, 0x33, 0x72, 0xa7, 0xb5, 0x32, + 0x0a, 0x02, 0x03, 0x00, 0x2b, 0x36, 0x00, 0x05, 0x87, 0xff, 0xbb, 0x39, 0x0f, 0x06, 0x08, 0x04, + 0x03, 0x30, 0x13, 0x00, 0x04, 0x76, 0xeb, 0x61, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x01, + 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, 0x1d, 0x5b, 0x80, 0x47, 0x0b, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x08, 0x26, 0x8c, 0x9d, 0x69, 0x8a, 0x29, 0x09, 0x08, 0x03, 0x00, 0x00, 0x08, + 0x27, 0x9d, 0x8f, 0x22, 0x0c, 0x4d, 0x51, 0x07, 0x02, 0x00, 0x00, 0x08, 0x24, 0x9d, 0x96, 0x1d, + 0x03, 0x00, 0x2c, 0x57, 0x02, 0x02, 0x08, 0x10, 0x26, 0x9c, 0xa7, 0x23, 0x03, 0x00, 0x00, 0x24, + 0x4c, 0x00, 0x07, 0x39, 0x66, 0xa2, 0xb4, 0x32, 0x0a, 0x02, 0x02, 0x00, 0x28, 0x33, 0x00, 0x0c, + 0xa2, 0xfd, 0xb3, 0x38, 0x0f, 0x06, 0x08, 0x04, 0x01, 0x2a, 0x11, 0x00, 0x0b, 0x9d, 0xef, 0x4f, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, + 0x1d, 0x5a, 0x7f, 0x46, 0x0b, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x08, 0x26, 0x8c, 0x9d, 0x69, + 0x89, 0x29, 0x09, 0x08, 0x03, 0x00, 0x00, 0x08, 0x27, 0x9c, 0x8f, 0x21, 0x0b, 0x4b, 0x4f, 0x07, + 0x03, 0x00, 0x00, 0x08, 0x23, 0x9d, 0x96, 0x1c, 0x03, 0x00, 0x2a, 0x55, 0x02, 0x03, 0x08, 0x0f, + 0x24, 0x9b, 0xa6, 0x23, 0x03, 0x01, 0x00, 0x23, 0x49, 0x00, 0x0b, 0x3e, 0x5c, 0xa1, 0xb4, 0x32, + 0x0a, 0x02, 0x02, 0x00, 0x25, 0x30, 0x00, 0x17, 0xb9, 0xf5, 0xaf, 0x38, 0x0f, 0x06, 0x08, 0x04, + 0x01, 0x25, 0x10, 0x00, 0x16, 0xc2, 0xe9, 0x40, 0x09, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, 0x1d, 0x59, 0x7e, 0x45, 0x0b, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x09, 0x25, 0x8a, 0x9c, 0x67, 0x86, 0x27, 0x09, 0x08, 0x03, 0x00, 0x00, 0x08, + 0x26, 0x9a, 0x8d, 0x20, 0x0b, 0x4a, 0x4e, 0x07, 0x03, 0x00, 0x00, 0x08, 0x23, 0x9b, 0x95, 0x1d, + 0x03, 0x00, 0x29, 0x53, 0x02, 0x03, 0x07, 0x0d, 0x24, 0x9a, 0xa5, 0x23, 0x03, 0x01, 0x00, 0x21, + 0x47, 0x00, 0x0f, 0x40, 0x51, 0x9f, 0xb3, 0x30, 0x0a, 0x01, 0x01, 0x00, 0x23, 0x2d, 0x00, 0x25, + 0xcc, 0xec, 0xac, 0x38, 0x0f, 0x06, 0x08, 0x04, 0x00, 0x20, 0x0d, 0x00, 0x28, 0xe0, 0xd9, 0x37, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, + 0x1d, 0x59, 0x7e, 0x44, 0x0b, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x09, 0x25, 0x8a, 0x9b, 0x66, + 0x85, 0x27, 0x09, 0x08, 0x03, 0x00, 0x00, 0x08, 0x25, 0x99, 0x8c, 0x20, 0x0b, 0x49, 0x4d, 0x07, + 0x03, 0x00, 0x00, 0x08, 0x23, 0x9b, 0x94, 0x1d, 0x03, 0x00, 0x28, 0x51, 0x02, 0x03, 0x07, 0x0c, + 0x24, 0x9a, 0xa5, 0x22, 0x03, 0x01, 0x00, 0x1f, 0x45, 0x00, 0x13, 0x43, 0x4c, 0x9f, 0xb3, 0x30, + 0x0a, 0x01, 0x01, 0x00, 0x20, 0x2b, 0x00, 0x37, 0xda, 0xe3, 0xac, 0x38, 0x0f, 0x06, 0x08, 0x04, + 0x00, 0x1b, 0x0c, 0x00, 0x3e, 0xf7, 0xc8, 0x32, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, 0x1c, 0x58, 0x7c, 0x43, 0x0a, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x08, 0x24, 0x89, 0x99, 0x65, 0x83, 0x26, 0x09, 0x08, 0x03, 0x00, 0x00, 0x07, + 0x24, 0x98, 0x8b, 0x20, 0x0a, 0x47, 0x4b, 0x07, 0x03, 0x00, 0x00, 0x07, 0x23, 0x9a, 0x93, 0x1b, + 0x03, 0x00, 0x27, 0x4f, 0x01, 0x04, 0x07, 0x0c, 0x23, 0x99, 0xa4, 0x22, 0x03, 0x01, 0x00, 0x1e, + 0x41, 0x01, 0x18, 0x43, 0x45, 0x9e, 0xb2, 0x2f, 0x0a, 0x02, 0x01, 0x00, 0x1d, 0x28, 0x00, 0x4b, + 0xe2, 0xda, 0xab, 0x38, 0x0f, 0x06, 0x08, 0x04, 0x00, 0x16, 0x0a, 0x00, 0x59, 0xff, 0xb6, 0x2e, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, + 0x1b, 0x57, 0x7a, 0x43, 0x0a, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x08, 0x24, 0x88, 0x98, 0x65, + 0x81, 0x26, 0x08, 0x08, 0x03, 0x00, 0x00, 0x07, 0x24, 0x97, 0x8a, 0x20, 0x0a, 0x46, 0x4a, 0x08, + 0x03, 0x00, 0x00, 0x07, 0x22, 0x9a, 0x92, 0x1b, 0x03, 0x00, 0x26, 0x4d, 0x00, 0x06, 0x07, 0x0b, + 0x23, 0x98, 0xa3, 0x22, 0x03, 0x01, 0x00, 0x1c, 0x3f, 0x00, 0x1e, 0x45, 0x40, 0x9d, 0xb1, 0x2f, + 0x09, 0x01, 0x01, 0x00, 0x19, 0x25, 0x02, 0x62, 0xe5, 0xd2, 0xab, 0x37, 0x0f, 0x06, 0x08, 0x04, + 0x00, 0x11, 0x09, 0x01, 0x76, 0xff, 0xa6, 0x2d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, 0x1b, 0x55, 0x79, 0x41, 0x0a, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x08, 0x23, 0x87, 0x97, 0x64, 0x7f, 0x24, 0x08, 0x08, 0x04, 0x00, 0x00, 0x07, + 0x24, 0x96, 0x89, 0x1f, 0x0a, 0x45, 0x48, 0x06, 0x03, 0x00, 0x00, 0x07, 0x22, 0x99, 0x91, 0x1b, + 0x03, 0x00, 0x24, 0x4a, 0x01, 0x05, 0x08, 0x0b, 0x23, 0x97, 0xa3, 0x21, 0x03, 0x01, 0x00, 0x1a, + 0x3b, 0x01, 0x25, 0x45, 0x3c, 0x9c, 0xb0, 0x2f, 0x09, 0x01, 0x01, 0x00, 0x17, 0x20, 0x06, 0x79, + 0xe4, 0xcc, 0xaa, 0x36, 0x0e, 0x06, 0x08, 0x04, 0x00, 0x0d, 0x06, 0x05, 0x92, 0xff, 0x9a, 0x2c, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x01, 0x09, + 0x1b, 0x55, 0x78, 0x41, 0x0a, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x08, 0x22, 0x85, 0x96, 0x63, + 0x7d, 0x23, 0x08, 0x07, 0x04, 0x00, 0x00, 0x07, 0x23, 0x95, 0x89, 0x1f, 0x0a, 0x43, 0x46, 0x05, + 0x04, 0x00, 0x00, 0x07, 0x22, 0x98, 0x90, 0x1b, 0x03, 0x00, 0x23, 0x49, 0x03, 0x06, 0x08, 0x0b, + 0x23, 0x96, 0xa2, 0x21, 0x03, 0x01, 0x00, 0x19, 0x39, 0x06, 0x2c, 0x45, 0x39, 0x9b, 0xb0, 0x2f, + 0x09, 0x02, 0x01, 0x00, 0x14, 0x1e, 0x0c, 0x94, 0xe2, 0xc7, 0xaa, 0x36, 0x0e, 0x06, 0x08, 0x04, + 0x00, 0x0a, 0x05, 0x0d, 0xad, 0xff, 0x91, 0x2c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x1a, 0x53, 0x76, 0x3f, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x07, 0x22, 0x84, 0x94, 0x62, 0x7c, 0x22, 0x08, 0x07, 0x04, 0x00, 0x00, 0x07, + 0x23, 0x94, 0x87, 0x1e, 0x09, 0x42, 0x45, 0x04, 0x04, 0x00, 0x00, 0x06, 0x21, 0x97, 0x8f, 0x1a, + 0x03, 0x00, 0x22, 0x47, 0x04, 0x07, 0x08, 0x0a, 0x23, 0x95, 0xa1, 0x21, 0x03, 0x01, 0x00, 0x17, + 0x35, 0x08, 0x34, 0x44, 0x37, 0x9a, 0xaf, 0x2f, 0x09, 0x01, 0x01, 0x00, 0x11, 0x1a, 0x14, 0xad, + 0xde, 0xc3, 0xaa, 0x36, 0x0e, 0x06, 0x08, 0x04, 0x00, 0x07, 0x03, 0x17, 0xc6, 0xf8, 0x8a, 0x2c, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x1a, 0x53, 0x75, 0x3f, 0x0a, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x07, 0x22, 0x84, 0x93, 0x60, + 0x7a, 0x22, 0x08, 0x07, 0x04, 0x00, 0x00, 0x07, 0x23, 0x93, 0x86, 0x1e, 0x09, 0x40, 0x43, 0x04, + 0x04, 0x00, 0x00, 0x06, 0x21, 0x96, 0x8f, 0x1a, 0x03, 0x00, 0x21, 0x45, 0x04, 0x08, 0x08, 0x0a, + 0x22, 0x95, 0xa1, 0x20, 0x03, 0x01, 0x00, 0x15, 0x32, 0x0e, 0x3f, 0x43, 0x34, 0x9a, 0xaf, 0x2f, + 0x09, 0x02, 0x01, 0x00, 0x0e, 0x16, 0x20, 0xc6, 0xd9, 0xc0, 0xa9, 0x35, 0x0e, 0x06, 0x08, 0x04, + 0x00, 0x04, 0x02, 0x23, 0xd9, 0xee, 0x85, 0x2c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x1a, 0x52, 0x73, 0x3d, 0x0a, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x07, 0x21, 0x82, 0x91, 0x5f, 0x78, 0x21, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, + 0x23, 0x93, 0x85, 0x1d, 0x09, 0x3e, 0x42, 0x04, 0x04, 0x00, 0x00, 0x06, 0x20, 0x95, 0x8d, 0x1a, + 0x03, 0x00, 0x1f, 0x41, 0x04, 0x09, 0x08, 0x0a, 0x22, 0x95, 0x9f, 0x1f, 0x03, 0x01, 0x00, 0x13, + 0x2f, 0x13, 0x49, 0x43, 0x33, 0x9a, 0xae, 0x2e, 0x09, 0x01, 0x01, 0x00, 0x0b, 0x13, 0x2f, 0xdc, + 0xd2, 0xbd, 0xa9, 0x35, 0x0e, 0x06, 0x08, 0x04, 0x00, 0x02, 0x01, 0x31, 0xe6, 0xe3, 0x83, 0x2b, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x1a, 0x51, 0x72, 0x3c, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x21, 0x81, 0x90, 0x5e, + 0x76, 0x20, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, 0x22, 0x92, 0x84, 0x1c, 0x08, 0x3c, 0x3f, 0x04, + 0x04, 0x01, 0x00, 0x06, 0x20, 0x94, 0x8d, 0x1a, 0x03, 0x00, 0x1d, 0x3e, 0x06, 0x0b, 0x09, 0x0a, + 0x22, 0x94, 0x9e, 0x1f, 0x03, 0x01, 0x00, 0x11, 0x2a, 0x18, 0x58, 0x42, 0x32, 0x9a, 0xad, 0x2e, + 0x09, 0x01, 0x01, 0x00, 0x09, 0x10, 0x41, 0xf0, 0xcb, 0xbc, 0xa9, 0x35, 0x0e, 0x06, 0x08, 0x04, + 0x00, 0x01, 0x00, 0x40, 0xed, 0xd7, 0x82, 0x2b, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x07, 0x19, 0x50, 0x70, 0x3a, 0x08, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x21, 0x7f, 0x8e, 0x5d, 0x73, 0x1f, 0x08, 0x06, 0x04, 0x00, 0x00, 0x06, + 0x22, 0x90, 0x83, 0x1c, 0x08, 0x3a, 0x3d, 0x03, 0x05, 0x01, 0x00, 0x06, 0x1f, 0x93, 0x8b, 0x19, + 0x03, 0x00, 0x1b, 0x3b, 0x06, 0x0e, 0x0a, 0x09, 0x20, 0x92, 0x9d, 0x1e, 0x02, 0x01, 0x00, 0x0f, + 0x26, 0x22, 0x69, 0x41, 0x30, 0x99, 0xac, 0x2d, 0x08, 0x01, 0x01, 0x00, 0x06, 0x0d, 0x57, 0xff, + 0xc4, 0xba, 0xa8, 0x34, 0x0e, 0x06, 0x08, 0x04, 0x00, 0x00, 0x00, 0x4f, 0xeb, 0xcc, 0x81, 0x2b, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x07, + 0x19, 0x4f, 0x70, 0x3a, 0x07, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x21, 0x7f, 0x8e, 0x5c, + 0x73, 0x1e, 0x07, 0x06, 0x04, 0x00, 0x00, 0x06, 0x22, 0x90, 0x82, 0x1b, 0x06, 0x39, 0x3b, 0x05, + 0x05, 0x01, 0x00, 0x06, 0x1f, 0x93, 0x8b, 0x19, 0x03, 0x00, 0x19, 0x38, 0x0a, 0x14, 0x0b, 0x09, + 0x20, 0x92, 0x9d, 0x1e, 0x03, 0x01, 0x00, 0x0d, 0x22, 0x2d, 0x7d, 0x41, 0x2f, 0x99, 0xac, 0x2d, + 0x08, 0x01, 0x01, 0x02, 0x08, 0x0a, 0x6f, 0xff, 0xbc, 0xba, 0xa8, 0x34, 0x0e, 0x06, 0x08, 0x04, + 0x00, 0x00, 0x00, 0x5a, 0xe4, 0xc4, 0x81, 0x2a, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x1b, 0x53, 0x76, 0x3f, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x07, 0x22, 0x84, 0x94, 0x62, 0x7c, 0x22, 0x08, 0x07, 0x05, 0x00, 0x00, 0x06, + 0x23, 0x93, 0x87, 0x1e, 0x09, 0x42, 0x45, 0x04, 0x04, 0x00, 0x00, 0x06, 0x21, 0x96, 0x8f, 0x1a, + 0x02, 0x00, 0x22, 0x47, 0x04, 0x07, 0x07, 0x0a, 0x23, 0x95, 0xa1, 0x21, 0x03, 0x01, 0x00, 0x17, + 0x36, 0x08, 0x34, 0x45, 0x36, 0x9b, 0xaf, 0x2e, 0x09, 0x02, 0x01, 0x00, 0x11, 0x1a, 0x14, 0xad, + 0xde, 0xc2, 0xaa, 0x36, 0x0e, 0x07, 0x08, 0x05, 0x00, 0x06, 0x03, 0x17, 0xc6, 0xf8, 0x89, 0x2c, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x1a, 0x51, 0x74, 0x3d, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x07, 0x21, 0x80, 0x8f, 0x5f, + 0x78, 0x22, 0x08, 0x07, 0x05, 0x00, 0x00, 0x06, 0x22, 0x90, 0x84, 0x1d, 0x09, 0x3f, 0x43, 0x04, + 0x04, 0x00, 0x00, 0x06, 0x20, 0x93, 0x8b, 0x19, 0x03, 0x00, 0x22, 0x45, 0x04, 0x07, 0x07, 0x0a, + 0x22, 0x92, 0x9d, 0x1f, 0x04, 0x01, 0x00, 0x17, 0x34, 0x07, 0x33, 0x43, 0x35, 0x97, 0xab, 0x2d, + 0x08, 0x02, 0x01, 0x00, 0x10, 0x1a, 0x14, 0xa8, 0xda, 0xbd, 0xa5, 0x35, 0x0e, 0x07, 0x08, 0x04, + 0x00, 0x06, 0x03, 0x17, 0xc0, 0xf3, 0x86, 0x2b, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x07, 0x19, 0x4f, 0x70, 0x3c, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x20, 0x7d, 0x8c, 0x5d, 0x75, 0x21, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, + 0x21, 0x8c, 0x7f, 0x1c, 0x08, 0x3e, 0x41, 0x04, 0x04, 0x00, 0x00, 0x05, 0x1f, 0x8f, 0x86, 0x18, + 0x03, 0x00, 0x20, 0x43, 0x04, 0x06, 0x07, 0x0a, 0x21, 0x8d, 0x97, 0x1e, 0x04, 0x01, 0x00, 0x15, + 0x33, 0x07, 0x30, 0x40, 0x34, 0x92, 0xa5, 0x2b, 0x08, 0x02, 0x01, 0x00, 0x0f, 0x19, 0x13, 0xa2, + 0xd3, 0xb8, 0xa0, 0x33, 0x0e, 0x06, 0x08, 0x04, 0x00, 0x06, 0x03, 0x16, 0xba, 0xec, 0x82, 0x29, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x19, 0x4d, 0x6e, 0x3a, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x20, 0x7a, 0x89, 0x5b, + 0x72, 0x20, 0x08, 0x07, 0x05, 0x00, 0x00, 0x06, 0x20, 0x89, 0x7c, 0x1c, 0x09, 0x3d, 0x3f, 0x04, + 0x04, 0x00, 0x00, 0x05, 0x1f, 0x8c, 0x84, 0x17, 0x03, 0x00, 0x20, 0x42, 0x04, 0x06, 0x07, 0x0a, + 0x20, 0x8a, 0x94, 0x1e, 0x04, 0x01, 0x00, 0x15, 0x31, 0x07, 0x30, 0x3f, 0x33, 0x90, 0xa2, 0x2a, + 0x08, 0x02, 0x01, 0x00, 0x0f, 0x18, 0x13, 0xa1, 0xd1, 0xb5, 0x9e, 0x32, 0x0e, 0x07, 0x08, 0x04, + 0x00, 0x06, 0x03, 0x15, 0xb8, 0xeb, 0x80, 0x29, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x19, 0x4c, 0x6b, 0x39, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x1f, 0x76, 0x85, 0x59, 0x6f, 0x1f, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, + 0x20, 0x83, 0x79, 0x1b, 0x08, 0x3b, 0x3e, 0x04, 0x04, 0x00, 0x00, 0x05, 0x1e, 0x87, 0x80, 0x17, + 0x03, 0x00, 0x1e, 0x40, 0x04, 0x06, 0x07, 0x0a, 0x1f, 0x86, 0x90, 0x1d, 0x04, 0x01, 0x00, 0x15, + 0x30, 0x07, 0x2e, 0x3d, 0x31, 0x8c, 0x9d, 0x29, 0x08, 0x02, 0x01, 0x00, 0x0e, 0x18, 0x12, 0x9b, + 0xcb, 0xaf, 0x99, 0x30, 0x0d, 0x06, 0x07, 0x04, 0x00, 0x06, 0x03, 0x15, 0xb2, 0xe3, 0x7c, 0x28, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x18, 0x49, 0x67, 0x37, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x1e, 0x72, 0x80, 0x56, + 0x6b, 0x1e, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, 0x1f, 0x7f, 0x75, 0x1b, 0x08, 0x39, 0x3c, 0x04, + 0x04, 0x00, 0x00, 0x06, 0x1d, 0x82, 0x7c, 0x16, 0x03, 0x00, 0x1d, 0x3e, 0x04, 0x05, 0x06, 0x08, + 0x1d, 0x81, 0x8b, 0x1c, 0x03, 0x01, 0x00, 0x14, 0x2e, 0x07, 0x2d, 0x3a, 0x30, 0x86, 0x98, 0x28, + 0x07, 0x02, 0x01, 0x00, 0x0e, 0x17, 0x12, 0x96, 0xc3, 0xa9, 0x93, 0x2f, 0x0d, 0x06, 0x07, 0x04, + 0x00, 0x06, 0x03, 0x14, 0xab, 0xdb, 0x77, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x17, 0x46, 0x63, 0x35, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x1d, 0x6d, 0x7b, 0x52, 0x67, 0x1d, 0x08, 0x07, 0x04, 0x00, 0x00, 0x07, + 0x1d, 0x7a, 0x70, 0x18, 0x07, 0x36, 0x3a, 0x04, 0x04, 0x00, 0x00, 0x06, 0x1c, 0x7d, 0x77, 0x16, + 0x03, 0x00, 0x1d, 0x3c, 0x04, 0x06, 0x06, 0x09, 0x1d, 0x7c, 0x85, 0x1b, 0x03, 0x01, 0x00, 0x13, + 0x2c, 0x07, 0x2b, 0x38, 0x2e, 0x81, 0x91, 0x27, 0x07, 0x02, 0x01, 0x00, 0x0e, 0x16, 0x11, 0x90, + 0xbc, 0xa2, 0x8d, 0x2d, 0x0c, 0x06, 0x07, 0x04, 0x00, 0x06, 0x03, 0x13, 0xa5, 0xd2, 0x73, 0x25, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x16, 0x44, 0x5f, 0x33, 0x08, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x07, 0x1c, 0x69, 0x76, 0x4f, + 0x63, 0x1c, 0x08, 0x07, 0x04, 0x00, 0x00, 0x07, 0x1d, 0x75, 0x6b, 0x18, 0x07, 0x35, 0x37, 0x04, + 0x04, 0x00, 0x00, 0x06, 0x1b, 0x78, 0x71, 0x15, 0x03, 0x00, 0x1b, 0x39, 0x04, 0x06, 0x06, 0x08, + 0x1c, 0x77, 0x80, 0x1a, 0x03, 0x01, 0x00, 0x12, 0x2b, 0x07, 0x2a, 0x37, 0x2c, 0x7c, 0x8b, 0x25, + 0x07, 0x02, 0x01, 0x00, 0x0d, 0x15, 0x11, 0x8a, 0xb4, 0x9c, 0x88, 0x2b, 0x0c, 0x06, 0x07, 0x04, + 0x00, 0x05, 0x03, 0x13, 0x9e, 0xca, 0x6e, 0x23, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x15, 0x40, 0x5b, 0x31, 0x07, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x07, 0x1a, 0x64, 0x71, 0x4b, 0x5e, 0x1b, 0x08, 0x07, 0x04, 0x00, 0x00, 0x07, + 0x1b, 0x6f, 0x67, 0x17, 0x07, 0x32, 0x35, 0x04, 0x04, 0x00, 0x00, 0x06, 0x19, 0x73, 0x6c, 0x13, + 0x03, 0x00, 0x19, 0x37, 0x04, 0x05, 0x06, 0x08, 0x1b, 0x72, 0x79, 0x18, 0x03, 0x01, 0x00, 0x11, + 0x29, 0x07, 0x28, 0x33, 0x29, 0x76, 0x85, 0x23, 0x07, 0x01, 0x01, 0x00, 0x0c, 0x14, 0x10, 0x84, + 0xad, 0x95, 0x82, 0x29, 0x0b, 0x05, 0x06, 0x04, 0x00, 0x05, 0x03, 0x12, 0x97, 0xc2, 0x69, 0x22, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x15, 0x40, 0x5b, 0x31, 0x07, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x07, 0x1a, 0x64, 0x71, 0x4b, + 0x5e, 0x1b, 0x08, 0x07, 0x04, 0x00, 0x00, 0x07, 0x1b, 0x6f, 0x67, 0x17, 0x07, 0x32, 0x35, 0x04, + 0x04, 0x00, 0x00, 0x06, 0x19, 0x73, 0x6c, 0x13, 0x03, 0x00, 0x19, 0x37, 0x04, 0x05, 0x06, 0x08, + 0x1b, 0x72, 0x79, 0x18, 0x03, 0x01, 0x00, 0x11, 0x29, 0x07, 0x28, 0x33, 0x29, 0x76, 0x85, 0x23, + 0x07, 0x01, 0x01, 0x00, 0x0c, 0x14, 0x0f, 0x84, 0xad, 0x95, 0x82, 0x29, 0x0b, 0x05, 0x06, 0x04, + 0x00, 0x05, 0x03, 0x12, 0x97, 0xc2, 0x69, 0x22, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x14, 0x3c, 0x56, 0x2e, 0x07, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x19, 0x5e, 0x69, 0x46, 0x58, 0x1a, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, + 0x1a, 0x69, 0x61, 0x15, 0x07, 0x2f, 0x31, 0x04, 0x04, 0x01, 0x00, 0x06, 0x18, 0x6d, 0x66, 0x13, + 0x03, 0x00, 0x18, 0x33, 0x04, 0x05, 0x06, 0x08, 0x19, 0x6c, 0x72, 0x17, 0x02, 0x01, 0x00, 0x10, + 0x27, 0x07, 0x26, 0x2f, 0x27, 0x70, 0x7e, 0x21, 0x07, 0x01, 0x01, 0x00, 0x0b, 0x13, 0x0f, 0x7d, + 0xa3, 0x8d, 0x7a, 0x27, 0x0b, 0x05, 0x06, 0x04, 0x00, 0x05, 0x03, 0x11, 0x90, 0xb8, 0x63, 0x20, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x14, 0x3b, 0x53, 0x2c, 0x07, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x18, 0x5b, 0x66, 0x44, + 0x56, 0x19, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, 0x19, 0x67, 0x5e, 0x14, 0x07, 0x2d, 0x30, 0x04, + 0x04, 0x01, 0x00, 0x06, 0x18, 0x68, 0x62, 0x12, 0x03, 0x00, 0x18, 0x31, 0x04, 0x06, 0x06, 0x08, + 0x19, 0x68, 0x6f, 0x16, 0x02, 0x01, 0x00, 0x0f, 0x25, 0x07, 0x24, 0x2e, 0x25, 0x6c, 0x79, 0x1f, + 0x06, 0x01, 0x01, 0x00, 0x0a, 0x12, 0x0e, 0x78, 0x9d, 0x87, 0x76, 0x25, 0x0a, 0x05, 0x06, 0x03, + 0x00, 0x05, 0x03, 0x10, 0x8a, 0xb0, 0x60, 0x1f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, 0x13, 0x38, 0x4f, 0x2a, 0x07, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x17, 0x57, 0x61, 0x42, 0x51, 0x18, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, + 0x17, 0x60, 0x59, 0x13, 0x07, 0x2b, 0x2d, 0x04, 0x04, 0x01, 0x00, 0x06, 0x16, 0x63, 0x5d, 0x11, + 0x02, 0x00, 0x16, 0x2f, 0x04, 0x06, 0x06, 0x07, 0x17, 0x62, 0x69, 0x15, 0x02, 0x01, 0x00, 0x0e, + 0x24, 0x06, 0x23, 0x2c, 0x24, 0x66, 0x74, 0x1e, 0x06, 0x01, 0x01, 0x00, 0x0a, 0x11, 0x0d, 0x73, + 0x96, 0x81, 0x71, 0x24, 0x0a, 0x05, 0x05, 0x03, 0x00, 0x04, 0x02, 0x0f, 0x83, 0xa8, 0x5b, 0x1d, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x08, + 0x12, 0x35, 0x4b, 0x29, 0x07, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x16, 0x53, 0x5c, 0x3e, + 0x4e, 0x17, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, 0x17, 0x5d, 0x55, 0x13, 0x06, 0x28, 0x2b, 0x04, + 0x04, 0x01, 0x00, 0x06, 0x15, 0x5e, 0x59, 0x10, 0x02, 0x00, 0x15, 0x2d, 0x04, 0x06, 0x06, 0x08, + 0x15, 0x5d, 0x64, 0x14, 0x01, 0x01, 0x00, 0x0d, 0x22, 0x06, 0x20, 0x2a, 0x22, 0x60, 0x6d, 0x1d, + 0x06, 0x01, 0x01, 0x00, 0x0a, 0x10, 0x0d, 0x6d, 0x8f, 0x7b, 0x6b, 0x22, 0x09, 0x05, 0x05, 0x03, + 0x00, 0x04, 0x02, 0x0f, 0x7d, 0xa0, 0x57, 0x1c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x07, 0x11, 0x33, 0x48, 0x26, 0x06, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x15, 0x4f, 0x57, 0x3b, 0x49, 0x16, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, + 0x15, 0x57, 0x4f, 0x10, 0x05, 0x26, 0x28, 0x04, 0x04, 0x01, 0x00, 0x06, 0x14, 0x59, 0x54, 0x0f, + 0x01, 0x00, 0x14, 0x29, 0x04, 0x06, 0x05, 0x07, 0x14, 0x58, 0x5e, 0x13, 0x01, 0x01, 0x00, 0x0c, + 0x1f, 0x06, 0x1f, 0x27, 0x20, 0x5c, 0x67, 0x1b, 0x05, 0x01, 0x01, 0x00, 0x09, 0x0f, 0x0c, 0x67, + 0x87, 0x74, 0x65, 0x20, 0x09, 0x04, 0x05, 0x03, 0x00, 0x04, 0x02, 0x0e, 0x76, 0x97, 0x52, 0x1a, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x01, 0x07, + 0x11, 0x33, 0x47, 0x26, 0x06, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x15, 0x4f, 0x57, 0x3b, + 0x49, 0x16, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, 0x15, 0x57, 0x4f, 0x10, 0x05, 0x26, 0x28, 0x04, + 0x04, 0x01, 0x00, 0x06, 0x14, 0x59, 0x54, 0x0f, 0x01, 0x00, 0x14, 0x29, 0x04, 0x06, 0x05, 0x07, + 0x14, 0x58, 0x5e, 0x13, 0x01, 0x01, 0x00, 0x0c, 0x1f, 0x06, 0x1f, 0x27, 0x20, 0x5c, 0x67, 0x1b, + 0x05, 0x01, 0x01, 0x00, 0x09, 0x0f, 0x0c, 0x67, 0x87, 0x74, 0x65, 0x20, 0x09, 0x04, 0x05, 0x03, + 0x00, 0x04, 0x02, 0x0e, 0x76, 0x97, 0x52, 0x1a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x02, 0x07, 0x11, 0x30, 0x42, 0x24, 0x06, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x13, 0x49, 0x51, 0x36, 0x43, 0x14, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, + 0x13, 0x51, 0x4a, 0x10, 0x05, 0x23, 0x25, 0x04, 0x04, 0x01, 0x00, 0x06, 0x12, 0x53, 0x4e, 0x0e, + 0x01, 0x00, 0x13, 0x26, 0x04, 0x06, 0x05, 0x07, 0x13, 0x53, 0x59, 0x11, 0x01, 0x01, 0x00, 0x0b, + 0x1d, 0x05, 0x1d, 0x25, 0x1e, 0x56, 0x61, 0x1a, 0x05, 0x01, 0x01, 0x00, 0x08, 0x0e, 0x0b, 0x61, + 0x7f, 0x6d, 0x5e, 0x1e, 0x08, 0x04, 0x05, 0x03, 0x00, 0x04, 0x02, 0x0d, 0x6f, 0x8f, 0x4d, 0x18, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x02, 0x07, + 0x11, 0x2d, 0x3f, 0x23, 0x05, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00, 0x06, 0x13, 0x46, 0x4d, 0x34, + 0x40, 0x13, 0x08, 0x07, 0x04, 0x00, 0x00, 0x06, 0x13, 0x4d, 0x46, 0x10, 0x05, 0x22, 0x23, 0x04, + 0x04, 0x01, 0x00, 0x06, 0x11, 0x4f, 0x4b, 0x0d, 0x01, 0x00, 0x11, 0x24, 0x04, 0x06, 0x06, 0x07, + 0x11, 0x4e, 0x54, 0x11, 0x01, 0x01, 0x00, 0x0b, 0x1c, 0x05, 0x1c, 0x23, 0x1c, 0x51, 0x5c, 0x18, + 0x04, 0x01, 0x01, 0x00, 0x08, 0x0d, 0x0b, 0x5c, 0x78, 0x67, 0x5a, 0x1c, 0x08, 0x04, 0x05, 0x03, + 0x00, 0x04, 0x02, 0x0c, 0x69, 0x86, 0x49, 0x17, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, 0x02, 0x06, 0x0f, 0x2b, 0x3c, 0x22, 0x05, 0x09, 0x09, 0x09, + 0x06, 0x00, 0x00, 0x06, 0x12, 0x42, 0x48, 0x31, 0x3d, 0x12, 0x08, 0x07, 0x04, 0x00, 0x00, 0x05, + 0x11, 0x49, 0x42, 0x0f, 0x05, 0x20, 0x22, 0x04, 0x04, 0x01, 0x00, 0x04, 0x10, 0x4a, 0x47, 0x0c, + 0x01, 0x00, 0x10, 0x22, 0x04, 0x06, 0x06, 0x07, 0x11, 0x49, 0x4f, 0x10, 0x01, 0x01, 0x00, 0x0a, + 0x19, 0x04, 0x1b, 0x21, 0x1b, 0x4c, 0x56, 0x17, 0x03, 0x01, 0x01, 0x00, 0x07, 0x0d, 0x0a, 0x56, + 0x71, 0x61, 0x55, 0x1b, 0x07, 0x04, 0x04, 0x03, 0x00, 0x04, 0x02, 0x0c, 0x63, 0x7e, 0x45, 0x16, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09, 0x08, 0x01, 0x01, 0x05, + 0x0e, 0x29, 0x39, 0x20, 0x05, 0x09, 0x09, 0x09, 0x08, 0x02, 0x00, 0x03, 0x11, 0x3f, 0x46, 0x2f, + 0x3a, 0x11, 0x09, 0x08, 0x07, 0x01, 0x00, 0x02, 0x11, 0x45, 0x3f, 0x10, 0x05, 0x1d, 0x20, 0x04, + 0x05, 0x00, 0x00, 0x02, 0x11, 0x47, 0x42, 0x0d, 0x01, 0x00, 0x10, 0x20, 0x03, 0x06, 0x04, 0x06, + 0x12, 0x45, 0x4b, 0x0f, 0x00, 0x00, 0x00, 0x09, 0x18, 0x04, 0x1a, 0x21, 0x1a, 0x48, 0x52, 0x16, + 0x05, 0x02, 0x04, 0x00, 0x08, 0x0e, 0x0a, 0x51, 0x6a, 0x5c, 0x50, 0x19, 0x07, 0x03, 0x04, 0x02, + 0x00, 0x03, 0x01, 0x0b, 0x5d, 0x76, 0x41, 0x15, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x08, 0x00, 0x01, 0x05, 0x0d, 0x27, 0x35, 0x1e, 0x05, 0x09, 0x09, 0x09, + 0x08, 0x01, 0x00, 0x03, 0x0e, 0x3b, 0x41, 0x2b, 0x37, 0x0f, 0x09, 0x08, 0x07, 0x01, 0x00, 0x02, + 0x0f, 0x40, 0x3a, 0x0f, 0x05, 0x1c, 0x1d, 0x05, 0x05, 0x00, 0x00, 0x03, 0x0f, 0x42, 0x3e, 0x0d, + 0x01, 0x00, 0x0e, 0x1e, 0x03, 0x05, 0x04, 0x06, 0x0f, 0x41, 0x47, 0x0d, 0x00, 0x00, 0x00, 0x08, + 0x17, 0x04, 0x18, 0x1f, 0x18, 0x44, 0x4d, 0x14, 0x04, 0x02, 0x03, 0x00, 0x07, 0x0c, 0x09, 0x4c, + 0x63, 0x56, 0x4b, 0x18, 0x07, 0x03, 0x04, 0x02, 0x00, 0x03, 0x01, 0x0a, 0x57, 0x6e, 0x3d, 0x13, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x08, 0x00, 0x01, 0x05, + 0x0d, 0x25, 0x33, 0x1d, 0x05, 0x09, 0x09, 0x09, 0x08, 0x01, 0x00, 0x03, 0x0e, 0x38, 0x3d, 0x29, + 0x34, 0x0f, 0x09, 0x08, 0x07, 0x01, 0x00, 0x03, 0x0f, 0x3d, 0x38, 0x0f, 0x05, 0x1b, 0x1c, 0x05, + 0x05, 0x00, 0x00, 0x03, 0x0e, 0x3f, 0x3c, 0x0c, 0x01, 0x00, 0x0e, 0x1d, 0x03, 0x05, 0x04, 0x06, + 0x0f, 0x3f, 0x43, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x15, 0x04, 0x17, 0x1e, 0x17, 0x41, 0x4a, 0x13, + 0x04, 0x02, 0x03, 0x00, 0x07, 0x0c, 0x08, 0x4a, 0x61, 0x54, 0x49, 0x17, 0x07, 0x03, 0x04, 0x02, + 0x00, 0x03, 0x01, 0x0a, 0x55, 0x6e, 0x3b, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x08, 0x00, 0x01, 0x05, 0x0c, 0x23, 0x30, 0x1b, 0x05, 0x09, 0x09, 0x09, + 0x08, 0x01, 0x00, 0x03, 0x0e, 0x34, 0x3a, 0x27, 0x30, 0x0e, 0x09, 0x08, 0x07, 0x01, 0x00, 0x03, + 0x0e, 0x39, 0x34, 0x0e, 0x05, 0x19, 0x1a, 0x05, 0x05, 0x00, 0x00, 0x03, 0x0e, 0x3b, 0x37, 0x0a, + 0x01, 0x00, 0x0c, 0x1a, 0x03, 0x05, 0x04, 0x06, 0x0e, 0x3a, 0x3e, 0x0c, 0x00, 0x00, 0x00, 0x07, + 0x14, 0x04, 0x16, 0x1d, 0x16, 0x3d, 0x44, 0x12, 0x04, 0x02, 0x03, 0x00, 0x07, 0x0b, 0x08, 0x45, + 0x5a, 0x4d, 0x43, 0x15, 0x06, 0x03, 0x03, 0x02, 0x00, 0x02, 0x01, 0x09, 0x4f, 0x65, 0x37, 0x11, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x01, 0x05, + 0x0c, 0x21, 0x2c, 0x19, 0x05, 0x09, 0x09, 0x09, 0x08, 0x02, 0x00, 0x03, 0x0d, 0x30, 0x35, 0x25, + 0x2c, 0x0d, 0x09, 0x08, 0x07, 0x01, 0x00, 0x03, 0x0d, 0x35, 0x30, 0x0e, 0x04, 0x17, 0x18, 0x05, + 0x05, 0x00, 0x00, 0x03, 0x0d, 0x36, 0x33, 0x0a, 0x01, 0x00, 0x0b, 0x19, 0x03, 0x05, 0x03, 0x05, + 0x0d, 0x35, 0x39, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x12, 0x04, 0x14, 0x1b, 0x14, 0x37, 0x3f, 0x11, + 0x04, 0x02, 0x03, 0x00, 0x07, 0x0b, 0x08, 0x3f, 0x53, 0x47, 0x3e, 0x14, 0x05, 0x03, 0x03, 0x02, + 0x00, 0x02, 0x01, 0x09, 0x49, 0x5d, 0x32, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x01, 0x05, 0x0b, 0x1d, 0x28, 0x17, 0x05, 0x09, 0x09, 0x09, + 0x08, 0x02, 0x00, 0x03, 0x0c, 0x2b, 0x30, 0x21, 0x28, 0x0b, 0x09, 0x08, 0x07, 0x01, 0x00, 0x03, + 0x0c, 0x2f, 0x2b, 0x0b, 0x05, 0x15, 0x14, 0x04, 0x05, 0x00, 0x00, 0x03, 0x0b, 0x31, 0x2d, 0x0a, + 0x02, 0x00, 0x0a, 0x15, 0x04, 0x05, 0x03, 0x05, 0x0c, 0x31, 0x33, 0x0a, 0x00, 0x00, 0x00, 0x05, + 0x0f, 0x04, 0x13, 0x18, 0x12, 0x32, 0x39, 0x0f, 0x04, 0x02, 0x03, 0x00, 0x06, 0x0a, 0x07, 0x39, + 0x4b, 0x40, 0x38, 0x12, 0x05, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x08, 0x42, 0x54, 0x2e, 0x0f, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x01, 0x05, + 0x0b, 0x1b, 0x25, 0x15, 0x05, 0x09, 0x09, 0x09, 0x08, 0x02, 0x00, 0x03, 0x0b, 0x27, 0x2b, 0x1e, + 0x24, 0x0a, 0x09, 0x08, 0x07, 0x01, 0x00, 0x03, 0x0a, 0x2a, 0x26, 0x0a, 0x04, 0x13, 0x13, 0x04, + 0x05, 0x00, 0x00, 0x03, 0x0a, 0x2c, 0x29, 0x09, 0x03, 0x00, 0x09, 0x13, 0x04, 0x05, 0x02, 0x05, + 0x0a, 0x2c, 0x2e, 0x09, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x04, 0x11, 0x15, 0x10, 0x2d, 0x33, 0x0e, + 0x04, 0x02, 0x02, 0x00, 0x06, 0x09, 0x06, 0x34, 0x44, 0x3a, 0x33, 0x10, 0x05, 0x02, 0x03, 0x01, + 0x00, 0x02, 0x01, 0x07, 0x3b, 0x4c, 0x29, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x01, 0x05, 0x0a, 0x18, 0x20, 0x13, 0x05, 0x09, 0x09, 0x09, + 0x08, 0x02, 0x00, 0x03, 0x0a, 0x22, 0x25, 0x1a, 0x20, 0x09, 0x09, 0x08, 0x07, 0x01, 0x00, 0x03, + 0x0a, 0x25, 0x21, 0x0a, 0x03, 0x0f, 0x0f, 0x04, 0x05, 0x00, 0x00, 0x03, 0x0a, 0x26, 0x24, 0x07, + 0x01, 0x00, 0x06, 0x10, 0x04, 0x05, 0x02, 0x03, 0x0a, 0x26, 0x28, 0x08, 0x00, 0x00, 0x00, 0x04, + 0x0c, 0x04, 0x10, 0x13, 0x0e, 0x27, 0x2c, 0x0d, 0x04, 0x02, 0x03, 0x00, 0x05, 0x07, 0x05, 0x2e, + 0x3c, 0x33, 0x2d, 0x0e, 0x04, 0x02, 0x02, 0x01, 0x00, 0x02, 0x01, 0x06, 0x34, 0x43, 0x24, 0x0c, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x01, 0x05, + 0x0a, 0x18, 0x20, 0x13, 0x05, 0x09, 0x09, 0x09, 0x08, 0x02, 0x00, 0x03, 0x0a, 0x22, 0x25, 0x1a, + 0x20, 0x09, 0x09, 0x08, 0x07, 0x01, 0x00, 0x03, 0x0a, 0x25, 0x21, 0x09, 0x03, 0x0f, 0x0f, 0x04, + 0x05, 0x00, 0x00, 0x03, 0x0a, 0x26, 0x24, 0x07, 0x02, 0x00, 0x06, 0x10, 0x04, 0x05, 0x02, 0x03, + 0x0a, 0x26, 0x28, 0x08, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x04, 0x10, 0x13, 0x0e, 0x27, 0x2c, 0x0d, + 0x04, 0x02, 0x03, 0x00, 0x05, 0x07, 0x05, 0x2e, 0x3c, 0x33, 0x2d, 0x0e, 0x04, 0x02, 0x02, 0x01, + 0x00, 0x02, 0x01, 0x06, 0x34, 0x43, 0x24, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x03, 0x01, 0x05, 0x09, 0x15, 0x1d, 0x10, 0x05, 0x09, 0x09, 0x09, + 0x09, 0x03, 0x00, 0x03, 0x09, 0x1e, 0x21, 0x17, 0x1c, 0x08, 0x09, 0x08, 0x08, 0x02, 0x00, 0x02, + 0x09, 0x20, 0x1d, 0x09, 0x03, 0x0e, 0x0e, 0x04, 0x05, 0x01, 0x00, 0x02, 0x0a, 0x21, 0x1f, 0x07, + 0x01, 0x00, 0x06, 0x0e, 0x03, 0x05, 0x02, 0x03, 0x0a, 0x21, 0x23, 0x07, 0x00, 0x00, 0x00, 0x03, + 0x0a, 0x04, 0x0e, 0x11, 0x0d, 0x22, 0x26, 0x0b, 0x04, 0x01, 0x03, 0x00, 0x04, 0x08, 0x05, 0x28, + 0x35, 0x2d, 0x27, 0x0d, 0x03, 0x02, 0x02, 0x01, 0x00, 0x01, 0x01, 0x05, 0x2e, 0x3b, 0x20, 0x0a, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x01, 0x01, 0x05, + 0x08, 0x12, 0x19, 0x0f, 0x05, 0x09, 0x09, 0x09, 0x09, 0x03, 0x00, 0x03, 0x07, 0x19, 0x1c, 0x14, + 0x18, 0x06, 0x09, 0x09, 0x09, 0x02, 0x00, 0x02, 0x06, 0x1b, 0x18, 0x08, 0x03, 0x0b, 0x0b, 0x06, + 0x04, 0x00, 0x00, 0x02, 0x07, 0x1b, 0x1a, 0x06, 0x01, 0x00, 0x05, 0x0b, 0x04, 0x04, 0x01, 0x03, + 0x08, 0x1b, 0x1d, 0x05, 0x00, 0x00, 0x00, 0x02, 0x09, 0x04, 0x0d, 0x11, 0x0b, 0x1d, 0x20, 0x09, + 0x04, 0x02, 0x03, 0x00, 0x04, 0x07, 0x04, 0x22, 0x2d, 0x27, 0x22, 0x0b, 0x03, 0x01, 0x02, 0x01, + 0x00, 0x01, 0x01, 0x05, 0x27, 0x32, 0x1b, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +struct bootanimation_user_data bootanimation = { + .magic = 0xBA, + .len_loop = bootanimation_len, + .len_end = bootanimation_end_len, + .buf_loop = (uint8_t *)bootanimation_buf, +}; diff --git a/libraries/Arduino_LED_Matrix/examples/Video/Video.ino b/libraries/Arduino_LED_Matrix/examples/Video/Video.ino new file mode 100644 index 000000000..a72bd7a23 --- /dev/null +++ b/libraries/Arduino_LED_Matrix/examples/Video/Video.ino @@ -0,0 +1,13 @@ +#include "Arduino_LED_Matrix.h" +#include "bad_apple.h" + +Arduino_LED_Matrix matrix; + +void setup() { + matrix.begin(); + matrix.setGrayscaleBits(8); +} + +void loop() { + matrix.playVideo(bad_apple, bad_apple_len); +} \ No newline at end of file diff --git a/libraries/Arduino_LED_Matrix/examples/Video/bad_apple.h b/libraries/Arduino_LED_Matrix/examples/Video/bad_apple.h new file mode 100644 index 000000000..9c080fce8 --- /dev/null +++ b/libraries/Arduino_LED_Matrix/examples/Video/bad_apple.h @@ -0,0 +1,4682 @@ +const unsigned char bad_apple[] = { + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x05, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x12, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x44, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x4e, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x02, 0x00, 0x73, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0xb2, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x94, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x03, 0x06, 0x06, 0x00, 0xae, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x03, 0x05, + 0x00, 0xab, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x03, 0x03, 0x00, 0xaf, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x02, 0x00, 0x05, 0xd0, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x00, 0x00, 0x1d, 0xed, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x08, 0x04, 0x00, 0x1d, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x24, 0x18, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x38, 0x71, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x07, 0x00, 0x2e, 0xdd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, + 0x08, 0x00, 0x3f, 0xff, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x04, 0x00, 0x62, + 0xff, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x00, 0x59, 0xed, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x08, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x07, 0x0b, 0x06, 0x00, 0x0a, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x01, 0x28, 0x1c, 0x2b, 0x01, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x00, 0x6a, 0xde, 0x0f, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x04, 0x00, 0x46, 0xf9, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x82, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xfd, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x2b, 0xed, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x00, 0x0b, 0xc6, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x08, 0x0a, 0x05, 0x00, 0x00, 0x84, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x05, 0x06, + 0x11, 0x00, 0x15, 0xc4, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x00, 0x18, 0x19, 0x0d, + 0xc2, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x04, 0x31, 0x04, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0b, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0xa6, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x01, 0x00, 0x7e, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x03, 0x00, 0x55, + 0xff, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x08, 0x00, 0x2a, 0xed, 0xff, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x04, 0x00, 0x4c, 0xe9, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x00, 0x8e, 0xff, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x00, 0x00, 0x8c, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xcc, 0xff, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x00, 0xa6, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x00, 0x88, 0xff, 0xfe, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x02, 0x00, 0x6d, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x02, 0x00, + 0x4d, 0xfc, 0xfe, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x00, 0xa9, 0xff, 0xfd, + 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x04, 0x00, 0x82, 0xff, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc6, 0xff, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xf9, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x02, + 0xc8, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x09, 0xd9, 0xff, 0xfe, + 0xfe, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x01, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x05, 0xc3, 0xff, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x04, 0x07, 0xa3, 0xff, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, + 0x01, 0x00, 0x87, 0xff, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0xf2, 0xff, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xed, 0xfd, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x00, 0xa8, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x00, 0x35, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x00, 0x39, 0xf7, 0xfe, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x01, 0x10, 0xde, + 0xff, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x06, 0x07, 0x50, 0xd2, 0xff, 0xfd, + 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x05, 0x00, 0x17, 0xda, 0xff, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xbf, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x00, + 0x66, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x2c, 0xf0, 0xff, 0xfd, + 0xfe, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x00, 0x5a, 0xdc, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x06, 0x00, 0x68, 0xff, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x09, 0x05, 0x05, 0x53, 0xe8, 0xfe, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x01, 0x00, 0x63, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x74, 0xf6, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x05, 0x00, 0x38, 0xeb, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x00, 0x1b, 0xd6, 0xff, 0xfd, 0xfe, 0xfe, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x01, 0x30, 0x97, 0xee, 0xfe, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x02, + 0xb6, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x00, 0x00, 0x78, 0xfd, + 0xfd, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x00, 0x00, 0xd6, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xd0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xcb, 0x07, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x02, + 0x06, 0xa2, 0xff, 0xff, 0xff, 0x08, 0x07, 0x0b, 0x0b, 0x0b, 0x0b, 0x07, 0x00, 0x66, 0xff, 0xfe, + 0xfe, 0xfe, 0x2c, 0x00, 0x0a, 0x0b, 0x0b, 0x0b, 0x07, 0x05, 0x28, 0x77, 0xff, 0xfe, 0xfd, 0x30, + 0x00, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x0f, 0x99, 0xfc, 0xfd, 0x05, 0x08, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, 0x87, 0xff, 0x09, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0a, 0x00, 0x48, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, + 0x06, 0x06, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x03, 0x00, 0x72, 0xff, 0xff, 0xff, 0x07, 0x09, 0x04, + 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x1f, 0xec, 0xff, 0xfd, 0xfe, 0x5a, 0x12, 0x00, 0x0b, 0x0b, 0x0b, + 0x0b, 0x05, 0x14, 0x5e, 0xfe, 0xff, 0xfd, 0x75, 0x00, 0x04, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, + 0x01, 0x7a, 0xf4, 0xfe, 0x0e, 0x05, 0x09, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x02, 0x00, 0x63, + 0xff, 0x07, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x2f, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x3c, 0x00, 0x06, 0x05, 0x0a, 0x0a, 0x0b, 0x08, + 0x00, 0x50, 0xff, 0xff, 0xff, 0x08, 0x0a, 0x08, 0x08, 0x07, 0x0a, 0x0b, 0x03, 0x00, 0xae, 0xff, + 0xfd, 0xfe, 0x0c, 0x27, 0x03, 0x0c, 0x06, 0x0a, 0x0b, 0x06, 0x04, 0x57, 0xf9, 0xff, 0xfd, 0x47, + 0x14, 0x00, 0x06, 0x08, 0x0a, 0x0b, 0x0b, 0x03, 0x00, 0x78, 0xf2, 0xfe, 0x28, 0x00, 0x07, 0x0a, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x02, 0x00, 0x5f, 0xff, 0x06, 0x06, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x00, 0x2a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0xe6, 0x1f, 0x01, 0x01, 0x05, 0x0a, 0x0b, 0x0b, 0x00, 0x27, 0xf9, 0xff, 0xff, 0xb1, 0x00, 0x06, + 0x08, 0x0b, 0x05, 0x0b, 0x06, 0x00, 0x5a, 0xff, 0xfe, 0xfe, 0x8d, 0x00, 0x01, 0x1f, 0x11, 0x03, + 0x0b, 0x06, 0x00, 0x4b, 0xfa, 0xff, 0xfd, 0x84, 0x00, 0x00, 0x05, 0x06, 0x09, 0x0b, 0x0b, 0x04, + 0x02, 0x83, 0xf6, 0xfd, 0x5f, 0x00, 0x05, 0x09, 0x0a, 0x0b, 0x0b, 0x0b, 0x0a, 0x01, 0x00, 0x69, + 0xff, 0x20, 0x01, 0x09, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x2d, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xed, 0x21, 0x01, 0x07, 0x09, 0x0b, 0x0b, + 0x03, 0x00, 0xb3, 0xff, 0xff, 0xff, 0xe0, 0x17, 0x09, 0x00, 0x06, 0x09, 0x0a, 0x00, 0x04, 0xc1, + 0xff, 0xfe, 0xff, 0xc2, 0x01, 0x00, 0x31, 0x19, 0x05, 0x08, 0x00, 0x1e, 0xe6, 0xff, 0xfd, 0xff, + 0xc5, 0x00, 0x00, 0x1a, 0x0b, 0x07, 0x09, 0x04, 0x03, 0xa2, 0xff, 0xfd, 0xff, 0x86, 0x00, 0x04, + 0x06, 0x08, 0x0b, 0x0b, 0x09, 0x01, 0x00, 0x85, 0xff, 0xc7, 0x07, 0x03, 0x0a, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0a, 0x00, 0x33, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x11, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xff, 0xff, 0x5b, 0x00, 0x01, 0x0b, 0x0b, 0x0b, 0x04, 0x00, 0x79, 0xf2, 0xff, 0xfe, 0xff, 0x77, + 0x03, 0x00, 0x00, 0x0b, 0x0b, 0x00, 0x00, 0x96, 0xff, 0xfd, 0xfd, 0xff, 0x44, 0x00, 0x0f, 0x1d, + 0x06, 0x08, 0x00, 0x0e, 0xc2, 0xff, 0xfd, 0xfe, 0xff, 0x44, 0x00, 0x0e, 0x1f, 0x05, 0x08, 0x03, + 0x04, 0xb5, 0xff, 0xfd, 0xff, 0xe4, 0x22, 0x00, 0x06, 0x05, 0x0b, 0x0b, 0x09, 0x02, 0x06, 0x9c, + 0xff, 0xfa, 0x4c, 0x00, 0x04, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x00, 0x35, 0xff, 0x97, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xcb, 0x24, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0x8c, 0x00, 0x01, 0x0b, 0x0b, 0x0b, + 0x09, 0x00, 0x4d, 0xd6, 0xff, 0xfe, 0xff, 0xd0, 0x0c, 0x03, 0x03, 0x08, 0x0b, 0x04, 0x00, 0x79, + 0xff, 0xfd, 0xfd, 0xff, 0xa5, 0x00, 0x08, 0x05, 0x0a, 0x08, 0x00, 0x05, 0x99, 0xff, 0xfd, 0xfd, + 0xff, 0xa4, 0x00, 0x00, 0x0f, 0x0a, 0x07, 0x03, 0x02, 0xaa, 0xff, 0xfd, 0xfd, 0xff, 0x7c, 0x00, + 0x03, 0x08, 0x08, 0x0a, 0x08, 0x00, 0x13, 0xac, 0xff, 0xff, 0xaf, 0x00, 0x04, 0x0a, 0x0b, 0x0b, + 0x0b, 0x0b, 0x08, 0x00, 0x3a, 0xff, 0xe3, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0xca, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xff, 0xff, 0xc0, 0x09, 0x00, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x3a, 0xd4, 0xff, 0xfe, 0xff, 0xfb, + 0x30, 0x00, 0x06, 0x0b, 0x0b, 0x02, 0x00, 0x68, 0xff, 0xfd, 0xfd, 0xff, 0xe5, 0x19, 0x0e, 0x03, + 0x09, 0x0b, 0x00, 0x00, 0x7a, 0xff, 0xfd, 0xfd, 0xff, 0xeb, 0x18, 0x00, 0x09, 0x09, 0x0b, 0x03, + 0x00, 0xa2, 0xff, 0xfd, 0xfd, 0xff, 0xd2, 0x0e, 0x00, 0x0a, 0x0b, 0x0b, 0x09, 0x04, 0x0c, 0xa4, + 0xff, 0xfe, 0xed, 0x30, 0x00, 0x06, 0x0b, 0x0b, 0x0b, 0x0a, 0x08, 0x00, 0x3d, 0xff, 0xff, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb3, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x03, 0x0b, 0x0b, + 0x0a, 0x00, 0x3f, 0xe7, 0xff, 0xfe, 0xfd, 0xff, 0x97, 0x00, 0x01, 0x08, 0x0b, 0x0a, 0x00, 0x4b, + 0xff, 0xfe, 0xfd, 0xfd, 0xff, 0x71, 0x31, 0x07, 0x02, 0x0b, 0x0a, 0x00, 0x4f, 0xfd, 0xff, 0xfd, + 0xfd, 0xff, 0x93, 0x0c, 0x00, 0x05, 0x0b, 0x0b, 0x00, 0x41, 0xf9, 0xfd, 0xfd, 0xfd, 0xff, 0x70, + 0x00, 0x03, 0x0a, 0x0b, 0x0b, 0x05, 0x00, 0x7d, 0xff, 0xfd, 0xff, 0xbc, 0x04, 0x03, 0x0a, 0x0b, + 0x0b, 0x0b, 0x0b, 0x00, 0x36, 0xff, 0xfe, 0xea, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x5d, 0xff, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xff, 0xff, 0xff, 0x96, 0x00, 0x01, 0x0b, 0x0b, 0x0a, 0x00, 0x43, 0xea, 0xff, 0xfe, 0xfe, 0xff, + 0xc2, 0x08, 0x02, 0x06, 0x0b, 0x0a, 0x00, 0x46, 0xff, 0xfe, 0xfd, 0xfd, 0xff, 0x9e, 0x39, 0x16, + 0x00, 0x0b, 0x09, 0x00, 0x3b, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xc3, 0x28, 0x00, 0x05, 0x0b, 0x0a, + 0x00, 0x2a, 0xeb, 0xff, 0xfd, 0xfd, 0xff, 0x9f, 0x00, 0x00, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x68, + 0xff, 0xfd, 0xff, 0xe8, 0x27, 0x00, 0x08, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x2b, 0xfd, 0xfc, 0xff, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3e, 0xff, 0xc7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0xff, 0xff, 0xff, 0xce, 0x0b, 0x00, 0x0b, 0x0b, + 0x0b, 0x00, 0x45, 0xed, 0xff, 0xfe, 0xfe, 0xff, 0xe3, 0x1f, 0x07, 0x06, 0x0b, 0x09, 0x00, 0x47, + 0xff, 0xfe, 0xfd, 0xfd, 0xff, 0xc6, 0x40, 0x2d, 0x00, 0x0b, 0x07, 0x00, 0x38, 0xfe, 0xff, 0xfd, + 0xfd, 0xff, 0xe5, 0x42, 0x06, 0x04, 0x0b, 0x08, 0x00, 0x21, 0xd9, 0xff, 0xfd, 0xfd, 0xff, 0xcd, + 0x02, 0x00, 0x0a, 0x0b, 0x0b, 0x07, 0x00, 0x4f, 0xff, 0xfd, 0xfd, 0xf5, 0x54, 0x00, 0x07, 0x0b, + 0x0b, 0x0b, 0x0b, 0x00, 0x20, 0xe9, 0xfb, 0xff, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x25, 0xfe, 0xf4, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, + 0xff, 0xff, 0xff, 0xf4, 0x30, 0x00, 0x0b, 0x0b, 0x0b, 0x00, 0x43, 0xf1, 0xff, 0xfe, 0xfe, 0xff, + 0xf6, 0x3a, 0x0c, 0x05, 0x0b, 0x07, 0x00, 0x4f, 0xff, 0xfe, 0xfd, 0xfd, 0xff, 0xe8, 0x47, 0x3f, + 0x00, 0x0b, 0x04, 0x00, 0x44, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xf9, 0x5a, 0x0b, 0x05, 0x0b, 0x08, + 0x01, 0x20, 0xc1, 0xff, 0xfd, 0xfd, 0xff, 0xef, 0x18, 0x00, 0x0a, 0x0b, 0x0b, 0x08, 0x00, 0x39, + 0xff, 0xfd, 0xfe, 0xf8, 0x73, 0x00, 0x06, 0x0b, 0x0b, 0x0b, 0x0b, 0x02, 0x14, 0xce, 0xfb, 0xff, + 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xfc, 0xff, 0x72, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x09, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x00, 0x03, 0x0b, + 0x0b, 0x00, 0x2f, 0xf0, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0x84, 0x00, 0x01, 0x0a, 0x08, 0x00, 0x6a, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x75, 0x2c, 0x01, 0x0a, 0x06, 0x00, 0x64, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x9f, 0x10, 0x02, 0x0a, 0x0a, 0x02, 0x0f, 0x90, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0x68, 0x00, 0x04, 0x0b, 0x0b, 0x09, 0x00, 0x1c, 0xfc, 0xfd, 0xfd, 0xff, 0x95, 0x04, 0x00, 0x09, + 0x0b, 0x0b, 0x0b, 0x00, 0x05, 0x97, 0xfc, 0xfc, 0xff, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x0b, 0xfb, 0xff, 0xe8, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x04, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0x08, 0x02, 0x0b, 0x0b, 0x00, 0x24, 0xe9, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xb4, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x71, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x9d, 0x14, + 0x02, 0x07, 0x06, 0x00, 0x66, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc3, 0x17, 0x01, 0x08, 0x0b, + 0x03, 0x08, 0x80, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0x8c, 0x00, 0x02, 0x0b, 0x0b, 0x09, 0x00, 0x15, + 0xf7, 0xfd, 0xfd, 0xff, 0xb6, 0x06, 0x00, 0x08, 0x0b, 0x0b, 0x0b, 0x00, 0x02, 0x84, 0xfc, 0xfb, + 0xff, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x11, 0xfb, 0xfc, 0xfd, 0x4f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x08, 0x05, 0xff, 0xff, 0xff, 0xff, 0xef, 0x1f, 0x01, 0x0b, + 0x0b, 0x03, 0x18, 0xdf, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xdd, 0x0c, 0x00, 0x0a, 0x05, 0x00, 0x70, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xc7, 0x18, 0x02, 0x05, 0x05, 0x00, 0x6b, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe3, 0x20, 0x02, 0x06, 0x0b, 0x04, 0x05, 0x7d, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, + 0xa6, 0x00, 0x02, 0x0b, 0x0b, 0x0a, 0x00, 0x16, 0xf8, 0xfd, 0xfd, 0xff, 0xd7, 0x0f, 0x00, 0x09, + 0x0b, 0x0b, 0x0b, 0x00, 0x04, 0x7a, 0xfc, 0xfb, 0xff, 0xdf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x21, 0xfb, 0xfc, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x02, 0x0c, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0x34, 0x00, 0x0b, 0x0b, 0x03, 0x0c, 0xc8, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xfa, 0x34, 0x00, 0x0a, 0x07, 0x00, 0x60, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xe9, 0x19, + 0x00, 0x07, 0x06, 0x00, 0x78, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf7, 0x31, 0x00, 0x08, 0x0a, + 0x01, 0x0c, 0x99, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, 0x0a, 0x03, 0x0b, 0x0b, 0x08, 0x00, 0x22, + 0xff, 0xfd, 0xfd, 0xff, 0xf0, 0x26, 0x00, 0x09, 0x0b, 0x0b, 0x08, 0x00, 0x0c, 0x94, 0xfc, 0xfc, + 0xfe, 0xf2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x48, 0xfb, 0xfc, 0xff, 0x95, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x44, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x2f, 0x00, 0x0b, + 0x0b, 0x03, 0x01, 0xc5, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x79, 0x00, 0x05, 0x09, 0x00, 0x4f, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x70, 0x00, 0x05, 0x08, 0x00, 0x88, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x6b, 0x00, 0x09, 0x08, 0x00, 0x56, 0xf4, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xf1, 0x30, 0x00, 0x09, 0x09, 0x03, 0x00, 0x87, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x5a, 0x00, 0x06, + 0x0b, 0x0b, 0x06, 0x00, 0x4c, 0xea, 0xfc, 0xfc, 0xfd, 0xfc, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0xc1, 0xfb, 0xfc, 0xff, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0xde, + 0xff, 0xff, 0xff, 0xff, 0xda, 0x26, 0x00, 0x0b, 0x0a, 0x02, 0x1d, 0xef, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x79, 0x00, 0x05, 0x04, 0x00, 0x76, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, + 0x00, 0x01, 0x03, 0x00, 0x88, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x81, 0x00, 0x04, 0x06, + 0x00, 0x78, 0xfb, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe0, 0x18, 0x01, 0x09, 0x09, 0x00, 0x00, 0xc1, + 0xff, 0xfd, 0xfd, 0xff, 0xfd, 0x49, 0x00, 0x06, 0x0b, 0x0b, 0x04, 0x00, 0x75, 0xf5, 0xfc, 0xfc, + 0xfd, 0xf9, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xef, 0xfb, 0xfc, 0xff, 0x9f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xd6, 0x1a, 0x01, 0x0b, + 0x06, 0x00, 0x58, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x64, 0x00, 0x06, 0x00, 0x00, 0xa1, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb5, 0x00, 0x01, 0x03, 0x00, 0x8d, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfc, 0x76, 0x00, 0x05, 0x05, 0x00, 0x8e, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xbe, 0x00, 0x02, 0x0a, 0x09, 0x00, 0x1a, 0xf2, 0xff, 0xfd, 0xfd, 0xff, 0xf6, 0x30, 0x00, 0x08, + 0x0b, 0x08, 0x00, 0x03, 0x95, 0xfe, 0xfc, 0xfb, 0xfe, 0xf1, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x61, 0xff, 0xfb, 0xfc, 0xff, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x52, 0xfe, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0x0d, 0x03, 0x0b, 0x03, 0x00, 0xa0, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfb, 0x4b, 0x00, 0x06, 0x00, 0x03, 0xc7, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb5, + 0x00, 0x01, 0x00, 0x00, 0xa5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xea, 0x45, 0x00, 0x06, 0x03, + 0x01, 0xac, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0x8e, 0x00, 0x03, 0x0a, 0x07, 0x00, 0x4d, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xe8, 0x19, 0x00, 0x09, 0x07, 0x06, 0x00, 0x0f, 0xb5, 0xff, 0xfc, 0xfb, + 0xff, 0xe1, 0x0f, 0x00, 0x00, 0x00, 0x08, 0x31, 0x00, 0xa9, 0xff, 0xfb, 0xfc, 0xff, 0x6e, 0x00, + 0x00, 0x00, 0x00, 0x1b, 0x4c, 0x00, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa2, 0x00, 0x03, 0x0b, + 0x00, 0x33, 0xf9, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xdf, 0x2c, 0x00, 0x06, 0x00, 0x3e, 0xfa, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0x73, 0x00, 0x03, 0x00, 0x14, 0xe9, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x99, 0x02, 0x05, 0x08, 0x00, 0x1e, 0xee, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xea, + 0x30, 0x00, 0x0a, 0x05, 0x06, 0x01, 0xbf, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xb8, 0x00, 0x00, 0x0a, + 0x00, 0x18, 0x05, 0x42, 0xf7, 0xfe, 0xfc, 0xfb, 0xff, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x67, 0x29, + 0x2b, 0xfd, 0xfd, 0xfb, 0xfe, 0xf2, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x84, 0x33, 0x00, 0xc2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x03, 0x05, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xd7, 0x20, 0x00, 0x02, 0x00, 0x73, 0xff, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0x4e, + 0x00, 0x04, 0x00, 0x3b, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6f, 0x00, 0x06, 0x06, 0x00, + 0x46, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdb, 0x19, 0x00, 0x0b, 0x05, 0x07, 0x10, 0xd8, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0x9b, 0x00, 0x01, 0x07, 0x00, 0x2b, 0x00, 0x78, 0xff, 0xfd, 0xfc, 0xfc, + 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x05, 0x66, 0xff, 0xfc, 0xfb, 0xff, 0xdf, 0x14, 0x00, + 0x00, 0x00, 0x01, 0x9a, 0x0c, 0x15, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x03, 0x05, + 0x00, 0x7a, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xd1, 0x15, 0x00, 0x01, 0x00, 0xac, 0xff, + 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xf6, 0x34, 0x00, 0x01, 0x00, 0x6f, 0xff, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xff, 0x58, 0x00, 0x07, 0x04, 0x00, 0x70, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcc, + 0x0b, 0x00, 0x0a, 0x00, 0x03, 0x1d, 0xe4, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x81, 0x00, 0x02, 0x04, + 0x02, 0x2c, 0x00, 0xa5, 0xff, 0xfd, 0xfc, 0xfc, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x12, 0x86, 0x00, + 0x9a, 0xff, 0xfb, 0xfb, 0xff, 0xc5, 0x03, 0x00, 0x00, 0x00, 0x14, 0x8c, 0x00, 0x40, 0xf9, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0x64, 0x00, 0x04, 0x05, 0x00, 0x85, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xc6, 0x0b, 0x01, 0x00, 0x09, 0xd5, 0xff, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xed, 0x1f, + 0x00, 0x00, 0x00, 0xac, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfc, 0x4f, 0x00, 0x07, 0x01, 0x00, + 0x99, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc2, 0x05, 0x00, 0x08, 0x02, 0x00, 0x2c, 0xf1, 0xfe, + 0xfd, 0xfd, 0xfd, 0xff, 0x6c, 0x00, 0x05, 0x02, 0x08, 0x20, 0x00, 0xbe, 0xff, 0xfd, 0xfc, 0xfd, + 0xfc, 0x3c, 0x00, 0x00, 0x00, 0x24, 0x65, 0x00, 0xa9, 0xff, 0xfb, 0xfc, 0xff, 0xa6, 0x00, 0x00, + 0x00, 0x00, 0x27, 0x6b, 0x00, 0x71, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x04, 0x05, + 0x00, 0x93, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0x99, 0x00, 0x02, 0x00, 0x30, 0xf8, 0xff, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xce, 0x04, 0x02, 0x00, 0x31, 0xfc, 0xff, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xf9, 0x51, 0x00, 0x07, 0x00, 0x18, 0xe4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb4, + 0x00, 0x01, 0x0b, 0x00, 0x00, 0x63, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x49, 0x00, 0x09, 0x06, + 0x0c, 0x06, 0x0c, 0xe3, 0xff, 0xfd, 0xfb, 0xff, 0xe1, 0x11, 0x00, 0x00, 0x00, 0x30, 0x21, 0x00, + 0xbe, 0xff, 0xfc, 0xfc, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00, 0x37, 0x29, 0x00, 0xaf, 0xff, 0xfc, + 0xff, 0xff, 0xff, 0xf8, 0x44, 0x00, 0x06, 0x04, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0x7b, 0x00, 0x03, 0x00, 0x45, 0xfd, 0xff, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xb6, 0x00, + 0x02, 0x00, 0x5c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf7, 0x52, 0x00, 0x07, 0x00, 0x35, + 0xf7, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xaf, 0x00, 0x03, 0x0a, 0x00, 0x00, 0x87, 0xff, 0xfd, + 0xfd, 0xfd, 0xfe, 0xff, 0x3d, 0x00, 0x08, 0x05, 0x07, 0x00, 0x24, 0xf0, 0xff, 0xfd, 0xfb, 0xff, + 0xd2, 0x07, 0x00, 0x00, 0x00, 0x2c, 0x0e, 0x0b, 0xce, 0xff, 0xfc, 0xfd, 0xfb, 0x4f, 0x00, 0x00, + 0x00, 0x00, 0x3a, 0x15, 0x00, 0xbe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xea, 0x2f, 0x00, 0x09, 0x04, + 0x01, 0xb2, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfa, 0x5d, 0x00, 0x02, 0x00, 0x5c, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x9d, 0x00, 0x03, 0x00, 0x89, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xf6, 0x54, 0x00, 0x07, 0x00, 0x5c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xad, + 0x00, 0x03, 0x07, 0x00, 0x00, 0xaf, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0x35, 0x00, 0x07, 0x07, + 0x01, 0x00, 0x42, 0xfa, 0xfe, 0xfd, 0xfb, 0xff, 0xc6, 0x02, 0x00, 0x00, 0x00, 0x25, 0x0a, 0x28, + 0xdd, 0xff, 0xfc, 0xfd, 0xf6, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x00, 0xcb, 0xff, 0xfc, + 0xff, 0xff, 0xff, 0xdd, 0x24, 0x00, 0x0a, 0x03, 0x07, 0xc2, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, + 0xf8, 0x4a, 0x00, 0x03, 0x00, 0x72, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x86, 0x00, + 0x03, 0x00, 0xb0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf5, 0x55, 0x00, 0x06, 0x00, 0x87, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xa9, 0x00, 0x03, 0x06, 0x00, 0x09, 0xd0, 0xff, 0xfd, + 0xfd, 0xfd, 0xfe, 0xf9, 0x2f, 0x00, 0x08, 0x07, 0x00, 0x00, 0x64, 0xff, 0xfd, 0xfd, 0xfb, 0xff, + 0xbd, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0d, 0x3b, 0xec, 0xfe, 0xfc, 0xfd, 0xf2, 0x34, 0x00, 0x00, + 0x00, 0x00, 0x39, 0x00, 0x08, 0xd9, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xd9, 0x22, 0x00, 0x0a, 0x00, + 0x1b, 0xdf, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xf9, 0x3e, 0x00, 0x04, 0x00, 0xa0, 0xff, 0xfd, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x65, 0x00, 0x00, 0x0f, 0xe2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xef, 0x36, 0x00, 0x01, 0x05, 0xcb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x93, + 0x00, 0x03, 0x06, 0x00, 0x39, 0xf5, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xf4, 0x20, 0x00, 0x05, 0x05, + 0x00, 0x01, 0xa7, 0xff, 0xfd, 0xfd, 0xfb, 0xff, 0xa0, 0x00, 0x02, 0x00, 0x01, 0x09, 0x06, 0x58, + 0xff, 0xfc, 0xfc, 0xfe, 0xe5, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x23, 0xf5, 0xfe, 0xfc, + 0xff, 0xff, 0xff, 0xd8, 0x1f, 0x00, 0x08, 0x00, 0x2c, 0xec, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, + 0xf8, 0x38, 0x00, 0x02, 0x02, 0xb9, 0xff, 0xfd, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x55, 0x00, + 0x00, 0x1e, 0xf1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe9, 0x26, 0x00, 0x00, 0x12, 0xdf, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0x85, 0x00, 0x04, 0x06, 0x00, 0x57, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xef, 0x1a, 0x03, 0x04, 0x09, 0x00, 0x04, 0xc4, 0xff, 0xfd, 0xfd, 0xfb, 0xff, + 0x92, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xfc, 0xfc, 0xff, 0xdd, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0xfd, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xcf, 0x18, 0x01, 0x07, 0x00, + 0x42, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xf5, 0x31, 0x00, 0x01, 0x0d, 0xd1, 0xff, 0xfd, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x47, 0x00, 0x00, 0x2f, 0xfd, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xe0, 0x1c, 0x00, 0x00, 0x1f, 0xee, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfb, 0x74, + 0x00, 0x04, 0x05, 0x00, 0x79, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe9, 0x14, 0x0a, 0x04, 0x0a, + 0x00, 0x0e, 0xde, 0xff, 0xfd, 0xfd, 0xfc, 0xff, 0x86, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x91, + 0xff, 0xfb, 0xfc, 0xff, 0xd6, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xc4, 0x10, 0x01, 0x07, 0x00, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, + 0xf0, 0x29, 0x00, 0x00, 0x1c, 0xe7, 0xff, 0xfd, 0xfe, 0xfe, 0xfd, 0xfd, 0xfe, 0xff, 0x40, 0x00, + 0x00, 0x3f, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd5, 0x11, 0x00, 0x00, 0x2f, 0xf8, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf9, 0x62, 0x00, 0x03, 0x04, 0x00, 0x95, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe2, 0x11, 0x0f, 0x03, 0x08, 0x00, 0x23, 0xf1, 0xff, 0xfd, 0xfd, 0xfc, 0xff, + 0x7b, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xfc, 0xfc, 0xff, 0xd0, 0x08, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x85, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xa7, 0x03, 0x05, 0x04, 0x00, + 0x99, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xe1, 0x18, 0x00, 0x00, 0x48, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xff, 0x32, 0x00, 0x00, 0x6b, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xb7, 0x05, 0x02, 0x00, 0x57, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0x43, + 0x00, 0x06, 0x01, 0x05, 0xc2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd6, 0x0b, 0x18, 0x03, 0x06, + 0x00, 0x5e, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, 0x6b, 0x08, 0x23, 0x00, 0x00, 0x00, 0x15, 0xe8, + 0xff, 0xfc, 0xfc, 0xff, 0xc7, 0x02, 0x04, 0x07, 0x00, 0x00, 0x00, 0x01, 0xca, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0x95, 0x00, 0x05, 0x03, 0x03, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, + 0xd5, 0x11, 0x00, 0x00, 0x64, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xfe, 0x2e, 0x00, + 0x00, 0x82, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa8, 0x01, 0x05, 0x00, 0x6e, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0x36, 0x00, 0x08, 0x00, 0x0d, 0xd2, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xd2, 0x0b, 0x1c, 0x03, 0x05, 0x00, 0x80, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, + 0x68, 0x0a, 0x26, 0x00, 0x00, 0x00, 0x2f, 0xf8, 0xfd, 0xfc, 0xfc, 0xff, 0xc6, 0x01, 0x05, 0x07, + 0x00, 0x00, 0x00, 0x0d, 0xe0, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0x83, 0x00, 0x05, 0x02, 0x0c, + 0xc9, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xff, 0xca, 0x0a, 0x00, 0x00, 0x80, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xfc, 0x27, 0x00, 0x00, 0x9a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0x9d, 0x00, 0x05, 0x00, 0x81, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xef, 0x2e, + 0x00, 0x08, 0x00, 0x16, 0xe1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd1, 0x0b, 0x1e, 0x03, 0x03, + 0x00, 0xa3, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, 0x68, 0x0b, 0x27, 0x00, 0x00, 0x00, 0x4a, 0xfd, + 0xfc, 0xfc, 0xfc, 0xff, 0xcc, 0x02, 0x04, 0x07, 0x00, 0x00, 0x00, 0x18, 0xec, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0x73, 0x00, 0x05, 0x02, 0x15, 0xda, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xff, + 0xbf, 0x04, 0x00, 0x00, 0x98, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xf6, 0x21, 0x00, + 0x00, 0xb4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x95, 0x00, 0x03, 0x00, 0x96, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xee, 0x2a, 0x00, 0x06, 0x00, 0x23, 0xeb, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xd4, 0x0c, 0x1e, 0x03, 0x01, 0x00, 0xc1, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, + 0x6d, 0x09, 0x27, 0x00, 0x00, 0x00, 0x58, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xd7, 0x07, 0x03, 0x07, + 0x00, 0x00, 0x00, 0x20, 0xf2, 0xfe, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x07, 0x00, 0x1d, + 0xea, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xff, 0x9f, 0x00, 0x01, 0x00, 0xad, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xea, 0x14, 0x00, 0x0f, 0xe0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xa5, 0x01, 0x01, 0x00, 0xc2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0x3b, + 0x00, 0x05, 0x00, 0x41, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xee, 0x15, 0x00, 0x04, 0x01, + 0x06, 0xd4, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, 0x96, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x5d, 0xff, + 0xfc, 0xfc, 0xfc, 0xfe, 0xf0, 0x1f, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0xf7, 0xfd, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0x4e, 0x00, 0x07, 0x00, 0x1b, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xff, + 0xa6, 0x00, 0x02, 0x00, 0xa9, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xe5, 0x11, 0x00, + 0x19, 0xee, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb7, 0x05, 0x00, 0x06, 0xcb, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfa, 0x4e, 0x00, 0x07, 0x00, 0x43, 0xfb, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfe, 0xfb, 0x28, 0x00, 0x0a, 0x01, 0x05, 0xd1, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, + 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfa, 0x32, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x2a, 0xf9, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0x61, 0x00, 0x07, 0x00, 0x16, + 0xe7, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xff, 0xbf, 0x00, 0x02, 0x00, 0x9f, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xe4, 0x12, 0x00, 0x1f, 0xf5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xca, 0x08, 0x00, 0x07, 0xc0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0x66, + 0x00, 0x05, 0x00, 0x35, 0xf7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x3c, 0x00, 0x0a, 0x01, + 0x02, 0xc9, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, 0xbb, 0x03, 0x00, 0x00, 0x00, 0x00, 0x51, 0xfe, + 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xf9, 0xfd, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0x7e, 0x00, 0x06, 0x00, 0x10, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, + 0xda, 0x0b, 0x01, 0x00, 0x95, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xe5, 0x13, 0x00, + 0x20, 0xf5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd7, 0x0b, 0x00, 0x03, 0xa6, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x81, 0x00, 0x00, 0x00, 0x23, 0xee, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x54, 0x0b, 0x09, 0x00, 0x00, 0xbb, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xff, + 0xcc, 0x0a, 0x06, 0x02, 0x00, 0x00, 0x45, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x71, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x27, 0xf7, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xba, 0x07, 0x03, 0x01, 0x0a, + 0xcc, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0x39, 0x00, 0x00, 0x76, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xf5, 0x23, 0x00, 0x10, 0xd8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xf5, 0x22, 0x00, 0x00, 0x5b, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbe, + 0x06, 0x02, 0x00, 0x04, 0xd0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8f, 0x24, 0x21, 0x00, + 0x00, 0x91, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfe, 0xef, 0x24, 0x30, 0x1d, 0x00, 0x00, 0x25, 0xf2, + 0xfe, 0xfc, 0xfc, 0xfb, 0xff, 0xc9, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1c, 0xed, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xd3, 0x11, 0x02, 0x01, 0x08, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0x5a, 0x00, 0x00, 0x60, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0xfc, 0x34, 0x00, + 0x06, 0xc1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf9, 0x30, 0x00, 0x00, 0x3b, 0xf6, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcf, 0x0b, 0x09, 0x00, 0x00, 0xb9, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xae, 0x1f, 0x33, 0x00, 0x00, 0x78, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfd, + 0xfb, 0x42, 0x28, 0x2e, 0x00, 0x00, 0x15, 0xe7, 0xff, 0xfc, 0xfc, 0xfb, 0xff, 0xeb, 0x14, 0x2f, + 0x06, 0x00, 0x00, 0x14, 0xe4, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xe5, 0x1d, 0x02, 0x02, 0x05, + 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0xff, 0x76, 0x00, 0x00, 0x4c, 0xfc, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x4c, 0x00, 0x00, 0xa9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xf9, 0x34, 0x00, 0x00, 0x25, 0xe9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd1, + 0x09, 0x0f, 0x00, 0x00, 0xa2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbf, 0x11, 0x3f, 0x00, + 0x00, 0x61, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0x6c, 0x17, 0x39, 0x00, 0x00, 0x08, 0xd9, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0x39, 0x2b, 0x0e, 0x00, 0x00, 0x09, 0xd7, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xef, 0x26, 0x00, 0x02, 0x03, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, + 0xff, 0x90, 0x00, 0x00, 0x40, 0xf5, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x6c, 0x00, + 0x00, 0x96, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfa, 0x3e, 0x00, 0x00, 0x19, 0xdf, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcf, 0x03, 0x0e, 0x00, 0x00, 0x8d, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xc3, 0x04, 0x3f, 0x00, 0x00, 0x4c, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0x98, 0x0a, 0x3b, 0x00, 0x00, 0x00, 0xc5, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x68, 0x20, + 0x14, 0x00, 0x00, 0x00, 0xc4, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xf8, 0x2f, 0x00, 0x03, 0x00, + 0xb7, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0xff, 0xae, 0x00, 0x00, 0x2a, 0xeb, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xbc, 0x00, 0x00, 0x6d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfe, 0x63, 0x00, 0x00, 0x12, 0xd3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd9, + 0x17, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc0, 0x0d, 0x1d, 0x05, + 0x00, 0x25, 0xf2, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xcc, 0x01, 0x21, 0x00, 0x00, 0x00, 0x97, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xc6, 0x12, 0x12, 0x00, 0x00, 0x00, 0x94, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xfd, 0x37, 0x00, 0x06, 0x00, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, + 0xff, 0xb5, 0x00, 0x00, 0x1d, 0xe5, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xd9, 0x0a, + 0x00, 0x55, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7f, 0x00, 0x00, 0x13, 0xd0, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe1, 0x2b, 0x00, 0x00, 0x00, 0x62, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xc3, 0x2c, 0x05, 0x07, 0x00, 0x18, 0xe7, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xd0, 0x03, 0x0c, 0x01, 0x00, 0x00, 0x80, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xe5, 0x1a, + 0x07, 0x00, 0x00, 0x00, 0x7b, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x56, 0x14, 0x18, 0x00, + 0xaa, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xb9, 0x00, 0x00, 0x10, 0xd8, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xee, 0x1a, 0x00, 0x3e, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x9b, 0x00, 0x00, 0x0f, 0xcb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe8, + 0x3d, 0x00, 0x00, 0x00, 0x59, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc7, 0x4a, 0x05, 0x04, + 0x00, 0x0e, 0xdd, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xd2, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x6c, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf8, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x66, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0x76, 0x2b, 0x2d, 0x00, 0x9a, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xc0, 0x00, 0x00, 0x07, 0xc6, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xfb, 0x29, + 0x00, 0x2a, 0xf6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb9, 0x03, 0x00, 0x0d, 0xca, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0x4e, 0x00, 0x00, 0x00, 0x52, 0xff, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xcd, 0x61, 0x0a, 0x00, 0x01, 0x08, 0xd5, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xd3, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x53, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xa1, 0x44, 0x4f, 0x01, + 0x84, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xcf, 0x0a, 0x00, 0x00, 0xb7, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4c, 0x00, 0x11, 0xe1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe7, 0x1e, 0x00, 0x05, 0xbc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, + 0x76, 0x01, 0x00, 0x00, 0x45, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdf, 0x68, 0x17, 0x01, + 0x00, 0x02, 0xc4, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xda, 0x31, 0x00, 0x00, 0x00, 0x00, 0x46, + 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xab, 0x40, 0x4c, 0x02, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xd9, 0x13, 0x00, 0x00, 0xb4, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x5d, + 0x00, 0x09, 0xd6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf3, 0x31, 0x00, 0x00, 0xad, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8b, 0x00, 0x00, 0x00, 0x3a, 0xf9, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xeb, 0x63, 0x18, 0x01, 0x05, 0x00, 0xb8, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xe2, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xfc, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x91, + 0x00, 0x00, 0x00, 0x00, 0x38, 0xfd, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xb5, 0x3a, 0x46, 0x03, + 0x73, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe2, 0x1e, 0x00, 0x00, 0xb0, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6e, 0x00, 0x03, 0xcb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfe, 0xfa, 0x43, 0x00, 0x00, 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xa2, 0x03, 0x00, 0x00, 0x33, 0xf6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf5, 0x60, 0x13, 0x01, + 0x07, 0x01, 0xad, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xeb, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x36, + 0xfa, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x33, 0xfc, 0xfd, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x37, 0x42, 0x04, 0x67, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xeb, 0x2d, 0x00, 0x00, 0xaa, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x80, + 0x00, 0x00, 0xc1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x55, 0x00, 0x00, 0x8c, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb8, 0x06, 0x00, 0x00, 0x2c, 0xf2, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x5d, 0x0a, 0x00, 0x0b, 0x02, 0xa2, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfe, 0xf4, 0x41, 0x00, 0x00, 0x00, 0x00, 0x30, 0xf9, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0xfa, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x31, 0x36, 0x07, + 0x50, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xf8, 0x53, 0x00, 0x00, 0x9a, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9f, 0x00, 0x00, 0xb3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x7d, 0x00, 0x00, 0x6c, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xdc, 0x11, 0x00, 0x03, 0x1b, 0xe5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x78, 0x00, 0x01, + 0x0e, 0x0d, 0x8d, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x28, + 0xf7, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xdc, 0x13, 0x00, 0x00, 0x00, 0x27, 0xf7, 0xfe, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xe1, 0x32, 0x31, 0x07, 0x45, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfc, 0x69, 0x00, 0x00, 0x91, 0xff, 0xfd, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb0, + 0x00, 0x00, 0xb1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8a, 0x00, 0x00, 0x5f, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xec, 0x1d, 0x00, 0x04, 0x17, 0xde, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x96, 0x00, 0x01, 0x0f, 0x10, 0x84, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x73, 0x00, 0x00, 0x00, 0x00, 0x27, 0xf6, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xe6, + 0x1e, 0x00, 0x00, 0x00, 0x24, 0xf5, 0xfe, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x38, 0x2e, 0x09, + 0x3a, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7e, 0x00, 0x00, 0x86, 0xff, 0xfd, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbe, 0x00, 0x00, 0xaf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x95, 0x00, 0x00, 0x51, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xf8, 0x2c, 0x00, 0x05, 0x15, 0xd8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb2, 0x00, 0x01, + 0x0f, 0x14, 0x7d, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x85, 0x00, 0x00, 0x00, 0x00, 0x26, + 0xf6, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xec, 0x26, 0x00, 0x00, 0x00, 0x24, 0xf4, 0xfe, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf3, 0x3f, 0x2b, 0x0d, 0x2f, 0xfa, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x91, 0x00, 0x00, 0x7b, 0xff, 0xfd, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcc, + 0x02, 0x00, 0xac, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa0, 0x00, 0x00, 0x46, + 0xfb, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0x3d, 0x00, 0x06, 0x14, 0xd2, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc9, 0x02, 0x00, 0x0f, 0x16, 0x79, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x27, 0xf7, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xef, + 0x2d, 0x00, 0x00, 0x00, 0x24, 0xf4, 0xfe, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x32, 0x22, + 0x1a, 0xee, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xa4, 0x00, 0x00, 0x5c, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe7, 0x12, 0x00, 0xa3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xb7, 0x00, 0x00, 0x40, 0xf9, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x4e, 0x00, 0x02, 0x07, 0xd4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc4, 0x02, 0x00, + 0x0d, 0x0c, 0x84, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x94, 0x00, 0x00, 0x01, 0x00, 0x2e, + 0xfb, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf4, 0x32, 0x00, 0x00, 0x00, 0x2b, 0xf7, 0xfd, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x50, 0x46, 0x1b, 0xea, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x9b, 0x00, 0x00, 0x47, 0xfb, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf0, + 0x1a, 0x00, 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc7, 0x05, 0x00, 0x4d, + 0xfc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x52, 0x00, 0x00, 0x07, 0xdf, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbf, 0x00, 0x00, 0x07, 0x03, 0x97, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x8f, 0x00, 0x00, 0x01, 0x00, 0x35, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf3, + 0x30, 0x00, 0x00, 0x00, 0x32, 0xf9, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8d, 0x69, 0x63, + 0x3b, 0xee, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x93, 0x00, 0x00, 0x41, 0xfb, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf4, 0x1e, 0x00, 0x9a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xcf, 0x0a, 0x00, 0x5c, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x51, 0x00, 0x00, 0x11, 0xe9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb9, 0x00, 0x00, + 0x04, 0x00, 0xa7, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x8a, 0x00, 0x00, 0x01, 0x00, 0x3e, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xf0, 0x28, 0x00, 0x00, 0x00, 0x3b, 0xfc, 0xfd, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x6c, 0x67, 0x4a, 0xf4, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x8c, 0x00, 0x00, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf8, + 0x22, 0x00, 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc5, 0x09, 0x00, 0x6a, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x46, 0x00, 0x00, 0x1c, 0xef, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb1, 0x00, 0x00, 0x03, 0x00, 0xb0, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x85, 0x00, 0x00, 0x01, 0x00, 0x4a, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xeb, + 0x1c, 0x00, 0x00, 0x04, 0x47, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 0x63, 0x5a, + 0x68, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7b, 0x00, 0x00, 0x80, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xed, 0x19, 0x00, 0xaa, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x00, 0x00, 0x82, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xf8, 0x28, 0x00, 0x11, 0x41, 0xfc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9a, 0x00, 0x00, + 0x29, 0x18, 0xc1, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x75, 0x00, 0x00, 0x05, 0x00, 0x6c, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xce, 0x03, 0x00, 0x00, 0x23, 0x66, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0x5f, 0x5c, 0x53, 0x76, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x71, 0x00, 0x00, 0x97, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe0, + 0x10, 0x00, 0xb7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0x7d, 0x00, 0x00, 0x92, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xef, 0x19, 0x00, 0x1e, 0x4d, 0xff, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8c, 0x00, 0x00, 0x41, 0x20, 0xcc, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x6a, 0x00, 0x00, 0x12, 0x08, 0x81, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xb6, + 0x00, 0x00, 0x00, 0x33, 0x78, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x52, 0x55, 0x4d, + 0x86, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x66, 0x00, 0x00, 0xab, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcf, 0x08, 0x00, 0xc5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfc, 0x62, 0x00, 0x00, 0xa3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xe3, 0x0d, 0x00, 0x2d, 0x59, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7c, 0x00, 0x00, + 0x52, 0x21, 0xd8, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x5d, 0x00, 0x00, 0x22, 0x10, 0x99, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x9b, 0x00, 0x00, 0x03, 0x40, 0x8b, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0x48, 0x54, 0x4c, 0x93, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0x5a, 0x00, 0x00, 0xba, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbf, + 0x00, 0x04, 0xd6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, 0x4d, 0x00, 0x00, 0xae, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd6, 0x04, 0x00, 0x38, 0x64, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6c, 0x00, 0x00, 0x5a, 0x25, 0xe5, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x4e, 0x00, 0x00, 0x2d, 0x13, 0xb1, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x80, + 0x00, 0x00, 0x08, 0x48, 0xa1, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x45, 0x5b, 0x5c, + 0xa8, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0x4b, 0x00, 0x00, 0xc5, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa2, 0x00, 0x1e, 0xf3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfe, 0xf4, 0x37, 0x00, 0x00, 0xbe, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xba, 0x00, 0x04, 0x2c, 0x70, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0x4e, 0x00, 0x07, + 0x51, 0x39, 0xf9, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfd, 0xf9, 0x2c, 0x00, 0x00, 0x33, 0x18, 0xdc, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x56, 0x00, 0x00, 0x12, 0x4c, 0xcb, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0x48, 0x64, 0x6a, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfc, 0x44, 0x00, 0x00, 0xc4, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x93, + 0x00, 0x2f, 0xfe, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf1, 0x33, 0x00, 0x04, 0xca, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xac, 0x00, 0x05, 0x20, 0x73, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf9, 0x40, 0x00, 0x0a, 0x45, 0x45, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfe, 0xf1, 0x1d, 0x00, 0x00, 0x2e, 0x20, 0xec, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x44, + 0x00, 0x00, 0x15, 0x4d, 0xde, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x4d, 0x6f, 0x7b, + 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xfb, 0x3c, 0x00, 0x01, 0xc6, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x80, 0x00, 0x41, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xef, 0x30, 0x00, 0x0c, 0xd7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x9f, 0x00, 0x05, 0x16, 0x78, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf5, 0x33, 0x00, 0x0e, + 0x39, 0x4f, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xe6, 0x10, 0x00, 0x00, 0x28, 0x2d, 0xf7, + 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfc, 0x34, 0x00, 0x00, 0x16, 0x53, 0xee, 0xfe, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf4, 0x51, 0x7f, 0x8d, 0xce, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xf7, 0x2e, 0x00, 0x03, 0xcb, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6c, + 0x00, 0x52, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xec, 0x2b, 0x00, 0x18, 0xe2, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x95, 0x00, 0x05, 0x0a, 0x81, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0x29, 0x00, 0x14, 0x2d, 0x57, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xda, 0x06, 0x00, 0x00, 0x23, 0x3b, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xf4, 0x24, + 0x00, 0x00, 0x17, 0x5e, 0xf9, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xea, 0x66, 0xa8, 0xae, + 0xe8, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe7, 0x11, 0x00, 0x0f, 0xd9, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x49, 0x00, 0x70, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe7, 0x24, 0x00, 0x36, 0xf4, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x87, 0x00, 0x04, 0x01, 0xa0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe7, 0x1c, 0x00, 0x17, + 0x1c, 0x66, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xc0, 0x00, 0x00, 0x05, 0x19, 0x56, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xda, 0x0c, 0x00, 0x00, 0x16, 0x7c, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xe5, 0x69, 0xad, 0xb2, 0xed, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xe2, 0x0d, 0x00, 0x16, 0xdf, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x3d, + 0x00, 0x7f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe3, 0x1d, 0x00, 0x47, 0xfa, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7e, 0x00, 0x03, 0x00, 0xb0, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xe3, 0x1a, 0x00, 0x15, 0x11, 0x6d, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xb6, 0x00, 0x00, 0x05, 0x0c, 0x63, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xcc, 0x03, + 0x00, 0x00, 0x0d, 0x8f, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x63, 0xa7, 0xad, + 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe0, 0x0b, 0x00, 0x1c, 0xe5, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0x35, 0x00, 0x8c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xdc, 0x14, 0x00, 0x58, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x74, 0x00, 0x02, 0x02, 0xbe, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdc, 0x14, 0x00, 0x10, + 0x07, 0x7a, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xae, 0x00, 0x00, 0x02, 0x00, 0x74, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xbd, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xd8, 0x5e, 0xa1, 0xa7, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xdb, 0x07, 0x00, 0x24, 0xeb, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xf9, 0x2d, + 0x00, 0x9a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd4, 0x0b, 0x00, 0x6a, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6b, 0x00, 0x01, 0x05, 0xcc, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xd6, 0x0f, 0x02, 0x09, 0x00, 0x86, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x85, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xae, 0x00, + 0x00, 0x00, 0x00, 0xb8, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xc2, 0x56, 0x9b, 0xa2, + 0xf6, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xc9, 0x00, 0x00, 0x3e, 0xf6, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xf0, 0x1c, 0x00, 0xb1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xbd, 0x00, 0x00, 0x85, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x58, 0x00, 0x00, 0x14, 0xe4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc7, 0x0a, 0x08, 0x00, + 0x00, 0xa6, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0x98, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x97, 0x00, 0x00, 0x00, 0x0c, 0xdc, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xb4, 0x54, 0x96, 0x9f, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xbd, 0x00, 0x00, 0x4e, 0xfa, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xea, 0x15, + 0x00, 0xbf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xaf, 0x00, 0x00, 0x90, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4f, 0x02, 0x00, 0x20, 0xef, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xc0, 0x0a, 0x0b, 0x00, 0x00, 0xb8, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x91, 0x00, + 0x00, 0x00, 0x15, 0xe8, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xa5, 0x52, 0x92, 0x9f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xaf, 0x00, 0x00, 0x60, 0xfd, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xe4, 0x0f, 0x00, 0xcc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xa3, 0x00, 0x00, 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0x48, 0x03, 0x00, 0x2e, 0xf7, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb9, 0x0b, 0x0c, 0x00, + 0x00, 0xc7, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x20, 0xf1, 0xfe, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0x95, 0x52, 0x8d, 0xa1, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xa2, 0x00, 0x00, 0x71, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xde, 0x0a, + 0x03, 0xd6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x96, 0x00, 0x00, 0xa8, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0x41, 0x04, 0x00, 0x3c, 0xfc, 0xfe, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xb5, 0x0b, 0x0d, 0x00, 0x03, 0xd6, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0x87, 0x00, 0x00, 0x00, 0x05, 0xd0, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x8e, 0x00, + 0x00, 0x00, 0x2b, 0xf7, 0xfe, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x5d, 0x87, 0xab, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0x84, 0x00, 0x00, 0x90, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xcd, 0x02, 0x14, 0xec, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x80, 0x00, 0x01, 0xbe, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfa, + 0x35, 0x01, 0x00, 0x5d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb0, 0x0a, 0x0d, 0x00, + 0x13, 0xe6, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0x82, 0x00, 0x00, 0x00, 0x0f, 0xdf, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x93, 0x00, 0x00, 0x00, 0x3d, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0x77, 0x6d, 0x8f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0x70, 0x00, 0x00, 0x9b, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xc1, 0x00, + 0x1d, 0xf5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7c, 0x00, 0x06, 0xc9, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfb, 0x30, 0x00, 0x00, 0x69, 0xff, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xb1, 0x06, 0x06, 0x00, 0x15, 0xe7, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0x82, 0x00, 0x00, 0x00, 0x13, 0xe3, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x95, 0x01, + 0x00, 0x00, 0x43, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x86, 0xa1, 0xc5, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0x5d, 0x00, 0x00, 0x9f, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xb8, 0x00, 0x25, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x7f, 0x00, 0x0e, 0xd4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, + 0x33, 0x00, 0x00, 0x6e, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb8, 0x04, 0x02, 0x00, + 0x15, 0xe7, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0x84, 0x00, 0x00, 0x00, 0x14, 0xe4, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x96, 0x04, 0x00, 0x00, 0x45, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0x8c, 0x97, 0xab, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0x5b, 0x00, 0x00, 0x9e, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xb0, 0x00, + 0x2c, 0xfe, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x86, 0x00, 0x12, 0xd8, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0x3a, 0x00, 0x00, 0x6c, 0xff, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xbf, 0x06, 0x00, 0x00, 0x12, 0xe5, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0x89, 0x00, 0x00, 0x00, 0x13, 0xe4, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x9b, 0x08, + 0x00, 0x00, 0x40, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x9a, 0x8f, 0x9d, 0xb7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0x7b, 0x00, 0x00, 0x8d, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xaf, 0x00, 0x2d, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x96, 0x00, 0x08, 0xbf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, + 0x52, 0x06, 0x00, 0x57, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcd, 0x0d, 0x09, 0x00, + 0x08, 0xda, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0x9d, 0x00, 0x00, 0x00, 0x10, 0xde, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xb0, 0x20, 0x00, 0x00, 0x21, 0xf1, 0xfe, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xa1, 0x85, 0x93, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0x90, 0x00, 0x00, 0x84, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xb7, 0x00, + 0x22, 0xf6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa0, 0x00, 0x03, 0xa7, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x62, 0x15, 0x00, 0x47, 0xff, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xd6, 0x17, 0x21, 0x00, 0x02, 0xcf, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xab, 0x00, 0x02, 0x00, 0x0a, 0xd7, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xbb, 0x32, + 0x00, 0x00, 0x11, 0xe1, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xa9, 0x7d, 0x87, 0x94, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xa5, 0x00, 0x00, 0x79, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xc1, 0x00, 0x19, 0xea, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xab, 0x00, 0x00, 0x8d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x6c, 0x1e, 0x00, 0x36, 0xfc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdf, 0x20, 0x34, 0x00, + 0x00, 0xc2, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xba, 0x0a, 0x0c, 0x00, 0x04, 0xcc, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xc6, 0x45, 0x00, 0x00, 0x03, 0xca, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xb1, 0x75, 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xb7, 0x00, 0x00, 0x6d, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, 0x00, + 0x0f, 0xda, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb0, 0x00, 0x00, 0x72, 0xfe, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x76, 0x29, 0x00, 0x24, 0xf6, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xea, 0x29, 0x43, 0x00, 0x00, 0xb0, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xca, 0x18, 0x19, 0x00, 0x00, 0xbb, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xd2, 0x55, + 0x00, 0x00, 0x00, 0xaf, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xc2, 0x74, 0x7b, 0x6c, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xcf, 0x02, 0x00, 0x57, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xe5, 0x10, 0x00, 0xbc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xaf, 0x00, 0x00, 0x4e, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x6d, 0x2a, 0x04, 0x0a, 0xde, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfa, 0x3f, 0x45, 0x06, + 0x00, 0x85, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xe8, 0x2b, 0x29, 0x00, 0x00, 0x8c, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xe6, 0x6d, 0x08, 0x00, 0x00, 0x82, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xc9, 0x7c, 0x7d, 0x69, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xd2, 0x05, 0x00, 0x4f, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xf2, 0x1f, + 0x00, 0xad, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb5, 0x00, 0x00, 0x44, 0xfb, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x68, 0x1f, 0x06, 0x03, 0xd0, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4a, 0x3d, 0x08, 0x00, 0x6f, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfe, 0xf5, 0x36, 0x2a, 0x00, 0x00, 0x72, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xef, 0x75, + 0x0b, 0x00, 0x00, 0x74, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x87, 0x83, 0x69, + 0xfb, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xd4, 0x08, 0x00, 0x45, 0xfd, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0x32, 0x00, 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xbe, 0x00, 0x00, 0x3f, 0xf8, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x66, 0x13, 0x06, 0x00, 0xc2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x52, 0x31, 0x0b, + 0x00, 0x5a, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfd, 0xfd, 0x42, 0x26, 0x00, 0x00, 0x58, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf7, 0x7d, 0x0e, 0x00, 0x00, 0x67, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xd8, 0x93, 0x8c, 0x6c, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xd6, 0x0b, 0x00, 0x3a, 0xfb, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x45, + 0x00, 0x8a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xca, 0x06, 0x00, 0x39, 0xf4, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6e, 0x0d, 0x05, 0x00, 0xb3, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x57, 0x25, 0x0e, 0x00, 0x47, 0xfd, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x51, 0x20, 0x00, 0x00, 0x3f, 0xfc, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x87, + 0x10, 0x00, 0x00, 0x5a, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xb2, 0xac, 0x78, + 0xf4, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xdf, 0x15, 0x00, 0x1b, 0xf0, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x64, 0x00, 0x5c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe2, 0x1f, 0x00, 0x2e, 0xef, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x8e, 0x08, 0x02, 0x00, 0x98, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x59, 0x19, 0x13, + 0x00, 0x2b, 0xf2, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x67, 0x18, 0x02, 0x00, 0x16, 0xe9, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x9f, 0x17, 0x00, 0x00, 0x41, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf1, 0xbc, 0xba, 0x80, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xe4, 0x1c, 0x00, 0x11, 0xe9, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x71, + 0x00, 0x49, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xed, 0x30, 0x00, 0x29, 0xec, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9c, 0x09, 0x01, 0x00, 0x8f, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x5c, 0x14, 0x12, 0x00, 0x22, 0xec, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x6e, 0x13, 0x04, 0x00, 0x09, 0xdc, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xad, + 0x19, 0x00, 0x00, 0x32, 0xfb, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xbe, 0xbc, 0x81, + 0xeb, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe8, 0x22, 0x00, 0x0d, 0xe4, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x80, 0x00, 0x3a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfe, 0xf6, 0x40, 0x00, 0x20, 0xe6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xa9, 0x0a, 0x01, 0x00, 0x86, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x60, 0x0c, 0x11, + 0x00, 0x19, 0xe6, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x78, 0x07, 0x03, 0x00, 0x01, 0xd0, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xbc, 0x17, 0x00, 0x00, 0x23, 0xf3, 0xfe, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xb8, 0xb6, 0x79, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xec, 0x27, 0x00, 0x0a, 0xe0, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8d, + 0x00, 0x31, 0xfc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0x52, 0x00, 0x15, 0xe0, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb4, 0x07, 0x00, 0x00, 0x7a, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x64, 0x00, 0x0c, 0x00, 0x12, 0xdf, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x84, 0x00, 0x01, 0x00, 0x00, 0xc4, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xcc, + 0x15, 0x00, 0x00, 0x15, 0xe7, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xab, 0xa6, 0x66, + 0xd2, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xf5, 0x3b, 0x00, 0x01, 0xd4, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa5, 0x00, 0x20, 0xf1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x77, 0x00, 0x01, 0xc8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xd0, 0x08, 0x01, 0x00, 0x64, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7c, 0x00, 0x04, + 0x04, 0x0c, 0xd0, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x9f, 0x00, 0x00, 0x00, 0x00, 0xac, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xe6, 0x1b, 0x00, 0x00, 0x00, 0xc5, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0xa2, 0x9c, 0x5d, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xf8, 0x48, 0x00, 0x00, 0xcb, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb3, + 0x00, 0x18, 0xeb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x83, 0x00, 0x00, 0xba, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdf, 0x11, 0x00, 0x01, 0x5a, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8d, 0x00, 0x02, 0x06, 0x09, 0xc8, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0xac, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xef, + 0x23, 0x00, 0x00, 0x00, 0xb3, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x9b, 0x93, 0x54, + 0xb6, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0x58, 0x00, 0x00, 0xc2, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc0, 0x00, 0x11, 0xe5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x8e, 0x00, 0x00, 0xac, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xec, 0x1b, 0x00, 0x04, 0x50, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9d, 0x00, 0x00, + 0x0a, 0x09, 0xbf, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x99, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xf4, 0x2b, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x97, 0x89, 0x4c, 0xa4, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0x6a, 0x00, 0x00, 0xb9, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, + 0x00, 0x0d, 0xe1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x96, 0x00, 0x00, 0x9d, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0x2a, 0x00, 0x06, 0x48, 0xfd, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa1, 0x00, 0x01, 0x0b, 0x08, 0xb8, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0xbd, 0x02, 0x00, 0x00, 0x00, 0x91, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf9, + 0x32, 0x00, 0x00, 0x00, 0x97, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0x76, 0x46, + 0x84, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x8d, 0x00, 0x00, 0xa4, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe1, 0x09, 0x07, 0xd9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xa7, 0x00, 0x00, 0x81, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xf5, 0x38, 0x00, 0x09, 0x3b, 0xfa, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9e, 0x00, 0x00, + 0x0c, 0x09, 0xad, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0xc4, 0x09, 0x00, 0x00, 0x00, 0x85, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfe, 0x41, 0x00, 0x00, 0x00, 0x8e, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x99, 0x71, 0x4b, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x9a, 0x00, 0x00, 0x96, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xea, + 0x12, 0x04, 0xd3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xad, 0x00, 0x00, 0x78, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0x37, 0x00, 0x03, 0x34, 0xf9, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9b, 0x00, 0x00, 0x0d, 0x08, 0xaa, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0xc4, 0x0b, 0x00, 0x00, 0x00, 0x81, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xff, + 0x47, 0x00, 0x00, 0x04, 0x8e, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0x7b, 0x5c, + 0x72, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x9f, 0x00, 0x00, 0x81, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf3, 0x1a, 0x01, 0xcc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xb7, 0x01, 0x00, 0x75, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xf4, 0x3a, 0x00, 0x00, 0x2e, 0xfb, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x00, 0x00, + 0x0a, 0x07, 0xac, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0xc0, 0x0b, 0x00, 0x00, 0x00, 0x80, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x4c, 0x00, 0x00, 0x09, 0x8e, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0x95, 0x7d, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x9c, 0x00, 0x00, 0x6a, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf8, + 0x1e, 0x00, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc4, 0x06, 0x00, 0x7e, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0x3e, 0x00, 0x00, 0x33, 0xff, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x94, 0x00, 0x03, 0x06, 0x05, 0xb5, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0xb9, 0x09, 0x00, 0x00, 0x00, 0x80, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0x4f, 0x00, 0x00, 0x14, 0x91, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xa6, 0x97, + 0x96, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x90, 0x00, 0x00, 0x72, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfc, 0x26, 0x00, 0xc4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xc2, 0x0a, 0x00, 0x92, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xf4, 0x35, 0x00, 0x00, 0x45, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8a, 0x00, 0x00, + 0x00, 0x06, 0xc3, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0xa9, 0x00, 0x00, 0x01, 0x00, 0x8a, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf8, 0x2f, 0x00, 0x00, 0x28, 0x98, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, 0x9d, 0x92, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x87, 0x00, 0x00, 0x86, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf8, + 0x23, 0x00, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb3, 0x06, 0x00, 0x99, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf2, 0x2c, 0x00, 0x00, 0x54, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x84, 0x00, 0x00, 0x06, 0x0a, 0xca, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0xa0, 0x00, 0x00, 0x01, 0x00, 0x96, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xec, + 0x19, 0x00, 0x00, 0x36, 0xa1, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0x95, 0x88, + 0xa7, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7e, 0x00, 0x00, 0x98, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf2, 0x1b, 0x00, 0xcd, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x9d, 0x02, 0x00, 0xa4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xef, 0x22, 0x00, 0x12, 0x63, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7e, 0x00, 0x00, + 0x1e, 0x16, 0xd4, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x95, 0x00, 0x00, 0x05, 0x03, 0xa4, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xd9, 0x08, 0x00, 0x00, 0x45, 0xac, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0x89, 0x7c, 0xae, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x73, 0x00, 0x00, 0xab, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe5, + 0x12, 0x03, 0xd4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x84, 0x00, 0x00, 0xb1, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe8, 0x18, 0x00, 0x1b, 0x6f, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x75, 0x00, 0x00, 0x33, 0x1f, 0xdf, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x88, 0x00, 0x00, 0x0f, 0x0f, 0xb4, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xc0, + 0x00, 0x00, 0x00, 0x54, 0xb8, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x74, 0x7a, 0x73, + 0xbd, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x5f, 0x00, 0x00, 0xc7, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, 0x01, 0x12, 0xe9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfc, 0x56, 0x00, 0x02, 0xc3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xd6, 0x06, 0x03, 0x29, 0x87, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x60, 0x00, 0x04, + 0x41, 0x31, 0xf3, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x69, 0x00, 0x00, 0x23, 0x20, 0xd6, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x8c, 0x00, 0x00, 0x04, 0x6a, 0xd3, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x6d, 0x79, 0x77, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x57, 0x00, 0x00, 0xcd, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb7, + 0x00, 0x1d, 0xf3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, 0x4a, 0x00, 0x04, 0xc7, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, 0x01, 0x04, 0x25, 0x89, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x56, 0x00, 0x06, 0x3d, 0x40, 0xfa, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x57, 0x00, 0x00, 0x27, 0x27, 0xe6, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x77, + 0x00, 0x00, 0x08, 0x71, 0xde, 0xff, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x6b, 0x7b, 0x7f, + 0xc7, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x51, 0x00, 0x03, 0xce, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xaa, 0x00, 0x2c, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xf8, 0x41, 0x00, 0x05, 0xcf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xc0, 0x00, 0x07, 0x1c, 0x89, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0x4c, 0x00, 0x08, + 0x34, 0x4e, 0xfe, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0x45, 0x00, 0x00, 0x25, 0x30, 0xf3, + 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x67, 0x00, 0x00, 0x0c, 0x76, 0xea, 0xfe, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0x6c, 0x80, 0x8a, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x4b, 0x00, 0x04, 0xce, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9b, + 0x00, 0x3c, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf6, 0x3b, 0x00, 0x0a, 0xd7, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb4, 0x00, 0x07, 0x10, 0x8a, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xfc, 0x41, 0x00, 0x0c, 0x27, 0x5b, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfd, 0xfb, 0x33, 0x00, 0x00, 0x1e, 0x3c, 0xfc, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x56, + 0x00, 0x00, 0x0e, 0x7c, 0xf4, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x6e, 0x95, 0xa5, + 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xfa, 0x33, 0x00, 0x08, 0xd2, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x76, 0x00, 0x5b, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xf1, 0x32, 0x00, 0x1e, 0xe7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x9e, 0x00, 0x04, 0x01, 0x95, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0x2f, 0x00, 0x10, + 0x13, 0x6d, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xeb, 0x16, 0x00, 0x00, 0x12, 0x5c, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0x38, 0x00, 0x00, 0x12, 0x8f, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xf6, 0x74, 0xa9, 0xb5, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xf4, 0x22, 0x00, 0x0f, 0xd9, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x62, + 0x00, 0x69, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xef, 0x2e, 0x00, 0x2c, 0xef, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x95, 0x00, 0x03, 0x00, 0xa3, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xf0, 0x28, 0x00, 0x13, 0x0f, 0x72, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xe0, 0x0a, 0x00, 0x01, 0x0d, 0x6a, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf7, 0x2b, + 0x00, 0x00, 0x14, 0x9d, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x7c, 0xb7, 0xc0, + 0xf0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xed, 0x16, 0x00, 0x17, 0xdf, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x51, 0x00, 0x77, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xec, 0x2a, 0x00, 0x3c, 0xf5, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x8e, 0x00, 0x02, 0x04, 0xb0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xec, 0x22, 0x00, 0x12, + 0x0a, 0x75, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xd4, 0x02, 0x00, 0x03, 0x07, 0x74, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xee, 0x1e, 0x00, 0x00, 0x15, 0xab, 0xff, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xee, 0x7e, 0xba, 0xc1, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xe9, 0x12, 0x00, 0x1a, 0xe2, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x45, + 0x00, 0x80, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe9, 0x23, 0x00, 0x4a, 0xf9, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8b, 0x00, 0x01, 0x04, 0xb8, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xe9, 0x1d, 0x00, 0x10, 0x06, 0x76, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xcc, 0x00, 0x00, 0x02, 0x00, 0x79, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xe3, 0x13, + 0x00, 0x00, 0x10, 0xb6, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x6e, 0xaa, 0xb0, + 0xea, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe7, 0x14, 0x00, 0x10, 0xd8, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x41, 0x00, 0x78, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe9, 0x20, 0x00, 0x51, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x8f, 0x00, 0x00, 0x00, 0xb3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xea, 0x21, 0x00, 0x0b, + 0x00, 0x60, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x58, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xcd, 0x01, 0x00, 0x00, 0x00, 0xa5, 0xff, 0xfb, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xe2, 0x63, 0x9e, 0xa4, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xe7, 0x15, 0x00, 0x07, 0xcd, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x44, + 0x00, 0x68, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xeb, 0x22, 0x00, 0x49, 0xfc, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x96, 0x00, 0x00, 0x00, 0xab, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xef, 0x2c, 0x00, 0x09, 0x00, 0x50, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x38, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xca, 0x00, + 0x00, 0x00, 0x00, 0x83, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xdc, 0x52, 0x91, 0x94, + 0xcf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe7, 0x15, 0x00, 0x00, 0xbd, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4d, 0x00, 0x54, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xee, 0x28, 0x00, 0x39, 0xfa, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xa0, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf5, 0x3b, 0x00, 0x09, + 0x02, 0x3e, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xca, 0x00, 0x00, 0x00, 0x00, 0x18, 0xed, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x51, 0xfd, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xd6, 0x41, 0x80, 0x85, 0xb8, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xe8, 0x18, 0x00, 0x00, 0xa6, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x57, + 0x00, 0x3c, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf1, 0x2f, 0x00, 0x29, 0xf4, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa9, 0x00, 0x01, 0x00, 0x8a, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0x4e, 0x00, 0x03, 0x0c, 0x2d, 0xf7, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xff, 0xcf, 0x01, 0x00, 0x00, 0x01, 0x00, 0xce, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xcf, 0x02, + 0x00, 0x00, 0x00, 0x1f, 0xea, 0xfe, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xc9, 0x24, 0x5f, 0x68, + 0x79, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xea, 0x20, 0x00, 0x00, 0x6d, 0xff, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6d, 0x00, 0x13, 0xe8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfe, 0xf9, 0x4a, 0x00, 0x08, 0xd7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xb8, 0x00, 0x01, 0x00, 0x56, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7b, 0x00, 0x01, + 0x19, 0x16, 0xd9, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xe3, 0x16, 0x00, 0x00, 0x11, 0x00, 0x65, + 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xd7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xff, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xc1, 0x14, 0x52, 0x5f, 0x59, 0xed, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xed, 0x24, 0x00, 0x00, 0x4f, 0xf8, 0xff, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x75, + 0x00, 0x01, 0xc8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfb, 0x5a, 0x00, 0x00, 0xbf, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc1, 0x00, 0x01, 0x00, 0x3b, 0xf8, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x90, 0x00, 0x01, 0x17, 0x13, 0xb8, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfe, 0xf0, 0x2d, 0x00, 0x00, 0x16, 0x17, 0x34, 0xf6, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0xdc, 0x08, + 0x00, 0x00, 0x03, 0x06, 0x11, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xbb, 0x05, 0x49, 0x59, + 0x40, 0xd5, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xee, 0x25, 0x00, 0x00, 0x2e, 0xe8, 0xff, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x77, 0x00, 0x00, 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0x67, 0x00, 0x00, 0xa7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xcd, 0x04, 0x01, 0x00, 0x29, 0xea, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa1, 0x00, 0x01, + 0x0d, 0x18, 0x8e, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfd, 0xfb, 0x4d, 0x00, 0x00, 0x11, 0x3e, 0x10, + 0xdf, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xe7, 0x11, 0x00, 0x00, 0x02, 0x23, 0x00, 0xa6, 0xff, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xbb, 0x10, 0x4c, 0x60, 0x3a, 0xb9, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xea, 0x1f, 0x00, 0x00, 0x0e, 0xca, 0xff, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x72, + 0x00, 0x00, 0x6c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6f, 0x00, 0x00, 0x86, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdd, 0x13, 0x00, 0x00, 0x23, 0xde, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb5, 0x00, 0x00, 0x07, 0x16, 0x63, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xff, 0x7b, 0x00, 0x00, 0x05, 0x65, 0x00, 0xc0, 0xff, 0xfc, 0xfc, 0xfc, 0xfe, 0xf4, 0x23, + 0x00, 0x00, 0x00, 0x43, 0x00, 0x58, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x35, 0x67, 0x8d, + 0x57, 0x8b, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe8, 0x18, 0x00, 0x00, 0x00, 0x65, 0xff, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6e, 0x00, 0x00, 0x16, 0xde, 0xff, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x6b, 0x00, 0x00, 0x45, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xfd, 0x3a, 0x00, 0x00, 0x21, 0xdf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd6, 0x0e, 0x00, + 0x03, 0x01, 0x29, 0xeb, 0xff, 0xfd, 0xfc, 0xfc, 0xfb, 0xff, 0xcb, 0x00, 0x00, 0x00, 0x6a, 0x2a, + 0x61, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x79, 0x00, 0x00, 0x00, 0x50, 0x4d, 0x00, 0xd3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd9, 0x3a, 0x5b, 0x85, 0x54, 0x69, 0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xf0, 0x23, 0x00, 0x00, 0x00, 0x3c, 0xfc, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x72, + 0x00, 0x00, 0x06, 0xbd, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6b, 0x00, 0x00, 0x2e, + 0xfa, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x53, 0x00, 0x01, 0x13, 0xd7, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf2, 0x2c, 0x00, 0x04, 0x00, 0x15, 0xd3, 0xff, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfd, 0xfb, 0x2f, 0x00, 0x00, 0x49, 0x32, 0x35, 0xf9, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0xb8, + 0x00, 0x00, 0x00, 0x3d, 0x77, 0x00, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x40, 0x4c, 0x79, + 0x4e, 0x44, 0xea, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xf8, 0x37, 0x00, 0x00, 0x00, 0x1a, 0xe4, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7c, 0x00, 0x00, 0x00, 0x87, 0xff, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x73, 0x00, 0x00, 0x17, 0xe6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x70, 0x00, 0x01, 0x05, 0xc5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0x57, 0x00, + 0x01, 0x00, 0x0c, 0xb4, 0xff, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x6c, 0x00, 0x00, 0x2b, 0x2d, + 0x12, 0xdf, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xe2, 0x1d, 0x00, 0x00, 0x27, 0x71, 0x00, 0x86, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf4, 0x4f, 0x3c, 0x6b, 0x49, 0x21, 0xc4, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0x53, 0x00, 0x00, 0x00, 0x01, 0xb9, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8f, + 0x00, 0x00, 0x00, 0x49, 0xf9, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x80, 0x05, 0x00, 0x02, + 0xc0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8f, 0x00, 0x00, 0x00, 0xa9, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x86, 0x00, 0x00, 0x00, 0x07, 0x94, 0xff, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0xa4, 0x00, 0x00, 0x16, 0x2b, 0x00, 0xb9, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xf6, + 0x49, 0x00, 0x00, 0x15, 0x68, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x23, 0x43, + 0x45, 0x00, 0x48, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x4b, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc5, 0x01, 0x00, 0x03, 0x00, 0x90, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xb1, 0x1d, 0x00, 0x00, 0x39, 0xf6, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xcc, 0x15, 0x00, 0x00, 0x49, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdc, 0x0a, + 0x00, 0x00, 0x00, 0x73, 0xf2, 0xfe, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xe2, 0x0d, 0x00, 0x00, 0x21, + 0x00, 0x63, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x58, 0x27, 0x00, 0xa4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x28, 0x32, 0x44, 0x07, 0x1d, 0xf1, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe0, + 0x12, 0x00, 0x05, 0x00, 0x44, 0xf6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd5, 0x34, 0x00, 0x02, + 0x06, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe7, 0x32, 0x00, 0x00, 0x1c, 0xf3, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf7, 0x26, 0x00, 0x04, 0x00, 0x62, 0xea, 0xff, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfe, 0xf5, 0x1f, 0x00, 0x00, 0x17, 0x00, 0x43, 0xf5, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0xbc, 0x0a, 0x00, 0x00, 0x4d, 0x31, 0x00, 0x74, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x47, 0x27, + 0x43, 0x0d, 0x06, 0xd4, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xec, 0x14, 0x00, 0x01, 0x00, 0x07, + 0xc7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0x2f, 0x00, 0x0a, 0x00, 0x15, 0xd3, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xf5, 0x53, 0x08, 0x04, 0x00, 0x76, 0xfa, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xfa, 0x5c, 0x00, 0x00, 0x00, 0xc1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4e, + 0x00, 0x06, 0x00, 0x57, 0xed, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x3f, 0x00, 0x00, 0x0d, + 0x00, 0x31, 0xef, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xcd, 0x1a, 0x00, 0x00, 0x3f, 0x34, 0x00, 0x58, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x86, 0x24, 0x41, 0x16, 0x00, 0xbe, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xfd, 0x3c, 0x00, 0x01, 0x00, 0x00, 0xa9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0x5a, 0x00, 0x06, 0x00, 0x00, 0xa5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x86, 0x11, 0x00, + 0x00, 0x24, 0xed, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8d, 0x0b, 0x01, 0x00, 0x6e, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7e, 0x00, 0x07, 0x00, 0x4b, 0xf4, 0xff, 0xfc, 0xfc, + 0xfc, 0xfb, 0xfb, 0xff, 0x62, 0x00, 0x00, 0x05, 0x00, 0x33, 0xed, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, + 0xcc, 0x2d, 0x00, 0x00, 0x30, 0x35, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x5c, + 0x47, 0x2f, 0x01, 0xc3, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x94, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9e, 0x00, 0x01, 0x05, 0x00, 0x66, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xed, 0x2e, 0x08, 0x05, 0x00, 0x74, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xf0, 0x38, 0x06, 0x00, 0x00, 0xab, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd0, + 0x05, 0x00, 0x00, 0x27, 0xf7, 0xfe, 0xfc, 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x63, 0xf6, 0xfc, 0xfc, 0xfe, 0xb7, 0x84, 0x99, 0x37, 0x00, 0x00, 0x0f, 0x26, 0x00, 0x7c, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0x57, 0x3e, 0x0f, 0xdc, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xab, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xb6, 0x00, 0x00, 0x08, 0x00, 0x5d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0x45, 0x04, + 0x07, 0x00, 0x4b, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x5d, 0x05, 0x01, 0x00, 0x69, + 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xea, 0x1b, 0x00, 0x00, 0x1f, 0xde, 0xff, 0xfc, 0xfb, + 0xfc, 0xf8, 0xf0, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x05, 0x89, 0xfa, 0xfc, 0xfc, 0xff, 0x65, 0x24, + 0x6c, 0x2d, 0x00, 0x00, 0x06, 0x12, 0x00, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, + 0x73, 0x3f, 0x2e, 0xf8, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xc6, 0x04, 0x00, 0x00, 0x00, + 0xb8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc4, 0x02, 0x00, 0x08, 0x00, 0x5f, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x55, 0x01, 0x07, 0x00, 0x39, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x88, 0x01, 0x02, 0x00, 0x3f, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfe, 0xf9, + 0x34, 0x00, 0x00, 0x16, 0xbe, 0xff, 0xfc, 0xfc, 0xfd, 0xce, 0xb2, 0xff, 0xd2, 0x05, 0x00, 0x00, + 0x10, 0xae, 0xfd, 0xfc, 0xfc, 0xff, 0x44, 0x00, 0x41, 0x1e, 0x00, 0x00, 0x02, 0x01, 0x0d, 0xd4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x97, 0x2e, 0x68, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xd8, 0x1a, 0x00, 0x00, 0x03, 0xc8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xca, 0x02, 0x00, 0x07, 0x00, 0x65, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x58, 0x00, + 0x07, 0x00, 0x36, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa9, 0x00, 0x01, 0x00, 0x2c, + 0xfb, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x00, 0x00, 0x12, 0xa0, 0xff, 0xfc, 0xfc, + 0xfe, 0x9c, 0x70, 0xf3, 0xd1, 0x0c, 0x00, 0x00, 0x1a, 0xc9, 0xfd, 0xfc, 0xfc, 0xff, 0x56, 0x00, + 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x35, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbd, 0x37, 0xd8, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xed, 0x49, 0x00, 0x00, 0x21, + 0xe8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd1, 0x01, 0x00, 0x04, 0x00, 0x90, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0x57, 0x00, 0x06, 0x00, 0x49, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xfd, 0xff, 0xcb, 0x06, 0x01, 0x00, 0x24, 0xfa, 0xfd, 0xfd, 0xfd, 0xf7, 0xe8, 0xff, 0xff, + 0x75, 0x00, 0x00, 0x26, 0x92, 0xfb, 0xfc, 0xfc, 0xff, 0x73, 0x08, 0xb5, 0xba, 0x13, 0x00, 0x00, + 0x4b, 0xe6, 0xfe, 0xfc, 0xfc, 0xfe, 0xc5, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0x5c, 0xf3, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xf3, 0x5e, 0x09, 0x00, 0x38, 0xf3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xd3, 0x00, 0x00, 0x01, 0x00, 0xa8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x54, 0x00, + 0x04, 0x00, 0x5c, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfd, 0xff, 0xd2, 0x08, 0x01, 0x00, 0x31, + 0xfd, 0xfd, 0xfd, 0xfd, 0xec, 0xcd, 0xff, 0xff, 0x81, 0x00, 0x00, 0x24, 0xa3, 0xfd, 0xfc, 0xfc, + 0xff, 0x7f, 0x00, 0x92, 0xa8, 0x14, 0x00, 0x00, 0x5f, 0xef, 0xfe, 0xfc, 0xfc, 0xfd, 0xe6, 0x84, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb0, 0x7f, 0xfc, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xf6, 0x6e, 0x0e, 0x00, 0x4e, + 0xfa, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd3, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x53, 0x00, 0x01, 0x00, 0x6f, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xfd, 0xff, 0xd5, 0x0a, 0x01, 0x00, 0x45, 0xff, 0xfd, 0xfd, 0xfe, 0xe1, 0xae, 0xff, 0xff, + 0x88, 0x00, 0x00, 0x2f, 0xb8, 0xff, 0xfc, 0xfc, 0xff, 0x91, 0x00, 0x75, 0x93, 0x13, 0x00, 0x00, + 0x6f, 0xf5, 0xfd, 0xfc, 0xfc, 0xfc, 0xf7, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0x9b, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xf7, 0x77, 0x0e, 0x00, 0x5e, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xd2, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0x50, 0x00, + 0x01, 0x00, 0x82, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfd, 0xff, 0xd4, 0x0a, 0x01, 0x00, 0x5c, + 0xff, 0xfd, 0xfd, 0xfe, 0xd8, 0x92, 0xfd, 0xff, 0x8b, 0x00, 0x00, 0x3d, 0xcc, 0xff, 0xfc, 0xfc, + 0xff, 0xa2, 0x00, 0x5d, 0x80, 0x11, 0x00, 0x00, 0x76, 0xf7, 0xfd, 0xfc, 0xfc, 0xfc, 0xff, 0xb9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8f, 0xb3, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xf5, 0x76, 0x08, 0x00, 0x69, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, 0x00, 0x00, 0x00, 0x09, 0xda, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, 0x4a, 0x00, 0x00, 0x00, 0x9b, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xfd, 0xff, 0xcd, 0x04, 0x00, 0x00, 0x85, 0xff, 0xfd, 0xfd, 0xfe, 0xc4, 0x66, 0xf7, 0xff, + 0x85, 0x00, 0x00, 0x55, 0xe8, 0xfe, 0xfc, 0xfc, 0xff, 0xb2, 0x0e, 0x3d, 0x63, 0x09, 0x00, 0x00, + 0x6e, 0xf7, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe7, 0xfe, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x85, 0xbc, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xf4, 0x72, 0x04, 0x00, 0x6e, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xc5, 0x00, 0x00, 0x00, 0x0c, 0xe1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf9, 0x48, 0x00, + 0x00, 0x00, 0xa8, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfe, 0xff, 0xc8, 0x02, 0x00, 0x00, 0x9c, + 0xff, 0xfd, 0xfd, 0xff, 0xbd, 0x54, 0xf2, 0xff, 0x82, 0x00, 0x00, 0x5e, 0xf0, 0xfe, 0xfc, 0xfc, + 0xff, 0xb9, 0x1a, 0x30, 0x57, 0x07, 0x00, 0x00, 0x6a, 0xf6, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe9, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7e, 0xc5, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xf3, 0x6f, 0x00, 0x00, 0x74, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x12, 0xe7, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf8, 0x44, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xfd, 0xfd, 0xff, 0xb6, 0x46, 0xed, 0xff, + 0x7e, 0x00, 0x00, 0x6a, 0xf7, 0xfe, 0xfc, 0xfc, 0xff, 0xc1, 0x25, 0x25, 0x4c, 0x04, 0x00, 0x00, + 0x67, 0xf6, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xeb, 0xfe, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7a, 0xcf, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xf2, 0x6b, 0x00, 0x01, 0x7b, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xb7, 0x00, 0x00, 0x00, 0x1a, 0xec, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf6, 0x40, 0x00, + 0x00, 0x00, 0xc4, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xbe, 0x00, 0x00, 0x06, 0xc1, + 0xff, 0xfd, 0xfd, 0xff, 0xb1, 0x39, 0xe7, 0xff, 0x7a, 0x00, 0x00, 0x7a, 0xfc, 0xfe, 0xfc, 0xfc, + 0xfe, 0xc9, 0x2f, 0x1b, 0x42, 0x03, 0x00, 0x00, 0x66, 0xf6, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xed, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, + 0x7c, 0xdf, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xee, 0x63, 0x00, 0x05, 0x8f, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x27, 0xf6, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xf1, 0x38, 0x00, 0x00, 0x04, 0xdb, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, + 0xfb, 0xff, 0xff, 0xb6, 0x00, 0x00, 0x16, 0xda, 0xff, 0xfd, 0xfd, 0xff, 0xa9, 0x24, 0xd9, 0xff, + 0x71, 0x00, 0x00, 0x8c, 0xff, 0xfd, 0xfc, 0xfc, 0xfe, 0xd5, 0x40, 0x0c, 0x33, 0x00, 0x00, 0x00, + 0x6a, 0xf6, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x6c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x2c, 0xf2, 0xfe, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0x82, 0xe4, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xec, 0x5d, 0x00, 0x07, 0x9a, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xa2, 0x00, 0x00, 0x00, 0x30, 0xf9, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xed, 0x34, 0x00, + 0x00, 0x0a, 0xe5, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xf7, 0xff, 0xff, 0xb3, 0x00, 0x00, 0x1e, 0xe4, + 0xff, 0xfd, 0xfd, 0xff, 0xa5, 0x1d, 0xd4, 0xfe, 0x6c, 0x00, 0x00, 0x95, 0xfe, 0xfd, 0xfc, 0xfc, + 0xfe, 0xda, 0x46, 0x07, 0x2c, 0x00, 0x00, 0x00, 0x6e, 0xf7, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x60, + 0x00, 0x00, 0x0e, 0x00, 0x00, 0x30, 0xf4, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, + 0x8b, 0xe8, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xeb, 0x57, 0x00, 0x0a, 0xa4, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x00, 0x00, 0x00, 0x3a, 0xfc, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xfe, 0xea, 0x30, 0x00, 0x00, 0x11, 0xec, 0xff, 0xfd, 0xfd, 0xfd, 0xfb, + 0xf1, 0xff, 0xff, 0xaf, 0x00, 0x00, 0x27, 0xeb, 0xff, 0xfd, 0xfd, 0xff, 0xa1, 0x17, 0xcf, 0xf9, + 0x67, 0x00, 0x00, 0x9b, 0xfe, 0xfd, 0xfc, 0xfc, 0xfd, 0xde, 0x49, 0x03, 0x27, 0x00, 0x00, 0x00, + 0x73, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x57, 0x00, 0x00, 0x12, 0x00, 0x00, 0x35, 0xf6, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0x94, 0xeb, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xe9, 0x51, 0x00, 0x0d, 0xb0, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x91, 0x00, 0x00, 0x00, 0x44, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfe, 0xe5, 0x2c, 0x00, + 0x00, 0x19, 0xf2, 0xff, 0xfd, 0xfd, 0xfd, 0xfa, 0xee, 0xff, 0xff, 0xab, 0x01, 0x00, 0x2b, 0xf0, + 0xff, 0xfd, 0xfd, 0xff, 0x9d, 0x13, 0xcd, 0xf6, 0x64, 0x00, 0x00, 0xa0, 0xfe, 0xfd, 0xfc, 0xfc, + 0xfd, 0xe1, 0x4b, 0x01, 0x24, 0x00, 0x00, 0x00, 0x7a, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x52, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x3a, 0xf7, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, + 0xaa, 0xef, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xe7, 0x42, 0x00, 0x13, 0xc2, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x81, 0x00, 0x00, 0x00, 0x58, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xdc, 0x24, 0x00, 0x00, 0x29, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xf8, + 0xec, 0xff, 0xff, 0xa0, 0x02, 0x00, 0x34, 0xf8, 0xff, 0xfd, 0xfd, 0xff, 0x99, 0x11, 0xcd, 0xf2, + 0x5b, 0x00, 0x00, 0xad, 0xfe, 0xfd, 0xfc, 0xfc, 0xfd, 0xe2, 0x4c, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x85, 0xfa, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x52, 0x00, 0x00, 0x11, 0x00, 0x00, 0x45, 0xfa, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xb4, 0xf0, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xe5, 0x3b, 0x00, 0x16, 0xc9, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x7a, 0x00, 0x00, 0x00, 0x61, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd9, 0x22, 0x00, + 0x00, 0x30, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xf8, 0xec, 0xff, 0xff, 0x9b, 0x02, 0x00, 0x3a, 0xfc, + 0xfe, 0xfd, 0xfd, 0xff, 0x97, 0x12, 0xcd, 0xf2, 0x59, 0x00, 0x02, 0xb2, 0xff, 0xfd, 0xfc, 0xfc, + 0xfd, 0xe1, 0x4c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x8a, 0xfa, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x56, + 0x00, 0x00, 0x0e, 0x00, 0x00, 0x4a, 0xfb, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, + 0xbc, 0xf1, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xe4, 0x35, 0x00, 0x19, 0xd0, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x74, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd4, 0x1f, 0x01, 0x00, 0x36, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xf8, + 0xec, 0xff, 0xff, 0x98, 0x02, 0x00, 0x3e, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, 0x97, 0x12, 0xcf, 0xf1, + 0x58, 0x00, 0x04, 0xb7, 0xff, 0xfd, 0xfc, 0xfc, 0xfd, 0xe0, 0x4b, 0x01, 0x20, 0x00, 0x00, 0x00, + 0x90, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x5c, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x50, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xc2, 0xf2, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xe3, 0x30, 0x00, 0x1d, 0xd5, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x6f, 0x00, 0x00, 0x00, 0x71, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd0, 0x1c, 0x00, + 0x00, 0x3d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xf9, 0xee, 0xff, 0xff, 0x95, 0x03, 0x00, 0x43, 0xff, + 0xfe, 0xfd, 0xfd, 0xff, 0x97, 0x14, 0xd0, 0xf1, 0x57, 0x00, 0x05, 0xba, 0xff, 0xfd, 0xfc, 0xfc, + 0xfd, 0xdf, 0x4b, 0x02, 0x21, 0x00, 0x00, 0x00, 0x97, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x64, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x55, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, + 0xc9, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xe2, 0x2b, 0x00, 0x21, 0xda, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x69, 0x00, 0x00, 0x00, 0x78, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcc, 0x19, 0x00, 0x00, 0x45, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, + 0xf0, 0xff, 0xff, 0x8d, 0x02, 0x00, 0x4a, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x17, 0xd4, 0xf4, + 0x57, 0x00, 0x08, 0xbf, 0xff, 0xfd, 0xfc, 0xfc, 0xfd, 0xdc, 0x4a, 0x05, 0x24, 0x00, 0x00, 0x00, + 0xa5, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x74, 0x00, 0x00, 0x01, 0x00, 0x00, 0x5f, 0xfd, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0xc9, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xe1, 0x2a, 0x00, 0x21, 0xda, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x68, 0x00, 0x00, 0x00, 0x79, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcc, 0x18, 0x00, + 0x00, 0x46, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, 0xf1, 0xff, 0xff, 0x8a, 0x03, 0x00, 0x4c, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0x9b, 0x18, 0xd5, 0xf5, 0x56, 0x00, 0x0a, 0xc3, 0xff, 0xfd, 0xfc, 0xfc, + 0xfe, 0xdc, 0x49, 0x06, 0x26, 0x00, 0x00, 0x00, 0xab, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x7d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, + 0xc9, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xe0, 0x29, 0x00, 0x21, 0xda, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x66, 0x00, 0x00, 0x00, 0x78, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xcc, 0x18, 0x00, 0x00, 0x47, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, + 0xf2, 0xff, 0xff, 0x88, 0x03, 0x00, 0x4c, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x9c, 0x18, 0xd5, 0xf6, + 0x57, 0x00, 0x0a, 0xc4, 0xff, 0xfd, 0xfc, 0xfc, 0xfe, 0xdc, 0x4a, 0x07, 0x27, 0x00, 0x00, 0x00, + 0xb1, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xfd, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0xc6, 0xf2, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xdf, 0x2a, 0x00, 0x1f, 0xd7, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x65, 0x00, 0x00, 0x00, 0x76, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcb, 0x17, 0x00, + 0x00, 0x44, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, 0xf2, 0xff, 0xff, 0x85, 0x02, 0x00, 0x49, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0x9f, 0x16, 0xd4, 0xf7, 0x56, 0x00, 0x0a, 0xc3, 0xff, 0xfd, 0xfc, 0xfc, + 0xfe, 0xdd, 0x4b, 0x07, 0x29, 0x00, 0x00, 0x00, 0xb5, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, + 0xbe, 0xef, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xdd, 0x29, 0x00, 0x19, 0xd1, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x62, 0x00, 0x00, 0x00, 0x70, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcb, 0x16, 0x01, 0x00, 0x3e, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, + 0xee, 0xff, 0xff, 0x83, 0x02, 0x00, 0x44, 0xff, 0xfe, 0xfd, 0xfd, 0xff, 0xa5, 0x0e, 0xcb, 0xf7, + 0x57, 0x00, 0x0b, 0xc6, 0xff, 0xfd, 0xfc, 0xfc, 0xfd, 0xe1, 0x52, 0x05, 0x2a, 0x00, 0x00, 0x04, + 0xbe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xfd, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xb9, 0xed, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xdb, 0x28, 0x00, 0x15, 0xce, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x60, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcb, 0x16, 0x02, + 0x00, 0x38, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfa, 0xeb, 0xff, 0xff, 0x83, 0x01, 0x00, 0x42, 0xfe, + 0xfe, 0xfd, 0xfd, 0xff, 0xa9, 0x09, 0xc6, 0xf8, 0x58, 0x00, 0x09, 0xc6, 0xff, 0xfd, 0xfc, 0xfc, + 0xfd, 0xe4, 0x56, 0x04, 0x2b, 0x00, 0x00, 0x04, 0xc0, 0xfb, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x9a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, + 0xb3, 0xea, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xd9, 0x28, 0x00, 0x11, 0xcb, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x64, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcb, 0x15, 0x03, 0x00, 0x31, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xf9, + 0xe8, 0xff, 0xff, 0x83, 0x01, 0x00, 0x3f, 0xfc, 0xff, 0xfd, 0xfd, 0xff, 0xac, 0x05, 0xbf, 0xf9, + 0x5b, 0x00, 0x08, 0xc1, 0xff, 0xfd, 0xfc, 0xfc, 0xfd, 0xe7, 0x5b, 0x03, 0x2c, 0x00, 0x00, 0x05, + 0xc1, 0xfb, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0xad, 0xe8, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xd7, 0x27, 0x00, 0x0f, 0xc6, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x5d, 0x00, 0x02, 0x00, 0x5e, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcb, 0x16, 0x03, + 0x00, 0x2c, 0xfc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfa, 0xe5, 0xff, 0xff, 0x83, 0x00, 0x00, 0x3a, 0xf9, + 0xff, 0xfd, 0xfd, 0xff, 0xb0, 0x01, 0xb8, 0xf9, 0x5d, 0x00, 0x06, 0xbc, 0xff, 0xfd, 0xfc, 0xfc, + 0xfd, 0xea, 0x60, 0x02, 0x2c, 0x00, 0x00, 0x04, 0xc1, 0xfb, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xfb, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, + 0x9f, 0xe1, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xd2, 0x25, 0x00, 0x08, 0xbc, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x59, 0x00, 0x03, 0x00, 0x50, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcb, 0x14, 0x03, 0x00, 0x1f, 0xf6, 0xff, 0xfd, 0xfd, 0xfd, 0xf9, + 0xdd, 0xfc, 0xff, 0x86, 0x00, 0x00, 0x2d, 0xf2, 0xff, 0xfd, 0xfd, 0xff, 0xba, 0x00, 0xa7, 0xf9, + 0x63, 0x00, 0x04, 0xb1, 0xff, 0xfd, 0xfc, 0xfc, 0xfd, 0xf0, 0x6b, 0x00, 0x2e, 0x00, 0x00, 0x02, + 0xc0, 0xfb, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xf9, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0, 0x97, 0xdd, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xd0, 0x24, 0x00, 0x05, 0xb6, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x58, 0x00, 0x04, 0x00, 0x49, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcb, 0x14, 0x03, + 0x00, 0x1a, 0xf2, 0xff, 0xfd, 0xfd, 0xfd, 0xf9, 0xda, 0xf9, 0xff, 0x85, 0x00, 0x00, 0x25, 0xed, + 0xff, 0xfd, 0xfd, 0xff, 0xbf, 0x00, 0x9d, 0xfa, 0x67, 0x00, 0x03, 0xaa, 0xfe, 0xfd, 0xfc, 0xfc, + 0xfd, 0xf2, 0x71, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xbc, 0xfa, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, + 0x8e, 0xd9, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xcd, 0x22, 0x00, 0x02, 0xae, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x56, 0x00, 0x05, 0x00, 0x42, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xca, 0x13, 0x03, 0x00, 0x15, 0xee, 0xff, 0xfd, 0xfd, 0xfd, 0xf9, + 0xd6, 0xf7, 0xff, 0x86, 0x00, 0x00, 0x1f, 0xe8, 0xff, 0xfd, 0xfd, 0xff, 0xc4, 0x00, 0x92, 0xf9, + 0x69, 0x00, 0x01, 0xa1, 0xfe, 0xfd, 0xfc, 0xfc, 0xfd, 0xf4, 0x77, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0xb9, 0xfa, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa6, 0x00, 0x00, 0x01, 0x00, 0x00, 0x53, 0xf6, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa8, 0x86, 0xd4, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xca, 0x22, 0x00, 0x00, 0xa5, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x54, 0x00, 0x05, 0x00, 0x3a, 0xfc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcc, 0x13, 0x02, + 0x00, 0x10, 0xe9, 0xff, 0xfd, 0xfd, 0xfd, 0xf9, 0xd1, 0xf4, 0xff, 0x87, 0x00, 0x00, 0x16, 0xe2, + 0xff, 0xfd, 0xfd, 0xff, 0xc9, 0x00, 0x86, 0xf9, 0x6d, 0x00, 0x00, 0x96, 0xfc, 0xfd, 0xfc, 0xfc, + 0xfd, 0xf7, 0x7e, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xb4, 0xfa, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa7, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x4e, 0xf5, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa2, + 0x72, 0xca, 0xfd, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xc4, 0x20, 0x00, 0x00, 0x93, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x50, 0x00, 0x05, 0x00, 0x2b, 0xf7, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcc, 0x12, 0x02, 0x00, 0x07, 0xde, 0xff, 0xfd, 0xfd, 0xfd, 0xf8, + 0xc8, 0xeb, 0xff, 0x86, 0x00, 0x00, 0x09, 0xd4, 0xff, 0xfd, 0xfd, 0xff, 0xd6, 0x00, 0x6c, 0xf6, + 0x74, 0x00, 0x00, 0x84, 0xf8, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0x8c, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0xa9, 0xfa, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa8, 0x00, 0x00, 0x05, 0x00, 0x00, 0x42, 0xf0, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x67, 0xc3, 0xfb, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xc1, 0x1f, 0x00, 0x00, 0x88, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x4f, 0x00, 0x05, 0x00, 0x25, 0xf4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcc, 0x12, 0x02, + 0x00, 0x05, 0xd7, 0xff, 0xfd, 0xfd, 0xfd, 0xf8, 0xc4, 0xe6, 0xff, 0x86, 0x00, 0x00, 0x06, 0xcd, + 0xff, 0xfd, 0xfd, 0xff, 0xdb, 0x00, 0x5e, 0xf4, 0x78, 0x00, 0x00, 0x7b, 0xf5, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0x93, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xa2, 0xfa, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa8, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x3b, 0xed, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, + 0x5d, 0xbe, 0xf8, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xbe, 0x1d, 0x00, 0x00, 0x7d, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4e, 0x00, 0x06, 0x00, 0x20, 0xf0, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcc, 0x12, 0x02, 0x00, 0x00, 0xd1, 0xff, 0xfd, 0xfd, 0xfd, 0xf9, + 0xbf, 0xdf, 0xff, 0x85, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xfd, 0xfd, 0xff, 0xe1, 0x01, 0x4f, 0xf2, + 0x7b, 0x00, 0x00, 0x73, 0xf3, 0xfd, 0xfc, 0xfc, 0xfc, 0xfe, 0x9a, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x99, 0xfb, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xa9, 0x00, 0x00, 0x08, 0x00, 0x00, 0x35, 0xe9, 0xfe, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9c, 0x51, 0xb7, 0xf5, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xbb, 0x1c, 0x00, 0x00, 0x72, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x4c, 0x00, 0x06, 0x00, 0x1b, 0xeb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcd, 0x12, 0x02, + 0x00, 0x00, 0xcb, 0xff, 0xfd, 0xfd, 0xfd, 0xfa, 0xbb, 0xd7, 0xff, 0x84, 0x00, 0x00, 0x00, 0xbe, + 0xff, 0xfd, 0xfd, 0xff, 0xe6, 0x05, 0x41, 0xf0, 0x7f, 0x00, 0x00, 0x6d, 0xef, 0xfe, 0xfc, 0xfc, + 0xfc, 0xff, 0xa1, 0x00, 0x27, 0x01, 0x00, 0x00, 0x91, 0xfb, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xaa, + 0x00, 0x00, 0x0a, 0x00, 0x00, 0x2f, 0xe4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9a, + 0x37, 0xa7, 0xed, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xb3, 0x19, 0x00, 0x00, 0x5e, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4a, 0x00, 0x07, 0x00, 0x0e, 0xdf, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xce, 0x10, 0x01, 0x00, 0x00, 0xb7, 0xff, 0xfd, 0xfd, 0xfd, 0xfb, + 0xb6, 0xc5, 0xff, 0x83, 0x00, 0x00, 0x00, 0xad, 0xff, 0xfd, 0xfd, 0xff, 0xf0, 0x12, 0x26, 0xe9, + 0x86, 0x00, 0x00, 0x57, 0xe7, 0xfe, 0xfc, 0xfc, 0xfc, 0xff, 0xb1, 0x00, 0x21, 0x02, 0x00, 0x00, + 0x7e, 0xfd, 0xfb, 0xfc, 0xfc, 0xfb, 0xff, 0xad, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x24, 0xd8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x97, 0x2a, 0x9f, 0xe8, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xb0, 0x18, 0x00, 0x00, 0x53, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x49, 0x00, 0x07, 0x00, 0x09, 0xd9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xce, 0x11, 0x01, + 0x00, 0x00, 0xaf, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xb3, 0xba, 0xff, 0x83, 0x00, 0x00, 0x00, 0xa2, + 0xff, 0xfd, 0xfd, 0xff, 0xf4, 0x1b, 0x19, 0xe5, 0x8a, 0x00, 0x00, 0x4d, 0xe3, 0xfe, 0xfc, 0xfc, + 0xfc, 0xff, 0xb8, 0x00, 0x1c, 0x03, 0x00, 0x00, 0x75, 0xfe, 0xfb, 0xfc, 0xfc, 0xfb, 0xff, 0xaf, + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1e, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x97, + 0x20, 0x96, 0xe3, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xac, 0x16, 0x00, 0x00, 0x48, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x49, 0x00, 0x07, 0x00, 0x04, 0xcf, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xcf, 0x11, 0x01, 0x00, 0x00, 0xa4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xb0, 0xaf, 0xff, 0x82, 0x00, 0x00, 0x00, 0x99, 0xff, 0xfd, 0xfd, 0xff, 0xf8, 0x25, 0x0e, 0xe0, + 0x8e, 0x00, 0x00, 0x44, 0xdd, 0xfe, 0xfc, 0xfc, 0xfc, 0xff, 0xc0, 0x00, 0x17, 0x04, 0x00, 0x00, + 0x6c, 0xff, 0xfb, 0xfc, 0xfc, 0xfb, 0xff, 0xb2, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x1a, 0xca, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9b, 0x17, 0x8c, 0xdc, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xa9, 0x14, 0x00, 0x00, 0x3d, 0xfc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x49, 0x00, 0x07, 0x00, 0x00, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd0, 0x10, 0x01, + 0x00, 0x00, 0x9a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xaf, 0xa2, 0xff, 0x82, 0x00, 0x00, 0x00, 0x8d, + 0xff, 0xfd, 0xfd, 0xfe, 0xfb, 0x2f, 0x03, 0xd8, 0x92, 0x00, 0x00, 0x3c, 0xd8, 0xff, 0xfc, 0xfc, + 0xfb, 0xff, 0xc7, 0x02, 0x12, 0x04, 0x00, 0x00, 0x62, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xb5, + 0x00, 0x00, 0x0e, 0x00, 0x00, 0x16, 0xc2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa1, + 0x0a, 0x78, 0xcd, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xa2, 0x0e, 0x02, 0x00, 0x26, + 0xf3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x48, 0x00, 0x07, 0x00, 0x00, 0xb2, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd2, 0x10, 0x01, 0x01, 0x00, 0x82, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, + 0xaf, 0x8a, 0xff, 0x83, 0x00, 0x01, 0x00, 0x76, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x45, 0x00, 0xc1, + 0x9b, 0x00, 0x00, 0x2d, 0xcd, 0xff, 0xfc, 0xfc, 0xfb, 0xff, 0xd5, 0x09, 0x06, 0x05, 0x00, 0x00, + 0x52, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xbc, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x10, 0xb3, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa4, 0x05, 0x6e, 0xc6, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x9e, 0x0c, 0x03, 0x00, 0x1d, 0xee, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x48, 0x00, 0x07, 0x01, 0x00, 0xa6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd2, 0x0f, 0x01, + 0x06, 0x00, 0x76, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0xae, 0x7c, 0xff, 0x83, 0x00, 0x04, 0x00, 0x69, + 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x50, 0x00, 0xb2, 0x9f, 0x00, 0x00, 0x28, 0xc5, 0xff, 0xfc, 0xfc, + 0xfb, 0xff, 0xdb, 0x0e, 0x01, 0x05, 0x00, 0x00, 0x4a, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xc0, + 0x00, 0x00, 0x09, 0x00, 0x00, 0x0d, 0xac, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa9, + 0x02, 0x62, 0xbd, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x9c, 0x09, 0x04, 0x00, 0x14, + 0xe8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x48, 0x00, 0x07, 0x02, 0x00, 0x9a, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd3, 0x10, 0x01, 0x06, 0x00, 0x6a, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, + 0xae, 0x70, 0xfd, 0x86, 0x00, 0x04, 0x00, 0x5d, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x5c, 0x00, 0xa4, + 0xa3, 0x00, 0x00, 0x22, 0xbd, 0xff, 0xfc, 0xfc, 0xfb, 0xff, 0xe1, 0x12, 0x00, 0x06, 0x00, 0x00, + 0x43, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xc5, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0b, 0xa6, 0xfb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0x01, 0x57, 0xb4, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x99, 0x07, 0x04, 0x00, 0x0d, 0xe0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x48, 0x00, 0x07, 0x03, 0x00, 0x8d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd4, 0x11, 0x02, + 0x08, 0x00, 0x5d, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xaf, 0x64, 0xf7, 0x88, 0x00, 0x04, 0x00, 0x51, + 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x67, 0x00, 0x96, 0xa7, 0x00, 0x00, 0x1c, 0xb4, 0xff, 0xfc, 0xfc, + 0xfb, 0xff, 0xe7, 0x17, 0x00, 0x07, 0x00, 0x00, 0x3c, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xca, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x09, 0x9f, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, + 0x00, 0x42, 0xa2, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x93, 0x02, 0x05, 0x00, 0x00, + 0xcf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x49, 0x00, 0x07, 0x05, 0x00, 0x74, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xd8, 0x11, 0x02, 0x09, 0x00, 0x46, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xb3, 0x50, 0xe5, 0x8c, 0x00, 0x04, 0x00, 0x3a, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x7d, 0x00, 0x7d, + 0xac, 0x00, 0x00, 0x11, 0xa4, 0xfd, 0xfc, 0xfc, 0xfc, 0xfe, 0xf0, 0x21, 0x00, 0x09, 0x00, 0x00, + 0x2e, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xff, 0xd5, 0x05, 0x00, 0x03, 0x00, 0x00, 0x06, 0x95, 0xf4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, 0x02, 0x39, 0x98, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x91, 0x00, 0x05, 0x00, 0x00, 0xc5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x4a, 0x00, 0x07, 0x05, 0x00, 0x68, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xda, 0x11, 0x02, + 0x09, 0x00, 0x3c, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xb5, 0x47, 0xda, 0x8f, 0x00, 0x04, 0x00, 0x31, + 0xfc, 0xfd, 0xfd, 0xfd, 0xff, 0x88, 0x00, 0x6f, 0xaf, 0x00, 0x00, 0x0e, 0x9b, 0xfb, 0xfc, 0xfc, + 0xfc, 0xfe, 0xf4, 0x26, 0x00, 0x09, 0x00, 0x00, 0x29, 0xfb, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xda, + 0x09, 0x00, 0x03, 0x00, 0x00, 0x04, 0x91, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, + 0x04, 0x30, 0x8e, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x8e, 0x00, 0x05, 0x00, 0x00, + 0xbb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4b, 0x00, 0x07, 0x05, 0x00, 0x5d, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xdb, 0x11, 0x02, 0x09, 0x00, 0x33, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xb7, 0x3f, 0xcf, 0x90, 0x00, 0x05, 0x00, 0x29, 0xf7, 0xfd, 0xfd, 0xfd, 0xff, 0x95, 0x00, 0x63, + 0xb2, 0x00, 0x00, 0x0a, 0x91, 0xf9, 0xfc, 0xfc, 0xfc, 0xfe, 0xf7, 0x2d, 0x00, 0x0a, 0x00, 0x00, + 0x23, 0xf7, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xe0, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x03, 0x8f, 0xf0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x06, 0x28, 0x85, 0xfc, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x8c, 0x00, 0x04, 0x00, 0x00, 0xb1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, + 0x4c, 0x00, 0x07, 0x07, 0x00, 0x52, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xdc, 0x12, 0x02, + 0x09, 0x00, 0x2a, 0xfa, 0xfd, 0xfd, 0xfd, 0xff, 0xba, 0x36, 0xc2, 0x92, 0x00, 0x04, 0x00, 0x21, + 0xf3, 0xfd, 0xfd, 0xfd, 0xff, 0xa0, 0x00, 0x55, 0xb1, 0x00, 0x00, 0x07, 0x88, 0xf7, 0xfc, 0xfc, + 0xfc, 0xfd, 0xfb, 0x34, 0x00, 0x0b, 0x00, 0x00, 0x1e, 0xf3, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xe5, + 0x11, 0x00, 0x02, 0x00, 0x00, 0x01, 0x8c, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb4, + 0x0b, 0x1c, 0x74, 0xf8, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x87, 0x00, 0x03, 0x00, 0x00, + 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0x4e, 0x00, 0x07, 0x08, 0x00, 0x3f, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xdd, 0x13, 0x02, 0x09, 0x00, 0x1b, 0xf1, 0xfd, 0xfd, 0xfd, 0xff, + 0xc2, 0x2b, 0xa3, 0x95, 0x00, 0x04, 0x00, 0x13, 0xe8, 0xfd, 0xfd, 0xfd, 0xff, 0xb7, 0x00, 0x3b, + 0xab, 0x01, 0x00, 0x04, 0x75, 0xf1, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x43, 0x00, 0x08, 0x00, 0x00, + 0x17, 0xea, 0xff, 0xfc, 0xfc, 0xfc, 0xfe, 0xef, 0x1b, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8a, 0xe8, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x0e, 0x17, 0x6e, 0xf5, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x86, 0x00, 0x03, 0x00, 0x00, 0x94, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x4f, 0x00, 0x07, 0x09, 0x00, 0x37, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xdd, 0x14, 0x01, + 0x09, 0x00, 0x15, 0xec, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, 0x26, 0x94, 0x95, 0x00, 0x04, 0x00, 0x0e, + 0xe2, 0xfd, 0xfd, 0xfd, 0xff, 0xc1, 0x00, 0x2f, 0xa4, 0x04, 0x00, 0x03, 0x6f, 0xee, 0xfc, 0xfc, + 0xfc, 0xfc, 0xff, 0x4b, 0x00, 0x05, 0x00, 0x00, 0x14, 0xe5, 0xff, 0xfc, 0xfc, 0xfc, 0xfe, 0xf4, + 0x21, 0x00, 0x05, 0x00, 0x00, 0x00, 0x88, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, + 0x10, 0x13, 0x69, 0xf2, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x84, 0x00, 0x03, 0x01, 0x00, + 0x8b, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x50, 0x00, 0x07, 0x09, 0x00, 0x30, 0xfa, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xdc, 0x14, 0x01, 0x09, 0x00, 0x10, 0xe8, 0xfd, 0xfd, 0xfd, 0xff, + 0xcb, 0x23, 0x86, 0x96, 0x00, 0x04, 0x00, 0x09, 0xdd, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, 0x08, 0x25, + 0x9e, 0x04, 0x00, 0x02, 0x67, 0xea, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x53, 0x00, 0x03, 0x00, 0x00, + 0x11, 0xe1, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xf8, 0x28, 0x00, 0x05, 0x00, 0x00, 0x00, 0x88, 0xe4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x13, 0x0f, 0x65, 0xef, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x82, 0x00, 0x02, 0x02, 0x00, 0x84, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x52, 0x00, 0x07, 0x0a, 0x00, 0x2a, 0xf8, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfd, 0xd9, 0x14, 0x01, + 0x0a, 0x00, 0x0c, 0xe5, 0xfd, 0xfd, 0xfd, 0xff, 0xcf, 0x20, 0x76, 0x94, 0x00, 0x04, 0x00, 0x05, + 0xd7, 0xfd, 0xfd, 0xfd, 0xff, 0xd3, 0x0f, 0x1b, 0x97, 0x05, 0x00, 0x01, 0x5f, 0xe8, 0xfc, 0xfc, + 0xfc, 0xfc, 0xff, 0x5b, 0x00, 0x01, 0x01, 0x00, 0x0f, 0xdc, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfb, + 0x2f, 0x00, 0x07, 0x00, 0x00, 0x00, 0x87, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, + 0x17, 0x0b, 0x5e, 0xeb, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7f, 0x00, 0x02, 0x03, 0x00, + 0x7b, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x52, 0x00, 0x07, 0x0a, 0x00, 0x23, 0xf5, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xf9, 0xd5, 0x14, 0x01, 0x0a, 0x00, 0x08, 0xde, 0xfd, 0xfd, 0xfd, 0xff, + 0xd8, 0x1f, 0x5e, 0x90, 0x00, 0x04, 0x00, 0x00, 0xcf, 0xfd, 0xfd, 0xfd, 0xff, 0xe2, 0x1f, 0x0f, + 0x87, 0x06, 0x00, 0x00, 0x56, 0xe2, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x6a, 0x00, 0x00, 0x01, 0x00, + 0x0d, 0xd7, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0x3c, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x87, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, 0x19, 0x0a, 0x5c, 0xe9, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x7e, 0x00, 0x03, 0x03, 0x00, 0x77, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x53, 0x00, 0x07, 0x0a, 0x00, 0x21, 0xf4, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf7, 0xd1, 0x13, 0x00, + 0x0a, 0x00, 0x07, 0xdb, 0xfd, 0xfd, 0xfd, 0xff, 0xdb, 0x1f, 0x55, 0x8c, 0x00, 0x05, 0x00, 0x00, + 0xcf, 0xfd, 0xfd, 0xfd, 0xff, 0xe6, 0x27, 0x0b, 0x7f, 0x07, 0x00, 0x00, 0x51, 0xe0, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x70, 0x00, 0x00, 0x01, 0x00, 0x0d, 0xd4, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0x42, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x88, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, + 0x1a, 0x09, 0x5c, 0xe9, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7d, 0x00, 0x02, 0x03, 0x00, + 0x76, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x54, 0x00, 0x07, 0x0a, 0x00, 0x21, 0xf4, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf5, 0xcd, 0x11, 0x00, 0x09, 0x00, 0x07, 0xdb, 0xfd, 0xfd, 0xfd, 0xff, + 0xde, 0x1e, 0x4c, 0x88, 0x00, 0x05, 0x00, 0x00, 0xce, 0xfd, 0xfd, 0xfd, 0xfe, 0xeb, 0x2d, 0x08, + 0x78, 0x07, 0x00, 0x00, 0x4f, 0xdf, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x76, 0x00, 0x00, 0x01, 0x00, + 0x0d, 0xd4, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x48, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x88, 0xdf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0x1b, 0x08, 0x5d, 0xe9, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x7c, 0x00, 0x02, 0x03, 0x00, 0x76, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x53, 0x00, 0x07, 0x09, 0x00, 0x21, 0xf4, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf4, 0xc9, 0x11, 0x00, + 0x0a, 0x00, 0x07, 0xdb, 0xfd, 0xfd, 0xfd, 0xff, 0xe1, 0x1f, 0x45, 0x85, 0x00, 0x05, 0x00, 0x00, + 0xce, 0xfd, 0xfd, 0xfd, 0xfe, 0xee, 0x32, 0x06, 0x73, 0x08, 0x00, 0x00, 0x4e, 0xde, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x7b, 0x00, 0x00, 0x01, 0x00, 0x0d, 0xd3, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0x49, 0x00, 0x10, 0x00, 0x00, 0x00, 0x89, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, + 0x1d, 0x08, 0x60, 0xea, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7b, 0x00, 0x02, 0x03, 0x00, + 0x78, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x52, 0x00, 0x07, 0x0a, 0x00, 0x22, 0xf5, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0xc4, 0x0f, 0x01, 0x0a, 0x00, 0x07, 0xdc, 0xfd, 0xfd, 0xfd, 0xff, + 0xe4, 0x1f, 0x3e, 0x7f, 0x00, 0x05, 0x00, 0x00, 0xce, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0x3b, 0x04, + 0x6b, 0x08, 0x00, 0x00, 0x4a, 0xdd, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, + 0x0e, 0xd2, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x48, 0x00, 0x13, 0x00, 0x00, 0x00, 0x8b, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0x1e, 0x08, 0x61, 0xeb, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x7b, 0x00, 0x02, 0x03, 0x00, 0x79, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x52, 0x00, 0x07, 0x09, 0x00, 0x23, 0xf5, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0xc2, 0x0e, 0x01, + 0x0a, 0x00, 0x08, 0xdd, 0xfd, 0xfd, 0xfd, 0xff, 0xe4, 0x1f, 0x3d, 0x7d, 0x00, 0x05, 0x00, 0x00, + 0xce, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0x3c, 0x04, 0x6b, 0x07, 0x00, 0x00, 0x49, 0xdd, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x0e, 0xd2, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0x47, 0x01, 0x14, 0x00, 0x00, 0x00, 0x8b, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, + 0x1f, 0x08, 0x63, 0xeb, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7b, 0x00, 0x02, 0x03, 0x00, + 0x7a, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x51, 0x00, 0x07, 0x09, 0x00, 0x23, 0xf6, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0xc1, 0x0d, 0x01, 0x0a, 0x00, 0x09, 0xdd, 0xfd, 0xfd, 0xfd, 0xff, + 0xe3, 0x1e, 0x3e, 0x7c, 0x00, 0x05, 0x00, 0x00, 0xcf, 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0x3b, 0x04, + 0x69, 0x07, 0x00, 0x00, 0x49, 0xdd, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, + 0x0e, 0xd1, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x44, 0x03, 0x15, 0x00, 0x00, 0x00, 0x8b, 0xe1, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x20, 0x07, 0x64, 0xeb, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x7b, 0x00, 0x02, 0x03, 0x00, 0x7b, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x51, 0x00, 0x07, 0x09, 0x00, 0x25, 0xf6, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0xc1, 0x0c, 0x01, + 0x0a, 0x00, 0x09, 0xdd, 0xfd, 0xfd, 0xfd, 0xff, 0xe3, 0x1e, 0x3e, 0x7b, 0x00, 0x05, 0x00, 0x00, + 0xcf, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0x3b, 0x04, 0x69, 0x07, 0x00, 0x00, 0x48, 0xdc, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x0e, 0xd1, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0x42, 0x04, 0x16, 0x00, 0x00, 0x00, 0x8c, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, + 0x21, 0x08, 0x66, 0xec, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x79, 0x00, 0x02, 0x03, 0x00, + 0x7d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4f, 0x00, 0x07, 0x09, 0x00, 0x26, 0xf7, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0xbe, 0x0b, 0x01, 0x0a, 0x00, 0x0a, 0xdf, 0xfd, 0xfd, 0xfd, 0xff, + 0xe2, 0x1d, 0x3f, 0x79, 0x00, 0x05, 0x00, 0x00, 0xcf, 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0x3a, 0x04, + 0x69, 0x07, 0x00, 0x00, 0x46, 0xdc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x7d, 0x00, 0x00, 0x01, 0x00, + 0x0e, 0xd0, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x3e, 0x07, 0x19, 0x00, 0x00, 0x00, 0x8c, 0xe2, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb4, 0x21, 0x08, 0x68, 0xed, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x79, 0x00, 0x03, 0x03, 0x00, 0x7f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x4e, 0x00, 0x07, 0x0a, 0x00, 0x27, 0xf7, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0xbd, 0x0b, 0x01, + 0x0b, 0x00, 0x0b, 0xe0, 0xfd, 0xfd, 0xfd, 0xff, 0xe2, 0x1b, 0x3f, 0x78, 0x00, 0x05, 0x00, 0x00, + 0xd0, 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0x39, 0x05, 0x69, 0x07, 0x00, 0x00, 0x46, 0xdc, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x7b, 0x00, 0x00, 0x01, 0x00, 0x0e, 0xd0, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0x3b, 0x08, 0x1a, 0x00, 0x00, 0x00, 0x8b, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb4, + 0x21, 0x08, 0x69, 0xee, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x78, 0x00, 0x03, 0x03, 0x00, + 0x80, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4d, 0x00, 0x07, 0x0a, 0x00, 0x28, 0xf8, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf1, 0xbc, 0x09, 0x01, 0x0b, 0x00, 0x0b, 0xe1, 0xfd, 0xfd, 0xfd, 0xff, + 0xe1, 0x1b, 0x40, 0x77, 0x00, 0x06, 0x00, 0x00, 0xd0, 0xfd, 0xfd, 0xfd, 0xfe, 0xef, 0x38, 0x05, + 0x69, 0x07, 0x00, 0x00, 0x45, 0xdc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x79, 0x00, 0x00, 0x01, 0x00, + 0x0d, 0xcf, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x39, 0x0a, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0xe2, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb4, 0x20, 0x08, 0x6a, 0xef, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x77, 0x00, 0x03, 0x02, 0x00, 0x82, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x4c, 0x00, 0x07, 0x09, 0x00, 0x2a, 0xf8, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0xba, 0x08, 0x01, + 0x0b, 0x00, 0x0b, 0xe2, 0xfd, 0xfd, 0xfd, 0xff, 0xe0, 0x19, 0x40, 0x77, 0x00, 0x05, 0x00, 0x00, + 0xd2, 0xfd, 0xfd, 0xfd, 0xfe, 0xef, 0x38, 0x06, 0x69, 0x06, 0x00, 0x00, 0x45, 0xdd, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x77, 0x00, 0x00, 0x01, 0x00, 0x0d, 0xcf, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, + 0x37, 0x0c, 0x1d, 0x00, 0x00, 0x00, 0x8b, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, + 0x1e, 0x0a, 0x6d, 0xf1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x75, 0x00, 0x03, 0x02, 0x00, + 0x86, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x48, 0x00, 0x07, 0x0a, 0x00, 0x2d, 0xf9, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0xb7, 0x07, 0x01, 0x0b, 0x00, 0x0b, 0xe3, 0xfd, 0xfd, 0xfd, 0xff, + 0xde, 0x18, 0x42, 0x75, 0x00, 0x05, 0x00, 0x01, 0xd5, 0xfd, 0xfd, 0xfd, 0xfe, 0xee, 0x35, 0x07, + 0x69, 0x06, 0x00, 0x00, 0x46, 0xdd, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x72, 0x00, 0x00, 0x01, 0x00, + 0x0d, 0xd0, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0x33, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x8b, 0xe2, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x1d, 0x0b, 0x6f, 0xf1, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x74, 0x00, 0x03, 0x02, 0x00, 0x89, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, + 0x46, 0x00, 0x07, 0x09, 0x00, 0x2f, 0xf9, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0xb6, 0x06, 0x01, + 0x0b, 0x00, 0x0d, 0xe5, 0xfd, 0xfd, 0xfd, 0xff, 0xdd, 0x17, 0x43, 0x74, 0x00, 0x05, 0x00, 0x02, + 0xd6, 0xfd, 0xfd, 0xfd, 0xfe, 0xed, 0x33, 0x08, 0x6a, 0x06, 0x00, 0x00, 0x47, 0xdd, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x70, 0x00, 0x00, 0x01, 0x00, 0x0d, 0xd0, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, + 0x31, 0x10, 0x1e, 0x00, 0x00, 0x00, 0x8a, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, + 0x1b, 0x0c, 0x70, 0xf2, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x71, 0x00, 0x03, 0x01, 0x00, + 0x8c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0x43, 0x00, 0x07, 0x09, 0x00, 0x31, 0xfa, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0xb5, 0x06, 0x01, 0x0b, 0x00, 0x0e, 0xe6, 0xfd, 0xfd, 0xfd, 0xff, + 0xdc, 0x17, 0x47, 0x73, 0x00, 0x06, 0x00, 0x03, 0xd7, 0xfd, 0xfd, 0xfd, 0xfe, 0xeb, 0x31, 0x09, + 0x6a, 0x06, 0x00, 0x00, 0x48, 0xdf, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x6d, 0x00, 0x00, 0x01, 0x00, + 0x0d, 0xd0, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfc, 0x30, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x8a, 0xe2, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, 0x19, 0x0d, 0x71, 0xf3, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x70, 0x00, 0x03, 0x01, 0x00, 0x8f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, + 0x3f, 0x00, 0x07, 0x09, 0x00, 0x33, 0xfb, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf1, 0xb4, 0x04, 0x01, + 0x0b, 0x00, 0x10, 0xe8, 0xfd, 0xfd, 0xfd, 0xff, 0xda, 0x16, 0x49, 0x72, 0x00, 0x06, 0x00, 0x04, + 0xd8, 0xfd, 0xfd, 0xfd, 0xfe, 0xe9, 0x2e, 0x0a, 0x6c, 0x05, 0x00, 0x00, 0x4a, 0xe0, 0xfc, 0xfc, + 0xfc, 0xfb, 0xff, 0x6a, 0x00, 0x00, 0x01, 0x00, 0x0d, 0xd1, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfc, + 0x2f, 0x12, 0x1f, 0x00, 0x00, 0x00, 0x8a, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xad, + 0x15, 0x0f, 0x72, 0xf5, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x6c, 0x00, 0x04, 0x01, 0x00, + 0x94, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfc, 0x3a, 0x00, 0x07, 0x09, 0x00, 0x36, 0xfc, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xf3, 0xb4, 0x03, 0x02, 0x0b, 0x00, 0x11, 0xea, 0xfd, 0xfd, 0xfd, 0xff, + 0xd5, 0x16, 0x53, 0x70, 0x00, 0x06, 0x00, 0x05, 0xdb, 0xfd, 0xfd, 0xfd, 0xff, 0xe4, 0x25, 0x0e, + 0x70, 0x04, 0x01, 0x00, 0x4d, 0xe2, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x64, 0x00, 0x00, 0x01, 0x00, + 0x0c, 0xd1, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfb, 0x2b, 0x15, 0x20, 0x00, 0x00, 0x00, 0x8a, 0xdf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0x12, 0x11, 0x73, 0xf6, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0x6a, 0x00, 0x04, 0x01, 0x00, 0x96, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfb, + 0x35, 0x00, 0x07, 0x09, 0x00, 0x38, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf5, 0xb5, 0x03, 0x02, + 0x0b, 0x00, 0x12, 0xeb, 0xfd, 0xfd, 0xfd, 0xff, 0xd3, 0x16, 0x59, 0x70, 0x00, 0x06, 0x00, 0x07, + 0xdc, 0xfd, 0xfd, 0xfd, 0xff, 0xe1, 0x20, 0x10, 0x72, 0x02, 0x00, 0x00, 0x4f, 0xe3, 0xfc, 0xfc, + 0xfc, 0xfc, 0xff, 0x60, 0x00, 0x00, 0x01, 0x00, 0x0c, 0xd2, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfa, + 0x2a, 0x15, 0x20, 0x00, 0x00, 0x00, 0x8a, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xa8, + 0x10, 0x12, 0x73, 0xf7, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x67, 0x00, 0x04, 0x00, 0x00, + 0x99, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf9, 0x31, 0x00, 0x08, 0x09, 0x00, 0x3a, 0xfc, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xf7, 0xb3, 0x02, 0x02, 0x0b, 0x00, 0x14, 0xec, 0xfd, 0xfd, 0xfd, 0xff, + 0xd1, 0x17, 0x60, 0x70, 0x00, 0x06, 0x00, 0x08, 0xde, 0xfd, 0xfd, 0xfd, 0xff, 0xdc, 0x19, 0x13, + 0x76, 0x02, 0x00, 0x00, 0x52, 0xe4, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x5c, 0x00, 0x00, 0x01, 0x00, + 0x0b, 0xd2, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xfa, 0x29, 0x16, 0x1f, 0x00, 0x00, 0x00, 0x8a, 0xdb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xa5, 0x0d, 0x14, 0x74, 0xf8, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0x64, 0x00, 0x05, 0x00, 0x00, 0x9d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf8, + 0x2b, 0x00, 0x08, 0x09, 0x00, 0x3c, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf9, 0xb2, 0x01, 0x02, + 0x0b, 0x00, 0x15, 0xed, 0xfd, 0xfd, 0xfd, 0xff, 0xce, 0x1a, 0x68, 0x6f, 0x00, 0x06, 0x00, 0x09, + 0xde, 0xfd, 0xfd, 0xfd, 0xff, 0xd7, 0x14, 0x17, 0x7a, 0x02, 0x00, 0x00, 0x55, 0xe5, 0xfc, 0xfc, + 0xfc, 0xfc, 0xff, 0x57, 0x00, 0x00, 0x01, 0x00, 0x0b, 0xd3, 0xff, 0xfc, 0xfc, 0xfc, 0xfd, 0xf9, + 0x27, 0x16, 0x1f, 0x00, 0x00, 0x00, 0x8a, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x9b, + 0x06, 0x19, 0x79, 0xfc, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0x5e, 0x00, 0x06, 0x00, 0x00, + 0xa7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf2, 0x21, 0x00, 0x08, 0x08, 0x00, 0x41, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xfe, 0xae, 0x00, 0x02, 0x0b, 0x00, 0x18, 0xf0, 0xfd, 0xfd, 0xfd, 0xff, + 0xc9, 0x20, 0x7a, 0x6a, 0x00, 0x05, 0x00, 0x0b, 0xe2, 0xfd, 0xfd, 0xfd, 0xff, 0xc9, 0x06, 0x22, + 0x7f, 0x00, 0x00, 0x00, 0x5b, 0xe8, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x4d, 0x00, 0x00, 0x01, 0x00, + 0x08, 0xd2, 0xff, 0xfc, 0xfc, 0xfc, 0xfe, 0xf7, 0x24, 0x14, 0x1c, 0x00, 0x00, 0x00, 0x87, 0xd7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x95, 0x03, 0x1c, 0x7c, 0xfd, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfc, 0x59, 0x00, 0x06, 0x00, 0x00, 0xad, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xef, + 0x1a, 0x00, 0x08, 0x07, 0x00, 0x46, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xa9, 0x00, 0x02, + 0x0a, 0x00, 0x1c, 0xf2, 0xfd, 0xfd, 0xfd, 0xff, 0xc5, 0x24, 0x84, 0x66, 0x00, 0x05, 0x00, 0x0d, + 0xe4, 0xfd, 0xfd, 0xfd, 0xff, 0xc1, 0x00, 0x28, 0x82, 0x00, 0x00, 0x00, 0x5e, 0xea, 0xfc, 0xfc, + 0xfc, 0xfc, 0xff, 0x47, 0x00, 0x00, 0x01, 0x00, 0x06, 0xd2, 0xff, 0xfc, 0xfc, 0xfc, 0xfe, 0xf5, + 0x20, 0x14, 0x1c, 0x00, 0x00, 0x00, 0x85, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x8d, + 0x00, 0x20, 0x80, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xfb, 0x54, 0x00, 0x07, 0x00, 0x00, + 0xb5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xeb, 0x14, 0x00, 0x08, 0x07, 0x00, 0x4d, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xa3, 0x00, 0x02, 0x0a, 0x00, 0x20, 0xf4, 0xfd, 0xfd, 0xfd, 0xff, + 0xc2, 0x26, 0x8c, 0x61, 0x00, 0x05, 0x00, 0x10, 0xe7, 0xfd, 0xfd, 0xfd, 0xff, 0xba, 0x00, 0x30, + 0x83, 0x00, 0x00, 0x00, 0x62, 0xeb, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x06, 0xd2, 0xff, 0xfc, 0xfc, 0xfc, 0xfe, 0xf2, 0x1c, 0x15, 0x1b, 0x00, 0x00, 0x00, 0x85, 0xd5, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x82, 0x00, 0x25, 0x88, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xf8, 0x4e, 0x00, 0x07, 0x00, 0x00, 0xbc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe4, + 0x0b, 0x00, 0x08, 0x07, 0x00, 0x54, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0x9a, 0x00, 0x02, + 0x0a, 0x00, 0x25, 0xf7, 0xfd, 0xfd, 0xfd, 0xff, 0xbd, 0x28, 0x93, 0x5c, 0x00, 0x05, 0x00, 0x13, + 0xeb, 0xfd, 0xfd, 0xfd, 0xff, 0xb1, 0x00, 0x37, 0x83, 0x00, 0x01, 0x00, 0x66, 0xed, 0xfc, 0xfc, + 0xfc, 0xfd, 0xfe, 0x3a, 0x00, 0x01, 0x00, 0x00, 0x08, 0xd6, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xee, + 0x18, 0x16, 0x1a, 0x00, 0x00, 0x00, 0x85, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x64, + 0x00, 0x2f, 0x99, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xf2, 0x3d, 0x00, 0x07, 0x00, 0x03, + 0xd0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd1, 0x00, 0x00, 0x09, 0x06, 0x00, 0x6b, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0x87, 0x00, 0x02, 0x09, 0x00, 0x33, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, + 0xb5, 0x2d, 0xa0, 0x4c, 0x00, 0x04, 0x00, 0x1d, 0xf3, 0xfd, 0xfd, 0xfd, 0xff, 0x9e, 0x00, 0x47, + 0x80, 0x00, 0x00, 0x02, 0x73, 0xf2, 0xfc, 0xfc, 0xfc, 0xfe, 0xf9, 0x2d, 0x00, 0x03, 0x00, 0x00, + 0x0f, 0xe2, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xe5, 0x0e, 0x16, 0x15, 0x00, 0x00, 0x00, 0x8d, 0xd8, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x52, 0x00, 0x34, 0xa1, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xed, 0x37, 0x00, 0x08, 0x00, 0x0b, 0xdb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, + 0x00, 0x00, 0x09, 0x04, 0x00, 0x79, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0x79, 0x00, 0x02, + 0x0a, 0x00, 0x3e, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xb0, 0x30, 0xa7, 0x44, 0x00, 0x06, 0x00, 0x25, + 0xf7, 0xfd, 0xfd, 0xfd, 0xff, 0x93, 0x00, 0x51, 0x7c, 0x00, 0x00, 0x03, 0x7a, 0xf4, 0xfc, 0xfc, + 0xfc, 0xfe, 0xf5, 0x26, 0x00, 0x05, 0x00, 0x00, 0x16, 0xe9, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xe1, + 0x0b, 0x14, 0x11, 0x00, 0x00, 0x00, 0x92, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x3f, + 0x02, 0x39, 0xab, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xe9, 0x30, 0x00, 0x07, 0x00, 0x14, + 0xe4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xba, 0x00, 0x00, 0x09, 0x04, 0x00, 0x88, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xfe, 0x6e, 0x00, 0x03, 0x0a, 0x00, 0x4b, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xad, 0x34, 0xab, 0x3c, 0x00, 0x06, 0x00, 0x2e, 0xfb, 0xfd, 0xfd, 0xfd, 0xff, 0x88, 0x00, 0x5b, + 0x77, 0x00, 0x00, 0x06, 0x81, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xf1, 0x20, 0x00, 0x07, 0x00, 0x00, + 0x1b, 0xef, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xdb, 0x07, 0x11, 0x0e, 0x00, 0x00, 0x03, 0x98, 0xdb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x2e, 0x08, 0x3d, 0xb4, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xe4, 0x2a, 0x00, 0x06, 0x00, 0x1d, 0xec, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xae, + 0x00, 0x00, 0x09, 0x03, 0x00, 0x98, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfb, 0x64, 0x00, 0x03, + 0x08, 0x00, 0x5a, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xa8, 0x39, 0xb0, 0x35, 0x01, 0x05, 0x00, 0x3b, + 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x7c, 0x00, 0x66, 0x71, 0x00, 0x00, 0x09, 0x8b, 0xfb, 0xfc, 0xfc, + 0xfc, 0xff, 0xec, 0x1a, 0x00, 0x09, 0x00, 0x00, 0x21, 0xf4, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xd6, + 0x04, 0x0d, 0x09, 0x00, 0x00, 0x06, 0x9e, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x0f, + 0x14, 0x43, 0xc4, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xd9, 0x21, 0x00, 0x04, 0x00, 0x33, + 0xf7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x97, 0x00, 0x00, 0x0a, 0x00, 0x00, 0xb6, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xf5, 0x55, 0x00, 0x03, 0x03, 0x00, 0x7b, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xa3, 0x48, 0xb6, 0x2a, 0x07, 0x03, 0x00, 0x58, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x62, 0x00, 0x7d, + 0x62, 0x00, 0x00, 0x13, 0x9f, 0xff, 0xfc, 0xfc, 0xfb, 0xff, 0xdf, 0x10, 0x00, 0x0d, 0x00, 0x00, + 0x2c, 0xfd, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xcc, 0x00, 0x02, 0x01, 0x00, 0x00, 0x0f, 0xab, 0xe5, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x06, 0x1c, 0x44, 0xc9, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xd6, 0x21, 0x00, 0x04, 0x00, 0x3e, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8f, + 0x00, 0x00, 0x0b, 0x00, 0x00, 0xc3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf5, 0x52, 0x00, 0x03, + 0x00, 0x00, 0x8d, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xa1, 0x53, 0xbb, 0x29, 0x0b, 0x00, 0x00, 0x6b, + 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x51, 0x00, 0x8a, 0x5d, 0x02, 0x00, 0x19, 0xa9, 0xff, 0xfc, 0xfc, + 0xfb, 0xff, 0xd7, 0x0b, 0x02, 0x10, 0x00, 0x00, 0x32, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xb1, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0x01, + 0x20, 0x42, 0xcb, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xd6, 0x21, 0x01, 0x03, 0x00, 0x45, + 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8d, 0x00, 0x00, 0x0a, 0x00, 0x03, 0xcd, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xf4, 0x52, 0x00, 0x02, 0x00, 0x00, 0x9e, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xa2, 0x64, 0xc5, 0x2b, 0x11, 0x00, 0x00, 0x7e, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0x3b, 0x00, 0x99, + 0x58, 0x05, 0x00, 0x1f, 0xb4, 0xff, 0xfc, 0xfc, 0xfb, 0xff, 0xcb, 0x06, 0x05, 0x10, 0x00, 0x00, + 0x36, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xb8, 0xed, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, 0x00, 0x25, 0x3f, 0xca, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xd8, 0x23, 0x00, 0x02, 0x00, 0x47, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8f, + 0x00, 0x00, 0x0a, 0x00, 0x05, 0xd5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf0, 0x53, 0x00, 0x00, + 0x00, 0x00, 0xac, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0xa7, 0x7f, 0xcd, 0x2e, 0x16, 0x00, 0x00, 0x91, + 0xff, 0xfd, 0xfd, 0xff, 0xf9, 0x24, 0x00, 0xa6, 0x57, 0x0a, 0x00, 0x22, 0xbe, 0xff, 0xfc, 0xfc, + 0xfc, 0xff, 0xb9, 0x02, 0x08, 0x0d, 0x00, 0x00, 0x39, 0xff, 0xff, 0xfc, 0xfc, 0xfb, 0xff, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xc0, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8e, 0x00, + 0x28, 0x37, 0xc7, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xdc, 0x29, 0x00, 0x02, 0x00, 0x43, + 0xfb, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x95, 0x00, 0x00, 0x0a, 0x00, 0x05, 0xd6, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xed, 0x59, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, + 0xba, 0xbd, 0xd6, 0x31, 0x20, 0x00, 0x00, 0xad, 0xff, 0xfd, 0xfd, 0xff, 0xe4, 0x02, 0x0e, 0xc7, + 0x65, 0x13, 0x00, 0x28, 0xcf, 0xff, 0xfc, 0xfc, 0xfc, 0xfb, 0x81, 0x00, 0x14, 0x0e, 0x00, 0x00, + 0x42, 0xfd, 0xfe, 0xfc, 0xfc, 0xfb, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xd6, 0xfa, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x00, 0x29, 0x32, 0xc7, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xdd, 0x28, 0x00, 0x01, 0x00, 0x43, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x94, + 0x00, 0x00, 0x0a, 0x00, 0x03, 0xd4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe9, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0xbf, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xcc, 0xdb, 0xd5, 0x2f, 0x24, 0x00, 0x00, 0xb3, + 0xff, 0xfd, 0xfd, 0xff, 0xd7, 0x00, 0x29, 0xd8, 0x68, 0x17, 0x00, 0x2f, 0xd7, 0xff, 0xfc, 0xfc, + 0xfd, 0xf2, 0x5e, 0x00, 0x22, 0x12, 0x00, 0x00, 0x49, 0xfc, 0xfd, 0xfc, 0xfc, 0xfb, 0xff, 0xc5, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xdf, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x00, + 0x2a, 0x2f, 0xca, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xdb, 0x27, 0x00, 0x01, 0x00, 0x44, + 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x91, 0x00, 0x00, 0x0b, 0x00, 0x02, 0xd3, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xe5, 0x5b, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, + 0xdf, 0xf1, 0xd5, 0x2d, 0x26, 0x00, 0x00, 0xb8, 0xff, 0xfd, 0xfd, 0xff, 0xd0, 0x00, 0x4a, 0xe4, + 0x65, 0x19, 0x00, 0x35, 0xdd, 0xff, 0xfc, 0xfc, 0xfe, 0xe7, 0x43, 0x00, 0x3d, 0x17, 0x00, 0x00, + 0x50, 0xfb, 0xfd, 0xfc, 0xfc, 0xfb, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xe9, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x45, 0x04, 0x27, 0x2a, 0xce, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xd7, 0x20, 0x00, 0x01, 0x00, 0x46, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8a, + 0x00, 0x00, 0x0b, 0x00, 0x02, 0xd2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe0, 0x56, 0x00, 0x00, + 0x00, 0x00, 0xbd, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xf0, 0xfd, 0xd2, 0x29, 0x29, 0x00, 0x01, 0xba, + 0xff, 0xfd, 0xfd, 0xff, 0xcb, 0x0d, 0x6c, 0xea, 0x5b, 0x1c, 0x00, 0x3c, 0xe2, 0xff, 0xfc, 0xfc, + 0xff, 0xd7, 0x23, 0x00, 0x5d, 0x1d, 0x00, 0x00, 0x55, 0xf9, 0xfd, 0xfc, 0xfc, 0xfb, 0xff, 0xc4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf3, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x11, 0x11, + 0x14, 0x25, 0xdd, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xc4, 0x0e, 0x00, 0x04, 0x00, 0x4d, + 0xfc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6c, 0x00, 0x01, 0x0b, 0x00, 0x02, 0xd4, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xd1, 0x4a, 0x00, 0x00, 0x00, 0x00, 0xb9, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xff, 0xcc, 0x1e, 0x29, 0x00, 0x0b, 0xba, 0xff, 0xfd, 0xfd, 0xff, 0xca, 0x39, 0xb1, 0xee, + 0x42, 0x19, 0x00, 0x4c, 0xea, 0xfe, 0xfc, 0xfc, 0xff, 0xa8, 0x00, 0x1d, 0xa2, 0x25, 0x00, 0x00, + 0x58, 0xf5, 0xfd, 0xfc, 0xfc, 0xfc, 0xfe, 0xab, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4e, 0xff, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xa1, 0x02, 0x16, 0x0a, 0x2e, 0xe7, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xb1, 0x04, 0x00, 0x05, 0x00, 0x56, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x55, + 0x00, 0x05, 0x0b, 0x00, 0x05, 0xd8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xc5, 0x42, 0x00, 0x00, + 0x00, 0x00, 0xb9, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xc6, 0x17, 0x29, 0x00, 0x14, 0xba, + 0xff, 0xfd, 0xfd, 0xfe, 0xc7, 0x6e, 0xe9, 0xe8, 0x3c, 0x14, 0x00, 0x53, 0xec, 0xfe, 0xfc, 0xfc, + 0xff, 0x65, 0x00, 0x5a, 0xd2, 0x26, 0x00, 0x00, 0x55, 0xf4, 0xfd, 0xfc, 0xfc, 0xfd, 0xe4, 0x73, + 0x00, 0x08, 0x03, 0x00, 0x00, 0x47, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x67, 0x00, 0x18, + 0x03, 0x3d, 0xf2, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x95, 0x00, 0x00, 0x06, 0x00, 0x62, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x3d, 0x00, 0x08, 0x0b, 0x00, 0x0a, 0xe0, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xb6, 0x3a, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xff, 0xbd, 0x10, 0x24, 0x01, 0x1f, 0xbb, 0xff, 0xfd, 0xfd, 0xfe, 0xd5, 0xbe, 0xff, 0xde, + 0x37, 0x10, 0x00, 0x59, 0xef, 0xfe, 0xfc, 0xfd, 0xf7, 0x22, 0x00, 0xbc, 0xf2, 0x27, 0x00, 0x00, + 0x41, 0xf3, 0xfd, 0xfc, 0xfc, 0xfd, 0x93, 0x2b, 0x01, 0x29, 0x05, 0x00, 0x00, 0x2d, 0xf9, 0xfd, + 0xff, 0xff, 0xff, 0xff, 0xeb, 0x31, 0x06, 0x16, 0x00, 0x51, 0xfa, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x70, 0x00, 0x05, 0x05, 0x00, 0x73, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xfc, 0x25, + 0x00, 0x0a, 0x0b, 0x00, 0x13, 0xe9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xa5, 0x30, 0x00, 0x02, + 0x01, 0x00, 0xc3, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xfe, 0xff, 0xae, 0x0c, 0x21, 0x01, 0x27, 0xc3, + 0xff, 0xfd, 0xfd, 0xff, 0xf5, 0xf7, 0xff, 0xd6, 0x3a, 0x0d, 0x00, 0x56, 0xef, 0xfe, 0xfc, 0xff, + 0xd7, 0x1c, 0x5a, 0xff, 0xfd, 0x28, 0x00, 0x00, 0x1c, 0xea, 0xfe, 0xfc, 0xff, 0xdc, 0x16, 0x00, + 0x37, 0x55, 0x08, 0x00, 0x00, 0x0e, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x1c, 0x10, + 0x00, 0x84, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xf3, 0x29, 0x00, 0x07, 0x03, 0x00, 0xa4, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xdf, 0x03, 0x00, 0x0a, 0x09, 0x00, 0x30, 0xf9, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfe, 0xf4, 0x74, 0x1a, 0x00, 0x05, 0x00, 0x05, 0xd7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0x81, 0x16, 0x1b, 0x00, 0x20, 0xd0, 0xff, 0xfd, 0xfd, 0xff, 0xff, 0xfe, 0xff, 0xbb, + 0x4e, 0x0a, 0x00, 0x35, 0xf1, 0xfe, 0xfc, 0xfd, 0xeb, 0xbc, 0xf8, 0xff, 0xfe, 0x2d, 0x00, 0x00, + 0x01, 0xbe, 0xff, 0xfc, 0xff, 0x64, 0x00, 0x88, 0xc3, 0xad, 0x13, 0x00, 0x00, 0x02, 0x7b, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x2d, 0x0e, 0x05, 0x9f, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xdb, 0x13, 0x00, 0x09, 0x00, 0x02, 0xbd, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xd1, 0x00, + 0x00, 0x0a, 0x08, 0x00, 0x48, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xed, 0x5a, 0x11, 0x00, 0x07, + 0x00, 0x0f, 0xe4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0x69, 0x1b, 0x1a, 0x00, 0x1e, 0xda, + 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0xff, 0xa5, 0x5c, 0x0b, 0x00, 0x1f, 0xe8, 0xff, 0xfb, 0xfc, + 0xff, 0xfa, 0xfe, 0xff, 0xf9, 0x36, 0x00, 0x00, 0x06, 0x9f, 0xff, 0xfc, 0xff, 0x89, 0x26, 0xd1, + 0xfa, 0xd5, 0x1f, 0x00, 0x00, 0x11, 0x5e, 0xf7, 0xff, 0xff, 0xff, 0xf7, 0x36, 0x19, 0x3f, 0x0c, + 0x0d, 0xb6, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xb9, 0x05, 0x00, 0x07, 0x00, 0x0d, 0xd3, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, 0x00, 0x00, 0x0b, 0x06, 0x00, 0x62, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe5, 0x41, 0x09, 0x00, 0x05, 0x00, 0x1c, 0xf0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xff, 0x55, 0x1f, 0x1c, 0x00, 0x18, 0xe0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8c, + 0x71, 0x10, 0x00, 0x13, 0xde, 0xff, 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xee, 0x47, 0x00, 0x00, + 0x03, 0x85, 0xff, 0xfc, 0xfe, 0xdb, 0x81, 0xde, 0xfe, 0xfb, 0x34, 0x00, 0x00, 0x0c, 0x51, 0xde, + 0xff, 0xff, 0xff, 0xf2, 0x45, 0x38, 0x55, 0x10, 0x18, 0xc6, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0x97, 0x00, 0x00, 0x06, 0x00, 0x1b, 0xe0, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xcf, 0x00, + 0x00, 0x0b, 0x04, 0x00, 0x75, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe1, 0x2b, 0x02, 0x00, 0x05, + 0x00, 0x26, 0xf5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf7, 0x45, 0x1f, 0x1e, 0x00, 0x13, 0xe1, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x74, 0x8b, 0x1c, 0x00, 0x0d, 0xd7, 0xff, 0xfc, 0xfb, + 0xfb, 0xff, 0xfe, 0xff, 0xde, 0x5b, 0x00, 0x00, 0x00, 0x71, 0xfe, 0xfc, 0xfc, 0xfd, 0xe1, 0xe9, + 0xfd, 0xff, 0x53, 0x00, 0x00, 0x02, 0x43, 0xc6, 0xff, 0xff, 0xff, 0xfe, 0x95, 0x78, 0x94, 0x48, + 0x3b, 0xd0, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x29, 0xe8, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xe9, 0x10, 0x00, 0x0b, 0x05, 0x00, 0x7c, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xe7, 0x19, 0x00, 0x03, 0x06, 0x00, 0x25, 0xf3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xd7, 0x39, 0x0b, 0x10, 0x00, 0x08, 0xcf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf3, 0x5e, + 0xa3, 0x4a, 0x00, 0x09, 0xd0, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf9, 0xb4, 0xa7, 0x00, 0x00, + 0x00, 0x66, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0xaf, + 0xff, 0xff, 0xff, 0xff, 0xc9, 0x9a, 0xb5, 0x79, 0x51, 0xce, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x23, 0xe6, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xf8, 0x26, + 0x00, 0x0a, 0x06, 0x00, 0x71, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf5, 0x22, 0x00, 0x05, 0x09, + 0x00, 0x1f, 0xf2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xcb, 0x36, 0x00, 0x07, 0x00, 0x02, 0xc3, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf3, 0x5b, 0x91, 0x59, 0x00, 0x00, 0xb6, 0xff, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfd, 0xf1, 0x9d, 0xd4, 0x1a, 0x00, 0x00, 0x6c, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xfd, 0xfc, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xbf, 0xca, 0xb2, + 0x72, 0xc8, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x11, 0xda, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4c, 0x00, 0x06, 0x07, 0x00, 0x57, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x3d, 0x00, 0x06, 0x0a, 0x00, 0x13, 0xe8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xc9, 0x3a, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfa, 0x5f, + 0x70, 0x58, 0x00, 0x00, 0x96, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xec, 0x89, 0xef, 0x4e, 0x00, + 0x00, 0x41, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfb, 0xf3, 0xd3, 0x00, 0x00, 0x00, 0x00, 0xba, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0xd7, 0xde, 0xa5, 0xc2, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xf4, 0x3a, 0x02, 0x0d, 0x00, 0x00, 0xb5, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8b, + 0x00, 0x00, 0x00, 0x00, 0x34, 0xf8, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6f, 0x00, 0x00, 0x05, + 0x00, 0x01, 0xcd, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xd2, 0x47, 0x00, 0x00, 0x00, 0x00, 0x9f, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x71, 0x4b, 0x50, 0x00, 0x00, 0x79, 0xff, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfd, 0xf0, 0x76, 0xeb, 0x8c, 0x00, 0x00, 0x22, 0xec, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xf9, 0xe8, 0xf8, 0x23, 0x00, 0x00, 0x00, 0x84, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xec, + 0xfa, 0xe8, 0xfa, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x6b, 0x0f, 0x27, 0x0e, 0x44, + 0xf1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x56, 0x00, 0x00, 0x00, 0x00, 0x9b, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xec, 0x0d, 0x00, 0x0a, 0x02, 0x00, 0x4d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xf9, 0x89, 0x0f, 0x00, 0x04, 0x00, 0x3d, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd8, + 0x1d, 0x40, 0x09, 0x00, 0x3d, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x83, 0x9a, 0xec, 0x10, + 0x00, 0x00, 0xaa, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xd6, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x1c, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xf1, 0x3a, 0x21, 0x32, 0x2e, 0xc1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xbb, 0x05, 0x00, 0x00, 0x00, 0x43, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x52, 0x00, 0x07, + 0x0b, 0x00, 0x0b, 0xe2, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb6, 0x26, 0x00, 0x03, 0x00, 0x08, + 0xd9, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0x46, 0x31, 0x10, 0x00, 0x11, 0xe9, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xff, 0xbd, 0x5f, 0xfd, 0x42, 0x00, 0x00, 0x7e, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfe, 0xd7, 0xf7, 0xe2, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xcd, 0x19, 0x37, 0x44, + 0x8c, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xee, 0x43, 0x00, 0x00, 0x00, 0x02, 0xd4, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xae, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x94, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xe4, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x89, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0x9c, 0x1f, 0x13, 0x00, 0x00, 0xaf, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf4, 0x63, 0xea, 0x77, + 0x00, 0x00, 0x5f, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xe9, 0xde, 0xff, 0x38, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe6, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x88, 0x0a, 0x47, 0x69, 0xe4, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0x83, 0x01, 0x00, 0x00, 0x00, 0x74, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf1, 0x14, 0x00, + 0x09, 0x0a, 0x00, 0x32, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x9b, 0x00, 0x00, 0x0b, 0x00, + 0x32, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe8, 0x2f, 0x1e, 0x04, 0x00, 0x5b, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xa6, 0xaa, 0xa7, 0x00, 0x00, 0x38, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfb, 0xd8, 0xff, 0x6c, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x94, 0xb0, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xd1, 0x5c, 0x00, + 0x03, 0x37, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe8, 0x1a, 0x00, 0x04, 0x08, 0x02, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe5, 0x29, 0x00, 0x06, 0x0b, 0x0b, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x9d, 0x00, 0x00, 0x0a, 0x08, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xba, 0x22, 0x17, 0x04, 0x0b, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xc1, 0xb5, + 0x26, 0x00, 0x04, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xe9, 0x11, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0x30, 0x9b, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xde, 0x4b, 0x0b, 0x00, 0x03, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0x5f, 0x00, 0x00, 0x0b, 0x08, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa9, + 0x04, 0x03, 0x0b, 0x0b, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf6, 0x27, 0x00, 0x07, + 0x0a, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfa, 0x5d, 0x10, 0x02, 0x0a, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xd3, 0x37, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0x36, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd3, 0x69, 0x0b, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xf6, 0x59, 0x00, + 0x00, 0x07, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xce, 0x00, 0x00, 0x07, 0x0b, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf9, 0x4c, 0x00, 0x06, 0x0b, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8f, 0x0a, 0x02, 0x07, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xcd, 0x49, 0x00, 0x05, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0x52, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x4b, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9c, 0x3a, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x9a, 0x01, 0x00, 0x05, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x59, 0x00, 0x03, 0x0a, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xb4, 0x00, 0x00, 0x0a, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdc, 0x44, 0x0b, + 0x04, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf0, 0x7b, 0x00, 0x03, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0x6c, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0x54, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0xa3, 0x5d, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x7e, + 0x00, 0x00, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6d, 0x00, 0x00, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x00, 0x01, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb6, 0x22, 0x01, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0x9f, 0x00, 0x01, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xd1, + 0x27, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xee, 0x46, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x59, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xe4, 0x14, 0x00, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xe2, 0x13, 0x00, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xf0, 0x25, 0x02, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf0, 0x2d, + 0x07, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xc7, 0x61, 0x00, 0x02, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xf2, 0x8c, 0x11, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfa, 0xc2, 0x45, 0x00, 0x0f, 0x16, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xeb, 0x78, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, + 0x67, 0x00, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4c, 0x00, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0x6a, 0x00, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xe2, 0xc7, 0x40, 0x00, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xfa, 0xe3, + 0xb0, 0x68, 0x1c, 0x06, 0x00, 0x06, 0xfd, 0xf5, 0x9e, 0xa3, 0xcb, 0x63, 0x24, 0x00, 0x00, 0x41, + 0x05, 0x00, 0x00, 0xfe, 0xef, 0x2c, 0x03, 0x65, 0x18, 0x00, 0x00, 0x00, 0x2e, 0x06, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x93, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x85, 0x00, 0xfd, 0xfd, 0xff, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4a, 0x00, 0xfe, 0xf1, 0xbf, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x71, 0x00, 0xff, 0xb8, 0x15, 0x56, 0x8b, 0x70, 0x9d, 0xc8, 0xb7, 0x71, 0x86, 0x44, + 0x06, 0xff, 0xc6, 0x39, 0x58, 0x3a, 0x00, 0x00, 0x05, 0x0d, 0x16, 0x00, 0x00, 0x06, 0xfc, 0xf9, + 0xdf, 0xeb, 0x5a, 0x00, 0x00, 0x00, 0x39, 0x7c, 0x00, 0x00, 0x00, 0xfb, 0xfc, 0xff, 0xfb, 0x4d, + 0x00, 0x00, 0x00, 0x0a, 0x35, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x94, 0x93, 0x67, 0x4c, 0xc4, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xfe, 0xfe, 0xff, 0xff, 0xda, 0x31, 0x00, 0x4c, 0xee, 0xff, 0xff, + 0xb2, 0x23, 0xfd, 0xfb, 0xf8, 0xa9, 0x1c, 0x00, 0x01, 0x01, 0x79, 0xfa, 0xff, 0x47, 0x00, 0xfd, + 0xe4, 0x77, 0x00, 0x00, 0x07, 0x06, 0x00, 0x00, 0x2b, 0x85, 0x19, 0x00, 0xfd, 0xe6, 0x93, 0x20, + 0x00, 0x00, 0x01, 0x16, 0x91, 0x3e, 0x1b, 0x29, 0x02, 0xfd, 0xfd, 0xfe, 0xd3, 0x68, 0x0f, 0x00, + 0x56, 0xff, 0xc9, 0x00, 0x00, 0x09, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xcf, 0x98, 0xd7, 0xff, 0x5b, + 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xff, 0xf5, 0x23, 0x00, 0x00, 0x00, + 0xff, 0xfd, 0xf0, 0xff, 0xff, 0xff, 0xd4, 0x1b, 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xac, + 0x87, 0x9a, 0x94, 0x6c, 0x0a, 0x5d, 0xff, 0xfe, 0xff, 0xf8, 0xfd, 0xfd, 0xb8, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0xde, 0xff, 0xe5, 0x49, 0xfd, 0xfd, 0xfd, 0x78, 0x00, 0x00, 0x0a, 0x01, 0x00, + 0x58, 0xf0, 0x9c, 0x00, 0xfd, 0xfd, 0xff, 0xe8, 0x22, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x27, 0x2b, + 0x00, 0xfd, 0xfd, 0xfd, 0xff, 0xbb, 0x1f, 0x26, 0x87, 0xe3, 0xa6, 0x1d, 0x16, 0x09, 0xfc, 0xfc, + 0xfb, 0xfb, 0xff, 0xf0, 0xf3, 0xff, 0xff, 0xf1, 0x28, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, + 0xfe, 0xfe, 0xfc, 0xff, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfa, 0xe8, 0xfb, 0xff, 0xff, + 0xa0, 0xc2, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfa, 0xa6, 0xc8, 0xff, 0xff, 0x69, 0x89, 0xff, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0x97, 0x1a, 0x9d, 0xde, 0x4a, 0x6d, 0xff, 0xfd, 0xff, 0xfd, + 0xfd, 0xfd, 0xff, 0xb1, 0x00, 0x00, 0x20, 0x06, 0x5f, 0xff, 0xff, 0xcd, 0xfd, 0xfd, 0xfd, 0xff, + 0xb1, 0x00, 0x00, 0x02, 0x00, 0x31, 0xff, 0xff, 0x49, 0xfd, 0xfd, 0xfd, 0xff, 0xc4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x73, 0x91, 0x0d, 0xfc, 0xfc, 0xfc, 0xfd, 0xf8, 0x7e, 0x41, 0x49, 0x5d, 0x51, + 0x08, 0x13, 0x15, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xfd, 0xfa, 0xfe, 0xf8, 0x75, 0x00, 0x04, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xf0, 0xdf, 0xf7, 0xf8, 0xf0, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xd0, 0xbe, 0xf9, 0xb5, 0xb3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x96, 0x76, 0xfe, + 0x4d, 0xb2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf8, 0x58, 0x15, 0x93, 0x1d, 0xca, 0xff, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, 0x14, 0x00, 0x00, 0x04, 0xd3, 0xff, 0xc7, 0xfc, 0xfc, + 0xfc, 0xfc, 0xff, 0x7b, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf3, 0x6b, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, + 0xaf, 0x1d, 0x0c, 0x08, 0x04, 0x13, 0x39, 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xe4, 0xed, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfe, 0xfb, + 0xbc, 0x89, 0xc6, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf3, 0x98, 0x2c, 0xa1, 0xf6, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xec, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xe5, 0x8c, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x05, 0x23, 0xee, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xcc, 0xdc, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xd6, 0x00, 0x00, 0xd4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xf9, 0x89, 0x86, 0xf9, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xee, 0x20, 0x03, 0xc6, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xee, 0x46, 0x1c, 0xd3, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf9, 0xf1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xfa, 0x67, 0x44, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xff, 0xe9, 0x11, 0x00, 0x96, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xd2, + 0xa7, 0xf0, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfe, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xcb, 0xf7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xf4, 0x38, 0x00, 0x64, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xf5, 0x46, 0x06, 0x77, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xf7, 0xe9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0x7f, 0x15, 0x7d, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xf7, 0x24, + 0x00, 0x39, 0xfc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xcf, 0x98, 0xe5, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xb8, 0x51, 0xa5, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0x2f, 0x00, 0x18, 0xf4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x9b, 0x36, 0xa1, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xff, 0xe1, 0x9e, 0xcd, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x48, + 0x00, 0x17, 0xee, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x75, 0x00, 0x47, 0xf7, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0xda, 0xf2, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb6, 0x39, 0x5f, 0xf5, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x49, 0x00, 0x00, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xcf, 0x50, 0x7c, 0xf2, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, + 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xfc, 0xfb, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe5, + 0x84, 0x95, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x69, 0x00, 0x00, 0xb5, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa8, 0x1c, 0x36, 0xdc, 0xfe, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf5, 0xf8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfc, 0xfe, 0xfe, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xbc, 0xc5, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x97, 0x00, 0x00, 0xb2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x8e, 0x00, 0x00, 0xb3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xd1, + 0xd3, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfc, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xdf, 0xed, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb6, 0x0a, 0x18, 0xbb, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x85, 0x00, 0x00, 0x88, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xee, 0x9b, 0xa4, 0xf2, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfe, 0xff, 0xff, 0xfe, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xdc, 0x67, 0x66, 0xd6, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x81, 0x00, 0x00, 0x5c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd0, 0x35, + 0x33, 0xc4, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xfb, 0xff, 0xfa, 0xfb, 0xff, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf3, 0xa3, 0x88, 0xe6, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x86, 0x00, 0x00, 0x5e, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb9, 0x17, 0x07, 0xa3, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xff, 0xe9, 0xde, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xfc, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc9, 0xa9, 0xf3, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xa1, 0x00, 0x00, 0x6b, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa3, 0x00, + 0x00, 0x7a, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xcc, 0xbb, 0xf5, 0xfc, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xdf, 0xce, 0xfb, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, 0x10, 0x00, 0x81, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x92, 0x00, 0x00, 0x55, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xf7, 0xa4, 0x94, 0xe0, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xdd, 0x47, 0x28, 0xb6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa0, 0x00, + 0x00, 0x2f, 0xfc, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xe0, 0x4c, 0x4f, 0xc0, 0xfd, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xff, 0xfe, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe5, 0x63, 0x41, 0xc4, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x00, 0x00, 0x2d, 0xfa, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfe, 0xe1, 0x31, 0x28, 0xb2, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xff, 0xf6, 0xf6, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xf1, 0x6d, 0x57, 0xc4, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x91, 0x00, + 0x00, 0x30, 0xfb, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xd8, 0x2d, 0x0d, 0x9e, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xf2, 0xe5, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0x73, 0x61, 0xbd, 0xfe, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x95, 0x00, 0x00, 0x36, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfe, 0xca, 0x2d, 0x02, 0x91, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xff, 0xf6, 0xdd, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xe7, 0x72, 0x40, 0xc0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x87, 0x00, + 0x00, 0x3c, 0xfc, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xcb, 0x29, 0x14, 0x7e, 0xff, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xf8, 0xf0, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xfe, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe6, 0x57, 0x30, 0xc0, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7f, 0x00, 0x00, 0x31, 0xfd, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xff, 0xd5, 0x30, 0x24, 0x8f, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xff, 0xf9, 0xf8, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf9, 0xfa, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xdd, 0x34, 0x29, 0xaf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7d, 0x00, + 0x00, 0x26, 0xf9, 0xff, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xdb, 0x46, 0x31, 0xaf, 0xfe, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xfe, 0xfd, 0xff, 0xfb, 0xfb, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xef, 0xf0, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, 0x18, 0x1b, 0x91, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7e, 0x00, 0x00, 0x2c, 0xfa, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfd, 0xde, 0x67, 0x44, 0xcc, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xc5, 0xb5, 0xed, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x86, 0x00, 0x00, 0x5c, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x90, 0x00, + 0x00, 0x5b, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xf6, 0x9e, 0x9d, 0xe5, 0xfd, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf6, 0x9f, 0x7b, 0xdf, + 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6f, 0x00, 0x00, 0x5a, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9b, 0x00, 0x00, 0x6a, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xff, 0xbf, 0xbf, 0xf9, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xfc, 0xff, 0xff, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfe, 0xe3, 0x69, 0x49, 0xd8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x62, 0x00, 0x00, 0x48, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa7, 0x11, + 0x07, 0x90, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xe5, 0xd9, 0xff, 0xfc, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xf6, 0xf9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, 0x2e, 0x2a, 0xbd, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x5b, 0x00, 0x00, 0x3f, 0xfe, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb6, 0x36, 0x23, 0xb7, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xff, 0xfc, 0xf5, 0xff, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfb, 0xfd, 0xfe, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf0, 0xbb, 0xc9, 0xf9, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x75, 0x00, 0x00, 0x80, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfc, 0x67, 0x00, 0x00, 0x5f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe0, 0x7b, + 0x8c, 0xe5, 0xfe, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe0, + 0x99, 0x97, 0xef, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x4a, 0x00, 0x00, 0x73, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfb, 0x78, 0x00, 0x00, 0x75, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf5, 0x9e, 0xb7, 0xfb, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xff, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xd2, 0x6b, 0x67, 0xe9, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xf9, 0x2e, 0x00, 0x00, 0x5e, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0x88, 0x00, 0x00, 0x9f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xc8, + 0xd1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfc, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbe, + 0x3b, 0x4d, 0xd1, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf2, 0x1c, 0x00, 0x00, 0x61, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0x95, 0x18, 0x12, 0xbe, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xec, 0xe7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xe7, 0xed, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x7e, 0x09, 0x17, 0xc2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xf7, 0x19, 0x00, 0x00, 0x72, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfc, 0x99, 0x48, 0x56, 0xd0, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xfd, + 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xfc, 0xfb, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfc, 0xd5, 0xe1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x62, + 0x00, 0x0f, 0xc1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf9, 0x1e, 0x00, 0x00, 0x6a, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x4c, 0x6f, 0xe0, 0xfe, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfb, 0xc5, 0xe2, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xf9, 0x55, 0x00, 0x10, 0xb3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xf6, 0x1f, 0x00, 0x00, 0x6e, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xa7, 0x3e, 0x77, 0xeb, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xf6, 0xc4, 0xe6, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xf6, 0x52, + 0x00, 0x0e, 0xa3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf0, 0x19, 0x00, 0x00, 0x7a, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb8, 0x32, 0x72, 0xe1, 0xfe, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfc, 0xfd, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfa, 0xd9, 0xde, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xfa, 0x54, 0x02, 0x05, 0xa6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xed, 0x0f, 0x00, 0x00, 0x6d, 0xfa, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfe, 0xb5, 0x47, 0x42, 0xdd, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xfc, 0xfb, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xdc, 0xd9, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xf9, 0x66, + 0x05, 0x05, 0xab, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf1, 0x10, 0x00, 0x00, 0x60, + 0xfa, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xa3, 0x44, 0x41, 0xc3, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xdc, 0xde, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x7f, 0x05, 0x0d, 0xa9, 0xfb, 0xfe, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xf1, 0x14, 0x00, 0x00, 0x49, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x9c, 0x31, 0x42, 0xb1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xfd, 0xfc, 0xfb, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xdc, 0xeb, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x93, + 0x04, 0x1b, 0xa7, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf6, 0x1c, 0x00, 0x00, 0x2f, + 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x9d, 0x1c, 0x36, 0xae, 0xfe, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf5, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfc, 0xfe, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xfa, 0xf6, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa0, 0x21, 0x35, 0x9d, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x41, 0x00, 0x00, 0x10, 0xf0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x93, 0x11, 0x09, 0x93, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xea, + 0xe1, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfc, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xff, 0xf8, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xac, + 0x45, 0x3c, 0x8b, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x47, 0x00, 0x00, 0x0f, + 0xf0, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa0, 0x07, 0x00, 0x70, 0xff, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe0, 0xd8, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xc8, 0x5d, 0x3a, 0x84, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x46, 0x00, 0x00, 0x0e, 0xef, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xaa, 0x01, 0x00, 0x4d, 0xf9, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcf, + 0xcf, 0xf6, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfd, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe6, + 0x6a, 0x36, 0x8e, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x50, 0x00, 0x00, 0x08, + 0xe6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa1, 0x01, 0x00, 0x37, 0xeb, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xcb, 0xb2, 0xf4, 0xfe, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfe, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf4, 0x81, 0x44, 0xb8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0x88, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x87, 0x00, 0x00, 0x0e, 0xd6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xbf, + 0x8d, 0xcc, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xff, 0xfb, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, + 0x87, 0x63, 0xc2, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x00, 0x00, 0x00, + 0xba, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8d, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf6, 0xa8, 0x82, 0xbb, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf9, 0x9c, 0x83, 0xc4, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xa3, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x98, 0x00, 0x00, 0x00, 0xaf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf3, 0x8c, + 0x6f, 0xb0, 0xfa, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xfc, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, + 0xbc, 0x98, 0xc1, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xa6, 0x00, 0x00, 0x00, + 0xb6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x99, 0x00, 0x00, 0x00, 0x9c, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf7, 0x78, 0x53, 0xa6, 0xfc, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe5, 0xa5, 0xc9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xc1, 0x14, 0x00, 0x01, 0xaf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x91, 0x00, 0x00, 0x00, 0x99, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xf0, 0x71, + 0x20, 0x75, 0xf8, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfe, 0xff, 0xf6, 0xff, 0xfd, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xfe, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xe9, 0xa9, 0xd6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xd5, 0x21, 0x00, 0x07, + 0xb3, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x96, 0x00, 0x00, 0x00, 0x98, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xeb, 0x68, 0x1b, 0x55, 0xed, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfe, 0xff, 0xf2, 0xff, 0xfe, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfb, 0xfc, 0xfe, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe6, 0xb6, 0xe0, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xe1, 0x24, 0x00, 0x0b, 0xbf, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xa2, 0x00, 0x00, 0x00, 0x8f, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe7, 0x58, + 0x1b, 0x44, 0xe1, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xff, 0xf1, 0xfd, 0xff, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xfe, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, + 0xeb, 0xca, 0xe2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xe4, 0x25, 0x00, 0x11, + 0xcb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x84, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe8, 0x50, 0x1c, 0x40, 0xd9, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xfe, 0xff, 0xf1, 0xfd, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfb, 0xfc, 0xfe, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf4, 0xc4, 0xef, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xca, 0x24, 0x00, 0x2b, 0xd9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0xa3, 0x00, 0x00, 0x00, 0x95, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xea, 0x43, + 0x23, 0x6f, 0xef, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfe, 0xfb, 0xf6, 0xff, 0xfe, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xfe, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xe9, 0xcb, 0xf9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc6, 0x18, 0x00, 0x33, + 0xd9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8e, 0x00, 0x00, 0x00, 0xa1, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xec, 0x40, 0x17, 0x7d, 0xf3, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xff, 0xf7, 0xed, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfb, 0xfe, 0xff, 0xfc, 0xfc, 0xfb, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xea, 0xd9, 0xfb, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xbb, 0x13, 0x03, 0x34, 0xd9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x7c, 0x00, 0x00, 0x00, 0xb6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe6, 0x43, + 0x05, 0x6f, 0xf1, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xf8, 0xde, 0xff, 0xfd, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xf2, 0xde, 0xf9, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb4, 0x1c, 0x06, 0x35, + 0xe2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x6c, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xdc, 0x42, 0x03, 0x5b, 0xf0, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xff, 0xfc, 0xdd, 0xfa, 0xfe, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfb, 0xfd, 0xff, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf2, 0xd9, 0xfa, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xc2, 0x23, 0x00, 0x4c, 0xf3, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x5a, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xc5, 0x32, + 0x18, 0x5c, 0xf1, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xfb, 0xef, 0xff, 0xfe, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfd, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe6, 0xc6, 0xc5, 0xcb, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, + 0xea, 0xdd, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb7, 0x15, 0x04, 0x5b, + 0xf5, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x5a, 0x00, 0x00, 0x00, 0xcd, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbf, 0x26, 0x1c, 0x7b, 0xf7, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xff, 0xf4, 0xf1, 0xff, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xfc, 0xfe, 0xfe, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xfc, 0xe8, 0xcf, 0xaa, 0x91, 0x8a, + 0x91, 0x8a, 0x7e, 0x70, 0x73, 0xfe, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xec, 0xe2, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xa0, 0x11, 0x0a, 0x66, 0xf4, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xff, 0x52, 0x00, 0x00, 0x00, 0xde, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xbc, 0x1e, + 0x14, 0x91, 0xfe, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xff, 0xee, 0xeb, 0xff, 0xfc, + 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfb, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, + 0x80, 0x59, 0x45, 0x42, 0x48, 0x4a, 0x43, 0x3c, 0x3a, 0x3a, 0x2f, 0x1e, 0x23, 0xff, 0xfd, 0xfc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf9, 0xf1, 0x9d, 0x3a, 0xfd, 0xfe, 0xfe, 0xfd, 0xfd, 0xff, + 0xf2, 0xe6, 0xff, 0xff, 0xfe, 0xe6, 0xca, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x8d, 0x1a, 0x12, 0x68, + 0xfa, 0xfe, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x44, 0x00, 0x00, 0x12, 0xf2, 0xff, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb9, 0x1d, 0x0c, 0x93, 0xff, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfb, 0xff, 0xee, 0xe4, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, + 0xfc, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0xc1, 0xb5, 0xaf, 0xa7, 0x9e, 0x58, 0x00, 0x00, + 0x02, 0x07, 0x09, 0x01, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x56, 0x3d, 0x2f, 0x0d, 0x05, + 0x00, 0x0b, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xf8, 0xe9, 0xf8, 0x74, 0x21, 0x13, 0x63, 0xfd, + 0xfd, 0xfd, 0xfd, 0xff, 0xa9, 0x2e, 0x0c, 0x95, 0xa8, 0x05, 0x19, 0xab, 0xfd, 0xfd, 0xfd, 0xff, + 0xfa, 0x26, 0x00, 0x00, 0x2e, 0xe3, 0x4e, 0x00, 0x3d, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xb5, 0x1b, + 0x1d, 0x96, 0xff, 0xce, 0x63, 0x5d, 0xfc, 0xfc, 0xfc, 0xfb, 0xfb, 0xff, 0xed, 0xf0, 0xff, 0xfc, + 0xf5, 0xd7, 0xc5, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, 0xfe, 0xfc, 0xfb, 0xfd, 0xff, 0xff, + 0x1d, 0x28, 0x2e, 0x30, 0x35, 0xa5, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x06, 0x05, + 0x00, 0x00, 0x57, 0xe0, 0xd9, 0x95, 0xbd, 0xff, 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, + 0xc6, 0x9d, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, + 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, 0x0b, 0xe6, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, + 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x29, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbd, 0xff, + 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, + 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, + 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, + 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, + 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, + 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, + 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, + 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, + 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, + 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, + 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, + 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, + 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, + 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, + 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, + 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, + 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, + 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, + 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, + 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, + 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, + 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, + 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, + 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, + 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, + 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, + 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, + 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, + 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, + 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, + 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, + 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, + 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, + 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, + 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, + 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x29, 0x2d, 0x2f, 0x35, 0xa4, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x05, 0x05, + 0x00, 0x00, 0x55, 0xe0, 0xd9, 0x95, 0xbe, 0xff, 0xfe, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, + 0xc5, 0x9a, 0x00, 0x00, 0x93, 0xff, 0xb7, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x6f, 0xf7, 0xfb, 0x6b, + 0x00, 0x06, 0x77, 0x16, 0x0b, 0x0b, 0x0b, 0x01, 0x0b, 0xe5, 0xff, 0xff, 0xd3, 0x05, 0x00, 0x00, + 0x06, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x50, 0xe1, 0xfd, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x4e, 0x4c, 0xa1, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x00, 0x00, 0x89, 0xf9, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xff, 0xed, 0x06, 0x05, 0x01, 0x13, 0x7f, 0xf2, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xab, 0x1e, 0x06, + 0x00, 0x04, 0x6b, 0xff, 0xff, 0xfd, 0xfe, 0xcd, 0xd6, 0x6e, 0x01, 0x00, 0x02, 0x00, 0x02, 0x5a, + 0xfd, 0xff, 0xff, 0xff, 0x4c, 0x06, 0x03, 0x03, 0x08, 0x01, 0x00, 0x02, 0x03, 0x5d, 0xbd, 0xc1, + 0x71, 0x10, 0x00, 0x07, 0x0b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb7, 0xbc, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x37, + 0xd7, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xef, 0xd3, 0x00, 0x5d, 0xb5, 0xdf, 0xfd, 0xfa, + 0xff, 0xff, 0xff, 0xff, 0xbb, 0x26, 0x04, 0x07, 0xde, 0xff, 0xff, 0xff, 0xe4, 0x6c, 0xaa, 0xf2, + 0xb1, 0x0c, 0x00, 0x05, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xd9, 0x0d, 0x00, 0x27, 0x29, 0x00, 0x07, + 0x0b, 0x02, 0x0b, 0x63, 0xb1, 0x83, 0x2c, 0x02, 0x04, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x5c, 0xbc, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0x39, 0x70, 0xd0, 0xfc, 0xf4, 0xff, 0xff, 0xff, 0xfe, 0xfa, 0x8b, 0x6f, 0xc5, 0xff, + 0xff, 0xff, 0xfd, 0x97, 0x64, 0xae, 0xe0, 0xff, 0x7c, 0x00, 0x00, 0x05, 0xfe, 0xff, 0xff, 0xff, + 0x83, 0x00, 0x00, 0x12, 0x46, 0x23, 0x00, 0x0a, 0x09, 0x4a, 0xc0, 0xd0, 0x87, 0x1a, 0x03, 0x05, + 0x06, 0x00, 0x04, 0x0a, 0x0b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0xff, 0xef, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfb, 0xfd, 0xff, + 0xff, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, 0x70, 0xfd, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0xfb, 0xaf, 0x75, 0x74, 0x86, 0xbf, 0xff, 0xf0, + 0xd4, 0x44, 0x7c, 0xb1, 0xff, 0xff, 0x7d, 0x00, 0x00, 0x00, 0x16, 0x8a, 0x2b, 0x1f, 0x00, 0x00, + 0x00, 0xff, 0xc9, 0x3a, 0x01, 0x04, 0x08, 0x04, 0x00, 0x03, 0x02, 0x09, 0x0b, 0x0a, 0x2f, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xf7, 0x3a, + 0x00, 0x27, 0x35, 0x05, 0x00, 0xde, 0xff, 0xfd, 0xfe, 0xfe, 0xff, 0xf4, 0x86, 0x7c, 0xad, 0x72, + 0x8e, 0xb1, 0xf2, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xc8, 0xcf, 0xd0, 0xd7, + 0xec, 0xe3, 0x5e, 0x5f, 0xa1, 0xdd, 0xf7, 0xff, 0xff, 0x05, 0x07, 0x08, 0x06, 0x37, 0xc1, 0x16, + 0x00, 0x00, 0x0f, 0x29, 0x41, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xf2, 0x81, 0xea, 0xff, 0x6e, 0x00, 0x00, 0x06, 0x09, 0x05, 0x05, 0x05, 0xfd, 0xff, 0xff, + 0xfe, 0xff, 0xb3, 0x04, 0x00, 0x08, 0x00, 0x07, 0x19, 0x20, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xe7, + 0x8b, 0x84, 0x9d, 0xab, 0xd0, 0xe8, 0xed, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x76, 0x78, 0x7f, 0xa0, 0xf4, 0x4f, 0x30, 0x4b, 0x86, 0xb5, 0xd0, 0xe4, 0xee, 0x00, 0x00, + 0x00, 0x00, 0x61, 0x13, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x6f, 0xdc, 0x2b, 0x00, 0x05, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xff, 0xae, 0xed, 0xff, 0x90, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, + 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xfe, 0xf3, 0x2f, 0x00, 0x0a, 0x24, 0x42, 0x5f, 0x66, 0x5a, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfa, 0xc8, 0xa7, 0xd4, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xed, 0xf3, 0xfa, 0xff, 0xfb, 0xf9, 0xd3, + 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x1d, 0x2c, 0xc1, 0x66, 0x22, 0x05, 0x15, 0x38, 0x57, + 0x76, 0x8c, 0xb9, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x05, 0x57, 0x1e, 0x04, 0x06, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x49, 0x81, 0xff, + 0x85, 0x00, 0x00, 0x04, 0x0a, 0x08, 0x07, 0x06, 0x07, 0x08, 0xf6, 0xf8, 0xff, 0xc6, 0x18, 0x47, + 0x35, 0x00, 0x00, 0x09, 0x0d, 0x08, 0x03, 0xfe, 0xfe, 0xfd, 0xfd, 0xa8, 0x9f, 0x89, 0x86, 0xb2, + 0xd1, 0xd8, 0xce, 0x97, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xa3, 0xb5, + 0xea, 0xf5, 0xce, 0x55, 0x5a, 0x93, 0xb5, 0xd0, 0xe3, 0xfc, 0xee, 0x00, 0x00, 0x29, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x36, 0x4f, 0x72, 0x00, 0x00, 0x08, 0x0a, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x8f, 0xcb, 0x1e, 0x00, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0xf7, 0xff, 0x66, 0x00, 0x03, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0b, 0xfe, + 0xf1, 0xec, 0x53, 0x01, 0x13, 0x2e, 0x4e, 0x64, 0x5d, 0x48, 0x0c, 0x00, 0xfd, 0xfd, 0xff, 0xf0, + 0xd8, 0xe4, 0xfa, 0xff, 0xff, 0xff, 0xff, 0x9d, 0x17, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0xfd, 0xfe, 0xff, 0xc2, 0xff, 0xff, 0xff, 0xdf, 0x8a, 0xc9, 0xe9, 0xf8, 0xff, 0xff, + 0xff, 0xea, 0xa7, 0x3d, 0x99, 0x8d, 0x32, 0x00, 0x00, 0x14, 0x2a, 0x49, 0x76, 0xbd, 0x58, 0x00, + 0x4d, 0x00, 0x01, 0x08, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xb8, 0x91, 0x00, + 0x02, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xff, 0xe2, 0x1b, 0x00, 0x00, 0x05, + 0x02, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0b, 0xf7, 0xd4, 0xc5, 0x37, 0x3a, 0x18, 0x33, 0x51, 0x5d, + 0x49, 0x29, 0x00, 0x03, 0xfd, 0xfe, 0xfd, 0xf9, 0xfc, 0xe9, 0xfc, 0xff, 0xff, 0xff, 0xe8, 0x48, + 0x03, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xfd, 0xff, 0xfb, 0x68, 0xff, 0xff, + 0xff, 0xa7, 0xa8, 0xe0, 0xf5, 0xff, 0xff, 0xff, 0xfd, 0xe8, 0x69, 0x5d, 0xb2, 0x5d, 0x07, 0x00, + 0x0c, 0x24, 0x3f, 0x64, 0xa9, 0xb8, 0x1c, 0x03, 0x87, 0x00, 0x00, 0x09, 0x0a, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xc1, 0xa3, 0x00, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0xff, 0xf6, 0x38, 0x00, 0x00, 0x05, 0x04, 0x01, 0x00, 0x01, 0x04, 0x09, 0x0b, 0xf8, + 0xbb, 0xb7, 0x60, 0x3f, 0x12, 0x23, 0x3e, 0x4c, 0x39, 0x23, 0x00, 0x03, 0xfd, 0xfc, 0xed, 0xf4, + 0xf8, 0xdf, 0xf2, 0xff, 0xff, 0xff, 0xee, 0x56, 0x00, 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfe, 0xff, 0xfc, 0x84, 0xff, 0xff, 0xff, 0xb9, 0xb0, 0xe9, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0x95, 0x6b, 0xce, 0x82, 0x13, 0x00, 0x14, 0x31, 0x4e, 0x76, 0xb8, 0xcd, 0x3f, 0x11, + 0xf6, 0x46, 0x00, 0x05, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xbc, 0xd6, 0x29, + 0x00, 0x09, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xc5, 0xff, 0x89, 0x00, 0x00, 0x03, + 0x08, 0x05, 0x02, 0x03, 0x05, 0x08, 0x0b, 0xff, 0xd5, 0xb2, 0x92, 0x38, 0x19, 0x09, 0x21, 0x33, + 0x2d, 0x19, 0x04, 0x05, 0xfd, 0xfd, 0xec, 0xd4, 0xf5, 0xe0, 0xd5, 0xf1, 0xfd, 0xfa, 0xec, 0x93, + 0x03, 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xb7, 0xff, 0xff, + 0xff, 0xef, 0xba, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf1, 0x7f, 0xd8, 0xc9, 0x5a, 0x00, + 0x1c, 0x42, 0x62, 0x88, 0xbd, 0xf0, 0xa3, 0x3d, 0xfd, 0xbc, 0x51, 0x01, 0x06, 0x08, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xfa, 0xf9, 0xed, 0x59, 0x00, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0xef, 0xae, 0xff, 0xcb, 0x00, 0x00, 0x02, 0x08, 0x0a, 0x09, 0x08, 0x09, 0x0a, 0xfd, + 0xfd, 0xfe, 0xf4, 0x89, 0x48, 0x26, 0x00, 0x00, 0x07, 0x09, 0x02, 0x00, 0xfd, 0xfd, 0xfe, 0xf9, + 0xc2, 0xb2, 0xc5, 0x94, 0xaf, 0xcd, 0xd2, 0xbe, 0x98, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfe, 0xf8, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfb, 0xfd, 0xbe, 0xe0, 0xfc, 0xfe, 0xe6, 0x37, 0x53, 0x90, 0xb5, 0xd1, 0xf5, 0xfc, 0xf4, + 0xff, 0xff, 0xdb, 0x67, 0x00, 0x05, 0x08, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xff, 0xef, 0xef, + 0xf4, 0x51, 0x00, 0x04, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xfe, 0xf3, 0xbd, 0xff, 0xb0, 0x00, + 0x00, 0x02, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0xfd, 0xfc, 0xf7, 0xfe, 0xe0, 0x58, 0x33, 0x2f, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xf5, 0xfe, 0xfd, 0xfe, 0xf2, 0xc7, 0xaf, 0x85, 0x66, 0x86, 0xa5, 0xac, + 0x95, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf4, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, + 0xfb, 0xfc, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfb, 0xfc, 0xfc, 0xd7, 0xfa, 0xfc, 0xfc, 0xfe, + 0xed, 0x69, 0x95, 0xc9, 0xee, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x20, 0x00, 0x07, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0xfe, 0xfe, 0xf7, 0xe0, 0xfa, 0x83, 0x09, 0x02, 0x0a, 0x0b, 0x0b, + 0x0b, 0x0b, 0xfd, 0xfe, 0xfb, 0xb3, 0xf8, 0xa8, 0x00, 0x00, 0x02, 0x08, 0x0b, 0x0a, 0x0a, 0xff, + 0xfd, 0xfc, 0xf2, 0xff, 0xd7, 0x27, 0x19, 0x2d, 0x06, 0x00, 0x00, 0x00, 0x75, 0xf0, 0xff, 0xfe, + 0xfe, 0xec, 0xb7, 0xc1, 0x91, 0x3d, 0x52, 0x73, 0x7e, 0xc2, 0xfe, 0xfd, 0xfd, 0xfd, 0xfc, 0xe9, + 0xe7, 0xf7, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfc, 0xfb, 0xfc, 0xfe, 0xff, 0xff, 0xfd, + 0xfc, 0xfc, 0xfc, 0xde, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfb, 0xb2, 0xd0, 0xfb, 0xfc, 0xfc, 0xfc, + 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8e, 0x18, 0x02, 0x08, 0x0b, 0x0b, 0x0b, 0xf4, 0xfe, 0xfe, + 0xff, 0xf0, 0xdf, 0xce, 0x3a, 0x02, 0x05, 0x0b, 0x0b, 0x0b, 0xfd, 0xfd, 0xfd, 0xfc, 0xc6, 0xdb, + 0xb6, 0x00, 0x00, 0x05, 0x0a, 0x0b, 0x0b, 0xfe, 0xff, 0xfd, 0xfd, 0xe5, 0xff, 0xe1, 0x12, 0x00, + 0x07, 0x03, 0x02, 0x01, 0xf3, 0x85, 0xe9, 0xff, 0xff, 0xfe, 0xf1, 0x9f, 0x98, 0xb7, 0x31, 0x20, + 0x3f, 0xad, 0x8d, 0xfa, 0xfd, 0xfd, 0xfd, 0xfa, 0xdf, 0xd9, 0xf9, 0xeb, 0xf2, 0xff, 0xf8, 0xff, + 0xfc, 0xfb, 0xfc, 0xfb, 0xfc, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xfd, 0xf5, 0xfd, 0xfb, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xef, 0xf8, 0xfc, 0xfc, 0xfc, 0x00, 0x68, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0xeb, 0x98, 0x0b, 0x03, 0x00, 0x00, 0x69, 0xff, 0xfe, 0xfe, 0xff, 0xe1, 0x78, 0x43, 0x3d, + 0x0b, 0x05, 0x6d, 0x00, 0xb3, 0xff, 0xfd, 0xfd, 0xb7, 0xcb, 0x6e, 0x00, 0x00, 0x02, 0x0a, 0xe6, + 0x7f, 0xcb, 0xff, 0xff, 0xff, 0xca, 0xdb, 0xff, 0xa3, 0x00, 0x00, 0x07, 0x37, 0xbf, 0xfc, 0xc3, + 0xd8, 0xfe, 0xff, 0xfe, 0xff, 0xdb, 0x44, 0x1d, 0x11, 0x00, 0x64, 0xc3, 0x38, 0xce, 0xff, 0xfd, + 0xfd, 0xfe, 0xd3, 0xc5, 0xe9, 0xdf, 0x99, 0xff, 0xc3, 0xd6, 0xff, 0xfb, 0xfc, 0xfc, 0xfb, 0xfe, + 0xfd, 0xfe, 0xff, 0x70, 0x9e, 0xff, 0xff, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0x01, 0x00, 0x5b, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xe3, 0xb8, 0x4e, 0x27, 0x0f, 0x00, + 0x38, 0xf4, 0xff, 0xfe, 0xfe, 0xe9, 0x9a, 0x35, 0x24, 0x0b, 0xff, 0xc8, 0x00, 0x54, 0xfd, 0xfe, + 0xfe, 0xcc, 0xc3, 0x70, 0x00, 0x00, 0x06, 0xb2, 0xe7, 0x94, 0x8b, 0xff, 0xff, 0xff, 0xc8, 0xbd, + 0xf7, 0xb4, 0x2d, 0x00, 0x00, 0x19, 0xa4, 0xf4, 0xee, 0xe0, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0x5b, + 0x06, 0x00, 0x00, 0x35, 0xd6, 0x46, 0xac, 0xff, 0xfd, 0xfd, 0xfe, 0xe1, 0xb6, 0xdb, 0x4c, 0x57, + 0xe6, 0xa3, 0x9c, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfa, 0xf3, 0xfe, 0xaf, 0xb8, 0xd9, 0xfe, 0xff, + 0xfc, 0xfb, 0xfc, 0xfc, 0xfb, 0xfc, 0xfd, 0xfc, 0x09, 0x03, 0x00, 0x52, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xe5, 0xbe, 0x03, 0x18, 0x16, 0x00, 0x38, 0xe8, 0xff, 0xfe, 0xff, 0xf7, 0xb0, + 0x57, 0x24, 0x32, 0xeb, 0xeb, 0x14, 0x1d, 0xec, 0xff, 0xfd, 0xe7, 0xc2, 0x3f, 0x01, 0x00, 0x1d, + 0x9d, 0xe1, 0xa4, 0x5a, 0xf9, 0xff, 0xff, 0xc6, 0xa5, 0xd2, 0x89, 0x56, 0x03, 0x00, 0x0e, 0x93, + 0xe9, 0xfd, 0xf2, 0xfd, 0xfd, 0xfb, 0xff, 0xff, 0x8f, 0x05, 0x00, 0x00, 0x1b, 0xde, 0x69, 0x9c, + 0xff, 0xfd, 0xfd, 0xfe, 0xf1, 0xab, 0x1d, 0x0e, 0x1d, 0xc6, 0x88, 0x66, 0xf3, 0xfd, 0xfc, 0xfc, + 0xfc, 0xf7, 0xdd, 0xd3, 0xdb, 0xea, 0xff, 0xea, 0xff, 0xfe, 0xfb, 0xfc, 0xfc, 0xfb, 0xfc, 0xff, + 0x0b, 0x0b, 0x02, 0x01, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0x08, 0x03, 0x0b, + 0x0d, 0x00, 0x5c, 0xef, 0xff, 0xfe, 0xfe, 0xf6, 0xc4, 0x7f, 0x02, 0x17, 0xc9, 0xe6, 0x19, 0x18, + 0xec, 0xff, 0xfd, 0xf9, 0xcf, 0x3a, 0x14, 0x03, 0x10, 0x96, 0xe5, 0x9b, 0x65, 0xfe, 0xfd, 0xff, + 0xbf, 0xa4, 0x95, 0x55, 0x08, 0x04, 0x00, 0x10, 0x99, 0xe8, 0xff, 0xfc, 0xfd, 0xf5, 0xf4, 0xff, + 0xff, 0x09, 0x09, 0x04, 0x00, 0x17, 0xe5, 0x7f, 0xac, 0xff, 0xfd, 0xfe, 0xfd, 0xfb, 0x00, 0x00, + 0x00, 0x09, 0xb5, 0x6f, 0x4b, 0xe9, 0xfd, 0xfc, 0xfc, 0xfc, 0xf9, 0xc5, 0xb8, 0xa6, 0xc8, 0xff, + 0xc0, 0xfb, 0xff, 0xfb, 0xfc, 0xfc, 0xfb, 0xfc, 0x0b, 0x0b, 0x0a, 0x04, 0x1c, 0x93, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x09, 0x01, 0x00, 0x00, 0x7c, 0xe5, 0xff, 0xfe, 0xfe, + 0xfe, 0xff, 0x0b, 0x06, 0x00, 0x3e, 0xc6, 0x55, 0x00, 0xaa, 0xff, 0xfd, 0xfe, 0xef, 0xa4, 0x0b, + 0x06, 0x00, 0x4b, 0xe1, 0xca, 0x38, 0xe9, 0xfe, 0xfe, 0xef, 0xa6, 0x51, 0x0b, 0x0a, 0x08, 0x00, + 0x03, 0x67, 0xda, 0xfd, 0xff, 0xfd, 0xf3, 0xc6, 0xf4, 0x0b, 0x0a, 0x0b, 0x09, 0x00, 0x00, 0x9a, + 0xd3, 0x96, 0xff, 0xfd, 0xfe, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xbb, 0x10, 0x7e, 0xff, + 0xfc, 0xfb, 0xf1, 0x5c, 0x4e, 0x40, 0x2f, 0x44, 0xe5, 0x7d, 0xa0, 0xff, 0xfc, 0xfb, 0xfc, 0xfd, + 0x0b, 0x0b, 0x0a, 0x05, 0x26, 0x9e, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0a, + 0x04, 0x00, 0x00, 0x62, 0xe3, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0x0b, 0x0a, 0x04, 0x0b, 0x90, 0x86, + 0x00, 0x53, 0xff, 0xfd, 0xfe, 0xf9, 0xe2, 0x0b, 0x0b, 0x03, 0x12, 0xcc, 0xf8, 0x33, 0xa0, 0xff, + 0xfd, 0xfe, 0xc0, 0x6b, 0x0b, 0x0b, 0x09, 0x03, 0x02, 0x3d, 0xc3, 0xf2, 0xff, 0xfe, 0xff, 0xaf, + 0xe1, 0x0b, 0x0a, 0x0a, 0x0b, 0x03, 0x00, 0x37, 0xf5, 0x9d, 0xf0, 0xfe, 0xff, 0xf9, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa9, 0x65, 0x15, 0xe6, 0xff, 0xfc, 0xf4, 0x30, 0x21, 0x0f, 0x02, 0x00, + 0x90, 0xa6, 0x37, 0xdc, 0xff, 0xfb, 0xfb, 0xfc, 0x0b, 0x0b, 0x0a, 0x04, 0x28, 0xa1, 0xf9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x09, 0x00, 0x00, 0x3b, 0xe0, 0xfd, 0xfe, 0xfe, + 0xfe, 0xfe, 0x0b, 0x0a, 0x06, 0x02, 0x40, 0x88, 0x0e, 0x15, 0xe3, 0xff, 0xfd, 0xfd, 0xff, 0x0b, + 0x0b, 0x06, 0x00, 0x8c, 0xff, 0x70, 0x3a, 0xf8, 0xfe, 0xfe, 0xec, 0xa3, 0x0b, 0x0b, 0x0a, 0x06, + 0x04, 0x30, 0xab, 0xd9, 0xff, 0xff, 0xff, 0xd7, 0xb4, 0x0b, 0x0a, 0x0a, 0x0b, 0x05, 0x00, 0x03, + 0xd2, 0xdf, 0xdf, 0xfe, 0xfd, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xcb, 0x0a, 0x8f, + 0xff, 0xfc, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0xcd, 0x3c, 0x76, 0xf7, 0xfd, 0xfb, 0xfc, + 0x0b, 0x0b, 0x0b, 0x05, 0x22, 0x9d, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, + 0x0a, 0x00, 0x00, 0x27, 0xd4, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0x0b, 0x0a, 0x0a, 0x05, 0x13, 0x68, + 0x25, 0x05, 0xaa, 0xff, 0xfd, 0xfd, 0xff, 0x0b, 0x0b, 0x0b, 0x00, 0x4c, 0xff, 0xb8, 0x00, 0xca, + 0xff, 0xfd, 0xfc, 0xd0, 0x0b, 0x0b, 0x0b, 0x07, 0x05, 0x32, 0x9c, 0xc1, 0xfa, 0xff, 0xfd, 0xf9, + 0x99, 0x0b, 0x0a, 0x0a, 0x0b, 0x07, 0x00, 0x00, 0x9a, 0xff, 0xe7, 0xfd, 0xfd, 0xf9, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x6b, 0x37, 0xfb, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7f, 0x98, 0x15, 0xb8, 0xfe, 0xfc, 0xfc, 0x0b, 0x0b, 0x0b, 0x05, 0x18, 0xa0, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x02, 0x00, 0x24, 0xba, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0x0b, 0x0a, 0x0a, 0x07, 0x03, 0x23, 0x2a, 0x09, 0x7f, 0xfa, 0xfe, 0xfd, 0xfd, 0x0b, + 0x0b, 0x0b, 0x03, 0x0b, 0xde, 0xff, 0x07, 0x35, 0xfc, 0xfd, 0xfd, 0xf8, 0x0b, 0x0b, 0x0b, 0x07, + 0x04, 0x44, 0xa2, 0x9d, 0xbb, 0xff, 0xfd, 0xff, 0xc3, 0x0b, 0x0a, 0x0a, 0x0b, 0x08, 0x00, 0x00, + 0x7d, 0xfc, 0xff, 0xff, 0xfd, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xe8, 0x65, + 0xc9, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x69, 0x00, 0xc0, 0xff, 0xfc, + 0x0b, 0x0b, 0x0b, 0x05, 0x16, 0xa1, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, + 0x0a, 0x03, 0x00, 0x27, 0xb6, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0x0b, 0x0a, 0x0a, 0x09, 0x04, 0x0f, + 0x20, 0x0d, 0x8d, 0xf2, 0xfe, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x04, 0x02, 0xbe, 0xff, 0x1e, 0x08, + 0xec, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x07, 0x03, 0x4f, 0xb1, 0x98, 0x8f, 0xff, 0xfd, 0xfe, + 0xed, 0x0b, 0x0a, 0x0a, 0x0b, 0x08, 0x00, 0x00, 0x85, 0xfa, 0xff, 0xff, 0xfd, 0xfa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe5, 0xa5, 0xcd, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xad, 0x00, 0x81, 0xff, 0xfc, 0x0b, 0x0b, 0x0b, 0x04, 0x1a, 0xa9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x01, 0x00, 0x32, 0xbc, 0xff, 0xfe, 0xfe, + 0xfe, 0xfe, 0x0b, 0x0a, 0x0a, 0x0a, 0x07, 0x05, 0x14, 0x10, 0xa4, 0xf1, 0xfe, 0xfd, 0xfd, 0x0b, + 0x0b, 0x0b, 0x05, 0x00, 0xa6, 0xfd, 0x2d, 0x00, 0xd6, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x06, + 0x00, 0x5c, 0xc4, 0x96, 0x66, 0xfd, 0xfd, 0xfe, 0xef, 0x0b, 0x0a, 0x0a, 0x0b, 0x09, 0x00, 0x00, + 0x94, 0xf8, 0xff, 0xff, 0xfd, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xde, 0xd6, + 0xe1, 0xfd, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xd1, 0x06, 0x61, 0xff, 0xfc, + 0x0b, 0x0b, 0x0b, 0x03, 0x29, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x0b, + 0x09, 0x00, 0x00, 0x4b, 0xcf, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0x0b, 0x0a, 0x0a, 0x0a, 0x07, 0x00, + 0x08, 0x1a, 0xc2, 0xf5, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x04, 0x00, 0x98, 0xf3, 0x34, 0x00, + 0xc7, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x6b, 0xd7, 0x93, 0x3f, 0xf5, 0xfe, 0xfe, + 0xf0, 0x0b, 0x0a, 0x0a, 0x0b, 0x08, 0x00, 0x01, 0xa5, 0xf3, 0xff, 0xfe, 0xfd, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xe3, 0xf3, 0xf3, 0xfd, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2f, 0xdc, 0x2d, 0x6a, 0xff, 0xfc, 0x0b, 0x0b, 0x07, 0x07, 0x87, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0x0b, 0x0b, 0x0a, 0x05, 0x00, 0x34, 0xb1, 0xfc, 0xff, 0xfe, 0xfe, + 0xfd, 0xff, 0x0b, 0x0a, 0x0a, 0x0a, 0x01, 0x00, 0x00, 0x54, 0xf7, 0xfe, 0xfd, 0xfd, 0xfd, 0x0b, + 0x0b, 0x0b, 0x05, 0x02, 0x89, 0xdc, 0x30, 0x1d, 0xc6, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x05, + 0x01, 0x97, 0xf8, 0x7f, 0x0a, 0xe2, 0xff, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x0a, 0x04, 0x00, 0x1d, + 0xc4, 0xd4, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xff, 0xff, + 0xff, 0xfb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xe6, 0x7b, 0xb6, 0xff, 0xfc, + 0x0b, 0x0b, 0x04, 0x1a, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x0b, 0x0b, 0x0a, + 0x01, 0x07, 0x65, 0xdd, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xff, 0x0b, 0x0a, 0x0b, 0x0b, 0x00, 0x00, + 0x0e, 0x82, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x05, 0x03, 0x87, 0xce, 0x2c, 0x42, + 0xd2, 0xff, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x04, 0x05, 0xaf, 0xff, 0x70, 0x00, 0xdc, 0xff, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x0a, 0x04, 0x00, 0x32, 0xcc, 0xbf, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0xff, 0xfb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x22, 0xf1, 0x9f, 0xd8, 0xfe, 0xfc, 0x0b, 0x0b, 0x02, 0x2e, 0xd6, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdc, 0x0b, 0x0b, 0x08, 0x00, 0x14, 0x85, 0xf1, 0xff, 0xfe, 0xfe, 0xfe, + 0xfd, 0xff, 0x0b, 0x0a, 0x0b, 0x0a, 0x00, 0x00, 0x1e, 0xa7, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0x0b, + 0x0b, 0x0b, 0x05, 0x04, 0x82, 0xc0, 0x32, 0x6c, 0xe0, 0xfe, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x03, + 0x0a, 0xc5, 0xff, 0x62, 0x00, 0xdb, 0xff, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x09, 0x03, 0x06, 0x48, + 0xcc, 0xa9, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, + 0xfd, 0xfb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xfb, 0xbe, 0xed, 0xfd, 0xfc, + 0x0b, 0x09, 0x01, 0x3c, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x0b, 0x0b, 0x08, + 0x00, 0x1e, 0x93, 0xf8, 0xff, 0xfe, 0xfe, 0xfe, 0xfd, 0xff, 0x0b, 0x0a, 0x0b, 0x09, 0x00, 0x00, + 0x24, 0xbe, 0xff, 0xfe, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x05, 0x05, 0x7c, 0xb1, 0x40, 0x96, + 0xec, 0xfe, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x03, 0x0f, 0xd7, 0xff, 0x54, 0x00, 0xde, 0xff, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x09, 0x03, 0x0f, 0x5e, 0xc5, 0x94, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xff, 0xfc, 0xfb, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5f, 0xff, 0xd9, 0xf8, 0xfc, 0xfc, 0x0b, 0x09, 0x00, 0x45, 0xeb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd4, 0x0b, 0x0b, 0x08, 0x00, 0x25, 0xa0, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfc, 0x0b, 0x0a, 0x0b, 0x08, 0x00, 0x00, 0x3d, 0xdc, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, + 0x0b, 0x0b, 0x05, 0x04, 0x64, 0x97, 0x6c, 0xd4, 0xf8, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x02, + 0x12, 0xe4, 0xff, 0x4f, 0x07, 0xe5, 0xff, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x08, 0x03, 0x20, 0x7d, + 0xb2, 0x70, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xff, 0xfe, + 0xfb, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0xff, 0xf3, 0xfc, 0xfc, 0xfc, + 0x0b, 0x09, 0x02, 0x37, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0x0b, 0x0b, 0x08, + 0x00, 0x1c, 0x98, 0xfd, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xf7, 0x0b, 0x0a, 0x0b, 0x0a, 0x00, 0x00, + 0x43, 0xe4, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x06, 0x02, 0x50, 0x8d, 0x80, 0xe5, + 0xfb, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x03, 0x0a, 0xdb, 0xff, 0x60, 0x14, 0xe8, 0xff, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x07, 0x03, 0x23, 0x81, 0xb1, 0x61, 0xfe, 0xfd, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xff, 0xfd, 0xfb, 0xfc, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0xff, 0xf8, 0xfc, 0xfc, 0xfc, 0x0b, 0x0b, 0x02, 0x26, 0xd2, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdd, 0x0b, 0x0b, 0x09, 0x00, 0x13, 0x90, 0xfc, 0xff, 0xfe, 0xfe, 0xfe, + 0xfe, 0xf2, 0x0b, 0x0a, 0x0b, 0x0a, 0x00, 0x00, 0x46, 0xe7, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0x0b, + 0x0b, 0x0b, 0x07, 0x03, 0x37, 0x82, 0x93, 0xf2, 0xfc, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x03, + 0x01, 0xc8, 0xff, 0x7a, 0x23, 0xea, 0xff, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x08, 0x03, 0x23, 0x81, + 0xb6, 0x56, 0xfc, 0xfd, 0xfd, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xfe, 0xfd, + 0xfb, 0xfc, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xff, 0xfb, 0xfc, 0xfb, 0xfc, + 0x0b, 0x0b, 0x03, 0x1f, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x0b, 0x0b, 0x09, + 0x00, 0x11, 0x96, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xeb, 0x0b, 0x0a, 0x0b, 0x0a, 0x00, 0x00, + 0x4e, 0xec, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0x0b, 0x0b, 0x0b, 0x08, 0x02, 0x22, 0x71, 0xa6, 0xfc, + 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x04, 0x00, 0xb2, 0xff, 0x95, 0x39, 0xef, 0xff, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x08, 0x03, 0x23, 0x85, 0xbc, 0x50, 0xfb, 0xfd, 0xfd, 0xfa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xfa, 0xfd, 0xfb, 0xfc, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x97, 0xff, 0xfb, 0xfc, 0xfb, 0xfc, 0x0b, 0x0b, 0x03, 0x18, 0xc9, 0xff, 0xf3, 0xe7, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0x0b, 0x0b, 0x09, 0x00, 0x13, 0xa5, 0xff, 0xff, 0xfd, 0xfe, 0xfe, + 0xff, 0xdf, 0x0b, 0x0a, 0x0b, 0x0a, 0x00, 0x00, 0x66, 0xf3, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0x0b, + 0x0b, 0x0b, 0x09, 0x05, 0x04, 0x4b, 0xc8, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x05, + 0x00, 0x7e, 0xff, 0xcd, 0x75, 0xf8, 0xfe, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x08, 0x02, 0x25, 0x98, + 0xc8, 0x54, 0xfc, 0xfd, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xa1, 0xf5, 0xfd, + 0xfb, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, + 0x0b, 0x0b, 0x04, 0x17, 0xcd, 0xff, 0xee, 0xd3, 0xf8, 0xff, 0xff, 0xff, 0xfd, 0x0b, 0x0b, 0x09, + 0x00, 0x17, 0xaf, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xff, 0xdc, 0x0b, 0x0a, 0x0a, 0x09, 0x00, 0x00, + 0x75, 0xf8, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x09, 0x06, 0x00, 0x38, 0xd6, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x08, 0x00, 0x64, 0xff, 0xe7, 0x97, 0xfb, 0xfd, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x09, 0x02, 0x25, 0xa5, 0xd0, 0x5e, 0xfc, 0xfd, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x92, 0xf5, 0xfc, 0xfb, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x74, 0xff, 0xfb, 0xfc, 0xfc, 0xfc, 0x0b, 0x0b, 0x03, 0x1e, 0xd7, 0xff, 0xe7, 0xbf, + 0xed, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x09, 0x00, 0x1f, 0xbe, 0xff, 0xff, 0xff, 0xfd, 0xfe, + 0xff, 0xd9, 0x0b, 0x0a, 0x0b, 0x09, 0x00, 0x00, 0x8a, 0xfb, 0xfd, 0xfd, 0xfd, 0xfd, 0xfb, 0x0b, + 0x0b, 0x0b, 0x0a, 0x07, 0x00, 0x2a, 0xda, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x09, + 0x00, 0x4c, 0xfb, 0xf2, 0xaf, 0xfc, 0xfd, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x09, 0x01, 0x26, 0xb1, + 0xd9, 0x6d, 0xfd, 0xfd, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xf7, 0xfc, + 0xfb, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, + 0x0b, 0x0b, 0x01, 0x2b, 0xe3, 0xff, 0xdd, 0xaa, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x08, + 0x00, 0x2c, 0xd0, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xff, 0xd4, 0x0b, 0x0a, 0x0b, 0x08, 0x00, 0x0b, + 0xa3, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xf5, 0x0b, 0x0b, 0x0b, 0x0b, 0x06, 0x00, 0x23, 0xde, 0xff, + 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x38, 0xea, 0xf7, 0xc4, 0xfd, 0xfd, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x0a, 0x01, 0x25, 0xbd, 0xe2, 0x7d, 0xfe, 0xfd, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xfa, 0xfc, 0xfb, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0x0b, 0x08, 0x00, 0x78, 0xff, 0xff, 0xa8, 0x7b, + 0xd4, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x05, 0x00, 0x7f, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xfe, + 0xff, 0xba, 0x0b, 0x0a, 0x0a, 0x04, 0x00, 0x45, 0xdc, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xdb, 0x0b, + 0x0b, 0x0b, 0x0b, 0x03, 0x00, 0x30, 0xe9, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, + 0x01, 0x1b, 0xc2, 0xfa, 0xde, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x0a, 0x01, 0x20, 0xcd, + 0xf0, 0x9c, 0xfe, 0xfd, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xfe, 0xfc, + 0xfb, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, + 0x0b, 0x05, 0x05, 0xb5, 0xff, 0xfe, 0x6b, 0x68, 0xde, 0xff, 0xff, 0xff, 0xff, 0x0b, 0x08, 0x01, + 0x25, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xff, 0xa2, 0x0b, 0x0b, 0x08, 0x00, 0x07, 0x7e, + 0xf6, 0xfe, 0xfd, 0xfd, 0xfd, 0xfe, 0xc1, 0x0b, 0x0b, 0x0b, 0x0a, 0x00, 0x00, 0x4e, 0xf2, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x01, 0x11, 0xae, 0xfc, 0xe8, 0xfd, 0xfd, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x0b, 0x01, 0x1c, 0xd2, 0xf5, 0xac, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x21, 0xf7, 0xfe, 0xfc, 0xfc, 0xfc, 0x0b, 0x02, 0x1b, 0xbc, 0xff, 0xd7, 0x2e, 0x67, + 0xee, 0xff, 0xff, 0xff, 0xe9, 0x0b, 0x04, 0x07, 0x7f, 0xfc, 0xff, 0xfb, 0xff, 0xff, 0xfd, 0xff, + 0xf2, 0x8e, 0x0b, 0x09, 0x03, 0x00, 0x37, 0xba, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xf8, 0xa2, 0x0b, + 0x0b, 0x0b, 0x06, 0x00, 0x00, 0x76, 0xf8, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, + 0x03, 0x0a, 0xa0, 0xfd, 0xef, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x0a, 0x02, 0x19, 0xd4, + 0xf7, 0xba, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x5b, 0xff, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xf1, 0xfe, 0xfc, 0xfc, 0xfc, + 0x0a, 0x03, 0x1e, 0x95, 0xff, 0xa7, 0x07, 0x77, 0xf9, 0xff, 0xff, 0xff, 0xc1, 0x0a, 0x00, 0x31, + 0xd2, 0xff, 0xf2, 0xe7, 0xff, 0xff, 0xfd, 0xff, 0xd0, 0x87, 0x0b, 0x07, 0x00, 0x0e, 0x7a, 0xe6, + 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xe7, 0x8f, 0x0b, 0x0b, 0x0a, 0x02, 0x00, 0x15, 0xa0, 0xfb, 0xfe, + 0xfd, 0xfd, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x0a, 0x02, 0x01, 0x95, 0xfd, 0xf2, 0xfd, 0xfd, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x0b, 0x02, 0x17, 0xd7, 0xf8, 0xc4, 0xff, 0xfd, 0xfd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x5a, 0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1b, 0xf1, 0xfe, 0xfc, 0xfc, 0xf7, 0x09, 0x05, 0x00, 0x79, 0xff, 0xcd, 0x15, 0x9e, + 0xff, 0xff, 0xff, 0xf1, 0x69, 0x05, 0x00, 0x62, 0xa7, 0xf6, 0xba, 0xbb, 0xff, 0xfe, 0xfe, 0xfe, + 0x6a, 0x87, 0x07, 0x03, 0x2b, 0x92, 0xe1, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfe, 0xbf, 0x8d, 0x0b, + 0x0b, 0x01, 0x00, 0x0e, 0x5f, 0xd3, 0xfd, 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x08, + 0x00, 0x00, 0x94, 0xfe, 0xf6, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x0b, 0x00, 0x18, 0xdf, + 0xf6, 0xd1, 0xff, 0xfd, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x61, 0xfd, 0xfc, + 0xfc, 0xfe, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xf7, 0xfd, 0xfc, 0xff, 0xb5, + 0x0b, 0x02, 0x00, 0xb6, 0xf5, 0x74, 0x03, 0xa2, 0xfd, 0xff, 0xff, 0xd8, 0x4c, 0x06, 0x00, 0x35, + 0x8e, 0xf6, 0xa7, 0xb2, 0xff, 0xff, 0xff, 0xed, 0x51, 0x8a, 0x05, 0x00, 0x56, 0xc4, 0xf9, 0xff, + 0xff, 0xfd, 0xfd, 0xfd, 0xf9, 0xab, 0x85, 0x0b, 0x09, 0x00, 0x06, 0x2f, 0x82, 0xda, 0xfd, 0xfd, + 0xfd, 0xfd, 0xff, 0xff, 0x0b, 0x0b, 0x0b, 0x07, 0x00, 0x00, 0x98, 0xfd, 0xf6, 0xfd, 0xfd, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x0b, 0x00, 0x1b, 0xe3, 0xf1, 0xd5, 0xff, 0xfd, 0xfc, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x6a, 0xff, 0xfc, 0xfd, 0xf4, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2f, 0xfa, 0xfd, 0xfc, 0xff, 0x97, 0x0b, 0x03, 0x0f, 0xc2, 0x91, 0x12, 0x02, 0x9a, + 0xf6, 0xff, 0xff, 0xb7, 0x32, 0x08, 0x01, 0x1c, 0xb5, 0xff, 0x82, 0xaa, 0xff, 0xff, 0xff, 0xd6, + 0x55, 0x8e, 0x05, 0x00, 0x58, 0xd1, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xee, 0x92, 0x71, 0x08, + 0x08, 0x03, 0x1b, 0x4f, 0x98, 0xdc, 0xfd, 0xfd, 0xfd, 0xfe, 0xff, 0xff, 0x0b, 0x0b, 0x09, 0x04, + 0x00, 0x00, 0xa0, 0xfc, 0xf5, 0xfd, 0xfd, 0xfd, 0xfd, 0x0b, 0x0a, 0x0a, 0x0b, 0x00, 0x1f, 0xe5, + 0xe9, 0xd8, 0xff, 0xfd, 0xf9, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x75, 0xff, 0xfc, + 0xfe, 0xe4, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xfd, 0xfc, 0xfc, 0xff, 0x79, + 0x0b, 0x04, 0x12, 0x67, 0x1a, 0x00, 0x04, 0x90, 0xe1, 0xfe, 0xe9, 0x8c, 0x1a, 0x09, 0x00, 0x2e, + 0xeb, 0xd7, 0x55, 0xa4, 0xff, 0xff, 0xff, 0xc2, 0x6b, 0x8f, 0x07, 0x00, 0x45, 0xdc, 0xff, 0xff, + 0xff, 0xfd, 0xfd, 0xfe, 0xdc, 0x76, 0x5a, 0x09, 0x07, 0x08, 0x2a, 0x62, 0xa3, 0xdd, 0xfe, 0xfd, + 0xfd, 0xff, 0xff, 0xff, 0x0b, 0x0b, 0x09, 0x02, 0x00, 0x02, 0xa9, 0xf8, 0xf3, 0xfd, 0xfd, 0xfd, + 0xfd, 0x0b, 0x0a, 0x0a, 0x0b, 0x00, 0x23, 0xe2, 0xe2, 0xdc, 0xff, 0xfd, 0xfc, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x81, 0xff, 0xfb, 0xff, 0xdf, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x47, 0xff, 0xfc, 0xfc, 0xfb, 0x84, 0x0b, 0x09, 0x05, 0x00, 0x00, 0x00, 0x02, 0x71, + 0xba, 0xc5, 0x9a, 0x2e, 0x00, 0x0b, 0x03, 0x19, 0x96, 0x81, 0x31, 0x93, 0xff, 0xff, 0xff, 0xb1, + 0x99, 0x6e, 0x0b, 0x00, 0x2a, 0xf6, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfe, 0xa1, 0x4f, 0x38, 0x0b, + 0x07, 0x03, 0x1e, 0x5a, 0x9a, 0xda, 0xfe, 0xfd, 0xfd, 0xff, 0xff, 0xf6, 0x0b, 0x0a, 0x08, 0x02, + 0x00, 0x0a, 0xbe, 0xed, 0xf3, 0xfd, 0xfd, 0xfd, 0xff, 0x0b, 0x08, 0x0a, 0x0b, 0x00, 0x28, 0xd3, + 0xce, 0xe7, 0xff, 0xfd, 0xfe, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xff, 0xfc, + 0xff, 0xd7, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xf9, 0xfb, 0xfe, 0xe1, 0xc9, + 0x0b, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x60, 0xa2, 0xa8, 0x6c, 0x10, 0x00, 0x0b, 0x05, 0x05, + 0x67, 0x93, 0x35, 0x87, 0xff, 0xff, 0xff, 0xb2, 0x98, 0x4e, 0x0b, 0x01, 0x13, 0xd7, 0xff, 0xff, + 0xff, 0xfd, 0xfd, 0xff, 0x82, 0x49, 0x2d, 0x0b, 0x08, 0x03, 0x11, 0x48, 0x8a, 0xd6, 0xff, 0xfd, + 0xfd, 0xff, 0xff, 0xea, 0x0a, 0x09, 0x09, 0x04, 0x00, 0x10, 0xc9, 0xe3, 0xf3, 0xfe, 0xfd, 0xfe, + 0xff, 0x0a, 0x08, 0x09, 0x0b, 0x00, 0x26, 0xc4, 0xc7, 0xee, 0xfe, 0xfd, 0xf9, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xff, 0xfc, 0xff, 0xa5, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa5, 0xe9, 0xf9, 0xfe, 0xdd, 0xe6, 0x0b, 0x0b, 0x08, 0x02, 0x00, 0x00, 0x00, 0x4e, + 0x89, 0x88, 0x44, 0x01, 0x01, 0x0b, 0x07, 0x02, 0x32, 0xa7, 0x5b, 0x77, 0xff, 0xff, 0xff, 0xac, + 0x84, 0x2b, 0x0a, 0x04, 0x02, 0xa0, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0xf3, 0x6a, 0x4d, 0x23, 0x0a, + 0x08, 0x05, 0x07, 0x34, 0x75, 0xd0, 0xff, 0xfd, 0xfd, 0xff, 0xfb, 0xe0, 0x09, 0x08, 0x09, 0x06, + 0x00, 0x17, 0xd0, 0xd6, 0xf5, 0xfd, 0xfd, 0xff, 0xff, 0x0a, 0x09, 0x07, 0x0b, 0x01, 0x23, 0xac, + 0xc5, 0xf4, 0xfe, 0xf8, 0xea, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xfd, + 0xf8, 0x7b, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xcb, 0xf8, 0xfe, 0xe7, 0xf6, + 0x0b, 0x09, 0x09, 0x04, 0x02, 0x01, 0x00, 0x3e, 0x70, 0x6a, 0x26, 0x00, 0x04, 0x09, 0x07, 0x03, + 0x13, 0x9a, 0x96, 0x6e, 0xfe, 0xff, 0xf7, 0xa1, 0x66, 0x12, 0x09, 0x06, 0x00, 0x6f, 0xf0, 0xff, + 0xff, 0xfe, 0xfe, 0xe3, 0x5f, 0x54, 0x1b, 0x0a, 0x08, 0x06, 0x03, 0x21, 0x5f, 0xc9, 0xff, 0xfd, + 0xfe, 0xff, 0xfa, 0xc5, 0x0a, 0x09, 0x09, 0x07, 0x00, 0x1e, 0xda, 0xc8, 0xf7, 0xfd, 0xff, 0xff, + 0xf7, 0x0a, 0x09, 0x08, 0x0b, 0x02, 0x1d, 0x93, 0xc9, 0xfa, 0xfe, 0xe5, 0xc6, 0xdd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xff, 0xff, 0xe2, 0x7c, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0xc6, 0x9f, 0xf6, 0xfe, 0xf5, 0xff, 0x0b, 0x0a, 0x09, 0x04, 0x00, 0x06, 0x00, 0x22, + 0x41, 0x33, 0x05, 0x00, 0x09, 0x0a, 0x0a, 0x02, 0x15, 0x95, 0xa3, 0x5b, 0xed, 0xff, 0xd6, 0x7b, + 0x28, 0x02, 0x08, 0x08, 0x00, 0x34, 0xd8, 0xfd, 0xff, 0xff, 0xff, 0xb5, 0x61, 0x43, 0x01, 0x0b, + 0x0a, 0x05, 0x00, 0x04, 0x36, 0xbd, 0xff, 0xfd, 0xff, 0xff, 0xe9, 0x2c, 0x09, 0x07, 0x08, 0x09, + 0x00, 0x2c, 0xe4, 0xb5, 0xfe, 0xfc, 0xf8, 0xfd, 0xc6, 0x08, 0x07, 0x08, 0x0a, 0x04, 0x0b, 0x62, + 0xe5, 0xff, 0xfc, 0x71, 0x8c, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xef, 0xef, 0xff, + 0xcb, 0xdb, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xa8, 0x50, 0xfd, 0xff, 0xfa, 0xff, + 0x0b, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, 0x17, 0x2d, 0x1c, 0x00, 0x04, 0x0a, 0x0a, 0x0b, 0x03, + 0x16, 0xa5, 0x8c, 0x4f, 0xe4, 0xfb, 0xbc, 0x5e, 0x10, 0x04, 0x08, 0x09, 0x00, 0x1a, 0xc1, 0xf7, + 0xff, 0xff, 0xff, 0x9c, 0x63, 0x26, 0x00, 0x0b, 0x09, 0x04, 0x00, 0x00, 0x2a, 0xb9, 0xfd, 0xfd, + 0xff, 0xff, 0xb6, 0x00, 0x09, 0x08, 0x09, 0x09, 0x00, 0x2f, 0xdc, 0xb3, 0xff, 0xfa, 0xe6, 0xee, + 0x9b, 0x08, 0x07, 0x09, 0x09, 0x04, 0x01, 0x50, 0xf7, 0xff, 0xf3, 0x5b, 0x89, 0x85, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0xe2, 0xd1, 0xff, 0xe2, 0xf8, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x71, 0x6c, 0xff, 0xff, 0xf9, 0xf2, 0x0b, 0x0a, 0x0a, 0x05, 0x00, 0x00, 0x00, 0x0f, + 0x1c, 0x0a, 0x00, 0x07, 0x0a, 0x09, 0x0a, 0x03, 0x09, 0x97, 0x73, 0x47, 0xd9, 0xed, 0x9f, 0x3d, + 0x04, 0x08, 0x08, 0x08, 0x04, 0x07, 0x9a, 0xee, 0xfe, 0xff, 0xff, 0x88, 0x58, 0x08, 0x00, 0x0a, + 0x09, 0x07, 0x00, 0x00, 0x22, 0xb9, 0xf7, 0xfd, 0xff, 0xf7, 0x72, 0x00, 0x09, 0x08, 0x08, 0x09, + 0x00, 0x2d, 0xcc, 0xbb, 0xff, 0xf7, 0xdc, 0xd6, 0x54, 0x08, 0x07, 0x09, 0x09, 0x06, 0x00, 0x46, + 0xff, 0xff, 0xe2, 0x79, 0x92, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xbe, 0xb6, 0xfe, + 0xf8, 0xff, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x55, 0xb6, 0xff, 0xfc, 0xfa, 0xc6, + 0x0b, 0x0b, 0x09, 0x09, 0x01, 0x00, 0x00, 0x09, 0x0f, 0x01, 0x02, 0x09, 0x09, 0x0a, 0x0a, 0x05, + 0x01, 0x76, 0x6b, 0x43, 0xce, 0xda, 0x7f, 0x20, 0x01, 0x08, 0x09, 0x08, 0x04, 0x00, 0x73, 0xe4, + 0xfc, 0xff, 0xf7, 0x7c, 0x44, 0x00, 0x02, 0x0a, 0x09, 0x06, 0x04, 0x00, 0x1e, 0xb8, 0xf1, 0xfe, + 0xff, 0xe1, 0x41, 0x00, 0x09, 0x08, 0x09, 0x08, 0x00, 0x26, 0xb6, 0xc7, 0xff, 0xf0, 0xd6, 0xaf, + 0x1e, 0x09, 0x08, 0x09, 0x08, 0x05, 0x00, 0x41, 0xff, 0xff, 0xd5, 0xa7, 0xa6, 0x1a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x88, 0xb7, 0xff, 0xff, 0xfb, 0x72, 0x5b, 0x46, 0x35, 0x28, 0x0e, + 0x1f, 0xaa, 0x8a, 0xe9, 0xfd, 0xfc, 0xee, 0xbe, 0x09, 0x0a, 0x0a, 0x08, 0x05, 0x00, 0x00, 0x02, + 0x02, 0x00, 0x08, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x01, 0x2b, 0x81, 0x48, 0xb9, 0xad, 0x3d, 0x06, + 0x04, 0x0a, 0x0a, 0x08, 0x06, 0x00, 0x35, 0xc2, 0xf7, 0xff, 0xdb, 0x73, 0x11, 0x00, 0x08, 0x09, + 0x09, 0x08, 0x05, 0x00, 0x18, 0xb6, 0xe8, 0xff, 0xff, 0x9d, 0x19, 0x01, 0x08, 0x0a, 0x08, 0x09, + 0x02, 0x14, 0x94, 0xe7, 0xff, 0xda, 0xbf, 0x3d, 0x00, 0x01, 0x04, 0x04, 0x06, 0x07, 0x00, 0x44, + 0xd5, 0xf2, 0xdc, 0xec, 0x53, 0x00, 0x2a, 0x18, 0x0b, 0x09, 0x02, 0x01, 0x75, 0x6e, 0xe8, 0xff, + 0xf9, 0xaf, 0xa3, 0xd7, 0xd5, 0xcc, 0x9c, 0x95, 0xa7, 0xe1, 0xf2, 0xfe, 0xfb, 0xfc, 0xf8, 0xf9, + 0x0a, 0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x09, 0x09, 0x07, 0x08, 0x08, + 0x01, 0x19, 0x7b, 0x4f, 0xae, 0x94, 0x27, 0x03, 0x05, 0x09, 0x08, 0x08, 0x05, 0x01, 0x23, 0xaf, + 0xf4, 0xff, 0xcf, 0x6b, 0x00, 0x00, 0x09, 0x09, 0x08, 0x07, 0x06, 0x00, 0x15, 0xb3, 0xe7, 0xff, + 0xfd, 0x78, 0x08, 0x03, 0x08, 0x09, 0x09, 0x08, 0x05, 0x0b, 0x85, 0xf5, 0xfa, 0xce, 0xa9, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb2, 0xf1, 0xed, 0xe3, 0x38, 0x15, 0x76, 0x5e, + 0x44, 0x39, 0x30, 0x34, 0x98, 0x97, 0xf8, 0xff, 0xee, 0xcd, 0xde, 0x89, 0x94, 0xdb, 0x96, 0x72, + 0x7f, 0xc8, 0xff, 0xfc, 0xfb, 0xfd, 0xff, 0xff, 0x0a, 0x09, 0x09, 0x09, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x09, 0x09, 0x0a, 0x08, 0x09, 0x0a, 0x03, 0x10, 0x6e, 0x4e, 0xa4, 0x7c, 0x16, 0x02, + 0x07, 0x0a, 0x09, 0x08, 0x08, 0x02, 0x15, 0x9f, 0xf1, 0xff, 0xc4, 0x57, 0x00, 0x03, 0x09, 0x0a, + 0x07, 0x07, 0x06, 0x00, 0x13, 0xaf, 0xe8, 0xff, 0xec, 0x51, 0x02, 0x05, 0x07, 0x08, 0x08, 0x09, + 0x05, 0x01, 0x79, 0xf9, 0xed, 0xc7, 0x83, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, + 0x9d, 0xf6, 0xfa, 0xc4, 0x48, 0x21, 0xa0, 0xa2, 0x92, 0x6f, 0x60, 0x68, 0xbb, 0xcb, 0xff, 0xfd, + 0xf0, 0xf7, 0xec, 0x2a, 0x42, 0x7d, 0x9b, 0x3e, 0x3d, 0x97, 0xe7, 0xef, 0xfc, 0xfe, 0xf0, 0xfc, + 0x0a, 0x0a, 0x08, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x08, 0x0b, 0x09, 0x09, 0x09, + 0x03, 0x0d, 0x63, 0x4b, 0x9a, 0x65, 0x0b, 0x06, 0x07, 0x09, 0x09, 0x07, 0x08, 0x02, 0x0c, 0x91, + 0xee, 0xff, 0xb9, 0x41, 0x00, 0x04, 0x09, 0x0a, 0x08, 0x07, 0x06, 0x00, 0x11, 0xac, 0xeb, 0xff, + 0xd2, 0x2f, 0x00, 0x05, 0x04, 0x05, 0x06, 0x08, 0x05, 0x00, 0x72, 0xf7, 0xdd, 0xc8, 0x57, 0x00, + 0x00, 0x20, 0x14, 0x06, 0x02, 0x00, 0x00, 0x58, 0x97, 0xfc, 0xfe, 0xb6, 0x66, 0x3b, 0x88, 0xb2, + 0xb3, 0xa7, 0x77, 0x81, 0xcc, 0xf2, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x0d, 0x1f, 0x65, 0x1e, + 0x0b, 0x55, 0x8f, 0xb4, 0xf5, 0xdc, 0xa3, 0xc7, 0x0a, 0x09, 0x08, 0x09, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x07, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x03, 0x0a, 0x4e, 0x40, 0x84, 0x3f, 0x03, 0x06, + 0x08, 0x09, 0x09, 0x07, 0x07, 0x03, 0x05, 0x7d, 0xe7, 0xff, 0xa2, 0x1a, 0x00, 0x08, 0x09, 0x0a, + 0x09, 0x06, 0x05, 0x00, 0x0b, 0xa4, 0xf2, 0xf2, 0x97, 0x04, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x62, 0xe4, 0xd6, 0xc1, 0x1d, 0x00, 0x00, 0x3d, 0x66, 0x58, 0x45, 0x31, 0x31, 0x86, + 0xc1, 0xff, 0xf5, 0xc9, 0xa1, 0x9f, 0x15, 0x51, 0x6a, 0x9e, 0x72, 0x51, 0xac, 0xe2, 0xf3, 0xff, + 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x08, 0x41, 0x7a, 0x18, 0x28, 0x46, + 0x0a, 0x09, 0x08, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0x0a, 0x0b, 0x09, 0x09, 0x09, + 0x04, 0x09, 0x45, 0x3e, 0x7a, 0x2e, 0x01, 0x06, 0x08, 0x09, 0x09, 0x07, 0x08, 0x03, 0x01, 0x74, + 0xe4, 0xff, 0x94, 0x0c, 0x00, 0x08, 0x09, 0x09, 0x09, 0x06, 0x05, 0x00, 0x07, 0xa0, 0xf6, 0xed, + 0x78, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xdc, 0xdf, 0xab, 0x19, 0x00, + 0x01, 0x20, 0x77, 0x7c, 0x70, 0x53, 0x4c, 0xa2, 0xdf, 0xff, 0xf1, 0xdf, 0xc4, 0xcb, 0x02, 0x1e, + 0x3a, 0x60, 0x5e, 0x2d, 0x80, 0xac, 0xde, 0xe7, 0xbc, 0xe1, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x22, 0x2f, 0x00, 0x07, 0x1c, 0x09, 0x09, 0x07, 0x09, 0x07, 0x00, 0x00, 0x00, + 0x02, 0x09, 0x06, 0x0a, 0x0b, 0x09, 0x08, 0x08, 0x05, 0x06, 0x42, 0x41, 0x71, 0x22, 0x01, 0x06, + 0x08, 0x0a, 0x08, 0x07, 0x08, 0x03, 0x00, 0x6a, 0xe2, 0xfd, 0x88, 0x04, 0x03, 0x07, 0x08, 0x07, + 0x08, 0x06, 0x05, 0x00, 0x03, 0x9b, 0xf8, 0xe6, 0x5c, 0x00, 0x00, 0x04, 0x08, 0x09, 0x01, 0x00, + 0x00, 0x00, 0x5a, 0xd7, 0xe7, 0x95, 0x23, 0x0c, 0x12, 0x0b, 0x6b, 0x8d, 0x8c, 0x76, 0x5c, 0xb3, + 0xf0, 0xff, 0xf8, 0xf4, 0xe4, 0xea, 0x00, 0x02, 0x15, 0x2b, 0x3c, 0x14, 0x51, 0x72, 0xc2, 0xab, + 0x85, 0xb3, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x06, + 0x09, 0x08, 0x09, 0x0a, 0x08, 0x00, 0x00, 0x00, 0x04, 0x08, 0x06, 0x0a, 0x0a, 0x0a, 0x07, 0x0a, + 0x05, 0x03, 0x43, 0x49, 0x69, 0x1a, 0x00, 0x06, 0x08, 0x0a, 0x09, 0x07, 0x08, 0x03, 0x00, 0x5d, + 0xe0, 0xf9, 0x81, 0x01, 0x03, 0x06, 0x08, 0x09, 0x06, 0x05, 0x05, 0x01, 0x00, 0x97, 0xfa, 0xe0, + 0x45, 0x00, 0x00, 0x01, 0x08, 0x14, 0x0f, 0x08, 0x01, 0x00, 0x5a, 0xd4, 0xed, 0x8e, 0x33, 0x1f, + 0x24, 0x02, 0x46, 0x85, 0x8e, 0x8a, 0x63, 0xb3, 0xf1, 0xff, 0xff, 0xff, 0xfd, 0xfe, 0x00, 0x00, + 0x00, 0x0a, 0x19, 0x05, 0x2a, 0x41, 0x9d, 0x67, 0x57, 0x82, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x09, 0x09, 0x0a, 0x08, 0x02, 0x00, 0x00, + 0x05, 0x09, 0x08, 0x0a, 0x0a, 0x0b, 0x08, 0x08, 0x06, 0x00, 0x40, 0x5d, 0x57, 0x0f, 0x00, 0x07, + 0x08, 0x09, 0x09, 0x08, 0x06, 0x02, 0x00, 0x3f, 0xd9, 0xf3, 0x78, 0x03, 0x03, 0x05, 0x09, 0x09, + 0x06, 0x00, 0x01, 0x00, 0x00, 0x8f, 0xf7, 0xc6, 0x2b, 0x00, 0x00, 0x00, 0x04, 0x13, 0x36, 0x2b, + 0x1e, 0x0e, 0x64, 0xdb, 0xf5, 0xb3, 0x5e, 0x55, 0x3c, 0x05, 0x11, 0x58, 0x6f, 0x7b, 0x56, 0x98, + 0xd5, 0xf8, 0xda, 0xf9, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x46, 0x09, + 0x1a, 0x3c, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x08, 0x08, 0x0a, 0x08, 0x03, 0x00, 0x00, 0x06, 0x09, 0x08, 0x09, 0x09, 0x0b, 0x08, 0x08, + 0x07, 0x00, 0x38, 0x59, 0x51, 0x0a, 0x00, 0x08, 0x07, 0x09, 0x0a, 0x08, 0x06, 0x02, 0x00, 0x37, + 0xd6, 0xef, 0x70, 0x05, 0x02, 0x06, 0x08, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xf4, 0xb6, + 0x1f, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x3f, 0x3c, 0x2f, 0x1c, 0x72, 0xe5, 0xf8, 0xc0, 0x74, 0x6e, + 0x3d, 0x07, 0x06, 0x3c, 0x5a, 0x6a, 0x48, 0x87, 0xc0, 0xde, 0xb5, 0xe9, 0xff, 0xee, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x08, 0x27, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x0a, 0x08, 0x02, 0x00, 0x00, + 0x07, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x08, 0x07, 0x08, 0x01, 0x34, 0x53, 0x4c, 0x07, 0x00, 0x08, + 0x07, 0x09, 0x0a, 0x08, 0x05, 0x03, 0x00, 0x33, 0xd3, 0xeb, 0x67, 0x03, 0x02, 0x06, 0x09, 0x08, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x86, 0xf0, 0xaa, 0x15, 0x00, 0x00, 0x00, 0x05, 0x09, 0x44, 0x4c, + 0x40, 0x28, 0x7d, 0xed, 0xf6, 0xc6, 0x88, 0x88, 0x3b, 0x07, 0x02, 0x25, 0x45, 0x58, 0x3c, 0x6f, + 0xa8, 0xc0, 0x97, 0xd4, 0xf9, 0xba, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x14, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x09, 0x0a, 0x09, 0x02, 0x00, 0x00, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x08, 0x08, + 0x08, 0x01, 0x31, 0x4f, 0x46, 0x04, 0x01, 0x07, 0x07, 0x09, 0x0a, 0x08, 0x05, 0x03, 0x00, 0x2f, + 0xd2, 0xe7, 0x61, 0x01, 0x01, 0x06, 0x08, 0x07, 0x07, 0x02, 0x00, 0x00, 0x00, 0x80, 0xf1, 0xa1, + 0x0f, 0x00, 0x00, 0x01, 0x05, 0x04, 0x3e, 0x5a, 0x4f, 0x34, 0x84, 0xf3, 0xf5, 0xc8, 0x9f, 0x9b, + 0x33, 0x07, 0x01, 0x15, 0x33, 0x47, 0x30, 0x58, 0x8e, 0xa1, 0x7f, 0xbc, 0xe4, 0x7d, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x0a, 0x09, 0x01, 0x00, 0x00, + 0x07, 0x08, 0x08, 0x0a, 0x08, 0x0a, 0x09, 0x07, 0x09, 0x02, 0x29, 0x49, 0x3c, 0x00, 0x02, 0x07, + 0x07, 0x09, 0x0a, 0x09, 0x05, 0x04, 0x00, 0x28, 0xcd, 0xdf, 0x4a, 0x00, 0x02, 0x04, 0x09, 0x06, + 0x08, 0x08, 0x01, 0x00, 0x00, 0x79, 0xf2, 0x92, 0x07, 0x00, 0x00, 0x03, 0x07, 0x01, 0x28, 0x67, + 0x66, 0x44, 0x90, 0xf6, 0xf1, 0xd1, 0xcb, 0xa9, 0x18, 0x09, 0x04, 0x05, 0x13, 0x26, 0x19, 0x2a, + 0x5c, 0x63, 0x51, 0x89, 0x99, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x08, 0x09, 0x0a, 0x01, 0x00, 0x01, 0x07, 0x08, 0x08, 0x0a, 0x09, 0x0b, 0x0a, 0x06, + 0x08, 0x02, 0x24, 0x44, 0x36, 0x00, 0x04, 0x06, 0x08, 0x09, 0x0a, 0x08, 0x06, 0x05, 0x00, 0x26, + 0xca, 0xdb, 0x3b, 0x00, 0x00, 0x04, 0x0a, 0x06, 0x07, 0x0a, 0x06, 0x00, 0x00, 0x77, 0xf5, 0x8c, + 0x09, 0x00, 0x00, 0x04, 0x07, 0x02, 0x1b, 0x64, 0x6d, 0x47, 0x92, 0xf4, 0xe9, 0xd5, 0xdc, 0x9c, + 0x08, 0x0a, 0x04, 0x03, 0x09, 0x19, 0x12, 0x17, 0x45, 0x45, 0x3a, 0x6e, 0x67, 0x0a, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x08, 0x09, 0x01, 0x00, 0x01, + 0x07, 0x09, 0x08, 0x07, 0x08, 0x0a, 0x07, 0x07, 0x08, 0x03, 0x20, 0x40, 0x31, 0x00, 0x05, 0x05, + 0x08, 0x09, 0x08, 0x06, 0x05, 0x06, 0x00, 0x22, 0xc7, 0xd6, 0x2d, 0x00, 0x00, 0x04, 0x09, 0x03, + 0x07, 0x0a, 0x0e, 0x00, 0x00, 0x77, 0xf7, 0x83, 0x0e, 0x0b, 0x00, 0x06, 0x07, 0x01, 0x10, 0x59, + 0x6f, 0x48, 0x8f, 0xec, 0xe1, 0xd7, 0xe9, 0x81, 0x00, 0x0a, 0x06, 0x02, 0x04, 0x10, 0x0c, 0x0b, + 0x30, 0x2d, 0x27, 0x54, 0x3c, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x08, 0x08, 0x0a, 0x02, 0x00, 0x02, 0x07, 0x08, 0x08, 0x08, 0x08, 0x0b, 0x07, 0x07, + 0x08, 0x03, 0x1b, 0x3c, 0x2d, 0x00, 0x05, 0x04, 0x08, 0x09, 0x08, 0x08, 0x05, 0x05, 0x00, 0x1e, + 0xc4, 0xd0, 0x1f, 0x00, 0x00, 0x03, 0x09, 0x05, 0x06, 0x08, 0x15, 0x08, 0x00, 0x78, 0xfa, 0x7a, + 0x16, 0x17, 0x02, 0x05, 0x07, 0x03, 0x0a, 0x4a, 0x6d, 0x46, 0x86, 0xe1, 0xd7, 0xd5, 0xea, 0x5e, + 0x00, 0x0a, 0x08, 0x03, 0x01, 0x08, 0x07, 0x03, 0x1f, 0x1b, 0x19, 0x3c, 0x1f, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x07, 0x09, 0x09, 0x03, 0x00, 0x02, + 0x08, 0x07, 0x07, 0x08, 0x07, 0x0a, 0x09, 0x07, 0x09, 0x04, 0x12, 0x39, 0x25, 0x00, 0x07, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x07, 0x02, 0x00, 0x14, 0xbe, 0xc5, 0x0b, 0x00, 0x00, 0x03, 0x08, 0x06, + 0x04, 0x05, 0x1c, 0x19, 0x06, 0x7b, 0xfe, 0x75, 0x2b, 0x23, 0x04, 0x04, 0x07, 0x05, 0x04, 0x2b, + 0x58, 0x43, 0x6a, 0xc3, 0xba, 0xc8, 0xcf, 0x20, 0x01, 0x0a, 0x09, 0x05, 0x01, 0x02, 0x01, 0x00, + 0x09, 0x03, 0x07, 0x17, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x06, 0x09, 0x09, 0x03, 0x00, 0x02, 0x08, 0x07, 0x08, 0x08, 0x07, 0x0a, 0x09, 0x06, + 0x07, 0x04, 0x11, 0x39, 0x22, 0x00, 0x07, 0x06, 0x06, 0x09, 0x09, 0x08, 0x07, 0x00, 0x00, 0x0f, + 0xbb, 0xbe, 0x04, 0x00, 0x00, 0x04, 0x09, 0x06, 0x04, 0x03, 0x1c, 0x23, 0x0d, 0x7b, 0xfe, 0x79, + 0x3a, 0x29, 0x03, 0x04, 0x07, 0x05, 0x02, 0x1f, 0x4b, 0x3d, 0x5b, 0xaf, 0xa6, 0xc1, 0xb3, 0x0d, + 0x04, 0x0a, 0x09, 0x06, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0a, 0x07, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x07, 0x08, 0x08, 0x03, 0x01, 0x02, + 0x08, 0x06, 0x08, 0x08, 0x07, 0x09, 0x0a, 0x06, 0x08, 0x05, 0x0f, 0x39, 0x1f, 0x00, 0x06, 0x06, + 0x07, 0x08, 0x09, 0x08, 0x07, 0x02, 0x00, 0x0b, 0xb8, 0xba, 0x00, 0x00, 0x00, 0x04, 0x09, 0x06, + 0x05, 0x02, 0x1a, 0x2a, 0x14, 0x7f, 0xfd, 0x7f, 0x4a, 0x2c, 0x02, 0x03, 0x07, 0x06, 0x01, 0x17, + 0x3f, 0x36, 0x4f, 0x9b, 0x8f, 0xb6, 0x92, 0x04, 0x05, 0x09, 0x08, 0x06, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x06, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x08, 0x07, 0x08, 0x08, 0x03, 0x02, 0x04, 0x07, 0x07, 0x09, 0x08, 0x07, 0x0a, 0x09, 0x05, + 0x08, 0x04, 0x0f, 0x36, 0x1c, 0x00, 0x05, 0x04, 0x08, 0x08, 0x08, 0x07, 0x07, 0x02, 0x00, 0x08, + 0xb1, 0xb3, 0x00, 0x00, 0x00, 0x06, 0x08, 0x06, 0x06, 0x03, 0x17, 0x2f, 0x1a, 0x82, 0xfd, 0x85, + 0x59, 0x2d, 0x00, 0x04, 0x07, 0x08, 0x02, 0x10, 0x33, 0x2f, 0x44, 0x87, 0x7a, 0xa8, 0x71, 0x00, + 0x06, 0x0a, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x09, 0x07, 0x08, 0x08, 0x04, 0x02, 0x04, + 0x07, 0x07, 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x06, 0x07, 0x05, 0x0b, 0x33, 0x18, 0x00, 0x05, 0x05, + 0x08, 0x08, 0x08, 0x08, 0x06, 0x03, 0x00, 0x01, 0xab, 0xae, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, + 0x05, 0x03, 0x11, 0x36, 0x23, 0x84, 0xf8, 0x8e, 0x6e, 0x25, 0x00, 0x05, 0x09, 0x06, 0x02, 0x0a, + 0x25, 0x21, 0x31, 0x63, 0x5a, 0x8b, 0x3f, 0x00, 0x06, 0x09, 0x09, 0x04, 0x04, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x07, 0x07, 0x03, 0x02, 0x04, 0x07, 0x06, 0x09, 0x08, 0x07, 0x08, 0x0a, 0x07, + 0x05, 0x05, 0x0b, 0x33, 0x17, 0x00, 0x05, 0x05, 0x08, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x01, + 0xa9, 0xaa, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x04, 0x04, 0x0e, 0x36, 0x25, 0x84, 0xf3, 0x8f, + 0x74, 0x20, 0x00, 0x06, 0x08, 0x06, 0x03, 0x08, 0x1e, 0x1e, 0x29, 0x56, 0x50, 0x7e, 0x2d, 0x01, + 0x09, 0x09, 0x09, 0x04, 0x04, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x07, 0x07, 0x03, 0x01, 0x05, + 0x08, 0x06, 0x08, 0x08, 0x07, 0x08, 0x0a, 0x07, 0x06, 0x05, 0x0a, 0x31, 0x16, 0x00, 0x06, 0x05, + 0x09, 0x08, 0x08, 0x08, 0x04, 0x04, 0x00, 0x00, 0xa9, 0xa8, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, + 0x04, 0x04, 0x0d, 0x36, 0x27, 0x81, 0xf0, 0x90, 0x7a, 0x1b, 0x00, 0x06, 0x09, 0x06, 0x03, 0x07, + 0x19, 0x1a, 0x23, 0x4c, 0x49, 0x72, 0x21, 0x02, 0x09, 0x09, 0x09, 0x04, 0x04, 0x05, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x07, 0x07, 0x07, 0x03, 0x00, 0x04, 0x08, 0x06, 0x09, 0x08, 0x07, 0x09, 0x0a, 0x05, + 0x07, 0x06, 0x0a, 0x32, 0x15, 0x00, 0x05, 0x04, 0x09, 0x08, 0x08, 0x08, 0x04, 0x04, 0x00, 0x00, + 0xa7, 0xa7, 0x00, 0x00, 0x00, 0x06, 0x07, 0x06, 0x03, 0x04, 0x0a, 0x35, 0x29, 0x80, 0xee, 0x91, + 0x7d, 0x16, 0x00, 0x06, 0x0a, 0x06, 0x02, 0x07, 0x17, 0x18, 0x1e, 0x43, 0x42, 0x67, 0x18, 0x03, + 0x09, 0x09, 0x09, 0x03, 0x04, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x04, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x08, 0x07, 0x07, 0x04, 0x00, 0x05, + 0x08, 0x07, 0x08, 0x07, 0x06, 0x08, 0x09, 0x07, 0x07, 0x05, 0x0a, 0x32, 0x15, 0x00, 0x05, 0x04, + 0x08, 0x09, 0x09, 0x08, 0x04, 0x05, 0x00, 0x00, 0xa4, 0xa2, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, + 0x04, 0x05, 0x07, 0x34, 0x2c, 0x7d, 0xe9, 0x96, 0x7f, 0x0f, 0x00, 0x05, 0x09, 0x05, 0x02, 0x06, + 0x12, 0x14, 0x17, 0x35, 0x38, 0x55, 0x0f, 0x05, 0x08, 0x07, 0x08, 0x05, 0x04, 0x06, 0x03, 0x02, + 0x00, 0x00, 0x00, 0x04, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x08, 0x08, 0x08, 0x04, 0x01, 0x05, 0x08, 0x06, 0x08, 0x07, 0x06, 0x08, 0x09, 0x07, + 0x08, 0x05, 0x09, 0x32, 0x15, 0x00, 0x05, 0x03, 0x09, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x00, + 0xa2, 0xa2, 0x00, 0x00, 0x00, 0x06, 0x07, 0x06, 0x04, 0x05, 0x06, 0x33, 0x2d, 0x7e, 0xe7, 0x95, + 0x7e, 0x0e, 0x00, 0x05, 0x0a, 0x04, 0x01, 0x06, 0x10, 0x13, 0x16, 0x31, 0x36, 0x50, 0x0c, 0x05, + 0x09, 0x07, 0x08, 0x05, 0x04, 0x07, 0x02, 0x02, 0x00, 0x00, 0x00, 0x04, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x08, 0x08, 0x08, 0x04, 0x00, 0x05, + 0x08, 0x06, 0x08, 0x07, 0x06, 0x08, 0x09, 0x08, 0x07, 0x05, 0x09, 0x32, 0x15, 0x00, 0x05, 0x04, + 0x09, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x00, 0xa2, 0xa1, 0x00, 0x00, 0x00, 0x06, 0x07, 0x06, + 0x04, 0x04, 0x06, 0x33, 0x2d, 0x7e, 0xe4, 0x94, 0x7f, 0x0d, 0x00, 0x05, 0x09, 0x04, 0x01, 0x06, + 0x0f, 0x13, 0x15, 0x2f, 0x34, 0x4d, 0x0b, 0x05, 0x09, 0x07, 0x08, 0x04, 0x04, 0x07, 0x03, 0x02, + 0x00, 0x00, 0x00, 0x04, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x07, 0x08, 0x07, 0x04, 0x01, 0x05, 0x08, 0x06, 0x09, 0x07, 0x06, 0x07, 0x09, 0x07, + 0x07, 0x05, 0x0a, 0x30, 0x15, 0x01, 0x05, 0x05, 0x09, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x00, + 0xa2, 0x9f, 0x00, 0x00, 0x00, 0x06, 0x08, 0x06, 0x04, 0x04, 0x06, 0x33, 0x2d, 0x7e, 0xe4, 0x93, + 0x7e, 0x0b, 0x01, 0x05, 0x09, 0x04, 0x01, 0x06, 0x0f, 0x12, 0x15, 0x2e, 0x34, 0x4b, 0x0a, 0x05, + 0x09, 0x07, 0x08, 0x05, 0x04, 0x06, 0x03, 0x02, 0x01, 0x00, 0x00, 0x05, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x07, 0x08, 0x07, 0x04, 0x01, 0x05, + 0x08, 0x07, 0x09, 0x08, 0x07, 0x07, 0x09, 0x08, 0x06, 0x05, 0x09, 0x2e, 0x14, 0x01, 0x06, 0x05, + 0x09, 0x09, 0x09, 0x07, 0x05, 0x03, 0x00, 0x00, 0xa2, 0x9d, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, + 0x03, 0x04, 0x06, 0x34, 0x2d, 0x80, 0xe4, 0x91, 0x7e, 0x0b, 0x01, 0x05, 0x09, 0x04, 0x01, 0x06, + 0x0f, 0x12, 0x14, 0x2f, 0x35, 0x4b, 0x0a, 0x06, 0x09, 0x07, 0x08, 0x05, 0x04, 0x07, 0x02, 0x02, + 0x01, 0x00, 0x00, 0x05, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x08, 0x08, 0x07, 0x04, 0x01, 0x05, 0x08, 0x07, 0x09, 0x08, 0x07, 0x08, 0x09, 0x07, + 0x06, 0x05, 0x09, 0x2e, 0x14, 0x01, 0x06, 0x05, 0x09, 0x09, 0x09, 0x07, 0x04, 0x04, 0x00, 0x00, + 0xa3, 0x9b, 0x00, 0x00, 0x00, 0x05, 0x08, 0x06, 0x03, 0x05, 0x06, 0x35, 0x2d, 0x81, 0xe4, 0x91, + 0x7e, 0x0b, 0x00, 0x05, 0x09, 0x04, 0x02, 0x06, 0x0f, 0x12, 0x13, 0x2f, 0x35, 0x4a, 0x09, 0x05, + 0x09, 0x07, 0x08, 0x05, 0x05, 0x06, 0x03, 0x02, 0x00, 0x00, 0x00, 0x05, 0x09, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x08, 0x08, 0x07, 0x04, 0x01, 0x05, + 0x08, 0x07, 0x09, 0x09, 0x07, 0x07, 0x08, 0x06, 0x07, 0x05, 0x09, 0x30, 0x15, 0x01, 0x05, 0x05, + 0x09, 0x09, 0x09, 0x07, 0x04, 0x03, 0x00, 0x00, 0xa4, 0x9b, 0x00, 0x00, 0x00, 0x05, 0x08, 0x07, + 0x03, 0x05, 0x06, 0x36, 0x2e, 0x80, 0xe4, 0x91, 0x7e, 0x0b, 0x00, 0x05, 0x09, 0x04, 0x02, 0x06, + 0x0e, 0x12, 0x12, 0x2e, 0x34, 0x49, 0x09, 0x06, 0x09, 0x07, 0x08, 0x05, 0x04, 0x06, 0x02, 0x02, + 0x00, 0x00, 0x00, 0x04, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x08, 0x08, 0x04, 0x01, 0x05, 0x08, 0x07, 0x09, 0x09, 0x07, 0x08, 0x09, 0x06, + 0x08, 0x05, 0x09, 0x32, 0x15, 0x01, 0x06, 0x05, 0x0a, 0x09, 0x08, 0x07, 0x04, 0x04, 0x00, 0x00, + 0xa5, 0x99, 0x00, 0x00, 0x01, 0x05, 0x08, 0x06, 0x04, 0x06, 0x06, 0x36, 0x2f, 0x81, 0xe4, 0x91, + 0x7e, 0x0a, 0x01, 0x05, 0x09, 0x04, 0x02, 0x06, 0x0e, 0x12, 0x11, 0x2d, 0x33, 0x48, 0x08, 0x06, + 0x09, 0x07, 0x08, 0x05, 0x04, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x05, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x08, 0x09, 0x04, 0x00, 0x05, + 0x08, 0x07, 0x09, 0x09, 0x07, 0x07, 0x09, 0x06, 0x08, 0x05, 0x0a, 0x38, 0x16, 0x01, 0x05, 0x05, + 0x0a, 0x08, 0x08, 0x06, 0x04, 0x04, 0x00, 0x00, 0xa7, 0x99, 0x00, 0x00, 0x01, 0x05, 0x08, 0x07, + 0x03, 0x05, 0x06, 0x37, 0x30, 0x81, 0xe3, 0x94, 0x7f, 0x09, 0x01, 0x05, 0x08, 0x05, 0x03, 0x06, + 0x0c, 0x0f, 0x11, 0x27, 0x2f, 0x45, 0x08, 0x06, 0x09, 0x06, 0x08, 0x06, 0x04, 0x07, 0x03, 0x02, + 0x01, 0x00, 0x00, 0x06, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x07, 0x09, 0x04, 0x00, 0x05, 0x08, 0x07, 0x09, 0x09, 0x07, 0x07, 0x09, 0x06, + 0x08, 0x05, 0x0a, 0x3a, 0x17, 0x01, 0x05, 0x05, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x03, 0x00, 0x00, + 0xa8, 0x9a, 0x00, 0x00, 0x01, 0x05, 0x08, 0x07, 0x03, 0x05, 0x07, 0x36, 0x30, 0x81, 0xe2, 0x97, + 0x80, 0x09, 0x00, 0x05, 0x08, 0x04, 0x03, 0x07, 0x0b, 0x0d, 0x10, 0x24, 0x2d, 0x41, 0x07, 0x06, + 0x09, 0x06, 0x08, 0x06, 0x04, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x06, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x07, 0x09, 0x04, 0x00, 0x05, + 0x08, 0x07, 0x09, 0x09, 0x07, 0x07, 0x0a, 0x06, 0x08, 0x05, 0x0a, 0x3e, 0x17, 0x01, 0x05, 0x05, + 0x0a, 0x09, 0x08, 0x07, 0x04, 0x03, 0x00, 0x00, 0xaa, 0x9d, 0x00, 0x00, 0x01, 0x05, 0x08, 0x07, + 0x03, 0x05, 0x08, 0x38, 0x30, 0x82, 0xe0, 0x9b, 0x82, 0x08, 0x01, 0x05, 0x08, 0x05, 0x04, 0x07, + 0x0a, 0x0c, 0x0f, 0x21, 0x2a, 0x3e, 0x07, 0x06, 0x09, 0x06, 0x08, 0x07, 0x04, 0x08, 0x04, 0x02, + 0x02, 0x01, 0x00, 0x06, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x08, 0x0a, 0x05, 0x00, 0x05, 0x08, 0x07, 0x09, 0x09, 0x06, 0x07, 0x0a, 0x07, + 0x08, 0x05, 0x0b, 0x41, 0x17, 0x01, 0x05, 0x05, 0x0a, 0x08, 0x09, 0x06, 0x04, 0x03, 0x00, 0x00, + 0xac, 0x9f, 0x00, 0x00, 0x02, 0x05, 0x08, 0x07, 0x03, 0x05, 0x08, 0x39, 0x31, 0x84, 0xdf, 0x9e, + 0x83, 0x08, 0x00, 0x05, 0x07, 0x05, 0x04, 0x07, 0x0a, 0x0b, 0x0d, 0x1e, 0x28, 0x3b, 0x06, 0x06, + 0x09, 0x05, 0x08, 0x07, 0x04, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x06, 0x08, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x07, 0x0a, 0x05, 0x00, 0x05, + 0x08, 0x06, 0x09, 0x09, 0x06, 0x07, 0x0a, 0x07, 0x07, 0x04, 0x0e, 0x49, 0x18, 0x00, 0x05, 0x05, + 0x09, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x00, 0xb2, 0x9c, 0x00, 0x00, 0x02, 0x05, 0x07, 0x07, + 0x03, 0x04, 0x09, 0x3c, 0x31, 0x88, 0xd6, 0xa2, 0x84, 0x08, 0x00, 0x06, 0x07, 0x04, 0x04, 0x06, + 0x09, 0x0a, 0x0b, 0x1c, 0x25, 0x34, 0x05, 0x06, 0x0a, 0x05, 0x08, 0x07, 0x04, 0x07, 0x04, 0x02, + 0x02, 0x02, 0x00, 0x06, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x07, 0x0a, 0x04, 0x00, 0x05, 0x08, 0x06, 0x09, 0x08, 0x06, 0x07, 0x0a, 0x06, + 0x07, 0x04, 0x0f, 0x4c, 0x17, 0x01, 0x05, 0x05, 0x09, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x00, + 0xb7, 0x98, 0x00, 0x00, 0x02, 0x05, 0x08, 0x07, 0x04, 0x04, 0x09, 0x3d, 0x32, 0x89, 0xd3, 0xa1, + 0x84, 0x07, 0x01, 0x06, 0x08, 0x05, 0x04, 0x06, 0x0a, 0x0a, 0x0b, 0x1b, 0x24, 0x31, 0x05, 0x06, + 0x0a, 0x05, 0x08, 0x07, 0x04, 0x08, 0x04, 0x03, 0x03, 0x02, 0x00, 0x06, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x07, 0x0a, 0x04, 0x00, 0x05, + 0x09, 0x06, 0x09, 0x08, 0x06, 0x07, 0x0a, 0x07, 0x07, 0x04, 0x12, 0x4f, 0x17, 0x01, 0x05, 0x05, + 0x09, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x02, 0xba, 0x95, 0x00, 0x00, 0x01, 0x05, 0x07, 0x07, + 0x04, 0x03, 0x09, 0x3f, 0x32, 0x8a, 0xd1, 0xa0, 0x84, 0x06, 0x00, 0x05, 0x08, 0x05, 0x04, 0x06, + 0x09, 0x09, 0x0a, 0x18, 0x22, 0x2f, 0x05, 0x06, 0x0a, 0x05, 0x08, 0x07, 0x04, 0x07, 0x04, 0x03, + 0x03, 0x03, 0x00, 0x06, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x09, 0x07, 0x0a, 0x04, 0x00, 0x05, 0x09, 0x06, 0x09, 0x08, 0x06, 0x07, 0x09, 0x07, + 0x06, 0x04, 0x15, 0x52, 0x16, 0x02, 0x05, 0x05, 0x09, 0x08, 0x09, 0x07, 0x04, 0x04, 0x00, 0x06, + 0xbe, 0x8f, 0x00, 0x00, 0x01, 0x05, 0x08, 0x07, 0x04, 0x03, 0x0b, 0x40, 0x32, 0x8c, 0xd1, 0xa2, + 0x83, 0x06, 0x01, 0x05, 0x07, 0x05, 0x04, 0x06, 0x08, 0x09, 0x09, 0x18, 0x21, 0x2c, 0x05, 0x06, + 0x0a, 0x05, 0x08, 0x07, 0x05, 0x07, 0x04, 0x03, 0x03, 0x03, 0x00, 0x06, 0x09, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x07, 0x0a, 0x04, 0x00, 0x06, + 0x09, 0x06, 0x09, 0x08, 0x07, 0x07, 0x09, 0x07, 0x06, 0x03, 0x19, 0x54, 0x15, 0x02, 0x05, 0x06, + 0x09, 0x09, 0x09, 0x07, 0x04, 0x04, 0x00, 0x0d, 0xc6, 0x84, 0x00, 0x00, 0x02, 0x05, 0x08, 0x07, + 0x05, 0x03, 0x0c, 0x40, 0x32, 0x8f, 0xcf, 0xa3, 0x82, 0x05, 0x01, 0x05, 0x07, 0x05, 0x04, 0x05, + 0x08, 0x08, 0x08, 0x16, 0x1e, 0x28, 0x05, 0x06, 0x0b, 0x05, 0x08, 0x07, 0x05, 0x07, 0x04, 0x03, + 0x04, 0x03, 0x00, 0x06, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x09, 0x07, 0x09, 0x03, 0x00, 0x06, 0x09, 0x06, 0x09, 0x08, 0x07, 0x07, 0x09, 0x07, + 0x06, 0x04, 0x19, 0x55, 0x15, 0x02, 0x06, 0x05, 0x08, 0x09, 0x09, 0x07, 0x04, 0x05, 0x00, 0x10, + 0xc9, 0x80, 0x00, 0x00, 0x02, 0x05, 0x08, 0x07, 0x04, 0x03, 0x0c, 0x40, 0x32, 0x90, 0xcc, 0xa2, + 0x81, 0x04, 0x02, 0x06, 0x07, 0x04, 0x04, 0x05, 0x08, 0x07, 0x06, 0x14, 0x1d, 0x26, 0x05, 0x05, + 0x0b, 0x05, 0x08, 0x07, 0x05, 0x07, 0x03, 0x03, 0x04, 0x03, 0x00, 0x06, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x09, 0x07, 0x09, 0x04, 0x00, 0x06, + 0x09, 0x06, 0x09, 0x08, 0x07, 0x08, 0x09, 0x07, 0x06, 0x04, 0x18, 0x56, 0x14, 0x02, 0x05, 0x05, + 0x08, 0x09, 0x09, 0x08, 0x04, 0x05, 0x00, 0x11, 0xca, 0x7d, 0x00, 0x00, 0x02, 0x04, 0x08, 0x07, + 0x05, 0x03, 0x0d, 0x40, 0x32, 0x91, 0xca, 0xa3, 0x80, 0x04, 0x02, 0x06, 0x08, 0x05, 0x04, 0x05, + 0x07, 0x06, 0x07, 0x13, 0x1c, 0x25, 0x05, 0x06, 0x0b, 0x05, 0x08, 0x07, 0x05, 0x07, 0x04, 0x03, + 0x04, 0x03, 0x00, 0x06, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x07, 0x0a, 0x03, 0x00, 0x06, 0x09, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x06, + 0x05, 0x03, 0x17, 0x57, 0x14, 0x02, 0x05, 0x05, 0x08, 0x09, 0x09, 0x07, 0x03, 0x05, 0x00, 0x11, + 0xcd, 0x7c, 0x00, 0x00, 0x03, 0x04, 0x08, 0x07, 0x04, 0x03, 0x0d, 0x41, 0x33, 0x91, 0xc8, 0xa4, + 0x7f, 0x04, 0x02, 0x06, 0x07, 0x05, 0x04, 0x05, 0x07, 0x07, 0x06, 0x11, 0x1b, 0x23, 0x04, 0x06, + 0x0b, 0x05, 0x08, 0x06, 0x05, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x06, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x07, 0x0a, 0x03, 0x00, 0x06, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x07, 0x05, 0x03, 0x19, 0x5a, 0x12, 0x02, 0x05, 0x06, + 0x08, 0x09, 0x09, 0x08, 0x03, 0x05, 0x00, 0x14, 0xd3, 0x7b, 0x00, 0x00, 0x04, 0x04, 0x08, 0x07, + 0x04, 0x03, 0x0f, 0x40, 0x32, 0x95, 0xc5, 0xa5, 0x7d, 0x02, 0x02, 0x06, 0x08, 0x05, 0x04, 0x05, + 0x06, 0x07, 0x05, 0x0f, 0x1a, 0x20, 0x04, 0x05, 0x0b, 0x05, 0x08, 0x07, 0x05, 0x08, 0x06, 0x03, + 0x04, 0x03, 0x01, 0x07, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x07, 0x0a, 0x03, 0x00, 0x06, 0x09, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x07, + 0x05, 0x03, 0x1c, 0x5b, 0x11, 0x02, 0x06, 0x06, 0x08, 0x09, 0x09, 0x08, 0x03, 0x04, 0x00, 0x16, + 0xd6, 0x7a, 0x00, 0x00, 0x04, 0x04, 0x08, 0x07, 0x04, 0x03, 0x0f, 0x41, 0x32, 0x96, 0xc5, 0xa7, + 0x7c, 0x02, 0x01, 0x06, 0x07, 0x04, 0x04, 0x05, 0x06, 0x06, 0x05, 0x0f, 0x19, 0x20, 0x04, 0x05, + 0x0b, 0x05, 0x08, 0x07, 0x04, 0x08, 0x06, 0x03, 0x04, 0x04, 0x01, 0x07, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x07, 0x0a, 0x03, 0x00, 0x06, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x06, 0x05, 0x03, 0x1f, 0x5d, 0x12, 0x02, 0x06, 0x06, + 0x08, 0x0a, 0x09, 0x08, 0x03, 0x04, 0x00, 0x18, 0xd9, 0x7b, 0x00, 0x00, 0x04, 0x04, 0x08, 0x07, + 0x04, 0x03, 0x10, 0x42, 0x33, 0x97, 0xc5, 0xa8, 0x7b, 0x02, 0x02, 0x06, 0x07, 0x04, 0x04, 0x05, + 0x06, 0x06, 0x04, 0x0e, 0x19, 0x1f, 0x03, 0x05, 0x0b, 0x05, 0x08, 0x07, 0x04, 0x08, 0x06, 0x04, + 0x05, 0x04, 0x01, 0x07, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x07, 0x0a, 0x03, 0x00, 0x06, 0x09, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x06, + 0x05, 0x03, 0x20, 0x5e, 0x12, 0x02, 0x05, 0x06, 0x08, 0x0a, 0x09, 0x07, 0x04, 0x05, 0x00, 0x19, + 0xda, 0x79, 0x00, 0x00, 0x04, 0x04, 0x08, 0x07, 0x04, 0x03, 0x10, 0x42, 0x32, 0x99, 0xc4, 0xaa, + 0x79, 0x02, 0x01, 0x06, 0x07, 0x04, 0x04, 0x05, 0x07, 0x06, 0x04, 0x0f, 0x1a, 0x1f, 0x03, 0x05, + 0x0b, 0x05, 0x08, 0x07, 0x04, 0x08, 0x06, 0x04, 0x05, 0x04, 0x01, 0x07, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x07, 0x0a, 0x03, 0x00, 0x06, + 0x0a, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x06, 0x05, 0x03, 0x20, 0x5b, 0x11, 0x03, 0x06, 0x06, + 0x08, 0x09, 0x09, 0x08, 0x04, 0x06, 0x00, 0x1a, 0xdb, 0x75, 0x00, 0x00, 0x04, 0x04, 0x08, 0x07, + 0x04, 0x03, 0x11, 0x42, 0x34, 0x9e, 0xc5, 0xa9, 0x77, 0x02, 0x01, 0x06, 0x06, 0x04, 0x04, 0x04, + 0x07, 0x06, 0x06, 0x11, 0x1b, 0x1f, 0x03, 0x05, 0x0b, 0x05, 0x09, 0x07, 0x04, 0x07, 0x06, 0x03, + 0x04, 0x04, 0x01, 0x07, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x07, 0x0a, 0x03, 0x00, 0x06, 0x0a, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x07, + 0x05, 0x03, 0x20, 0x59, 0x10, 0x03, 0x06, 0x06, 0x08, 0x09, 0x09, 0x07, 0x03, 0x06, 0x00, 0x1b, + 0xdd, 0x73, 0x00, 0x00, 0x05, 0x04, 0x08, 0x07, 0x04, 0x02, 0x11, 0x41, 0x35, 0x9f, 0xc6, 0xa9, + 0x76, 0x01, 0x01, 0x06, 0x06, 0x04, 0x04, 0x04, 0x07, 0x06, 0x06, 0x11, 0x1d, 0x21, 0x03, 0x05, + 0x0b, 0x05, 0x08, 0x06, 0x05, 0x08, 0x06, 0x03, 0x04, 0x03, 0x00, 0x07, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x06, 0x0a, 0x03, 0x00, 0x06, + 0x0a, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x07, 0x05, 0x03, 0x20, 0x57, 0x10, 0x03, 0x06, 0x06, + 0x08, 0x09, 0x09, 0x07, 0x04, 0x06, 0x00, 0x1b, 0xde, 0x72, 0x00, 0x00, 0x05, 0x03, 0x08, 0x07, + 0x04, 0x02, 0x11, 0x40, 0x33, 0xa1, 0xc6, 0xa8, 0x74, 0x01, 0x01, 0x06, 0x06, 0x04, 0x04, 0x05, + 0x07, 0x07, 0x07, 0x12, 0x1f, 0x21, 0x02, 0x05, 0x0b, 0x05, 0x08, 0x07, 0x05, 0x08, 0x06, 0x03, + 0x04, 0x03, 0x01, 0x08, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x06, 0x0a, 0x02, 0x00, 0x06, 0x0a, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x07, + 0x05, 0x03, 0x20, 0x55, 0x10, 0x03, 0x06, 0x06, 0x08, 0x09, 0x09, 0x07, 0x03, 0x05, 0x00, 0x1c, + 0xde, 0x72, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, 0x04, 0x02, 0x11, 0x3f, 0x33, 0xa2, 0xc7, 0xa7, + 0x73, 0x01, 0x01, 0x06, 0x06, 0x04, 0x04, 0x04, 0x08, 0x07, 0x09, 0x14, 0x21, 0x23, 0x02, 0x05, + 0x0b, 0x05, 0x08, 0x06, 0x04, 0x08, 0x06, 0x03, 0x04, 0x03, 0x00, 0x08, 0x07, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x08, 0x06, 0x0a, 0x03, 0x00, 0x06, + 0x0a, 0x07, 0x09, 0x08, 0x07, 0x07, 0x09, 0x07, 0x06, 0x04, 0x1f, 0x4f, 0x0f, 0x03, 0x06, 0x06, + 0x08, 0x0a, 0x08, 0x08, 0x04, 0x05, 0x00, 0x1d, 0xde, 0x6e, 0x00, 0x00, 0x05, 0x04, 0x08, 0x07, + 0x05, 0x03, 0x11, 0x3d, 0x33, 0xa6, 0xc9, 0xa5, 0x6f, 0x00, 0x01, 0x06, 0x06, 0x05, 0x04, 0x05, + 0x09, 0x08, 0x0d, 0x17, 0x27, 0x27, 0x02, 0x05, 0x0b, 0x05, 0x09, 0x06, 0x04, 0x08, 0x05, 0x03, + 0x03, 0x01, 0x00, 0x08, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x09, 0x08, 0x06, 0x0a, 0x03, 0x00, 0x06, 0x0a, 0x07, 0x09, 0x08, 0x07, 0x07, 0x08, 0x07, + 0x06, 0x04, 0x1e, 0x4a, 0x0e, 0x03, 0x06, 0x06, 0x08, 0x0a, 0x09, 0x07, 0x04, 0x04, 0x00, 0x1e, + 0xdd, 0x6a, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, 0x04, 0x03, 0x12, 0x3d, 0x32, 0xaa, 0xc9, 0xa5, + 0x6c, 0x00, 0x01, 0x06, 0x06, 0x05, 0x04, 0x05, 0x0a, 0x08, 0x10, 0x1a, 0x2a, 0x29, 0x01, 0x05, + 0x0b, 0x05, 0x09, 0x06, 0x04, 0x08, 0x06, 0x03, 0x03, 0x02, 0x00, 0x08, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x08, 0x06, 0x0a, 0x03, 0x00, 0x06, + 0x0a, 0x07, 0x09, 0x08, 0x08, 0x07, 0x08, 0x07, 0x05, 0x05, 0x1d, 0x45, 0x0d, 0x03, 0x06, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x04, 0x04, 0x00, 0x1f, 0xdd, 0x67, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, + 0x05, 0x02, 0x13, 0x3e, 0x32, 0xad, 0xca, 0xa3, 0x6a, 0x00, 0x01, 0x05, 0x06, 0x05, 0x04, 0x05, + 0x0b, 0x0a, 0x12, 0x1d, 0x2f, 0x2c, 0x01, 0x05, 0x0b, 0x05, 0x09, 0x06, 0x04, 0x07, 0x05, 0x02, + 0x02, 0x02, 0x00, 0x08, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x06, 0x0a, 0x03, 0x00, 0x06, 0x09, 0x07, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, + 0x07, 0x05, 0x1c, 0x40, 0x0b, 0x04, 0x06, 0x06, 0x08, 0x0a, 0x08, 0x07, 0x05, 0x04, 0x00, 0x22, + 0xdc, 0x61, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, 0x04, 0x02, 0x12, 0x3e, 0x32, 0xb2, 0xc7, 0x9f, + 0x66, 0x00, 0x02, 0x05, 0x06, 0x05, 0x04, 0x06, 0x0e, 0x0c, 0x16, 0x20, 0x33, 0x2f, 0x02, 0x04, + 0x0b, 0x05, 0x09, 0x06, 0x04, 0x07, 0x05, 0x02, 0x02, 0x01, 0x00, 0x08, 0x07, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x08, 0x06, 0x09, 0x04, 0x00, 0x07, + 0x09, 0x07, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, 0x06, 0x06, 0x19, 0x35, 0x09, 0x05, 0x06, 0x06, + 0x08, 0x0a, 0x08, 0x07, 0x06, 0x04, 0x00, 0x24, 0xdc, 0x59, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, + 0x04, 0x02, 0x13, 0x3c, 0x31, 0xb9, 0xc9, 0x96, 0x60, 0x00, 0x02, 0x05, 0x06, 0x05, 0x03, 0x06, + 0x12, 0x10, 0x1d, 0x2a, 0x3e, 0x37, 0x01, 0x05, 0x0b, 0x06, 0x0a, 0x06, 0x04, 0x06, 0x05, 0x01, + 0x01, 0x00, 0x00, 0x08, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x08, 0x06, 0x09, 0x04, 0x00, 0x07, 0x09, 0x07, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, + 0x06, 0x06, 0x18, 0x2f, 0x07, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x08, 0x08, 0x05, 0x03, 0x00, 0x26, + 0xda, 0x54, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, 0x04, 0x02, 0x13, 0x3c, 0x30, 0xbd, 0xcb, 0x92, + 0x5b, 0x00, 0x02, 0x05, 0x06, 0x05, 0x03, 0x07, 0x13, 0x11, 0x21, 0x30, 0x43, 0x39, 0x01, 0x04, + 0x0b, 0x06, 0x0a, 0x06, 0x04, 0x05, 0x05, 0x01, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x08, 0x06, 0x09, 0x04, 0x01, 0x07, + 0x09, 0x07, 0x09, 0x08, 0x07, 0x06, 0x08, 0x08, 0x06, 0x07, 0x16, 0x2b, 0x07, 0x05, 0x07, 0x06, + 0x08, 0x0a, 0x08, 0x08, 0x05, 0x03, 0x00, 0x27, 0xdb, 0x50, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, + 0x04, 0x02, 0x13, 0x3c, 0x2f, 0xbf, 0xcc, 0x8d, 0x57, 0x00, 0x02, 0x05, 0x06, 0x05, 0x03, 0x07, + 0x16, 0x13, 0x26, 0x35, 0x48, 0x3e, 0x01, 0x04, 0x0b, 0x06, 0x0a, 0x05, 0x04, 0x05, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x08, 0x06, 0x09, 0x04, 0x01, 0x07, 0x09, 0x07, 0x09, 0x08, 0x07, 0x06, 0x08, 0x08, + 0x07, 0x07, 0x15, 0x27, 0x06, 0x06, 0x07, 0x06, 0x08, 0x0a, 0x08, 0x08, 0x05, 0x03, 0x00, 0x27, + 0xd9, 0x4b, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, 0x04, 0x02, 0x12, 0x3a, 0x2d, 0xc3, 0xcb, 0x87, + 0x52, 0x00, 0x02, 0x05, 0x06, 0x05, 0x03, 0x08, 0x19, 0x16, 0x29, 0x3a, 0x4e, 0x42, 0x02, 0x04, + 0x0b, 0x06, 0x0a, 0x06, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x08, 0x06, 0x09, 0x05, 0x02, 0x07, + 0x09, 0x07, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, 0x07, 0x07, 0x12, 0x1f, 0x06, 0x06, 0x06, 0x06, + 0x08, 0x0a, 0x08, 0x08, 0x05, 0x04, 0x00, 0x29, 0xd4, 0x42, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, + 0x04, 0x01, 0x12, 0x37, 0x2b, 0xc8, 0xc4, 0x7a, 0x4b, 0x00, 0x02, 0x05, 0x06, 0x05, 0x03, 0x08, + 0x1e, 0x19, 0x31, 0x45, 0x59, 0x49, 0x01, 0x04, 0x0b, 0x06, 0x0a, 0x05, 0x04, 0x03, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x06, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x08, 0x06, 0x09, 0x05, 0x02, 0x07, 0x09, 0x07, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, + 0x07, 0x07, 0x11, 0x1b, 0x06, 0x06, 0x06, 0x06, 0x08, 0x0a, 0x08, 0x08, 0x05, 0x04, 0x00, 0x29, + 0xd2, 0x3e, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, 0x04, 0x01, 0x11, 0x35, 0x29, 0xca, 0xc1, 0x74, + 0x48, 0x00, 0x02, 0x05, 0x06, 0x05, 0x03, 0x09, 0x20, 0x1b, 0x36, 0x4a, 0x5e, 0x4c, 0x01, 0x04, + 0x0b, 0x06, 0x0a, 0x05, 0x05, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x08, 0x06, 0x09, 0x06, 0x02, 0x07, + 0x09, 0x06, 0x09, 0x08, 0x07, 0x07, 0x08, 0x07, 0x07, 0x07, 0x0f, 0x17, 0x05, 0x06, 0x05, 0x06, + 0x08, 0x0a, 0x08, 0x08, 0x05, 0x04, 0x00, 0x29, 0xcf, 0x3b, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, + 0x04, 0x01, 0x11, 0x33, 0x29, 0xcc, 0xbc, 0x6f, 0x44, 0x00, 0x02, 0x05, 0x06, 0x05, 0x02, 0x09, + 0x23, 0x1d, 0x39, 0x50, 0x63, 0x50, 0x01, 0x03, 0x0b, 0x06, 0x09, 0x05, 0x04, 0x03, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x08, 0x06, 0x09, 0x05, 0x02, 0x07, 0x09, 0x06, 0x09, 0x08, 0x08, 0x07, 0x08, 0x08, + 0x06, 0x07, 0x0e, 0x15, 0x05, 0x07, 0x06, 0x06, 0x08, 0x09, 0x08, 0x08, 0x06, 0x03, 0x00, 0x2a, + 0xcc, 0x38, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, 0x04, 0x02, 0x11, 0x32, 0x27, 0xcd, 0xb9, 0x69, + 0x41, 0x01, 0x02, 0x05, 0x07, 0x06, 0x02, 0x09, 0x25, 0x1f, 0x3d, 0x57, 0x67, 0x54, 0x01, 0x04, + 0x0b, 0x06, 0x0a, 0x05, 0x04, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x08, 0x06, 0x0a, 0x05, 0x03, 0x07, + 0x09, 0x06, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, 0x07, 0x07, 0x0c, 0x10, 0x04, 0x07, 0x05, 0x06, + 0x08, 0x0a, 0x08, 0x08, 0x05, 0x04, 0x00, 0x29, 0xc7, 0x35, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, + 0x04, 0x01, 0x10, 0x2e, 0x24, 0xcf, 0xb6, 0x60, 0x3c, 0x00, 0x03, 0x05, 0x06, 0x05, 0x02, 0x0a, + 0x28, 0x21, 0x43, 0x61, 0x6f, 0x59, 0x01, 0x04, 0x0b, 0x06, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x06, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x06, 0x0a, 0x06, 0x04, 0x07, 0x09, 0x06, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, + 0x07, 0x07, 0x0b, 0x0f, 0x04, 0x07, 0x05, 0x06, 0x08, 0x09, 0x08, 0x08, 0x05, 0x04, 0x00, 0x27, + 0xc5, 0x34, 0x00, 0x00, 0x06, 0x04, 0x08, 0x07, 0x04, 0x02, 0x0f, 0x2d, 0x23, 0xce, 0xb7, 0x5c, + 0x39, 0x01, 0x02, 0x05, 0x06, 0x05, 0x02, 0x0a, 0x28, 0x22, 0x46, 0x65, 0x73, 0x5c, 0x01, 0x03, + 0x0b, 0x06, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x06, 0x0a, 0x06, 0x04, 0x07, + 0x09, 0x06, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, 0x07, 0x07, 0x0b, 0x0e, 0x04, 0x07, 0x05, 0x06, + 0x08, 0x09, 0x08, 0x08, 0x05, 0x04, 0x00, 0x28, 0xc4, 0x34, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, + 0x04, 0x02, 0x0f, 0x2b, 0x22, 0xcd, 0xba, 0x59, 0x37, 0x00, 0x02, 0x05, 0x06, 0x05, 0x02, 0x0a, + 0x28, 0x22, 0x47, 0x67, 0x75, 0x5e, 0x01, 0x03, 0x0b, 0x06, 0x09, 0x06, 0x04, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x06, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x06, 0x09, 0x06, 0x04, 0x07, 0x09, 0x07, 0x09, 0x08, 0x07, 0x07, 0x08, 0x08, + 0x07, 0x07, 0x0b, 0x0d, 0x04, 0x07, 0x05, 0x06, 0x08, 0x09, 0x08, 0x08, 0x05, 0x04, 0x00, 0x27, + 0xc2, 0x35, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, 0x04, 0x01, 0x0f, 0x2b, 0x21, 0xcb, 0xbd, 0x57, + 0x36, 0x00, 0x02, 0x05, 0x06, 0x05, 0x02, 0x0a, 0x28, 0x22, 0x47, 0x67, 0x77, 0x60, 0x01, 0x03, + 0x0b, 0x06, 0x09, 0x06, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x06, 0x0a, 0x05, 0x04, 0x07, + 0x09, 0x07, 0x09, 0x09, 0x07, 0x07, 0x08, 0x08, 0x07, 0x07, 0x0b, 0x0d, 0x04, 0x07, 0x04, 0x06, + 0x08, 0x09, 0x09, 0x09, 0x05, 0x04, 0x00, 0x26, 0xc0, 0x36, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, + 0x04, 0x01, 0x0e, 0x2a, 0x21, 0xc8, 0xbe, 0x57, 0x37, 0x00, 0x03, 0x05, 0x07, 0x05, 0x02, 0x09, + 0x28, 0x23, 0x49, 0x65, 0x78, 0x61, 0x01, 0x04, 0x0a, 0x06, 0x09, 0x06, 0x04, 0x02, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x06, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x06, 0x0a, 0x05, 0x04, 0x07, 0x09, 0x07, 0x09, 0x09, 0x08, 0x08, 0x08, 0x07, + 0x07, 0x07, 0x0b, 0x0d, 0x04, 0x07, 0x06, 0x06, 0x08, 0x09, 0x09, 0x08, 0x05, 0x04, 0x00, 0x24, + 0xc0, 0x38, 0x00, 0x00, 0x06, 0x05, 0x08, 0x07, 0x04, 0x02, 0x0e, 0x2a, 0x21, 0xc7, 0xbe, 0x59, + 0x37, 0x01, 0x02, 0x04, 0x06, 0x05, 0x02, 0x09, 0x28, 0x22, 0x48, 0x64, 0x77, 0x62, 0x01, 0x04, + 0x0a, 0x06, 0x09, 0x06, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x06, 0x09, 0x05, 0x04, 0x07, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x08, 0x09, 0x07, 0x07, 0x07, 0x0b, 0x0d, 0x04, 0x07, 0x05, 0x06, + 0x08, 0x09, 0x09, 0x08, 0x05, 0x04, 0x00, 0x21, 0xc1, 0x3d, 0x00, 0x00, 0x05, 0x05, 0x08, 0x07, + 0x04, 0x02, 0x0e, 0x2a, 0x20, 0xc4, 0xc0, 0x5b, 0x38, 0x01, 0x02, 0x05, 0x07, 0x06, 0x02, 0x09, + 0x27, 0x22, 0x46, 0x64, 0x76, 0x64, 0x01, 0x04, 0x0a, 0x06, 0x0a, 0x06, 0x04, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x06, 0x09, 0x05, 0x03, 0x08, 0x09, 0x07, 0x08, 0x09, 0x08, 0x08, 0x09, 0x07, + 0x08, 0x06, 0x0d, 0x10, 0x03, 0x07, 0x06, 0x06, 0x09, 0x09, 0x09, 0x08, 0x05, 0x05, 0x00, 0x21, + 0xc2, 0x42, 0x00, 0x00, 0x05, 0x05, 0x08, 0x07, 0x04, 0x02, 0x0d, 0x2a, 0x1f, 0xbf, 0xc7, 0x5e, + 0x3a, 0x01, 0x02, 0x05, 0x07, 0x06, 0x02, 0x08, 0x25, 0x21, 0x44, 0x62, 0x73, 0x64, 0x02, 0x04, + 0x0a, 0x06, 0x09, 0x06, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x06, 0x09, 0x05, 0x02, 0x08, + 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x08, 0x06, 0x0f, 0x14, 0x04, 0x07, 0x06, 0x05, + 0x08, 0x09, 0x09, 0x08, 0x05, 0x05, 0x00, 0x1c, 0xc4, 0x50, 0x00, 0x00, 0x05, 0x05, 0x07, 0x07, + 0x04, 0x02, 0x0d, 0x2d, 0x1f, 0xb5, 0xd2, 0x69, 0x40, 0x01, 0x02, 0x05, 0x06, 0x06, 0x02, 0x07, + 0x23, 0x1f, 0x3d, 0x58, 0x6c, 0x64, 0x03, 0x04, 0x0a, 0x06, 0x0a, 0x06, 0x04, 0x02, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x07, 0x09, 0x05, 0x02, 0x07, 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x09, 0x07, + 0x08, 0x06, 0x10, 0x17, 0x05, 0x06, 0x06, 0x06, 0x08, 0x09, 0x09, 0x08, 0x06, 0x05, 0x00, 0x19, + 0xc3, 0x54, 0x00, 0x00, 0x04, 0x05, 0x08, 0x07, 0x05, 0x02, 0x0c, 0x2f, 0x1f, 0xb3, 0xd4, 0x6e, + 0x45, 0x02, 0x02, 0x06, 0x07, 0x06, 0x02, 0x06, 0x22, 0x1f, 0x3a, 0x53, 0x67, 0x63, 0x04, 0x05, + 0x0a, 0x06, 0x0a, 0x06, 0x04, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x07, 0x09, 0x05, 0x02, 0x07, + 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x08, 0x06, 0x10, 0x1a, 0x05, 0x06, 0x06, 0x05, + 0x08, 0x09, 0x09, 0x08, 0x06, 0x06, 0x00, 0x17, 0xc3, 0x5a, 0x00, 0x00, 0x04, 0x06, 0x07, 0x07, + 0x04, 0x01, 0x0c, 0x31, 0x20, 0xb1, 0xd5, 0x72, 0x4a, 0x02, 0x02, 0x07, 0x06, 0x07, 0x02, 0x05, + 0x21, 0x1e, 0x35, 0x4e, 0x62, 0x61, 0x04, 0x04, 0x0a, 0x06, 0x09, 0x06, 0x04, 0x02, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x07, 0x09, 0x05, 0x01, 0x08, 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, + 0x07, 0x06, 0x10, 0x1c, 0x05, 0x06, 0x06, 0x05, 0x08, 0x09, 0x09, 0x08, 0x06, 0x06, 0x00, 0x15, + 0xc3, 0x5f, 0x00, 0x00, 0x04, 0x06, 0x08, 0x07, 0x05, 0x02, 0x0c, 0x32, 0x20, 0xad, 0xd4, 0x75, + 0x51, 0x02, 0x01, 0x07, 0x06, 0x07, 0x02, 0x06, 0x1f, 0x1d, 0x31, 0x4b, 0x5c, 0x5f, 0x05, 0x04, + 0x0a, 0x06, 0x0a, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x07, 0x09, 0x05, 0x01, 0x07, + 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x10, 0x22, 0x08, 0x06, 0x06, 0x06, + 0x08, 0x09, 0x09, 0x08, 0x06, 0x06, 0x00, 0x0f, 0xc1, 0x6c, 0x00, 0x00, 0x04, 0x06, 0x07, 0x07, + 0x05, 0x03, 0x0a, 0x35, 0x24, 0xa4, 0xda, 0x7c, 0x5c, 0x03, 0x01, 0x07, 0x06, 0x07, 0x02, 0x04, + 0x1b, 0x1c, 0x27, 0x46, 0x51, 0x5a, 0x06, 0x04, 0x0a, 0x05, 0x09, 0x07, 0x03, 0x02, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x07, 0x09, 0x05, 0x01, 0x06, 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, + 0x08, 0x06, 0x10, 0x25, 0x0a, 0x06, 0x06, 0x06, 0x09, 0x09, 0x09, 0x08, 0x06, 0x06, 0x00, 0x0b, + 0xbf, 0x74, 0x00, 0x00, 0x04, 0x05, 0x07, 0x07, 0x05, 0x02, 0x0a, 0x36, 0x27, 0x9d, 0xe0, 0x80, + 0x62, 0x04, 0x01, 0x07, 0x07, 0x07, 0x03, 0x04, 0x19, 0x1b, 0x22, 0x42, 0x4b, 0x59, 0x06, 0x04, + 0x0a, 0x06, 0x09, 0x07, 0x04, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x07, 0x09, 0x05, 0x00, 0x06, + 0x09, 0x07, 0x08, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x06, 0x0f, 0x28, 0x0c, 0x05, 0x06, 0x07, + 0x09, 0x09, 0x09, 0x08, 0x06, 0x06, 0x00, 0x08, 0xbd, 0x7c, 0x00, 0x00, 0x04, 0x05, 0x07, 0x07, + 0x05, 0x03, 0x09, 0x36, 0x29, 0x97, 0xe4, 0x85, 0x69, 0x04, 0x01, 0x07, 0x07, 0x08, 0x03, 0x03, + 0x16, 0x19, 0x1e, 0x3c, 0x46, 0x56, 0x07, 0x04, 0x0a, 0x06, 0x09, 0x06, 0x04, 0x03, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x07, 0x09, 0x05, 0x00, 0x06, 0x09, 0x07, 0x08, 0x09, 0x08, 0x08, 0x08, 0x07, + 0x07, 0x06, 0x0e, 0x2c, 0x0e, 0x04, 0x07, 0x06, 0x08, 0x09, 0x09, 0x08, 0x06, 0x06, 0x00, 0x04, + 0xb9, 0x83, 0x00, 0x00, 0x03, 0x05, 0x07, 0x07, 0x05, 0x02, 0x09, 0x37, 0x2b, 0x92, 0xe6, 0x89, + 0x6f, 0x05, 0x02, 0x06, 0x06, 0x08, 0x02, 0x03, 0x13, 0x18, 0x1b, 0x37, 0x3f, 0x52, 0x08, 0x04, + 0x09, 0x06, 0x09, 0x06, 0x04, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x08, 0x09, 0x06, 0x00, 0x05, + 0x09, 0x07, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08, 0x07, 0x06, 0x0d, 0x33, 0x13, 0x03, 0x06, 0x06, + 0x08, 0x09, 0x09, 0x08, 0x06, 0x05, 0x00, 0x01, 0xb2, 0x92, 0x00, 0x00, 0x03, 0x06, 0x06, 0x07, + 0x05, 0x03, 0x08, 0x38, 0x2d, 0x87, 0xe3, 0x93, 0x7c, 0x08, 0x02, 0x06, 0x06, 0x08, 0x02, 0x02, + 0x0f, 0x14, 0x13, 0x2a, 0x33, 0x49, 0x09, 0x04, 0x09, 0x06, 0x09, 0x06, 0x04, 0x03, 0x06, 0x01, + 0x00, 0x01, 0x00, 0x04, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x08, 0x09, 0x06, 0x00, 0x05, 0x09, 0x07, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08, + 0x07, 0x06, 0x0c, 0x37, 0x16, 0x03, 0x06, 0x06, 0x08, 0x09, 0x09, 0x08, 0x05, 0x06, 0x00, 0x00, + 0xad, 0x9a, 0x00, 0x00, 0x03, 0x05, 0x06, 0x07, 0x05, 0x03, 0x06, 0x36, 0x2f, 0x82, 0xe2, 0x96, + 0x83, 0x0a, 0x02, 0x05, 0x07, 0x08, 0x03, 0x02, 0x0c, 0x12, 0x10, 0x26, 0x2d, 0x44, 0x0a, 0x04, + 0x09, 0x06, 0x08, 0x06, 0x05, 0x04, 0x06, 0x01, 0x00, 0x02, 0x00, 0x03, 0x09, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x08, 0x09, 0x06, 0x00, 0x05, + 0x0a, 0x07, 0x08, 0x09, 0x08, 0x08, 0x09, 0x08, 0x07, 0x06, 0x0c, 0x3b, 0x1a, 0x02, 0x05, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x05, 0x06, 0x00, 0x00, 0xa8, 0xa2, 0x00, 0x00, 0x02, 0x05, 0x06, 0x07, + 0x05, 0x03, 0x06, 0x37, 0x30, 0x7e, 0xdf, 0x99, 0x89, 0x0b, 0x02, 0x05, 0x07, 0x08, 0x03, 0x02, + 0x0a, 0x10, 0x0d, 0x21, 0x29, 0x40, 0x0b, 0x04, 0x09, 0x06, 0x08, 0x06, 0x04, 0x05, 0x07, 0x01, + 0x01, 0x03, 0x00, 0x03, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x07, 0x09, 0x07, 0x00, 0x04, 0x0a, 0x07, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08, + 0x07, 0x05, 0x0c, 0x3f, 0x1d, 0x02, 0x05, 0x07, 0x08, 0x09, 0x09, 0x09, 0x06, 0x06, 0x00, 0x00, + 0xa3, 0xac, 0x00, 0x00, 0x01, 0x05, 0x07, 0x07, 0x05, 0x03, 0x04, 0x37, 0x32, 0x78, 0xe1, 0x9c, + 0x8e, 0x0d, 0x03, 0x06, 0x07, 0x08, 0x03, 0x02, 0x09, 0x0f, 0x0a, 0x1e, 0x24, 0x3c, 0x0b, 0x05, + 0x09, 0x06, 0x08, 0x07, 0x05, 0x04, 0x07, 0x02, 0x01, 0x03, 0x00, 0x03, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x07, 0x09, 0x07, 0x00, 0x03, + 0x0a, 0x07, 0x08, 0x0a, 0x08, 0x08, 0x08, 0x08, 0x07, 0x04, 0x0a, 0x4e, 0x29, 0x00, 0x05, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x05, 0x07, 0x01, 0x00, 0x96, 0xc3, 0x02, 0x00, 0x01, 0x04, 0x07, 0x07, + 0x05, 0x03, 0x03, 0x36, 0x36, 0x6b, 0xdf, 0xa6, 0x97, 0x11, 0x02, 0x05, 0x07, 0x09, 0x04, 0x00, + 0x06, 0x0c, 0x05, 0x18, 0x1a, 0x33, 0x0c, 0x05, 0x09, 0x06, 0x08, 0x06, 0x05, 0x05, 0x07, 0x04, + 0x02, 0x04, 0x00, 0x03, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, 0x00, 0x02, 0x0a, 0x07, 0x08, 0x0a, 0x08, 0x08, 0x08, 0x07, + 0x06, 0x03, 0x07, 0x53, 0x2e, 0x00, 0x04, 0x07, 0x07, 0x09, 0x09, 0x09, 0x05, 0x06, 0x02, 0x00, + 0x8f, 0xcc, 0x08, 0x00, 0x01, 0x04, 0x07, 0x07, 0x05, 0x03, 0x03, 0x35, 0x37, 0x67, 0xda, 0xa7, + 0x9c, 0x13, 0x01, 0x05, 0x07, 0x09, 0x04, 0x00, 0x06, 0x0a, 0x04, 0x15, 0x16, 0x2f, 0x0c, 0x04, + 0x09, 0x07, 0x08, 0x07, 0x05, 0x05, 0x08, 0x03, 0x02, 0x05, 0x00, 0x03, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, 0x00, 0x01, + 0x0a, 0x07, 0x08, 0x0a, 0x08, 0x08, 0x09, 0x08, 0x07, 0x03, 0x06, 0x51, 0x34, 0x00, 0x04, 0x07, + 0x07, 0x09, 0x09, 0x09, 0x05, 0x07, 0x03, 0x00, 0x87, 0xd1, 0x10, 0x00, 0x02, 0x04, 0x07, 0x07, + 0x05, 0x04, 0x03, 0x34, 0x38, 0x64, 0xd6, 0xa9, 0x9f, 0x15, 0x01, 0x05, 0x07, 0x0a, 0x04, 0x00, + 0x05, 0x0a, 0x04, 0x11, 0x13, 0x2b, 0x0c, 0x04, 0x09, 0x06, 0x07, 0x07, 0x05, 0x05, 0x07, 0x04, + 0x02, 0x05, 0x00, 0x03, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x09, 0x08, 0x09, 0x09, 0x00, 0x01, 0x09, 0x07, 0x07, 0x0a, 0x08, 0x07, 0x08, 0x08, + 0x07, 0x03, 0x05, 0x51, 0x37, 0x00, 0x04, 0x06, 0x07, 0x09, 0x09, 0x09, 0x05, 0x07, 0x04, 0x00, + 0x82, 0xd5, 0x15, 0x00, 0x02, 0x04, 0x07, 0x08, 0x05, 0x04, 0x03, 0x34, 0x39, 0x61, 0xd2, 0xa9, + 0xa1, 0x17, 0x01, 0x05, 0x07, 0x09, 0x05, 0x00, 0x04, 0x09, 0x04, 0x10, 0x12, 0x28, 0x0b, 0x04, + 0x09, 0x06, 0x07, 0x07, 0x05, 0x05, 0x08, 0x04, 0x03, 0x05, 0x01, 0x03, 0x08, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x08, 0x08, 0x09, 0x08, 0x00, 0x01, + 0x09, 0x08, 0x07, 0x0a, 0x09, 0x08, 0x08, 0x08, 0x06, 0x04, 0x05, 0x54, 0x3a, 0x00, 0x04, 0x07, + 0x06, 0x0a, 0x09, 0x09, 0x05, 0x05, 0x04, 0x00, 0x7a, 0xdc, 0x1a, 0x00, 0x03, 0x03, 0x07, 0x07, + 0x05, 0x03, 0x01, 0x32, 0x3b, 0x5e, 0xce, 0xa8, 0xa4, 0x1b, 0x02, 0x04, 0x07, 0x09, 0x04, 0x00, + 0x05, 0x08, 0x02, 0x0d, 0x0f, 0x23, 0x0b, 0x04, 0x09, 0x07, 0x07, 0x07, 0x06, 0x05, 0x08, 0x05, + 0x03, 0x05, 0x01, 0x03, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x07, 0x08, 0x09, 0x08, 0x00, 0x01, 0x09, 0x08, 0x06, 0x0a, 0x08, 0x07, 0x07, 0x08, + 0x05, 0x03, 0x07, 0x53, 0x39, 0x01, 0x05, 0x07, 0x05, 0x0b, 0x08, 0x08, 0x06, 0x03, 0x04, 0x00, + 0x78, 0xdb, 0x18, 0x00, 0x06, 0x02, 0x06, 0x07, 0x06, 0x03, 0x00, 0x32, 0x3b, 0x5c, 0xcd, 0xa5, + 0xa3, 0x1a, 0x02, 0x04, 0x06, 0x06, 0x05, 0x01, 0x05, 0x09, 0x04, 0x0c, 0x0f, 0x23, 0x0b, 0x04, + 0x09, 0x08, 0x06, 0x07, 0x07, 0x04, 0x08, 0x06, 0x03, 0x06, 0x03, 0x02, 0x06, 0x09, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x07, 0x09, 0x0a, 0x00, 0x00, + 0x08, 0x09, 0x07, 0x08, 0x0a, 0x08, 0x05, 0x04, 0x06, 0x04, 0x03, 0x4d, 0x52, 0x03, 0x04, 0x07, + 0x06, 0x08, 0x06, 0x06, 0x06, 0x07, 0x03, 0x00, 0x56, 0xf5, 0x37, 0x00, 0x03, 0x05, 0x05, 0x07, + 0x04, 0x04, 0x01, 0x2a, 0x44, 0x4e, 0xcf, 0xb1, 0xb2, 0x48, 0x00, 0x06, 0x08, 0x05, 0x04, 0x03, + 0x04, 0x09, 0x05, 0x0f, 0x0f, 0x22, 0x14, 0x05, 0x06, 0x07, 0x06, 0x08, 0x08, 0x05, 0x05, 0x07, + 0x02, 0x03, 0x03, 0x03, 0x05, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x08, 0x07, 0x08, 0x09, 0x01, 0x00, 0x06, 0x0a, 0x08, 0x07, 0x09, 0x07, 0x07, 0x05, + 0x07, 0x06, 0x00, 0x3c, 0x69, 0x0c, 0x02, 0x05, 0x08, 0x08, 0x07, 0x06, 0x05, 0x06, 0x05, 0x00, + 0x2d, 0xf8, 0x65, 0x00, 0x02, 0x03, 0x06, 0x06, 0x06, 0x04, 0x00, 0x1f, 0x48, 0x40, 0xc0, 0xc1, + 0xb2, 0x82, 0x00, 0x01, 0x08, 0x05, 0x04, 0x04, 0x01, 0x08, 0x06, 0x11, 0x11, 0x1f, 0x21, 0x04, + 0x06, 0x06, 0x05, 0x05, 0x0a, 0x08, 0x03, 0x07, 0x03, 0x02, 0x02, 0x02, 0x04, 0x07, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0a, 0x09, 0x06, 0x08, 0x0a, 0x05, 0x00, + 0x01, 0x0a, 0x0a, 0x08, 0x09, 0x09, 0x09, 0x06, 0x06, 0x06, 0x00, 0x20, 0x7e, 0x3a, 0x00, 0x04, + 0x05, 0x07, 0x06, 0x05, 0x05, 0x06, 0x07, 0x00, 0x00, 0xb6, 0xd1, 0x0d, 0x00, 0x02, 0x09, 0x04, + 0x05, 0x06, 0x02, 0x0d, 0x44, 0x37, 0x8a, 0xe5, 0xb4, 0xc0, 0x4d, 0x00, 0x08, 0x08, 0x05, 0x02, + 0x00, 0x05, 0x09, 0x09, 0x20, 0x17, 0x33, 0x19, 0x01, 0x07, 0x04, 0x02, 0x03, 0x08, 0x08, 0x04, + 0x03, 0x03, 0x03, 0x00, 0x05, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x09, 0x09, 0x07, 0x08, 0x09, 0x06, 0x00, 0x00, 0x05, 0x09, 0x0a, 0x08, 0x08, 0x08, 0x07, + 0x04, 0x06, 0x01, 0x13, 0x7a, 0x60, 0x00, 0x03, 0x06, 0x08, 0x09, 0x03, 0x05, 0x06, 0x06, 0x02, + 0x00, 0x88, 0xf0, 0x2c, 0x00, 0x00, 0x06, 0x04, 0x03, 0x05, 0x03, 0x08, 0x40, 0x3a, 0x6f, 0xe7, + 0xbf, 0xbe, 0x8c, 0x02, 0x05, 0x08, 0x07, 0x03, 0x02, 0x03, 0x0a, 0x08, 0x21, 0x1c, 0x34, 0x31, + 0x02, 0x07, 0x06, 0x04, 0x04, 0x03, 0x07, 0x07, 0x01, 0x00, 0x03, 0x00, 0x00, 0x0a, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x09, 0x08, 0x06, 0x0a, 0x07, 0x00, + 0x00, 0x05, 0x08, 0x0a, 0x0a, 0x08, 0x06, 0x07, 0x06, 0x03, 0x02, 0x09, 0x6a, 0x7f, 0x0a, 0x02, + 0x04, 0x07, 0x07, 0x08, 0x01, 0x04, 0x05, 0x02, 0x00, 0x60, 0xf8, 0x5b, 0x00, 0x00, 0x03, 0x07, + 0x02, 0x01, 0x03, 0x04, 0x38, 0x3f, 0x55, 0xe1, 0xd2, 0xb6, 0xb9, 0x22, 0x03, 0x01, 0x08, 0x08, + 0x02, 0x04, 0x09, 0x09, 0x21, 0x21, 0x34, 0x48, 0x0e, 0x08, 0x06, 0x03, 0x05, 0x03, 0x04, 0x06, + 0x03, 0x00, 0x04, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x06, 0x08, 0x09, 0x07, 0x08, 0x00, 0x00, 0x05, 0x06, 0x07, 0x0a, 0x04, 0x07, 0x06, + 0x07, 0x05, 0x03, 0x04, 0x4f, 0x91, 0x20, 0x00, 0x03, 0x05, 0x07, 0x09, 0x06, 0x01, 0x04, 0x02, + 0x00, 0x3d, 0xee, 0x86, 0x00, 0x00, 0x00, 0x09, 0x07, 0x01, 0x00, 0x01, 0x31, 0x44, 0x44, 0xd0, + 0xe1, 0xb7, 0xc5, 0x52, 0x06, 0x01, 0x00, 0x08, 0x06, 0x05, 0x0e, 0x0b, 0x21, 0x29, 0x2f, 0x55, + 0x28, 0x09, 0x07, 0x04, 0x05, 0x06, 0x02, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x07, 0x08, 0x0a, 0x0a, 0x00, + 0x00, 0x00, 0x06, 0x0b, 0x07, 0x09, 0x06, 0x07, 0x07, 0x05, 0x05, 0x00, 0x29, 0x97, 0x58, 0x06, + 0x03, 0x08, 0x07, 0x06, 0x05, 0x08, 0x06, 0x00, 0x00, 0x0f, 0xcc, 0xd2, 0x22, 0x00, 0x00, 0x08, + 0x05, 0x08, 0x07, 0x00, 0x17, 0x47, 0x32, 0xa6, 0xf5, 0xc8, 0xbe, 0xa9, 0x08, 0x08, 0x06, 0x01, + 0x00, 0x09, 0x18, 0x15, 0x24, 0x3d, 0x32, 0x5e, 0x6f, 0x08, 0x09, 0x06, 0x04, 0x05, 0x05, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x07, 0x07, 0x07, 0x08, 0x09, 0x04, 0x00, 0x01, 0x03, 0x08, 0x0a, 0x09, 0x0a, 0x06, + 0x06, 0x06, 0x05, 0x03, 0x1a, 0x8a, 0x6c, 0x0f, 0x03, 0x05, 0x09, 0x06, 0x05, 0x06, 0x0a, 0x05, + 0x00, 0x02, 0xb3, 0xe9, 0x38, 0x00, 0x00, 0x08, 0x06, 0x05, 0x08, 0x03, 0x10, 0x40, 0x2e, 0x92, + 0xfd, 0xcf, 0xb9, 0xbb, 0x08, 0x08, 0x06, 0x04, 0x01, 0x05, 0x1d, 0x20, 0x26, 0x4b, 0x3b, 0x62, + 0x84, 0x09, 0x06, 0x09, 0x06, 0x05, 0x05, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x08, 0x08, 0x08, 0x07, 0x05, + 0x00, 0x00, 0x03, 0x08, 0x0a, 0x09, 0x09, 0x0a, 0x06, 0x05, 0x06, 0x00, 0x11, 0x7e, 0x79, 0x14, + 0x03, 0x05, 0x06, 0x07, 0x06, 0x05, 0x07, 0x09, 0x00, 0x00, 0x99, 0xfa, 0x4a, 0x00, 0x00, 0x09, + 0x06, 0x06, 0x05, 0x06, 0x0c, 0x3e, 0x2d, 0x7b, 0xff, 0xd4, 0xb2, 0xbe, 0x0a, 0x08, 0x06, 0x06, + 0x04, 0x01, 0x1e, 0x27, 0x2f, 0x57, 0x4b, 0x69, 0x93, 0x08, 0x07, 0x06, 0x09, 0x08, 0x03, 0x03, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x07, 0x08, 0x09, 0x08, 0x09, 0x05, 0x00, 0x00, 0x02, 0x09, 0x0a, 0x09, 0x08, 0x07, + 0x08, 0x04, 0x07, 0x02, 0x09, 0x70, 0x82, 0x17, 0x02, 0x05, 0x05, 0x03, 0x06, 0x06, 0x05, 0x06, + 0x00, 0x00, 0x86, 0xfd, 0x5c, 0x00, 0x00, 0x05, 0x07, 0x07, 0x06, 0x05, 0x08, 0x37, 0x2a, 0x65, + 0xff, 0xd8, 0xad, 0xbb, 0x06, 0x0a, 0x09, 0x07, 0x06, 0x03, 0x1e, 0x2f, 0x34, 0x65, 0x60, 0x72, + 0xa0, 0x08, 0x06, 0x06, 0x06, 0x0a, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x07, 0x08, 0x07, 0x08, 0x0a, 0x06, + 0x00, 0x00, 0x05, 0x08, 0x09, 0x05, 0x07, 0x0a, 0x06, 0x05, 0x09, 0x03, 0x07, 0x57, 0x83, 0x10, + 0x03, 0x05, 0x07, 0x09, 0x06, 0x01, 0x07, 0x07, 0x00, 0x00, 0x75, 0xfe, 0x68, 0x00, 0x00, 0x08, + 0x04, 0x03, 0x06, 0x04, 0x02, 0x21, 0x25, 0x4e, 0xff, 0xd8, 0x9d, 0xa9, 0x07, 0x05, 0x07, 0x09, + 0x07, 0x05, 0x1e, 0x3e, 0x3e, 0x81, 0x8d, 0x8e, 0xc0, 0x0a, 0x08, 0x06, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x09, 0x08, 0x07, 0x08, 0x06, 0x06, 0x08, 0x00, 0x00, 0x05, 0x07, 0x08, 0x0a, 0x07, 0x06, + 0x0a, 0x09, 0x08, 0x03, 0x06, 0x4f, 0x7e, 0x09, 0x01, 0x08, 0x08, 0x06, 0x0b, 0x08, 0x04, 0x08, + 0x01, 0x00, 0x73, 0xfb, 0x62, 0x00, 0x00, 0x0a, 0x07, 0x05, 0x03, 0x06, 0x02, 0x18, 0x1f, 0x46, + 0xfd, 0xd2, 0x8d, 0x9f, 0x09, 0x07, 0x05, 0x05, 0x08, 0x05, 0x1c, 0x43, 0x43, 0x91, 0x9d, 0x9d, + 0xcf, 0x08, 0x08, 0x08, 0x05, 0x04, 0x09, 0x02, 0x02, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x07, 0x09, 0x07, 0x08, 0x07, 0x07, + 0x00, 0x00, 0x05, 0x07, 0x0a, 0x09, 0x09, 0x05, 0x06, 0x0b, 0x07, 0x03, 0x06, 0x48, 0x73, 0x05, + 0x00, 0x08, 0x07, 0x05, 0x06, 0x09, 0x06, 0x07, 0x03, 0x00, 0x7a, 0xf7, 0x50, 0x00, 0x00, 0x0a, + 0x07, 0x07, 0x05, 0x02, 0x04, 0x12, 0x18, 0x43, 0xfa, 0xcc, 0x81, 0x95, 0x08, 0x09, 0x06, 0x04, + 0x08, 0x06, 0x18, 0x47, 0x4c, 0xa2, 0xa8, 0xb2, 0xe2, 0x08, 0x07, 0x09, 0x09, 0x06, 0x08, 0x04, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x09, 0x08, 0x08, 0x07, 0x09, 0x07, 0x00, 0x00, 0x05, 0x09, 0x09, 0x08, 0x0a, 0x07, + 0x06, 0x07, 0x09, 0x06, 0x07, 0x45, 0x65, 0x01, 0x03, 0x06, 0x0a, 0x06, 0x04, 0x06, 0x07, 0x08, + 0x03, 0x00, 0x87, 0xf3, 0x3c, 0x00, 0x00, 0x08, 0x08, 0x08, 0x06, 0x04, 0x01, 0x0c, 0x11, 0x44, + 0xfa, 0xbc, 0x7a, 0x8a, 0x09, 0x0a, 0x0a, 0x04, 0x05, 0x06, 0x15, 0x49, 0x53, 0xb2, 0xb2, 0xc6, + 0xf0, 0x0a, 0x06, 0x07, 0x09, 0x06, 0x07, 0x04, 0x02, 0x00, 0x05, 0x03, 0x00, 0x15, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x07, 0x09, 0x0a, 0x08, 0x09, 0x08, + 0x01, 0x00, 0x07, 0x0a, 0x07, 0x08, 0x09, 0x07, 0x07, 0x07, 0x06, 0x06, 0x08, 0x3d, 0x42, 0x00, + 0x04, 0x05, 0x08, 0x08, 0x08, 0x06, 0x01, 0x07, 0x07, 0x00, 0xa4, 0xe0, 0x16, 0x00, 0x00, 0x07, + 0x06, 0x05, 0x07, 0x06, 0x03, 0x05, 0x05, 0x56, 0xf6, 0x95, 0x72, 0x50, 0x05, 0x08, 0x07, 0x09, + 0x08, 0x03, 0x08, 0x42, 0x68, 0xcc, 0xc7, 0xf1, 0xd4, 0x12, 0x03, 0x09, 0x08, 0x06, 0x09, 0x07, + 0x02, 0x00, 0x0d, 0x08, 0x16, 0x15, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x08, 0x07, 0x06, 0x08, 0x09, 0x09, 0x08, 0x01, 0x02, 0x08, 0x09, 0x0a, 0x08, 0x07, 0x07, + 0x07, 0x08, 0x07, 0x03, 0x08, 0x38, 0x30, 0x00, 0x06, 0x08, 0x06, 0x03, 0x07, 0x08, 0x02, 0x03, + 0x05, 0x04, 0xb2, 0xcb, 0x09, 0x00, 0x00, 0x07, 0x03, 0x05, 0x04, 0x07, 0x03, 0x06, 0x01, 0x64, + 0xee, 0x80, 0x68, 0x29, 0x00, 0x05, 0x04, 0x07, 0x0a, 0x06, 0x04, 0x3e, 0x71, 0xd5, 0xd5, 0xfc, + 0x91, 0x69, 0x10, 0x02, 0x07, 0x06, 0x09, 0x08, 0x02, 0x02, 0x13, 0x0b, 0x1f, 0x0f, 0xdd, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x08, 0x07, 0x07, 0x09, 0x09, 0x09, 0x08, + 0x01, 0x02, 0x09, 0x09, 0x0b, 0x08, 0x08, 0x07, 0x08, 0x08, 0x07, 0x04, 0x08, 0x38, 0x30, 0x00, + 0x06, 0x08, 0x05, 0x04, 0x07, 0x08, 0x03, 0x03, 0x05, 0x04, 0xb2, 0xcb, 0x09, 0x00, 0x00, 0x07, + 0x03, 0x05, 0x05, 0x08, 0x03, 0x05, 0x01, 0x64, 0xee, 0x81, 0x68, 0x29, 0x00, 0x05, 0x05, 0x08, + 0x0a, 0x06, 0x04, 0x3e, 0x71, 0xd5, 0xd5, 0xfd, 0x91, 0x69, 0x10, 0x02, 0x08, 0x06, 0x09, 0x08, + 0x02, 0x02, 0x13, 0x0b, 0x1f, 0x0f, 0xdd, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xdc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x07, 0x08, 0x07, 0x08, 0x0a, 0x08, 0x01, 0x04, 0x0a, 0x08, 0x0a, 0x08, 0x08, 0x08, + 0x06, 0x08, 0x09, 0x06, 0x07, 0x31, 0x21, 0x00, 0x08, 0x08, 0x07, 0x04, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, 0x05, 0x01, 0x06, 0x05, 0x04, 0x03, 0x00, 0x76, + 0xe5, 0x71, 0x55, 0x10, 0x02, 0x00, 0x02, 0x04, 0x09, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, + 0x41, 0x0b, 0x5b, 0x07, 0x01, 0x08, 0x08, 0x06, 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x07, 0x08, 0x07, 0x09, 0x0b, 0x07, + 0x02, 0x04, 0x0a, 0x08, 0x0b, 0x08, 0x08, 0x07, 0x06, 0x08, 0x09, 0x05, 0x07, 0x32, 0x21, 0x00, + 0x09, 0x08, 0x07, 0x04, 0x05, 0x07, 0x07, 0x05, 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, + 0x05, 0x01, 0x06, 0x05, 0x05, 0x03, 0x00, 0x76, 0xe5, 0x71, 0x56, 0x10, 0x02, 0x00, 0x02, 0x04, + 0x09, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, 0x41, 0x0b, 0x5b, 0x07, 0x01, 0x08, 0x08, 0x06, + 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x07, 0x08, 0x07, 0x09, 0x0b, 0x07, 0x02, 0x04, 0x0a, 0x08, 0x0b, 0x08, 0x08, 0x07, + 0x06, 0x08, 0x09, 0x05, 0x07, 0x32, 0x21, 0x00, 0x09, 0x08, 0x07, 0x04, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, 0x05, 0x01, 0x06, 0x05, 0x05, 0x03, 0x00, 0x76, + 0xe5, 0x71, 0x56, 0x10, 0x02, 0x00, 0x02, 0x04, 0x09, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, + 0x41, 0x0b, 0x5b, 0x07, 0x01, 0x08, 0x08, 0x06, 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x07, 0x08, 0x07, 0x09, 0x0b, 0x07, + 0x02, 0x04, 0x0a, 0x08, 0x0b, 0x08, 0x08, 0x07, 0x06, 0x08, 0x09, 0x05, 0x07, 0x32, 0x21, 0x00, + 0x09, 0x08, 0x07, 0x04, 0x05, 0x07, 0x07, 0x05, 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, + 0x05, 0x01, 0x06, 0x05, 0x05, 0x03, 0x00, 0x76, 0xe5, 0x71, 0x56, 0x10, 0x02, 0x00, 0x02, 0x04, + 0x09, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, 0x41, 0x0b, 0x5b, 0x07, 0x01, 0x08, 0x08, 0x06, + 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x07, 0x08, 0x07, 0x09, 0x0b, 0x07, 0x02, 0x04, 0x0a, 0x08, 0x0b, 0x08, 0x08, 0x07, + 0x06, 0x08, 0x09, 0x05, 0x07, 0x32, 0x21, 0x00, 0x09, 0x08, 0x07, 0x04, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, 0x05, 0x02, 0x06, 0x05, 0x05, 0x03, 0x00, 0x76, + 0xe5, 0x71, 0x56, 0x10, 0x02, 0x00, 0x02, 0x04, 0x09, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, + 0x41, 0x0b, 0x5b, 0x06, 0x01, 0x08, 0x08, 0x06, 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x07, 0x08, 0x07, 0x09, 0x0b, 0x07, + 0x02, 0x04, 0x0a, 0x08, 0x0b, 0x08, 0x08, 0x07, 0x06, 0x08, 0x09, 0x05, 0x07, 0x32, 0x21, 0x00, + 0x09, 0x08, 0x07, 0x04, 0x05, 0x07, 0x07, 0x05, 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, + 0x05, 0x02, 0x06, 0x05, 0x05, 0x03, 0x00, 0x76, 0xe5, 0x71, 0x56, 0x10, 0x02, 0x00, 0x02, 0x04, + 0x09, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, 0x41, 0x0b, 0x5b, 0x06, 0x01, 0x08, 0x08, 0x06, + 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x07, 0x08, 0x06, 0x09, 0x0b, 0x07, 0x02, 0x04, 0x0a, 0x08, 0x0b, 0x08, 0x08, 0x07, + 0x06, 0x07, 0x09, 0x05, 0x07, 0x32, 0x21, 0x00, 0x09, 0x08, 0x07, 0x04, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, 0x05, 0x02, 0x06, 0x04, 0x05, 0x03, 0x00, 0x76, + 0xe5, 0x71, 0x56, 0x10, 0x02, 0x00, 0x02, 0x04, 0x08, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, + 0x41, 0x0b, 0x5b, 0x06, 0x01, 0x08, 0x08, 0x06, 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x07, 0x08, 0x06, 0x09, 0x0b, 0x07, + 0x02, 0x04, 0x0a, 0x08, 0x0b, 0x08, 0x08, 0x07, 0x06, 0x07, 0x09, 0x05, 0x07, 0x32, 0x21, 0x00, + 0x09, 0x08, 0x08, 0x04, 0x04, 0x06, 0x07, 0x05, 0x00, 0x08, 0xbf, 0xb2, 0x00, 0x00, 0x04, 0x08, + 0x05, 0x01, 0x05, 0x04, 0x05, 0x03, 0x00, 0x76, 0xe5, 0x71, 0x56, 0x10, 0x02, 0x00, 0x02, 0x04, + 0x08, 0x09, 0x04, 0x38, 0x7e, 0xdb, 0xe5, 0xfb, 0x41, 0x0b, 0x5b, 0x06, 0x01, 0x08, 0x08, 0x06, + 0x04, 0x04, 0x16, 0x13, 0x20, 0x08, 0xcd, 0xc7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x09, 0x08, 0x08, 0x06, 0x08, 0x0a, 0x08, 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x08, + 0x07, 0x05, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, 0x07, 0x09, 0x06, 0x04, 0x05, 0x04, 0x08, 0x07, + 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, 0x08, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, + 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, 0x04, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, + 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, 0x04, 0x08, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, + 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x09, 0x08, 0x08, 0x06, 0x08, 0x0a, 0x08, + 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x08, 0x07, 0x05, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, + 0x07, 0x09, 0x06, 0x04, 0x05, 0x04, 0x08, 0x07, 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, + 0x07, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, + 0x04, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, + 0x04, 0x08, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x09, 0x08, 0x08, 0x06, 0x08, 0x0a, 0x08, 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x08, + 0x07, 0x05, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, 0x07, 0x09, 0x06, 0x04, 0x05, 0x04, 0x08, 0x07, + 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, 0x07, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, + 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, 0x05, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, + 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, 0x04, 0x08, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, + 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x09, 0x08, 0x08, 0x06, 0x08, 0x0a, 0x08, + 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x08, 0x07, 0x05, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, + 0x07, 0x09, 0x06, 0x04, 0x05, 0x04, 0x08, 0x07, 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, + 0x07, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, + 0x05, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, + 0x04, 0x08, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x09, 0x08, 0x08, 0x06, 0x08, 0x0a, 0x08, 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x08, + 0x07, 0x05, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, 0x07, 0x09, 0x06, 0x04, 0x05, 0x04, 0x08, 0x07, + 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, 0x07, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, + 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, 0x05, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, + 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, 0x04, 0x08, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, + 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x09, 0x08, 0x08, 0x06, 0x08, 0x0a, 0x08, + 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x08, 0x07, 0x05, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, + 0x07, 0x09, 0x06, 0x04, 0x05, 0x04, 0x08, 0x07, 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, + 0x07, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, + 0x05, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, + 0x04, 0x08, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x09, 0x08, 0x07, 0x06, 0x08, 0x0a, 0x08, 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x08, + 0x06, 0x06, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, 0x07, 0x09, 0x06, 0x04, 0x04, 0x05, 0x08, 0x08, + 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, 0x08, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, + 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, 0x05, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, + 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, 0x04, 0x07, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, + 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x09, 0x08, 0x08, 0x06, 0x07, 0x0a, 0x08, + 0x03, 0x05, 0x0b, 0x09, 0x0a, 0x08, 0x08, 0x07, 0x07, 0x06, 0x09, 0x07, 0x05, 0x28, 0x15, 0x02, + 0x07, 0x09, 0x06, 0x05, 0x05, 0x04, 0x08, 0x07, 0x00, 0x09, 0xc3, 0x98, 0x00, 0x00, 0x07, 0x07, + 0x08, 0x03, 0x03, 0x05, 0x03, 0x02, 0x00, 0x8b, 0xda, 0x65, 0x3b, 0x04, 0x04, 0x03, 0x00, 0x06, + 0x05, 0x07, 0x05, 0x31, 0x8e, 0xe0, 0xf4, 0xd1, 0x0c, 0x00, 0x16, 0x49, 0x00, 0x02, 0x08, 0x07, + 0x04, 0x08, 0x16, 0x1b, 0x1b, 0x05, 0xc4, 0xcf, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, + 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x06, 0x07, 0x09, 0x07, 0x09, 0x01, 0x05, 0x05, 0x05, 0x08, + 0x02, 0x0b, 0xc1, 0x62, 0x00, 0x01, 0x08, 0x02, 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, + 0xc0, 0x49, 0x07, 0x03, 0x0a, 0x00, 0x05, 0x00, 0x02, 0x04, 0x01, 0x2a, 0xa8, 0xea, 0xf6, 0x42, + 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x02, 0x07, 0x05, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, + 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, + 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x06, 0x07, + 0x09, 0x07, 0x09, 0x01, 0x05, 0x05, 0x05, 0x08, 0x02, 0x0b, 0xc1, 0x62, 0x00, 0x01, 0x08, 0x02, + 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, 0xc0, 0x49, 0x07, 0x03, 0x0a, 0x00, 0x05, 0x00, + 0x02, 0x04, 0x01, 0x2a, 0xa8, 0xea, 0xf6, 0x42, 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x02, 0x07, + 0x05, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, + 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x05, 0x07, 0x09, 0x07, 0x09, 0x01, 0x05, 0x05, 0x05, 0x08, + 0x02, 0x0b, 0xc0, 0x62, 0x00, 0x01, 0x08, 0x02, 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, + 0xc0, 0x49, 0x07, 0x03, 0x0b, 0x00, 0x05, 0x00, 0x02, 0x04, 0x01, 0x2a, 0xa8, 0xea, 0xf6, 0x42, + 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x02, 0x07, 0x05, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, + 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, + 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x05, 0x07, + 0x09, 0x07, 0x09, 0x01, 0x05, 0x05, 0x05, 0x08, 0x02, 0x0b, 0xc0, 0x62, 0x00, 0x01, 0x08, 0x02, + 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, 0xc0, 0x49, 0x07, 0x03, 0x0b, 0x00, 0x05, 0x00, + 0x02, 0x04, 0x01, 0x2a, 0xa8, 0xea, 0xf6, 0x42, 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x02, 0x07, + 0x05, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, + 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x05, 0x07, 0x09, 0x07, 0x09, 0x01, 0x05, 0x05, 0x05, 0x08, + 0x02, 0x0b, 0xc0, 0x62, 0x00, 0x01, 0x08, 0x02, 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, + 0xc0, 0x49, 0x07, 0x03, 0x0b, 0x00, 0x05, 0x00, 0x02, 0x04, 0x01, 0x2a, 0xa8, 0xea, 0xf6, 0x42, + 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x02, 0x07, 0x05, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, + 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, + 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x05, 0x07, + 0x09, 0x07, 0x09, 0x01, 0x05, 0x05, 0x05, 0x08, 0x02, 0x0b, 0xc0, 0x62, 0x00, 0x01, 0x08, 0x02, + 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, 0xc0, 0x49, 0x07, 0x03, 0x0b, 0x00, 0x05, 0x00, + 0x02, 0x04, 0x01, 0x2a, 0xa8, 0xea, 0xf6, 0x42, 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x02, 0x07, + 0x05, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, + 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x05, 0x07, 0x09, 0x07, 0x09, 0x01, 0x05, 0x05, 0x05, 0x08, + 0x02, 0x0b, 0xc0, 0x62, 0x00, 0x01, 0x08, 0x02, 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, + 0xc0, 0x49, 0x07, 0x03, 0x0b, 0x00, 0x05, 0x00, 0x02, 0x04, 0x01, 0x2a, 0xa8, 0xea, 0xf6, 0x42, + 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x02, 0x07, 0x05, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, + 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x08, 0x06, 0x08, 0x07, 0x06, 0x09, + 0x05, 0x05, 0x09, 0x08, 0x0a, 0x07, 0x06, 0x08, 0x07, 0x07, 0x06, 0x06, 0x08, 0x18, 0x05, 0x07, + 0x09, 0x07, 0x08, 0x01, 0x05, 0x05, 0x05, 0x07, 0x02, 0x0b, 0xc0, 0x62, 0x00, 0x01, 0x08, 0x02, + 0x06, 0x07, 0x03, 0x02, 0x05, 0x00, 0x00, 0xae, 0xc0, 0x48, 0x07, 0x03, 0x0b, 0x00, 0x05, 0x00, + 0x02, 0x04, 0x00, 0x2a, 0xa8, 0xea, 0xf6, 0x42, 0x00, 0xa7, 0x0f, 0x00, 0x3f, 0x10, 0x01, 0x06, + 0x04, 0x09, 0x1c, 0x1f, 0x0b, 0x08, 0xff, 0xd4, 0xb4, 0xd4, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xe9, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x08, 0x09, 0x07, 0x07, 0x07, 0x07, 0x08, 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x06, 0x06, + 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, 0x09, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x05, + 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, 0x03, 0x05, 0x05, 0x02, 0x03, 0x00, 0x00, 0xb8, + 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x24, 0xaf, 0xee, 0xd7, 0x13, + 0x03, 0xd2, 0x6f, 0x00, 0x08, 0x3b, 0x01, 0x01, 0x05, 0x09, 0x1d, 0x19, 0x05, 0x07, 0xff, 0xfd, + 0xbc, 0xbd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x08, + 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x07, 0x06, 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, + 0x09, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x05, 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, + 0x03, 0x05, 0x05, 0x02, 0x03, 0x00, 0x00, 0xb8, 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x05, 0x00, 0x24, 0xaf, 0xee, 0xd7, 0x13, 0x03, 0xd2, 0x6f, 0x00, 0x07, 0x3b, 0x01, 0x01, + 0x05, 0x09, 0x1d, 0x19, 0x05, 0x07, 0xff, 0xfd, 0xbc, 0xbd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x08, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x08, 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x07, 0x06, + 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, 0x09, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x05, + 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, 0x03, 0x05, 0x05, 0x02, 0x03, 0x00, 0x00, 0xb8, + 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x24, 0xaf, 0xed, 0xd7, 0x13, + 0x03, 0xd2, 0x6f, 0x00, 0x08, 0x3b, 0x01, 0x01, 0x05, 0x09, 0x1d, 0x19, 0x05, 0x07, 0xff, 0xfd, + 0xbc, 0xbd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x08, + 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x07, 0x06, 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, + 0x09, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x06, 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, + 0x03, 0x05, 0x05, 0x02, 0x04, 0x00, 0x00, 0xb8, 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x05, 0x00, 0x24, 0xaf, 0xed, 0xd7, 0x13, 0x03, 0xd2, 0x6f, 0x00, 0x08, 0x3b, 0x01, 0x01, + 0x05, 0x09, 0x1d, 0x19, 0x05, 0x07, 0xff, 0xfd, 0xbc, 0xbd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x08, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x08, 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x07, 0x06, + 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, 0x09, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x06, + 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, 0x03, 0x05, 0x05, 0x02, 0x04, 0x00, 0x00, 0xb8, + 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x24, 0xaf, 0xed, 0xd7, 0x13, + 0x03, 0xd2, 0x6f, 0x00, 0x08, 0x3b, 0x01, 0x01, 0x05, 0x09, 0x1d, 0x19, 0x05, 0x07, 0xff, 0xfd, + 0xbc, 0xbd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x08, + 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x07, 0x06, 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, + 0x09, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x06, 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, + 0x03, 0x05, 0x05, 0x02, 0x04, 0x00, 0x00, 0xb8, 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x05, 0x00, 0x24, 0xaf, 0xed, 0xd7, 0x13, 0x03, 0xd2, 0x6f, 0x00, 0x08, 0x3b, 0x01, 0x01, + 0x05, 0x09, 0x1d, 0x19, 0x05, 0x07, 0xff, 0xfd, 0xbc, 0xbd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x08, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x08, 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x07, 0x06, + 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, 0x09, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x06, + 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, 0x03, 0x05, 0x05, 0x02, 0x04, 0x00, 0x00, 0xb8, + 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x24, 0xaf, 0xed, 0xd7, 0x13, + 0x03, 0xd2, 0x6f, 0x00, 0x08, 0x3b, 0x01, 0x01, 0x05, 0x09, 0x1d, 0x19, 0x05, 0x07, 0xff, 0xfd, + 0xbc, 0xbd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x0a, 0x07, 0x07, 0x08, 0x07, 0x08, + 0x05, 0x07, 0x0a, 0x06, 0x08, 0x07, 0x07, 0x06, 0x07, 0x09, 0x06, 0x06, 0x07, 0x11, 0x03, 0x06, + 0x0a, 0x0a, 0x08, 0x07, 0x01, 0x03, 0x05, 0x06, 0x02, 0x0e, 0xbb, 0x4c, 0x00, 0x04, 0x08, 0x02, + 0x03, 0x05, 0x05, 0x02, 0x04, 0x00, 0x00, 0xb8, 0xb3, 0x37, 0x00, 0x01, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x05, 0x00, 0x24, 0xaf, 0xed, 0xd7, 0x13, 0x03, 0xd2, 0x6f, 0x00, 0x08, 0x3b, 0x01, 0x01, + 0x05, 0x09, 0x1d, 0x1a, 0x05, 0x07, 0xff, 0xfd, 0xbc, 0xbd, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfb, 0xfd, 0xff, 0xff, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x07, + 0x08, 0x08, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, 0x08, 0x09, 0x09, 0x08, 0x03, 0x06, 0x06, 0x05, + 0x02, 0x0f, 0xb4, 0x3f, 0x00, 0x08, 0x06, 0x03, 0x02, 0x06, 0x08, 0x05, 0x04, 0x00, 0x00, 0xc1, + 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x02, 0x01, 0x03, 0x00, 0x1c, 0xaf, 0xed, 0xa7, 0x00, + 0x03, 0x4e, 0xb2, 0x16, 0x00, 0x22, 0x12, 0x02, 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, + 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, + 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x07, 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, + 0x08, 0x09, 0x09, 0x08, 0x03, 0x06, 0x07, 0x06, 0x02, 0x0f, 0xb4, 0x3f, 0x00, 0x08, 0x06, 0x03, + 0x02, 0x06, 0x08, 0x05, 0x04, 0x00, 0x00, 0xc1, 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, + 0x01, 0x03, 0x00, 0x1c, 0xaf, 0xed, 0xa7, 0x00, 0x03, 0x4e, 0xb2, 0x16, 0x00, 0x22, 0x13, 0x02, + 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x07, + 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x04, 0x07, 0x08, 0x09, 0x09, 0x09, 0x03, 0x06, 0x07, 0x06, + 0x02, 0x0f, 0xb4, 0x3f, 0x00, 0x08, 0x06, 0x03, 0x02, 0x06, 0x08, 0x05, 0x04, 0x00, 0x00, 0xc0, + 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, 0x01, 0x02, 0x00, 0x1c, 0xaf, 0xec, 0xa7, 0x00, + 0x03, 0x4e, 0xb2, 0x16, 0x00, 0x22, 0x13, 0x02, 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, + 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, + 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x07, 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x04, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x03, 0x06, 0x07, 0x06, 0x02, 0x0f, 0xb4, 0x3f, 0x00, 0x08, 0x06, 0x03, + 0x02, 0x06, 0x08, 0x05, 0x04, 0x00, 0x00, 0xc0, 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, + 0x01, 0x02, 0x00, 0x1c, 0xaf, 0xec, 0xa7, 0x00, 0x03, 0x4e, 0xb2, 0x16, 0x00, 0x22, 0x13, 0x02, + 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x07, + 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x04, 0x07, 0x08, 0x09, 0x09, 0x09, 0x03, 0x06, 0x07, 0x06, + 0x02, 0x0f, 0xb4, 0x3f, 0x00, 0x08, 0x06, 0x03, 0x02, 0x06, 0x08, 0x05, 0x04, 0x00, 0x00, 0xc0, + 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, 0x01, 0x02, 0x00, 0x1c, 0xaf, 0xec, 0xa7, 0x00, + 0x03, 0x4e, 0xb2, 0x16, 0x00, 0x22, 0x13, 0x02, 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, + 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, + 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x07, 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x04, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x03, 0x06, 0x07, 0x06, 0x02, 0x0f, 0xb4, 0x3f, 0x00, 0x08, 0x06, 0x03, + 0x02, 0x06, 0x08, 0x05, 0x04, 0x00, 0x00, 0xc0, 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, + 0x01, 0x02, 0x00, 0x1c, 0xaf, 0xec, 0xa7, 0x00, 0x03, 0x4e, 0xb2, 0x16, 0x00, 0x22, 0x13, 0x02, + 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x07, + 0x08, 0x09, 0x07, 0x07, 0x05, 0x0b, 0x04, 0x07, 0x08, 0x09, 0x09, 0x09, 0x03, 0x06, 0x07, 0x06, + 0x02, 0x0f, 0xb5, 0x3f, 0x00, 0x07, 0x06, 0x03, 0x01, 0x06, 0x08, 0x05, 0x04, 0x00, 0x00, 0xc1, + 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0a, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1c, 0xaf, 0xec, 0xa7, 0x00, + 0x03, 0x4e, 0xb2, 0x16, 0x00, 0x22, 0x13, 0x02, 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, + 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, + 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x09, 0x09, 0x09, 0x08, 0x09, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x07, 0x07, 0x05, 0x0b, 0x03, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, 0x02, 0x0f, 0xb4, 0x3f, 0x00, 0x08, 0x06, 0x03, + 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc0, 0xa8, 0x24, 0x00, 0x02, 0x05, 0x0a, 0x00, 0x02, + 0x00, 0x03, 0x00, 0x1c, 0xaf, 0xec, 0xa7, 0x00, 0x03, 0x4e, 0xb2, 0x15, 0x00, 0x22, 0x13, 0x02, + 0x05, 0x08, 0x1b, 0x11, 0x06, 0x07, 0xd3, 0xff, 0xd7, 0xac, 0xbc, 0x23, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf4, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, + 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x05, 0x03, 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, + 0xa4, 0x20, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, + 0x04, 0x4d, 0xb3, 0x17, 0x00, 0x22, 0x14, 0x01, 0x05, 0x09, 0x1a, 0x0f, 0x06, 0x08, 0xd3, 0xff, + 0xd8, 0xac, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x09, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x05, 0x03, + 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, 0xa4, 0x20, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, 0x04, 0x4d, 0xb3, 0x17, 0x00, 0x22, 0x14, 0x01, + 0x05, 0x09, 0x1a, 0x0f, 0x06, 0x08, 0xd3, 0xff, 0xd8, 0xac, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, + 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x06, 0x03, 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, + 0xa4, 0x20, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, + 0x04, 0x4d, 0xb3, 0x17, 0x00, 0x22, 0x14, 0x01, 0x05, 0x09, 0x1a, 0x0f, 0x06, 0x08, 0xd3, 0xff, + 0xd8, 0xac, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x09, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x06, 0x03, + 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, 0xa4, 0x20, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, 0x04, 0x4d, 0xb3, 0x17, 0x00, 0x22, 0x14, 0x01, + 0x05, 0x09, 0x19, 0x0f, 0x06, 0x08, 0xd3, 0xff, 0xd8, 0xac, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, + 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x06, 0x03, 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, + 0xa4, 0x20, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, + 0x04, 0x4d, 0xb3, 0x17, 0x00, 0x22, 0x14, 0x01, 0x05, 0x09, 0x19, 0x0f, 0x06, 0x08, 0xd3, 0xff, + 0xd8, 0xac, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x09, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, + 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x06, 0x03, + 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, 0xa4, 0x20, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, 0x04, 0x4d, 0xb3, 0x17, 0x00, 0x22, 0x14, 0x01, + 0x05, 0x09, 0x19, 0x0f, 0x06, 0x08, 0xd3, 0xff, 0xd8, 0xad, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, 0x08, 0x09, 0x09, 0x09, 0x02, 0x06, 0x07, 0x06, + 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x06, 0x03, 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, + 0xa4, 0x20, 0x00, 0x02, 0x05, 0x0b, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, + 0x04, 0x4d, 0xb3, 0x17, 0x00, 0x22, 0x14, 0x01, 0x05, 0x09, 0x19, 0x0f, 0x06, 0x08, 0xd3, 0xff, + 0xd8, 0xad, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x08, 0x09, 0x09, 0x09, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x03, 0x07, + 0x08, 0x09, 0x09, 0x08, 0x02, 0x05, 0x07, 0x06, 0x02, 0x0f, 0xb3, 0x3a, 0x00, 0x08, 0x06, 0x03, + 0x01, 0x06, 0x08, 0x04, 0x04, 0x00, 0x00, 0xc3, 0xa4, 0x20, 0x00, 0x03, 0x05, 0x0b, 0x00, 0x03, + 0x00, 0x03, 0x00, 0x1b, 0xaf, 0xeb, 0x99, 0x00, 0x05, 0x4d, 0xb3, 0x16, 0x00, 0x22, 0x14, 0x01, + 0x05, 0x09, 0x19, 0x0f, 0x06, 0x08, 0xd3, 0xff, 0xd8, 0xad, 0xbc, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xf6, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x08, 0x06, + 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x03, 0x00, 0x06, 0x07, 0x04, 0x04, 0x00, 0x01, 0xc6, + 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1a, 0xac, 0xeb, 0x93, 0x00, + 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, 0x05, 0x08, 0x19, 0x0e, 0x06, 0x07, 0xd3, 0xff, + 0xd9, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, + 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x07, 0x06, 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x03, + 0x00, 0x06, 0x07, 0x04, 0x04, 0x00, 0x01, 0xc6, 0xa0, 0x1f, 0x00, 0x03, 0x04, 0x0c, 0x00, 0x03, + 0x00, 0x03, 0x00, 0x1a, 0xac, 0xeb, 0x93, 0x00, 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, + 0x05, 0x08, 0x19, 0x0e, 0x06, 0x07, 0xd3, 0xff, 0xd9, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x09, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x07, 0x06, + 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x03, 0x00, 0x06, 0x07, 0x04, 0x04, 0x00, 0x01, 0xc6, + 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1a, 0xac, 0xeb, 0x93, 0x00, + 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, 0x05, 0x08, 0x19, 0x0e, 0x06, 0x07, 0xd3, 0xff, + 0xd9, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, + 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x07, 0x06, 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x03, + 0x00, 0x06, 0x07, 0x05, 0x04, 0x00, 0x01, 0xc6, 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, + 0x00, 0x03, 0x00, 0x1a, 0xac, 0xeb, 0x93, 0x00, 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, + 0x05, 0x08, 0x19, 0x0e, 0x06, 0x08, 0xd3, 0xff, 0xd9, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x09, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x07, 0x06, + 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x03, 0x00, 0x06, 0x07, 0x05, 0x04, 0x00, 0x01, 0xc6, + 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1a, 0xac, 0xeb, 0x93, 0x00, + 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, 0x05, 0x08, 0x19, 0x0e, 0x06, 0x08, 0xd3, 0xff, + 0xd9, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x09, 0x06, 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, + 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x07, 0x06, 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x03, + 0x00, 0x06, 0x07, 0x05, 0x04, 0x00, 0x01, 0xc6, 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, + 0x00, 0x03, 0x00, 0x1a, 0xac, 0xeb, 0x93, 0x00, 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, + 0x05, 0x08, 0x19, 0x0e, 0x06, 0x08, 0xd3, 0xff, 0xd9, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x09, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x07, 0x06, + 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x03, 0x00, 0x06, 0x07, 0x05, 0x04, 0x00, 0x01, 0xc6, + 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1a, 0xac, 0xeb, 0x93, 0x00, + 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, 0x05, 0x08, 0x19, 0x0e, 0x06, 0x08, 0xd3, 0xff, + 0xd9, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x06, 0x07, 0x09, 0x07, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x08, 0x07, 0x04, 0x0c, 0x04, 0x06, + 0x07, 0x09, 0x09, 0x08, 0x02, 0x06, 0x07, 0x06, 0x02, 0x10, 0xb5, 0x35, 0x00, 0x08, 0x06, 0x02, + 0x00, 0x06, 0x07, 0x04, 0x04, 0x00, 0x01, 0xc6, 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xad, 0xeb, 0x93, 0x00, 0x04, 0x4d, 0xb6, 0x19, 0x00, 0x21, 0x16, 0x01, + 0x05, 0x08, 0x19, 0x0e, 0x06, 0x08, 0xd3, 0xff, 0xda, 0xad, 0xbd, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfa, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x08, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, + 0x08, 0x09, 0x08, 0x07, 0x04, 0x0d, 0x03, 0x06, 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x07, 0x05, + 0x01, 0x11, 0xb7, 0x32, 0x00, 0x08, 0x06, 0x02, 0x00, 0x06, 0x07, 0x05, 0x03, 0x00, 0x01, 0xc8, + 0xa0, 0x20, 0x00, 0x02, 0x04, 0x0c, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, + 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x17, 0x01, 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, + 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x08, 0x09, 0x09, 0x08, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, 0x08, 0x09, 0x08, 0x06, 0x04, 0x0d, 0x03, 0x06, + 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x07, 0x05, 0x01, 0x11, 0xb7, 0x33, 0x00, 0x08, 0x06, 0x02, + 0x00, 0x06, 0x07, 0x05, 0x03, 0x00, 0x01, 0xc8, 0xa0, 0x1f, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x17, 0x01, + 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x08, 0x09, 0x09, 0x08, 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, + 0x08, 0x09, 0x08, 0x06, 0x04, 0x0d, 0x03, 0x06, 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x06, 0x05, + 0x01, 0x11, 0xb7, 0x33, 0x00, 0x08, 0x06, 0x02, 0x00, 0x06, 0x07, 0x04, 0x03, 0x00, 0x01, 0xc8, + 0xa0, 0x20, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, + 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x17, 0x01, 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, + 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x08, 0x08, 0x09, 0x08, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, 0x08, 0x09, 0x07, 0x06, 0x04, 0x0d, 0x03, 0x06, + 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x06, 0x05, 0x01, 0x11, 0xb7, 0x33, 0x00, 0x08, 0x06, 0x02, + 0x00, 0x06, 0x07, 0x05, 0x03, 0x00, 0x01, 0xc8, 0xa0, 0x20, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x16, 0x01, + 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x08, 0x08, 0x09, 0x08, 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, + 0x08, 0x09, 0x07, 0x06, 0x04, 0x0d, 0x03, 0x06, 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x06, 0x05, + 0x01, 0x11, 0xb7, 0x33, 0x00, 0x08, 0x06, 0x02, 0x00, 0x06, 0x07, 0x05, 0x03, 0x00, 0x01, 0xc8, + 0xa0, 0x20, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, + 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x16, 0x01, 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, + 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, 0x08, 0x09, 0x07, 0x06, 0x04, 0x0d, 0x03, 0x06, + 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x06, 0x05, 0x01, 0x11, 0xb7, 0x33, 0x00, 0x08, 0x06, 0x02, + 0x00, 0x06, 0x07, 0x05, 0x03, 0x00, 0x01, 0xc8, 0xa0, 0x20, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x16, 0x01, + 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, + 0x08, 0x09, 0x07, 0x06, 0x04, 0x0d, 0x03, 0x06, 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x06, 0x05, + 0x01, 0x11, 0xb7, 0x33, 0x00, 0x08, 0x06, 0x02, 0x00, 0x06, 0x07, 0x05, 0x03, 0x00, 0x01, 0xc8, + 0xa0, 0x20, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, + 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x16, 0x01, 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, + 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x06, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x06, 0x08, 0x08, 0x07, 0x06, 0x04, 0x0d, 0x03, 0x06, + 0x07, 0x09, 0x09, 0x07, 0x02, 0x06, 0x06, 0x05, 0x01, 0x11, 0xb7, 0x33, 0x00, 0x08, 0x06, 0x02, + 0x00, 0x06, 0x07, 0x05, 0x03, 0x00, 0x01, 0xc8, 0xa0, 0x20, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xab, 0xe9, 0x8f, 0x00, 0x04, 0x4d, 0xb7, 0x1b, 0x00, 0x20, 0x16, 0x01, + 0x05, 0x07, 0x17, 0x0d, 0x06, 0x08, 0xd3, 0xff, 0xdb, 0xad, 0xbe, 0x2d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfc, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x09, 0x09, 0x08, 0x09, 0x07, 0x05, 0x08, 0x09, 0x07, 0x08, 0x08, 0x08, 0x06, + 0x08, 0x08, 0x07, 0x07, 0x04, 0x0f, 0x03, 0x06, 0x07, 0x09, 0x09, 0x08, 0x01, 0x06, 0x06, 0x05, + 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x02, 0x00, 0x06, 0x07, 0x04, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x21, 0x00, 0x02, 0x04, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, + 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, 0x05, 0x06, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, + 0xdc, 0xad, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x05, 0x08, 0x09, 0x07, 0x09, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x05, 0x0f, 0x03, 0x07, + 0x07, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x04, + 0x01, 0x04, 0x07, 0x05, 0x03, 0x00, 0x02, 0xca, 0x9f, 0x21, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, + 0x05, 0x07, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, 0xdc, 0xad, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x05, 0x0f, 0x03, 0x07, 0x07, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x04, 0x01, 0x04, 0x07, 0x05, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x21, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, + 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, 0x05, 0x07, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, + 0xdc, 0xad, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x05, 0x0f, 0x03, 0x07, + 0x07, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x04, + 0x01, 0x04, 0x07, 0x05, 0x03, 0x00, 0x02, 0xca, 0x9f, 0x21, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, + 0x05, 0x07, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, 0xdc, 0xae, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, 0x05, 0x08, 0x09, 0x07, 0x09, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x05, 0x0f, 0x03, 0x07, 0x07, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x04, 0x01, 0x04, 0x07, 0x05, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x21, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, + 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, 0x05, 0x07, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, + 0xdc, 0xae, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x05, 0x0f, 0x03, 0x07, + 0x07, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x04, + 0x01, 0x04, 0x07, 0x05, 0x03, 0x00, 0x02, 0xca, 0x9f, 0x21, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, + 0x05, 0x07, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, 0xdc, 0xae, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x05, 0x0f, 0x03, 0x07, 0x07, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x04, 0x01, 0x04, 0x07, 0x05, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x21, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, + 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, 0x05, 0x07, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, + 0xdc, 0xae, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x05, 0x08, 0x09, 0x07, 0x09, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x05, 0x0f, 0x03, 0x07, + 0x07, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x12, 0xbb, 0x33, 0x00, 0x09, 0x05, 0x04, + 0x01, 0x04, 0x07, 0x05, 0x03, 0x00, 0x02, 0xca, 0x9f, 0x21, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xaa, 0xe8, 0x8b, 0x00, 0x05, 0x4d, 0xb9, 0x1b, 0x00, 0x20, 0x18, 0x01, + 0x05, 0x07, 0x15, 0x0b, 0x06, 0x08, 0xd3, 0xff, 0xdc, 0xae, 0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xfd, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x08, 0x08, 0x09, 0x08, 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x08, + 0x08, 0x08, 0x08, 0x06, 0x05, 0x11, 0x03, 0x07, 0x07, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x14, 0xbe, 0x32, 0x00, 0x0a, 0x04, 0x04, 0x02, 0x05, 0x06, 0x04, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, + 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, 0x04, 0x06, 0x13, 0x0a, 0x06, 0x07, 0xd3, 0xff, + 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x06, 0x05, 0x11, 0x03, 0x07, + 0x06, 0x09, 0x07, 0x07, 0x03, 0x06, 0x06, 0x05, 0x01, 0x13, 0xbe, 0x32, 0x00, 0x09, 0x04, 0x04, + 0x01, 0x05, 0x06, 0x05, 0x03, 0x00, 0x02, 0xca, 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, + 0x04, 0x06, 0x13, 0x09, 0x06, 0x07, 0xd2, 0xff, 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x07, + 0x09, 0x08, 0x07, 0x06, 0x05, 0x11, 0x03, 0x07, 0x06, 0x09, 0x07, 0x07, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x13, 0xbe, 0x32, 0x00, 0x09, 0x04, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, + 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, 0x04, 0x06, 0x13, 0x09, 0x06, 0x07, 0xd2, 0xff, + 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x06, 0x05, 0x11, 0x03, 0x07, + 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x13, 0xbe, 0x32, 0x00, 0x09, 0x04, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x02, 0xca, 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, + 0x04, 0x06, 0x13, 0x09, 0x06, 0x07, 0xd2, 0xff, 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x07, + 0x09, 0x08, 0x07, 0x06, 0x05, 0x11, 0x03, 0x07, 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x13, 0xbe, 0x32, 0x00, 0x09, 0x04, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, + 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, 0x04, 0x06, 0x13, 0x09, 0x06, 0x07, 0xd2, 0xff, + 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, + 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x06, 0x05, 0x11, 0x03, 0x07, + 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x13, 0xbe, 0x32, 0x00, 0x09, 0x04, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x02, 0xca, 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, + 0x04, 0x06, 0x13, 0x09, 0x06, 0x07, 0xd2, 0xff, 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x08, 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x07, + 0x09, 0x08, 0x07, 0x06, 0x05, 0x11, 0x03, 0x07, 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x13, 0xbe, 0x32, 0x00, 0x09, 0x04, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x02, 0xca, + 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, + 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, 0x04, 0x06, 0x13, 0x09, 0x06, 0x07, 0xd2, 0xff, + 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x08, + 0x05, 0x07, 0x09, 0x07, 0x09, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x07, 0x05, 0x11, 0x03, 0x07, + 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x13, 0xbe, 0x32, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x03, 0xca, 0x9f, 0x24, 0x00, 0x02, 0x05, 0x0d, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa9, 0xe5, 0x87, 0x00, 0x05, 0x4d, 0xba, 0x1c, 0x00, 0x1f, 0x19, 0x01, + 0x04, 0x06, 0x13, 0x09, 0x06, 0x07, 0xd2, 0xff, 0xdc, 0xae, 0xbf, 0x33, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x07, 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, + 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xdf, 0x7d, 0x00, + 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1c, 0x01, 0x04, 0x04, 0x0e, 0x07, 0x06, 0x08, 0xd2, 0xff, + 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x07, + 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, + 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xe0, 0x7e, 0x00, 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1c, 0x01, + 0x04, 0x04, 0x0e, 0x06, 0x07, 0x08, 0xd2, 0xff, 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x07, 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, + 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xe0, 0x7e, 0x00, + 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1c, 0x01, 0x04, 0x04, 0x0e, 0x06, 0x07, 0x08, 0xd2, 0xff, + 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x07, + 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, + 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xe0, 0x7e, 0x00, 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1b, 0x01, + 0x04, 0x04, 0x0e, 0x06, 0x07, 0x08, 0xd2, 0xff, 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x07, 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, + 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xe0, 0x7e, 0x00, + 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1b, 0x01, 0x04, 0x04, 0x0e, 0x06, 0x07, 0x08, 0xd2, 0xff, + 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x07, + 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, + 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xe0, 0x7e, 0x00, 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1b, 0x01, + 0x04, 0x04, 0x0e, 0x06, 0x07, 0x08, 0xd2, 0xff, 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x07, 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, + 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xe0, 0x7e, 0x00, + 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1b, 0x01, 0x04, 0x04, 0x0e, 0x06, 0x07, 0x08, 0xd2, 0xff, + 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07, + 0x05, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x14, 0x04, 0x06, + 0x06, 0x09, 0x07, 0x06, 0x03, 0x06, 0x05, 0x05, 0x01, 0x16, 0xc2, 0x30, 0x00, 0x0a, 0x05, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x06, 0xcf, 0xa2, 0x28, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x1b, 0xa4, 0xe0, 0x7e, 0x00, 0x05, 0x4c, 0xbb, 0x1f, 0x00, 0x1e, 0x1b, 0x01, + 0x04, 0x04, 0x0e, 0x06, 0x07, 0x08, 0xd2, 0xff, 0xde, 0xaf, 0xbf, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x08, 0x06, 0x04, 0x15, 0x04, 0x06, 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, + 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, + 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x00, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, + 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1d, 0x1d, 0x01, 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, + 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x15, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1c, 0x1d, 0x01, + 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x04, 0x15, 0x04, 0x06, 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, + 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, + 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x01, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, + 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1c, 0x1d, 0x01, 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, + 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x15, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1c, 0x1d, 0x01, + 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x04, 0x15, 0x04, 0x06, 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, + 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, + 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x01, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, + 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1c, 0x1d, 0x01, 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, + 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x15, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1c, 0x1d, 0x01, + 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x07, 0x06, 0x04, 0x15, 0x04, 0x06, 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, + 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, + 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, 0x01, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, + 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1c, 0x1d, 0x01, 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, + 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x08, 0x09, 0x07, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x06, 0x04, 0x15, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x05, 0x05, 0x05, 0x00, 0x18, 0xc4, 0x2e, 0x00, 0x0a, 0x05, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x07, 0xd0, 0xa5, 0x2a, 0x00, 0x02, 0x04, 0x0e, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x1c, 0xa3, 0xdb, 0x79, 0x00, 0x05, 0x4c, 0xbd, 0x21, 0x00, 0x1c, 0x1d, 0x01, + 0x04, 0x03, 0x0c, 0x05, 0x07, 0x08, 0xd2, 0xff, 0xdf, 0xaf, 0xbf, 0x3b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x08, 0x09, 0x07, 0x04, 0x07, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x05, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd3, + 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, 0x00, 0x01, 0x00, 0x1d, 0xa0, 0xd6, 0x73, 0x00, + 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, 0x04, 0x01, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, + 0xdf, 0xaf, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x07, + 0x04, 0x07, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x05, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd3, 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x1d, 0xa0, 0xd6, 0x73, 0x00, 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, + 0x04, 0x01, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, 0xe0, 0xaf, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x07, 0x04, 0x07, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x05, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd3, + 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, 0x00, 0x01, 0x00, 0x1d, 0xa0, 0xd6, 0x73, 0x00, + 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, 0x04, 0x01, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, + 0xe0, 0xaf, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x07, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd3, 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x1d, 0xa0, 0xd6, 0x73, 0x00, 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, + 0x04, 0x01, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, 0xdf, 0xaf, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x07, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x04, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd3, + 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, 0x00, 0x01, 0x00, 0x1d, 0xa0, 0xd6, 0x73, 0x00, + 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, 0x04, 0x01, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, + 0xdf, 0xaf, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x07, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd3, 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x1d, 0xa0, 0xd6, 0x73, 0x00, 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, + 0x04, 0x01, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, 0xdf, 0xaf, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x07, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x04, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd3, + 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, 0x00, 0x01, 0x00, 0x1d, 0xa0, 0xd6, 0x73, 0x00, + 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, 0x04, 0x01, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, + 0xdf, 0xaf, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x07, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x05, 0x04, 0x18, 0x05, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x05, 0x04, 0x00, 0x19, 0xc7, 0x2c, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x05, 0x03, 0x00, 0x0a, 0xd3, 0xa8, 0x2d, 0x00, 0x03, 0x04, 0x10, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x1e, 0xa0, 0xd6, 0x73, 0x00, 0x06, 0x4b, 0xbe, 0x22, 0x00, 0x1c, 0x1e, 0x00, + 0x04, 0x00, 0x0a, 0x04, 0x06, 0x07, 0xd2, 0xff, 0xe0, 0xb0, 0xc0, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x09, 0x08, 0x07, 0x06, 0x04, 0x1a, 0x04, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x05, 0x03, 0x00, 0x0b, 0xd6, + 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, + 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, + 0xe0, 0xb0, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x06, 0x04, 0x1a, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0b, 0xd6, 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, + 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, 0xe0, 0xb0, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x09, 0x08, 0x07, 0x06, 0x04, 0x1a, 0x04, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0b, 0xd6, + 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, + 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, + 0xe0, 0xb0, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x06, 0x04, 0x1a, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x05, 0x03, 0x00, 0x0b, 0xd6, 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, + 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, 0xe0, 0xb0, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x09, 0x08, 0x07, 0x06, 0x04, 0x1a, 0x04, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0b, 0xd6, + 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, + 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, + 0xe0, 0xb0, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x06, 0x04, 0x1a, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x04, 0x03, 0x00, 0x0a, 0xd6, 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, + 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, 0xe0, 0xb0, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x09, 0x09, 0x09, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, + 0x09, 0x08, 0x07, 0x06, 0x04, 0x1a, 0x04, 0x06, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x05, 0x03, 0x00, 0x0a, 0xd6, + 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, + 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, + 0xe0, 0xb0, 0xc0, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x07, 0x07, 0x09, 0x08, 0x07, 0x06, 0x04, 0x19, 0x04, 0x06, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x04, 0x00, 0x1b, 0xc9, 0x2b, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x04, 0x02, 0x00, 0x0b, 0xd6, 0xad, 0x2f, 0x00, 0x03, 0x03, 0x10, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x1f, 0x9d, 0xd0, 0x6d, 0x00, 0x06, 0x4b, 0xbf, 0x23, 0x00, 0x1c, 0x20, 0x00, + 0x04, 0x00, 0x07, 0x03, 0x07, 0x07, 0xd1, 0xff, 0xe1, 0xb0, 0xc1, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x08, 0x08, 0x0a, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x04, 0x02, 0x00, 0x0e, 0xdc, + 0xb6, 0x35, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x21, 0x97, 0xc4, 0x61, 0x00, + 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, 0x03, 0x00, 0x03, 0x01, 0x08, 0x07, 0xd1, 0xff, + 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x08, 0x08, 0x0a, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x04, 0x02, 0x00, 0x0e, 0xdc, 0xb6, 0x34, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x21, 0x96, 0xc4, 0x61, 0x00, 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, + 0x03, 0x00, 0x03, 0x01, 0x07, 0x07, 0xd1, 0xff, 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x08, 0x08, 0x0a, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, 0x06, 0x09, 0x08, 0x06, 0x02, 0x06, 0x06, 0x05, + 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x04, 0x02, 0x00, 0x0e, 0xdc, + 0xb6, 0x35, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x21, 0x97, 0xc4, 0x61, 0x00, + 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, 0x03, 0x00, 0x03, 0x01, 0x07, 0x07, 0xd1, 0xff, + 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x0e, 0xdc, 0xb6, 0x35, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x21, 0x97, 0xc4, 0x61, 0x00, 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, + 0x03, 0x00, 0x03, 0x01, 0x07, 0x07, 0xd1, 0xff, 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x0e, 0xdc, + 0xb6, 0x35, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x21, 0x97, 0xc4, 0x61, 0x00, + 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, 0x03, 0x00, 0x03, 0x01, 0x07, 0x07, 0xd1, 0xff, + 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x0e, 0xdc, 0xb6, 0x35, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x21, 0x97, 0xc3, 0x61, 0x00, 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, + 0x03, 0x00, 0x03, 0x01, 0x07, 0x07, 0xd1, 0xff, 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x06, 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x0e, 0xdc, + 0xb6, 0x35, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x21, 0x97, 0xc3, 0x61, 0x00, + 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, 0x03, 0x00, 0x03, 0x01, 0x07, 0x07, 0xd1, 0xff, + 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x06, + 0x04, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x1f, 0x04, 0x05, + 0x06, 0x09, 0x08, 0x06, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1e, 0xce, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x0e, 0xdc, 0xb6, 0x35, 0x00, 0x03, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x21, 0x97, 0xc4, 0x61, 0x00, 0x06, 0x4a, 0xc1, 0x26, 0x00, 0x1a, 0x21, 0x00, + 0x03, 0x00, 0x03, 0x01, 0x07, 0x07, 0xd1, 0xff, 0xe2, 0xb1, 0xc0, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, + 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, + 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x07, 0xd1, 0xff, + 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x07, 0xd1, 0xff, 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, + 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, + 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x07, 0xd1, 0xff, + 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd1, 0xff, 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, + 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, + 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd1, 0xff, + 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd1, 0xff, 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, + 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, + 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, + 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd1, 0xff, + 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x09, 0x08, 0x07, 0x05, 0x06, 0x22, 0x05, 0x05, + 0x06, 0x09, 0x08, 0x07, 0x03, 0x06, 0x06, 0x05, 0x00, 0x1f, 0xd1, 0x2a, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x10, 0xde, 0xbb, 0x37, 0x00, 0x02, 0x03, 0x11, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x23, 0x95, 0xbd, 0x5b, 0x00, 0x06, 0x4a, 0xc2, 0x27, 0x00, 0x1a, 0x22, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd1, 0xff, 0xe3, 0xb1, 0xc0, 0x4b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x21, 0xd3, 0x29, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, + 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x01, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, + 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x07, 0xd0, 0xff, + 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, + 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x21, 0xd3, 0x29, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x07, 0xd0, 0xff, 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x21, 0xd2, 0x29, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, + 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x00, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, + 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x07, 0xd0, 0xff, + 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x21, 0xd2, 0x29, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd0, 0xff, 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x21, 0xd2, 0x29, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, + 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x00, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, + 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd0, 0xff, + 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x21, 0xd2, 0x29, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd0, 0xff, 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x21, 0xd2, 0x29, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, + 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x00, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, + 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd0, 0xff, + 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x07, 0x24, 0x05, 0x05, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x21, 0xd2, 0x29, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x03, 0x00, 0x12, 0xe0, 0xbf, 0x38, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x00, 0x01, 0x00, 0x24, 0x91, 0xb7, 0x55, 0x00, 0x06, 0x4a, 0xc3, 0x28, 0x00, 0x19, 0x23, 0x00, + 0x03, 0x00, 0x01, 0x02, 0x07, 0x08, 0xd0, 0xff, 0xe4, 0xb2, 0xbf, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x22, 0xd4, 0x29, 0x00, 0x0a, 0x04, 0x04, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe3, + 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, + 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, + 0xe4, 0xb2, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, + 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x22, 0xd4, 0x29, 0x00, 0x0a, 0x04, 0x04, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe3, 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, + 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, 0xe4, 0xb2, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x22, 0xd4, 0x29, 0x00, 0x0a, 0x04, 0x04, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe3, + 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, + 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, + 0xe4, 0xb2, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, + 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x22, 0xd4, 0x29, 0x00, 0x0a, 0x04, 0x04, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe2, 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, + 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, 0xe4, 0xb2, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x22, 0xd4, 0x29, 0x00, 0x0a, 0x04, 0x04, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe2, + 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, + 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, + 0xe4, 0xb2, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, + 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x22, 0xd4, 0x29, 0x00, 0x0a, 0x04, 0x04, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe2, 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, + 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, 0xe4, 0xb2, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x09, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x22, 0xd4, 0x29, 0x00, 0x0a, 0x04, 0x04, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe2, + 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, + 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, + 0xe4, 0xb2, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x03, 0x07, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x08, 0x26, 0x05, 0x04, + 0x05, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x22, 0xd4, 0x29, 0x00, 0x09, 0x04, 0x04, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x14, 0xe2, 0xc4, 0x3a, 0x00, 0x02, 0x03, 0x12, 0x00, 0x03, + 0x01, 0x01, 0x00, 0x26, 0x8e, 0xb1, 0x50, 0x00, 0x07, 0x49, 0xc4, 0x2a, 0x00, 0x17, 0x24, 0x00, + 0x03, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, 0xe4, 0xb3, 0xbe, 0x51, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x08, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, + 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, 0x05, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x24, 0xd8, 0x28, 0x00, 0x09, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, + 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x28, 0x87, 0xa5, 0x47, 0x00, + 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, 0x02, 0x00, 0x00, 0x02, 0x07, 0x08, 0xd0, 0xff, + 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, + 0x05, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x24, 0xd8, 0x28, 0x00, 0x09, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x28, 0x87, 0xa6, 0x47, 0x00, 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x02, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, 0x05, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x24, 0xd8, 0x28, 0x00, 0x09, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, + 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x28, 0x87, 0xa6, 0x47, 0x00, + 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, 0x02, 0x00, 0x00, 0x02, 0x08, 0x08, 0xd0, 0xff, + 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x24, 0xd8, 0x28, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x28, 0x87, 0xa6, 0x46, 0x00, 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x02, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x24, 0xd8, 0x28, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, + 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x28, 0x87, 0xa6, 0x46, 0x00, + 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, 0x02, 0x00, 0x00, 0x02, 0x08, 0x08, 0xd0, 0xff, + 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x24, 0xd8, 0x28, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x28, 0x87, 0xa6, 0x46, 0x00, 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x02, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x24, 0xd8, 0x28, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, + 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x28, 0x87, 0xa6, 0x46, 0x00, + 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, 0x02, 0x00, 0x00, 0x02, 0x08, 0x08, 0xd0, 0xff, + 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x08, 0x0a, 0x04, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x07, 0x08, 0x08, 0x07, 0x05, 0x0a, 0x2c, 0x05, 0x04, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x24, 0xd8, 0x27, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x19, 0xe7, 0xcb, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x28, 0x87, 0xa6, 0x46, 0x00, 0x07, 0x48, 0xc6, 0x2e, 0x00, 0x17, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x02, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb3, 0xbf, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1b, 0xe9, + 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, + 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, + 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1b, 0xe9, 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1b, 0xe9, + 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, + 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, + 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1b, 0xe9, 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1b, 0xe9, + 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, + 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, + 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, + 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1b, 0xe9, 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x09, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, 0x06, 0x09, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, + 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1b, 0xe9, + 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, + 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, + 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x08, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x09, 0x08, 0x07, 0x05, 0x0b, 0x2f, 0x05, 0x04, + 0x06, 0x0a, 0x08, 0x07, 0x02, 0x05, 0x06, 0x04, 0x00, 0x26, 0xd9, 0x26, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1c, 0xe9, 0xd0, 0x3b, 0x00, 0x02, 0x03, 0x14, 0x00, 0x03, + 0x02, 0x00, 0x00, 0x2a, 0x83, 0xa1, 0x42, 0x00, 0x07, 0x48, 0xc8, 0x2f, 0x00, 0x15, 0x28, 0x00, + 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, 0xe6, 0xb4, 0xbe, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x07, 0x0a, 0x08, 0x08, 0x08, 0x0a, 0x05, 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, + 0x08, 0x08, 0x07, 0x05, 0x0c, 0x31, 0x05, 0x04, 0x06, 0x0a, 0x09, 0x07, 0x02, 0x05, 0x06, 0x05, + 0x00, 0x26, 0xda, 0x25, 0x00, 0x0a, 0x04, 0x03, 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1d, 0xe9, + 0xd1, 0x3b, 0x00, 0x01, 0x03, 0x15, 0x00, 0x03, 0x02, 0x00, 0x00, 0x28, 0x80, 0x9c, 0x3e, 0x00, + 0x06, 0x48, 0xc8, 0x31, 0x00, 0x14, 0x29, 0x00, 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, + 0xe7, 0xb4, 0xbd, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x0a, 0x08, 0x08, 0x08, 0x0a, 0x05, + 0x02, 0x08, 0x09, 0x07, 0x08, 0x07, 0x06, 0x06, 0x08, 0x08, 0x07, 0x05, 0x0c, 0x31, 0x05, 0x04, + 0x06, 0x0a, 0x09, 0x07, 0x02, 0x05, 0x06, 0x05, 0x00, 0x26, 0xda, 0x25, 0x00, 0x0a, 0x04, 0x03, + 0x01, 0x06, 0x07, 0x03, 0x02, 0x00, 0x1d, 0xe9, 0xd2, 0x3b, 0x00, 0x02, 0x03, 0x15, 0x00, 0x03, + 0x02, 0x00, 0x00, 0x28, 0x80, 0x9b, 0x3e, 0x00, 0x06, 0x48, 0xc9, 0x31, 0x00, 0x14, 0x29, 0x00, + 0x02, 0x00, 0x00, 0x03, 0x08, 0x08, 0xd0, 0xff, 0xe7, 0xb4, 0xbd, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x0b, 0x06, 0x02, 0x09, 0x0a, 0x08, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x06, 0x0c, 0x31, 0x05, 0x05, 0x07, 0x0a, 0x09, 0x08, 0x04, 0x07, 0x08, 0x06, + 0x00, 0x26, 0xda, 0x26, 0x00, 0x0a, 0x05, 0x04, 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1c, 0xea, + 0xd2, 0x3b, 0x00, 0x04, 0x04, 0x15, 0x00, 0x03, 0x02, 0x00, 0x01, 0x29, 0x7f, 0x9c, 0x3d, 0x00, + 0x07, 0x47, 0xc8, 0x31, 0x00, 0x14, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0xd0, 0xff, + 0xe8, 0xb5, 0xbd, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x0b, 0x06, + 0x02, 0x09, 0x0a, 0x08, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x06, 0x0c, 0x31, 0x05, 0x05, + 0x07, 0x0a, 0x09, 0x08, 0x04, 0x07, 0x08, 0x06, 0x00, 0x26, 0xda, 0x26, 0x00, 0x0a, 0x05, 0x04, + 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1d, 0xea, 0xd2, 0x3b, 0x00, 0x04, 0x04, 0x15, 0x00, 0x03, + 0x02, 0x00, 0x01, 0x29, 0x7f, 0x9c, 0x3d, 0x00, 0x07, 0x47, 0xc8, 0x31, 0x00, 0x14, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0xd0, 0xff, 0xe8, 0xb5, 0xbd, 0x5f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x0b, 0x06, 0x02, 0x09, 0x0a, 0x08, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x06, 0x0c, 0x31, 0x05, 0x05, 0x07, 0x0a, 0x09, 0x08, 0x04, 0x07, 0x08, 0x06, + 0x00, 0x26, 0xda, 0x26, 0x00, 0x0a, 0x05, 0x04, 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1d, 0xea, + 0xd2, 0x3b, 0x00, 0x05, 0x04, 0x15, 0x00, 0x03, 0x02, 0x00, 0x01, 0x29, 0x7f, 0x9c, 0x3d, 0x00, + 0x08, 0x47, 0xc8, 0x31, 0x00, 0x14, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0xd0, 0xff, + 0xe8, 0xb5, 0xbd, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x0b, 0x06, + 0x02, 0x09, 0x0a, 0x08, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x06, 0x0c, 0x31, 0x05, 0x05, + 0x07, 0x0a, 0x09, 0x08, 0x04, 0x07, 0x08, 0x06, 0x00, 0x26, 0xda, 0x26, 0x00, 0x0a, 0x05, 0x04, + 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1d, 0xea, 0xd2, 0x3b, 0x00, 0x05, 0x04, 0x15, 0x00, 0x03, + 0x02, 0x00, 0x01, 0x29, 0x7f, 0x9c, 0x3d, 0x00, 0x08, 0x47, 0xc8, 0x31, 0x00, 0x14, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0xd0, 0xff, 0xe8, 0xb5, 0xbd, 0x5f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x0b, 0x06, 0x02, 0x09, 0x0a, 0x08, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x06, 0x0c, 0x31, 0x05, 0x05, 0x07, 0x0a, 0x09, 0x08, 0x04, 0x07, 0x08, 0x06, + 0x00, 0x26, 0xda, 0x26, 0x00, 0x0a, 0x05, 0x04, 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1d, 0xea, + 0xd2, 0x3b, 0x00, 0x05, 0x04, 0x15, 0x00, 0x03, 0x02, 0x00, 0x01, 0x29, 0x7f, 0x9c, 0x3d, 0x00, + 0x08, 0x47, 0xc8, 0x31, 0x00, 0x14, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0xd0, 0xff, + 0xe8, 0xb5, 0xbd, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x0b, 0x06, + 0x02, 0x09, 0x0a, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08, 0x09, 0x08, 0x06, 0x0c, 0x31, 0x05, 0x05, + 0x07, 0x0a, 0x09, 0x08, 0x04, 0x07, 0x08, 0x06, 0x00, 0x26, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x04, + 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1d, 0xea, 0xd2, 0x3b, 0x00, 0x04, 0x04, 0x15, 0x00, 0x02, + 0x02, 0x00, 0x01, 0x29, 0x7f, 0x9c, 0x3d, 0x00, 0x07, 0x47, 0xc9, 0x31, 0x00, 0x14, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0xd0, 0xff, 0xe8, 0xb5, 0xbd, 0x5f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x08, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, 0x06, 0x0a, 0x09, 0x08, 0x05, 0x07, 0x08, 0x05, + 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x05, 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, + 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, + 0x08, 0x46, 0xc9, 0x33, 0x00, 0x13, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, + 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, + 0x06, 0x0a, 0x09, 0x08, 0x05, 0x07, 0x07, 0x05, 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x05, + 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, 0x08, 0x46, 0xc9, 0x33, 0x00, 0x13, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x08, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, 0x06, 0x0a, 0x09, 0x08, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x05, 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, + 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, + 0x08, 0x46, 0xc9, 0x33, 0x00, 0x13, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, + 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, + 0x06, 0x0a, 0x09, 0x08, 0x05, 0x07, 0x07, 0x05, 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x05, + 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, 0x08, 0x46, 0xc9, 0x33, 0x00, 0x13, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x08, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, 0x06, 0x0a, 0x09, 0x08, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x05, 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, + 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, + 0x08, 0x46, 0xc9, 0x33, 0x00, 0x13, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, + 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, + 0x06, 0x0a, 0x09, 0x08, 0x05, 0x07, 0x07, 0x05, 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x05, + 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, 0x08, 0x46, 0xc9, 0x33, 0x00, 0x13, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x08, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, 0x06, 0x0a, 0x09, 0x08, 0x05, 0x07, 0x07, 0x05, + 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x05, 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, + 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, + 0x08, 0x46, 0xc9, 0x33, 0x00, 0x13, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, + 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x0b, 0x05, + 0x02, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x0e, 0x35, 0x05, 0x05, + 0x06, 0x0a, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x27, 0xdb, 0x26, 0x00, 0x09, 0x04, 0x04, + 0x03, 0x06, 0x07, 0x04, 0x03, 0x00, 0x1e, 0xeb, 0xd5, 0x3b, 0x00, 0x04, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x00, 0x27, 0x7b, 0x97, 0x3a, 0x00, 0x08, 0x46, 0xc9, 0x32, 0x00, 0x13, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x07, 0xcf, 0xff, 0xe8, 0xb6, 0xbc, 0x62, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x04, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2a, 0xdb, 0x24, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x1f, 0xed, + 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, + 0x06, 0x45, 0xcb, 0x35, 0x00, 0x11, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, + 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2a, 0xdb, 0x24, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x1f, 0xed, 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, 0x06, 0x45, 0xcc, 0x35, 0x00, 0x11, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x02, 0x0a, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x04, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2a, 0xdb, 0x23, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x1f, 0xed, + 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, + 0x06, 0x45, 0xcc, 0x35, 0x00, 0x11, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, + 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2a, 0xdb, 0x24, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x1f, 0xed, 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, 0x06, 0x45, 0xcb, 0x35, 0x00, 0x11, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2a, 0xdb, 0x24, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x1f, 0xed, + 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, + 0x06, 0x45, 0xcb, 0x35, 0x00, 0x11, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, + 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2a, 0xdb, 0x24, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x1f, 0xed, 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, 0x06, 0x45, 0xcb, 0x35, 0x00, 0x11, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2a, 0xdb, 0x24, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x04, 0x03, 0x00, 0x1f, 0xed, + 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, + 0x06, 0x45, 0xcb, 0x35, 0x00, 0x11, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, + 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2b, 0xdb, 0x24, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x1f, 0xed, 0xd7, 0x3a, 0x00, 0x03, 0x04, 0x16, 0x00, 0x02, + 0x02, 0x00, 0x01, 0x24, 0x74, 0x8d, 0x33, 0x00, 0x06, 0x45, 0xcb, 0x35, 0x00, 0x11, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x07, 0x09, 0xcf, 0xff, 0xe9, 0xb7, 0xbc, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, + 0xd8, 0x39, 0x00, 0x03, 0x03, 0x17, 0x00, 0x02, 0x01, 0x00, 0x01, 0x23, 0x74, 0x89, 0x30, 0x00, + 0x06, 0x45, 0xcc, 0x36, 0x00, 0x10, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, + 0xea, 0xb7, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, 0xd8, 0x39, 0x00, 0x03, 0x03, 0x17, 0x00, 0x02, + 0x01, 0x00, 0x01, 0x23, 0x74, 0x89, 0x30, 0x00, 0x06, 0x45, 0xcc, 0x36, 0x00, 0x10, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, 0xea, 0xb7, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, + 0xd8, 0x39, 0x00, 0x03, 0x03, 0x17, 0x00, 0x02, 0x01, 0x00, 0x01, 0x23, 0x74, 0x89, 0x30, 0x00, + 0x06, 0x45, 0xcc, 0x36, 0x00, 0x10, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, + 0xea, 0xb7, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, 0xd8, 0x39, 0x00, 0x03, 0x03, 0x17, 0x00, 0x02, + 0x01, 0x00, 0x01, 0x23, 0x74, 0x89, 0x30, 0x00, 0x06, 0x45, 0xcc, 0x36, 0x00, 0x10, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, 0xea, 0xb7, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, + 0xd8, 0x39, 0x00, 0x03, 0x03, 0x17, 0x00, 0x02, 0x01, 0x00, 0x01, 0x23, 0x74, 0x89, 0x30, 0x00, + 0x06, 0x45, 0xcc, 0x36, 0x00, 0x10, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, + 0xea, 0xb7, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, 0xd8, 0x39, 0x00, 0x03, 0x03, 0x17, 0x00, 0x02, + 0x01, 0x00, 0x01, 0x23, 0x74, 0x89, 0x30, 0x00, 0x06, 0x45, 0xcc, 0x36, 0x00, 0x10, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, 0xea, 0xb7, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, + 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, + 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, + 0xd8, 0x39, 0x00, 0x03, 0x03, 0x17, 0x00, 0x02, 0x01, 0x00, 0x01, 0x23, 0x74, 0x89, 0x30, 0x00, + 0x06, 0x45, 0xcc, 0x36, 0x00, 0x10, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, + 0xea, 0xb7, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x0b, 0x05, + 0x01, 0x09, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x09, 0x09, 0x08, 0x05, 0x10, 0x38, 0x04, 0x05, + 0x06, 0x09, 0x09, 0x08, 0x04, 0x07, 0x07, 0x05, 0x00, 0x2c, 0xdc, 0x23, 0x00, 0x08, 0x05, 0x04, + 0x01, 0x05, 0x07, 0x03, 0x03, 0x00, 0x21, 0xed, 0xd8, 0x39, 0x00, 0x03, 0x04, 0x17, 0x00, 0x02, + 0x01, 0x00, 0x01, 0x23, 0x73, 0x89, 0x30, 0x00, 0x06, 0x45, 0xcd, 0x36, 0x00, 0x10, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0xcf, 0xff, 0xea, 0xb8, 0xbb, 0x6d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +unsigned int bad_apple_len = 74880; diff --git a/libraries/Arduino_LED_Matrix/library.properties b/libraries/Arduino_LED_Matrix/library.properties new file mode 100644 index 000000000..2673174b0 --- /dev/null +++ b/libraries/Arduino_LED_Matrix/library.properties @@ -0,0 +1,10 @@ +name=Arduino_LED_Matrix +version=0.1.3 +author=BCMI-labs +maintainer=BCMI-labs +sentence=A library for controlling UNO Q LED matrix +paragraph=This library provides a simple interface for controlling the LED matrix on Arduino UNO Q boards. +category=Communication +url=https://www.arduino.cc/ +architectures=* +depends= diff --git a/libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h b/libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h new file mode 100644 index 000000000..eaaac73b5 --- /dev/null +++ b/libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h @@ -0,0 +1,254 @@ +#include + +extern "C" { +void matrixBegin(void); +void matrixEnd(void); +void matrixPlay(uint8_t *buf, uint32_t len); +void matrixSetGrayscaleBits(uint8_t _max); +void matrixGrayscaleWrite(uint8_t *buf); +void matrixWrite(uint8_t *buf); +}; + +#if __has_include("ArduinoGraphics.h") +#include +#define MATRIX_WITH_ARDUINOGRAPHICS +#endif + +static uint32_t reverse(uint32_t x) { + x = ((x >> 1) & 0x55555555u) | ((x & 0x55555555u) << 1); + x = ((x >> 2) & 0x33333333u) | ((x & 0x33333333u) << 2); + x = ((x >> 4) & 0x0f0f0f0fu) | ((x & 0x0f0f0f0fu) << 4); + x = ((x >> 8) & 0x00ff00ffu) | ((x & 0x00ff00ffu) << 8); + x = ((x >> 16) & 0xffffu) | ((x & 0xffffu) << 16); + return x; +} + +// TODO: this is dangerous, use with care +#define loadSequence(frames) loadWrapper(frames, sizeof(frames)) +#define renderBitmap(bitmap, rows, columns) loadPixels(&bitmap[0][0], rows *columns) +#define endTextAnimation(scrollDirection, anim) \ + endTextToAnimationBuffer(scrollDirection, anim##_buf, sizeof(anim##_buf), anim##_buf_used) +#define loadTextAnimationSequence(anim) loadWrapper(anim##_buf, anim##_buf_used) + +class Arduino_LED_Matrix +#ifdef MATRIX_WITH_ARDUINOGRAPHICS + : public ArduinoGraphics +#endif +{ + +public: + Arduino_LED_Matrix() +#ifdef MATRIX_WITH_ARDUINOGRAPHICS + : ArduinoGraphics(canvasWidth, canvasHeight) +#endif + { + } + + // TODO: find a better name + // autoscroll will be slower than calling next() at precise times + void autoscroll(uint32_t interval_ms) { + _interval = interval_ms; + } + + int begin() { + matrixBegin(); + return 1; + } + + void end() { + matrixEnd(); + } + + // the irq routine supports 8 levels of grayscale (3 bits), but usually the + // conversion tools to grayscale will convert to 256 levels (8 bits). Call + // this accorgingly to your source. The biggest value in the framebuffer + // should be 2^max_grayscale_bits - 1 (eg. 7 or 255) + void setGrayscaleBits(uint8_t max) { + matrixSetGrayscaleBits(max); + } + + // Plays a video sequence, in grayscale. + void playVideo(uint8_t *buf, uint32_t len) { + matrixPlay(buf, len); + } + + void playVideo(const uint8_t *buf, uint32_t len) { + matrixPlay((uint8_t *)buf, len); + } + + // Draws a grayscale picture. + void draw(uint8_t *buf) { + matrixGrayscaleWrite(buf); + } + + void next() { + uint32_t frame[4]; + frame[0] = reverse(*(_frames + (_currentFrame * 5) + 0)); + frame[1] = reverse(*(_frames + (_currentFrame * 5) + 1)); + frame[2] = reverse(*(_frames + (_currentFrame * 5) + 2)); + frame[3] = reverse(*(_frames + (_currentFrame * 5) + 3)); + _interval = *(_frames + (_currentFrame * 5) + 4); + _currentFrame = (_currentFrame + 1) % _framesCount; + if (_currentFrame == 0) { + if (!_loop) { + _interval = 0; + } + if (_callBack != nullptr) { + _callBack(); + } + _sequenceDone = true; + } + matrixWrite((uint8_t *)frame); + } + + void loadFrame(const uint32_t buffer[4]) { + uint32_t tempBuffer[][5] = {{buffer[0], buffer[1], buffer[2], buffer[3], 0}}; + loadSequence(tempBuffer); + next(); + _interval = 0; + } + + void renderFrame(uint8_t frameNumber) { + _currentFrame = frameNumber % _framesCount; + next(); + _interval = 0; + } + + void playSequence(bool loop = false) { + _loop = loop; + _sequenceDone = false; + do { + next(); + delay(_interval); + } while (_sequenceDone == false); + } + + bool sequenceDone() { + if (_sequenceDone) { + _sequenceDone = false; + return true; + } + return false; + } + + static void loadPixelsToBuffer(uint8_t *arr, size_t size, uint32_t *dst) { + uint32_t partialBuffer = 0; + uint8_t pixelIndex = 0; + uint8_t *frameP = arr; + uint32_t *frameHolderP = dst; + while (pixelIndex / 32 < size / 32) { + partialBuffer |= *frameP++; + if ((pixelIndex + 1) % 32 == 0) { + *(frameHolderP++) = partialBuffer; + } + partialBuffer = partialBuffer << 1; + pixelIndex++; + } + // last line, populate partialBuffer in reverse order + uint8_t remaining = size % 32; + partialBuffer = 0; + for (int i = 0; i < remaining; i++) { + partialBuffer |= (frameP[i] << (31 - i)); + } + *(frameHolderP++) = partialBuffer; + } + + void loadPixels(uint8_t *arr, size_t size) { + loadPixelsToBuffer(arr, size, _frameHolder); + loadFrame(_frameHolder); + }; + + void loadWrapper(const uint32_t frames[][5], uint32_t howMany) { + _currentFrame = 0; + _frames = (uint32_t *)frames; + _framesCount = (howMany / 5) / sizeof(uint32_t); + } + + // WARNING: callbacks are fired from ISR. The execution time will be limited. + void setCallback(voidFuncPtr callBack) { + _callBack = callBack; + } + + void clear() { + const uint32_t fullOff[] = {0x00000000, 0x00000000, 0x00000000, 0x00000000}; + loadFrame(fullOff); +#ifdef MATRIX_WITH_ARDUINOGRAPHICS + memset(_canvasBuffer, 0, sizeof(_canvasBuffer)); +#endif + } + +#ifdef MATRIX_WITH_ARDUINOGRAPHICS + virtual void set(int x, int y, uint8_t r, uint8_t g, uint8_t b) { + if (y >= canvasHeight || x >= canvasWidth || y < 0 || x < 0) { + return; + } + // the r parameter is (mis)used to set the character to draw with + _canvasBuffer[y][x] = (r | g | b) > 0 ? 1 : 0; + } + + void endText(int scrollDirection = NO_SCROLL) { + ArduinoGraphics::endText(scrollDirection); + renderBitmap(_canvasBuffer, canvasHeight, canvasWidth); + } + + // display the drawing or capture it to buffer when rendering dynamic + // anymation + void endDraw() { + ArduinoGraphics::endDraw(); + + if (!captureAnimation) { + renderBitmap(_canvasBuffer, canvasHeight, canvasWidth); + } else { + if (captureAnimationHowManyRemains >= 4) { + loadPixelsToBuffer(&_canvasBuffer[0][0], sizeof(_canvasBuffer), + captureAnimationFrame); + captureAnimationFrame[3] = _textScrollSpeed; + captureAnimationFrame += 4; + captureAnimationHowManyRemains -= 16; + } + } + } + + void endTextToAnimationBuffer(int scrollDirection, uint32_t frames[][4], uint32_t howManyMax, + uint32_t &howManyUsed) { + captureAnimationFrame = &frames[0][0]; + captureAnimationHowManyRemains = howManyMax; + + captureAnimation = true; + ArduinoGraphics::textScrollSpeed(0); + ArduinoGraphics::endText(scrollDirection); + ArduinoGraphics::textScrollSpeed(_textScrollSpeed); + captureAnimation = false; + + howManyUsed = howManyMax - captureAnimationHowManyRemains; + } + + void textScrollSpeed(unsigned long speed) { + ArduinoGraphics::textScrollSpeed(speed); + _textScrollSpeed = speed; + } + +private: + uint32_t *captureAnimationFrame = nullptr; + uint32_t captureAnimationHowManyRemains = 0; + bool captureAnimation = false; + static const byte canvasWidth = 13; + static const byte canvasHeight = 8; + uint8_t _canvasBuffer[canvasHeight][canvasWidth] = {{0}}; + unsigned long _textScrollSpeed = 100; +#endif + +private: + int _currentFrame = 0; + uint32_t _frameHolder[3]; + uint32_t *_frames; + uint32_t _framesCount; + uint32_t _interval = 0; + uint32_t _lastInterval = 0; + bool _loop = false; + bool _sequenceDone = false; + voidFuncPtr _callBack; +}; + +// For backwards compatibility, also define the class name without underscores +typedef Arduino_LED_Matrix ArduinoLEDMatrix; From 5d94bd0245c9483eefa08c74a17eab5d91aa484a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 8 Aug 2025 09:54:40 +0200 Subject: [PATCH 043/117] unoq: remoteocd: prepare for network upload --- boards.txt | 1 + platform.txt | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/boards.txt b/boards.txt index da0b9e186..df3c39ab4 100644 --- a/boards.txt +++ b/boards.txt @@ -556,6 +556,7 @@ unoq.upload.target=stm32u585zitxq unoq.upload.tool=remoteocd unoq.upload.tool.default=remoteocd +unoq.upload.tool.network=remoteocd_network unoq.upload.protocol= unoq.upload.transport= unoq.upload.vid=0x2341 diff --git a/platform.txt b/platform.txt index 628177f9f..8eb09ef8b 100644 --- a/platform.txt +++ b/platform.txt @@ -269,12 +269,21 @@ tools.remoteocd.path={runtime.tools.remoteocd.path} tools.remoteocd.cmd=remoteocd tools.remoteocd.upload.params.verbose= tools.remoteocd.upload.params.quiet= -tools.remoteocd.upload.pattern="{path}/{cmd}" --adb-path {runtime.tools.adb.path}/adb -s "{upload.port.properties.serialNumber}" upload -a "{upload.address}" "{build.path}/{build.project_name}.{upload.extension}" +tools.remoteocd.upload.pattern="{path}/{cmd}" --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" upload -a "{upload.address}" "{build.path}/{build.project_name}.{upload.extension}" tools.remoteocd.bootloader.params.verbose= tools.remoteocd.bootloader.params.quiet= tools.remoteocd.erase.pattern= -tools.remoteocd.bootloader.pattern="{path}/{cmd}" --adb-path {runtime.tools.adb.path}/adb -s "{upload.port.properties.serialNumber}" upload "{runtime.platform.path}/firmwares/{bootloader.file}" +tools.remoteocd.bootloader.pattern="{path}/{cmd}" --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" upload "{runtime.platform.path}/firmwares/{bootloader.file}" + +tools.remoteocd_network.upload.protocol=network +tools.remoteocd_network.upload.field.password=Password +tools.remoteocd_network.upload.field.password.secret=true +tools.remoteocd_network.path={runtime.tools.remoteocd.path} +tools.remoteocd_network.cmd=remoteocd +tools.remoteocd_network.upload.params.verbose= +tools.remoteocd_network.upload.params.quiet= +tools.remoteocd_network.upload.pattern="{path}/{cmd}" --adb-path "{runtime.tools.adb.path}/adb" -i "{upload.port.address}" upload -a "{upload.address}" "{build.path}/{build.project_name}.{upload.extension}" # # PYOCD WRAPPER From c8e82c14195a74406ac3bd4c532c1bbe7a233f2e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 26 Aug 2025 13:59:21 +0200 Subject: [PATCH 044/117] unoq: implement analogReference Take into account the analog switch --- cores/arduino/zephyrCommon.cpp | 2 +- loader/fixups.c | 58 ++++++++++++++++--- .../analogReference.cpp | 10 ++++ .../arduino_uno_q_stm32u585xx.overlay | 2 + variants/arduino_uno_q_stm32u585xx/variant.h | 8 +++ 5 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 variants/arduino_uno_q_stm32u585xx/analogReference.cpp diff --git a/cores/arduino/zephyrCommon.cpp b/cores/arduino/zephyrCommon.cpp index ca61ea577..86dc89431 100644 --- a/cores/arduino/zephyrCommon.cpp +++ b/cores/arduino/zephyrCommon.cpp @@ -353,7 +353,7 @@ void analogWrite(enum dacPins dacName, int value) { #ifdef CONFIG_ADC -void analogReference(uint8_t mode) { +void __attribute__((weak)) analogReference(uint8_t mode) { /* * The Arduino API not clearly defined what means of * the mode argument of analogReference(). diff --git a/loader/fixups.c b/loader/fixups.c index e78068cba..ba6be7f3d 100644 --- a/loader/fixups.c +++ b/loader/fixups.c @@ -186,23 +186,63 @@ SYS_INIT(maybe_flash_bootloader, POST_KERNEL, CONFIG_FILE_SYSTEM_INIT_PRIORITY); #include #include -static int enable_adc_reference(void) { +int analog_reference(uint8_t reference) { uint8_t init_status; - /* VREF+ is not connected to VDDA by default */ - /* Use 2.5V as reference (instead of 3.3V) for internal channels - * calculation - */ + /* VREF+ is connected to VDDA by default */ + const struct gpio_dt_spec spec = + GPIO_DT_SPEC_GET_BY_IDX(DT_PATH(zephyr_user), analog_switch_gpios, 0); + + gpio_pin_configure_dt(&spec, GPIO_OUTPUT); + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_VREF_CLK_ENABLE(); + + HAL_SYSCFG_VREFBUF_HighImpedanceConfig(SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE); + HAL_SYSCFG_DisableVREFBUF(); + + if (reference == AR_DEFAULT) { + /* VREF+ is connected to VDDA */ + gpio_pin_set_dt(&spec, 0); + return; + } + + gpio_pin_set_dt(&spec, 1); - /* VREF_OUT2 = 2.5 V */ - HAL_SYSCFG_VREFBUF_VoltageScalingConfig(SYSCFG_VREFBUF_VOLTAGE_SCALE1); + if (reference == AR_EXTERNAL) { + return 0; + } + + uint32_t voltageScaling = SYSCFG_VREFBUF_VOLTAGE_SCALE3; + switch (reference) { + case AR_INTERNAL2V5: + voltageScaling = SYSCFG_VREFBUF_VOLTAGE_SCALE3; + break; + case AR_INTERNAL2V05: + voltageScaling = SYSCFG_VREFBUF_VOLTAGE_SCALE2; + break; + case AR_INTERNAL1V8: + voltageScaling = SYSCFG_VREFBUF_VOLTAGE_SCALE1; + break; + case AR_INTERNAL1V5: + voltageScaling = SYSCFG_VREFBUF_VOLTAGE_SCALE0; + break; + } + + HAL_SYSCFG_VREFBUF_VoltageScalingConfig(voltageScaling); + HAL_SYSCFG_EnableVREFBUF(); HAL_SYSCFG_VREFBUF_HighImpedanceConfig(SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE); - init_status = HAL_SYSCFG_EnableVREFBUF(); __ASSERT(init_status == HAL_OK, "ADC Conversion value may be incorrect"); return init_status; } -SYS_INIT(enable_adc_reference, POST_KERNEL, 0); +EXPORT_SYMBOL(analog_reference); + +int disable_vrefbuf() { + // This is the safe HW configuration + analog_reference(AR_DEFAULT); +} + +SYS_INIT(disable_vrefbuf, POST_KERNEL, 0); #endif diff --git a/variants/arduino_uno_q_stm32u585xx/analogReference.cpp b/variants/arduino_uno_q_stm32u585xx/analogReference.cpp new file mode 100644 index 000000000..b9d7f9715 --- /dev/null +++ b/variants/arduino_uno_q_stm32u585xx/analogReference.cpp @@ -0,0 +1,10 @@ +#include + +extern "C" { + int analog_reference(uint8_t mode); +}; + +void analogReference(uint8_t mode) +{ + analog_reference(mode); +} \ No newline at end of file diff --git a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay index 0477f7e35..a998b9176 100644 --- a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay +++ b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay @@ -162,6 +162,7 @@ <&gpiof 9 GPIO_ACTIVE_HIGH>, <&gpiof 10 GPIO_ACTIVE_HIGH>, <&gpiog 13 GPIO_ACTIVE_HIGH>, /* Internal SPI RDY */ + <&gpioa 2 GPIO_ACTIVE_HIGH>, /* Analog switch for VREF */ <&gpioh 3 GPIO_ACTIVE_HIGH>; /* BOOT0 */ builtin-led-gpios = <&gpioh 10 GPIO_ACTIVE_HIGH>, @@ -186,6 +187,7 @@ pwms = <>; control-gpios = <&gpiog 13 GPIO_ACTIVE_HIGH>; /* Internal SPI RDY */ + analog-switch-gpios = <&gpioa 2 GPIO_ACTIVE_HIGH>; /* Analog switch for VREF */ io-channels = <&adc1 9>, <&adc1 10>, diff --git a/variants/arduino_uno_q_stm32u585xx/variant.h b/variants/arduino_uno_q_stm32u585xx/variant.h index 68c33a896..a56122e57 100644 --- a/variants/arduino_uno_q_stm32u585xx/variant.h +++ b/variants/arduino_uno_q_stm32u585xx/variant.h @@ -11,3 +11,11 @@ #define SS 0 #define SDA 0 #define SCL 0 + +#define AR_DEFAULT 0 +#define AR_INTERNAL2V5 1 +#define AR_INTERNAL2V05 2 +#define AR_INTERNAL1V5 3 +#define AR_INTERNAL1V8 4 +#define AR_EXTERNAL 5 +#define AR_INTERNAL AR_INTERNAL2V5 From 69ff965403aa959d203749f94d26aeb6479c1b92 Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Wed, 27 Aug 2025 16:37:44 +0200 Subject: [PATCH 045/117] unoq: enable PWM --- .../arduino_uno_q_stm32u585xx.overlay | 172 +++++++++++++++--- 1 file changed, 148 insertions(+), 24 deletions(-) diff --git a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay index a998b9176..f8d59cd9a 100644 --- a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay +++ b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.overlay @@ -65,6 +65,89 @@ }; }; + +/* Enable PWM timers */ +&timers1 { + status = "okay"; + st,prescaler = <4>; + + pwm1: pwm { + status = "okay"; + /* tim1_etr_pa12 is not available for PWM */ + /* Currently only the pins marked with ~ on the pin headers are enabled */ + /* pinctrl-0 = <&tim1_ch4_pa11 &tim1_ch3n_pb15 &tim1_ch1n_pb13 &tim1_ch2n_pb14>; */ + pinctrl-0 = <&tim1_ch4_pa11 &tim1_ch3n_pb15>; + pinctrl-names = "default"; + }; +}; + +/* Currently only the pins marked with ~ on the pin headers are enabled */ +/* PB10 and PB11 conflict with I2C configuation */ +/* +&timers2 { + status = "okay"; + st,prescaler = <4>; + + pwm2: pwm { + status = "okay"; + pinctrl-0 = <&tim2_ch2_pb3 &tim2_ch3_pb10 &tim2_ch4_pb11>; + pinctrl-names = "default"; + }; +}; +*/ + +&timers3 { + status = "okay"; + st,prescaler = <4>; + + pwm3: pwm { + status = "okay"; + /* Currently only the pins marked with ~ on the pin headers are enabled */ + /* pinctrl-0 = <&tim3_ch3_pb0 &tim3_ch4_pb1 &tim3_ch1_pb4>; */ + pinctrl-0 = <&tim3_ch3_pb0 &tim3_ch4_pb1>; + pinctrl-names = "default"; + }; +}; + +&timers4 { + status = "okay"; + st,prescaler = <4>; + + pwm4: pwm { + status = "okay"; + /* PB6 PB7 not usable for PWM until dynamic pin muxing works */ + /* Currently only the pins marked with ~ on the pin headers are enabled */ + /* pinctrl-0 = <&tim4_ch3_pb8 &tim4_ch4_pb9 &tim4_ch1_pb6 &tim4_ch2_pb7>; */ + pinctrl-0 = <&tim4_ch3_pb8 &tim4_ch4_pb9>; + pinctrl-names = "default"; + }; +}; + +&timers5 { + status = "okay"; + st,prescaler = <4>; + + pwm5: pwm { + status = "okay"; + pinctrl-0 = <&tim5_ch1_ph10 &tim5_ch2_ph11 &tim5_ch3_ph12>; + pinctrl-names = "default"; + }; +}; + +/* Currently only the pins marked with ~ on the pin headers are enabled */ +/* +&timers8 { + status = "okay"; + st,prescaler = <4>; + + pwm8: pwm { + status = "okay"; + pinctrl-0 = <&tim8_ch4n_pb2>; + pinctrl-names = "default"; + }; +}; +*/ + &timers16 { status = "okay"; st,prescaler = <4>; @@ -88,27 +171,28 @@ / { zephyr,user { - digital-pin-gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>, /* JDIGITAL */ - <&gpiob 6 GPIO_ACTIVE_HIGH>, - <&gpiob 3 GPIO_ACTIVE_HIGH>, - <&gpiob 0 GPIO_ACTIVE_HIGH>, - <&gpioa 12 GPIO_ACTIVE_HIGH>, - <&gpioa 11 GPIO_ACTIVE_HIGH>, - <&gpiob 1 GPIO_ACTIVE_HIGH>, - <&gpiob 2 GPIO_ACTIVE_HIGH>, - <&gpiob 4 GPIO_ACTIVE_HIGH>, - <&gpiob 8 GPIO_ACTIVE_HIGH>, - <&gpiob 9 GPIO_ACTIVE_HIGH>, - <&gpiob 15 GPIO_ACTIVE_HIGH>, - <&gpiob 14 GPIO_ACTIVE_HIGH>, - <&gpiob 13 GPIO_ACTIVE_HIGH>, - - <&gpioa 4 GPIO_ACTIVE_HIGH>, /* ADCs */ - <&gpioa 5 GPIO_ACTIVE_HIGH>, - <&gpioa 6 GPIO_ACTIVE_HIGH>, - <&gpioa 7 GPIO_ACTIVE_HIGH>, - <&gpioc 1 GPIO_ACTIVE_HIGH>, - <&gpioc 0 GPIO_ACTIVE_HIGH>, + digital-pin-gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>, /* D0 - PB7 */ + <&gpiob 6 GPIO_ACTIVE_HIGH>, /* D1 - PB6 */ + <&gpiob 3 GPIO_ACTIVE_HIGH>, /* D2 - PB3 */ + <&gpiob 0 GPIO_ACTIVE_HIGH>, /* D3 - PB0 */ + <&gpioa 12 GPIO_ACTIVE_HIGH>, /* D4 - PA12 */ + <&gpioa 11 GPIO_ACTIVE_HIGH>, /* D5 - PA11 */ + <&gpiob 1 GPIO_ACTIVE_HIGH>, /* D6 - PB1 */ + <&gpiob 2 GPIO_ACTIVE_HIGH>, /* D7 - PB2 */ + <&gpiob 4 GPIO_ACTIVE_HIGH>, /* D8 - PB4 */ + <&gpiob 8 GPIO_ACTIVE_HIGH>, /* D9 - PB8 */ + <&gpiob 9 GPIO_ACTIVE_HIGH>, /* D10 - PB9 */ + <&gpiob 15 GPIO_ACTIVE_HIGH>, /* D11 - PB15 */ + <&gpiob 14 GPIO_ACTIVE_HIGH>, /* D12 - PB14 */ + <&gpiob 13 GPIO_ACTIVE_HIGH>, /* D13 - PB13 */ + + /* ADCs */ + <&gpioa 4 GPIO_ACTIVE_HIGH>, /* A0 - PA4 */ + <&gpioa 5 GPIO_ACTIVE_HIGH>, /* A1 - PA5 */ + <&gpioa 6 GPIO_ACTIVE_HIGH>, /* A2 - PA6 */ + <&gpioa 7 GPIO_ACTIVE_HIGH>, /* A3 - PA7 */ + <&gpioc 1 GPIO_ACTIVE_HIGH>, /* A4 - PC1 */ + <&gpioc 0 GPIO_ACTIVE_HIGH>, /* A5 - PC0 */ <&gpiob 11 GPIO_ACTIVE_HIGH>, /* D20 - PB11 */ <&gpiob 10 GPIO_ACTIVE_HIGH>, /* D21 - PB10 */ @@ -172,7 +256,27 @@ <&gpioh 14 GPIO_ACTIVE_HIGH>, <&gpioh 15 GPIO_ACTIVE_HIGH>; - pwm-pin-gpios = <>; + /* PWM pin mapping - Digital pins with their timer channels */ + /* Currently only the pins marked with ~ on the pin headers are enabled */ + pwm-pin-gpios = + /* <&gpiob 6 0>, */ /* D1/PB6 - TIM4_CH1 */ + /* <&gpiob 3 0>, */ /* D2/PB3 - TIM2_CH2 */ + /* <&gpiob 3 0>, */ /* D2/PB3 - TIM2_CH2 */ + <&gpiob 0 0>, /* D3/PB0 - TIM3_CH3 */ + <&gpioa 11 0>, /* D5/PA11 - TIM1_CH4 */ + <&gpiob 1 0>, /* D6/PB1 - TIM3_CH4 */ + /* <&gpiob 2 0>, */ /* D7/PB2 - TIM8_CH4N */ + /* <&gpiob 4 0>, */ /* D8/PB4 - TIM3_CH1 */ + <&gpiob 8 0>, /* D9/PB8 - TIM4_CH3 */ + <&gpiob 9 0>, /* D10/PB9 - TIM4_CH4 */ + <&gpiob 15 0>, /* D11/PB15 - TIM1_CH3N */ + /* <&gpiob 14 0>, */ /* D12/PB14 - TIM1_CH2N */ + /* <&gpiob 13 0>, */ /* D13/PB13 - TIM1_CH1N */ + /* <&gpiob 11 0>, */ /* D20/PB11 - TIM2_CH4 */ + /* <&gpiob 10 0>; */ /* D21/PB10 - TIM2_CH3 */ + <&gpioh 10 0>, /* LED3_R - TIM5_CH1 */ + <&gpioh 11 0>, /* LED3_G - TIM5_CH2 */ + <&gpioh 12 0>; /* LED3_B - TIM5_CH3 */ adc-pin-gpios = <&gpioa 4 0>, <&gpioa 5 0>, @@ -183,8 +287,28 @@ serials = <&usart1>, <&lpuart1>; i2cs = <&i2c2>, <&i2c4>; - spis = <&spi3>; - pwms = <>; + spis = <&spi2>, <&spi3>; + /* PWM mapping for the digital pins */ + /* Currently only the pins marked with ~ on the pin headers are enabled */ + pwms = + /* <&pwm4 2 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D0/PB7 → TIM4_CH2 */ + /* <&pwm4 1 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D1/PB6 → TIM4_CH1 */ + /* <&pwm2 2 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D2/PB3 → TIM2_CH2 */ + <&pwm3 3 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D3/PB0 → TIM3_CH3 */ + <&pwm1 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D5/PA11 → TIM1_CH4 */ + <&pwm3 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D6/PB1 → TIM3_CH4 */ + /* <&pwm8 4 PWM_HZ(500) PWM_POLARITY_INVERTED>, */ /* D7/PB2 → TIM8_CH4N */ + /* <&pwm3 1 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D8/PB4 → TIM3_CH1 */ + <&pwm4 3 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D9/PB8 → TIM4_CH3 */ + <&pwm4 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, /* D10/PB9 → TIM4_CH4 */ + <&pwm1 3 PWM_HZ(500) PWM_POLARITY_INVERTED>, /* D11/PB15 → TIM1_CH3N */ + /* <&pwm1 2 PWM_HZ(500) PWM_POLARITY_INVERTED>, */ /* D12/PB14 → TIM1_CH2N */ + /* <&pwm1 1 PWM_HZ(500) PWM_POLARITY_INVERTED>, */ /* D13/PB13 → TIM1_CH1N */ + /* <&pwm2 4 PWM_HZ(500) PWM_POLARITY_NORMAL>, */ /* D20/PB11 → TIM2_CH4 */ + /* <&pwm2 3 PWM_HZ(500) PWM_POLARITY_NORMAL>; */ /* D21/PB10 → TIM2_CH3 */ + <&pwm5 1 PWM_HZ(500) PWM_POLARITY_INVERTED>, /* LED3_R/PH10 → TIM5_CH1 */ + <&pwm5 2 PWM_HZ(500) PWM_POLARITY_INVERTED>, /* LED3_G/PH11 → TIM5_CH2 */ + <&pwm5 3 PWM_HZ(500) PWM_POLARITY_INVERTED>; /* LED3_B/PH12 → TIM5_CH3 */ control-gpios = <&gpiog 13 GPIO_ACTIVE_HIGH>; /* Internal SPI RDY */ analog-switch-gpios = <&gpioa 2 GPIO_ACTIVE_HIGH>; /* Analog switch for VREF */ From 76565bff692d53831cd0ca09cfcca35533533cd7 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 15 Sep 2025 17:31:33 +0200 Subject: [PATCH 046/117] test: unoq: implement direct RAM loading --- loader/main.c | 11 +++++++++++ .../arduino_uno_q_stm32u585xx.conf | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/loader/main.c b/loader/main.c index b23f8411a..1aed173ce 100644 --- a/loader/main.c +++ b/loader/main.c @@ -159,6 +159,17 @@ static int loader(const struct shell *sh) { gpio_pin_configure_dt(&spec, GPIO_INPUT | GPIO_PULL_DOWN); k_sleep(K_MSEC(200)); + uint8_t *ram_firmware = NULL; + uint32_t *ram_start = (uint32_t *)0x20000000; + if (!sketch_valid) { + ram_firmware = (uint8_t *)k_malloc(64 * 1024); + if (!ram_firmware) { + printk("Failed to allocate RAM for firmware\n"); + return -ENOMEM; + } + memset(ram_firmware, 0, 64 * 1024); + *ram_start = &ram_firmware[0]; + } if (gpio_pin_get_dt(&spec) == 0) { matrixBegin(); matrixSetGrayscaleBits(8); diff --git a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf index 2f7db5856..b03a6e5c3 100644 --- a/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf +++ b/variants/arduino_uno_q_stm32u585xx/arduino_uno_q_stm32u585xx.conf @@ -1,5 +1,5 @@ CONFIG_LLEXT_STORAGE_WRITABLE=n -CONFIG_HEAP_MEM_POOL_SIZE=32768 +CONFIG_HEAP_MEM_POOL_SIZE=131072 CONFIG_SHELL_STACK_SIZE=32768 CONFIG_MAIN_STACK_SIZE=32768 CONFIG_LLEXT_HEAP_SIZE=128 From 0f55662ca2acc18ec03d41c987576ec902752598 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 18 Sep 2025 15:12:15 +0200 Subject: [PATCH 047/117] static_build: fix bss initialization --- cores/arduino/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp index 50fde6de1..bab3b4100 100644 --- a/cores/arduino/main.cpp +++ b/cores/arduino/main.cpp @@ -99,7 +99,7 @@ extern "C" __attribute__((section(".entry_point"), used)) void entry_point(struc printk("Sketch Heap start: %p, size %p\n", &kheap_llext_heap, &kheap_llext_heap_size); memcpy(&_sdata, &_sidata, (&_edata - &_sdata) * sizeof(uint32_t)); - memset(&_sbss, 0, &_ebss - &_sbss); + memset(&_sbss, 0, (&_ebss - &_sbss) * sizeof(uint32_t)); __libc_init_array(); main(); } From a60cd82a13d11b88a363cfedebbf423040196d2e Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Wed, 17 Sep 2025 18:36:44 +0200 Subject: [PATCH 048/117] core: add macro to find pins by node --- cores/arduino/Arduino.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index 588adfdbd..4d35bedad 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -37,6 +37,11 @@ #undef DIGITAL_PIN_CHECK_UNIQUE #endif +// Helper macro to get Arduino pin number from device tree alias +#define DIGITAL_PIN_GPIOS_FIND_NODE(node) \ + DIGITAL_PIN_GPIOS_FIND_PIN(DT_REG_ADDR(DT_PHANDLE_BY_IDX(node, gpios, 0)), \ + DT_PHA_BY_IDX(node, gpios, 0, pin)) + #ifndef LED_BUILTIN /* Return the index of it if matched, oterwise return 0 */ From 02eb185f046f3fbaea8b3c6916f5f0158a5b7605 Mon Sep 17 00:00:00 2001 From: Sebastian Romero Date: Wed, 17 Sep 2025 18:46:28 +0200 Subject: [PATCH 049/117] unoq: add LED definitions to variant --- variants/arduino_uno_q_stm32u585xx/variant.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/variants/arduino_uno_q_stm32u585xx/variant.h b/variants/arduino_uno_q_stm32u585xx/variant.h index a56122e57..75c73b39a 100644 --- a/variants/arduino_uno_q_stm32u585xx/variant.h +++ b/variants/arduino_uno_q_stm32u585xx/variant.h @@ -19,3 +19,12 @@ #define AR_INTERNAL1V8 4 #define AR_EXTERNAL 5 #define AR_INTERNAL AR_INTERNAL2V5 + +// RGB LEDs Pin Map +#define LED3_R DIGITAL_PIN_GPIOS_FIND_NODE(DT_NODELABEL(led3_red)) +#define LED3_G DIGITAL_PIN_GPIOS_FIND_NODE(DT_NODELABEL(led3_green)) +#define LED3_B DIGITAL_PIN_GPIOS_FIND_NODE(DT_NODELABEL(led3_blue)) + +#define LED4_R DIGITAL_PIN_GPIOS_FIND_NODE(DT_NODELABEL(led4_red)) +#define LED4_G DIGITAL_PIN_GPIOS_FIND_NODE(DT_NODELABEL(led4_green)) +#define LED4_B DIGITAL_PIN_GPIOS_FIND_NODE(DT_NODELABEL(led4_blue)) \ No newline at end of file From 33b1a6f2484327f64acffdee142722e811c38b0b Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 23 Sep 2025 13:54:23 +0200 Subject: [PATCH 050/117] libraries/Arduino_LED_Matrix: Optimize reverse function. Use RBIT intrinsic (if available) instead of the slow software reverse. Note that RBIT is at least ~2x faster: Reverse Function Benchmark ========================== Current implementation: 18 ms Optimized implementation: 8 ms Speedup: 2.25x Signed-off-by: iabdalkader --- libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h b/libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h index eaaac73b5..23c313541 100644 --- a/libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h +++ b/libraries/Arduino_LED_Matrix/src/Arduino_LED_Matrix.h @@ -1,4 +1,5 @@ #include +#include extern "C" { void matrixBegin(void); @@ -14,13 +15,17 @@ void matrixWrite(uint8_t *buf); #define MATRIX_WITH_ARDUINOGRAPHICS #endif -static uint32_t reverse(uint32_t x) { +static inline uint32_t reverse(uint32_t x) { +#if defined(__CORTEX_M) && (__CORTEX_M >= 3U) + return __RBIT(x); +#else x = ((x >> 1) & 0x55555555u) | ((x & 0x55555555u) << 1); x = ((x >> 2) & 0x33333333u) | ((x & 0x33333333u) << 2); x = ((x >> 4) & 0x0f0f0f0fu) | ((x & 0x0f0f0f0fu) << 4); x = ((x >> 8) & 0x00ff00ffu) | ((x & 0x00ff00ffu) << 8); x = ((x >> 16) & 0xffffu) | ((x & 0xffffu) << 16); return x; +#endif } // TODO: this is dangerous, use with care From 6b5ceac1035b0956d80cdad60ebf34b9206c62d6 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 23 Sep 2025 17:46:35 +0200 Subject: [PATCH 051/117] matrix: optimize turnLed function. The main optimization eliminates the double MODER register write when on=true. Previously: MODER &= ~(0xFFFFFF) then MODER |= pin_bits (two writes) Now: MODER = 0 when off, or MODER = pin_bits when on (single write each) Otherwise, the compiler is already doing a pretty good job. Additional improvements: - Remove unused idxToPin() function (was just returning idx) - Remove unused reverse() function - Use direct pin array access and bit shifts for efficiency Signed-off-by: iabdalkader --- loader/matrix.inc | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/loader/matrix.inc b/loader/matrix.inc index da595a130..eed0f829b 100644 --- a/loader/matrix.inc +++ b/loader/matrix.inc @@ -112,38 +112,25 @@ static const uint8_t pins[][2] = { }; -const int idxToPin(int idx) { - return idx; -} - #define NUM_MATRIX_LEDS 104 static uint8_t __attribute__((aligned)) framebuffer[NUM_MATRIX_LEDS / 8]; static uint8_t __attribute__((aligned)) framebuffer_color[NUM_MATRIX_LEDS]; -static void turnLed(int idx, bool on) { - GPIOF->MODER &= ~(0xFFFFFF); +static bool color = false; +static uint8_t _max_grayscale_bits = 3; +static void turnLed(int idx, bool on) { + GPIOF->MODER &= 0xF0000000U; if (on) { - GPIOF->BSRR |= (1 << (idxToPin(pins[idx][0])) | 1 << (idxToPin(pins[idx][1]) + 16)); - GPIOF->MODER |= (1 << (idxToPin(pins[idx][0]) * 2) | 1 << (idxToPin(pins[idx][1]) * 2)); + uint8_t pin0 = pins[idx][0]; + uint8_t pin1 = pins[idx][1]; + + GPIOF->BSRR |= (1U << pin0) | (1U << (pin1 + 16)); + GPIOF->MODER |= (1U << (pin0 << 1)) | (1U << (pin1 << 1)); } } -static uint32_t reverse(uint32_t x) -{ - x = ((x >> 1) & 0x55555555u) | ((x & 0x55555555u) << 1); - x = ((x >> 2) & 0x33333333u) | ((x & 0x33333333u) << 2); - x = ((x >> 4) & 0x0f0f0f0fu) | ((x & 0x0f0f0f0fu) << 4); - x = ((x >> 8) & 0x00ff00ffu) | ((x & 0x00ff00ffu) << 8); - x = ((x >> 16) & 0xffffu) | ((x & 0xffffu) << 16); - return x; -} - -static bool color = false; -static uint8_t _max_grayscale_bits = 3; - -static void timer_irq_handler_fn(const struct device *counter_dev, void *user_data) -{ +static void timer_irq_handler_fn(const struct device *counter_dev, void *user_data) { static volatile int i_isr = 0; if (color) { static volatile int counter = 0; From 473fb7db9a87b1679de95d8aea98b70030d39a99 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 12:10:51 +0200 Subject: [PATCH 052/117] portentah7: remove deprecated CONFIG_TINYCRYPT --- .../arduino_portenta_h7_stm32h747xx_m7.conf | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf index 257d27999..15ab891d8 100644 --- a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf +++ b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf @@ -57,19 +57,6 @@ CONFIG_NET_MGMT=y CONFIG_NET_MGMT_EVENT=y CONFIG_NET_L2_ETHERNET=y CONFIG_NET_L2_ETHERNET_MGMT=y - -CONFIG_TINYCRYPT=y -CONFIG_TINYCRYPT_AES=y -CONFIG_TINYCRYPT_SHA256=y -CONFIG_TINYCRYPT_SHA256_HMAC=y -CONFIG_TINYCRYPT_AES_CCM=y -CONFIG_TINYCRYPT_AES_CTR=y -CONFIG_TINYCRYPT_AES_CBC=y -CONFIG_TINYCRYPT_AES_CMAC=y -CONFIG_TINYCRYPT_CTR_PRNG=y -CONFIG_ENTROPY_GENERATOR=y -CONFIG_TEST_RANDOM_GENERATOR=y - CONFIG_NET_TX_STACK_SIZE=8192 CONFIG_NET_RX_STACK_SIZE=8192 CONFIG_NET_TCP_WORKQ_STACK_SIZE=8192 @@ -78,6 +65,9 @@ CONFIG_NET_TCP=y CONFIG_NET_SOCKETS=y CONFIG_POSIX_API=y +CONFIG_ENTROPY_GENERATOR=y +CONFIG_TEST_RANDOM_GENERATOR=y + CONFIG_MBEDTLS=y CONFIG_MBEDTLS_BUILTIN=y CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y From 7a9748167c74e7aa08e700851cc9ebb3092dc899 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 12:57:55 +0200 Subject: [PATCH 053/117] opta: remove deprecated CONFIG_TINYCRYPT --- .../arduino_opta_stm32h747xx_m7.conf | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf index 4019d77b1..51d5f4fc7 100644 --- a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf +++ b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf @@ -60,19 +60,6 @@ CONFIG_NET_MGMT=y CONFIG_NET_MGMT_EVENT=y CONFIG_NET_L2_ETHERNET=y CONFIG_NET_L2_ETHERNET_MGMT=y - -CONFIG_TINYCRYPT=y -CONFIG_TINYCRYPT_AES=y -CONFIG_TINYCRYPT_SHA256=y -CONFIG_TINYCRYPT_SHA256_HMAC=y -CONFIG_TINYCRYPT_AES_CCM=y -CONFIG_TINYCRYPT_AES_CTR=y -CONFIG_TINYCRYPT_AES_CBC=y -CONFIG_TINYCRYPT_AES_CMAC=y -CONFIG_TINYCRYPT_CTR_PRNG=y -CONFIG_ENTROPY_GENERATOR=y -CONFIG_TEST_RANDOM_GENERATOR=y - CONFIG_NET_TX_STACK_SIZE=8192 CONFIG_NET_RX_STACK_SIZE=8192 CONFIG_NET_TCP_WORKQ_STACK_SIZE=8192 @@ -81,6 +68,9 @@ CONFIG_NET_TCP=y CONFIG_NET_SOCKETS=y CONFIG_POSIX_API=y +CONFIG_ENTROPY_GENERATOR=y +CONFIG_TEST_RANDOM_GENERATOR=y + CONFIG_MBEDTLS=y CONFIG_MBEDTLS_BUILTIN=y CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y From 10c342a637d5fc1f566828a0114304d8d004a439 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 7 Oct 2025 11:38:09 +0200 Subject: [PATCH 054/117] temp: add unoq support libraries this commit can be reverted as soon as the libraries are added to library manager --- .github/workflows/package_core.yml | 2 ++ .gitmodules | 6 ++++++ libraries/Arduino_RPCLite | 1 + libraries/Arduino_RouterBridge | 1 + 4 files changed, 10 insertions(+) create mode 100644 .gitmodules create mode 160000 libraries/Arduino_RPCLite create mode 160000 libraries/Arduino_RouterBridge diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 53347c210..887a67d81 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -24,8 +24,10 @@ jobs: - uses: actions/checkout@v4 with: + submodules: 'recursive' fetch-depth: 0 persist-credentials: false + fetch-tags: true - name: Initialize Zephyr environment run: | diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..7c107b780 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "libraries/Arduino_RPCLite"] + path = libraries/Arduino_RPCLite + url = git@github.com:arduino-libraries/Arduino_RPCLite.git +[submodule "libraries/Arduino_RouterBridge"] + path = libraries/Arduino_RouterBridge + url = git@github.com:arduino-libraries/Arduino_RouterBridge.git diff --git a/libraries/Arduino_RPCLite b/libraries/Arduino_RPCLite new file mode 160000 index 000000000..6af013472 --- /dev/null +++ b/libraries/Arduino_RPCLite @@ -0,0 +1 @@ +Subproject commit 6af013472ca1916083aed46954b98193cb3c39a7 diff --git a/libraries/Arduino_RouterBridge b/libraries/Arduino_RouterBridge new file mode 160000 index 000000000..9c4100f01 --- /dev/null +++ b/libraries/Arduino_RouterBridge @@ -0,0 +1 @@ +Subproject commit 9c4100f010603b994b13ebc0b478f2619fbac33c From 48c7a61abc4e4681ff1432bea0048d00af1356a5 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 12:53:31 +0200 Subject: [PATCH 055/117] giga: cleanup bt configs --- .../arduino_giga_r1_stm32h747xx_m7.conf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf index c6222f4c5..eaf599eaa 100644 --- a/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf +++ b/variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf @@ -59,12 +59,8 @@ CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_CMD_TX_SIZE=255 CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 CONFIG_BT_MAX_CONN=4 -CONFIG_BT_CTLR_ADV_EXT=y -CONFIG_BT_CTLR_ADV_PERIODIC=y -CONFIG_BT_CTLR_DTM_HCI=y CONFIG_CYW4343W_MURATA_1DX=y CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_BT_RX_STACK_SIZE=4096 -CONFIG_BT_HCI_TX_STACK_SIZE=4096 CONFIG_STM32H7_BOOT_M4_AT_INIT=n From 3af5eece5c31814cb7b7bbfd982ecfcd62ad3731 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 12:53:48 +0200 Subject: [PATCH 056/117] nano33ble: cleanup bt configs --- .../arduino_nano_33_ble_nrf52840_sense.conf | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/variants/arduino_nano_33_ble_nrf52840_sense/arduino_nano_33_ble_nrf52840_sense.conf b/variants/arduino_nano_33_ble_nrf52840_sense/arduino_nano_33_ble_nrf52840_sense.conf index 787e6dc9a..1b7191cad 100644 --- a/variants/arduino_nano_33_ble_nrf52840_sense/arduino_nano_33_ble_nrf52840_sense.conf +++ b/variants/arduino_nano_33_ble_nrf52840_sense/arduino_nano_33_ble_nrf52840_sense.conf @@ -1,5 +1,4 @@ CONFIG_BT=y - CONFIG_BT_HCI_RAW=y CONFIG_BT_HCI_RAW_H4=y CONFIG_BT_HCI_RAW_H4_ENABLE=y @@ -9,14 +8,10 @@ CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 CONFIG_BT_MAX_CONN=4 CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_ADV_PERIODIC=y +CONFIG_BT_RX_STACK_SIZE=4096 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 -# Workaround: Unable to allocate command buffer when using K_NO_WAIT since -# Host number of completed commands does not follow normal flow control. -CONFIG_BT_BUF_CMD_TX_COUNT=10 - - CONFIG_USB_DEVICE_STACK=y CONFIG_USB_DEVICE_PRODUCT="Arduino Nano 33 BLE" CONFIG_USB_DEVICE_MANUFACTURER="Arduino" @@ -37,9 +32,6 @@ CONFIG_HEAP_MEM_POOL_SIZE=16384 CONFIG_LLEXT_HEAP_SIZE=128 CONFIG_MAIN_STACK_SIZE=16384 -CONFIG_BT_RX_STACK_SIZE=4096 -CONFIG_BT_HCI_TX_STACK_SIZE=4096 - CONFIG_FPU=y CONFIG_STACK_USAGE=n From e1019772bd80283228d1896b14f242340a17c64f Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 12:54:06 +0200 Subject: [PATCH 057/117] opta: cleanup bt configs --- .../arduino_opta_stm32h747xx_m7.conf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf index 51d5f4fc7..ec12c78dc 100644 --- a/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf +++ b/variants/arduino_opta_stm32h747xx_m7/arduino_opta_stm32h747xx_m7.conf @@ -88,12 +88,8 @@ CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_CMD_TX_SIZE=255 CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 CONFIG_BT_MAX_CONN=4 -CONFIG_BT_CTLR_ADV_EXT=y -CONFIG_BT_CTLR_ADV_PERIODIC=y -CONFIG_BT_CTLR_DTM_HCI=y CONFIG_CYW4343W_MURATA_1DX=y CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_BT_RX_STACK_SIZE=4096 -CONFIG_BT_HCI_TX_STACK_SIZE=4096 CONFIG_STM32H7_BOOT_M4_AT_INIT=n From 4bc5b2dede1442f50143d5d4a7622b117dc9e56c Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 12:54:21 +0200 Subject: [PATCH 058/117] portentac33: cleanup bt configs --- .../arduino_portenta_c33_r7fa6m5bh3cfc.conf | 2 -- 1 file changed, 2 deletions(-) diff --git a/variants/arduino_portenta_c33_r7fa6m5bh3cfc/arduino_portenta_c33_r7fa6m5bh3cfc.conf b/variants/arduino_portenta_c33_r7fa6m5bh3cfc/arduino_portenta_c33_r7fa6m5bh3cfc.conf index b9f799e78..2a003fc84 100644 --- a/variants/arduino_portenta_c33_r7fa6m5bh3cfc/arduino_portenta_c33_r7fa6m5bh3cfc.conf +++ b/variants/arduino_portenta_c33_r7fa6m5bh3cfc/arduino_portenta_c33_r7fa6m5bh3cfc.conf @@ -99,5 +99,3 @@ CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_CMD_TX_SIZE=255 CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 CONFIG_BT_MAX_CONN=4 -CONFIG_BT_CTLR_ADV_EXT=y -CONFIG_BT_CTLR_ADV_PERIODIC=y \ No newline at end of file From e344729d3488829eb4debeb54142f3de202ea90f Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Aug 2025 12:54:41 +0200 Subject: [PATCH 059/117] portentah7: cleanup bt configs --- .../arduino_portenta_h7_stm32h747xx_m7.conf | 5 ----- 1 file changed, 5 deletions(-) diff --git a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf index 15ab891d8..6c0b575eb 100644 --- a/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf +++ b/variants/arduino_portenta_h7_stm32h747xx_m7/arduino_portenta_h7_stm32h747xx_m7.conf @@ -87,7 +87,6 @@ CONFIG_VIDEO_BUFFER_USE_SHARED_MULTI_HEAP=y CONFIG_VIDEO_BUFFER_SMH_ATTRIBUTE=2 CONFIG_FLASH=y - CONFIG_BT=y CONFIG_BT_HCI_RAW=y CONFIG_BT_HCI_RAW_H4=y @@ -96,12 +95,8 @@ CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_CMD_TX_SIZE=255 CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 CONFIG_BT_MAX_CONN=4 -CONFIG_BT_CTLR_ADV_EXT=y -CONFIG_BT_CTLR_ADV_PERIODIC=y -CONFIG_BT_CTLR_DTM_HCI=y CONFIG_CYW4343W_MURATA_1DX=y CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_BT_RX_STACK_SIZE=4096 -CONFIG_BT_HCI_TX_STACK_SIZE=4096 CONFIG_STM32H7_BOOT_M4_AT_INIT=n From d7cb41b507c5c0188f12cb6dbea3ec1be43a1e23 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Thu, 31 Jul 2025 18:30:56 +0200 Subject: [PATCH 060/117] ethernet lib: set mac address, log module fix --- libraries/SocketWrapper/Ethernet.h | 108 ++++++++------- libraries/SocketWrapper/SocketHelpers.cpp | 150 ++++++++++++++++++++ libraries/SocketWrapper/SocketHelpers.h | 160 +++++----------------- loader/llext_exports.c | 4 + loader/main.c | 2 +- 5 files changed, 246 insertions(+), 178 deletions(-) diff --git a/libraries/SocketWrapper/Ethernet.h b/libraries/SocketWrapper/Ethernet.h index e93107298..7f3d455db 100644 --- a/libraries/SocketWrapper/Ethernet.h +++ b/libraries/SocketWrapper/Ethernet.h @@ -5,64 +5,76 @@ #if DT_HAS_COMPAT_STATUS_OKAY(ethernet_phy) enum EthernetLinkStatus { - Unknown, - LinkON, - LinkOFF + Unknown, + LinkON, + LinkOFF }; enum EthernetHardwareStatus { - EthernetNoHardware, - EthernetOk + EthernetNoHardware, + EthernetOk }; -class EthernetClass : public NetworkInterface { +class EthernetClass: public NetworkInterface +{ public: - EthernetClass() { - } + EthernetClass() {} + virtual ~EthernetClass() {} - virtual ~EthernetClass() { - } + int begin(bool blocking = true, uint32_t additional_event_mask = 0) { + hardwareStatus(); + return NetworkInterface::begin(blocking, additional_event_mask); + } - EthernetLinkStatus linkStatus() { - hardwareStatus(); - if (net_if_is_up(netif)) { - return LinkON; - } else { - return LinkOFF; - } - } + int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000) { + hardwareStatus(); + if (mac != nullptr) { + NetworkInterface::setMACAddress(mac); + } + return NetworkInterface::begin(true, 0); + } - bool begin(bool blocking = true, uint32_t additional_event_mask = 0) { - hardwareStatus(); - return NetworkInterface::begin(blocking, additional_event_mask); - } + int maintain(); //TODO + + EthernetLinkStatus linkStatus() { + hardwareStatus(); + if (net_if_is_up(netif)) { + return LinkON; + } else { + return LinkOFF; + } + } + + EthernetHardwareStatus hardwareStatus() { + const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); + if (device_is_ready(dev)) { + for (int i = 1; i < 3; i++) { + auto _if = net_if_get_by_index(i); + if (!net_eth_type_is_wifi(_if)) { + netif = _if; + break; + } + } + return EthernetOk; + } else { + return EthernetNoHardware; + } + } - bool begin(uint8_t *mac_address, int _timeout, int _response_timeout) { - return begin(); - } - - bool begin(uint8_t *mac_address, IPAddress _ip, IPAddress _dns, IPAddress _gateway, - IPAddress _netmask, int _timeout, int _response_timeout) { - return begin(); - } - - EthernetHardwareStatus hardwareStatus() { - const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); - if (device_is_ready(dev)) { - for (int i = 1; i < 4; i++) { - auto _if = net_if_get_by_index(i); - if (_if && !net_eth_type_is_wifi(_if)) { - netif = _if; - break; - } - } - return EthernetOk; - } else { - return EthernetNoHardware; - } - } + int begin(uint8_t *mac, IPAddress ip) { + return begin(); //TODO + } + int begin(uint8_t *mac, IPAddress ip, IPAddress dns) { + return begin(); //TODO + } + int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) { + return begin(); //TODO + } + int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) { + return begin(); //TODO + } + void init(uint8_t sspin = 10); //TODO }; - extern EthernetClass Ethernet; -#endif +#endif \ No newline at end of file diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index aa4d59abf..e61eab3b3 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -1,4 +1,154 @@ #include "SocketHelpers.h" +#include +LOG_MODULE_DECLARE(sketch, CONFIG_LOG_DEFAULT_LEVEL); + struct net_mgmt_event_callback NetworkInterface::mgmt_cb; struct net_dhcpv4_option_callback NetworkInterface::dhcp_cb; + +void NetworkInterface::event_handler(struct net_mgmt_event_callback *cb, + uint64_t mgmt_event, + struct net_if *iface) +{ + int i = 0; + + if (mgmt_event != NET_EVENT_IPV4_ADDR_ADD) { + return; + } + + for (i = 0; i < NET_IF_MAX_IPV4_ADDR; i++) { + char buf[NET_IPV4_ADDR_LEN]; + + if (iface->config.ip.ipv4->unicast[i].ipv4.addr_type != + NET_ADDR_DHCP) { + continue; + } + + LOG_INF(" Address[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, + &iface->config.ip.ipv4->unicast[i].ipv4.address.in_addr, + buf, sizeof(buf))); + LOG_INF(" Subnet[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, + &iface->config.ip.ipv4->unicast[i].netmask, + buf, sizeof(buf))); + LOG_INF(" Router[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, + &iface->config.ip.ipv4->gw, + buf, sizeof(buf))); + LOG_INF("Lease time[%d]: %u seconds", net_if_get_by_iface(iface), + iface->config.dhcpv4.lease_time); + } +} + +void NetworkInterface::option_handler(struct net_dhcpv4_option_callback *cb, + size_t length, + enum net_dhcpv4_msg_type msg_type, + struct net_if *iface) +{ + char buf[NET_IPV4_ADDR_LEN]; + + LOG_INF("DHCP Option %d: %s", cb->option, + net_addr_ntop(AF_INET, cb->data, buf, sizeof(buf))); +} + +int NetworkInterface::dhcp() +{ + net_mgmt_init_event_callback(&mgmt_cb, event_handler, NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IF_UP | NET_EVENT_IF_DOWN); + net_mgmt_add_event_callback(&mgmt_cb); + + net_dhcpv4_init_option_callback(&dhcp_cb, option_handler, + DHCP_OPTION_NTP, ntp_server, + sizeof(ntp_server)); + + net_dhcpv4_add_option_callback(&dhcp_cb); + + net_dhcpv4_start(netif); + + LOG_INF("DHCPv4 started...\n"); + + return 0; +} + +void NetworkInterface::enable_dhcpv4_server(struct net_if *netif, char* _netmask) +{ + static struct in_addr addr; + static struct in_addr netmaskAddr; + + if (net_addr_pton(AF_INET, String(localIP()).c_str(), &addr)) { + LOG_ERR("Invalid address: %s", String(localIP()).c_str()); + return; + } + + if (net_addr_pton(AF_INET, _netmask, &netmaskAddr)) { + LOG_ERR("Invalid netmask: %s", _netmask); + return; + } + + net_if_ipv4_set_gw(netif, &addr); + + if (net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0) == NULL) { + LOG_ERR("unable to set IP address for AP interface"); + } + + if (!net_if_ipv4_set_netmask_by_addr(netif, &addr, &netmaskAddr)) { + LOG_ERR("Unable to set netmask for AP interface: %s", _netmask); + } + + addr.s4_addr[3] += 10; /* Starting IPv4 address for DHCPv4 address pool. */ + + if (net_dhcpv4_server_start(netif, &addr) != 0) { + LOG_ERR("DHCP server is not started for desired IP"); + return; + } + + LOG_INF("DHCPv4 server started...\n"); +} + +IPAddress NetworkInterface::localIP() { + return IPAddress(netif->config.ip.ipv4->unicast[0].ipv4.address.in_addr.s_addr); +} + +IPAddress NetworkInterface::subnetMask() { + return IPAddress(netif->config.ip.ipv4->unicast[0].netmask.s_addr); +} +IPAddress NetworkInterface::gatewayIP() { + return IPAddress(netif->config.ip.ipv4->gw.s_addr); +} +IPAddress NetworkInterface::dnsServerIP() { + return arduino::INADDR_NONE; +} + +IPAddress NetworkInterface::dnsIP(int n) { + //TODO +} + +void NetworkInterface::setMACAddress(const uint8_t* mac) { + struct net_eth_addr new_mac; + struct ethernet_req_params params = { 0 }; + + memcpy(¶ms.mac_address, &new_mac, sizeof(struct net_eth_addr)); + + net_if_down(netif); // Ensure the interface is down before changing the MAC address + + int ret = net_mgmt(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS, netif, + ¶ms, sizeof(params)); + if (ret != 0) { + LOG_ERR("Failed to set MAC address via net_mgmt, ret=%d", ret); + } else { + LOG_INF("MAC address set successfully via net_mgmt"); + } + + net_if_up(netif); // Bring the interface back up after changing the MAC address +} + +int NetworkInterface::begin(bool blocking, uint32_t additional_event_mask) { + dhcp(); + int ret = net_mgmt_event_wait_on_iface(netif, NET_EVENT_IPV4_ADDR_ADD | additional_event_mask, + NULL, NULL, NULL, blocking ? K_FOREVER : K_SECONDS(1)); + return (ret == 0) ? 1 : 0; +} + +bool NetworkInterface::disconnect() { + return (net_if_down(netif) == 0); +} diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index acf510a4c..ebf850678 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -12,150 +12,52 @@ #include #include #include +#include +#include #include #define DHCP_OPTION_NTP (42) -#undef LOG_INF -#define LOG_INF(...) -#undef LOG_ERR -#define LOG_ERR(...) - class NetworkInterface { -private: - uint8_t ntp_server[4]; - static struct net_mgmt_event_callback mgmt_cb; - static struct net_dhcpv4_option_callback dhcp_cb; - - static void event_handler(struct net_mgmt_event_callback *cb, uint64_t mgmt_event, - struct net_if *iface) { - int i = 0; - - if (mgmt_event != NET_EVENT_IPV4_ADDR_ADD) { - return; - } - - for (i = 0; i < NET_IF_MAX_IPV4_ADDR; i++) { - char buf[NET_IPV4_ADDR_LEN]; - - if (iface->config.ip.ipv4->unicast[i].ipv4.addr_type != NET_ADDR_DHCP) { - continue; - } - - LOG_INF(" Address[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, &iface->config.ip.ipv4->unicast[i].ipv4.address.in_addr, - buf, sizeof(buf))); - LOG_INF(" Subnet[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, &iface->config.ip.ipv4->unicast[i].netmask, buf, - sizeof(buf))); - LOG_INF(" Router[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, &iface->config.ip.ipv4->gw, buf, sizeof(buf))); - LOG_INF("Lease time[%d]: %u seconds", net_if_get_by_iface(iface), - iface->config.dhcpv4.lease_time); - } - } - - static void option_handler(struct net_dhcpv4_option_callback *cb, size_t length, - enum net_dhcpv4_msg_type msg_type, struct net_if *iface) { - char buf[NET_IPV4_ADDR_LEN]; - - LOG_INF("DHCP Option %d: %s", cb->option, - net_addr_ntop(AF_INET, cb->data, buf, sizeof(buf))); - } - -protected: - struct net_if *netif = nullptr; - - int dhcp() { - net_mgmt_init_event_callback(&mgmt_cb, event_handler, - NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IF_UP | NET_EVENT_IF_DOWN); - net_mgmt_add_event_callback(&mgmt_cb); - - net_dhcpv4_init_option_callback(&dhcp_cb, option_handler, DHCP_OPTION_NTP, ntp_server, - sizeof(ntp_server)); - - net_dhcpv4_add_option_callback(&dhcp_cb); - - net_dhcpv4_start(netif); - - return 0; - } - - void enable_dhcpv4_server(struct net_if *netif, char *_netmask = "255.255.255.0") { - static struct in_addr addr; - static struct in_addr netmaskAddr; - - if (net_addr_pton(AF_INET, String(localIP()).c_str(), &addr)) { - LOG_ERR("Invalid address: %s", String(localIP()).c_str()); - return; - } - - if (net_addr_pton(AF_INET, _netmask, &netmaskAddr)) { - LOG_ERR("Invalid netmask: %s", _netmask); - return; - } - - net_if_ipv4_set_gw(netif, &addr); - - if (net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0) == NULL) { - LOG_ERR("unable to set IP address for AP interface"); - } - - if (!net_if_ipv4_set_netmask_by_addr(netif, &addr, &netmaskAddr)) { - LOG_ERR("Unable to set netmask for AP interface: %s", _netmask); - } - - addr.s4_addr[3] += 10; /* Starting IPv4 address for DHCPv4 address pool. */ - - if (net_dhcpv4_server_start(netif, &addr) != 0) { - LOG_ERR("DHCP server is not started for desired IP"); - return; - } - - LOG_INF("DHCPv4 server started...\n"); - } + private: + uint8_t ntp_server[4]; + static struct net_mgmt_event_callback mgmt_cb; + static struct net_dhcpv4_option_callback dhcp_cb; -public: - NetworkInterface() { - } + static void event_handler(struct net_mgmt_event_callback *cb, + uint64_t mgmt_event, + struct net_if *iface); - ~NetworkInterface() { - } + static void option_handler(struct net_dhcpv4_option_callback *cb, + size_t length, + enum net_dhcpv4_msg_type msg_type, + struct net_if *iface); - IPAddress localIP() { - return IPAddress(netif->config.ip.ipv4->unicast[0].ipv4.address.in_addr.s_addr); - } + protected: + struct net_if *netif = nullptr; + int dhcp(); + void enable_dhcpv4_server(struct net_if *netif, char* _netmask = "255.255.255.0"); - IPAddress subnetMask() { - return IPAddress(netif->config.ip.ipv4->unicast[0].netmask.s_addr); - } + public: + NetworkInterface() {} + ~NetworkInterface() {} - IPAddress gatewayIP() { - return IPAddress(netif->config.ip.ipv4->gw.s_addr); - } + IPAddress localIP(); - IPAddress dnsServerIP() { - return arduino::INADDR_NONE; - } + IPAddress subnetMask(); + IPAddress gatewayIP(); + IPAddress dnsServerIP(); - IPAddress dnsIP(int n = 0); + IPAddress dnsIP(int n = 0); - void setMACAddress(const uint8_t *mac); + void setMACAddress(const uint8_t* mac); - bool begin(bool blocking = true, uint32_t additional_event_mask = 0) { - dhcp(); - int ret = - net_mgmt_event_wait_on_iface(netif, NET_EVENT_IPV4_ADDR_ADD | additional_event_mask, - NULL, NULL, NULL, blocking ? K_FOREVER : K_SECONDS(1)); - return (ret == 0); - } + int begin(bool blocking = true, uint32_t additional_event_mask = 0); - bool disconnect() { - return (net_if_down(netif) == 0); - } + bool disconnect(); - // TODO: manual functions for setting IP address, subnet mask, gateway, etc. - // net_if_ipv4_set_netmask_by_addr(iface, &addr4, &nm); - // net_if_ipv4_addr_add(iface, &addr4, NET_ADDR_MANUAL, 0); + // TODO: manual functions for setting IP address, subnet mask, gateway, etc. + // net_if_ipv4_set_netmask_by_addr(iface, &addr4, &nm); + // net_if_ipv4_addr_add(iface, &addr4, NET_ADDR_MANUAL, 0); }; diff --git a/loader/llext_exports.c b/loader/llext_exports.c index 6550ea9c1..cecbc87c8 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -66,9 +66,12 @@ EXPORT_SYMBOL(usb_disable); EXPORT_SYMBOL(z_log_msg_runtime_vcreate); +FORCE_EXPORT_SYM(log_dynamic_sketch) + #if defined(CONFIG_NETWORKING) FORCE_EXPORT_SYM(net_if_foreach); FORCE_EXPORT_SYM(net_if_down); +FORCE_EXPORT_SYM(net_if_up); FORCE_EXPORT_SYM(net_if_get_by_iface); #if defined(CONFIG_NET_IPV4) FORCE_EXPORT_SYM(net_if_ipv4_maddr_add); @@ -82,6 +85,7 @@ FORCE_EXPORT_SYM(net_if_lookup_by_dev); #if defined(CONFIG_NET_L2_ETHERNET) FORCE_EXPORT_SYM(_net_l2_ETHERNET); +FORCE_EXPORT_SYM(net_mgmt_NET_REQUEST_ETHERNET_SET_MAC_ADDRESS); #endif #if defined(CONFIG_NET_DHCPV4) diff --git a/loader/main.c b/loader/main.c index b879171fe..f96e01307 100644 --- a/loader/main.c +++ b/loader/main.c @@ -6,7 +6,7 @@ #include "zephyr/sys/printk.h" #include -LOG_MODULE_REGISTER(app); +LOG_MODULE_REGISTER(sketch); #include #include From 76402c0c2af0147098863944db20ad6988d1d899 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Fri, 1 Aug 2025 16:51:42 +0200 Subject: [PATCH 061/117] Ethernet lib: move Ethernet functions implementation in .cpp --- libraries/SocketWrapper/Ethernet.cpp | 67 +++++++++++++++++++++++ libraries/SocketWrapper/Ethernet.h | 79 +++++++++------------------- 2 files changed, 93 insertions(+), 53 deletions(-) diff --git a/libraries/SocketWrapper/Ethernet.cpp b/libraries/SocketWrapper/Ethernet.cpp index 03300d439..cb67b498b 100644 --- a/libraries/SocketWrapper/Ethernet.cpp +++ b/libraries/SocketWrapper/Ethernet.cpp @@ -1,5 +1,72 @@ #include "Ethernet.h" #if DT_HAS_COMPAT_STATUS_OKAY(ethernet_phy) + +int EthernetClass::begin(uint8_t *mac, unsigned long timeout, unsigned long responseTimeout) { + setMACAddress(mac); + return NetworkInterface::begin(true, 0); +} + +int EthernetClass::begin(uint8_t *mac, IPAddress ip) { + IPAddress dns = ip; + dns[3] = 1; + + auto ret = begin(mac, ip, dns); + return ret; +} + +int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns) { + IPAddress gateway = ip; + gateway[3] = 1; + + auto ret = begin(mac, ip, dns, gateway); + return ret; +} + +int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) { + IPAddress subnet(255, 255, 255, 0); + auto ret = begin(mac, ip, dns, gateway, subnet); + return ret; +} + +int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout, unsigned long responseTimeout) { + // TODO: Config the network interface with the provided IP, DNS, gateway, and subnet + + return begin(mac, timeout, responseTimeout); +} + +EthernetLinkStatus EthernetClass::linkStatus() { + if ((hardwareStatus() == EthernetOk) && net_if_is_up(netif)) { + return LinkON; + } + return LinkOFF; +} + +EthernetHardwareStatus EthernetClass::hardwareStatus() { + const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); + if (device_is_ready(dev)) { + for (int i = 1; i < 3; i++) { + auto _if = net_if_get_by_index(i); + if (!net_eth_type_is_wifi(_if)) { + netif = _if; + break; + } + } + return EthernetOk; + } else { + return EthernetNoHardware; + } +} + +void EthernetClass::setMACAddress(const uint8_t *mac_address) { + if (mac_address != nullptr) { + NetworkInterface::setMACAddress(mac_address); + } +} + +IPAddress EthernetClass::localIP() { + return NetworkInterface::localIP(); +} + EthernetClass Ethernet; #endif diff --git a/libraries/SocketWrapper/Ethernet.h b/libraries/SocketWrapper/Ethernet.h index 7f3d455db..5a98b49d5 100644 --- a/libraries/SocketWrapper/Ethernet.h +++ b/libraries/SocketWrapper/Ethernet.h @@ -21,60 +21,33 @@ class EthernetClass: public NetworkInterface EthernetClass() {} virtual ~EthernetClass() {} - int begin(bool blocking = true, uint32_t additional_event_mask = 0) { - hardwareStatus(); - return NetworkInterface::begin(blocking, additional_event_mask); - } - - int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000) { - hardwareStatus(); - if (mac != nullptr) { - NetworkInterface::setMACAddress(mac); - } - return NetworkInterface::begin(true, 0); - } - - int maintain(); //TODO - - EthernetLinkStatus linkStatus() { - hardwareStatus(); - if (net_if_is_up(netif)) { - return LinkON; - } else { - return LinkOFF; - } - } - - EthernetHardwareStatus hardwareStatus() { - const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); - if (device_is_ready(dev)) { - for (int i = 1; i < 3; i++) { - auto _if = net_if_get_by_index(i); - if (!net_eth_type_is_wifi(_if)) { - netif = _if; - break; - } - } - return EthernetOk; - } else { - return EthernetNoHardware; - } - } - - int begin(uint8_t *mac, IPAddress ip) { - return begin(); //TODO - } - int begin(uint8_t *mac, IPAddress ip, IPAddress dns) { - return begin(); //TODO - } - int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) { - return begin(); //TODO - } - int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) { - return begin(); //TODO - } - void init(uint8_t sspin = 10); //TODO + int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + int maintain(); + EthernetLinkStatus linkStatus(); + EthernetHardwareStatus hardwareStatus(); + + // Manual configuration + int begin(uint8_t *mac, IPAddress ip); + int begin(uint8_t *mac, IPAddress ip, IPAddress dns); + int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway); + int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + void init(uint8_t sspin = 10); + + void MACAddress(uint8_t *mac_address); + IPAddress localIP(); + IPAddress subnetMask(); + IPAddress gatewayIP(); + IPAddress dnsServerIP(); + + void setMACAddress(const uint8_t *mac_address); + void setLocalIP(const IPAddress local_ip); + void setSubnetMask(const IPAddress subnet); + void setGatewayIP(const IPAddress gateway); + void setDnsServerIP(const IPAddress dns_server); + void setRetransmissionTimeout(uint16_t milliseconds); + void setRetransmissionCount(uint8_t num); }; + extern EthernetClass Ethernet; #endif \ No newline at end of file From b6f056475b915e0869f4ea5b8bc02a06b6112776 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Fri, 1 Aug 2025 17:32:17 +0200 Subject: [PATCH 062/117] Ethernet lib: tentative set manual IP,subnet,gateway --- libraries/SocketWrapper/Ethernet.cpp | 12 ++++++++++-- libraries/SocketWrapper/Ethernet.h | 2 +- libraries/SocketWrapper/SocketHelpers.cpp | 22 ++++++++++++++++++++++ libraries/SocketWrapper/SocketHelpers.h | 1 + 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/libraries/SocketWrapper/Ethernet.cpp b/libraries/SocketWrapper/Ethernet.cpp index cb67b498b..877468c08 100644 --- a/libraries/SocketWrapper/Ethernet.cpp +++ b/libraries/SocketWrapper/Ethernet.cpp @@ -30,9 +30,17 @@ int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress ga } int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout, unsigned long responseTimeout) { - // TODO: Config the network interface with the provided IP, DNS, gateway, and subnet + setMACAddress(mac); + + if (!NetworkInterface::setLocalIP(ip, subnet, gateway)) { + return 0; + } + + if (!net_if_is_up(netif)) { + net_if_up(netif); + } - return begin(mac, timeout, responseTimeout); + return 1; } EthernetLinkStatus EthernetClass::linkStatus() { diff --git a/libraries/SocketWrapper/Ethernet.h b/libraries/SocketWrapper/Ethernet.h index 5a98b49d5..99f81c610 100644 --- a/libraries/SocketWrapper/Ethernet.h +++ b/libraries/SocketWrapper/Ethernet.h @@ -21,7 +21,7 @@ class EthernetClass: public NetworkInterface EthernetClass() {} virtual ~EthernetClass() {} - int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + int begin(uint8_t *mac = nullptr, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); int maintain(); EthernetLinkStatus linkStatus(); EthernetHardwareStatus hardwareStatus(); diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index e61eab3b3..f877781c5 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -152,3 +152,25 @@ int NetworkInterface::begin(bool blocking, uint32_t additional_event_mask) { bool NetworkInterface::disconnect() { return (net_if_down(netif) == 0); } + +bool NetworkInterface::setLocalIP(IPAddress ip, IPAddress subnet, IPAddress gateway) { + struct in_addr ip_addr, subnet_addr, gw_addr; + + ip_addr.s_addr = ip; + subnet_addr.s_addr = subnet; + gw_addr.s_addr = gateway; + + if (!net_if_ipv4_addr_add(netif, &ip_addr, NET_ADDR_MANUAL, 0)) { + LOG_ERR("Failed to set static IP address"); + return false; + } + + if (!net_if_ipv4_set_netmask_by_addr(netif, &ip_addr, &subnet_addr)) { + LOG_ERR("Failed to set subnet mask"); + return false; + } + + net_if_ipv4_set_gw(netif, &gw_addr); + LOG_INF("Static IP configured"); + return true; +} \ No newline at end of file diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index ebf850678..20ce45247 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -52,6 +52,7 @@ class NetworkInterface { IPAddress dnsIP(int n = 0); void setMACAddress(const uint8_t* mac); + bool setLocalIP(IPAddress ip, IPAddress subnet, IPAddress gateway); int begin(bool blocking = true, uint32_t additional_event_mask = 0); From b33e1e29097918306ed9c64b566ab9207569f19f Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Mon, 4 Aug 2025 17:19:37 +0200 Subject: [PATCH 063/117] Ethernet lib: add set IP, Subnet, Gateway functions --- libraries/SocketWrapper/Ethernet.cpp | 34 ++++++++++++++++- libraries/SocketWrapper/Ethernet.h | 2 + libraries/SocketWrapper/SocketHelpers.cpp | 45 ++++++++++++++++++++--- libraries/SocketWrapper/SocketHelpers.h | 12 +++--- 4 files changed, 80 insertions(+), 13 deletions(-) diff --git a/libraries/SocketWrapper/Ethernet.cpp b/libraries/SocketWrapper/Ethernet.cpp index 877468c08..551f9a24a 100644 --- a/libraries/SocketWrapper/Ethernet.cpp +++ b/libraries/SocketWrapper/Ethernet.cpp @@ -32,7 +32,7 @@ int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress ga int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout, unsigned long responseTimeout) { setMACAddress(mac); - if (!NetworkInterface::setLocalIP(ip, subnet, gateway)) { + if (!NetworkInterface::setLocalIPFull(ip, subnet, gateway)) { return 0; } @@ -72,9 +72,41 @@ void EthernetClass::setMACAddress(const uint8_t *mac_address) { } } +void EthernetClass::MACAddress(uint8_t *mac_address) { + setMACAddress(mac_address); +} + IPAddress EthernetClass::localIP() { return NetworkInterface::localIP(); } +IPAddress EthernetClass::subnetMask() { + return NetworkInterface::subnetMask(); +} + +IPAddress EthernetClass::gatewayIP() { + return NetworkInterface::gatewayIP(); +} + +IPAddress EthernetClass::dnsServerIP() { + return NetworkInterface::dnsServerIP(); +} + +void EthernetClass::setLocalIP(const IPAddress local_ip) { + NetworkInterface::setLocalIP(local_ip); +} + +void EthernetClass::setSubnetMask(const IPAddress subnet) { + NetworkInterface::setSubnetMask(subnet); +} + +void EthernetClass::setGatewayIP(const IPAddress gateway) { + NetworkInterface::setGatewayIP(gateway); +} + +void EthernetClass::setDnsServerIP(const IPAddress dns_server) { + NetworkInterface::setDnsServerIP(dns_server); +} + EthernetClass Ethernet; #endif diff --git a/libraries/SocketWrapper/Ethernet.h b/libraries/SocketWrapper/Ethernet.h index 99f81c610..e56579586 100644 --- a/libraries/SocketWrapper/Ethernet.h +++ b/libraries/SocketWrapper/Ethernet.h @@ -31,6 +31,7 @@ class EthernetClass: public NetworkInterface int begin(uint8_t *mac, IPAddress ip, IPAddress dns); int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway); int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + void init(uint8_t sspin = 10); void MACAddress(uint8_t *mac_address); @@ -44,6 +45,7 @@ class EthernetClass: public NetworkInterface void setSubnetMask(const IPAddress subnet); void setGatewayIP(const IPAddress gateway); void setDnsServerIP(const IPAddress dns_server); + void setRetransmissionTimeout(uint16_t milliseconds); void setRetransmissionCount(uint8_t num); }; diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index f877781c5..b70261993 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -119,10 +119,6 @@ IPAddress NetworkInterface::dnsServerIP() { return arduino::INADDR_NONE; } -IPAddress NetworkInterface::dnsIP(int n) { - //TODO -} - void NetworkInterface::setMACAddress(const uint8_t* mac) { struct net_eth_addr new_mac; struct ethernet_req_params params = { 0 }; @@ -153,7 +149,7 @@ bool NetworkInterface::disconnect() { return (net_if_down(netif) == 0); } -bool NetworkInterface::setLocalIP(IPAddress ip, IPAddress subnet, IPAddress gateway) { +bool NetworkInterface::setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway) { struct in_addr ip_addr, subnet_addr, gw_addr; ip_addr.s_addr = ip; @@ -173,4 +169,43 @@ bool NetworkInterface::setLocalIP(IPAddress ip, IPAddress subnet, IPAddress gate net_if_ipv4_set_gw(netif, &gw_addr); LOG_INF("Static IP configured"); return true; +} + +bool NetworkInterface::setLocalIP(IPAddress ip) { + struct in_addr addr; + addr.s_addr = ip; + + if (!net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0)) { + LOG_ERR("Failed to set local IP address"); + return false; + } + + LOG_INF("Local IP address set: %s", ip.toString().c_str()); + return true; +} + +bool NetworkInterface::setSubnetMask(IPAddress subnet) { + struct in_addr netmask_addr; + netmask_addr.s_addr = subnet; + + if (!net_if_ipv4_set_netmask_by_addr(netif, &netmask_addr, &netmask_addr)) { + LOG_ERR("Failed to set subnet mask"); + return false; + } + + LOG_INF("Subnet mask set: %s", subnet.toString().c_str()); + return true; +} + +bool NetworkInterface::setGatewayIP(IPAddress gateway) { + struct in_addr gw_addr; + gw_addr.s_addr = gateway; + + net_if_ipv4_set_gw(netif, &gw_addr); + LOG_INF("Gateway IP set: %s", gateway.toString().c_str()); + return true; +} + +bool NetworkInterface::setDnsServerIP(IPAddress dns_server) { + return false; // DNS server dynamic configuration is not supported } \ No newline at end of file diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index 20ce45247..b407c0772 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -49,16 +49,14 @@ class NetworkInterface { IPAddress gatewayIP(); IPAddress dnsServerIP(); - IPAddress dnsIP(int n = 0); - void setMACAddress(const uint8_t* mac); - bool setLocalIP(IPAddress ip, IPAddress subnet, IPAddress gateway); + bool setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway); + bool setLocalIP(IPAddress ip); + bool setSubnetMask(IPAddress subnet); + bool setGatewayIP(IPAddress gateway); + bool setDnsServerIP(IPAddress dns_server); int begin(bool blocking = true, uint32_t additional_event_mask = 0); bool disconnect(); - - // TODO: manual functions for setting IP address, subnet mask, gateway, etc. - // net_if_ipv4_set_netmask_by_addr(iface, &addr4, &nm); - // net_if_ipv4_addr_add(iface, &addr4, NET_ADDR_MANUAL, 0); }; From c7803805e7062b7e9ec5c231b6f7c1eefa3394ac Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Mon, 4 Aug 2025 17:25:19 +0200 Subject: [PATCH 064/117] Ethernet lib: add disconnect fun --- libraries/SocketWrapper/Ethernet.cpp | 8 ++++++++ libraries/SocketWrapper/Ethernet.h | 15 +++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/libraries/SocketWrapper/Ethernet.cpp b/libraries/SocketWrapper/Ethernet.cpp index 551f9a24a..8618b4b14 100644 --- a/libraries/SocketWrapper/Ethernet.cpp +++ b/libraries/SocketWrapper/Ethernet.cpp @@ -66,6 +66,14 @@ EthernetHardwareStatus EthernetClass::hardwareStatus() { } } +int EthernetClass::disconnect() { + return NetworkInterface::disconnect(); +} + +void EthernetClass::end() { + disconnect(); +} + void EthernetClass::setMACAddress(const uint8_t *mac_address) { if (mac_address != nullptr) { NetworkInterface::setMACAddress(mac_address); diff --git a/libraries/SocketWrapper/Ethernet.h b/libraries/SocketWrapper/Ethernet.h index e56579586..da0ffc96c 100644 --- a/libraries/SocketWrapper/Ethernet.h +++ b/libraries/SocketWrapper/Ethernet.h @@ -21,20 +21,23 @@ class EthernetClass: public NetworkInterface EthernetClass() {} virtual ~EthernetClass() {} - int begin(uint8_t *mac = nullptr, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + int begin(uint8_t *mac = nullptr, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); int maintain(); EthernetLinkStatus linkStatus(); EthernetHardwareStatus hardwareStatus(); - // Manual configuration + // Manual configuration int begin(uint8_t *mac, IPAddress ip); int begin(uint8_t *mac, IPAddress ip, IPAddress dns); int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway); - int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); - + int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + void init(uint8_t sspin = 10); - void MACAddress(uint8_t *mac_address); + int disconnect(void); + void end(void); + + void MACAddress(uint8_t *mac_address); IPAddress localIP(); IPAddress subnetMask(); IPAddress gatewayIP(); @@ -45,7 +48,7 @@ class EthernetClass: public NetworkInterface void setSubnetMask(const IPAddress subnet); void setGatewayIP(const IPAddress gateway); void setDnsServerIP(const IPAddress dns_server); - + void setRetransmissionTimeout(uint16_t milliseconds); void setRetransmissionCount(uint8_t num); }; From f6a58f2d1f124d4d3acb684c78d5bf66692aa1f3 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Tue, 5 Aug 2025 13:27:31 +0200 Subject: [PATCH 065/117] Ethernet lib: extract Ethernet lib from SocketWrapper lib --- libraries/Ethernet/README.md | 11 ++++ .../examples/TestClient/TestClient.ino | 0 .../examples/TestServer/TestServer.ino | 0 libraries/Ethernet/keywords.txt | 64 +++++++++++++++++++ libraries/Ethernet/library.properties | 10 +++ .../src}/Ethernet.cpp | 0 .../src}/Ethernet.h | 0 libraries/Ethernet/src/ZephyrEthernet.h | 3 + libraries/Ethernet/src/Zephyr_Ethernet.h | 1 + 9 files changed, 89 insertions(+) create mode 100644 libraries/Ethernet/README.md rename libraries/{SocketWrapper => Ethernet}/examples/TestClient/TestClient.ino (100%) rename libraries/{SocketWrapper => Ethernet}/examples/TestServer/TestServer.ino (100%) create mode 100644 libraries/Ethernet/keywords.txt create mode 100644 libraries/Ethernet/library.properties rename libraries/{SocketWrapper => Ethernet/src}/Ethernet.cpp (100%) rename libraries/{SocketWrapper => Ethernet/src}/Ethernet.h (100%) create mode 100644 libraries/Ethernet/src/ZephyrEthernet.h create mode 100644 libraries/Ethernet/src/Zephyr_Ethernet.h diff --git a/libraries/Ethernet/README.md b/libraries/Ethernet/README.md new file mode 100644 index 000000000..872a66373 --- /dev/null +++ b/libraries/Ethernet/README.md @@ -0,0 +1,11 @@ +# Ethernet Library for Arduino + +Provides Ethernet connectivity for Arduino boards using the Arduino Zephyr core, together with a shield or carrier featuring an Ethernet connector. + +📖 For more information about this library please read the documentation [here](http://www.arduino.cc/en/Reference/Ethernet). + +## License + +Copyright (c) 2025 Arduino SA. All rights reserved. + +This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. \ No newline at end of file diff --git a/libraries/SocketWrapper/examples/TestClient/TestClient.ino b/libraries/Ethernet/examples/TestClient/TestClient.ino similarity index 100% rename from libraries/SocketWrapper/examples/TestClient/TestClient.ino rename to libraries/Ethernet/examples/TestClient/TestClient.ino diff --git a/libraries/SocketWrapper/examples/TestServer/TestServer.ino b/libraries/Ethernet/examples/TestServer/TestServer.ino similarity index 100% rename from libraries/SocketWrapper/examples/TestServer/TestServer.ino rename to libraries/Ethernet/examples/TestServer/TestServer.ino diff --git a/libraries/Ethernet/keywords.txt b/libraries/Ethernet/keywords.txt new file mode 100644 index 000000000..3c4ed937a --- /dev/null +++ b/libraries/Ethernet/keywords.txt @@ -0,0 +1,64 @@ +####################################### +# Syntax Coloring Map For Ethernet +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +Ethernet KEYWORD1 Ethernet +EthernetClient KEYWORD1 EthernetClient +EthernetServer KEYWORD1 EthernetServer +IPAddress KEYWORD1 EthernetIPAddress + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +status KEYWORD2 +connect KEYWORD2 +write KEYWORD2 +available KEYWORD2 +availableForWrite KEYWORD2 +read KEYWORD2 +peek KEYWORD2 +flush KEYWORD2 +stop KEYWORD2 +connected KEYWORD2 +accept KEYWORD2 +begin KEYWORD2 +beginMulticast KEYWORD2 +beginPacket KEYWORD2 +endPacket KEYWORD2 +parsePacket KEYWORD2 +remoteIP KEYWORD2 +remotePort KEYWORD2 +getSocketNumber KEYWORD2 +localIP KEYWORD2 +localPort KEYWORD2 +maintain KEYWORD2 +linkStatus KEYWORD2 +hardwareStatus KEYWORD2 +MACAddress KEYWORD2 +subnetMask KEYWORD2 +gatewayIP KEYWORD2 +dnsServerIP KEYWORD2 +setMACAddress KEYWORD2 +setLocalIP KEYWORD2 +setSubnetMask KEYWORD2 +setGatewayIP KEYWORD2 +setDnsServerIP KEYWORD2 +setRetransmissionTimeout KEYWORD2 +setRetransmissionCount KEYWORD2 +setConnectionTimeout KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + +EthernetLinkStatus LITERAL1 +Unknown LITERAL1 +LinkON LITERAL1 +LinkOFF LITERAL1 +EthernetHardwareStatus LITERAL1 +EthernetNoHardware LITERAL1 \ No newline at end of file diff --git a/libraries/Ethernet/library.properties b/libraries/Ethernet/library.properties new file mode 100644 index 000000000..cae314d2a --- /dev/null +++ b/libraries/Ethernet/library.properties @@ -0,0 +1,10 @@ +name=Ethernet +version=0.1.0 +author=Arduino +maintainer=Arduino +sentence=Enables network connection (local and Internet) using Ethernet on Zephyr enabled boards +paragraph=With this library you can connect to Internet via Ethernet. The library provides both Client and server functionalities. The library permits you to connect to a local network also with DHCP and to resolve DNS. +category=Communication +url=http://www.arduino.cc/en/Reference/Ethernet +architectures=zephyr,zephyr_portenta,zephyr_nicla,zephyr_giga +includes=Ethernet.h diff --git a/libraries/SocketWrapper/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp similarity index 100% rename from libraries/SocketWrapper/Ethernet.cpp rename to libraries/Ethernet/src/Ethernet.cpp diff --git a/libraries/SocketWrapper/Ethernet.h b/libraries/Ethernet/src/Ethernet.h similarity index 100% rename from libraries/SocketWrapper/Ethernet.h rename to libraries/Ethernet/src/Ethernet.h diff --git a/libraries/Ethernet/src/ZephyrEthernet.h b/libraries/Ethernet/src/ZephyrEthernet.h new file mode 100644 index 000000000..f1349895f --- /dev/null +++ b/libraries/Ethernet/src/ZephyrEthernet.h @@ -0,0 +1,3 @@ +#pragma once + +#include "Ethernet.h" \ No newline at end of file diff --git a/libraries/Ethernet/src/Zephyr_Ethernet.h b/libraries/Ethernet/src/Zephyr_Ethernet.h new file mode 100644 index 000000000..6761ba5ed --- /dev/null +++ b/libraries/Ethernet/src/Zephyr_Ethernet.h @@ -0,0 +1 @@ +// placeholder to allow the discovery of this library \ No newline at end of file From b9941eee8ad52608bcbba7f7bfa460a0a39982f3 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Tue, 5 Aug 2025 17:09:41 +0200 Subject: [PATCH 066/117] Ethernet lib: add default examples --- .../AdvancedChatServer/AdvancedChatServer.ino | 97 ++++ .../BarometricPressureWebServer.ino | 231 +++++++++ .../DhcpAddressPrinter/DhcpAddressPrinter.ino | 87 ++++ .../examples/LinkStatus/LinkStatus.ino | 28 + .../examples/TelnetClient/TelnetClient.ino | 94 ++++ .../examples/TestClient/TestClient.ino | 31 -- .../UDPSendReceiveString.ino | 129 +++++ .../examples/UdpNtpClient/UdpNtpClient.ino | 175 +++++++ .../Ethernet/examples/WebClient/WebClient.ino | 129 +++++ .../WebClientRepeating/WebClientRepeating.ino | 114 ++++ .../WebClientRepeatingManual.ino | 142 +++++ .../WebClientRepeatingSSL.ino | 110 ++++ .../WebServer.ino} | 64 ++- libraries/Ethernet/src/Ethernet.h | 12 + libraries/SocketWrapper/SocketWrapper.h | 486 +++++++++--------- libraries/SocketWrapper/ZephyrClient.h | 143 +++--- libraries/SocketWrapper/ZephyrUDP.h | 2 + loader/llext_exports.c | 2 + 18 files changed, 1723 insertions(+), 353 deletions(-) create mode 100644 libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino create mode 100644 libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino create mode 100644 libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino create mode 100644 libraries/Ethernet/examples/LinkStatus/LinkStatus.ino create mode 100644 libraries/Ethernet/examples/TelnetClient/TelnetClient.ino delete mode 100755 libraries/Ethernet/examples/TestClient/TestClient.ino create mode 100644 libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino create mode 100644 libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino create mode 100644 libraries/Ethernet/examples/WebClient/WebClient.ino create mode 100644 libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino create mode 100644 libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino create mode 100644 libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino rename libraries/Ethernet/examples/{TestServer/TestServer.ino => WebServer/WebServer.ino} (57%) diff --git a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino new file mode 100644 index 000000000..5e70d16c1 --- /dev/null +++ b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino @@ -0,0 +1,97 @@ +/* + Advanced Chat Server + + A more advanced server that distributes any incoming messages + to all connected clients but the client the message comes from. + To use, telnet to your device's IP address and type. + + */ + +#include "ZephyrServer.h" +#include "ZephyrClient.h" +#include "ZephyrEthernet.h" + +// The IP address will be dependent on your local network. +// gateway and subnet are optional: +IPAddress ip(192, 168, 1, 177); +IPAddress myDns(192, 168, 1, 1); +IPAddress gateway(192, 168, 1, 1); +IPAddress subnet(255, 255, 255, 0); + + +// telnet defaults to port 23 +ZephyrServer server(23); + +ZephyrClient clients[8]; + +void setup() { + + // initialize the Ethernet device + Ethernet.begin(ip, myDns, gateway, subnet); + + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + + // start listening for clients + server.begin(); + + Serial.print("Chat server address:"); + Serial.println(Ethernet.localIP()); +} + +void loop() { + // check for any new client connecting, and say hello (before any incoming data) + ZephyrClient newClient = server.accept(); + if (newClient) { + for (byte i=0; i < 8; i++) { + if (!clients[i]) { + Serial.print("We have a new client #"); + Serial.println(i); + newClient.print("Hello, client number: "); + newClient.println(i); + // Once we "accept", the client is no longer tracked by EthernetServer + // so we must store it into our list of clients + clients[i] = newClient; + break; + } + } + } + + // check for incoming data from all clients + for (byte i=0; i < 8; i++) { + if (clients[i] && clients[i].available() > 0) { + // read bytes from a client + byte buffer[80]; + int count = clients[i].read(buffer, 80); + // write the bytes to all other connected clients + for (byte j=0; j < 8; j++) { + if (j != i && clients[j].connected()) { + clients[j].write(buffer, count); + } + } + } + } + + // stop any clients which disconnect + for (byte i=0; i < 8; i++) { + if (clients[i] && !clients[i].connected()) { + Serial.print("disconnect client #"); + Serial.println(i); + clients[i].stop(); + } + } +} diff --git a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino new file mode 100644 index 000000000..c7d789381 --- /dev/null +++ b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino @@ -0,0 +1,231 @@ +/* + SCP1000 Barometric Pressure Sensor Display + + Serves the output of a Barometric Pressure Sensor as a web page. + Uses the SPI library. For details on the sensor, see: + http://www.sparkfun.com/commerce/product_info.php?products_id=8161 + + This sketch adapted from Nathan Seidle's SCP1000 example for PIC: + http://www.sparkfun.com/datasheets/Sensors/SCP1000-Testing.zip + + TODO: this hardware is long obsolete. This example program should + be rewritten to use https://www.sparkfun.com/products/9721 + + Circuit: + SCP1000 sensor attached to pins 6,7, and 11 - 13: + DRDY: pin 6 + CSB: pin 7 + MOSI: pin 11 + MISO: pin 12 + SCK: pin 13 + + */ + +#include "ZephyrServer.h" +#include "ZephyrEthernet.h" +// the sensor communicates using SPI, so include the library: +#include + +// assign an IP address for the controller: +IPAddress ip(192, 168, 1, 20); + +// Initialize the Ethernet server library +// with the IP address and port you want to use +// (port 80 is default for HTTP): +ZephyrServer server(80); + +//Sensor's memory register addresses: +const int PRESSURE = 0x1F; //3 most significant bits of pressure +const int PRESSURE_LSB = 0x20; //16 least significant bits of pressure +const int TEMPERATURE = 0x21; //16 bit temperature reading + +// pins used for the connection with the sensor +// the others you need are controlled by the SPI library): +const int dataReadyPin = 6; +const int chipSelectPin = 7; + +float temperature = 0.0; +long pressure = 0; +long lastReadingTime = 0; + +void setup() { + + // start the SPI library: + SPI.begin(); + + // start the Ethernet connection + Ethernet.begin(ip); + + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + + // start listening for clients + server.begin(); + + // initalize the data ready and chip select pins: + pinMode(dataReadyPin, INPUT); + pinMode(chipSelectPin, OUTPUT); + + //Configure SCP1000 for low noise configuration: + writeRegister(0x02, 0x2D); + writeRegister(0x01, 0x03); + writeRegister(0x03, 0x02); + + // give the sensor and Ethernet shield time to set up: + delay(1000); + + //Set the sensor to high resolution mode tp start readings: + writeRegister(0x03, 0x0A); + +} + +void loop() { + // check for a reading no more than once a second. + if (millis() - lastReadingTime > 1000) { + // if there's a reading ready, read it: + // don't do anything until the data ready pin is high: + if (digitalRead(dataReadyPin) == HIGH) { + getData(); + // timestamp the last time you got a reading: + lastReadingTime = millis(); + } + } + + // listen for incoming Ethernet connections: + listenForEthernetClients(); +} + + +void getData() { + Serial.println("Getting reading"); + //Read the temperature data + int tempData = readRegister(0x21, 2); + + // convert the temperature to celsius and display it: + temperature = (float)tempData / 20.0; + + //Read the pressure data highest 3 bits: + byte pressureDataHigh = readRegister(0x1F, 1); + pressureDataHigh &= 0b00000111; //you only needs bits 2 to 0 + + //Read the pressure data lower 16 bits: + unsigned int pressureDataLow = readRegister(0x20, 2); + //combine the two parts into one 19-bit number: + pressure = ((pressureDataHigh << 16) | pressureDataLow) / 4; + + Serial.print("Temperature: "); + Serial.print(temperature); + Serial.println(" degrees C"); + Serial.print("Pressure: " + String(pressure)); + Serial.println(" Pa"); +} + +void listenForEthernetClients() { + // listen for incoming clients + ZephyrClient client = server.accept(); + if (client) { + Serial.println("Got a client"); + // an http request ends with a blank line + boolean currentLineIsBlank = true; + while (client.connected()) { + if (client.available()) { + char c = client.read(); + // if you've gotten to the end of the line (received a newline + // character) and the line is blank, the http request has ended, + // so you can send a reply + if (c == '\n' && currentLineIsBlank) { + // send a standard http response header + client.println("HTTP/1.1 200 OK"); + client.println("Content-Type: text/html"); + client.println(); + // print the current readings, in HTML format: + client.print("Temperature: "); + client.print(temperature); + client.print(" degrees C"); + client.println("
"); + client.print("Pressure: " + String(pressure)); + client.print(" Pa"); + client.println("
"); + break; + } + if (c == '\n') { + // you're starting a new line + currentLineIsBlank = true; + } else if (c != '\r') { + // you've gotten a character on the current line + currentLineIsBlank = false; + } + } + } + // give the web browser time to receive the data + delay(1); + // close the connection: + client.stop(); + } +} + + +//Send a write command to SCP1000 +void writeRegister(byte registerName, byte registerValue) { + // SCP1000 expects the register name in the upper 6 bits + // of the byte: + registerName <<= 2; + // command (read or write) goes in the lower two bits: + registerName |= 0b00000010; //Write command + + // take the chip select low to select the device: + digitalWrite(chipSelectPin, LOW); + + SPI.transfer(registerName); //Send register location + SPI.transfer(registerValue); //Send value to record into register + + // take the chip select high to de-select: + digitalWrite(chipSelectPin, HIGH); +} + + +//Read register from the SCP1000: +unsigned int readRegister(byte registerName, int numBytes) { + byte inByte = 0; // incoming from the SPI read + unsigned int result = 0; // result to return + + // SCP1000 expects the register name in the upper 6 bits + // of the byte: + registerName <<= 2; + // command (read or write) goes in the lower two bits: + registerName &= 0b11111100; //Read command + + // take the chip select low to select the device: + digitalWrite(chipSelectPin, LOW); + // send the device the register you want to read: + int command = SPI.transfer(registerName); + // send a value of 0 to read the first byte returned: + inByte = SPI.transfer(0x00); + + result = inByte; + // if there's more than one byte returned, + // shift the first byte then get the second byte: + if (numBytes > 1) { + result = inByte << 8; + inByte = SPI.transfer(0x00); + result = result | inByte; + } + // take the chip select high to de-select: + digitalWrite(chipSelectPin, HIGH); + // return the result: + return (result); +} diff --git a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino new file mode 100644 index 000000000..53741f7e5 --- /dev/null +++ b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino @@ -0,0 +1,87 @@ +/* + DHCP-based IP printer + + This sketch uses the DHCP extensions to the Ethernet library + to get an IP address via DHCP and print the address obtained. + using an Arduino Wiznet Ethernet shield. + + */ + +#include "ZephyrEthernet.h" + +void setup() +{ + + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + } else if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + // no point in carrying on, so do nothing forevermore: + while (true) { + delay(1); + } + } + // print your local IP address: + Serial.print("My IP address: "); + Serial.println(Ethernet.localIP()); +} + +void loop() +{ + if (Ethernet.linkStatus() != LinkON) { + Serial.println(Ethernet.linkStatus()); + connectEth(); + } +} + +void connectEth() +{ + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } + + Serial.println("You're connected to the network"); + Serial.println(); +} diff --git a/libraries/Ethernet/examples/LinkStatus/LinkStatus.ino b/libraries/Ethernet/examples/LinkStatus/LinkStatus.ino new file mode 100644 index 000000000..a38e005d2 --- /dev/null +++ b/libraries/Ethernet/examples/LinkStatus/LinkStatus.ino @@ -0,0 +1,28 @@ +/* + Link Status + This sketch prints the ethernet link status. When the + ethernet cable is connected the link status should go to "ON". +*/ + +#include + +void setup() { + Serial.begin(9600); +} + +void loop() { + auto link = Ethernet.linkStatus(); + Serial.print("Link status: "); + switch (link) { + case Unknown: + Serial.println("Unknown"); + break; + case LinkON: + Serial.println("ON"); + break; + case LinkOFF: + Serial.println("OFF"); + break; + } + delay(1000); +} diff --git a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino new file mode 100644 index 000000000..92aad146a --- /dev/null +++ b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino @@ -0,0 +1,94 @@ +/* + Telnet client + + This sketch connects to a a telnet server (http://www.google.com) + using an Arduino Wiznet Ethernet shield. You'll need a telnet server + to test this with. + Processing's ChatServer example (part of the network library) works well, + running on port 10002. It can be found as part of the examples + in the Processing application, available at + http://processing.org/ + */ + +#include "ZephyrClient.h" +#include "ZephyrEthernet.h" + +// The IP address will be dependent on your local network: +IPAddress ip(192, 168, 1, 177); + +// Enter the IP address of the server you're connecting to: +IPAddress server(1, 1, 1, 1); + +// Initialize the Ethernet client library +// with the IP address and port of the server +// that you want to connect to (port 23 is default for telnet; +// if you're using Processing's ChatServer, use port 10002): +ZephyrClient client; + +void setup() { + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + while (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + delay(500); + } + + // start the Ethernet connection: + Ethernet.begin(ip); + + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // give the Ethernet shield a second to initialize: + delay(1000); + Serial.println("connecting..."); + + // if you get a connection, report back via serial: + if (client.connect(server, 10002)) { + Serial.println("connected"); + } else { + // if you didn't get a connection to the server: + Serial.println("connection failed"); + } +} + +void loop() { + // if there are incoming bytes available + // from the server, read them and print them: + if (client.available()) { + char c = client.read(); + Serial.print(c); + } + + // as long as there are bytes in the serial queue, + // read them and send them out the socket if it's open: + while (Serial.available() > 0) { + char inChar = Serial.read(); + if (client.connected()) { + client.print(inChar); + } + } + + // if the server's disconnected, stop the client: + if (!client.connected()) { + Serial.println(); + Serial.println("disconnecting."); + client.stop(); + // do nothing: + while (true) { + delay(1); + } + } +} + + + + diff --git a/libraries/Ethernet/examples/TestClient/TestClient.ino b/libraries/Ethernet/examples/TestClient/TestClient.ino deleted file mode 100755 index dc5b98c3d..000000000 --- a/libraries/Ethernet/examples/TestClient/TestClient.ino +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include "Ethernet.h" - -ZephyrClient client; -IPAddress addr(93, 184, 215, 14); - -void setup() { - - pinMode(LED_BUILTIN, OUTPUT); - Serial.begin(115200); - - while (Ethernet.linkStatus() != LinkON) { - Serial.println("waiting for link on"); - delay(100); - } - Ethernet.begin(); - Serial.println(Ethernet.localIP()); - - auto res = client.connect("example.com", 80); - res = client.println("GET / HTTP/1.0"); - client.println("Host: example.com"); - client.println("Connection: close"); - client.println(); -} - -// the loop function runs over and over again forever -void loop() { - while (client.available()) { - Serial.write(client.read()); - } -} diff --git a/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino b/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino new file mode 100644 index 000000000..c733e15b5 --- /dev/null +++ b/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino @@ -0,0 +1,129 @@ +/* + UDPSendReceiveString: + This sketch receives UDP message strings, prints them to the serial port + and sends an "acknowledge" string back to the sender + + A Processing sketch is included at the end of file that can be used to send + and received messages for testing with a computer. + */ + +#include +#include + +// The IP address will be dependent on your local network: +IPAddress ip(192, 168, 1, 177); + +unsigned int localPort = 8888; // local port to listen on + +// buffers for receiving and sending data +char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; // buffer to hold incoming packet, +char ReplyBuffer[] = "acknowledged"; // a string to send back + +// An EthernetUDP instance to let us send and receive packets over UDP +ZephyrUDP Udp; + +void setup() { + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start the Ethernet + Ethernet.begin(ip); + + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + + // start UDP + Udp.begin(localPort); +} + +void loop() { + // if there's data available, read a packet + int packetSize = Udp.parsePacket(); + if (packetSize) { + Serial.print("Received packet of size "); + Serial.println(packetSize); + Serial.print("From "); + IPAddress remote = Udp.remoteIP(); + for (int i=0; i < 4; i++) { + Serial.print(remote[i], DEC); + if (i < 3) { + Serial.print("."); + } + } + Serial.print(", port "); + Serial.println(Udp.remotePort()); + + // read the packet into packetBufffer + Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); + Serial.println("Contents:"); + Serial.println(packetBuffer); + + // send a reply to the IP address and port that sent us the packet we received + Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); + Udp.write(ReplyBuffer); + Udp.endPacket(); + } + delay(10); +} + + +/* + Processing sketch to run with this example + ===================================================== + + // Processing UDP example to send and receive string data from Arduino + // press any key to send the "Hello Arduino" message + + + import hypermedia.net.*; + + UDP udp; // define the UDP object + + + void setup() { + udp = new UDP( this, 6000 ); // create a new datagram connection on port 6000 + //udp.log( true ); // <-- printout the connection activity + udp.listen( true ); // and wait for incoming message + } + + void draw() + { + } + + void keyPressed() { + String ip = "192.168.1.177"; // the remote IP address + int port = 8888; // the destination port + + udp.send("Hello World", ip, port ); // the message to send + + } + + void receive( byte[] data ) { // <-- default handler + //void receive( byte[] data, String ip, int port ) { // <-- extended handler + + for(int i=0; i < data.length; i++) + print(char(data[i])); + println(); + } + */ + + diff --git a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino new file mode 100644 index 000000000..a8b9a3919 --- /dev/null +++ b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino @@ -0,0 +1,175 @@ +/* + + Udp NTP Client + + Get the time from a Network Time Protocol (NTP) time server + Demonstrates use of UDP sendPacket and ReceivePacket + For more on NTP time servers and the messages needed to communicate with them, + see http://en.wikipedia.org/wiki/Network_Time_Protocol + + */ + +#include +#include + +unsigned int localPort = 8888; // local port to listen for UDP packets + +const char timeServer[] = "time.nist.gov"; // time.nist.gov NTP server + +const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message + +byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets + +// A UDP instance to let us send and receive packets over UDP +ZephyrUDP Udp; + +void setup() { + + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start Ethernet and UDP + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + } else if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + // no point in carrying on, so do nothing forevermore: + while (true) { + delay(1); + } + } + Udp.begin(localPort); +} + +void loop() { + if (Ethernet.linkStatus() != LinkON) { + Serial.println(Ethernet.linkStatus()); + connectEth(); + } + sendNTPpacket(timeServer); // send an NTP packet to a time server + + // wait to see if a reply is available + delay(1000); + if (Udp.parsePacket()) { + // We've received a packet, read the data from it + Udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer + + // the timestamp starts at byte 40 of the received packet and is four bytes, + // or two words, long. First, extract the two words: + + unsigned long highWord = word(packetBuffer[40], packetBuffer[41]); + unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]); + // combine the four bytes (two words) into a long integer + // this is NTP time (seconds since Jan 1 1900): + unsigned long secsSince1900 = highWord << 16 | lowWord; + Serial.print("Seconds since Jan 1 1900 = "); + Serial.println(secsSince1900); + + // now convert NTP time into everyday time: + Serial.print("Unix time = "); + // Unix time starts on Jan 1 1970. In seconds, that's 2208988800: + const unsigned long seventyYears = 2208988800UL; + // subtract seventy years: + unsigned long epoch = secsSince1900 - seventyYears; + // print Unix time: + Serial.println(epoch); + + + // print the hour, minute and second: + Serial.print("The UTC time is "); // UTC is the time at Greenwich Meridian (GMT) + Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day) + Serial.print(':'); + if (((epoch % 3600) / 60) < 10) { + // In the first 10 minutes of each hour, we'll want a leading '0' + Serial.print('0'); + } + Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute) + Serial.print(':'); + if ((epoch % 60) < 10) { + // In the first 10 seconds of each minute, we'll want a leading '0' + Serial.print('0'); + } + Serial.println(epoch % 60); // print the second + } + // wait ten seconds before asking for the time again + delay(10000); +} + +// send an NTP request to the time server at the given address +void sendNTPpacket(const char * address) { + // set all bytes in the buffer to 0 + memset(packetBuffer, 0, NTP_PACKET_SIZE); + // Initialize values needed to form NTP request + // (see URL above for details on the packets) + packetBuffer[0] = 0b11100011; // LI, Version, Mode + packetBuffer[1] = 0; // Stratum, or type of clock + packetBuffer[2] = 6; // Polling Interval + packetBuffer[3] = 0xEC; // Peer Clock Precision + // 8 bytes of zero for Root Delay & Root Dispersion + packetBuffer[12] = 49; + packetBuffer[13] = 0x4E; + packetBuffer[14] = 49; + packetBuffer[15] = 52; + + // all NTP fields have been given values, now + // you can send a packet requesting a timestamp: + Udp.beginPacket(address, 123); // NTP requests are to port 123 + Udp.write(packetBuffer, NTP_PACKET_SIZE); + Udp.endPacket(); +} + +void connectEth() +{ + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin(nullptr) == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } + + Serial.println("You're connected to the network"); + Serial.println(); +} + + + + + + + + diff --git a/libraries/Ethernet/examples/WebClient/WebClient.ino b/libraries/Ethernet/examples/WebClient/WebClient.ino new file mode 100644 index 000000000..f5d85a4de --- /dev/null +++ b/libraries/Ethernet/examples/WebClient/WebClient.ino @@ -0,0 +1,129 @@ +/* + Web client + + This sketch connects to a website (http://www.google.com) + */ + +#include +#include "ZephyrEthernet.h" + +// Enter a MAC address for your controller below. +// Newer Ethernet shields have a MAC address printed on a sticker on the shield +// byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; + +// if you don't want to use DNS (and reduce your sketch size) +// use the numeric IP instead of the name for the server: +//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS) +char server[] = "www.google.com"; // name address for Google (using DNS) + +// Set the static IP address to use if the DHCP fails to assign +IPAddress ip(192, 168, 2, 177); +IPAddress myDns(192, 168, 2, 1); + +// Initialize the Ethernet client library +// with the IP address and port of the server +// that you want to connect to (port 80 is default for HTTP): +ZephyrClient client; + +// Variables to measure the speed +unsigned long beginMicros, endMicros; +unsigned long byteCount = 0; +bool printWebData = true; // set to false for better speed measurement + +void setup() +{ + + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + while (Ethernet.linkStatus() != LinkON) { + Serial.println("Waiting for link on"); + delay(100); + } + + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + // try to congifure using IP address instead of DHCP: + Ethernet.begin(ip, myDns); + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } + + // give the Ethernet shield a second to initialize: + delay(1000); + Serial.print("connecting to "); + Serial.print(server); + Serial.println("..."); + + // if you get a connection, report back via serial: + if (client.connect(server, 80)) { + Serial.print("connected to "); + Serial.println(client.remoteIP()); + // Make a HTTP request: + client.println("GET /search?q=arduino HTTP/1.1"); + client.println("Host: www.google.com"); + client.println("Connection: close"); + client.println(); + } else { + // if you didn't get a connection to the server: + Serial.println("connection failed"); + } + beginMicros = micros(); +} + +void loop() +{ + // if there are incoming bytes available + // from the server, read them and print them: + int len = client.available(); + if (len > 0) { + byte buffer[80]; + if (len > 80) + len = 80; + client.read(buffer, len); + if (printWebData) { + Serial.write(buffer, len); // show in the serial monitor (slows some boards) + } + byteCount = byteCount + len; + } + + // if the server's disconnected, stop the client: + if (!client.connected()) { + endMicros = micros(); + Serial.println(); + Serial.println("disconnecting."); + client.stop(); + Serial.print("Received "); + Serial.print(byteCount); + Serial.print(" bytes in "); + float seconds = (float)(endMicros - beginMicros) / 1000000.0; + Serial.print(seconds, 4); + float rate = (float)byteCount / seconds / 1000.0; + Serial.print(", rate = "); + Serial.print(rate); + Serial.print(" kbytes/second"); + Serial.println(); + + // do nothing forevermore: + while (true) { + delay(1); + } + } +} diff --git a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino new file mode 100644 index 000000000..8b37198f1 --- /dev/null +++ b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino @@ -0,0 +1,114 @@ +/* + Repeating Web client + + This sketch connects to a a web server and makes a request + using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or + the Adafruit Ethernet shield, either one will work, as long as it's got + a Wiznet Ethernet module on board. + + This example uses DNS, by assigning the Ethernet client with a MAC address, + IP address, and DNS address. + + */ + +#include +#include "ZephyrEthernet.h" + +// Set the static IP address to use if the DHCP fails to assign +IPAddress ip(192, 168, 0, 177); +IPAddress myDns(192, 168, 0, 1); + +// initialize the library instance: +ZephyrClient client; + +char server[] = "www.arduino.cc"; // also change the Host line in httpRequest() +//IPAddress server(64,131,82,241); + +unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds +const unsigned long postingInterval = 10*1000; // delay between updates, in milliseconds + +void setup() { + // start serial port: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + // try to congifure using IP address instead of DHCP: + Ethernet.begin(ip, myDns); + Serial.print("My IP address: "); + Serial.println(Ethernet.localIP()); + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } + // give the Ethernet shield a second to initialize: + delay(1000); +} + +void loop() { + // if there's incoming data from the net connection. + // send it out the serial port. This is for debugging + // purposes only: + if (client.available()) { + char c = client.read(); + Serial.write(c); + } + + // if ten seconds have passed since your last connection, + // then connect again and send data: + if (millis() - lastConnectionTime > postingInterval) { + httpRequest(); + } + +} + +// this method makes a HTTP connection to the server: +void httpRequest() { + // close any connection before send a new request. + // This will free the socket on the WiFi shield + client.stop(); + + // if there's a successful connection: + if (client.connect(server, 80)) { + Serial.println("connecting..."); + // send the HTTP GET request: + client.println("GET /latest.txt HTTP/1.1"); + client.println("Host: www.arduino.cc"); + client.println("User-Agent: arduino-ethernet"); + client.println("Connection: close"); + client.println(); + + // note the time that the connection was made: + lastConnectionTime = millis(); + } else { + // if you couldn't make a connection: + Serial.println("connection failed"); + } +} + + + + diff --git a/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino b/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino new file mode 100644 index 000000000..ce1d728dc --- /dev/null +++ b/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino @@ -0,0 +1,142 @@ +/* + Repeating Web client + + This sketch connects to a a web server and makes a request + using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or + the Adafruit Ethernet shield, either one will work, as long as it's got + a Wiznet Ethernet module on board. + + This example uses DNS, by assigning the Ethernet client with a MAC address, + IP address, and DNS address. + */ + +#include +#include "ZephyrEthernet.h" + +// The IP address will be dependent on your local network. +// DNS, gateway and subnet are optional: +IPAddress ip(192, 168, 1, 177); +IPAddress myDns(192, 168, 1, 1); +IPAddress gateway(192, 168, 1, 1); +IPAddress subnet(255, 255, 0, 0); + +// initialize the library instance: +ZephyrClient client; + +char server[] = "www.arduino.cc"; // also change the Host line in httpRequest() +//IPAddress server(64,131,82,241); + +unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds +const unsigned long postingInterval = 10 * 1000; // delay between updates, in milliseconds + +void setup() +{ + // start serial port: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + delay(2500); + + // start the Ethernet connection: + Serial.println("Initialize Ethernet with Static IP Address:"); + if (Ethernet.begin(ip, myDns, gateway, subnet) == 0) { + Serial.println("Failed to configure Ethernet with Static IP Address"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + } + + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + // try to congifure using IP address instead of DHCP: + Serial.print("My IP address: "); + Serial.println(Ethernet.localIP()); + Serial.print("My Gateway IP address: "); + Serial.println(Ethernet.gatewayIP()); + Serial.print("My DNS Server IP address: "); + Serial.println(Ethernet.dnsServerIP()); + // give the Ethernet shield a second to initialize: + delay(2500); +} + +void loop() +{ + // if there's incoming data from the net connection. + // send it out the serial port. This is for debugging + // purposes only: + if (client.available()) { + char c = client.read(); + Serial.write(c); + } + + // if ten seconds have passed since your last connection, + // then connect again and send data: + if (millis() - lastConnectionTime > postingInterval) { + httpRequest(); + } +} + +// this method makes a HTTP connection to the server: +void httpRequest() +{ + // close any connection before send a new request. + // This will free the socket on the WiFi shield + client.stop(); + + // if there's a successful connection: + if (client.connect(server, 80)) { + Serial.println("connecting..."); + // send the HTTP GET request: + client.println("GET /latest.txt HTTP/1.1"); + client.println("Host: www.arduino.cc"); + client.println("User-Agent: arduino-ethernet"); + client.println("Connection: close"); + client.println(); + + // note the time that the connection was made: + lastConnectionTime = millis(); + } else { + // if you couldn't make a connection: + Serial.println("connection failed"); + } +} + +void connectEth() +{ + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin(nullptr) == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } + + Serial.println("You're connected to the network"); + Serial.println(); +} diff --git a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino new file mode 100644 index 000000000..748f63c12 --- /dev/null +++ b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino @@ -0,0 +1,110 @@ +/* + Repeating TLS/SSL Ethernet Web client. + + Remeber to update the CA certificates using WiFiFirmwareUpdater sketch + before using this sketch. + + */ + +#include +#include "ZephyrEthernet.h" + +// initialize the library instance: +ZephyrSSLClient client; + +char server[] = "www.arduino.cc"; +int port = 443; +// IPAddress server(64,131,82,241); + +// Set the static IP address to use if the DHCP fails to assign +IPAddress ip(192, 168, 0, 177); +IPAddress myDns(192, 168, 0, 1); + +unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds +const unsigned long postingInterval = 10 * 1000; // delay between updates, in milliseconds + +void setup() +{ + // start serial port: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + // try to congifure using IP address instead of DHCP: + Ethernet.begin(ip, myDns); + Serial.print("My IP address: "); + Serial.println(Ethernet.localIP()); + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } + // give the Ethernet shield a second to initialize: + delay(1000); +} + +void loop() +{ + // if there's incoming data from the net connection. + // send it out the serial port. This is for debugging + // purposes only: + if (client.available()) { + char c = client.read(); + Serial.write(c); + } + + // if ten seconds have passed since your last connection, + // then connect again and send data: + if (millis() - lastConnectionTime > postingInterval) { + httpRequest(); + } +} + +// this method makes a HTTP connection to the server: +void httpRequest() +{ + // close any connection before send a new request. + // This will free the socket on the WiFi shield + client.stop(); + + // if there's a successful connection: + if (client.connect(server, port)) { + Serial.println("connecting..."); + // send the HTTP GET request: + client.println("GET /latest.txt HTTP/1.1"); + client.print("Host: "); + client.println(server); + client.println("User-Agent: arduino-ethernet"); + client.println("Accept: *"); + client.println("Connection: close"); + client.println(); + + // note the time that the connection was made: + lastConnectionTime = millis(); + } else { + // if you couldn't make a connection: + Serial.println("connection failed"); + } +} diff --git a/libraries/Ethernet/examples/TestServer/TestServer.ino b/libraries/Ethernet/examples/WebServer/WebServer.ino similarity index 57% rename from libraries/Ethernet/examples/TestServer/TestServer.ino rename to libraries/Ethernet/examples/WebServer/WebServer.ino index b74e6ce31..6dd3a2877 100644 --- a/libraries/Ethernet/examples/TestServer/TestServer.ino +++ b/libraries/Ethernet/examples/WebServer/WebServer.ino @@ -1,27 +1,66 @@ +/* + Web Server + + A simple web server that shows the value of the analog input pins. + using an Arduino Wiznet Ethernet shield. + + */ + #include "ZephyrServer.h" -#include "Ethernet.h" +#include "ZephyrClient.h" +#include "ZephyrEthernet.h" + +// The IP address will be dependent on your local network: +IPAddress ip(192, 168, 2, 177); +// Initialize the Ethernet server library +// with the IP address and port you want to use +// (port 80 is default for HTTP): ZephyrServer server(80); void setup() { - Serial.begin(115200); + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + Serial.println("Ethernet WebServer Example"); + + // in Zephyr system check if Ethernet is ready before proceeding to initialize while (Ethernet.linkStatus() != LinkON) { - Serial.println("waiting for link on"); + Serial.println("Waiting for link on"); delay(100); } - Ethernet.begin(); - Serial.println(Ethernet.localIP()); + + // start the Ethernet connection and the server: + Ethernet.begin(ip); + + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + + // start the server server.begin(); + Serial.print("server is at "); + Serial.println(Ethernet.localIP()); } -void loop() { - ZephyrClient client = server.available(); +void loop() { + // listen for incoming clients + ZephyrClient client = server.accept(); if (client) { Serial.println("new client"); // an http request ends with a blank line - bool currentLineIsBlank = true; + boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); @@ -40,7 +79,7 @@ void loop() { client.println(""); // output the value of each analog input pin for (int analogChannel = 0; analogChannel < 6; analogChannel++) { - int sensorReading = random(analogChannel, 100); + int sensorReading = analogRead(analogChannel); client.print("analog input "); client.print(analogChannel); client.print(" is "); @@ -50,11 +89,9 @@ void loop() { client.println(""); break; } - if (c == '\n') { // you're starting a new line currentLineIsBlank = true; - } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; @@ -66,7 +103,6 @@ void loop() { // close the connection: client.stop(); Serial.println("client disconnected"); - } else { - delay(100); } -} \ No newline at end of file +} + diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index da0ffc96c..09d29de11 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -32,6 +32,18 @@ class EthernetClass: public NetworkInterface int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway); int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + int begin(IPAddress ip) { + return begin(nullptr, ip); + } + int begin(IPAddress ip, IPAddress dns) { + return begin(nullptr, ip, dns); + } + int begin(IPAddress ip, IPAddress dns, IPAddress gateway) { + return begin(nullptr, ip, dns, gateway); + } + int begin(IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) { + return begin(nullptr, ip, dns, gateway, subnet); + } void init(uint8_t sspin = 10); int disconnect(void); diff --git a/libraries/SocketWrapper/SocketWrapper.h b/libraries/SocketWrapper/SocketWrapper.h index 6165d5aca..ce58ec8d9 100644 --- a/libraries/SocketWrapper/SocketWrapper.h +++ b/libraries/SocketWrapper/SocketWrapper.h @@ -10,262 +10,282 @@ class ZephyrSocketWrapper { protected: - int sock_fd; - bool is_ssl = false; - int ssl_sock_temp_char = -1; + int sock_fd; + bool is_ssl = false; + int ssl_sock_temp_char = -1; public: - ZephyrSocketWrapper() : sock_fd(-1) { - } + ZephyrSocketWrapper() : sock_fd(-1) {} + ZephyrSocketWrapper(int sock_fd) : sock_fd(sock_fd) {} - ZephyrSocketWrapper(int sock_fd) : sock_fd(sock_fd) { - } + ~ZephyrSocketWrapper() { + if (sock_fd != -1) { + ::close(sock_fd); + } + } - ~ZephyrSocketWrapper() { - if (sock_fd != -1) { - ::close(sock_fd); - } - } + bool connect(const char* host, uint16_t port) { - bool connect(const char *host, uint16_t port) { + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + bool rv = true; - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - bool rv = true; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; + int resolve_attempts = 100; + int ret; - int resolve_attempts = 100; - int ret; + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } + if (ret != 0) { + rv = false; + goto exit; + } - if (ret != 0) { - rv = false; - goto exit; - } + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + rv = false; - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - rv = false; + goto exit; + } - goto exit; - } + if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { + ::close(sock_fd); + sock_fd = -1; + rv = false; + goto exit; + } - if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { - ::close(sock_fd); - sock_fd = -1; - rv = false; - goto exit; - } + exit: + if(res != nullptr) { + freeaddrinfo(res); + res = nullptr; + } - exit: - if (res != nullptr) { - freeaddrinfo(res); - res = nullptr; - } + return rv; + } - return rv; - } + bool connect(IPAddress host, uint16_t port) { - bool connect(IPAddress host, uint16_t port) { + const char* _host = host.toString().c_str(); - const char *_host = host.toString().c_str(); + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + inet_pton(AF_INET, _host, &addr.sin_addr); - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - inet_pton(AF_INET, _host, &addr.sin_addr); + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + return false; + } - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - return false; - } + if (::connect(sock_fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } - if (::connect(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } - - return true; - } + return true; + } #if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) - bool connectSSL(const char *host, uint16_t port, char *ca_certificate_pem = nullptr) { - - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; - - int resolve_attempts = 100; - int ret; - bool rv = true; - - sec_tag_t sec_tag_opt[] = { - CA_CERTIFICATE_TAG, - }; - - uint32_t timeo_optval = 100; - - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } - - if (ret != 0) { - rv = false; - goto exit; - } - - if (ca_certificate_pem != nullptr) { - ret = tls_credential_add(CA_CERTIFICATE_TAG, TLS_CREDENTIAL_CA_CERTIFICATE, - ca_certificate_pem, strlen(ca_certificate_pem) + 1); - } - - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2); - if (sock_fd < 0) { - rv = false; - goto exit; - } - - setsockopt(sock_fd, SOL_TLS, TLS_SEC_TAG_LIST, sec_tag_opt, sizeof(sec_tag_opt)); - - setsockopt(sock_fd, SOL_TLS, TLS_HOSTNAME, host, strlen(host)); - - setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeo_optval, sizeof(timeo_optval)); - - if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { - ::close(sock_fd); - sock_fd = -1; - rv = false; - goto exit; - } - is_ssl = true; - - exit: - if (res != nullptr) { - freeaddrinfo(res); - res = nullptr; - } - - return rv; - } + bool connectSSL(const char* host, uint16_t port, char* ca_certificate_pem = nullptr) { + + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + int resolve_attempts = 100; + int ret; + bool rv = true; + + sec_tag_t sec_tag_opt[] = { + CA_CERTIFICATE_TAG, + }; + + uint32_t timeo_optval = 100; + + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } + + if (ret != 0) { + rv = false; + goto exit; + } + + if (ca_certificate_pem != nullptr) { + ret = tls_credential_add(CA_CERTIFICATE_TAG, TLS_CREDENTIAL_CA_CERTIFICATE, + ca_certificate_pem, strlen(ca_certificate_pem) + 1); + } + + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2); + if (sock_fd < 0) { + rv = false; + goto exit; + } + + setsockopt(sock_fd, SOL_TLS, TLS_SEC_TAG_LIST, + sec_tag_opt, sizeof(sec_tag_opt)); + + setsockopt(sock_fd, SOL_TLS, TLS_HOSTNAME, host, strlen(host)); + + setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeo_optval, sizeof(timeo_optval)); + + if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { + ::close(sock_fd); + sock_fd = -1; + rv = false; + goto exit; + } + is_ssl = true; + + exit: + if(res != nullptr) { + freeaddrinfo(res); + res = nullptr; + } + + return rv; + } #endif - int available() { - int count = 0; - if (is_ssl) { - /* - TODO: HACK: - The correct colution would be to call - ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_PEEK | MSG_DONTWAIT); - but it doesn't seem to work. Instead, save a temporary variable - and use it in read() - */ - if (ssl_sock_temp_char != -1) { - return 1; - } - count = ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_DONTWAIT); - } else { - zsock_ioctl(sock_fd, ZFD_IOCTL_FIONREAD, &count); - } - if (count <= 0) { - delay(1); - count = 0; - } - return count; - } - - int recv(uint8_t *buffer, size_t size, int flags = MSG_DONTWAIT) { - if (sock_fd == -1) { - return -1; - } - // TODO: see available() - if (ssl_sock_temp_char != -1) { - int ret = ::recv(sock_fd, &buffer[1], size - 1, flags); - buffer[0] = ssl_sock_temp_char; - ssl_sock_temp_char = -1; - return ret + 1; - } - return ::recv(sock_fd, buffer, size, flags); - } - - int send(const uint8_t *buffer, size_t size) { - if (sock_fd == -1) { - return -1; - } - return ::send(sock_fd, buffer, size, 0); - } - - void close() { - if (sock_fd != -1) { - ::close(sock_fd); - sock_fd = -1; - } - } - - bool bind(uint16_t port) { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = INADDR_ANY; - - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - return false; - } - - zsock_ioctl(sock_fd, ZFD_IOCTL_FIONBIO); - - if (::bind(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } - - return true; - } - - bool listen(int backlog = 5) { - if (sock_fd == -1) { - return false; - } - - if (::listen(sock_fd, backlog) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } - - return true; - } - - int accept() { - if (sock_fd == -1) { - return -1; - } - - return ::accept(sock_fd, nullptr, nullptr); - } - - friend class ZephyrClient; + int available() { + int count = 0; + if (is_ssl) { + /* + TODO: HACK: + The correct colution would be to call + ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_PEEK | MSG_DONTWAIT); + but it doesn't seem to work. Instead, save a temporary variable + and use it in read() + */ + if (ssl_sock_temp_char != -1) { + return 1; + } + count = ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_DONTWAIT); + } else { + zsock_ioctl(sock_fd, ZFD_IOCTL_FIONREAD, &count); + } + if (count <= 0) { + delay(1); + count = 0; + } + return count; + } + + int recv(uint8_t* buffer, size_t size, int flags = MSG_DONTWAIT) { + if (sock_fd == -1) { + return -1; + } + // TODO: see available() + if (ssl_sock_temp_char != -1) { + int ret = ::recv(sock_fd, &buffer[1], size - 1, flags); + buffer[0] = ssl_sock_temp_char; + ssl_sock_temp_char = -1; + return ret + 1; + } + return ::recv(sock_fd, buffer, size, flags); + } + + int send(const uint8_t* buffer, size_t size) { + if (sock_fd == -1) { + return -1; + } + return ::send(sock_fd, buffer, size, 0); + } + + void close() { + if (sock_fd != -1) { + ::close(sock_fd); + sock_fd = -1; + } + } + + bool bind(uint16_t port) { + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_ANY; + + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + return false; + } + + zsock_ioctl(sock_fd, ZFD_IOCTL_FIONBIO); + + if (::bind(sock_fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } + + bool listen(int backlog = 5) { + if (sock_fd == -1) { + return false; + } + + if (::listen(sock_fd, backlog) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } + + int accept() { + if (sock_fd == -1) { + return -1; + } + + return ::accept(sock_fd, nullptr, nullptr); + } + + String remoteIP() { + if (sock_fd == -1) { + return {}; + } + + struct sockaddr_storage addr; + socklen_t addr_len = sizeof(addr); + char ip_str[INET6_ADDRSTRLEN] = {0}; + + if (::getpeername(sock_fd, (struct sockaddr*)&addr, &addr_len) == 0) { + if (addr.ss_family == AF_INET) { + struct sockaddr_in *s = (struct sockaddr_in*)&addr; + ::inet_ntop(AF_INET, &s->sin_addr, ip_str, sizeof(ip_str)); + } else if (addr.ss_family == AF_INET6) { + struct sockaddr_in6 *s6 = (struct sockaddr_in6*)&addr; + ::inet_ntop(AF_INET6, &s6->sin6_addr, ip_str, sizeof(ip_str)); + } + return String(ip_str); + } + + return {}; + } + friend class ZephyrClient; }; diff --git a/libraries/SocketWrapper/ZephyrClient.h b/libraries/SocketWrapper/ZephyrClient.h index 94e135cae..7ba086274 100644 --- a/libraries/SocketWrapper/ZephyrClient.h +++ b/libraries/SocketWrapper/ZephyrClient.h @@ -7,57 +7,53 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper { private: - bool _connected = false; + bool _connected = false; protected: - void setSocket(int sock) { - sock_fd = sock; - _connected = true; - } + void setSocket(int sock) { + sock_fd = sock; + _connected = true; + } public: - int connect(const char *host, uint16_t port) override { - auto ret = ZephyrSocketWrapper::connect((char *)host, port); - if (ret) { - _connected = true; - } - return ret; - } - - int connect(IPAddress ip, uint16_t port) { - auto ret = ZephyrSocketWrapper::connect(ip, port); - if (ret) { - _connected = true; - } - return ret; - } + int connect(const char* host, uint16_t port) override { + auto ret = ZephyrSocketWrapper::connect((char*)host, port); + if (ret) { + _connected = true; + } + return ret; + } + int connect(IPAddress ip, uint16_t port) { + auto ret = ZephyrSocketWrapper::connect(ip, port); + if (ret) { + _connected = true; + } + return ret; + } #if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) - int connectSSL(const char *host, uint16_t port, char *cert) { - auto ret = ZephyrSocketWrapper::connectSSL((char *)host, port, cert); - if (ret) { - _connected = true; - } - return ret; - } + int connectSSL(const char* host, uint16_t port, char* cert) { + auto ret = ZephyrSocketWrapper::connectSSL((char*)host, port, cert); + if (ret) { + _connected = true; + } + return ret; + } #endif - uint8_t connected() override { - return _connected; - } - - int available() override { - return ZephyrSocketWrapper::available(); - } - - int read() override { - uint8_t c; - read(&c, 1); - return c; - } - - int read(uint8_t *buffer, size_t size) override { - auto received = recv(buffer, size); + uint8_t connected() override { + return _connected; + } + int available() override { + return ZephyrSocketWrapper::available(); + } + int read() override { + uint8_t c; + read(&c, 1); + return c; + } + int read(uint8_t* buffer, size_t size) override { + auto received = recv(buffer, size); - if (received == 0) { + if (received == 0) { return 0; } else if (received < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK) { @@ -66,34 +62,31 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper { return 0; } } - return received; - } - - size_t write(uint8_t c) override { - return write(&c, 1); - } - - size_t write(const uint8_t *buffer, size_t size) override { - return send(buffer, size); - } - - void flush() override { - // No-op - } - - int peek() override { - uint8_t c; - recv(&c, 1, MSG_PEEK); - return c; - } - - void stop() override { - ZephyrSocketWrapper::close(); - _connected = false; - } - - operator bool() { - return sock_fd != -1; - } - friend class ZephyrServer; -}; + return received; + } + size_t write(uint8_t c) override { + return write(&c, 1); + } + size_t write(const uint8_t* buffer, size_t size) override { + return send(buffer, size); + } + void flush() override { + // No-op + } + int peek() override { + uint8_t c; + recv(&c, 1, MSG_PEEK); + return c; + } + void stop() override { + ZephyrSocketWrapper::close(); + _connected = false; + } + operator bool() { + return sock_fd != -1; + } + String remoteIP() { + return ZephyrSocketWrapper::remoteIP(); + } + friend class ZephyrServer; +}; \ No newline at end of file diff --git a/libraries/SocketWrapper/ZephyrUDP.h b/libraries/SocketWrapper/ZephyrUDP.h index facf37229..884639bd9 100644 --- a/libraries/SocketWrapper/ZephyrUDP.h +++ b/libraries/SocketWrapper/ZephyrUDP.h @@ -29,6 +29,8 @@ #include #include +#define UDP_TX_PACKET_MAX_SIZE 24 + class ZephyrUDP : public arduino::UDP { private: int _socket; diff --git a/loader/llext_exports.c b/loader/llext_exports.c index cecbc87c8..26b672f3a 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -173,6 +173,8 @@ FORCE_EXPORT_SYM(inet_pton); FORCE_EXPORT_SYM(sendto); FORCE_EXPORT_SYM(recvfrom); FORCE_EXPORT_SYM(setsockopt); +FORCE_EXPORT_SYM(getpeername); +FORCE_EXPORT_SYM(inet_ntop); #endif #if defined(CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT) From 08d3bcc38a6e2984a685b884dd0ac07ae9d79f14 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 6 Aug 2025 16:27:33 +0200 Subject: [PATCH 067/117] ethernet lib: fix examples --- .../AdvancedChatServer/AdvancedChatServer.ino | 40 ++++++++++++++++--- .../BarometricPressureWebServer.ino | 29 ++++++++++---- .../DhcpAddressPrinter/DhcpAddressPrinter.ino | 3 +- .../examples/TelnetClient/TelnetClient.ino | 22 +++++----- .../examples/UdpNtpClient/UdpNtpClient.ino | 1 - .../Ethernet/examples/WebClient/WebClient.ino | 1 - .../WebClientRepeatingManual.ino | 2 +- .../Ethernet/examples/WebServer/WebServer.ino | 7 ++-- 8 files changed, 72 insertions(+), 33 deletions(-) diff --git a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino index 5e70d16c1..28781ff64 100644 --- a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino +++ b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino @@ -5,6 +5,28 @@ to all connected clients but the client the message comes from. To use, telnet to your device's IP address and type. + Usage: + 1. Upload this sketch to your board. + 2. Make sure your board is connected to the network and note its IP address. + 3. From a computer on the same network, open a terminal and connect via Telnet: + + - On macOS or Linux (using netcat if telnet is not available): + telnet 23 + # or, if telnet is missing: + nc 23 + + - On Windows (Command Prompt): + telnet 23 + # If 'telnet' is not recognized, enable it in "Windows Features". + + 4. Type a message and press Enter. + Your message will be broadcast to all connected clients except you. + + Example: + telnet 192.168.1.177 23 + + Press CTRL + ] then 'quit' to exit Telnet. + */ #include "ZephyrServer.h" @@ -18,23 +40,29 @@ IPAddress myDns(192, 168, 1, 1); IPAddress gateway(192, 168, 1, 1); IPAddress subnet(255, 255, 255, 0); - // telnet defaults to port 23 ZephyrServer server(23); ZephyrClient clients[8]; void setup() { - - // initialize the Ethernet device - Ethernet.begin(ip, myDns, gateway, subnet); - - // Open serial communications and wait for port to open: + // start serial port: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // initialize the Ethernet device + Ethernet.begin(ip, myDns, gateway, subnet); + // Check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); diff --git a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino index c7d789381..acbcec36c 100644 --- a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino +++ b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino @@ -8,9 +8,6 @@ This sketch adapted from Nathan Seidle's SCP1000 example for PIC: http://www.sparkfun.com/datasheets/Sensors/SCP1000-Testing.zip - TODO: this hardware is long obsolete. This example program should - be rewritten to use https://www.sparkfun.com/products/9721 - Circuit: SCP1000 sensor attached to pins 6,7, and 11 - 13: DRDY: pin 6 @@ -18,7 +15,15 @@ MOSI: pin 11 MISO: pin 12 SCK: pin 13 - + + How it works: + 1. The board reads temperature and pressure data from the SCP1000 sensor. + 2. It hosts a simple HTTP server on port 80 that serves the current readings as a web page. + 3. You can view the readings from any device on the same network via a browser. + Open a web browser and go to: http://192.168.1.20/ (Replace with your board's IP address if changed) + + Note: The SCP1000 sensor is long obsolete. For modern projects, consider replacing it + with the BMP085/BMP180/BMP280 or similar (e.g. https://www.sparkfun.com/products/9721). */ #include "ZephyrServer.h" @@ -53,15 +58,23 @@ void setup() { // start the SPI library: SPI.begin(); - // start the Ethernet connection - Ethernet.begin(ip); - - // Open serial communications and wait for port to open: + // start serial port: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); + + // start the Ethernet connection + Ethernet.begin(ip); + // Check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); diff --git a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino index 53741f7e5..a7e60e999 100644 --- a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino +++ b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino @@ -11,8 +11,7 @@ void setup() { - - // Open serial communications and wait for port to open: + // start serial port: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only diff --git a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino index 92aad146a..97f558146 100644 --- a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino +++ b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino @@ -1,14 +1,9 @@ -/* + /* Telnet client - This sketch connects to a a telnet server (http://www.google.com) - using an Arduino Wiznet Ethernet shield. You'll need a telnet server - to test this with. - Processing's ChatServer example (part of the network library) works well, - running on port 10002. It can be found as part of the examples - in the Processing application, available at - http://processing.org/ - */ + This sketch connects to a telnet server. + You need a telnet server to test this. +*/ #include "ZephyrClient.h" #include "ZephyrEthernet.h" @@ -16,8 +11,15 @@ // The IP address will be dependent on your local network: IPAddress ip(192, 168, 1, 177); +// Example: To get the IP address of telehack.com (an example telnet server), run in a terminal: +// ping telehack.com +// or +// nslookup telehack.com +// Then use the returned IP address in the code. + // Enter the IP address of the server you're connecting to: IPAddress server(1, 1, 1, 1); +int port = 23; // Telnet port // Initialize the Ethernet client library // with the IP address and port of the server @@ -52,7 +54,7 @@ void setup() { Serial.println("connecting..."); // if you get a connection, report back via serial: - if (client.connect(server, 10002)) { + if (client.connect(server, port)) { Serial.println("connected"); } else { // if you didn't get a connection to the server: diff --git a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino index a8b9a3919..41e398595 100644 --- a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino +++ b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino @@ -24,7 +24,6 @@ byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packe ZephyrUDP Udp; void setup() { - // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { diff --git a/libraries/Ethernet/examples/WebClient/WebClient.ino b/libraries/Ethernet/examples/WebClient/WebClient.ino index f5d85a4de..6f92a963e 100644 --- a/libraries/Ethernet/examples/WebClient/WebClient.ino +++ b/libraries/Ethernet/examples/WebClient/WebClient.ino @@ -32,7 +32,6 @@ bool printWebData = true; // set to false for better speed measurement void setup() { - // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { diff --git a/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino b/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino index ce1d728dc..de8e9266e 100644 --- a/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino +++ b/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino @@ -18,7 +18,7 @@ IPAddress ip(192, 168, 1, 177); IPAddress myDns(192, 168, 1, 1); IPAddress gateway(192, 168, 1, 1); -IPAddress subnet(255, 255, 0, 0); +IPAddress subnet(255, 255, 255, 0); // initialize the library instance: ZephyrClient client; diff --git a/libraries/Ethernet/examples/WebServer/WebServer.ino b/libraries/Ethernet/examples/WebServer/WebServer.ino index 6dd3a2877..81b7dcb90 100644 --- a/libraries/Ethernet/examples/WebServer/WebServer.ino +++ b/libraries/Ethernet/examples/WebServer/WebServer.ino @@ -1,9 +1,8 @@ /* Web Server - A simple web server that shows the value of the analog input pins. - using an Arduino Wiznet Ethernet shield. - + A simple web server that shows the value of the analog input pins. + To view the page, open a web browser and type the server’s IP address in the address bar. */ #include "ZephyrServer.h" @@ -11,7 +10,7 @@ #include "ZephyrEthernet.h" // The IP address will be dependent on your local network: -IPAddress ip(192, 168, 2, 177); +IPAddress ip(192, 168, 1, 177); // Initialize the Ethernet server library // with the IP address and port you want to use From d97679198ab8f2e51b21074cc4141ac078aa8c07 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 6 Aug 2025 16:35:54 +0200 Subject: [PATCH 068/117] eth lib: disable log print in SocketWrapper module --- libraries/SocketWrapper/SocketHelpers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index b70261993..1f8e08009 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -1,7 +1,7 @@ #include "SocketHelpers.h" #include -LOG_MODULE_DECLARE(sketch, CONFIG_LOG_DEFAULT_LEVEL); +LOG_MODULE_DECLARE(sketch, LOG_LEVEL_NONE); struct net_mgmt_event_callback NetworkInterface::mgmt_cb; struct net_dhcpv4_option_callback NetworkInterface::dhcp_cb; From 05660803192545f64885e0c67fe96b8ec69097e6 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 6 Aug 2025 16:51:50 +0200 Subject: [PATCH 069/117] eth lib: add new line at end of file --- libraries/Ethernet/src/Ethernet.h | 2 +- libraries/Ethernet/src/ZephyrEthernet.h | 2 +- libraries/Ethernet/src/Zephyr_Ethernet.h | 2 +- libraries/SocketWrapper/SocketHelpers.cpp | 2 +- libraries/SocketWrapper/ZephyrClient.h | 2 +- libraries/SocketWrapper/ZephyrServer.h | 94 ++-- libraries/SocketWrapper/ZephyrUDP.h | 583 +++++++++++----------- 7 files changed, 341 insertions(+), 346 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index 09d29de11..52913e6ac 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -67,4 +67,4 @@ class EthernetClass: public NetworkInterface extern EthernetClass Ethernet; -#endif \ No newline at end of file +#endif diff --git a/libraries/Ethernet/src/ZephyrEthernet.h b/libraries/Ethernet/src/ZephyrEthernet.h index f1349895f..6ada64df6 100644 --- a/libraries/Ethernet/src/ZephyrEthernet.h +++ b/libraries/Ethernet/src/ZephyrEthernet.h @@ -1,3 +1,3 @@ #pragma once -#include "Ethernet.h" \ No newline at end of file +#include "Ethernet.h" diff --git a/libraries/Ethernet/src/Zephyr_Ethernet.h b/libraries/Ethernet/src/Zephyr_Ethernet.h index 6761ba5ed..61aaa3153 100644 --- a/libraries/Ethernet/src/Zephyr_Ethernet.h +++ b/libraries/Ethernet/src/Zephyr_Ethernet.h @@ -1 +1 @@ -// placeholder to allow the discovery of this library \ No newline at end of file +// placeholder to allow the discovery of this library diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index 1f8e08009..8c94efa46 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -208,4 +208,4 @@ bool NetworkInterface::setGatewayIP(IPAddress gateway) { bool NetworkInterface::setDnsServerIP(IPAddress dns_server) { return false; // DNS server dynamic configuration is not supported -} \ No newline at end of file +} diff --git a/libraries/SocketWrapper/ZephyrClient.h b/libraries/SocketWrapper/ZephyrClient.h index 7ba086274..8332665b4 100644 --- a/libraries/SocketWrapper/ZephyrClient.h +++ b/libraries/SocketWrapper/ZephyrClient.h @@ -89,4 +89,4 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper { return ZephyrSocketWrapper::remoteIP(); } friend class ZephyrServer; -}; \ No newline at end of file +}; diff --git a/libraries/SocketWrapper/ZephyrServer.h b/libraries/SocketWrapper/ZephyrServer.h index d5385588d..7ad0568e2 100644 --- a/libraries/SocketWrapper/ZephyrServer.h +++ b/libraries/SocketWrapper/ZephyrServer.h @@ -7,56 +7,50 @@ class ZephyrServer : public arduino::Server, ZephyrSocketWrapper { private: - int _port; + int _port; public: - ZephyrServer() : _port(80) {}; - ZephyrServer(uint16_t port) : _port(port) {}; - - virtual ~ZephyrServer() { - end(); - } - - void end() { - ZephyrSocketWrapper::close(); - } - - void begin(uint16_t port) { - _port = port; - begin(); - } - - void begin() { - ZephyrSocketWrapper::bind(_port); - ZephyrSocketWrapper::listen(5); - } - - uint8_t status() { - return 0; - } - - explicit operator bool() { - return sock_fd != -1; - } - - ZephyrClient accept(uint8_t *status = nullptr) { - ZephyrClient client; - int sock = ZephyrSocketWrapper::accept(); - client.setSocket(sock); - return client; - } - - ZephyrClient available(uint8_t *status = nullptr) __attribute__((deprecated("Use accept()."))) { - return accept(status); - } - - size_t write(uint8_t c) override { - return write(&c, 1); - } - - size_t write(const uint8_t *buffer, size_t size) override { - return send(buffer, size); - } - - friend class ZephyrClient; + ZephyrServer() : _port(80){}; + ZephyrServer(uint16_t port) : _port(port){}; + + virtual ~ZephyrServer() { + end(); + } + void end() { + ZephyrSocketWrapper::close(); + } + void begin(uint16_t port) { + _port = port; + begin(); + } + void begin() { + ZephyrSocketWrapper::bind(_port); + ZephyrSocketWrapper::listen(5); + } + uint8_t status() { + return 0; + } + explicit operator bool() { + return sock_fd != -1; + } + + ZephyrClient accept(uint8_t* status = nullptr) { + ZephyrClient client; + int sock = ZephyrSocketWrapper::accept(); + client.setSocket(sock); + return client; + } + + ZephyrClient available(uint8_t* status = nullptr) __attribute__((deprecated("Use accept()."))) { + return accept(status); + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + size_t write(const uint8_t* buffer, size_t size) override { + return send(buffer, size); + } + + friend class ZephyrClient; }; diff --git a/libraries/SocketWrapper/ZephyrUDP.h b/libraries/SocketWrapper/ZephyrUDP.h index 884639bd9..c12b26f0e 100644 --- a/libraries/SocketWrapper/ZephyrUDP.h +++ b/libraries/SocketWrapper/ZephyrUDP.h @@ -33,299 +33,300 @@ class ZephyrUDP : public arduino::UDP { private: - int _socket; + int _socket; public: - ZephyrUDP() : _socket(-1) { - } // Constructor - - ~ZephyrUDP() { - stop(); - } - - // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no - // sockets available to use - virtual uint8_t begin(uint16_t port) { - - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = INADDR_ANY; - - _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - - zsock_ioctl(_socket, ZFD_IOCTL_FIONBIO); - - if (::bind(_socket, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - ::close(_socket); - _socket = -1; - return false; - } - - return true; - } - - // initialize, start listening on specified multicast IP address and port. Returns 1 if - // successful, 0 if there are no sockets available to use - virtual uint8_t beginMulticast(IPAddress ip, uint16_t port) { - bool ret = begin(port); - if (ret == false) { - return false; - } - - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = ip; - - net_if_ipv4_maddr_join( - net_if_get_by_index(1), - net_if_ipv4_maddr_add(net_if_get_by_index(1), (struct in_addr *)&addr)); - return true; - } - - // Finish with the UDP socket - virtual void stop() { - if (_socket != -1) { - ::close(_socket); - _socket = -1; - } - } - - // Sending UDP packets - - // Start building up a packet to send to the remote host specific in ip and port - // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port - virtual int beginPacket(IPAddress ip, uint16_t port) { - _send_to_ip = ip; - _send_to_port = port; - - /* Make sure that the transmit data buffer is empty. */ - _tx_data.clear(); - return true; - } - - // Start building up a packet to send to the remote host specific in host and port - // Returns 1 if successful, 0 if there was a problem resolving the hostname or port - virtual int beginPacket(const char *host, uint16_t port) { - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_DGRAM; - - int resolve_attempts = 100; - int ret; - - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } - - if (ret != 0) { - return false; - } - - return beginPacket(IPAddress(((sockaddr_in *)(res->ai_addr))->sin_addr.s_addr), port); - } - - // Finish off this packet and send it - // Returns 1 if the packet was sent successfully, 0 if there was an error - virtual int endPacket() { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(_send_to_port); - addr.sin_addr.s_addr = _send_to_ip; - return ::sendto(_socket, _tx_data.data(), _tx_data.size(), 0, (sockaddr *)&addr, - sizeof(addr)); - } - - // Write a single byte into the packet - virtual size_t write(uint8_t data) { - _tx_data.push_back(data); - return 1; - } - - // Write size bytes from buffer into the packet - virtual size_t write(uint8_t *buffer, size_t size) { - std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); - return size; - } - - // Write size bytes from buffer into the packet - virtual size_t write(const uint8_t *buffer, size_t size) { - std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); - return size; - } - - using Print::write; - - int parsePacket() { - struct sockaddr_in addr; - socklen_t addrlen = sizeof(addr); - uint8_t tmp_buf[512]; - - int ret = ::recvfrom(_socket, tmp_buf, sizeof(tmp_buf), 0, (sockaddr *)&addr, &addrlen); - if (ret > 0) { - auto pkt = std::make_shared(IPAddress(addr.sin_addr.s_addr), - ntohs(addr.sin_port), tmp_buf, ret); - - _rx_pkt_list.push_back(pkt); - - // drop the oldest packet if the list is full - if (_rx_pkt_list.size() > _rx_pkt_list_size) { - _rx_pkt_list.pop_front(); - } - } - - if (_rx_pkt_list.size()) { - /* Discard UdpRxPacket object previously held by _rx_pkt - * and replace it with the new one. - */ - _rx_pkt = _rx_pkt_list.front(); - _rx_pkt_list.pop_front(); - return _rx_pkt->totalSize(); - } else { - /* Otherwise ensure that _rx_pkt definitely - * does not hold any UdpRxPacket object anymore. - */ - _rx_pkt.reset(); - return 0; - } - } - - int available() { - if (_rx_pkt) { - return _rx_pkt->available(); - } else { - return 0; - } - } - - int read() { - if (_rx_pkt) { - return _rx_pkt->read(); - } else { - return -1; - } - } - - int read(unsigned char *buffer, size_t len) { - if (_rx_pkt) { - return _rx_pkt->read(buffer, len); - } else { - return -1; - } - } - - int read(char *buffer, size_t len) { - if (_rx_pkt) { - return _rx_pkt->read(buffer, len); - } else { - return -1; - } - } - - int peek() { - if (_rx_pkt) { - return _rx_pkt->peek(); - } else { - return -1; - } - } - - void flush() { - /* Delete UdpRxPacket object held by _rx_pkt. */ - if (_rx_pkt) { - _rx_pkt.reset(); - } - } - - virtual IPAddress remoteIP() { - if (_rx_pkt) { - return _rx_pkt->remoteIP(); - } else { - return IPAddress(); - } - } - - virtual uint16_t remotePort() { - if (_rx_pkt) { - return _rx_pkt->remotePort(); - } else { - return 0; - } - } + ZephyrUDP() : _socket(-1) {} // Constructor + ~ZephyrUDP() { + stop(); + } + + // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + virtual uint8_t begin(uint16_t port) { + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_ANY; + + _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + + zsock_ioctl(_socket, ZFD_IOCTL_FIONBIO); + + if (::bind(_socket, (struct sockaddr*)&addr, sizeof(addr)) < 0) { + ::close(_socket); + _socket = -1; + return false; + } + + return true; + } + + // initialize, start listening on specified multicast IP address and port. Returns 1 if successful, 0 if there are no sockets available to use + virtual uint8_t beginMulticast(IPAddress ip, uint16_t port) { + bool ret = begin(port); + if (ret == false) { + return false; + } + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = ip; + + net_if_ipv4_maddr_join(net_if_get_by_index(1), net_if_ipv4_maddr_add(net_if_get_by_index(1), (struct in_addr*)&addr)); + return true; + } + + // Finish with the UDP socket + virtual void stop() { + if (_socket != -1) { + ::close(_socket); + _socket = -1; + } + } + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) { + _send_to_ip = ip; + _send_to_port = port; + + /* Make sure that the transmit data buffer is empty. */ + _tx_data.clear(); + return true; + } + + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char* host, uint16_t port) { + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + int resolve_attempts = 100; + int ret; + + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } + + if (ret != 0) { + return false; + } + + return beginPacket(IPAddress(((sockaddr_in*)(res->ai_addr))->sin_addr.s_addr), port); + } + + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() { + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(_send_to_port); + addr.sin_addr.s_addr = _send_to_ip; + return ::sendto(_socket, _tx_data.data(), _tx_data.size(), 0, (sockaddr*)&addr, sizeof(addr)); + } + + // Write a single byte into the packet + virtual size_t write(uint8_t data) { + _tx_data.push_back(data); + return 1; + } + + // Write size bytes from buffer into the packet + virtual size_t write(uint8_t* buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t* buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + using Print::write; + + int parsePacket() + { + struct sockaddr_in addr; + socklen_t addrlen = sizeof(addr); + uint8_t tmp_buf[512]; + + int ret = ::recvfrom(_socket, tmp_buf, sizeof(tmp_buf), 0, (sockaddr*)&addr, &addrlen); + if (ret > 0) + { + auto pkt = std::make_shared( + IPAddress(addr.sin_addr.s_addr), + ntohs(addr.sin_port), tmp_buf, ret); + + _rx_pkt_list.push_back(pkt); + + // drop the oldest packet if the list is full + if(_rx_pkt_list.size() > _rx_pkt_list_size) { + _rx_pkt_list.pop_front(); + } + } + + if (_rx_pkt_list.size()) + { + /* Discard UdpRxPacket object previously held by _rx_pkt + * and replace it with the new one. + */ + _rx_pkt = _rx_pkt_list.front(); + _rx_pkt_list.pop_front(); + return _rx_pkt->totalSize(); + } + else + { + /* Otherwise ensure that _rx_pkt definitely + * does not hold any UdpRxPacket object anymore. + */ + _rx_pkt.reset(); + return 0; + } + } + + int available() + { + if (_rx_pkt) + return _rx_pkt->available(); + else + return 0; + } + + int read() + { + if (_rx_pkt) + return _rx_pkt->read(); + else + return -1; + } + + int read(unsigned char* buffer, size_t len) + { + if (_rx_pkt) + return _rx_pkt->read(buffer, len); + else + return -1; + } + + int read(char* buffer, size_t len) + { + if (_rx_pkt) + return _rx_pkt->read(buffer, len); + else + return -1; + } + + int peek() + { + if (_rx_pkt) + return _rx_pkt->peek(); + else + return -1; + } + + void flush() + { + /* Delete UdpRxPacket object held by _rx_pkt. */ + if (_rx_pkt) + _rx_pkt.reset(); + } + + virtual IPAddress remoteIP() { + if (_rx_pkt) + return _rx_pkt->remoteIP(); + else + return IPAddress(); + } + + virtual uint16_t remotePort() { + if (_rx_pkt) + return _rx_pkt->remotePort(); + else + return 0; + } private: - /* UDP TRANSMISSION */ - IPAddress _send_to_ip; - uint16_t _send_to_port; - std::vector _tx_data; - int _rx_pkt_list_size = 10; - - /* UDP RECEPTION */ - class UdpRxPacket { - private: - IPAddress const _remote_ip; - uint16_t const _remote_port; - size_t const _rx_data_len; - std::deque _rx_data; - - public: - UdpRxPacket(IPAddress const remote_ip, uint16_t const remote_port, uint8_t const *p_data, - size_t const data_len) - : _remote_ip(remote_ip), _remote_port(remote_port), _rx_data_len(data_len), - _rx_data(p_data, p_data + data_len) { - } - - typedef std::shared_ptr SharedPtr; - - IPAddress remoteIP() const { - return _remote_ip; - } - - uint16_t remotePort() const { - return _remote_port; - } - - size_t totalSize() const { - return _rx_data_len; - } - - int available() { - return _rx_data.size(); - } - - int read() { - uint8_t const data = _rx_data.front(); - _rx_data.pop_front(); - return data; - } - - int read(unsigned char *buffer, size_t len) { - size_t bytes_read = 0; - for (; bytes_read < len && !_rx_data.empty(); bytes_read++) { - buffer[bytes_read] = _rx_data.front(); - _rx_data.pop_front(); - } - return bytes_read; - } - - int read(char *buffer, size_t len) { - return read((unsigned char *)buffer, len); - } - - int peek() { - return _rx_data.front(); - } - }; - - std::list _rx_pkt_list; - UdpRxPacket::SharedPtr _rx_pkt; + + /* UDP TRANSMISSION */ + IPAddress _send_to_ip; + uint16_t _send_to_port; + std::vector _tx_data; + int _rx_pkt_list_size = 10; + /* UDP RECEPTION */ + class UdpRxPacket + { + private: + IPAddress const _remote_ip; + uint16_t const _remote_port; + size_t const _rx_data_len; + std::deque _rx_data; + + public: + UdpRxPacket( + IPAddress const remote_ip, + uint16_t const remote_port, + uint8_t const * p_data, + size_t const data_len) + : _remote_ip(remote_ip) + , _remote_port(remote_port) + , _rx_data_len(data_len) + , _rx_data(p_data, p_data + data_len) + { + } + + typedef std::shared_ptr SharedPtr; + + IPAddress remoteIP() const { return _remote_ip; } + uint16_t remotePort() const { return _remote_port; } + size_t totalSize() const { return _rx_data_len; } + + int available() + { + return _rx_data.size(); + } + + int read() + { + uint8_t const data = _rx_data.front(); + _rx_data.pop_front(); + return data; + } + + int read(unsigned char* buffer, size_t len) + { + size_t bytes_read = 0; + for (; bytes_read < len && !_rx_data.empty(); bytes_read++) + { + buffer[bytes_read] = _rx_data.front(); + _rx_data.pop_front(); + } + return bytes_read; + } + + int read(char* buffer, size_t len) + { + return read((unsigned char*)buffer, len); + } + + int peek() + { + return _rx_data.front(); + } + }; + std::list _rx_pkt_list; + UdpRxPacket::SharedPtr _rx_pkt; }; From 100ac13549b2ab051b0fadb81850a82723e3ad69 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 3 Sep 2025 15:31:28 +0200 Subject: [PATCH 070/117] ethernet lib: add only zephyr architecture in library properties --- libraries/Ethernet/library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Ethernet/library.properties b/libraries/Ethernet/library.properties index cae314d2a..425b3a151 100644 --- a/libraries/Ethernet/library.properties +++ b/libraries/Ethernet/library.properties @@ -6,5 +6,5 @@ sentence=Enables network connection (local and Internet) using Ethernet on Zephy paragraph=With this library you can connect to Internet via Ethernet. The library provides both Client and server functionalities. The library permits you to connect to a local network also with DHCP and to resolve DNS. category=Communication url=http://www.arduino.cc/en/Reference/Ethernet -architectures=zephyr,zephyr_portenta,zephyr_nicla,zephyr_giga +architectures=zephyr includes=Ethernet.h From 648b1b7a8f6df44296b103cec791e2f45a4c8524 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 3 Sep 2025 15:32:29 +0200 Subject: [PATCH 071/117] ethernet lib: remove no-standard example --- .../WebClientRepeatingManual.ino | 142 ------------------ 1 file changed, 142 deletions(-) delete mode 100644 libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino diff --git a/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino b/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino deleted file mode 100644 index de8e9266e..000000000 --- a/libraries/Ethernet/examples/WebClientRepeatingManual/WebClientRepeatingManual.ino +++ /dev/null @@ -1,142 +0,0 @@ -/* - Repeating Web client - - This sketch connects to a a web server and makes a request - using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or - the Adafruit Ethernet shield, either one will work, as long as it's got - a Wiznet Ethernet module on board. - - This example uses DNS, by assigning the Ethernet client with a MAC address, - IP address, and DNS address. - */ - -#include -#include "ZephyrEthernet.h" - -// The IP address will be dependent on your local network. -// DNS, gateway and subnet are optional: -IPAddress ip(192, 168, 1, 177); -IPAddress myDns(192, 168, 1, 1); -IPAddress gateway(192, 168, 1, 1); -IPAddress subnet(255, 255, 255, 0); - -// initialize the library instance: -ZephyrClient client; - -char server[] = "www.arduino.cc"; // also change the Host line in httpRequest() -//IPAddress server(64,131,82,241); - -unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds -const unsigned long postingInterval = 10 * 1000; // delay between updates, in milliseconds - -void setup() -{ - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); - while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); - delay(100); - } - Serial.println(); - - delay(2500); - - // start the Ethernet connection: - Serial.println("Initialize Ethernet with Static IP Address:"); - if (Ethernet.begin(ip, myDns, gateway, subnet) == 0) { - Serial.println("Failed to configure Ethernet with Static IP Address"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - } - - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - // try to congifure using IP address instead of DHCP: - Serial.print("My IP address: "); - Serial.println(Ethernet.localIP()); - Serial.print("My Gateway IP address: "); - Serial.println(Ethernet.gatewayIP()); - Serial.print("My DNS Server IP address: "); - Serial.println(Ethernet.dnsServerIP()); - // give the Ethernet shield a second to initialize: - delay(2500); -} - -void loop() -{ - // if there's incoming data from the net connection. - // send it out the serial port. This is for debugging - // purposes only: - if (client.available()) { - char c = client.read(); - Serial.write(c); - } - - // if ten seconds have passed since your last connection, - // then connect again and send data: - if (millis() - lastConnectionTime > postingInterval) { - httpRequest(); - } -} - -// this method makes a HTTP connection to the server: -void httpRequest() -{ - // close any connection before send a new request. - // This will free the socket on the WiFi shield - client.stop(); - - // if there's a successful connection: - if (client.connect(server, 80)) { - Serial.println("connecting..."); - // send the HTTP GET request: - client.println("GET /latest.txt HTTP/1.1"); - client.println("Host: www.arduino.cc"); - client.println("User-Agent: arduino-ethernet"); - client.println("Connection: close"); - client.println(); - - // note the time that the connection was made: - lastConnectionTime = millis(); - } else { - // if you couldn't make a connection: - Serial.println("connection failed"); - } -} - -void connectEth() -{ - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin(nullptr) == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - } else { - Serial.print(" DHCP assigned IP "); - Serial.println(Ethernet.localIP()); - } - - Serial.println("You're connected to the network"); - Serial.println(); -} From d589d60a0a13fcefe69d88376badc1873648c5a0 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 3 Sep 2025 15:34:06 +0200 Subject: [PATCH 072/117] ethernet lib: remove wiznet stuff --- .../examples/WebClientRepeating/WebClientRepeating.ino | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino index 8b37198f1..a1c1c7383 100644 --- a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino +++ b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino @@ -2,9 +2,7 @@ Repeating Web client This sketch connects to a a web server and makes a request - using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or - the Adafruit Ethernet shield, either one will work, as long as it's got - a Wiznet Ethernet module on board. + using the Ethernet interface. This example uses DNS, by assigning the Ethernet client with a MAC address, IP address, and DNS address. From 8678d18698937e5396c06698edab37d72b52b2bf Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 3 Sep 2025 17:21:38 +0200 Subject: [PATCH 073/117] socket wrapper: cosmetics clang --- libraries/SocketWrapper/SocketHelpers.cpp | 256 +++++----- libraries/SocketWrapper/SocketHelpers.h | 60 +-- libraries/SocketWrapper/SocketWrapper.h | 508 +++++++++---------- libraries/SocketWrapper/ZephyrClient.h | 147 +++--- libraries/SocketWrapper/ZephyrServer.h | 94 ++-- libraries/SocketWrapper/ZephyrUDP.h | 583 +++++++++++----------- 6 files changed, 827 insertions(+), 821 deletions(-) diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index 8c94efa46..7ca9a0e7c 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -6,206 +6,194 @@ LOG_MODULE_DECLARE(sketch, LOG_LEVEL_NONE); struct net_mgmt_event_callback NetworkInterface::mgmt_cb; struct net_dhcpv4_option_callback NetworkInterface::dhcp_cb; -void NetworkInterface::event_handler(struct net_mgmt_event_callback *cb, - uint64_t mgmt_event, - struct net_if *iface) -{ - int i = 0; +void NetworkInterface::event_handler(struct net_mgmt_event_callback *cb, uint64_t mgmt_event, + struct net_if *iface) { + int i = 0; - if (mgmt_event != NET_EVENT_IPV4_ADDR_ADD) { - return; - } + if (mgmt_event != NET_EVENT_IPV4_ADDR_ADD) { + return; + } - for (i = 0; i < NET_IF_MAX_IPV4_ADDR; i++) { - char buf[NET_IPV4_ADDR_LEN]; + for (i = 0; i < NET_IF_MAX_IPV4_ADDR; i++) { + char buf[NET_IPV4_ADDR_LEN]; - if (iface->config.ip.ipv4->unicast[i].ipv4.addr_type != - NET_ADDR_DHCP) { - continue; - } + if (iface->config.ip.ipv4->unicast[i].ipv4.addr_type != NET_ADDR_DHCP) { + continue; + } - LOG_INF(" Address[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, - &iface->config.ip.ipv4->unicast[i].ipv4.address.in_addr, - buf, sizeof(buf))); - LOG_INF(" Subnet[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, - &iface->config.ip.ipv4->unicast[i].netmask, - buf, sizeof(buf))); - LOG_INF(" Router[%d]: %s", net_if_get_by_iface(iface), - net_addr_ntop(AF_INET, - &iface->config.ip.ipv4->gw, - buf, sizeof(buf))); - LOG_INF("Lease time[%d]: %u seconds", net_if_get_by_iface(iface), - iface->config.dhcpv4.lease_time); - } + LOG_INF(" Address[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, &iface->config.ip.ipv4->unicast[i].ipv4.address.in_addr, buf, + sizeof(buf))); + LOG_INF( + " Subnet[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, &iface->config.ip.ipv4->unicast[i].netmask, buf, sizeof(buf))); + LOG_INF(" Router[%d]: %s", net_if_get_by_iface(iface), + net_addr_ntop(AF_INET, &iface->config.ip.ipv4->gw, buf, sizeof(buf))); + LOG_INF("Lease time[%d]: %u seconds", net_if_get_by_iface(iface), + iface->config.dhcpv4.lease_time); + } } -void NetworkInterface::option_handler(struct net_dhcpv4_option_callback *cb, - size_t length, - enum net_dhcpv4_msg_type msg_type, - struct net_if *iface) -{ - char buf[NET_IPV4_ADDR_LEN]; +void NetworkInterface::option_handler(struct net_dhcpv4_option_callback *cb, size_t length, + enum net_dhcpv4_msg_type msg_type, struct net_if *iface) { + char buf[NET_IPV4_ADDR_LEN]; - LOG_INF("DHCP Option %d: %s", cb->option, - net_addr_ntop(AF_INET, cb->data, buf, sizeof(buf))); + LOG_INF("DHCP Option %d: %s", cb->option, net_addr_ntop(AF_INET, cb->data, buf, sizeof(buf))); } -int NetworkInterface::dhcp() -{ - net_mgmt_init_event_callback(&mgmt_cb, event_handler, NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IF_UP | NET_EVENT_IF_DOWN); - net_mgmt_add_event_callback(&mgmt_cb); +int NetworkInterface::dhcp() { + net_mgmt_init_event_callback(&mgmt_cb, event_handler, + NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IF_UP | NET_EVENT_IF_DOWN); + net_mgmt_add_event_callback(&mgmt_cb); - net_dhcpv4_init_option_callback(&dhcp_cb, option_handler, - DHCP_OPTION_NTP, ntp_server, - sizeof(ntp_server)); + net_dhcpv4_init_option_callback(&dhcp_cb, option_handler, DHCP_OPTION_NTP, ntp_server, + sizeof(ntp_server)); - net_dhcpv4_add_option_callback(&dhcp_cb); + net_dhcpv4_add_option_callback(&dhcp_cb); - net_dhcpv4_start(netif); + net_dhcpv4_start(netif); - LOG_INF("DHCPv4 started...\n"); + LOG_INF("DHCPv4 started...\n"); - return 0; + return 0; } -void NetworkInterface::enable_dhcpv4_server(struct net_if *netif, char* _netmask) -{ - static struct in_addr addr; - static struct in_addr netmaskAddr; +void NetworkInterface::enable_dhcpv4_server(struct net_if *netif, char *_netmask) { + static struct in_addr addr; + static struct in_addr netmaskAddr; - if (net_addr_pton(AF_INET, String(localIP()).c_str(), &addr)) { - LOG_ERR("Invalid address: %s", String(localIP()).c_str()); - return; - } + if (net_addr_pton(AF_INET, String(localIP()).c_str(), &addr)) { + LOG_ERR("Invalid address: %s", String(localIP()).c_str()); + return; + } - if (net_addr_pton(AF_INET, _netmask, &netmaskAddr)) { - LOG_ERR("Invalid netmask: %s", _netmask); - return; - } + if (net_addr_pton(AF_INET, _netmask, &netmaskAddr)) { + LOG_ERR("Invalid netmask: %s", _netmask); + return; + } - net_if_ipv4_set_gw(netif, &addr); + net_if_ipv4_set_gw(netif, &addr); - if (net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0) == NULL) { - LOG_ERR("unable to set IP address for AP interface"); - } + if (net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0) == NULL) { + LOG_ERR("unable to set IP address for AP interface"); + } - if (!net_if_ipv4_set_netmask_by_addr(netif, &addr, &netmaskAddr)) { - LOG_ERR("Unable to set netmask for AP interface: %s", _netmask); - } + if (!net_if_ipv4_set_netmask_by_addr(netif, &addr, &netmaskAddr)) { + LOG_ERR("Unable to set netmask for AP interface: %s", _netmask); + } - addr.s4_addr[3] += 10; /* Starting IPv4 address for DHCPv4 address pool. */ + addr.s4_addr[3] += 10; /* Starting IPv4 address for DHCPv4 address pool. */ - if (net_dhcpv4_server_start(netif, &addr) != 0) { - LOG_ERR("DHCP server is not started for desired IP"); - return; - } + if (net_dhcpv4_server_start(netif, &addr) != 0) { + LOG_ERR("DHCP server is not started for desired IP"); + return; + } - LOG_INF("DHCPv4 server started...\n"); + LOG_INF("DHCPv4 server started...\n"); } IPAddress NetworkInterface::localIP() { - return IPAddress(netif->config.ip.ipv4->unicast[0].ipv4.address.in_addr.s_addr); + return IPAddress(netif->config.ip.ipv4->unicast[0].ipv4.address.in_addr.s_addr); } IPAddress NetworkInterface::subnetMask() { - return IPAddress(netif->config.ip.ipv4->unicast[0].netmask.s_addr); + return IPAddress(netif->config.ip.ipv4->unicast[0].netmask.s_addr); } + IPAddress NetworkInterface::gatewayIP() { - return IPAddress(netif->config.ip.ipv4->gw.s_addr); + return IPAddress(netif->config.ip.ipv4->gw.s_addr); } + IPAddress NetworkInterface::dnsServerIP() { - return arduino::INADDR_NONE; + return arduino::INADDR_NONE; } -void NetworkInterface::setMACAddress(const uint8_t* mac) { - struct net_eth_addr new_mac; - struct ethernet_req_params params = { 0 }; +void NetworkInterface::setMACAddress(const uint8_t *mac) { + struct net_eth_addr new_mac; + struct ethernet_req_params params = {0}; - memcpy(¶ms.mac_address, &new_mac, sizeof(struct net_eth_addr)); + memcpy(¶ms.mac_address, &new_mac, sizeof(struct net_eth_addr)); - net_if_down(netif); // Ensure the interface is down before changing the MAC address + net_if_down(netif); // Ensure the interface is down before changing the MAC address - int ret = net_mgmt(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS, netif, - ¶ms, sizeof(params)); - if (ret != 0) { - LOG_ERR("Failed to set MAC address via net_mgmt, ret=%d", ret); - } else { - LOG_INF("MAC address set successfully via net_mgmt"); - } - - net_if_up(netif); // Bring the interface back up after changing the MAC address + int ret = net_mgmt(NET_REQUEST_ETHERNET_SET_MAC_ADDRESS, netif, ¶ms, sizeof(params)); + if (ret != 0) { + LOG_ERR("Failed to set MAC address via net_mgmt, ret=%d", ret); + } else { + LOG_INF("MAC address set successfully via net_mgmt"); + } + + net_if_up(netif); // Bring the interface back up after changing the MAC address } int NetworkInterface::begin(bool blocking, uint32_t additional_event_mask) { - dhcp(); - int ret = net_mgmt_event_wait_on_iface(netif, NET_EVENT_IPV4_ADDR_ADD | additional_event_mask, - NULL, NULL, NULL, blocking ? K_FOREVER : K_SECONDS(1)); - return (ret == 0) ? 1 : 0; + dhcp(); + int ret = net_mgmt_event_wait_on_iface(netif, NET_EVENT_IPV4_ADDR_ADD | additional_event_mask, + NULL, NULL, NULL, blocking ? K_FOREVER : K_SECONDS(1)); + return (ret == 0) ? 1 : 0; } bool NetworkInterface::disconnect() { - return (net_if_down(netif) == 0); + return (net_if_down(netif) == 0); } bool NetworkInterface::setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway) { - struct in_addr ip_addr, subnet_addr, gw_addr; - - ip_addr.s_addr = ip; - subnet_addr.s_addr = subnet; - gw_addr.s_addr = gateway; + struct in_addr ip_addr, subnet_addr, gw_addr; + + ip_addr.s_addr = ip; + subnet_addr.s_addr = subnet; + gw_addr.s_addr = gateway; - if (!net_if_ipv4_addr_add(netif, &ip_addr, NET_ADDR_MANUAL, 0)) { - LOG_ERR("Failed to set static IP address"); - return false; - } + if (!net_if_ipv4_addr_add(netif, &ip_addr, NET_ADDR_MANUAL, 0)) { + LOG_ERR("Failed to set static IP address"); + return false; + } - if (!net_if_ipv4_set_netmask_by_addr(netif, &ip_addr, &subnet_addr)) { - LOG_ERR("Failed to set subnet mask"); - return false; - } + if (!net_if_ipv4_set_netmask_by_addr(netif, &ip_addr, &subnet_addr)) { + LOG_ERR("Failed to set subnet mask"); + return false; + } - net_if_ipv4_set_gw(netif, &gw_addr); - LOG_INF("Static IP configured"); - return true; + net_if_ipv4_set_gw(netif, &gw_addr); + LOG_INF("Static IP configured"); + return true; } bool NetworkInterface::setLocalIP(IPAddress ip) { - struct in_addr addr; - addr.s_addr = ip; + struct in_addr addr; + addr.s_addr = ip; - if (!net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0)) { - LOG_ERR("Failed to set local IP address"); - return false; - } + if (!net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0)) { + LOG_ERR("Failed to set local IP address"); + return false; + } - LOG_INF("Local IP address set: %s", ip.toString().c_str()); - return true; + LOG_INF("Local IP address set: %s", ip.toString().c_str()); + return true; } bool NetworkInterface::setSubnetMask(IPAddress subnet) { - struct in_addr netmask_addr; - netmask_addr.s_addr = subnet; + struct in_addr netmask_addr; + netmask_addr.s_addr = subnet; - if (!net_if_ipv4_set_netmask_by_addr(netif, &netmask_addr, &netmask_addr)) { - LOG_ERR("Failed to set subnet mask"); - return false; - } + if (!net_if_ipv4_set_netmask_by_addr(netif, &netmask_addr, &netmask_addr)) { + LOG_ERR("Failed to set subnet mask"); + return false; + } - LOG_INF("Subnet mask set: %s", subnet.toString().c_str()); - return true; + LOG_INF("Subnet mask set: %s", subnet.toString().c_str()); + return true; } bool NetworkInterface::setGatewayIP(IPAddress gateway) { - struct in_addr gw_addr; - gw_addr.s_addr = gateway; + struct in_addr gw_addr; + gw_addr.s_addr = gateway; - net_if_ipv4_set_gw(netif, &gw_addr); - LOG_INF("Gateway IP set: %s", gateway.toString().c_str()); - return true; + net_if_ipv4_set_gw(netif, &gw_addr); + LOG_INF("Gateway IP set: %s", gateway.toString().c_str()); + return true; } bool NetworkInterface::setDnsServerIP(IPAddress dns_server) { - return false; // DNS server dynamic configuration is not supported + return false; // DNS server dynamic configuration is not supported } diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index b407c0772..ecf638d6b 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -20,43 +20,43 @@ #define DHCP_OPTION_NTP (42) class NetworkInterface { - private: - uint8_t ntp_server[4]; - static struct net_mgmt_event_callback mgmt_cb; - static struct net_dhcpv4_option_callback dhcp_cb; +private: + uint8_t ntp_server[4]; + static struct net_mgmt_event_callback mgmt_cb; + static struct net_dhcpv4_option_callback dhcp_cb; - static void event_handler(struct net_mgmt_event_callback *cb, - uint64_t mgmt_event, - struct net_if *iface); + static void event_handler(struct net_mgmt_event_callback *cb, uint64_t mgmt_event, + struct net_if *iface); - static void option_handler(struct net_dhcpv4_option_callback *cb, - size_t length, - enum net_dhcpv4_msg_type msg_type, - struct net_if *iface); + static void option_handler(struct net_dhcpv4_option_callback *cb, size_t length, + enum net_dhcpv4_msg_type msg_type, struct net_if *iface); - protected: - struct net_if *netif = nullptr; - int dhcp(); - void enable_dhcpv4_server(struct net_if *netif, char* _netmask = "255.255.255.0"); +protected: + struct net_if *netif = nullptr; + int dhcp(); + void enable_dhcpv4_server(struct net_if *netif, char *_netmask = "255.255.255.0"); - public: - NetworkInterface() {} - ~NetworkInterface() {} +public: + NetworkInterface() { + } - IPAddress localIP(); + ~NetworkInterface() { + } - IPAddress subnetMask(); - IPAddress gatewayIP(); - IPAddress dnsServerIP(); + IPAddress localIP(); - void setMACAddress(const uint8_t* mac); - bool setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway); - bool setLocalIP(IPAddress ip); - bool setSubnetMask(IPAddress subnet); - bool setGatewayIP(IPAddress gateway); - bool setDnsServerIP(IPAddress dns_server); + IPAddress subnetMask(); + IPAddress gatewayIP(); + IPAddress dnsServerIP(); - int begin(bool blocking = true, uint32_t additional_event_mask = 0); + void setMACAddress(const uint8_t *mac); + bool setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway); + bool setLocalIP(IPAddress ip); + bool setSubnetMask(IPAddress subnet); + bool setGatewayIP(IPAddress gateway); + bool setDnsServerIP(IPAddress dns_server); - bool disconnect(); + int begin(bool blocking = true, uint32_t additional_event_mask = 0); + + bool disconnect(); }; diff --git a/libraries/SocketWrapper/SocketWrapper.h b/libraries/SocketWrapper/SocketWrapper.h index ce58ec8d9..c9af9ff7b 100644 --- a/libraries/SocketWrapper/SocketWrapper.h +++ b/libraries/SocketWrapper/SocketWrapper.h @@ -10,282 +10,284 @@ class ZephyrSocketWrapper { protected: - int sock_fd; - bool is_ssl = false; - int ssl_sock_temp_char = -1; + int sock_fd; + bool is_ssl = false; + int ssl_sock_temp_char = -1; public: - ZephyrSocketWrapper() : sock_fd(-1) {} - ZephyrSocketWrapper(int sock_fd) : sock_fd(sock_fd) {} + ZephyrSocketWrapper() : sock_fd(-1) { + } - ~ZephyrSocketWrapper() { - if (sock_fd != -1) { - ::close(sock_fd); - } - } + ZephyrSocketWrapper(int sock_fd) : sock_fd(sock_fd) { + } - bool connect(const char* host, uint16_t port) { + ~ZephyrSocketWrapper() { + if (sock_fd != -1) { + ::close(sock_fd); + } + } - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - bool rv = true; + bool connect(const char *host, uint16_t port) { - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + bool rv = true; - int resolve_attempts = 100; - int ret; + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + int resolve_attempts = 100; + int ret; - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - if (ret != 0) { - rv = false; - goto exit; - } + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - rv = false; + if (ret != 0) { + rv = false; + goto exit; + } - goto exit; - } + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + rv = false; - if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { - ::close(sock_fd); - sock_fd = -1; - rv = false; - goto exit; - } + goto exit; + } - exit: - if(res != nullptr) { - freeaddrinfo(res); - res = nullptr; - } + if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { + ::close(sock_fd); + sock_fd = -1; + rv = false; + goto exit; + } - return rv; - } + exit: + if (res != nullptr) { + freeaddrinfo(res); + res = nullptr; + } - bool connect(IPAddress host, uint16_t port) { + return rv; + } - const char* _host = host.toString().c_str(); + bool connect(IPAddress host, uint16_t port) { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - inet_pton(AF_INET, _host, &addr.sin_addr); + const char *_host = host.toString().c_str(); - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - return false; - } + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + inet_pton(AF_INET, _host, &addr.sin_addr); - if (::connect(sock_fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + return false; + } - return true; - } + if (::connect(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } #if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) - bool connectSSL(const char* host, uint16_t port, char* ca_certificate_pem = nullptr) { - - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; - - int resolve_attempts = 100; - int ret; - bool rv = true; - - sec_tag_t sec_tag_opt[] = { - CA_CERTIFICATE_TAG, - }; - - uint32_t timeo_optval = 100; - - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } - - if (ret != 0) { - rv = false; - goto exit; - } - - if (ca_certificate_pem != nullptr) { - ret = tls_credential_add(CA_CERTIFICATE_TAG, TLS_CREDENTIAL_CA_CERTIFICATE, - ca_certificate_pem, strlen(ca_certificate_pem) + 1); - } - - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2); - if (sock_fd < 0) { - rv = false; - goto exit; - } - - setsockopt(sock_fd, SOL_TLS, TLS_SEC_TAG_LIST, - sec_tag_opt, sizeof(sec_tag_opt)); - - setsockopt(sock_fd, SOL_TLS, TLS_HOSTNAME, host, strlen(host)); - - setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeo_optval, sizeof(timeo_optval)); - - if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { - ::close(sock_fd); - sock_fd = -1; - rv = false; - goto exit; - } - is_ssl = true; - - exit: - if(res != nullptr) { - freeaddrinfo(res); - res = nullptr; - } - - return rv; - } + bool connectSSL(const char *host, uint16_t port, char *ca_certificate_pem = nullptr) { + + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + int resolve_attempts = 100; + int ret; + bool rv = true; + + sec_tag_t sec_tag_opt[] = { + CA_CERTIFICATE_TAG, + }; + + uint32_t timeo_optval = 100; + + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } + + if (ret != 0) { + rv = false; + goto exit; + } + + if (ca_certificate_pem != nullptr) { + ret = tls_credential_add(CA_CERTIFICATE_TAG, TLS_CREDENTIAL_CA_CERTIFICATE, + ca_certificate_pem, strlen(ca_certificate_pem) + 1); + } + + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2); + if (sock_fd < 0) { + rv = false; + goto exit; + } + + setsockopt(sock_fd, SOL_TLS, TLS_SEC_TAG_LIST, sec_tag_opt, sizeof(sec_tag_opt)); + + setsockopt(sock_fd, SOL_TLS, TLS_HOSTNAME, host, strlen(host)); + + setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeo_optval, sizeof(timeo_optval)); + + if (::connect(sock_fd, res->ai_addr, res->ai_addrlen) < 0) { + ::close(sock_fd); + sock_fd = -1; + rv = false; + goto exit; + } + is_ssl = true; + + exit: + if (res != nullptr) { + freeaddrinfo(res); + res = nullptr; + } + + return rv; + } #endif - int available() { - int count = 0; - if (is_ssl) { - /* - TODO: HACK: - The correct colution would be to call - ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_PEEK | MSG_DONTWAIT); - but it doesn't seem to work. Instead, save a temporary variable - and use it in read() - */ - if (ssl_sock_temp_char != -1) { - return 1; - } - count = ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_DONTWAIT); - } else { - zsock_ioctl(sock_fd, ZFD_IOCTL_FIONREAD, &count); - } - if (count <= 0) { - delay(1); - count = 0; - } - return count; - } - - int recv(uint8_t* buffer, size_t size, int flags = MSG_DONTWAIT) { - if (sock_fd == -1) { - return -1; - } - // TODO: see available() - if (ssl_sock_temp_char != -1) { - int ret = ::recv(sock_fd, &buffer[1], size - 1, flags); - buffer[0] = ssl_sock_temp_char; - ssl_sock_temp_char = -1; - return ret + 1; - } - return ::recv(sock_fd, buffer, size, flags); - } - - int send(const uint8_t* buffer, size_t size) { - if (sock_fd == -1) { - return -1; - } - return ::send(sock_fd, buffer, size, 0); - } - - void close() { - if (sock_fd != -1) { - ::close(sock_fd); - sock_fd = -1; - } - } - - bool bind(uint16_t port) { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = INADDR_ANY; - - sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sock_fd < 0) { - return false; - } - - zsock_ioctl(sock_fd, ZFD_IOCTL_FIONBIO); - - if (::bind(sock_fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } - - return true; - } - - bool listen(int backlog = 5) { - if (sock_fd == -1) { - return false; - } - - if (::listen(sock_fd, backlog) < 0) { - ::close(sock_fd); - sock_fd = -1; - return false; - } - - return true; - } - - int accept() { - if (sock_fd == -1) { - return -1; - } - - return ::accept(sock_fd, nullptr, nullptr); - } - - String remoteIP() { - if (sock_fd == -1) { - return {}; - } - - struct sockaddr_storage addr; - socklen_t addr_len = sizeof(addr); - char ip_str[INET6_ADDRSTRLEN] = {0}; - - if (::getpeername(sock_fd, (struct sockaddr*)&addr, &addr_len) == 0) { - if (addr.ss_family == AF_INET) { - struct sockaddr_in *s = (struct sockaddr_in*)&addr; - ::inet_ntop(AF_INET, &s->sin_addr, ip_str, sizeof(ip_str)); - } else if (addr.ss_family == AF_INET6) { - struct sockaddr_in6 *s6 = (struct sockaddr_in6*)&addr; - ::inet_ntop(AF_INET6, &s6->sin6_addr, ip_str, sizeof(ip_str)); - } - return String(ip_str); - } - - return {}; - } - friend class ZephyrClient; + int available() { + int count = 0; + if (is_ssl) { + /* + TODO: HACK: + The correct colution would be to call + ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_PEEK | MSG_DONTWAIT); + but it doesn't seem to work. Instead, save a temporary variable + and use it in read() + */ + if (ssl_sock_temp_char != -1) { + return 1; + } + count = ::recv(sock_fd, &ssl_sock_temp_char, 1, MSG_DONTWAIT); + } else { + zsock_ioctl(sock_fd, ZFD_IOCTL_FIONREAD, &count); + } + if (count <= 0) { + delay(1); + count = 0; + } + return count; + } + + int recv(uint8_t *buffer, size_t size, int flags = MSG_DONTWAIT) { + if (sock_fd == -1) { + return -1; + } + // TODO: see available() + if (ssl_sock_temp_char != -1) { + int ret = ::recv(sock_fd, &buffer[1], size - 1, flags); + buffer[0] = ssl_sock_temp_char; + ssl_sock_temp_char = -1; + return ret + 1; + } + return ::recv(sock_fd, buffer, size, flags); + } + + int send(const uint8_t *buffer, size_t size) { + if (sock_fd == -1) { + return -1; + } + return ::send(sock_fd, buffer, size, 0); + } + + void close() { + if (sock_fd != -1) { + ::close(sock_fd); + sock_fd = -1; + } + } + + bool bind(uint16_t port) { + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_ANY; + + sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock_fd < 0) { + return false; + } + + zsock_ioctl(sock_fd, ZFD_IOCTL_FIONBIO); + + if (::bind(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } + + bool listen(int backlog = 5) { + if (sock_fd == -1) { + return false; + } + + if (::listen(sock_fd, backlog) < 0) { + ::close(sock_fd); + sock_fd = -1; + return false; + } + + return true; + } + + int accept() { + if (sock_fd == -1) { + return -1; + } + + return ::accept(sock_fd, nullptr, nullptr); + } + + String remoteIP() { + if (sock_fd == -1) { + return {}; + } + + struct sockaddr_storage addr; + socklen_t addr_len = sizeof(addr); + char ip_str[INET6_ADDRSTRLEN] = {0}; + + if (::getpeername(sock_fd, (struct sockaddr *)&addr, &addr_len) == 0) { + if (addr.ss_family == AF_INET) { + struct sockaddr_in *s = (struct sockaddr_in *)&addr; + ::inet_ntop(AF_INET, &s->sin_addr, ip_str, sizeof(ip_str)); + } else if (addr.ss_family == AF_INET6) { + struct sockaddr_in6 *s6 = (struct sockaddr_in6 *)&addr; + ::inet_ntop(AF_INET6, &s6->sin6_addr, ip_str, sizeof(ip_str)); + } + return String(ip_str); + } + + return {}; + } + friend class ZephyrClient; }; diff --git a/libraries/SocketWrapper/ZephyrClient.h b/libraries/SocketWrapper/ZephyrClient.h index 8332665b4..37ee74013 100644 --- a/libraries/SocketWrapper/ZephyrClient.h +++ b/libraries/SocketWrapper/ZephyrClient.h @@ -7,53 +7,57 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper { private: - bool _connected = false; + bool _connected = false; protected: - void setSocket(int sock) { - sock_fd = sock; - _connected = true; - } + void setSocket(int sock) { + sock_fd = sock; + _connected = true; + } public: - int connect(const char* host, uint16_t port) override { - auto ret = ZephyrSocketWrapper::connect((char*)host, port); - if (ret) { - _connected = true; - } - return ret; - } - int connect(IPAddress ip, uint16_t port) { - auto ret = ZephyrSocketWrapper::connect(ip, port); - if (ret) { - _connected = true; - } - return ret; - } + int connect(const char *host, uint16_t port) override { + auto ret = ZephyrSocketWrapper::connect((char *)host, port); + if (ret) { + _connected = true; + } + return ret; + } + + int connect(IPAddress ip, uint16_t port) { + auto ret = ZephyrSocketWrapper::connect(ip, port); + if (ret) { + _connected = true; + } + return ret; + } #if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) - int connectSSL(const char* host, uint16_t port, char* cert) { - auto ret = ZephyrSocketWrapper::connectSSL((char*)host, port, cert); - if (ret) { - _connected = true; - } - return ret; - } + int connectSSL(const char *host, uint16_t port, char *cert) { + auto ret = ZephyrSocketWrapper::connectSSL((char *)host, port, cert); + if (ret) { + _connected = true; + } + return ret; + } #endif - uint8_t connected() override { - return _connected; - } - int available() override { - return ZephyrSocketWrapper::available(); - } - int read() override { - uint8_t c; - read(&c, 1); - return c; - } - int read(uint8_t* buffer, size_t size) override { - auto received = recv(buffer, size); - - if (received == 0) { + uint8_t connected() override { + return _connected; + } + + int available() override { + return ZephyrSocketWrapper::available(); + } + + int read() override { + uint8_t c; + read(&c, 1); + return c; + } + + int read(uint8_t *buffer, size_t size) override { + auto received = recv(buffer, size); + + if (received == 0) { return 0; } else if (received < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK) { @@ -62,31 +66,38 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper { return 0; } } - return received; - } - size_t write(uint8_t c) override { - return write(&c, 1); - } - size_t write(const uint8_t* buffer, size_t size) override { - return send(buffer, size); - } - void flush() override { - // No-op - } - int peek() override { - uint8_t c; - recv(&c, 1, MSG_PEEK); - return c; - } - void stop() override { - ZephyrSocketWrapper::close(); - _connected = false; - } - operator bool() { - return sock_fd != -1; - } - String remoteIP() { - return ZephyrSocketWrapper::remoteIP(); - } - friend class ZephyrServer; + return received; + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t *buffer, size_t size) override { + return send(buffer, size); + } + + void flush() override { + // No-op + } + + int peek() override { + uint8_t c; + recv(&c, 1, MSG_PEEK); + return c; + } + + void stop() override { + ZephyrSocketWrapper::close(); + _connected = false; + } + + operator bool() { + return sock_fd != -1; + } + + String remoteIP() { + return ZephyrSocketWrapper::remoteIP(); + } + friend class ZephyrServer; }; diff --git a/libraries/SocketWrapper/ZephyrServer.h b/libraries/SocketWrapper/ZephyrServer.h index 7ad0568e2..d5385588d 100644 --- a/libraries/SocketWrapper/ZephyrServer.h +++ b/libraries/SocketWrapper/ZephyrServer.h @@ -7,50 +7,56 @@ class ZephyrServer : public arduino::Server, ZephyrSocketWrapper { private: - int _port; + int _port; public: - ZephyrServer() : _port(80){}; - ZephyrServer(uint16_t port) : _port(port){}; - - virtual ~ZephyrServer() { - end(); - } - void end() { - ZephyrSocketWrapper::close(); - } - void begin(uint16_t port) { - _port = port; - begin(); - } - void begin() { - ZephyrSocketWrapper::bind(_port); - ZephyrSocketWrapper::listen(5); - } - uint8_t status() { - return 0; - } - explicit operator bool() { - return sock_fd != -1; - } - - ZephyrClient accept(uint8_t* status = nullptr) { - ZephyrClient client; - int sock = ZephyrSocketWrapper::accept(); - client.setSocket(sock); - return client; - } - - ZephyrClient available(uint8_t* status = nullptr) __attribute__((deprecated("Use accept()."))) { - return accept(status); - } - - size_t write(uint8_t c) override { - return write(&c, 1); - } - size_t write(const uint8_t* buffer, size_t size) override { - return send(buffer, size); - } - - friend class ZephyrClient; + ZephyrServer() : _port(80) {}; + ZephyrServer(uint16_t port) : _port(port) {}; + + virtual ~ZephyrServer() { + end(); + } + + void end() { + ZephyrSocketWrapper::close(); + } + + void begin(uint16_t port) { + _port = port; + begin(); + } + + void begin() { + ZephyrSocketWrapper::bind(_port); + ZephyrSocketWrapper::listen(5); + } + + uint8_t status() { + return 0; + } + + explicit operator bool() { + return sock_fd != -1; + } + + ZephyrClient accept(uint8_t *status = nullptr) { + ZephyrClient client; + int sock = ZephyrSocketWrapper::accept(); + client.setSocket(sock); + return client; + } + + ZephyrClient available(uint8_t *status = nullptr) __attribute__((deprecated("Use accept()."))) { + return accept(status); + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t *buffer, size_t size) override { + return send(buffer, size); + } + + friend class ZephyrClient; }; diff --git a/libraries/SocketWrapper/ZephyrUDP.h b/libraries/SocketWrapper/ZephyrUDP.h index c12b26f0e..884639bd9 100644 --- a/libraries/SocketWrapper/ZephyrUDP.h +++ b/libraries/SocketWrapper/ZephyrUDP.h @@ -33,300 +33,299 @@ class ZephyrUDP : public arduino::UDP { private: - int _socket; + int _socket; public: - ZephyrUDP() : _socket(-1) {} // Constructor - ~ZephyrUDP() { - stop(); - } - - // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use - virtual uint8_t begin(uint16_t port) { - - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = INADDR_ANY; - - _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - - zsock_ioctl(_socket, ZFD_IOCTL_FIONBIO); - - if (::bind(_socket, (struct sockaddr*)&addr, sizeof(addr)) < 0) { - ::close(_socket); - _socket = -1; - return false; - } - - return true; - } - - // initialize, start listening on specified multicast IP address and port. Returns 1 if successful, 0 if there are no sockets available to use - virtual uint8_t beginMulticast(IPAddress ip, uint16_t port) { - bool ret = begin(port); - if (ret == false) { - return false; - } - - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = ip; - - net_if_ipv4_maddr_join(net_if_get_by_index(1), net_if_ipv4_maddr_add(net_if_get_by_index(1), (struct in_addr*)&addr)); - return true; - } - - // Finish with the UDP socket - virtual void stop() { - if (_socket != -1) { - ::close(_socket); - _socket = -1; - } - } - - // Sending UDP packets - - // Start building up a packet to send to the remote host specific in ip and port - // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port - virtual int beginPacket(IPAddress ip, uint16_t port) { - _send_to_ip = ip; - _send_to_port = port; - - /* Make sure that the transmit data buffer is empty. */ - _tx_data.clear(); - return true; - } - - // Start building up a packet to send to the remote host specific in host and port - // Returns 1 if successful, 0 if there was a problem resolving the hostname or port - virtual int beginPacket(const char* host, uint16_t port) { - // Resolve address - struct addrinfo hints; - struct addrinfo *res; - - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_DGRAM; - - int resolve_attempts = 100; - int ret; - - while (resolve_attempts--) { - ret = getaddrinfo(host, String(port).c_str(), &hints, &res); - - if (ret == 0) { - break; - } else { - k_sleep(K_MSEC(1)); - } - } - - if (ret != 0) { - return false; - } - - return beginPacket(IPAddress(((sockaddr_in*)(res->ai_addr))->sin_addr.s_addr), port); - } - - // Finish off this packet and send it - // Returns 1 if the packet was sent successfully, 0 if there was an error - virtual int endPacket() { - struct sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(_send_to_port); - addr.sin_addr.s_addr = _send_to_ip; - return ::sendto(_socket, _tx_data.data(), _tx_data.size(), 0, (sockaddr*)&addr, sizeof(addr)); - } - - // Write a single byte into the packet - virtual size_t write(uint8_t data) { - _tx_data.push_back(data); - return 1; - } - - // Write size bytes from buffer into the packet - virtual size_t write(uint8_t* buffer, size_t size) { - std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); - return size; - } - - // Write size bytes from buffer into the packet - virtual size_t write(const uint8_t* buffer, size_t size) { - std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); - return size; - } - - using Print::write; - - int parsePacket() - { - struct sockaddr_in addr; - socklen_t addrlen = sizeof(addr); - uint8_t tmp_buf[512]; - - int ret = ::recvfrom(_socket, tmp_buf, sizeof(tmp_buf), 0, (sockaddr*)&addr, &addrlen); - if (ret > 0) - { - auto pkt = std::make_shared( - IPAddress(addr.sin_addr.s_addr), - ntohs(addr.sin_port), tmp_buf, ret); - - _rx_pkt_list.push_back(pkt); - - // drop the oldest packet if the list is full - if(_rx_pkt_list.size() > _rx_pkt_list_size) { - _rx_pkt_list.pop_front(); - } - } - - if (_rx_pkt_list.size()) - { - /* Discard UdpRxPacket object previously held by _rx_pkt - * and replace it with the new one. - */ - _rx_pkt = _rx_pkt_list.front(); - _rx_pkt_list.pop_front(); - return _rx_pkt->totalSize(); - } - else - { - /* Otherwise ensure that _rx_pkt definitely - * does not hold any UdpRxPacket object anymore. - */ - _rx_pkt.reset(); - return 0; - } - } - - int available() - { - if (_rx_pkt) - return _rx_pkt->available(); - else - return 0; - } - - int read() - { - if (_rx_pkt) - return _rx_pkt->read(); - else - return -1; - } - - int read(unsigned char* buffer, size_t len) - { - if (_rx_pkt) - return _rx_pkt->read(buffer, len); - else - return -1; - } - - int read(char* buffer, size_t len) - { - if (_rx_pkt) - return _rx_pkt->read(buffer, len); - else - return -1; - } - - int peek() - { - if (_rx_pkt) - return _rx_pkt->peek(); - else - return -1; - } - - void flush() - { - /* Delete UdpRxPacket object held by _rx_pkt. */ - if (_rx_pkt) - _rx_pkt.reset(); - } - - virtual IPAddress remoteIP() { - if (_rx_pkt) - return _rx_pkt->remoteIP(); - else - return IPAddress(); - } - - virtual uint16_t remotePort() { - if (_rx_pkt) - return _rx_pkt->remotePort(); - else - return 0; - } + ZephyrUDP() : _socket(-1) { + } // Constructor + + ~ZephyrUDP() { + stop(); + } + + // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no + // sockets available to use + virtual uint8_t begin(uint16_t port) { + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_ANY; + + _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + + zsock_ioctl(_socket, ZFD_IOCTL_FIONBIO); + + if (::bind(_socket, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + ::close(_socket); + _socket = -1; + return false; + } + + return true; + } + + // initialize, start listening on specified multicast IP address and port. Returns 1 if + // successful, 0 if there are no sockets available to use + virtual uint8_t beginMulticast(IPAddress ip, uint16_t port) { + bool ret = begin(port); + if (ret == false) { + return false; + } + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = ip; + + net_if_ipv4_maddr_join( + net_if_get_by_index(1), + net_if_ipv4_maddr_add(net_if_get_by_index(1), (struct in_addr *)&addr)); + return true; + } + + // Finish with the UDP socket + virtual void stop() { + if (_socket != -1) { + ::close(_socket); + _socket = -1; + } + } + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) { + _send_to_ip = ip; + _send_to_port = port; + + /* Make sure that the transmit data buffer is empty. */ + _tx_data.clear(); + return true; + } + + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) { + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + int resolve_attempts = 100; + int ret; + + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } + + if (ret != 0) { + return false; + } + + return beginPacket(IPAddress(((sockaddr_in *)(res->ai_addr))->sin_addr.s_addr), port); + } + + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() { + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(_send_to_port); + addr.sin_addr.s_addr = _send_to_ip; + return ::sendto(_socket, _tx_data.data(), _tx_data.size(), 0, (sockaddr *)&addr, + sizeof(addr)); + } + + // Write a single byte into the packet + virtual size_t write(uint8_t data) { + _tx_data.push_back(data); + return 1; + } + + // Write size bytes from buffer into the packet + virtual size_t write(uint8_t *buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + using Print::write; + + int parsePacket() { + struct sockaddr_in addr; + socklen_t addrlen = sizeof(addr); + uint8_t tmp_buf[512]; + + int ret = ::recvfrom(_socket, tmp_buf, sizeof(tmp_buf), 0, (sockaddr *)&addr, &addrlen); + if (ret > 0) { + auto pkt = std::make_shared(IPAddress(addr.sin_addr.s_addr), + ntohs(addr.sin_port), tmp_buf, ret); + + _rx_pkt_list.push_back(pkt); + + // drop the oldest packet if the list is full + if (_rx_pkt_list.size() > _rx_pkt_list_size) { + _rx_pkt_list.pop_front(); + } + } + + if (_rx_pkt_list.size()) { + /* Discard UdpRxPacket object previously held by _rx_pkt + * and replace it with the new one. + */ + _rx_pkt = _rx_pkt_list.front(); + _rx_pkt_list.pop_front(); + return _rx_pkt->totalSize(); + } else { + /* Otherwise ensure that _rx_pkt definitely + * does not hold any UdpRxPacket object anymore. + */ + _rx_pkt.reset(); + return 0; + } + } + + int available() { + if (_rx_pkt) { + return _rx_pkt->available(); + } else { + return 0; + } + } + + int read() { + if (_rx_pkt) { + return _rx_pkt->read(); + } else { + return -1; + } + } + + int read(unsigned char *buffer, size_t len) { + if (_rx_pkt) { + return _rx_pkt->read(buffer, len); + } else { + return -1; + } + } + + int read(char *buffer, size_t len) { + if (_rx_pkt) { + return _rx_pkt->read(buffer, len); + } else { + return -1; + } + } + + int peek() { + if (_rx_pkt) { + return _rx_pkt->peek(); + } else { + return -1; + } + } + + void flush() { + /* Delete UdpRxPacket object held by _rx_pkt. */ + if (_rx_pkt) { + _rx_pkt.reset(); + } + } + + virtual IPAddress remoteIP() { + if (_rx_pkt) { + return _rx_pkt->remoteIP(); + } else { + return IPAddress(); + } + } + + virtual uint16_t remotePort() { + if (_rx_pkt) { + return _rx_pkt->remotePort(); + } else { + return 0; + } + } private: - - /* UDP TRANSMISSION */ - IPAddress _send_to_ip; - uint16_t _send_to_port; - std::vector _tx_data; - int _rx_pkt_list_size = 10; - /* UDP RECEPTION */ - class UdpRxPacket - { - private: - IPAddress const _remote_ip; - uint16_t const _remote_port; - size_t const _rx_data_len; - std::deque _rx_data; - - public: - UdpRxPacket( - IPAddress const remote_ip, - uint16_t const remote_port, - uint8_t const * p_data, - size_t const data_len) - : _remote_ip(remote_ip) - , _remote_port(remote_port) - , _rx_data_len(data_len) - , _rx_data(p_data, p_data + data_len) - { - } - - typedef std::shared_ptr SharedPtr; - - IPAddress remoteIP() const { return _remote_ip; } - uint16_t remotePort() const { return _remote_port; } - size_t totalSize() const { return _rx_data_len; } - - int available() - { - return _rx_data.size(); - } - - int read() - { - uint8_t const data = _rx_data.front(); - _rx_data.pop_front(); - return data; - } - - int read(unsigned char* buffer, size_t len) - { - size_t bytes_read = 0; - for (; bytes_read < len && !_rx_data.empty(); bytes_read++) - { - buffer[bytes_read] = _rx_data.front(); - _rx_data.pop_front(); - } - return bytes_read; - } - - int read(char* buffer, size_t len) - { - return read((unsigned char*)buffer, len); - } - - int peek() - { - return _rx_data.front(); - } - }; - std::list _rx_pkt_list; - UdpRxPacket::SharedPtr _rx_pkt; + /* UDP TRANSMISSION */ + IPAddress _send_to_ip; + uint16_t _send_to_port; + std::vector _tx_data; + int _rx_pkt_list_size = 10; + + /* UDP RECEPTION */ + class UdpRxPacket { + private: + IPAddress const _remote_ip; + uint16_t const _remote_port; + size_t const _rx_data_len; + std::deque _rx_data; + + public: + UdpRxPacket(IPAddress const remote_ip, uint16_t const remote_port, uint8_t const *p_data, + size_t const data_len) + : _remote_ip(remote_ip), _remote_port(remote_port), _rx_data_len(data_len), + _rx_data(p_data, p_data + data_len) { + } + + typedef std::shared_ptr SharedPtr; + + IPAddress remoteIP() const { + return _remote_ip; + } + + uint16_t remotePort() const { + return _remote_port; + } + + size_t totalSize() const { + return _rx_data_len; + } + + int available() { + return _rx_data.size(); + } + + int read() { + uint8_t const data = _rx_data.front(); + _rx_data.pop_front(); + return data; + } + + int read(unsigned char *buffer, size_t len) { + size_t bytes_read = 0; + for (; bytes_read < len && !_rx_data.empty(); bytes_read++) { + buffer[bytes_read] = _rx_data.front(); + _rx_data.pop_front(); + } + return bytes_read; + } + + int read(char *buffer, size_t len) { + return read((unsigned char *)buffer, len); + } + + int peek() { + return _rx_data.front(); + } + }; + + std::list _rx_pkt_list; + UdpRxPacket::SharedPtr _rx_pkt; }; From c5420cf94f84ddcb1e6ee91a1b71eab2b252ca52 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Wed, 3 Sep 2025 17:22:42 +0200 Subject: [PATCH 074/117] ethernet lib: cosmetics clang --- libraries/Ethernet/src/Ethernet.cpp | 109 ++++++++++++++-------------- libraries/Ethernet/src/Ethernet.h | 30 +++++--- 2 files changed, 74 insertions(+), 65 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index 8618b4b14..a497f009a 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -3,117 +3,118 @@ #if DT_HAS_COMPAT_STATUS_OKAY(ethernet_phy) int EthernetClass::begin(uint8_t *mac, unsigned long timeout, unsigned long responseTimeout) { - setMACAddress(mac); - return NetworkInterface::begin(true, 0); + setMACAddress(mac); + return NetworkInterface::begin(true, 0); } int EthernetClass::begin(uint8_t *mac, IPAddress ip) { - IPAddress dns = ip; - dns[3] = 1; + IPAddress dns = ip; + dns[3] = 1; - auto ret = begin(mac, ip, dns); - return ret; + auto ret = begin(mac, ip, dns); + return ret; } int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns) { - IPAddress gateway = ip; - gateway[3] = 1; + IPAddress gateway = ip; + gateway[3] = 1; - auto ret = begin(mac, ip, dns, gateway); - return ret; + auto ret = begin(mac, ip, dns, gateway); + return ret; } int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) { - IPAddress subnet(255, 255, 255, 0); - auto ret = begin(mac, ip, dns, gateway, subnet); - return ret; + IPAddress subnet(255, 255, 255, 0); + auto ret = begin(mac, ip, dns, gateway, subnet); + return ret; } -int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout, unsigned long responseTimeout) { - setMACAddress(mac); +int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, + IPAddress subnet, unsigned long timeout, unsigned long responseTimeout) { + setMACAddress(mac); - if (!NetworkInterface::setLocalIPFull(ip, subnet, gateway)) { - return 0; - } + if (!NetworkInterface::setLocalIPFull(ip, subnet, gateway)) { + return 0; + } - if (!net_if_is_up(netif)) { - net_if_up(netif); - } + if (!net_if_is_up(netif)) { + net_if_up(netif); + } - return 1; + return 1; } EthernetLinkStatus EthernetClass::linkStatus() { - if ((hardwareStatus() == EthernetOk) && net_if_is_up(netif)) { - return LinkON; - } - return LinkOFF; + if ((hardwareStatus() == EthernetOk) && net_if_is_up(netif)) { + return LinkON; + } + return LinkOFF; } EthernetHardwareStatus EthernetClass::hardwareStatus() { - const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); - if (device_is_ready(dev)) { - for (int i = 1; i < 3; i++) { - auto _if = net_if_get_by_index(i); - if (!net_eth_type_is_wifi(_if)) { - netif = _if; - break; - } - } - return EthernetOk; - } else { - return EthernetNoHardware; - } -} + const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); + if (device_is_ready(dev)) { + for (int i = 1; i < 3; i++) { + auto _if = net_if_get_by_index(i); + if (!net_eth_type_is_wifi(_if)) { + netif = _if; + break; + } + } + return EthernetOk; + } else { + return EthernetNoHardware; + } +} int EthernetClass::disconnect() { - return NetworkInterface::disconnect(); + return NetworkInterface::disconnect(); } void EthernetClass::end() { - disconnect(); + disconnect(); } void EthernetClass::setMACAddress(const uint8_t *mac_address) { - if (mac_address != nullptr) { - NetworkInterface::setMACAddress(mac_address); - } + if (mac_address != nullptr) { + NetworkInterface::setMACAddress(mac_address); + } } void EthernetClass::MACAddress(uint8_t *mac_address) { - setMACAddress(mac_address); + setMACAddress(mac_address); } IPAddress EthernetClass::localIP() { - return NetworkInterface::localIP(); + return NetworkInterface::localIP(); } IPAddress EthernetClass::subnetMask() { - return NetworkInterface::subnetMask(); + return NetworkInterface::subnetMask(); } IPAddress EthernetClass::gatewayIP() { - return NetworkInterface::gatewayIP(); + return NetworkInterface::gatewayIP(); } IPAddress EthernetClass::dnsServerIP() { - return NetworkInterface::dnsServerIP(); + return NetworkInterface::dnsServerIP(); } void EthernetClass::setLocalIP(const IPAddress local_ip) { - NetworkInterface::setLocalIP(local_ip); + NetworkInterface::setLocalIP(local_ip); } void EthernetClass::setSubnetMask(const IPAddress subnet) { - NetworkInterface::setSubnetMask(subnet); + NetworkInterface::setSubnetMask(subnet); } void EthernetClass::setGatewayIP(const IPAddress gateway) { - NetworkInterface::setGatewayIP(gateway); + NetworkInterface::setGatewayIP(gateway); } void EthernetClass::setDnsServerIP(const IPAddress dns_server) { - NetworkInterface::setDnsServerIP(dns_server); + NetworkInterface::setDnsServerIP(dns_server); } EthernetClass Ethernet; diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index 52913e6ac..e0b163895 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -5,23 +5,26 @@ #if DT_HAS_COMPAT_STATUS_OKAY(ethernet_phy) enum EthernetLinkStatus { - Unknown, - LinkON, - LinkOFF + Unknown, + LinkON, + LinkOFF }; enum EthernetHardwareStatus { - EthernetNoHardware, - EthernetOk + EthernetNoHardware, + EthernetOk }; -class EthernetClass: public NetworkInterface -{ +class EthernetClass : public NetworkInterface { public: - EthernetClass() {} - virtual ~EthernetClass() {} + EthernetClass() { + } + + virtual ~EthernetClass() { + } - int begin(uint8_t *mac = nullptr, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + int begin(uint8_t *mac = nullptr, unsigned long timeout = 60000, + unsigned long responseTimeout = 4000); int maintain(); EthernetLinkStatus linkStatus(); EthernetHardwareStatus hardwareStatus(); @@ -30,20 +33,25 @@ class EthernetClass: public NetworkInterface int begin(uint8_t *mac, IPAddress ip); int begin(uint8_t *mac, IPAddress ip, IPAddress dns); int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway); - int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); + int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, + unsigned long timeout = 60000, unsigned long responseTimeout = 4000); int begin(IPAddress ip) { return begin(nullptr, ip); } + int begin(IPAddress ip, IPAddress dns) { return begin(nullptr, ip, dns); } + int begin(IPAddress ip, IPAddress dns, IPAddress gateway) { return begin(nullptr, ip, dns, gateway); } + int begin(IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) { return begin(nullptr, ip, dns, gateway, subnet); } + void init(uint8_t sspin = 10); int disconnect(void); From f59cbaee6410e433140f2a4dc1a682d033157ff5 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Thu, 4 Sep 2025 10:55:05 +0200 Subject: [PATCH 075/117] ethernet lib: restore default WebClientRepeating.ino example --- .../WebClientRepeating/WebClientRepeating.ino | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino index a1c1c7383..786c993f8 100644 --- a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino +++ b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino @@ -12,6 +12,12 @@ #include #include "ZephyrEthernet.h" +// assign a MAC address for the Ethernet controller. +// fill in your address here: +byte mac[] = { + 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED +}; + // Set the static IP address to use if the DHCP fails to assign IPAddress ip(192, 168, 0, 177); IPAddress myDns(192, 168, 0, 1); @@ -42,7 +48,7 @@ void setup() { // start the Ethernet connection: Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { + if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); // Check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) { @@ -54,8 +60,8 @@ void setup() { if (Ethernet.linkStatus() == LinkOFF) { Serial.println("Ethernet cable is not connected."); } - // try to congifure using IP address instead of DHCP: - Ethernet.begin(ip, myDns); + // try to configure using IP address instead of DHCP: + Ethernet.begin(mac, ip, myDns); Serial.print("My IP address: "); Serial.println(Ethernet.localIP()); } else { @@ -86,7 +92,7 @@ void loop() { // this method makes a HTTP connection to the server: void httpRequest() { // close any connection before send a new request. - // This will free the socket on the WiFi shield + // This will free the socket on the Ethernet shield client.stop(); // if there's a successful connection: @@ -105,8 +111,4 @@ void httpRequest() { // if you couldn't make a connection: Serial.println("connection failed"); } -} - - - - +} \ No newline at end of file From 3be4ea01a5427fbe15697c62f526a7b97b5177d4 Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Thu, 4 Sep 2025 11:07:01 +0200 Subject: [PATCH 076/117] ethernet lib: restore default WebServer.ino example --- .../Ethernet/examples/WebServer/WebServer.ino | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/Ethernet/examples/WebServer/WebServer.ino b/libraries/Ethernet/examples/WebServer/WebServer.ino index 81b7dcb90..cf81a0a63 100644 --- a/libraries/Ethernet/examples/WebServer/WebServer.ino +++ b/libraries/Ethernet/examples/WebServer/WebServer.ino @@ -9,7 +9,12 @@ #include "ZephyrClient.h" #include "ZephyrEthernet.h" +// Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: +byte mac[] = { + 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED +}; + IPAddress ip(192, 168, 1, 177); // Initialize the Ethernet server library @@ -33,7 +38,7 @@ void setup() { } // start the Ethernet connection and the server: - Ethernet.begin(ip); + Ethernet.begin(mac, ip); // Check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) { @@ -58,17 +63,17 @@ void loop() { ZephyrClient client = server.accept(); if (client) { Serial.println("new client"); - // an http request ends with a blank line - boolean currentLineIsBlank = true; + // an HTTP request ends with a blank line + bool currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // if you've gotten to the end of the line (received a newline - // character) and the line is blank, the http request has ended, + // character) and the line is blank, the HTTP request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { - // send a standard http response header + // send a standard HTTP response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // the connection will be closed after completion of the response @@ -103,5 +108,4 @@ void loop() { client.stop(); Serial.println("client disconnected"); } -} - +} \ No newline at end of file From 2bdc9147e18824ebbe3a05618eefd907d41bc22b Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Thu, 4 Sep 2025 11:17:29 +0200 Subject: [PATCH 077/117] ethernet lib: move examples to arduino.tips --- .../examples/WebClientRepeating/WebClientRepeating.ino | 7 ++++--- .../WebClientRepeatingSSL/WebClientRepeatingSSL.ino | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino index 786c993f8..07f20b427 100644 --- a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino +++ b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino @@ -25,7 +25,7 @@ IPAddress myDns(192, 168, 0, 1); // initialize the library instance: ZephyrClient client; -char server[] = "www.arduino.cc"; // also change the Host line in httpRequest() +char server[] = "arduino.tips"; // also change the Host line in httpRequest() //IPAddress server(64,131,82,241); unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds @@ -99,8 +99,9 @@ void httpRequest() { if (client.connect(server, 80)) { Serial.println("connecting..."); // send the HTTP GET request: - client.println("GET /latest.txt HTTP/1.1"); - client.println("Host: www.arduino.cc"); + client.println("GET /asciilogo.txt HTTP/1.1"); + client.print("Host: "); + client.println(server); client.println("User-Agent: arduino-ethernet"); client.println("Connection: close"); client.println(); diff --git a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino index 748f63c12..e6c2c9f51 100644 --- a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino +++ b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino @@ -12,7 +12,7 @@ // initialize the library instance: ZephyrSSLClient client; -char server[] = "www.arduino.cc"; +char server[] = "arduino.tips"; int port = 443; // IPAddress server(64,131,82,241); @@ -93,7 +93,7 @@ void httpRequest() if (client.connect(server, port)) { Serial.println("connecting..."); // send the HTTP GET request: - client.println("GET /latest.txt HTTP/1.1"); + client.println("GET /asciilogo.txt HTTP/1.1"); client.print("Host: "); client.println(server); client.println("User-Agent: arduino-ethernet"); From 1eff2863bedebc493d18adb456d28fbecc6d6aab Mon Sep 17 00:00:00 2001 From: Leonardo Cavagnis Date: Thu, 4 Sep 2025 12:23:26 +0200 Subject: [PATCH 078/117] ethernet: fix ethernet in variant MCXN947 --- .../frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf b/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf index cd131438a..867b155ad 100644 --- a/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf +++ b/variants/frdm_mcxn947_mcxn947_cpu0/frdm_mcxn947_mcxn947_cpu0.conf @@ -56,3 +56,4 @@ CONFIG_NET_MGMT_EVENT_STACK_SIZE=8192 CONFIG_NET_TCP=y CONFIG_NET_SOCKETS=y CONFIG_POSIX_API=y +CONFIG_NET_L2_ETHERNET_MGMT=y \ No newline at end of file From 621ab5676a1885a02f800e7e967aa9ecf77ac09a Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Oct 2025 08:54:52 +0200 Subject: [PATCH 079/117] ethernet: fix architecture in library properties --- libraries/Ethernet/library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Ethernet/library.properties b/libraries/Ethernet/library.properties index 425b3a151..b77a843fc 100644 --- a/libraries/Ethernet/library.properties +++ b/libraries/Ethernet/library.properties @@ -6,5 +6,5 @@ sentence=Enables network connection (local and Internet) using Ethernet on Zephy paragraph=With this library you can connect to Internet via Ethernet. The library provides both Client and server functionalities. The library permits you to connect to a local network also with DHCP and to resolve DNS. category=Communication url=http://www.arduino.cc/en/Reference/Ethernet -architectures=zephyr +architectures=zephyr_main,zephyr_contrib includes=Ethernet.h From aae3937a20ea35f5e3782d7f5a41bb7c8aafcdac Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Oct 2025 11:48:20 +0200 Subject: [PATCH 080/117] ethernet: fix interface discovery on c33 --- libraries/Ethernet/src/Ethernet.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index a497f009a..a3e26da1d 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -54,9 +54,9 @@ EthernetLinkStatus EthernetClass::linkStatus() { EthernetHardwareStatus EthernetClass::hardwareStatus() { const struct device *const dev = DEVICE_DT_GET(DT_COMPAT_GET_ANY_STATUS_OKAY(ethernet_phy)); if (device_is_ready(dev)) { - for (int i = 1; i < 3; i++) { + for (int i = 1; i < 4; i++) { auto _if = net_if_get_by_index(i); - if (!net_eth_type_is_wifi(_if)) { + if (_if && !net_eth_type_is_wifi(_if)) { netif = _if; break; } From 44b226dd8e2d1109be8ddc3b1120b47071cc0b1e Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Fri, 10 Oct 2025 12:10:35 +0200 Subject: [PATCH 081/117] README: make it clear this is a downstream fork --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ce6765cea..373b6dc8b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,12 @@ # 🚧 Arduino Core for Zephyr -This repository contains the official implementation of **Arduino Core** for Zephyr RTOS based board. +This repository is a downstream fork of the [Arduino Core for Zephyr RTOS-based +boards](https://github.com/zephyrproject-rtos/arduino-core-zephyr) that +includes support for Arduino software tools, allowing it to be seamlessly used +by the [Arduino IDE](https://docs.arduino.cc/software/ide/), +[Arduino CLI](https://docs.arduino.cc/arduino-cli/) and +[Arduino AppLab](https://docs.arduino.cc/software/app-lab/). ## 🧐 What is Zephyr? From c9cfdeb67c3604d04d5b3d704fb04b78cd0f98dc Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Oct 2025 14:23:05 +0200 Subject: [PATCH 082/117] ethernet: fix MACAddress(uint8_t *mac) --- libraries/Ethernet/src/Ethernet.cpp | 4 ---- libraries/Ethernet/src/Ethernet.h | 1 - libraries/SocketWrapper/SocketHelpers.cpp | 7 +++++++ libraries/SocketWrapper/SocketHelpers.h | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index a3e26da1d..6d13fd5c3 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -81,10 +81,6 @@ void EthernetClass::setMACAddress(const uint8_t *mac_address) { } } -void EthernetClass::MACAddress(uint8_t *mac_address) { - setMACAddress(mac_address); -} - IPAddress EthernetClass::localIP() { return NetworkInterface::localIP(); } diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index e0b163895..3e3eb46c7 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -57,7 +57,6 @@ class EthernetClass : public NetworkInterface { int disconnect(void); void end(void); - void MACAddress(uint8_t *mac_address); IPAddress localIP(); IPAddress subnetMask(); IPAddress gatewayIP(); diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index 7ca9a0e7c..c5d184bfc 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -92,6 +92,13 @@ void NetworkInterface::enable_dhcpv4_server(struct net_if *netif, char *_netmask LOG_INF("DHCPv4 server started...\n"); } +void NetworkInterface::MACAddress(uint8_t *mac) { + if (netif == NULL || netif->if_dev == NULL || mac == NULL) { + return; + } + memcpy(mac, netif->if_dev->link_addr.addr, netif->if_dev->link_addr.len); +} + IPAddress NetworkInterface::localIP() { return IPAddress(netif->config.ip.ipv4->unicast[0].ipv4.address.in_addr.s_addr); } diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index ecf638d6b..81dd74704 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -43,8 +43,8 @@ class NetworkInterface { ~NetworkInterface() { } + void MACAddress(uint8_t *mac); IPAddress localIP(); - IPAddress subnetMask(); IPAddress gatewayIP(); IPAddress dnsServerIP(); From 7a10967790dd8fd4739cc832d59bb80b8920868f Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Oct 2025 16:47:04 +0200 Subject: [PATCH 083/117] ethernet: fix setMACAddress --- libraries/SocketWrapper/SocketHelpers.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index c5d184bfc..483683318 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -116,10 +116,17 @@ IPAddress NetworkInterface::dnsServerIP() { } void NetworkInterface::setMACAddress(const uint8_t *mac) { - struct net_eth_addr new_mac; struct ethernet_req_params params = {0}; - memcpy(¶ms.mac_address, &new_mac, sizeof(struct net_eth_addr)); + if (mac == nullptr) { + LOG_ERR("MAC address pointer is null"); + return; + } + memcpy(¶ms.mac_address, mac, sizeof(struct net_eth_addr)); + if (!net_eth_is_addr_valid(¶ms.mac_address)) { + LOG_ERR("Invalid MAC address"); + return; + } net_if_down(netif); // Ensure the interface is down before changing the MAC address From 4194abeb0ac55ddaf17692a54bf70abdd87ded1f Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 26 Sep 2025 12:38:40 +0200 Subject: [PATCH 084/117] WiFi: add SSID() and RSSI() --- libraries/SocketWrapper/WiFi.h | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/SocketWrapper/WiFi.h index df61620c4..74b35a2b2 100644 --- a/libraries/SocketWrapper/WiFi.h +++ b/libraries/SocketWrapper/WiFi.h @@ -80,14 +80,12 @@ class WiFiClass : public NetworkInterface { } int status() { - struct wifi_iface_status status = {0}; - - if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, netif, &status, + if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, netif, &sta_state, sizeof(struct wifi_iface_status))) { return WL_NO_SHIELD; } - if (status.state >= WIFI_STATE_ASSOCIATED) { + if (sta_state.state >= WIFI_STATE_ASSOCIATED) { return WL_CONNECTED; } else { return WL_DISCONNECTED; @@ -99,12 +97,28 @@ class WiFiClass : public NetworkInterface { // TODO: borrow code from mbed core for scan results handling } + char *SSID() { + if (status() == WL_CONNECTED) { + return (char *)sta_state.ssid; + } + return nullptr; + } + + int32_t RSSI() { + if (status() == WL_CONNECTED) { + return sta_state.rssi; + } + return 0; + } + private: struct net_if *sta_iface = nullptr; struct net_if *ap_iface = nullptr; struct wifi_connect_req_params ap_config; struct wifi_connect_req_params sta_config; + + struct wifi_iface_status sta_state = {0}; }; extern WiFiClass WiFi; From e79089d3d50aa89899a3808bfcdce44994beb643 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Jun 2025 15:38:23 +0200 Subject: [PATCH 085/117] WiFi: allow status() to be called before begin() --- libraries/SocketWrapper/WiFi.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/SocketWrapper/WiFi.h index 74b35a2b2..9241a908a 100644 --- a/libraries/SocketWrapper/WiFi.h +++ b/libraries/SocketWrapper/WiFi.h @@ -80,6 +80,8 @@ class WiFiClass : public NetworkInterface { } int status() { + sta_iface = net_if_get_wifi_sta(); + netif = sta_iface; if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, netif, &sta_state, sizeof(struct wifi_iface_status))) { return WL_NO_SHIELD; From 0ab3eb93cb6d26f24bce424d7fc32a3a2533767e Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Jun 2025 15:40:27 +0200 Subject: [PATCH 086/117] WiFi: wait for event NET_EVENT_WIFI_CONNECT_RESULT in blocking mode --- libraries/SocketWrapper/WiFi.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/SocketWrapper/WiFi.h index 9241a908a..cdd176ed2 100644 --- a/libraries/SocketWrapper/WiFi.h +++ b/libraries/SocketWrapper/WiFi.h @@ -39,8 +39,8 @@ class WiFiClass : public NetworkInterface { NetworkInterface::begin(false, NET_EVENT_WIFI_MASK); if (blocking) { - net_mgmt_event_wait_on_iface(sta_iface, NET_EVENT_WIFI_AP_STA_CONNECTED, NULL, NULL, - NULL, K_FOREVER); + net_mgmt_event_wait_on_iface(sta_iface, NET_EVENT_WIFI_CONNECT_RESULT, NULL, NULL, NULL, + K_FOREVER); } return true; From 9c44fcd458044e1c180dd72ffd1cf3da39df6e04 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Jun 2025 15:41:15 +0200 Subject: [PATCH 087/117] WiFi: make begin() blocking by default --- libraries/SocketWrapper/WiFi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/SocketWrapper/WiFi.h index cdd176ed2..af36a4915 100644 --- a/libraries/SocketWrapper/WiFi.h +++ b/libraries/SocketWrapper/WiFi.h @@ -18,7 +18,7 @@ class WiFiClass : public NetworkInterface { } bool begin(const char *ssid, const char *passphrase, wl_enc_type security = ENC_TYPE_UNKNOWN, - bool blocking = false) { + bool blocking = true) { sta_iface = net_if_get_wifi_sta(); netif = sta_iface; sta_config.ssid = (const uint8_t *)ssid; From 7d416de0acfb410b6006c662ed5ba8258105714e Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Jun 2025 15:43:51 +0200 Subject: [PATCH 088/117] WiFi: make begin() return status() --- libraries/SocketWrapper/WiFi.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/SocketWrapper/WiFi.h index af36a4915..b4cbd31f6 100644 --- a/libraries/SocketWrapper/WiFi.h +++ b/libraries/SocketWrapper/WiFi.h @@ -17,8 +17,8 @@ class WiFiClass : public NetworkInterface { ~WiFiClass() { } - bool begin(const char *ssid, const char *passphrase, wl_enc_type security = ENC_TYPE_UNKNOWN, - bool blocking = true) { + int begin(const char *ssid, const char *passphrase, wl_enc_type security = ENC_TYPE_UNKNOWN, + bool blocking = true) { sta_iface = net_if_get_wifi_sta(); netif = sta_iface; sta_config.ssid = (const uint8_t *)ssid; @@ -43,7 +43,7 @@ class WiFiClass : public NetworkInterface { K_FOREVER); } - return true; + return status(); } bool beginAP(char *ssid, char *passphrase, int channel = WIFI_CHANNEL_ANY, From e0773dee3d2038498834fc5696baa193a7ec5a82 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Jun 2025 15:49:00 +0200 Subject: [PATCH 089/117] WiFi: add WiFiWebclient example --- .../examples/WiFiWebClient/WiFiWebClient.ino | 106 ++++++++++++++++++ .../examples/WiFiWebClient/arduino_secrets.h | 2 + 2 files changed, 108 insertions(+) create mode 100644 libraries/SocketWrapper/examples/WiFiWebClient/WiFiWebClient.ino create mode 100644 libraries/SocketWrapper/examples/WiFiWebClient/arduino_secrets.h diff --git a/libraries/SocketWrapper/examples/WiFiWebClient/WiFiWebClient.ino b/libraries/SocketWrapper/examples/WiFiWebClient/WiFiWebClient.ino new file mode 100644 index 000000000..a5687041a --- /dev/null +++ b/libraries/SocketWrapper/examples/WiFiWebClient/WiFiWebClient.ino @@ -0,0 +1,106 @@ +/* + Web client + + This sketch connects to a website (http://example.com) using the WiFi module. + + This example is written for a network using WPA encryption. For + WEP or WPA, change the Wifi.begin() call accordingly. + + created 13 July 2010 + by dlf (Metodo2 srl) + modified 31 May 2012 + by Tom Igoe + */ + +#include +#include + +#include "arduino_secrets.h" +///////please enter your sensitive data in the Secret tab/arduino_secrets.h +char ssid[] = SECRET_SSID; // your network SSID (name) +char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) +int keyIndex = 0; // your network key Index number (needed only for WEP) + +int status = WL_IDLE_STATUS; +// if you don't want to use DNS (and reduce your sketch size) +// use the numeric IP instead of the name for the server: +// IPAddress server(93,184,216,34); // IP address for example.com (no DNS) +char server[] = "example.com"; // host name for example.com (using DNS) + +ZephyrClient client; + +void setup() { + //Initialize serial and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // check for the WiFi module: + if (WiFi.status() == WL_NO_SHIELD) { + Serial.println("Communication with WiFi module failed!"); + // don't continue + while (true); + } + + // attempt to connect to Wifi network: + while (status != WL_CONNECTED) { + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + // Connect to WPA/WPA2 network. Change this line if using open or WEP network: + status = WiFi.begin(ssid, pass); + Serial.println(status); + // wait 3 seconds for connection: + delay(3000); + } + Serial.println("Connected to wifi"); + printWifiStatus(); + + Serial.println("\nStarting connection to server..."); + // if you get a connection, report back via serial: + if (client.connect(server, 80)) { + Serial.println("connected to server"); + // Make a HTTP request: + client.println("GET /index.html HTTP/1.1"); + client.print("Host: "); + client.println(server); + client.println("Connection: close"); + client.println(); + } +} + +void loop() { + // if there are incoming bytes available + // from the server, read them and print them: + while (client.available()) { + char c = client.read(); + Serial.write(c); + } + + // if the server's disconnected, stop the client: + if (!client.connected()) { + Serial.println(); + Serial.println("disconnecting from server."); + client.stop(); + + // do nothing forevermore: + while (true); + } +} + +void printWifiStatus() { + // print the SSID of the network you're attached to: + Serial.print("SSID: "); + Serial.println(WiFi.SSID()); + + // print your board's IP address: + IPAddress ip = WiFi.localIP(); + Serial.print("IP Address: "); + Serial.println(ip); + + // print the received signal strength: + long rssi = WiFi.RSSI(); + Serial.print("signal strength (RSSI):"); + Serial.print(rssi); + Serial.println(" dBm"); +} diff --git a/libraries/SocketWrapper/examples/WiFiWebClient/arduino_secrets.h b/libraries/SocketWrapper/examples/WiFiWebClient/arduino_secrets.h new file mode 100644 index 000000000..0c9fdd556 --- /dev/null +++ b/libraries/SocketWrapper/examples/WiFiWebClient/arduino_secrets.h @@ -0,0 +1,2 @@ +#define SECRET_SSID "" +#define SECRET_PASS "" From b15ccf24e32374e71c2edb7a31f1a1b3744d577a Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Oct 2025 17:43:43 +0200 Subject: [PATCH 090/117] ethernet: remove setter overloads --- libraries/Ethernet/src/Ethernet.cpp | 22 --------------- libraries/Ethernet/src/Ethernet.h | 6 ----- libraries/SocketWrapper/SocketHelpers.cpp | 33 ++++++++--------------- libraries/SocketWrapper/SocketHelpers.h | 8 +++--- loader/llext_exports.c | 1 + 5 files changed, 16 insertions(+), 54 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index 6d13fd5c3..289ae0653 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -75,12 +75,6 @@ void EthernetClass::end() { disconnect(); } -void EthernetClass::setMACAddress(const uint8_t *mac_address) { - if (mac_address != nullptr) { - NetworkInterface::setMACAddress(mac_address); - } -} - IPAddress EthernetClass::localIP() { return NetworkInterface::localIP(); } @@ -97,21 +91,5 @@ IPAddress EthernetClass::dnsServerIP() { return NetworkInterface::dnsServerIP(); } -void EthernetClass::setLocalIP(const IPAddress local_ip) { - NetworkInterface::setLocalIP(local_ip); -} - -void EthernetClass::setSubnetMask(const IPAddress subnet) { - NetworkInterface::setSubnetMask(subnet); -} - -void EthernetClass::setGatewayIP(const IPAddress gateway) { - NetworkInterface::setGatewayIP(gateway); -} - -void EthernetClass::setDnsServerIP(const IPAddress dns_server) { - NetworkInterface::setDnsServerIP(dns_server); -} - EthernetClass Ethernet; #endif diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index 3e3eb46c7..487b17459 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -62,12 +62,6 @@ class EthernetClass : public NetworkInterface { IPAddress gatewayIP(); IPAddress dnsServerIP(); - void setMACAddress(const uint8_t *mac_address); - void setLocalIP(const IPAddress local_ip); - void setSubnetMask(const IPAddress subnet); - void setGatewayIP(const IPAddress gateway); - void setDnsServerIP(const IPAddress dns_server); - void setRetransmissionTimeout(uint16_t milliseconds); void setRetransmissionCount(uint8_t num); }; diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index 483683318..e35201d80 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -163,51 +163,40 @@ bool NetworkInterface::setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress return false; } - if (!net_if_ipv4_set_netmask_by_addr(netif, &ip_addr, &subnet_addr)) { - LOG_ERR("Failed to set subnet mask"); - return false; - } - + net_if_ipv4_set_netmask(netif, &subnet_addr); net_if_ipv4_set_gw(netif, &gw_addr); LOG_INF("Static IP configured"); return true; } -bool NetworkInterface::setLocalIP(IPAddress ip) { +void NetworkInterface::setLocalIP(const IPAddress ip) { struct in_addr addr; addr.s_addr = ip; if (!net_if_ipv4_addr_add(netif, &addr, NET_ADDR_MANUAL, 0)) { LOG_ERR("Failed to set local IP address"); - return false; + return; } - LOG_INF("Local IP address set: %s", ip.toString().c_str()); - return true; + return; } -bool NetworkInterface::setSubnetMask(IPAddress subnet) { +void NetworkInterface::setSubnetMask(const IPAddress subnet) { struct in_addr netmask_addr; netmask_addr.s_addr = subnet; - - if (!net_if_ipv4_set_netmask_by_addr(netif, &netmask_addr, &netmask_addr)) { - LOG_ERR("Failed to set subnet mask"); - return false; - } - + net_if_ipv4_set_netmask(netif, &netmask_addr); LOG_INF("Subnet mask set: %s", subnet.toString().c_str()); - return true; + return; } -bool NetworkInterface::setGatewayIP(IPAddress gateway) { +void NetworkInterface::setGatewayIP(const IPAddress gateway) { struct in_addr gw_addr; gw_addr.s_addr = gateway; - net_if_ipv4_set_gw(netif, &gw_addr); LOG_INF("Gateway IP set: %s", gateway.toString().c_str()); - return true; + return; } -bool NetworkInterface::setDnsServerIP(IPAddress dns_server) { - return false; // DNS server dynamic configuration is not supported +void NetworkInterface::setDnsServerIP(const IPAddress dns_server) { + return; // DNS server dynamic configuration is not supported } diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index 81dd74704..3e2eb51a8 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -51,10 +51,10 @@ class NetworkInterface { void setMACAddress(const uint8_t *mac); bool setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway); - bool setLocalIP(IPAddress ip); - bool setSubnetMask(IPAddress subnet); - bool setGatewayIP(IPAddress gateway); - bool setDnsServerIP(IPAddress dns_server); + void setLocalIP(const IPAddress ip); + void setSubnetMask(const IPAddress subnet); + void setGatewayIP(const IPAddress gateway); + void setDnsServerIP(const IPAddress dns_server); int begin(bool blocking = true, uint32_t additional_event_mask = 0); diff --git a/loader/llext_exports.c b/loader/llext_exports.c index 26b672f3a..054d20cd0 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -78,6 +78,7 @@ FORCE_EXPORT_SYM(net_if_ipv4_maddr_add); FORCE_EXPORT_SYM(net_if_ipv4_maddr_join); FORCE_EXPORT_SYM(net_if_ipv4_set_gw); FORCE_EXPORT_SYM(net_if_ipv4_addr_add); +FORCE_EXPORT_SYM(net_if_ipv4_set_netmask); FORCE_EXPORT_SYM(net_if_ipv4_set_netmask_by_addr); #endif FORCE_EXPORT_SYM(net_if_lookup_by_dev); From 8782a2428c472dce3e94307938d1f2bcaf62681d Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Oct 2025 17:50:26 +0200 Subject: [PATCH 091/117] ethernet: remove disconnect overload --- libraries/Ethernet/src/Ethernet.cpp | 4 ---- libraries/Ethernet/src/Ethernet.h | 2 -- 2 files changed, 6 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index 289ae0653..af9dfc94d 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -67,10 +67,6 @@ EthernetHardwareStatus EthernetClass::hardwareStatus() { } } -int EthernetClass::disconnect() { - return NetworkInterface::disconnect(); -} - void EthernetClass::end() { disconnect(); } diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index 487b17459..30b9271cf 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -53,8 +53,6 @@ class EthernetClass : public NetworkInterface { } void init(uint8_t sspin = 10); - - int disconnect(void); void end(void); IPAddress localIP(); From b635f92395af172495f1992a8863092ddd6445b0 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 10:06:17 +0200 Subject: [PATCH 092/117] ethernet: remove getters overloads --- libraries/Ethernet/src/Ethernet.cpp | 16 ---------------- libraries/Ethernet/src/Ethernet.h | 5 ----- 2 files changed, 21 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index af9dfc94d..d98e8bfcc 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -71,21 +71,5 @@ void EthernetClass::end() { disconnect(); } -IPAddress EthernetClass::localIP() { - return NetworkInterface::localIP(); -} - -IPAddress EthernetClass::subnetMask() { - return NetworkInterface::subnetMask(); -} - -IPAddress EthernetClass::gatewayIP() { - return NetworkInterface::gatewayIP(); -} - -IPAddress EthernetClass::dnsServerIP() { - return NetworkInterface::dnsServerIP(); -} - EthernetClass Ethernet; #endif diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index 30b9271cf..f659dbc8e 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -55,11 +55,6 @@ class EthernetClass : public NetworkInterface { void init(uint8_t sspin = 10); void end(void); - IPAddress localIP(); - IPAddress subnetMask(); - IPAddress gatewayIP(); - IPAddress dnsServerIP(); - void setRetransmissionTimeout(uint16_t milliseconds); void setRetransmissionCount(uint8_t num); }; From cd9baaee2de75d933feeacff652758346b035a53 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 11:48:07 +0200 Subject: [PATCH 093/117] networkInterface: rename setLocalIPFull to config --- libraries/Ethernet/src/Ethernet.cpp | 2 +- libraries/SocketWrapper/SocketHelpers.cpp | 23 +++++++---------------- libraries/SocketWrapper/SocketHelpers.h | 3 ++- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index d98e8bfcc..cf635825c 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -33,7 +33,7 @@ int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress ga IPAddress subnet, unsigned long timeout, unsigned long responseTimeout) { setMACAddress(mac); - if (!NetworkInterface::setLocalIPFull(ip, subnet, gateway)) { + if (!NetworkInterface::config(ip, subnet, gateway)) { return 0; } diff --git a/libraries/SocketWrapper/SocketHelpers.cpp b/libraries/SocketWrapper/SocketHelpers.cpp index e35201d80..da15b3a30 100644 --- a/libraries/SocketWrapper/SocketHelpers.cpp +++ b/libraries/SocketWrapper/SocketHelpers.cpp @@ -151,22 +151,13 @@ bool NetworkInterface::disconnect() { return (net_if_down(netif) == 0); } -bool NetworkInterface::setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway) { - struct in_addr ip_addr, subnet_addr, gw_addr; - - ip_addr.s_addr = ip; - subnet_addr.s_addr = subnet; - gw_addr.s_addr = gateway; - - if (!net_if_ipv4_addr_add(netif, &ip_addr, NET_ADDR_MANUAL, 0)) { - LOG_ERR("Failed to set static IP address"); - return false; - } - - net_if_ipv4_set_netmask(netif, &subnet_addr); - net_if_ipv4_set_gw(netif, &gw_addr); - LOG_INF("Static IP configured"); - return true; +void NetworkInterface::config(const IPAddress ip, const IPAddress dns_server, + const IPAddress gateway, const IPAddress subnet) { + setLocalIP(ip); + setDnsServerIP(dns_server); + setGatewayIP(gateway); + setSubnetMask(subnet); + return; } void NetworkInterface::setLocalIP(const IPAddress ip) { diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index 3e2eb51a8..0db81e039 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -49,8 +49,9 @@ class NetworkInterface { IPAddress gatewayIP(); IPAddress dnsServerIP(); + void config(const IPAddress ip, const IPAddress dns_server, const IPAddress gateway, + const IPAddress subnet); void setMACAddress(const uint8_t *mac); - bool setLocalIPFull(IPAddress ip, IPAddress subnet, IPAddress gateway); void setLocalIP(const IPAddress ip); void setSubnetMask(const IPAddress subnet); void setGatewayIP(const IPAddress gateway); From 35998e98a80cabb1dbcd8ef4fa961949328e5107 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 12:19:19 +0200 Subject: [PATCH 094/117] ethernet: refactor begin() --- libraries/Ethernet/src/Ethernet.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index cf635825c..60ce74aac 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -3,8 +3,13 @@ #if DT_HAS_COMPAT_STATUS_OKAY(ethernet_phy) int EthernetClass::begin(uint8_t *mac, unsigned long timeout, unsigned long responseTimeout) { + (void)timeout; + (void)responseTimeout; + if (hardwareStatus() != EthernetOk) { + return 0; + } setMACAddress(mac); - return NetworkInterface::begin(true, 0); + return NetworkInterface::begin(); } int EthernetClass::begin(uint8_t *mac, IPAddress ip) { @@ -31,16 +36,16 @@ int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress ga int EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet, unsigned long timeout, unsigned long responseTimeout) { - setMACAddress(mac); - - if (!NetworkInterface::config(ip, subnet, gateway)) { + (void)timeout; + (void)responseTimeout; + if (hardwareStatus() != EthernetOk) { return 0; } - + setMACAddress(mac); + config(ip, dns, gateway, subnet); if (!net_if_is_up(netif)) { net_if_up(netif); } - return 1; } From 64790876fd179e52bdf685cf0a4b75c1fe3e873c Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 12:57:37 +0200 Subject: [PATCH 095/117] ethernet: remove init() should be commented by default in the examples --- libraries/Ethernet/src/Ethernet.h | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h index f659dbc8e..617e900b0 100644 --- a/libraries/Ethernet/src/Ethernet.h +++ b/libraries/Ethernet/src/Ethernet.h @@ -52,7 +52,6 @@ class EthernetClass : public NetworkInterface { return begin(nullptr, ip, dns, gateway, subnet); } - void init(uint8_t sspin = 10); void end(void); void setRetransmissionTimeout(uint16_t milliseconds); From 98aba7347c8d6c51dbc7f24e6b27b32ee0fd8c41 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 13:00:45 +0200 Subject: [PATCH 096/117] ethernet: add maintain() dummy implementation --- libraries/Ethernet/src/Ethernet.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index 60ce74aac..ad111a4aa 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -12,6 +12,10 @@ int EthernetClass::begin(uint8_t *mac, unsigned long timeout, unsigned long resp return NetworkInterface::begin(); } +int EthernetClass::maintain() { + return 0; // DHCP_CHECK_NONE +} + int EthernetClass::begin(uint8_t *mac, IPAddress ip) { IPAddress dns = ip; dns[3] = 1; From 21553b38cf471648d1a427a4e65846e09da98412 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 15:16:25 +0200 Subject: [PATCH 097/117] ethernet: add dummy implementation of setRetransmissionTimeout --- libraries/Ethernet/src/Ethernet.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index ad111a4aa..f364c332a 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -80,5 +80,9 @@ void EthernetClass::end() { disconnect(); } +void EthernetClass::setRetransmissionTimeout(uint16_t milliseconds) { + (void)milliseconds; +} + EthernetClass Ethernet; #endif From 17485b7fa7dbf18d052a8157aeb6a80221e49b58 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 15:16:47 +0200 Subject: [PATCH 098/117] ethernet: add dummy implementation of setRetransmissionCount --- libraries/Ethernet/src/Ethernet.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp index f364c332a..bdddefc7c 100644 --- a/libraries/Ethernet/src/Ethernet.cpp +++ b/libraries/Ethernet/src/Ethernet.cpp @@ -84,5 +84,9 @@ void EthernetClass::setRetransmissionTimeout(uint16_t milliseconds) { (void)milliseconds; } +void EthernetClass::setRetransmissionCount(uint8_t num) { + (void)num; +} + EthernetClass Ethernet; #endif From 2c8f2875586f334c0a00d35c55bacc44ab32ab5a Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 14:17:59 +0200 Subject: [PATCH 099/117] ethernet: uniform example Waiting for link on --- .../examples/AdvancedChatServer/AdvancedChatServer.ino | 6 ++---- .../BarometricPressureWebServer.ino | 6 ++---- .../examples/DhcpAddressPrinter/DhcpAddressPrinter.ino | 4 +--- libraries/Ethernet/examples/TelnetClient/TelnetClient.ino | 8 +++++--- .../UDPSendReceiveString/UDPSendReceiveString.ino | 6 ++---- libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino | 4 +--- libraries/Ethernet/examples/WebClient/WebClient.ino | 4 ++-- .../examples/WebClientRepeating/WebClientRepeating.ino | 6 ++---- .../WebClientRepeatingSSL/WebClientRepeatingSSL.ino | 4 +--- 9 files changed, 18 insertions(+), 30 deletions(-) diff --git a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino index 28781ff64..df482cd6a 100644 --- a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino +++ b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino @@ -53,12 +53,10 @@ void setup() { } // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); - delay(100); + Serial.println("Waiting for link on"); + delay(100); } - Serial.println(); // initialize the Ethernet device Ethernet.begin(ip, myDns, gateway, subnet); diff --git a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino index acbcec36c..3a108ca57 100644 --- a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino +++ b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino @@ -65,12 +65,10 @@ void setup() { } // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); - delay(100); + Serial.println("Waiting for link on"); + delay(100); } - Serial.println(); // start the Ethernet connection Ethernet.begin(ip); diff --git a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino index a7e60e999..b181ac977 100644 --- a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino +++ b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino @@ -18,12 +18,10 @@ void setup() } // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); + Serial.println("Waiting for link on"); delay(100); } - Serial.println(); // start the Ethernet connection: Serial.println("Initialize Ethernet with DHCP:"); diff --git a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino index 97f558146..d88d8c10c 100644 --- a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino +++ b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino @@ -35,9 +35,11 @@ void setup() { delay(1); // do nothing, no point running without Ethernet hardware } } - while (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - delay(500); + + // in Zephyr system check if Ethernet is ready before proceeding to initialize + while (Ethernet.linkStatus() != LinkON) { + Serial.println("Waiting for link on"); + delay(100); } // start the Ethernet connection: diff --git a/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino b/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino index c733e15b5..701abdd06 100644 --- a/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino +++ b/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino @@ -28,14 +28,12 @@ void setup() { while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } - + // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); + Serial.println("Waiting for link on"); delay(100); } - Serial.println(); // start the Ethernet Ethernet.begin(ip); diff --git a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino index 41e398595..0186a6e80 100644 --- a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino +++ b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino @@ -31,12 +31,10 @@ void setup() { } // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); + Serial.println("Waiting for link on"); delay(100); } - Serial.println(); // start Ethernet and UDP if (Ethernet.begin() == 0) { diff --git a/libraries/Ethernet/examples/WebClient/WebClient.ino b/libraries/Ethernet/examples/WebClient/WebClient.ino index 6f92a963e..48c7cdb5f 100644 --- a/libraries/Ethernet/examples/WebClient/WebClient.ino +++ b/libraries/Ethernet/examples/WebClient/WebClient.ino @@ -40,8 +40,8 @@ void setup() // in Zephyr system check if Ethernet is ready before proceeding to initialize while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); + Serial.println("Waiting for link on"); + delay(100); } // start the Ethernet connection: diff --git a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino index 07f20b427..9f84258a4 100644 --- a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino +++ b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino @@ -39,12 +39,10 @@ void setup() { } // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); - delay(100); + Serial.println("Waiting for link on"); + delay(100); } - Serial.println(); // start the Ethernet connection: Serial.println("Initialize Ethernet with DHCP:"); diff --git a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino index e6c2c9f51..6da130502 100644 --- a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino +++ b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino @@ -32,12 +32,10 @@ void setup() } // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); + Serial.println("Waiting for link on"); delay(100); } - Serial.println(); // start the Ethernet connection: Serial.println("Initialize Ethernet with DHCP:"); From 0ad6fc06ce52e6a008fa600427cf334d18e19364 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 14:28:56 +0200 Subject: [PATCH 100/117] ethernet: format examples --- .../AdvancedChatServer/AdvancedChatServer.ino | 12 +- .../BarometricPressureWebServer.ino | 23 ++- .../DhcpAddressPrinter/DhcpAddressPrinter.ino | 121 ++++++------- .../examples/TelnetClient/TelnetClient.ino | 12 +- .../UDPSendReceiveString.ino | 10 +- .../examples/UdpNtpClient/UdpNtpClient.ino | 55 +++--- .../Ethernet/examples/WebClient/WebClient.ino | 170 +++++++++--------- .../WebClientRepeating/WebClientRepeating.ino | 11 +- .../WebClientRepeatingSSL.ino | 143 ++++++++------- .../Ethernet/examples/WebServer/WebServer.ino | 6 +- 10 files changed, 269 insertions(+), 294 deletions(-) diff --git a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino index df482cd6a..2a94b9969 100644 --- a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino +++ b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino @@ -49,7 +49,7 @@ void setup() { // start serial port: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } // in Zephyr system check if Ethernet is ready before proceeding to initialize @@ -65,7 +65,7 @@ void setup() { if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { - delay(1); // do nothing, no point running without Ethernet hardware + delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { @@ -83,7 +83,7 @@ void loop() { // check for any new client connecting, and say hello (before any incoming data) ZephyrClient newClient = server.accept(); if (newClient) { - for (byte i=0; i < 8; i++) { + for (byte i = 0; i < 8; i++) { if (!clients[i]) { Serial.print("We have a new client #"); Serial.println(i); @@ -98,13 +98,13 @@ void loop() { } // check for incoming data from all clients - for (byte i=0; i < 8; i++) { + for (byte i = 0; i < 8; i++) { if (clients[i] && clients[i].available() > 0) { // read bytes from a client byte buffer[80]; int count = clients[i].read(buffer, 80); // write the bytes to all other connected clients - for (byte j=0; j < 8; j++) { + for (byte j = 0; j < 8; j++) { if (j != i && clients[j].connected()) { clients[j].write(buffer, count); } @@ -113,7 +113,7 @@ void loop() { } // stop any clients which disconnect - for (byte i=0; i < 8; i++) { + for (byte i = 0; i < 8; i++) { if (clients[i] && !clients[i].connected()) { Serial.print("disconnect client #"); Serial.println(i); diff --git a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino index 3a108ca57..738add8cf 100644 --- a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino +++ b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino @@ -61,7 +61,7 @@ void setup() { // start serial port: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } // in Zephyr system check if Ethernet is ready before proceeding to initialize @@ -77,7 +77,7 @@ void setup() { if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { - delay(1); // do nothing, no point running without Ethernet hardware + delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { @@ -101,7 +101,6 @@ void setup() { //Set the sensor to high resolution mode tp start readings: writeRegister(0x03, 0x0A); - } void loop() { @@ -130,8 +129,8 @@ void getData() { temperature = (float)tempData / 20.0; //Read the pressure data highest 3 bits: - byte pressureDataHigh = readRegister(0x1F, 1); - pressureDataHigh &= 0b00000111; //you only needs bits 2 to 0 + byte pressureDataHigh = readRegister(0x1F, 1); + pressureDataHigh &= 0b00000111; //you only needs bits 2 to 0 //Read the pressure data lower 16 bits: unsigned int pressureDataLow = readRegister(0x20, 2); @@ -196,13 +195,13 @@ void writeRegister(byte registerName, byte registerValue) { // of the byte: registerName <<= 2; // command (read or write) goes in the lower two bits: - registerName |= 0b00000010; //Write command + registerName |= 0b00000010; //Write command // take the chip select low to select the device: digitalWrite(chipSelectPin, LOW); - SPI.transfer(registerName); //Send register location - SPI.transfer(registerValue); //Send value to record into register + SPI.transfer(registerName); //Send register location + SPI.transfer(registerValue); //Send value to record into register // take the chip select high to de-select: digitalWrite(chipSelectPin, HIGH); @@ -211,14 +210,14 @@ void writeRegister(byte registerName, byte registerValue) { //Read register from the SCP1000: unsigned int readRegister(byte registerName, int numBytes) { - byte inByte = 0; // incoming from the SPI read - unsigned int result = 0; // result to return + byte inByte = 0; // incoming from the SPI read + unsigned int result = 0; // result to return // SCP1000 expects the register name in the upper 6 bits // of the byte: - registerName <<= 2; + registerName <<= 2; // command (read or write) goes in the lower two bits: - registerName &= 0b11111100; //Read command + registerName &= 0b11111100; //Read command // take the chip select low to select the device: digitalWrite(chipSelectPin, LOW); diff --git a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino index b181ac977..360b75d8c 100644 --- a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino +++ b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino @@ -9,76 +9,73 @@ #include "ZephyrEthernet.h" -void setup() -{ - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } +void setup() { + // start serial port: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } - // in Zephyr system check if Ethernet is ready before proceeding to initialize - while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); - } + // in Zephyr system check if Ethernet is ready before proceeding to initialize + while (Ethernet.linkStatus() != LinkON) { + Serial.println("Waiting for link on"); + delay(100); + } - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - } else if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - // no point in carrying on, so do nothing forevermore: - while (true) { - delay(1); - } + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + } else if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); } - // print your local IP address: - Serial.print("My IP address: "); - Serial.println(Ethernet.localIP()); + // no point in carrying on, so do nothing forevermore: + while (true) { + delay(1); + } + } + // print your local IP address: + Serial.print("My IP address: "); + Serial.println(Ethernet.localIP()); } -void loop() -{ - if (Ethernet.linkStatus() != LinkON) { - Serial.println(Ethernet.linkStatus()); - connectEth(); - } +void loop() { + if (Ethernet.linkStatus() != LinkON) { + Serial.println(Ethernet.linkStatus()); + connectEth(); + } } -void connectEth() -{ - // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); - while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); - delay(100); - } - Serial.println(); +void connectEth() { + // in Zephyr system check if Ethernet is ready before proceeding to initialize + Serial.print("Waiting for link on"); + while (Ethernet.linkStatus() != LinkON) { + Serial.print("."); + delay(100); + } + Serial.println(); - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - } else { - Serial.print(" DHCP assigned IP "); - Serial.println(Ethernet.localIP()); + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } - Serial.println("You're connected to the network"); - Serial.println(); + Serial.println("You're connected to the network"); + Serial.println(); } diff --git a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino index d88d8c10c..52b402457 100644 --- a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino +++ b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino @@ -1,4 +1,4 @@ - /* +/* Telnet client This sketch connects to a telnet server. @@ -19,7 +19,7 @@ IPAddress ip(192, 168, 1, 177); // Enter the IP address of the server you're connecting to: IPAddress server(1, 1, 1, 1); -int port = 23; // Telnet port +int port = 23; // Telnet port // Initialize the Ethernet client library // with the IP address and port of the server @@ -32,7 +32,7 @@ void setup() { if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { - delay(1); // do nothing, no point running without Ethernet hardware + delay(1); // do nothing, no point running without Ethernet hardware } } @@ -48,7 +48,7 @@ void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } // give the Ethernet shield a second to initialize: @@ -92,7 +92,3 @@ void loop() { } } } - - - - diff --git a/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino b/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino index 701abdd06..c675e71a6 100644 --- a/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino +++ b/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino @@ -13,7 +13,7 @@ // The IP address will be dependent on your local network: IPAddress ip(192, 168, 1, 177); -unsigned int localPort = 8888; // local port to listen on +unsigned int localPort = 8888; // local port to listen on // buffers for receiving and sending data char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; // buffer to hold incoming packet, @@ -26,7 +26,7 @@ void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } // in Zephyr system check if Ethernet is ready before proceeding to initialize @@ -42,7 +42,7 @@ void setup() { if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { - delay(1); // do nothing, no point running without Ethernet hardware + delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { @@ -61,7 +61,7 @@ void loop() { Serial.println(packetSize); Serial.print("From "); IPAddress remote = Udp.remoteIP(); - for (int i=0; i < 4; i++) { + for (int i = 0; i < 4; i++) { Serial.print(remote[i], DEC); if (i < 3) { Serial.print("."); @@ -123,5 +123,3 @@ void loop() { println(); } */ - - diff --git a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino index 0186a6e80..396bba3a6 100644 --- a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino +++ b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino @@ -12,13 +12,13 @@ #include #include -unsigned int localPort = 8888; // local port to listen for UDP packets +unsigned int localPort = 8888; // local port to listen for UDP packets -const char timeServer[] = "time.nist.gov"; // time.nist.gov NTP server +const char timeServer[] = "time.nist.gov"; // time.nist.gov NTP server -const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message +const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message -byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets +byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets // A UDP instance to let us send and receive packets over UDP ZephyrUDP Udp; @@ -27,7 +27,7 @@ void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } // in Zephyr system check if Ethernet is ready before proceeding to initialize @@ -58,13 +58,13 @@ void loop() { Serial.println(Ethernet.linkStatus()); connectEth(); } - sendNTPpacket(timeServer); // send an NTP packet to a time server + sendNTPpacket(timeServer); // send an NTP packet to a time server // wait to see if a reply is available delay(1000); if (Udp.parsePacket()) { // We've received a packet, read the data from it - Udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer + Udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer // the timestamp starts at byte 40 of the received packet and is four bytes, // or two words, long. First, extract the two words: @@ -89,49 +89,48 @@ void loop() { // print the hour, minute and second: Serial.print("The UTC time is "); // UTC is the time at Greenwich Meridian (GMT) - Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day) + Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day) Serial.print(':'); if (((epoch % 3600) / 60) < 10) { // In the first 10 minutes of each hour, we'll want a leading '0' Serial.print('0'); } - Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute) + Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute) Serial.print(':'); if ((epoch % 60) < 10) { // In the first 10 seconds of each minute, we'll want a leading '0' Serial.print('0'); } - Serial.println(epoch % 60); // print the second + Serial.println(epoch % 60); // print the second } // wait ten seconds before asking for the time again delay(10000); } // send an NTP request to the time server at the given address -void sendNTPpacket(const char * address) { +void sendNTPpacket(const char* address) { // set all bytes in the buffer to 0 memset(packetBuffer, 0, NTP_PACKET_SIZE); // Initialize values needed to form NTP request // (see URL above for details on the packets) - packetBuffer[0] = 0b11100011; // LI, Version, Mode - packetBuffer[1] = 0; // Stratum, or type of clock - packetBuffer[2] = 6; // Polling Interval - packetBuffer[3] = 0xEC; // Peer Clock Precision + packetBuffer[0] = 0b11100011; // LI, Version, Mode + packetBuffer[1] = 0; // Stratum, or type of clock + packetBuffer[2] = 6; // Polling Interval + packetBuffer[3] = 0xEC; // Peer Clock Precision // 8 bytes of zero for Root Delay & Root Dispersion - packetBuffer[12] = 49; - packetBuffer[13] = 0x4E; - packetBuffer[14] = 49; - packetBuffer[15] = 52; + packetBuffer[12] = 49; + packetBuffer[13] = 0x4E; + packetBuffer[14] = 49; + packetBuffer[15] = 52; // all NTP fields have been given values, now // you can send a packet requesting a timestamp: - Udp.beginPacket(address, 123); // NTP requests are to port 123 + Udp.beginPacket(address, 123); // NTP requests are to port 123 Udp.write(packetBuffer, NTP_PACKET_SIZE); Udp.endPacket(); } -void connectEth() -{ +void connectEth() { // in Zephyr system check if Ethernet is ready before proceeding to initialize Serial.print("Waiting for link on"); while (Ethernet.linkStatus() != LinkON) { @@ -148,7 +147,7 @@ void connectEth() if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { - delay(1); // do nothing, no point running without Ethernet hardware + delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { @@ -158,15 +157,7 @@ void connectEth() Serial.print(" DHCP assigned IP "); Serial.println(Ethernet.localIP()); } - + Serial.println("You're connected to the network"); Serial.println(); } - - - - - - - - diff --git a/libraries/Ethernet/examples/WebClient/WebClient.ino b/libraries/Ethernet/examples/WebClient/WebClient.ino index 48c7cdb5f..14f47cefc 100644 --- a/libraries/Ethernet/examples/WebClient/WebClient.ino +++ b/libraries/Ethernet/examples/WebClient/WebClient.ino @@ -14,7 +14,7 @@ // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: //IPAddress server(74,125,232,128); // numeric IP for Google (no DNS) -char server[] = "www.google.com"; // name address for Google (using DNS) +char server[] = "www.google.com"; // name address for Google (using DNS) // Set the static IP address to use if the DHCP fails to assign IPAddress ip(192, 168, 2, 177); @@ -28,101 +28,99 @@ ZephyrClient client; // Variables to measure the speed unsigned long beginMicros, endMicros; unsigned long byteCount = 0; -bool printWebData = true; // set to false for better speed measurement +bool printWebData = true; // set to false for better speed measurement -void setup() -{ - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } +void setup() { + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } - // in Zephyr system check if Ethernet is ready before proceeding to initialize - while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); - } + // in Zephyr system check if Ethernet is ready before proceeding to initialize + while (Ethernet.linkStatus() != LinkON) { + Serial.println("Waiting for link on"); + delay(100); + } - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - // try to congifure using IP address instead of DHCP: - Ethernet.begin(ip, myDns); - } else { - Serial.print(" DHCP assigned IP "); - Serial.println(Ethernet.localIP()); + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } + // try to congifure using IP address instead of DHCP: + Ethernet.begin(ip, myDns); + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } - // give the Ethernet shield a second to initialize: - delay(1000); - Serial.print("connecting to "); - Serial.print(server); - Serial.println("..."); + // give the Ethernet shield a second to initialize: + delay(1000); + Serial.print("connecting to "); + Serial.print(server); + Serial.println("..."); - // if you get a connection, report back via serial: - if (client.connect(server, 80)) { - Serial.print("connected to "); - Serial.println(client.remoteIP()); - // Make a HTTP request: - client.println("GET /search?q=arduino HTTP/1.1"); - client.println("Host: www.google.com"); - client.println("Connection: close"); - client.println(); - } else { - // if you didn't get a connection to the server: - Serial.println("connection failed"); - } - beginMicros = micros(); + // if you get a connection, report back via serial: + if (client.connect(server, 80)) { + Serial.print("connected to "); + Serial.println(client.remoteIP()); + // Make a HTTP request: + client.println("GET /search?q=arduino HTTP/1.1"); + client.println("Host: www.google.com"); + client.println("Connection: close"); + client.println(); + } else { + // if you didn't get a connection to the server: + Serial.println("connection failed"); + } + beginMicros = micros(); } -void loop() -{ - // if there are incoming bytes available - // from the server, read them and print them: - int len = client.available(); - if (len > 0) { - byte buffer[80]; - if (len > 80) - len = 80; - client.read(buffer, len); - if (printWebData) { - Serial.write(buffer, len); // show in the serial monitor (slows some boards) - } - byteCount = byteCount + len; +void loop() { + // if there are incoming bytes available + // from the server, read them and print them: + int len = client.available(); + if (len > 0) { + byte buffer[80]; + if (len > 80) + len = 80; + client.read(buffer, len); + if (printWebData) { + Serial.write(buffer, len); // show in the serial monitor (slows some boards) } + byteCount = byteCount + len; + } - // if the server's disconnected, stop the client: - if (!client.connected()) { - endMicros = micros(); - Serial.println(); - Serial.println("disconnecting."); - client.stop(); - Serial.print("Received "); - Serial.print(byteCount); - Serial.print(" bytes in "); - float seconds = (float)(endMicros - beginMicros) / 1000000.0; - Serial.print(seconds, 4); - float rate = (float)byteCount / seconds / 1000.0; - Serial.print(", rate = "); - Serial.print(rate); - Serial.print(" kbytes/second"); - Serial.println(); + // if the server's disconnected, stop the client: + if (!client.connected()) { + endMicros = micros(); + Serial.println(); + Serial.println("disconnecting."); + client.stop(); + Serial.print("Received "); + Serial.print(byteCount); + Serial.print(" bytes in "); + float seconds = (float)(endMicros - beginMicros) / 1000000.0; + Serial.print(seconds, 4); + float rate = (float)byteCount / seconds / 1000.0; + Serial.print(", rate = "); + Serial.print(rate); + Serial.print(" kbytes/second"); + Serial.println(); - // do nothing forevermore: - while (true) { - delay(1); - } + // do nothing forevermore: + while (true) { + delay(1); } + } } diff --git a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino index 9f84258a4..d41b926dd 100644 --- a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino +++ b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino @@ -28,14 +28,14 @@ ZephyrClient client; char server[] = "arduino.tips"; // also change the Host line in httpRequest() //IPAddress server(64,131,82,241); -unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds -const unsigned long postingInterval = 10*1000; // delay between updates, in milliseconds +unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds +const unsigned long postingInterval = 10 * 1000; // delay between updates, in milliseconds void setup() { // start serial port: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } // in Zephyr system check if Ethernet is ready before proceeding to initialize @@ -52,7 +52,7 @@ void setup() { if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { - delay(1); // do nothing, no point running without Ethernet hardware + delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { @@ -84,7 +84,6 @@ void loop() { if (millis() - lastConnectionTime > postingInterval) { httpRequest(); } - } // this method makes a HTTP connection to the server: @@ -99,7 +98,7 @@ void httpRequest() { // send the HTTP GET request: client.println("GET /asciilogo.txt HTTP/1.1"); client.print("Host: "); - client.println(server); + client.println(server); client.println("User-Agent: arduino-ethernet"); client.println("Connection: close"); client.println(); diff --git a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino index 6da130502..8ceb3fed9 100644 --- a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino +++ b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino @@ -20,89 +20,86 @@ int port = 443; IPAddress ip(192, 168, 0, 177); IPAddress myDns(192, 168, 0, 1); -unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds -const unsigned long postingInterval = 10 * 1000; // delay between updates, in milliseconds +unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds +const unsigned long postingInterval = 10 * 1000; // delay between updates, in milliseconds -void setup() -{ - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } +void setup() { + // start serial port: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } - // in Zephyr system check if Ethernet is ready before proceeding to initialize - while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); - } + // in Zephyr system check if Ethernet is ready before proceeding to initialize + while (Ethernet.linkStatus() != LinkON) { + Serial.println("Waiting for link on"); + delay(100); + } - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - // try to congifure using IP address instead of DHCP: - Ethernet.begin(ip, myDns); - Serial.print("My IP address: "); - Serial.println(Ethernet.localIP()); - } else { - Serial.print(" DHCP assigned IP "); - Serial.println(Ethernet.localIP()); + // start the Ethernet connection: + Serial.println("Initialize Ethernet with DHCP:"); + if (Ethernet.begin() == 0) { + Serial.println("Failed to configure Ethernet using DHCP"); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + while (true) { + delay(1); // do nothing, no point running without Ethernet hardware + } + } + if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); } - // give the Ethernet shield a second to initialize: - delay(1000); + // try to congifure using IP address instead of DHCP: + Ethernet.begin(ip, myDns); + Serial.print("My IP address: "); + Serial.println(Ethernet.localIP()); + } else { + Serial.print(" DHCP assigned IP "); + Serial.println(Ethernet.localIP()); + } + // give the Ethernet shield a second to initialize: + delay(1000); } -void loop() -{ - // if there's incoming data from the net connection. - // send it out the serial port. This is for debugging - // purposes only: - if (client.available()) { - char c = client.read(); - Serial.write(c); - } +void loop() { + // if there's incoming data from the net connection. + // send it out the serial port. This is for debugging + // purposes only: + if (client.available()) { + char c = client.read(); + Serial.write(c); + } - // if ten seconds have passed since your last connection, - // then connect again and send data: - if (millis() - lastConnectionTime > postingInterval) { - httpRequest(); - } + // if ten seconds have passed since your last connection, + // then connect again and send data: + if (millis() - lastConnectionTime > postingInterval) { + httpRequest(); + } } // this method makes a HTTP connection to the server: -void httpRequest() -{ - // close any connection before send a new request. - // This will free the socket on the WiFi shield - client.stop(); +void httpRequest() { + // close any connection before send a new request. + // This will free the socket on the WiFi shield + client.stop(); - // if there's a successful connection: - if (client.connect(server, port)) { - Serial.println("connecting..."); - // send the HTTP GET request: - client.println("GET /asciilogo.txt HTTP/1.1"); - client.print("Host: "); - client.println(server); - client.println("User-Agent: arduino-ethernet"); - client.println("Accept: *"); - client.println("Connection: close"); - client.println(); + // if there's a successful connection: + if (client.connect(server, port)) { + Serial.println("connecting..."); + // send the HTTP GET request: + client.println("GET /asciilogo.txt HTTP/1.1"); + client.print("Host: "); + client.println(server); + client.println("User-Agent: arduino-ethernet"); + client.println("Accept: *"); + client.println("Connection: close"); + client.println(); - // note the time that the connection was made: - lastConnectionTime = millis(); - } else { - // if you couldn't make a connection: - Serial.println("connection failed"); - } + // note the time that the connection was made: + lastConnectionTime = millis(); + } else { + // if you couldn't make a connection: + Serial.println("connection failed"); + } } diff --git a/libraries/Ethernet/examples/WebServer/WebServer.ino b/libraries/Ethernet/examples/WebServer/WebServer.ino index cf81a0a63..412f72c37 100644 --- a/libraries/Ethernet/examples/WebServer/WebServer.ino +++ b/libraries/Ethernet/examples/WebServer/WebServer.ino @@ -27,7 +27,7 @@ void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } Serial.println("Ethernet WebServer Example"); @@ -44,7 +44,7 @@ void setup() { if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); while (true) { - delay(1); // do nothing, no point running without Ethernet hardware + delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { @@ -77,7 +77,7 @@ void loop() { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // the connection will be closed after completion of the response - client.println("Refresh: 5"); // refresh the page automatically every 5 sec + client.println("Refresh: 5"); // refresh the page automatically every 5 sec client.println(); client.println(""); client.println(""); From 464ab15e8d7304772b35991a30807ff62d8104c3 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 14:42:03 +0200 Subject: [PATCH 101/117] NetworkInterface: make dtor virtual --- libraries/SocketWrapper/SocketHelpers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SocketWrapper/SocketHelpers.h b/libraries/SocketWrapper/SocketHelpers.h index 0db81e039..252108484 100644 --- a/libraries/SocketWrapper/SocketHelpers.h +++ b/libraries/SocketWrapper/SocketHelpers.h @@ -40,7 +40,7 @@ class NetworkInterface { NetworkInterface() { } - ~NetworkInterface() { + virtual ~NetworkInterface() { } void MACAddress(uint8_t *mac); From 51848ac1997d8a89bbf475156d97eda652c9e66e Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 14 Oct 2025 09:28:40 +0200 Subject: [PATCH 102/117] ethernet: UdpNtpClient, avoid double checking link status --- .../examples/UdpNtpClient/UdpNtpClient.ino | 39 +------------------ 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino index 396bba3a6..4b93f2f58 100644 --- a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino +++ b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino @@ -54,11 +54,8 @@ void setup() { } void loop() { - if (Ethernet.linkStatus() != LinkON) { - Serial.println(Ethernet.linkStatus()); - connectEth(); - } - sendNTPpacket(timeServer); // send an NTP packet to a time server + // send an NTP packet to a time server + sendNTPpacket(timeServer); // wait to see if a reply is available delay(1000); @@ -129,35 +126,3 @@ void sendNTPpacket(const char* address) { Udp.write(packetBuffer, NTP_PACKET_SIZE); Udp.endPacket(); } - -void connectEth() { - // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); - while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); - delay(100); - } - Serial.println(); - - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin(nullptr) == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - } else { - Serial.print(" DHCP assigned IP "); - Serial.println(Ethernet.localIP()); - } - - Serial.println("You're connected to the network"); - Serial.println(); -} From 347d4527f4ea88ed959657ba45bc527ab358ff88 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 13 Oct 2025 17:25:22 +0200 Subject: [PATCH 103/117] WiFi: move library to a dedicated folder --- .../examples/WiFiWebClient/WiFiWebClient.ino | 17 +++++++++-------- .../examples/WiFiWebClient/arduino_secrets.h | 0 libraries/WiFi/library.properties | 10 ++++++++++ libraries/{SocketWrapper => WiFi/src}/WiFi.cpp | 0 libraries/{SocketWrapper => WiFi/src}/WiFi.h | 0 .../src}/utility/wl_definitions.h | 0 6 files changed, 19 insertions(+), 8 deletions(-) rename libraries/{SocketWrapper => WiFi}/examples/WiFiWebClient/WiFiWebClient.ino (84%) rename libraries/{SocketWrapper => WiFi}/examples/WiFiWebClient/arduino_secrets.h (100%) create mode 100644 libraries/WiFi/library.properties rename libraries/{SocketWrapper => WiFi/src}/WiFi.cpp (100%) rename libraries/{SocketWrapper => WiFi/src}/WiFi.h (100%) rename libraries/{SocketWrapper => WiFi/src}/utility/wl_definitions.h (100%) diff --git a/libraries/SocketWrapper/examples/WiFiWebClient/WiFiWebClient.ino b/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino similarity index 84% rename from libraries/SocketWrapper/examples/WiFiWebClient/WiFiWebClient.ino rename to libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino index a5687041a..0231e88c6 100644 --- a/libraries/SocketWrapper/examples/WiFiWebClient/WiFiWebClient.ino +++ b/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino @@ -17,15 +17,15 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -char ssid[] = SECRET_SSID; // your network SSID (name) -char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) -int keyIndex = 0; // your network key Index number (needed only for WEP) +char ssid[] = SECRET_SSID; // your network SSID (name) +char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) +int keyIndex = 0; // your network key Index number (needed only for WEP) int status = WL_IDLE_STATUS; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: // IPAddress server(93,184,216,34); // IP address for example.com (no DNS) -char server[] = "example.com"; // host name for example.com (using DNS) +char server[] = "example.com"; // host name for example.com (using DNS) ZephyrClient client; @@ -33,14 +33,15 @@ void setup() { //Initialize serial and wait for port to open: Serial.begin(9600); while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only + ; // wait for serial port to connect. Needed for native USB port only } // check for the WiFi module: if (WiFi.status() == WL_NO_SHIELD) { Serial.println("Communication with WiFi module failed!"); // don't continue - while (true); + while (true) + ; } // attempt to connect to Wifi network: @@ -49,7 +50,6 @@ void setup() { Serial.println(ssid); // Connect to WPA/WPA2 network. Change this line if using open or WEP network: status = WiFi.begin(ssid, pass); - Serial.println(status); // wait 3 seconds for connection: delay(3000); } @@ -84,7 +84,8 @@ void loop() { client.stop(); // do nothing forevermore: - while (true); + while (true) + ; } } diff --git a/libraries/SocketWrapper/examples/WiFiWebClient/arduino_secrets.h b/libraries/WiFi/examples/WiFiWebClient/arduino_secrets.h similarity index 100% rename from libraries/SocketWrapper/examples/WiFiWebClient/arduino_secrets.h rename to libraries/WiFi/examples/WiFiWebClient/arduino_secrets.h diff --git a/libraries/WiFi/library.properties b/libraries/WiFi/library.properties new file mode 100644 index 000000000..eb7382ea6 --- /dev/null +++ b/libraries/WiFi/library.properties @@ -0,0 +1,10 @@ +name=WiFi +version=0.1.0 +author=Arduino +maintainer=Arduino +sentence=Enables WiFi connection +paragraph=With this library you can use the WiFi to connect to Internet. +category=Communication +url=https://github.com/arduino/ArduinoCore-zephyr/tree/master/libraries/WiFi +architectures=zephyr_main,zephyr_contrib +includes=WiFi.h \ No newline at end of file diff --git a/libraries/SocketWrapper/WiFi.cpp b/libraries/WiFi/src/WiFi.cpp similarity index 100% rename from libraries/SocketWrapper/WiFi.cpp rename to libraries/WiFi/src/WiFi.cpp diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/WiFi/src/WiFi.h similarity index 100% rename from libraries/SocketWrapper/WiFi.h rename to libraries/WiFi/src/WiFi.h diff --git a/libraries/SocketWrapper/utility/wl_definitions.h b/libraries/WiFi/src/utility/wl_definitions.h similarity index 100% rename from libraries/SocketWrapper/utility/wl_definitions.h rename to libraries/WiFi/src/utility/wl_definitions.h From 3bb49a3f13a31be699e493b5d6445bc44b498cad Mon Sep 17 00:00:00 2001 From: Andrea Gilardoni Date: Tue, 5 Aug 2025 14:17:28 +0200 Subject: [PATCH 104/117] WiFi: add firmwareVersion method --- libraries/WiFi/src/WiFi.cpp | 8 ++++++++ libraries/WiFi/src/WiFi.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/libraries/WiFi/src/WiFi.cpp b/libraries/WiFi/src/WiFi.cpp index 4290fe2e7..46ce9076c 100644 --- a/libraries/WiFi/src/WiFi.cpp +++ b/libraries/WiFi/src/WiFi.cpp @@ -1,3 +1,11 @@ #include "WiFi.h" WiFiClass WiFi; + +String WiFiClass::firmwareVersion() { +#if defined(ARDUINO_PORTENTA_C33) + return "v1.5.0"; +#else + return "v0.0.0"; +#endif +} diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index b4cbd31f6..730da8669 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -113,6 +113,8 @@ class WiFiClass : public NetworkInterface { return 0; } + String firmwareVersion(); + private: struct net_if *sta_iface = nullptr; struct net_if *ap_iface = nullptr; From 839384fb6aad11f98f42f3ed4ebf9dadfbf28535 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 14 Oct 2025 08:59:47 +0200 Subject: [PATCH 105/117] WiFi: move function implementation into cpp file --- libraries/WiFi/src/WiFi.cpp | 86 +++++++++++++++++++++++++++++++++ libraries/WiFi/src/WiFi.h | 96 +++---------------------------------- 2 files changed, 92 insertions(+), 90 deletions(-) diff --git a/libraries/WiFi/src/WiFi.cpp b/libraries/WiFi/src/WiFi.cpp index 46ce9076c..5a6d2912a 100644 --- a/libraries/WiFi/src/WiFi.cpp +++ b/libraries/WiFi/src/WiFi.cpp @@ -9,3 +9,89 @@ String WiFiClass::firmwareVersion() { return "v0.0.0"; #endif } + +int WiFiClass::begin(const char *ssid, const char *passphrase, wl_enc_type security, + bool blocking) { + sta_iface = net_if_get_wifi_sta(); + netif = sta_iface; + sta_config.ssid = (const uint8_t *)ssid; + sta_config.ssid_length = strlen(ssid); + sta_config.psk = (const uint8_t *)passphrase; + sta_config.psk_length = strlen(passphrase); + // TODO: change these fields with scan() results + sta_config.security = WIFI_SECURITY_TYPE_PSK; + sta_config.channel = WIFI_CHANNEL_ANY; + sta_config.band = WIFI_FREQ_BAND_2_4_GHZ; + sta_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; + int ret = net_mgmt(NET_REQUEST_WIFI_CONNECT, sta_iface, &sta_config, + sizeof(struct wifi_connect_req_params)); + if (ret) { + return false; + } + NetworkInterface::begin(false, NET_EVENT_WIFI_MASK); + if (blocking) { + net_mgmt_event_wait_on_iface(sta_iface, NET_EVENT_WIFI_CONNECT_RESULT, NULL, NULL, NULL, + K_FOREVER); + } + return status(); +} + +bool WiFiClass::beginAP(char *ssid, char *passphrase, int channel, bool blocking) { + if (ap_iface != NULL) { + return false; + } + ap_iface = net_if_get_wifi_sap(); + netif = ap_iface; + ap_config.ssid = (const uint8_t *)ssid; + ap_config.ssid_length = strlen(ssid); + ap_config.psk = (const uint8_t *)passphrase; + ap_config.psk_length = strlen(passphrase); + ap_config.security = WIFI_SECURITY_TYPE_PSK; + ap_config.channel = channel; + ap_config.band = WIFI_FREQ_BAND_2_4_GHZ; + ap_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; + int ret = net_mgmt(NET_REQUEST_WIFI_AP_ENABLE, ap_iface, &ap_config, + sizeof(struct wifi_connect_req_params)); + if (ret) { + return false; + } + enable_dhcpv4_server(ap_iface); + if (blocking) { + net_mgmt_event_wait_on_iface(ap_iface, NET_EVENT_WIFI_AP_ENABLE_RESULT, NULL, NULL, NULL, + K_FOREVER); + } + return true; +} + +int WiFiClass::status() { + sta_iface = net_if_get_wifi_sta(); + netif = sta_iface; + if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, netif, &sta_state, + sizeof(struct wifi_iface_status))) { + return WL_NO_SHIELD; + } + if (sta_state.state >= WIFI_STATE_ASSOCIATED) { + return WL_CONNECTED; + } else { + return WL_DISCONNECTED; + } + return WL_NO_SHIELD; +} + +int8_t WiFiClass::scanNetworks() { + // TODO: borrow code from mbed core for scan results handling +} + +char *WiFiClass::SSID() { + if (status() == WL_CONNECTED) { + return (char *)sta_state.ssid; + } + return nullptr; +} + +int32_t WiFiClass::RSSI() { + if (status() == WL_CONNECTED) { + return sta_state.rssi; + } + return 0; +} diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index 730da8669..739b5bb38 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -18,100 +18,16 @@ class WiFiClass : public NetworkInterface { } int begin(const char *ssid, const char *passphrase, wl_enc_type security = ENC_TYPE_UNKNOWN, - bool blocking = true) { - sta_iface = net_if_get_wifi_sta(); - netif = sta_iface; - sta_config.ssid = (const uint8_t *)ssid; - sta_config.ssid_length = strlen(ssid); - sta_config.psk = (const uint8_t *)passphrase; - sta_config.psk_length = strlen(passphrase); - // TODO: change these fields with scan() results - sta_config.security = WIFI_SECURITY_TYPE_PSK; - sta_config.channel = WIFI_CHANNEL_ANY; - sta_config.band = WIFI_FREQ_BAND_2_4_GHZ; - sta_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; - - int ret = net_mgmt(NET_REQUEST_WIFI_CONNECT, sta_iface, &sta_config, - sizeof(struct wifi_connect_req_params)); - if (ret) { - return false; - } - - NetworkInterface::begin(false, NET_EVENT_WIFI_MASK); - if (blocking) { - net_mgmt_event_wait_on_iface(sta_iface, NET_EVENT_WIFI_CONNECT_RESULT, NULL, NULL, NULL, - K_FOREVER); - } - - return status(); - } - + bool blocking = true); bool beginAP(char *ssid, char *passphrase, int channel = WIFI_CHANNEL_ANY, - bool blocking = false) { - if (ap_iface != NULL) { - return false; - } - ap_iface = net_if_get_wifi_sap(); - netif = ap_iface; - ap_config.ssid = (const uint8_t *)ssid; - ap_config.ssid_length = strlen(ssid); - ap_config.psk = (const uint8_t *)passphrase; - ap_config.psk_length = strlen(passphrase); - ap_config.security = WIFI_SECURITY_TYPE_PSK; - ap_config.channel = channel; - ap_config.band = WIFI_FREQ_BAND_2_4_GHZ; - ap_config.bandwidth = WIFI_FREQ_BANDWIDTH_20MHZ; + bool blocking = false); - int ret = net_mgmt(NET_REQUEST_WIFI_AP_ENABLE, ap_iface, &ap_config, - sizeof(struct wifi_connect_req_params)); + int status(); - if (ret) { - return false; - } - - enable_dhcpv4_server(ap_iface); - - if (blocking) { - net_mgmt_event_wait_on_iface(ap_iface, NET_EVENT_WIFI_AP_ENABLE_RESULT, NULL, NULL, - NULL, K_FOREVER); - } - - return true; - } + int8_t scanNetworks(); - int status() { - sta_iface = net_if_get_wifi_sta(); - netif = sta_iface; - if (net_mgmt(NET_REQUEST_WIFI_IFACE_STATUS, netif, &sta_state, - sizeof(struct wifi_iface_status))) { - return WL_NO_SHIELD; - } - - if (sta_state.state >= WIFI_STATE_ASSOCIATED) { - return WL_CONNECTED; - } else { - return WL_DISCONNECTED; - } - return WL_NO_SHIELD; - } - - int8_t scanNetworks() { - // TODO: borrow code from mbed core for scan results handling - } - - char *SSID() { - if (status() == WL_CONNECTED) { - return (char *)sta_state.ssid; - } - return nullptr; - } - - int32_t RSSI() { - if (status() == WL_CONNECTED) { - return sta_state.rssi; - } - return 0; - } + char *SSID(); + int32_t RSSI(); String firmwareVersion(); From 076840f82f6500b986077834ba149bdecbc3fc4f Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 14 Oct 2025 15:18:31 +0200 Subject: [PATCH 106/117] ethernet: remove examples that need more testing --- .../AdvancedChatServer/AdvancedChatServer.ino | 123 --------- .../BarometricPressureWebServer.ino | 241 ------------------ .../DhcpAddressPrinter/DhcpAddressPrinter.ino | 81 ------ .../WebClientRepeatingSSL.ino | 105 -------- 4 files changed, 550 deletions(-) delete mode 100644 libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino delete mode 100644 libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino delete mode 100644 libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino delete mode 100644 libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino diff --git a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino deleted file mode 100644 index 2a94b9969..000000000 --- a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino +++ /dev/null @@ -1,123 +0,0 @@ -/* - Advanced Chat Server - - A more advanced server that distributes any incoming messages - to all connected clients but the client the message comes from. - To use, telnet to your device's IP address and type. - - Usage: - 1. Upload this sketch to your board. - 2. Make sure your board is connected to the network and note its IP address. - 3. From a computer on the same network, open a terminal and connect via Telnet: - - - On macOS or Linux (using netcat if telnet is not available): - telnet 23 - # or, if telnet is missing: - nc 23 - - - On Windows (Command Prompt): - telnet 23 - # If 'telnet' is not recognized, enable it in "Windows Features". - - 4. Type a message and press Enter. - Your message will be broadcast to all connected clients except you. - - Example: - telnet 192.168.1.177 23 - - Press CTRL + ] then 'quit' to exit Telnet. - - */ - -#include "ZephyrServer.h" -#include "ZephyrClient.h" -#include "ZephyrEthernet.h" - -// The IP address will be dependent on your local network. -// gateway and subnet are optional: -IPAddress ip(192, 168, 1, 177); -IPAddress myDns(192, 168, 1, 1); -IPAddress gateway(192, 168, 1, 1); -IPAddress subnet(255, 255, 255, 0); - -// telnet defaults to port 23 -ZephyrServer server(23); - -ZephyrClient clients[8]; - -void setup() { - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // in Zephyr system check if Ethernet is ready before proceeding to initialize - while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); - } - - // initialize the Ethernet device - Ethernet.begin(ip, myDns, gateway, subnet); - - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - - // start listening for clients - server.begin(); - - Serial.print("Chat server address:"); - Serial.println(Ethernet.localIP()); -} - -void loop() { - // check for any new client connecting, and say hello (before any incoming data) - ZephyrClient newClient = server.accept(); - if (newClient) { - for (byte i = 0; i < 8; i++) { - if (!clients[i]) { - Serial.print("We have a new client #"); - Serial.println(i); - newClient.print("Hello, client number: "); - newClient.println(i); - // Once we "accept", the client is no longer tracked by EthernetServer - // so we must store it into our list of clients - clients[i] = newClient; - break; - } - } - } - - // check for incoming data from all clients - for (byte i = 0; i < 8; i++) { - if (clients[i] && clients[i].available() > 0) { - // read bytes from a client - byte buffer[80]; - int count = clients[i].read(buffer, 80); - // write the bytes to all other connected clients - for (byte j = 0; j < 8; j++) { - if (j != i && clients[j].connected()) { - clients[j].write(buffer, count); - } - } - } - } - - // stop any clients which disconnect - for (byte i = 0; i < 8; i++) { - if (clients[i] && !clients[i].connected()) { - Serial.print("disconnect client #"); - Serial.println(i); - clients[i].stop(); - } - } -} diff --git a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino deleted file mode 100644 index 738add8cf..000000000 --- a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino +++ /dev/null @@ -1,241 +0,0 @@ -/* - SCP1000 Barometric Pressure Sensor Display - - Serves the output of a Barometric Pressure Sensor as a web page. - Uses the SPI library. For details on the sensor, see: - http://www.sparkfun.com/commerce/product_info.php?products_id=8161 - - This sketch adapted from Nathan Seidle's SCP1000 example for PIC: - http://www.sparkfun.com/datasheets/Sensors/SCP1000-Testing.zip - - Circuit: - SCP1000 sensor attached to pins 6,7, and 11 - 13: - DRDY: pin 6 - CSB: pin 7 - MOSI: pin 11 - MISO: pin 12 - SCK: pin 13 - - How it works: - 1. The board reads temperature and pressure data from the SCP1000 sensor. - 2. It hosts a simple HTTP server on port 80 that serves the current readings as a web page. - 3. You can view the readings from any device on the same network via a browser. - Open a web browser and go to: http://192.168.1.20/ (Replace with your board's IP address if changed) - - Note: The SCP1000 sensor is long obsolete. For modern projects, consider replacing it - with the BMP085/BMP180/BMP280 or similar (e.g. https://www.sparkfun.com/products/9721). - */ - -#include "ZephyrServer.h" -#include "ZephyrEthernet.h" -// the sensor communicates using SPI, so include the library: -#include - -// assign an IP address for the controller: -IPAddress ip(192, 168, 1, 20); - -// Initialize the Ethernet server library -// with the IP address and port you want to use -// (port 80 is default for HTTP): -ZephyrServer server(80); - -//Sensor's memory register addresses: -const int PRESSURE = 0x1F; //3 most significant bits of pressure -const int PRESSURE_LSB = 0x20; //16 least significant bits of pressure -const int TEMPERATURE = 0x21; //16 bit temperature reading - -// pins used for the connection with the sensor -// the others you need are controlled by the SPI library): -const int dataReadyPin = 6; -const int chipSelectPin = 7; - -float temperature = 0.0; -long pressure = 0; -long lastReadingTime = 0; - -void setup() { - - // start the SPI library: - SPI.begin(); - - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // in Zephyr system check if Ethernet is ready before proceeding to initialize - while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); - } - - // start the Ethernet connection - Ethernet.begin(ip); - - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - - // start listening for clients - server.begin(); - - // initalize the data ready and chip select pins: - pinMode(dataReadyPin, INPUT); - pinMode(chipSelectPin, OUTPUT); - - //Configure SCP1000 for low noise configuration: - writeRegister(0x02, 0x2D); - writeRegister(0x01, 0x03); - writeRegister(0x03, 0x02); - - // give the sensor and Ethernet shield time to set up: - delay(1000); - - //Set the sensor to high resolution mode tp start readings: - writeRegister(0x03, 0x0A); -} - -void loop() { - // check for a reading no more than once a second. - if (millis() - lastReadingTime > 1000) { - // if there's a reading ready, read it: - // don't do anything until the data ready pin is high: - if (digitalRead(dataReadyPin) == HIGH) { - getData(); - // timestamp the last time you got a reading: - lastReadingTime = millis(); - } - } - - // listen for incoming Ethernet connections: - listenForEthernetClients(); -} - - -void getData() { - Serial.println("Getting reading"); - //Read the temperature data - int tempData = readRegister(0x21, 2); - - // convert the temperature to celsius and display it: - temperature = (float)tempData / 20.0; - - //Read the pressure data highest 3 bits: - byte pressureDataHigh = readRegister(0x1F, 1); - pressureDataHigh &= 0b00000111; //you only needs bits 2 to 0 - - //Read the pressure data lower 16 bits: - unsigned int pressureDataLow = readRegister(0x20, 2); - //combine the two parts into one 19-bit number: - pressure = ((pressureDataHigh << 16) | pressureDataLow) / 4; - - Serial.print("Temperature: "); - Serial.print(temperature); - Serial.println(" degrees C"); - Serial.print("Pressure: " + String(pressure)); - Serial.println(" Pa"); -} - -void listenForEthernetClients() { - // listen for incoming clients - ZephyrClient client = server.accept(); - if (client) { - Serial.println("Got a client"); - // an http request ends with a blank line - boolean currentLineIsBlank = true; - while (client.connected()) { - if (client.available()) { - char c = client.read(); - // if you've gotten to the end of the line (received a newline - // character) and the line is blank, the http request has ended, - // so you can send a reply - if (c == '\n' && currentLineIsBlank) { - // send a standard http response header - client.println("HTTP/1.1 200 OK"); - client.println("Content-Type: text/html"); - client.println(); - // print the current readings, in HTML format: - client.print("Temperature: "); - client.print(temperature); - client.print(" degrees C"); - client.println("
"); - client.print("Pressure: " + String(pressure)); - client.print(" Pa"); - client.println("
"); - break; - } - if (c == '\n') { - // you're starting a new line - currentLineIsBlank = true; - } else if (c != '\r') { - // you've gotten a character on the current line - currentLineIsBlank = false; - } - } - } - // give the web browser time to receive the data - delay(1); - // close the connection: - client.stop(); - } -} - - -//Send a write command to SCP1000 -void writeRegister(byte registerName, byte registerValue) { - // SCP1000 expects the register name in the upper 6 bits - // of the byte: - registerName <<= 2; - // command (read or write) goes in the lower two bits: - registerName |= 0b00000010; //Write command - - // take the chip select low to select the device: - digitalWrite(chipSelectPin, LOW); - - SPI.transfer(registerName); //Send register location - SPI.transfer(registerValue); //Send value to record into register - - // take the chip select high to de-select: - digitalWrite(chipSelectPin, HIGH); -} - - -//Read register from the SCP1000: -unsigned int readRegister(byte registerName, int numBytes) { - byte inByte = 0; // incoming from the SPI read - unsigned int result = 0; // result to return - - // SCP1000 expects the register name in the upper 6 bits - // of the byte: - registerName <<= 2; - // command (read or write) goes in the lower two bits: - registerName &= 0b11111100; //Read command - - // take the chip select low to select the device: - digitalWrite(chipSelectPin, LOW); - // send the device the register you want to read: - int command = SPI.transfer(registerName); - // send a value of 0 to read the first byte returned: - inByte = SPI.transfer(0x00); - - result = inByte; - // if there's more than one byte returned, - // shift the first byte then get the second byte: - if (numBytes > 1) { - result = inByte << 8; - inByte = SPI.transfer(0x00); - result = result | inByte; - } - // take the chip select high to de-select: - digitalWrite(chipSelectPin, HIGH); - // return the result: - return (result); -} diff --git a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino deleted file mode 100644 index 360b75d8c..000000000 --- a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino +++ /dev/null @@ -1,81 +0,0 @@ -/* - DHCP-based IP printer - - This sketch uses the DHCP extensions to the Ethernet library - to get an IP address via DHCP and print the address obtained. - using an Arduino Wiznet Ethernet shield. - - */ - -#include "ZephyrEthernet.h" - -void setup() { - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // in Zephyr system check if Ethernet is ready before proceeding to initialize - while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); - } - - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - } else if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - // no point in carrying on, so do nothing forevermore: - while (true) { - delay(1); - } - } - // print your local IP address: - Serial.print("My IP address: "); - Serial.println(Ethernet.localIP()); -} - -void loop() { - if (Ethernet.linkStatus() != LinkON) { - Serial.println(Ethernet.linkStatus()); - connectEth(); - } -} - -void connectEth() { - // in Zephyr system check if Ethernet is ready before proceeding to initialize - Serial.print("Waiting for link on"); - while (Ethernet.linkStatus() != LinkON) { - Serial.print("."); - delay(100); - } - Serial.println(); - - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - } else { - Serial.print(" DHCP assigned IP "); - Serial.println(Ethernet.localIP()); - } - - Serial.println("You're connected to the network"); - Serial.println(); -} diff --git a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino b/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino deleted file mode 100644 index 8ceb3fed9..000000000 --- a/libraries/Ethernet/examples/WebClientRepeatingSSL/WebClientRepeatingSSL.ino +++ /dev/null @@ -1,105 +0,0 @@ -/* - Repeating TLS/SSL Ethernet Web client. - - Remeber to update the CA certificates using WiFiFirmwareUpdater sketch - before using this sketch. - - */ - -#include -#include "ZephyrEthernet.h" - -// initialize the library instance: -ZephyrSSLClient client; - -char server[] = "arduino.tips"; -int port = 443; -// IPAddress server(64,131,82,241); - -// Set the static IP address to use if the DHCP fails to assign -IPAddress ip(192, 168, 0, 177); -IPAddress myDns(192, 168, 0, 1); - -unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds -const unsigned long postingInterval = 10 * 1000; // delay between updates, in milliseconds - -void setup() { - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // in Zephyr system check if Ethernet is ready before proceeding to initialize - while (Ethernet.linkStatus() != LinkON) { - Serial.println("Waiting for link on"); - delay(100); - } - - // start the Ethernet connection: - Serial.println("Initialize Ethernet with DHCP:"); - if (Ethernet.begin() == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // Check for Ethernet hardware present - if (Ethernet.hardwareStatus() == EthernetNoHardware) { - Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); - while (true) { - delay(1); // do nothing, no point running without Ethernet hardware - } - } - if (Ethernet.linkStatus() == LinkOFF) { - Serial.println("Ethernet cable is not connected."); - } - // try to congifure using IP address instead of DHCP: - Ethernet.begin(ip, myDns); - Serial.print("My IP address: "); - Serial.println(Ethernet.localIP()); - } else { - Serial.print(" DHCP assigned IP "); - Serial.println(Ethernet.localIP()); - } - // give the Ethernet shield a second to initialize: - delay(1000); -} - -void loop() { - // if there's incoming data from the net connection. - // send it out the serial port. This is for debugging - // purposes only: - if (client.available()) { - char c = client.read(); - Serial.write(c); - } - - // if ten seconds have passed since your last connection, - // then connect again and send data: - if (millis() - lastConnectionTime > postingInterval) { - httpRequest(); - } -} - -// this method makes a HTTP connection to the server: -void httpRequest() { - // close any connection before send a new request. - // This will free the socket on the WiFi shield - client.stop(); - - // if there's a successful connection: - if (client.connect(server, port)) { - Serial.println("connecting..."); - // send the HTTP GET request: - client.println("GET /asciilogo.txt HTTP/1.1"); - client.print("Host: "); - client.println(server); - client.println("User-Agent: arduino-ethernet"); - client.println("Accept: *"); - client.println("Connection: close"); - client.println(); - - // note the time that the connection was made: - lastConnectionTime = millis(); - } else { - // if you couldn't make a connection: - Serial.println("connection failed"); - } -} From 7b6f193f2f5249a9b0a65a6a25f06f034450a7d4 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 14 Oct 2025 16:04:21 +0200 Subject: [PATCH 107/117] ethernet: fix TelnetClient wait for serial --- .../Ethernet/examples/TelnetClient/TelnetClient.ino | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino index 52b402457..83374495a 100644 --- a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino +++ b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino @@ -28,6 +28,12 @@ int port = 23; // Telnet port ZephyrClient client; void setup() { + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + // Check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); @@ -45,12 +51,6 @@ void setup() { // start the Ethernet connection: Ethernet.begin(ip); - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - // give the Ethernet shield a second to initialize: delay(1000); Serial.println("connecting..."); From 1cd1dd5c92ff2a630eaa16886bb3e70712aec553 Mon Sep 17 00:00:00 2001 From: lucarin91 Date: Sun, 28 Sep 2025 11:47:51 +0200 Subject: [PATCH 108/117] fix: network flash for unoq --- platform.txt | 12 ++++++------ .../arduino_uno_q_stm32u585xx/flash_bootloader.cfg | 8 ++++++++ variants/arduino_uno_q_stm32u585xx/flash_sketch.cfg | 8 ++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 variants/arduino_uno_q_stm32u585xx/flash_bootloader.cfg create mode 100644 variants/arduino_uno_q_stm32u585xx/flash_sketch.cfg diff --git a/platform.txt b/platform.txt index 8eb09ef8b..75d3ff84b 100644 --- a/platform.txt +++ b/platform.txt @@ -267,23 +267,23 @@ tools.adb.upload.pattern="{path}/{cmd}" push "{build.path}/{build.project_name}. # tools.remoteocd.path={runtime.tools.remoteocd.path} tools.remoteocd.cmd=remoteocd -tools.remoteocd.upload.params.verbose= +tools.remoteocd.upload.params.verbose=--verbose tools.remoteocd.upload.params.quiet= -tools.remoteocd.upload.pattern="{path}/{cmd}" --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" upload -a "{upload.address}" "{build.path}/{build.project_name}.{upload.extension}" +tools.remoteocd.upload.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/flash_sketch.cfg" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" -tools.remoteocd.bootloader.params.verbose= +tools.remoteocd.bootloader.params.verbose=--verbose tools.remoteocd.bootloader.params.quiet= tools.remoteocd.erase.pattern= -tools.remoteocd.bootloader.pattern="{path}/{cmd}" --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" upload "{runtime.platform.path}/firmwares/{bootloader.file}" +tools.remoteocd.bootloader.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/flash_bootloader.cfg" "{upload.verbose}" "{runtime.platform.path}/firmwares/{bootloader.file}" tools.remoteocd_network.upload.protocol=network tools.remoteocd_network.upload.field.password=Password tools.remoteocd_network.upload.field.password.secret=true tools.remoteocd_network.path={runtime.tools.remoteocd.path} tools.remoteocd_network.cmd=remoteocd -tools.remoteocd_network.upload.params.verbose= +tools.remoteocd_network.upload.params.verbose=--verbose tools.remoteocd_network.upload.params.quiet= -tools.remoteocd_network.upload.pattern="{path}/{cmd}" --adb-path "{runtime.tools.adb.path}/adb" -i "{upload.port.address}" upload -a "{upload.address}" "{build.path}/{build.project_name}.{upload.extension}" +tools.remoteocd_network.upload.pattern="{path}/{cmd}" upload -a "{upload.port.address}" --password "{upload.field.password}" -f "{build.variant.path}/flash_sketch.cfg" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" # # PYOCD WRAPPER diff --git a/variants/arduino_uno_q_stm32u585xx/flash_bootloader.cfg b/variants/arduino_uno_q_stm32u585xx/flash_bootloader.cfg new file mode 100644 index 000000000..a5d943e17 --- /dev/null +++ b/variants/arduino_uno_q_stm32u585xx/flash_bootloader.cfg @@ -0,0 +1,8 @@ +reset_config srst_only srst_push_pull +init +reset +halt +flash info 0 +flash write_image erase ${filename} +reset +shutdown diff --git a/variants/arduino_uno_q_stm32u585xx/flash_sketch.cfg b/variants/arduino_uno_q_stm32u585xx/flash_sketch.cfg new file mode 100644 index 000000000..539431ed4 --- /dev/null +++ b/variants/arduino_uno_q_stm32u585xx/flash_sketch.cfg @@ -0,0 +1,8 @@ +reset_config srst_only srst_push_pull +init +reset +halt +flash info 0 +flash write_image erase ${filename} 0x80F0000 bin +reset +shutdown From 2cfe249f063b1b8b7200a0ca1845370836ab7e10 Mon Sep 17 00:00:00 2001 From: lucarin91 Date: Tue, 30 Sep 2025 10:07:36 +0200 Subject: [PATCH 109/117] feat: add flash to ram for unoq --- boards.txt | 6 ++++++ platform.txt | 4 ++-- .../flash_sketch_ram.cfg | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 variants/arduino_uno_q_stm32u585xx/flash_sketch_ram.cfg diff --git a/boards.txt b/boards.txt index df3c39ab4..872ccc75b 100644 --- a/boards.txt +++ b/boards.txt @@ -1,5 +1,6 @@ menu.debug=Debug menu.link_mode=Link mode +menu.flash_mode=Flash mode ########################################################################################## @@ -532,6 +533,11 @@ unoq.menu.link_mode.static=Static unoq.menu.link_mode.static.build.link_mode=static unoq.menu.link_mode.static.upload.extension=bin-zsk.bin +unoq.menu.flash_mode.flash=Flash +unoq.menu.flash_mode.flash.openocd_cfg=flash_sketch.cfg +unoq.menu.flash_mode.ram=RAM +unoq.menu.flash_mode.ram.openocd_cfg=flash_sketch_ram.cfg + unoq.build.zephyr_target=arduino_uno_q unoq.build.zephyr_args= unoq.build.variant=arduino_uno_q_stm32u585xx diff --git a/platform.txt b/platform.txt index 75d3ff84b..230fd2af9 100644 --- a/platform.txt +++ b/platform.txt @@ -269,7 +269,7 @@ tools.remoteocd.path={runtime.tools.remoteocd.path} tools.remoteocd.cmd=remoteocd tools.remoteocd.upload.params.verbose=--verbose tools.remoteocd.upload.params.quiet= -tools.remoteocd.upload.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/flash_sketch.cfg" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" +tools.remoteocd.upload.pattern="{path}/{cmd}" upload --adb-path "{runtime.tools.adb.path}/adb" -s "{upload.port.properties.serialNumber}" -f "{build.variant.path}/{openocd_cfg}" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" tools.remoteocd.bootloader.params.verbose=--verbose tools.remoteocd.bootloader.params.quiet= @@ -283,7 +283,7 @@ tools.remoteocd_network.path={runtime.tools.remoteocd.path} tools.remoteocd_network.cmd=remoteocd tools.remoteocd_network.upload.params.verbose=--verbose tools.remoteocd_network.upload.params.quiet= -tools.remoteocd_network.upload.pattern="{path}/{cmd}" upload -a "{upload.port.address}" --password "{upload.field.password}" -f "{build.variant.path}/flash_sketch.cfg" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" +tools.remoteocd_network.upload.pattern="{path}/{cmd}" upload -a "{upload.port.address}" --password "{upload.field.password}" -f "{build.variant.path}/{openocd_cfg}" "{upload.verbose}" "{build.path}/{build.project_name}.{upload.extension}" # # PYOCD WRAPPER diff --git a/variants/arduino_uno_q_stm32u585xx/flash_sketch_ram.cfg b/variants/arduino_uno_q_stm32u585xx/flash_sketch_ram.cfg new file mode 100644 index 000000000..108ec9126 --- /dev/null +++ b/variants/arduino_uno_q_stm32u585xx/flash_sketch_ram.cfg @@ -0,0 +1,15 @@ +reset_config srst_only srst_push_pull + +init +reset +halt +resume +sleep 500 + +lassign [split [mdw 0x20000000] ":" ] ram base +set base [string trim $base] +puts $base +load_image ${filename} 0x$base bin +sleep 500 +resume +shutdown From 86a82dbf0493bde5449fcfa8b67c1ef224f0788c Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Thu, 2 Oct 2025 19:30:52 +0200 Subject: [PATCH 110/117] ci/package_core: refactor to prepare platform independence Rename BOARD_VARIANTS to ALL_BOARD_DATA to reflect that it contains more than just board variants. Define PLAT environment variable so that it can be easily changed to build other platforms than arduino:zephyr. Signed-off-by: Luca Burelli --- .github/workflows/package_core.yml | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 887a67d81..6cd5ca58e 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -14,7 +14,7 @@ jobs: outputs: CORE_TAG: ${{ env.CORE_TAG }} CORE_ARTIFACT: ${{ env.CORE_ARTIFACT }} - BOARD_VARIANTS: ${{ env.BOARD_VARIANTS }} + ALL_BOARD_DATA: ${{ env.ALL_BOARD_DATA }} steps: - name: Install OS dependencies working-directory: /opt @@ -34,7 +34,7 @@ jobs: yes | ./extra/bootstrap.sh -o=--filter=tree:0 echo "CORE_TAG=$(git describe --tags --exact-match || git describe --always)" >> "$GITHUB_ENV" echo "CORE_ARTIFACT=ArduinoCore-zephyr-$(git describe --always)" >> "$GITHUB_ENV" - echo "BOARD_VARIANTS=$(extra/get_board_details.sh | jq -cr 'sort_by(.variant)')" >> "$GITHUB_ENV" + echo "ALL_BOARD_DATA=$(extra/get_board_details.sh | jq -cr 'sort_by(.variant)')" >> "$GITHUB_ENV" - name: ccache uses: hendrikmuhs/ccache-action@v1.2 @@ -48,7 +48,7 @@ jobs: - name: Package core run: | - ./extra/package_core.sh ${{ env.CORE_TAG }} distrib/${{ env.CORE_ARTIFACT }}.tar.bz2 + ./extra/package_core.sh ${CORE_TAG} distrib/${CORE_ARTIFACT}.tar.bz2 - name: Archive core uses: actions/upload-artifact@v4 @@ -63,19 +63,21 @@ jobs: strategy: matrix: include: - ${{ fromJSON( needs.package-core.outputs.BOARD_VARIANTS ) }} + ${{ fromJSON( needs.package-core.outputs.ALL_BOARD_DATA ) }} fail-fast: false env: + PLAT: arduino:zephyr FQBN: arduino:zephyr:${{ matrix.board }} - REPORT_FILE: arduino-zephyr-${{ matrix.board }}.json + CORE_ARTIFACT: ${{ needs.package-core.outputs.CORE_ARTIFACT }} steps: - uses: actions/download-artifact@v4 with: - name: ${{ needs.package-core.outputs.CORE_ARTIFACT }} + name: ${{ env.CORE_ARTIFACT }} - name: Set up core run: | - tar xf ${{ needs.package-core.outputs.CORE_ARTIFACT }}.tar.bz2 + tar xf ${CORE_ARTIFACT}.tar.bz2 + echo "REPORT_FILE=$(echo ${FQBN} | tr ':' '-').json" >> $GITHUB_ENV - name: Create Blink sketch run: | @@ -90,7 +92,7 @@ jobs: # Use Board Manager to install the latest release of Arduino Zephyr Boards to get the toolchain - name: "arduino:zephyr" source-url: "https://downloads.arduino.cc/packages/package_zephyr_index.json" - - name: "arduino:zephyr" + - name: ${{ env.PLAT }} source-path: "ArduinoCore-zephyr" sketch-paths: Blink cli-compile-flags: | @@ -137,7 +139,7 @@ jobs: - test-core if: ${{ !cancelled() && needs.package-core.result == 'success' }} env: - BOARD_VARIANTS: ${{ needs.package-core.outputs.BOARD_VARIANTS }} + ALL_BOARD_DATA: ${{ needs.package-core.outputs.ALL_BOARD_DATA }} steps: - uses: actions/download-artifact@v4 with: @@ -147,11 +149,11 @@ jobs: - run: | echo "### Core test results:" >> "$GITHUB_STEP_SUMMARY" - jq -c '.[]' <<< "$BOARD_VARIANTS" | while read -r BOARD_VARIANT; do - BOARD=$(echo $BOARD_VARIANT | jq -cr '.board') - VARIANT=$(echo $BOARD_VARIANT | jq -cr '.variant') + jq -c '.[]' <<< "$ALL_BOARD_DATA" | while read -r BOARD_DATA; do + BOARD=$(echo $BOARD_DATA | jq -cr '.board') + VARIANT=$(echo $BOARD_DATA | jq -cr '.variant') FQBN="arduino:zephyr:$BOARD" - REPORT_FILE="arduino-zephyr-$BOARD.json" + REPORT_FILE="$(echo $FQBN | tr ':' '-').json" if [ ! -f $REPORT_FILE ]; then echo "* :x: $BOARD (`$VARIANT`) - No report found?" >> "$GITHUB_STEP_SUMMARY" else @@ -221,7 +223,7 @@ jobs: aws-region: ${{ secrets.AWS_REGION }} - name: Upload artifact - run: aws s3 cp ${{ env.ARTIFACT_FILE }} s3://${{ secrets.S3_BUCKET }}/ + run: aws s3 cp ${ARTIFACT_FILE} s3://${{ secrets.S3_BUCKET }}/ publish-json: name: Publish json From 90751a1c5a7bf80772e4119c79778cf5fef792b8 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Fri, 3 Oct 2025 19:18:38 +0200 Subject: [PATCH 111/117] ci/package_core: refactor to prepare multi-package * Generate CORE_ARTIFACT every step so that multi-package is possible via matrix iterations in the next commit. * Convert gen_package_index_json.sh to take parameters instead of environment variables. * Export the name of the package from get_board_details.sh. * Rework package_core.sh so that it is easily extendable to multiple packages. Signed-off-by: Luca Burelli --- .github/workflows/package_core.yml | 49 ++++++++++++++++++------------ extra/bootstrap.sh | 2 ++ extra/gen_package_index_json.sh | 21 +++++++++---- extra/get_board_details.sh | 22 ++++++++++---- extra/package_core.sh | 35 +++++++++++++-------- 5 files changed, 84 insertions(+), 45 deletions(-) diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 6cd5ca58e..6767b017b 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -13,12 +13,13 @@ jobs: CCACHE_IGNOREOPTIONS: -specs=* outputs: CORE_TAG: ${{ env.CORE_TAG }} - CORE_ARTIFACT: ${{ env.CORE_ARTIFACT }} + CORE_HASH: ${{ env.CORE_HASH }} ALL_BOARD_DATA: ${{ env.ALL_BOARD_DATA }} steps: - name: Install OS dependencies working-directory: /opt run: | + sudo apt-get remove --purge man-db -y # skips the mandb triggers sudo apt-get update sudo apt-get install -y --no-install-recommends git cmake wget python3-pip ninja-build ccache @@ -32,9 +33,15 @@ jobs: - name: Initialize Zephyr environment run: | yes | ./extra/bootstrap.sh -o=--filter=tree:0 - echo "CORE_TAG=$(git describe --tags --exact-match || git describe --always)" >> "$GITHUB_ENV" - echo "CORE_ARTIFACT=ArduinoCore-zephyr-$(git describe --always)" >> "$GITHUB_ENV" - echo "ALL_BOARD_DATA=$(extra/get_board_details.sh | jq -cr 'sort_by(.variant)')" >> "$GITHUB_ENV" + echo "CORE_HASH=$(git describe --always)" >> "$GITHUB_ENV" + echo "ALL_BOARD_DATA=$(extra/get_board_details.sh | jq -c 'sort_by(.variant)')" >> "$GITHUB_ENV" + + - name: Map output packages + # needs the above env vars to be usable + run: | + echo "CORE_TAG=$(git describe --tags --exact-match 2>/dev/null || echo $CORE_HASH)" >> "$GITHUB_ENV" + echo "ARTIFACTS=$(jq -c '["zephyr"] + (map(.artifact) | unique)' <<< ${ALL_BOARD_DATA})" >> "$GITHUB_ENV" + echo "SUB_ARCHES=$(jq -c 'map(.subarch) | unique' <<< ${ALL_BOARD_DATA})" >> "$GITHUB_ENV" - name: ccache uses: hendrikmuhs/ccache-action@v1.2 @@ -48,18 +55,21 @@ jobs: - name: Package core run: | + PACKAGE=zephyr + CORE_ARTIFACT=ArduinoCore-$PACKAGE-${CORE_HASH} ./extra/package_core.sh ${CORE_TAG} distrib/${CORE_ARTIFACT}.tar.bz2 - name: Archive core uses: actions/upload-artifact@v4 with: - name: ${{ env.CORE_ARTIFACT }} - path: distrib/${{ env.CORE_ARTIFACT }}.tar.bz2 + name: ArduinoCore-zephyr-${{ env.CORE_HASH }} + path: distrib/*.tar.bz2 test-core: name: Test on ${{ matrix.board }} runs-on: ubuntu-latest - needs: package-core + needs: + - package-core strategy: matrix: include: @@ -68,7 +78,7 @@ jobs: env: PLAT: arduino:zephyr FQBN: arduino:zephyr:${{ matrix.board }} - CORE_ARTIFACT: ${{ needs.package-core.outputs.CORE_ARTIFACT }} + CORE_ARTIFACT: ArduinoCore-zephyr-${{ needs.package-core.outputs.CORE_HASH }} steps: - uses: actions/download-artifact@v4 with: @@ -76,7 +86,7 @@ jobs: - name: Set up core run: | - tar xf ${CORE_ARTIFACT}.tar.bz2 + tar xf ${CORE_ARTIFACT}.tar.bz2 # will create ArduinoCore-zephyr/ echo "REPORT_FILE=$(echo ${FQBN} | tr ':' '-').json" >> $GITHUB_ENV - name: Create Blink sketch @@ -209,8 +219,7 @@ jobs: id-token: write contents: read env: - CORE_ARTIFACT: ${{ needs.package-core.outputs.CORE_ARTIFACT }} - ARTIFACT_FILE: ${{ needs.package-core.outputs.CORE_ARTIFACT }}.tar.bz2 + CORE_ARTIFACT: ArduinoCore-zephyr-${{ needs.package-core.outputs.CORE_HASH }} steps: - uses: actions/download-artifact@v4 with: @@ -223,7 +232,7 @@ jobs: aws-region: ${{ secrets.AWS_REGION }} - name: Upload artifact - run: aws s3 cp ${ARTIFACT_FILE} s3://${{ secrets.S3_BUCKET }}/ + run: aws s3 cp ArduinoCore-*.tar.bz2 s3://${{ secrets.S3_BUCKET }}/ publish-json: name: Publish json @@ -232,12 +241,9 @@ jobs: needs: - package-core - test-core - - publish-core env: - CORE_ARTIFACT: ${{ needs.package-core.outputs.CORE_ARTIFACT }} - ARTIFACT_FILE: ${{ needs.package-core.outputs.CORE_ARTIFACT }}.tar.bz2 + CORE_ARTIFACT: ArduinoCore-zephyr-${{ needs.package-core.outputs.CORE_HASH }} CORE_TAG: ${{ needs.package-core.outputs.CORE_TAG }} - PACKAGE_INDEX_JSON: zephyr-core-${{ needs.package-core.outputs.CORE_TAG }}.json steps: - uses: actions/checkout@v4 with: @@ -251,12 +257,15 @@ jobs: with: name: ${{ env.CORE_ARTIFACT }} - # uses: ARTIFACT_FILE CORE_TAG PACKAGE_INDEX_JSON - name: Prepare package index snippet - run: ./extra/gen_package_index_json.sh + run: | + PACKAGE=zephyr + ARTIFACT_FILE=ArduinoCore-${PACKAGE}-${CORE_HASH}.tar.bz2 + PACKAGE_JSON=ArduinoCore-${PACKAGE}-${CORE_TAG}.json + ./extra/gen_package_index_json.sh ${CORE_TAG} ${ARTIFACT_FILE} > ${PACKAGE_JSON} - name: Archive package index snippet uses: actions/upload-artifact@v4 with: - name: ${{ env.PACKAGE_INDEX_JSON }} - path: ${{ env.PACKAGE_INDEX_JSON }} + name: ArduinoCore-zephyr-${{ env.CORE_TAG }}-jsons + path: ArduinoCore-*-${{ env.CORE_TAG }}.json diff --git a/extra/bootstrap.sh b/extra/bootstrap.sh index 99c7f3cc7..bf63e65d3 100755 --- a/extra/bootstrap.sh +++ b/extra/bootstrap.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + if [ ! -f platform.txt ]; then echo Launch this script from the root core folder as ./extra/bootstrap.sh exit 2 diff --git a/extra/gen_package_index_json.sh b/extra/gen_package_index_json.sh index 6cb0eb10d..2e3c4e87e 100755 --- a/extra/gen_package_index_json.sh +++ b/extra/gen_package_index_json.sh @@ -1,13 +1,22 @@ #!/bin/bash -if [ -z "$CORE_TAG" ]; then - echo "This script can be used in Github CI only." +if [ $# -ne 2 ] ; then + echo "Usage: $0 " exit 1 fi -cat extra/zephyr-core-template.json | sed \ +PACKAGE=zephyr +CORE_TAG=$1 +ARTIFACT_FILE=$2 + +if [ ! -f "$ARTIFACT_FILE" ] ; then + echo "Artifact file '$ARTIFACT_FILE' not found" 1>&2 + exit 1 +fi + +JSON_TEMPLATE="extra/zephyr-core-template.json" +cat $JSON_TEMPLATE | sed \ -e "s/__CORE_TAG__/$CORE_TAG/" \ - -e "s/__ARTIFACT_FILE__/$ARTIFACT_FILE/" \ + -e "s/__ARTIFACT_FILE__/$(basename $ARTIFACT_FILE)/" \ -e "s/__ARTIFACT_HASH__/$(sha256sum $ARTIFACT_FILE | awk '{print $1}')/" \ - -e "s/__ARTIFACT_SIZE__/$(stat -c %s $ARTIFACT_FILE)/" \ - > $PACKAGE_INDEX_JSON + -e "s/__ARTIFACT_SIZE__/$(stat -c %s $ARTIFACT_FILE)/" | jq . diff --git a/extra/get_board_details.sh b/extra/get_board_details.sh index 035b101d3..a92b850d5 100755 --- a/extra/get_board_details.sh +++ b/extra/get_board_details.sh @@ -7,14 +7,15 @@ get_boards() { get_board_field() { board=$1 field=$2 - cat boards.txt | sed -e 's/#.*//' | grep -E "^$board\\.build\\.$field=" | cut -d '=' -f2- | sed -e 's/"/\"/g' + cat boards.txt | sed -e 's/#.*//' | grep -E "^$board\\.$field=" | cut -d '=' -f2- | sed -e 's/"/\"/g' } for BOARD in $(get_boards); do - VARIANT=$(get_board_field $BOARD "variant") - TARGET=$(get_board_field $BOARD "zephyr_target") - ARGS=$(get_board_field $BOARD "zephyr_args") - HALS=$(get_board_field $BOARD "zephyr_hals") + NAME=$(get_board_field $BOARD "name") + VARIANT=$(get_board_field $BOARD "build\\.variant") + TARGET=$(get_board_field $BOARD "build\\.zephyr_target") + ARGS=$(get_board_field $BOARD "build\\.zephyr_args") + HALS=$(get_board_field $BOARD "build\\.zephyr_hals") if [ -z "$TARGET" ] ; then echo "error: missing '$BOARD.build.zephyr_target'" 1>&2 @@ -25,5 +26,14 @@ for BOARD in $(get_boards); do exit 1 fi - echo "{ \"board\": \"$BOARD\", \"variant\": \"$VARIANT\", \"target\": \"$TARGET\", \"args\": \"$ARGS\", \"hals\": \"$HALS\" }" + cat << EOF + { + "name": "$NAME", + "board": "$BOARD", + "variant": "$VARIANT", + "target": "$TARGET", + "args": "$ARGS", + "hals": "$HALS", + } +EOF done | jq -crs . diff --git a/extra/package_core.sh b/extra/package_core.sh index 3b0b46ae6..ff4c0a35c 100755 --- a/extra/package_core.sh +++ b/extra/package_core.sh @@ -8,11 +8,11 @@ if [ -z "$1" ]; then fi if [ ! -f platform.txt ]; then - echo "Launch this script from the root core folder as ./extra/package_core.sh VERSION" + echo "Launch this script from the root core folder." exit 2 fi -PACKAGE=ArduinoCore-zephyr +PACKAGE=zephyr VERSION=$1 OUTPUT_FILE=${2:-distrib/${PACKAGE}-${VERSION}.tar.bz2} @@ -20,19 +20,28 @@ OUTPUT_FILE=${2:-distrib/${PACKAGE}-${VERSION}.tar.bz2} TEMP_PLATFORM=$(mktemp -p . | sed 's/\.\///') sed -e "s/^version=.*/version=${VERSION}/" platform.txt > ${TEMP_PLATFORM} -TEMP_LIST=$(mktemp) -echo ${TEMP_PLATFORM} > ${TEMP_LIST} +declutter_file() { + [ -f "$1" ] || return 0 + cat "$1" | sed -e 's/\s*#.*//' | grep -v '^\s*$' +} -# import a basic list of files and directories -cat extra/package_core.inc | sed -e 's/\s*#.*//' | grep -v '^\s*$' >> ${TEMP_LIST} - -# add the board-specific files +# create the list of files and directories to include +TEMP_INC=$(mktemp -p . | sed 's/\.\///') +echo ${TEMP_PLATFORM} >> ${TEMP_INC} +declutter_file extra/package_core.inc >> ${TEMP_INC} extra/get_board_details.sh | jq -cr '.[]' | while read -r item; do variant=$(jq -cr '.variant' <<< "$item") - echo "variants/${variant}/" >> ${TEMP_LIST} - ls firmwares/zephyr-${variant}.* >> ${TEMP_LIST} + echo "::info::`${variant}`" + echo "variants/${variant}/" >> ${TEMP_INC} + ls firmwares/zephyr-${variant}.* >> ${TEMP_INC} done -cat ${TEMP_LIST} + +# create the list of files and directories to exclude +TEMP_EXC=$(mktemp -p . | sed 's/\.\///') +declutter_file extra/package.exc >> ${TEMP_EXC} + mkdir -p $(dirname ${OUTPUT_FILE}) -tar -cjhf ${OUTPUT_FILE} -X extra/package_core.exc -T ${TEMP_LIST} --transform "s,${TEMP_PLATFORM},platform.txt," --transform "s,^,${PACKAGE}/," -rm -f ${TEMP_LIST} ${TEMP_PLATFORM} +tar -cjhf ${OUTPUT_FILE} -X ${TEMP_EXC} -T ${TEMP_INC} \ + --transform "s,${TEMP_PLATFORM},platform.txt," \ + --transform "s,^,ArduinoCore-zephyr/," +rm -f ${TEMP_INC} ${TEMP_EXC} ${TEMP_PLATFORM} From 6617195c751f6b7c00954d2201eb4eeb3534f1fc Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Sun, 12 Oct 2025 18:12:03 +0200 Subject: [PATCH 112/117] ci/package_core: generate SemVer-compatible core version Add the get_core_version.sh script to generate a SemVer-compatible version number for the core, based on Git tags. Update package_core.sh and gen_package_index_json.sh to use it. Signed-off-by: Luca Burelli --- .github/workflows/package_core.yml | 1 + extra/gen_package_index_json.sh | 2 +- extra/get_core_version.sh | 38 ++++++++++++++++++++++++++++++ extra/package_core.sh | 3 ++- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100755 extra/get_core_version.sh diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 6767b017b..4051564e0 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -35,6 +35,7 @@ jobs: yes | ./extra/bootstrap.sh -o=--filter=tree:0 echo "CORE_HASH=$(git describe --always)" >> "$GITHUB_ENV" echo "ALL_BOARD_DATA=$(extra/get_board_details.sh | jq -c 'sort_by(.variant)')" >> "$GITHUB_ENV" + echo "## Building \`$(extra/get_core_version.sh)\`" >> "$GITHUB_STEP_SUMMARY" - name: Map output packages # needs the above env vars to be usable diff --git a/extra/gen_package_index_json.sh b/extra/gen_package_index_json.sh index 2e3c4e87e..d86df9bf9 100755 --- a/extra/gen_package_index_json.sh +++ b/extra/gen_package_index_json.sh @@ -16,7 +16,7 @@ fi JSON_TEMPLATE="extra/zephyr-core-template.json" cat $JSON_TEMPLATE | sed \ - -e "s/__CORE_TAG__/$CORE_TAG/" \ + -e "s/__CORE_TAG__/$(extra/get_core_version.sh)/" \ -e "s/__ARTIFACT_FILE__/$(basename $ARTIFACT_FILE)/" \ -e "s/__ARTIFACT_HASH__/$(sha256sum $ARTIFACT_FILE | awk '{print $1}')/" \ -e "s/__ARTIFACT_SIZE__/$(stat -c %s $ARTIFACT_FILE)/" | jq . diff --git a/extra/get_core_version.sh b/extra/get_core_version.sh new file mode 100755 index 000000000..5cfdf6b7c --- /dev/null +++ b/extra/get_core_version.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# This script generates a SemVer-compatible version number based on Git tags. +# +# If the current commit is tagged, it returns that version. If not, it +# generates a version string based on the next patch number and the current +# commit hash. +# +# If the tag is a simple "..", git describe will output: +# +# ..--g +# +# The regexp splits the patch number, awk converts the tokens to: +# +# ..-0.dev+ +# +# If the tag refers to a pre-release, like "..-", +# sed will output a total of 4 arguments and the format of the final awk output +# will be: +# +# ..--0.dev+ +# +# These are among the lowest possible SemVer versions greater than the last +# tagged version. +# +# If there are no tags at all (for example when run in a fork etc), it defaults +# to "9.9.9-+". + +VERSION=$(git describe --tags --exact-match 2>/dev/null) +if [ -z "$VERSION" ]; then + VERSION=$(git describe --tags --dirty 2>/dev/null | + sed 's/\.\([[:digit:]]\+\)\(-.*\)*-[[:digit:]]\+-g/ \1 \2 /' | + awk '{ if (NF==3) { print $1 "." ($2+1) "-0.dev+" $3 } else { print $1 "." $2 $3 "-0.dev+" $4 }}') + if [ -z "$VERSION" ]; then + VERSION="9.9.9-$(date '+%Y%m%d-%H%M%S')+$(git describe --always --dirty)" + fi +fi +echo $VERSION diff --git a/extra/package_core.sh b/extra/package_core.sh index ff4c0a35c..9af061631 100755 --- a/extra/package_core.sh +++ b/extra/package_core.sh @@ -18,7 +18,8 @@ OUTPUT_FILE=${2:-distrib/${PACKAGE}-${VERSION}.tar.bz2} # create a temporary platform.txt file with the correct version TEMP_PLATFORM=$(mktemp -p . | sed 's/\.\///') -sed -e "s/^version=.*/version=${VERSION}/" platform.txt > ${TEMP_PLATFORM} +cat platform.txt > ${TEMP_PLATFORM} +sed -ie "s/^version=.*/version=$(extra/get_core_version.sh)/" ${TEMP_PLATFORM} declutter_file() { [ -f "$1" ] || return 0 From 439fb767aa7694195f4f6dc131cc3032564e7a3d Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Sun, 12 Oct 2025 18:36:33 +0200 Subject: [PATCH 113/117] ci/package_core: multi-artifact support Add a new "board.build.artifact" option to boards.txt to specify which artifact a board belongs to. If not specified, the board will automatically be added to "zephyr_contrib". The artifact names collected from boards.txt (plus the auto "zephyr" package, which includes all boards) are used to build and package each artifact in the GitHub Actions workflow; in particular, the FQBN of each board will depend on its artifact's "architecture" field. The test action is also updated to test each artifact on the appropriate boards. Individual package JSON files are in the extra/artifacts directory, along with common include/exclude files for packaging. Signed-off-by: Luca Burelli --- .github/workflows/package_core.yml | 149 +++++++++++------- boards.txt | 16 +- .../_common.exc} | 0 .../_common.inc} | 3 +- extra/artifacts/_common.json | 51 ++++++ extra/artifacts/zephyr_contrib.json | 5 + extra/artifacts/zephyr_main.json | 5 + extra/artifacts/zephyr_unoq.json | 5 + extra/build_all.sh | 9 +- extra/gen_package_index_json.sh | 42 +++-- extra/get_board_details.sh | 13 ++ extra/package_core.sh | 53 +++++-- extra/zephyr-core-template.json | 87 ---------- 13 files changed, 267 insertions(+), 171 deletions(-) rename extra/{package_core.exc => artifacts/_common.exc} (100%) rename extra/{package_core.inc => artifacts/_common.inc} (87%) create mode 100644 extra/artifacts/_common.json create mode 100644 extra/artifacts/zephyr_contrib.json create mode 100644 extra/artifacts/zephyr_main.json create mode 100644 extra/artifacts/zephyr_unoq.json delete mode 100644 extra/zephyr-core-template.json diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 4051564e0..ebf73fd32 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -7,7 +7,7 @@ on: jobs: package-core: - name: Build and package core + name: Build and package cores runs-on: ubuntu-latest env: CCACHE_IGNOREOPTIONS: -specs=* @@ -15,6 +15,8 @@ jobs: CORE_TAG: ${{ env.CORE_TAG }} CORE_HASH: ${{ env.CORE_HASH }} ALL_BOARD_DATA: ${{ env.ALL_BOARD_DATA }} + ARTIFACTS: ${{ env.ARTIFACTS }} + SUB_ARCHES: ${{ env.SUB_ARCHES }} steps: - name: Install OS dependencies working-directory: /opt @@ -54,32 +56,54 @@ jobs: run: | ./extra/build_all.sh -f - - name: Package core + - name: Package cores run: | - PACKAGE=zephyr - CORE_ARTIFACT=ArduinoCore-$PACKAGE-${CORE_HASH} - ./extra/package_core.sh ${CORE_TAG} distrib/${CORE_ARTIFACT}.tar.bz2 + jq -cr '.[]' <<< ${ARTIFACTS} | while read -r artifact; do + ARTIFACT_NAME=ArduinoCore-${artifact}-${CORE_HASH} + ./extra/package_core.sh ${artifact} ${CORE_TAG} distrib/${ARTIFACT_NAME}.tar.bz2 + done - - name: Archive core + - name: Archive cores uses: actions/upload-artifact@v4 with: - name: ArduinoCore-zephyr-${{ env.CORE_HASH }} + name: ArduinoCore-archives-${{ env.CORE_HASH }} path: distrib/*.tar.bz2 + split-core: + name: Split off ${{ matrix.artifact }} + runs-on: ubuntu-latest + needs: package-core + env: + ALL_CORES_ARTIFACT: ArduinoCore-archives-${{ needs.package-core.outputs.CORE_HASH }} + CORE_ARTIFACT: ArduinoCore-${{ matrix.artifact }}-${{ needs.package-core.outputs.CORE_HASH }} + strategy: + matrix: + artifact: ${{ fromJSON( needs.package-core.outputs.ARTIFACTS ) }} + steps: + - uses: actions/download-artifact@v4 + with: + name: ${{ env.ALL_CORES_ARTIFACT }} + + - uses: actions/upload-artifact@v4 + with: + name: ${{ env.CORE_ARTIFACT }} + path: ${{ env.CORE_ARTIFACT }}.tar.bz2 + test-core: - name: Test on ${{ matrix.board }} + name: Test ${{ matrix.subarch }}:${{ matrix.board }} runs-on: ubuntu-latest needs: - package-core + - split-core strategy: matrix: include: ${{ fromJSON( needs.package-core.outputs.ALL_BOARD_DATA ) }} fail-fast: false env: - PLAT: arduino:zephyr - FQBN: arduino:zephyr:${{ matrix.board }} - CORE_ARTIFACT: ArduinoCore-zephyr-${{ needs.package-core.outputs.CORE_HASH }} + PLAT: arduino:${{ matrix.subarch }} + FQBN: arduino:${{ matrix.subarch }}:${{ matrix.board }} + CORE_ARTIFACT: ArduinoCore-${{ matrix.artifact }}-${{ needs.package-core.outputs.CORE_HASH }} steps: - uses: actions/download-artifact@v4 with: @@ -127,7 +151,7 @@ jobs: repo: context.repo.repo, run_id: context.runId }); - const job_name = `Test on ${{ matrix.board }}` + const job_name = `Test ${{ matrix.subarch }}:${{ matrix.board }}` return workflow_run.jobs.find((job) => job.name === job_name).id; - name: Prepare log @@ -159,37 +183,41 @@ jobs: merge-multiple: true - run: | - echo "### Core test results:" >> "$GITHUB_STEP_SUMMARY" - jq -c '.[]' <<< "$ALL_BOARD_DATA" | while read -r BOARD_DATA; do - BOARD=$(echo $BOARD_DATA | jq -cr '.board') - VARIANT=$(echo $BOARD_DATA | jq -cr '.variant') - FQBN="arduino:zephyr:$BOARD" - REPORT_FILE="$(echo $FQBN | tr ':' '-').json" - if [ ! -f $REPORT_FILE ]; then - echo "* :x: $BOARD (`$VARIANT`) - No report found?" >> "$GITHUB_STEP_SUMMARY" - else - REPORT=$(jq -cr '.boards[0].sketches[0]' $REPORT_FILE) - JOB_ID=$(echo $REPORT | jq -cr '.job_id') - JOB_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/job/${JOB_ID}#step:5:2" - if ! $(echo $REPORT | jq -cr '.compilation_success') ; then - echo "* :x: [$BOARD]($JOB_URL) (\`$VARIANT\`) - Build failed" >> "$GITHUB_STEP_SUMMARY" + ARTIFACTS=$(jq -cr 'map(.artifact) | unique | .[]' <<< ${ALL_BOARD_DATA}) # this avoids the 'zephyr' artifact + for artifact in $ARTIFACTS ; do + echo "### \`$artifact\` test results:" >> "$GITHUB_STEP_SUMMARY" + jq -c "map(select(.artifact == \"$artifact\")) | .[]" <<< ${ALL_BOARD_DATA} | while read -r BOARD_DATA; do + BOARD=$(echo $BOARD_DATA | jq -cr '.board') + VARIANT=$(echo $BOARD_DATA | jq -cr '.variant') + SUBARCH=$(echo $BOARD_DATA | jq -cr '.subarch') + FQBN="arduino:$SUBARCH:$BOARD" + REPORT_FILE="$(echo $FQBN | tr ':' '-').json" + if [ ! -f $REPORT_FILE ]; then + echo "* :x: $BOARD (\`$VARIANT\`) - No report found?" >> "$GITHUB_STEP_SUMMARY" else - WARNINGS=$(echo $REPORT | jq -cr '.warnings.current.absolute // 0') - if [ $WARNINGS -eq 0 ]; then - echo "* :white_check_mark: $BOARD (\`$VARIANT\`) - Build successful" >> "$GITHUB_STEP_SUMMARY" + REPORT=$(jq -cr '.boards[0].sketches[0]' $REPORT_FILE) + JOB_ID=$(echo $REPORT | jq -cr '.job_id') + JOB_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/job/${JOB_ID}#step:5:2" + if ! $(echo $REPORT | jq -cr '.compilation_success') ; then + echo "* :x: [$BOARD]($JOB_URL) (\`$VARIANT\`) - Build failed" >> "$GITHUB_STEP_SUMMARY" else - echo >> "$GITHUB_STEP_SUMMARY" - echo "
   :warning: $BOARD ($VARIANT) - $WARNINGS warnings:" >> "$GITHUB_STEP_SUMMARY" - echo >> "$GITHUB_STEP_SUMMARY" - echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY" - echo $REPORT | jq -cr '.warnings_log[]' >> "$GITHUB_STEP_SUMMARY" - echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY" - echo >> "$GITHUB_STEP_SUMMARY" - echo "
" >> "$GITHUB_STEP_SUMMARY" - echo >> "$GITHUB_STEP_SUMMARY" + WARNINGS=$(echo $REPORT | jq -cr '.warnings.current.absolute // 0') + if [ $WARNINGS -eq 0 ]; then + echo "* :white_check_mark: $BOARD (\`$VARIANT\`) - Build successful" >> "$GITHUB_STEP_SUMMARY" + else + echo >> "$GITHUB_STEP_SUMMARY" + echo "
   :warning: $BOARD ($VARIANT) - $WARNINGS warnings:" >> "$GITHUB_STEP_SUMMARY" + echo >> "$GITHUB_STEP_SUMMARY" + echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY" + echo $REPORT | jq -cr '.warnings_log[]' >> "$GITHUB_STEP_SUMMARY" + echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY" + echo >> "$GITHUB_STEP_SUMMARY" + echo "
" >> "$GITHUB_STEP_SUMMARY" + echo >> "$GITHUB_STEP_SUMMARY" + fi fi fi - fi + done done - name: Clean up intermediate artifacts @@ -220,11 +248,11 @@ jobs: id-token: write contents: read env: - CORE_ARTIFACT: ArduinoCore-zephyr-${{ needs.package-core.outputs.CORE_HASH }} + ALL_CORES_ARTIFACT: ArduinoCore-archives-${{ needs.package-core.outputs.CORE_HASH }} steps: - uses: actions/download-artifact@v4 with: - name: ${{ env.CORE_ARTIFACT }} + name: ${{ env.ALL_CORES_ARTIFACT }} - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 @@ -236,37 +264,52 @@ jobs: run: aws s3 cp ArduinoCore-*.tar.bz2 s3://${{ secrets.S3_BUCKET }}/ publish-json: - name: Publish json + name: Publish jsons runs-on: ubuntu-latest if: ${{ github.event_name == 'push' && github.repository == 'arduino/ArduinoCore-zephyr' }} needs: - package-core - test-core env: - CORE_ARTIFACT: ArduinoCore-zephyr-${{ needs.package-core.outputs.CORE_HASH }} + ALL_CORES_ARTIFACT: ArduinoCore-archives-${{ needs.package-core.outputs.CORE_HASH }} CORE_TAG: ${{ needs.package-core.outputs.CORE_TAG }} + CORE_HASH: ${{ needs.package-core.outputs.CORE_HASH }} + ARTIFACTS: ${{ needs.package-core.outputs.ARTIFACTS }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false - sparse-checkout: | - extra/gen_package_index_json.sh - extra/zephyr-core-template.json + fetch-tags: true - uses: actions/download-artifact@v4 with: - name: ${{ env.CORE_ARTIFACT }} + name: ${{ env.ALL_CORES_ARTIFACT }} - - name: Prepare package index snippet + - name: Prepare package index snippets run: | - PACKAGE=zephyr - ARTIFACT_FILE=ArduinoCore-${PACKAGE}-${CORE_HASH}.tar.bz2 - PACKAGE_JSON=ArduinoCore-${PACKAGE}-${CORE_TAG}.json - ./extra/gen_package_index_json.sh ${CORE_TAG} ${ARTIFACT_FILE} > ${PACKAGE_JSON} + jq -cr '.[]' <<< ${ARTIFACTS} | while read -r artifact; do + ARTIFACT_FILE=ArduinoCore-${artifact}-${CORE_HASH}.tar.bz2 + PACKAGE_JSON=ArduinoCore-${artifact}-${CORE_TAG}.json + ./extra/gen_package_index_json.sh ${artifact} ${ARTIFACT_FILE} ${PACKAGE_JSON} + done - - name: Archive package index snippet + - name: Archive package index snippets uses: actions/upload-artifact@v4 with: name: ArduinoCore-zephyr-${{ env.CORE_TAG }}-jsons path: ArduinoCore-*-${{ env.CORE_TAG }}.json + + cleanup-artifacts: + runs-on: ubuntu-latest + needs: + - package-core + - publish-core + - publish-json + if: ${{ !cancelled() }} + steps: + - name: Clean up intermediate artifacts + uses: geekyeggo/delete-artifact@v5.1.0 + with: + name: ArduinoCore-archives-${{ needs.package-core.outputs.CORE_HASH }} + failOnError: false diff --git a/boards.txt b/boards.txt index 872ccc75b..779ba90d9 100644 --- a/boards.txt +++ b/boards.txt @@ -17,6 +17,7 @@ giga.build.zephyr_target=arduino_giga_r1//m7 giga.build.zephyr_args=--shield arduino_giga_display_shield giga.build.zephyr_hals=hal_stm32 hal_infineon giga.build.variant=arduino_giga_r1_stm32h747xx_m7 +giga.build.artifact=zephyr_main giga.build.mcu=cortex-m7 giga.build.fpu=-mfpu=fpv5-d16 giga.build.architecture=cortex-m7 @@ -78,6 +79,7 @@ nano33ble.menu.debug.true.build.zsk_args.debug=-debug nano33ble.build.zephyr_target=arduino_nano_33_ble//sense nano33ble.build.zephyr_args= nano33ble.build.zephyr_hals=hal_nordic +nano33ble.build.artifact=zephyr_main nano33ble.build.variant=arduino_nano_33_ble_nrf52840_sense nano33ble.build.mcu=cortex-m4 nano33ble.build.fpu=-mfpu=fpv4-sp-d16 @@ -126,7 +128,7 @@ nano33ble.debug.cortex-debug.custom.request=attach ############################################################################################################## -ek_ra8d1.name=EK_RA8D1 +ek_ra8d1.name=Renesas RA8D1 EK ek_ra8d1.build.core=arduino ek_ra8d1.build.crossprefix=arm-zephyr-eabi- ek_ra8d1.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ @@ -180,7 +182,7 @@ ek_ra8d1.bootloader.target=R7FA8D1AH ############################################################################################################## -frdm_mcxn947.name=MCXN947 +frdm_mcxn947.name=NXP FRDM MCXN947 frdm_mcxn947.build.core=arduino frdm_mcxn947.build.crossprefix=arm-zephyr-eabi- frdm_mcxn947.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ @@ -241,6 +243,7 @@ portentah7.menu.debug.true.build.zsk_args.debug=-debug portentah7.build.zephyr_target=arduino_portenta_h7@1.0.0//m7 portentah7.build.zephyr_args= portentah7.build.zephyr_hals=hal_stm32 hal_infineon +portentah7.build.artifact=zephyr_main portentah7.build.variant=arduino_portenta_h7_stm32h747xx_m7 portentah7.build.mcu=cortex-m7 portentah7.build.fpu=-mfpu=fpv5-d16 @@ -291,7 +294,7 @@ portentah7.debug.svd_file={runtime.platform.path}/svd/STM32H747_CM7.svd ############################################################################################################## -frdm_rw612.name=RW612 +frdm_rw612.name=NXP FRDM RW612 frdm_rw612.build.core=arduino frdm_rw612.build.crossprefix=arm-zephyr-eabi- frdm_rw612.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ @@ -351,6 +354,7 @@ niclasense.menu.debug.true.build.zsk_args.debug=-debug niclasense.build.zephyr_target=arduino_nicla_sense_me niclasense.build.zephyr_args= niclasense.build.zephyr_hals=hal_nordic +niclasense.build.artifact=zephyr_main niclasense.build.variant=arduino_nicla_sense_me_nrf52832 niclasense.build.mcu=cortex-m4 niclasense.build.fpu=-mfpu=fpv4-sp-d16 @@ -405,7 +409,7 @@ niclasense.debug.cortex-debug.custom.request=attach ########################################################################################## -portentac33.name=Portenta C33 +portentac33.name=Arduino Portenta C33 portentac33.build.core=arduino portentac33.build.crossprefix=arm-zephyr-eabi- portentac33.build.compiler_path={runtime.tools.arm-zephyr-eabi-0.16.8.path}/bin/ @@ -422,6 +426,7 @@ portentac33.menu.link_mode.static.upload.extension=bin-zsk.bin portentac33.build.zephyr_target=arduino_portenta_c33 portentac33.build.zephyr_args= portentac33.build.zephyr_hals=hal_renesas nanopb +portentac33.build.artifact=zephyr_main portentac33.build.variant=arduino_portenta_c33_r7fa6m5bh3cfc portentac33.build.mcu=cortex-m33 portentac33.build.fpu=-mfpu=fpv5-sp-d16 @@ -473,6 +478,7 @@ opta.menu.debug.true.build.zsk_args.debug=-debug opta.build.zephyr_target=arduino_opta//m7 opta.build.zephyr_args= opta.build.zephyr_hals=hal_stm32 hal_infineon +opta.build.artifact=zephyr_main opta.build.variant=arduino_opta_stm32h747xx_m7 opta.build.mcu=cortex-m7 opta.build.fpu=-mfpu=fpv5-d16 @@ -541,6 +547,8 @@ unoq.menu.flash_mode.ram.openocd_cfg=flash_sketch_ram.cfg unoq.build.zephyr_target=arduino_uno_q unoq.build.zephyr_args= unoq.build.variant=arduino_uno_q_stm32u585xx +unoq.build.artifact=zephyr_unoq +unoq.build.subarch=zephyr unoq.build.mcu=cortex-m33 unoq.build.fpu=-mfpu=fpv5-sp-d16 unoq.build.architecture=cortex-m33 diff --git a/extra/package_core.exc b/extra/artifacts/_common.exc similarity index 100% rename from extra/package_core.exc rename to extra/artifacts/_common.exc diff --git a/extra/package_core.inc b/extra/artifacts/_common.inc similarity index 87% rename from extra/package_core.inc rename to extra/artifacts/_common.inc index e084f3213..754a1e6d3 100644 --- a/extra/package_core.inc +++ b/extra/artifacts/_common.inc @@ -5,8 +5,7 @@ # are automatically added by package_core.sh depending on the information # in 'boards.txt', so they should not be included here. -boards.txt -# platform.txt is added by package_core.sh +# boards.txt and platform.txt are added by package_core.sh programmers.txt LICENSE README.md diff --git a/extra/artifacts/_common.json b/extra/artifacts/_common.json new file mode 100644 index 000000000..c1b6b08b7 --- /dev/null +++ b/extra/artifacts/_common.json @@ -0,0 +1,51 @@ +{ + "name": "", + "architecture": "", + "version": "", + "category": "", + "url": "", + "archiveFileName": "", + "checksum": "", + "size": "", + "help": { + "online": "https://www.arduino.cc/en/Reference/HomePage" + }, + "boards": [], + "toolsDependencies": [ + { + "packager": "zephyr", + "name": "arm-zephyr-eabi", + "version": "0.16.8" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.11.0-arduino5" + }, + { + "packager": "arduino", + "name": "bossac", + "version": "1.9.1-arduino2" + }, + { + "packager": "arduino", + "name": "zephyr-sketch-tool", + "version": "0.1.0" + }, + { + "packager": "arduino", + "name": "sync-zephyr-artifacts", + "version": "0.1.0" + }, + { + "packager": "arduino", + "name": "adb", + "version": "32.0.0" + }, + { + "packager": "arduino", + "name": "remoteocd", + "version": "0.0.4-rc.4" + } + ] +} diff --git a/extra/artifacts/zephyr_contrib.json b/extra/artifacts/zephyr_contrib.json new file mode 100644 index 000000000..9fa9b8a5c --- /dev/null +++ b/extra/artifacts/zephyr_contrib.json @@ -0,0 +1,5 @@ +{ + "name": "Zephyr community boards (BETA)", + "architecture": "zephyr_contrib", + "category": "Contributed" +} diff --git a/extra/artifacts/zephyr_main.json b/extra/artifacts/zephyr_main.json new file mode 100644 index 000000000..b36cef34b --- /dev/null +++ b/extra/artifacts/zephyr_main.json @@ -0,0 +1,5 @@ +{ + "name": "Arduino Zephyr Boards (BETA)", + "architecture": "zephyr_main", + "category": "Arduino" +} diff --git a/extra/artifacts/zephyr_unoq.json b/extra/artifacts/zephyr_unoq.json new file mode 100644 index 000000000..96426b604 --- /dev/null +++ b/extra/artifacts/zephyr_unoq.json @@ -0,0 +1,5 @@ +{ + "name": "Arduino Uno Q board", + "architecture": "zephyr", + "category": "Arduino" +} diff --git a/extra/build_all.sh b/extra/build_all.sh index f132b83dc..db3b8529c 100755 --- a/extra/build_all.sh +++ b/extra/build_all.sh @@ -27,6 +27,7 @@ fi final_result=0 while read -r item; do board=$(jq -cr '.board' <<< "$item") + subarch=$(jq -cr '.subarch' <<< "$item") variant=$(jq -cr '.variant' <<< "$item") target=$(jq -cr '.target' <<< "$item") args=$(jq -cr '.args // ""' <<< "$item") @@ -36,7 +37,7 @@ while read -r item; do echo "${board} (${variant})" echo "${board} (${variant})" | sed -e 's/./=/g' else - echo "::group::=== ${board} (${variant}) ===" + echo "::group::=== ${subarch}:${board} (${variant}) ===" fi ./extra/build.sh "$target" $args @@ -49,10 +50,10 @@ while read -r item; do else echo "::endgroup::" if [ $result -eq 0 ] ; then - echo "- :white_check_mark: \`${variant}\`" >> "$GITHUB_STEP_SUMMARY" + echo "- :white_check_mark: \`${variant}\` (${subarch})" >> "$GITHUB_STEP_SUMMARY" else - echo "^^$(echo "=== ${board} (${variant}) ===" | sed -e 's/./^/g') FAILED with $result!" - echo "- :x: \`${variant}\`" >> "$GITHUB_STEP_SUMMARY" + echo "^^$(echo "=== ${subarch}:${board} (${variant}) ===" | sed -e 's/./^/g') FAILED with $result!" + echo "- :x: \`${variant}\` (${subarch})" >> "$GITHUB_STEP_SUMMARY" fi fi [ $result -ne 0 ] && ! $FORCE && exit $result diff --git a/extra/gen_package_index_json.sh b/extra/gen_package_index_json.sh index d86df9bf9..218eeec6d 100755 --- a/extra/gen_package_index_json.sh +++ b/extra/gen_package_index_json.sh @@ -1,22 +1,42 @@ #!/bin/bash -if [ $# -ne 2 ] ; then - echo "Usage: $0 " - exit 1 +set -e + +if [ $# -lt 2 ] || [ $# -gt 3 ] ; then + echo "Usage: $0 []" 1>&2 + exit 1 fi -PACKAGE=zephyr -CORE_TAG=$1 +ARTIFACT=$1 ARTIFACT_FILE=$2 +JSON_FILE=${3:-/dev/stdout} if [ ! -f "$ARTIFACT_FILE" ] ; then echo "Artifact file '$ARTIFACT_FILE' not found" 1>&2 exit 1 fi -JSON_TEMPLATE="extra/zephyr-core-template.json" -cat $JSON_TEMPLATE | sed \ - -e "s/__CORE_TAG__/$(extra/get_core_version.sh)/" \ - -e "s/__ARTIFACT_FILE__/$(basename $ARTIFACT_FILE)/" \ - -e "s/__ARTIFACT_HASH__/$(sha256sum $ARTIFACT_FILE | awk '{print $1}')/" \ - -e "s/__ARTIFACT_SIZE__/$(stat -c %s $ARTIFACT_FILE)/" | jq . +if [ "$ARTIFACT" == "zephyr" ] ; then + exit 0 # no JSON needed for the merged file +fi + +if ! [ -f "extra/artifacts/$ARTIFACT.json" ] ; then + echo "Artifact '$ARTIFACT' not found" 1>&2 + exit 1 +fi + +BOARD_NAMES=$(extra/get_board_details.sh | jq -c "map(select(.artifact == \"$ARTIFACT\")) | map({name}) | sort") + +jq -s '{ "packages": [ { "platforms": [ .[0]*.[1]*.[2] ] } ] }' \ + extra/artifacts/_common.json \ + extra/artifacts/${ARTIFACT}.json \ + - > "$JSON_FILE" << EOF +{ + "version": "$(extra/get_core_version.sh)", + "url": "https://downloads.arduino.cc/cores/zephyr/$(basename $ARTIFACT_FILE)", + "archiveFileName": "$(basename $ARTIFACT_FILE)", + "checksum": "SHA256:$(sha256sum $ARTIFACT_FILE | awk '{print $1}')", + "size": "$(stat -c %s $ARTIFACT_FILE)", + "boards": $BOARD_NAMES +} +EOF diff --git a/extra/get_board_details.sh b/extra/get_board_details.sh index a92b850d5..b3506c3cc 100755 --- a/extra/get_board_details.sh +++ b/extra/get_board_details.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + get_boards() { cat boards.txt | sed -e 's/#.*//' | grep -E '^.*\.build\.variant=' | sed -e 's/\.build\.variant=.*//' } @@ -16,6 +18,15 @@ for BOARD in $(get_boards); do TARGET=$(get_board_field $BOARD "build\\.zephyr_target") ARGS=$(get_board_field $BOARD "build\\.zephyr_args") HALS=$(get_board_field $BOARD "build\\.zephyr_hals") + ARTIFACT=$(get_board_field $BOARD "build\\.artifact") + ARTIFACT=${ARTIFACT:-zephyr_contrib} + + ARTIFACT_JSON=extra/artifacts/$ARTIFACT.json + if ! [ -f "$ARTIFACT_JSON" ] ; then + echo "error: missing artifact description file $ARTIFACT_JSON" 1>&2 + exit 1 + fi + SUBARCH=$(jq -r '.architecture' < $ARTIFACT_JSON) if [ -z "$TARGET" ] ; then echo "error: missing '$BOARD.build.zephyr_target'" 1>&2 @@ -34,6 +45,8 @@ for BOARD in $(get_boards); do "target": "$TARGET", "args": "$ARGS", "hals": "$HALS", + "artifact": "$ARTIFACT", + "subarch": "$SUBARCH" } EOF done | jq -crs . diff --git a/extra/package_core.sh b/extra/package_core.sh index 9af061631..bc95aec1b 100755 --- a/extra/package_core.sh +++ b/extra/package_core.sh @@ -3,7 +3,7 @@ set -e if [ -z "$1" ]; then - echo "Usage: $0 VERSION [OUTPUT_FILE]" + echo "Usage: $0 ARTIFACT VERSION [OUTPUT_FILE]" exit 1 fi @@ -12,13 +12,41 @@ if [ ! -f platform.txt ]; then exit 2 fi -PACKAGE=zephyr -VERSION=$1 -OUTPUT_FILE=${2:-distrib/${PACKAGE}-${VERSION}.tar.bz2} +ARTIFACT=$1 +VERSION=$2 +OUTPUT_FILE=${3:-distrib/${ARTIFACT}-${VERSION}.tar.bz2} + +# we use variants for include because we filter on file paths +# and boards for exclude because we want to remove matching lines in boards.txt +BOARD_DETAILS=$(extra/get_board_details.sh) +if [ $ARTIFACT == "zephyr" ] ; then + INCLUDED_VARIANTS=$(echo ${BOARD_DETAILS} | jq -cr ".[].variant") + EXCLUDED_BOARDS="" +elif [ ! -f extra/artifacts/${ARTIFACT}.json ]; then + echo "Unknown artifact '$ARTIFACT'." + exit 3 +else + ARTIFACT_NAME="$(grep '"name"' extra/artifacts/${ARTIFACT}.json | head -n 1 | cut -d '"' -f 4) (${VERSION})" + INCLUDED_VARIANTS=$(echo ${BOARD_DETAILS} | jq -cr "map(select(.artifact == \"$ARTIFACT\")) | .[].variant") + EXCLUDED_BOARDS=$(echo ${BOARD_DETAILS} | jq -cr "map(select(.artifact != \"$ARTIFACT\")) | .[].board") +fi + +[ -n $GITHUB_WORKSPACE ] && echo "::group::Packaging ${ARTIFACT_NAME:-all variants} ($(basename $OUTPUT_FILE))" + +# create a temporary boards.txt file with the correct list of boards +TEMP_BOARDS=$(mktemp -p . | sed 's/\.\///') +cat boards.txt >> $TEMP_BOARDS +for board in $EXCLUDED_BOARDS ; do + # remove (even commented) lines for excluded boards + sed -i "/^\(\s*#\s*\)\?${board}\./d" $TEMP_BOARDS +done +# remove multiple empty lines +sed -i '/^$/N;/^\n$/D' $TEMP_BOARDS # create a temporary platform.txt file with the correct version TEMP_PLATFORM=$(mktemp -p . | sed 's/\.\///') cat platform.txt > ${TEMP_PLATFORM} +[ -z "$ARTIFACT_NAME" ] || sed -ie "s/^name=.*/name=${ARTIFACT_NAME}/" ${TEMP_PLATFORM} sed -ie "s/^version=.*/version=$(extra/get_core_version.sh)/" ${TEMP_PLATFORM} declutter_file() { @@ -28,21 +56,26 @@ declutter_file() { # create the list of files and directories to include TEMP_INC=$(mktemp -p . | sed 's/\.\///') +echo ${TEMP_BOARDS} >> ${TEMP_INC} echo ${TEMP_PLATFORM} >> ${TEMP_INC} -declutter_file extra/package_core.inc >> ${TEMP_INC} -extra/get_board_details.sh | jq -cr '.[]' | while read -r item; do - variant=$(jq -cr '.variant' <<< "$item") - echo "::info::`${variant}`" +declutter_file extra/artifacts/_common.inc >> ${TEMP_INC} +declutter_file extra/artifacts/$ARTIFACT.inc >> ${TEMP_INC} +for variant in $INCLUDED_VARIANTS ; do + echo "::info::\`${variant}\`" echo "variants/${variant}/" >> ${TEMP_INC} ls firmwares/zephyr-${variant}.* >> ${TEMP_INC} done # create the list of files and directories to exclude TEMP_EXC=$(mktemp -p . | sed 's/\.\///') -declutter_file extra/package.exc >> ${TEMP_EXC} +declutter_file extra/artifacts/_common.exc >> ${TEMP_EXC} +declutter_file extra/artifacts/$ARTIFACT.exc >> ${TEMP_EXC} mkdir -p $(dirname ${OUTPUT_FILE}) tar -cjhf ${OUTPUT_FILE} -X ${TEMP_EXC} -T ${TEMP_INC} \ + --transform "s,${TEMP_BOARDS},boards.txt," \ --transform "s,${TEMP_PLATFORM},platform.txt," \ --transform "s,^,ArduinoCore-zephyr/," -rm -f ${TEMP_INC} ${TEMP_EXC} ${TEMP_PLATFORM} +rm -f ${TEMP_INC} ${TEMP_EXC} ${TEMP_BOARDS} ${TEMP_PLATFORM} + +[ -n $GITHUB_WORKSPACE ] && echo "::endgroup::" diff --git a/extra/zephyr-core-template.json b/extra/zephyr-core-template.json deleted file mode 100644 index 5c945f28f..000000000 --- a/extra/zephyr-core-template.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "packages": [ - { - "platforms": [ - { - "name": "Arduino Zephyr Boards (BETA)", - "architecture": "zephyr", - "version": "__CORE_TAG__", - "category": "Arduino", - "url": "https://downloads.arduino.cc/cores/zephyr/__ARTIFACT_FILE__", - "archiveFileName": "__ARTIFACT_FILE__", - "checksum": "SHA-256:__ARTIFACT_HASH__", - "size": "__ARTIFACT_SIZE__", - "help": { - "online": "https://www.arduino.cc/en/Reference/HomePage" - }, - "boards": [ - { - "name": "Arduino Giga" - }, - { - "name": "Arduino Nano 33 BLE" - }, - { - "name": "Arduino Opta" - }, - { - "name": "Arduino Portenta H7" - }, - { - "name": "Arduino Portenta C33" - }, - { - "name": "Renesas EK_RA8D1" - }, - { - "name": "NXP FRDM MCXN947" - }, - { - "name": "NXP FRDM RW612" - }, - { - "name": "Arduino UNO Q" - } - ], - "toolsDependencies": [ - { - "packager": "zephyr", - "name": "arm-zephyr-eabi", - "version": "0.16.8" - }, - { - "packager": "arduino", - "name": "dfu-util", - "version": "0.11.0-arduino5" - }, - { - "packager": "arduino", - "name": "bossac", - "version": "1.9.1-arduino2" - }, - { - "packager": "arduino", - "name": "zephyr-sketch-tool", - "version": "0.1.0" - }, - { - "packager": "arduino", - "name": "sync-zephyr-artifacts", - "version": "0.1.0" - }, - { - "packager": "arduino", - "name": "adb", - "version": "32.0.0" - }, - { - "packager": "arduino", - "name": "remoteocd", - "version": "0.0.3-rc.2" - } - ] - } - ] - } - ] -} From efe6e9cd11147cf81d494899e25ef7c20454a607 Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Tue, 14 Oct 2025 18:15:26 +0200 Subject: [PATCH 114/117] ci/package_core: generate JSONs on PRs too Make sure the JSONs are generated on PRs too, so that they can be inspected before merging. --- .github/workflows/package_core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index ebf73fd32..899b62561 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -266,7 +266,7 @@ jobs: publish-json: name: Publish jsons runs-on: ubuntu-latest - if: ${{ github.event_name == 'push' && github.repository == 'arduino/ArduinoCore-zephyr' }} + if: ${{ github.repository == 'arduino/ArduinoCore-zephyr' }} needs: - package-core - test-core From d5f9cb8cee17bf46798a7ab98d74cb6044ae8a2d Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 15 Oct 2025 10:59:28 +0200 Subject: [PATCH 115/117] unoq: add router bridge HCI API --- libraries/Arduino_RouterBridge | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Arduino_RouterBridge b/libraries/Arduino_RouterBridge index 9c4100f01..a5b03a81a 160000 --- a/libraries/Arduino_RouterBridge +++ b/libraries/Arduino_RouterBridge @@ -1 +1 @@ -Subproject commit 9c4100f010603b994b13ebc0b478f2619fbac33c +Subproject commit a5b03a81a6f4684813c3409ca096d8a54e1f7d47 From aba6ac85ac539f42ea8e359db396f397e711022a Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Wed, 15 Oct 2025 11:32:35 +0200 Subject: [PATCH 116/117] ci/package_core: fix multi-artifact core upload Switch to a loop to upload all matching core tarballs to S3. Signed-off-by: Luca Burelli --- .github/workflows/package_core.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/package_core.yml b/.github/workflows/package_core.yml index 899b62561..05589f6a0 100644 --- a/.github/workflows/package_core.yml +++ b/.github/workflows/package_core.yml @@ -261,7 +261,10 @@ jobs: aws-region: ${{ secrets.AWS_REGION }} - name: Upload artifact - run: aws s3 cp ArduinoCore-*.tar.bz2 s3://${{ secrets.S3_BUCKET }}/ + run: | + for f in ArduinoCore-*.tar.bz2 ; do + aws s3 cp $f s3://${{ secrets.S3_BUCKET }}/ + done publish-json: name: Publish jsons From cbf7e449e063398c87d2cee71b86c471b8ce2c5c Mon Sep 17 00:00:00 2001 From: Luca Burelli Date: Wed, 15 Oct 2025 12:12:27 +0200 Subject: [PATCH 117/117] extra/gen_package_index_json.sh: fix JSON format --- extra/gen_package_index_json.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/gen_package_index_json.sh b/extra/gen_package_index_json.sh index 218eeec6d..3859054c7 100755 --- a/extra/gen_package_index_json.sh +++ b/extra/gen_package_index_json.sh @@ -35,7 +35,7 @@ jq -s '{ "packages": [ { "platforms": [ .[0]*.[1]*.[2] ] } ] }' \ "version": "$(extra/get_core_version.sh)", "url": "https://downloads.arduino.cc/cores/zephyr/$(basename $ARTIFACT_FILE)", "archiveFileName": "$(basename $ARTIFACT_FILE)", - "checksum": "SHA256:$(sha256sum $ARTIFACT_FILE | awk '{print $1}')", + "checksum": "SHA-256:$(sha256sum $ARTIFACT_FILE | awk '{print $1}')", "size": "$(stat -c %s $ARTIFACT_FILE)", "boards": $BOARD_NAMES }