From f9f9a09dfb026411a2dd493c3ac295db8b67ff3e Mon Sep 17 00:00:00 2001 From: laokaiyao Date: Tue, 24 May 2022 17:26:36 +0800 Subject: [PATCH] dac: update unit-test docs and examples for driver-NG --- components/driver/.build-test-rules.yml | 8 + components/driver/CMakeLists.txt | 13 +- components/driver/Kconfig | 21 + components/driver/dac.c | 643 --- components/driver/dac/dac_dma.h | 102 + components/driver/dac/dac_driver.c | 781 +++ components/driver/{ => dac}/esp32/dac_dma.c | 98 +- components/driver/{ => dac}/esp32s2/dac_dma.c | 124 +- components/driver/deprecated/adc_legacy.c | 18 +- .../driver/deprecated/dac_common_legacy.c | 55 +- components/driver/deprecated/driver/dac.h | 171 + .../driver/deprecated/driver/dac_common.h | 90 - .../deprecated/driver/dac_types_legacy.h | 51 +- .../deprecated/driver/i2s_types_legacy.h | 4 +- .../driver/deprecated/esp32/dac_legacy.c | 15 +- .../driver/deprecated/esp32/driver/dac.h | 36 - .../driver/deprecated/esp32s2/dac_legacy.c | 36 +- .../driver/deprecated/esp32s2/driver/dac.h | 73 - components/driver/deprecated/i2s_legacy.c | 17 +- components/driver/include/driver/dac_driver.h | 298 + components/driver/include/driver/dac_new.h | 260 - components/driver/include/driver/dac_types.h | 57 +- .../driver/include/esp_private/dac_dma.h | 37 - components/driver/linker.lf | 2 + components/driver/test/CMakeLists.txt | 2 +- .../test/dac_dma_test/test_dac_audio_file.h | 4980 ----------------- .../driver/test/dac_dma_test/test_esp32s2.c | 363 -- components/driver/test/test_dac_dma.c | 209 - .../dac_test_apps/dac/CMakeLists.txt | 18 + .../test_apps/dac_test_apps/dac/README.md | 2 + .../dac_test_apps/dac/main/CMakeLists.txt | 11 + .../dac_test_apps/dac/main/test_app_main.c | 54 + .../dac_test_apps/dac/main/test_dac.c | 368 ++ .../dac_test_apps/dac/main/test_dac_iram.c | 70 + .../test_apps/dac_test_apps/dac/pytest_dac.py | 22 + .../dac_test_apps/dac/sdkconfig.ci.iram_safe | 5 + .../dac_test_apps/dac/sdkconfig.ci.release | 5 + .../dac_test_apps/dac/sdkconfig.defaults | 4 + .../legacy_dac_driver/CMakeLists.txt | 18 + .../dac_test_apps/legacy_dac_driver/README.md | 2 + .../legacy_dac_driver/main/CMakeLists.txt | 7 + .../legacy_dac_driver/main/test_app_main.c | 53 + .../legacy_dac_driver/main/test_legacy_dac.c} | 21 +- .../legacy_dac_driver/pytest_legacy_dac.py | 21 + .../legacy_dac_driver/sdkconfig.ci.release | 5 + .../legacy_dac_driver/sdkconfig.defaults | 4 + .../legacy_i2s_adc_dac/main/test_i2s_adc.c | 3 +- .../legacy_i2s_adc_dac/sdkconfig.defaults | 1 + components/hal/CMakeLists.txt | 2 - components/hal/adc_oneshot_hal.c | 8 +- components/hal/dac_hal.c | 16 - components/hal/esp32/include/hal/dac_ll.h | 40 +- components/hal/esp32/include/hal/i2s_ll.h | 1 + components/hal/esp32s2/dac_hal.c | 99 - components/hal/esp32s2/include/hal/dac_hal.h | 128 - components/hal/esp32s2/include/hal/dac_ll.h | 40 +- components/hal/include/hal/dac_hal.h | 71 - components/hal/include/hal/dac_types.h | 58 +- components/soc/esp32/dac_periph.c | 22 +- .../soc/esp32/include/soc/Kconfig.soc_caps.in | 4 + .../soc/esp32/include/soc/clk_tree_defs.h | 31 + .../soc/esp32/include/soc/dac_channel.h | 26 +- components/soc/esp32/include/soc/soc_caps.h | 5 +- components/soc/esp32s2/dac_periph.c | 22 +- .../soc/esp32s2/include/soc/clk_tree_defs.h | 31 + .../soc/esp32s2/include/soc/dac_channel.h | 26 +- .../diagrams/dac/dac_file_structure.png | Bin 0 -> 63442 bytes .../diagrams/dac/dac_state_machine.png | Bin 0 -> 113167 bytes docs/doxygen/Doxyfile | 2 - docs/doxygen/Doxyfile_esp32 | 1 - docs/doxygen/Doxyfile_esp32s2 | 1 - docs/en/api-reference/peripherals/dac.rst | 297 +- .../release-5.x/5.0/peripherals.rst | 59 + .../classic_bt/a2dp_sink/main/bt_app_av.c | 54 +- .../classic_bt/a2dp_sink/main/bt_app_core.c | 7 +- .../coex/a2dp_gatts_coex/main/bt_app_av.c | 17 +- .../coex/a2dp_gatts_coex/main/bt_app_core.c | 7 +- .../coex/a2dp_gatts_coex/main/main.c | 37 +- examples/peripherals/.build-test-rules.yml | 16 + .../dac_audio}/CMakeLists.txt | 2 +- examples/peripherals/dac/dac_audio/README.md | 53 + .../dac/dac_audio/main/CMakeLists.txt | 2 + .../dac_audio}/main/audio_example_file.h | 0 .../dac/dac_audio/main/dac_audio.c | 73 + .../dac/dac_audio/pytest_dac_audio.py | 16 + .../dac_audio}/tools/generate_audio_file.py | 0 .../dac_audio}/tools/sample_00.wav | Bin .../dac_audio}/tools/sample_01.wav | Bin .../dac_audio}/tools/sample_02.wav | Bin .../dac_basic}/CMakeLists.txt | 2 +- examples/peripherals/dac/dac_basic/README.md | 71 + .../dac/dac_basic/main/CMakeLists.txt | 2 + .../dac/dac_basic/main/dac_basic.c | 96 + .../dac/dac_basic/pytest_dac_basic.py | 34 + .../dac/dac_basic/sdkconfig.defaults | 1 + .../dac/dac_continuous/CMakeLists.txt | 6 + .../peripherals/dac/dac_continuous/README.md | 153 + .../dac/dac_continuous/main/CMakeLists.txt | 6 + .../dac/dac_continuous/main/dac_continuous.h | 41 + .../dac_continuous/main/dac_continuous_dma.c | 130 + .../dac_continuous/main/dac_continuous_main.c | 89 + .../main/dac_continuous_timer.c | 113 + .../dac_continuous/pytest_dac_continuous.py | 33 + .../dac/dac_continuous/sdkconfig.defaults | 1 + .../dac/dac_cosine_wave/CMakeLists.txt | 6 + .../peripherals/dac/dac_cosine_wave/README.md | 70 + .../dac/dac_cosine_wave/main/CMakeLists.txt | 2 + .../dac_cosine_wave/main/dac_cosine_wave.c | 111 + .../dac_cosine_wave/pytest_dac_cosine_wave.py | 35 + .../dac/dac_cosine_wave/sdkconfig.defaults | 1 + .../peripherals/i2s/i2s_adc_dac/README.md | 94 - .../i2s/i2s_adc_dac/main/CMakeLists.txt | 2 - .../i2s/i2s_adc_dac/main/app_main.c | 303 - .../partitions_adc_dac_example.csv | 6 - .../i2s/i2s_adc_dac/pytest_i2s_adc_dac.py | 15 - .../i2s/i2s_adc_dac/sdkconfig.defaults | 7 - examples/peripherals/wave_gen/README.md | 112 - .../peripherals/wave_gen/image/sawtooth.png | Bin 47422 -> 0 bytes examples/peripherals/wave_gen/image/sine.png | Bin 50835 -> 0 bytes .../peripherals/wave_gen/image/square.png | Bin 45087 -> 0 bytes .../peripherals/wave_gen/image/triangle.png | Bin 49953 -> 0 bytes .../peripherals/wave_gen/main/CMakeLists.txt | 2 - .../wave_gen/main/Kconfig.projbuild | 103 - .../wave_gen/main/wave_gen_example_main.c | 131 - examples/system/app_trace_to_host/README.md | 2 +- .../system/app_trace_to_host/example_test.py | 2 +- .../app_trace_to_host/main/Kconfig.projbuild | 20 - .../main/app_trace_to_host_example_main.c | 52 +- tools/ci/check_copyright_ignore.txt | 4 - 129 files changed, 4163 insertions(+), 8227 deletions(-) delete mode 100644 components/driver/dac.c create mode 100644 components/driver/dac/dac_dma.h create mode 100644 components/driver/dac/dac_driver.c rename components/driver/{ => dac}/esp32/dac_dma.c (60%) rename components/driver/{ => dac}/esp32s2/dac_dma.c (56%) create mode 100644 components/driver/deprecated/driver/dac.h delete mode 100644 components/driver/deprecated/driver/dac_common.h delete mode 100644 components/driver/deprecated/esp32/driver/dac.h delete mode 100644 components/driver/deprecated/esp32s2/driver/dac.h create mode 100644 components/driver/include/driver/dac_driver.h delete mode 100644 components/driver/include/driver/dac_new.h delete mode 100644 components/driver/include/esp_private/dac_dma.h delete mode 100644 components/driver/test/dac_dma_test/test_dac_audio_file.h delete mode 100644 components/driver/test/dac_dma_test/test_esp32s2.c delete mode 100644 components/driver/test/test_dac_dma.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/dac/README.md create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/test_dac.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c create mode 100644 components/driver/test_apps/dac_test_apps/dac/pytest_dac.py create mode 100644 components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe create mode 100644 components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release create mode 100644 components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c rename components/driver/{test/test_dac.c => test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c} (91%) create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release create mode 100644 components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults delete mode 100644 components/hal/dac_hal.c delete mode 100644 components/hal/esp32s2/dac_hal.c delete mode 100644 components/hal/esp32s2/include/hal/dac_hal.h delete mode 100644 components/hal/include/hal/dac_hal.h create mode 100644 docs/_static/diagrams/dac/dac_file_structure.png create mode 100644 docs/_static/diagrams/dac/dac_state_machine.png rename examples/peripherals/{wave_gen => dac/dac_audio}/CMakeLists.txt (91%) create mode 100644 examples/peripherals/dac/dac_audio/README.md create mode 100644 examples/peripherals/dac/dac_audio/main/CMakeLists.txt rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/main/audio_example_file.h (100%) create mode 100644 examples/peripherals/dac/dac_audio/main/dac_audio.c create mode 100644 examples/peripherals/dac/dac_audio/pytest_dac_audio.py rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/generate_audio_file.py (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/sample_00.wav (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/sample_01.wav (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_audio}/tools/sample_02.wav (100%) rename examples/peripherals/{i2s/i2s_adc_dac => dac/dac_basic}/CMakeLists.txt (91%) create mode 100644 examples/peripherals/dac/dac_basic/README.md create mode 100644 examples/peripherals/dac/dac_basic/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_basic/main/dac_basic.c create mode 100644 examples/peripherals/dac/dac_basic/pytest_dac_basic.py create mode 100644 examples/peripherals/dac/dac_basic/sdkconfig.defaults create mode 100644 examples/peripherals/dac/dac_continuous/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_continuous/README.md create mode 100644 examples/peripherals/dac/dac_continuous/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous.h create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c create mode 100644 examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c create mode 100644 examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py create mode 100644 examples/peripherals/dac/dac_continuous/sdkconfig.defaults create mode 100644 examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_cosine_wave/README.md create mode 100644 examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt create mode 100644 examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c create mode 100644 examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py create mode 100644 examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/README.md delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/main/app_main.c delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py delete mode 100644 examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults delete mode 100644 examples/peripherals/wave_gen/README.md delete mode 100644 examples/peripherals/wave_gen/image/sawtooth.png delete mode 100644 examples/peripherals/wave_gen/image/sine.png delete mode 100644 examples/peripherals/wave_gen/image/square.png delete mode 100644 examples/peripherals/wave_gen/image/triangle.png delete mode 100644 examples/peripherals/wave_gen/main/CMakeLists.txt delete mode 100644 examples/peripherals/wave_gen/main/Kconfig.projbuild delete mode 100644 examples/peripherals/wave_gen/main/wave_gen_example_main.c delete mode 100644 examples/system/app_trace_to_host/main/Kconfig.projbuild diff --git a/components/driver/.build-test-rules.yml b/components/driver/.build-test-rules.yml index 0521ccfeda..008356ddad 100644 --- a/components/driver/.build-test-rules.yml +++ b/components/driver/.build-test-rules.yml @@ -1,5 +1,13 @@ # Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps +components/driver/test_apps/dac_test_apps/dac: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +components/driver/test_apps/dac_test_apps/legacy_dac_driver: + disable: + - if: SOC_DAC_SUPPORTED != 1 + components/driver/test_apps/i2s_test_apps: disable: - if: SOC_I2S_SUPPORTED != 1 diff --git a/components/driver/CMakeLists.txt b/components/driver/CMakeLists.txt index 2b63897d6f..7a5fd40aed 100644 --- a/components/driver/CMakeLists.txt +++ b/components/driver/CMakeLists.txt @@ -104,8 +104,10 @@ if(CONFIG_SOC_TOUCH_SENSOR_SUPPORTED) endif() if(CONFIG_SOC_DAC_SUPPORTED) - list(APPEND srcs "dac.c" - "deprecated/dac_common_legacy.c") + list(APPEND srcs "dac/dac_driver.c" + "dac/${target}/dac_dma.c" + "deprecated/dac_common_legacy.c" + "deprecated/${target}/dac_legacy.c") list(APPEND includes "deprecated/${target}") endif() @@ -114,12 +116,7 @@ if(CONFIG_SOC_SDIO_SLAVE_SUPPORTED) endif() if(${target} STREQUAL "esp32") - list(APPEND srcs "deprecated/adc_i2s_deprecated.c" - "deprecated/esp32/dac_legacy.c") -endif() - -if(${target} STREQUAL "esp32s2") - list(APPEND srcs "deprecated/esp32s2/dac_legacy.c") + list(APPEND srcs "deprecated/adc_i2s_deprecated.c") endif() if(BOOTLOADER_BUILD) diff --git a/components/driver/Kconfig b/components/driver/Kconfig index 33417b07bf..220d242883 100644 --- a/components/driver/Kconfig +++ b/components/driver/Kconfig @@ -401,6 +401,14 @@ menu "Driver Configurations" menu "DAC Configuration" depends on SOC_DAC_SUPPORTED + config DAC_CTRL_FUNC_IN_IRAM + bool "Place DAC control functions into IRAM" + default n + help + Place 'dac_channels_set_voltage' function into IRAM, + so that this function can be IRAM-safe and able to be called in the other IRAM interrupt context. + Enabling this option can improve driver performance as well. + config DAC_ISR_IRAM_SAFE bool "DAC ISR IRAM-Safe" default n @@ -422,6 +430,19 @@ menu "Driver Configurations" help Wether to enable the debug log message for DAC driver. Note that, this option only controls the DAC driver log, won't affect other drivers. + + config DAC_DMA_AUTO_16BIT_ALIGN + bool "Align the continuous data to 16 bit automatically" + depends on IDF_TARGET_ESP32 + default y + help + Whether to left shift the continuous data to align every bytes to 16 bits in the driver. + On ESP32, although the DAC resolution is only 8 bits, + the hardware requires 16 bits data in continuous mode. + By enabling this option, the driver will left shift 8 bits for the input data automatically. + Only disable this option when you decide to do this step by yourself. + Note that the driver will allocate a new piece of memory to save the converted data. + endmenu # DAC Configuration endmenu # Driver configurations diff --git a/components/driver/dac.c b/components/driver/dac.c deleted file mode 100644 index 75cc6e220c..0000000000 --- a/components/driver/dac.c +++ /dev/null @@ -1,643 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/queue.h" -#include "freertos/semphr.h" - -#include "sdkconfig.h" - -#include "soc/soc_caps.h" -#include "soc/lldesc.h" -#include "soc/dac_periph.h" -#include "hal/dac_types.h" -#include "hal/dac_ll.h" -#include "driver/rtc_io.h" -#include "driver/dac_new.h" -#include "esp_private/dac_dma.h" - -#include "esp_check.h" - -#define DAC_DMA_MAX_BUF_SIZE 4092 -#if CONFIG_DAC_ISR_IRAM_SAFE - #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) - #define DAC_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) -#else - #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) - #define DAC_MEM_ALLOC_CAPS MALLOC_CAP_DEFAULT -#endif -#define DAC_DMA_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA) - -typedef enum { - DAC_STATE_INITIAL, /* Initial state, dac has been registered */ - DAC_STATE_OUTPUT_READY, /* DAC channels enabled and ready to output constant voltage */ - DAC_STATE_DMA_READY, /* DMA mode initialized, but not started */ - DAC_STATE_CW_READY, /* Cosine wave mode is initialized, but not started */ - DAC_STATE_DMA_RUNNING, /* DAC DMA dma is running, can't switch mode in this stage */ - DAC_STATE_CW_RUNNING, /* DAC cosine wave generator is running, can't switch mode in this stage */ -} dac_state_t; - -typedef struct { - QueueHandle_t msg_que; -#if CONFIG_DAC_ISR_IRAM_SAFE - StaticQueue_t *msg_que_struct; /*!< Static message queue struct */ - void *msg_que_storage; /*!< Static message queue storage */ -#endif - dac_dma_config_t cfg; - lldesc_t **desc; -} dac_dma_t; - -typedef struct dac_channel_chain_s { - dac_channel_t id; - struct dac_channel_chain_s *next; -} dac_channel_chain_t; - -struct dac_channel_group_s { - uint32_t chan_num; - dac_state_t state; - SemaphoreHandle_t mutex; -#if CONFIG_DAC_ISR_IRAM_SAFE - StaticSemaphore_t *mutex_struct; /*!< Static mutex struct */ -#endif -#if CONFIG_PM_ENABLE - esp_pm_lock_handle_t pm_lock; -#endif - bool is_enabled; - dac_dma_t dma; - dac_cosine_config_t sw_cfg; - dac_channel_chain_t *head; -}; - -typedef struct { - dac_channel_chain_t *chan[SOC_DAC_PERIPH_NUM]; -} dac_platform_t; - -static const char *TAG = "DAC"; - -static dac_platform_t s_dac = { - .chan = { - [0 ... SOC_DAC_PERIPH_NUM - 1] = NULL - }, -}; - -/* Global dac spin lock for the whole DAC driver */ -portMUX_TYPE dac_spinlock = portMUX_INITIALIZER_UNLOCKED; // TODO: check rtc_spinlock - -#define DAC_NULL_POINTER_CHECK(p) ESP_RETURN_ON_FALSE((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") - -static void dac_free_dma_desc(dac_channel_group_handle_t handle) -{ - if (handle->dma.desc == NULL) { - return; - } - for (int i = 0; i < handle->dma.cfg.desc_num; i++) { - if (handle->dma.desc[i]) { - free(handle->dma.desc[i]); - handle->dma.desc[i] = NULL; - } - } - free(handle->dma.desc); - handle->dma.desc = NULL; -} - -static esp_err_t dac_alloc_dma_desc(dac_channel_group_handle_t handle) -{ - esp_err_t ret = ESP_OK; - - handle->dma.desc = (lldesc_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); - ESP_RETURN_ON_FALSE(handle->dma.desc, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma descriptor buffer"); - for (int cnt = 0; cnt < handle->dma.cfg.desc_num; cnt++) { - /* Allocate DMA descpriptor */ - handle->dma.desc[cnt] = (lldesc_t *) heap_caps_calloc(1, sizeof(lldesc_t), DAC_DMA_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma descriptor"); - } - - return ESP_OK; -err: - /* Free DMA buffer if failed to allocate memory */ - dac_free_dma_desc(handle); - return ret; -} - -static void IRAM_ATTR dac_default_intr_handler(void *arg) -{ - dac_channel_group_handle_t handle = (dac_channel_group_handle_t)arg; - uint32_t dummy; - BaseType_t need_awoke = pdFALSE; - BaseType_t tmp; - if (dac_dma_periph_intr_is_triggered()) { - lldesc_t *fdesc = (lldesc_t *)dac_dma_periph_intr_get_eof_desc(); - if (xQueueIsQueueFullFromISR(handle->dma.msg_que) == pdTRUE) { - xQueueReceiveFromISR(handle->dma.msg_que, &dummy, &tmp); - need_awoke |= tmp; - } - xQueueSendFromISR(handle->dma.msg_que, fdesc, &tmp); - need_awoke |= tmp; - } - if (need_awoke == pdTRUE) { - portYIELD_FROM_ISR(); - } -} - -static void dac_free_channel_chain(dac_channel_chain_t *head) -{ - if (head->next) { - dac_free_channel_chain(head->next); - } - s_dac.chan[head->id - 1] = NULL; - free(head); -} - -/*-------------------------------------------------------------------------- - DAC common APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_new_channel_group(const dac_group_config_t *dac_cfg, dac_channel_group_handle_t *handle) -{ - esp_err_t ret = ESP_OK; - - DAC_NULL_POINTER_CHECK(dac_cfg); - DAC_NULL_POINTER_CHECK(handle); - - ESP_RETURN_ON_FALSE((uint32_t)dac_cfg->chan_sel > 0, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); - ESP_RETURN_ON_FALSE((32 - __builtin_clz((uint32_t)dac_cfg->chan_sel)) <= SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); - - dac_channel_group_handle_t group = (dac_channel_group_handle_t)calloc(1, sizeof(struct dac_channel_group_s)); - ESP_RETURN_ON_FALSE(group, ESP_ERR_NO_MEM, TAG, "No memory for DAC channel group"); - group->chan_num = 0; - group->is_enabled = false; - group->state = DAC_STATE_INITIAL; // Set static output as default -#if CONFIG_DAC_ISR_IRAM_SAFE - group->mutex_struct = (StaticSemaphore_t *)heap_caps_calloc(1, sizeof(StaticSemaphore_t), DAC_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(group->mutex_struct, ESP_ERR_NO_MEM, err, TAG, "No memory for group mutex struct"); - group->mutex = xSemaphoreCreateMutexStatic(group->mutex_struct); -#else - group->mutex = xSemaphoreCreateMutex(); -#endif - ESP_GOTO_ON_FALSE(group->mutex, ESP_ERR_NO_MEM, err, TAG, "No memory for group mutex"); -#if CONFIG_PM_ENABLE - ESP_GOTO_ON_ERROR(esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_driver", &group->pm_lock), err, TAG, "Failed to create DAC pm lock"); -#endif - /* Register selected channels and link into a chain*/ - dac_channel_chain_t *temp = NULL; - for (uint32_t msk = (uint32_t)dac_cfg->chan_sel, i = 0; msk != 0; msk >>= 1, i++) { - if (msk & 0x01) { - /* Allocate memory for the channel when it is enabled */ - ESP_GOTO_ON_FALSE(!s_dac.chan[i], ESP_ERR_INVALID_STATE, err, TAG, "DAC channel %d has been registered already", i + 1); - dac_channel_chain_t *node = (dac_channel_chain_t *)calloc(1, sizeof(dac_channel_chain_t)); - ESP_GOTO_ON_FALSE(node, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC channel object"); - node->id = i; - s_dac.chan[i] = node; - group->chan_num++; - /* Link the channel into a chain */ - if (!temp) { - temp = node; - group->head = node; - } else { - temp->next = node; - temp = temp->next; - } - } - } - - *handle = group; - - return ret; - -err: - /* Free the resource when error occurs */ - dac_del_channel_group(group); - group = NULL; - - return ret; -} - -esp_err_t dac_del_channel_group(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_INITIAL, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not deinitialized"); - ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not disabled"); - - if (handle->mutex) { - vSemaphoreDelete(handle->mutex); - } -#if CONFIG_DAC_ISR_IRAM_SAFE - if (handle->mutex_struct) { - free(handle_mutex_struct); - } -#endif -#if CONFIG_PM_ENABLE - if (handle->pm_lock) { - esp_pm_lock_delete(handle->pm_lock); - handle->pm_lock = NULL; - } -#endif - if (handle->head) { - dac_free_channel_chain(handle->head); - } - free(handle); - - return ESP_OK; -} - -esp_err_t dac_channel_group_enable(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been enabled already"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; - rtc_gpio_init(gpio_num); - rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); - rtc_gpio_pullup_dis(gpio_num); - rtc_gpio_pulldown_dis(gpio_num); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_power_on(p->id); - dac_ll_rtc_sync_by_adc(false); - portEXIT_CRITICAL(&dac_spinlock); - } - handle->is_enabled = true; - /* If the group has not been intialized to other mode, set it `DAC_STATE_OUTPUT_READY` as default */ - if (handle->state == DAC_STATE_INITIAL) { - handle->state = DAC_STATE_OUTPUT_READY; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_disable(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled yet"); - ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is still running"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; - rtc_gpio_deinit(gpio_num); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_power_down(p->id); - portEXIT_CRITICAL(&dac_spinlock); - } - handle->is_enabled = false; - /* If the group has not been intialized to other mode, set it `DAC_STATE_INITIAL` as default */ - if (handle->state == DAC_STATE_OUTPUT_READY) { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC constant voltage outputting APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channel_group_output_constant_voltage(dac_channel_group_handle_t handle, uint8_t value) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_OUTPUT_READY, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been configured to other mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - /* Set the constant voltage for each channel in the group */ - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - portENTER_CRITICAL(&dac_spinlock); - dac_ll_update_output_value(p->id, value); - portEXIT_CRITICAL(&dac_spinlock); - } - xSemaphoreGive(handle->mutex); - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC DMA outputting APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channel_group_init_dma_output(dac_channel_group_handle_t handle, const dac_dma_config_t *dma_cfg) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, "This DAC group has been initialized already"); - - esp_err_t ret = ESP_OK; - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - -#if CONFIG_DAC_ISR_IRAM_SAFE - handle->dma.msg_que_storage = (uint8_t *)heap_caps_calloc(desc_num - 1, sizeof(lldesc_t *), I2S_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.msg_que_storage, ESP_ERR_NO_MEM, err, TAG, "No memory for message queue storage"); - handle->dma.msg_que_struct = (StaticQueue_t *)heap_caps_calloc(1, sizeof(StaticQueue_t), I2S_MEM_ALLOC_CAPS); - ESP_GOTO_ON_FALSE(handle->dma.msg_que_storage, ESP_ERR_NO_MEM, err, TAG, "No memory for message queue struct"); - handle->dma.msg_queue = xQueueCreateStatic(desc_num - 1, sizeof(lldesc_t *), handle->dma.msg_que_storage, handle->dma.msg_que_struct); -#else - handle->dma.msg_que = xQueueCreate(dma_cfg->desc_num - 1, sizeof(lldesc_t *)); -#endif - ESP_GOTO_ON_FALSE(handle->dma.msg_que, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue"); - /* Allocate DMA buffer */ - memcpy(&(handle->dma.cfg), dma_cfg, sizeof(dac_dma_config_t)); - ESP_GOTO_ON_ERROR(dac_alloc_dma_desc(handle), err2, TAG, "Failed to allocate memory for DMA buffers"); - - /* Initialize DAC DMA peripheral */ - ESP_GOTO_ON_ERROR(dac_dma_periph_init(handle->chan_num, dma_cfg->freq_hz, dma_cfg->chan_mode == DAC_CHANNEL_ALTERNATE), err2, TAG, "Failed to initialize DAC DMA peripheral"); - /* Register DMA interrupt */ - ESP_GOTO_ON_ERROR(dac_dma_periph_register_intr(dac_default_intr_handler, handle), err1, TAG, "Failed to register DMA interrupt"); - /* Connect DAC module to the DMA peripheral */ - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(true); - portEXIT_CRITICAL(&dac_spinlock); - - handle->state = DAC_STATE_DMA_READY; - - xSemaphoreGive(handle->mutex); - - return ret; -err1: - dac_dma_periph_deinit(); -err2: - dac_free_dma_desc(handle); -err3: - if (handle->dma.msg_que) { - vQueueDelete(handle->dma.msg_que); - } -#if CONFIG_DAC_ISR_IRAM_SAFE - if (handle->dma.msq_que_struct) { - free(handle->dma.msq_que_struct); - } - if (handle->dma.msq_que_storage) { - free(handle->dma.msq_que_storage); - } -#endif - xSemaphoreGive(handle->mutex); - return ret; -} - -esp_err_t dac_channel_group_deinit_dma_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group is still running or has been configured to other mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - - /* Free DMA buffer */ - dac_free_dma_desc(handle); - - /* Deregister DMA interrupt */ - ESP_RETURN_ON_ERROR(dac_dma_periph_deregister_intr(), TAG, "Failed to deregister DMA interrupt"); - /* Deinitialize DMA peripheral */ - ESP_RETURN_ON_ERROR(dac_dma_periph_deinit(), TAG, "Failed to deinitialize DAC DMA peripheral"); - /* Disconnect DAC module to the DMA peripheral */ - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(false); - portEXIT_CRITICAL(&dac_spinlock); - - if (handle->is_enabled) { - handle->state = DAC_STATE_OUTPUT_READY; - } else { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_start_dma_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has started already or not working at DMA mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_acquire(handle->pm_lock); -#endif - dac_dma_periph_enable(); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(true); - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_DMA_RUNNING; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_stop_dma_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has stopped already or not working at DMA mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - dac_dma_periph_disable(); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_digi_enable_dma(false); - portEXIT_CRITICAL(&dac_spinlock); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_release(handle->pm_lock); -#endif - handle->state = DAC_STATE_DMA_READY; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -static uint32_t dac_load_dma_data(lldesc_t *desc, uint8_t *data, uint32_t size) -{ - uint32_t byte_to_load = size > DAC_DMA_MAX_BUF_SIZE ? DAC_DMA_MAX_BUF_SIZE : size; - desc->owner = 1; - desc->eof = 1; - desc->sosf = 0; - desc->length = byte_to_load; - desc->size = byte_to_load; - desc->buf = data; - desc->offset = 0; - return byte_to_load; -} -// TODO: wait until all data sent or all data loaded? If all data loaded, need to monitor end of frame -esp_err_t dac_channel_group_write_acyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms) -{ - DAC_NULL_POINTER_CHECK(handle); - DAC_NULL_POINTER_CHECK(buf); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not started"); -#if CONFIG_DAC_ISR_IRAM_SAFE - ESP_RETURN_ON_ERROR(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, err, TAG, "the buffer is not in internal RAM"); -#endif - - esp_err_t ret = ESP_OK; - ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); - /* Reset the queue to drop the legacy descriptors */ - xQueueReset(handle->dma.msg_que); - /* Break the legacy descriptor chain for the new data */ - for (int i=0; i < handle->dma.cfg.desc_num; i++) { - handle->dma.desc[i]->empty = 0; - } - /* Pre-load data to DMA */ - size_t index = 0; - uint32_t pending_desc_cnt = 0; - for (int i = 0; i < handle->dma.cfg.desc_num && index < buf_size; i++, pending_desc_cnt++) { - index += dac_load_dma_data(handle->dma.desc[i], &buf[index], buf_size - index); - /* Link to the previous descriptor */ - if (i > 0) { - handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[i]; - } - } - /* Link the start and end desc as a ring if the buffer not loaded conmpletely */ - handle->dma.desc[pending_desc_cnt-1]->empty = index < buf_size ? (uint32_t)handle->dma.desc[0] : 0; - dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); - /* Wait until all data be sent */ - for (lldesc_t *finish_desc = NULL; pending_desc_cnt > 0; pending_desc_cnt--) { - ESP_GOTO_ON_FALSE(xQueueReceive(handle->dma.msg_que, &finish_desc, pdMS_TO_TICKS(timeout_ms)) == pdTRUE, - ESP_ERR_TIMEOUT, err, TAG, "Receive message queue timeout"); - /* Load those unsent data */ - if (index < buf_size) { - index += dac_load_dma_data(finish_desc, &buf[index], buf_size - index); - pending_desc_cnt++; - /* If all date loaded, break the ring desc */ - if (index >= buf_size) { - finish_desc->empty = 0; - } - } - } -err: - xSemaphoreGive(handle->mutex); - return ret; -} - -esp_err_t dac_channel_group_write_cyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_RUNNING, ESP_ERR_INVALID_STATE, TAG, "This DAC group is not started"); - ESP_RETURN_ON_FALSE(buf_size < (DAC_DMA_MAX_BUF_SIZE * handle->dma.cfg.desc_num), - ESP_ERR_INVALID_ARG, TAG, "The cyclic buffer size exceeds the total DMA buffer size: desc_num * %d = %d", - DAC_DMA_MAX_BUF_SIZE, DAC_DMA_MAX_BUF_SIZE * handle->dma.cfg.desc_num); -#if CONFIG_DAC_ISR_IRAM_SAFE - ESP_RETURN_ON_ERROR(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, err, TAG, "the buffer is not in internal RAM"); -#endif - ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); - /* If the buffer size is small, split it into two descriptors */ - if (buf_size > DAC_DMA_MAX_BUF_SIZE) { - size_t index = 0; - int i = 0; - for (i = 0; (i < handle->dma.cfg.desc_num) && (index < buf_size); i++) { - index += dac_load_dma_data(handle->dma.desc[i], &buf[index], buf_size - index); - /* Link to the previous descriptor */ - if (i > 0) { - handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[i]; - } - } - /* Link as a loop */ - handle->dma.desc[i-1]->empty = (uint32_t)handle->dma.desc[0]; - } - /* If the buffer size is small, split it into two descriptors */ - else { - uint32_t half = buf_size / 2; - dac_load_dma_data(handle->dma.desc[0], buf, half); - dac_load_dma_data(handle->dma.desc[1], &buf[half], buf_size - half); - handle->dma.desc[0]->empty = (uint32_t)handle->dma.desc[1]; - handle->dma.desc[1]->empty = (uint32_t)handle->dma.desc[0]; - } - dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); - xSemaphoreGive(handle->mutex); - return ESP_OK; -} - -/*-------------------------------------------------------------------------- - DAC cosine wave outputting APIs - ---------------------------------------------------------------------------*/ -esp_err_t dac_channel_group_init_cosine_output(dac_channel_group_handle_t handle, const dac_cosine_config_t *cw_cfg) -{ - DAC_NULL_POINTER_CHECK(handle); - DAC_NULL_POINTER_CHECK(cw_cfg); - ESP_RETURN_ON_FALSE((handle->state == DAC_STATE_INITIAL) | (handle->state == DAC_STATE_OUTPUT_READY), - ESP_ERR_INVALID_STATE, TAG, "This DAC group has been initialized already"); - ESP_RETURN_ON_FALSE(cw_cfg->freq_hz >= 130, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency below 130 Hz"); - ESP_RETURN_ON_FALSE(cw_cfg->freq_hz <= 55000, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency beyond 55000 Hz"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - portENTER_CRITICAL(&dac_spinlock); - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - /* Connect DAC module to cosine wave generator */ - dac_ll_cw_set_channel(p->id, true); - /* Set coefficients for cosine wave generator */ - dac_ll_cw_set_freq(cw_cfg->freq_hz); - dac_ll_cw_set_scale(p->id, cw_cfg->scale); - dac_ll_cw_set_phase(p->id, cw_cfg->phase); - dac_ll_cw_set_dc_offset(p->id, cw_cfg->offset); - } - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_CW_READY; - xSemaphoreGive(handle->mutex); - return ESP_OK; -} - -esp_err_t dac_channel_group_deinit_cosine_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group is still running or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - portENTER_CRITICAL(&dac_spinlock); - for (dac_channel_chain_t *p = handle->head; p != NULL; p = p->next) { - /* Disonnect DAC module to cosine wave generator */ - dac_ll_cw_set_channel(p->id, false); - } - portEXIT_CRITICAL(&dac_spinlock); - if (handle->is_enabled) { - handle->state = DAC_STATE_OUTPUT_READY; - } else { - handle->state = DAC_STATE_INITIAL; - } - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_start_cosine_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has started already or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_acquire(handle->pm_lock); -#endif - portENTER_CRITICAL(&dac_spinlock); - dac_ll_cw_generator_enable(); - portEXIT_CRITICAL(&dac_spinlock); - handle->state = DAC_STATE_CW_RUNNING; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} - -esp_err_t dac_channel_group_stop_cosine_output(dac_channel_group_handle_t handle) -{ - DAC_NULL_POINTER_CHECK(handle); - ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This DAC group has not been enabled"); - ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_RUNNING, ESP_ERR_INVALID_STATE, TAG, - "This DAC group has stopped already or not working at cosine wave mode"); - - xSemaphoreTake(handle->mutex, portMAX_DELAY); - portENTER_CRITICAL(&dac_spinlock); - dac_ll_cw_generator_disable(); - portEXIT_CRITICAL(&dac_spinlock); -#ifdef CONFIG_PM_ENABLE - esp_pm_lock_release(handle->pm_lock); -#endif - handle->state = DAC_STATE_CW_READY; - xSemaphoreGive(handle->mutex); - - return ESP_OK; -} diff --git a/components/driver/dac/dac_dma.h b/components/driver/dac/dac_dma.h new file mode 100644 index 0000000000..e23aaf827d --- /dev/null +++ b/components/driver/dac/dac_dma.h @@ -0,0 +1,102 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "esp_err.h" +#include "esp_intr_alloc.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +#define DAC_DMA_EOF_INTR 0x01 +#define DAC_DMA_TEOF_INTR 0x02 + +/** + * @brief Initialize DAC DMA peripheral + * + * @param[in] freq_hz DAC data frequency per channel + * @param[in] is_alternate Transmit data alternate between two channels or simultaneously + * @param[in] is_apll Whether use APLL as DAC digital controller clock source + * @return + * - ESP_ERR_NOT_FOUND The DMA peripheral has been occupied + * - ESP_ERR_NO_MEM No memory for the DMA peripheral struct + * - ESP_ERR_INVALID_ARG The frequency is outof range + * - ESP_OK Initialize DAC DMA peripheral success + */ +esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll); + +/** + * @brief Deinitialize DAC DMA peripheral + * + * @return + * - ESP_ERR_INVALID_STATE The DAC DMA has deinitialized already + * - ESP_OK Deinitialize DAC DMA peripheral success + */ +esp_err_t dac_dma_periph_deinit(void); + +/** + * @brief Register the DMA interrupt + * + * @param[in] intr_handler_func DMA interrupt handler function + * @param[in] user_ctx User contex that pass to the interrupt handler + * @return + * - ESP_ERR_INVALID_STATE DAC DMA peripheral is not initialized + * - ESP_OK Register DMA interrupt success + */ +esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx); + +/** + * @brief Deregister the DMA interrupt + * + * @return + * - ESP_ERR_INVALID_STATE DAC DMA peripheral is not initialized + * - ESP_OK Deregister DMA interrupt success + */ +esp_err_t dac_dma_periph_deregister_intr(void); + +/** + * @brief Enable the DMA and interrupt of the DAC DMA peripheral + * + */ +void dac_dma_periph_enable(void); + +/** + * @brief Disable the DMA and interrupt of the DAC DMA peripheral + * + */ +void dac_dma_periph_disable(void); + +/** + * @brief Whether the TX_EOF interrupt is triggered + * + * @return + * - true TX_EOF interrupt is triggered + * - false TX_EOF interrupt is not triggered + */ +uint32_t dac_dma_periph_intr_is_triggered(void); + +/** + * @brief Get the descriptor that just finished sending data + * + * @return + * - uint32_t The address of the EOF descriptor + */ +uint32_t dac_dma_periph_intr_get_eof_desc(void); + +/** + * @brief Start a DMA transaction + * @note DMA transaction will stop when reaches the tail of the descriptor link + * + * @param[in] desc_addr Descriptor address + */ +void dac_dma_periph_dma_trans_start(uint32_t desc_addr); + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/dac/dac_driver.c b/components/driver/dac/dac_driver.c new file mode 100644 index 0000000000..ed5a7039ab --- /dev/null +++ b/components/driver/dac/dac_driver.c @@ -0,0 +1,781 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" +#include "freertos/semphr.h" + +#include "sdkconfig.h" + +#include "rom/lldesc.h" +#include "soc/soc_caps.h" +#include "soc/dac_periph.h" +#include "hal/dac_types.h" +#include "hal/dac_ll.h" +#include "driver/rtc_io.h" +#include "driver/dac_driver.h" +#include "dac_dma.h" +#include "esp_memory_utils.h" +#include "clk_ctrl_os.h" + +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif +#include "esp_check.h" +#if CONFIG_PM_ENABLE +#include "esp_pm.h" +#endif + +#define DAC_DMA_MAX_BUF_SIZE 4092 // Max DMA buffer size is 4095 but better to align with 4 bytes, so set 4092 here +#if CONFIG_DAC_ISR_IRAM_SAFE || CONFIG_DAC_CTRL_FUNC_IN_IRAM + #define DAC_MEM_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT) +#else + #define DAC_MEM_ALLOC_CAPS MALLOC_CAP_DEFAULT +#endif + +#if CONFIG_DAC_ISR_IRAM_SAFE + #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) +#else + #define DAC_INTR_ALLOC_FLAGS (ESP_INTR_FLAG_INTRDISABLED | ESP_INTR_FLAG_SHARED) +#endif + +#define DAC_DMA_ALLOC_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA) + +#define DAC_STAILQ_REMOVE(head, elm, type, field) do { \ + if ((head)->stqh_first == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } else { \ + struct type *curelm = (head)->stqh_first; \ + while (curelm->field.stqe_next != (elm) && \ + curelm->field.stqe_next != NULL) \ + curelm = curelm->field.stqe_next; \ + if (curelm->field.stqe_next && (curelm->field.stqe_next = \ + curelm->field.stqe_next->field.stqe_next) == NULL) \ + (head)->stqh_last = &(curelm)->field.stqe_next; \ + } \ +} while (/*CONSTCOND*/0) + +typedef enum { + DAC_STATE_INITIAL, /* Initial state, dac has been registered */ + DAC_STATE_OUTPUT_READY, /* DAC channels enabled and ready to output constant voltage */ + DAC_STATE_DMA_READY, /* DMA mode initialized, but not started */ + DAC_STATE_CW_READY, /* Cosine wave mode is initialized, but not started */ + DAC_STATE_DMA_ENABLED, /* DAC DMA dma is enabled, can't switch mode in this stage */ + DAC_STATE_CW_RUNNING, /* DAC cosine wave generator is running, can't switch mode in this stage */ +} dac_state_t; + +typedef struct { + QueueHandle_t desc_pool; /* The pool of available descriptors + * The descriptors in the pool are not linked in to pending chain */ +#if CONFIG_DAC_ISR_IRAM_SAFE + StaticQueue_t *desc_pool_struct; /* Static message queue struct */ + void *desc_pool_storage; /* Static message queue storage */ +#endif + dac_conti_config_t cfg; + STAILQ_HEAD(desc_chain_s, lldesc_s) head; /* Head of the descriptor chain + * The descriptors in the chain are pending to be sent or sending now */ + lldesc_t **desc; + uint8_t **bufs; + volatile bool is_running; /* Is DMA running or stopped */ + volatile bool is_cyclic; /* Is transport data cyclicly */ +} dac_dma_t; + +typedef struct dac_channel_chain_node_s { + dac_channel_t id; + SLIST_ENTRY(dac_channel_chain_node_s) next; +} dac_channel_info_t; + +typedef SLIST_HEAD(dac_channel_chain_s, dac_channel_chain_node_s) dac_channel_chain_t; + +struct dac_channels_s { + uint32_t chan_num; + dac_state_t state; + SemaphoreHandle_t mutex; + StaticSemaphore_t *mutex_struct; /*!< Static mutex struct */ +#if CONFIG_PM_ENABLE + esp_pm_lock_handle_t pm_lock; +#endif + bool is_enabled; + dac_dma_t dma; + dac_cosine_config_t sw_cfg; + dac_channel_chain_t head; +}; + +typedef struct { + dac_channel_info_t *chan[SOC_DAC_PERIPH_NUM]; + bool dma_in_use; +} dac_platform_t; + +static const char *TAG = "DAC"; + +static dac_platform_t s_dac = { + .chan = { + [0 ... SOC_DAC_PERIPH_NUM - 1] = NULL, + }, + .dma_in_use = false, +}; + +/* Global dac spin lock for the whole DAC driver */ +portMUX_TYPE dac_spinlock = portMUX_INITIALIZER_UNLOCKED; // TODO: check rtc_spinlock + +#define DAC_NULL_POINTER_CHECK(p) ESP_RETURN_ON_FALSE((p), ESP_ERR_INVALID_ARG, TAG, "input parameter '"#p"' is NULL") + +static void dac_free_dma_desc(dac_channels_handle_t handle) +{ + STAILQ_EMPTY(&handle->dma.head); + if (handle->dma.desc != NULL) { + for (int i = 0; i < handle->dma.cfg.desc_num; i++) { + if (handle->dma.desc[i]) { + free(handle->dma.desc[i]); + handle->dma.desc[i] = NULL; + } + } + free(handle->dma.desc); + handle->dma.desc = NULL; + } + + if (handle->dma.bufs != NULL) { + for (int i = 0; i < handle->dma.cfg.desc_num; i++) { + if (handle->dma.bufs[i]) { + free(handle->dma.bufs[i]); + handle->dma.bufs[i] = NULL; + } + } + free(handle->dma.bufs); + handle->dma.bufs = NULL; + } +} + +static esp_err_t dac_alloc_dma_desc(dac_channels_handle_t handle) +{ + esp_err_t ret = ESP_OK; + + STAILQ_INIT(&handle->dma.head); + handle->dma.desc = (lldesc_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle->dma.desc, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma descriptor array"); + handle->dma.bufs = (uint8_t **) heap_caps_calloc(handle->dma.cfg.desc_num, sizeof(uint8_t *), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(handle->dma.bufs, ESP_ERR_NO_MEM, TAG, "Faild to allocate dma buffer array"); + for (int cnt = 0; cnt < handle->dma.cfg.desc_num; cnt++) { + /* Allocate DMA descpriptor */ + handle->dma.desc[cnt] = (lldesc_t *) heap_caps_calloc(1, sizeof(lldesc_t), DAC_DMA_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma descriptor"); + /* Allocate DMA buffer */ + handle->dma.bufs[cnt] = (uint8_t *) heap_caps_calloc(1, handle->dma.cfg.buf_size, DAC_DMA_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc[cnt], ESP_ERR_NO_MEM, err, TAG, "failed to allocate dma buffer"); + /* Assign initial value */ + lldesc_config(handle->dma.desc[cnt], LLDESC_HW_OWNED, 1, 0, handle->dma.cfg.buf_size); + handle->dma.desc[cnt]->size = handle->dma.cfg.buf_size; + handle->dma.desc[cnt]->buf = handle->dma.bufs[cnt]; + handle->dma.desc[cnt]->offset = 0; + xQueueSend(handle->dma.desc_pool, &handle->dma.desc[cnt], portMAX_DELAY); + } + + return ESP_OK; +err: + /* Free DMA buffer if failed to allocate memory */ + dac_free_dma_desc(handle); + return ret; +} + +static void IRAM_ATTR dac_default_intr_handler(void *arg) +{ + dac_channels_handle_t handle = (dac_channels_handle_t)arg; + uint32_t dummy; + BaseType_t need_awoke = pdFALSE; + BaseType_t tmp; + uint32_t intr_mask = dac_dma_periph_intr_is_triggered(); + if ((intr_mask & DAC_DMA_EOF_INTR) && (!handle->dma.is_cyclic)) { + lldesc_t *fdesc = (lldesc_t *)dac_dma_periph_intr_get_eof_desc(); + /* Remove the descriptor in the chain that finished sent */ + portENTER_CRITICAL(&dac_spinlock); + if (STAILQ_FIRST(&handle->dma.head) != NULL) { + DAC_STAILQ_REMOVE(&handle->dma.head, fdesc, lldesc_s, qe); + } + portEXIT_CRITICAL(&dac_spinlock); + if (xQueueIsQueueFullFromISR(handle->dma.desc_pool) == pdTRUE) { + xQueueReceiveFromISR(handle->dma.desc_pool, &dummy, &tmp); + need_awoke |= tmp; + } + xQueueSendFromISR(handle->dma.desc_pool, &fdesc, &tmp); + need_awoke |= tmp; + } + if (intr_mask & DAC_DMA_TEOF_INTR) { + /* Total end of frame interrupt received, DMA stopped */ + handle->dma.is_running = false; + } + if (need_awoke == pdTRUE) { + portYIELD_FROM_ISR(); + } +} + +/*-------------------------------------------------------------------------- + DAC common APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_new_channels(const dac_channels_config_t *dac_cfg, dac_channels_handle_t *handle) +{ +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif + esp_err_t ret = ESP_OK; + + DAC_NULL_POINTER_CHECK(dac_cfg); + DAC_NULL_POINTER_CHECK(handle); + + ESP_RETURN_ON_FALSE((uint32_t)dac_cfg->chan_sel > 0, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); + ESP_RETURN_ON_FALSE((32 - __builtin_clz((uint32_t)dac_cfg->chan_sel)) <= SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid DAC channel"); + + dac_channels_handle_t channels = (dac_channels_handle_t)heap_caps_calloc(1, sizeof(struct dac_channels_s), DAC_MEM_ALLOC_CAPS); + ESP_RETURN_ON_FALSE(channels, ESP_ERR_NO_MEM, TAG, "No memory for DAC channels' structure"); + + channels->mutex_struct = (StaticSemaphore_t *)heap_caps_calloc(1, sizeof(StaticSemaphore_t), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(channels->mutex_struct, ESP_ERR_NO_MEM, err, TAG, "No memory for channels mutex struct"); + channels->mutex = xSemaphoreCreateMutexStatic(channels->mutex_struct); + ESP_GOTO_ON_FALSE(channels->mutex, ESP_ERR_NO_MEM, err, TAG, "No memory for channels mutex"); + channels->chan_num = 0; + channels->is_enabled = false; + channels->state = DAC_STATE_INITIAL; // Set static output as default + /* Register selected channels and link into a chain*/ + SLIST_INIT(&channels->head); + for (uint32_t msk = (uint32_t)dac_cfg->chan_sel, i = 0; msk != 0; msk >>= 1, i++) { + if (msk & 0x01) { + /* Allocate memory for the channel when it is enabled */ + ESP_GOTO_ON_FALSE(!s_dac.chan[i], ESP_ERR_INVALID_STATE, err, TAG, "DAC channel %d has been registered already", i + 1); + dac_channel_info_t *node = (dac_channel_info_t *)calloc(1, sizeof(dac_channel_info_t)); + ESP_GOTO_ON_FALSE(node, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC channel object"); + node->id = i; + s_dac.chan[i] = node; + channels->chan_num++; + /* Add the channel node into a chain */ + SLIST_INSERT_HEAD(&channels->head, node, next); + } + } + + *handle = channels; + + return ret; + +err: + /* Free the resource when error occurs */ + dac_del_channels(channels); + channels = NULL; + + return ret; +} + +esp_err_t dac_del_channels(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_INITIAL, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not deinitialized"); + ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not disabled"); + + if (handle->mutex) { + vSemaphoreDelete(handle->mutex); + } + if (handle->mutex_struct) { + free(handle->mutex_struct); + } + while (SLIST_FIRST(&handle->head)) { + dac_channel_info_t *node = SLIST_FIRST(&handle->head); + SLIST_REMOVE_HEAD(&handle->head, next); + s_dac.chan[node->id] = NULL; + free(node); + } + free(handle); + + return ESP_OK; +} + +esp_err_t dac_channels_enable(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(!handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been enabled already"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; + rtc_gpio_init(gpio_num); + rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); + rtc_gpio_pullup_dis(gpio_num); + rtc_gpio_pulldown_dis(gpio_num); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_power_on(p->id); + dac_ll_rtc_sync_by_adc(false); + portEXIT_CRITICAL(&dac_spinlock); + } + handle->is_enabled = true; + /* If the channels has not been intialized to other mode, set it `DAC_STATE_OUTPUT_READY` as default */ + if (handle->state == DAC_STATE_INITIAL) { + handle->state = DAC_STATE_OUTPUT_READY; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_disable(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled yet"); + ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is still running"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + gpio_num_t gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[p->id]; + rtc_gpio_deinit(gpio_num); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_power_down(p->id); + portEXIT_CRITICAL(&dac_spinlock); + } + handle->is_enabled = false; + /* If the channels has not been intialized to other mode, set it `DAC_STATE_INITIAL` as default */ + if (handle->state == DAC_STATE_OUTPUT_READY) { + handle->state = DAC_STATE_INITIAL; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +/*-------------------------------------------------------------------------- + DAC direct voltage outputting APIs + ---------------------------------------------------------------------------*/ +#if CONFIG_DAC_ISR_IRAM_SAFE +IRAM_ATTR +#endif +esp_err_t dac_channels_set_voltage(dac_channels_handle_t handle, uint8_t value) +{ + ESP_RETURN_ON_FALSE_ISR(handle, ESP_ERR_INVALID_ARG, TAG, "NULL pointer"); + ESP_RETURN_ON_FALSE_ISR(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "Not enabled"); + ESP_RETURN_ON_FALSE_ISR(handle->state == DAC_STATE_OUTPUT_READY, ESP_ERR_INVALID_STATE, TAG, "Incorrect mode"); + + /* Set the voltage for each channel in the channels */ + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + portENTER_CRITICAL(&dac_spinlock); + dac_ll_update_output_value(p->id, value); + portEXIT_CRITICAL(&dac_spinlock); + } + return ESP_OK; +} + +/*-------------------------------------------------------------------------- + DAC continuous mode APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_channels_init_continuous_mode(dac_channels_handle_t handle, const dac_conti_config_t *conti_cfg) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state < DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been initialized already"); + ESP_RETURN_ON_FALSE(conti_cfg->desc_num > 1, ESP_ERR_INVALID_STATE, TAG, "At least two DMA descriptor needed"); + ESP_RETURN_ON_FALSE(!s_dac.dma_in_use, ESP_ERR_INVALID_STATE, TAG, "Only one set of channels can use DMA output"); + + esp_err_t ret = ESP_OK; + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + +#if CONFIG_DAC_ISR_IRAM_SAFE + handle->dma.desc_pool_storage = (uint8_t *)heap_caps_calloc(conti_cfg->desc_num, sizeof(lldesc_t *), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc_pool_storage, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue storage"); + handle->dma.desc_pool_struct = (StaticQueue_t *)heap_caps_calloc(1, sizeof(StaticQueue_t), DAC_MEM_ALLOC_CAPS); + ESP_GOTO_ON_FALSE(handle->dma.desc_pool_struct , ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue struct"); + handle->dma.desc_pool = xQueueCreateStatic(conti_cfg->desc_num, sizeof(lldesc_t *), handle->dma.desc_pool_storage, handle->dma.desc_pool_struct); +#else + handle->dma.desc_pool = xQueueCreate(conti_cfg->desc_num, sizeof(lldesc_t *)); +#endif + ESP_GOTO_ON_FALSE(handle->dma.desc_pool, ESP_ERR_NO_MEM, err3, TAG, "No memory for message queue"); +#if CONFIG_PM_ENABLE + esp_pm_lock_type_t pm_lock_type = conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL ? ESP_PM_NO_LIGHT_SLEEP : ESP_PM_APB_FREQ_MAX; + ESP_GOTO_ON_ERROR(esp_pm_lock_create(pm_lock_type, 0, "dac_driver", &handle->pm_lock), err3, TAG, "Failed to create DAC pm lock"); +#endif + + handle->dma.is_running = false; + /* Allocate DMA buffer */ + memcpy(&(handle->dma.cfg), conti_cfg, sizeof(dac_conti_config_t)); + ESP_GOTO_ON_ERROR(dac_alloc_dma_desc(handle), err2, TAG, "Failed to allocate memory for DMA buffers"); + + /* Initialize DAC DMA peripheral */ + ESP_GOTO_ON_ERROR(dac_dma_periph_init(handle->chan_num ,conti_cfg->freq_hz, conti_cfg->chan_mode == DAC_CHANNEL_MODE_ALTER, conti_cfg->clk_src == DAC_DIGI_CLK_SRC_APLL), + err2, TAG, "Failed to initialize DAC DMA peripheral"); + /* Register DMA interrupt */ + ESP_GOTO_ON_ERROR(dac_dma_periph_register_intr(dac_default_intr_handler, handle), err1, TAG, "Failed to register DMA interrupt"); + /* Connect DAC module to the DMA peripheral */ + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(true); + portEXIT_CRITICAL(&dac_spinlock); + + handle->state = DAC_STATE_DMA_READY; + s_dac.dma_in_use = true; + + xSemaphoreGive(handle->mutex); + + return ret; +err1: + dac_dma_periph_deinit(); +err2: + dac_free_dma_desc(handle); +err3: + if (handle->dma.desc_pool) { + vQueueDelete(handle->dma.desc_pool); + } +#if CONFIG_DAC_ISR_IRAM_SAFE + if (handle->dma.desc_pool_struct) { + free(handle->dma.desc_pool_struct); + } + if (handle->dma.desc_pool_storage) { + free(handle->dma.desc_pool_storage); + } +#endif + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channels_deinit_continuous_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels is still running or has been configured to other mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + +#if CONFIG_DAC_ISR_IRAM_SAFE + free(handle->dma.desc_pool_storage); + handle->dma.desc_pool_storage = NULL; + free(handle->dma.desc_pool_struct); + handle->dma.desc_pool_struct = NULL; +#endif +#if CONFIG_PM_ENABLE + if (handle->pm_lock) { + esp_pm_lock_delete(handle->pm_lock); + handle->pm_lock = NULL; + } +#endif + vQueueDelete(handle->dma.desc_pool); + + /* Free DMA buffer */ + dac_free_dma_desc(handle); + + /* Deregister DMA interrupt */ + ESP_RETURN_ON_ERROR(dac_dma_periph_deregister_intr(), TAG, "Failed to deregister DMA interrupt"); + /* Deinitialize DMA peripheral */ + ESP_RETURN_ON_ERROR(dac_dma_periph_deinit(), TAG, "Failed to deinitialize DAC DMA peripheral"); + /* Disconnect DAC module to the DMA peripheral */ + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(false); + portEXIT_CRITICAL(&dac_spinlock); + + if (handle->is_enabled) { + handle->state = DAC_STATE_OUTPUT_READY; + } else { + handle->state = DAC_STATE_INITIAL; + } + s_dac.dma_in_use = false; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_enable_continuous_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has started already or not working at DMA mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_acquire(handle->pm_lock); +#endif + dac_dma_periph_enable(); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(true); + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_DMA_ENABLED; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_disable_continuous_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has stopped already or not working at DMA mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + dac_dma_periph_disable(); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_digi_enable_dma(false); + portEXIT_CRITICAL(&dac_spinlock); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_release(handle->pm_lock); +#endif + handle->state = DAC_STATE_DMA_READY; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +static esp_err_t s_dac_load_dma_data(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *w_size, uint32_t timeout_ms) +{ + lldesc_t *desc = NULL; + + /* Try to get the descriptor from the pool */ + ESP_RETURN_ON_FALSE(xQueueReceive(handle->dma.desc_pool, &desc, pdMS_TO_TICKS(timeout_ms)) == pdTRUE, + ESP_ERR_TIMEOUT, TAG, "Get available descriptor timeout"); + if (STAILQ_FIRST(&handle->dma.head) != NULL) { + DAC_STAILQ_REMOVE(&handle->dma.head, desc, lldesc_s, qe); + } + + /* Get the DMA buffer address (use 'memcpy' to avoid the 'volatile' warning) */ + uint8_t *dma_buf; + memcpy(&dma_buf, &desc->buf, sizeof(desc->buf)); +#if SOC_DAC_DMA_16BIT_ALIGN && CONFIG_DAC_DMA_AUTO_16BIT_ALIGN + /* Load the data to the high 8 bit in the 16-bit width slot */ + size_t _w_size = (buf_size > handle->dma.cfg.buf_size / 2) ? handle->dma.cfg.buf_size / 2 : buf_size; + for (int i = 0; i < _w_size; i++) { + dma_buf[2 * i + 1] = buf[i]; + } + lldesc_config(desc, LLDESC_HW_OWNED, 1, 0, _w_size * 2); + desc->size = _w_size * 2; +#else + /* Load the data into the DMA buffer */ + size_t _w_size = (buf_size > handle->dma.cfg.buf_size) ? handle->dma.cfg.buf_size : buf_size; + memcpy(dma_buf, buf, _w_size); + lldesc_config(desc, LLDESC_HW_OWNED, 1, 0, _w_size); + desc->size = _w_size; +#endif + *w_size = _w_size; + /* Insert the loaded descriptor to the end of the chain, waiting to be sent */ + portENTER_CRITICAL(&dac_spinlock); + STAILQ_INSERT_TAIL(&handle->dma.head, desc, qe); + portEXIT_CRITICAL(&dac_spinlock); + + return ESP_OK; +} + +esp_err_t dac_channels_write_continuously(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms) +{ + DAC_NULL_POINTER_CHECK(handle); + DAC_NULL_POINTER_CHECK(buf); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not started"); +#if CONFIG_DAC_ISR_IRAM_SAFE + ESP_RETURN_ON_FALSE(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, TAG, "the buffer is not in internal RAM"); +#endif + esp_err_t ret = ESP_OK; + ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); + + size_t w_size = 0; + size_t src_buf_size = buf_size; + /* When there is no descriptor in the chain, DMA has stopped, load data and start the DMA link */ + if (STAILQ_FIRST(&handle->dma.head) == NULL) { + /* Break the chain if DMA still running */ + for (int i = 0; handle->dma.is_running && i < handle->dma.cfg.desc_num; i++) { + handle->dma.desc[i]->empty = 0; + } + for (int i = 0; + i < handle->dma.cfg.desc_num && buf_size > 0; + i++, buf += w_size, buf_size -= w_size) { + ESP_GOTO_ON_ERROR(s_dac_load_dma_data(handle, buf, buf_size, &w_size, timeout_ms), err, TAG, "Load data failed"); + } + /* Wait for the previous DMA stop */ + while (handle->dma.is_running) {} + handle->dma.is_cyclic = false; + dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->dma.head))); + handle->dma.is_running = true; + } + /* If the source buffer is not totally loaded, keep loading the rest data */ + while (buf_size > 0) { + /* If the DMA stopped but there are still some decriptors not sent, start the DMA again */ + if ((!handle->dma.is_running) && STAILQ_FIRST(&handle->dma.head)) { + dac_dma_periph_dma_trans_start((uint32_t)(STAILQ_FIRST(&handle->dma.head))); + } + ESP_GOTO_ON_ERROR(s_dac_load_dma_data(handle, buf, buf_size, &w_size, timeout_ms), err, TAG, "Load data failed"); + buf += w_size; + buf_size -= w_size; + } +err: + /* The bytes number that has been loaded */ + if (bytes_loaded) { + *bytes_loaded = src_buf_size - buf_size; + } + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channels_write_cyclically(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_DMA_ENABLED, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels is not started"); +#if CONFIG_DAC_ISR_IRAM_SAFE + ESP_RETURN_ON_FALSE(esp_ptr_internal(buf), ESP_ERR_INVALID_ARG, TAG, "the buffer is not in internal RAM"); +#endif + + esp_err_t ret = ESP_OK; + ESP_RETURN_ON_FALSE(xSemaphoreTake(handle->mutex, pdMS_TO_TICKS(timeout_ms) == pdTRUE), ESP_ERR_TIMEOUT, TAG, "Take semaphore timeout"); + + /* Break the DMA descriptor chain to stop the DMA first */ + for (int i = 0; i < handle->dma.cfg.desc_num; i++) { + handle->dma.desc[i]->empty = 0; + } + size_t src_buf_size = buf_size; + + /* If the source buffer size is smaller than the DMA buffer size, load the source buffer into two descriptors */ + if (buf_size < handle->dma.cfg.buf_size) { + /* Load data */ + size_t half_size = buf_size / 2; + memcpy(handle->dma.bufs[0], buf, half_size); + memcpy(handle->dma.bufs[1], buf, buf_size - half_size); + lldesc_config(handle->dma.desc[0], LLDESC_HW_OWNED, 1, 0, half_size); + lldesc_config(handle->dma.desc[1], LLDESC_HW_OWNED, 1, 0, buf_size - half_size); + buf_size = 0; + /* Link as a circle */ + handle->dma.desc[0]->empty = (uint32_t)handle->dma.desc[1]; + handle->dma.desc[1]->empty = (uint32_t)handle->dma.desc[0]; + } else { + int i; + for (i = 0; i < handle->dma.cfg.desc_num && buf_size > 0; i++) { + size_t w_size = buf_size > handle->dma.cfg.buf_size ? handle->dma.cfg.buf_size : buf_size; + memcpy(handle->dma.bufs[i], buf, w_size); + lldesc_config(handle->dma.desc[i], LLDESC_HW_OWNED, 1, 0, w_size); + handle->dma.desc[i]->empty = (uint32_t)(i < handle->dma.cfg.desc_num - 1 ? handle->dma.desc[i+1] :0); + buf_size -= w_size; + buf += w_size; + } + handle->dma.desc[i-1]->empty = (uint32_t)(handle->dma.desc[0]); + } + /* Wait for the previous DMA stop */ + while (handle->dma.is_running) {} + handle->dma.is_cyclic = true; + dac_dma_periph_dma_trans_start((uint32_t)handle->dma.desc[0]); + handle->dma.is_running = true; + if (bytes_loaded) { + *bytes_loaded = src_buf_size - buf_size; + } + if (buf_size > 0) { + ESP_LOGW(TAG, "The cyclic buffer size exceeds the total DMA buffer size: %d(desc_num) * %d(buf_size) = %d", + handle->dma.cfg.desc_num, handle->dma.cfg.buf_size, handle->dma.cfg.buf_size * handle->dma.cfg.desc_num); + } + + xSemaphoreGive(handle->mutex); + return ret; +} + +/*-------------------------------------------------------------------------- + DAC cosine wave outputting APIs + ---------------------------------------------------------------------------*/ +esp_err_t dac_channels_init_cosine_mode(dac_channels_handle_t handle, const dac_cosine_config_t *cw_cfg) +{ + DAC_NULL_POINTER_CHECK(handle); + DAC_NULL_POINTER_CHECK(cw_cfg); + ESP_RETURN_ON_FALSE((handle->state == DAC_STATE_INITIAL) | (handle->state == DAC_STATE_OUTPUT_READY), + ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has been initialized already"); + ESP_RETURN_ON_FALSE(cw_cfg->freq_hz >= 130, ESP_ERR_NOT_SUPPORTED, TAG, "The cosine wave generator doesn't support frequency below 130 Hz"); + + esp_err_t ret = ESP_OK; + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#if CONFIG_PM_ENABLE + ESP_GOTO_ON_ERROR(esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, "dac_driver", &handle->pm_lock), err, TAG, "Failed to create DAC pm lock"); +#endif + portENTER_CRITICAL(&dac_spinlock); + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + /* Connect DAC module to cosine wave generator */ + dac_ll_cw_set_channel(p->id, true); + /* Set coefficients for cosine wave generator */ + dac_ll_cw_set_freq(cw_cfg->freq_hz, periph_rtc_dig_clk8m_get_freq()); + dac_ll_cw_set_scale(p->id, cw_cfg->scale); + dac_ll_cw_set_phase(p->id, cw_cfg->phase == DAC_COSINE_PHASE_180 ? DAC_LL_CW_PHASE_180 : DAC_LL_CW_PHASE_0); + dac_ll_cw_set_dc_offset(p->id, cw_cfg->offset); + } + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_CW_READY; +#if CONFIG_PM_ENABLE +err: +#endif + xSemaphoreGive(handle->mutex); + return ret; +} + +esp_err_t dac_channels_deinit_cosine_mode(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels is still running or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#if CONFIG_PM_ENABLE + if (handle->pm_lock) { + esp_pm_lock_delete(handle->pm_lock); + handle->pm_lock = NULL; + } +#endif + portENTER_CRITICAL(&dac_spinlock); + dac_channel_info_t *p; + SLIST_FOREACH(p, &handle->head, next) { + /* Disonnect DAC module to cosine wave generator */ + dac_ll_cw_set_channel(p->id, false); + } + portEXIT_CRITICAL(&dac_spinlock); + if (handle->is_enabled) { + handle->state = DAC_STATE_OUTPUT_READY; + } else { + handle->state = DAC_STATE_INITIAL; + } + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_start_cosine_output(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_READY, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has started already or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_acquire(handle->pm_lock); +#endif + portENTER_CRITICAL(&dac_spinlock); + dac_ll_cw_generator_enable(); + portEXIT_CRITICAL(&dac_spinlock); + handle->state = DAC_STATE_CW_RUNNING; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} + +esp_err_t dac_channels_stop_cosine_output(dac_channels_handle_t handle) +{ + DAC_NULL_POINTER_CHECK(handle); + ESP_RETURN_ON_FALSE(handle->is_enabled, ESP_ERR_INVALID_STATE, TAG, "This set of DAC channels has not been enabled"); + ESP_RETURN_ON_FALSE(handle->state == DAC_STATE_CW_RUNNING, ESP_ERR_INVALID_STATE, TAG, + "This set of DAC channels has stopped already or not working at cosine wave mode"); + + xSemaphoreTake(handle->mutex, portMAX_DELAY); + portENTER_CRITICAL(&dac_spinlock); + dac_ll_cw_generator_disable(); + portEXIT_CRITICAL(&dac_spinlock); +#ifdef CONFIG_PM_ENABLE + esp_pm_lock_release(handle->pm_lock); +#endif + handle->state = DAC_STATE_CW_READY; + xSemaphoreGive(handle->mutex); + + return ESP_OK; +} diff --git a/components/driver/esp32/dac_dma.c b/components/driver/dac/esp32/dac_dma.c similarity index 60% rename from components/driver/esp32/dac_dma.c rename to components/driver/dac/esp32/dac_dma.c index e043f248a0..fa3d3a7e9d 100644 --- a/components/driver/esp32/dac_dma.c +++ b/components/driver/dac/esp32/dac_dma.c @@ -7,20 +7,28 @@ #include "freertos/FreeRTOS.h" +#include "hal/adc_ll.h" #include "hal/i2s_ll.h" #include "hal/i2s_types.h" #include "soc/i2s_periph.h" -#include "esp_private/dac_dma.h" +#include "../dac_dma.h" #include "esp_private/i2s_platform.h" - +#include "clk_ctrl_os.h" +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif #include "esp_check.h" +#include "esp_attr.h" #define DAC_DMA_PERIPH_I2S_NUM 0 -#define DAC_DMA_PERIPH_I2S_BIT_WIDTH 8 +#define DAC_DMA_PERIPH_I2S_BIT_WIDTH 16 // Fixed bit width, only the high 8 bits take effect typedef struct { void *periph_dev; /* DMA peripheral device address */ intr_handle_t intr_handle; /* Interrupt handle */ + bool use_apll; /* Whether use APLL as clock source */ } dac_dma_periph_i2s_t; static dac_dma_periph_i2s_t *s_ddp = NULL; // Static DAC DMA peripheral structure pointer @@ -29,21 +37,51 @@ static const char *TAG = "DAC_DMA"; extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ -static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ +static uint32_t dac_set_apll(uint32_t mclk) +{ + /* Calculate the expected APLL */ + int div = (int)((SOC_APLL_MIN_HZ / mclk) + 1); + /* apll_freq = mclk * div + * when div = 1, hardware will still divide 2 + * when div = 0, hardware will divide 255 + * So the div here should be at least 2 */ + div = div < 2 ? 2 : div; + uint32_t expt_freq = mclk * div; + /* Set APLL coefficients to the given frequency */ + uint32_t real_freq = 0; + esp_err_t ret = periph_rtc_apll_freq_set(expt_freq, &real_freq); + if (ret == ESP_ERR_INVALID_ARG) { + return 0; + } + if (ret == ESP_ERR_INVALID_STATE) { + ESP_LOGW(TAG, "APLL is occupied already, it is working at %d Hz", real_freq); + } + ESP_LOGD(TAG, "APLL expected frequency is %d Hz, real frequency is %d Hz", expt_freq, real_freq); + return real_freq; +} + +static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll) +{ /* Calculate clock coefficients */ uint32_t bclk = freq_hz * I2S_LL_AD_BCK_FACTOR; uint32_t bclk_div = DAC_DMA_PERIPH_I2S_BIT_WIDTH; uint32_t mclk = bclk * bclk_div; - uint32_t sclk = I2S_LL_BASE_CLK; // use PLL clock as default + uint32_t sclk; // use 160M PLL clock as default, minimun support freq: 19.6 KHz maximun support freq: 2.5 MHz + if (is_apll) { + sclk = dac_set_apll(mclk); + ESP_RETURN_ON_FALSE(sclk, ESP_ERR_INVALID_ARG, TAG, "set APLL coefficients failed"); + } else { + sclk = I2S_LL_BASE_CLK; + } uint32_t mclk_div = sclk / mclk; /* Check if the configuration is correct */ - // TODO: expand the frequency range ESP_RETURN_ON_FALSE(sclk / (float)mclk > 1.99, ESP_ERR_INVALID_ARG, TAG, "Frequency is too large, the mclk division is below minimum value 2"); ESP_RETURN_ON_FALSE(mclk_div < 256, ESP_ERR_INVALID_ARG, TAG, "Frequency is too small, the mclk division exceed the maximum value 255"); + ESP_LOGD(TAG, "[sclk] %d [mclk] %d [mclk_div] %d [bclk] %d [bclk_div] %d", sclk, mclk, mclk_div, bclk, bclk_div); portENTER_CRITICAL(&dac_spinlock); - i2s_ll_tx_clk_set_src(s_ddp->periph_dev, I2S_CLK_D2CLK); + i2s_ll_tx_clk_set_src(s_ddp->periph_dev, is_apll ? I2S_CLK_SRC_APLL : I2S_CLK_SRC_DEFAULT); i2s_ll_tx_set_mclk(s_ddp->periph_dev, sclk, mclk, mclk_div); i2s_ll_tx_set_bck_div_num(s_ddp->periph_dev, bclk_div); portEXIT_CRITICAL(&dac_spinlock); @@ -51,23 +89,32 @@ static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ return ESP_OK; } -esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate) +esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll) { +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif esp_err_t ret = ESP_OK; /* Acquire DMA peripheral */ - ESP_RETURN_ON_ERROR(i2s_priv_register_object("dac_dma", DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to acquire DAC DMA peripheral"); + ESP_RETURN_ON_ERROR(i2s_platform_acquire_occupation(DAC_DMA_PERIPH_I2S_NUM, "dac_dma"), TAG, "Failed to acquire DAC DMA peripheral"); /* Allocate DAC DMA peripheral object */ s_ddp = (dac_dma_periph_i2s_t *)calloc(1, sizeof(dac_dma_periph_i2s_t)); ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); s_ddp->periph_dev = (void *)I2S_LL_GET_HW(DAC_DMA_PERIPH_I2S_NUM); - ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz), err, TAG, "Failed to set clock of DMA peripheral"); + if (is_apll) { + periph_rtc_apll_acquire(); + s_ddp->use_apll = true; + } + ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); portENTER_CRITICAL(&dac_spinlock); + i2s_ll_enable_builtin_dac(s_ddp->periph_dev, true); i2s_ll_tx_reset(s_ddp->periph_dev); i2s_ll_tx_set_slave_mod(s_ddp->periph_dev, false); i2s_ll_tx_set_sample_bit(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH, DAC_DMA_PERIPH_I2S_BIT_WIDTH); i2s_ll_tx_enable_mono_mode(s_ddp->periph_dev, !is_alternate); + i2s_ll_tx_select_std_slot(s_ddp->periph_dev, 0x03, !is_alternate); i2s_ll_tx_enable_msb_shift(s_ddp->periph_dev, false); i2s_ll_tx_set_ws_width(s_ddp->periph_dev, DAC_DMA_PERIPH_I2S_BIT_WIDTH); i2s_ll_tx_enable_msb_right(s_ddp->periph_dev, false); @@ -84,11 +131,15 @@ err: esp_err_t dac_dma_periph_deinit(void) { - ESP_RETURN_ON_ERROR(i2s_priv_deregister_object(DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to release DAC DMA peripheral"); + ESP_RETURN_ON_ERROR(i2s_platform_release_occupation(DAC_DMA_PERIPH_I2S_NUM), TAG, "Failed to release DAC DMA peripheral"); if (s_ddp) { if (s_ddp->intr_handle) { dac_dma_periph_deregister_intr(); } + if (s_ddp->use_apll) { + periph_rtc_apll_release(); + s_ddp->use_apll = false; + } free(s_ddp); s_ddp = NULL; } @@ -104,7 +155,7 @@ esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *u intr_handler_func, user_ctx, &(s_ddp->intr_handle)), TAG, "Failed to register DAC DMA interrupt"); portENTER_CRITICAL(&dac_spinlock); - i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF, true); + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, true); portEXIT_CRITICAL(&dac_spinlock); return ESP_OK; } @@ -114,7 +165,7 @@ esp_err_t dac_dma_periph_deregister_intr(void) ESP_RETURN_ON_FALSE(s_ddp, ESP_ERR_INVALID_STATE, TAG, "DAC DMA peripheral has not initialized yet"); if (s_ddp->intr_handle) { portENTER_CRITICAL(&dac_spinlock); - i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF, false); + i2s_ll_enable_intr(s_ddp->periph_dev, I2S_LL_EVENT_TX_EOF | I2S_LL_EVENT_TX_TEOF, false); portEXIT_CRITICAL(&dac_spinlock); esp_intr_free(s_ddp->intr_handle); s_ddp->intr_handle = NULL; @@ -132,8 +183,9 @@ void dac_dma_periph_enable(void) /* Start */ i2s_ll_enable_dma(s_ddp->periph_dev,true); i2s_ll_tx_enable_intr(s_ddp->periph_dev); - // i2s_ll_tx_start_link(s_ddp->periph_dev, (uint32_t)desc_addr); - // i2s_ll_tx_start(s_ddp->periph_dev); + i2s_ll_tx_start(s_ddp->periph_dev); + i2s_ll_dma_enable_eof_on_fifo_empty(s_ddp->periph_dev, true); + i2s_ll_dma_enable_auto_write_back(s_ddp->periph_dev, true); portEXIT_CRITICAL(&dac_spinlock); /* Enable interrupt */ esp_intr_enable(s_ddp->intr_handle); @@ -151,12 +203,14 @@ void dac_dma_periph_disable(void) i2s_ll_tx_stop_link(s_ddp->periph_dev); i2s_ll_tx_disable_intr(s_ddp->periph_dev); i2s_ll_enable_dma(s_ddp->periph_dev, false); + i2s_ll_dma_enable_eof_on_fifo_empty(s_ddp->periph_dev, false); + i2s_ll_dma_enable_auto_write_back(s_ddp->periph_dev, false); portEXIT_CRITICAL(&dac_spinlock); /* Disable interrupt */ esp_intr_disable(s_ddp->intr_handle); } -bool inline dac_dma_periph_intr_is_triggered(void) +uint32_t IRAM_ATTR dac_dma_periph_intr_is_triggered(void) { uint32_t status = i2s_ll_get_intr_status(s_ddp->periph_dev); if (status == 0) { @@ -164,10 +218,13 @@ bool inline dac_dma_periph_intr_is_triggered(void) return false; } i2s_ll_clear_intr_status(s_ddp->periph_dev, status); - return (status & I2S_LL_EVENT_TX_EOF) != 0; + uint32_t ret = 0; + ret |= (status & I2S_LL_EVENT_TX_EOF) ? DAC_DMA_EOF_INTR : 0; + ret |= (status & I2S_LL_EVENT_TX_TEOF) ? DAC_DMA_TEOF_INTR : 0; + return ret; } -uint32_t inline dac_dma_periph_intr_get_eof_desc(void) +uint32_t IRAM_ATTR dac_dma_periph_intr_get_eof_desc(void) { uint32_t finish_desc; i2s_ll_tx_get_eof_des_addr(s_ddp->periph_dev, &finish_desc); @@ -177,11 +234,6 @@ uint32_t inline dac_dma_periph_intr_get_eof_desc(void) void inline dac_dma_periph_dma_trans_start(uint32_t desc_addr) { portENTER_CRITICAL(&dac_spinlock); - // TODO: check whether need to reset - i2s_ll_tx_reset(s_ddp->periph_dev); - i2s_ll_tx_reset_dma(s_ddp->periph_dev); - i2s_ll_tx_reset_fifo(s_ddp->periph_dev); i2s_ll_tx_start_link(s_ddp->periph_dev, desc_addr); - i2s_ll_tx_start(s_ddp->periph_dev); portEXIT_CRITICAL(&dac_spinlock); } diff --git a/components/driver/esp32s2/dac_dma.c b/components/driver/dac/esp32s2/dac_dma.c similarity index 56% rename from components/driver/esp32s2/dac_dma.c rename to components/driver/dac/esp32s2/dac_dma.c index a6b2adf004..3f719d828d 100644 --- a/components/driver/esp32s2/dac_dma.c +++ b/components/driver/dac/esp32s2/dac_dma.c @@ -4,14 +4,23 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "esp_private/spi_common_internal.h" +#include "esp_private/periph_ctrl.h" #include "hal/spi_ll.h" #include "hal/dac_ll.h" #include "hal/adc_ll.h" #include "soc/lldesc.h" -#include "esp_private/dac_dma.h" -#include "esp_private/periph_ctrl.h" -#include "driver/spi_common_internal.h" +#include "soc/soc.h" +#include "soc/soc_caps.h" +#include "../dac_dma.h" +#include "clk_ctrl_os.h" +#if CONFIG_DAC_ENABLE_DEBUG_LOG +// The local log level must be defined before including esp_log.h +// Set the maximum log level for this source file +#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG +#endif #include "esp_check.h" +#include "esp_attr.h" #define DAC_DMA_PERIPH_SPI_HOST SPI3_HOST @@ -19,6 +28,7 @@ typedef struct { void *periph_dev; /* DMA peripheral device address */ uint32_t dma_chan; intr_handle_t intr_handle; /* Interrupt handle */ + bool use_apll; /* Whether use APLL as digital controller clock source */ } dac_dma_periph_spi_t; static dac_dma_periph_spi_t *s_ddp = NULL; // Static DAC DMA peripheral structure pointer @@ -27,41 +37,74 @@ static const char *TAG = "DAC_DMA"; extern portMUX_TYPE dac_spinlock; /* Global DAC spinlock */ +static uint32_t dac_set_apll_freq(uint32_t expt_freq) +{ + /* Set APLL coefficients to the given frequency */ + uint32_t real_freq = 0; + esp_err_t ret = periph_rtc_apll_freq_set(expt_freq, &real_freq); + if (ret == ESP_ERR_INVALID_ARG) { + return 0; + } + if (ret == ESP_ERR_INVALID_STATE) { + ESP_LOGW(TAG, "APLL is occupied already, it is working at %d Hz", real_freq); + } + ESP_LOGD(TAG, "APLL expected frequency is %d Hz, real frequency is %d Hz", expt_freq, real_freq); + return real_freq; +} + /** * @brief Calculate and set DAC data frequency * @note DAC clcok shares clock devider with ADC, the clock source is APB or APLL on ESP32-S2 * freq_hz = (source_clk / (clk_div + (b / a) + 1)) / interval * interval range: 1~4095, to avoid decimal as possible, all calculations will base on interval = 4000 - * @param freq_hz DAC byte frequency + * @param freq_hz DAC byte transmit frequency * @return * - ESP_OK config success * - ESP_ERR_INVALID_ARG invalid frequency */ -// TODO: check clock again, the dma data seems abnormal -static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ - ESP_RETURN_ON_FALSE(freq_hz >= 80, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency should be greater than 80 Hz"); - // TODO: replace 80000000 with APB or APLL clock frequency - // when interval = 4000, max_freq = 20k min_freq = 80 - uint32_t freq_khz = freq_hz / 1000; - /* If freq_khz < 20k, interval = 4000 is enough, so mutiple = 1, - * otherwise interval need to zoom out to increase the max_freq, - * And in order to avoid decimal as possible, multiple better to be 2^n */ - uint32_t multiple = freq_khz < 20 ? 1 : 1 << (32 - __builtin_clz(freq_khz / 20)); // Multiple need to be 2^n to avoid decimal - uint32_t interval = 4000 / multiple; // Zoom in the max/min supported freq by zooming out interval - ESP_RETURN_ON_FALSE(interval > 0, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency is too big"); +static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz, bool is_apll){ + /* Step 1: Determine the digital clock source frequency */ + uint32_t digi_ctrl_freq; // Digital controller clock + if (is_apll) { + /* Theoretical frequency range (due to the limitation of DAC, the maximum frequency may not reach): + * SOC_APLL_MAX_HZ: 119.24 Hz ~ 67.5 MHz + * SOC_APLL_MIN_HZ: 5.06 Hz ~ 2.65 MHz */ + digi_ctrl_freq = dac_set_apll_freq(freq_hz < 120 ? SOC_APLL_MIN_HZ :SOC_APLL_MAX_HZ); + ESP_RETURN_ON_FALSE(digi_ctrl_freq, ESP_ERR_INVALID_ARG, TAG, "set APLL coefficients failed"); + } else { + digi_ctrl_freq = APB_CLK_FREQ; + } - uint32_t clk_div = (80000000 / interval) / freq_hz; - uint32_t mod = (80000000 / interval) % freq_hz; + /* Step 2: Determine the interval */ + uint32_t total_div = digi_ctrl_freq / freq_hz; + uint32_t interval; + /* For the case that smaller than the minimum ADC controller division, the required frequency is too big */ + ESP_RETURN_ON_FALSE(total_div >= 2, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency is too big"); + if (total_div < 256) { // For the case that smaller than the maximum ADC controller division + /* Fix the interval to 1, the division is fully realized by the ADC controller clock divider */ + interval = 1; + } else if (total_div < 8192) { // for the case that smaller than the maximum inverval + /* Set the interval to 'total_div / 2', fix the integer part of ADC controller clock division to 2 */ + interval = total_div / 2; + } else { + /* Fix the interval to 4095, */ + interval = 4095; + } + ESP_RETURN_ON_FALSE(interval * 256 > total_div, ESP_ERR_INVALID_ARG, TAG, "the DAC frequency is too small"); + + /* Step 3: Calculate the coefficients of ADC digital controller divider*/ + uint32_t fsclk = interval * freq_hz; /* The clock frequency that produced by ADC controller divider */ + uint32_t clk_div = digi_ctrl_freq / fsclk; + uint32_t mod = digi_ctrl_freq % fsclk; uint32_t a = 0; uint32_t b = 1; if (mod == 0) { goto finish; } - uint32_t min_diff = mod + 1; for (uint32_t tmp_b = 1; tmp_b < 64; tmp_b++) { - uint32_t tmp_a = (uint32_t)(((mod * b) / (float)freq_hz) + 0.5); - uint32_t diff = (uint32_t)abs((int)(mod * tmp_b) - (int)(freq_hz * tmp_a)); + uint32_t tmp_a = (uint32_t)(((mod * b) / (float)fsclk) + 0.5); + uint32_t diff = (uint32_t)abs((int)(mod * tmp_b) - (int)(fsclk * tmp_a)); if (diff == 0) { a = tmp_a; b = tmp_b; @@ -75,28 +118,37 @@ static esp_err_t dac_dma_periph_set_clock(uint32_t freq_hz){ } finish: + /* Step 4: Set the clock coefficients */ portENTER_CRITICAL(&dac_spinlock); dac_ll_digi_clk_inv(true); dac_ll_digi_set_trigger_interval(interval); // secondary clock division - adc_ll_digi_controller_clk_div(clk_div, b, a); - adc_ll_digi_clk_sel(false); + adc_ll_digi_controller_clk_div(clk_div - 1, b, a); + adc_ll_digi_clk_sel(is_apll); portEXIT_CRITICAL(&dac_spinlock); return ESP_OK; } -esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate) +esp_err_t dac_dma_periph_init(uint8_t chan_num, uint32_t freq_hz, bool is_alternate, bool is_apll) { +#if CONFIG_DAC_ENABLE_DEBUG_LOG + esp_log_level_set(TAG, ESP_LOG_DEBUG); +#endif esp_err_t ret = ESP_OK; /* Acquire DMA peripheral */ ESP_RETURN_ON_FALSE(spicommon_periph_claim(DAC_DMA_PERIPH_SPI_HOST, "dac_dma"), ESP_ERR_NOT_FOUND, TAG, "Failed to acquire DAC DMA peripheral"); - // TODO: reference count, maybe only required on s2 periph_module_enable(PERIPH_SARADC_MODULE); /* Allocate DAC DMA peripheral object */ s_ddp = (dac_dma_periph_spi_t *)calloc(1, sizeof(dac_dma_periph_spi_t)); ESP_GOTO_ON_FALSE(s_ddp, ESP_ERR_NO_MEM, err, TAG, "No memory for DAC DMA object"); s_ddp->periph_dev = (void *)SPI_LL_GET_HW(DAC_DMA_PERIPH_SPI_HOST); - // TODO: clock may related to convert mode (mono/stereo) - ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(freq_hz), err, TAG, "Failed to set clock of DMA peripheral"); + + if (is_apll) { + periph_rtc_apll_acquire(); + s_ddp->use_apll = true; + } + /* When transmit alternately, twice frequency is needed to guarantee the convert frequency in one channel */ + uint32_t trans_freq_hz = freq_hz * (is_alternate ? 2 : 1); + ESP_GOTO_ON_ERROR(dac_dma_periph_set_clock(trans_freq_hz, is_apll), err, TAG, "Failed to set clock of DMA peripheral"); portENTER_CRITICAL(&dac_spinlock); dac_ll_digi_set_convert_mode(is_alternate); @@ -110,12 +162,15 @@ err: esp_err_t dac_dma_periph_deinit(void) { ESP_RETURN_ON_FALSE(spicommon_periph_free(DAC_DMA_PERIPH_SPI_HOST), ESP_FAIL, TAG, "Failed to release DAC DMA peripheral"); - // TODO: reference count, maybe only required on s2 periph_module_disable(PERIPH_SARADC_MODULE); if (s_ddp) { if (s_ddp->intr_handle) { dac_dma_periph_deregister_intr(); } + if (s_ddp->use_apll) { + periph_rtc_apll_release(); + s_ddp->use_apll = false; + } free(s_ddp); s_ddp = NULL; } @@ -132,7 +187,7 @@ esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *u ESP_GOTO_ON_ERROR(esp_intr_alloc(spicommon_irqdma_source_for_host(DAC_DMA_PERIPH_SPI_HOST), 0, intr_handler_func, user_ctx, &(s_ddp->intr_handle)), err, TAG, "Failed to register DAC DMA interrupt"); portENTER_CRITICAL(&dac_spinlock); - spi_ll_enable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + spi_ll_enable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); portEXIT_CRITICAL(&dac_spinlock); return ret; err: @@ -146,7 +201,7 @@ esp_err_t dac_dma_periph_deregister_intr(void) ESP_RETURN_ON_ERROR(spicommon_dma_chan_free(DAC_DMA_PERIPH_SPI_HOST), TAG, "Failed to free dma peripheral channel"); if (s_ddp->intr_handle) { portENTER_CRITICAL(&dac_spinlock); - spi_ll_disable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + spi_ll_disable_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF | SPI_LL_INTR_OUT_TOTAL_EOF); portEXIT_CRITICAL(&dac_spinlock); esp_intr_free(s_ddp->intr_handle); s_ddp->intr_handle = NULL; @@ -177,11 +232,14 @@ void dac_dma_periph_disable(void) esp_intr_disable(s_ddp->intr_handle); } -bool IRAM_ATTR dac_dma_periph_intr_is_triggered(void) +uint32_t IRAM_ATTR dac_dma_periph_intr_is_triggered(void) { - uint32_t is_triggered = spi_ll_get_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); + uint32_t ret = 0; + ret |= spi_ll_get_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF) ? DAC_DMA_EOF_INTR : 0; + ret |= spi_ll_get_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_TOTAL_EOF) ? DAC_DMA_TEOF_INTR : 0; spi_ll_clear_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_EOF); - return is_triggered; + spi_ll_clear_intr(s_ddp->periph_dev, SPI_LL_INTR_OUT_TOTAL_EOF); + return ret; } uint32_t IRAM_ATTR dac_dma_periph_intr_get_eof_desc(void) diff --git a/components/driver/deprecated/adc_legacy.c b/components/driver/deprecated/adc_legacy.c index 238a9a1926..11c2906756 100644 --- a/components/driver/deprecated/adc_legacy.c +++ b/components/driver/deprecated/adc_legacy.c @@ -29,8 +29,8 @@ #include "driver/adc_types_legacy.h" #if SOC_DAC_SUPPORTED -#include "driver/dac.h" -#include "hal/dac_hal.h" +#include "hal/dac_types.h" +#include "hal/dac_ll.h" #endif #if CONFIG_IDF_TARGET_ESP32S3 @@ -151,7 +151,7 @@ static void adc_rtc_chan_init(adc_unit_t adc_unit) /* Workaround: Disable the synchronization operation function of ADC1 and DAC. If enabled(default), ADC RTC controller sampling will cause the DAC channel output voltage. */ #if SOC_DAC_SUPPORTED - dac_hal_rtc_sync_by_adc(false); + dac_ll_rtc_sync_by_adc(false); #endif adc_oneshot_ll_output_invert(ADC_UNIT_1, ADC_HAL_DATA_INVERT_DEFAULT(ADC_UNIT_1)); adc_ll_set_sar_clk_div(ADC_UNIT_1, ADC_HAL_SAR_CLK_DIV_DEFAULT(ADC_UNIT_1)); @@ -471,16 +471,16 @@ static inline void adc2_dac_disable( adc2_channel_t channel) { #if SOC_DAC_SUPPORTED #ifdef CONFIG_IDF_TARGET_ESP32 - if ( channel == ADC2_CHANNEL_8 ) { // the same as DAC channel 1 - dac_output_disable(DAC_CHANNEL_1); + if ( channel == ADC2_CHANNEL_8 ) { // the same as DAC channel 0 + dac_ll_power_down(DAC_CHAN_0); } else if ( channel == ADC2_CHANNEL_9 ) { - dac_output_disable(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } #else - if ( channel == ADC2_CHANNEL_6 ) { // the same as DAC channel 1 - dac_output_disable(DAC_CHANNEL_1); + if ( channel == ADC2_CHANNEL_6 ) { // the same as DAC channel 0 + dac_ll_power_down(DAC_CHAN_0); } else if ( channel == ADC2_CHANNEL_7 ) { - dac_output_disable(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } #endif #endif // SOC_DAC_SUPPORTED diff --git a/components/driver/deprecated/dac_common_legacy.c b/components/driver/deprecated/dac_common_legacy.c index ee8744f24a..33f3e1b545 100644 --- a/components/driver/deprecated/dac_common_legacy.c +++ b/components/driver/deprecated/dac_common_legacy.c @@ -6,17 +6,14 @@ #include -#include "esp_log.h" -#include "esp_err.h" #include "esp_check.h" #include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" -#include "freertos/timers.h" #include "driver/rtc_io.h" -#include "driver/dac.h" +#include "driver/dac_types_legacy.h" #include "soc/dac_periph.h" -#include "hal/dac_hal.h" -#include "hal/dac_types.h" +#include "hal/gpio_types.h" +#include "hal/dac_ll.h" +#include "clk_ctrl_os.h" extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. @@ -27,7 +24,7 @@ static __attribute__((unused)) const char *TAG = "DAC"; ---------------------------------------------------------------*/ esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); *gpio_num = (gpio_num_t)dac_periph_signal.dac_channel_io_num[channel]; @@ -36,7 +33,7 @@ esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num) static esp_err_t dac_rtc_pad_init(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); gpio_num_t gpio_num = 0; dac_pad_get_io_num(channel, &gpio_num); @@ -50,12 +47,12 @@ static esp_err_t dac_rtc_pad_init(dac_channel_t channel) esp_err_t dac_output_enable(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); dac_rtc_pad_init(channel); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_power_on(channel); - dac_hal_rtc_sync_by_adc(false); + dac_ll_power_on(channel); + dac_ll_rtc_sync_by_adc(false); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -63,10 +60,10 @@ esp_err_t dac_output_enable(dac_channel_t channel) esp_err_t dac_output_disable(dac_channel_t channel) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_power_down(channel); + dac_ll_power_down(channel); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -74,10 +71,10 @@ esp_err_t dac_output_disable(dac_channel_t channel) esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_update_output_value(channel, dac_value); + dac_ll_update_output_value(channel, dac_value); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -85,10 +82,10 @@ esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value) esp_err_t dac_out_voltage(dac_channel_t channel, uint8_t dac_value) { - ESP_RETURN_ON_FALSE(channel < DAC_CHANNEL_MAX, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); + ESP_RETURN_ON_FALSE(channel < SOC_DAC_PERIPH_NUM, ESP_ERR_INVALID_ARG, TAG, "DAC channel error"); portENTER_CRITICAL(&rtc_spinlock); - dac_hal_update_output_value(channel, dac_value); + dac_ll_update_output_value(channel, dac_value); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -97,7 +94,7 @@ esp_err_t dac_out_voltage(dac_channel_t channel, uint8_t dac_value) esp_err_t dac_cw_generator_enable(void) { portENTER_CRITICAL(&rtc_spinlock); - dac_hal_cw_generator_enable(); + dac_ll_cw_generator_enable(); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -106,7 +103,7 @@ esp_err_t dac_cw_generator_enable(void) esp_err_t dac_cw_generator_disable(void) { portENTER_CRITICAL(&rtc_spinlock); - dac_hal_cw_generator_disable(); + dac_ll_cw_generator_disable(); portEXIT_CRITICAL(&rtc_spinlock); return ESP_OK; @@ -117,7 +114,7 @@ esp_err_t dac_cw_generator_config(dac_cw_config_t *cw) ESP_RETURN_ON_FALSE(cw, ESP_ERR_INVALID_ARG, TAG, "invalid clock configuration"); portENTER_CRITICAL(&rtc_spinlock); - dac_ll_cw_set_freq(cw->freq); + dac_ll_cw_set_freq(cw->freq, periph_rtc_dig_clk8m_get_freq()); dac_ll_cw_set_scale(cw->en_ch, cw->scale); dac_ll_cw_set_phase(cw->en_ch, cw->phase); dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); @@ -126,3 +123,19 @@ esp_err_t dac_cw_generator_config(dac_cw_config_t *cw) return ESP_OK; } + +/** + * @brief This function will be called during start up, to check that this legacy DAC driver is not running along with the new driver + */ +__attribute__((constructor)) +static void check_dac_legacy_driver_conflict(void) +{ + // This function was declared as weak here. The new DAC driver has one implementation. + // So if the new DAC driver is not linked in, then `dac_new_channels()` should be NULL at runtime. + extern __attribute__((weak)) esp_err_t dac_new_channels(const void *dac_cfg, void **handle); + if ((void *)dac_new_channels != NULL) { + ESP_EARLY_LOGE(TAG, "CONFLICT! The new DAC driver is not allowed to be used together with the legacy driver"); + abort(); + } + ESP_EARLY_LOGW(TAG, "legacy driver is deprecated, please migrate to `driver/dac_driver.h` instead"); +} diff --git a/components/driver/deprecated/driver/dac.h b/components/driver/deprecated/driver/dac.h new file mode 100644 index 0000000000..966871f7bd --- /dev/null +++ b/components/driver/deprecated/driver/dac.h @@ -0,0 +1,171 @@ +/* + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include +#include "esp_err.h" +#include "sdkconfig.h" +#include "driver/gpio.h" +#include "driver/dac_types_legacy.h" + +#if !CONFIG_DAC_SUPPRESS_DEPRECATE_WARN +#warning "The legacy DAC driver is deprecated, please use driver/dac_driver.h instead" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Get the GPIO number of a specific DAC channel. + * + * @param channel Channel to get the gpio number + * @param gpio_num output buffer to hold the gpio number + * @return + * - ESP_OK if success + */ +esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num); + +/** + * @brief Set DAC output voltage. + * DAC output is 8-bit. Maximum (255) corresponds to VDD3P3_RTC. + * + * @note Need to configure DAC pad before calling this function. + * DAC channel 0 is attached to GPIO25, DAC channel 1 is attached to GPIO26 + * @param channel DAC channel + * @param dac_value DAC output value + * + * @return + * - ESP_OK success + */ +esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value); + +/** + * @brief DAC pad output enable + * + * @param channel DAC channel + * @note DAC channel 0 is attached to GPIO25, DAC channel 1 is attached to GPIO26 + * I2S left channel will be mapped to DAC channel 1 + * I2S right channel will be mapped to DAC channel 0 + */ +esp_err_t dac_output_enable(dac_channel_t channel); + +/** + * @brief DAC pad output disable + * + * @param channel DAC channel + * @note DAC channel 0 is attached to GPIO25, DAC channel 1 is attached to GPIO26 + * @return + * - ESP_OK success + */ +esp_err_t dac_output_disable(dac_channel_t channel); + +/** + * @brief Enable cosine wave generator output. + * + * @return + * - ESP_OK success + */ +esp_err_t dac_cw_generator_enable(void); + +/** + * @brief Disable cosine wave generator output. + * + * @return + * - ESP_OK success + */ +esp_err_t dac_cw_generator_disable(void); + +/** + * @brief Config the cosine wave generator function in DAC module. + * + * @param cw Configuration. + * @return + * - ESP_OK success + * - ESP_ERR_INVALID_ARG The parameter is NULL. + */ +esp_err_t dac_cw_generator_config(dac_cw_config_t *cw); + +/*--------------------------------------------------------------- + Digital controller setting +---------------------------------------------------------------*/ +#if CONFIG_IDF_TARGET_ESP32 +/** + * @brief Enable DAC output data from I2S + * + * @return + * - ESP_OK success + */ +esp_err_t dac_i2s_enable(void); + +/** + * @brief Disable DAC output data from I2S + * + * @return + * - ESP_OK success + */ +esp_err_t dac_i2s_disable(void); +#endif + +#if CONFIG_IDF_TARGET_ESP32S2 +/** + * @brief DAC digital controller initialization. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_init(void); + +/** + * @brief DAC digital controller deinitialization. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_deinit(void); + +/** + * @brief Setting the DAC digital controller. + * + * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. + * + * @return + * - ESP_OK success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg); + +/** + * @brief DAC digital controller start output voltage. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_start(void); + +/** + * @brief DAC digital controller stop output voltage. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_stop(void); + +/** + * @brief Reset DAC digital controller FIFO. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_fifo_reset(void); + +/** + * @brief Reset DAC digital controller. + * @return + * - ESP_OK success + */ +esp_err_t dac_digi_reset(void); +#endif + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/deprecated/driver/dac_common.h b/components/driver/deprecated/driver/dac_common.h deleted file mode 100644 index a5e6e2b5e0..0000000000 --- a/components/driver/deprecated/driver/dac_common.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "esp_err.h" -#include "driver/gpio.h" -#include "driver/dac_types_legacy.h" - -/** - * @brief Get the GPIO number of a specific DAC channel. - * - * @param channel Channel to get the gpio number - * @param gpio_num output buffer to hold the gpio number - * @return - * - ESP_OK if success - */ -esp_err_t dac_pad_get_io_num(dac_channel_t channel, gpio_num_t *gpio_num); - -/** - * @brief Set DAC output voltage. - * DAC output is 8-bit. Maximum (255) corresponds to VDD3P3_RTC. - * - * @note Need to configure DAC pad before calling this function. - * DAC channel 1 is attached to GPIO25, DAC channel 2 is attached to GPIO26 - * @param channel DAC channel - * @param dac_value DAC output value - * - * @return - * - ESP_OK success - */ -esp_err_t dac_output_voltage(dac_channel_t channel, uint8_t dac_value); - -/** - * @brief DAC pad output enable - * - * @param channel DAC channel - * @note DAC channel 1 is attached to GPIO25, DAC channel 2 is attached to GPIO26 - * I2S left channel will be mapped to DAC channel 2 - * I2S right channel will be mapped to DAC channel 1 - */ -esp_err_t dac_output_enable(dac_channel_t channel); - -/** - * @brief DAC pad output disable - * - * @param channel DAC channel - * @note DAC channel 1 is attached to GPIO25, DAC channel 2 is attached to GPIO26 - * @return - * - ESP_OK success - */ -esp_err_t dac_output_disable(dac_channel_t channel); - -/** - * @brief Enable cosine wave generator output. - * - * @return - * - ESP_OK success - */ -esp_err_t dac_cw_generator_enable(void); - -/** - * @brief Disable cosine wave generator output. - * - * @return - * - ESP_OK success - */ -esp_err_t dac_cw_generator_disable(void); - -/** - * @brief Config the cosine wave generator function in DAC module. - * - * @param cw Configuration. - * @return - * - ESP_OK success - * - ESP_ERR_INVALID_ARG The parameter is NULL. - */ -esp_err_t dac_cw_generator_config(dac_cw_config_t *cw); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/deprecated/driver/dac_types_legacy.h b/components/driver/deprecated/driver/dac_types_legacy.h index af77e377f1..f14396f136 100644 --- a/components/driver/deprecated/driver/dac_types_legacy.h +++ b/components/driver/deprecated/driver/dac_types_legacy.h @@ -6,13 +6,62 @@ #pragma once -#include "driver/dac_types.h" +#include +#include +#include +#include +#include "sdkconfig.h" #include "hal/dac_types.h" +#if CONFIG_IDF_TARGET_ESP32S2 +#include "hal/adc_types.h" +#endif #ifdef __cplusplus extern "C" { #endif +/** + * @brief The multiple of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. + */ +typedef enum { + DAC_CW_SCALE_1 = 0x0, /*!< 1/1. Default. */ + DAC_CW_SCALE_2 = 0x1, /*!< 1/2. */ + DAC_CW_SCALE_4 = 0x2, /*!< 1/4. */ + DAC_CW_SCALE_8 = 0x3, /*!< 1/8. */ +} dac_cw_scale_t; + +/** + * @brief Set the phase of the cosine wave generator output. + */ +typedef enum { + DAC_CW_PHASE_0 = 0x2, /*!< Phase shift +0° */ + DAC_CW_PHASE_180 = 0x3, /*!< Phase shift +180° */ +} dac_cw_phase_t; + +#if CONFIG_IDF_TARGET_ESP32S2 +/** + * @brief DAC digital controller (DMA mode) work mode. + */ +typedef enum { + DAC_CONV_NORMAL, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ + DAC_CONV_ALTER, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ + DAC_CONV_MAX +} dac_digi_convert_mode_t; + +/** + * @brief DAC digital controller (DMA mode) configuration parameters. + */ +typedef struct { + dac_digi_convert_mode_t mode; /*! -#include "esp_log.h" -#include "esp_err.h" #include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" -#include "freertos/timers.h" -#include "driver/rtc_io.h" -#include "driver/dac.h" -#include "soc/dac_periph.h" -#include "hal/dac_hal.h" +#include "hal/dac_ll.h" +#include "esp_err.h" extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate position after the rtc module is finished. #define DAC_ENTER_CRITICAL() portENTER_CRITICAL(&rtc_spinlock) @@ -27,7 +20,7 @@ extern portMUX_TYPE rtc_spinlock; //TODO: Will be placed in the appropriate posi esp_err_t dac_i2s_enable(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_enable_dma(true); + dac_ll_digi_enable_dma(true); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -36,7 +29,7 @@ esp_err_t dac_i2s_enable(void) esp_err_t dac_i2s_disable(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_enable_dma(false); + dac_ll_digi_enable_dma(false); DAC_EXIT_CRITICAL(); return ESP_OK; diff --git a/components/driver/deprecated/esp32/driver/dac.h b/components/driver/deprecated/esp32/driver/dac.h deleted file mode 100644 index 2876ef07ca..0000000000 --- a/components/driver/deprecated/esp32/driver/dac.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ - -/** - * @brief Enable DAC output data from I2S - * - * @return - * - ESP_OK success - */ -esp_err_t dac_i2s_enable(void); - -/** - * @brief Disable DAC output data from I2S - * - * @return - * - ESP_OK success - */ -esp_err_t dac_i2s_disable(void); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/deprecated/esp32s2/dac_legacy.c b/components/driver/deprecated/esp32s2/dac_legacy.c index b10ee0c125..3e09d4c869 100644 --- a/components/driver/deprecated/esp32s2/dac_legacy.c +++ b/components/driver/deprecated/esp32s2/dac_legacy.c @@ -6,17 +6,13 @@ #include -#include "esp_log.h" -#include "esp_err.h" +#include "sdkconfig.h" +#include "freertos/FreeRTOS.h" +#include "driver/dac_types_legacy.h" +#include "hal/adc_ll.h" +#include "hal/dac_ll.h" #include "esp_check.h" #include "esp_pm.h" -#include "freertos/FreeRTOS.h" -#include "freertos/semphr.h" -#include "freertos/timers.h" -#include "driver/rtc_io.h" -#include "driver/dac.h" -#include "soc/dac_periph.h" -#include "hal/dac_hal.h" static __attribute__((unused)) const char *TAG = "DAC"; @@ -35,7 +31,7 @@ static esp_pm_lock_handle_t s_dac_digi_lock = NULL; esp_err_t dac_digi_init(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_init(); + dac_ll_digi_clk_inv(true); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -50,7 +46,10 @@ esp_err_t dac_digi_deinit(void) } #endif DAC_ENTER_CRITICAL(); - dac_hal_digi_deinit(); + dac_ll_digi_trigger_output(false); + dac_ll_digi_enable_dma(false); + dac_ll_digi_fifo_reset(); + dac_ll_digi_reset(); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -80,7 +79,10 @@ esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg) #endif //CONFIG_PM_ENABLE DAC_ENTER_CRITICAL(); - dac_hal_digi_controller_config(cfg); + dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); + dac_ll_digi_set_trigger_interval(cfg->interval); + adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); + adc_ll_digi_clk_sel(cfg->dig_clk.use_apll); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -93,7 +95,8 @@ esp_err_t dac_digi_start(void) esp_pm_lock_acquire(s_dac_digi_lock); #endif DAC_ENTER_CRITICAL(); - dac_hal_digi_start(); + dac_ll_digi_enable_dma(true); + dac_ll_digi_trigger_output(true); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -107,7 +110,8 @@ esp_err_t dac_digi_stop(void) } #endif DAC_ENTER_CRITICAL(); - dac_hal_digi_stop(); + dac_ll_digi_trigger_output(false); + dac_ll_digi_enable_dma(false); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -116,7 +120,7 @@ esp_err_t dac_digi_stop(void) esp_err_t dac_digi_fifo_reset(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_fifo_reset(); + dac_ll_digi_fifo_reset(); DAC_EXIT_CRITICAL(); return ESP_OK; @@ -125,7 +129,7 @@ esp_err_t dac_digi_fifo_reset(void) esp_err_t dac_digi_reset(void) { DAC_ENTER_CRITICAL(); - dac_hal_digi_reset(); + dac_ll_digi_reset(); DAC_EXIT_CRITICAL(); return ESP_OK; diff --git a/components/driver/deprecated/esp32s2/driver/dac.h b/components/driver/deprecated/esp32s2/driver/dac.h deleted file mode 100644 index 39f3e7e068..0000000000 --- a/components/driver/deprecated/esp32s2/driver/dac.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_common.h" - -#ifdef __cplusplus -extern "C" { -#endif -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ - -/** - * @brief DAC digital controller initialization. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_init(void); - -/** - * @brief DAC digital controller deinitialization. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_deinit(void); - -/** - * @brief Setting the DAC digital controller. - * - * @param cfg Pointer to digital controller paramter. See ``dac_digi_config_t``. - * - * @return - * - ESP_OK success - * - ESP_ERR_INVALID_ARG Parameter error - */ -esp_err_t dac_digi_controller_config(const dac_digi_config_t *cfg); - -/** - * @brief DAC digital controller start output voltage. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_start(void); - -/** - * @brief DAC digital controller stop output voltage. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_stop(void); - -/** - * @brief Reset DAC digital controller FIFO. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_fifo_reset(void); - -/** - * @brief Reset DAC digital controller. - * @return - * - ESP_OK success - */ -esp_err_t dac_digi_reset(void); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/deprecated/i2s_legacy.c b/components/driver/deprecated/i2s_legacy.c index 6d619ad5c6..43c7bec232 100644 --- a/components/driver/deprecated/i2s_legacy.c +++ b/components/driver/deprecated/i2s_legacy.c @@ -26,7 +26,8 @@ #include "driver/i2s_types_legacy.h" #include "hal/i2s_hal.h" #if SOC_I2S_SUPPORTS_DAC -#include "driver/dac.h" +#include "hal/dac_ll.h" +#include "hal/dac_types.h" #include "esp_private/adc_share_hw_ctrl.h" #include "adc1_private.h" #include "driver/adc_i2s_legacy.h" @@ -836,20 +837,22 @@ esp_err_t i2s_set_dac_mode(i2s_dac_mode_t dac_mode) { ESP_RETURN_ON_FALSE((dac_mode < I2S_DAC_CHANNEL_MAX), ESP_ERR_INVALID_ARG, TAG, "i2s dac mode error"); if (dac_mode == I2S_DAC_CHANNEL_DISABLE) { - dac_output_disable(DAC_CHANNEL_1); - dac_output_disable(DAC_CHANNEL_2); - dac_i2s_disable(); + dac_ll_power_down(DAC_CHAN_0); + dac_ll_power_down(DAC_CHAN_1); + dac_ll_digi_enable_dma(false); } else { - dac_i2s_enable(); + dac_ll_digi_enable_dma(true); } if (dac_mode & I2S_DAC_CHANNEL_RIGHT_EN) { //DAC1, right channel - dac_output_enable(DAC_CHANNEL_1); + dac_ll_power_on(DAC_CHAN_0); + dac_ll_rtc_sync_by_adc(false); } if (dac_mode & I2S_DAC_CHANNEL_LEFT_EN) { //DAC2, left channel - dac_output_enable(DAC_CHANNEL_2); + dac_ll_power_on(DAC_CHAN_1); + dac_ll_rtc_sync_by_adc(false); } return ESP_OK; } diff --git a/components/driver/include/driver/dac_driver.h b/components/driver/include/driver/dac_driver.h new file mode 100644 index 0000000000..f743fab293 --- /dev/null +++ b/components/driver/include/driver/dac_driver.h @@ -0,0 +1,298 @@ +/* + * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "driver/dac_types.h" +#include "driver/gpio.h" +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if SOC_DAC_SUPPORTED + +/** + * @brief DAC channel configuration + * + */ +typedef struct { + dac_channel_mask_t chan_sel; /*!< Using DAC channel mask to select the channels */ +} dac_channels_config_t; + +/** + * @brief DAC continuous mode configration + * + */ +typedef struct { + uint32_t freq_hz; /*!< The frequency of DAC conversion in continuous mode, unit: Hz + * The supported range is related to the target and the clock source. + * For the clock `DAC_DIGI_CLK_SRC_DEFAULT`: the range is 19.6 KHz to several MHz on ESP32 + * and 77 Hz to several MHz on ESP32-S2. + * For the clock `DAC_DIGI_CLK_SRC_APLL`: the range is 648 Hz to several MHz on ESP32 + * and 6 Hz to several MHz on ESP32-S2. + * Typically not suggest to set the frequency higher than 2 MHz, otherwise the severe distortion will appear + */ + dac_conti_clk_src_t clk_src; /*!< The clock source of digital controller, which can affect the range of supported frequency + * Currently `DAC_DIGI_CLK_SRC_DEFAULT` and `DAC_DIGI_CLK_SRC_APLL` are available + */ + uint32_t desc_num; /*!< The number of DMA descriptor, at least 2 descriptors are required + * The number of descriptors is directly proportional to the max data buffer size while converting in cyclic output + * but only need to ensure it is greater than '1' in acyclic output + * Typically, suggest to set the number bigger than 5, in case the DMA stopped while sending a short buffer + */ + uint32_t buf_size; /*!< The DMA buffer size, should be within 4092 bytes. Each DMA buffer will be attached to a DMA descriptor, + * i.e. the number of DMA buffer will be equal to the DMA descriptor number + * The DMA buffer size is not allowed to be greater than 4092 bytes + * The total DMA buffer size equal to `desc_num * buf_size` + * Typically, suggest to set the size to the multiple of 4 + */ + dac_conti_channel_mode_t chan_mode; /*!< The channel mode of continuous mode, only take effect when multiple channels enabled, depends converting the buffer alternately or simultaneously */ +} dac_conti_config_t; + +/** + * @brief DAC cosine wave gnerator configuration + * + */ +typedef struct { + uint32_t freq_hz; /*!< The frequency of cosine wave, unit: Hz. + * The cosine wave generator is driven by RTC clock which is about SOC_CLK_RC_FAST_FREQ_APPROX Hz by default, + * With the default RTC clock, the minimun frequency of cosine wave is about 130 Hz, + * Although it can support up to serveral MHz frequency theoretically, + * the waveform will distort at high frequency due to the hardware limitation. + * Typically not suggest to set the frequency higher than 200 KHz + */ + dac_cosine_clk_src_t clk_src; /*!< The clock source of the cosine wave generator, currently only support `DAC_COSINE_CLK_SRC_DEFAULT` which comes from RTC FAST clock */ + dac_cosine_scale_t scale; /*!< The scale of cosine wave amplitude */ + dac_cosine_phase_t phase; /*!< The phase of cosine wave */ + int8_t offset; /*!< The DC offset of cosine wave */ +} dac_cosine_config_t; + +typedef struct dac_channels_s *dac_channels_handle_t; /*!< DAC channels' handle of DAC peripheral, one or multiple DAC channels can be controlled by this handle */ + +/*-------------------------------------------------------------------------- + DAC common APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Allocate a new DAC channels' handle + * @note The driver supports to manage one single channel by enabling only one channel in the channel mask, + * or multiple channels together as a whole by enabling multiple channels in the channel mask. + * Moreover, the channels can also be managed separately if they are allocated separately. + * + * @param[in] dac_cfg DAC basic configuration + * @param[out] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_NO_MEM No memory for a new DAC handle + * - ESP_ERR_INVALID_STATE The specified DAC channel is occupied already + * - ESP_OK Success to allocate DAC channels + */ +esp_err_t dac_new_channels(const dac_channels_config_t *dac_cfg, dac_channels_handle_t *handle); + +/** + * @brief Delete and free the DAC channels + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels are not disabled + * - ESP_OK Success to delete the channels + */ +esp_err_t dac_del_channels(dac_channels_handle_t handle); + +/** + * @brief Enabled the DAC channels in the channels + * @note GPIOs of DAC channles will be enabled in this step + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels has enabled already or the channels are running + * - ESP_OK Success to enable the channels + */ +esp_err_t dac_channels_enable(dac_channels_handle_t handle); + +/** + * @brief Disable the DAC channels in the channels + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels has disabled already or the channels are running + * - ESP_OK Success to enable the channels + */ +esp_err_t dac_channels_disable(dac_channels_handle_t handle); + +/*-------------------------------------------------------------------------- + DAC direct voltage outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief DAC channels output a voltage directly + * @note This function is available when DAC chennels is enbled + * @note Please enable 'DAC ISR IRAM-Safe' in memuconfig when it is called in an IRAM safe ISR + * + * @param[in] handle DAC channels handle + * @param[in] value The digital value of the voltage + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The channels are not enabled + * - ESP_OK Success to enable the channels + */ +esp_err_t dac_channels_set_voltage(dac_channels_handle_t handle, uint8_t value); + +/*-------------------------------------------------------------------------- + DAC continuous outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Initialize the DAC channels to continuous mode + * @note DAC can convert digital data continuously in continuous mode + * + * @param[in] handle DAC channels handle + * @param[in] conti_cfg DAC continuous mode configuration + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has been initialized already + * - ESP_ERR_NO_MEM No memory for DAC continuous mode + * - ESP_OK Success to initializing the DAC channels to continuous mode + */ +esp_err_t dac_channels_init_continuous_mode(dac_channels_handle_t handle, const dac_conti_config_t *conti_cfg); + +/** + * @brief Deinitialize the continuous mode of the DAC channels + * @note It can only be deinitialized when the continuous output is disabled + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode is not disabled yet + * - ESP_OK Success to deinitialize the DAC continuous mode + */ +esp_err_t dac_channels_deinit_continuous_mode(dac_channels_handle_t handle); + +/** + * @brief Enable the DAC continuous output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has been enabled already + * - ESP_OK Success to start the continuous output + */ +esp_err_t dac_channels_enable_continuous_mode(dac_channels_handle_t handle); + +/** + * @brief Disable the DAC continuous output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode is disabled already + * - ESP_OK Success to stop the continuous output + */ +esp_err_t dac_channels_disable_continuous_mode(dac_channels_handle_t handle); + +/** + * @brief Write DAC continuous data continuously + * @note The data in buffer will only be converted one time, + * This function will be blocked until all data loaded or timeout + * then the DAC output will keep outputting the voltage of the last data in the buffer + * @note On ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, + * you can align the DAC data to 16 bits manually or set `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` to get the correct wave. + * But the data bit width is already 8 bits on ESP32-S2, each byte stands for an vailable voltage, + * no need to do any alignment. + * + * @param[in] handle DAC channels handle + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it + * @param[in] timeout_ms The timeout time in mili-second + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet + * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout + * - ESP_OK Success to output the acyclic DAC data + */ +esp_err_t dac_channels_write_continuously(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms); + +/** + * @brief Write DAC continuous data cyclically + * @note The data in buffer will be converted cyclically once this function is called, + * This function won't be blocked, it will return once the data loaded into DMA buffers + * @note The buffer size of cyclically output is limited by the descriptor number while initializing the continuous mode, + * Concretely, in order to load all the data into descriptors, + * the cyclic buffer size is not supposed to be greater than `desc_num * 4092` + * @note On ESP32, the data bit width of DAC continuous data is fixed to 16 bits while only the high 8 bits are available, + * you can align the DAC data to 16 bits manually or set `CONFIG_DAC_DMA_AUTO_16BIT_ALIGN` to get the correct wave. + * But the data bit width is already 8 bits on ESP32-S2, each byte stands for an vailable voltage, + * no need to do any alignment. + * + * @param[in] handle DAC channels handle + * @param[in] buf The digital data buffer to convert + * @param[in] buf_size The buffer size of digital data buffer + * @param[out] bytes_loaded The bytes that has been loaded into DMA buffer, can be NULL if don't need it + * @param[in] timeout_ms The timeout time in mili-second + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC continuous mode has not been enabled yet + * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout + * - ESP_OK Success to output the acyclic DAC data + */ +esp_err_t dac_channels_write_cyclically(dac_channels_handle_t handle, uint8_t *buf, size_t buf_size, size_t *bytes_loaded, uint32_t timeout_ms); + +/*-------------------------------------------------------------------------- + DAC cosine wave outputting APIs + ---------------------------------------------------------------------------*/ +/** + * @brief Initialize the DAC channels to cosine wave mode + * + * @param[in] handle DAC channels handle + * @param[in] cw_cfg DAC cosine wave generater configuration + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has been initialized already + * - ESP_OK Success to initialize the DAC channels into cosine wave mode + */ +esp_err_t dac_channels_init_cosine_mode(dac_channels_handle_t handle, const dac_cosine_config_t *cw_cfg); + +/** + * @brief Deinitialize the DAC channels to cosine wave mode + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC cosine wave generator is not stopped yet + * - ESP_OK Success to deinitialize the DAC cosine mode + */ +esp_err_t dac_channels_deinit_cosine_mode(dac_channels_handle_t handle); + +/** + * @brief Start the DAC cosine wave generator output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has not been enabled yet or started already + * - ESP_OK Success to start cosine wave generator + */ +esp_err_t dac_channels_start_cosine_output(dac_channels_handle_t handle); + +/** + * @brief Stop the DAC cosine wave generator output + * + * @param[in] handle DAC channels handle + * @return + * - ESP_ERR_INVALID_ARG The input parameter is invalid + * - ESP_ERR_INVALID_STATE The DAC channels has not been enabled yet or stoppped already + * - ESP_OK Success to stop cosine wave generator + */ +esp_err_t dac_channels_stop_cosine_output(dac_channels_handle_t handle); + +#endif // SOC_DAC_SUPPORTED + +#ifdef __cplusplus +} +#endif diff --git a/components/driver/include/driver/dac_new.h b/components/driver/include/driver/dac_new.h deleted file mode 100644 index f4ad111487..0000000000 --- a/components/driver/include/driver/dac_new.h +++ /dev/null @@ -1,260 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "driver/dac_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if CONFIG_IDF_TARGET_ESP32 -#define DAC_CHANNEL1_IO 25 /*!< ESP32 DAC channel 1 GPIO number: GPIO_NUM_25 */ -#define DAC_CHANNEL2_IO 26 /*!< ESP32 DAC channel 2 GPIO number: GPIO_NUM_26 */ -#elif CONFIG_IDF_TARGET_ESP32S2 -#define DAC_CHANNEL1_IO 17 /*!< ESP32S2 DAC channel 1 GPIO number: GPIO_NUM_17 */ -#define DAC_CHANNEL2_IO 18 /*!< ESP32S2 DAC channel 2 GPIO number: GPIO_NUM_17 */ -#endif - -/** - * @brief DAC channel configuration - * - */ -typedef struct { - dac_channel_mask_t chan_sel; /*!< Using DAC channel mask to select the channel in the channel group */ -} dac_group_config_t; - -/** - * @brief DAC DMA configration - * - */ -typedef struct { - uint32_t freq_hz; /*!< The frequency of DAC converting each data in DMA mode, unit: Hz */ - uint32_t desc_num; /*!< The number of DMA descriptor , directly proportional to the max data buffer size while converting in cyclic way */ - dac_dma_channel_mode_t chan_mode; /*!< DMA channel mode, only take effect when multiple channels enabled in a group, depends converting the buffer alternately or simultaneously */ -} dac_dma_config_t; - -/** - * @brief DAC cosine wave gnerator configuration - * - */ -typedef struct { - uint32_t freq_hz; /*!< The frequency of cosine wave, unit: Hz */ - dac_cosine_scale_t scale; /*!< The scale of cosine wave amplitude */ - dac_cosine_phase_t phase; /*!< The phase of cosine wave */ - int8_t offset; /*!< The DC offset of cosine wave */ -} dac_cosine_config_t; - -typedef struct dac_channel_group_s *dac_channel_group_handle_t; /*!< DAC group handle of DAC peripheral, one or multiple DAC channels can be controlled by the group handle */ - -/*-------------------------------------------------------------------------- - DAC common APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Allocate a new DAC channel group - * - * @param[in] dac_cfg DAC basic configuration - * @param[out] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_NO_MEM No memory for a new DAC handle - * - ESP_ERR_INVALID_STATE The specified DAC channel is occupied already - * - ESP_OK Success to allocate DAC channel group - */ -esp_err_t dac_new_channel_group(const dac_group_config_t *dac_cfg, dac_channel_group_handle_t *handle); - -/** - * @brief Delete and free the DAC channel group - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group is not disabled - * - ESP_OK Success to delete the channel group - */ -esp_err_t dac_del_channel_group(dac_channel_group_handle_t handle); - -/** - * @brief Enabled the DAC channels in the channel group - * @note GPIOs of DAC channles will be enabled in this step - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group has enabled already or the channels are running - * - ESP_OK Success to enable the channel group - */ -esp_err_t dac_channel_group_enable(dac_channel_group_handle_t handle); - -/** - * @brief Disable the DAC channels in the channel group - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group has disabled already or the channels are running - * - ESP_OK Success to enable the channel group - */ -esp_err_t dac_channel_group_disable(dac_channel_group_handle_t handle); - -/*-------------------------------------------------------------------------- - DAC constant voltage outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief DAC channel group output a constant voltage - * @note This function is available when DAC chennel group is enbled - * - * @param[in] handle DAC channel group handle - * @param[in] value The digital value of the constant voltage - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The channel group is not enabled - * - ESP_OK Success to enable the channel group - */ -esp_err_t dac_channel_group_output_constant_voltage(dac_channel_group_handle_t handle, uint8_t value); - -/*-------------------------------------------------------------------------- - DAC continuous outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Initialize the DAC channel group to DMA mode - * @note DAC can convert digital data continuously in DMA mode - * - * @param[in] handle DAC channel group handle - * @param[in] dma_cfg DAC DMA configuration - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has been initialized already - * - ESP_ERR_NO_MEM No memory for DAC DMA mode - * - ESP_OK Success to initializing the DAC channel group to DMA mode - */ -esp_err_t dac_channel_group_init_dma_output(dac_channel_group_handle_t handle, const dac_dma_config_t *dma_cfg); - -/** - * @brief Deinitialize the DMA mode of the DAC channel group - * @note It can only be deinitialized when the DMA output is stopped - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA is not stopped yet - * - ESP_OK Success to deinitialize the DAC DMA mode - */ -esp_err_t dac_channel_group_deinit_dma_output(dac_channel_group_handle_t handle); - -/** - * @brief Start the DAC DMA output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA has not been enabled yet or started already - * - ESP_OK Success to start the DMA output - */ -esp_err_t dac_channel_group_start_dma_output(dac_channel_group_handle_t handle); - -/** - * @brief Stop the DAC DMA output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA is stopped or not disabled already - * - ESP_OK Success to stop the DMA output - */ -esp_err_t dac_channel_group_stop_dma_output(dac_channel_group_handle_t handle); - -/** - * @brief Write DAC DMA data acyclicly - * @note The data in buffer will only be converted one time, - * This function will be blocked until all data sent successfully or timeout - * then the DAC output will keep outputting the voltage of the last data in the buffer - * - * @param[in] handle DAC channel group handle - * @param[in] buf The digital data buffer to convert - * @param[in] buf_size The buffer size of digital data buffer - * @param[in] timeout_ms The timeout time in mili-second - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA has not been started or enabled yet - * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout - * - ESP_OK Success to output the acyclic DAC data by DMA - */ -esp_err_t dac_channel_group_write_acyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms); - -/** - * @brief Write DAC DMA data cyclicly - * @note The data in buffer will be converted cyclicly once this function is called, - * so the input buffer needs to stay accessable during the convertion, - * but this function won't be blocked, it will return once the data loaded into DMA descriptors - * @note The buffer size of cyclicly output is limited by the descriptor number while initializing the DMA mode, - * Concretely, in order to load all the data into descriptors, - * the cyclic buffer size is not supposed to be greater than `desc_num * 4092` - * - * @param[in] handle DAC channel group handle - * @param[in] buf The digital data buffer to convert - * @param[in] buf_size The buffer size of digital data buffer - * @param[in] timeout_ms The timeout time in mili-second - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC DMA has not been started or enabled yet - * - ESP_ERR_TIMEOUT Waiting for semaphore or message queue timeout - * - ESP_OK Success to output the acyclic DAC data by DMA - */ -esp_err_t dac_channel_group_write_cyclicly(dac_channel_group_handle_t handle, uint8_t *buf, size_t buf_size, uint32_t timeout_ms); - -/*-------------------------------------------------------------------------- - DAC cosine wave outputting APIs - ---------------------------------------------------------------------------*/ -/** - * @brief Initialize the DAC channel group to cosine wave mode - * - * @param[in] handle DAC channel group handle - * @param[in] cw_cfg DAC cosine wave generater configuration - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has been initialized already - * - ESP_OK Success to initialize the DAC channel group into cosine wave mode - */ -esp_err_t dac_channel_group_init_cosine_output(dac_channel_group_handle_t handle, const dac_cosine_config_t *cw_cfg); - -/** - * @brief Deinitialize the DAC channel group to cosine wave mode - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC cosine wave generator is not stopped yet - * - ESP_OK Success to deinitialize the DAC DMA mode - */ -esp_err_t dac_channel_group_deinit_cosine_output(dac_channel_group_handle_t handle); - -/** - * @brief Start the DAC cosine wave generator output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has not been enabled yet or started already - * - ESP_OK Success to start cosine wave generator - */ -esp_err_t dac_channel_group_start_cosine_output(dac_channel_group_handle_t handle); - -/** - * @brief Stop the DAC cosine wave generator output - * - * @param[in] handle DAC channel group handle - * @return - * - ESP_ERR_INVALID_ARG The input parameter is invalid - * - ESP_ERR_INVALID_STATE The DAC channel group has not been enabled yet or stoppped already - * - ESP_OK Success to stop cosine wave generator - */ -esp_err_t dac_channel_group_stop_cosine_output(dac_channel_group_handle_t handle); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/include/driver/dac_types.h b/components/driver/include/driver/dac_types.h index c38a955564..50733abcb9 100644 --- a/components/driver/include/driver/dac_types.h +++ b/components/driver/include/driver/dac_types.h @@ -5,51 +5,82 @@ */ #pragma once +#include +#include +#include +#include #include "soc/soc_caps.h" +#include "soc/clk_tree_defs.h" #include "hal/adc_types.h" +#include "esp_bit_defs.h" #include "sdkconfig.h" #ifdef __cplusplus extern "C" { #endif +#if SOC_DAC_SUPPORTED + /** * @brief DAC channel mask * */ typedef enum { - DAC_CHANNEL_MASK_1 = BIT(0), /*!< DAC channel 1 is GPIO25(ESP32) / GPIO17(ESP32S2) */ - DAC_CHANNEL_MASK_2 = BIT(1), /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ - DAC_CHANNEL_MASK_BOTH = BIT(0) | BIT(1), /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_MASK_CH0 = BIT(0), /*!< DAC channel 0 is GPIO25(ESP32) / GPIO17(ESP32S2) */ + DAC_CHANNEL_MASK_CH1 = BIT(1), /*!< DAC channel 1 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_MASK_BOTH = BIT(0) | BIT(1), /*!< Both DAC channel 0 and channel 1 */ } dac_channel_mask_t; /** * @brief DAC channel work mode in dma mode * @note Only take effect when multiple channels enabled. + * @note Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F */ typedef enum { - DAC_CHANNEL_SIMULTANEOUS, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ - DAC_CHANNEL_ALTERNATE, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ -} dac_dma_channel_mode_t; + DAC_CHANNEL_MODE_SIMUL, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ + DAC_CHANNEL_MODE_ALTER, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ +} dac_conti_channel_mode_t; /** - * @brief The multiple of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. + * @brief DAC DMA (digitial controller) clock source + * + */ +typedef soc_periph_dac_digi_clk_src_t dac_conti_clk_src_t; + +/** + * @brief DAC cosine wave generator clock source + * + */ +typedef soc_periph_dac_cosine_clk_src_t dac_cosine_clk_src_t; + +/** + * @brief The attenuation of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. */ typedef enum { - DAC_COSINE_SCALE_1 = 0x0, /*!< No scaling to the DAC cosine wave amplitude. Default. */ - DAC_COSINE_SCALE_2 = 0x1, /*!< 1/2 amplitude of the DAC cosine wave */ - DAC_COSINE_SCALE_4 = 0x2, /*!< 1/4 amplitude of the DAC cosine wave */ - DAC_COSINE_SCALE_8 = 0x3, /*!< 1/8 amplitude of the DAC cosine wave */ + DAC_COSINE_NO_ATTEN = 0x0, /*!< No attenuation to the DAC cosine wave amplitude. Default. */ + DAC_COSINE_ATTEN_2 = 0x1, /*!< 1/2 amplitude of the DAC cosine wave */ + DAC_COSINE_ATTEN_4 = 0x2, /*!< 1/4 amplitude of the DAC cosine wave */ + DAC_COSINE_ATTEN_8 = 0x3, /*!< 1/8 amplitude of the DAC cosine wave */ } dac_cosine_scale_t; /** * @brief Set the phase of the cosine wave generator output. + * @note Only 0 or 180 are supported, + * it will be set to 0 as default if configured to an unsupported phase. */ typedef enum { - DAC_COSINE_PHASE_0 = 0x2, /*!< Phase shift +0° */ - DAC_COSINE_PHASE_180 = 0x3, /*!< Phase shift +180° */ + DAC_COSINE_PHASE_0 = 0, /*!< Phase shift +0° */ + DAC_COSINE_PHASE_180 = 180, /*!< Phase shift +180° */ } dac_cosine_phase_t; +#endif // SOC_DAC_SUPPORTED + #ifdef __cplusplus } #endif diff --git a/components/driver/include/esp_private/dac_dma.h b/components/driver/include/esp_private/dac_dma.h deleted file mode 100644 index 66735534fa..0000000000 --- a/components/driver/include/esp_private/dac_dma.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include "esp_err.h" -#include "esp_intr_alloc.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -esp_err_t dac_dma_periph_init(int chan_num, uint32_t freq_hz, bool is_alternate); - -esp_err_t dac_dma_periph_deinit(void); - -esp_err_t dac_dma_periph_register_intr(intr_handler_t intr_handler_func, void *user_ctx); - -esp_err_t dac_dma_periph_deregister_intr(void); - -void dac_dma_periph_enable(void); - -void dac_dma_periph_disable(void); - -bool dac_dma_periph_intr_is_triggered(void); - -uint32_t dac_dma_periph_intr_get_eof_desc(void); - -void dac_dma_periph_dma_trans_start(uint32_t desc_addr); - -#ifdef __cplusplus -} -#endif diff --git a/components/driver/linker.lf b/components/driver/linker.lf index 46980ee0c6..119189a0e4 100644 --- a/components/driver/linker.lf +++ b/components/driver/linker.lf @@ -17,5 +17,7 @@ entries: gpio: gpio_intr_disable (noflash) if SDM_CTRL_FUNC_IN_IRAM = y: sdm: sdm_channel_set_duty (noflash) + if DAC_CTRL_FUNC_IN_IRAM = y: + dac_driver: dac_channels_set_voltage (noflash) if MCPWM_CTRL_FUNC_IN_IRAM = y: mcpwm_cmpr: mcpwm_comparator_set_compare_value (noflash) diff --git a/components/driver/test/CMakeLists.txt b/components/driver/test/CMakeLists.txt index f609fd6ca1..dc3eb2437f 100644 --- a/components/driver/test/CMakeLists.txt +++ b/components/driver/test/CMakeLists.txt @@ -1,4 +1,4 @@ -idf_component_register(SRC_DIRS . param_test dac_dma_test +idf_component_register(SRC_DIRS . param_test PRIV_INCLUDE_DIRS include param_test/include PRIV_REQUIRES cmock test_utils driver nvs_flash esp_timer esp_adc esp_event esp_wifi) diff --git a/components/driver/test/dac_dma_test/test_dac_audio_file.h b/components/driver/test/dac_dma_test/test_dac_audio_file.h deleted file mode 100644 index fbe62c647c..0000000000 --- a/components/driver/test/dac_dma_test/test_dac_audio_file.h +++ /dev/null @@ -1,4980 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -const unsigned char audio_table[] = { - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x7a, 0x79, 0x79, 0x7c, 0x81, 0x82, 0x82, - 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x84, 0x85, 0x84, 0x80, 0x7d, 0x7a, - 0x78, 0x78, 0x7a, 0x80, 0x84, 0x87, 0x86, 0x80, 0x7a, 0x77, 0x79, 0x7d, 0x82, 0x85, 0x84, 0x82, - 0x7d, 0x7a, 0x77, 0x76, 0x77, 0x79, 0x80, 0x84, 0x86, 0x88, 0x87, 0x84, 0x7e, 0x77, 0x74, 0x75, - 0x79, 0x81, 0x88, 0x8b, 0x89, 0x87, 0x84, 0x7e, 0x78, 0x73, 0x72, 0x78, 0x82, 0x8b, 0x8f, 0x8e, - 0x88, 0x7e, 0x71, 0x69, 0x6d, 0x79, 0x88, 0x8f, 0x8c, 0x85, 0x80, 0x80, 0x81, 0x7d, 0x77, 0x73, - 0x76, 0x7e, 0x88, 0x8f, 0x8d, 0x85, 0x7e, 0x7b, 0x7b, 0x7e, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x80, - 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x80, 0x82, 0x84, 0x83, 0x80, 0x7c, 0x7b, 0x7d, 0x81, 0x84, 0x84, - 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, 0x7a, 0x79, 0x7c, 0x83, 0x87, 0x87, 0x83, 0x7e, 0x79, 0x78, - 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x81, 0x82, 0x83, 0x84, 0x83, 0x7e, 0x7a, 0x77, 0x78, 0x7b, 0x7e, - 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x80, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, - 0x7b, 0x7c, 0x80, 0x83, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7a, 0x77, 0x77, 0x78, 0x7c, 0x82, 0x85, - 0x86, 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x77, 0x75, 0x78, 0x7e, 0x83, 0x85, 0x85, 0x85, 0x84, 0x83, - 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7a, - 0x7a, 0x7c, 0x80, 0x83, 0x86, 0x87, 0x84, 0x80, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, - 0x83, 0x87, 0x88, 0x87, 0x82, 0x7c, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x81, 0x85, 0x8a, 0x8a, 0x85, - 0x7e, 0x79, 0x78, 0x79, 0x7a, 0x7c, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7d, - 0x80, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x81, 0x83, 0x83, 0x84, 0x81, 0x7d, 0x7a, 0x77, 0x78, 0x7a, - 0x7d, 0x80, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7a, 0x7c, 0x80, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7e, - 0x81, 0x82, 0x84, 0x84, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, - 0x7d, 0x82, 0x86, 0x89, 0x89, 0x85, 0x7a, 0x6f, 0x69, 0x64, 0x62, 0x6f, 0x8f, 0xb2, 0xc9, 0xcc, - 0xb1, 0x80, 0x4f, 0x2c, 0x18, 0x24, 0x53, 0x8c, 0xb3, 0xc9, 0xd0, 0xbe, 0x9c, 0x78, 0x5b, 0x4b, - 0x4e, 0x5d, 0x76, 0x8b, 0x92, 0x9d, 0x9d, 0x90, 0x87, 0x7a, 0x70, 0x6c, 0x70, 0x7a, 0x86, 0x8b, - 0x8e, 0x8b, 0x83, 0x7b, 0x77, 0x78, 0x7a, 0x80, 0x82, 0x82, 0x83, 0x81, 0x7a, 0x79, 0x7e, 0x84, - 0x89, 0x8b, 0x85, 0x7b, 0x71, 0x6f, 0x71, 0x73, 0x79, 0x88, 0x94, 0x99, 0x96, 0x8f, 0x82, 0x6c, - 0x5f, 0x60, 0x67, 0x77, 0x8f, 0xa1, 0xa6, 0x9c, 0x85, 0x67, 0x56, 0x58, 0x69, 0x83, 0x99, 0xa7, - 0xa7, 0x97, 0x82, 0x6a, 0x57, 0x54, 0x5e, 0x74, 0x90, 0xa5, 0xa9, 0x9c, 0x86, 0x6f, 0x60, 0x5d, - 0x67, 0x7b, 0x8f, 0x98, 0x98, 0x8e, 0x7d, 0x6b, 0x60, 0x63, 0x70, 0x84, 0x99, 0xa5, 0xa4, 0x94, - 0x7d, 0x67, 0x58, 0x59, 0x63, 0x75, 0x89, 0x93, 0x96, 0x98, 0x96, 0x90, 0x86, 0x77, 0x69, 0x5f, - 0x5d, 0x69, 0x7c, 0x8d, 0x99, 0x9a, 0x92, 0x86, 0x74, 0x68, 0x68, 0x74, 0x84, 0x93, 0x9b, 0x98, - 0x8d, 0x7a, 0x69, 0x60, 0x61, 0x6a, 0x7a, 0x8d, 0x9e, 0xa4, 0x98, 0x83, 0x6c, 0x5e, 0x60, 0x6c, - 0x7d, 0x91, 0x98, 0x94, 0x8b, 0x79, 0x6c, 0x67, 0x6a, 0x78, 0x88, 0x92, 0x98, 0x8e, 0x7b, 0x69, - 0x61, 0x69, 0x7a, 0x8f, 0x9e, 0xa1, 0x97, 0x87, 0x78, 0x6d, 0x6a, 0x6e, 0x74, 0x7c, 0x82, 0x80, - 0x7c, 0x7d, 0x81, 0x85, 0x8b, 0x91, 0x92, 0x8b, 0x7d, 0x70, 0x64, 0x5d, 0x5c, 0x67, 0x80, 0x9a, - 0xb1, 0xbd, 0xb7, 0x9f, 0x7a, 0x53, 0x36, 0x31, 0x45, 0x6a, 0x99, 0xc5, 0xd8, 0xca, 0xa4, 0x73, - 0x46, 0x2a, 0x2d, 0x50, 0x83, 0xad, 0xc1, 0xba, 0xa3, 0x8a, 0x70, 0x5c, 0x53, 0x57, 0x67, 0x79, - 0x89, 0x9b, 0xa7, 0xa3, 0x93, 0x81, 0x71, 0x6a, 0x68, 0x69, 0x6d, 0x75, 0x78, 0x78, 0x80, 0x8c, - 0x9b, 0xaa, 0xb0, 0xa7, 0x91, 0x71, 0x4c, 0x34, 0x35, 0x4d, 0x78, 0xa9, 0xcc, 0xd8, 0xcd, 0xa7, - 0x73, 0x41, 0x19, 0xf, 0x29, 0x5f, 0xa5, 0xe3, 0xff, 0xf8, 0xc1, 0x6c, 0x22, 0x0, 0x9, 0x34, - 0x74, 0xb3, 0xdc, 0xe3, 0xca, 0x98, 0x64, 0x42, 0x36, 0x44, 0x6a, 0x96, 0xb6, 0xbb, 0xa5, 0x83, - 0x64, 0x57, 0x57, 0x5e, 0x71, 0x8d, 0x9f, 0xa4, 0x98, 0x85, 0x75, 0x6b, 0x6a, 0x73, 0x81, 0x8d, - 0x97, 0x94, 0x7a, 0x5e, 0x53, 0x5e, 0x7a, 0x91, 0xa1, 0xa6, 0x9c, 0x91, 0x78, 0x66, 0x66, 0x6c, - 0x7b, 0x82, 0x84, 0x93, 0x9c, 0x93, 0x85, 0x74, 0x62, 0x58, 0x62, 0x7a, 0x8f, 0xa3, 0xb3, 0xaf, - 0x92, 0x63, 0x40, 0x3c, 0x55, 0x81, 0xa8, 0xbb, 0xb4, 0x90, 0x65, 0x50, 0x58, 0x74, 0x8a, 0x95, - 0x96, 0x91, 0x87, 0x80, 0x7a, 0x70, 0x68, 0x68, 0x6f, 0x7e, 0x95, 0xa8, 0xa7, 0x98, 0x7d, 0x60, - 0x54, 0x5c, 0x6d, 0x81, 0x95, 0xa3, 0xa4, 0x99, 0x7d, 0x68, 0x5d, 0x5d, 0x67, 0x76, 0x88, 0x96, - 0x9f, 0xa2, 0x9d, 0x87, 0x6a, 0x53, 0x4d, 0x5e, 0x7a, 0x99, 0xad, 0xb1, 0xa3, 0x81, 0x62, 0x59, - 0x5d, 0x67, 0x77, 0x8d, 0x9c, 0x9b, 0x91, 0x83, 0x70, 0x64, 0x69, 0x7b, 0x93, 0xa1, 0x9e, 0x89, - 0x74, 0x64, 0x50, 0x4d, 0x69, 0x96, 0xbd, 0xc5, 0xad, 0x8a, 0x5c, 0x3d, 0x38, 0x46, 0x6c, 0x99, - 0xbb, 0xce, 0xc8, 0xa7, 0x72, 0x3e, 0x21, 0x27, 0x4f, 0x8b, 0xbc, 0xd1, 0xc7, 0xa5, 0x76, 0x50, - 0x3d, 0x41, 0x5e, 0x84, 0xa9, 0xc0, 0xb7, 0xa0, 0x82, 0x66, 0x58, 0x58, 0x60, 0x6e, 0x7e, 0x8e, - 0x9b, 0xa1, 0x9e, 0x97, 0x87, 0x71, 0x62, 0x57, 0x54, 0x61, 0x7c, 0xa1, 0xbb, 0xbd, 0xa9, 0x84, - 0x59, 0x3c, 0x3b, 0x57, 0x81, 0xa8, 0xc2, 0xc4, 0xac, 0x81, 0x58, 0x3d, 0x3a, 0x52, 0x75, 0x98, - 0xb4, 0xc2, 0xbb, 0xa1, 0x7b, 0x5a, 0x44, 0x3c, 0x4d, 0x6e, 0x93, 0xb0, 0xbc, 0xba, 0xa4, 0x80, - 0x5c, 0x45, 0x42, 0x52, 0x72, 0x98, 0xb2, 0xba, 0xaf, 0x92, 0x6e, 0x52, 0x45, 0x48, 0x5a, 0x7a, - 0x9c, 0xb1, 0xb8, 0xaf, 0x99, 0x7b, 0x60, 0x51, 0x51, 0x63, 0x7b, 0x96, 0xa8, 0xa8, 0x99, 0x82, - 0x6c, 0x5e, 0x59, 0x61, 0x76, 0x90, 0xa3, 0xa6, 0x9c, 0x89, 0x6f, 0x5a, 0x4d, 0x4f, 0x64, 0x82, - 0xa0, 0xb5, 0xb8, 0xad, 0x93, 0x72, 0x58, 0x49, 0x4d, 0x64, 0x83, 0x9f, 0xb3, 0xb5, 0xa5, 0x8b, - 0x6f, 0x59, 0x54, 0x5b, 0x67, 0x77, 0x8b, 0x98, 0x9d, 0x97, 0x8c, 0x7e, 0x71, 0x6a, 0x68, 0x6c, - 0x76, 0x86, 0x92, 0x9a, 0x9d, 0x98, 0x8a, 0x75, 0x61, 0x54, 0x55, 0x65, 0x83, 0xa0, 0xaf, 0xaa, - 0x99, 0x86, 0x75, 0x69, 0x5f, 0x5e, 0x67, 0x79, 0x8c, 0x96, 0x95, 0x8b, 0x80, 0x78, 0x76, 0x78, - 0x79, 0x76, 0x77, 0x80, 0x88, 0x89, 0x86, 0x86, 0x86, 0x84, 0x81, 0x7b, 0x78, 0x78, 0x7e, 0x83, - 0x81, 0x7c, 0x79, 0x7b, 0x84, 0x88, 0x86, 0x83, 0x80, 0x80, 0x82, 0x7e, 0x77, 0x74, 0x7b, 0x89, - 0x91, 0x89, 0x7a, 0x6f, 0x6c, 0x70, 0x7a, 0x84, 0x85, 0x81, 0x84, 0x89, 0x8e, 0x90, 0x8e, 0x8a, - 0x84, 0x7b, 0x6e, 0x63, 0x62, 0x71, 0x8c, 0xa5, 0xad, 0xa1, 0x8a, 0x73, 0x62, 0x58, 0x57, 0x5f, - 0x70, 0x8d, 0xa7, 0xb3, 0xae, 0x9c, 0x83, 0x68, 0x51, 0x41, 0x3e, 0x4f, 0x75, 0xa3, 0xc6, 0xd2, - 0xc3, 0x9b, 0x6b, 0x46, 0x35, 0x3a, 0x55, 0x7d, 0xa9, 0xc3, 0xc4, 0xb4, 0x95, 0x73, 0x5b, 0x4a, - 0x44, 0x4b, 0x5c, 0x79, 0x9b, 0xb7, 0xc2, 0xb5, 0x99, 0x7a, 0x5f, 0x4b, 0x45, 0x4d, 0x62, 0x7d, - 0x9a, 0xae, 0xb1, 0xaa, 0x9a, 0x8a, 0x7b, 0x64, 0x4d, 0x45, 0x50, 0x6b, 0x8e, 0xaa, 0xb4, 0xad, - 0x9d, 0x82, 0x68, 0x58, 0x53, 0x5b, 0x6d, 0x85, 0x97, 0xa4, 0xa9, 0xa4, 0x97, 0x81, 0x66, 0x56, - 0x54, 0x62, 0x78, 0x8e, 0x9d, 0xa3, 0x9c, 0x8e, 0x80, 0x75, 0x6d, 0x65, 0x63, 0x6a, 0x77, 0x89, - 0x97, 0x9d, 0x98, 0x8c, 0x7c, 0x6f, 0x67, 0x65, 0x67, 0x6e, 0x7d, 0x92, 0xa3, 0xa8, 0xa2, 0x95, - 0x84, 0x71, 0x63, 0x5d, 0x5f, 0x68, 0x78, 0x8a, 0x95, 0x98, 0x93, 0x88, 0x7e, 0x79, 0x76, 0x76, - 0x77, 0x7a, 0x81, 0x84, 0x85, 0x84, 0x82, 0x80, 0x7e, 0x81, 0x82, 0x81, 0x7b, 0x77, 0x75, 0x77, - 0x7c, 0x85, 0x8e, 0x96, 0x96, 0x8c, 0x7e, 0x6f, 0x64, 0x61, 0x66, 0x75, 0x85, 0x8c, 0x91, 0x90, - 0x8b, 0x86, 0x80, 0x7a, 0x78, 0x78, 0x7c, 0x81, 0x81, 0x7b, 0x79, 0x79, 0x7d, 0x82, 0x83, 0x80, - 0x79, 0x76, 0x79, 0x82, 0x8a, 0x90, 0x92, 0x8e, 0x88, 0x7c, 0x6e, 0x66, 0x66, 0x6b, 0x7b, 0x8f, - 0x99, 0x97, 0x8e, 0x86, 0x7e, 0x79, 0x75, 0x71, 0x6f, 0x73, 0x7b, 0x85, 0x8b, 0x8d, 0x8b, 0x88, - 0x82, 0x7a, 0x72, 0x6f, 0x72, 0x78, 0x7d, 0x81, 0x79, 0x69, 0x5b, 0x56, 0x64, 0x83, 0xa7, 0xc6, - 0xce, 0xc2, 0xa4, 0x7e, 0x5d, 0x48, 0x45, 0x52, 0x67, 0x7e, 0x91, 0x9c, 0xa1, 0x9d, 0x91, 0x7e, - 0x66, 0x4f, 0x3f, 0x3f, 0x51, 0x75, 0xa0, 0xc1, 0xd2, 0xc7, 0xa7, 0x80, 0x5b, 0x49, 0x4c, 0x5d, - 0x7b, 0x97, 0xa9, 0xaf, 0xa7, 0x9a, 0x87, 0x72, 0x60, 0x52, 0x49, 0x4b, 0x58, 0x71, 0x92, 0xaa, - 0xb4, 0xac, 0x97, 0x7c, 0x65, 0x5a, 0x5f, 0x6e, 0x82, 0x93, 0x9f, 0xa0, 0x9a, 0x90, 0x85, 0x7a, - 0x6f, 0x64, 0x5d, 0x5b, 0x61, 0x70, 0x84, 0x93, 0x9b, 0x9d, 0x97, 0x8b, 0x80, 0x76, 0x70, 0x70, - 0x6e, 0x6c, 0x6c, 0x6f, 0x7b, 0x8c, 0x9d, 0xa6, 0xa3, 0x98, 0x89, 0x7a, 0x6b, 0x5f, 0x5c, 0x62, - 0x6e, 0x80, 0x8e, 0x99, 0xa2, 0xa5, 0x9c, 0x84, 0x66, 0x53, 0x50, 0x5d, 0x74, 0x8e, 0x9e, 0xa2, - 0x9a, 0x8e, 0x84, 0x80, 0x7d, 0x7b, 0x74, 0x65, 0x5a, 0x5d, 0x72, 0x90, 0xa7, 0xb1, 0xa9, 0x95, - 0x7b, 0x69, 0x62, 0x64, 0x6c, 0x78, 0x84, 0x89, 0x8b, 0x8d, 0x8e, 0x8c, 0x8a, 0x84, 0x7a, 0x73, - 0x6d, 0x6b, 0x6f, 0x72, 0x6e, 0x66, 0x5d, 0x5b, 0x6b, 0x89, 0xab, 0xc3, 0xc7, 0xba, 0xa1, 0x83, - 0x6d, 0x63, 0x62, 0x67, 0x6d, 0x70, 0x72, 0x77, 0x7d, 0x85, 0x8b, 0x8a, 0x84, 0x7b, 0x72, 0x6a, - 0x67, 0x69, 0x6e, 0x75, 0x7a, 0x7c, 0x82, 0x8c, 0x96, 0x9e, 0xa2, 0x9e, 0x95, 0x8a, 0x81, 0x7b, - 0x7a, 0x7b, 0x79, 0x75, 0x71, 0x6e, 0x71, 0x79, 0x7d, 0x7e, 0x7a, 0x72, 0x70, 0x72, 0x76, 0x83, - 0x8e, 0x93, 0x93, 0x8c, 0x80, 0x77, 0x71, 0x70, 0x76, 0x7e, 0x87, 0x8d, 0x92, 0x95, 0x93, 0x8c, - 0x80, 0x71, 0x66, 0x60, 0x60, 0x66, 0x72, 0x81, 0x8d, 0x93, 0x96, 0x96, 0x94, 0x8f, 0x87, 0x7e, - 0x74, 0x69, 0x61, 0x62, 0x6e, 0x7c, 0x86, 0x8d, 0x8f, 0x8c, 0x89, 0x89, 0x8c, 0x8d, 0x8a, 0x82, - 0x78, 0x6c, 0x67, 0x6a, 0x70, 0x78, 0x81, 0x86, 0x8c, 0x90, 0x92, 0x93, 0x8e, 0x85, 0x79, 0x6e, - 0x67, 0x66, 0x6b, 0x75, 0x84, 0x90, 0x96, 0x96, 0x91, 0x8c, 0x85, 0x79, 0x6f, 0x66, 0x63, 0x67, - 0x6f, 0x7c, 0x8c, 0x99, 0x9e, 0x9d, 0x96, 0x89, 0x79, 0x6f, 0x69, 0x67, 0x6b, 0x74, 0x7e, 0x88, - 0x8b, 0x8a, 0x85, 0x7b, 0x71, 0x6a, 0x6a, 0x71, 0x80, 0x8e, 0x98, 0x9f, 0x9f, 0x95, 0x8b, 0x7c, - 0x6f, 0x69, 0x66, 0x68, 0x70, 0x78, 0x83, 0x8b, 0x90, 0x92, 0x8e, 0x87, 0x7c, 0x72, 0x6d, 0x6c, - 0x70, 0x78, 0x83, 0x8d, 0x93, 0x94, 0x90, 0x8a, 0x83, 0x7a, 0x73, 0x6f, 0x6f, 0x73, 0x79, 0x82, - 0x88, 0x8b, 0x8c, 0x8a, 0x85, 0x80, 0x7c, 0x78, 0x76, 0x76, 0x77, 0x7a, 0x7d, 0x80, 0x83, 0x87, - 0x8b, 0x8b, 0x8c, 0x8a, 0x84, 0x7c, 0x74, 0x6d, 0x6c, 0x6f, 0x76, 0x82, 0x8b, 0x93, 0x96, 0x95, - 0x8f, 0x87, 0x7b, 0x70, 0x69, 0x66, 0x69, 0x70, 0x7a, 0x86, 0x8e, 0x93, 0x94, 0x8d, 0x85, 0x7c, - 0x75, 0x72, 0x72, 0x74, 0x77, 0x7b, 0x80, 0x83, 0x87, 0x87, 0x87, 0x84, 0x80, 0x7d, 0x7a, 0x77, - 0x77, 0x7a, 0x7d, 0x80, 0x83, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x7c, 0x7d, 0x82, 0x85, 0x87, 0x87, - 0x85, 0x82, 0x7c, 0x78, 0x75, 0x75, 0x78, 0x80, 0x86, 0x8a, 0x8e, 0x8e, 0x89, 0x83, 0x7b, 0x72, - 0x6e, 0x6e, 0x70, 0x77, 0x80, 0x88, 0x8e, 0x90, 0x8d, 0x87, 0x7e, 0x74, 0x6e, 0x6c, 0x70, 0x79, - 0x85, 0x8a, 0x8e, 0x8e, 0x88, 0x83, 0x7c, 0x77, 0x74, 0x75, 0x77, 0x7b, 0x83, 0x87, 0x88, 0x87, - 0x82, 0x7d, 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7a, 0x7a, 0x7d, 0x80, 0x83, - 0x85, 0x86, 0x83, 0x81, 0x7c, 0x7a, 0x7a, 0x7a, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, - 0x83, 0x84, 0x83, 0x83, 0x82, 0x7e, 0x7a, 0x77, 0x73, 0x73, 0x76, 0x79, 0x80, 0x87, 0x8b, 0x8d, - 0x8a, 0x85, 0x81, 0x7a, 0x75, 0x74, 0x74, 0x76, 0x7a, 0x7e, 0x84, 0x88, 0x8a, 0x8a, 0x88, 0x84, - 0x7d, 0x77, 0x73, 0x72, 0x75, 0x7b, 0x83, 0x88, 0x8c, 0x8b, 0x86, 0x81, 0x7a, 0x76, 0x75, 0x76, - 0x78, 0x7b, 0x81, 0x86, 0x89, 0x89, 0x87, 0x82, 0x7b, 0x76, 0x74, 0x75, 0x78, 0x7d, 0x83, 0x84, - 0x85, 0x84, 0x82, 0x80, 0x7c, 0x7b, 0x7c, 0x7b, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x82, 0x83, 0x82, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x81, 0x81, 0x7e, 0x7e, - 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7b, 0x7a, 0x7c, 0x7e, 0x83, - 0x83, 0x82, 0x82, 0x80, 0x80, 0x81, 0x83, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x79, 0x78, 0x78, - 0x7a, 0x7d, 0x82, 0x87, 0x88, 0x87, 0x83, 0x7d, 0x79, 0x79, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x82, - 0x81, 0x7c, 0x7c, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x7e, 0x7c, 0x7c, 0x7c, 0x7e, - 0x80, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7d, 0x81, 0x85, 0x86, 0x85, 0x83, 0x80, - 0x7b, 0x78, 0x77, 0x77, 0x76, 0x79, 0x81, 0x86, 0x8a, 0x8b, 0x88, 0x81, 0x7b, 0x79, 0x78, 0x7b, - 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x82, 0x87, 0x88, 0x86, 0x81, 0x7c, 0x7a, 0x7b, 0x7e, 0x82, 0x83, - 0x81, 0x7d, 0x7c, 0x7d, 0x81, 0x82, 0x81, 0x80, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x7c, 0x80, - 0x81, 0x7e, 0x7b, 0x7c, 0x7c, 0x79, 0x78, 0x7b, 0x7d, 0x80, 0x83, 0x84, 0x84, 0x83, 0x7e, 0x7a, - 0x79, 0x78, 0x76, 0x77, 0x7b, 0x84, 0x88, 0x87, 0x85, 0x83, 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, - 0x7c, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x82, 0x86, 0x88, 0x86, 0x81, 0x7b, 0x79, 0x79, 0x78, - 0x79, 0x7a, 0x7c, 0x80, 0x84, 0x87, 0x86, 0x87, 0x85, 0x81, 0x7a, 0x75, 0x74, 0x77, 0x7b, 0x81, - 0x84, 0x84, 0x84, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x80, 0x7b, 0x7b, 0x7b, 0x7a, 0x7c, 0x80, - 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x80, - 0x7e, 0x7e, 0x7d, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x83, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x79, - 0x77, 0x76, 0x77, 0x7b, 0x83, 0x8a, 0x8f, 0x8f, 0x87, 0x80, 0x78, 0x74, 0x73, 0x74, 0x7b, 0x80, - 0x83, 0x86, 0x85, 0x85, 0x84, 0x83, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x81, 0x85, 0x87, 0x87, 0x88, - 0x87, 0x83, 0x7e, 0x78, 0x77, 0x77, 0x77, 0x7b, 0x7e, 0x85, 0x89, 0x8b, 0x8c, 0x89, 0x82, 0x79, - 0x71, 0x70, 0x73, 0x76, 0x76, 0x76, 0x78, 0x80, 0x88, 0x8e, 0x90, 0x8b, 0x83, 0x78, 0x70, 0x6f, - 0x70, 0x77, 0x83, 0x88, 0x8a, 0x89, 0x85, 0x82, 0x81, 0x7e, 0x7a, 0x77, 0x7b, 0x82, 0x88, 0x87, - 0x7e, 0x76, 0x72, 0x75, 0x7b, 0x84, 0x8b, 0x8c, 0x87, 0x81, 0x79, 0x78, 0x7c, 0x81, 0x83, 0x7d, - 0x7a, 0x79, 0x7c, 0x85, 0x88, 0x85, 0x7e, 0x77, 0x74, 0x79, 0x7d, 0x81, 0x84, 0x83, 0x80, 0x7e, - 0x7d, 0x7a, 0x7c, 0x82, 0x80, 0x7c, 0x79, 0x78, 0x7e, 0x84, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, - 0x7c, 0x7d, 0x7e, 0x7a, 0x7b, 0x7e, 0x7e, 0x80, 0x82, 0x84, 0x87, 0x89, 0x86, 0x82, 0x81, 0x7d, - 0x7a, 0x78, 0x7a, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x82, 0x82, 0x82, 0x80, 0x80, 0x7e, 0x79, 0x78, - 0x79, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x83, 0x83, 0x82, - 0x82, 0x7e, 0x7d, 0x7b, 0x79, 0x7b, 0x80, 0x83, 0x84, 0x88, 0x86, 0x82, 0x7d, 0x77, 0x76, 0x79, - 0x7d, 0x82, 0x85, 0x87, 0x89, 0x88, 0x87, 0x84, 0x79, 0x74, 0x6f, 0x6c, 0x74, 0x7c, 0x87, 0x8d, - 0x8b, 0x8a, 0x84, 0x7d, 0x7a, 0x77, 0x74, 0x74, 0x76, 0x77, 0x7d, 0x84, 0x87, 0x87, 0x85, 0x80, - 0x7d, 0x81, 0x81, 0x81, 0x7e, 0x78, 0x78, 0x77, 0x79, 0x7e, 0x84, 0x85, 0x83, 0x82, 0x7e, 0x7e, - 0x84, 0x87, 0x87, 0x86, 0x81, 0x79, 0x76, 0x7a, 0x7c, 0x80, 0x82, 0x80, 0x80, 0x82, 0x88, 0x8e, - 0x8e, 0x8b, 0x83, 0x7a, 0x72, 0x6e, 0x6d, 0x72, 0x7c, 0x86, 0x8a, 0x8c, 0x8d, 0x8a, 0x88, 0x83, - 0x7b, 0x72, 0x6b, 0x6a, 0x6d, 0x77, 0x84, 0x8c, 0x91, 0x8f, 0x87, 0x80, 0x7d, 0x7c, 0x7d, 0x7e, - 0x7a, 0x78, 0x77, 0x77, 0x7b, 0x82, 0x85, 0x87, 0x88, 0x85, 0x86, 0x86, 0x85, 0x84, 0x80, 0x7b, - 0x78, 0x76, 0x77, 0x7a, 0x80, 0x80, 0x81, 0x83, 0x83, 0x85, 0x87, 0x87, 0x85, 0x80, 0x7b, 0x76, - 0x75, 0x77, 0x76, 0x78, 0x7c, 0x7e, 0x81, 0x84, 0x86, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x7c, 0x78, - 0x73, 0x74, 0x75, 0x78, 0x84, 0x8d, 0x8e, 0x8c, 0x87, 0x7e, 0x79, 0x7a, 0x7c, 0x81, 0x80, 0x7d, - 0x7a, 0x7a, 0x7e, 0x83, 0x87, 0x89, 0x86, 0x84, 0x80, 0x7b, 0x78, 0x73, 0x72, 0x74, 0x77, 0x81, - 0x8b, 0x8f, 0x8e, 0x86, 0x7b, 0x73, 0x6e, 0x71, 0x78, 0x7b, 0x7e, 0x81, 0x80, 0x82, 0x86, 0x89, - 0x8a, 0x86, 0x7c, 0x75, 0x74, 0x77, 0x7b, 0x81, 0x84, 0x83, 0x82, 0x7e, 0x81, 0x85, 0x87, 0x88, - 0x86, 0x80, 0x7a, 0x77, 0x77, 0x7b, 0x7e, 0x82, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x80, 0x7d, - 0x7c, 0x7b, 0x7c, 0x81, 0x83, 0x83, 0x80, 0x79, 0x74, 0x70, 0x70, 0x74, 0x7a, 0x86, 0x8f, 0x92, - 0x90, 0x89, 0x7d, 0x74, 0x71, 0x70, 0x74, 0x78, 0x7a, 0x7c, 0x7d, 0x7c, 0x7d, 0x82, 0x86, 0x8c, - 0x8f, 0x8d, 0x88, 0x7d, 0x74, 0x73, 0x72, 0x76, 0x7a, 0x7b, 0x82, 0x86, 0x89, 0x8e, 0x8e, 0x8b, - 0x86, 0x7b, 0x76, 0x75, 0x78, 0x7e, 0x85, 0x86, 0x83, 0x80, 0x7c, 0x7c, 0x80, 0x84, 0x87, 0x87, - 0x84, 0x82, 0x80, 0x80, 0x7e, 0x7a, 0x75, 0x73, 0x72, 0x76, 0x7c, 0x82, 0x86, 0x87, 0x85, 0x86, - 0x88, 0x86, 0x81, 0x7b, 0x75, 0x6f, 0x6e, 0x72, 0x7a, 0x82, 0x8a, 0x90, 0x91, 0x8e, 0x88, 0x84, - 0x7b, 0x76, 0x72, 0x6f, 0x70, 0x78, 0x84, 0x8b, 0x8e, 0x8a, 0x7d, 0x73, 0x71, 0x76, 0x82, 0x8e, - 0x92, 0x8b, 0x7e, 0x71, 0x6c, 0x70, 0x78, 0x81, 0x82, 0x7e, 0x7a, 0x7b, 0x80, 0x89, 0x92, 0x92, - 0x89, 0x7c, 0x70, 0x6b, 0x6f, 0x76, 0x7b, 0x7e, 0x80, 0x82, 0x87, 0x8d, 0x92, 0x91, 0x8c, 0x82, - 0x75, 0x6f, 0x6d, 0x6f, 0x73, 0x79, 0x80, 0x86, 0x8d, 0x93, 0x93, 0x8d, 0x84, 0x76, 0x6b, 0x6a, - 0x73, 0x7c, 0x88, 0x8d, 0x8b, 0x88, 0x83, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7c, 0x7a, 0x78, 0x78, - 0x78, 0x76, 0x78, 0x7c, 0x85, 0x91, 0x96, 0x91, 0x85, 0x72, 0x67, 0x68, 0x6f, 0x77, 0x80, 0x82, - 0x80, 0x7e, 0x81, 0x88, 0x93, 0x99, 0x94, 0x88, 0x78, 0x69, 0x66, 0x6e, 0x78, 0x80, 0x84, 0x82, - 0x82, 0x86, 0x8d, 0x91, 0x92, 0x8e, 0x84, 0x7b, 0x74, 0x6e, 0x71, 0x77, 0x7c, 0x7e, 0x80, 0x81, - 0x82, 0x86, 0x87, 0x87, 0x85, 0x83, 0x80, 0x7c, 0x7b, 0x7b, 0x7a, 0x77, 0x76, 0x77, 0x79, 0x7b, - 0x7e, 0x81, 0x84, 0x86, 0x86, 0x85, 0x86, 0x85, 0x81, 0x80, 0x79, 0x75, 0x73, 0x71, 0x75, 0x7a, - 0x80, 0x88, 0x8f, 0x95, 0x93, 0x85, 0x74, 0x67, 0x65, 0x74, 0x8c, 0x9c, 0x9e, 0x89, 0x69, 0x53, - 0x50, 0x66, 0x89, 0xa6, 0xae, 0x9d, 0x81, 0x6a, 0x65, 0x76, 0x8d, 0x97, 0x8b, 0x6f, 0x5b, 0x5a, - 0x6c, 0x88, 0x9e, 0xa2, 0x91, 0x7e, 0x74, 0x76, 0x83, 0x8f, 0x8f, 0x83, 0x71, 0x65, 0x64, 0x73, - 0x89, 0x97, 0x9a, 0x90, 0x80, 0x76, 0x76, 0x7b, 0x7e, 0x7d, 0x77, 0x74, 0x78, 0x81, 0x8a, 0x8f, - 0x8c, 0x83, 0x77, 0x70, 0x6e, 0x76, 0x84, 0x8e, 0x94, 0x92, 0x8c, 0x87, 0x84, 0x84, 0x83, 0x7c, - 0x72, 0x66, 0x58, 0x4b, 0x44, 0x46, 0x5b, 0x81, 0xad, 0xce, 0xd4, 0xba, 0x93, 0x73, 0x66, 0x66, - 0x6b, 0x6c, 0x67, 0x66, 0x69, 0x72, 0x84, 0x9e, 0xba, 0xc7, 0xb8, 0x93, 0x67, 0x54, 0x57, 0x68, - 0x73, 0x6d, 0x60, 0x57, 0x62, 0x7c, 0x98, 0xa6, 0xa9, 0xa2, 0x92, 0x7b, 0x68, 0x63, 0x6b, 0x78, - 0x83, 0x85, 0x80, 0x7d, 0x86, 0x92, 0x98, 0x94, 0x87, 0x7c, 0x77, 0x76, 0x78, 0x7a, 0x7b, 0x7a, - 0x7b, 0x7d, 0x7c, 0x7a, 0x79, 0x7d, 0x80, 0x80, 0x80, 0x7c, 0x7c, 0x83, 0x8a, 0x8d, 0x8c, 0x8a, - 0x87, 0x86, 0x85, 0x80, 0x7a, 0x79, 0x7b, 0x7c, 0x7b, 0x7c, 0x80, 0x84, 0x8a, 0x8b, 0x89, 0x84, - 0x77, 0x68, 0x59, 0x53, 0x55, 0x64, 0x81, 0x9b, 0xa9, 0xab, 0xa5, 0x9a, 0x8e, 0x87, 0x7c, 0x73, - 0x6d, 0x6b, 0x69, 0x6d, 0x76, 0x83, 0x91, 0x96, 0x94, 0x89, 0x77, 0x6e, 0x6c, 0x6e, 0x72, 0x73, - 0x76, 0x7a, 0x7d, 0x86, 0x8d, 0x8e, 0x8f, 0x8a, 0x84, 0x7c, 0x75, 0x76, 0x7e, 0x88, 0x8f, 0x90, - 0x8a, 0x85, 0x7e, 0x79, 0x76, 0x73, 0x74, 0x77, 0x79, 0x81, 0x86, 0x87, 0x89, 0x88, 0x85, 0x83, - 0x80, 0x7a, 0x75, 0x70, 0x69, 0x5f, 0x56, 0x54, 0x60, 0x7e, 0xa4, 0xc7, 0xd1, 0xc3, 0xa9, 0x86, - 0x6b, 0x5d, 0x57, 0x56, 0x57, 0x5e, 0x68, 0x75, 0x86, 0x95, 0xa1, 0xa5, 0x9a, 0x84, 0x68, 0x53, - 0x50, 0x59, 0x6c, 0x7b, 0x83, 0x8c, 0x97, 0xa3, 0xab, 0xa6, 0x9b, 0x8d, 0x79, 0x6b, 0x5e, 0x5b, - 0x66, 0x76, 0x85, 0x8e, 0x8f, 0x8c, 0x86, 0x81, 0x7b, 0x70, 0x64, 0x5f, 0x64, 0x71, 0x85, 0x96, - 0xa1, 0xa5, 0xa1, 0x93, 0x81, 0x6f, 0x62, 0x5e, 0x63, 0x6f, 0x79, 0x87, 0x94, 0x99, 0x98, 0x93, - 0x8b, 0x82, 0x7c, 0x79, 0x75, 0x71, 0x68, 0x5d, 0x5a, 0x63, 0x73, 0x8a, 0xa2, 0xb6, 0xba, 0xae, - 0x99, 0x7a, 0x5a, 0x40, 0x30, 0x2c, 0x3b, 0x5e, 0x8b, 0xb8, 0xd9, 0xe6, 0xdd, 0xc1, 0x99, 0x6a, - 0x43, 0x2e, 0x2c, 0x3c, 0x59, 0x77, 0x92, 0xa8, 0xb5, 0xb8, 0xaf, 0x9a, 0x7c, 0x5d, 0x42, 0x34, - 0x38, 0x50, 0x75, 0xa6, 0xd0, 0xe1, 0xd9, 0xba, 0x90, 0x64, 0x47, 0x3b, 0x3c, 0x4b, 0x5f, 0x77, - 0x91, 0xa7, 0xb3, 0xad, 0x9d, 0x86, 0x68, 0x51, 0x48, 0x4f, 0x64, 0x7e, 0x9b, 0xb2, 0xbb, 0xba, - 0xb1, 0x9c, 0x82, 0x6a, 0x55, 0x4b, 0x49, 0x4f, 0x5a, 0x69, 0x75, 0x7c, 0x7e, 0x87, 0x9b, 0xb3, - 0xc4, 0xbe, 0x9d, 0x70, 0x53, 0x4d, 0x5b, 0x74, 0x85, 0x8e, 0x95, 0x99, 0x9a, 0x91, 0x81, 0x76, - 0x6c, 0x62, 0x57, 0x4e, 0x53, 0x69, 0x8a, 0xa5, 0xb0, 0xa9, 0x9b, 0x8c, 0x83, 0x80, 0x74, 0x6d, - 0x6f, 0x73, 0x78, 0x7e, 0x87, 0x91, 0x97, 0x98, 0x90, 0x7e, 0x6e, 0x61, 0x60, 0x68, 0x71, 0x7a, - 0x84, 0x8f, 0x99, 0x9d, 0x9b, 0x93, 0x89, 0x80, 0x74, 0x6b, 0x64, 0x63, 0x6d, 0x7c, 0x8c, 0x96, - 0x9a, 0x99, 0x91, 0x89, 0x7d, 0x72, 0x6f, 0x72, 0x79, 0x83, 0x8a, 0x8b, 0x87, 0x82, 0x7a, 0x6f, - 0x64, 0x5e, 0x61, 0x70, 0x83, 0x97, 0xab, 0xbb, 0xc1, 0xb5, 0x93, 0x61, 0x39, 0x28, 0x30, 0x4e, - 0x79, 0xa2, 0xbd, 0xc9, 0xc2, 0xaa, 0x86, 0x62, 0x4a, 0x40, 0x44, 0x57, 0x72, 0x94, 0xb5, 0xcb, - 0xcd, 0xb5, 0x90, 0x6a, 0x4a, 0x39, 0x3a, 0x4b, 0x65, 0x8a, 0xaa, 0xbb, 0xbe, 0xb2, 0x98, 0x7a, - 0x5d, 0x43, 0x39, 0x40, 0x5b, 0x83, 0xac, 0xca, 0xd3, 0xc5, 0xa3, 0x79, 0x53, 0x36, 0x30, 0x3d, - 0x5a, 0x81, 0xa1, 0xb8, 0xc4, 0xba, 0xa6, 0x89, 0x67, 0x50, 0x45, 0x45, 0x50, 0x5f, 0x73, 0x84, - 0x97, 0xab, 0xbd, 0xc7, 0xbf, 0xa4, 0x74, 0x48, 0x33, 0x36, 0x53, 0x78, 0x93, 0xa5, 0xac, 0xa9, - 0x9a, 0x86, 0x6f, 0x5d, 0x52, 0x51, 0x56, 0x64, 0x7b, 0x98, 0xaf, 0xb8, 0xb1, 0x99, 0x7a, 0x64, - 0x5a, 0x5c, 0x66, 0x72, 0x82, 0x92, 0x9a, 0x98, 0x92, 0x88, 0x81, 0x77, 0x6b, 0x64, 0x62, 0x67, - 0x78, 0x8a, 0x94, 0x97, 0x92, 0x8d, 0x86, 0x7d, 0x77, 0x76, 0x78, 0x7c, 0x81, 0x81, 0x7e, 0x7b, - 0x7a, 0x7c, 0x7e, 0x7e, 0x84, 0x88, 0x89, 0x88, 0x85, 0x84, 0x85, 0x89, 0x8d, 0x8e, 0x87, 0x75, - 0x63, 0x57, 0x5a, 0x6a, 0x80, 0x93, 0x9d, 0x98, 0x8c, 0x83, 0x80, 0x85, 0x8c, 0x8b, 0x78, 0x59, - 0x3f, 0x39, 0x51, 0x81, 0xb8, 0xde, 0xe0, 0xc2, 0x92, 0x60, 0x3a, 0x2a, 0x33, 0x4e, 0x6e, 0x8f, - 0xa9, 0xba, 0xc1, 0xb6, 0x9b, 0x75, 0x51, 0x38, 0x38, 0x50, 0x76, 0xa0, 0xbd, 0xc9, 0xc0, 0xa5, - 0x84, 0x62, 0x4d, 0x44, 0x4a, 0x5d, 0x75, 0x8f, 0xa7, 0xb1, 0xab, 0x9c, 0x83, 0x6c, 0x5e, 0x5a, - 0x5f, 0x6d, 0x82, 0x94, 0xa0, 0xa3, 0x9c, 0x8f, 0x7c, 0x6a, 0x61, 0x5f, 0x65, 0x6c, 0x75, 0x7d, - 0x81, 0x84, 0x82, 0x85, 0x90, 0x99, 0xa0, 0x99, 0x88, 0x73, 0x65, 0x68, 0x73, 0x7c, 0x83, 0x85, - 0x86, 0x89, 0x88, 0x83, 0x7a, 0x72, 0x6f, 0x6d, 0x6c, 0x70, 0x7a, 0x8a, 0x98, 0x9d, 0x96, 0x8a, - 0x7d, 0x73, 0x6f, 0x70, 0x74, 0x7a, 0x82, 0x89, 0x8c, 0x89, 0x84, 0x80, 0x7c, 0x76, 0x6e, 0x66, - 0x67, 0x73, 0x81, 0x8f, 0x97, 0x93, 0x8c, 0x85, 0x81, 0x7a, 0x76, 0x79, 0x81, 0x87, 0x89, 0x87, - 0x82, 0x7b, 0x73, 0x6c, 0x69, 0x6c, 0x72, 0x82, 0x90, 0x96, 0x96, 0x94, 0x94, 0x96, 0x90, 0x82, - 0x73, 0x68, 0x65, 0x66, 0x68, 0x6b, 0x6f, 0x72, 0x73, 0x71, 0x6f, 0x7c, 0x99, 0xb2, 0xb6, 0xa5, - 0x8d, 0x77, 0x66, 0x5f, 0x60, 0x64, 0x6c, 0x81, 0x9c, 0xab, 0xa7, 0x97, 0x7b, 0x5b, 0x46, 0x45, - 0x55, 0x71, 0x8f, 0xa2, 0xac, 0xaa, 0x9e, 0x8e, 0x7c, 0x6f, 0x63, 0x61, 0x6e, 0x87, 0xa0, 0xad, - 0xa8, 0x96, 0x78, 0x5b, 0x4c, 0x49, 0x55, 0x69, 0x85, 0x9f, 0xab, 0xa7, 0x97, 0x82, 0x6d, 0x63, - 0x65, 0x71, 0x83, 0x92, 0x9c, 0x9c, 0x92, 0x82, 0x74, 0x6a, 0x63, 0x60, 0x64, 0x6d, 0x77, 0x7b, - 0x78, 0x6e, 0x69, 0x7b, 0xa2, 0xc6, 0xcf, 0xb0, 0x7a, 0x4f, 0x45, 0x59, 0x7c, 0x99, 0xa1, 0x9b, - 0x8e, 0x7a, 0x66, 0x58, 0x53, 0x5e, 0x70, 0x80, 0x87, 0x90, 0x9d, 0xa5, 0x9f, 0x87, 0x69, 0x57, - 0x56, 0x68, 0x81, 0x97, 0xab, 0xb1, 0xac, 0x9e, 0x7b, 0x55, 0x41, 0x46, 0x5b, 0x74, 0x90, 0xa5, - 0xaf, 0xac, 0x98, 0x79, 0x5d, 0x4d, 0x50, 0x62, 0x7e, 0x9c, 0xb1, 0xbe, 0xba, 0x9c, 0x6f, 0x48, - 0x38, 0x3e, 0x57, 0x78, 0x95, 0xac, 0xb6, 0xb3, 0xa2, 0x84, 0x63, 0x4d, 0x4b, 0x5b, 0x78, 0x99, - 0xb0, 0xb3, 0xa1, 0x7e, 0x5a, 0x45, 0x4c, 0x65, 0x81, 0x8f, 0x94, 0x9b, 0xa2, 0x9d, 0x8b, 0x73, - 0x5c, 0x48, 0x46, 0x5b, 0x7e, 0xa6, 0xc0, 0xc3, 0xa7, 0x7d, 0x5e, 0x57, 0x62, 0x73, 0x82, 0x8a, - 0x91, 0x92, 0x8f, 0x83, 0x70, 0x63, 0x5e, 0x6a, 0x7c, 0x92, 0x9e, 0xa2, 0x9d, 0x89, 0x6f, 0x60, - 0x61, 0x6f, 0x80, 0x8e, 0x98, 0x9c, 0x9a, 0x91, 0x82, 0x6c, 0x5d, 0x5c, 0x65, 0x74, 0x85, 0x91, - 0x96, 0x93, 0x8e, 0x83, 0x77, 0x70, 0x6a, 0x6a, 0x75, 0x84, 0x90, 0x9a, 0x9d, 0x95, 0x89, 0x77, - 0x68, 0x61, 0x5a, 0x5d, 0x6c, 0x86, 0xa5, 0xbc, 0xbd, 0xa1, 0x73, 0x50, 0x41, 0x4e, 0x70, 0x95, - 0xab, 0xac, 0xa0, 0x8e, 0x79, 0x69, 0x61, 0x5e, 0x62, 0x6f, 0x82, 0x93, 0xa0, 0xa5, 0x9d, 0x88, - 0x6b, 0x51, 0x46, 0x51, 0x70, 0x97, 0xb4, 0xbe, 0xb2, 0x96, 0x72, 0x57, 0x53, 0x5d, 0x6d, 0x81, - 0x8e, 0x93, 0x8d, 0x84, 0x7a, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x79, - 0x76, 0x76, 0x7b, 0x83, 0x87, 0x89, 0x87, 0x7e, 0x76, 0x73, 0x72, 0x76, 0x7b, 0x82, 0x88, 0x8d, - 0x93, 0x93, 0x8d, 0x82, 0x74, 0x6c, 0x6a, 0x6d, 0x76, 0x84, 0x8c, 0x8c, 0x82, 0x75, 0x71, 0x75, - 0x7c, 0x86, 0x8b, 0x8c, 0x89, 0x80, 0x79, 0x7c, 0x83, 0x89, 0x8d, 0x89, 0x81, 0x7b, 0x73, 0x6e, - 0x6d, 0x6e, 0x73, 0x80, 0x8f, 0x97, 0x96, 0x8f, 0x83, 0x76, 0x6d, 0x6a, 0x70, 0x7a, 0x88, 0x91, - 0x93, 0x92, 0x89, 0x7b, 0x72, 0x6d, 0x6d, 0x71, 0x7a, 0x87, 0x8f, 0x8f, 0x8f, 0x89, 0x80, 0x79, - 0x75, 0x72, 0x71, 0x70, 0x71, 0x79, 0x87, 0x98, 0xa5, 0xa6, 0x96, 0x79, 0x5a, 0x4d, 0x59, 0x74, - 0x94, 0xa6, 0xa2, 0x91, 0x7a, 0x67, 0x61, 0x67, 0x72, 0x7e, 0x89, 0x90, 0x94, 0x8f, 0x88, 0x7e, - 0x74, 0x6d, 0x6c, 0x74, 0x82, 0x8d, 0x97, 0x95, 0x86, 0x73, 0x68, 0x68, 0x71, 0x82, 0x8d, 0x94, - 0x92, 0x8a, 0x81, 0x77, 0x70, 0x6c, 0x6d, 0x75, 0x81, 0x8b, 0x91, 0x8f, 0x86, 0x7b, 0x74, 0x70, - 0x70, 0x77, 0x82, 0x88, 0x8c, 0x8b, 0x85, 0x7b, 0x74, 0x70, 0x6f, 0x73, 0x7c, 0x85, 0x8b, 0x91, - 0x8e, 0x88, 0x81, 0x76, 0x72, 0x71, 0x73, 0x7b, 0x84, 0x89, 0x89, 0x87, 0x86, 0x81, 0x7a, 0x76, - 0x77, 0x77, 0x76, 0x77, 0x7a, 0x7c, 0x7d, 0x81, 0x87, 0x8b, 0x8c, 0x87, 0x81, 0x7a, 0x73, 0x70, - 0x72, 0x79, 0x82, 0x86, 0x86, 0x83, 0x80, 0x80, 0x83, 0x85, 0x80, 0x7b, 0x7c, 0x7e, 0x85, 0x88, - 0x84, 0x79, 0x67, 0x4f, 0x43, 0x55, 0x8c, 0xca, 0xef, 0xe4, 0x9c, 0x44, 0x13, 0x1c, 0x55, 0x99, - 0xbf, 0xc4, 0xb0, 0x94, 0x77, 0x5c, 0x4b, 0x4a, 0x5c, 0x75, 0x8e, 0x9f, 0xa9, 0xae, 0xa5, 0x88, - 0x60, 0x48, 0x4c, 0x6b, 0x91, 0xa8, 0xac, 0x9e, 0x8b, 0x77, 0x69, 0x63, 0x67, 0x73, 0x80, 0x8a, - 0x8f, 0x87, 0x7d, 0x7a, 0x78, 0x76, 0x77, 0x83, 0x8c, 0x8d, 0x89, 0x81, 0x77, 0x73, 0x76, 0x7d, - 0x88, 0x8c, 0x8c, 0x8d, 0x8a, 0x81, 0x73, 0x6c, 0x6f, 0x76, 0x81, 0x8b, 0x92, 0x92, 0x8a, 0x7a, - 0x69, 0x64, 0x6c, 0x7e, 0x8f, 0x97, 0x96, 0x90, 0x88, 0x7a, 0x6b, 0x65, 0x6a, 0x74, 0x80, 0x8a, - 0x95, 0x98, 0x92, 0x88, 0x78, 0x68, 0x5c, 0x5a, 0x67, 0x81, 0x96, 0xa8, 0xaf, 0xa4, 0x89, 0x6a, - 0x57, 0x52, 0x5c, 0x72, 0x90, 0xa5, 0xac, 0xa5, 0x90, 0x76, 0x60, 0x53, 0x5c, 0x72, 0x8c, 0x9f, - 0xa7, 0xa2, 0x91, 0x7d, 0x6b, 0x60, 0x62, 0x6e, 0x81, 0x91, 0x97, 0x94, 0x8e, 0x83, 0x77, 0x71, - 0x72, 0x74, 0x74, 0x72, 0x6e, 0x6a, 0x6f, 0x82, 0x9e, 0xb6, 0xb8, 0x9f, 0x6f, 0x44, 0x37, 0x50, - 0x85, 0xb3, 0xc1, 0xaa, 0x7d, 0x58, 0x4f, 0x5a, 0x72, 0x89, 0x91, 0x90, 0x8d, 0x89, 0x83, 0x79, - 0x71, 0x6d, 0x6f, 0x77, 0x86, 0x95, 0xa2, 0xa1, 0x8f, 0x75, 0x5f, 0x59, 0x63, 0x75, 0x8a, 0x98, - 0x97, 0x8d, 0x81, 0x75, 0x72, 0x73, 0x75, 0x7b, 0x7d, 0x80, 0x88, 0x90, 0x91, 0x88, 0x7c, 0x74, - 0x72, 0x76, 0x7e, 0x87, 0x89, 0x86, 0x81, 0x7b, 0x78, 0x75, 0x75, 0x7b, 0x83, 0x85, 0x83, 0x7e, - 0x7b, 0x77, 0x76, 0x79, 0x7e, 0x86, 0x8d, 0x92, 0x8f, 0x85, 0x75, 0x6a, 0x69, 0x6d, 0x77, 0x85, - 0x8b, 0x86, 0x7d, 0x77, 0x7a, 0x81, 0x86, 0x88, 0x81, 0x79, 0x71, 0x6c, 0x6f, 0x79, 0x86, 0x8c, - 0x89, 0x83, 0x81, 0x82, 0x84, 0x81, 0x78, 0x71, 0x74, 0x80, 0x8e, 0x96, 0x92, 0x86, 0x75, 0x6a, - 0x69, 0x73, 0x85, 0x92, 0x95, 0x8e, 0x81, 0x75, 0x72, 0x74, 0x79, 0x81, 0x86, 0x8c, 0x90, 0x90, - 0x8a, 0x7d, 0x6e, 0x5e, 0x53, 0x59, 0x72, 0x9e, 0xc5, 0xd3, 0xbc, 0x82, 0x41, 0x1c, 0x2a, 0x62, - 0xab, 0xdb, 0xd9, 0xad, 0x6c, 0x3b, 0x32, 0x45, 0x69, 0x8e, 0xa2, 0xab, 0xa7, 0x9a, 0x83, 0x6a, - 0x56, 0x50, 0x5c, 0x75, 0x94, 0xac, 0xb4, 0xa4, 0x84, 0x61, 0x4b, 0x50, 0x67, 0x85, 0x9b, 0xa4, - 0x9e, 0x8b, 0x73, 0x65, 0x5e, 0x65, 0x77, 0x8a, 0x97, 0x9d, 0x97, 0x8a, 0x78, 0x6a, 0x65, 0x6b, - 0x78, 0x89, 0x93, 0x93, 0x8c, 0x80, 0x74, 0x6e, 0x6f, 0x76, 0x81, 0x8b, 0x91, 0x90, 0x85, 0x78, - 0x6f, 0x6e, 0x73, 0x7c, 0x87, 0x8e, 0x8f, 0x8a, 0x81, 0x77, 0x71, 0x73, 0x7b, 0x83, 0x88, 0x8a, - 0x86, 0x7e, 0x7a, 0x7a, 0x7c, 0x7b, 0x79, 0x7a, 0x7e, 0x84, 0x89, 0x8b, 0x84, 0x7a, 0x75, 0x77, - 0x7b, 0x7a, 0x76, 0x76, 0x79, 0x7d, 0x82, 0x86, 0x8c, 0x8b, 0x85, 0x81, 0x7c, 0x7a, 0x7d, 0x84, - 0x86, 0x85, 0x84, 0x83, 0x83, 0x82, 0x7c, 0x78, 0x76, 0x77, 0x7b, 0x80, 0x87, 0x8a, 0x86, 0x82, - 0x7c, 0x78, 0x77, 0x76, 0x77, 0x76, 0x75, 0x7a, 0x88, 0x98, 0xa5, 0xa7, 0x95, 0x71, 0x51, 0x47, - 0x58, 0x7e, 0xa9, 0xc3, 0xbb, 0x97, 0x67, 0x45, 0x3f, 0x53, 0x79, 0x9a, 0xa7, 0xa4, 0x96, 0x88, - 0x7a, 0x6f, 0x69, 0x67, 0x6e, 0x7c, 0x8e, 0x9b, 0x9b, 0x90, 0x7d, 0x6b, 0x63, 0x68, 0x77, 0x88, - 0x93, 0x96, 0x8d, 0x7e, 0x72, 0x6c, 0x6e, 0x74, 0x7e, 0x87, 0x8d, 0x90, 0x8d, 0x83, 0x7a, 0x74, - 0x73, 0x79, 0x81, 0x86, 0x86, 0x83, 0x7d, 0x79, 0x7a, 0x7e, 0x83, 0x85, 0x84, 0x82, 0x82, 0x7e, - 0x7a, 0x76, 0x75, 0x7a, 0x80, 0x85, 0x89, 0x8a, 0x85, 0x7c, 0x74, 0x71, 0x75, 0x7e, 0x89, 0x8d, - 0x8d, 0x86, 0x7a, 0x74, 0x73, 0x76, 0x7c, 0x82, 0x8b, 0x92, 0x92, 0x8a, 0x7a, 0x6f, 0x6d, 0x72, - 0x75, 0x79, 0x82, 0x89, 0x89, 0x84, 0x7e, 0x7d, 0x7d, 0x7d, 0x80, 0x84, 0x85, 0x7d, 0x70, 0x57, - 0x42, 0x4b, 0x7e, 0xc4, 0xef, 0xde, 0x9b, 0x4c, 0x1f, 0x2c, 0x5b, 0x93, 0xb7, 0xc2, 0xbd, 0x9d, - 0x6b, 0x46, 0x40, 0x54, 0x6c, 0x7d, 0x8f, 0xa3, 0xae, 0xa6, 0x89, 0x62, 0x4a, 0x4a, 0x63, 0x8b, - 0xab, 0xb8, 0xae, 0x92, 0x6f, 0x56, 0x50, 0x5b, 0x74, 0x91, 0xa1, 0x9e, 0x90, 0x80, 0x6e, 0x5e, - 0x58, 0x61, 0x73, 0x8c, 0xa5, 0xac, 0x9a, 0x7c, 0x68, 0x60, 0x5e, 0x6a, 0x86, 0xa3, 0xab, 0x9f, - 0x8e, 0x7c, 0x6e, 0x67, 0x6c, 0x74, 0x7a, 0x84, 0x8b, 0x86, 0x7a, 0x73, 0x76, 0x7a, 0x80, 0x87, - 0x8d, 0x8e, 0x87, 0x7c, 0x76, 0x75, 0x7a, 0x84, 0x8d, 0x90, 0x8d, 0x81, 0x72, 0x6b, 0x6a, 0x72, - 0x80, 0x89, 0x8d, 0x8b, 0x85, 0x79, 0x6e, 0x6a, 0x70, 0x7d, 0x89, 0x93, 0x96, 0x93, 0x87, 0x79, - 0x71, 0x6e, 0x72, 0x7c, 0x86, 0x8a, 0x8a, 0x85, 0x7e, 0x7b, 0x77, 0x77, 0x7a, 0x7a, 0x7a, 0x7b, - 0x7c, 0x7b, 0x7d, 0x7d, 0x81, 0x84, 0x86, 0x85, 0x82, 0x7c, 0x7a, 0x78, 0x7a, 0x80, 0x87, 0x8b, - 0x89, 0x7e, 0x6e, 0x61, 0x5f, 0x6f, 0x8d, 0xa9, 0xb3, 0xa1, 0x78, 0x4f, 0x40, 0x55, 0x81, 0xa9, - 0xb8, 0xa9, 0x89, 0x6a, 0x5e, 0x63, 0x6d, 0x79, 0x84, 0x8c, 0x91, 0x93, 0x90, 0x87, 0x78, 0x6b, - 0x65, 0x66, 0x73, 0x8c, 0x9e, 0xa1, 0x91, 0x78, 0x67, 0x65, 0x6d, 0x7a, 0x89, 0x8f, 0x8f, 0x8a, - 0x83, 0x7a, 0x72, 0x6b, 0x6c, 0x73, 0x7e, 0x8a, 0x92, 0x94, 0x8b, 0x7d, 0x71, 0x6b, 0x6d, 0x77, - 0x85, 0x8d, 0x8d, 0x86, 0x83, 0x7e, 0x78, 0x75, 0x75, 0x7b, 0x82, 0x89, 0x8e, 0x8e, 0x86, 0x79, - 0x6e, 0x6a, 0x6e, 0x79, 0x87, 0x8f, 0x8f, 0x87, 0x7a, 0x74, 0x72, 0x76, 0x80, 0x87, 0x8a, 0x89, - 0x85, 0x7c, 0x75, 0x6f, 0x6e, 0x73, 0x7c, 0x86, 0x8b, 0x89, 0x7e, 0x72, 0x69, 0x6b, 0x77, 0x85, - 0x90, 0x96, 0x93, 0x89, 0x7d, 0x76, 0x71, 0x70, 0x76, 0x83, 0x8d, 0x91, 0x8d, 0x87, 0x7e, 0x75, - 0x6f, 0x70, 0x76, 0x7c, 0x83, 0x86, 0x86, 0x85, 0x82, 0x7e, 0x7a, 0x75, 0x70, 0x6f, 0x77, 0x85, - 0x97, 0xa4, 0xa7, 0x97, 0x79, 0x5e, 0x52, 0x5e, 0x7a, 0x98, 0xa7, 0x9e, 0x81, 0x64, 0x59, 0x65, - 0x81, 0x9b, 0xa0, 0x94, 0x7e, 0x6e, 0x6a, 0x6b, 0x70, 0x74, 0x77, 0x83, 0x94, 0xa6, 0xae, 0xa2, - 0x86, 0x66, 0x54, 0x53, 0x62, 0x7c, 0x97, 0xa4, 0xa0, 0x90, 0x7b, 0x6c, 0x67, 0x6a, 0x71, 0x77, - 0x7c, 0x85, 0x8c, 0x8d, 0x86, 0x7c, 0x72, 0x70, 0x77, 0x85, 0x92, 0x94, 0x8b, 0x7d, 0x6f, 0x6c, - 0x70, 0x7a, 0x87, 0x8b, 0x8a, 0x84, 0x7a, 0x73, 0x71, 0x74, 0x7a, 0x84, 0x8e, 0x94, 0x91, 0x88, - 0x78, 0x69, 0x65, 0x6b, 0x77, 0x85, 0x8e, 0x91, 0x8e, 0x89, 0x83, 0x7d, 0x77, 0x71, 0x70, 0x74, - 0x7e, 0x89, 0x8d, 0x8a, 0x85, 0x81, 0x7b, 0x77, 0x7a, 0x80, 0x82, 0x7e, 0x7a, 0x79, 0x7b, 0x7d, - 0x82, 0x88, 0x8c, 0x8d, 0x89, 0x80, 0x6f, 0x58, 0x43, 0x43, 0x6a, 0xad, 0xe6, 0xeb, 0xb4, 0x60, - 0x24, 0x23, 0x50, 0x87, 0xad, 0xba, 0xb5, 0xa5, 0x8d, 0x6f, 0x55, 0x47, 0x4b, 0x5e, 0x7b, 0x9b, - 0xae, 0xb1, 0xa2, 0x81, 0x5b, 0x44, 0x47, 0x69, 0x96, 0xb3, 0xb7, 0x9f, 0x82, 0x6e, 0x66, 0x66, - 0x6e, 0x7c, 0x8d, 0x97, 0x99, 0x92, 0x81, 0x69, 0x59, 0x57, 0x64, 0x7b, 0x95, 0xa4, 0xa4, 0x96, - 0x7e, 0x67, 0x5b, 0x5b, 0x6b, 0x83, 0x94, 0x9c, 0x9e, 0x9c, 0x8f, 0x7b, 0x6b, 0x64, 0x6b, 0x77, - 0x89, 0x95, 0x95, 0x8a, 0x78, 0x6b, 0x68, 0x70, 0x7b, 0x86, 0x8d, 0x90, 0x8e, 0x8a, 0x84, 0x79, - 0x70, 0x6d, 0x70, 0x7a, 0x87, 0x91, 0x94, 0x8e, 0x85, 0x79, 0x72, 0x70, 0x6f, 0x73, 0x79, 0x7e, - 0x82, 0x87, 0x8d, 0x90, 0x8b, 0x81, 0x76, 0x71, 0x72, 0x7d, 0x8c, 0x93, 0x92, 0x89, 0x7e, 0x77, - 0x77, 0x7c, 0x83, 0x85, 0x84, 0x81, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x80, 0x83, 0x82, 0x82, 0x82, - 0x81, 0x7d, 0x78, 0x74, 0x76, 0x7c, 0x87, 0x8f, 0x94, 0x92, 0x8a, 0x7b, 0x69, 0x5b, 0x53, 0x5c, - 0x76, 0x9e, 0xc3, 0xce, 0xb1, 0x74, 0x37, 0x1b, 0x36, 0x7a, 0xbb, 0xdd, 0xc7, 0x8d, 0x5b, 0x48, - 0x58, 0x72, 0x81, 0x7b, 0x75, 0x81, 0x9a, 0xaf, 0xab, 0x8a, 0x5f, 0x43, 0x44, 0x63, 0x8f, 0xab, - 0xb1, 0xa2, 0x8a, 0x70, 0x60, 0x5f, 0x68, 0x77, 0x85, 0x8d, 0x90, 0x90, 0x8c, 0x84, 0x77, 0x6a, - 0x64, 0x69, 0x79, 0x8d, 0x9a, 0x99, 0x8d, 0x7a, 0x6d, 0x69, 0x70, 0x7e, 0x8a, 0x8f, 0x8e, 0x8b, - 0x88, 0x81, 0x78, 0x71, 0x71, 0x78, 0x84, 0x8f, 0x94, 0x91, 0x83, 0x70, 0x66, 0x69, 0x77, 0x88, - 0x93, 0x96, 0x90, 0x84, 0x76, 0x6d, 0x6b, 0x70, 0x78, 0x84, 0x8f, 0x97, 0x99, 0x93, 0x83, 0x71, - 0x62, 0x5b, 0x62, 0x71, 0x86, 0x94, 0x97, 0x93, 0x87, 0x78, 0x6f, 0x6c, 0x6f, 0x74, 0x7e, 0x87, - 0x8b, 0x8c, 0x88, 0x84, 0x7e, 0x7e, 0x83, 0x84, 0x82, 0x78, 0x6e, 0x67, 0x6a, 0x7c, 0x96, 0xad, - 0xb1, 0x9b, 0x74, 0x4d, 0x41, 0x59, 0x82, 0xa9, 0xb5, 0xa1, 0x80, 0x65, 0x62, 0x72, 0x87, 0x8c, - 0x7c, 0x6d, 0x6c, 0x82, 0x9e, 0xad, 0xa1, 0x7b, 0x57, 0x49, 0x5b, 0x81, 0xa0, 0xa7, 0x9a, 0x82, - 0x72, 0x73, 0x79, 0x81, 0x81, 0x79, 0x74, 0x76, 0x81, 0x8d, 0x91, 0x8b, 0x7c, 0x71, 0x6f, 0x79, - 0x88, 0x90, 0x8e, 0x84, 0x77, 0x6f, 0x70, 0x7b, 0x87, 0x8e, 0x8b, 0x86, 0x83, 0x82, 0x81, 0x7c, - 0x77, 0x73, 0x74, 0x7d, 0x89, 0x91, 0x93, 0x8a, 0x7a, 0x6e, 0x6b, 0x6f, 0x79, 0x83, 0x87, 0x85, - 0x83, 0x82, 0x83, 0x83, 0x80, 0x7a, 0x75, 0x75, 0x7b, 0x84, 0x8a, 0x8c, 0x87, 0x80, 0x7a, 0x7a, - 0x7e, 0x82, 0x83, 0x7d, 0x77, 0x76, 0x7a, 0x84, 0x8c, 0x8e, 0x8a, 0x81, 0x7a, 0x77, 0x78, 0x7a, - 0x7b, 0x7c, 0x7b, 0x80, 0x85, 0x87, 0x88, 0x85, 0x80, 0x7b, 0x77, 0x74, 0x73, 0x74, 0x79, 0x7e, - 0x86, 0x8f, 0x94, 0x90, 0x83, 0x73, 0x66, 0x66, 0x71, 0x80, 0x8d, 0x8e, 0x88, 0x80, 0x7b, 0x7c, - 0x7e, 0x7e, 0x7b, 0x77, 0x75, 0x79, 0x82, 0x8a, 0x8e, 0x8c, 0x86, 0x7b, 0x74, 0x73, 0x77, 0x80, - 0x85, 0x86, 0x85, 0x83, 0x82, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x80, 0x7c, - 0x79, 0x78, 0x79, 0x7c, 0x82, 0x86, 0x87, 0x83, 0x7d, 0x79, 0x77, 0x77, 0x79, 0x7c, 0x7e, 0x7e, - 0x80, 0x82, 0x83, 0x83, 0x82, 0x80, 0x7a, 0x78, 0x78, 0x79, 0x7d, 0x83, 0x84, 0x84, 0x83, 0x81, - 0x80, 0x7e, 0x7c, 0x7a, 0x7a, 0x7a, 0x81, 0x87, 0x8c, 0x8b, 0x85, 0x7e, 0x78, 0x75, 0x76, 0x7a, - 0x7d, 0x81, 0x84, 0x86, 0x87, 0x86, 0x82, 0x7e, 0x79, 0x78, 0x78, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, - 0x85, 0x86, 0x87, 0x84, 0x7d, 0x77, 0x74, 0x76, 0x79, 0x7e, 0x84, 0x89, 0x8b, 0x89, 0x82, 0x7c, - 0x7a, 0x79, 0x78, 0x79, 0x7d, 0x85, 0x8b, 0x8d, 0x8c, 0x86, 0x80, 0x7b, 0x75, 0x74, 0x75, 0x79, - 0x80, 0x85, 0x8c, 0x8e, 0x89, 0x82, 0x77, 0x75, 0x77, 0x7d, 0x83, 0x82, 0x7d, 0x78, 0x76, 0x79, - 0x81, 0x8a, 0x90, 0x8c, 0x80, 0x74, 0x71, 0x74, 0x7d, 0x84, 0x83, 0x80, 0x79, 0x7a, 0x80, 0x85, - 0x89, 0x87, 0x80, 0x73, 0x70, 0x76, 0x80, 0x89, 0x8b, 0x85, 0x80, 0x7d, 0x7e, 0x82, 0x82, 0x7d, - 0x78, 0x75, 0x78, 0x80, 0x86, 0x8c, 0x8e, 0x88, 0x7d, 0x74, 0x6f, 0x72, 0x78, 0x80, 0x85, 0x88, - 0x87, 0x83, 0x80, 0x80, 0x7d, 0x7a, 0x77, 0x79, 0x7d, 0x81, 0x84, 0x84, 0x82, 0x7e, 0x7a, 0x77, - 0x78, 0x7c, 0x81, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7d, 0x7b, - 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x79, 0x77, 0x78, 0x7b, 0x7d, 0x80, - 0x81, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x77, 0x75, 0x77, 0x7a, 0x7c, 0x7e, 0x80, 0x84, 0x88, - 0x88, 0x85, 0x7c, 0x77, 0x76, 0x79, 0x81, 0x89, 0x8a, 0x85, 0x7d, 0x77, 0x78, 0x80, 0x86, 0x8a, - 0x87, 0x7d, 0x79, 0x7a, 0x82, 0x8a, 0x8a, 0x85, 0x7a, 0x72, 0x71, 0x76, 0x80, 0x86, 0x86, 0x82, - 0x7a, 0x79, 0x80, 0x85, 0x88, 0x85, 0x7c, 0x76, 0x74, 0x77, 0x7e, 0x86, 0x89, 0x87, 0x80, 0x78, - 0x77, 0x7b, 0x81, 0x82, 0x7d, 0x7b, 0x7c, 0x80, 0x83, 0x85, 0x82, 0x7b, 0x76, 0x75, 0x78, 0x80, - 0x85, 0x87, 0x84, 0x80, 0x7c, 0x79, 0x7b, 0x7d, 0x82, 0x83, 0x80, 0x7c, 0x7b, 0x7e, 0x81, 0x80, - 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x86, 0x86, 0x83, 0x7d, 0x7b, 0x78, 0x78, 0x7a, 0x7c, 0x83, 0x87, - 0x8a, 0x8b, 0x87, 0x82, 0x7d, 0x7a, 0x79, 0x77, 0x77, 0x7b, 0x82, 0x87, 0x87, 0x84, 0x82, 0x7e, - 0x7a, 0x78, 0x77, 0x77, 0x79, 0x7b, 0x80, 0x86, 0x8b, 0x8c, 0x88, 0x83, 0x7d, 0x79, 0x76, 0x72, - 0x71, 0x75, 0x7b, 0x85, 0x8d, 0x90, 0x8c, 0x84, 0x7b, 0x77, 0x78, 0x7b, 0x7e, 0x80, 0x80, 0x7d, - 0x7d, 0x81, 0x85, 0x88, 0x88, 0x86, 0x82, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7c, 0x7b, 0x7d, 0x82, - 0x88, 0x8b, 0x89, 0x83, 0x7b, 0x76, 0x74, 0x75, 0x79, 0x80, 0x83, 0x84, 0x84, 0x85, 0x87, 0x85, - 0x82, 0x7c, 0x78, 0x76, 0x77, 0x7a, 0x80, 0x85, 0x85, 0x82, 0x7e, 0x7c, 0x7c, 0x7e, 0x7d, 0x7b, - 0x79, 0x78, 0x7a, 0x7e, 0x84, 0x88, 0x88, 0x85, 0x81, 0x7b, 0x78, 0x7a, 0x7c, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7c, 0x7c, 0x7e, 0x83, 0x86, 0x88, 0x8a, 0x87, 0x82, 0x7b, 0x77, 0x77, 0x77, 0x78, 0x7c, - 0x84, 0x8a, 0x8e, 0x8e, 0x89, 0x81, 0x77, 0x72, 0x71, 0x74, 0x7b, 0x83, 0x89, 0x8a, 0x88, 0x83, - 0x7d, 0x7b, 0x7a, 0x78, 0x76, 0x77, 0x7c, 0x82, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x79, 0x78, 0x7a, - 0x7e, 0x82, 0x84, 0x84, 0x86, 0x86, 0x84, 0x82, 0x7d, 0x7a, 0x77, 0x78, 0x7d, 0x84, 0x89, 0x89, - 0x84, 0x7e, 0x7a, 0x79, 0x7c, 0x82, 0x85, 0x83, 0x7b, 0x77, 0x77, 0x7d, 0x83, 0x85, 0x86, 0x82, - 0x80, 0x80, 0x81, 0x84, 0x83, 0x7e, 0x79, 0x74, 0x74, 0x7a, 0x84, 0x8a, 0x8b, 0x87, 0x7e, 0x79, - 0x77, 0x7a, 0x7e, 0x81, 0x81, 0x7e, 0x7c, 0x7c, 0x82, 0x87, 0x87, 0x85, 0x80, 0x7a, 0x78, 0x79, - 0x7d, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7e, 0x82, 0x84, 0x83, 0x82, 0x7e, 0x7b, 0x7b, 0x7d, 0x82, - 0x84, 0x83, 0x7e, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x81, 0x80, 0x81, 0x82, 0x83, - 0x81, 0x81, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x79, 0x7d, 0x82, 0x84, 0x84, 0x82, 0x81, - 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7c, 0x7b, 0x7a, 0x7b, 0x7e, 0x84, 0x88, 0x88, 0x84, 0x7c, 0x74, 0x6f, 0x70, 0x77, - 0x80, 0x87, 0x88, 0x87, 0x83, 0x80, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x78, 0x7d, 0x86, 0x8b, 0x8d, - 0x8b, 0x83, 0x79, 0x72, 0x74, 0x78, 0x7d, 0x82, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x80, 0x7a, - 0x76, 0x74, 0x76, 0x7d, 0x85, 0x8b, 0x8b, 0x88, 0x82, 0x7b, 0x78, 0x78, 0x79, 0x7c, 0x7e, 0x80, - 0x81, 0x83, 0x83, 0x81, 0x7e, 0x7c, 0x79, 0x77, 0x79, 0x7d, 0x83, 0x86, 0x84, 0x80, 0x7d, 0x7b, - 0x7b, 0x7e, 0x82, 0x82, 0x81, 0x7e, 0x7b, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x7a, 0x7a, 0x7c, 0x81, 0x84, - 0x85, 0x85, 0x84, 0x80, 0x7c, 0x79, 0x77, 0x77, 0x7a, 0x7c, 0x80, 0x83, 0x83, 0x82, 0x7d, 0x7b, - 0x7a, 0x79, 0x7a, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7d, 0x80, 0x82, 0x80, 0x7c, 0x7c, 0x7c, - 0x7e, 0x81, 0x84, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7a, 0x77, 0x77, 0x7b, 0x83, 0x86, 0x85, 0x82, - 0x7d, 0x7b, 0x7c, 0x7d, 0x7d, 0x7c, 0x79, 0x78, 0x7b, 0x80, 0x85, 0x87, 0x87, 0x84, 0x80, 0x7b, - 0x78, 0x7a, 0x7e, 0x83, 0x85, 0x82, 0x80, 0x7e, 0x7e, 0x81, 0x84, 0x84, 0x81, 0x7e, 0x7b, 0x7b, - 0x80, 0x84, 0x84, 0x83, 0x80, 0x7d, 0x7d, 0x7e, 0x82, 0x84, 0x84, 0x83, 0x7e, 0x7a, 0x79, 0x7a, - 0x7d, 0x80, 0x82, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7a, 0x75, 0x72, 0x73, 0x78, 0x80, 0x86, 0x89, - 0x86, 0x81, 0x7c, 0x7b, 0x7a, 0x7a, 0x7c, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7d, 0x7c, - 0x7c, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x83, 0x83, - 0x82, 0x81, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x81, 0x7c, - 0x76, 0x71, 0x72, 0x78, 0x81, 0x87, 0x88, 0x86, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x81, 0x83, 0x83, - 0x81, 0x7e, 0x7d, 0x7c, 0x7d, 0x7b, 0x7a, 0x7c, 0x80, 0x86, 0x8c, 0x90, 0x8e, 0x85, 0x7a, 0x72, - 0x6f, 0x71, 0x77, 0x80, 0x89, 0x8d, 0x8e, 0x8e, 0x8b, 0x85, 0x78, 0x68, 0x67, 0x75, 0x95, 0xae, - 0xaa, 0x8c, 0x5f, 0x3f, 0x41, 0x66, 0x95, 0xb2, 0xb9, 0xad, 0x99, 0x87, 0x78, 0x6c, 0x5e, 0x53, - 0x51, 0x60, 0x79, 0x92, 0xa0, 0x9e, 0x92, 0x86, 0x7b, 0x79, 0x7a, 0x79, 0x75, 0x6c, 0x65, 0x67, - 0x73, 0x88, 0x9d, 0xa8, 0xa6, 0x97, 0x7b, 0x63, 0x53, 0x54, 0x63, 0x7b, 0x93, 0xa3, 0xa7, 0x9d, - 0x8a, 0x75, 0x64, 0x5e, 0x63, 0x73, 0x88, 0x98, 0x9f, 0x9a, 0x8f, 0x80, 0x70, 0x64, 0x60, 0x66, - 0x72, 0x87, 0x97, 0x9d, 0x9a, 0x8a, 0x78, 0x6c, 0x69, 0x71, 0x7d, 0x86, 0x88, 0x84, 0x7e, 0x7b, - 0x7c, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x79, 0x7a, - 0x7a, 0x79, 0x79, 0x7a, 0x7c, 0x80, 0x87, 0x90, 0x93, 0x8d, 0x81, 0x71, 0x6c, 0x6f, 0x79, 0x88, - 0x91, 0x92, 0x8c, 0x83, 0x7d, 0x7c, 0x7d, 0x7b, 0x77, 0x75, 0x76, 0x7b, 0x84, 0x89, 0x89, 0x84, - 0x7b, 0x75, 0x74, 0x77, 0x80, 0x87, 0x8a, 0x89, 0x82, 0x7a, 0x76, 0x74, 0x76, 0x7b, 0x80, 0x82, - 0x80, 0x7e, 0x83, 0x89, 0x89, 0x85, 0x7c, 0x71, 0x6b, 0x6f, 0x7a, 0x87, 0x8c, 0x8a, 0x84, 0x7e, - 0x7a, 0x78, 0x78, 0x78, 0x7b, 0x81, 0x85, 0x86, 0x86, 0x83, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, - 0x7c, 0x7c, 0x7c, 0x7d, 0x80, 0x85, 0x87, 0x86, 0x7e, 0x72, 0x6d, 0x73, 0x7e, 0x8a, 0x8b, 0x88, - 0x84, 0x84, 0x8a, 0x8a, 0x7e, 0x6f, 0x61, 0x60, 0x6f, 0x86, 0x96, 0x95, 0x87, 0x79, 0x73, 0x7b, - 0x8a, 0x91, 0x8b, 0x7d, 0x72, 0x72, 0x78, 0x7b, 0x71, 0x5a, 0x47, 0x4a, 0x6e, 0xa4, 0xd5, 0xe1, - 0xbd, 0x7e, 0x42, 0x25, 0x2e, 0x53, 0x7d, 0x9d, 0xab, 0xaf, 0xb0, 0xaa, 0x9a, 0x82, 0x62, 0x47, - 0x42, 0x55, 0x7c, 0xa6, 0xc0, 0xc6, 0xb4, 0x8c, 0x5e, 0x3d, 0x32, 0x3e, 0x5d, 0x87, 0xad, 0xc1, - 0xbc, 0xa5, 0x86, 0x67, 0x51, 0x48, 0x4e, 0x62, 0x80, 0x9a, 0xb0, 0xb7, 0xaa, 0x8f, 0x6d, 0x53, - 0x4a, 0x50, 0x63, 0x81, 0x99, 0xa8, 0xab, 0xa1, 0x8d, 0x74, 0x5f, 0x54, 0x56, 0x63, 0x77, 0x8b, - 0x9a, 0xa1, 0x9e, 0x96, 0x8b, 0x7e, 0x74, 0x68, 0x5f, 0x60, 0x69, 0x7d, 0x94, 0xa3, 0xa7, 0x97, - 0x7c, 0x63, 0x55, 0x59, 0x6c, 0x8c, 0xa8, 0xb3, 0xac, 0x96, 0x76, 0x5e, 0x58, 0x61, 0x72, 0x81, - 0x89, 0x8b, 0x8b, 0x88, 0x83, 0x7a, 0x72, 0x70, 0x76, 0x7d, 0x81, 0x81, 0x80, 0x81, 0x87, 0x8d, - 0x8c, 0x83, 0x75, 0x6c, 0x6b, 0x74, 0x84, 0x92, 0x97, 0x8f, 0x83, 0x79, 0x74, 0x75, 0x79, 0x80, - 0x84, 0x85, 0x88, 0x89, 0x88, 0x85, 0x81, 0x7a, 0x74, 0x6c, 0x65, 0x63, 0x6e, 0x89, 0xa5, 0xb7, - 0xb1, 0x90, 0x66, 0x47, 0x41, 0x5a, 0x81, 0xa1, 0xab, 0xa0, 0x91, 0x84, 0x7c, 0x7a, 0x74, 0x6b, - 0x65, 0x66, 0x72, 0x86, 0x96, 0x9d, 0x9b, 0x92, 0x85, 0x72, 0x64, 0x5d, 0x60, 0x6f, 0x86, 0x99, - 0x9f, 0x97, 0x87, 0x76, 0x6e, 0x6e, 0x73, 0x78, 0x7d, 0x7e, 0x82, 0x86, 0x8a, 0x8b, 0x88, 0x81, - 0x7a, 0x78, 0x79, 0x7c, 0x80, 0x84, 0x87, 0x88, 0x86, 0x82, 0x7b, 0x76, 0x76, 0x79, 0x81, 0x88, - 0x8a, 0x86, 0x80, 0x79, 0x76, 0x76, 0x77, 0x7b, 0x81, 0x84, 0x88, 0x89, 0x87, 0x82, 0x7c, 0x77, - 0x77, 0x7a, 0x7e, 0x82, 0x86, 0x86, 0x86, 0x86, 0x85, 0x80, 0x78, 0x73, 0x74, 0x7b, 0x85, 0x89, - 0x8a, 0x87, 0x82, 0x81, 0x83, 0x88, 0x89, 0x81, 0x6d, 0x54, 0x3f, 0x42, 0x65, 0x9d, 0xd1, 0xec, - 0xda, 0xa0, 0x55, 0x20, 0x13, 0x32, 0x6a, 0xa0, 0xc8, 0xd6, 0xc6, 0xa8, 0x82, 0x60, 0x4b, 0x46, - 0x55, 0x6a, 0x81, 0x93, 0xa1, 0xa9, 0xa9, 0x9f, 0x8b, 0x6c, 0x4e, 0x3b, 0x3f, 0x5e, 0x87, 0xaa, - 0xbd, 0xb9, 0xa2, 0x80, 0x5e, 0x4b, 0x49, 0x57, 0x72, 0x92, 0xa8, 0xaf, 0xa7, 0x94, 0x7e, 0x6c, - 0x62, 0x62, 0x68, 0x73, 0x80, 0x8e, 0x9c, 0xa3, 0x9e, 0x8f, 0x79, 0x65, 0x5b, 0x5b, 0x65, 0x77, - 0x88, 0x95, 0x9c, 0x9a, 0x90, 0x80, 0x71, 0x6b, 0x6d, 0x76, 0x80, 0x85, 0x82, 0x7b, 0x78, 0x7a, - 0x83, 0x89, 0x89, 0x85, 0x82, 0x81, 0x83, 0x87, 0x89, 0x87, 0x82, 0x7c, 0x78, 0x76, 0x74, 0x73, - 0x72, 0x76, 0x7d, 0x86, 0x8a, 0x89, 0x82, 0x7a, 0x76, 0x74, 0x75, 0x79, 0x81, 0x89, 0x8b, 0x8a, - 0x85, 0x7c, 0x76, 0x74, 0x79, 0x82, 0x89, 0x8b, 0x89, 0x85, 0x81, 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, - 0x80, 0x81, 0x82, 0x81, 0x7d, 0x7b, 0x7d, 0x81, 0x84, 0x87, 0x87, 0x82, 0x74, 0x68, 0x5f, 0x5f, - 0x6e, 0x8a, 0xa6, 0xb9, 0xb1, 0x92, 0x67, 0x46, 0x40, 0x57, 0x7b, 0x9d, 0xb0, 0xb2, 0xa3, 0x8c, - 0x74, 0x60, 0x57, 0x5b, 0x6d, 0x88, 0x9e, 0xa4, 0x98, 0x86, 0x77, 0x6f, 0x70, 0x76, 0x78, 0x77, - 0x77, 0x7a, 0x83, 0x8a, 0x8d, 0x8c, 0x86, 0x7e, 0x78, 0x71, 0x6c, 0x6d, 0x73, 0x7e, 0x8e, 0x99, - 0x98, 0x8e, 0x80, 0x73, 0x6c, 0x6e, 0x76, 0x80, 0x88, 0x8d, 0x8f, 0x8b, 0x84, 0x78, 0x70, 0x6f, - 0x76, 0x80, 0x89, 0x8d, 0x8b, 0x86, 0x81, 0x7c, 0x7a, 0x76, 0x75, 0x77, 0x7b, 0x82, 0x88, 0x8a, - 0x88, 0x84, 0x80, 0x7c, 0x78, 0x77, 0x78, 0x7c, 0x84, 0x8c, 0x91, 0x8e, 0x86, 0x7a, 0x71, 0x6d, - 0x72, 0x7a, 0x84, 0x8d, 0x93, 0x93, 0x8e, 0x83, 0x70, 0x58, 0x42, 0x3d, 0x51, 0x7b, 0xae, 0xd1, - 0xdd, 0xc6, 0x92, 0x5a, 0x2e, 0x1d, 0x2a, 0x56, 0x94, 0xcb, 0xeb, 0xe7, 0xc1, 0x83, 0x48, 0x24, - 0x23, 0x40, 0x6f, 0x9d, 0xbc, 0xc7, 0xbb, 0x9e, 0x7a, 0x5b, 0x47, 0x45, 0x55, 0x6d, 0x84, 0x96, - 0x9f, 0xa1, 0x9c, 0x92, 0x84, 0x71, 0x5f, 0x56, 0x5a, 0x66, 0x7b, 0x92, 0xa2, 0xad, 0xa9, 0x98, - 0x80, 0x66, 0x57, 0x53, 0x5e, 0x76, 0x93, 0xa7, 0xad, 0xa5, 0x91, 0x77, 0x61, 0x55, 0x56, 0x64, - 0x7a, 0x90, 0x9f, 0xa0, 0x95, 0x86, 0x78, 0x70, 0x6f, 0x71, 0x75, 0x79, 0x7c, 0x80, 0x82, 0x83, - 0x86, 0x8a, 0x8d, 0x8d, 0x88, 0x7d, 0x74, 0x6e, 0x6f, 0x7a, 0x8d, 0x9a, 0x9e, 0x97, 0x87, 0x72, - 0x5f, 0x58, 0x5e, 0x70, 0x88, 0x9c, 0xa8, 0xa2, 0x8c, 0x6f, 0x5a, 0x55, 0x5f, 0x74, 0x8d, 0xa2, - 0xa8, 0x9d, 0x88, 0x70, 0x60, 0x5c, 0x65, 0x7a, 0x90, 0x9e, 0xa2, 0x99, 0x8a, 0x7a, 0x6e, 0x69, - 0x6f, 0x79, 0x84, 0x8c, 0x8d, 0x89, 0x83, 0x7d, 0x7c, 0x7c, 0x80, 0x81, 0x80, 0x79, 0x6f, 0x67, - 0x65, 0x6c, 0x7e, 0x94, 0xa5, 0xa9, 0x9b, 0x81, 0x64, 0x50, 0x4e, 0x61, 0x80, 0x9f, 0xb2, 0xb2, - 0xa5, 0x8d, 0x6e, 0x56, 0x4e, 0x56, 0x6e, 0x8e, 0xa7, 0xb0, 0xa7, 0x92, 0x78, 0x65, 0x5b, 0x5d, - 0x69, 0x78, 0x89, 0x95, 0x9a, 0x93, 0x86, 0x77, 0x70, 0x6f, 0x73, 0x78, 0x7b, 0x7d, 0x7e, 0x81, - 0x84, 0x86, 0x88, 0x89, 0x87, 0x84, 0x7d, 0x76, 0x72, 0x72, 0x77, 0x7e, 0x8a, 0x90, 0x90, 0x8b, - 0x80, 0x76, 0x71, 0x6e, 0x72, 0x7a, 0x85, 0x8e, 0x90, 0x8c, 0x83, 0x76, 0x6e, 0x6c, 0x71, 0x79, - 0x84, 0x8c, 0x90, 0x8e, 0x88, 0x7e, 0x76, 0x71, 0x72, 0x78, 0x81, 0x87, 0x88, 0x87, 0x83, 0x80, - 0x7e, 0x7c, 0x7c, 0x7c, 0x7d, 0x81, 0x86, 0x87, 0x7e, 0x6e, 0x5d, 0x54, 0x5a, 0x71, 0x92, 0xb0, - 0xc0, 0xba, 0xa0, 0x7c, 0x56, 0x3b, 0x37, 0x48, 0x72, 0xa5, 0xcd, 0xdd, 0xcd, 0xa2, 0x6d, 0x40, - 0x29, 0x2e, 0x4c, 0x7c, 0xab, 0xcc, 0xd3, 0xbc, 0x93, 0x63, 0x41, 0x35, 0x3e, 0x5c, 0x81, 0xa0, - 0xb3, 0xb5, 0xa7, 0x8d, 0x72, 0x5f, 0x56, 0x5c, 0x6a, 0x7b, 0x8b, 0x94, 0x98, 0x97, 0x91, 0x88, - 0x7e, 0x75, 0x6f, 0x6e, 0x73, 0x78, 0x80, 0x88, 0x90, 0x96, 0x96, 0x8e, 0x82, 0x73, 0x67, 0x62, - 0x65, 0x71, 0x80, 0x8d, 0x9a, 0x9e, 0x97, 0x8a, 0x76, 0x67, 0x5f, 0x60, 0x6b, 0x7a, 0x89, 0x93, - 0x98, 0x95, 0x8e, 0x83, 0x78, 0x71, 0x6d, 0x6d, 0x73, 0x7c, 0x87, 0x90, 0x97, 0x99, 0x93, 0x88, - 0x77, 0x69, 0x62, 0x61, 0x6a, 0x77, 0x86, 0x92, 0x97, 0x94, 0x8a, 0x7a, 0x6e, 0x69, 0x6b, 0x74, - 0x80, 0x89, 0x8e, 0x8d, 0x8a, 0x83, 0x7b, 0x78, 0x76, 0x79, 0x7e, 0x83, 0x87, 0x88, 0x85, 0x82, - 0x7e, 0x7e, 0x82, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x7a, 0x76, 0x73, 0x73, 0x75, 0x7c, 0x85, 0x8e, - 0x94, 0x92, 0x87, 0x77, 0x69, 0x63, 0x66, 0x71, 0x82, 0x92, 0x9c, 0x9b, 0x92, 0x85, 0x73, 0x66, - 0x62, 0x68, 0x78, 0x8a, 0x96, 0x9c, 0x98, 0x8c, 0x7d, 0x6e, 0x66, 0x67, 0x6f, 0x7c, 0x8b, 0x94, - 0x95, 0x90, 0x85, 0x78, 0x70, 0x6d, 0x70, 0x76, 0x7d, 0x83, 0x86, 0x86, 0x85, 0x84, 0x83, 0x82, - 0x82, 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x79, 0x79, 0x7c, 0x81, 0x85, 0x88, 0x88, 0x86, 0x82, 0x7c, - 0x78, 0x76, 0x77, 0x7a, 0x80, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7d, 0x7e, 0x80, - 0x81, 0x7e, 0x7c, 0x7a, 0x7b, 0x7d, 0x81, 0x85, 0x86, 0x85, 0x82, 0x7c, 0x78, 0x77, 0x7a, 0x82, - 0x8a, 0x8e, 0x89, 0x79, 0x65, 0x54, 0x4e, 0x5c, 0x78, 0x9d, 0xbd, 0xcb, 0xc2, 0xa1, 0x74, 0x46, - 0x24, 0x23, 0x3f, 0x74, 0xb2, 0xde, 0xf0, 0xdc, 0xa9, 0x6c, 0x35, 0x13, 0x10, 0x35, 0x70, 0xac, - 0xdc, 0xee, 0xd7, 0xa6, 0x6b, 0x39, 0x1b, 0x1d, 0x3c, 0x6e, 0xa5, 0xca, 0xd6, 0xc8, 0xa3, 0x74, - 0x51, 0x3b, 0x3b, 0x51, 0x72, 0x94, 0xad, 0xb8, 0xad, 0x96, 0x7c, 0x65, 0x5c, 0x5e, 0x68, 0x78, - 0x88, 0x94, 0x9a, 0x97, 0x8d, 0x80, 0x74, 0x6e, 0x6d, 0x6d, 0x6f, 0x70, 0x72, 0x79, 0x84, 0x8c, - 0x93, 0x94, 0x90, 0x86, 0x77, 0x69, 0x5d, 0x5a, 0x5f, 0x70, 0x87, 0x9c, 0xa9, 0xaa, 0x9e, 0x8b, - 0x73, 0x5e, 0x55, 0x58, 0x68, 0x83, 0x9c, 0xad, 0xb0, 0xa1, 0x89, 0x6d, 0x57, 0x4c, 0x52, 0x65, - 0x81, 0x9b, 0xac, 0xae, 0x9f, 0x87, 0x6c, 0x58, 0x51, 0x59, 0x6b, 0x83, 0x9a, 0xa7, 0xa7, 0x9c, - 0x87, 0x70, 0x60, 0x59, 0x5b, 0x64, 0x74, 0x88, 0x9b, 0xaa, 0xaf, 0xa7, 0x94, 0x7b, 0x65, 0x56, - 0x4f, 0x55, 0x69, 0x86, 0xa3, 0xb8, 0xbc, 0xaf, 0x93, 0x73, 0x56, 0x44, 0x43, 0x52, 0x6e, 0x92, - 0xaf, 0xbd, 0xb8, 0xa2, 0x82, 0x61, 0x4b, 0x43, 0x4d, 0x65, 0x83, 0xa0, 0xb3, 0xb4, 0xa6, 0x8c, - 0x6f, 0x5a, 0x52, 0x57, 0x65, 0x7c, 0x95, 0xa6, 0xac, 0xa4, 0x91, 0x79, 0x66, 0x5c, 0x5f, 0x6b, - 0x7a, 0x8b, 0x98, 0x9c, 0x99, 0x8e, 0x7e, 0x72, 0x6a, 0x6a, 0x6f, 0x77, 0x7e, 0x86, 0x8b, 0x8c, - 0x8a, 0x85, 0x7e, 0x79, 0x76, 0x75, 0x76, 0x78, 0x7b, 0x82, 0x87, 0x8a, 0x8b, 0x88, 0x84, 0x7e, - 0x79, 0x74, 0x71, 0x72, 0x77, 0x81, 0x8a, 0x8f, 0x90, 0x8b, 0x82, 0x78, 0x72, 0x71, 0x74, 0x7b, - 0x84, 0x88, 0x85, 0x79, 0x69, 0x5c, 0x5a, 0x66, 0x80, 0x9d, 0xb4, 0xbf, 0xb5, 0x9b, 0x75, 0x4d, - 0x33, 0x2f, 0x47, 0x75, 0xa8, 0xd4, 0xe7, 0xdb, 0xb7, 0x7e, 0x44, 0x1e, 0x14, 0x29, 0x5d, 0x9b, - 0xd2, 0xed, 0xe5, 0xc0, 0x87, 0x4b, 0x20, 0x10, 0x22, 0x4f, 0x88, 0xbc, 0xdb, 0xdc, 0xc0, 0x90, - 0x5e, 0x39, 0x26, 0x33, 0x53, 0x7e, 0xac, 0xc7, 0xcc, 0xbb, 0x99, 0x74, 0x56, 0x47, 0x49, 0x5b, - 0x76, 0x93, 0xa8, 0xaf, 0xa8, 0x96, 0x81, 0x6c, 0x5f, 0x5b, 0x5f, 0x6b, 0x7b, 0x8c, 0x97, 0x9a, - 0x97, 0x8f, 0x85, 0x78, 0x6e, 0x66, 0x64, 0x67, 0x70, 0x7d, 0x8c, 0x96, 0x9b, 0x99, 0x91, 0x83, - 0x73, 0x66, 0x5e, 0x61, 0x6e, 0x83, 0x96, 0xa5, 0xa8, 0xa0, 0x8e, 0x76, 0x60, 0x51, 0x51, 0x5e, - 0x75, 0x93, 0xaa, 0xb1, 0xa8, 0x94, 0x74, 0x58, 0x48, 0x49, 0x5c, 0x7c, 0x9d, 0xb5, 0xba, 0xa8, - 0x86, 0x5d, 0x42, 0x38, 0x47, 0x6b, 0x9a, 0xc3, 0xd8, 0xcf, 0xad, 0x78, 0x47, 0x28, 0x22, 0x3d, - 0x6b, 0xa4, 0xd3, 0xe6, 0xda, 0xb5, 0x7b, 0x43, 0x1e, 0x17, 0x30, 0x61, 0x99, 0xc9, 0xe0, 0xd9, - 0xb8, 0x85, 0x4d, 0x29, 0x20, 0x34, 0x5e, 0x8f, 0xba, 0xd1, 0xd0, 0xb6, 0x8c, 0x61, 0x40, 0x35, - 0x41, 0x5f, 0x85, 0xa5, 0xba, 0xbb, 0xa9, 0x8c, 0x6f, 0x58, 0x4e, 0x53, 0x65, 0x7e, 0x97, 0xa2, - 0xa4, 0x9a, 0x88, 0x77, 0x68, 0x63, 0x68, 0x72, 0x81, 0x8c, 0x90, 0x8e, 0x86, 0x7b, 0x75, 0x73, - 0x75, 0x7b, 0x84, 0x89, 0x8a, 0x86, 0x7d, 0x74, 0x6f, 0x6f, 0x76, 0x82, 0x8e, 0x97, 0x9a, 0x94, - 0x89, 0x7a, 0x6e, 0x66, 0x66, 0x6f, 0x7e, 0x8d, 0x99, 0x9d, 0x99, 0x8e, 0x81, 0x70, 0x60, 0x53, - 0x4d, 0x53, 0x64, 0x7e, 0x9b, 0xb2, 0xbe, 0xba, 0xa7, 0x89, 0x63, 0x42, 0x2f, 0x34, 0x50, 0x78, - 0xa8, 0xcf, 0xe0, 0xdb, 0xbb, 0x8c, 0x56, 0x2c, 0x1a, 0x22, 0x46, 0x79, 0xac, 0xd2, 0xe4, 0xd7, - 0xb2, 0x80, 0x4c, 0x28, 0x1a, 0x27, 0x4b, 0x7b, 0xab, 0xcb, 0xd5, 0xc5, 0xa3, 0x78, 0x50, 0x36, - 0x30, 0x41, 0x60, 0x87, 0xa7, 0xbc, 0xbf, 0xb0, 0x95, 0x76, 0x5d, 0x51, 0x51, 0x5e, 0x72, 0x86, - 0x97, 0xa0, 0xa0, 0x98, 0x8a, 0x7b, 0x6f, 0x66, 0x65, 0x69, 0x71, 0x7b, 0x85, 0x8e, 0x93, 0x93, - 0x90, 0x89, 0x80, 0x76, 0x6f, 0x6b, 0x6b, 0x6f, 0x76, 0x81, 0x8a, 0x91, 0x95, 0x94, 0x8e, 0x85, - 0x7a, 0x71, 0x6d, 0x6e, 0x72, 0x79, 0x81, 0x86, 0x88, 0x87, 0x83, 0x7e, 0x7b, 0x78, 0x79, 0x7b, - 0x7e, 0x81, 0x82, 0x81, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x80, 0x83, 0x83, 0x81, 0x7a, 0x74, 0x70, - 0x72, 0x78, 0x82, 0x8c, 0x94, 0x99, 0x97, 0x8e, 0x7e, 0x6f, 0x62, 0x5e, 0x64, 0x72, 0x87, 0x98, - 0xa4, 0xa7, 0x9e, 0x8d, 0x77, 0x63, 0x56, 0x55, 0x5f, 0x72, 0x87, 0x9a, 0xa7, 0xa8, 0x9f, 0x8d, - 0x76, 0x62, 0x57, 0x58, 0x62, 0x72, 0x88, 0x97, 0xa0, 0xa0, 0x97, 0x88, 0x78, 0x6b, 0x64, 0x64, - 0x6b, 0x75, 0x83, 0x8c, 0x92, 0x95, 0x91, 0x8a, 0x82, 0x79, 0x74, 0x72, 0x73, 0x75, 0x7a, 0x7d, - 0x83, 0x86, 0x87, 0x88, 0x89, 0x89, 0x89, 0x88, 0x84, 0x7d, 0x77, 0x72, 0x70, 0x71, 0x77, 0x80, - 0x8a, 0x91, 0x96, 0x95, 0x8d, 0x82, 0x76, 0x6c, 0x66, 0x67, 0x70, 0x7c, 0x8a, 0x96, 0x9b, 0x99, - 0x90, 0x84, 0x75, 0x69, 0x64, 0x65, 0x6d, 0x7b, 0x8c, 0x98, 0x9b, 0x93, 0x80, 0x67, 0x52, 0x47, - 0x4b, 0x61, 0x82, 0xa5, 0xc2, 0xcb, 0xc1, 0xa4, 0x7b, 0x51, 0x35, 0x2e, 0x3b, 0x5b, 0x87, 0xb1, - 0xd1, 0xdc, 0xcf, 0xae, 0x84, 0x5a, 0x3b, 0x2f, 0x36, 0x50, 0x75, 0x9a, 0xb8, 0xc5, 0xbe, 0xa9, - 0x8b, 0x6b, 0x54, 0x48, 0x49, 0x57, 0x6b, 0x83, 0x95, 0x9d, 0x9c, 0x96, 0x8b, 0x80, 0x78, 0x74, - 0x72, 0x74, 0x76, 0x79, 0x7a, 0x7a, 0x7b, 0x7d, 0x82, 0x88, 0x8e, 0x92, 0x93, 0x91, 0x8b, 0x81, - 0x73, 0x67, 0x5f, 0x5f, 0x68, 0x79, 0x8d, 0x9e, 0xa9, 0xaa, 0x9f, 0x8a, 0x72, 0x5d, 0x52, 0x52, - 0x5e, 0x71, 0x84, 0x94, 0x9e, 0xa0, 0x9b, 0x8e, 0x7e, 0x71, 0x6b, 0x6d, 0x74, 0x7e, 0x89, 0x91, - 0x93, 0x8f, 0x84, 0x75, 0x68, 0x64, 0x68, 0x72, 0x80, 0x8d, 0x94, 0x94, 0x8e, 0x82, 0x73, 0x68, - 0x63, 0x68, 0x72, 0x80, 0x8d, 0x95, 0x98, 0x95, 0x8d, 0x80, 0x6f, 0x60, 0x58, 0x59, 0x62, 0x71, - 0x85, 0x96, 0xa2, 0xaa, 0xa9, 0xa0, 0x90, 0x7d, 0x6c, 0x5f, 0x5b, 0x5f, 0x6a, 0x78, 0x88, 0x95, - 0x9e, 0x9f, 0x9a, 0x91, 0x84, 0x79, 0x71, 0x6d, 0x6d, 0x71, 0x76, 0x7a, 0x7c, 0x7d, 0x7d, 0x7e, - 0x83, 0x87, 0x89, 0x8a, 0x88, 0x84, 0x7e, 0x79, 0x73, 0x6e, 0x6e, 0x71, 0x77, 0x7d, 0x84, 0x89, - 0x8d, 0x8d, 0x8b, 0x86, 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x82, - 0x84, 0x82, 0x80, 0x7b, 0x77, 0x75, 0x74, 0x77, 0x80, 0x8a, 0x93, 0x98, 0x95, 0x8d, 0x81, 0x73, - 0x68, 0x63, 0x64, 0x6b, 0x78, 0x87, 0x92, 0x97, 0x95, 0x90, 0x87, 0x7d, 0x76, 0x72, 0x74, 0x79, - 0x80, 0x85, 0x87, 0x86, 0x84, 0x81, 0x7b, 0x7a, 0x7b, 0x80, 0x84, 0x85, 0x7e, 0x72, 0x66, 0x5f, - 0x5e, 0x67, 0x76, 0x88, 0x99, 0xa5, 0xa9, 0xa3, 0x94, 0x81, 0x6f, 0x63, 0x5f, 0x62, 0x6b, 0x76, - 0x82, 0x8a, 0x8d, 0x8b, 0x88, 0x82, 0x7d, 0x7c, 0x7e, 0x82, 0x86, 0x89, 0x89, 0x84, 0x7d, 0x76, - 0x71, 0x6f, 0x70, 0x75, 0x7b, 0x83, 0x88, 0x8b, 0x8b, 0x88, 0x83, 0x7d, 0x79, 0x76, 0x75, 0x77, - 0x7a, 0x7d, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x80, 0x7e, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7d, - 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x79, 0x78, 0x78, 0x7b, 0x7e, 0x83, 0x86, 0x86, 0x85, - 0x82, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x85, 0x83, 0x81, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x83, 0x82, 0x81, 0x7f, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7a, 0x79, 0x79, - 0x7a, 0x7c, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x82, 0x82, 0x81, 0x7e, - 0x7d, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7e, - 0x81, 0x84, 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x85, 0x86, 0x84, - 0x81, 0x7c, 0x79, 0x79, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7e, 0x81, - 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7c, 0x7b, 0x7b, - 0x7b, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, - 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7e, - 0x7c, 0x7b, 0x7b, 0x7b, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, - 0x80, 0x82, 0x84, 0x85, 0x84, 0x83, 0x82, 0x7e, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, - 0x83, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7c, 0x7a, - 0x7a, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x83, 0x82, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x82, 0x84, 0x85, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x80, 0x84, 0x86, - 0x85, 0x83, 0x7e, 0x7c, 0x7b, 0x7a, 0x7a, 0x7d, 0x81, 0x84, 0x86, 0x88, 0x87, 0x83, 0x7e, 0x79, - 0x77, 0x77, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, - 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, - 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x80, 0x83, 0x84, 0x85, - 0x84, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7e, 0x82, 0x85, 0x85, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x78, - 0x7c, 0x80, 0x84, 0x86, 0x85, 0x84, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x82, 0x83, 0x83, - 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x80, - 0x81, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x83, 0x81, - 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, - 0x80, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x82, 0x82, - 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x80, 0x7d, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x83, 0x82, 0x7f, 0x7c, 0x7a, 0x78, 0x79, 0x7b, - 0x7d, 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x79, 0x78, 0x79, 0x7b, 0x7e, 0x82, 0x84, - 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7d, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, - 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7c, - 0x7b, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, - 0x7d, 0x80, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7b, 0x7a, 0x79, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x82, - 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x7e, 0x80, - 0x82, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, - 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x7c, 0x7a, 0x79, 0x7b, - 0x7d, 0x82, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x82, - 0x80, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, - 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x83, 0x83, 0x82, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x85, 0x88, 0x86, 0x82, 0x7c, 0x78, - 0x77, 0x7a, 0x7d, 0x81, 0x84, 0x87, 0x89, 0x87, 0x82, 0x7b, 0x79, 0x79, 0x7b, 0x7d, 0x7e, 0x80, - 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, - 0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, - 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7e, - 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, - 0x81, 0x82, 0x82, 0x80, 0x7d, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x83, 0x81, 0x7d, - 0x7b, 0x7a, 0x7b, 0x7c, 0x80, 0x82, 0x84, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7c, 0x7e, - 0x81, 0x83, 0x83, 0x83, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x83, 0x82, 0x80, - 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7d, 0x7c, - 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x83, - 0x83, 0x80, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7d, - 0x7e, 0x80, 0x81, 0x81, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, - 0x7c, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, - 0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x83, - 0x83, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x83, 0x84, 0x83, 0x81, 0x7e, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, - 0x7c, 0x7a, 0x78, 0x79, 0x80, 0x88, 0x8d, 0x8d, 0x86, 0x7b, 0x71, 0x6c, 0x6d, 0x73, 0x7b, 0x85, - 0x8c, 0x8e, 0x8d, 0x87, 0x80, 0x77, 0x71, 0x70, 0x72, 0x77, 0x7e, 0x86, 0x8a, 0x8c, 0x8b, 0x86, - 0x80, 0x79, 0x77, 0x75, 0x77, 0x7b, 0x7e, 0x83, 0x86, 0x87, 0x87, 0x85, 0x83, 0x7e, 0x78, 0x75, - 0x76, 0x7a, 0x81, 0x85, 0x88, 0x89, 0x86, 0x83, 0x7e, 0x7b, 0x78, 0x78, 0x7a, 0x7c, 0x80, 0x83, - 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x80, 0x7c, - 0x7a, 0x79, 0x79, 0x7a, 0x7d, 0x81, 0x85, 0x87, 0x88, 0x85, 0x80, 0x7a, 0x74, 0x71, 0x73, 0x79, - 0x80, 0x85, 0x88, 0x8a, 0x88, 0x84, 0x80, 0x7b, 0x78, 0x75, 0x75, 0x76, 0x7b, 0x81, 0x86, 0x89, - 0x89, 0x86, 0x81, 0x7b, 0x76, 0x73, 0x74, 0x79, 0x7e, 0x86, 0x8a, 0x8c, 0x88, 0x83, 0x7d, 0x79, - 0x78, 0x7c, 0x80, 0x82, 0x82, 0x80, 0x7c, 0x7b, 0x7a, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x82, 0x7c, - 0x78, 0x76, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7c, 0x7a, 0x7a, 0x7b, 0x7e, 0x81, - 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x82, 0x84, 0x84, 0x83, 0x80, 0x7d, - 0x7b, 0x7b, 0x7e, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7d, 0x80, 0x83, 0x85, 0x84, 0x82, - 0x7e, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x81, 0x81, 0x80, 0x81, 0x7e, 0x7b, - 0x79, 0x77, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x86, 0x85, 0x83, 0x80, 0x7c, 0x79, 0x77, 0x79, 0x7c, - 0x82, 0x85, 0x86, 0x85, 0x82, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, - 0x7d, 0x7e, 0x80, 0x83, 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7a, 0x7c, 0x80, 0x83, 0x85, - 0x85, 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x82, 0x83, 0x83, 0x82, 0x80, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7c, 0x7c, - 0x7b, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, - 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, - 0x80, 0x81, 0x82, 0x82, 0x80, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x80, 0x83, 0x83, 0x83, 0x82, 0x80, - 0x7d, 0x7b, 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7a, - 0x79, 0x7a, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x78, 0x78, 0x7a, 0x7d, - 0x81, 0x84, 0x85, 0x85, 0x84, 0x81, 0x7d, 0x7a, 0x79, 0x7a, 0x7b, 0x7e, 0x82, 0x83, 0x85, 0x85, - 0x83, 0x81, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x81, - 0x81, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7e, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, - 0x81, 0x82, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, - 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7e, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x82, 0x82, - 0x82, 0x81, 0x80, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, - 0x7d, 0x7d, 0x80, 0x82, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x82, - 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7c, - 0x7c, 0x7d, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x7d, 0x7d, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7d, 0x81, 0x83, - 0x84, 0x84, 0x83, 0x7e, 0x7c, 0x7a, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x81, 0x7e, 0x7d, 0x7d, - 0x7e, 0x80, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x83, - 0x83, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, - 0x7e, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, 0x7b, 0x7d, 0x82, 0x85, - 0x87, 0x87, 0x84, 0x81, 0x7d, 0x7a, 0x78, 0x78, 0x79, 0x7e, 0x83, 0x87, 0x89, 0x88, 0x84, 0x80, - 0x7a, 0x77, 0x76, 0x77, 0x7a, 0x7e, 0x83, 0x86, 0x87, 0x86, 0x83, 0x7d, 0x7a, 0x78, 0x78, 0x7a, - 0x7d, 0x81, 0x83, 0x84, 0x84, 0x84, 0x82, 0x7e, 0x7b, 0x79, 0x77, 0x78, 0x7c, 0x80, 0x84, 0x86, - 0x86, 0x83, 0x7e, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x86, 0x84, 0x82, 0x80, 0x7d, 0x7c, - 0x7d, 0x7d, 0x7e, 0x81, 0x83, 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x81, 0x81, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x81, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x80, 0x81, - 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7d, 0x7e, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7e, 0x81, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x79, 0x76, 0x76, 0x79, 0x7e, 0x84, 0x87, 0x86, 0x83, - 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7d, 0x7c, 0x7c, - 0x7d, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7e, - 0x81, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, - 0x7e, 0x7d, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x81, - 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, - 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, - 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x82, 0x82, - 0x81, 0x81, 0x7e, 0x7b, 0x78, 0x77, 0x78, 0x7c, 0x82, 0x87, 0x88, 0x86, 0x81, 0x79, 0x74, 0x71, - 0x73, 0x7a, 0x83, 0x89, 0x8e, 0x8e, 0x87, 0x7e, 0x76, 0x72, 0x73, 0x78, 0x7e, 0x86, 0x88, 0x88, - 0x84, 0x81, 0x7d, 0x7a, 0x7a, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x7e, 0x7b, 0x79, 0x77, 0x79, 0x7c, 0x81, 0x85, 0x87, 0x86, 0x82, 0x7c, 0x78, 0x78, 0x7b, 0x81, - 0x85, 0x87, 0x85, 0x81, 0x7b, 0x77, 0x76, 0x78, 0x7b, 0x82, 0x86, 0x88, 0x87, 0x83, 0x7c, 0x78, - 0x76, 0x76, 0x7b, 0x81, 0x86, 0x8a, 0x8a, 0x87, 0x81, 0x7a, 0x75, 0x72, 0x73, 0x78, 0x80, 0x87, - 0x8a, 0x89, 0x84, 0x7c, 0x77, 0x75, 0x76, 0x7a, 0x80, 0x84, 0x86, 0x85, 0x82, 0x7d, 0x7c, 0x7b, - 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x83, 0x80, 0x7b, 0x78, 0x76, 0x77, 0x7b, 0x82, - 0x87, 0x89, 0x86, 0x81, 0x7a, 0x77, 0x76, 0x78, 0x7d, 0x82, 0x84, 0x83, 0x80, 0x7d, 0x7a, 0x7a, - 0x7c, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x82, 0x81, 0x7d, 0x79, 0x77, 0x77, 0x7c, 0x82, 0x83, 0x83, - 0x81, 0x7e, 0x7d, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x83, 0x86, 0x86, 0x87, 0x85, 0x81, 0x7c, 0x79, - 0x75, 0x75, 0x78, 0x80, 0x86, 0x8a, 0x88, 0x81, 0x78, 0x74, 0x77, 0x7d, 0x84, 0x87, 0x86, 0x83, - 0x7d, 0x79, 0x74, 0x72, 0x74, 0x78, 0x80, 0x85, 0x89, 0x8b, 0x8a, 0x85, 0x7d, 0x74, 0x70, 0x71, - 0x77, 0x82, 0x8c, 0x8f, 0x8d, 0x8a, 0x85, 0x7e, 0x75, 0x6e, 0x6d, 0x76, 0x83, 0x8f, 0x95, 0x93, - 0x8c, 0x7d, 0x6c, 0x61, 0x65, 0x77, 0x8b, 0x95, 0x91, 0x87, 0x80, 0x80, 0x81, 0x7c, 0x74, 0x6e, - 0x72, 0x7e, 0x8c, 0x96, 0x93, 0x88, 0x7e, 0x79, 0x7a, 0x7e, 0x82, 0x80, 0x7d, 0x7b, 0x7c, 0x81, - 0x84, 0x83, 0x80, 0x7b, 0x7c, 0x81, 0x83, 0x85, 0x84, 0x81, 0x7b, 0x7a, 0x7d, 0x82, 0x85, 0x85, - 0x80, 0x7c, 0x7b, 0x7b, 0x7d, 0x7b, 0x78, 0x77, 0x7b, 0x84, 0x8a, 0x8a, 0x85, 0x7d, 0x78, 0x75, - 0x76, 0x77, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x84, 0x86, 0x85, 0x80, 0x79, 0x75, 0x75, 0x79, 0x7d, - 0x81, 0x82, 0x7e, 0x7d, 0x7e, 0x81, 0x83, 0x81, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x7d, 0x7b, 0x7a, - 0x7a, 0x7b, 0x80, 0x85, 0x85, 0x85, 0x83, 0x81, 0x7e, 0x78, 0x75, 0x74, 0x76, 0x7b, 0x83, 0x88, - 0x89, 0x86, 0x84, 0x82, 0x7e, 0x7a, 0x74, 0x72, 0x76, 0x7e, 0x85, 0x87, 0x86, 0x86, 0x85, 0x84, - 0x81, 0x7c, 0x79, 0x7a, 0x7c, 0x7e, 0x82, 0x82, 0x84, 0x85, 0x85, 0x83, 0x81, 0x80, 0x7c, 0x79, - 0x78, 0x7a, 0x80, 0x84, 0x87, 0x89, 0x85, 0x80, 0x7c, 0x7b, 0x7d, 0x80, 0x7d, 0x7a, 0x79, 0x7c, - 0x83, 0x8a, 0x8c, 0x8b, 0x85, 0x7c, 0x77, 0x77, 0x79, 0x79, 0x7c, 0x81, 0x86, 0x8d, 0x8e, 0x88, - 0x81, 0x78, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x81, 0x84, 0x86, 0x84, 0x81, 0x7d, 0x7b, 0x7b, - 0x7d, 0x7c, 0x7a, 0x78, 0x7a, 0x7c, 0x83, 0x86, 0x85, 0x85, 0x81, 0x7b, 0x76, 0x73, 0x75, 0x79, - 0x7e, 0x83, 0x86, 0x88, 0x86, 0x81, 0x7b, 0x77, 0x7a, 0x81, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x7d, - 0x81, 0x83, 0x84, 0x84, 0x84, 0x85, 0x86, 0x85, 0x81, 0x7d, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x7b, - 0x7e, 0x85, 0x8b, 0x8e, 0x8e, 0x89, 0x7e, 0x72, 0x6b, 0x67, 0x6c, 0x74, 0x7d, 0x89, 0x92, 0x97, - 0x94, 0x8c, 0x81, 0x75, 0x6c, 0x6a, 0x6c, 0x73, 0x7c, 0x87, 0x8f, 0x92, 0x90, 0x8b, 0x82, 0x75, - 0x71, 0x73, 0x78, 0x7d, 0x7e, 0x81, 0x85, 0x88, 0x89, 0x88, 0x81, 0x79, 0x75, 0x78, 0x81, 0x8c, - 0x92, 0x8f, 0x84, 0x75, 0x6d, 0x6d, 0x72, 0x7b, 0x88, 0x91, 0x93, 0x8e, 0x83, 0x78, 0x74, 0x74, - 0x77, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x89, 0x8d, 0x8a, 0x83, 0x7b, 0x76, 0x75, 0x75, 0x7a, - 0x80, 0x82, 0x81, 0x81, 0x85, 0x89, 0x8b, 0x87, 0x7d, 0x76, 0x74, 0x76, 0x79, 0x7d, 0x80, 0x82, - 0x83, 0x85, 0x8a, 0x8b, 0x84, 0x7b, 0x72, 0x70, 0x74, 0x78, 0x7e, 0x83, 0x84, 0x85, 0x85, 0x85, - 0x87, 0x85, 0x7d, 0x75, 0x71, 0x74, 0x79, 0x80, 0x85, 0x86, 0x83, 0x7d, 0x7c, 0x7c, 0x80, 0x82, - 0x83, 0x81, 0x7b, 0x78, 0x76, 0x76, 0x7b, 0x81, 0x85, 0x8a, 0x8e, 0x8e, 0x8a, 0x7c, 0x6d, 0x63, - 0x60, 0x6d, 0x81, 0x91, 0x9c, 0x9c, 0x92, 0x85, 0x75, 0x69, 0x66, 0x68, 0x70, 0x7e, 0x8f, 0x98, - 0x99, 0x93, 0x87, 0x79, 0x6c, 0x65, 0x68, 0x72, 0x81, 0x8f, 0x95, 0x93, 0x8a, 0x7c, 0x71, 0x6d, - 0x6e, 0x76, 0x7e, 0x86, 0x8b, 0x89, 0x87, 0x81, 0x77, 0x74, 0x74, 0x7a, 0x83, 0x88, 0x89, 0x85, - 0x80, 0x7c, 0x77, 0x78, 0x7b, 0x7d, 0x80, 0x84, 0x88, 0x8a, 0x89, 0x82, 0x7a, 0x75, 0x70, 0x6c, - 0x71, 0x7b, 0x86, 0x90, 0x96, 0x98, 0x92, 0x85, 0x75, 0x67, 0x61, 0x69, 0x77, 0x84, 0x8e, 0x96, - 0x9a, 0x97, 0x8b, 0x80, 0x75, 0x6b, 0x65, 0x64, 0x6c, 0x7a, 0x8a, 0x99, 0xa0, 0x9c, 0x8f, 0x7b, - 0x6b, 0x63, 0x60, 0x69, 0x75, 0x84, 0x90, 0x99, 0x9d, 0x98, 0x8a, 0x76, 0x67, 0x5f, 0x60, 0x69, - 0x7a, 0x8c, 0x96, 0x9a, 0x98, 0x91, 0x83, 0x77, 0x73, 0x6d, 0x66, 0x68, 0x71, 0x7d, 0x8c, 0x98, - 0xa0, 0xa3, 0x9b, 0x89, 0x75, 0x63, 0x57, 0x59, 0x67, 0x76, 0x8a, 0xa0, 0xaa, 0xa7, 0x9b, 0x89, - 0x73, 0x60, 0x55, 0x52, 0x58, 0x67, 0x7e, 0x97, 0xa9, 0xb0, 0xaa, 0x98, 0x80, 0x67, 0x58, 0x54, - 0x59, 0x62, 0x72, 0x88, 0x9b, 0xa6, 0xaa, 0xa0, 0x8c, 0x76, 0x65, 0x5a, 0x5c, 0x6c, 0x7d, 0x8d, - 0x9a, 0x9f, 0x9c, 0x90, 0x78, 0x65, 0x5c, 0x5b, 0x65, 0x77, 0x8f, 0xa0, 0xa7, 0xa3, 0x93, 0x7b, - 0x68, 0x5b, 0x58, 0x60, 0x70, 0x82, 0x91, 0x9a, 0x9c, 0x99, 0x91, 0x84, 0x76, 0x6d, 0x69, 0x6a, - 0x73, 0x7b, 0x86, 0x8e, 0x92, 0x94, 0x90, 0x88, 0x7e, 0x76, 0x6f, 0x6d, 0x6d, 0x75, 0x83, 0x8d, - 0x95, 0x98, 0x93, 0x88, 0x7a, 0x6b, 0x66, 0x69, 0x6e, 0x7b, 0x84, 0x8b, 0x92, 0x8e, 0x8a, 0x87, - 0x84, 0x7c, 0x74, 0x75, 0x76, 0x74, 0x77, 0x7c, 0x80, 0x81, 0x86, 0x8c, 0x8b, 0x8a, 0x88, 0x80, - 0x7a, 0x7b, 0x7b, 0x75, 0x76, 0x80, 0x83, 0x81, 0x81, 0x82, 0x81, 0x7d, 0x81, 0x82, 0x7d, 0x81, - 0x85, 0x85, 0x7d, 0x78, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x83, 0x85, 0x82, 0x84, 0x89, 0x8a, 0x85, - 0x7d, 0x79, 0x73, 0x72, 0x73, 0x79, 0x82, 0x8a, 0x93, 0x96, 0x90, 0x87, 0x79, 0x6a, 0x62, 0x65, - 0x73, 0x84, 0x93, 0x9a, 0x99, 0x94, 0x86, 0x75, 0x6a, 0x67, 0x69, 0x6d, 0x79, 0x88, 0x8e, 0x8e, - 0x8f, 0x8b, 0x86, 0x80, 0x77, 0x72, 0x70, 0x6d, 0x6f, 0x77, 0x82, 0x8a, 0x8f, 0x94, 0x91, 0x89, - 0x7e, 0x75, 0x6f, 0x6a, 0x6b, 0x74, 0x80, 0x8e, 0x99, 0xa0, 0xa0, 0x91, 0x7c, 0x6b, 0x5c, 0x55, - 0x5b, 0x6f, 0x87, 0x9b, 0xab, 0xaf, 0xa7, 0x92, 0x73, 0x5a, 0x52, 0x54, 0x62, 0x78, 0x8e, 0x9f, - 0xa8, 0xa6, 0x9d, 0x89, 0x73, 0x67, 0x61, 0x5f, 0x68, 0x78, 0x87, 0x91, 0x96, 0x95, 0x91, 0x85, - 0x79, 0x71, 0x6a, 0x6e, 0x77, 0x82, 0x8d, 0x94, 0x92, 0x88, 0x7c, 0x74, 0x6d, 0x6b, 0x74, 0x82, - 0x8c, 0x93, 0x93, 0x8b, 0x7d, 0x73, 0x6b, 0x6d, 0x78, 0x84, 0x8a, 0x8a, 0x8a, 0x85, 0x78, 0x74, - 0x75, 0x73, 0x75, 0x7e, 0x8b, 0x91, 0x8f, 0x8f, 0x8a, 0x7b, 0x6f, 0x6b, 0x6d, 0x74, 0x76, 0x79, - 0x88, 0x96, 0x93, 0x8e, 0x8f, 0x8c, 0x80, 0x70, 0x69, 0x65, 0x61, 0x66, 0x75, 0x86, 0x95, 0x9c, - 0xa2, 0xa4, 0x94, 0x7c, 0x6a, 0x63, 0x5d, 0x59, 0x69, 0x86, 0x99, 0x9e, 0xa2, 0xa3, 0x8e, 0x72, - 0x63, 0x5f, 0x66, 0x70, 0x7c, 0x8f, 0x9d, 0x9a, 0x8e, 0x84, 0x7b, 0x6d, 0x61, 0x6b, 0x7d, 0x86, - 0x87, 0x91, 0x9a, 0x8f, 0x7d, 0x79, 0x78, 0x6f, 0x6a, 0x72, 0x7b, 0x80, 0x83, 0x8a, 0x90, 0x8e, - 0x88, 0x84, 0x7e, 0x78, 0x74, 0x75, 0x79, 0x7e, 0x7d, 0x7c, 0x80, 0x82, 0x83, 0x82, 0x83, 0x84, - 0x80, 0x7c, 0x7e, 0x82, 0x82, 0x86, 0x88, 0x81, 0x77, 0x74, 0x74, 0x76, 0x7c, 0x86, 0x8f, 0x8f, - 0x8b, 0x89, 0x80, 0x71, 0x6c, 0x6d, 0x71, 0x7a, 0x86, 0x90, 0x96, 0x94, 0x8c, 0x7e, 0x73, 0x6e, - 0x6e, 0x70, 0x7a, 0x86, 0x8c, 0x90, 0x91, 0x89, 0x7c, 0x76, 0x76, 0x75, 0x75, 0x7d, 0x87, 0x8b, - 0x8c, 0x8a, 0x85, 0x7c, 0x72, 0x70, 0x7a, 0x7e, 0x84, 0x8c, 0x8f, 0x8b, 0x7d, 0x74, 0x70, 0x68, - 0x65, 0x75, 0x89, 0x91, 0x97, 0x9b, 0x99, 0x88, 0x6e, 0x60, 0x5e, 0x61, 0x6d, 0x83, 0x96, 0x9f, - 0x9f, 0x96, 0x8a, 0x75, 0x61, 0x5f, 0x67, 0x70, 0x7d, 0x8d, 0x9a, 0xa2, 0x95, 0x85, 0x80, 0x74, - 0x65, 0x5e, 0x68, 0x77, 0x7a, 0x82, 0x96, 0xa1, 0x9c, 0x91, 0x8a, 0x80, 0x6d, 0x5e, 0x5d, 0x64, - 0x6a, 0x71, 0x83, 0x9b, 0xa5, 0xa4, 0x9e, 0x93, 0x83, 0x65, 0x50, 0x55, 0x64, 0x6a, 0x76, 0x94, - 0xa8, 0xa4, 0x99, 0x96, 0x8a, 0x6b, 0x5c, 0x65, 0x70, 0x75, 0x7a, 0x89, 0x9a, 0x95, 0x89, 0x8a, - 0x8c, 0x7b, 0x66, 0x68, 0x7a, 0x7d, 0x7a, 0x8a, 0x9d, 0x98, 0x87, 0x83, 0x7c, 0x6e, 0x60, 0x64, - 0x7a, 0x8c, 0x8a, 0x8b, 0x98, 0x99, 0x87, 0x77, 0x78, 0x77, 0x66, 0x5e, 0x6d, 0x7e, 0x83, 0x8a, - 0x97, 0xa1, 0x9b, 0x8b, 0x83, 0x74, 0x61, 0x55, 0x5f, 0x6f, 0x76, 0x85, 0x9f, 0xaa, 0x9f, 0x95, - 0x90, 0x7c, 0x60, 0x57, 0x61, 0x69, 0x6b, 0x7d, 0x9f, 0xab, 0x9e, 0x94, 0x91, 0x82, 0x61, 0x4f, - 0x59, 0x6c, 0x71, 0x7b, 0x9f, 0xb4, 0xa5, 0x90, 0x8e, 0x83, 0x5e, 0x48, 0x55, 0x69, 0x6d, 0x72, - 0x96, 0xb4, 0xa8, 0x94, 0x99, 0x95, 0x70, 0x53, 0x5e, 0x70, 0x68, 0x64, 0x83, 0xa1, 0x9a, 0x8d, - 0x94, 0x96, 0x7d, 0x66, 0x6b, 0x80, 0x7d, 0x6d, 0x7d, 0x99, 0x8f, 0x76, 0x79, 0x89, 0x7b, 0x68, - 0x75, 0x8e, 0x90, 0x87, 0x8c, 0x96, 0x88, 0x68, 0x5f, 0x6a, 0x6f, 0x73, 0x80, 0x92, 0x9c, 0x99, - 0x93, 0x87, 0x75, 0x6c, 0x67, 0x60, 0x68, 0x78, 0x84, 0x91, 0x9a, 0x9a, 0x94, 0x86, 0x7b, 0x70, - 0x63, 0x64, 0x69, 0x70, 0x7d, 0x8c, 0x94, 0x93, 0x8e, 0x8b, 0x89, 0x7d, 0x72, 0x6d, 0x6d, 0x67, - 0x64, 0x6c, 0x7c, 0x90, 0xa0, 0xaa, 0xa7, 0x9b, 0x86, 0x69, 0x54, 0x4c, 0x4d, 0x59, 0x73, 0x8f, - 0xa8, 0xae, 0xac, 0xab, 0x9a, 0x7c, 0x67, 0x59, 0x54, 0x57, 0x64, 0x7a, 0x8c, 0x99, 0xa8, 0xac, - 0xa0, 0x89, 0x6f, 0x5e, 0x56, 0x54, 0x5c, 0x77, 0x98, 0xa7, 0xa4, 0xa1, 0x9f, 0x87, 0x61, 0x52, - 0x55, 0x5b, 0x68, 0x7c, 0x97, 0xb0, 0xb3, 0xa2, 0x8f, 0x7c, 0x67, 0x52, 0x52, 0x5d, 0x66, 0x7d, - 0x9c, 0xa7, 0xa0, 0x9f, 0x9f, 0x89, 0x6f, 0x63, 0x62, 0x67, 0x6d, 0x74, 0x83, 0x94, 0x9e, 0x97, - 0x95, 0x98, 0x85, 0x69, 0x65, 0x75, 0x77, 0x6d, 0x74, 0x8a, 0x92, 0x8b, 0x87, 0x88, 0x7e, 0x73, - 0x73, 0x7a, 0x7a, 0x79, 0x7c, 0x85, 0x8a, 0x81, 0x77, 0x7c, 0x89, 0x8e, 0x8d, 0x8b, 0x84, 0x7b, - 0x6e, 0x66, 0x69, 0x6f, 0x74, 0x7e, 0x91, 0xa7, 0xaa, 0x9b, 0x8c, 0x76, 0x65, 0x5a, 0x54, 0x5c, - 0x6e, 0x85, 0x9a, 0xa3, 0xa5, 0xa9, 0x9c, 0x80, 0x6f, 0x63, 0x57, 0x58, 0x65, 0x75, 0x7b, 0x80, - 0x96, 0xab, 0xa3, 0x91, 0x86, 0x7a, 0x6d, 0x64, 0x60, 0x60, 0x62, 0x6d, 0x86, 0x9a, 0x9a, 0x93, - 0x99, 0x9b, 0x88, 0x74, 0x6c, 0x68, 0x63, 0x67, 0x72, 0x7b, 0x7d, 0x85, 0x9b, 0xa2, 0x94, 0x87, - 0x84, 0x7e, 0x6e, 0x66, 0x6d, 0x73, 0x77, 0x81, 0x8d, 0x8f, 0x82, 0x76, 0x80, 0x88, 0x84, 0x80, - 0x80, 0x84, 0x89, 0x7d, 0x71, 0x77, 0x77, 0x73, 0x7c, 0x89, 0x8a, 0x80, 0x7e, 0x8a, 0x89, 0x78, - 0x70, 0x7a, 0x83, 0x85, 0x88, 0x8b, 0x88, 0x7a, 0x73, 0x75, 0x6f, 0x6a, 0x75, 0x83, 0x93, 0x98, - 0x92, 0x92, 0x88, 0x7b, 0x75, 0x6f, 0x68, 0x68, 0x72, 0x83, 0x8f, 0x8f, 0x90, 0x92, 0x98, 0x8a, - 0x71, 0x6e, 0x72, 0x72, 0x6d, 0x72, 0x80, 0x85, 0x85, 0x90, 0x98, 0x8b, 0x82, 0x84, 0x80, 0x74, - 0x66, 0x69, 0x72, 0x6f, 0x75, 0x8b, 0x9b, 0x98, 0x8d, 0x8b, 0x8f, 0x7d, 0x65, 0x64, 0x69, 0x6b, - 0x6f, 0x76, 0x8c, 0xa3, 0xa0, 0x98, 0x90, 0x84, 0x73, 0x63, 0x62, 0x6b, 0x6e, 0x75, 0x8b, 0x99, - 0x96, 0x95, 0x95, 0x8d, 0x75, 0x62, 0x67, 0x6a, 0x6e, 0x7d, 0x87, 0x95, 0x9d, 0x8b, 0x88, 0x87, - 0x77, 0x6b, 0x68, 0x74, 0x7a, 0x78, 0x81, 0x8b, 0x8e, 0x8a, 0x8b, 0x88, 0x7b, 0x75, 0x74, 0x6e, - 0x71, 0x7d, 0x84, 0x87, 0x92, 0x99, 0x8c, 0x81, 0x7e, 0x73, 0x6f, 0x72, 0x71, 0x75, 0x7b, 0x89, - 0x91, 0x8a, 0x87, 0x90, 0x88, 0x7c, 0x80, 0x77, 0x71, 0x6e, 0x6f, 0x79, 0x7e, 0x7d, 0x86, 0x90, - 0x93, 0x95, 0x94, 0x89, 0x82, 0x76, 0x66, 0x62, 0x63, 0x67, 0x75, 0x8f, 0x9b, 0x9b, 0x99, 0x9c, - 0x94, 0x7e, 0x6e, 0x6e, 0x67, 0x5e, 0x65, 0x70, 0x7d, 0x85, 0x8e, 0x99, 0x99, 0x93, 0x8c, 0x7d, - 0x74, 0x70, 0x6e, 0x71, 0x70, 0x74, 0x86, 0x8a, 0x88, 0x86, 0x8b, 0x8c, 0x7b, 0x73, 0x7c, 0x7b, - 0x7a, 0x7a, 0x7b, 0x82, 0x85, 0x81, 0x7d, 0x79, 0x7b, 0x7b, 0x78, 0x80, 0x85, 0x87, 0x89, 0x89, - 0x85, 0x7c, 0x7a, 0x7b, 0x71, 0x6d, 0x7b, 0x83, 0x84, 0x86, 0x90, 0x97, 0x86, 0x80, 0x82, 0x76, - 0x6a, 0x65, 0x73, 0x80, 0x7c, 0x7c, 0x8e, 0x9b, 0x8e, 0x7a, 0x7a, 0x7d, 0x71, 0x5e, 0x65, 0x87, - 0x8a, 0x7d, 0x8d, 0xa4, 0x94, 0x7a, 0x7b, 0x7a, 0x6d, 0x63, 0x70, 0x7e, 0x81, 0x8c, 0x94, 0x8b, - 0x7c, 0x7d, 0x84, 0x7d, 0x76, 0x7d, 0x83, 0x7b, 0x7c, 0x7b, 0x78, 0x79, 0x78, 0x77, 0x82, 0x8f, - 0x89, 0x7c, 0x85, 0x8e, 0x80, 0x6c, 0x75, 0x82, 0x7b, 0x76, 0x7a, 0x84, 0x85, 0x80, 0x7a, 0x84, - 0x8b, 0x83, 0x7e, 0x7d, 0x87, 0x86, 0x72, 0x70, 0x72, 0x75, 0x78, 0x75, 0x80, 0x90, 0x94, 0x8a, - 0x89, 0x87, 0x84, 0x7b, 0x6e, 0x72, 0x76, 0x6f, 0x74, 0x85, 0x88, 0x84, 0x91, 0x94, 0x83, 0x82, - 0x7e, 0x76, 0x6b, 0x68, 0x7b, 0x7e, 0x7d, 0x8c, 0x91, 0x91, 0x84, 0x78, 0x7d, 0x7a, 0x70, 0x6e, - 0x75, 0x7c, 0x85, 0x87, 0x86, 0x91, 0x8d, 0x78, 0x76, 0x7c, 0x76, 0x69, 0x6e, 0x82, 0x93, 0x82, - 0x75, 0x92, 0x9b, 0x78, 0x64, 0x87, 0x8f, 0x6f, 0x69, 0x8b, 0x8f, 0x76, 0x7a, 0x81, 0x88, 0x86, - 0x7b, 0x6e, 0x76, 0x90, 0x83, 0x71, 0x7e, 0x91, 0x8a, 0x6f, 0x7a, 0x8e, 0x7e, 0x6a, 0x77, 0x8a, - 0x7b, 0x73, 0x83, 0x86, 0x7c, 0x81, 0x85, 0x7c, 0x7a, 0x83, 0x7e, 0x78, 0x7d, 0x80, 0x7c, 0x83, - 0x88, 0x83, 0x7c, 0x7c, 0x85, 0x83, 0x85, 0x84, 0x87, 0x86, 0x7a, 0x82, 0x80, 0x72, 0x71, 0x79, - 0x80, 0x84, 0x81, 0x84, 0x8d, 0x88, 0x80, 0x78, 0x77, 0x79, 0x7c, 0x82, 0x7c, 0x7c, 0x85, 0x87, - 0x7c, 0x78, 0x81, 0x7d, 0x75, 0x7d, 0x8c, 0x85, 0x7c, 0x81, 0x86, 0x82, 0x76, 0x77, 0x86, 0x83, - 0x7b, 0x80, 0x84, 0x85, 0x7e, 0x74, 0x77, 0x82, 0x80, 0x7e, 0x82, 0x8c, 0x8f, 0x84, 0x7d, 0x7e, - 0x7a, 0x6f, 0x73, 0x7c, 0x7e, 0x7e, 0x83, 0x8c, 0x89, 0x7d, 0x80, 0x86, 0x82, 0x7a, 0x77, 0x7b, - 0x7c, 0x78, 0x79, 0x80, 0x83, 0x82, 0x88, 0x89, 0x7e, 0x7e, 0x82, 0x7a, 0x76, 0x7e, 0x83, 0x7b, - 0x75, 0x82, 0x8d, 0x81, 0x75, 0x80, 0x88, 0x80, 0x77, 0x7a, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, - 0x82, 0x82, 0x7a, 0x78, 0x7e, 0x82, 0x7d, 0x78, 0x7b, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x7e, 0x7d, - 0x83, 0x80, 0x78, 0x79, 0x7e, 0x81, 0x7c, 0x7c, 0x84, 0x85, 0x7d, 0x7c, 0x84, 0x87, 0x80, 0x7a, - 0x7a, 0x7d, 0x79, 0x75, 0x7a, 0x7e, 0x81, 0x82, 0x83, 0x88, 0x87, 0x81, 0x7d, 0x7b, 0x7b, 0x77, - 0x75, 0x79, 0x80, 0x82, 0x84, 0x86, 0x86, 0x85, 0x83, 0x80, 0x7d, 0x7b, 0x79, 0x79, 0x7d, 0x7e, - 0x80, 0x82, 0x84, 0x82, 0x84, 0x82, 0x80, 0x80, 0x81, 0x81, 0x7d, 0x80, 0x7e, 0x7b, 0x7b, 0x7d, - 0x7e, 0x7e, 0x7e, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x83, 0x84, 0x82, 0x7e, 0x7b, - 0x78, 0x79, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x81, 0x85, 0x88, 0x8b, 0x8a, 0x86, 0x80, 0x7a, 0x74, - 0x70, 0x70, 0x74, 0x7a, 0x82, 0x8b, 0x91, 0x91, 0x8e, 0x89, 0x82, 0x7c, 0x75, 0x71, 0x74, 0x74, - 0x78, 0x7e, 0x81, 0x84, 0x88, 0x89, 0x87, 0x84, 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x7d, 0x7d, 0x81, - 0x82, 0x83, 0x83, 0x7e, 0x7d, 0x7b, 0x7a, 0x7c, 0x7d, 0x84, 0x88, 0x87, 0x88, 0x86, 0x80, 0x7b, - 0x76, 0x73, 0x73, 0x75, 0x78, 0x7e, 0x82, 0x85, 0x87, 0x85, 0x82, 0x7e, 0x7d, 0x7b, 0x7b, 0x7e, - 0x7d, 0x7e, 0x82, 0x82, 0x84, 0x84, 0x81, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7e, 0x81, 0x82, 0x82, - 0x80, 0x7d, 0x7c, 0x7b, 0x79, 0x77, 0x7a, 0x7c, 0x7e, 0x83, 0x83, 0x83, 0x83, 0x82, 0x7e, 0x78, - 0x77, 0x78, 0x7b, 0x82, 0x83, 0x84, 0x85, 0x81, 0x7e, 0x7e, 0x7a, 0x76, 0x79, 0x7e, 0x84, 0x86, - 0x86, 0x83, 0x81, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x81, 0x83, 0x82, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, - 0x7b, 0x7e, 0x82, 0x81, 0x84, 0x84, 0x81, 0x81, 0x7e, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x81, 0x82, - 0x81, 0x81, 0x82, 0x83, 0x80, 0x7e, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x7d, 0x7e, 0x80, 0x7d, 0x7e, - 0x81, 0x81, 0x80, 0x81, 0x80, 0x81, 0x7e, 0x7a, 0x77, 0x76, 0x79, 0x80, 0x84, 0x89, 0x8a, 0x89, - 0x86, 0x7e, 0x7b, 0x77, 0x74, 0x76, 0x7b, 0x7e, 0x82, 0x89, 0x88, 0x85, 0x83, 0x7b, 0x78, 0x78, - 0x7a, 0x7b, 0x82, 0x87, 0x8a, 0x87, 0x84, 0x82, 0x79, 0x78, 0x76, 0x74, 0x78, 0x7b, 0x82, 0x88, - 0x89, 0x8c, 0x87, 0x7e, 0x7b, 0x78, 0x75, 0x77, 0x7a, 0x7a, 0x7e, 0x83, 0x85, 0x85, 0x87, 0x83, - 0x81, 0x83, 0x7d, 0x7c, 0x7a, 0x77, 0x7a, 0x7b, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x81, 0x7e, - 0x81, 0x81, 0x80, 0x81, 0x84, 0x80, 0x7e, 0x81, 0x7c, 0x7a, 0x79, 0x78, 0x7c, 0x82, 0x88, 0x8b, - 0x8a, 0x87, 0x84, 0x81, 0x7b, 0x79, 0x76, 0x76, 0x7d, 0x84, 0x86, 0x89, 0x8a, 0x84, 0x81, 0x7d, - 0x79, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x85, 0x87, 0x88, 0x86, 0x81, 0x7c, 0x7c, 0x79, 0x78, 0x78, - 0x79, 0x7e, 0x84, 0x84, 0x86, 0x86, 0x83, 0x82, 0x81, 0x7a, 0x79, 0x79, 0x79, 0x7d, 0x7e, 0x83, - 0x85, 0x86, 0x85, 0x82, 0x81, 0x7b, 0x79, 0x7a, 0x79, 0x7c, 0x81, 0x83, 0x84, 0x83, 0x83, 0x7d, - 0x7c, 0x7d, 0x79, 0x78, 0x7c, 0x7c, 0x7c, 0x80, 0x82, 0x84, 0x88, 0x89, 0x88, 0x83, 0x81, 0x80, - 0x7a, 0x7a, 0x78, 0x76, 0x7d, 0x83, 0x84, 0x87, 0x89, 0x86, 0x83, 0x82, 0x7e, 0x7d, 0x7b, 0x79, - 0x7b, 0x7d, 0x81, 0x81, 0x82, 0x86, 0x85, 0x84, 0x82, 0x7e, 0x7d, 0x79, 0x79, 0x7c, 0x7b, 0x7d, - 0x80, 0x7e, 0x81, 0x80, 0x7e, 0x81, 0x7d, 0x7d, 0x7d, 0x7a, 0x7d, 0x82, 0x82, 0x82, 0x84, 0x83, - 0x81, 0x7e, 0x79, 0x77, 0x78, 0x7b, 0x7b, 0x7e, 0x82, 0x85, 0x86, 0x83, 0x84, 0x83, 0x80, 0x7d, - 0x7c, 0x79, 0x78, 0x78, 0x77, 0x7b, 0x7d, 0x82, 0x85, 0x86, 0x87, 0x86, 0x84, 0x82, 0x7d, 0x79, - 0x77, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7e, 0x82, 0x82, - 0x81, 0x7e, 0x7b, 0x7c, 0x80, 0x80, 0x82, 0x82, 0x80, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, - 0x81, 0x82, 0x84, 0x82, 0x7d, 0x7e, 0x7b, 0x7c, 0x7e, 0x7c, 0x82, 0x84, 0x82, 0x84, 0x81, 0x7e, - 0x7e, 0x7b, 0x7b, 0x7d, 0x80, 0x83, 0x87, 0x89, 0x88, 0x86, 0x81, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, - 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x81, 0x7c, 0x7a, 0x77, 0x77, 0x7c, 0x81, 0x83, 0x84, 0x80, 0x7e, - 0x81, 0x7d, 0x79, 0x78, 0x77, 0x78, 0x7c, 0x82, 0x88, 0x89, 0x89, 0x89, 0x86, 0x80, 0x78, 0x76, - 0x73, 0x76, 0x79, 0x7c, 0x81, 0x87, 0x8a, 0x87, 0x86, 0x82, 0x7b, 0x79, 0x7b, 0x7a, 0x7b, 0x7e, - 0x81, 0x81, 0x83, 0x83, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7b, 0x7b, 0x80, 0x7e, 0x80, 0x82, 0x81, - 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7d, 0x82, 0x85, 0x87, 0x85, 0x82, 0x80, 0x7a, - 0x75, 0x74, 0x76, 0x79, 0x7b, 0x82, 0x88, 0x88, 0x88, 0x87, 0x82, 0x7b, 0x79, 0x76, 0x73, 0x78, - 0x80, 0x83, 0x88, 0x8a, 0x89, 0x87, 0x83, 0x7c, 0x78, 0x75, 0x75, 0x79, 0x7b, 0x7e, 0x81, 0x84, - 0x84, 0x82, 0x84, 0x82, 0x7e, 0x80, 0x80, 0x7e, 0x81, 0x7e, 0x7c, 0x7d, 0x7a, 0x79, 0x7d, 0x82, - 0x83, 0x86, 0x85, 0x85, 0x86, 0x83, 0x7c, 0x7c, 0x7d, 0x7a, 0x7a, 0x7d, 0x7e, 0x83, 0x87, 0x86, - 0x84, 0x82, 0x81, 0x7c, 0x7b, 0x7b, 0x79, 0x7e, 0x83, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x78, - 0x77, 0x78, 0x7a, 0x80, 0x83, 0x85, 0x84, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, - 0x7c, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x82, 0x83, 0x82, 0x83, 0x80, 0x7e, 0x7e, 0x7a, 0x7b, 0x7b, - 0x7b, 0x7d, 0x7e, 0x84, 0x85, 0x82, 0x85, 0x83, 0x80, 0x7e, 0x7a, 0x79, 0x7d, 0x7d, 0x7c, 0x7e, - 0x81, 0x83, 0x82, 0x82, 0x83, 0x82, 0x82, 0x80, 0x7e, 0x81, 0x82, 0x82, 0x7e, 0x7b, 0x7c, 0x80, - 0x81, 0x81, 0x85, 0x85, 0x80, 0x7d, 0x7c, 0x7a, 0x7c, 0x7e, 0x7d, 0x7e, 0x81, 0x83, 0x83, 0x81, - 0x7e, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7e, 0x82, 0x83, 0x83, 0x81, 0x81, 0x80, 0x7c, 0x7a, 0x7b, - 0x7e, 0x81, 0x83, 0x83, 0x7d, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x81, 0x84, 0x86, 0x87, 0x84, 0x81, - 0x7b, 0x78, 0x75, 0x76, 0x7c, 0x81, 0x84, 0x86, 0x84, 0x85, 0x86, 0x82, 0x7e, 0x7d, 0x7b, 0x7a, - 0x7c, 0x7a, 0x78, 0x7a, 0x7c, 0x80, 0x82, 0x83, 0x86, 0x86, 0x83, 0x82, 0x7e, 0x7d, 0x7e, 0x7e, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x82, 0x86, 0x86, 0x85, 0x84, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7c, - 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x81, 0x83, 0x81, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x82, 0x84, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7e, - 0x80, 0x82, 0x83, 0x82, 0x82, 0x80, 0x80, 0x80, 0x81, 0x83, 0x81, 0x80, 0x82, 0x81, 0x83, 0x84, - 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x7c, 0x7e, 0x80, 0x7e, 0x80, 0x82, 0x7e, 0x7e, 0x7e, 0x7d, 0x7a, - 0x7b, 0x7e, 0x7d, 0x81, 0x82, 0x82, 0x83, 0x7e, 0x80, 0x80, 0x79, 0x78, 0x79, 0x78, 0x7b, 0x7d, - 0x82, 0x87, 0x84, 0x84, 0x83, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7c, 0x80, 0x83, 0x84, 0x86, 0x85, - 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x7b, 0x7e, 0x81, 0x80, 0x82, 0x82, 0x7e, 0x7d, - 0x80, 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, 0x7b, - 0x7b, 0x7a, 0x7a, 0x75, 0x70, 0x7d, 0x8a, 0x83, 0x82, 0x89, 0x80, 0x6b, 0x63, 0x75, 0x91, 0x9c, - 0x91, 0x75, 0x6f, 0x7e, 0x81, 0x79, 0x74, 0x75, 0x7b, 0x80, 0x90, 0x9c, 0x8a, 0x74, 0x71, 0x7b, - 0x7c, 0x72, 0x76, 0x89, 0x8d, 0x84, 0x7d, 0x81, 0x83, 0x72, 0x68, 0x78, 0x90, 0x96, 0x83, 0x70, - 0x7a, 0x8e, 0x8c, 0x73, 0x70, 0x7e, 0x7c, 0x71, 0x75, 0x88, 0x89, 0x78, 0x76, 0x8a, 0x99, 0x8e, - 0x7b, 0x74, 0x77, 0x73, 0x6e, 0x70, 0x72, 0x72, 0x85, 0xa2, 0xa9, 0x8e, 0x77, 0x7e, 0x7e, 0x6f, - 0x6a, 0x73, 0x79, 0x7c, 0x82, 0x87, 0x82, 0x76, 0x76, 0x83, 0x8f, 0x8d, 0x85, 0x7e, 0x79, 0x70, - 0x6d, 0x77, 0x82, 0x82, 0x86, 0x8f, 0x90, 0x85, 0x79, 0x79, 0x7b, 0x73, 0x6e, 0x76, 0x81, 0x88, - 0x8a, 0x85, 0x79, 0x73, 0x7b, 0x83, 0x82, 0x86, 0x8a, 0x7d, 0x71, 0x76, 0x83, 0x86, 0x7c, 0x78, - 0x78, 0x7b, 0x81, 0x89, 0x90, 0x86, 0x7a, 0x7d, 0x81, 0x7a, 0x77, 0x80, 0x88, 0x82, 0x73, 0x77, - 0x8a, 0x8a, 0x81, 0x81, 0x84, 0x82, 0x7b, 0x7a, 0x7d, 0x7a, 0x75, 0x74, 0x7b, 0x86, 0x8e, 0x8b, - 0x83, 0x80, 0x7c, 0x78, 0x78, 0x76, 0x7b, 0x85, 0x85, 0x83, 0x85, 0x89, 0x88, 0x7c, 0x75, 0x7d, - 0x83, 0x7c, 0x79, 0x7b, 0x81, 0x7e, 0x79, 0x80, 0x87, 0x83, 0x80, 0x7c, 0x7a, 0x7e, 0x7e, 0x80, - 0x83, 0x82, 0x81, 0x82, 0x83, 0x84, 0x82, 0x80, 0x7d, 0x7c, 0x83, 0x84, 0x81, 0x80, 0x82, 0x85, - 0x83, 0x80, 0x7e, 0x80, 0x80, 0x7c, 0x7d, 0x82, 0x86, 0x88, 0x87, 0x86, 0x82, 0x7c, 0x79, 0x79, - 0x80, 0x82, 0x7e, 0x80, 0x85, 0x86, 0x87, 0x87, 0x84, 0x81, 0x7e, 0x7c, 0x79, 0x7c, 0x83, 0x85, - 0x86, 0x84, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7a, 0x7c, 0x7e, 0x81, 0x82, 0x84, 0x86, 0x84, 0x81, - 0x7e, 0x7d, 0x7d, 0x81, 0x82, 0x80, 0x7d, 0x7c, 0x7d, 0x80, 0x83, 0x88, 0x88, 0x88, 0x87, 0x87, - 0x86, 0x7d, 0x72, 0x69, 0x64, 0x68, 0x76, 0x8e, 0x9e, 0x9f, 0x91, 0x7b, 0x70, 0x71, 0x75, 0x7e, - 0x82, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x82, 0x85, 0x87, 0x89, 0x8e, 0x8f, 0x84, 0x73, 0x68, 0x60, - 0x63, 0x74, 0x89, 0x97, 0x9a, 0x92, 0x88, 0x7b, 0x6e, 0x6b, 0x6d, 0x6e, 0x71, 0x7d, 0x8e, 0x90, - 0x8f, 0x91, 0x8c, 0x85, 0x81, 0x82, 0x7b, 0x71, 0x6d, 0x6c, 0x6f, 0x76, 0x85, 0x96, 0x9c, 0x99, - 0x8e, 0x7a, 0x6b, 0x60, 0x5f, 0x66, 0x70, 0x83, 0x91, 0x95, 0x91, 0x89, 0x7d, 0x73, 0x70, 0x75, - 0x7b, 0x82, 0x86, 0x84, 0x82, 0x86, 0x87, 0x86, 0x84, 0x7e, 0x7c, 0x7d, 0x7d, 0x81, 0x81, 0x7c, - 0x7e, 0x81, 0x7c, 0x79, 0x76, 0x77, 0x76, 0x76, 0x7d, 0x88, 0x8a, 0x84, 0x7a, 0x75, 0x78, 0x7e, - 0x83, 0x89, 0x8e, 0x8d, 0x8b, 0x83, 0x79, 0x77, 0x7b, 0x83, 0x8b, 0x8f, 0x8d, 0x87, 0x7e, 0x75, - 0x73, 0x75, 0x7a, 0x82, 0x87, 0x89, 0x89, 0x84, 0x7b, 0x71, 0x6a, 0x6c, 0x73, 0x7b, 0x85, 0x8a, - 0x8b, 0x84, 0x7e, 0x80, 0x81, 0x83, 0x83, 0x7e, 0x7b, 0x78, 0x75, 0x6c, 0x60, 0x5d, 0x73, 0xa3, - 0xcd, 0xd0, 0xa2, 0x54, 0x1d, 0x23, 0x62, 0xb0, 0xcd, 0xb6, 0x89, 0x68, 0x67, 0x77, 0x78, 0x6c, - 0x69, 0x78, 0x94, 0xa5, 0xa3, 0x8b, 0x66, 0x4b, 0x50, 0x75, 0xa8, 0xc2, 0xac, 0x80, 0x60, 0x56, - 0x5a, 0x6c, 0x8a, 0x9d, 0x9c, 0x93, 0x8f, 0x8b, 0x73, 0x5a, 0x5d, 0x70, 0x7c, 0x8b, 0xa4, 0xa5, - 0x7c, 0x5d, 0x5f, 0x6d, 0x76, 0x8b, 0xa3, 0x9b, 0x7d, 0x70, 0x70, 0x6c, 0x6e, 0x81, 0x90, 0x8c, - 0x8b, 0x92, 0x8a, 0x77, 0x72, 0x78, 0x7e, 0x84, 0x8d, 0x8d, 0x7a, 0x6c, 0x6d, 0x72, 0x78, 0x87, - 0x96, 0x92, 0x85, 0x79, 0x70, 0x66, 0x61, 0x6a, 0x7b, 0x8c, 0x99, 0xa0, 0x9a, 0x88, 0x79, 0x69, - 0x5c, 0x5e, 0x6d, 0x84, 0x94, 0x94, 0x92, 0x8b, 0x80, 0x75, 0x71, 0x79, 0x83, 0x88, 0x89, 0x84, - 0x7e, 0x7b, 0x7a, 0x78, 0x7b, 0x82, 0x82, 0x82, 0x81, 0x7d, 0x7c, 0x7c, 0x7e, 0x82, 0x83, 0x82, - 0x82, 0x7a, 0x76, 0x79, 0x7e, 0x86, 0x8b, 0x8c, 0x86, 0x75, 0x60, 0x56, 0x60, 0x82, 0xb3, 0xcd, - 0xb5, 0x7a, 0x40, 0x27, 0x44, 0x86, 0xc0, 0xcf, 0xad, 0x73, 0x4e, 0x4d, 0x69, 0x85, 0x89, 0x81, - 0x7e, 0x8d, 0x9e, 0x9c, 0x81, 0x58, 0x42, 0x52, 0x7e, 0xac, 0xba, 0xab, 0x87, 0x62, 0x58, 0x63, - 0x7d, 0x97, 0x98, 0x88, 0x78, 0x70, 0x73, 0x76, 0x7c, 0x87, 0x8d, 0x93, 0x93, 0x88, 0x71, 0x5c, - 0x55, 0x5e, 0x75, 0x92, 0xab, 0xb1, 0x99, 0x74, 0x5c, 0x52, 0x59, 0x6c, 0x84, 0x97, 0x9d, 0x9c, - 0x97, 0x8a, 0x77, 0x6d, 0x68, 0x66, 0x69, 0x75, 0x83, 0x8a, 0x91, 0x95, 0x96, 0x92, 0x8b, 0x80, - 0x6e, 0x5e, 0x56, 0x5d, 0x6d, 0x88, 0xa6, 0xb1, 0xa9, 0x9c, 0x88, 0x6b, 0x54, 0x4c, 0x54, 0x65, - 0x7b, 0x97, 0xae, 0xb3, 0xa9, 0x91, 0x75, 0x64, 0x5b, 0x5a, 0x62, 0x6f, 0x83, 0x9a, 0xa8, 0xa7, - 0x9e, 0x8d, 0x76, 0x64, 0x5b, 0x5a, 0x61, 0x73, 0x8f, 0xa6, 0xa3, 0x80, 0x5b, 0x5e, 0x88, 0xb3, - 0xb6, 0x7d, 0x36, 0x1e, 0x53, 0xb6, 0xef, 0xdf, 0x9f, 0x5d, 0x3a, 0x3d, 0x55, 0x67, 0x74, 0x8a, - 0xaa, 0xc0, 0xbb, 0x9d, 0x6d, 0x40, 0x27, 0x33, 0x61, 0xa2, 0xca, 0xca, 0xac, 0x82, 0x64, 0x5a, - 0x5f, 0x6c, 0x81, 0x91, 0x91, 0x88, 0x88, 0x88, 0x7e, 0x71, 0x72, 0x7d, 0x83, 0x89, 0x92, 0x89, - 0x6b, 0x57, 0x65, 0x7c, 0x87, 0x90, 0x9a, 0x94, 0x7d, 0x71, 0x74, 0x79, 0x7c, 0x84, 0x8b, 0x87, - 0x7c, 0x7c, 0x81, 0x81, 0x86, 0x90, 0x94, 0x8c, 0x80, 0x76, 0x6e, 0x63, 0x64, 0x77, 0x8b, 0x98, - 0x9f, 0x99, 0x86, 0x6a, 0x5b, 0x5f, 0x69, 0x7a, 0x91, 0x9c, 0x96, 0x89, 0x7a, 0x6c, 0x6d, 0x77, - 0x87, 0x9b, 0x9a, 0x8b, 0x77, 0x6e, 0x73, 0x7c, 0x83, 0x85, 0x88, 0x8a, 0x7d, 0x71, 0x72, 0x79, - 0x81, 0x84, 0x88, 0x8b, 0x88, 0x80, 0x75, 0x71, 0x76, 0x7e, 0x86, 0x8c, 0x93, 0x92, 0x85, 0x71, - 0x5f, 0x55, 0x5b, 0x6f, 0x83, 0x91, 0x9d, 0xa6, 0x9e, 0x83, 0x6c, 0x63, 0x6c, 0x85, 0x99, 0x9b, - 0x8a, 0x76, 0x6b, 0x69, 0x6f, 0x7e, 0x90, 0x99, 0x95, 0x87, 0x73, 0x61, 0x5a, 0x5b, 0x65, 0x79, - 0x91, 0x9f, 0xa3, 0x98, 0x84, 0x73, 0x6a, 0x6b, 0x7a, 0x8f, 0x96, 0x93, 0x8a, 0x7e, 0x72, 0x6e, - 0x78, 0x87, 0x8b, 0x86, 0x82, 0x79, 0x6a, 0x60, 0x6a, 0x7a, 0x86, 0x92, 0x9c, 0x96, 0x83, 0x74, - 0x6f, 0x6c, 0x6a, 0x75, 0x8a, 0x93, 0x95, 0x99, 0x95, 0x84, 0x7a, 0x78, 0x76, 0x77, 0x77, 0x7a, - 0x7b, 0x7a, 0x7d, 0x87, 0x8b, 0x88, 0x85, 0x80, 0x78, 0x74, 0x73, 0x74, 0x77, 0x7d, 0x88, 0x90, - 0x90, 0x8f, 0x86, 0x78, 0x6d, 0x6d, 0x76, 0x80, 0x82, 0x82, 0x80, 0x7b, 0x7d, 0x81, 0x84, 0x8a, - 0x88, 0x80, 0x7c, 0x7b, 0x7a, 0x7b, 0x83, 0x8a, 0x8c, 0x8b, 0x89, 0x81, 0x74, 0x70, 0x75, 0x7a, - 0x81, 0x86, 0x86, 0x83, 0x7c, 0x76, 0x74, 0x77, 0x7d, 0x84, 0x89, 0x8a, 0x88, 0x80, 0x7a, 0x78, - 0x79, 0x7b, 0x7b, 0x79, 0x75, 0x76, 0x89, 0x9d, 0xa3, 0x98, 0x7a, 0x57, 0x49, 0x61, 0x8b, 0xb3, - 0xc0, 0xa4, 0x74, 0x50, 0x4b, 0x5c, 0x75, 0x8b, 0x93, 0x90, 0x8b, 0x86, 0x7e, 0x75, 0x6d, 0x68, - 0x6a, 0x78, 0x8e, 0x9d, 0xa0, 0x96, 0x7d, 0x65, 0x5c, 0x66, 0x79, 0x8c, 0x94, 0x8a, 0x7c, 0x7a, - 0x7b, 0x82, 0x87, 0x84, 0x81, 0x7a, 0x74, 0x74, 0x73, 0x76, 0x7d, 0x87, 0x90, 0x91, 0x8f, 0x86, - 0x77, 0x69, 0x61, 0x64, 0x71, 0x83, 0x92, 0x99, 0x95, 0x88, 0x79, 0x6f, 0x71, 0x77, 0x7b, 0x7c, - 0x78, 0x78, 0x80, 0x86, 0x87, 0x83, 0x7d, 0x7c, 0x81, 0x84, 0x80, 0x7c, 0x7b, 0x7b, 0x7d, 0x7e, - 0x7e, 0x83, 0x88, 0x87, 0x82, 0x78, 0x74, 0x75, 0x7b, 0x89, 0x8c, 0x83, 0x7d, 0x7a, 0x7a, 0x80, - 0x83, 0x85, 0x85, 0x80, 0x7a, 0x74, 0x61, 0x3f, 0x2b, 0x51, 0xa5, 0xe5, 0xee, 0xcc, 0x8f, 0x47, - 0x26, 0x48, 0x8d, 0xbb, 0xc4, 0xb2, 0x92, 0x64, 0x43, 0x49, 0x68, 0x89, 0x97, 0x90, 0x82, 0x7a, - 0x71, 0x58, 0x4b, 0x5f, 0x81, 0x9a, 0xb6, 0xcf, 0xbb, 0x7a, 0x45, 0x3d, 0x4c, 0x66, 0x97, 0xcf, - 0xdc, 0xb4, 0x81, 0x5f, 0x4a, 0x41, 0x55, 0x84, 0xa2, 0xa3, 0xa3, 0x9e, 0x81, 0x5b, 0x4f, 0x5a, - 0x64, 0x75, 0x93, 0xab, 0xa5, 0x8d, 0x79, 0x6c, 0x62, 0x6e, 0x8c, 0xa3, 0xa2, 0x93, 0x86, 0x74, - 0x68, 0x6d, 0x82, 0x91, 0x8b, 0x81, 0x78, 0x67, 0x5f, 0x6b, 0x7d, 0x8a, 0x90, 0x95, 0x94, 0x87, - 0x77, 0x6f, 0x6b, 0x6c, 0x7e, 0x94, 0x9f, 0x9d, 0x8d, 0x7b, 0x69, 0x5d, 0x66, 0x7d, 0x8d, 0x90, - 0x8b, 0x84, 0x7e, 0x84, 0x8c, 0x8d, 0x84, 0x72, 0x69, 0x6d, 0x7a, 0x8a, 0x99, 0x9b, 0x8d, 0x7c, - 0x71, 0x6b, 0x6b, 0x76, 0x80, 0x82, 0x81, 0x80, 0x82, 0x83, 0x83, 0x81, 0x7c, 0x76, 0x77, 0x7d, - 0x83, 0x85, 0x84, 0x7a, 0x6b, 0x62, 0x67, 0x78, 0x94, 0xaf, 0xb8, 0xa4, 0x79, 0x4c, 0x38, 0x4a, - 0x79, 0xae, 0xc5, 0xb8, 0x8d, 0x61, 0x51, 0x5b, 0x71, 0x85, 0x87, 0x84, 0x83, 0x86, 0x8c, 0x87, - 0x76, 0x6c, 0x70, 0x7d, 0x92, 0xa0, 0x9c, 0x8c, 0x70, 0x58, 0x54, 0x66, 0x86, 0xa2, 0xb0, 0xa6, - 0x8b, 0x6d, 0x59, 0x59, 0x68, 0x7a, 0x8e, 0x9a, 0x99, 0x8b, 0x7c, 0x75, 0x71, 0x6f, 0x71, 0x77, - 0x79, 0x7c, 0x83, 0x85, 0x83, 0x80, 0x84, 0x89, 0x89, 0x85, 0x7a, 0x6c, 0x63, 0x64, 0x72, 0x87, - 0x98, 0xa3, 0xa2, 0x90, 0x75, 0x5e, 0x56, 0x62, 0x78, 0x92, 0xa0, 0x9e, 0x92, 0x7b, 0x65, 0x5d, - 0x5e, 0x6a, 0x7c, 0x92, 0x9d, 0x97, 0x8a, 0x80, 0x77, 0x78, 0x87, 0x93, 0x8d, 0x78, 0x5f, 0x4e, - 0x52, 0x60, 0x5e, 0x56, 0x73, 0xb5, 0xe4, 0xd9, 0xb9, 0x87, 0x42, 0x22, 0x4d, 0xa4, 0xd3, 0xd5, - 0xc9, 0x9f, 0x52, 0x1a, 0x27, 0x59, 0x85, 0x99, 0x9d, 0x95, 0x82, 0x68, 0x55, 0x5d, 0x71, 0x78, - 0x87, 0xa9, 0xc2, 0xaa, 0x78, 0x62, 0x5f, 0x50, 0x5b, 0x97, 0xc7, 0xc0, 0xa1, 0x8c, 0x6c, 0x45, - 0x40, 0x68, 0x91, 0x98, 0x95, 0x97, 0x82, 0x58, 0x45, 0x57, 0x6a, 0x7b, 0x96, 0xa8, 0xa0, 0x86, - 0x74, 0x6d, 0x6d, 0x76, 0x89, 0x9d, 0xa2, 0x97, 0x89, 0x77, 0x66, 0x61, 0x70, 0x85, 0x95, 0x9b, - 0x94, 0x82, 0x67, 0x58, 0x59, 0x69, 0x7e, 0x93, 0x9c, 0x96, 0x89, 0x7d, 0x78, 0x77, 0x7b, 0x84, - 0x8a, 0x86, 0x7d, 0x74, 0x69, 0x63, 0x6f, 0x89, 0x9e, 0xa7, 0x9d, 0x83, 0x5e, 0x41, 0x41, 0x61, - 0x95, 0xc1, 0xd7, 0xc4, 0x8b, 0x49, 0x22, 0x28, 0x5b, 0x9d, 0xcf, 0xda, 0xba, 0x86, 0x55, 0x3c, - 0x42, 0x5d, 0x85, 0xa9, 0xb9, 0xb3, 0x98, 0x73, 0x57, 0x46, 0x45, 0x53, 0x6b, 0x8e, 0xb5, 0xce, - 0xcd, 0xa9, 0x68, 0x2a, 0x1f, 0x52, 0xa0, 0xde, 0xe5, 0xb4, 0x6d, 0x3a, 0x37, 0x55, 0x75, 0x8f, - 0x9d, 0xa1, 0x97, 0x7e, 0x67, 0x5b, 0x5f, 0x6f, 0x83, 0x91, 0x9e, 0xa7, 0x9d, 0x7d, 0x5a, 0x4c, - 0x5a, 0x7e, 0xa9, 0xbf, 0xb8, 0x9c, 0x75, 0x56, 0x49, 0x51, 0x6f, 0x99, 0xb1, 0xb0, 0x9d, 0x82, - 0x68, 0x5b, 0x5e, 0x6c, 0x7c, 0x8a, 0x92, 0x8f, 0x7c, 0x6c, 0x68, 0x6f, 0x7c, 0x8f, 0x9c, 0x9b, - 0x90, 0x81, 0x72, 0x66, 0x65, 0x74, 0x89, 0x93, 0x8e, 0x86, 0x7c, 0x79, 0x78, 0x79, 0x84, 0x8f, - 0x95, 0x8f, 0x7e, 0x6f, 0x6b, 0x6c, 0x70, 0x7d, 0x8f, 0x9a, 0x99, 0x91, 0x87, 0x7a, 0x74, 0x6f, - 0x68, 0x5c, 0x53, 0x56, 0x55, 0x4e, 0x5f, 0x9b, 0xd7, 0xe9, 0xcf, 0x99, 0x56, 0x2b, 0x3d, 0x85, - 0xc3, 0xd5, 0xcb, 0xae, 0x72, 0x33, 0x23, 0x44, 0x6f, 0x8e, 0x9e, 0xa1, 0x91, 0x75, 0x5c, 0x55, - 0x59, 0x5f, 0x72, 0x96, 0xb9, 0xb9, 0x9a, 0x80, 0x6d, 0x57, 0x4f, 0x73, 0xa3, 0xb2, 0xaa, 0x9e, - 0x89, 0x62, 0x4c, 0x5c, 0x7a, 0x86, 0x89, 0x92, 0x89, 0x6c, 0x5a, 0x61, 0x6b, 0x6f, 0x82, 0x9c, - 0xa4, 0x98, 0x87, 0x7a, 0x6b, 0x60, 0x6d, 0x8c, 0x9d, 0xa1, 0x9f, 0x91, 0x79, 0x65, 0x63, 0x6e, - 0x7a, 0x86, 0x90, 0x8c, 0x7b, 0x6f, 0x6a, 0x68, 0x6c, 0x7b, 0x8d, 0x93, 0x8f, 0x88, 0x7b, 0x6f, - 0x6e, 0x7b, 0x8d, 0x94, 0x92, 0x88, 0x77, 0x6c, 0x6c, 0x76, 0x7d, 0x83, 0x83, 0x82, 0x80, 0x7c, - 0x7c, 0x7d, 0x80, 0x82, 0x86, 0x88, 0x84, 0x81, 0x7d, 0x79, 0x79, 0x7d, 0x88, 0x93, 0x95, 0x8e, - 0x80, 0x72, 0x6b, 0x6b, 0x6f, 0x71, 0x6d, 0x71, 0x84, 0x9f, 0xb4, 0xac, 0x86, 0x56, 0x3d, 0x4b, - 0x7e, 0xac, 0xbe, 0xb4, 0x94, 0x73, 0x5c, 0x54, 0x5b, 0x6e, 0x8b, 0x9f, 0xa2, 0x98, 0x88, 0x76, - 0x6a, 0x5e, 0x5b, 0x66, 0x7d, 0x98, 0xa7, 0xa2, 0x8b, 0x71, 0x60, 0x61, 0x6f, 0x80, 0x8c, 0x93, - 0x8f, 0x7e, 0x72, 0x72, 0x79, 0x82, 0x8c, 0x93, 0x8a, 0x78, 0x71, 0x6f, 0x6b, 0x6b, 0x7a, 0x8d, - 0x93, 0x90, 0x86, 0x78, 0x68, 0x65, 0x71, 0x80, 0x87, 0x8e, 0x91, 0x8a, 0x7e, 0x7c, 0x81, 0x85, - 0x8b, 0x8f, 0x8d, 0x83, 0x7b, 0x76, 0x72, 0x71, 0x76, 0x7c, 0x80, 0x83, 0x84, 0x7e, 0x74, 0x75, - 0x7a, 0x79, 0x75, 0x7e, 0x90, 0x9c, 0x9d, 0x91, 0x7c, 0x67, 0x5d, 0x61, 0x60, 0x51, 0x4b, 0x73, - 0xbb, 0xe5, 0xdc, 0xb0, 0x6a, 0x29, 0x1a, 0x49, 0x98, 0xc8, 0xd1, 0xc2, 0x90, 0x53, 0x2b, 0x34, - 0x5e, 0x83, 0x9a, 0xa1, 0x9e, 0x8f, 0x73, 0x60, 0x5d, 0x66, 0x6d, 0x81, 0xa9, 0xc3, 0xb0, 0x86, - 0x68, 0x54, 0x3f, 0x4c, 0x88, 0xbb, 0xbd, 0xa9, 0x96, 0x72, 0x47, 0x42, 0x6b, 0x8a, 0x8a, 0x92, - 0xa1, 0x8d, 0x66, 0x5b, 0x67, 0x67, 0x67, 0x84, 0xa3, 0xa1, 0x90, 0x89, 0x7c, 0x62, 0x5e, 0x76, - 0x8f, 0x98, 0x9a, 0x99, 0x88, 0x6f, 0x66, 0x6b, 0x6f, 0x75, 0x87, 0x94, 0x8f, 0x87, 0x82, 0x77, - 0x69, 0x68, 0x75, 0x83, 0x8a, 0x8d, 0x8b, 0x82, 0x78, 0x7b, 0x86, 0x8c, 0x89, 0x82, 0x76, 0x6a, - 0x67, 0x74, 0x89, 0x96, 0x95, 0x89, 0x76, 0x67, 0x62, 0x6b, 0x7b, 0x89, 0x8f, 0x90, 0x8f, 0x90, - 0x96, 0x99, 0x8f, 0x80, 0x70, 0x64, 0x60, 0x5e, 0x63, 0x6e, 0x7a, 0x92, 0xac, 0xb7, 0xad, 0x8d, - 0x68, 0x50, 0x4d, 0x61, 0x7c, 0x91, 0x9d, 0x9d, 0x95, 0x88, 0x79, 0x70, 0x71, 0x76, 0x7c, 0x7e, - 0x7c, 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7b, 0x81, 0x88, 0x8c, 0x8d, 0x83, 0x74, 0x6d, 0x6b, 0x71, - 0x7d, 0x8b, 0x95, 0x92, 0x88, 0x7c, 0x6e, 0x66, 0x6b, 0x7a, 0x8c, 0x99, 0x9f, 0x99, 0x85, 0x6e, - 0x5d, 0x59, 0x64, 0x79, 0x8d, 0x95, 0x91, 0x87, 0x7b, 0x76, 0x76, 0x7e, 0x87, 0x88, 0x86, 0x7e, - 0x79, 0x74, 0x73, 0x79, 0x87, 0x95, 0x98, 0x92, 0x86, 0x79, 0x6e, 0x66, 0x69, 0x72, 0x84, 0x92, - 0x97, 0x92, 0x84, 0x73, 0x68, 0x68, 0x74, 0x86, 0x94, 0x96, 0x92, 0x85, 0x6a, 0x40, 0x22, 0x3c, - 0x8c, 0xd5, 0xf1, 0xdd, 0x9e, 0x53, 0x24, 0x30, 0x68, 0xa3, 0xc6, 0xc8, 0xa7, 0x74, 0x4a, 0x3b, - 0x45, 0x5e, 0x81, 0x9c, 0xae, 0xaf, 0x9e, 0x7e, 0x5b, 0x45, 0x43, 0x56, 0x81, 0xb7, 0xd4, 0xc1, - 0x9a, 0x72, 0x50, 0x40, 0x51, 0x7d, 0x9d, 0xa4, 0xa2, 0x95, 0x7c, 0x63, 0x62, 0x70, 0x79, 0x83, - 0x93, 0x99, 0x8d, 0x78, 0x6e, 0x68, 0x5d, 0x60, 0x78, 0x96, 0xa1, 0xa3, 0x9f, 0x8b, 0x6f, 0x5f, - 0x66, 0x77, 0x8a, 0x9c, 0xa1, 0x93, 0x7e, 0x6e, 0x6b, 0x6c, 0x75, 0x86, 0x91, 0x92, 0x8a, 0x7b, - 0x6d, 0x63, 0x61, 0x6f, 0x86, 0x99, 0xa4, 0xa4, 0x98, 0x7d, 0x66, 0x5d, 0x5d, 0x6b, 0x81, 0x92, - 0x99, 0x92, 0x85, 0x7a, 0x77, 0x7b, 0x86, 0x8d, 0x8c, 0x86, 0x81, 0x7a, 0x78, 0x7a, 0x81, 0x86, - 0x8b, 0x8d, 0x8a, 0x7c, 0x69, 0x59, 0x59, 0x72, 0x96, 0xb3, 0xb6, 0x9b, 0x73, 0x55, 0x55, 0x6e, - 0x8c, 0x9a, 0x95, 0x86, 0x78, 0x75, 0x77, 0x79, 0x7c, 0x82, 0x85, 0x86, 0x86, 0x87, 0x83, 0x7c, - 0x71, 0x67, 0x69, 0x75, 0x89, 0x9a, 0x9c, 0x8f, 0x7a, 0x69, 0x65, 0x6e, 0x7e, 0x8c, 0x91, 0x8b, - 0x82, 0x7b, 0x7b, 0x7a, 0x7b, 0x7d, 0x7c, 0x78, 0x77, 0x79, 0x84, 0x89, 0x85, 0x7c, 0x6f, 0x68, - 0x6e, 0x80, 0x93, 0x9d, 0x98, 0x89, 0x73, 0x65, 0x66, 0x70, 0x7d, 0x8b, 0x93, 0x91, 0x89, 0x81, - 0x7d, 0x79, 0x77, 0x78, 0x7b, 0x7e, 0x83, 0x88, 0x8b, 0x87, 0x83, 0x80, 0x7b, 0x78, 0x74, 0x73, - 0x73, 0x77, 0x7e, 0x8d, 0x9b, 0xa1, 0x97, 0x77, 0x4a, 0x28, 0x32, 0x6f, 0xc3, 0xf7, 0xee, 0xb2, - 0x63, 0x2f, 0x2b, 0x4e, 0x7e, 0xa6, 0xb8, 0xaf, 0x95, 0x7a, 0x6d, 0x67, 0x5f, 0x5e, 0x6a, 0x7e, - 0x90, 0x99, 0x97, 0x84, 0x67, 0x53, 0x56, 0x74, 0x99, 0xb6, 0xbc, 0xa0, 0x74, 0x50, 0x4a, 0x5a, - 0x77, 0x98, 0xaf, 0xb0, 0x9c, 0x87, 0x73, 0x63, 0x56, 0x57, 0x68, 0x82, 0x99, 0xa9, 0xa9, 0x95, - 0x74, 0x59, 0x4c, 0x52, 0x6b, 0x8e, 0xa6, 0xa8, 0x9b, 0x85, 0x72, 0x66, 0x65, 0x6f, 0x83, 0x95, - 0xa0, 0xa2, 0x96, 0x83, 0x6f, 0x64, 0x66, 0x73, 0x87, 0x92, 0x92, 0x85, 0x74, 0x69, 0x68, 0x74, - 0x88, 0x98, 0x9c, 0x95, 0x86, 0x75, 0x6c, 0x68, 0x69, 0x73, 0x7e, 0x89, 0x8f, 0x92, 0x92, 0x8e, - 0x87, 0x78, 0x70, 0x6b, 0x71, 0x80, 0x93, 0x9e, 0x94, 0x77, 0x58, 0x54, 0x72, 0xa0, 0xc0, 0xb3, - 0x83, 0x4c, 0x35, 0x50, 0x85, 0xb1, 0xbd, 0xa6, 0x7c, 0x60, 0x61, 0x6c, 0x76, 0x79, 0x74, 0x72, - 0x7d, 0x92, 0xa2, 0xa1, 0x8b, 0x68, 0x51, 0x52, 0x6b, 0x91, 0xad, 0xb2, 0x9e, 0x7e, 0x65, 0x5e, - 0x69, 0x7b, 0x88, 0x8a, 0x86, 0x84, 0x86, 0x8a, 0x8a, 0x82, 0x74, 0x6d, 0x70, 0x7d, 0x8e, 0x94, - 0x8d, 0x7c, 0x6c, 0x69, 0x70, 0x7c, 0x8c, 0x90, 0x8b, 0x81, 0x77, 0x72, 0x71, 0x77, 0x80, 0x83, - 0x83, 0x84, 0x87, 0x89, 0x89, 0x86, 0x7b, 0x73, 0x71, 0x74, 0x7d, 0x86, 0x8a, 0x88, 0x84, 0x84, - 0x80, 0x7a, 0x74, 0x73, 0x76, 0x79, 0x80, 0x8a, 0x92, 0x94, 0x8e, 0x81, 0x67, 0x45, 0x2b, 0x35, - 0x6d, 0xb5, 0xe1, 0xdf, 0xb9, 0x77, 0x38, 0x25, 0x4c, 0x8b, 0xb6, 0xc7, 0xbf, 0xa1, 0x74, 0x59, - 0x54, 0x54, 0x57, 0x67, 0x86, 0x9f, 0xa8, 0xa8, 0x9a, 0x77, 0x4f, 0x3e, 0x4d, 0x6b, 0x8c, 0xab, - 0xb8, 0xa2, 0x7d, 0x66, 0x5b, 0x5a, 0x64, 0x7c, 0x8e, 0x91, 0x96, 0x9d, 0x98, 0x88, 0x78, 0x6b, - 0x63, 0x66, 0x76, 0x8e, 0x99, 0x96, 0x8e, 0x82, 0x71, 0x6a, 0x6b, 0x73, 0x7a, 0x82, 0x8b, 0x8d, - 0x89, 0x82, 0x7a, 0x74, 0x72, 0x78, 0x82, 0x8c, 0x90, 0x91, 0x8b, 0x80, 0x73, 0x6b, 0x6a, 0x72, - 0x83, 0x91, 0x9d, 0x9e, 0x91, 0x7b, 0x66, 0x5e, 0x60, 0x6b, 0x80, 0x96, 0xa3, 0x9f, 0x8e, 0x7a, - 0x6b, 0x66, 0x66, 0x6e, 0x7b, 0x8b, 0x98, 0x9c, 0x99, 0x8e, 0x81, 0x6d, 0x55, 0x4b, 0x57, 0x81, - 0xaf, 0xc9, 0xc3, 0x98, 0x61, 0x3d, 0x41, 0x68, 0x94, 0xae, 0xad, 0x97, 0x7d, 0x70, 0x70, 0x74, - 0x77, 0x77, 0x77, 0x7a, 0x82, 0x8e, 0x93, 0x8f, 0x83, 0x72, 0x66, 0x66, 0x73, 0x89, 0x9a, 0x9d, - 0x92, 0x7e, 0x6b, 0x5f, 0x62, 0x72, 0x84, 0x90, 0x91, 0x8b, 0x87, 0x86, 0x87, 0x86, 0x7d, 0x72, - 0x6a, 0x6d, 0x78, 0x89, 0x94, 0x98, 0x94, 0x87, 0x77, 0x6b, 0x67, 0x6e, 0x76, 0x7e, 0x87, 0x8c, - 0x8c, 0x87, 0x82, 0x7d, 0x76, 0x70, 0x6e, 0x75, 0x80, 0x88, 0x8c, 0x8a, 0x85, 0x7e, 0x7a, 0x75, - 0x77, 0x7c, 0x82, 0x83, 0x82, 0x7e, 0x7a, 0x77, 0x78, 0x7c, 0x7e, 0x82, 0x86, 0x8a, 0x88, 0x7e, - 0x71, 0x65, 0x62, 0x67, 0x75, 0x88, 0x94, 0x92, 0x82, 0x72, 0x6d, 0x74, 0x85, 0x97, 0x99, 0x8a, - 0x77, 0x6d, 0x73, 0x7e, 0x8f, 0x97, 0x8b, 0x73, 0x63, 0x65, 0x75, 0x8a, 0x9b, 0x9c, 0x90, 0x7e, - 0x73, 0x72, 0x78, 0x86, 0x8d, 0x86, 0x78, 0x74, 0x74, 0x78, 0x83, 0x89, 0x85, 0x7c, 0x79, 0x7e, - 0x85, 0x89, 0x8e, 0x89, 0x7b, 0x74, 0x71, 0x73, 0x77, 0x82, 0x8a, 0x86, 0x7c, 0x77, 0x75, 0x73, - 0x75, 0x7e, 0x88, 0x88, 0x86, 0x86, 0x83, 0x7e, 0x7c, 0x7a, 0x75, 0x75, 0x7c, 0x86, 0x8b, 0x8a, - 0x8a, 0x87, 0x7c, 0x74, 0x71, 0x77, 0x83, 0x8c, 0x90, 0x8b, 0x81, 0x75, 0x71, 0x72, 0x76, 0x80, - 0x84, 0x84, 0x80, 0x7d, 0x7d, 0x7c, 0x80, 0x83, 0x86, 0x88, 0x82, 0x7a, 0x6e, 0x67, 0x67, 0x6d, - 0x7e, 0x8d, 0x93, 0x8d, 0x82, 0x77, 0x72, 0x78, 0x85, 0x90, 0x8f, 0x82, 0x75, 0x6d, 0x73, 0x83, - 0x91, 0x96, 0x8a, 0x7c, 0x76, 0x76, 0x80, 0x88, 0x88, 0x83, 0x7c, 0x7a, 0x7d, 0x86, 0x90, 0x93, - 0x88, 0x76, 0x67, 0x61, 0x66, 0x74, 0x85, 0x91, 0x96, 0x93, 0x89, 0x82, 0x7d, 0x7c, 0x7a, 0x74, - 0x6f, 0x71, 0x78, 0x86, 0x91, 0x95, 0x91, 0x86, 0x7a, 0x73, 0x73, 0x77, 0x7a, 0x7c, 0x7c, 0x7b, - 0x7d, 0x83, 0x8b, 0x90, 0x8f, 0x8a, 0x81, 0x78, 0x75, 0x78, 0x7c, 0x80, 0x81, 0x80, 0x83, 0x86, - 0x8b, 0x8d, 0x89, 0x82, 0x78, 0x72, 0x6f, 0x71, 0x78, 0x83, 0x8a, 0x8d, 0x8b, 0x82, 0x76, 0x69, - 0x65, 0x6b, 0x76, 0x85, 0x8d, 0x89, 0x81, 0x7b, 0x79, 0x7b, 0x85, 0x8d, 0x8d, 0x84, 0x79, 0x73, - 0x71, 0x74, 0x7e, 0x85, 0x81, 0x7a, 0x7c, 0x85, 0x8e, 0x94, 0x94, 0x8b, 0x77, 0x69, 0x6a, 0x77, - 0x86, 0x8e, 0x8f, 0x86, 0x76, 0x6f, 0x79, 0x85, 0x88, 0x87, 0x81, 0x73, 0x6d, 0x75, 0x83, 0x89, - 0x8b, 0x8c, 0x87, 0x7d, 0x7b, 0x83, 0x84, 0x7c, 0x75, 0x71, 0x6e, 0x71, 0x83, 0x95, 0x95, 0x8d, - 0x84, 0x79, 0x71, 0x6f, 0x77, 0x81, 0x84, 0x84, 0x85, 0x82, 0x81, 0x88, 0x8c, 0x86, 0x7c, 0x77, - 0x77, 0x79, 0x82, 0x8d, 0x92, 0x8b, 0x82, 0x7b, 0x76, 0x76, 0x7c, 0x80, 0x7e, 0x7b, 0x78, 0x7a, - 0x7d, 0x84, 0x89, 0x87, 0x7e, 0x78, 0x78, 0x79, 0x7d, 0x83, 0x83, 0x7c, 0x73, 0x6e, 0x75, 0x82, - 0x8e, 0x91, 0x88, 0x79, 0x6e, 0x6d, 0x77, 0x84, 0x8c, 0x8c, 0x86, 0x7e, 0x7c, 0x82, 0x88, 0x89, - 0x80, 0x74, 0x6b, 0x6d, 0x7a, 0x8d, 0x97, 0x94, 0x8b, 0x7e, 0x73, 0x76, 0x80, 0x8b, 0x8e, 0x88, - 0x7c, 0x73, 0x70, 0x73, 0x7a, 0x82, 0x84, 0x81, 0x7c, 0x7d, 0x84, 0x8a, 0x8a, 0x85, 0x7a, 0x74, - 0x75, 0x79, 0x82, 0x8a, 0x8e, 0x88, 0x7d, 0x77, 0x77, 0x79, 0x7e, 0x82, 0x7e, 0x7b, 0x7d, 0x84, - 0x8b, 0x8e, 0x8d, 0x87, 0x7d, 0x77, 0x78, 0x80, 0x85, 0x87, 0x85, 0x7e, 0x78, 0x76, 0x7d, 0x85, - 0x89, 0x87, 0x81, 0x79, 0x73, 0x76, 0x7d, 0x86, 0x8a, 0x88, 0x80, 0x70, 0x68, 0x6d, 0x77, 0x82, - 0x89, 0x8c, 0x85, 0x79, 0x73, 0x76, 0x7e, 0x89, 0x94, 0x91, 0x81, 0x73, 0x6a, 0x67, 0x6d, 0x7c, - 0x87, 0x88, 0x84, 0x81, 0x82, 0x84, 0x89, 0x8a, 0x83, 0x77, 0x6e, 0x6e, 0x7a, 0x8b, 0x94, 0x95, - 0x8e, 0x7b, 0x6e, 0x6f, 0x7a, 0x83, 0x86, 0x85, 0x7d, 0x75, 0x79, 0x85, 0x89, 0x88, 0x83, 0x77, - 0x6c, 0x68, 0x73, 0x82, 0x89, 0x8c, 0x8c, 0x86, 0x7d, 0x7e, 0x84, 0x81, 0x79, 0x77, 0x76, 0x73, - 0x79, 0x87, 0x8c, 0x85, 0x7c, 0x78, 0x72, 0x70, 0x7c, 0x89, 0x8e, 0x8b, 0x84, 0x7c, 0x77, 0x7a, - 0x85, 0x8a, 0x88, 0x84, 0x7d, 0x77, 0x74, 0x79, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x83, 0x87, - 0x85, 0x80, 0x7a, 0x7a, 0x7d, 0x84, 0x86, 0x82, 0x7b, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x82, 0x81, - 0x7c, 0x7b, 0x80, 0x85, 0x87, 0x83, 0x7a, 0x71, 0x71, 0x77, 0x80, 0x86, 0x87, 0x85, 0x7e, 0x79, - 0x7a, 0x7e, 0x83, 0x83, 0x80, 0x7a, 0x75, 0x75, 0x7e, 0x8b, 0x90, 0x8d, 0x83, 0x75, 0x70, 0x72, - 0x7c, 0x86, 0x8b, 0x89, 0x83, 0x7d, 0x7b, 0x80, 0x80, 0x7a, 0x73, 0x71, 0x75, 0x7c, 0x86, 0x8d, - 0x8e, 0x88, 0x7e, 0x76, 0x6f, 0x6f, 0x73, 0x79, 0x81, 0x84, 0x85, 0x85, 0x84, 0x84, 0x84, 0x7e, - 0x76, 0x72, 0x73, 0x79, 0x82, 0x8a, 0x8d, 0x8b, 0x85, 0x81, 0x7e, 0x7e, 0x81, 0x81, 0x7b, 0x75, - 0x76, 0x7b, 0x83, 0x8e, 0x93, 0x93, 0x8e, 0x84, 0x7b, 0x73, 0x70, 0x71, 0x73, 0x76, 0x79, 0x7d, - 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x87, 0x86, 0x81, 0x7b, 0x76, 0x74, 0x75, 0x7b, 0x83, 0x84, - 0x83, 0x7d, 0x7a, 0x7c, 0x80, 0x81, 0x80, 0x7e, 0x7b, 0x7b, 0x80, 0x85, 0x89, 0x8b, 0x88, 0x7e, - 0x79, 0x78, 0x7a, 0x7e, 0x81, 0x84, 0x82, 0x7b, 0x7a, 0x7b, 0x80, 0x83, 0x84, 0x82, 0x7c, 0x7b, - 0x7e, 0x84, 0x85, 0x83, 0x7d, 0x76, 0x71, 0x75, 0x7d, 0x83, 0x86, 0x86, 0x84, 0x82, 0x81, 0x81, - 0x7c, 0x76, 0x73, 0x72, 0x73, 0x79, 0x84, 0x8c, 0x8e, 0x8a, 0x81, 0x79, 0x75, 0x78, 0x80, 0x86, - 0x88, 0x85, 0x7c, 0x74, 0x75, 0x7a, 0x81, 0x85, 0x85, 0x81, 0x7e, 0x83, 0x88, 0x87, 0x84, 0x7c, - 0x70, 0x64, 0x64, 0x75, 0x90, 0x9e, 0x9d, 0x94, 0x89, 0x82, 0x74, 0x5f, 0x5b, 0x72, 0x94, 0x96, - 0x7b, 0x6b, 0x78, 0x92, 0x97, 0x89, 0x77, 0x6d, 0x6f, 0x77, 0x8a, 0xa2, 0xad, 0x97, 0x6c, 0x4d, - 0x4e, 0x69, 0x8b, 0xa2, 0xa6, 0x95, 0x7a, 0x68, 0x69, 0x7b, 0x8a, 0x86, 0x79, 0x74, 0x78, 0x84, - 0x8f, 0x94, 0x8c, 0x74, 0x5f, 0x60, 0x74, 0x93, 0xa2, 0x9a, 0x87, 0x71, 0x64, 0x63, 0x70, 0x84, - 0x8e, 0x88, 0x7a, 0x76, 0x7c, 0x86, 0x8c, 0x8a, 0x82, 0x77, 0x70, 0x76, 0x84, 0x8c, 0x85, 0x72, - 0x64, 0x6b, 0x84, 0x97, 0x9b, 0x90, 0x83, 0x81, 0x7c, 0x74, 0x6f, 0x79, 0x88, 0x8a, 0x83, 0x84, - 0x8d, 0x89, 0x67, 0x3c, 0x2f, 0x57, 0x9b, 0xce, 0xdf, 0xc9, 0x92, 0x4a, 0x19, 0x17, 0x48, 0x90, - 0xbf, 0xc5, 0xad, 0x91, 0x7d, 0x70, 0x66, 0x60, 0x5d, 0x67, 0x81, 0x9b, 0xba, 0xc9, 0xb2, 0x75, - 0x3a, 0x2c, 0x4a, 0x7c, 0xb4, 0xce, 0xc3, 0x97, 0x63, 0x46, 0x46, 0x5b, 0x74, 0x82, 0x86, 0x91, - 0x9b, 0x9a, 0x8f, 0x7c, 0x67, 0x56, 0x5b, 0x79, 0x97, 0xa5, 0x9e, 0x84, 0x65, 0x58, 0x63, 0x79, - 0x8f, 0x9c, 0x9c, 0x8f, 0x7c, 0x73, 0x6d, 0x6a, 0x6e, 0x76, 0x80, 0x88, 0x91, 0x94, 0x8c, 0x7e, - 0x71, 0x69, 0x6b, 0x77, 0x88, 0x94, 0x94, 0x8c, 0x80, 0x73, 0x70, 0x77, 0x7a, 0x7b, 0x7b, 0x7d, - 0x83, 0x87, 0x89, 0x85, 0x7a, 0x70, 0x6b, 0x72, 0x82, 0x91, 0x99, 0x96, 0x85, 0x65, 0x40, 0x37, - 0x58, 0x9b, 0xd2, 0xd5, 0xa5, 0x68, 0x42, 0x3f, 0x54, 0x6b, 0x8a, 0xa7, 0xb4, 0xa9, 0x90, 0x7a, - 0x72, 0x69, 0x58, 0x4f, 0x62, 0x94, 0xbd, 0xbf, 0x9c, 0x6f, 0x52, 0x46, 0x4a, 0x66, 0x96, 0xb8, - 0xb3, 0x8e, 0x6a, 0x60, 0x6b, 0x74, 0x70, 0x70, 0x7a, 0x89, 0x93, 0x93, 0x8f, 0x86, 0x73, 0x60, - 0x61, 0x7a, 0x98, 0xa4, 0x9b, 0x85, 0x71, 0x68, 0x6b, 0x78, 0x84, 0x89, 0x85, 0x7c, 0x7b, 0x84, - 0x8b, 0x87, 0x79, 0x6c, 0x65, 0x69, 0x78, 0x8e, 0x98, 0x92, 0x85, 0x75, 0x6f, 0x71, 0x7c, 0x87, - 0x8d, 0x8d, 0x86, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x80, 0x85, 0x8c, 0x8e, 0x87, 0x6f, 0x45, 0x27, - 0x38, 0x77, 0xc1, 0xe1, 0xcc, 0x94, 0x58, 0x2f, 0x29, 0x51, 0x8f, 0xb9, 0xbe, 0xab, 0x94, 0x81, - 0x70, 0x65, 0x5d, 0x5f, 0x70, 0x93, 0xba, 0xc4, 0xae, 0x88, 0x58, 0x35, 0x38, 0x64, 0x99, 0xb5, - 0xb2, 0x99, 0x79, 0x5e, 0x54, 0x5f, 0x70, 0x81, 0x8e, 0x92, 0x8d, 0x88, 0x83, 0x78, 0x6c, 0x68, - 0x6d, 0x7c, 0x96, 0xac, 0xa8, 0x8f, 0x71, 0x60, 0x5e, 0x6c, 0x87, 0x9c, 0xa0, 0x97, 0x89, 0x79, - 0x6f, 0x6d, 0x72, 0x79, 0x7d, 0x83, 0x85, 0x84, 0x83, 0x80, 0x7a, 0x75, 0x77, 0x7e, 0x84, 0x87, - 0x86, 0x81, 0x7e, 0x82, 0x83, 0x82, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x82, 0x82, 0x81, 0x7d, 0x80, - 0x89, 0x91, 0x8e, 0x6f, 0x3d, 0x23, 0x47, 0x9b, 0xe2, 0xea, 0xb9, 0x75, 0x43, 0x2e, 0x36, 0x5c, - 0x95, 0xc0, 0xc1, 0xa2, 0x87, 0x82, 0x80, 0x6c, 0x50, 0x49, 0x69, 0x9a, 0xb9, 0xba, 0xa7, 0x85, - 0x5a, 0x3d, 0x46, 0x73, 0xa1, 0xb4, 0xa6, 0x85, 0x69, 0x5e, 0x60, 0x67, 0x74, 0x8a, 0x9b, 0x9d, - 0x93, 0x88, 0x79, 0x66, 0x58, 0x5c, 0x75, 0x9a, 0xb4, 0xb4, 0x9b, 0x7a, 0x60, 0x56, 0x5e, 0x78, - 0x94, 0xa0, 0x9c, 0x8b, 0x79, 0x6c, 0x69, 0x6e, 0x76, 0x80, 0x8c, 0x94, 0x8e, 0x83, 0x75, 0x6b, - 0x6b, 0x76, 0x8a, 0x99, 0x9c, 0x94, 0x81, 0x6c, 0x63, 0x67, 0x76, 0x89, 0x95, 0x96, 0x8d, 0x86, - 0x7c, 0x75, 0x70, 0x71, 0x76, 0x82, 0x93, 0xa1, 0x9a, 0x72, 0x3d, 0x29, 0x51, 0xa2, 0xe2, 0xe7, - 0xa9, 0x4e, 0x1d, 0x2d, 0x64, 0x9d, 0xb4, 0xab, 0x9a, 0x8e, 0x86, 0x7e, 0x72, 0x65, 0x58, 0x57, - 0x6d, 0x95, 0xbc, 0xc6, 0xa5, 0x6a, 0x3a, 0x34, 0x59, 0x8d, 0xae, 0xb0, 0x9c, 0x81, 0x6a, 0x61, - 0x67, 0x77, 0x83, 0x85, 0x84, 0x87, 0x92, 0x95, 0x88, 0x71, 0x60, 0x63, 0x7b, 0x96, 0xa5, 0xa3, - 0x8e, 0x70, 0x5c, 0x5a, 0x6b, 0x86, 0x9a, 0x9e, 0x92, 0x84, 0x77, 0x70, 0x6d, 0x6c, 0x70, 0x77, - 0x83, 0x8e, 0x91, 0x8c, 0x83, 0x76, 0x71, 0x76, 0x83, 0x90, 0x94, 0x8f, 0x84, 0x78, 0x71, 0x72, - 0x78, 0x82, 0x8b, 0x8c, 0x87, 0x7d, 0x73, 0x63, 0x4f, 0x4a, 0x65, 0x94, 0xba, 0xc1, 0xab, 0x85, - 0x58, 0x3f, 0x49, 0x6b, 0x91, 0xae, 0xb7, 0xa8, 0x8c, 0x76, 0x6e, 0x69, 0x65, 0x6f, 0x85, 0x99, - 0xa5, 0xa1, 0x8e, 0x6f, 0x54, 0x4d, 0x5c, 0x7b, 0x9d, 0xae, 0xa8, 0x8e, 0x6f, 0x5a, 0x53, 0x5c, - 0x72, 0x86, 0x94, 0x9b, 0x98, 0x8b, 0x7a, 0x71, 0x6e, 0x6f, 0x79, 0x8a, 0x99, 0x9e, 0x94, 0x82, - 0x70, 0x66, 0x69, 0x75, 0x88, 0x97, 0x9d, 0x94, 0x82, 0x71, 0x6a, 0x68, 0x6d, 0x79, 0x86, 0x8d, - 0x90, 0x8c, 0x83, 0x75, 0x6b, 0x69, 0x6f, 0x7d, 0x90, 0x9a, 0x9a, 0x8d, 0x77, 0x67, 0x64, 0x6f, - 0x81, 0x91, 0x9a, 0x94, 0x85, 0x76, 0x74, 0x7d, 0x84, 0x76, 0x55, 0x3a, 0x4d, 0x8f, 0xcf, 0xdd, - 0xb2, 0x73, 0x45, 0x36, 0x48, 0x70, 0xa5, 0xc4, 0xb8, 0x91, 0x71, 0x6f, 0x78, 0x75, 0x6b, 0x68, - 0x74, 0x8e, 0xa8, 0xae, 0x9b, 0x76, 0x54, 0x47, 0x54, 0x7b, 0xa8, 0xbe, 0xae, 0x84, 0x5f, 0x51, - 0x5a, 0x6a, 0x7a, 0x8b, 0x96, 0x9c, 0x9a, 0x8f, 0x7c, 0x68, 0x5a, 0x5c, 0x70, 0x91, 0xac, 0xb0, - 0x9d, 0x79, 0x5b, 0x53, 0x61, 0x78, 0x8e, 0x9b, 0x98, 0x8a, 0x7a, 0x71, 0x72, 0x76, 0x79, 0x7a, - 0x7e, 0x88, 0x8f, 0x90, 0x88, 0x7a, 0x71, 0x6f, 0x77, 0x85, 0x8c, 0x8b, 0x82, 0x75, 0x6e, 0x73, - 0x80, 0x8b, 0x91, 0x8e, 0x87, 0x82, 0x83, 0x80, 0x69, 0x44, 0x2e, 0x4a, 0x8f, 0xd4, 0xec, 0xc6, - 0x81, 0x45, 0x27, 0x30, 0x5c, 0x9a, 0xc7, 0xc5, 0xa5, 0x83, 0x71, 0x6d, 0x67, 0x61, 0x61, 0x75, - 0x97, 0xb7, 0xc0, 0xa8, 0x76, 0x48, 0x32, 0x40, 0x6f, 0xa7, 0xc6, 0xbf, 0x9d, 0x71, 0x54, 0x4f, - 0x5c, 0x6e, 0x7d, 0x8a, 0x95, 0x9b, 0x98, 0x8b, 0x77, 0x66, 0x60, 0x6a, 0x82, 0x9b, 0xab, 0xa7, - 0x8e, 0x6e, 0x5a, 0x5b, 0x6d, 0x89, 0x9f, 0xa3, 0x96, 0x81, 0x71, 0x6c, 0x6e, 0x76, 0x7d, 0x84, - 0x89, 0x8a, 0x87, 0x7d, 0x74, 0x6d, 0x6a, 0x74, 0x87, 0x97, 0x9d, 0x94, 0x85, 0x74, 0x69, 0x69, - 0x73, 0x82, 0x8b, 0x8d, 0x89, 0x83, 0x7d, 0x7b, 0x81, 0x85, 0x87, 0x81, 0x6e, 0x58, 0x53, 0x6e, - 0x9a, 0xb6, 0xac, 0x87, 0x65, 0x56, 0x59, 0x6f, 0x8a, 0x9e, 0xa3, 0x97, 0x85, 0x7a, 0x76, 0x75, - 0x73, 0x71, 0x71, 0x78, 0x89, 0x9a, 0xa0, 0x97, 0x82, 0x6b, 0x60, 0x65, 0x79, 0x90, 0x99, 0x94, - 0x87, 0x75, 0x6e, 0x72, 0x7b, 0x81, 0x81, 0x81, 0x83, 0x87, 0x88, 0x84, 0x7c, 0x76, 0x72, 0x74, - 0x7b, 0x84, 0x8c, 0x8d, 0x87, 0x7d, 0x77, 0x73, 0x77, 0x7d, 0x80, 0x7e, 0x7d, 0x7e, 0x81, 0x82, - 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x84, 0x83, 0x81, 0x81, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7e, 0x84, 0x86, 0x86, 0x83, 0x7d, 0x79, 0x77, 0x79, 0x7c, 0x80, 0x81, 0x81, 0x80, 0x7e, - 0x7e, 0x80, 0x81, 0x81, 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, 0x7d, - 0x7e, 0x80, 0x82, 0x84, 0x84, 0x84, 0x84, 0x81, 0x7d, 0x7c, 0x7c, 0x7c, 0x7a, 0x7b, 0x80, 0x82, - 0x84, 0x86, 0x85, 0x82, 0x80, 0x80, 0x7e, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x84, - 0x83, 0x80, 0x7d, 0x7d, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x80, 0x80, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7a, 0x78, 0x7a, 0x7d, 0x82, 0x84, - 0x83, 0x7e, 0x7b, 0x7b, 0x7d, 0x80, 0x80, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x83, 0x86, 0x87, 0x86, - 0x81, 0x7c, 0x79, 0x78, 0x77, 0x78, 0x7b, 0x80, 0x84, 0x88, 0x89, 0x87, 0x83, 0x7e, 0x7a, 0x7a, - 0x7a, 0x7c, 0x80, 0x82, 0x83, 0x83, 0x83, 0x84, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7e, - 0x80, 0x83, 0x86, 0x86, 0x83, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x80, 0x7e, 0x80, - 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x80, 0x82, 0x81, - 0x82, 0x82, 0x83, 0x81, 0x7c, 0x7b, 0x7b, 0x7b, 0x7d, 0x7e, 0x82, 0x84, 0x85, 0x84, 0x83, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x84, 0x88, - 0x8b, 0x88, 0x80, 0x78, 0x73, 0x72, 0x75, 0x78, 0x7c, 0x80, 0x83, 0x84, 0x85, 0x85, 0x85, 0x82, - 0x7d, 0x77, 0x75, 0x76, 0x7a, 0x80, 0x84, 0x86, 0x86, 0x86, 0x85, 0x83, 0x7e, 0x7b, 0x78, 0x76, - 0x78, 0x7b, 0x80, 0x83, 0x85, 0x84, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x83, 0x84, - 0x84, 0x82, 0x7e, 0x7c, 0x7c, 0x7d, 0x80, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x80, - 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7a, - 0x7b, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x79, 0x7b, 0x81, 0x88, 0x8b, 0x8a, - 0x86, 0x7d, 0x77, 0x75, 0x76, 0x7a, 0x7d, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, 0x83, 0x80, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7e, 0x7b, 0x78, 0x76, 0x78, 0x7c, 0x82, 0x85, 0x83, 0x81, 0x7d, 0x79, 0x77, - 0x76, 0x76, 0x79, 0x7a, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x83, 0x7e, 0x7b, 0x79, 0x79, 0x7b, 0x81, - 0x82, 0x82, 0x82, 0x80, 0x7d, 0x7b, 0x7b, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x7e, - 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x83, 0x80, 0x7b, 0x7a, 0x7c, 0x80, 0x83, 0x87, 0x87, 0x82, 0x7e, - 0x7c, 0x7c, 0x7e, 0x82, 0x84, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7c, 0x7a, 0x77, 0x76, - 0x77, 0x7a, 0x81, 0x85, 0x87, 0x87, 0x83, 0x7e, 0x7c, 0x7b, 0x7a, 0x7c, 0x7d, 0x7c, 0x7e, 0x83, - 0x87, 0x89, 0x87, 0x82, 0x7c, 0x79, 0x79, 0x7b, 0x84, 0x88, 0x87, 0x82, 0x7e, 0x7c, 0x7b, 0x7d, - 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x82, 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x82, 0x85, 0x85, - 0x83, 0x80, 0x80, 0x81, 0x82, 0x83, 0x80, 0x7a, 0x79, 0x7a, 0x7d, 0x81, 0x82, 0x80, 0x7b, 0x79, - 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x81, 0x7e, 0x80, 0x80, 0x83, 0x83, 0x80, 0x7c, 0x79, 0x78, 0x7a, - 0x7e, 0x80, 0x81, 0x80, 0x80, 0x83, 0x84, 0x84, 0x84, 0x81, 0x7b, 0x76, 0x76, 0x78, 0x7c, 0x82, - 0x86, 0x87, 0x84, 0x81, 0x79, 0x74, 0x75, 0x79, 0x81, 0x86, 0x88, 0x83, 0x7c, 0x7a, 0x7d, 0x83, - 0x87, 0x86, 0x80, 0x79, 0x78, 0x7a, 0x7e, 0x83, 0x81, 0x7a, 0x76, 0x77, 0x7e, 0x89, 0x8f, 0x8d, - 0x85, 0x7c, 0x79, 0x7a, 0x80, 0x84, 0x83, 0x80, 0x7c, 0x7c, 0x80, 0x84, 0x85, 0x7e, 0x78, 0x74, - 0x76, 0x7e, 0x86, 0x8c, 0x8b, 0x82, 0x78, 0x78, 0x7c, 0x80, 0x83, 0x84, 0x7e, 0x79, 0x7a, 0x7d, - 0x81, 0x83, 0x82, 0x7c, 0x7c, 0x82, 0x87, 0x89, 0x86, 0x7e, 0x74, 0x6f, 0x72, 0x79, 0x7e, 0x82, - 0x82, 0x82, 0x84, 0x87, 0x89, 0x89, 0x85, 0x7e, 0x78, 0x77, 0x7a, 0x7e, 0x82, 0x82, 0x80, 0x7e, - 0x7e, 0x80, 0x7e, 0x76, 0x6e, 0x6b, 0x70, 0x7b, 0x85, 0x8d, 0x89, 0x80, 0x7a, 0x7c, 0x82, 0x86, - 0x87, 0x81, 0x77, 0x74, 0x79, 0x83, 0x8a, 0x8a, 0x80, 0x74, 0x70, 0x73, 0x80, 0x8c, 0x8f, 0x8a, - 0x85, 0x82, 0x83, 0x88, 0x89, 0x82, 0x76, 0x70, 0x70, 0x77, 0x86, 0x8f, 0x8d, 0x85, 0x7b, 0x77, - 0x79, 0x81, 0x86, 0x83, 0x7a, 0x76, 0x79, 0x82, 0x89, 0x8a, 0x84, 0x79, 0x72, 0x74, 0x7a, 0x82, - 0x87, 0x84, 0x7b, 0x78, 0x7d, 0x86, 0x8d, 0x8e, 0x87, 0x7d, 0x75, 0x75, 0x77, 0x7b, 0x7d, 0x7c, - 0x7b, 0x7e, 0x86, 0x8c, 0x8f, 0x8b, 0x81, 0x76, 0x72, 0x76, 0x7a, 0x7e, 0x80, 0x7e, 0x81, 0x82, - 0x86, 0x87, 0x82, 0x79, 0x6b, 0x64, 0x65, 0x72, 0x85, 0x8d, 0x8e, 0x87, 0x7b, 0x78, 0x7d, 0x84, - 0x84, 0x80, 0x77, 0x6f, 0x73, 0x7d, 0x89, 0x8e, 0x89, 0x7d, 0x74, 0x77, 0x80, 0x8c, 0x90, 0x8a, - 0x80, 0x79, 0x80, 0x87, 0x8c, 0x8c, 0x84, 0x77, 0x6f, 0x73, 0x7e, 0x88, 0x8a, 0x86, 0x7e, 0x78, - 0x7b, 0x84, 0x87, 0x83, 0x7a, 0x72, 0x70, 0x75, 0x80, 0x86, 0x82, 0x7d, 0x7a, 0x7a, 0x82, 0x88, - 0x89, 0x85, 0x7e, 0x7a, 0x79, 0x7d, 0x82, 0x81, 0x79, 0x75, 0x73, 0x77, 0x80, 0x86, 0x89, 0x87, - 0x84, 0x85, 0x84, 0x85, 0x83, 0x7e, 0x79, 0x75, 0x76, 0x78, 0x7b, 0x7e, 0x80, 0x81, 0x82, 0x83, - 0x82, 0x7a, 0x70, 0x68, 0x68, 0x72, 0x7e, 0x86, 0x86, 0x7e, 0x78, 0x7c, 0x85, 0x8e, 0x8f, 0x84, - 0x72, 0x65, 0x69, 0x76, 0x85, 0x8d, 0x88, 0x7b, 0x75, 0x7a, 0x85, 0x90, 0x91, 0x84, 0x76, 0x73, - 0x79, 0x84, 0x8e, 0x8e, 0x81, 0x74, 0x73, 0x79, 0x83, 0x88, 0x86, 0x7c, 0x75, 0x79, 0x84, 0x8b, - 0x8d, 0x85, 0x79, 0x71, 0x71, 0x79, 0x82, 0x82, 0x7d, 0x77, 0x74, 0x7b, 0x86, 0x87, 0x83, 0x7b, - 0x76, 0x75, 0x7d, 0x88, 0x8b, 0x85, 0x7c, 0x76, 0x75, 0x79, 0x83, 0x84, 0x81, 0x7e, 0x7d, 0x81, - 0x86, 0x8a, 0x88, 0x83, 0x7e, 0x7e, 0x81, 0x82, 0x82, 0x7e, 0x7a, 0x79, 0x7b, 0x84, 0x89, 0x86, - 0x7d, 0x6e, 0x64, 0x67, 0x75, 0x82, 0x88, 0x85, 0x7a, 0x75, 0x7b, 0x89, 0x91, 0x90, 0x87, 0x74, - 0x6a, 0x6e, 0x7a, 0x88, 0x8a, 0x82, 0x78, 0x75, 0x7d, 0x89, 0x92, 0x8f, 0x81, 0x74, 0x72, 0x7b, - 0x87, 0x8d, 0x8b, 0x7d, 0x74, 0x76, 0x80, 0x89, 0x8b, 0x85, 0x7b, 0x76, 0x78, 0x83, 0x89, 0x86, - 0x80, 0x7a, 0x78, 0x80, 0x89, 0x8b, 0x86, 0x7d, 0x76, 0x74, 0x78, 0x80, 0x82, 0x80, 0x80, 0x83, - 0x85, 0x89, 0x8d, 0x89, 0x7e, 0x78, 0x76, 0x78, 0x79, 0x7c, 0x80, 0x7e, 0x81, 0x86, 0x89, 0x89, - 0x88, 0x85, 0x81, 0x80, 0x81, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x7d, 0x83, 0x85, 0x81, 0x76, 0x6c, - 0x65, 0x6a, 0x77, 0x82, 0x87, 0x86, 0x7c, 0x77, 0x80, 0x8b, 0x91, 0x8e, 0x82, 0x73, 0x6b, 0x6f, - 0x7b, 0x85, 0x87, 0x80, 0x77, 0x78, 0x82, 0x8a, 0x90, 0x8a, 0x7b, 0x73, 0x76, 0x81, 0x8a, 0x8f, - 0x8b, 0x7e, 0x77, 0x78, 0x7c, 0x82, 0x82, 0x7c, 0x78, 0x78, 0x7e, 0x89, 0x8b, 0x88, 0x82, 0x7b, - 0x79, 0x7c, 0x81, 0x80, 0x7a, 0x77, 0x76, 0x78, 0x80, 0x86, 0x86, 0x83, 0x82, 0x82, 0x83, 0x85, - 0x84, 0x7c, 0x77, 0x78, 0x7a, 0x7e, 0x82, 0x82, 0x7c, 0x7a, 0x7b, 0x7d, 0x82, 0x84, 0x83, 0x83, - 0x84, 0x86, 0x88, 0x87, 0x82, 0x7d, 0x7b, 0x7b, 0x7e, 0x81, 0x81, 0x7e, 0x78, 0x6f, 0x6d, 0x73, - 0x7c, 0x85, 0x87, 0x82, 0x79, 0x77, 0x80, 0x89, 0x8e, 0x8c, 0x81, 0x73, 0x6e, 0x72, 0x7c, 0x83, - 0x81, 0x7b, 0x77, 0x7a, 0x85, 0x8e, 0x91, 0x89, 0x7c, 0x77, 0x79, 0x81, 0x8a, 0x8b, 0x85, 0x7b, - 0x79, 0x7d, 0x82, 0x84, 0x82, 0x7b, 0x75, 0x78, 0x81, 0x84, 0x86, 0x82, 0x7c, 0x79, 0x7c, 0x83, - 0x84, 0x7e, 0x7a, 0x77, 0x75, 0x7a, 0x81, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x82, 0x85, 0x84, 0x82, - 0x81, 0x80, 0x7e, 0x7d, 0x7b, 0x79, 0x78, 0x7b, 0x81, 0x85, 0x89, 0x88, 0x86, 0x84, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7a, 0x74, 0x6e, 0x6d, 0x73, 0x7c, 0x85, - 0x88, 0x87, 0x83, 0x82, 0x84, 0x85, 0x83, 0x7a, 0x73, 0x70, 0x73, 0x7c, 0x83, 0x84, 0x80, 0x7b, - 0x7a, 0x7e, 0x84, 0x87, 0x84, 0x7c, 0x7a, 0x7c, 0x80, 0x85, 0x86, 0x85, 0x83, 0x83, 0x85, 0x84, - 0x80, 0x7b, 0x79, 0x78, 0x7c, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7c, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, - 0x7e, 0x81, 0x83, 0x82, 0x80, 0x7d, 0x7d, 0x80, 0x7d, 0x7a, 0x7a, 0x7a, 0x7c, 0x81, 0x84, 0x84, - 0x81, 0x7d, 0x7a, 0x78, 0x79, 0x79, 0x7b, 0x80, 0x83, 0x87, 0x88, 0x87, 0x85, 0x82, 0x80, 0x7e, - 0x7d, 0x7c, 0x79, 0x76, 0x76, 0x7a, 0x7d, 0x7e, 0x7c, 0x74, 0x6e, 0x6f, 0x75, 0x7e, 0x85, 0x8a, - 0x8a, 0x86, 0x84, 0x81, 0x79, 0x76, 0x76, 0x76, 0x79, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x81, 0x83, - 0x83, 0x7e, 0x7a, 0x76, 0x77, 0x7e, 0x85, 0x8a, 0x8d, 0x8b, 0x86, 0x7e, 0x79, 0x76, 0x76, 0x79, - 0x81, 0x84, 0x84, 0x84, 0x83, 0x83, 0x85, 0x8a, 0x89, 0x83, 0x7c, 0x78, 0x76, 0x77, 0x7b, 0x82, - 0x85, 0x86, 0x87, 0x83, 0x7c, 0x7a, 0x79, 0x79, 0x7b, 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x86, 0x88, - 0x87, 0x83, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x83, 0x85, 0x87, 0x86, 0x83, 0x81, 0x7e, 0x7c, 0x7c, - 0x7b, 0x78, 0x77, 0x77, 0x77, 0x7a, 0x7e, 0x82, 0x82, 0x80, 0x7b, 0x77, 0x77, 0x7c, 0x84, 0x8b, - 0x8e, 0x8b, 0x83, 0x79, 0x73, 0x70, 0x70, 0x74, 0x79, 0x7c, 0x7e, 0x7d, 0x7c, 0x7e, 0x85, 0x8a, - 0x8d, 0x8b, 0x84, 0x7b, 0x77, 0x79, 0x80, 0x86, 0x89, 0x88, 0x83, 0x7d, 0x7b, 0x7a, 0x7c, 0x7e, - 0x80, 0x80, 0x7e, 0x7c, 0x7c, 0x82, 0x89, 0x8e, 0x8d, 0x88, 0x80, 0x77, 0x76, 0x78, 0x7d, 0x83, - 0x86, 0x86, 0x84, 0x82, 0x81, 0x82, 0x83, 0x83, 0x81, 0x7b, 0x77, 0x76, 0x7b, 0x82, 0x88, 0x89, - 0x86, 0x81, 0x7b, 0x79, 0x79, 0x7c, 0x80, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7c, 0x7e, 0x80, 0x81, - 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x82, 0x81, 0x7b, 0x73, 0x6e, 0x6e, - 0x72, 0x79, 0x83, 0x89, 0x89, 0x86, 0x80, 0x7b, 0x78, 0x78, 0x7c, 0x80, 0x83, 0x83, 0x81, 0x80, - 0x82, 0x85, 0x86, 0x83, 0x7d, 0x77, 0x74, 0x75, 0x79, 0x81, 0x88, 0x8c, 0x8a, 0x86, 0x82, 0x7e, - 0x7e, 0x80, 0x81, 0x7e, 0x7c, 0x7a, 0x7a, 0x7d, 0x83, 0x86, 0x86, 0x85, 0x81, 0x7d, 0x7b, 0x7c, - 0x80, 0x82, 0x84, 0x84, 0x81, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x7a, 0x79, 0x7c, 0x81, 0x87, - 0x89, 0x88, 0x85, 0x7e, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x7d, 0x7a, 0x7a, 0x7b, 0x7e, 0x83, 0x84, - 0x84, 0x80, 0x7b, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x85, 0x86, 0x85, 0x85, 0x85, 0x84, 0x83, 0x81, - 0x7d, 0x79, 0x77, 0x78, 0x7c, 0x81, 0x84, 0x86, 0x85, 0x82, 0x7d, 0x7a, 0x78, 0x7a, 0x80, 0x82, - 0x81, 0x7d, 0x7a, 0x7b, 0x80, 0x84, 0x87, 0x87, 0x83, 0x7d, 0x79, 0x79, 0x7d, 0x82, 0x85, 0x85, - 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x7e, 0x7b, 0x78, 0x76, 0x77, 0x7d, 0x84, 0x88, 0x88, 0x84, - 0x80, 0x7b, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x84, 0x82, 0x80, 0x7c, 0x7a, - 0x79, 0x79, 0x7a, 0x7c, 0x7d, 0x7e, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7b, - 0x7d, 0x80, 0x83, 0x85, 0x86, 0x85, 0x83, 0x7e, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x81, 0x83, - 0x83, 0x82, 0x81, 0x7e, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x79, 0x7b, 0x7e, 0x83, 0x85, 0x85, 0x83, - 0x80, 0x7c, 0x78, 0x77, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x84, 0x84, 0x83, 0x81, 0x7d, 0x7a, - 0x78, 0x77, 0x79, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x84, 0x85, 0x84, 0x83, 0x83, 0x7e, 0x7c, 0x7c, - 0x7c, 0x7d, 0x81, 0x83, 0x84, 0x85, 0x84, 0x83, 0x82, 0x80, 0x7e, 0x7c, 0x7c, 0x7b, 0x7d, 0x81, - 0x82, 0x85, 0x87, 0x87, 0x85, 0x82, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x85, 0x85, 0x84, - 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x78, 0x7a, 0x7e, 0x81, 0x83, 0x83, 0x82, 0x7e, 0x7b, 0x78, 0x77, - 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x82, - 0x7e, 0x7b, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x78, 0x77, - 0x79, 0x7c, 0x82, 0x86, 0x87, 0x87, 0x85, 0x80, 0x7c, 0x79, 0x75, 0x75, 0x77, 0x7a, 0x80, 0x84, - 0x87, 0x89, 0x87, 0x85, 0x81, 0x7a, 0x76, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, 0x86, 0x85, 0x83, - 0x81, 0x7c, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x82, 0x85, 0x86, 0x85, 0x84, 0x82, 0x80, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x83, 0x83, 0x84, 0x85, 0x83, 0x81, 0x7e, 0x7d, 0x7a, 0x7a, - 0x7b, 0x7b, 0x7c, 0x80, 0x83, 0x84, 0x84, 0x83, 0x82, 0x7e, 0x7a, 0x78, 0x78, 0x79, 0x7b, 0x7e, - 0x82, 0x84, 0x85, 0x84, 0x80, 0x7c, 0x7a, 0x78, 0x77, 0x75, 0x75, 0x77, 0x7b, 0x7e, 0x82, 0x84, - 0x83, 0x81, 0x7d, 0x7b, 0x77, 0x76, 0x78, 0x79, 0x79, 0x79, 0x7b, 0x7e, 0x82, 0x85, 0x87, 0x86, - 0x82, 0x7c, 0x77, 0x76, 0x76, 0x77, 0x79, 0x7b, 0x80, 0x83, 0x86, 0x88, 0x87, 0x83, 0x7d, 0x77, - 0x74, 0x75, 0x79, 0x7e, 0x85, 0x87, 0x87, 0x84, 0x80, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7c, - 0x7e, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7e, - 0x81, 0x83, 0x84, 0x83, 0x83, 0x81, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x84, - 0x85, 0x86, 0x85, 0x82, 0x80, 0x7d, 0x7a, 0x79, 0x7b, 0x7d, 0x81, 0x84, 0x85, 0x85, 0x84, 0x83, - 0x81, 0x7e, 0x7b, 0x79, 0x78, 0x76, 0x78, 0x7a, 0x7e, 0x82, 0x83, 0x82, 0x81, 0x80, 0x7d, 0x7a, - 0x79, 0x7b, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x82, 0x83, 0x83, 0x80, 0x7d, 0x7d, 0x7e, 0x80, 0x81, - 0x81, 0x80, 0x7d, 0x7d, 0x80, 0x84, 0x87, 0x89, 0x88, 0x85, 0x81, 0x7c, 0x79, 0x77, 0x78, 0x7d, - 0x84, 0x88, 0x8a, 0x89, 0x87, 0x85, 0x83, 0x82, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, - 0x80, 0x81, 0x83, 0x83, 0x83, 0x81, 0x7e, 0x7a, 0x77, 0x77, 0x78, 0x7b, 0x7e, 0x83, 0x86, 0x86, - 0x85, 0x84, 0x82, 0x7e, 0x7b, 0x78, 0x75, 0x76, 0x7b, 0x7e, 0x84, 0x8a, 0x8c, 0x8b, 0x87, 0x80, - 0x7a, 0x76, 0x75, 0x76, 0x79, 0x7d, 0x83, 0x86, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7e, 0x7d, 0x7b, - 0x7a, 0x79, 0x78, 0x79, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x84, 0x82, 0x7e, 0x7d, 0x7c, 0x7a, 0x7a, - 0x7c, 0x7d, 0x81, 0x84, 0x87, 0x88, 0x87, 0x84, 0x7e, 0x7b, 0x7a, 0x78, 0x79, 0x7b, 0x7d, 0x81, - 0x84, 0x87, 0x88, 0x88, 0x86, 0x82, 0x7c, 0x79, 0x78, 0x79, 0x7b, 0x7d, 0x81, 0x83, 0x84, 0x84, - 0x85, 0x84, 0x82, 0x80, 0x7c, 0x7b, 0x79, 0x79, 0x78, 0x7b, 0x88, 0x90, 0x8e, 0x89, 0x82, 0x7a, - 0x76, 0x77, 0x79, 0x7b, 0x81, 0x86, 0x89, 0x89, 0x82, 0x7b, 0x79, 0x7a, 0x7d, 0x80, 0x81, 0x82, - 0x81, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x87, 0x94, 0x92, 0x83, 0x7a, 0x78, 0x75, 0x74, - 0x73, 0x7c, 0x8b, 0x90, 0x8f, 0x8e, 0x89, 0x81, 0x7a, 0x77, 0x78, 0x77, 0x6e, 0x63, 0x60, 0x66, - 0x77, 0x8f, 0xa3, 0xa9, 0xa3, 0x95, 0x83, 0x70, 0x64, 0x60, 0x5e, 0x58, 0x53, 0x5c, 0x74, 0x95, - 0xb6, 0xc8, 0xc1, 0xa5, 0x85, 0x66, 0x51, 0x4f, 0x5c, 0x6f, 0x80, 0x8a, 0x97, 0xa9, 0xb6, 0xb8, - 0xaa, 0x85, 0x54, 0x33, 0x30, 0x3e, 0x59, 0x80, 0xa0, 0xaf, 0xae, 0xa9, 0xa2, 0x96, 0x89, 0x74, - 0x56, 0x3b, 0x3b, 0x56, 0x78, 0x9e, 0xbb, 0xbe, 0xaa, 0x93, 0x7c, 0x67, 0x60, 0x63, 0x63, 0x61, - 0x68, 0x83, 0xa8, 0xc1, 0xc5, 0xae, 0x81, 0x52, 0x38, 0x33, 0x43, 0x64, 0x8a, 0xa4, 0xb0, 0xb0, - 0xaa, 0x9c, 0x87, 0x71, 0x5f, 0x57, 0x5d, 0x6c, 0x7d, 0x8c, 0x96, 0x97, 0x90, 0x84, 0x77, 0x72, - 0x70, 0x71, 0x72, 0x73, 0x7b, 0x8e, 0xa3, 0xa9, 0x92, 0x64, 0x33, 0x1e, 0x39, 0x79, 0xb4, 0xd1, - 0xd3, 0xbe, 0xa1, 0x88, 0x71, 0x65, 0x61, 0x5c, 0x53, 0x53, 0x6d, 0xa1, 0xd2, 0xdd, 0xbf, 0x87, - 0x53, 0x35, 0x32, 0x43, 0x5d, 0x79, 0x8d, 0x97, 0x9e, 0xa7, 0xb0, 0xb0, 0x95, 0x67, 0x3f, 0x33, - 0x4b, 0x78, 0xa3, 0xba, 0xbb, 0xb0, 0xa0, 0x8b, 0x77, 0x6d, 0x63, 0x54, 0x4b, 0x53, 0x6f, 0x97, - 0xb8, 0xbc, 0xa2, 0x7c, 0x5c, 0x4d, 0x4d, 0x5b, 0x72, 0x8a, 0x9b, 0xa1, 0xa2, 0xa3, 0x9f, 0x92, - 0x79, 0x5e, 0x52, 0x5e, 0x78, 0x94, 0xa3, 0xa2, 0x92, 0x79, 0x69, 0x65, 0x6c, 0x75, 0x76, 0x73, - 0x76, 0x83, 0x91, 0x9d, 0x9c, 0x8b, 0x75, 0x67, 0x63, 0x6d, 0x81, 0x99, 0xae, 0xb5, 0xa1, 0x66, - 0x1f, 0x8, 0x2d, 0x74, 0xbb, 0xda, 0xce, 0xb5, 0x9f, 0x88, 0x6e, 0x5d, 0x55, 0x51, 0x4d, 0x54, - 0x72, 0xa6, 0xd0, 0xd6, 0xb5, 0x7b, 0x4a, 0x34, 0x35, 0x4b, 0x66, 0x7e, 0x90, 0x9d, 0xa8, 0xb2, - 0xb6, 0xa6, 0x81, 0x53, 0x39, 0x3f, 0x5c, 0x84, 0xaa, 0xc0, 0xb7, 0x9a, 0x84, 0x77, 0x6b, 0x5e, - 0x55, 0x54, 0x58, 0x6c, 0x91, 0xab, 0xb4, 0xad, 0x94, 0x6f, 0x52, 0x50, 0x61, 0x75, 0x86, 0x93, - 0x9c, 0xa1, 0xa4, 0x9f, 0x8d, 0x70, 0x5b, 0x50, 0x55, 0x68, 0x84, 0x9a, 0x9e, 0x93, 0x84, 0x76, - 0x6f, 0x6f, 0x75, 0x79, 0x7c, 0x85, 0x8d, 0x90, 0x8d, 0x88, 0x7e, 0x71, 0x67, 0x68, 0x73, 0x84, - 0x93, 0x9f, 0xa0, 0x93, 0x6c, 0x35, 0x17, 0x26, 0x57, 0x9b, 0xd4, 0xf0, 0xe9, 0xc5, 0x98, 0x6c, - 0x4d, 0x3f, 0x3b, 0x40, 0x56, 0x7c, 0xaf, 0xdb, 0xe1, 0xba, 0x76, 0x3d, 0x1e, 0x1e, 0x39, 0x60, - 0x91, 0xb9, 0xc6, 0xc2, 0xc0, 0xb9, 0x9a, 0x6a, 0x44, 0x38, 0x42, 0x69, 0xa0, 0xc2, 0xc5, 0xb5, - 0x9b, 0x71, 0x4a, 0x3f, 0x46, 0x4a, 0x54, 0x6d, 0x90, 0xaf, 0xc1, 0xc0, 0xa7, 0x7e, 0x5f, 0x55, - 0x56, 0x66, 0x83, 0x9e, 0xa8, 0xa6, 0xa2, 0x9a, 0x88, 0x6c, 0x54, 0x40, 0x3d, 0x4e, 0x6e, 0x8e, - 0xa5, 0xb1, 0xab, 0x9a, 0x86, 0x79, 0x75, 0x72, 0x70, 0x70, 0x71, 0x79, 0x86, 0x90, 0x91, 0x89, - 0x7d, 0x72, 0x67, 0x64, 0x6b, 0x75, 0x7b, 0x82, 0x8a, 0x93, 0x98, 0x99, 0x94, 0x89, 0x79, 0x61, - 0x40, 0x2a, 0x3c, 0x7a, 0xc5, 0xf6, 0xed, 0xb9, 0x7d, 0x56, 0x49, 0x46, 0x41, 0x45, 0x5a, 0x7e, - 0xa8, 0xc4, 0xcd, 0xbe, 0x97, 0x61, 0x33, 0x21, 0x3a, 0x6d, 0x9e, 0xb3, 0xb5, 0xb3, 0xad, 0x9d, - 0x81, 0x5d, 0x41, 0x3b, 0x4b, 0x6e, 0x9a, 0xbf, 0xc9, 0xad, 0x80, 0x54, 0x3f, 0x47, 0x59, 0x6b, - 0x7c, 0x94, 0xac, 0xb7, 0xb0, 0xa0, 0x89, 0x6c, 0x52, 0x49, 0x54, 0x6d, 0x8a, 0x99, 0x99, 0x94, - 0x90, 0x8b, 0x80, 0x71, 0x68, 0x67, 0x6a, 0x74, 0x85, 0x93, 0x9b, 0x99, 0x91, 0x85, 0x7b, 0x78, - 0x76, 0x72, 0x72, 0x77, 0x82, 0x89, 0x8b, 0x89, 0x83, 0x7a, 0x74, 0x6f, 0x6f, 0x76, 0x85, 0x91, - 0x91, 0x89, 0x82, 0x7c, 0x7c, 0x80, 0x8a, 0x94, 0x99, 0x8c, 0x54, 0x20, 0x1c, 0x43, 0x92, 0xda, - 0xef, 0xd6, 0xb0, 0x90, 0x71, 0x53, 0x3f, 0x44, 0x56, 0x61, 0x71, 0x9a, 0xca, 0xd8, 0xb0, 0x66, - 0x2c, 0x25, 0x3f, 0x63, 0x83, 0x9f, 0xb7, 0xc2, 0xb8, 0xa3, 0x8f, 0x7b, 0x61, 0x41, 0x32, 0x4b, - 0x8a, 0xc0, 0xc3, 0xa9, 0x8d, 0x73, 0x57, 0x43, 0x49, 0x5f, 0x74, 0x84, 0x96, 0xa7, 0xb4, 0xbb, - 0xad, 0x85, 0x5c, 0x53, 0x5d, 0x63, 0x6b, 0x81, 0x94, 0x9a, 0x96, 0x92, 0x8c, 0x80, 0x6f, 0x5b, - 0x4d, 0x53, 0x74, 0x95, 0xa1, 0xa0, 0x9d, 0x94, 0x83, 0x73, 0x6d, 0x6f, 0x71, 0x78, 0x83, 0x8a, - 0x91, 0x96, 0x8b, 0x74, 0x63, 0x61, 0x69, 0x72, 0x7d, 0x8b, 0x91, 0x8e, 0x87, 0x7e, 0x7e, 0x84, - 0x87, 0x84, 0x81, 0x81, 0x84, 0x85, 0x86, 0x89, 0x8b, 0x85, 0x6b, 0x47, 0x31, 0x40, 0x77, 0xbc, - 0xe3, 0xda, 0xae, 0x7e, 0x64, 0x5f, 0x62, 0x5a, 0x50, 0x57, 0x73, 0x9b, 0xba, 0xc3, 0xb0, 0x89, - 0x5a, 0x39, 0x34, 0x4f, 0x7a, 0x9a, 0xa3, 0x9f, 0xa0, 0xa4, 0x9e, 0x88, 0x6a, 0x57, 0x51, 0x58, - 0x6d, 0x8b, 0xa0, 0xa4, 0x95, 0x7e, 0x6d, 0x68, 0x6f, 0x72, 0x6d, 0x6b, 0x77, 0x8e, 0x9e, 0xa2, - 0x9e, 0x93, 0x7e, 0x6e, 0x69, 0x6f, 0x78, 0x7e, 0x81, 0x7b, 0x7a, 0x85, 0x8d, 0x8b, 0x83, 0x7a, - 0x75, 0x73, 0x75, 0x7d, 0x87, 0x87, 0x84, 0x81, 0x81, 0x84, 0x88, 0x88, 0x81, 0x7a, 0x7b, 0x80, - 0x82, 0x7e, 0x7a, 0x75, 0x72, 0x74, 0x7a, 0x83, 0x89, 0x8b, 0x86, 0x81, 0x7c, 0x7b, 0x7a, 0x76, - 0x71, 0x74, 0x82, 0x92, 0x9e, 0x9f, 0x92, 0x7b, 0x6b, 0x6a, 0x75, 0x7e, 0x75, 0x56, 0x3f, 0x4b, - 0x81, 0xc9, 0xf2, 0xe0, 0xa2, 0x61, 0x44, 0x51, 0x6a, 0x72, 0x6b, 0x65, 0x72, 0x92, 0xab, 0xaf, - 0x9e, 0x7a, 0x55, 0x3c, 0x41, 0x60, 0x92, 0xb3, 0xb4, 0xa1, 0x8e, 0x8d, 0x8f, 0x84, 0x6a, 0x55, - 0x53, 0x63, 0x7d, 0x99, 0xa8, 0xa5, 0x8d, 0x70, 0x5f, 0x5f, 0x6b, 0x78, 0x80, 0x80, 0x83, 0x92, - 0xa2, 0xa2, 0x91, 0x7c, 0x6d, 0x64, 0x65, 0x72, 0x82, 0x87, 0x83, 0x78, 0x72, 0x74, 0x7d, 0x84, - 0x82, 0x7c, 0x7c, 0x85, 0x8c, 0x8d, 0x8b, 0x86, 0x7a, 0x72, 0x72, 0x78, 0x7e, 0x81, 0x80, 0x7a, - 0x77, 0x7d, 0x87, 0x8a, 0x86, 0x7d, 0x77, 0x73, 0x73, 0x7a, 0x82, 0x86, 0x84, 0x82, 0x80, 0x7b, - 0x79, 0x78, 0x76, 0x76, 0x7d, 0x84, 0x87, 0x86, 0x83, 0x7e, 0x7d, 0x80, 0x84, 0x85, 0x82, 0x7b, - 0x76, 0x75, 0x79, 0x80, 0x87, 0x8a, 0x84, 0x73, 0x61, 0x58, 0x60, 0x7b, 0x9e, 0xb5, 0xb5, 0xa0, - 0x83, 0x6a, 0x60, 0x65, 0x6f, 0x74, 0x73, 0x74, 0x80, 0x91, 0xa0, 0x9f, 0x8a, 0x6c, 0x5a, 0x5b, - 0x6b, 0x83, 0x95, 0x9e, 0x9a, 0x92, 0x8b, 0x85, 0x80, 0x78, 0x6d, 0x66, 0x67, 0x75, 0x8c, 0x9c, - 0x9f, 0x94, 0x81, 0x71, 0x6a, 0x6c, 0x74, 0x7b, 0x82, 0x87, 0x8d, 0x92, 0x95, 0x91, 0x87, 0x76, - 0x6a, 0x68, 0x6f, 0x79, 0x81, 0x83, 0x81, 0x7c, 0x7b, 0x80, 0x85, 0x89, 0x8a, 0x88, 0x85, 0x82, - 0x81, 0x80, 0x7a, 0x75, 0x73, 0x74, 0x7a, 0x83, 0x88, 0x87, 0x82, 0x7d, 0x79, 0x78, 0x7a, 0x7d, - 0x7d, 0x7e, 0x83, 0x85, 0x84, 0x80, 0x7c, 0x7c, 0x7b, 0x78, 0x76, 0x7b, 0x84, 0x89, 0x8b, 0x86, - 0x81, 0x7e, 0x81, 0x83, 0x84, 0x85, 0x8b, 0x91, 0x92, 0x8d, 0x81, 0x5e, 0x30, 0x25, 0x3e, 0x65, - 0xa8, 0xe9, 0xf8, 0xda, 0xac, 0x83, 0x5b, 0x3a, 0x28, 0x30, 0x4a, 0x6a, 0x91, 0xbd, 0xdc, 0xd4, - 0x9a, 0x52, 0x24, 0x1f, 0x3c, 0x69, 0x93, 0xb0, 0xc4, 0xc7, 0xbb, 0xa5, 0x85, 0x5f, 0x40, 0x32, - 0x3a, 0x58, 0x8a, 0xb8, 0xc3, 0xa8, 0x88, 0x77, 0x66, 0x52, 0x4f, 0x61, 0x75, 0x86, 0x9a, 0xb3, - 0xbd, 0xb1, 0x98, 0x77, 0x55, 0x46, 0x52, 0x69, 0x79, 0x87, 0x94, 0x9d, 0x95, 0x85, 0x7b, 0x71, - 0x63, 0x5d, 0x68, 0x7e, 0x96, 0xa8, 0xb2, 0xa5, 0x8d, 0x79, 0x6b, 0x5f, 0x58, 0x61, 0x71, 0x7c, - 0x85, 0x90, 0x96, 0x91, 0x85, 0x78, 0x6f, 0x6e, 0x77, 0x86, 0x8e, 0x8c, 0x89, 0x86, 0x80, 0x78, - 0x76, 0x75, 0x72, 0x71, 0x75, 0x7c, 0x84, 0x88, 0x88, 0x83, 0x7d, 0x7d, 0x86, 0x8c, 0x8e, 0x8c, - 0x89, 0x82, 0x78, 0x72, 0x6f, 0x70, 0x72, 0x76, 0x80, 0x86, 0x8a, 0x8c, 0x89, 0x82, 0x7a, 0x73, - 0x67, 0x5a, 0x57, 0x65, 0x85, 0xb0, 0xcf, 0xcf, 0xaf, 0x7a, 0x4f, 0x3f, 0x47, 0x5f, 0x76, 0x81, - 0x85, 0x8f, 0x9e, 0xa9, 0xa2, 0x86, 0x63, 0x4b, 0x4c, 0x66, 0x8a, 0xa5, 0xb0, 0xaa, 0x97, 0x83, - 0x76, 0x71, 0x6c, 0x63, 0x5e, 0x63, 0x75, 0x8f, 0xa3, 0xa5, 0x96, 0x80, 0x6b, 0x63, 0x69, 0x76, - 0x84, 0x8a, 0x8e, 0x91, 0x93, 0x92, 0x8c, 0x81, 0x6e, 0x60, 0x62, 0x6d, 0x79, 0x82, 0x85, 0x83, - 0x80, 0x80, 0x84, 0x87, 0x84, 0x7c, 0x79, 0x7c, 0x84, 0x8d, 0x91, 0x8c, 0x80, 0x74, 0x6f, 0x6f, - 0x72, 0x78, 0x7d, 0x81, 0x83, 0x85, 0x87, 0x86, 0x83, 0x80, 0x7e, 0x80, 0x84, 0x88, 0x8a, 0x88, - 0x82, 0x77, 0x6f, 0x6c, 0x6f, 0x77, 0x82, 0x8a, 0x8c, 0x8d, 0x8d, 0x88, 0x7c, 0x72, 0x6f, 0x73, - 0x7c, 0x87, 0x8e, 0x91, 0x8e, 0x87, 0x80, 0x7a, 0x76, 0x76, 0x76, 0x76, 0x79, 0x81, 0x88, 0x88, - 0x7c, 0x6a, 0x5c, 0x5b, 0x6f, 0x93, 0xb4, 0xc5, 0xb9, 0x97, 0x6d, 0x55, 0x55, 0x64, 0x73, 0x79, - 0x77, 0x78, 0x84, 0x97, 0xa3, 0x9c, 0x83, 0x61, 0x50, 0x58, 0x71, 0x92, 0xa5, 0xa4, 0x98, 0x8b, - 0x85, 0x83, 0x7b, 0x6f, 0x63, 0x5d, 0x66, 0x7d, 0x96, 0xa4, 0xa2, 0x8e, 0x74, 0x64, 0x65, 0x71, - 0x81, 0x89, 0x8e, 0x8f, 0x90, 0x92, 0x91, 0x8a, 0x7a, 0x6b, 0x66, 0x6b, 0x78, 0x87, 0x92, 0x94, - 0x8b, 0x7d, 0x73, 0x6f, 0x70, 0x73, 0x7a, 0x85, 0x90, 0x95, 0x93, 0x8b, 0x7e, 0x73, 0x6d, 0x6e, - 0x75, 0x80, 0x86, 0x88, 0x85, 0x82, 0x81, 0x80, 0x7d, 0x7a, 0x77, 0x77, 0x78, 0x7e, 0x85, 0x8c, - 0x8e, 0x8b, 0x85, 0x82, 0x83, 0x82, 0x7d, 0x76, 0x73, 0x78, 0x7e, 0x82, 0x82, 0x84, 0x87, 0x86, - 0x82, 0x7b, 0x77, 0x79, 0x7b, 0x79, 0x79, 0x83, 0x92, 0x9b, 0x98, 0x87, 0x65, 0x38, 0x24, 0x38, - 0x66, 0xb3, 0xf1, 0xfe, 0xd9, 0xa3, 0x78, 0x56, 0x37, 0x21, 0x24, 0x41, 0x68, 0x95, 0xc5, 0xe6, - 0xdd, 0xa3, 0x51, 0x1b, 0x17, 0x3b, 0x73, 0xa4, 0xc6, 0xd2, 0xcc, 0xb9, 0x9a, 0x73, 0x4b, 0x30, - 0x2e, 0x41, 0x64, 0x99, 0xc9, 0xcd, 0xa8, 0x7e, 0x67, 0x5c, 0x51, 0x55, 0x71, 0x8d, 0x9d, 0xa9, - 0xb2, 0xab, 0x93, 0x76, 0x5c, 0x49, 0x49, 0x62, 0x82, 0x8f, 0x8f, 0x92, 0x92, 0x88, 0x77, 0x6f, - 0x6f, 0x6d, 0x6c, 0x7a, 0x90, 0x9e, 0xa3, 0xa1, 0x90, 0x75, 0x68, 0x6a, 0x6c, 0x6c, 0x74, 0x82, - 0x8a, 0x8b, 0x8b, 0x8b, 0x87, 0x7d, 0x76, 0x76, 0x7d, 0x86, 0x8f, 0x93, 0x8e, 0x85, 0x80, 0x7d, - 0x78, 0x74, 0x76, 0x78, 0x77, 0x79, 0x7e, 0x82, 0x85, 0x87, 0x89, 0x88, 0x86, 0x83, 0x80, 0x7b, - 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x87, 0x8d, 0x8d, 0x86, 0x7e, 0x74, 0x6c, 0x6c, 0x71, 0x78, 0x81, - 0x89, 0x8c, 0x89, 0x86, 0x85, 0x84, 0x81, 0x7a, 0x78, 0x7a, 0x80, 0x87, 0x8c, 0x8e, 0x88, 0x7e, - 0x75, 0x70, 0x6f, 0x72, 0x71, 0x68, 0x5f, 0x64, 0x7d, 0xa7, 0xcc, 0xd9, 0xc0, 0x8a, 0x51, 0x2d, - 0x2f, 0x53, 0x80, 0x9f, 0xa9, 0xa0, 0x92, 0x88, 0x7e, 0x72, 0x61, 0x52, 0x52, 0x66, 0x8b, 0xae, - 0xbf, 0xb8, 0x9b, 0x77, 0x5f, 0x5a, 0x62, 0x6f, 0x79, 0x81, 0x86, 0x8e, 0x97, 0x98, 0x8e, 0x78, - 0x63, 0x59, 0x60, 0x74, 0x8e, 0x9d, 0xa0, 0x99, 0x8c, 0x81, 0x77, 0x6f, 0x69, 0x65, 0x68, 0x73, - 0x84, 0x92, 0x97, 0x92, 0x83, 0x71, 0x68, 0x68, 0x70, 0x7c, 0x88, 0x8f, 0x91, 0x8e, 0x87, 0x7d, - 0x74, 0x6c, 0x6a, 0x73, 0x83, 0x92, 0x9a, 0x98, 0x8b, 0x79, 0x6b, 0x65, 0x67, 0x6f, 0x7b, 0x87, - 0x8f, 0x92, 0x92, 0x8f, 0x86, 0x79, 0x6c, 0x65, 0x67, 0x72, 0x83, 0x90, 0x97, 0x96, 0x8e, 0x7e, - 0x6e, 0x67, 0x66, 0x6a, 0x73, 0x7e, 0x8c, 0x99, 0xa1, 0x9f, 0x94, 0x82, 0x6e, 0x5f, 0x5a, 0x63, - 0x78, 0x92, 0x9e, 0x9b, 0x8f, 0x82, 0x75, 0x6b, 0x68, 0x6a, 0x72, 0x82, 0x92, 0x9b, 0x97, 0x81, - 0x5c, 0x3d, 0x44, 0x76, 0xbf, 0xef, 0xe6, 0xa9, 0x61, 0x38, 0x3d, 0x5c, 0x74, 0x72, 0x64, 0x65, - 0x82, 0xaf, 0xcb, 0xbb, 0x87, 0x50, 0x37, 0x48, 0x74, 0x9d, 0xb2, 0xb0, 0xa0, 0x8c, 0x7c, 0x78, - 0x77, 0x70, 0x5e, 0x4e, 0x53, 0x71, 0x9a, 0xb0, 0xa9, 0x92, 0x77, 0x66, 0x62, 0x6a, 0x78, 0x80, - 0x81, 0x85, 0x91, 0x9b, 0x9e, 0x94, 0x81, 0x64, 0x4c, 0x50, 0x70, 0x8d, 0x96, 0x99, 0x93, 0x84, - 0x74, 0x72, 0x79, 0x79, 0x78, 0x7b, 0x84, 0x8c, 0x91, 0x94, 0x8c, 0x78, 0x68, 0x68, 0x74, 0x7d, - 0x83, 0x87, 0x83, 0x79, 0x75, 0x7b, 0x82, 0x87, 0x8a, 0x86, 0x7e, 0x78, 0x7b, 0x7e, 0x81, 0x83, - 0x84, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x76, 0x7a, 0x83, 0x8c, 0x91, 0x8f, 0x85, 0x76, 0x68, 0x65, - 0x6c, 0x76, 0x81, 0x8b, 0x92, 0x95, 0x93, 0x8e, 0x85, 0x79, 0x6e, 0x66, 0x65, 0x6e, 0x7e, 0x90, - 0x98, 0x95, 0x8b, 0x7c, 0x70, 0x6c, 0x6d, 0x74, 0x7b, 0x82, 0x88, 0x8a, 0x88, 0x85, 0x82, 0x7c, - 0x78, 0x76, 0x78, 0x7a, 0x7d, 0x81, 0x86, 0x89, 0x8a, 0x86, 0x80, 0x77, 0x6f, 0x6e, 0x73, 0x7e, - 0x8c, 0x94, 0x93, 0x87, 0x75, 0x65, 0x5b, 0x5c, 0x6b, 0x86, 0xa0, 0xad, 0xaa, 0x98, 0x7c, 0x62, - 0x57, 0x59, 0x63, 0x72, 0x81, 0x8d, 0x95, 0x97, 0x93, 0x88, 0x78, 0x6a, 0x64, 0x69, 0x75, 0x87, - 0x95, 0x9b, 0x98, 0x90, 0x85, 0x78, 0x6f, 0x6c, 0x6c, 0x71, 0x7a, 0x85, 0x8d, 0x91, 0x8b, 0x81, - 0x75, 0x6d, 0x6d, 0x74, 0x7d, 0x87, 0x8d, 0x8d, 0x8a, 0x85, 0x7d, 0x77, 0x74, 0x73, 0x74, 0x78, - 0x7e, 0x85, 0x89, 0x89, 0x86, 0x81, 0x7a, 0x76, 0x76, 0x77, 0x7c, 0x83, 0x88, 0x89, 0x88, 0x84, - 0x7d, 0x7a, 0x78, 0x77, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x7e, 0x79, 0x74, 0x72, 0x76, 0x80, - 0x8a, 0x92, 0x95, 0x93, 0x8b, 0x81, 0x79, 0x73, 0x6f, 0x6e, 0x70, 0x76, 0x7d, 0x88, 0x8f, 0x8f, - 0x8a, 0x82, 0x7b, 0x79, 0x79, 0x7d, 0x83, 0x85, 0x86, 0x88, 0x83, 0x7a, 0x78, 0x7e, 0x81, 0x80, - 0x82, 0x86, 0x86, 0x83, 0x7d, 0x76, 0x6f, 0x6d, 0x74, 0x81, 0x8e, 0x99, 0x9e, 0x99, 0x86, 0x73, - 0x69, 0x66, 0x6a, 0x75, 0x88, 0x99, 0x9f, 0x95, 0x72, 0x3e, 0x20, 0x3f, 0x90, 0xdb, 0xf9, 0xe4, - 0xad, 0x78, 0x57, 0x48, 0x3d, 0x3e, 0x50, 0x71, 0x8f, 0x9f, 0xaf, 0xb5, 0xa4, 0x76, 0x47, 0x3c, - 0x55, 0x80, 0xa5, 0xb3, 0xad, 0xa0, 0x90, 0x7a, 0x6a, 0x64, 0x61, 0x5d, 0x61, 0x76, 0x92, 0xa4, - 0xa8, 0x9e, 0x82, 0x5d, 0x4e, 0x5f, 0x79, 0x88, 0x92, 0xa4, 0xaa, 0x9a, 0x87, 0x7d, 0x74, 0x62, - 0x57, 0x62, 0x76, 0x87, 0x97, 0xa0, 0x98, 0x81, 0x71, 0x6c, 0x67, 0x63, 0x6b, 0x83, 0x94, 0x9b, - 0xa0, 0xa2, 0x95, 0x79, 0x64, 0x5c, 0x5e, 0x66, 0x77, 0x88, 0x8e, 0x8d, 0x8e, 0x8c, 0x81, 0x73, - 0x71, 0x73, 0x72, 0x76, 0x85, 0x93, 0x96, 0x91, 0x89, 0x7e, 0x74, 0x72, 0x74, 0x75, 0x75, 0x79, - 0x7c, 0x7e, 0x80, 0x82, 0x86, 0x85, 0x82, 0x7e, 0x7b, 0x78, 0x79, 0x7c, 0x81, 0x85, 0x85, 0x82, - 0x7d, 0x76, 0x72, 0x75, 0x7a, 0x82, 0x89, 0x8b, 0x87, 0x81, 0x7a, 0x76, 0x76, 0x79, 0x7c, 0x7d, - 0x7d, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x85, 0x85, 0x84, 0x81, 0x7d, 0x79, 0x77, 0x75, 0x74, 0x77, - 0x7c, 0x82, 0x87, 0x88, 0x84, 0x7d, 0x77, 0x73, 0x73, 0x7a, 0x84, 0x8b, 0x90, 0x8f, 0x8b, 0x85, - 0x7d, 0x79, 0x76, 0x74, 0x74, 0x78, 0x7d, 0x84, 0x88, 0x8b, 0x89, 0x84, 0x7e, 0x7b, 0x7a, 0x77, - 0x6e, 0x62, 0x5a, 0x62, 0x7a, 0xa2, 0xc5, 0xcb, 0xae, 0x77, 0x45, 0x31, 0x42, 0x6a, 0x8f, 0x9a, - 0x94, 0x87, 0x84, 0x8c, 0x93, 0x88, 0x6a, 0x50, 0x4f, 0x6a, 0x97, 0xb9, 0xbf, 0xa8, 0x85, 0x65, - 0x57, 0x5c, 0x69, 0x77, 0x80, 0x82, 0x86, 0x92, 0x9e, 0x9e, 0x8b, 0x6d, 0x58, 0x56, 0x67, 0x83, - 0x9a, 0xa6, 0xa3, 0x91, 0x81, 0x77, 0x71, 0x6b, 0x68, 0x6c, 0x76, 0x82, 0x8e, 0x97, 0x97, 0x86, - 0x71, 0x68, 0x6b, 0x73, 0x7d, 0x88, 0x8d, 0x88, 0x84, 0x84, 0x85, 0x81, 0x7a, 0x75, 0x72, 0x74, - 0x7a, 0x84, 0x8b, 0x89, 0x81, 0x7b, 0x79, 0x78, 0x79, 0x81, 0x87, 0x88, 0x87, 0x87, 0x86, 0x81, - 0x7b, 0x78, 0x77, 0x7a, 0x81, 0x87, 0x8a, 0x85, 0x7c, 0x77, 0x74, 0x75, 0x7b, 0x84, 0x88, 0x86, - 0x83, 0x7e, 0x7b, 0x79, 0x77, 0x78, 0x7d, 0x87, 0x8f, 0x91, 0x89, 0x7b, 0x71, 0x6a, 0x69, 0x6f, - 0x7d, 0x8e, 0x96, 0x95, 0x8f, 0x87, 0x7c, 0x72, 0x6d, 0x6c, 0x71, 0x7d, 0x88, 0x8b, 0x88, 0x85, - 0x82, 0x7b, 0x74, 0x73, 0x7c, 0x88, 0x8e, 0x8e, 0x8a, 0x84, 0x7a, 0x74, 0x73, 0x78, 0x83, 0x8c, - 0x8e, 0x7e, 0x60, 0x45, 0x45, 0x6b, 0xac, 0xe2, 0xec, 0xc1, 0x77, 0x3e, 0x34, 0x52, 0x72, 0x7d, - 0x75, 0x70, 0x7e, 0x9d, 0xb2, 0xa9, 0x85, 0x59, 0x44, 0x49, 0x67, 0x91, 0xb2, 0xbc, 0xad, 0x8e, - 0x71, 0x67, 0x69, 0x6c, 0x68, 0x60, 0x67, 0x81, 0x9f, 0xae, 0xa5, 0x8d, 0x6e, 0x57, 0x51, 0x66, - 0x89, 0x9d, 0x9c, 0x91, 0x8a, 0x86, 0x81, 0x81, 0x80, 0x72, 0x63, 0x63, 0x76, 0x88, 0x8c, 0x8e, - 0x8b, 0x7b, 0x6c, 0x6f, 0x7e, 0x89, 0x8a, 0x88, 0x85, 0x80, 0x7d, 0x84, 0x8a, 0x86, 0x7b, 0x76, - 0x7a, 0x7c, 0x7e, 0x87, 0x8b, 0x83, 0x78, 0x78, 0x7d, 0x82, 0x85, 0x87, 0x84, 0x7b, 0x76, 0x78, - 0x7d, 0x7e, 0x80, 0x83, 0x86, 0x86, 0x88, 0x8b, 0x87, 0x79, 0x6b, 0x66, 0x66, 0x6b, 0x76, 0x84, - 0x8f, 0x93, 0x94, 0x93, 0x8d, 0x81, 0x74, 0x6a, 0x63, 0x63, 0x6d, 0x7c, 0x8c, 0x97, 0x9b, 0x96, - 0x87, 0x75, 0x6b, 0x69, 0x6e, 0x77, 0x81, 0x86, 0x86, 0x87, 0x89, 0x8a, 0x88, 0x83, 0x7c, 0x76, - 0x73, 0x75, 0x7b, 0x82, 0x85, 0x84, 0x81, 0x80, 0x80, 0x81, 0x84, 0x84, 0x82, 0x80, 0x7e, 0x7c, - 0x79, 0x77, 0x75, 0x77, 0x7e, 0x87, 0x90, 0x94, 0x90, 0x89, 0x7d, 0x73, 0x6b, 0x68, 0x6a, 0x71, - 0x79, 0x86, 0x90, 0x97, 0x96, 0x8f, 0x82, 0x74, 0x6d, 0x6f, 0x77, 0x82, 0x8b, 0x8f, 0x8c, 0x84, - 0x7b, 0x76, 0x76, 0x76, 0x77, 0x79, 0x7c, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x75, 0x63, 0x53, - 0x51, 0x68, 0x99, 0xcc, 0xe8, 0xd5, 0x98, 0x51, 0x29, 0x2b, 0x4e, 0x7b, 0x93, 0x92, 0x86, 0x84, - 0x90, 0x98, 0x8d, 0x6f, 0x54, 0x4d, 0x64, 0x90, 0xb5, 0xc4, 0xb0, 0x8a, 0x66, 0x4e, 0x50, 0x62, - 0x79, 0x89, 0x8a, 0x89, 0x8e, 0x93, 0x91, 0x82, 0x6b, 0x5a, 0x59, 0x69, 0x86, 0xa3, 0xb2, 0xad, - 0x94, 0x77, 0x67, 0x61, 0x62, 0x69, 0x75, 0x80, 0x85, 0x8c, 0x96, 0x98, 0x89, 0x75, 0x6b, 0x69, - 0x6d, 0x7b, 0x8e, 0x96, 0x91, 0x87, 0x7e, 0x7a, 0x79, 0x7a, 0x7c, 0x7c, 0x7b, 0x7d, 0x84, 0x88, - 0x84, 0x7c, 0x77, 0x75, 0x77, 0x7e, 0x8a, 0x90, 0x8d, 0x86, 0x7d, 0x78, 0x75, 0x76, 0x79, 0x7c, - 0x7e, 0x80, 0x83, 0x86, 0x84, 0x7d, 0x77, 0x72, 0x70, 0x74, 0x7c, 0x84, 0x87, 0x89, 0x8a, 0x8a, - 0x89, 0x87, 0x82, 0x79, 0x70, 0x6a, 0x6b, 0x71, 0x79, 0x80, 0x86, 0x87, 0x85, 0x84, 0x83, 0x81, - 0x7e, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x78, 0x73, 0x73, 0x77, 0x7e, 0x85, 0x8c, 0x8f, 0x8d, - 0x86, 0x7c, 0x76, 0x77, 0x7b, 0x83, 0x88, 0x87, 0x82, 0x7b, 0x77, 0x76, 0x79, 0x7e, 0x82, 0x82, - 0x81, 0x82, 0x86, 0x88, 0x86, 0x80, 0x78, 0x74, 0x74, 0x77, 0x7d, 0x85, 0x88, 0x86, 0x80, 0x78, - 0x75, 0x78, 0x7d, 0x83, 0x88, 0x8d, 0x91, 0x94, 0x91, 0x87, 0x73, 0x58, 0x40, 0x3e, 0x5c, 0x94, - 0xcf, 0xe9, 0xd4, 0x99, 0x54, 0x30, 0x34, 0x54, 0x78, 0x90, 0x9a, 0x9a, 0x9d, 0x9e, 0x93, 0x74, - 0x4f, 0x38, 0x3c, 0x5f, 0x92, 0xbe, 0xcc, 0xbc, 0x98, 0x6e, 0x53, 0x4c, 0x58, 0x6c, 0x7b, 0x87, - 0x90, 0x9a, 0x9e, 0x98, 0x83, 0x68, 0x57, 0x55, 0x62, 0x7e, 0x9b, 0xab, 0xa5, 0x90, 0x7c, 0x6f, - 0x6b, 0x6c, 0x73, 0x7b, 0x7d, 0x7e, 0x85, 0x8c, 0x8a, 0x82, 0x79, 0x72, 0x6d, 0x6f, 0x7d, 0x8d, - 0x92, 0x8d, 0x86, 0x7d, 0x77, 0x76, 0x78, 0x7d, 0x7e, 0x7d, 0x80, 0x85, 0x86, 0x82, 0x7d, 0x78, - 0x72, 0x70, 0x78, 0x85, 0x8e, 0x90, 0x8c, 0x84, 0x7c, 0x78, 0x77, 0x7a, 0x7a, 0x79, 0x7b, 0x82, - 0x86, 0x88, 0x88, 0x83, 0x79, 0x72, 0x73, 0x7a, 0x82, 0x87, 0x88, 0x86, 0x82, 0x7c, 0x79, 0x7a, - 0x7a, 0x7c, 0x81, 0x85, 0x87, 0x87, 0x83, 0x7c, 0x78, 0x76, 0x77, 0x7c, 0x82, 0x83, 0x83, 0x83, - 0x84, 0x85, 0x87, 0x89, 0x88, 0x86, 0x82, 0x7b, 0x76, 0x71, 0x6f, 0x73, 0x7b, 0x84, 0x8c, 0x91, - 0x8e, 0x88, 0x82, 0x7c, 0x79, 0x76, 0x71, 0x6d, 0x6a, 0x6f, 0x7b, 0x8b, 0x9a, 0xa0, 0x9a, 0x8c, - 0x77, 0x67, 0x5f, 0x61, 0x6c, 0x7b, 0x8c, 0x99, 0x9d, 0x98, 0x8b, 0x79, 0x6c, 0x66, 0x69, 0x76, - 0x88, 0x95, 0x97, 0x90, 0x84, 0x75, 0x6b, 0x6a, 0x6e, 0x76, 0x81, 0x89, 0x8d, 0x8c, 0x8c, 0x88, - 0x81, 0x7a, 0x78, 0x7a, 0x7e, 0x82, 0x84, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x86, 0x8d, 0x8f, 0x85, - 0x6e, 0x51, 0x44, 0x54, 0x85, 0xbf, 0xdf, 0xda, 0xab, 0x6a, 0x3d, 0x37, 0x4e, 0x69, 0x7c, 0x86, - 0x8a, 0x96, 0xa3, 0xa7, 0x95, 0x72, 0x53, 0x4a, 0x5b, 0x7e, 0xa5, 0xbd, 0xbd, 0xa2, 0x7c, 0x60, - 0x59, 0x64, 0x74, 0x7e, 0x80, 0x7e, 0x84, 0x8a, 0x8a, 0x84, 0x79, 0x70, 0x6d, 0x73, 0x87, 0x9c, - 0xa2, 0x97, 0x83, 0x70, 0x65, 0x65, 0x6c, 0x7b, 0x8a, 0x8e, 0x8a, 0x88, 0x85, 0x7b, 0x73, 0x70, - 0x71, 0x73, 0x79, 0x89, 0x96, 0x97, 0x8d, 0x81, 0x75, 0x71, 0x70, 0x76, 0x81, 0x84, 0x83, 0x83, - 0x86, 0x85, 0x7d, 0x78, 0x76, 0x74, 0x78, 0x81, 0x8c, 0x93, 0x8e, 0x83, 0x7a, 0x75, 0x72, 0x76, - 0x81, 0x87, 0x86, 0x85, 0x85, 0x81, 0x7a, 0x74, 0x70, 0x70, 0x74, 0x7c, 0x89, 0x90, 0x8f, 0x8a, - 0x82, 0x79, 0x75, 0x74, 0x78, 0x7e, 0x81, 0x82, 0x84, 0x83, 0x81, 0x7e, 0x7c, 0x7b, 0x7b, 0x7a, - 0x79, 0x7b, 0x7b, 0x7e, 0x85, 0x89, 0x89, 0x87, 0x81, 0x7d, 0x7e, 0x7c, 0x7d, 0x80, 0x7d, 0x79, - 0x78, 0x7c, 0x80, 0x82, 0x84, 0x86, 0x84, 0x81, 0x81, 0x81, 0x81, 0x80, 0x79, 0x70, 0x65, 0x62, - 0x6a, 0x7b, 0x91, 0xa4, 0xaa, 0xa0, 0x8d, 0x71, 0x5e, 0x59, 0x61, 0x74, 0x89, 0x96, 0x9c, 0x99, - 0x8d, 0x7b, 0x6b, 0x60, 0x5f, 0x69, 0x7c, 0x95, 0xa6, 0xa6, 0x98, 0x81, 0x6d, 0x63, 0x62, 0x6c, - 0x7b, 0x86, 0x8a, 0x8c, 0x8b, 0x84, 0x7b, 0x74, 0x71, 0x75, 0x7e, 0x88, 0x8d, 0x8b, 0x82, 0x75, - 0x6b, 0x6c, 0x77, 0x88, 0x94, 0x94, 0x84, 0x64, 0x45, 0x3b, 0x59, 0x90, 0xc3, 0xdd, 0xca, 0x92, - 0x5a, 0x47, 0x53, 0x6f, 0x82, 0x81, 0x76, 0x71, 0x7c, 0x8e, 0x95, 0x8c, 0x79, 0x68, 0x69, 0x7b, - 0x95, 0xa9, 0xab, 0x97, 0x74, 0x57, 0x53, 0x64, 0x7e, 0x95, 0x9b, 0x93, 0x89, 0x82, 0x78, 0x6b, - 0x61, 0x5f, 0x65, 0x73, 0x8c, 0xa7, 0xb6, 0xad, 0x91, 0x72, 0x60, 0x5e, 0x65, 0x73, 0x85, 0x8b, - 0x8b, 0x89, 0x88, 0x89, 0x83, 0x78, 0x71, 0x6e, 0x6d, 0x77, 0x87, 0x93, 0x94, 0x8b, 0x82, 0x7d, - 0x79, 0x7a, 0x80, 0x85, 0x86, 0x82, 0x7d, 0x7b, 0x79, 0x77, 0x7a, 0x80, 0x84, 0x86, 0x87, 0x87, - 0x83, 0x7b, 0x76, 0x76, 0x78, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x83, 0x7b, 0x74, 0x71, 0x73, - 0x78, 0x7e, 0x84, 0x87, 0x89, 0x86, 0x81, 0x7d, 0x7b, 0x79, 0x7a, 0x7e, 0x84, 0x86, 0x86, 0x85, - 0x83, 0x7d, 0x7a, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x7c, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x81, - 0x8b, 0x92, 0x93, 0x8d, 0x82, 0x74, 0x68, 0x63, 0x68, 0x75, 0x84, 0x90, 0x98, 0x96, 0x8b, 0x7b, - 0x70, 0x67, 0x63, 0x6c, 0x7b, 0x8a, 0x96, 0x9f, 0x9e, 0x93, 0x7e, 0x66, 0x4e, 0x41, 0x48, 0x60, - 0x88, 0xae, 0xc4, 0xc4, 0xb0, 0x90, 0x6b, 0x54, 0x4e, 0x57, 0x68, 0x7d, 0x95, 0xa3, 0xa4, 0x98, - 0x83, 0x68, 0x57, 0x58, 0x66, 0x7a, 0x8f, 0x9b, 0x99, 0x8d, 0x7d, 0x75, 0x75, 0x7a, 0x83, 0x86, - 0x84, 0x7e, 0x76, 0x6f, 0x6b, 0x6b, 0x70, 0x7d, 0x8c, 0x97, 0x9e, 0x9a, 0x8b, 0x76, 0x63, 0x56, - 0x59, 0x68, 0x7c, 0x92, 0xa1, 0xa7, 0xa1, 0x94, 0x7d, 0x60, 0x44, 0x35, 0x41, 0x6d, 0xa8, 0xd7, - 0xe2, 0xbf, 0x81, 0x45, 0x29, 0x3a, 0x67, 0x93, 0xa7, 0xa6, 0x99, 0x8c, 0x82, 0x78, 0x69, 0x58, - 0x54, 0x64, 0x84, 0xa7, 0xbe, 0xb9, 0x9c, 0x71, 0x4d, 0x43, 0x57, 0x78, 0x97, 0xa2, 0x9b, 0x8f, - 0x84, 0x77, 0x6c, 0x64, 0x64, 0x6a, 0x78, 0x8c, 0x9d, 0xa2, 0x96, 0x7d, 0x65, 0x5e, 0x66, 0x77, - 0x8b, 0x97, 0x94, 0x89, 0x7a, 0x71, 0x6e, 0x70, 0x73, 0x7b, 0x85, 0x8a, 0x8f, 0x91, 0x8d, 0x80, - 0x71, 0x66, 0x67, 0x72, 0x85, 0x95, 0x9d, 0x9a, 0x8e, 0x7d, 0x70, 0x69, 0x65, 0x68, 0x71, 0x7c, - 0x87, 0x90, 0x96, 0x97, 0x8f, 0x82, 0x73, 0x69, 0x66, 0x6b, 0x76, 0x81, 0x87, 0x8a, 0x8c, 0x8a, - 0x88, 0x84, 0x7e, 0x77, 0x72, 0x6e, 0x70, 0x75, 0x7c, 0x84, 0x89, 0x8b, 0x8b, 0x88, 0x82, 0x7b, - 0x74, 0x6f, 0x70, 0x78, 0x83, 0x8c, 0x91, 0x90, 0x88, 0x7b, 0x71, 0x6c, 0x6d, 0x73, 0x7d, 0x89, - 0x8f, 0x91, 0x8d, 0x87, 0x80, 0x78, 0x6f, 0x66, 0x68, 0x7a, 0x91, 0xa1, 0xa9, 0xa3, 0x8b, 0x6a, - 0x56, 0x53, 0x60, 0x78, 0x91, 0xa0, 0x9f, 0x95, 0x86, 0x79, 0x70, 0x68, 0x6a, 0x73, 0x83, 0x93, - 0x9b, 0x9a, 0x8f, 0x7a, 0x6a, 0x63, 0x63, 0x69, 0x70, 0x77, 0x82, 0x8c, 0x95, 0x9a, 0x93, 0x80, - 0x6a, 0x5f, 0x63, 0x76, 0x94, 0xae, 0xb6, 0xaa, 0x8f, 0x6f, 0x55, 0x47, 0x47, 0x52, 0x66, 0x7e, - 0x97, 0xab, 0xb3, 0xac, 0x98, 0x7e, 0x69, 0x5e, 0x5d, 0x68, 0x78, 0x86, 0x8f, 0x95, 0x92, 0x8d, - 0x87, 0x7e, 0x76, 0x72, 0x72, 0x72, 0x75, 0x79, 0x7e, 0x84, 0x89, 0x8c, 0x90, 0x95, 0x96, 0x94, - 0x8b, 0x77, 0x5f, 0x45, 0x34, 0x3b, 0x5f, 0x9b, 0xd2, 0xed, 0xdc, 0xab, 0x6e, 0x3e, 0x30, 0x43, - 0x68, 0x89, 0x9b, 0x9e, 0x99, 0x91, 0x87, 0x7a, 0x68, 0x59, 0x58, 0x67, 0x82, 0x98, 0xa3, 0x9e, - 0x8d, 0x78, 0x6e, 0x71, 0x7e, 0x90, 0x97, 0x8f, 0x7d, 0x69, 0x5d, 0x5b, 0x63, 0x74, 0x89, 0x9d, - 0xab, 0xad, 0xa4, 0x90, 0x71, 0x53, 0x42, 0x47, 0x61, 0x8a, 0xb0, 0xc7, 0xc1, 0xa1, 0x7c, 0x5b, - 0x4a, 0x48, 0x57, 0x70, 0x8a, 0x9f, 0xab, 0xab, 0xa0, 0x89, 0x6a, 0x55, 0x53, 0x65, 0x7e, 0x98, - 0xa6, 0xa4, 0x93, 0x7c, 0x6c, 0x66, 0x67, 0x6e, 0x79, 0x84, 0x89, 0x8d, 0x8c, 0x87, 0x7c, 0x71, - 0x6d, 0x71, 0x7b, 0x8b, 0x96, 0x98, 0x93, 0x83, 0x72, 0x68, 0x66, 0x6c, 0x75, 0x80, 0x8a, 0x90, - 0x94, 0x94, 0x8d, 0x81, 0x74, 0x6c, 0x69, 0x6d, 0x76, 0x80, 0x89, 0x8f, 0x93, 0x92, 0x8c, 0x83, - 0x79, 0x71, 0x6d, 0x6e, 0x73, 0x7b, 0x85, 0x8c, 0x91, 0x92, 0x8d, 0x85, 0x79, 0x72, 0x70, 0x73, - 0x79, 0x80, 0x85, 0x87, 0x85, 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x7c, 0x7a, 0x77, 0x75, 0x6f, 0x66, - 0x6f, 0x8f, 0xaf, 0xbe, 0xb9, 0x9c, 0x72, 0x47, 0x33, 0x3f, 0x5d, 0x83, 0xa7, 0xb9, 0xb9, 0xa9, - 0x8c, 0x70, 0x58, 0x49, 0x4d, 0x65, 0x87, 0xa3, 0xb0, 0xac, 0x94, 0x75, 0x5f, 0x5a, 0x65, 0x7a, - 0x91, 0x99, 0x90, 0x78, 0x64, 0x5d, 0x60, 0x6d, 0x7e, 0x92, 0xa0, 0xa5, 0xa2, 0x96, 0x86, 0x72, - 0x63, 0x61, 0x6a, 0x7a, 0x8a, 0x92, 0x8e, 0x7b, 0x6a, 0x61, 0x62, 0x6d, 0x81, 0x96, 0xa4, 0xa7, - 0x9d, 0x8c, 0x76, 0x66, 0x5d, 0x5b, 0x65, 0x78, 0x8e, 0xa1, 0xa7, 0x9e, 0x8d, 0x7a, 0x6c, 0x66, - 0x68, 0x73, 0x80, 0x86, 0x85, 0x7d, 0x76, 0x73, 0x75, 0x7d, 0x87, 0x8d, 0x8f, 0x8e, 0x89, 0x83, - 0x7b, 0x73, 0x67, 0x59, 0x57, 0x6d, 0x94, 0xb4, 0xbe, 0xac, 0x89, 0x67, 0x58, 0x59, 0x65, 0x77, - 0x8a, 0x99, 0x9d, 0x93, 0x82, 0x70, 0x64, 0x5e, 0x5f, 0x6b, 0x80, 0x98, 0xa9, 0xaa, 0x98, 0x7c, - 0x6a, 0x64, 0x69, 0x74, 0x82, 0x8f, 0x94, 0x8f, 0x82, 0x77, 0x72, 0x71, 0x70, 0x72, 0x7c, 0x8b, - 0x93, 0x93, 0x88, 0x78, 0x6d, 0x66, 0x68, 0x73, 0x86, 0x96, 0x9e, 0x9b, 0x91, 0x7d, 0x6e, 0x68, - 0x69, 0x6c, 0x71, 0x7d, 0x8d, 0x96, 0x95, 0x90, 0x88, 0x7d, 0x73, 0x6f, 0x71, 0x78, 0x82, 0x87, - 0x87, 0x83, 0x7d, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x74, 0x76, 0x7b, - 0x84, 0x8b, 0x90, 0x90, 0x8a, 0x81, 0x78, 0x74, 0x73, 0x77, 0x7d, 0x84, 0x89, 0x8c, 0x89, 0x81, - 0x79, 0x75, 0x74, 0x77, 0x7e, 0x84, 0x88, 0x88, 0x84, 0x7e, 0x7b, 0x79, 0x78, 0x7c, 0x81, 0x86, - 0x89, 0x88, 0x85, 0x7e, 0x76, 0x72, 0x73, 0x77, 0x7d, 0x83, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7d, - 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7e, 0x81, 0x83, 0x85, 0x84, 0x81, 0x7b, 0x77, 0x76, - 0x78, 0x7c, 0x81, 0x86, 0x88, 0x82, 0x75, 0x6f, 0x74, 0x80, 0x8b, 0x92, 0x92, 0x8a, 0x7b, 0x72, - 0x72, 0x76, 0x79, 0x7b, 0x7e, 0x7e, 0x7e, 0x83, 0x86, 0x83, 0x7a, 0x74, 0x7a, 0x87, 0x90, 0x92, - 0x8e, 0x81, 0x70, 0x67, 0x6c, 0x77, 0x87, 0x92, 0x93, 0x8a, 0x7a, 0x71, 0x70, 0x73, 0x78, 0x7d, - 0x82, 0x85, 0x89, 0x8c, 0x8c, 0x86, 0x79, 0x6e, 0x6a, 0x6f, 0x7b, 0x8a, 0x94, 0x95, 0x8b, 0x7e, - 0x75, 0x70, 0x6b, 0x68, 0x68, 0x6b, 0x71, 0x7d, 0x8f, 0x9e, 0xa4, 0xa0, 0x93, 0x82, 0x73, 0x6c, - 0x6d, 0x76, 0x80, 0x87, 0x8a, 0x88, 0x82, 0x7b, 0x76, 0x73, 0x72, 0x74, 0x7a, 0x84, 0x8c, 0x8f, - 0x8d, 0x88, 0x81, 0x7a, 0x78, 0x7c, 0x84, 0x8b, 0x8d, 0x8a, 0x82, 0x78, 0x71, 0x70, 0x73, 0x77, - 0x7d, 0x86, 0x8a, 0x8a, 0x88, 0x82, 0x7a, 0x76, 0x78, 0x7d, 0x86, 0x8d, 0x8f, 0x8c, 0x85, 0x7e, - 0x7b, 0x7a, 0x79, 0x79, 0x7c, 0x81, 0x84, 0x83, 0x81, 0x7c, 0x77, 0x77, 0x7a, 0x7d, 0x80, 0x7d, - 0x7a, 0x79, 0x80, 0x8b, 0x91, 0x90, 0x88, 0x7c, 0x75, 0x75, 0x77, 0x79, 0x7c, 0x80, 0x82, 0x82, - 0x7e, 0x7b, 0x77, 0x76, 0x76, 0x78, 0x7c, 0x83, 0x89, 0x8b, 0x87, 0x7e, 0x75, 0x6f, 0x70, 0x78, - 0x85, 0x92, 0x9a, 0x97, 0x8b, 0x7b, 0x6d, 0x65, 0x63, 0x69, 0x74, 0x84, 0x93, 0x9e, 0xa1, 0x9a, - 0x8b, 0x78, 0x69, 0x63, 0x68, 0x73, 0x7e, 0x8a, 0x91, 0x93, 0x91, 0x8d, 0x85, 0x7a, 0x70, 0x6c, - 0x6d, 0x74, 0x7e, 0x88, 0x8d, 0x8f, 0x8b, 0x83, 0x7c, 0x77, 0x74, 0x73, 0x75, 0x79, 0x7b, 0x82, - 0x8d, 0x95, 0x94, 0x8b, 0x7c, 0x6d, 0x62, 0x64, 0x74, 0x89, 0x96, 0x9b, 0x97, 0x88, 0x76, 0x6b, - 0x68, 0x69, 0x6f, 0x7a, 0x86, 0x8f, 0x93, 0x91, 0x8c, 0x83, 0x77, 0x6e, 0x6d, 0x73, 0x7c, 0x87, - 0x8d, 0x8c, 0x85, 0x7a, 0x75, 0x72, 0x72, 0x74, 0x79, 0x7d, 0x82, 0x87, 0x8a, 0x89, 0x84, 0x7c, - 0x77, 0x76, 0x7b, 0x80, 0x84, 0x85, 0x82, 0x7d, 0x7c, 0x81, 0x85, 0x86, 0x84, 0x80, 0x79, 0x75, - 0x77, 0x7b, 0x82, 0x87, 0x89, 0x8a, 0x89, 0x86, 0x84, 0x80, 0x7a, 0x74, 0x70, 0x72, 0x76, 0x79, - 0x7d, 0x82, 0x85, 0x86, 0x84, 0x83, 0x84, 0x82, 0x81, 0x78, 0x68, 0x5d, 0x65, 0x85, 0xa9, 0xc3, - 0xca, 0xb2, 0x84, 0x54, 0x37, 0x35, 0x47, 0x68, 0x8a, 0x9e, 0xa2, 0x9d, 0x92, 0x85, 0x74, 0x6b, - 0x6e, 0x7d, 0x92, 0x9f, 0xa1, 0x95, 0x7d, 0x66, 0x5b, 0x5f, 0x6f, 0x83, 0x94, 0x9c, 0x95, 0x87, - 0x78, 0x6e, 0x68, 0x6c, 0x77, 0x87, 0x92, 0x97, 0x95, 0x89, 0x7a, 0x6f, 0x69, 0x71, 0x80, 0x91, - 0x9d, 0x9e, 0x90, 0x76, 0x60, 0x54, 0x58, 0x6a, 0x86, 0x9d, 0xaa, 0xa7, 0x98, 0x81, 0x68, 0x59, - 0x55, 0x5e, 0x72, 0x8b, 0xa1, 0xad, 0xa9, 0x97, 0x80, 0x68, 0x5a, 0x57, 0x5f, 0x6d, 0x7d, 0x8c, - 0x94, 0x96, 0x92, 0x88, 0x7d, 0x76, 0x73, 0x76, 0x7c, 0x83, 0x86, 0x85, 0x81, 0x7a, 0x78, 0x79, - 0x7b, 0x82, 0x85, 0x84, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x7e, 0x7e, 0x80, 0x82, 0x84, 0x87, 0x86, - 0x82, 0x7e, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x78, 0x78, 0x7a, 0x81, 0x86, 0x88, 0x8a, 0x88, 0x85, - 0x80, 0x7b, 0x77, 0x74, 0x75, 0x77, 0x7b, 0x80, 0x85, 0x87, 0x88, 0x89, 0x88, 0x86, 0x84, 0x80, - 0x79, 0x75, 0x72, 0x72, 0x77, 0x7e, 0x86, 0x8a, 0x8d, 0x8d, 0x88, 0x81, 0x7b, 0x74, 0x6f, 0x70, - 0x74, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x88, 0x85, 0x82, 0x7e, 0x7c, 0x76, 0x72, 0x72, 0x77, 0x83, - 0x8e, 0x92, 0x8d, 0x81, 0x75, 0x71, 0x74, 0x7b, 0x82, 0x86, 0x86, 0x88, 0x89, 0x8a, 0x87, 0x81, - 0x7a, 0x76, 0x77, 0x7b, 0x80, 0x81, 0x81, 0x81, 0x82, 0x83, 0x81, 0x7e, 0x7d, 0x7e, 0x81, 0x83, - 0x82, 0x7e, 0x7a, 0x78, 0x7b, 0x82, 0x88, 0x8a, 0x89, 0x85, 0x80, 0x7d, 0x7c, 0x7a, 0x74, 0x6e, - 0x6a, 0x6e, 0x7c, 0x8d, 0x9b, 0xa2, 0x9e, 0x93, 0x83, 0x70, 0x64, 0x5e, 0x60, 0x6d, 0x7d, 0x8d, - 0x98, 0x9a, 0x94, 0x87, 0x7a, 0x73, 0x70, 0x71, 0x75, 0x7b, 0x81, 0x85, 0x85, 0x84, 0x81, 0x7b, - 0x78, 0x76, 0x79, 0x80, 0x88, 0x8d, 0x8c, 0x86, 0x7d, 0x76, 0x74, 0x76, 0x7c, 0x85, 0x8b, 0x8d, - 0x8b, 0x84, 0x7a, 0x70, 0x6d, 0x72, 0x7c, 0x89, 0x93, 0x96, 0x91, 0x87, 0x7a, 0x6e, 0x69, 0x6c, - 0x77, 0x86, 0x91, 0x95, 0x90, 0x88, 0x7e, 0x76, 0x73, 0x75, 0x78, 0x7d, 0x83, 0x87, 0x89, 0x87, - 0x82, 0x7b, 0x79, 0x78, 0x78, 0x7a, 0x7e, 0x7d, 0x7b, 0x7c, 0x7e, 0x82, 0x88, 0x8d, 0x8e, 0x8a, - 0x83, 0x7a, 0x71, 0x6d, 0x6e, 0x75, 0x81, 0x8d, 0x95, 0x99, 0x95, 0x89, 0x78, 0x6a, 0x65, 0x69, - 0x76, 0x88, 0x95, 0x9b, 0x97, 0x8c, 0x7d, 0x6f, 0x67, 0x67, 0x6d, 0x77, 0x84, 0x8e, 0x93, 0x93, - 0x8e, 0x85, 0x7b, 0x73, 0x6f, 0x6f, 0x73, 0x7a, 0x81, 0x85, 0x87, 0x88, 0x87, 0x86, 0x82, 0x7e, - 0x7c, 0x7a, 0x7a, 0x79, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x82, 0x84, - 0x85, 0x83, 0x80, 0x7b, 0x79, 0x7a, 0x7a, 0x7a, 0x7c, 0x80, 0x85, 0x8a, 0x8c, 0x88, 0x7e, 0x75, - 0x6f, 0x6d, 0x71, 0x7a, 0x84, 0x8b, 0x8f, 0x8e, 0x8a, 0x84, 0x7a, 0x71, 0x6b, 0x69, 0x6e, 0x7b, - 0x8a, 0x95, 0x98, 0x94, 0x8c, 0x80, 0x75, 0x6e, 0x6c, 0x6f, 0x76, 0x7e, 0x86, 0x89, 0x8a, 0x89, - 0x86, 0x80, 0x78, 0x71, 0x6d, 0x6e, 0x78, 0x89, 0x98, 0xa1, 0x9d, 0x8f, 0x7e, 0x6f, 0x67, 0x66, - 0x6b, 0x74, 0x7a, 0x7d, 0x7e, 0x7e, 0x81, 0x86, 0x8c, 0x91, 0x92, 0x90, 0x8c, 0x83, 0x77, 0x69, - 0x5f, 0x5f, 0x69, 0x7d, 0x92, 0xa0, 0xa0, 0x95, 0x83, 0x6f, 0x62, 0x5c, 0x5f, 0x69, 0x78, 0x8b, - 0x9a, 0xa2, 0x9e, 0x90, 0x7b, 0x69, 0x60, 0x64, 0x70, 0x80, 0x8c, 0x90, 0x8d, 0x87, 0x80, 0x79, - 0x76, 0x78, 0x80, 0x89, 0x8f, 0x8f, 0x86, 0x79, 0x6e, 0x6a, 0x6e, 0x77, 0x82, 0x89, 0x8d, 0x8c, - 0x87, 0x7e, 0x75, 0x71, 0x73, 0x7b, 0x86, 0x8b, 0x89, 0x84, 0x80, 0x7e, 0x7d, 0x7b, 0x7a, 0x7b, - 0x7c, 0x7e, 0x7e, 0x7a, 0x78, 0x7a, 0x7e, 0x84, 0x88, 0x89, 0x88, 0x81, 0x74, 0x69, 0x68, 0x70, - 0x80, 0x8e, 0x95, 0x93, 0x8c, 0x83, 0x79, 0x70, 0x6c, 0x6c, 0x73, 0x7c, 0x88, 0x94, 0x99, 0x96, - 0x89, 0x79, 0x6b, 0x65, 0x66, 0x6e, 0x7a, 0x86, 0x90, 0x97, 0x96, 0x8f, 0x83, 0x75, 0x6f, 0x6c, - 0x6f, 0x77, 0x82, 0x8d, 0x94, 0x93, 0x8b, 0x7b, 0x6d, 0x67, 0x6a, 0x74, 0x82, 0x90, 0x97, 0x95, - 0x8c, 0x7e, 0x73, 0x6d, 0x6e, 0x73, 0x7d, 0x88, 0x8f, 0x8f, 0x88, 0x7d, 0x78, 0x79, 0x7b, 0x7b, - 0x79, 0x78, 0x7a, 0x7e, 0x85, 0x89, 0x8c, 0x8c, 0x89, 0x83, 0x79, 0x73, 0x71, 0x70, 0x72, 0x78, - 0x81, 0x8a, 0x8e, 0x8e, 0x88, 0x80, 0x78, 0x74, 0x76, 0x7c, 0x82, 0x84, 0x82, 0x7c, 0x7b, 0x80, - 0x86, 0x87, 0x85, 0x81, 0x78, 0x71, 0x6d, 0x70, 0x7a, 0x88, 0x92, 0x97, 0x94, 0x8a, 0x7c, 0x6d, - 0x61, 0x5e, 0x66, 0x77, 0x8a, 0x98, 0x9d, 0x99, 0x8d, 0x7d, 0x6e, 0x64, 0x64, 0x6c, 0x78, 0x84, - 0x8d, 0x92, 0x91, 0x8b, 0x83, 0x7a, 0x74, 0x73, 0x76, 0x7a, 0x81, 0x89, 0x8d, 0x88, 0x7d, 0x77, - 0x77, 0x7d, 0x85, 0x89, 0x86, 0x80, 0x7a, 0x77, 0x79, 0x7c, 0x81, 0x84, 0x83, 0x81, 0x7c, 0x7a, - 0x76, 0x72, 0x6f, 0x73, 0x7c, 0x8a, 0x93, 0x95, 0x8e, 0x81, 0x72, 0x6a, 0x6b, 0x71, 0x7c, 0x87, - 0x8f, 0x91, 0x8c, 0x84, 0x7a, 0x73, 0x70, 0x74, 0x7b, 0x83, 0x89, 0x8d, 0x8d, 0x88, 0x81, 0x77, - 0x71, 0x71, 0x74, 0x7b, 0x83, 0x87, 0x87, 0x82, 0x7d, 0x7c, 0x7d, 0x80, 0x81, 0x80, 0x81, 0x83, - 0x85, 0x84, 0x80, 0x7a, 0x76, 0x75, 0x78, 0x7c, 0x82, 0x88, 0x8b, 0x8b, 0x8a, 0x85, 0x81, 0x7e, - 0x7c, 0x7b, 0x7a, 0x79, 0x77, 0x77, 0x7c, 0x82, 0x85, 0x88, 0x89, 0x86, 0x83, 0x7e, 0x78, 0x75, - 0x77, 0x7c, 0x85, 0x8c, 0x8e, 0x89, 0x7e, 0x77, 0x73, 0x74, 0x7a, 0x83, 0x88, 0x88, 0x89, 0x88, - 0x87, 0x85, 0x80, 0x79, 0x72, 0x6d, 0x70, 0x7a, 0x85, 0x90, 0x95, 0x94, 0x8d, 0x82, 0x76, 0x69, - 0x5f, 0x5f, 0x68, 0x79, 0x8e, 0x9f, 0xa6, 0xa1, 0x92, 0x7d, 0x6a, 0x5e, 0x5b, 0x60, 0x6d, 0x7c, - 0x8b, 0x95, 0x97, 0x94, 0x8d, 0x84, 0x79, 0x71, 0x6e, 0x6e, 0x71, 0x76, 0x7d, 0x85, 0x8b, 0x8d, - 0x8f, 0x8c, 0x86, 0x7e, 0x77, 0x71, 0x70, 0x73, 0x7a, 0x84, 0x8c, 0x90, 0x91, 0x90, 0x88, 0x7c, - 0x70, 0x67, 0x66, 0x6f, 0x7e, 0x8f, 0x9a, 0x9c, 0x93, 0x84, 0x73, 0x66, 0x62, 0x68, 0x74, 0x87, - 0x96, 0x9c, 0x9b, 0x92, 0x85, 0x78, 0x6f, 0x6c, 0x6e, 0x74, 0x7c, 0x85, 0x8b, 0x8d, 0x89, 0x82, - 0x7c, 0x7a, 0x7c, 0x7d, 0x7e, 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x81, 0x84, 0x85, 0x85, 0x83, 0x80, - 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7d, 0x80, 0x83, 0x84, 0x83, 0x80, 0x7d, 0x7e, - 0x83, 0x86, 0x86, 0x83, 0x80, 0x7a, 0x74, 0x6e, 0x6b, 0x6f, 0x7c, 0x8c, 0x9a, 0xa0, 0x9b, 0x8c, - 0x79, 0x6b, 0x67, 0x69, 0x71, 0x7b, 0x82, 0x87, 0x8a, 0x8b, 0x88, 0x80, 0x77, 0x74, 0x76, 0x7a, - 0x81, 0x84, 0x83, 0x7e, 0x79, 0x78, 0x7a, 0x7d, 0x83, 0x87, 0x8a, 0x88, 0x82, 0x7a, 0x75, 0x73, - 0x76, 0x7a, 0x7e, 0x82, 0x84, 0x85, 0x83, 0x81, 0x80, 0x7d, 0x7b, 0x78, 0x77, 0x77, 0x7a, 0x7c, - 0x80, 0x81, 0x83, 0x86, 0x87, 0x87, 0x85, 0x81, 0x7c, 0x7a, 0x79, 0x7b, 0x7c, 0x7e, 0x81, 0x83, - 0x85, 0x87, 0x84, 0x7e, 0x7a, 0x7a, 0x7d, 0x80, 0x81, 0x7d, 0x78, 0x75, 0x76, 0x7c, 0x86, 0x8b, - 0x8a, 0x85, 0x7e, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x84, 0x88, 0x89, 0x86, 0x81, 0x7b, - 0x78, 0x77, 0x78, 0x7c, 0x80, 0x83, 0x85, 0x85, 0x83, 0x82, 0x7e, 0x7b, 0x7a, 0x7d, 0x82, 0x87, - 0x89, 0x88, 0x86, 0x82, 0x7d, 0x7a, 0x78, 0x78, 0x79, 0x7e, 0x83, 0x86, 0x86, 0x85, 0x84, 0x82, - 0x7d, 0x7a, 0x76, 0x74, 0x76, 0x7a, 0x80, 0x83, 0x83, 0x82, 0x81, 0x80, 0x82, 0x85, 0x85, 0x82, - 0x7d, 0x7a, 0x79, 0x7a, 0x7d, 0x80, 0x82, 0x84, 0x85, 0x83, 0x81, 0x7d, 0x79, 0x77, 0x77, 0x7a, - 0x80, 0x86, 0x89, 0x8a, 0x88, 0x84, 0x7e, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x82, 0x85, 0x87, - 0x87, 0x83, 0x7d, 0x78, 0x75, 0x75, 0x78, 0x7e, 0x86, 0x8d, 0x90, 0x8d, 0x85, 0x7b, 0x73, 0x6f, - 0x70, 0x76, 0x7e, 0x87, 0x8d, 0x8e, 0x8a, 0x82, 0x79, 0x73, 0x70, 0x70, 0x74, 0x7b, 0x84, 0x8b, - 0x8f, 0x8d, 0x86, 0x7c, 0x75, 0x72, 0x73, 0x78, 0x7d, 0x83, 0x87, 0x8a, 0x8b, 0x88, 0x83, 0x7b, - 0x73, 0x70, 0x70, 0x72, 0x77, 0x7e, 0x85, 0x8c, 0x8f, 0x8f, 0x8a, 0x82, 0x79, 0x71, 0x6e, 0x6f, - 0x75, 0x7c, 0x84, 0x89, 0x8b, 0x8b, 0x88, 0x83, 0x7e, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x78, - 0x78, 0x78, 0x7b, 0x80, 0x84, 0x87, 0x8a, 0x8a, 0x89, 0x84, 0x7c, 0x75, 0x70, 0x71, 0x76, 0x7c, - 0x84, 0x88, 0x88, 0x86, 0x83, 0x80, 0x7c, 0x7b, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x82, 0x85, 0x86, - 0x85, 0x81, 0x7c, 0x79, 0x77, 0x77, 0x7a, 0x7e, 0x83, 0x88, 0x8a, 0x89, 0x85, 0x7e, 0x79, 0x77, - 0x77, 0x7a, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x80, 0x84, 0x88, 0x89, 0x88, 0x83, 0x7a, 0x75, - 0x73, 0x73, 0x77, 0x7c, 0x82, 0x87, 0x8a, 0x89, 0x85, 0x7e, 0x79, 0x75, 0x71, 0x72, 0x77, 0x7d, - 0x86, 0x8c, 0x90, 0x8e, 0x89, 0x82, 0x79, 0x74, 0x73, 0x75, 0x7a, 0x81, 0x87, 0x8b, 0x8a, 0x85, - 0x80, 0x79, 0x75, 0x73, 0x76, 0x7c, 0x82, 0x88, 0x8d, 0x8f, 0x8d, 0x86, 0x7c, 0x73, 0x6d, 0x6d, - 0x72, 0x7a, 0x83, 0x8a, 0x90, 0x92, 0x8f, 0x87, 0x7d, 0x75, 0x70, 0x6f, 0x72, 0x77, 0x7d, 0x84, - 0x88, 0x89, 0x88, 0x86, 0x84, 0x81, 0x7d, 0x7a, 0x78, 0x77, 0x78, 0x7b, 0x7e, 0x82, 0x84, 0x84, - 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x80, 0x7b, 0x77, 0x77, 0x78, 0x7b, 0x80, 0x80, 0x7d, 0x7b, - 0x7b, 0x80, 0x86, 0x8c, 0x8d, 0x8b, 0x83, 0x79, 0x72, 0x6e, 0x6f, 0x73, 0x79, 0x7e, 0x86, 0x8d, - 0x92, 0x94, 0x8f, 0x87, 0x7d, 0x74, 0x6e, 0x6c, 0x6d, 0x72, 0x7a, 0x83, 0x8a, 0x90, 0x91, 0x8d, - 0x86, 0x7d, 0x76, 0x72, 0x72, 0x74, 0x78, 0x7b, 0x7d, 0x82, 0x87, 0x8b, 0x8b, 0x86, 0x7e, 0x78, - 0x75, 0x76, 0x79, 0x7b, 0x7e, 0x81, 0x83, 0x83, 0x83, 0x80, 0x7c, 0x7b, 0x7a, 0x7a, 0x7e, 0x83, - 0x85, 0x86, 0x85, 0x81, 0x7c, 0x78, 0x75, 0x77, 0x7b, 0x82, 0x87, 0x89, 0x87, 0x81, 0x79, 0x75, - 0x75, 0x78, 0x7e, 0x84, 0x88, 0x88, 0x85, 0x83, 0x80, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, - 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x7d, 0x7b, 0x78, 0x78, 0x7a, 0x7e, 0x86, - 0x8c, 0x8d, 0x89, 0x81, 0x79, 0x74, 0x72, 0x75, 0x7a, 0x80, 0x84, 0x88, 0x88, 0x86, 0x83, 0x7b, - 0x74, 0x71, 0x71, 0x76, 0x80, 0x87, 0x8b, 0x8c, 0x8b, 0x87, 0x80, 0x79, 0x74, 0x72, 0x73, 0x77, - 0x7d, 0x83, 0x87, 0x88, 0x85, 0x82, 0x7e, 0x7b, 0x7b, 0x7a, 0x78, 0x79, 0x7d, 0x81, 0x84, 0x85, - 0x84, 0x82, 0x7e, 0x7c, 0x7a, 0x79, 0x78, 0x79, 0x7d, 0x81, 0x83, 0x84, 0x82, 0x7d, 0x7b, 0x7a, - 0x7c, 0x80, 0x83, 0x84, 0x83, 0x80, 0x7d, 0x7b, 0x7a, 0x7b, 0x7e, 0x82, 0x84, 0x87, 0x88, 0x86, - 0x84, 0x7d, 0x78, 0x75, 0x73, 0x75, 0x7a, 0x82, 0x88, 0x8c, 0x8e, 0x8b, 0x85, 0x7d, 0x74, 0x70, - 0x6e, 0x70, 0x79, 0x83, 0x8b, 0x8f, 0x8b, 0x86, 0x83, 0x7e, 0x7d, 0x7a, 0x78, 0x76, 0x74, 0x74, - 0x77, 0x7d, 0x86, 0x8d, 0x8f, 0x8f, 0x8b, 0x86, 0x7e, 0x75, 0x6e, 0x6a, 0x6a, 0x71, 0x7b, 0x88, - 0x92, 0x98, 0x97, 0x8f, 0x83, 0x76, 0x6e, 0x6c, 0x6f, 0x78, 0x82, 0x8a, 0x8f, 0x8e, 0x8a, 0x83, - 0x7c, 0x75, 0x72, 0x72, 0x78, 0x81, 0x8a, 0x91, 0x92, 0x8d, 0x84, 0x78, 0x71, 0x6c, 0x6b, 0x70, - 0x79, 0x85, 0x8c, 0x90, 0x8e, 0x86, 0x7d, 0x77, 0x74, 0x75, 0x76, 0x78, 0x7c, 0x84, 0x8a, 0x8d, - 0x8a, 0x85, 0x7d, 0x76, 0x74, 0x75, 0x77, 0x7a, 0x7e, 0x82, 0x85, 0x85, 0x84, 0x83, 0x82, 0x7d, - 0x7a, 0x78, 0x76, 0x77, 0x79, 0x7c, 0x80, 0x81, 0x84, 0x85, 0x82, 0x80, 0x7c, 0x7b, 0x7b, 0x7b, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x82, 0x81, 0x7d, 0x79, 0x76, - 0x75, 0x78, 0x7b, 0x7d, 0x81, 0x84, 0x86, 0x8a, 0x8c, 0x8c, 0x84, 0x7a, 0x70, 0x6a, 0x6b, 0x70, - 0x78, 0x83, 0x8b, 0x91, 0x94, 0x90, 0x88, 0x7d, 0x71, 0x6a, 0x69, 0x6e, 0x77, 0x81, 0x8a, 0x8e, - 0x8c, 0x88, 0x84, 0x80, 0x7a, 0x76, 0x75, 0x77, 0x7d, 0x83, 0x86, 0x85, 0x81, 0x7c, 0x7b, 0x7d, - 0x82, 0x84, 0x83, 0x81, 0x7c, 0x7a, 0x7a, 0x7c, 0x7c, 0x7d, 0x80, 0x84, 0x88, 0x89, 0x84, 0x7a, - 0x73, 0x70, 0x73, 0x78, 0x7e, 0x84, 0x86, 0x87, 0x87, 0x86, 0x83, 0x7e, 0x7a, 0x7a, 0x7b, 0x7c, - 0x7b, 0x78, 0x78, 0x78, 0x7b, 0x81, 0x85, 0x87, 0x88, 0x87, 0x85, 0x80, 0x79, 0x75, 0x73, 0x74, - 0x77, 0x7b, 0x81, 0x86, 0x88, 0x89, 0x86, 0x81, 0x7b, 0x77, 0x75, 0x77, 0x79, 0x7b, 0x7e, 0x84, - 0x89, 0x8c, 0x8c, 0x88, 0x81, 0x79, 0x74, 0x72, 0x73, 0x78, 0x7d, 0x83, 0x88, 0x8a, 0x88, 0x84, - 0x80, 0x7a, 0x77, 0x76, 0x79, 0x7c, 0x7d, 0x80, 0x83, 0x86, 0x88, 0x87, 0x85, 0x81, 0x7b, 0x78, - 0x75, 0x75, 0x78, 0x7c, 0x82, 0x88, 0x8b, 0x8b, 0x87, 0x7e, 0x76, 0x72, 0x70, 0x72, 0x77, 0x7c, - 0x82, 0x86, 0x88, 0x87, 0x83, 0x7c, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x7c, 0x7e, 0x83, 0x88, 0x8c, - 0x8b, 0x86, 0x7d, 0x74, 0x71, 0x74, 0x77, 0x7b, 0x80, 0x82, 0x82, 0x83, 0x86, 0x87, 0x85, 0x83, - 0x81, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x79, 0x7d, 0x82, 0x86, 0x88, 0x87, 0x85, 0x82, 0x7e, 0x7b, - 0x78, 0x78, 0x7a, 0x7d, 0x81, 0x84, 0x85, 0x84, 0x82, 0x83, 0x84, 0x84, 0x82, 0x7b, 0x75, 0x71, - 0x71, 0x77, 0x80, 0x87, 0x8c, 0x8f, 0x90, 0x8b, 0x83, 0x77, 0x6d, 0x67, 0x67, 0x6c, 0x78, 0x86, - 0x91, 0x98, 0x99, 0x94, 0x8a, 0x7b, 0x6e, 0x66, 0x64, 0x6b, 0x76, 0x84, 0x8d, 0x94, 0x96, 0x93, - 0x8d, 0x83, 0x78, 0x70, 0x6d, 0x6e, 0x74, 0x7a, 0x82, 0x88, 0x8d, 0x8e, 0x8a, 0x84, 0x7b, 0x77, - 0x76, 0x77, 0x78, 0x7a, 0x7d, 0x81, 0x83, 0x84, 0x83, 0x81, 0x82, 0x83, 0x82, 0x80, 0x7d, 0x7b, - 0x7b, 0x7b, 0x7c, 0x7e, 0x82, 0x84, 0x85, 0x85, 0x81, 0x7c, 0x79, 0x79, 0x7c, 0x7d, 0x7e, 0x81, - 0x83, 0x83, 0x85, 0x84, 0x82, 0x7c, 0x78, 0x79, 0x7c, 0x80, 0x83, 0x83, 0x82, 0x83, 0x83, 0x82, - 0x7d, 0x78, 0x74, 0x73, 0x76, 0x7b, 0x80, 0x84, 0x87, 0x89, 0x8a, 0x89, 0x83, 0x7b, 0x76, 0x75, - 0x78, 0x7a, 0x7c, 0x7e, 0x81, 0x84, 0x88, 0x8a, 0x8a, 0x85, 0x80, 0x7a, 0x77, 0x76, 0x75, 0x77, - 0x7b, 0x83, 0x8a, 0x8e, 0x8c, 0x87, 0x80, 0x79, 0x76, 0x74, 0x73, 0x74, 0x78, 0x7d, 0x84, 0x89, - 0x8d, 0x8d, 0x8a, 0x87, 0x81, 0x7a, 0x72, 0x6e, 0x70, 0x76, 0x80, 0x88, 0x8f, 0x91, 0x8e, 0x88, - 0x81, 0x77, 0x70, 0x6f, 0x72, 0x78, 0x7e, 0x84, 0x88, 0x8b, 0x8e, 0x8e, 0x8b, 0x81, 0x73, 0x69, - 0x63, 0x67, 0x75, 0x84, 0x92, 0x9a, 0x9a, 0x96, 0x8c, 0x80, 0x72, 0x67, 0x62, 0x64, 0x6c, 0x79, - 0x88, 0x94, 0x99, 0x98, 0x92, 0x87, 0x7b, 0x70, 0x68, 0x67, 0x6d, 0x76, 0x80, 0x89, 0x8d, 0x8e, - 0x8c, 0x8a, 0x86, 0x82, 0x7d, 0x78, 0x75, 0x73, 0x73, 0x74, 0x77, 0x7e, 0x87, 0x8d, 0x8f, 0x8e, - 0x89, 0x83, 0x7b, 0x74, 0x71, 0x70, 0x72, 0x78, 0x80, 0x86, 0x88, 0x86, 0x85, 0x84, 0x82, 0x80, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7b, 0x7b, 0x7c, 0x7e, 0x83, 0x85, 0x84, 0x83, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x82, 0x86, 0x88, 0x86, - 0x82, 0x7e, 0x7a, 0x79, 0x7a, 0x7b, 0x7d, 0x81, 0x82, 0x82, 0x81, 0x7c, 0x7a, 0x7b, 0x81, 0x87, - 0x8a, 0x89, 0x85, 0x7d, 0x78, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, 0x89, 0x8b, 0x89, 0x84, 0x7d, - 0x78, 0x76, 0x75, 0x77, 0x79, 0x7b, 0x7d, 0x80, 0x85, 0x89, 0x89, 0x88, 0x86, 0x82, 0x7c, 0x78, - 0x74, 0x73, 0x75, 0x7a, 0x82, 0x88, 0x8a, 0x8a, 0x88, 0x83, 0x7d, 0x7a, 0x78, 0x77, 0x77, 0x79, - 0x7d, 0x83, 0x89, 0x8b, 0x89, 0x84, 0x7c, 0x75, 0x71, 0x71, 0x77, 0x82, 0x8a, 0x8f, 0x8d, 0x86, - 0x7d, 0x77, 0x74, 0x75, 0x78, 0x7d, 0x84, 0x87, 0x89, 0x86, 0x82, 0x7d, 0x7b, 0x78, 0x79, 0x7b, - 0x7c, 0x7b, 0x7b, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x85, 0x83, 0x80, 0x7b, 0x78, 0x77, 0x79, 0x79, - 0x80, 0x86, 0x84, 0x86, 0x87, 0x81, 0x7c, 0x7a, 0x7b, 0x7e, 0x7c, 0x7e, 0x80, 0x7b, 0x7b, 0x7b, - 0x7c, 0x82, 0x82, 0x81, 0x82, 0x82, 0x83, 0x82, 0x7c, 0x7a, 0x78, 0x77, 0x7a, 0x80, 0x83, 0x81, - 0x80, 0x7e, 0x7b, 0x7a, 0x7b, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7d, 0x7d, 0x80, 0x81, 0x80, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7e, 0x81, 0x81, 0x7d, 0x7b, 0x7b, 0x7d, 0x80, 0x82, 0x83, 0x86, 0x86, - 0x85, 0x81, 0x7b, 0x77, 0x72, 0x73, 0x75, 0x7a, 0x80, 0x84, 0x8a, 0x8e, 0x90, 0x8b, 0x81, 0x75, - 0x6d, 0x68, 0x69, 0x71, 0x7b, 0x86, 0x8f, 0x91, 0x90, 0x89, 0x7d, 0x72, 0x6c, 0x6e, 0x73, 0x7a, - 0x82, 0x87, 0x89, 0x87, 0x85, 0x83, 0x80, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x80, 0x81, 0x83, 0x84, - 0x84, 0x84, 0x84, 0x82, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x81, 0x82, 0x82, 0x81, - 0x80, 0x7e, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7e, 0x84, 0x87, 0x87, 0x85, 0x82, 0x7e, 0x79, 0x76, - 0x75, 0x77, 0x79, 0x7d, 0x83, 0x88, 0x8b, 0x8b, 0x8a, 0x86, 0x7d, 0x75, 0x72, 0x73, 0x76, 0x7c, - 0x84, 0x89, 0x8b, 0x87, 0x84, 0x80, 0x7a, 0x75, 0x74, 0x79, 0x7e, 0x83, 0x86, 0x88, 0x86, 0x81, - 0x7d, 0x7a, 0x76, 0x75, 0x78, 0x7c, 0x82, 0x86, 0x88, 0x86, 0x81, 0x7e, 0x7c, 0x79, 0x78, 0x7b, - 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x80, 0x7e, 0x7b, 0x77, 0x75, 0x75, - 0x77, 0x7d, 0x85, 0x8a, 0x8c, 0x8b, 0x88, 0x82, 0x79, 0x72, 0x6f, 0x71, 0x75, 0x7d, 0x86, 0x8a, - 0x8c, 0x8d, 0x8b, 0x86, 0x7e, 0x77, 0x72, 0x70, 0x72, 0x79, 0x81, 0x85, 0x89, 0x8c, 0x8c, 0x89, - 0x86, 0x82, 0x7c, 0x77, 0x73, 0x73, 0x74, 0x78, 0x80, 0x86, 0x88, 0x87, 0x85, 0x82, 0x7d, 0x7a, - 0x79, 0x79, 0x7a, 0x7e, 0x84, 0x86, 0x85, 0x82, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7c, 0x79, 0x7a, - 0x7e, 0x82, 0x84, 0x85, 0x86, 0x85, 0x84, 0x81, 0x7d, 0x78, 0x75, 0x78, 0x7e, 0x84, 0x88, 0x8b, - 0x8c, 0x88, 0x83, 0x7e, 0x77, 0x72, 0x72, 0x74, 0x78, 0x81, 0x88, 0x8b, 0x8c, 0x8b, 0x86, 0x82, - 0x7d, 0x77, 0x73, 0x71, 0x70, 0x72, 0x79, 0x82, 0x8c, 0x93, 0x94, 0x90, 0x89, 0x7d, 0x75, 0x70, - 0x6e, 0x70, 0x74, 0x7a, 0x84, 0x8d, 0x92, 0x93, 0x8f, 0x88, 0x7e, 0x75, 0x6f, 0x6e, 0x72, 0x79, - 0x82, 0x89, 0x8e, 0x8f, 0x8c, 0x84, 0x7b, 0x74, 0x70, 0x6f, 0x74, 0x7a, 0x82, 0x88, 0x8b, 0x89, - 0x85, 0x81, 0x7b, 0x76, 0x73, 0x72, 0x74, 0x79, 0x80, 0x86, 0x8b, 0x8d, 0x8b, 0x89, 0x83, 0x7b, - 0x75, 0x72, 0x71, 0x73, 0x78, 0x80, 0x87, 0x8d, 0x91, 0x90, 0x8c, 0x86, 0x7b, 0x72, 0x6f, 0x6f, - 0x72, 0x76, 0x7c, 0x82, 0x86, 0x88, 0x88, 0x86, 0x84, 0x82, 0x80, 0x7c, 0x78, 0x76, 0x74, 0x75, - 0x79, 0x7d, 0x83, 0x87, 0x8b, 0x8b, 0x88, 0x84, 0x7d, 0x75, 0x70, 0x6f, 0x71, 0x78, 0x80, 0x88, - 0x8d, 0x8d, 0x8b, 0x86, 0x82, 0x7c, 0x7a, 0x7a, 0x79, 0x79, 0x7a, 0x7a, 0x7d, 0x84, 0x89, 0x8b, - 0x8c, 0x89, 0x84, 0x7d, 0x77, 0x73, 0x72, 0x74, 0x78, 0x7c, 0x82, 0x87, 0x8c, 0x90, 0x91, 0x8d, - 0x85, 0x79, 0x6f, 0x69, 0x69, 0x6d, 0x75, 0x80, 0x8a, 0x92, 0x97, 0x95, 0x8d, 0x82, 0x75, 0x6e, - 0x6c, 0x6e, 0x75, 0x7c, 0x84, 0x89, 0x8d, 0x8f, 0x8c, 0x85, 0x7c, 0x73, 0x6d, 0x6d, 0x72, 0x7b, - 0x86, 0x8f, 0x92, 0x91, 0x8c, 0x84, 0x79, 0x71, 0x6f, 0x70, 0x75, 0x7d, 0x86, 0x8b, 0x8c, 0x88, - 0x82, 0x7d, 0x7a, 0x78, 0x77, 0x76, 0x77, 0x7b, 0x80, 0x83, 0x83, 0x82, 0x81, 0x82, 0x83, 0x82, - 0x83, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7a, 0x7b, 0x7e, 0x82, 0x86, 0x89, 0x89, 0x85, 0x80, 0x78, - 0x74, 0x73, 0x75, 0x79, 0x7e, 0x84, 0x88, 0x8b, 0x8b, 0x89, 0x83, 0x7b, 0x76, 0x73, 0x73, 0x76, - 0x7b, 0x81, 0x84, 0x87, 0x88, 0x89, 0x87, 0x83, 0x7e, 0x7a, 0x77, 0x78, 0x7a, 0x7d, 0x80, 0x82, - 0x82, 0x82, 0x81, 0x7f, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, - 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x79, 0x7a, 0x7b, 0x7a, 0x79, 0x78, - 0x78, 0x79, 0x7a, 0x7a, 0x78, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7e, 0x7c, 0x7b, 0x7b, - 0x7d, 0x81, 0x83, 0x85, 0x85, 0x84, 0x83, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, - 0x84, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x87, 0x87, 0x85, 0x80, 0x75, 0x77, 0x80, 0x85, - 0x88, 0x87, 0x85, 0x82, 0x7e, 0x7e, 0x7e, 0x81, 0x84, 0x86, 0x84, 0x83, 0x85, 0x88, 0x89, 0x8a, - 0x8a, 0x87, 0x81, 0x7a, 0x78, 0x77, 0x77, 0x79, 0x79, 0x75, 0x70, 0x6d, 0x6b, 0x6f, 0x73, 0x77, - 0x79, 0x77, 0x75, 0x74, 0x71, 0x70, 0x71, 0x7a, 0x83, 0x7d, 0x76, 0x76, 0x7c, 0x7d, 0x7c, 0x7a, - 0x77, 0x75, 0x72, 0x77, 0x7a, 0x83, 0x8b, 0x8a, 0x8b, 0x87, 0x85, 0x87, 0x8c, 0x94, 0x9e, 0xa8, - 0xac, 0xa8, 0xa3, 0x9d, 0x98, 0x92, 0x89, 0x87, 0x86, 0x7e, 0x79, 0x7e, 0x81, 0x7d, 0x72, 0x6a, - 0x67, 0x61, 0x66, 0x6c, 0x70, 0x74, 0x71, 0x6a, 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x71, 0x70, 0x6b, - 0x68, 0x69, 0x6b, 0x6e, 0x6f, 0x6f, 0x6a, 0x64, 0x61, 0x5e, 0x6c, 0x7a, 0x82, 0x84, 0x86, 0x89, - 0x8a, 0x8e, 0x97, 0x9f, 0xa6, 0xa4, 0xa5, 0xa7, 0xa3, 0x9d, 0xa0, 0xa2, 0xa3, 0xb1, 0xb1, 0xab, - 0xa8, 0xa4, 0xa0, 0x9a, 0x93, 0x8a, 0x83, 0x7e, 0x76, 0x7b, 0x86, 0x8c, 0x8b, 0x83, 0x7d, 0x7d, - 0x7e, 0x82, 0x86, 0x89, 0x85, 0x7d, 0x7e, 0x7c, 0x79, 0x7c, 0x78, 0x71, 0x6f, 0x69, 0x68, 0x66, - 0x62, 0x63, 0x63, 0x5f, 0x5a, 0x4c, 0x49, 0x5e, 0x64, 0x6c, 0x74, 0x74, 0x6d, 0x6e, 0x76, 0x81, - 0x89, 0x8e, 0x90, 0x8e, 0x88, 0x87, 0x86, 0x86, 0x88, 0x86, 0x7b, 0x7e, 0x84, 0x8a, 0x92, 0x99, - 0xa2, 0xa5, 0x9c, 0x91, 0x88, 0x7c, 0x7e, 0x81, 0x73, 0x70, 0x69, 0x61, 0x5e, 0x5c, 0x58, 0x5e, - 0x5b, 0x5f, 0x67, 0x6a, 0x71, 0x76, 0x83, 0x8a, 0x8d, 0x8a, 0x81, 0x84, 0x89, 0x8c, 0x90, 0x8f, - 0x8d, 0x85, 0x79, 0x75, 0x70, 0x72, 0x7e, 0x70, 0x68, 0x6d, 0x6e, 0x72, 0x7c, 0x87, 0x8b, 0x8a, - 0x87, 0x7d, 0x72, 0x78, 0x82, 0x8a, 0x8d, 0x86, 0x77, 0x69, 0x67, 0x7a, 0x8c, 0x92, 0x98, 0xa3, - 0xa2, 0x97, 0x89, 0x80, 0x7b, 0x88, 0x95, 0x8e, 0x92, 0x96, 0x98, 0x9b, 0x9c, 0x9a, 0x9e, 0x9b, - 0x95, 0x93, 0x94, 0x94, 0x96, 0x93, 0x8c, 0x83, 0x78, 0x6d, 0x6f, 0x72, 0x6d, 0x68, 0x67, 0x66, - 0x63, 0x5f, 0x59, 0x5a, 0x63, 0x6b, 0x67, 0x68, 0x70, 0x7a, 0x7a, 0x7c, 0x7a, 0x79, 0x7b, 0x7a, - 0x76, 0x6c, 0x68, 0x70, 0x6a, 0x67, 0x6e, 0x74, 0x71, 0x78, 0x8e, 0x91, 0x87, 0x86, 0x8d, 0x8c, - 0x84, 0x7b, 0x7e, 0x80, 0x72, 0x5f, 0x63, 0x71, 0x7e, 0x85, 0x88, 0x83, 0x74, 0x72, 0x70, 0x74, - 0x82, 0x8d, 0x8f, 0x89, 0x82, 0x7b, 0x7a, 0x80, 0x88, 0x95, 0x96, 0x90, 0x90, 0x91, 0x8d, 0x8a, - 0x8c, 0x8b, 0x8f, 0x93, 0x90, 0x98, 0xa9, 0xa6, 0x9a, 0x8f, 0x89, 0x83, 0x74, 0x6a, 0x68, 0x6e, - 0x7a, 0x7a, 0x76, 0x6c, 0x67, 0x80, 0x88, 0x80, 0x83, 0x8d, 0x91, 0x91, 0x8d, 0x8b, 0x89, 0x8b, - 0x8b, 0x83, 0x7a, 0x72, 0x6c, 0x76, 0x7c, 0x7b, 0x81, 0x87, 0x86, 0x89, 0x8e, 0x94, 0xa2, 0xb7, - 0xb1, 0x97, 0x86, 0x81, 0x8a, 0x82, 0x7a, 0x80, 0x7d, 0x77, 0x78, 0x6d, 0x66, 0x6e, 0x75, 0x7b, - 0x6a, 0x5c, 0x5d, 0x69, 0x79, 0x80, 0x7b, 0x77, 0x77, 0x76, 0x73, 0x74, 0x72, 0x77, 0x7a, 0x72, - 0x63, 0x60, 0x62, 0x64, 0x6b, 0x6d, 0x69, 0x68, 0x6d, 0x82, 0x80, 0x75, 0x6e, 0x74, 0x7a, 0x67, - 0x66, 0x6d, 0x67, 0x74, 0x8d, 0x8f, 0x8d, 0x8e, 0x89, 0x84, 0x78, 0x73, 0x78, 0x87, 0x85, 0x77, - 0x74, 0x76, 0x76, 0x7c, 0x83, 0x7a, 0x71, 0x70, 0x72, 0x73, 0x78, 0x83, 0x9d, 0xa6, 0x91, 0x86, - 0x86, 0x87, 0x9e, 0xad, 0xa6, 0xa2, 0xa2, 0xa0, 0x95, 0x90, 0x8d, 0x81, 0x7d, 0x94, 0x90, 0x83, - 0x8a, 0x94, 0x9f, 0x9c, 0x88, 0x7d, 0x8c, 0x8f, 0x83, 0x89, 0x93, 0x8a, 0x7d, 0x73, 0x72, 0x78, - 0x70, 0x6b, 0x75, 0x72, 0x6f, 0x71, 0x79, 0x83, 0x8a, 0x82, 0x91, 0x9a, 0x82, 0x6d, 0x63, 0x70, - 0x77, 0x6a, 0x6b, 0x6a, 0x69, 0x71, 0x72, 0x6c, 0x78, 0x89, 0x88, 0x7b, 0x74, 0x6e, 0x6a, 0x6a, - 0x80, 0x95, 0x8a, 0x7a, 0x6e, 0x5f, 0x5b, 0x64, 0x65, 0x65, 0x69, 0x6b, 0x67, 0x68, 0x6f, 0x78, - 0x82, 0x86, 0x7d, 0x85, 0x89, 0x79, 0x76, 0x82, 0x79, 0x70, 0x64, 0x5e, 0x61, 0x6b, 0x73, 0x65, - 0x6e, 0x85, 0x87, 0x87, 0x88, 0x8a, 0x8b, 0x8d, 0x99, 0xac, 0xbc, 0xba, 0xaf, 0xa4, 0x9d, 0xa0, - 0x9a, 0x7e, 0x75, 0x7c, 0x77, 0x81, 0x9b, 0x9d, 0x95, 0x8b, 0x89, 0x85, 0x8f, 0x96, 0x86, 0x80, - 0x7e, 0x77, 0x6b, 0x68, 0x6b, 0x65, 0x61, 0x70, 0x7b, 0x83, 0x8e, 0x90, 0x91, 0x8e, 0x85, 0x7d, - 0x7a, 0x7c, 0x82, 0x8e, 0xa8, 0x9c, 0x91, 0x9b, 0x93, 0x88, 0x7b, 0x78, 0x74, 0x68, 0x74, 0x74, - 0x63, 0x5d, 0x68, 0x69, 0x6a, 0x82, 0x86, 0x78, 0x77, 0x77, 0x77, 0x73, 0x70, 0x7b, 0x85, 0x83, - 0x81, 0x87, 0x98, 0xac, 0xab, 0xad, 0xa0, 0x98, 0x99, 0x96, 0x97, 0x87, 0x71, 0x77, 0x6f, 0x6c, - 0x75, 0x7c, 0x79, 0x71, 0x7e, 0x84, 0x83, 0x82, 0x81, 0x7e, 0x7a, 0x6f, 0x5e, 0x61, 0x68, 0x5f, - 0x5f, 0x73, 0x76, 0x5f, 0x48, 0x4a, 0x53, 0x53, 0x55, 0x56, 0x48, 0x48, 0x62, 0x67, 0x62, 0x61, - 0x64, 0x68, 0x7d, 0x91, 0x87, 0x81, 0x95, 0xa3, 0x9d, 0x83, 0x6d, 0x64, 0x62, 0x65, 0x6e, 0x71, - 0x6e, 0x86, 0x8c, 0x8f, 0x8f, 0x89, 0x91, 0x9a, 0x92, 0x80, 0x73, 0x79, 0x78, 0x73, 0x82, 0x99, - 0xa7, 0xab, 0xa3, 0x95, 0xa6, 0xbc, 0xbe, 0xb9, 0xb3, 0xae, 0xab, 0xa4, 0xa6, 0xa7, 0xae, 0xb4, - 0xc5, 0xc8, 0xb6, 0xb3, 0xb6, 0xb1, 0xae, 0x9b, 0x7a, 0x73, 0x79, 0x83, 0x86, 0x82, 0x78, 0x81, - 0x86, 0x7d, 0x84, 0x8c, 0x88, 0x77, 0x6f, 0x65, 0x59, 0x57, 0x5a, 0x5c, 0x68, 0x83, 0x8a, 0x7a, - 0x68, 0x5f, 0x59, 0x57, 0x60, 0x6b, 0x6c, 0x5c, 0x4c, 0x54, 0x4d, 0x41, 0x3f, 0x40, 0x55, 0x6d, - 0x68, 0x6f, 0x76, 0x78, 0x79, 0x73, 0x6a, 0x74, 0x80, 0x7e, 0x7e, 0x84, 0x85, 0x84, 0x78, 0x78, - 0x81, 0x84, 0x83, 0x7e, 0x71, 0x62, 0x5c, 0x64, 0x6c, 0x7b, 0x8b, 0x90, 0x94, 0xa3, 0x9e, 0x98, - 0x99, 0x93, 0x95, 0x99, 0x93, 0x89, 0x92, 0x99, 0x9b, 0x90, 0x8f, 0xa1, 0xa0, 0xa3, 0xa1, 0xa2, - 0xaf, 0xb5, 0xa8, 0x99, 0x97, 0x8a, 0x7a, 0x73, 0x7a, 0x83, 0x83, 0x88, 0x88, 0x79, 0x70, 0x83, - 0x9e, 0x9a, 0x8a, 0x7d, 0x79, 0x6b, 0x65, 0x78, 0x78, 0x79, 0x73, 0x62, 0x5b, 0x5d, 0x5f, 0x6b, - 0x6e, 0x6b, 0x68, 0x67, 0x64, 0x64, 0x64, 0x66, 0x62, 0x77, 0x94, 0x8b, 0x84, 0x83, 0x87, 0x84, - 0x72, 0x66, 0x73, 0x7e, 0x81, 0x8b, 0x7c, 0x68, 0x70, 0x88, 0x92, 0x8d, 0x8c, 0x8a, 0x8a, 0x80, - 0x73, 0x72, 0x6c, 0x5a, 0x4d, 0x4f, 0x66, 0x6f, 0x72, 0x80, 0x8c, 0x8e, 0x86, 0x86, 0x92, 0x91, - 0x8c, 0x93, 0x98, 0x94, 0x91, 0x88, 0x85, 0x87, 0x6c, 0x5a, 0x69, 0x74, 0x79, 0x7c, 0x6e, 0x67, - 0x61, 0x64, 0x6d, 0x7b, 0x8b, 0x8e, 0x88, 0x9b, 0xa4, 0xa3, 0xa4, 0xac, 0xad, 0xa0, 0x94, 0x9f, - 0xa1, 0x99, 0x9f, 0x9d, 0xa3, 0xad, 0xa5, 0x90, 0x9c, 0xae, 0xb3, 0xb5, 0x9d, 0x97, 0x94, 0x84, - 0x6d, 0x5a, 0x67, 0x79, 0x83, 0x90, 0x9a, 0x91, 0x7b, 0x6c, 0x83, 0x97, 0x93, 0xa0, 0xaf, 0xa6, - 0xa1, 0x9a, 0x90, 0x8d, 0x86, 0x87, 0x6e, 0x5a, 0x60, 0x61, 0x58, 0x59, 0x6b, 0x6a, 0x57, 0x46, - 0x49, 0x56, 0x62, 0x7a, 0x86, 0x79, 0x71, 0x66, 0x5d, 0x54, 0x43, 0x3e, 0x46, 0x46, 0x4b, 0x43, - 0x39, 0x3d, 0x46, 0x62, 0x68, 0x5d, 0x5b, 0x6f, 0x67, 0x4f, 0x48, 0x57, 0x68, 0x6b, 0x72, 0x82, - 0x7a, 0x6d, 0x68, 0x80, 0x97, 0x94, 0x88, 0x81, 0x89, 0x86, 0x89, 0x9a, 0xb7, 0xbb, 0xae, 0xa5, - 0x91, 0x8b, 0x84, 0x78, 0x86, 0x8f, 0x90, 0x89, 0x72, 0x68, 0x65, 0x60, 0x68, 0x7b, 0x90, 0x9c, - 0xa1, 0x9c, 0x92, 0x8d, 0x92, 0x9d, 0x9e, 0x94, 0x8d, 0x81, 0x78, 0x92, 0xaf, 0xc4, 0xc1, 0xaa, - 0x98, 0x9b, 0xa3, 0xa5, 0x99, 0xa7, 0xa2, 0x91, 0x8b, 0x84, 0x7d, 0x70, 0x6b, 0x6d, 0x72, 0x70, - 0x7b, 0x85, 0x7b, 0x6e, 0x64, 0x69, 0x6d, 0x75, 0x77, 0x78, 0x73, 0x74, 0x94, 0xa5, 0xa2, 0x94, - 0x81, 0x76, 0x67, 0x55, 0x5c, 0x70, 0x7a, 0x7a, 0x8a, 0x9d, 0xa2, 0xa2, 0x98, 0x9b, 0x9c, 0x9a, - 0x99, 0x90, 0x8c, 0x83, 0x6e, 0x6a, 0x75, 0x79, 0x75, 0x6a, 0x6d, 0x71, 0x68, 0x55, 0x5c, 0x80, - 0x8d, 0x84, 0x78, 0x64, 0x66, 0x74, 0x81, 0x8d, 0x9a, 0xa3, 0xa8, 0xa1, 0x9f, 0x8c, 0x81, 0x89, - 0x91, 0x99, 0x99, 0x8a, 0x8e, 0x9c, 0xb4, 0xb4, 0xb1, 0xb4, 0x9b, 0x77, 0x5e, 0x5c, 0x60, 0x5b, - 0x53, 0x4c, 0x42, 0x3b, 0x37, 0x33, 0x2f, 0x41, 0x61, 0x78, 0x83, 0x76, 0x6c, 0x75, 0x89, 0x96, - 0x95, 0x88, 0x84, 0x84, 0x85, 0x7e, 0x77, 0x8f, 0xad, 0xb4, 0xab, 0x91, 0x7e, 0x79, 0x84, 0x89, - 0x70, 0x5c, 0x68, 0x6b, 0x6e, 0x6f, 0x6b, 0x66, 0x64, 0x6b, 0x6f, 0x74, 0x76, 0x6f, 0x6b, 0x69, - 0x74, 0x89, 0x9d, 0x97, 0x7e, 0x76, 0x77, 0x80, 0x87, 0x83, 0x76, 0x6f, 0x6f, 0x68, 0x56, 0x4c, - 0x50, 0x67, 0x75, 0x7b, 0x80, 0x8b, 0x97, 0xb7, 0xc5, 0x9b, 0x77, 0x6f, 0x74, 0x6c, 0x4d, 0x37, - 0x3f, 0x5f, 0x6d, 0x78, 0x79, 0x65, 0x50, 0x3b, 0x39, 0x5c, 0x81, 0x84, 0x75, 0x71, 0x6e, 0x6a, - 0x73, 0x79, 0x8e, 0x90, 0x90, 0xa0, 0xa6, 0x9b, 0x8a, 0x80, 0x98, 0xb4, 0xb5, 0xa8, 0xa7, 0xc4, - 0xda, 0xd4, 0xc6, 0xb8, 0xa9, 0xa9, 0x8b, 0x6e, 0x6c, 0x6e, 0x76, 0x78, 0x7e, 0x84, 0x80, 0x79, - 0x7b, 0x8c, 0x9f, 0xa3, 0xa8, 0xa9, 0x99, 0x8f, 0x96, 0xa5, 0xab, 0xad, 0xa2, 0x9f, 0xa4, 0x93, - 0x8a, 0x8c, 0x90, 0x93, 0x91, 0x88, 0x7b, 0x77, 0x86, 0x96, 0x83, 0x6e, 0x65, 0x64, 0x6d, 0x74, - 0x74, 0x70, 0x81, 0x97, 0x90, 0x84, 0x79, 0x78, 0x6e, 0x57, 0x4a, 0x5a, 0x81, 0x92, 0x8d, 0x8a, - 0x83, 0x7b, 0x79, 0x77, 0x71, 0x74, 0x7a, 0x72, 0x5b, 0x59, 0x66, 0x66, 0x67, 0x76, 0x8a, 0x86, - 0x85, 0xa1, 0xbb, 0xa4, 0x7d, 0x68, 0x5d, 0x53, 0x50, 0x4d, 0x5b, 0x75, 0x80, 0x87, 0x8f, 0x93, - 0x94, 0x79, 0x4d, 0x3c, 0x4c, 0x5f, 0x64, 0x59, 0x62, 0x62, 0x5b, 0x67, 0x83, 0x95, 0x80, 0x6a, - 0x6d, 0x77, 0x6d, 0x69, 0x7b, 0x7d, 0x7c, 0x8a, 0x8e, 0xad, 0xd1, 0xcd, 0xaf, 0x9b, 0x86, 0x70, - 0x4f, 0x3b, 0x38, 0x2e, 0x21, 0x16, 0x2a, 0x49, 0x56, 0x57, 0x59, 0x64, 0x63, 0x71, 0x9f, 0xab, - 0xac, 0xa0, 0x95, 0x99, 0x9b, 0xa0, 0xa4, 0xa9, 0xb4, 0xb8, 0xc1, 0xc6, 0xbc, 0xb1, 0xa3, 0x8b, - 0x86, 0x96, 0xb1, 0xc2, 0xb3, 0xa8, 0x9e, 0x94, 0x86, 0x7c, 0x8f, 0x8b, 0x87, 0x89, 0x8d, 0x96, - 0x9b, 0x93, 0x75, 0x5a, 0x4d, 0x5e, 0x82, 0xa0, 0xae, 0xb2, 0xa1, 0x91, 0x95, 0x86, 0x6a, 0x5f, - 0x5a, 0x5e, 0x56, 0x53, 0x6e, 0x80, 0x8d, 0x95, 0x9d, 0x9f, 0x9e, 0xb8, 0xbc, 0xaf, 0xb0, 0xa7, - 0x9b, 0x84, 0x6f, 0x67, 0x6a, 0x68, 0x64, 0x64, 0x67, 0x75, 0x78, 0x63, 0x43, 0x2b, 0x27, 0x27, - 0x37, 0x3b, 0x40, 0x54, 0x5a, 0x5b, 0x5e, 0x65, 0x5c, 0x60, 0x6f, 0x6c, 0x70, 0x75, 0x77, 0x75, - 0x73, 0x6d, 0x71, 0x8a, 0xac, 0xaf, 0xa6, 0xa2, 0x93, 0x83, 0x6b, 0x4f, 0x46, 0x4f, 0x57, 0x5b, - 0x68, 0x86, 0xa3, 0xac, 0xad, 0xa6, 0x9c, 0x99, 0xa3, 0xac, 0xb9, 0xb6, 0xa8, 0x95, 0x82, 0x7c, - 0x77, 0x84, 0x91, 0x91, 0x8e, 0x91, 0x9e, 0xaf, 0xa8, 0x90, 0x79, 0x75, 0x85, 0x96, 0x7e, 0x7c, - 0x88, 0x89, 0x84, 0x82, 0x92, 0x88, 0x7b, 0x74, 0x6a, 0x6a, 0x68, 0x73, 0x74, 0x69, 0x62, 0x65, - 0x6f, 0x6e, 0x71, 0x7b, 0x81, 0x7a, 0x74, 0x6e, 0x59, 0x3e, 0x39, 0x37, 0x2c, 0x2e, 0x4c, 0x68, - 0x83, 0x93, 0x9c, 0x94, 0x98, 0xb7, 0xac, 0x9f, 0x9d, 0x97, 0x91, 0x77, 0x6d, 0x7d, 0x8c, 0x91, - 0x95, 0x9b, 0xa8, 0xb4, 0xb7, 0xa0, 0x81, 0x5e, 0x4c, 0x5a, 0x72, 0x74, 0x84, 0x8f, 0x91, 0x92, - 0x85, 0x82, 0x6f, 0x6d, 0x7d, 0x84, 0x93, 0x9f, 0xa5, 0xa2, 0xa4, 0xa5, 0xac, 0xbd, 0xc7, 0xc4, - 0xbe, 0xb7, 0xc2, 0xb4, 0x88, 0x65, 0x55, 0x4f, 0x3e, 0x34, 0x2a, 0x34, 0x4d, 0x57, 0x5c, 0x6e, - 0x71, 0x6e, 0x89, 0x92, 0x97, 0xa2, 0x9a, 0x96, 0xa4, 0xa3, 0x98, 0xa1, 0xa0, 0x96, 0x91, 0x9b, - 0xae, 0xb0, 0xa2, 0x97, 0x81, 0x7a, 0x8e, 0x8b, 0x79, 0x79, 0x90, 0xa5, 0xa0, 0xa9, 0xb9, 0xb5, - 0xae, 0xa6, 0x8e, 0x7e, 0x84, 0x83, 0x70, 0x60, 0x5c, 0x67, 0x80, 0x80, 0x7a, 0x80, 0x88, 0x8b, - 0x71, 0x54, 0x3c, 0x1b, 0x1b, 0x2e, 0x42, 0x53, 0x57, 0x60, 0x5f, 0x57, 0x56, 0x55, 0x53, 0x65, - 0x62, 0x4c, 0x53, 0x5f, 0x53, 0x3b, 0x36, 0x42, 0x54, 0x4c, 0x3a, 0x36, 0x45, 0x6a, 0x7b, 0x6d, - 0x59, 0x3c, 0x37, 0x4e, 0x51, 0x52, 0x5c, 0x66, 0x72, 0x80, 0x97, 0x95, 0x82, 0x7c, 0x82, 0x82, - 0x82, 0x8c, 0x95, 0x96, 0x98, 0xa7, 0xbb, 0xd5, 0xce, 0xb1, 0x9a, 0x9c, 0xbc, 0xc3, 0xb6, 0xac, - 0x97, 0x90, 0x89, 0x80, 0x7c, 0x7a, 0x87, 0x99, 0xa4, 0x9f, 0x9b, 0xaf, 0xb1, 0xa9, 0xa4, 0xad, - 0xb2, 0x9c, 0x84, 0x81, 0x7c, 0x7d, 0x84, 0x8d, 0x9f, 0xab, 0xbd, 0xcd, 0xbd, 0x9f, 0x86, 0x7a, - 0x8a, 0x87, 0x7e, 0x80, 0x81, 0x8c, 0x94, 0x98, 0x95, 0x8b, 0x88, 0x8a, 0x8e, 0x8e, 0x99, 0x9a, - 0x91, 0x8e, 0x86, 0x85, 0x92, 0x89, 0x7c, 0x79, 0x89, 0xa3, 0x9f, 0x7e, 0x64, 0x4b, 0x3a, 0x35, - 0x34, 0x3e, 0x47, 0x55, 0x69, 0x83, 0x97, 0xa1, 0xab, 0xac, 0x90, 0x75, 0x70, 0x78, 0x7e, 0x7e, - 0x80, 0x86, 0x8e, 0x82, 0x67, 0x53, 0x47, 0x44, 0x57, 0x6b, 0x6f, 0x63, 0x4f, 0x52, 0x59, 0x55, - 0x52, 0x57, 0x59, 0x68, 0x73, 0x7e, 0x84, 0x80, 0x82, 0x77, 0x74, 0x89, 0x95, 0x8f, 0x93, 0x97, - 0xa1, 0xbc, 0xbd, 0xa8, 0x9d, 0x99, 0x9b, 0xab, 0xac, 0xa0, 0x86, 0x75, 0x7a, 0x76, 0x5e, 0x5e, - 0x6a, 0x5f, 0x61, 0x6a, 0x61, 0x55, 0x5d, 0x66, 0x66, 0x69, 0x72, 0x7e, 0x80, 0x76, 0x76, 0x7d, - 0x82, 0x8c, 0x8a, 0x9b, 0xa4, 0xa8, 0xb2, 0xa8, 0x9c, 0x98, 0x9e, 0x93, 0x83, 0x78, 0x7c, 0x76, - 0x80, 0xa2, 0xaa, 0xa0, 0x95, 0x91, 0x7d, 0x6e, 0x73, 0x7e, 0x83, 0x80, 0x78, 0x80, 0x88, 0x7d, - 0x6a, 0x5e, 0x50, 0x4c, 0x62, 0x71, 0x6c, 0x5e, 0x47, 0x42, 0x45, 0x45, 0x45, 0x4e, 0x56, 0x67, - 0x83, 0x98, 0x9c, 0x90, 0x7a, 0x6f, 0x73, 0x7a, 0x74, 0x74, 0x8a, 0x95, 0x92, 0x87, 0x87, 0x79, - 0x71, 0x75, 0x77, 0x78, 0x72, 0x62, 0x54, 0x57, 0x5e, 0x60, 0x5f, 0x66, 0x69, 0x6c, 0x66, 0x68, - 0x69, 0x64, 0x6e, 0x7b, 0x87, 0x8d, 0x99, 0xa8, 0xa9, 0xab, 0xaf, 0xc0, 0xc2, 0xb5, 0xb7, 0xbf, - 0xb3, 0xa8, 0xac, 0xb8, 0xb2, 0x99, 0x83, 0x86, 0x8e, 0x99, 0xa6, 0xaa, 0xae, 0xb4, 0xb7, 0xb5, - 0xb4, 0xaa, 0x9b, 0x94, 0x8f, 0x90, 0x94, 0x91, 0x88, 0x8d, 0x8f, 0x80, 0x6c, 0x68, 0x65, 0x6a, - 0x7c, 0x81, 0x7d, 0x75, 0x76, 0x6f, 0x62, 0x5b, 0x5b, 0x63, 0x6b, 0x7c, 0x9c, 0x99, 0x76, 0x5b, - 0x49, 0x53, 0x6d, 0x71, 0x72, 0x78, 0x7a, 0x84, 0x90, 0x8b, 0x89, 0x84, 0x78, 0x67, 0x61, 0x63, - 0x5a, 0x48, 0x46, 0x47, 0x40, 0x41, 0x48, 0x56, 0x5b, 0x56, 0x55, 0x62, 0x6d, 0x77, 0x74, 0x6d, - 0x75, 0x88, 0x90, 0x8e, 0x8d, 0x90, 0x8c, 0x7d, 0x75, 0x81, 0x8f, 0x8e, 0x86, 0x80, 0x74, 0x7a, - 0x82, 0x82, 0x72, 0x72, 0x77, 0x71, 0x6a, 0x66, 0x73, 0x73, 0x6f, 0x7b, 0x87, 0x85, 0x7e, 0x85, - 0x98, 0xa0, 0xa8, 0xb1, 0xc0, 0xce, 0xc6, 0xab, 0x92, 0x91, 0x97, 0x9b, 0x9d, 0x9a, 0x9b, 0x99, - 0x86, 0x6c, 0x6a, 0x65, 0x6c, 0x7d, 0x8b, 0x9d, 0x8c, 0x73, 0x6c, 0x6b, 0x6a, 0x71, 0x78, 0x74, - 0x77, 0x8a, 0x9a, 0xaa, 0xbf, 0xbc, 0xa5, 0x9f, 0xa3, 0xa3, 0x9e, 0x9f, 0xa0, 0xa5, 0xb3, 0xa9, - 0x9b, 0x97, 0x91, 0x96, 0x93, 0x8e, 0x84, 0x83, 0x88, 0x84, 0x7c, 0x7a, 0x7e, 0x8c, 0x8a, 0x87, - 0x77, 0x6b, 0x73, 0x78, 0x84, 0x90, 0x83, 0x5f, 0x45, 0x40, 0x44, 0x3d, 0x3d, 0x4b, 0x44, 0x39, - 0x3b, 0x4a, 0x5d, 0x60, 0x64, 0x6b, 0x71, 0x81, 0x7e, 0x70, 0x61, 0x68, 0x73, 0x6e, 0x74, 0x78, - 0x7e, 0x7e, 0x6f, 0x5e, 0x53, 0x56, 0x65, 0x6c, 0x71, 0x69, 0x63, 0x6e, 0x6b, 0x64, 0x5c, 0x58, - 0x5c, 0x5f, 0x77, 0x91, 0x77, 0x5e, 0x73, 0x7d, 0x74, 0x6b, 0x80, 0x93, 0x95, 0x9c, 0xa8, 0xc0, - 0xc8, 0xb1, 0xa6, 0xaa, 0xb8, 0xb7, 0xad, 0x9d, 0x8b, 0x9e, 0xa5, 0x93, 0x79, 0x66, 0x65, 0x71, - 0x82, 0x8c, 0x7e, 0x6a, 0x75, 0x83, 0x89, 0x86, 0x84, 0x77, 0x5a, 0x5a, 0x75, 0x8d, 0x99, 0xa4, - 0xac, 0xa0, 0x8c, 0x88, 0x87, 0x84, 0x79, 0x6a, 0x81, 0x96, 0x8d, 0x76, 0x73, 0x8a, 0x8c, 0x89, - 0x95, 0x8c, 0x82, 0x8b, 0x88, 0x75, 0x6e, 0x80, 0x93, 0x91, 0x91, 0x8e, 0x8b, 0x89, 0x83, 0x76, - 0x62, 0x53, 0x47, 0x3e, 0x3c, 0x48, 0x53, 0x4c, 0x52, 0x55, 0x44, 0x50, 0x67, 0x7d, 0x90, 0x8e, - 0x78, 0x7e, 0xa0, 0xa4, 0x8f, 0x76, 0x7d, 0x82, 0x80, 0x8f, 0x9c, 0xad, 0xa9, 0x98, 0x8d, 0x87, - 0x8c, 0x91, 0x8c, 0x77, 0x79, 0x8f, 0x9d, 0x9e, 0x8d, 0x7c, 0x7c, 0x77, 0x81, 0x89, 0x84, 0x74, - 0x6f, 0x8e, 0xa3, 0x9f, 0x9b, 0x93, 0x92, 0x9d, 0xaf, 0xc5, 0xd9, 0xe3, 0xd1, 0xb2, 0x9d, 0x9b, - 0x98, 0x82, 0x6b, 0x62, 0x77, 0x93, 0x93, 0x74, 0x6a, 0x6f, 0x6c, 0x75, 0x77, 0x68, 0x63, 0x6b, - 0x71, 0x6d, 0x72, 0x73, 0x69, 0x5f, 0x60, 0x6b, 0x7c, 0x85, 0x8c, 0x8b, 0x7e, 0x77, 0x7b, 0x87, - 0x7e, 0x7d, 0x80, 0x87, 0x92, 0x82, 0x78, 0x7b, 0x7b, 0x7e, 0x6d, 0x54, 0x45, 0x4d, 0x6d, 0x77, - 0x5e, 0x53, 0x58, 0x65, 0x6f, 0x70, 0x78, 0x8f, 0x8f, 0x81, 0x78, 0x70, 0x62, 0x4f, 0x37, 0x2e, - 0x42, 0x4f, 0x51, 0x54, 0x4a, 0x43, 0x3e, 0x49, 0x61, 0x62, 0x53, 0x54, 0x74, 0x97, 0x96, 0x96, - 0x95, 0x91, 0x88, 0x82, 0x8a, 0x92, 0xa3, 0xae, 0xa4, 0x96, 0x93, 0x94, 0x92, 0x87, 0x74, 0x75, - 0x84, 0x94, 0x86, 0x79, 0x7b, 0x78, 0x74, 0x6e, 0x71, 0x7a, 0x82, 0x86, 0x99, 0xa4, 0xa9, 0xa9, - 0xa8, 0xaa, 0xb2, 0xb1, 0xb3, 0xc4, 0xc3, 0xac, 0x96, 0x93, 0x9b, 0x89, 0x6d, 0x6a, 0x6d, 0x7b, - 0x92, 0x92, 0x94, 0x96, 0x92, 0x8e, 0x87, 0x7b, 0x79, 0x84, 0x95, 0x95, 0x82, 0x6c, 0x62, 0x5c, - 0x5a, 0x64, 0x74, 0x8f, 0x88, 0x82, 0x8f, 0x88, 0x7d, 0x77, 0x79, 0x85, 0x95, 0x93, 0x90, 0x8a, - 0x77, 0x6f, 0x6a, 0x6c, 0x67, 0x56, 0x45, 0x50, 0x7b, 0x9c, 0xa2, 0x95, 0x8f, 0x8d, 0x86, 0x92, - 0xa0, 0xa7, 0xb3, 0xb1, 0xa5, 0x98, 0x89, 0x7e, 0x6a, 0x54, 0x4b, 0x51, 0x52, 0x4b, 0x4d, 0x5f, - 0x68, 0x63, 0x62, 0x6c, 0x72, 0x75, 0x7d, 0x8f, 0x9a, 0x9e, 0x9d, 0x9a, 0x8b, 0x7a, 0x76, 0x71, - 0x73, 0x7d, 0x8c, 0x95, 0x7e, 0x73, 0x7e, 0x7a, 0x79, 0x7c, 0x7d, 0x76, 0x78, 0x82, 0x89, 0x90, - 0x92, 0x7b, 0x61, 0x5d, 0x6c, 0x80, 0x7b, 0x7c, 0x84, 0x81, 0x74, 0x70, 0x80, 0x91, 0x9f, 0xa4, - 0xa6, 0xa8, 0xa3, 0x9b, 0x9b, 0x99, 0x93, 0x92, 0x8f, 0x82, 0x73, 0x75, 0x82, 0x7a, 0x75, 0x6c, - 0x63, 0x6b, 0x6b, 0x70, 0x77, 0x73, 0x6c, 0x5f, 0x57, 0x57, 0x4e, 0x5c, 0x76, 0x98, 0xac, 0x9b, - 0x91, 0x94, 0x94, 0x93, 0x8f, 0x8f, 0x8e, 0x89, 0x75, 0x6f, 0x7d, 0x90, 0x9a, 0x97, 0x85, 0x6d, - 0x69, 0x73, 0x7e, 0x8f, 0xae, 0xc6, 0xb8, 0xac, 0x9e, 0x8e, 0x8d, 0x89, 0x8b, 0x79, 0x76, 0x7a, - 0x69, 0x58, 0x4c, 0x37, 0x2f, 0x37, 0x3f, 0x3d, 0x2c, 0x3b, 0x57, 0x64, 0x68, 0x59, 0x53, 0x60, - 0x6e, 0x85, 0x95, 0x99, 0x95, 0x91, 0x8e, 0x8a, 0x8c, 0x88, 0x8f, 0x93, 0x8c, 0x9d, 0xa6, 0x98, - 0x95, 0x91, 0x93, 0xa5, 0xa5, 0x92, 0x75, 0x62, 0x64, 0x66, 0x67, 0x5d, 0x48, 0x4d, 0x5d, 0x6c, - 0x7c, 0x78, 0x7d, 0x81, 0x83, 0x87, 0x86, 0x94, 0x9e, 0xb6, 0xc3, 0xb6, 0xa3, 0x94, 0x94, 0x9d, - 0x95, 0x86, 0x7a, 0x6f, 0x5f, 0x64, 0x80, 0x99, 0x92, 0x86, 0x7d, 0x6e, 0x82, 0x96, 0x9f, 0xa5, - 0xad, 0xb4, 0xa8, 0x9f, 0x86, 0x5f, 0x49, 0x56, 0x78, 0x72, 0x61, 0x62, 0x55, 0x49, 0x49, 0x4e, - 0x5a, 0x5a, 0x5a, 0x62, 0x69, 0x76, 0x83, 0x86, 0x8f, 0x88, 0x6b, 0x67, 0x76, 0x8d, 0xa3, 0xbb, - 0xbd, 0xa5, 0x98, 0x90, 0x92, 0x9b, 0xae, 0xb4, 0x9d, 0x8a, 0x8a, 0x91, 0x8b, 0x74, 0x61, 0x61, - 0x61, 0x5c, 0x4c, 0x34, 0x36, 0x3e, 0x44, 0x50, 0x5e, 0x65, 0x5e, 0x66, 0x84, 0x94, 0x9c, 0x8f, - 0x8c, 0x98, 0x91, 0x7b, 0x73, 0x8b, 0x9a, 0x9b, 0x9f, 0xa2, 0x9b, 0x94, 0x91, 0x96, 0xa2, 0x9b, - 0x82, 0x6f, 0x72, 0x7e, 0x82, 0x7d, 0x73, 0x5e, 0x63, 0x83, 0xa1, 0xa5, 0x97, 0xa0, 0x9b, 0x9a, - 0x97, 0x8c, 0x82, 0x92, 0xb4, 0xbc, 0xc0, 0xb3, 0x99, 0x8a, 0x8e, 0x90, 0x87, 0x75, 0x6d, 0x7a, - 0x8b, 0x9d, 0xa3, 0x9c, 0xa4, 0x9f, 0x90, 0x92, 0x9d, 0xa0, 0x91, 0x83, 0x7e, 0x78, 0x72, 0x63, - 0x55, 0x55, 0x78, 0x85, 0x7a, 0x6a, 0x75, 0x89, 0x87, 0x84, 0x85, 0x87, 0x7b, 0x74, 0x74, 0x72, - 0x67, 0x60, 0x6a, 0x78, 0x7d, 0x69, 0x4e, 0x53, 0x6b, 0x7a, 0x90, 0x8a, 0x82, 0x8a, 0x88, 0x77, - 0x82, 0x96, 0x93, 0x7b, 0x61, 0x5c, 0x5e, 0x51, 0x3b, 0x24, 0x29, 0x34, 0x33, 0x31, 0x38, 0x46, - 0x4b, 0x45, 0x4a, 0x54, 0x5e, 0x68, 0x81, 0x94, 0x9e, 0x9a, 0x93, 0x99, 0x9a, 0x8a, 0x6b, 0x6e, - 0x8a, 0x94, 0xa2, 0xa8, 0x92, 0x76, 0x75, 0x7a, 0x7a, 0x78, 0x72, 0x6a, 0x5a, 0x57, 0x5c, 0x64, - 0x6c, 0x60, 0x50, 0x5c, 0x77, 0x8a, 0x85, 0x77, 0x77, 0x82, 0x84, 0x87, 0x91, 0x98, 0xa6, 0xa0, - 0xa1, 0xad, 0xa3, 0x9a, 0x9b, 0x9e, 0x8f, 0x89, 0x89, 0x87, 0x8a, 0x8d, 0x9a, 0x95, 0x8a, 0x92, - 0xa2, 0x9f, 0x96, 0x91, 0x95, 0x92, 0x94, 0x93, 0x9c, 0xa0, 0x93, 0x7e, 0x8b, 0xa1, 0x9e, 0x8c, - 0x79, 0x76, 0x77, 0x75, 0x6d, 0x6b, 0x72, 0x76, 0x74, 0x79, 0x89, 0x8e, 0x84, 0x80, 0x8d, 0x8a, - 0x7e, 0x81, 0x93, 0xa1, 0xa2, 0xa2, 0x98, 0x8c, 0x84, 0x86, 0x8a, 0x9d, 0xa2, 0x99, 0x99, 0x8e, - 0x76, 0x66, 0x67, 0x60, 0x60, 0x63, 0x64, 0x61, 0x54, 0x59, 0x69, 0x6e, 0x77, 0x81, 0x82, 0x88, - 0x92, 0x9a, 0x9f, 0x9d, 0x8d, 0x8d, 0x91, 0x95, 0x93, 0x8a, 0x8c, 0x8a, 0x8c, 0x95, 0x9a, 0x90, - 0x89, 0x7e, 0x78, 0x79, 0x76, 0x74, 0x69, 0x69, 0x75, 0x75, 0x71, 0x7a, 0x7e, 0x6d, 0x62, 0x61, - 0x6a, 0x73, 0x75, 0x75, 0x87, 0x8a, 0x85, 0x87, 0x99, 0xa5, 0xa2, 0xa2, 0xa2, 0x92, 0x88, 0x86, - 0x7c, 0x73, 0x66, 0x65, 0x6b, 0x6c, 0x84, 0x9f, 0x93, 0x86, 0x90, 0x96, 0x90, 0xa2, 0xab, 0x95, - 0x80, 0x6c, 0x64, 0x62, 0x59, 0x4d, 0x4c, 0x5c, 0x5f, 0x5f, 0x64, 0x5c, 0x4a, 0x44, 0x4d, 0x56, - 0x63, 0x68, 0x6c, 0x6c, 0x72, 0x84, 0x82, 0x82, 0x8d, 0x89, 0x72, 0x60, 0x6f, 0x74, 0x72, 0x76, - 0x79, 0x7a, 0x76, 0x7a, 0x87, 0x9b, 0xa9, 0x9f, 0x99, 0x96, 0x90, 0x94, 0x8e, 0x76, 0x62, 0x5a, - 0x59, 0x56, 0x51, 0x54, 0x52, 0x48, 0x4e, 0x5c, 0x69, 0x64, 0x65, 0x70, 0x79, 0x96, 0x9f, 0x91, - 0x92, 0x9b, 0xa0, 0x9e, 0xa2, 0xac, 0xaf, 0xa3, 0x99, 0x8e, 0x8a, 0x83, 0x7c, 0x71, 0x68, 0x69, - 0x66, 0x60, 0x6c, 0x77, 0x79, 0x7b, 0x78, 0x73, 0x7a, 0x98, 0xa3, 0x9c, 0x99, 0x90, 0x92, 0x9a, - 0xa6, 0xad, 0xad, 0xaa, 0xa6, 0xa1, 0xac, 0x9e, 0x86, 0x85, 0x93, 0x9f, 0x90, 0x7b, 0x76, 0x73, - 0x6a, 0x6f, 0x7c, 0x88, 0x95, 0x92, 0x88, 0x86, 0x93, 0x97, 0x95, 0x8a, 0x89, 0x8d, 0x8a, 0x86, - 0x91, 0x9f, 0x9e, 0x87, 0x77, 0x64, 0x4d, 0x59, 0x61, 0x55, 0x50, 0x4d, 0x50, 0x51, 0x54, 0x60, - 0x5b, 0x50, 0x5d, 0x68, 0x6f, 0x68, 0x6a, 0x72, 0x7c, 0x84, 0x8e, 0x99, 0x9c, 0x9c, 0xa1, 0xa9, - 0xb4, 0xb8, 0xb1, 0x9e, 0x88, 0x77, 0x7d, 0x8a, 0x83, 0x72, 0x74, 0x74, 0x6e, 0x6d, 0x6b, 0x64, - 0x6e, 0x77, 0x72, 0x6f, 0x7b, 0x87, 0x87, 0x83, 0x87, 0x86, 0x85, 0x8b, 0x96, 0xa2, 0x9d, 0x94, - 0x89, 0x7c, 0x72, 0x67, 0x63, 0x65, 0x6c, 0x74, 0x75, 0x7a, 0x7a, 0x72, 0x6a, 0x6b, 0x75, 0x8b, - 0x94, 0x7d, 0x6a, 0x6a, 0x6f, 0x82, 0x85, 0x73, 0x6e, 0x74, 0x78, 0x7e, 0x96, 0xa5, 0x9d, 0x8a, - 0x7d, 0x84, 0x81, 0x87, 0x96, 0x98, 0x93, 0x90, 0x97, 0x97, 0x8d, 0x83, 0x7c, 0x7d, 0x83, 0x83, - 0x84, 0x84, 0x82, 0x80, 0x89, 0x88, 0x89, 0x8b, 0x87, 0x84, 0x85, 0x92, 0x9e, 0xa4, 0xa9, 0x92, - 0x68, 0x55, 0x65, 0x7d, 0x7d, 0x7b, 0x80, 0x80, 0x74, 0x70, 0x8f, 0x9a, 0xa1, 0xa2, 0x9d, 0x96, - 0x89, 0x86, 0x89, 0x7a, 0x6c, 0x77, 0x82, 0x84, 0x88, 0x95, 0x9b, 0x88, 0x79, 0x6f, 0x5f, 0x53, - 0x52, 0x54, 0x53, 0x4d, 0x50, 0x54, 0x4f, 0x48, 0x42, 0x3b, 0x48, 0x6e, 0x84, 0x72, 0x60, 0x5f, - 0x69, 0x7e, 0x84, 0x95, 0xa1, 0xa2, 0xa0, 0xa1, 0xae, 0xae, 0xa2, 0x90, 0x74, 0x62, 0x63, 0x6b, - 0x6b, 0x5f, 0x64, 0x6e, 0x71, 0x71, 0x66, 0x63, 0x65, 0x6f, 0x79, 0x7b, 0x72, 0x6a, 0x64, 0x68, - 0x76, 0x73, 0x6d, 0x6b, 0x71, 0x71, 0x74, 0x84, 0x8d, 0x92, 0x91, 0x78, 0x76, 0x82, 0x8f, 0x93, - 0x8d, 0x89, 0x81, 0x81, 0x73, 0x63, 0x75, 0x93, 0xa3, 0x9d, 0x98, 0x94, 0x88, 0x8b, 0x98, 0x90, - 0x8d, 0xa0, 0xad, 0xae, 0xab, 0xb3, 0xb8, 0xa5, 0x97, 0x8e, 0x7b, 0x6e, 0x6b, 0x73, 0x75, 0x70, - 0x6e, 0x6a, 0x61, 0x56, 0x5c, 0x72, 0x8b, 0x9e, 0x9e, 0x83, 0x6c, 0x60, 0x71, 0x7c, 0x74, 0x80, - 0x94, 0x96, 0x8d, 0x96, 0xb5, 0xc3, 0xb2, 0x9b, 0x80, 0x72, 0x73, 0x77, 0x77, 0x6f, 0x71, 0x75, - 0x78, 0x70, 0x5e, 0x56, 0x4f, 0x53, 0x64, 0x67, 0x5f, 0x5a, 0x60, 0x6e, 0x7c, 0x90, 0xa4, 0xa7, - 0x9d, 0x97, 0xa6, 0xb7, 0xb5, 0xb3, 0xa0, 0x78, 0x71, 0x72, 0x70, 0x71, 0x76, 0x77, 0x75, 0x76, - 0x6c, 0x62, 0x7e, 0xa1, 0xa9, 0xa2, 0x93, 0x88, 0x7c, 0x85, 0x93, 0x9b, 0x9f, 0x90, 0x91, 0x95, - 0x8e, 0x8e, 0x8e, 0x80, 0x77, 0x76, 0x7e, 0x92, 0x90, 0x89, 0x8f, 0x98, 0x9b, 0x97, 0x90, 0x7c, - 0x7c, 0x97, 0xad, 0xb2, 0xa8, 0x90, 0x75, 0x6b, 0x7d, 0x85, 0x83, 0x85, 0x86, 0x7c, 0x6e, 0x70, - 0x8d, 0x97, 0x85, 0x79, 0x72, 0x64, 0x54, 0x53, 0x5b, 0x64, 0x63, 0x64, 0x67, 0x64, 0x5c, 0x69, - 0x82, 0x87, 0x81, 0x75, 0x6d, 0x5e, 0x60, 0x6b, 0x6a, 0x7b, 0x89, 0x82, 0x72, 0x6b, 0x7b, 0x82, - 0x77, 0x77, 0x69, 0x52, 0x4c, 0x52, 0x51, 0x4e, 0x4d, 0x4c, 0x4e, 0x4d, 0x4b, 0x4e, 0x62, 0x6f, - 0x72, 0x6e, 0x66, 0x57, 0x4b, 0x59, 0x6a, 0x7e, 0xa5, 0xb0, 0x9f, 0x90, 0x8c, 0x90, 0x85, 0x7b, - 0x77, 0x72, 0x7b, 0x8a, 0x8d, 0x7e, 0x84, 0x8f, 0x8b, 0x86, 0x77, 0x62, 0x65, 0x7e, 0x9b, 0xaa, - 0x9e, 0x82, 0x71, 0x6e, 0x7a, 0x8c, 0x99, 0x9a, 0x83, 0x7c, 0x8c, 0x9c, 0xa8, 0xaf, 0xa5, 0x95, - 0x99, 0xa2, 0x9a, 0x84, 0x77, 0x81, 0x8c, 0x8d, 0x8a, 0x78, 0x68, 0x73, 0x87, 0x92, 0x90, 0x92, - 0x93, 0x96, 0x9d, 0x9d, 0x99, 0xaa, 0xb3, 0xaa, 0xa2, 0x9f, 0xa0, 0x9d, 0x96, 0x97, 0x9b, 0x8e, - 0x74, 0x60, 0x5a, 0x62, 0x60, 0x5a, 0x58, 0x57, 0x57, 0x72, 0xa1, 0xb5, 0x9f, 0x82, 0x6b, 0x5f, - 0x56, 0x5e, 0x6a, 0x76, 0x8d, 0x8f, 0x81, 0x7c, 0x86, 0x87, 0x82, 0x7e, 0x7b, 0x7d, 0x86, 0x91, - 0x8e, 0x79, 0x76, 0x73, 0x69, 0x61, 0x57, 0x5b, 0x6c, 0x75, 0x7a, 0x8a, 0x8a, 0x6e, 0x5b, 0x57, - 0x67, 0x7a, 0x88, 0x9a, 0x92, 0x84, 0x8b, 0x9f, 0xad, 0xa7, 0x97, 0x88, 0x82, 0x81, 0x73, 0x63, - 0x6d, 0x89, 0x91, 0x90, 0x8d, 0x81, 0x77, 0x80, 0x96, 0xa2, 0x9d, 0x90, 0x8d, 0x94, 0x93, 0x90, - 0x98, 0xa0, 0x89, 0x6a, 0x6d, 0x81, 0x84, 0x80, 0x7d, 0x90, 0x9e, 0x9f, 0xa6, 0x99, 0x89, 0x88, - 0x7b, 0x77, 0x76, 0x73, 0x6e, 0x80, 0x9d, 0xaa, 0xa2, 0x94, 0x86, 0x7b, 0x72, 0x72, 0x7b, 0x88, - 0x93, 0x8d, 0x81, 0x80, 0x77, 0x66, 0x5e, 0x58, 0x5c, 0x6a, 0x70, 0x66, 0x50, 0x4a, 0x5d, 0x66, - 0x5a, 0x52, 0x4e, 0x58, 0x73, 0x96, 0x9c, 0x9a, 0x87, 0x68, 0x5b, 0x53, 0x59, 0x58, 0x57, 0x5f, - 0x55, 0x52, 0x65, 0x7b, 0x82, 0x7d, 0x75, 0x70, 0x6b, 0x68, 0x62, 0x63, 0x70, 0x7c, 0x7e, 0x78, - 0x6d, 0x5f, 0x61, 0x69, 0x6e, 0x73, 0x75, 0x72, 0x7a, 0x82, 0x80, 0x84, 0x9d, 0xb7, 0xbb, 0x9f, - 0x94, 0x9d, 0xa6, 0xa7, 0x9c, 0xaa, 0xae, 0xa3, 0x9b, 0x87, 0x7d, 0x76, 0x71, 0x72, 0x73, 0x70, - 0x72, 0x84, 0x9f, 0xb1, 0xa8, 0x91, 0x7c, 0x75, 0x76, 0x81, 0x8e, 0xa5, 0xa8, 0x95, 0x84, 0x8c, - 0x92, 0x85, 0x70, 0x67, 0x6f, 0x7a, 0x88, 0x8c, 0x6d, 0x59, 0x5d, 0x67, 0x64, 0x4f, 0x4b, 0x5b, - 0x75, 0x93, 0xa2, 0xa7, 0x94, 0x84, 0x82, 0x83, 0x86, 0x83, 0x83, 0x88, 0x90, 0x91, 0xa1, 0xa8, - 0x9f, 0x8f, 0x83, 0x83, 0x80, 0x73, 0x5d, 0x5d, 0x6b, 0x7a, 0x83, 0x7e, 0x6e, 0x67, 0x70, 0x88, - 0x9f, 0x98, 0x80, 0x76, 0x86, 0x8a, 0x75, 0x6d, 0x81, 0x91, 0x8b, 0x80, 0x7e, 0x87, 0x8b, 0x8c, - 0x8a, 0x96, 0x92, 0x7e, 0x6b, 0x5f, 0x5e, 0x5a, 0x51, 0x56, 0x54, 0x49, 0x54, 0x6f, 0x82, 0x81, - 0x78, 0x6c, 0x6a, 0x72, 0x79, 0x82, 0x91, 0xa8, 0xb6, 0xbf, 0xaa, 0x94, 0x97, 0x99, 0x89, 0x7c, - 0x87, 0x90, 0x97, 0x8f, 0x77, 0x68, 0x6b, 0x76, 0x77, 0x6e, 0x72, 0x7e, 0x95, 0xad, 0xbd, 0xc7, - 0xbb, 0xac, 0x9e, 0x9c, 0x98, 0x94, 0x95, 0x97, 0x91, 0x8b, 0x9e, 0xb2, 0xac, 0x9c, 0x97, 0x94, - 0x8f, 0x93, 0x95, 0x81, 0x78, 0x85, 0x92, 0x80, 0x61, 0x62, 0x6f, 0x85, 0x91, 0x90, 0x7a, 0x6e, - 0x77, 0x7d, 0x75, 0x6d, 0x72, 0x6f, 0x67, 0x61, 0x5f, 0x6b, 0x6a, 0x62, 0x6f, 0x89, 0x87, 0x76, - 0x63, 0x43, 0x34, 0x3b, 0x46, 0x52, 0x49, 0x41, 0x4f, 0x6e, 0x8d, 0x98, 0x7d, 0x62, 0x64, 0x70, - 0x71, 0x69, 0x6c, 0x79, 0x7c, 0x7b, 0x76, 0x69, 0x68, 0x67, 0x6b, 0x76, 0x82, 0x89, 0x85, 0x76, - 0x61, 0x61, 0x6f, 0x72, 0x68, 0x60, 0x65, 0x73, 0x88, 0x92, 0x8f, 0x8c, 0x80, 0x7a, 0x79, 0x7c, - 0x77, 0x75, 0x7d, 0x98, 0xa4, 0x91, 0x9b, 0xaf, 0xa6, 0x8e, 0x88, 0x89, 0x87, 0x89, 0x86, 0x7e, - 0x76, 0x72, 0x72, 0x6b, 0x61, 0x64, 0x6f, 0x7a, 0x87, 0x8c, 0x86, 0x8a, 0x8f, 0x90, 0x8a, 0x84, - 0x8b, 0x90, 0x8e, 0x84, 0x7a, 0x85, 0x8c, 0x8d, 0x9c, 0xa8, 0x9b, 0x89, 0x82, 0x71, 0x58, 0x57, - 0x60, 0x61, 0x4d, 0x48, 0x5e, 0x77, 0x8b, 0x90, 0x8b, 0x78, 0x75, 0x83, 0x98, 0xa2, 0xa1, 0x9d, - 0x97, 0x97, 0x95, 0x98, 0x98, 0x86, 0x81, 0x8b, 0x8f, 0x8d, 0x84, 0x6c, 0x48, 0x47, 0x5d, 0x67, - 0x66, 0x6a, 0x6b, 0x78, 0x8b, 0xa6, 0xbb, 0xac, 0x92, 0x8b, 0x81, 0x71, 0x70, 0x68, 0x73, 0x86, - 0x8b, 0x98, 0xa0, 0x96, 0x8f, 0x91, 0x9b, 0xa8, 0x9f, 0x92, 0x8c, 0x87, 0x90, 0x8f, 0x82, 0x7d, - 0x78, 0x77, 0x81, 0x84, 0x85, 0x7a, 0x75, 0x7c, 0x82, 0x83, 0x82, 0x7e, 0x7d, 0x82, 0x8e, 0x8d, - 0x89, 0x8b, 0x8a, 0x85, 0x88, 0x92, 0x82, 0x6e, 0x5f, 0x50, 0x51, 0x52, 0x55, 0x5e, 0x6a, 0x7b, - 0x91, 0x98, 0x98, 0x98, 0x9f, 0xaa, 0xa4, 0x9c, 0xa4, 0xa4, 0x9b, 0x97, 0x98, 0x8e, 0x7c, 0x80, - 0x7d, 0x76, 0x76, 0x7b, 0x83, 0x7e, 0x74, 0x72, 0x60, 0x5a, 0x68, 0x6d, 0x64, 0x5b, 0x5c, 0x67, - 0x75, 0x90, 0xa7, 0xa3, 0x8b, 0x75, 0x6a, 0x6c, 0x71, 0x6c, 0x66, 0x67, 0x65, 0x7d, 0x97, 0x86, - 0x73, 0x6c, 0x77, 0x82, 0x7b, 0x72, 0x62, 0x52, 0x57, 0x5f, 0x5e, 0x62, 0x60, 0x5d, 0x63, 0x6b, - 0x84, 0x7d, 0x70, 0x74, 0x74, 0x75, 0x6d, 0x6c, 0x6e, 0x75, 0x86, 0x92, 0x9d, 0x95, 0x8b, 0x95, - 0xab, 0xba, 0xaa, 0x8d, 0x72, 0x69, 0x73, 0x79, 0x6f, 0x68, 0x6a, 0x72, 0x7e, 0x83, 0x84, 0x7e, - 0x75, 0x7c, 0x85, 0x87, 0x8f, 0x92, 0x92, 0x90, 0x97, 0xa9, 0xa8, 0xa9, 0x99, 0x8b, 0x86, 0x7c, - 0x72, 0x68, 0x62, 0x60, 0x61, 0x66, 0x61, 0x56, 0x5c, 0x6a, 0x6f, 0x76, 0x7a, 0x84, 0x92, 0x98, - 0x8e, 0x7e, 0x71, 0x74, 0x80, 0x79, 0x70, 0x74, 0x72, 0x87, 0x99, 0x8a, 0x82, 0x7b, 0x84, 0x88, - 0x83, 0x7e, 0x87, 0x86, 0x87, 0x86, 0x83, 0x85, 0x76, 0x6d, 0x6c, 0x79, 0x90, 0x96, 0x90, 0x8e, - 0x8d, 0x94, 0x9e, 0xa9, 0xa3, 0x96, 0x96, 0xa1, 0xb8, 0xaf, 0xa0, 0xa0, 0xa0, 0x9b, 0x85, 0x6e, - 0x55, 0x4b, 0x51, 0x54, 0x4c, 0x4f, 0x59, 0x64, 0x6c, 0x73, 0x83, 0x8e, 0x87, 0x90, 0x97, 0x91, - 0x8f, 0x89, 0x82, 0x72, 0x7a, 0x8a, 0x96, 0x93, 0x76, 0x6f, 0x78, 0x82, 0x84, 0x82, 0x73, 0x67, - 0x71, 0x88, 0x87, 0x75, 0x6e, 0x69, 0x67, 0x69, 0x76, 0x7e, 0x7b, 0x76, 0x6f, 0x69, 0x68, 0x6a, - 0x6c, 0x5d, 0x57, 0x71, 0x8c, 0xa7, 0xb0, 0xa1, 0x9a, 0x92, 0x88, 0x82, 0x7e, 0x80, 0x87, 0x92, - 0x8f, 0x7d, 0x76, 0x7e, 0x82, 0x85, 0x8b, 0x8f, 0x96, 0xa5, 0xb1, 0xb2, 0xad, 0xa6, 0x9f, 0x97, - 0x82, 0x7b, 0x7b, 0x83, 0x98, 0x98, 0x98, 0x9e, 0xa2, 0x95, 0x79, 0x6b, 0x68, 0x70, 0x71, 0x65, - 0x5b, 0x65, 0x6f, 0x76, 0x7a, 0x7a, 0x84, 0x86, 0x83, 0x81, 0x7b, 0x79, 0x83, 0x8f, 0x8c, 0x83, - 0x80, 0x85, 0x9c, 0xa3, 0x92, 0x84, 0x82, 0x7b, 0x6b, 0x64, 0x61, 0x5b, 0x5c, 0x66, 0x60, 0x5d, - 0x62, 0x63, 0x68, 0x72, 0x83, 0x8a, 0x8d, 0x88, 0x7d, 0x79, 0x81, 0x87, 0x77, 0x5a, 0x55, 0x6f, - 0x90, 0xa5, 0x98, 0x88, 0x7b, 0x78, 0x7c, 0x7d, 0x7b, 0x6f, 0x74, 0x8b, 0x90, 0x85, 0x7b, 0x73, - 0x6b, 0x6a, 0x68, 0x6b, 0x6c, 0x63, 0x6a, 0x74, 0x7e, 0x8a, 0x8b, 0x81, 0x76, 0x78, 0x81, 0x96, - 0xa0, 0xa1, 0xa4, 0x9c, 0x91, 0x76, 0x58, 0x51, 0x5e, 0x67, 0x61, 0x48, 0x3f, 0x49, 0x5e, 0x71, - 0x7e, 0x80, 0x75, 0x73, 0x81, 0x90, 0x97, 0x99, 0x99, 0x91, 0x85, 0x78, 0x74, 0x74, 0x7a, 0x80, - 0x7a, 0x7e, 0x86, 0x7c, 0x6f, 0x6c, 0x6f, 0x73, 0x7c, 0x80, 0x7c, 0x7d, 0x7d, 0x78, 0x7d, 0x8c, - 0x9b, 0xa3, 0xa1, 0x9a, 0x8f, 0x89, 0x8b, 0x8c, 0x7e, 0x6e, 0x71, 0x83, 0xa4, 0xb7, 0xb0, 0xa9, - 0x98, 0x82, 0x72, 0x6e, 0x6e, 0x6a, 0x6e, 0x76, 0x7b, 0x77, 0x79, 0x7c, 0x7a, 0x7e, 0x80, 0x7d, - 0x81, 0x86, 0x8f, 0x98, 0xa1, 0x9f, 0x8e, 0x7b, 0x73, 0x80, 0x8a, 0x92, 0x97, 0x99, 0x96, 0x86, - 0x80, 0x70, 0x69, 0x6a, 0x6d, 0x79, 0x78, 0x6c, 0x6c, 0x72, 0x7a, 0x7e, 0x85, 0x81, 0x75, 0x69, - 0x6e, 0x81, 0x8c, 0x93, 0xa0, 0xa0, 0x96, 0x8e, 0x8e, 0x97, 0xa6, 0xa5, 0xa4, 0xa6, 0x9d, 0x86, - 0x73, 0x79, 0x8c, 0x91, 0x86, 0x7e, 0x7d, 0x71, 0x69, 0x72, 0x81, 0x94, 0x94, 0x90, 0x9c, 0xa5, - 0xa0, 0x9b, 0x96, 0x8d, 0x79, 0x66, 0x70, 0x7e, 0x87, 0x8f, 0x8c, 0x8e, 0x8b, 0x79, 0x69, 0x65, - 0x67, 0x66, 0x73, 0x81, 0x7d, 0x77, 0x76, 0x76, 0x6c, 0x65, 0x6f, 0x7b, 0x7e, 0x7a, 0x84, 0x87, - 0x86, 0x83, 0x77, 0x6e, 0x6d, 0x71, 0x6f, 0x7c, 0x8c, 0x8d, 0x89, 0x79, 0x70, 0x5e, 0x4a, 0x48, - 0x49, 0x45, 0x3a, 0x3c, 0x4c, 0x5f, 0x6f, 0x78, 0x7e, 0x7b, 0x6d, 0x70, 0x7d, 0x89, 0x8d, 0x8e, - 0x91, 0x88, 0x75, 0x76, 0x8b, 0x92, 0x91, 0x8e, 0x8a, 0x8a, 0x7e, 0x70, 0x68, 0x6f, 0x76, 0x77, - 0x74, 0x75, 0x7a, 0x76, 0x74, 0x7e, 0x8e, 0x95, 0x8d, 0x84, 0x8d, 0x87, 0x79, 0x78, 0x81, 0x83, - 0x7a, 0x72, 0x78, 0x77, 0x85, 0x97, 0x94, 0x97, 0x8d, 0x6c, 0x4f, 0x4e, 0x60, 0x6f, 0x77, 0x75, - 0x72, 0x69, 0x66, 0x70, 0x70, 0x70, 0x72, 0x70, 0x73, 0x7d, 0x8f, 0x9a, 0x97, 0x8d, 0x82, 0x7a, - 0x77, 0x7a, 0x7b, 0x83, 0x84, 0x88, 0x92, 0x98, 0x9f, 0x91, 0x82, 0x83, 0x83, 0x92, 0x9b, 0x99, - 0x9c, 0x99, 0x92, 0x8c, 0x93, 0xa0, 0x9e, 0x99, 0x9d, 0xa2, 0x99, 0x95, 0x9b, 0x9b, 0x91, 0x8d, - 0x92, 0x98, 0x98, 0x96, 0x9b, 0x98, 0x88, 0x76, 0x74, 0x78, 0x7a, 0x71, 0x5f, 0x50, 0x4c, 0x51, - 0x61, 0x69, 0x6b, 0x68, 0x5e, 0x5e, 0x85, 0x8a, 0x77, 0x6f, 0x6c, 0x68, 0x5c, 0x5b, 0x71, 0x76, - 0x7b, 0x88, 0x95, 0x98, 0x89, 0x79, 0x6d, 0x6c, 0x71, 0x77, 0x80, 0x83, 0x84, 0x84, 0x8a, 0x95, - 0x90, 0x8d, 0x89, 0x87, 0x89, 0x8c, 0x8c, 0x91, 0x97, 0x97, 0x91, 0x88, 0x86, 0x88, 0x88, 0x9c, - 0xa1, 0x9f, 0x9d, 0x95, 0x89, 0x6c, 0x63, 0x6a, 0x6d, 0x75, 0x7c, 0x78, 0x76, 0x7b, 0x83, 0x89, - 0x8d, 0x8c, 0x86, 0x87, 0x8f, 0x95, 0x97, 0x91, 0x95, 0x94, 0x88, 0x84, 0x85, 0x8a, 0x7d, 0x6c, - 0x71, 0x73, 0x6f, 0x63, 0x61, 0x65, 0x69, 0x63, 0x6a, 0x6f, 0x6d, 0x73, 0x74, 0x66, 0x5f, 0x61, - 0x6a, 0x76, 0x8d, 0x93, 0x8a, 0x7d, 0x7b, 0x85, 0x7e, 0x6d, 0x6f, 0x74, 0x7c, 0x82, 0x8b, 0x8f, - 0x82, 0x74, 0x68, 0x67, 0x67, 0x69, 0x6f, 0x6b, 0x6a, 0x77, 0x89, 0x92, 0x88, 0x80, 0x82, 0x85, - 0x8a, 0xa5, 0xb2, 0xad, 0xa2, 0x8f, 0x80, 0x78, 0x7e, 0x8a, 0x8a, 0x8d, 0x8e, 0x8b, 0x82, 0x7d, - 0x7e, 0x69, 0x5c, 0x60, 0x66, 0x69, 0x6a, 0x68, 0x74, 0x7d, 0x80, 0x80, 0x80, 0x79, 0x73, 0x72, - 0x70, 0x6e, 0x72, 0x76, 0x86, 0x8b, 0x88, 0x8e, 0x8f, 0x96, 0xa3, 0x9e, 0x98, 0x8f, 0x7c, 0x69, - 0x66, 0x74, 0x74, 0x60, 0x57, 0x5e, 0x67, 0x6b, 0x69, 0x65, 0x60, 0x5a, 0x63, 0x73, 0x85, 0x87, - 0x89, 0x89, 0x87, 0x90, 0x8d, 0x82, 0x85, 0x87, 0x93, 0x8f, 0x8b, 0x8d, 0x81, 0x75, 0x67, 0x61, - 0x63, 0x65, 0x73, 0x91, 0x9b, 0x9d, 0xa0, 0x97, 0x84, 0x79, 0x84, 0x8e, 0x8d, 0x8d, 0x99, 0xa2, - 0x98, 0x89, 0x8c, 0x8a, 0x8a, 0x8f, 0x92, 0x96, 0x8d, 0x8c, 0x91, 0x8c, 0x8d, 0x7c, 0x71, 0x6d, - 0x69, 0x69, 0x5f, 0x5f, 0x70, 0x79, 0x7d, 0x7a, 0x73, 0x6d, 0x69, 0x6f, 0x85, 0x88, 0x7c, 0x74, - 0x79, 0x7c, 0x79, 0x8a, 0x93, 0x95, 0x8c, 0x87, 0x8c, 0x84, 0x7a, 0x7a, 0x78, 0x79, 0x7b, 0x6f, - 0x6a, 0x6f, 0x7c, 0x8a, 0x88, 0x82, 0x79, 0x75, 0x78, 0x7e, 0x8a, 0x7d, 0x76, 0x7b, 0x83, 0x8c, - 0x81, 0x73, 0x76, 0x7e, 0x9e, 0xb6, 0xb0, 0xa0, 0x84, 0x75, 0x6f, 0x66, 0x6f, 0x78, 0x79, 0x7e, - 0x8e, 0x97, 0x98, 0x90, 0x86, 0x7d, 0x7a, 0x88, 0x92, 0x96, 0x9f, 0xa8, 0xa6, 0x9c, 0x9b, 0x94, - 0x93, 0x92, 0x91, 0x8f, 0x79, 0x76, 0x80, 0x7e, 0x83, 0x75, 0x5f, 0x5a, 0x5e, 0x69, 0x7b, 0x7e, - 0x74, 0x6e, 0x76, 0x7e, 0x78, 0x79, 0x78, 0x73, 0x75, 0x7e, 0x84, 0x8a, 0x96, 0x99, 0x90, 0x93, - 0x9f, 0xa2, 0x97, 0x8f, 0x94, 0x8f, 0x83, 0x83, 0x82, 0x79, 0x6f, 0x61, 0x5f, 0x63, 0x71, 0x7c, - 0x79, 0x70, 0x69, 0x62, 0x67, 0x76, 0x93, 0x9c, 0x8f, 0x82, 0x7c, 0x86, 0x7b, 0x6f, 0x74, 0x81, - 0x8c, 0x88, 0x80, 0x74, 0x64, 0x5a, 0x5d, 0x57, 0x5f, 0x71, 0x73, 0x77, 0x88, 0x94, 0x93, 0x83, - 0x79, 0x72, 0x6a, 0x66, 0x69, 0x6e, 0x6e, 0x76, 0x77, 0x76, 0x7c, 0x78, 0x76, 0x7a, 0x83, 0x8d, - 0x8f, 0x86, 0x79, 0x6e, 0x74, 0x6a, 0x57, 0x5c, 0x5b, 0x52, 0x51, 0x57, 0x62, 0x6e, 0x75, 0x79, - 0x6c, 0x68, 0x6c, 0x6d, 0x7b, 0x92, 0x9d, 0xa0, 0xa6, 0xa6, 0xa6, 0xa5, 0xa1, 0xa6, 0x9d, 0x8a, - 0x87, 0x8a, 0x8a, 0x8d, 0x8a, 0x82, 0x7e, 0x77, 0x85, 0x9c, 0x99, 0x88, 0x74, 0x6e, 0x6b, 0x68, - 0x73, 0x7c, 0x88, 0x86, 0x83, 0x86, 0x8b, 0x91, 0x85, 0x73, 0x7d, 0x9b, 0xa3, 0x9e, 0x96, 0x8f, - 0x80, 0x6e, 0x71, 0x75, 0x72, 0x71, 0x6f, 0x72, 0x77, 0x81, 0x85, 0x7b, 0x77, 0x6e, 0x67, 0x69, - 0x7d, 0x9a, 0xab, 0xa0, 0x8c, 0x87, 0x8d, 0x88, 0x81, 0x80, 0x7e, 0x78, 0x71, 0x71, 0x74, 0x70, - 0x74, 0x71, 0x65, 0x6b, 0x6e, 0x67, 0x69, 0x6f, 0x84, 0x93, 0x90, 0x8e, 0x83, 0x74, 0x6a, 0x73, - 0x83, 0x84, 0x89, 0x96, 0xa3, 0xa0, 0xa0, 0xa1, 0xa5, 0xb3, 0xb8, 0xb5, 0x9f, 0x8b, 0x88, 0x8c, - 0x8c, 0x89, 0x84, 0x73, 0x74, 0x7b, 0x7d, 0x82, 0x78, 0x73, 0x75, 0x72, 0x79, 0x83, 0x94, 0x9a, - 0x9b, 0xa3, 0xa7, 0xa3, 0x94, 0x89, 0x8b, 0x99, 0x9d, 0x8c, 0x77, 0x6c, 0x61, 0x5c, 0x65, 0x6c, - 0x6c, 0x69, 0x6e, 0x84, 0x9b, 0x97, 0x91, 0x88, 0x82, 0x79, 0x74, 0x77, 0x82, 0x8d, 0x8f, 0x8f, - 0x8f, 0x8b, 0x88, 0x7b, 0x70, 0x78, 0x81, 0x7b, 0x7c, 0x80, 0x7c, 0x76, 0x78, 0x72, 0x6c, 0x5f, - 0x4f, 0x4f, 0x54, 0x52, 0x68, 0x77, 0x74, 0x6e, 0x64, 0x5a, 0x59, 0x70, 0x8d, 0x9a, 0x8e, 0x88, - 0x88, 0x86, 0x89, 0x8a, 0x8e, 0x8d, 0x7a, 0x70, 0x6b, 0x61, 0x61, 0x68, 0x6d, 0x6c, 0x65, 0x59, - 0x5b, 0x64, 0x6d, 0x7b, 0x70, 0x64, 0x63, 0x60, 0x5b, 0x6a, 0x89, 0x8c, 0x7b, 0x79, 0x7b, 0x79, - 0x71, 0x6f, 0x7b, 0x92, 0x9c, 0x99, 0x9a, 0x84, 0x6d, 0x6b, 0x74, 0x7e, 0x7c, 0x70, 0x69, 0x73, - 0x82, 0x90, 0x93, 0x87, 0x82, 0x78, 0x70, 0x7b, 0x95, 0xa8, 0xad, 0xac, 0xaf, 0xa3, 0x92, 0x83, - 0x80, 0x8b, 0x92, 0x91, 0x8f, 0x8c, 0x83, 0x84, 0x97, 0x97, 0x8f, 0x76, 0x62, 0x69, 0x77, 0x80, - 0x84, 0x7e, 0x6b, 0x63, 0x5f, 0x5b, 0x64, 0x73, 0x82, 0x8b, 0x8f, 0x96, 0x96, 0x95, 0x93, 0x96, - 0x9f, 0x9f, 0x92, 0x8b, 0x8c, 0x89, 0x85, 0x85, 0x84, 0x80, 0x6c, 0x55, 0x57, 0x5a, 0x58, 0x63, - 0x60, 0x5e, 0x5d, 0x58, 0x59, 0x74, 0x9a, 0xa3, 0xa0, 0x8f, 0x87, 0x7e, 0x77, 0x78, 0x89, 0x99, - 0x8e, 0x7e, 0x84, 0x83, 0x76, 0x7a, 0x86, 0x8b, 0x85, 0x75, 0x78, 0x88, 0x91, 0x9f, 0xa0, 0x8f, - 0x7c, 0x6a, 0x65, 0x77, 0x8a, 0x95, 0x99, 0x95, 0x9b, 0x94, 0x8c, 0x88, 0x8d, 0x98, 0x9f, 0xa0, - 0xa0, 0xa9, 0x98, 0x90, 0xa1, 0xa0, 0x91, 0x76, 0x5f, 0x61, 0x65, 0x6f, 0x82, 0x83, 0x6f, 0x63, - 0x5c, 0x5d, 0x6e, 0x84, 0x8f, 0x94, 0x9c, 0xa6, 0x9d, 0x91, 0x8a, 0x8f, 0x97, 0x8e, 0x7a, 0x6d, - 0x66, 0x64, 0x65, 0x6c, 0x6b, 0x66, 0x53, 0x46, 0x54, 0x65, 0x7c, 0x7d, 0x6d, 0x63, 0x60, 0x60, - 0x61, 0x76, 0x8e, 0x88, 0x7e, 0x7b, 0x79, 0x73, 0x71, 0x74, 0x86, 0x92, 0x84, 0x79, 0x78, 0x77, - 0x71, 0x70, 0x76, 0x79, 0x73, 0x6a, 0x6c, 0x77, 0x81, 0x86, 0x89, 0x83, 0x77, 0x6c, 0x6f, 0x80, - 0x9b, 0xa7, 0xac, 0xb8, 0xa9, 0x90, 0x88, 0x8e, 0x97, 0x9e, 0x98, 0x86, 0x7e, 0x85, 0x82, 0x85, - 0x94, 0x90, 0x82, 0x72, 0x68, 0x74, 0x7c, 0x83, 0x92, 0x8d, 0x78, 0x6a, 0x62, 0x65, 0x6e, 0x79, - 0x7d, 0x7d, 0x7a, 0x82, 0x83, 0x80, 0x84, 0x8e, 0x99, 0x98, 0x8b, 0x8e, 0xa0, 0x94, 0x83, 0x81, - 0x82, 0x7d, 0x63, 0x4a, 0x50, 0x60, 0x72, 0x7b, 0x70, 0x64, 0x5c, 0x5b, 0x62, 0x87, 0xad, 0xa5, - 0x92, 0x8d, 0x89, 0x80, 0x77, 0x76, 0x86, 0x88, 0x78, 0x72, 0x6f, 0x66, 0x60, 0x5e, 0x65, 0x70, - 0x6e, 0x66, 0x68, 0x74, 0x8c, 0x9d, 0x90, 0x79, 0x67, 0x61, 0x65, 0x6d, 0x79, 0x7c, 0x7b, 0x88, - 0x8c, 0x7e, 0x79, 0x80, 0x87, 0x90, 0x97, 0x99, 0x98, 0x91, 0x88, 0x8c, 0x95, 0x8c, 0x81, 0x6f, - 0x5c, 0x5f, 0x69, 0x6e, 0x6d, 0x68, 0x5e, 0x52, 0x53, 0x5a, 0x69, 0x7a, 0x84, 0x9c, 0xa9, 0x9a, - 0x8c, 0x89, 0x90, 0x95, 0x95, 0x8d, 0x80, 0x7e, 0x89, 0x8b, 0x7d, 0x74, 0x75, 0x79, 0x68, 0x5d, - 0x72, 0x82, 0x83, 0x82, 0x7b, 0x75, 0x6f, 0x6e, 0x75, 0x8c, 0x9f, 0x9b, 0x95, 0x8b, 0x8b, 0x94, - 0x98, 0x9b, 0xa7, 0xa9, 0xa0, 0x9e, 0xb0, 0xb0, 0x95, 0x7d, 0x78, 0x8a, 0x83, 0x6b, 0x6b, 0x73, - 0x7d, 0x8d, 0x96, 0x8b, 0x76, 0x6e, 0x76, 0x85, 0x98, 0xa1, 0x9c, 0x9e, 0xa0, 0x96, 0x9a, 0x9a, - 0x94, 0x93, 0x8a, 0x83, 0x84, 0x79, 0x68, 0x72, 0x80, 0x81, 0x80, 0x6e, 0x69, 0x73, 0x81, 0x98, - 0x9e, 0x86, 0x69, 0x5d, 0x63, 0x6a, 0x6f, 0x72, 0x74, 0x83, 0x93, 0x9d, 0x9b, 0x97, 0x92, 0x9a, - 0xa2, 0xa2, 0xa3, 0xa1, 0x98, 0x91, 0x88, 0x7c, 0x7b, 0x78, 0x65, 0x58, 0x63, 0x6e, 0x6d, 0x65, - 0x64, 0x65, 0x66, 0x63, 0x6d, 0x8a, 0x9c, 0x9b, 0xa1, 0x98, 0x7d, 0x73, 0x6f, 0x6d, 0x72, 0x6a, - 0x5d, 0x55, 0x5d, 0x65, 0x66, 0x5d, 0x60, 0x72, 0x6e, 0x66, 0x76, 0x84, 0x87, 0x87, 0x88, 0x7e, - 0x76, 0x70, 0x70, 0x79, 0x79, 0x73, 0x71, 0x74, 0x6d, 0x64, 0x70, 0x71, 0x6b, 0x73, 0x79, 0x7e, - 0x89, 0x91, 0x8c, 0x89, 0x85, 0x7e, 0x81, 0x68, 0x56, 0x55, 0x4f, 0x56, 0x64, 0x62, 0x53, 0x4f, - 0x57, 0x63, 0x6c, 0x7c, 0x92, 0x94, 0x8c, 0x91, 0x95, 0x94, 0x8b, 0x92, 0x9a, 0x8f, 0x86, 0x87, - 0x83, 0x78, 0x73, 0x6d, 0x75, 0x78, 0x6a, 0x68, 0x77, 0x8a, 0x95, 0x8e, 0x76, 0x68, 0x66, 0x6b, - 0x75, 0x89, 0x98, 0x8d, 0x87, 0x8e, 0x93, 0x90, 0x8c, 0x89, 0x95, 0x92, 0x8e, 0x96, 0x94, 0x8a, - 0x8c, 0x8c, 0x8b, 0x91, 0x87, 0x80, 0x7b, 0x74, 0x79, 0x7d, 0x74, 0x6c, 0x6e, 0x70, 0x72, 0x7a, - 0x84, 0x94, 0xa3, 0xae, 0xa7, 0x8f, 0x8d, 0x90, 0x95, 0x99, 0x93, 0x86, 0x75, 0x75, 0x88, 0x9d, - 0x9f, 0x92, 0x8d, 0x7e, 0x76, 0x7b, 0x82, 0x84, 0x80, 0x7b, 0x7c, 0x85, 0x84, 0x86, 0x8a, 0x86, - 0x8e, 0x95, 0x8f, 0x91, 0x93, 0x92, 0x92, 0x98, 0xa0, 0xa0, 0xa2, 0xa8, 0xaf, 0xa2, 0x89, 0x78, - 0x82, 0x89, 0x74, 0x66, 0x65, 0x63, 0x6b, 0x74, 0x72, 0x67, 0x60, 0x6c, 0x86, 0x9b, 0xb0, 0xac, - 0x98, 0x90, 0x98, 0x9a, 0x93, 0x8b, 0x8a, 0x7e, 0x6c, 0x6b, 0x6c, 0x6b, 0x64, 0x5b, 0x5f, 0x68, - 0x5e, 0x63, 0x73, 0x7a, 0x86, 0x97, 0x8c, 0x75, 0x6b, 0x6f, 0x75, 0x72, 0x6d, 0x6b, 0x69, 0x69, - 0x70, 0x72, 0x6e, 0x6f, 0x82, 0x89, 0x82, 0x79, 0x7a, 0x7d, 0x87, 0x98, 0xa3, 0x96, 0x86, 0x76, - 0x69, 0x5f, 0x5b, 0x5c, 0x5d, 0x53, 0x4f, 0x54, 0x52, 0x5a, 0x6b, 0x7a, 0x89, 0x92, 0x98, 0x96, - 0x88, 0x77, 0x80, 0x8f, 0x85, 0x74, 0x6d, 0x6c, 0x70, 0x75, 0x73, 0x6e, 0x74, 0x7a, 0x79, 0x76, - 0x7c, 0x83, 0x7e, 0x79, 0x7a, 0x79, 0x75, 0x7b, 0x8d, 0x93, 0x96, 0x91, 0x8d, 0x8a, 0x80, 0x78, - 0x75, 0x7b, 0x82, 0x84, 0x8a, 0x90, 0x96, 0xa3, 0x9c, 0x8c, 0x89, 0x8a, 0x7d, 0x74, 0x71, 0x6b, - 0x66, 0x6b, 0x71, 0x72, 0x6b, 0x6f, 0x82, 0x8c, 0x8d, 0x98, 0x9e, 0x92, 0x8a, 0x90, 0x97, 0x97, - 0x9c, 0x90, 0x78, 0x65, 0x67, 0x78, 0x83, 0x85, 0x8a, 0x85, 0x78, 0x6d, 0x6e, 0x79, 0x7b, 0x7a, - 0x86, 0x7d, 0x6c, 0x67, 0x6f, 0x7c, 0x7c, 0x7c, 0x81, 0x7e, 0x7e, 0x89, 0x8d, 0x84, 0x92, 0xa5, - 0x9e, 0x92, 0x8b, 0x8e, 0x88, 0x81, 0x89, 0x92, 0x8d, 0x7b, 0x6f, 0x66, 0x67, 0x6b, 0x6a, 0x68, - 0x5c, 0x51, 0x56, 0x6a, 0x80, 0x9a, 0xb0, 0xab, 0xa8, 0xaa, 0x99, 0x8d, 0x87, 0x90, 0x8e, 0x79, - 0x6d, 0x6b, 0x70, 0x79, 0x84, 0x85, 0x83, 0x84, 0x83, 0x87, 0x88, 0x84, 0x7d, 0x76, 0x71, 0x77, - 0x7b, 0x7b, 0x84, 0x83, 0x7c, 0x7d, 0x83, 0x87, 0x8b, 0x89, 0x86, 0x86, 0x8a, 0x7e, 0x7d, 0x7d, - 0x85, 0x98, 0xaa, 0xaa, 0xa9, 0x97, 0x84, 0x74, 0x65, 0x66, 0x64, 0x56, 0x59, 0x5a, 0x54, 0x57, - 0x6d, 0x87, 0x90, 0x8f, 0x8e, 0x8b, 0x81, 0x81, 0x92, 0x96, 0x99, 0x93, 0x7c, 0x6d, 0x65, 0x70, - 0x74, 0x70, 0x6b, 0x68, 0x64, 0x5a, 0x66, 0x77, 0x85, 0x7e, 0x7c, 0x8b, 0x80, 0x71, 0x6f, 0x84, - 0x94, 0x99, 0xa4, 0x9b, 0x8b, 0x84, 0x84, 0x89, 0x8d, 0x9c, 0x9d, 0x90, 0x85, 0x87, 0x91, 0x8f, - 0x97, 0xa3, 0xa3, 0x96, 0x87, 0x83, 0x80, 0x7b, 0x77, 0x76, 0x73, 0x67, 0x63, 0x6c, 0x76, 0x7a, - 0x82, 0x8a, 0x89, 0x92, 0xa6, 0xa1, 0x94, 0x85, 0x84, 0x75, 0x66, 0x61, 0x65, 0x6e, 0x79, 0x89, - 0x92, 0x8b, 0x7e, 0x77, 0x73, 0x75, 0x70, 0x63, 0x5d, 0x59, 0x5e, 0x67, 0x72, 0x79, 0x7a, 0x75, - 0x75, 0x7b, 0x7b, 0x78, 0x79, 0x77, 0x81, 0x7e, 0x76, 0x7b, 0x83, 0x8a, 0x93, 0x9a, 0x8e, 0x84, - 0x74, 0x6e, 0x77, 0x74, 0x73, 0x62, 0x53, 0x57, 0x5a, 0x5a, 0x66, 0x83, 0x95, 0x9c, 0xa6, 0xa0, - 0x90, 0x7b, 0x79, 0x86, 0x89, 0x85, 0x72, 0x5c, 0x56, 0x60, 0x6e, 0x73, 0x76, 0x77, 0x75, 0x70, - 0x69, 0x72, 0x82, 0x87, 0x81, 0x86, 0x8e, 0x81, 0x78, 0x75, 0x7a, 0x77, 0x71, 0x73, 0x70, 0x71, - 0x7b, 0x7e, 0x81, 0x86, 0x8c, 0x84, 0x7a, 0x73, 0x77, 0x80, 0x82, 0x89, 0x9e, 0x9a, 0x82, 0x6d, - 0x69, 0x6f, 0x6c, 0x62, 0x5c, 0x56, 0x55, 0x5c, 0x6c, 0x7b, 0x8a, 0x91, 0x96, 0x9a, 0xa1, 0xaa, - 0xa2, 0xa0, 0x9f, 0x98, 0x88, 0x80, 0x84, 0x81, 0x7d, 0x7b, 0x84, 0x8c, 0x8c, 0x95, 0x9e, 0x99, - 0x91, 0x82, 0x76, 0x72, 0x74, 0x76, 0x86, 0x98, 0x9d, 0xa1, 0xaa, 0xa6, 0x9d, 0x8c, 0x86, 0x8b, - 0x8e, 0x86, 0x7c, 0x7b, 0x81, 0x8d, 0x93, 0xa1, 0xad, 0xa3, 0x95, 0x86, 0x81, 0x7e, 0x80, 0x7d, - 0x6f, 0x67, 0x6e, 0x77, 0x7e, 0x8c, 0x9b, 0x9c, 0x9c, 0x9b, 0x9a, 0x9d, 0x99, 0x90, 0x96, 0xa2, - 0x9d, 0x8f, 0x81, 0x76, 0x7d, 0x86, 0x86, 0x8d, 0x9a, 0x85, 0x6e, 0x67, 0x73, 0x81, 0x7b, 0x6c, - 0x6e, 0x71, 0x62, 0x5e, 0x66, 0x74, 0x78, 0x72, 0x6f, 0x6d, 0x66, 0x66, 0x6d, 0x7e, 0x90, 0x95, - 0x90, 0x8b, 0x89, 0x84, 0x7d, 0x78, 0x80, 0x86, 0x85, 0x84, 0x77, 0x67, 0x5f, 0x59, 0x55, 0x54, - 0x52, 0x4d, 0x50, 0x5c, 0x6e, 0x8e, 0xa4, 0x9e, 0x90, 0x88, 0x8c, 0x87, 0x8a, 0x7e, 0x74, 0x67, - 0x5d, 0x63, 0x69, 0x6f, 0x75, 0x77, 0x73, 0x73, 0x74, 0x73, 0x79, 0x79, 0x71, 0x6b, 0x65, 0x6b, - 0x76, 0x7c, 0x79, 0x72, 0x73, 0x74, 0x81, 0x86, 0x7c, 0x6c, 0x6c, 0x6f, 0x6a, 0x6d, 0x73, 0x75, - 0x7e, 0x82, 0x94, 0xb0, 0xad, 0x93, 0x7e, 0x71, 0x6f, 0x6f, 0x67, 0x5a, 0x54, 0x4f, 0x53, 0x61, - 0x77, 0x89, 0x91, 0x90, 0x92, 0x90, 0x80, 0x74, 0x77, 0x8e, 0x98, 0x88, 0x75, 0x6e, 0x70, 0x76, - 0x77, 0x77, 0x79, 0x77, 0x73, 0x7a, 0x7e, 0x82, 0x81, 0x82, 0x80, 0x84, 0x8b, 0x7b, 0x78, 0x7d, - 0x90, 0xa6, 0xa8, 0x99, 0x88, 0x79, 0x78, 0x85, 0x96, 0x96, 0x94, 0x89, 0x81, 0x88, 0x8d, 0x90, - 0x90, 0x8f, 0x90, 0x93, 0x88, 0x78, 0x7e, 0x81, 0x83, 0x7e, 0x73, 0x77, 0x79, 0x76, 0x80, 0x8f, - 0x9f, 0xa3, 0xa7, 0xa5, 0xa8, 0x9e, 0x91, 0x96, 0x88, 0x82, 0x75, 0x6b, 0x6d, 0x72, 0x86, 0x99, - 0x9d, 0x92, 0x8e, 0x88, 0x8b, 0x8f, 0x87, 0x7a, 0x69, 0x5f, 0x68, 0x7a, 0x8e, 0x93, 0x8f, 0x88, - 0x84, 0x87, 0x80, 0x75, 0x78, 0x86, 0x86, 0x84, 0x89, 0x8d, 0x8f, 0x8f, 0x8e, 0x9d, 0xa6, 0x95, - 0x8e, 0x89, 0x83, 0x79, 0x6d, 0x67, 0x61, 0x5b, 0x5a, 0x5d, 0x6d, 0x83, 0x9e, 0xb3, 0xb3, 0xa0, - 0x8a, 0x77, 0x77, 0x88, 0x9a, 0x95, 0x83, 0x70, 0x66, 0x6b, 0x76, 0x7c, 0x77, 0x6a, 0x60, 0x5f, - 0x5f, 0x62, 0x71, 0x74, 0x73, 0x69, 0x6a, 0x73, 0x6a, 0x69, 0x6b, 0x77, 0x79, 0x75, 0x71, 0x6a, - 0x6c, 0x6b, 0x7a, 0x8e, 0x8b, 0x89, 0x82, 0x7d, 0x83, 0x8a, 0x93, 0x9e, 0x9e, 0x92, 0x89, 0x70, - 0x6c, 0x70, 0x67, 0x62, 0x56, 0x49, 0x48, 0x53, 0x62, 0x75, 0x82, 0x85, 0x89, 0x88, 0x7e, 0x84, - 0x8f, 0x95, 0x93, 0x85, 0x81, 0x7c, 0x7b, 0x7b, 0x7e, 0x86, 0x88, 0x86, 0x8c, 0x8d, 0x8e, 0x92, - 0x90, 0x8a, 0x79, 0x67, 0x65, 0x6b, 0x7d, 0x92, 0x9a, 0xa0, 0xa0, 0x91, 0x80, 0x71, 0x6a, 0x74, - 0x7e, 0x75, 0x72, 0x76, 0x79, 0x82, 0x8f, 0x94, 0x9c, 0x97, 0x88, 0x87, 0x7b, 0x76, 0x79, 0x74, - 0x6d, 0x66, 0x63, 0x69, 0x74, 0x80, 0x89, 0x90, 0x91, 0x95, 0x92, 0x82, 0x78, 0x7b, 0x8b, 0x91, - 0x85, 0x73, 0x63, 0x5d, 0x69, 0x7d, 0x84, 0x87, 0x7e, 0x71, 0x6b, 0x65, 0x75, 0x80, 0x74, 0x6c, - 0x62, 0x69, 0x6d, 0x6e, 0x77, 0x7b, 0x7b, 0x78, 0x7b, 0x75, 0x71, 0x72, 0x82, 0x98, 0x99, 0x90, - 0x8c, 0x8b, 0x8c, 0x8e, 0x89, 0x83, 0x85, 0x81, 0x83, 0x84, 0x81, 0x86, 0x7e, 0x76, 0x73, 0x63, - 0x59, 0x5d, 0x75, 0x8a, 0x96, 0xab, 0xb1, 0xa5, 0x91, 0x83, 0x92, 0x9f, 0x96, 0x86, 0x7d, 0x78, - 0x72, 0x78, 0x85, 0x8c, 0x88, 0x86, 0x88, 0x8c, 0x87, 0x87, 0x90, 0x8c, 0x85, 0x71, 0x68, 0x76, - 0x84, 0x90, 0x95, 0x8e, 0x8b, 0x86, 0x7b, 0x78, 0x7a, 0x7c, 0x82, 0x87, 0x7d, 0x76, 0x76, 0x7a, - 0x8c, 0x94, 0x95, 0xa7, 0x9f, 0x8c, 0x7c, 0x6d, 0x73, 0x72, 0x63, 0x5e, 0x5c, 0x5a, 0x67, 0x79, - 0x8a, 0x90, 0x90, 0x97, 0x9b, 0x90, 0x80, 0x79, 0x8e, 0x9e, 0xa0, 0x96, 0x8f, 0x8e, 0x8e, 0x90, - 0x90, 0x87, 0x77, 0x6a, 0x6f, 0x70, 0x79, 0x8b, 0x84, 0x77, 0x6c, 0x5e, 0x64, 0x6e, 0x80, 0x87, - 0x88, 0x95, 0x97, 0x8a, 0x76, 0x71, 0x7b, 0x90, 0x90, 0x86, 0x82, 0x7d, 0x83, 0x8c, 0x90, 0x87, - 0x7d, 0x82, 0x82, 0x87, 0x80, 0x79, 0x7b, 0x76, 0x73, 0x6b, 0x5e, 0x5f, 0x6a, 0x7b, 0x7d, 0x80, - 0x8b, 0x8d, 0x87, 0x82, 0x8f, 0xa6, 0x9e, 0x8f, 0x7a, 0x6a, 0x64, 0x6d, 0x7e, 0x85, 0x87, 0x93, - 0x95, 0x8a, 0x7e, 0x78, 0x80, 0x84, 0x75, 0x6c, 0x5d, 0x54, 0x62, 0x72, 0x80, 0x82, 0x7d, 0x80, - 0x7e, 0x78, 0x71, 0x65, 0x68, 0x75, 0x7c, 0x6c, 0x6a, 0x77, 0x80, 0x83, 0x83, 0x85, 0x89, 0x77, - 0x6f, 0x6e, 0x75, 0x7b, 0x6c, 0x5d, 0x51, 0x43, 0x47, 0x63, 0x76, 0x7c, 0x82, 0x94, 0x9a, 0x8c, - 0x7c, 0x70, 0x74, 0x7e, 0x7a, 0x77, 0x6e, 0x67, 0x6a, 0x6e, 0x76, 0x75, 0x69, 0x65, 0x6c, 0x77, - 0x6e, 0x6d, 0x7a, 0x81, 0x81, 0x76, 0x7b, 0x8f, 0x90, 0x8d, 0x84, 0x81, 0x7c, 0x73, 0x71, 0x78, - 0x84, 0x93, 0x95, 0x8b, 0x7c, 0x74, 0x82, 0x97, 0x9f, 0x9a, 0x92, 0x9c, 0xa0, 0x9c, 0x95, 0x8d, - 0x8e, 0x8a, 0x7d, 0x7b, 0x74, 0x6a, 0x71, 0x83, 0x90, 0x86, 0x85, 0x91, 0x92, 0x92, 0x8c, 0x93, - 0xa2, 0xa0, 0x94, 0x82, 0x83, 0x8f, 0x91, 0x91, 0x90, 0x8a, 0x86, 0x85, 0x88, 0x8f, 0x9c, 0xa5, - 0x99, 0x85, 0x6f, 0x5c, 0x65, 0x82, 0x93, 0x94, 0x93, 0x9d, 0x98, 0x8a, 0x7e, 0x72, 0x71, 0x76, - 0x79, 0x7b, 0x6a, 0x6d, 0x81, 0x8a, 0x8e, 0x8c, 0x96, 0x97, 0x8c, 0x82, 0x71, 0x6b, 0x6b, 0x6b, - 0x6b, 0x67, 0x67, 0x75, 0x82, 0x84, 0x83, 0x84, 0x86, 0x83, 0x83, 0x84, 0x87, 0x8d, 0x8b, 0x84, - 0x72, 0x66, 0x74, 0x86, 0x8a, 0x88, 0x83, 0x84, 0x7d, 0x7d, 0x73, 0x60, 0x63, 0x67, 0x63, 0x65, - 0x63, 0x71, 0x7e, 0x81, 0x80, 0x7a, 0x7c, 0x7b, 0x74, 0x79, 0x78, 0x78, 0x86, 0x8a, 0x83, 0x7e, - 0x86, 0x99, 0xa1, 0x99, 0x8e, 0x83, 0x79, 0x7e, 0x89, 0x8a, 0x91, 0x8d, 0x7e, 0x72, 0x65, 0x5a, - 0x66, 0x7e, 0x8d, 0x89, 0x84, 0x93, 0x8f, 0x88, 0x82, 0x7c, 0x91, 0x8c, 0x77, 0x6b, 0x60, 0x67, - 0x71, 0x71, 0x75, 0x74, 0x73, 0x74, 0x77, 0x76, 0x73, 0x73, 0x79, 0x7e, 0x77, 0x6d, 0x68, 0x70, - 0x80, 0x80, 0x7b, 0x78, 0x73, 0x6e, 0x6f, 0x75, 0x7b, 0x81, 0x77, 0x6d, 0x5e, 0x53, 0x67, 0x7c, - 0x83, 0x82, 0x8d, 0xa6, 0x98, 0x8d, 0x79, 0x6a, 0x6d, 0x63, 0x5b, 0x5a, 0x57, 0x60, 0x73, 0x80, - 0x85, 0x8a, 0x8f, 0x93, 0x8e, 0x8f, 0x8e, 0x83, 0x81, 0x88, 0x88, 0x84, 0x88, 0x94, 0x95, 0x8d, - 0x88, 0x82, 0x7d, 0x84, 0x8c, 0x88, 0x86, 0x81, 0x79, 0x76, 0x6e, 0x79, 0x99, 0x9f, 0x9d, 0x92, - 0x95, 0xa4, 0x94, 0x86, 0x7d, 0x77, 0x80, 0x81, 0x77, 0x74, 0x78, 0x86, 0x97, 0x9b, 0x9c, 0x9a, - 0x91, 0x89, 0x92, 0x94, 0x8a, 0x81, 0x7c, 0x81, 0x7d, 0x72, 0x78, 0x86, 0x91, 0x8d, 0x7e, 0x71, - 0x6b, 0x6b, 0x72, 0x81, 0x94, 0x9b, 0x80, 0x6b, 0x61, 0x69, 0x7c, 0x81, 0x80, 0x7e, 0x86, 0x95, - 0x94, 0x8f, 0x7c, 0x72, 0x71, 0x6c, 0x68, 0x65, 0x63, 0x68, 0x73, 0x87, 0x90, 0x94, 0x94, 0x8d, - 0x83, 0x7c, 0x7a, 0x7a, 0x83, 0x88, 0x86, 0x80, 0x7b, 0x86, 0x8b, 0x8c, 0x8a, 0x8e, 0x90, 0x87, - 0x85, 0x83, 0x84, 0x79, 0x67, 0x60, 0x5c, 0x68, 0x7d, 0x92, 0x96, 0x92, 0x9d, 0xac, 0xa4, 0x95, - 0x8e, 0x8d, 0x84, 0x76, 0x72, 0x77, 0x7e, 0x86, 0x8c, 0x8c, 0x8c, 0x8c, 0x8f, 0x8e, 0x8e, 0x87, - 0x73, 0x5f, 0x5d, 0x6b, 0x71, 0x6a, 0x7b, 0x8d, 0x8a, 0x81, 0x76, 0x75, 0x6f, 0x65, 0x67, 0x76, - 0x81, 0x7e, 0x72, 0x66, 0x69, 0x76, 0x85, 0x8f, 0x94, 0x95, 0x98, 0x9a, 0x8e, 0x8c, 0x81, 0x79, - 0x73, 0x6a, 0x65, 0x5e, 0x65, 0x7a, 0x8b, 0x97, 0x97, 0x90, 0x87, 0x7f, 0x7d, 0x80, 0x82, 0x8a, - 0x8c, 0x7e, 0x79, 0x78, 0x80, 0x84, 0x7b, 0x77, 0x72, 0x6c, 0x6c, 0x79, 0x81, 0x85, 0x82, 0x78, - 0x6e, 0x6b, 0x6a, 0x6f, 0x75, 0x83, 0x90, 0x8f, 0x99, 0xa0, 0x8b, 0x74, 0x66, 0x6e, 0x73, 0x68, - 0x61, 0x64, 0x68, 0x69, 0x6e, 0x7a, 0x84, 0x81, 0x8b, 0x87, 0x79, 0x71, 0x69, 0x63, 0x61, 0x62, - 0x60, 0x60, 0x6b, 0x79, 0x88, 0x82, 0x7c, 0x78, 0x75, 0x77, 0x7d, 0x8d, 0x8e, 0x7c, 0x6b, 0x71, - 0x7e, 0x86, 0x87, 0x87, 0x86, 0x84, 0x93, 0x9d, 0x90, 0x85, 0x77, 0x6b, 0x5d, 0x56, 0x62, 0x65, - 0x70, 0x8f, 0x99, 0x96, 0x91, 0x8f, 0x8f, 0x81, 0x74, 0x72, 0x74, 0x72, 0x77, 0x82, 0x87, 0x8e, - 0x8f, 0x93, 0x93, 0x93, 0x90, 0x87, 0x7e, 0x8c, 0x9a, 0x9e, 0x95, 0x83, 0x75, 0x73, 0x75, 0x8d, - 0x9c, 0xa4, 0xa4, 0x99, 0x9d, 0x9a, 0x85, 0x83, 0x81, 0x86, 0x8e, 0x79, 0x6c, 0x70, 0x7c, 0x88, - 0x87, 0x86, 0x8a, 0x86, 0x7e, 0x83, 0x89, 0x82, 0x7b, 0x6d, 0x6d, 0x77, 0x79, 0x7a, 0x84, 0x84, - 0x89, 0x8c, 0x8a, 0x88, 0x7e, 0x7c, 0x7d, 0x85, 0x8a, 0x84, 0x79, 0x7e, 0x87, 0x85, 0x80, 0x86, - 0x94, 0x94, 0xa2, 0xab, 0x94, 0x82, 0x76, 0x75, 0x6b, 0x5d, 0x5b, 0x5c, 0x6f, 0x84, 0x94, 0x9e, - 0x9b, 0x98, 0x93, 0x8e, 0x8c, 0x8f, 0x8a, 0x7c, 0x77, 0x81, 0x8f, 0x94, 0x93, 0x8a, 0x80, 0x79, - 0x7b, 0x7b, 0x78, 0x81, 0x82, 0x78, 0x68, 0x56, 0x55, 0x61, 0x6a, 0x86, 0x96, 0x91, 0x8a, 0x83, - 0x91, 0x8c, 0x74, 0x6b, 0x67, 0x66, 0x64, 0x63, 0x66, 0x6f, 0x7d, 0x88, 0x8f, 0x95, 0x99, 0x94, - 0x88, 0x82, 0x84, 0x84, 0x81, 0x74, 0x6e, 0x74, 0x76, 0x88, 0x9a, 0x97, 0x92, 0x8b, 0x7d, 0x74, - 0x6e, 0x72, 0x84, 0x85, 0x87, 0x88, 0x75, 0x6e, 0x74, 0x7b, 0x7b, 0x7a, 0x7b, 0x77, 0x7e, 0x7b, - 0x7a, 0x71, 0x66, 0x67, 0x5c, 0x56, 0x57, 0x5e, 0x74, 0x81, 0x85, 0x8a, 0x88, 0x86, 0x80, 0x74, - 0x70, 0x74, 0x6f, 0x69, 0x6a, 0x70, 0x76, 0x72, 0x6e, 0x68, 0x6a, 0x73, 0x75, 0x7d, 0x80, 0x77, - 0x6d, 0x6d, 0x6b, 0x63, 0x5b, 0x56, 0x62, 0x71, 0x7a, 0x8a, 0x89, 0x83, 0x91, 0x8d, 0x7e, 0x7e, - 0x7d, 0x76, 0x73, 0x6d, 0x6e, 0x78, 0x87, 0x8d, 0x8c, 0x8c, 0x90, 0x93, 0x8d, 0x8b, 0x87, 0x7d, - 0x6f, 0x63, 0x61, 0x70, 0x83, 0x99, 0xaf, 0xaa, 0x9c, 0x93, 0x8e, 0x8f, 0x8b, 0x89, 0x8e, 0x85, - 0x7c, 0x85, 0x89, 0x89, 0x92, 0x9a, 0x9b, 0x9c, 0x99, 0x9c, 0xa6, 0x9c, 0x93, 0x8a, 0x85, 0x82, - 0x74, 0x66, 0x63, 0x78, 0x97, 0xa2, 0xa2, 0xa2, 0x97, 0x83, 0x7c, 0x76, 0x7e, 0x89, 0x80, 0x88, - 0x88, 0x82, 0x82, 0x89, 0x8d, 0x84, 0x7d, 0x78, 0x74, 0x73, 0x79, 0x85, 0x84, 0x82, 0x7c, 0x79, - 0x70, 0x6d, 0x7e, 0x8c, 0x92, 0x94, 0x92, 0x95, 0x9f, 0x94, 0x86, 0x86, 0x84, 0x7c, 0x75, 0x6b, - 0x6d, 0x72, 0x76, 0x7c, 0x7a, 0x82, 0x8a, 0x8f, 0x96, 0x8d, 0x7c, 0x71, 0x6a, 0x64, 0x61, 0x66, - 0x6e, 0x7c, 0x83, 0x85, 0x89, 0x87, 0x83, 0x81, 0x81, 0x86, 0x8e, 0x8a, 0x88, 0x91, 0x89, 0x83, - 0x8a, 0x8f, 0x89, 0x80, 0x7d, 0x85, 0x89, 0x82, 0x7c, 0x77, 0x6a, 0x5d, 0x56, 0x4c, 0x52, 0x6c, - 0x89, 0x9d, 0x91, 0x85, 0x7b, 0x78, 0x77, 0x70, 0x73, 0x6a, 0x5d, 0x5f, 0x67, 0x73, 0x80, 0x88, - 0x88, 0x80, 0x78, 0x7a, 0x80, 0x7e, 0x80, 0x7c, 0x7d, 0x7e, 0x81, 0x82, 0x78, 0x7b, 0x91, 0x9f, - 0xa1, 0x9a, 0x91, 0x82, 0x75, 0x71, 0x76, 0x89, 0x89, 0x8a, 0x89, 0x71, 0x68, 0x6d, 0x81, 0x83, - 0x78, 0x76, 0x71, 0x6e, 0x6d, 0x71, 0x72, 0x6f, 0x68, 0x66, 0x64, 0x61, 0x74, 0x86, 0x8b, 0x86, - 0x78, 0x75, 0x73, 0x6f, 0x69, 0x72, 0x7e, 0x82, 0x8c, 0x8c, 0x85, 0x7c, 0x78, 0x7a, 0x75, 0x73, - 0x7c, 0x82, 0x88, 0x8a, 0x80, 0x7a, 0x73, 0x74, 0x70, 0x61, 0x60, 0x72, 0x83, 0x8d, 0x8f, 0x8d, - 0x8c, 0x88, 0x87, 0x87, 0x8a, 0x89, 0x86, 0x84, 0x82, 0x83, 0x8d, 0x94, 0x8e, 0x7a, 0x74, 0x79, - 0x7e, 0x84, 0x88, 0x85, 0x7d, 0x75, 0x79, 0x7d, 0x72, 0x7c, 0x92, 0xa5, 0xa8, 0x97, 0x8c, 0x85, - 0x87, 0x82, 0x89, 0x8c, 0x80, 0x78, 0x6e, 0x6b, 0x75, 0x84, 0x92, 0x90, 0x85, 0x82, 0x87, 0x88, - 0x88, 0x84, 0x78, 0x75, 0x6f, 0x6c, 0x68, 0x6a, 0x83, 0x94, 0x9d, 0x99, 0x89, 0x7c, 0x74, 0x74, - 0x77, 0x82, 0x87, 0x91, 0xa0, 0x90, 0x7e, 0x7a, 0x82, 0x90, 0x85, 0x80, 0x7b, 0x71, 0x6c, 0x72, - 0x78, 0x7a, 0x78, 0x70, 0x6f, 0x63, 0x65, 0x82, 0x90, 0x98, 0x91, 0x85, 0x87, 0x86, 0x7e, 0x80, - 0x86, 0x86, 0x85, 0x7e, 0x78, 0x7d, 0x81, 0x83, 0x81, 0x73, 0x71, 0x77, 0x80, 0x8e, 0x87, 0x77, - 0x74, 0x7d, 0x8d, 0x85, 0x77, 0x7b, 0x82, 0x8a, 0x94, 0x92, 0x90, 0x8c, 0x87, 0x8d, 0x96, 0x97, - 0x98, 0x95, 0x87, 0x7a, 0x7c, 0x89, 0x90, 0x84, 0x79, 0x7d, 0x81, 0x83, 0x88, 0x81, 0x73, 0x68, - 0x5d, 0x5f, 0x61, 0x6a, 0x80, 0x91, 0x96, 0x81, 0x6e, 0x66, 0x6d, 0x77, 0x71, 0x73, 0x74, 0x78, - 0x7d, 0x75, 0x72, 0x76, 0x7a, 0x82, 0x87, 0x86, 0x85, 0x84, 0x86, 0x8c, 0x8b, 0x87, 0x89, 0x87, - 0x80, 0x7b, 0x85, 0x92, 0x9a, 0x9d, 0x97, 0x8d, 0x86, 0x85, 0x85, 0x85, 0x86, 0x87, 0x8d, 0x8e, - 0x7d, 0x79, 0x79, 0x81, 0x80, 0x6f, 0x6d, 0x6c, 0x6b, 0x6e, 0x6c, 0x69, 0x73, 0x81, 0x8f, 0x90, - 0x84, 0x7b, 0x7a, 0x7c, 0x81, 0x83, 0x7c, 0x75, 0x6f, 0x67, 0x6b, 0x76, 0x7c, 0x7c, 0x78, 0x70, - 0x6c, 0x6a, 0x6d, 0x6f, 0x6f, 0x70, 0x77, 0x86, 0x85, 0x73, 0x67, 0x60, 0x67, 0x6d, 0x67, 0x6c, - 0x6d, 0x6a, 0x68, 0x62, 0x63, 0x68, 0x6f, 0x76, 0x76, 0x78, 0x84, 0x91, 0x97, 0x91, 0x8a, 0x85, - 0x83, 0x7b, 0x79, 0x81, 0x85, 0x82, 0x83, 0x83, 0x7d, 0x79, 0x78, 0x7e, 0x83, 0x81, 0x83, 0x88, - 0x96, 0x95, 0x8c, 0x89, 0x89, 0x91, 0x8b, 0x81, 0x81, 0x7e, 0x7b, 0x79, 0x76, 0x78, 0x7e, 0x83, - 0x82, 0x7c, 0x79, 0x7a, 0x7e, 0x7e, 0x7a, 0x7a, 0x80, 0x89, 0x8b, 0x86, 0x86, 0x86, 0x85, 0x88, - 0x90, 0x90, 0x87, 0x80, 0x81, 0x81, 0x86, 0x8a, 0x93, 0x9b, 0x91, 0x82, 0x7a, 0x7b, 0x86, 0x7e, - 0x7a, 0x81, 0x84, 0x83, 0x7c, 0x73, 0x70, 0x74, 0x7d, 0x8a, 0x8d, 0x8d, 0x8a, 0x8a, 0x87, 0x83, - 0x83, 0x82, 0x83, 0x7b, 0x7c, 0x8d, 0x9d, 0xa7, 0xa9, 0xa3, 0x94, 0x86, 0x84, 0x85, 0x8b, 0x90, - 0x8d, 0x8f, 0x95, 0x8a, 0x7e, 0x79, 0x7b, 0x8a, 0x84, 0x7d, 0x81, 0x81, 0x7e, 0x7b, 0x7b, 0x82, - 0x8b, 0x8e, 0x8c, 0x8a, 0x88, 0x88, 0x89, 0x88, 0x88, 0x86, 0x81, 0x7b, 0x71, 0x6d, 0x70, 0x73, - 0x73, 0x74, 0x76, 0x78, 0x78, 0x7e, 0x87, 0x84, 0x80, 0x78, 0x78, 0x80, 0x81, 0x81, 0x7c, 0x75, - 0x74, 0x71, 0x73, 0x78, 0x78, 0x74, 0x6d, 0x68, 0x68, 0x70, 0x74, 0x76, 0x7c, 0x83, 0x87, 0x86, - 0x80, 0x78, 0x74, 0x76, 0x7d, 0x83, 0x84, 0x85, 0x82, 0x7d, 0x7d, 0x7c, 0x7b, 0x78, 0x77, 0x76, - 0x7a, 0x84, 0x88, 0x8a, 0x8a, 0x85, 0x7a, 0x70, 0x6e, 0x6e, 0x71, 0x70, 0x6e, 0x6a, 0x69, 0x67, - 0x65, 0x6a, 0x73, 0x7b, 0x7d, 0x7c, 0x7c, 0x79, 0x77, 0x75, 0x78, 0x7d, 0x7b, 0x74, 0x6d, 0x6c, - 0x6c, 0x6c, 0x6b, 0x6d, 0x71, 0x6c, 0x65, 0x66, 0x67, 0x6b, 0x71, 0x73, 0x74, 0x74, 0x73, 0x75, - 0x7a, 0x82, 0x8a, 0x89, 0x85, 0x82, 0x7d, 0x7c, 0x7d, 0x7b, 0x7e, 0x7e, 0x81, 0x87, 0x8c, 0x91, - 0x8f, 0x8d, 0x8c, 0x8a, 0x86, 0x87, 0x89, 0x88, 0x8c, 0x8e, 0x8d, 0x87, 0x80, 0x7c, 0x7a, 0x7d, - 0x85, 0x88, 0x8c, 0x91, 0x8d, 0x87, 0x84, 0x80, 0x81, 0x82, 0x82, 0x85, 0x89, 0x8b, 0x8d, 0x90, - 0x92, 0x90, 0x8b, 0x87, 0x89, 0x89, 0x8c, 0x8e, 0x8e, 0x89, 0x87, 0x84, 0x83, 0x84, 0x84, 0x85, - 0x83, 0x82, 0x80, 0x7d, 0x7c, 0x82, 0x8a, 0x8e, 0x8b, 0x88, 0x86, 0x88, 0x8b, 0x8a, 0x87, 0x84, - 0x84, 0x81, 0x7b, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7b, 0x7b, 0x79, 0x7b, 0x84, 0x8d, 0x90, 0x8f, - 0x90, 0x8d, 0x85, 0x82, 0x84, 0x85, 0x81, 0x7d, 0x82, 0x85, 0x89, 0x8b, 0x89, 0x86, 0x85, 0x85, - 0x7c, 0x78, 0x7b, 0x82, 0x8a, 0x8e, 0x8b, 0x80, 0x72, 0x6d, 0x6e, 0x71, 0x71, 0x72, 0x76, 0x79, - 0x76, 0x75, 0x76, 0x74, 0x74, 0x7a, 0x81, 0x85, 0x86, 0x8c, 0x90, 0x90, 0x93, 0x92, 0x8c, 0x81, - 0x7a, 0x79, 0x7a, 0x79, 0x76, 0x72, 0x70, 0x6e, 0x70, 0x70, 0x70, 0x72, 0x73, 0x77, 0x77, 0x76, - 0x75, 0x75, 0x76, 0x76, 0x74, 0x6e, 0x6d, 0x70, 0x71, 0x6f, 0x70, 0x72, 0x73, 0x72, 0x71, 0x75, - 0x78, 0x78, 0x7b, 0x7e, 0x7e, 0x80, 0x81, 0x86, 0x8c, 0x93, 0x97, 0x98, 0x99, 0x94, 0x8e, 0x8a, - 0x8c, 0x8e, 0x8a, 0x88, 0x8b, 0x8c, 0x90, 0x93, 0x8f, 0x8a, 0x85, 0x7d, 0x78, 0x78, 0x79, 0x7e, - 0x80, 0x7b, 0x77, 0x71, 0x6b, 0x6a, 0x6c, 0x73, 0x79, 0x7b, 0x80, 0x83, 0x7e, 0x78, 0x78, 0x74, - 0x73, 0x72, 0x72, 0x73, 0x74, 0x78, 0x7a, 0x7a, 0x7b, 0x7e, 0x7c, 0x74, 0x72, 0x76, 0x7b, 0x7d, - 0x7b, 0x79, 0x76, 0x71, 0x71, 0x75, 0x79, 0x77, 0x79, 0x7d, 0x80, 0x82, 0x83, 0x85, 0x84, 0x82, - 0x83, 0x83, 0x83, 0x83, 0x87, 0x86, 0x84, 0x88, 0x8a, 0x85, 0x7e, 0x82, 0x87, 0x82, 0x7d, 0x7a, - 0x78, 0x74, 0x75, 0x7c, 0x83, 0x8a, 0x8f, 0x94, 0x97, 0x94, 0x8f, 0x8a, 0x88, 0x84, 0x81, 0x7d, - 0x7c, 0x7d, 0x80, 0x82, 0x7e, 0x7d, 0x7c, 0x78, 0x76, 0x7d, 0x86, 0x89, 0x86, 0x84, 0x7e, 0x76, - 0x72, 0x71, 0x73, 0x75, 0x79, 0x7c, 0x7e, 0x7c, 0x78, 0x78, 0x76, 0x74, 0x76, 0x78, 0x7a, 0x80, - 0x87, 0x90, 0x94, 0x91, 0x92, 0x91, 0x8b, 0x85, 0x7e, 0x7e, 0x81, 0x7d, 0x7b, 0x78, 0x75, 0x72, - 0x71, 0x76, 0x7e, 0x82, 0x82, 0x83, 0x84, 0x86, 0x87, 0x89, 0x88, 0x82, 0x7b, 0x78, 0x7b, 0x7e, - 0x80, 0x7c, 0x7b, 0x7e, 0x80, 0x7e, 0x7a, 0x7b, 0x7b, 0x78, 0x7a, 0x7d, 0x7a, 0x76, 0x76, 0x78, - 0x7e, 0x7d, 0x7e, 0x86, 0x8b, 0x8c, 0x8a, 0x8a, 0x8a, 0x86, 0x84, 0x88, 0x8e, 0x8f, 0x90, 0x91, - 0x8c, 0x8a, 0x8b, 0x87, 0x85, 0x86, 0x8a, 0x88, 0x7e, 0x78, 0x74, 0x6c, 0x66, 0x6a, 0x72, 0x74, - 0x76, 0x78, 0x7d, 0x81, 0x7e, 0x7b, 0x78, 0x73, 0x6f, 0x6e, 0x6e, 0x72, 0x78, 0x80, 0x84, 0x84, - 0x8b, 0x90, 0x8d, 0x8f, 0x93, 0x96, 0x91, 0x89, 0x88, 0x85, 0x82, 0x81, 0x83, 0x87, 0x86, 0x89, - 0x8b, 0x8a, 0x8a, 0x8c, 0x8a, 0x86, 0x83, 0x80, 0x7c, 0x7b, 0x80, 0x87, 0x88, 0x84, 0x80, 0x7e, - 0x7b, 0x77, 0x76, 0x72, 0x6e, 0x68, 0x68, 0x6c, 0x68, 0x67, 0x68, 0x6c, 0x77, 0x84, 0x8d, 0x90, - 0x8d, 0x8e, 0x8b, 0x89, 0x86, 0x80, 0x78, 0x76, 0x7e, 0x82, 0x83, 0x82, 0x7c, 0x7a, 0x77, 0x75, - 0x78, 0x7c, 0x7e, 0x80, 0x7e, 0x7d, 0x78, 0x70, 0x6e, 0x71, 0x71, 0x73, 0x71, 0x71, 0x72, 0x77, - 0x7a, 0x78, 0x77, 0x6f, 0x6a, 0x6d, 0x76, 0x82, 0x85, 0x89, 0x8e, 0x8d, 0x8f, 0x8e, 0x8b, 0x86, - 0x82, 0x84, 0x81, 0x7b, 0x77, 0x74, 0x73, 0x70, 0x71, 0x74, 0x75, 0x76, 0x79, 0x7d, 0x82, 0x85, - 0x84, 0x81, 0x7b, 0x76, 0x70, 0x6c, 0x6f, 0x76, 0x7c, 0x7a, 0x76, 0x76, 0x70, 0x70, 0x75, 0x7b, - 0x7d, 0x74, 0x71, 0x72, 0x70, 0x70, 0x75, 0x80, 0x87, 0x8a, 0x91, 0x91, 0x8d, 0x8e, 0x8f, 0x8e, - 0x87, 0x81, 0x7c, 0x7e, 0x8a, 0x94, 0x9a, 0x99, 0x94, 0x91, 0x8e, 0x8e, 0x92, 0x92, 0x8c, 0x87, - 0x83, 0x84, 0x80, 0x7b, 0x7d, 0x80, 0x82, 0x86, 0x8b, 0x8c, 0x86, 0x85, 0x87, 0x86, 0x84, 0x7e, - 0x7d, 0x79, 0x78, 0x80, 0x84, 0x8b, 0x8f, 0x92, 0x94, 0x90, 0x8d, 0x8c, 0x8c, 0x8d, 0x8a, 0x84, - 0x7d, 0x7c, 0x82, 0x82, 0x82, 0x82, 0x7e, 0x7a, 0x77, 0x7b, 0x86, 0x8a, 0x87, 0x85, 0x7c, 0x78, - 0x7b, 0x85, 0x8d, 0x92, 0x93, 0x8e, 0x85, 0x7e, 0x7d, 0x82, 0x7d, 0x7b, 0x7a, 0x6f, 0x69, 0x68, - 0x6a, 0x6d, 0x6e, 0x73, 0x7b, 0x82, 0x88, 0x8b, 0x8a, 0x88, 0x86, 0x84, 0x7d, 0x75, 0x72, 0x72, - 0x77, 0x7b, 0x80, 0x84, 0x80, 0x7c, 0x7c, 0x7c, 0x83, 0x8a, 0x93, 0x92, 0x89, 0x83, 0x81, 0x82, - 0x82, 0x86, 0x89, 0x87, 0x85, 0x85, 0x83, 0x86, 0x87, 0x87, 0x83, 0x78, 0x72, 0x72, 0x75, 0x7e, - 0x8b, 0x93, 0x92, 0x90, 0x8f, 0x8a, 0x86, 0x82, 0x7d, 0x78, 0x6d, 0x66, 0x6a, 0x6d, 0x74, 0x72, - 0x6d, 0x70, 0x75, 0x77, 0x76, 0x75, 0x78, 0x78, 0x74, 0x70, 0x6d, 0x6a, 0x66, 0x67, 0x6d, 0x71, - 0x70, 0x6d, 0x6c, 0x67, 0x64, 0x67, 0x69, 0x69, 0x69, 0x64, 0x63, 0x65, 0x68, 0x6c, 0x6f, 0x72, - 0x79, 0x79, 0x77, 0x75, 0x76, 0x79, 0x7b, 0x7e, 0x7a, 0x74, 0x77, 0x81, 0x8d, 0x91, 0x91, 0x90, - 0x8b, 0x84, 0x82, 0x87, 0x8a, 0x85, 0x82, 0x7e, 0x75, 0x74, 0x79, 0x83, 0x84, 0x7d, 0x7b, 0x7e, - 0x80, 0x80, 0x84, 0x89, 0x8a, 0x8a, 0x87, 0x7e, 0x79, 0x78, 0x79, 0x80, 0x89, 0x8f, 0x91, 0x90, - 0x91, 0x8f, 0x8c, 0x8c, 0x8e, 0x91, 0x88, 0x7e, 0x82, 0x89, 0x8d, 0x89, 0x8a, 0x8e, 0x8d, 0x89, - 0x8a, 0x8a, 0x8d, 0x8f, 0x90, 0x8d, 0x85, 0x7d, 0x7e, 0x86, 0x8f, 0x97, 0x98, 0x93, 0x8d, 0x89, - 0x88, 0x8b, 0x88, 0x83, 0x7b, 0x6f, 0x6e, 0x75, 0x7a, 0x83, 0x84, 0x86, 0x8d, 0x92, 0x91, 0x8c, - 0x88, 0x87, 0x88, 0x87, 0x82, 0x81, 0x81, 0x81, 0x86, 0x88, 0x87, 0x82, 0x7b, 0x7c, 0x80, 0x7e, - 0x80, 0x81, 0x82, 0x80, 0x79, 0x7a, 0x7c, 0x7b, 0x77, 0x72, 0x75, 0x7c, 0x79, 0x74, 0x74, 0x79, - 0x7a, 0x79, 0x76, 0x70, 0x6f, 0x75, 0x80, 0x8c, 0x8f, 0x8f, 0x8c, 0x8a, 0x88, 0x87, 0x87, 0x84, - 0x7c, 0x78, 0x70, 0x6d, 0x72, 0x78, 0x7b, 0x76, 0x70, 0x71, 0x75, 0x78, 0x7d, 0x81, 0x83, 0x82, - 0x7c, 0x76, 0x6f, 0x6d, 0x6d, 0x70, 0x74, 0x79, 0x7d, 0x7d, 0x7a, 0x7a, 0x7d, 0x82, 0x82, 0x83, - 0x7e, 0x75, 0x78, 0x84, 0x8d, 0x91, 0x91, 0x93, 0x96, 0x92, 0x8f, 0x8d, 0x87, 0x85, 0x86, 0x86, - 0x83, 0x7c, 0x7b, 0x82, 0x89, 0x8c, 0x8d, 0x88, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x7a, 0x74, 0x6e, - 0x69, 0x6c, 0x6f, 0x6e, 0x6c, 0x6c, 0x72, 0x79, 0x79, 0x77, 0x75, 0x77, 0x77, 0x75, 0x6f, 0x6a, - 0x6c, 0x6f, 0x75, 0x7e, 0x83, 0x81, 0x7e, 0x7e, 0x83, 0x83, 0x7a, 0x76, 0x79, 0x7b, 0x7b, 0x7c, - 0x80, 0x7e, 0x79, 0x71, 0x70, 0x75, 0x74, 0x73, 0x75, 0x75, 0x79, 0x7a, 0x79, 0x78, 0x76, 0x78, - 0x7b, 0x82, 0x87, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, 0x88, 0x88, 0x84, 0x7b, 0x72, 0x6e, 0x70, 0x78, - 0x83, 0x8b, 0x88, 0x84, 0x87, 0x8c, 0x90, 0x91, 0x8f, 0x8c, 0x89, 0x85, 0x82, 0x81, 0x81, 0x80, - 0x81, 0x83, 0x83, 0x82, 0x81, 0x83, 0x84, 0x85, 0x86, 0x84, 0x81, 0x7c, 0x7a, 0x79, 0x7c, 0x7e, - 0x7c, 0x80, 0x86, 0x89, 0x87, 0x85, 0x82, 0x82, 0x80, 0x7b, 0x78, 0x74, 0x73, 0x7b, 0x89, 0x94, - 0x96, 0x93, 0x91, 0x8e, 0x8e, 0x8b, 0x86, 0x83, 0x82, 0x80, 0x81, 0x83, 0x84, 0x84, 0x81, 0x7d, - 0x80, 0x83, 0x84, 0x86, 0x85, 0x85, 0x87, 0x84, 0x80, 0x7c, 0x79, 0x76, 0x75, 0x77, 0x7c, 0x7e, - 0x7d, 0x7e, 0x80, 0x82, 0x7c, 0x77, 0x78, 0x78, 0x76, 0x76, 0x78, 0x7b, 0x7a, 0x77, 0x76, 0x79, - 0x7c, 0x7e, 0x82, 0x84, 0x83, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x83, 0x87, 0x8a, 0x8a, 0x8a, - 0x8b, 0x8a, 0x88, 0x87, 0x86, 0x81, 0x77, 0x73, 0x72, 0x71, 0x74, 0x78, 0x79, 0x76, 0x79, 0x7e, - 0x83, 0x84, 0x83, 0x82, 0x7c, 0x71, 0x6b, 0x6a, 0x6e, 0x76, 0x7d, 0x86, 0x88, 0x87, 0x89, 0x8b, - 0x8d, 0x8d, 0x89, 0x88, 0x8a, 0x8c, 0x8d, 0x8f, 0x8f, 0x92, 0x93, 0x92, 0x96, 0x99, 0x96, 0x90, - 0x8c, 0x8a, 0x89, 0x84, 0x81, 0x80, 0x79, 0x77, 0x7d, 0x85, 0x8a, 0x8c, 0x8b, 0x89, 0x82, 0x7b, - 0x77, 0x77, 0x73, 0x6c, 0x6a, 0x6e, 0x73, 0x79, 0x7c, 0x7a, 0x76, 0x77, 0x7a, 0x7d, 0x81, 0x80, - 0x7c, 0x79, 0x78, 0x76, 0x75, 0x73, 0x73, 0x73, 0x74, 0x76, 0x77, 0x79, 0x7b, 0x7c, 0x7a, 0x74, - 0x71, 0x71, 0x70, 0x70, 0x6f, 0x6d, 0x69, 0x63, 0x66, 0x6e, 0x74, 0x73, 0x70, 0x6d, 0x6d, 0x70, - 0x6c, 0x65, 0x62, 0x65, 0x6e, 0x7b, 0x84, 0x89, 0x89, 0x86, 0x86, 0x87, 0x89, 0x88, 0x84, 0x81, - 0x81, 0x7a, 0x78, 0x78, 0x76, 0x79, 0x80, 0x81, 0x82, 0x85, 0x86, 0x86, 0x83, 0x82, 0x7e, 0x72, - 0x6a, 0x6a, 0x74, 0x7a, 0x7b, 0x7e, 0x85, 0x88, 0x89, 0x89, 0x87, 0x80, 0x78, 0x7b, 0x7e, 0x7b, - 0x79, 0x7d, 0x84, 0x88, 0x8a, 0x89, 0x8c, 0x91, 0x94, 0x93, 0x8f, 0x8f, 0x8e, 0x8b, 0x8b, 0x8d, - 0x8b, 0x87, 0x89, 0x91, 0x98, 0x9c, 0x9c, 0x99, 0x94, 0x8a, 0x87, 0x81, 0x78, 0x7d, 0x7c, 0x79, - 0x7a, 0x7c, 0x7e, 0x7d, 0x79, 0x7a, 0x83, 0x87, 0x86, 0x84, 0x82, 0x82, 0x78, 0x6d, 0x6c, 0x74, - 0x7c, 0x82, 0x84, 0x84, 0x89, 0x87, 0x85, 0x87, 0x8e, 0x91, 0x8d, 0x88, 0x8f, 0x91, 0x8d, 0x87, - 0x84, 0x86, 0x81, 0x7a, 0x7a, 0x7d, 0x79, 0x81, 0x89, 0x89, 0x84, 0x7b, 0x75, 0x70, 0x70, 0x79, - 0x82, 0x85, 0x89, 0x8c, 0x8e, 0x8e, 0x88, 0x81, 0x7c, 0x79, 0x71, 0x6e, 0x70, 0x79, 0x7c, 0x7b, - 0x7d, 0x7e, 0x78, 0x72, 0x72, 0x76, 0x78, 0x81, 0x86, 0x82, 0x7a, 0x76, 0x74, 0x70, 0x71, 0x76, - 0x77, 0x7d, 0x8d, 0x92, 0x95, 0x98, 0x93, 0x8d, 0x8c, 0x83, 0x7e, 0x86, 0x8c, 0x92, 0x97, 0x98, - 0x96, 0x96, 0x98, 0x95, 0x8c, 0x86, 0x8a, 0x87, 0x7d, 0x79, 0x7b, 0x7c, 0x7a, 0x83, 0x89, 0x8a, - 0x88, 0x83, 0x85, 0x85, 0x86, 0x84, 0x78, 0x76, 0x72, 0x60, 0x5e, 0x5d, 0x67, 0x71, 0x75, 0x76, - 0x76, 0x72, 0x6e, 0x6f, 0x6e, 0x6c, 0x6a, 0x64, 0x60, 0x61, 0x62, 0x62, 0x69, 0x6c, 0x6b, 0x73, - 0x77, 0x7a, 0x81, 0x7d, 0x79, 0x79, 0x73, 0x75, 0x7a, 0x6e, 0x6e, 0x6f, 0x6b, 0x6c, 0x72, 0x70, - 0x6c, 0x68, 0x67, 0x66, 0x6c, 0x67, 0x6e, 0x7b, 0x77, 0x7b, 0x80, 0x7d, 0x84, 0x8a, 0x8c, 0x8b, - 0x8a, 0x8b, 0x8b, 0x89, 0x8b, 0x85, 0x7b, 0x80, 0x75, 0x6f, 0x81, 0x86, 0x88, 0x8b, 0x87, 0x84, - 0x87, 0x8e, 0x91, 0x8a, 0x7b, 0x71, 0x70, 0x73, 0x76, 0x78, 0x75, 0x76, 0x84, 0x89, 0x8a, 0x8b, - 0x9a, 0xa1, 0x9a, 0x93, 0x8e, 0x7e, 0x89, 0x93, 0x8b, 0x94, 0x9a, 0x98, 0x93, 0x8c, 0x88, 0x87, - 0x84, 0x87, 0x86, 0x85, 0x89, 0x8d, 0x8b, 0x8d, 0x94, 0x9c, 0x99, 0x91, 0x8f, 0x8b, 0x86, 0x84, - 0x88, 0x8a, 0x87, 0x7d, 0x78, 0x85, 0x85, 0x74, 0x7e, 0x86, 0x8d, 0x8b, 0x87, 0x88, 0x8a, 0x89, - 0x87, 0x81, 0x74, 0x6a, 0x66, 0x63, 0x75, 0x86, 0x8a, 0x82, 0x7b, 0x7c, 0x7a, 0x75, 0x76, 0x7c, - 0x84, 0x8d, 0x7e, 0x74, 0x76, 0x6f, 0x65, 0x62, 0x6b, 0x6f, 0x6b, 0x67, 0x6b, 0x6e, 0x6a, 0x73, - 0x82, 0x7e, 0x79, 0x79, 0x87, 0x8e, 0x91, 0x8f, 0x86, 0x7d, 0x86, 0x89, 0x84, 0x85, 0x89, 0x89, - 0x83, 0x78, 0x72, 0x77, 0x77, 0x7a, 0x7e, 0x88, 0x85, 0x85, 0x8b, 0x86, 0x80, 0x7b, 0x78, 0x72, - 0x65, 0x68, 0x6d, 0x6f, 0x78, 0x7b, 0x71, 0x7a, 0x86, 0x89, 0x89, 0x81, 0x82, 0x89, 0x93, 0x8f, - 0x8b, 0x8c, 0x88, 0x8e, 0x91, 0x86, 0x8b, 0x8f, 0x8a, 0x87, 0x86, 0x8a, 0x8e, 0x8e, 0x8b, 0x87, - 0x87, 0x80, 0x81, 0x8c, 0x9e, 0x9c, 0x8f, 0x7d, 0x7a, 0x74, 0x6f, 0x7a, 0x7a, 0x71, 0x66, 0x62, - 0x70, 0x7c, 0x80, 0x81, 0x75, 0x6e, 0x6c, 0x70, 0x79, 0x76, 0x7a, 0x7d, 0x78, 0x6d, 0x6a, 0x71, - 0x78, 0x7e, 0x7c, 0x75, 0x6f, 0x72, 0x72, 0x71, 0x74, 0x74, 0x7c, 0x7d, 0x83, 0x80, 0x74, 0x76, - 0x71, 0x70, 0x6c, 0x65, 0x67, 0x6b, 0x64, 0x5a, 0x5e, 0x62, 0x70, 0x7d, 0x7a, 0x75, 0x72, 0x6e, - 0x72, 0x84, 0x8d, 0x8b, 0x8d, 0x8f, 0x80, 0x77, 0x7e, 0x8e, 0x8f, 0x84, 0x7e, 0x92, 0x98, 0x8c, - 0x87, 0x83, 0x7b, 0x73, 0x7b, 0x8a, 0x85, 0x82, 0x87, 0x8a, 0x89, 0x74, 0x66, 0x76, 0x8f, 0x90, - 0x84, 0x71, 0x79, 0x96, 0x9c, 0x8d, 0x83, 0x89, 0x88, 0x7e, 0x89, 0x9d, 0x98, 0x93, 0x8e, 0x89, - 0x83, 0x7b, 0x7c, 0x88, 0x84, 0x83, 0x84, 0x87, 0x92, 0x91, 0x8a, 0x99, 0x97, 0x93, 0x99, 0x85, - 0x7f, 0x85, 0x80, 0x80, 0x76, 0x79, 0x87, 0x89, 0x7d, 0x6a, 0x6b, 0x81, 0x91, 0x93, 0x8a, 0x7e, - 0x6f, 0x6e, 0x74, 0x70, 0x7d, 0x88, 0x82, 0x80, 0x79, 0x6a, 0x6f, 0x72, 0x76, 0x7d, 0x7a, 0x75, - 0x7c, 0x84, 0x83, 0x7d, 0x7a, 0x81, 0x81, 0x89, 0x8c, 0x85, 0x8a, 0x81, 0x73, 0x67, 0x65, 0x66, - 0x5b, 0x5d, 0x6a, 0x72, 0x7e, 0x8d, 0x92, 0x88, 0x82, 0x8b, 0x92, 0x94, 0x8c, 0x86, 0x8a, 0x88, - 0x91, 0x93, 0x85, 0x7c, 0x83, 0x7b, 0x75, 0x7c, 0x80, 0x86, 0x84, 0x86, 0x85, 0x81, 0x7c, 0x77, - 0x83, 0x88, 0x88, 0x85, 0x85, 0x80, 0x6d, 0x77, 0x8d, 0x88, 0x7e, 0x79, 0x74, 0x79, 0x85, 0x8e, - 0x91, 0x8c, 0x8d, 0x97, 0x94, 0x96, 0x8b, 0x93, 0xa9, 0xa3, 0x99, 0x92, 0x83, 0x76, 0x6d, 0x7b, - 0x85, 0x89, 0x88, 0x8e, 0x89, 0x7e, 0x82, 0x81, 0x8d, 0x94, 0x85, 0x80, 0x7c, 0x73, 0x6f, 0x72, - 0x7a, 0x78, 0x79, 0x7b, 0x7a, 0x76, 0x7d, 0x7d, 0x76, 0x6f, 0x6c, 0x6c, 0x67, 0x63, 0x72, 0x71, - 0x72, 0x7e, 0x7b, 0x66, 0x5d, 0x75, 0x86, 0x80, 0x73, 0x72, 0x6c, 0x67, 0x64, 0x69, 0x78, 0x78, - 0x71, 0x7d, 0x7e, 0x6e, 0x59, 0x54, 0x5c, 0x5b, 0x5e, 0x64, 0x5f, 0x54, 0x53, 0x5f, 0x67, 0x7a, - 0x7e, 0x76, 0x70, 0x81, 0x87, 0x80, 0x7e, 0x83, 0x80, 0x77, 0x78, 0x88, 0x84, 0x85, 0x92, 0x97, - 0x8e, 0x81, 0x8d, 0x89, 0x8b, 0x8a, 0x8e, 0x8c, 0x85, 0x83, 0x84, 0x7e, 0x8b, 0x8c, 0x84, 0x7a, - 0x72, 0x6d, 0x6e, 0x73, 0x6e, 0x6e, 0x79, 0x87, 0x94, 0x95, 0x93, 0x90, 0x89, 0x8f, 0x96, 0xa1, - 0xa3, 0xa1, 0x92, 0x84, 0x86, 0x81, 0x81, 0x88, 0x88, 0x82, 0x88, 0x93, 0x93, 0x8a, 0x7c, 0x78, - 0x8b, 0x97, 0xa4, 0xae, 0xa3, 0x98, 0x8c, 0x83, 0x7c, 0x74, 0x7d, 0x89, 0x82, 0x7d, 0x83, 0x83, - 0x7e, 0x87, 0x8b, 0x83, 0x76, 0x78, 0x81, 0x87, 0x81, 0x80, 0x84, 0x76, 0x6a, 0x6f, 0x71, 0x75, - 0x80, 0x82, 0x81, 0x79, 0x7b, 0x80, 0x7c, 0x7c, 0x80, 0x80, 0x83, 0x8e, 0x8e, 0x79, 0x7c, 0x78, - 0x7c, 0x73, 0x68, 0x6d, 0x6c, 0x6e, 0x6e, 0x66, 0x5d, 0x6b, 0x8b, 0x8e, 0x7e, 0x76, 0x80, 0x81, - 0x87, 0x91, 0x8d, 0x84, 0x80, 0x7c, 0x83, 0x95, 0x97, 0x9f, 0x9c, 0x84, 0x85, 0x81, 0x7a, 0x82, - 0x80, 0x85, 0x84, 0x7c, 0x88, 0x99, 0x96, 0x8f, 0x8b, 0x84, 0x76, 0x6b, 0x77, 0x83, 0x86, 0x87, - 0x83, 0x7c, 0x79, 0x8a, 0x91, 0x90, 0x87, 0x84, 0x9a, 0x96, 0x88, 0x85, 0x7a, 0x6f, 0x70, 0x74, - 0x84, 0x8c, 0x80, 0x7e, 0x85, 0x7b, 0x81, 0x85, 0x81, 0x77, 0x80, 0x83, 0x7b, 0x7c, 0x6e, 0x6e, - 0x75, 0x72, 0x70, 0x72, 0x7d, 0x84, 0x8d, 0x8c, 0x69, 0x5c, 0x68, 0x6f, 0x77, 0x76, 0x75, 0x76, - 0x70, 0x6d, 0x7b, 0x7e, 0x6b, 0x5c, 0x5c, 0x66, 0x5c, 0x56, 0x63, 0x69, 0x6a, 0x60, 0x5b, 0x68, - 0x6b, 0x6a, 0x70, 0x77, 0x82, 0x9c, 0x91, 0x74, 0x73, 0x5b, 0x50, 0x59, 0x5b, 0x66, 0x6e, 0x69, - 0x73, 0x7c, 0x79, 0x73, 0x7b, 0x89, 0x84, 0x83, 0x93, 0x9b, 0x9b, 0x9a, 0x94, 0x88, 0x8c, 0x93, - 0x9d, 0x9e, 0x94, 0x97, 0x93, 0x88, 0x83, 0x87, 0x77, 0x7c, 0x8e, 0x90, 0x95, 0x91, 0xa7, 0xb1, - 0xa2, 0x8e, 0x82, 0x87, 0x7a, 0x77, 0x87, 0x86, 0x83, 0x7e, 0x72, 0x74, 0x7b, 0x78, 0x8f, 0xa0, - 0xa4, 0xb2, 0xb4, 0xa1, 0x91, 0x88, 0x8c, 0x82, 0x77, 0x83, 0x88, 0x78, 0x77, 0x90, 0x95, 0x8e, - 0x81, 0x75, 0x72, 0x76, 0x77, 0x73, 0x82, 0x9b, 0x95, 0x85, 0x7c, 0x74, 0x6a, 0x69, 0x6f, 0x81, - 0x89, 0x7d, 0x71, 0x65, 0x6c, 0x6b, 0x63, 0x64, 0x6f, 0x7c, 0x78, 0x7c, 0x8b, 0x93, 0x90, 0x87, - 0x85, 0x85, 0x84, 0x75, 0x6c, 0x72, 0x7b, 0x7b, 0x6d, 0x6f, 0x77, 0x7c, 0x88, 0x95, 0x9a, 0x97, - 0x96, 0x83, 0x74, 0x71, 0x72, 0x72, 0x66, 0x6a, 0x74, 0x6f, 0x74, 0x7b, 0x81, 0x81, 0x77, 0x78, - 0x84, 0x85, 0x7d, 0x88, 0x90, 0x8b, 0x8a, 0x89, 0x83, 0x81, 0x88, 0x92, 0xa1, 0xa1, 0x95, 0x8e, - 0x81, 0x72, 0x73, 0x7a, 0x7d, 0x71, 0x75, 0x82, 0x8a, 0x93, 0x92, 0x8f, 0x7e, 0x70, 0x6f, 0x70, - 0x6d, 0x71, 0x78, 0x76, 0x74, 0x75, 0x75, 0x6e, 0x6e, 0x72, 0x7d, 0x8b, 0x89, 0x85, 0x7e, 0x76, - 0x73, 0x79, 0x7a, 0x75, 0x75, 0x81, 0x8b, 0x90, 0x91, 0x95, 0x9b, 0x96, 0x92, 0x94, 0x8d, 0x85, - 0x86, 0x8b, 0x8f, 0x8c, 0x83, 0x7b, 0x77, 0x7b, 0x7d, 0x82, 0x7d, 0x71, 0x68, 0x65, 0x65, 0x6d, - 0x74, 0x71, 0x6c, 0x6e, 0x73, 0x78, 0x80, 0x81, 0x84, 0x85, 0x7d, 0x76, 0x73, 0x72, 0x75, 0x79, - 0x7a, 0x7a, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x87, 0x88, 0x84, 0x81, 0x82, 0x7c, 0x75, 0x6e, 0x69, - 0x69, 0x68, 0x69, 0x6e, 0x71, 0x70, 0x70, 0x75, 0x75, 0x6d, 0x69, 0x68, 0x6b, 0x72, 0x7a, 0x7e, - 0x82, 0x84, 0x84, 0x84, 0x83, 0x83, 0x84, 0x84, 0x83, 0x79, 0x76, 0x7a, 0x82, 0x88, 0x8a, 0x8c, - 0x8f, 0x90, 0x90, 0x93, 0x96, 0x9e, 0xa0, 0x94, 0x8a, 0x85, 0x7c, 0x7c, 0x7e, 0x7a, 0x75, 0x70, - 0x74, 0x7e, 0x80, 0x7a, 0x78, 0x78, 0x77, 0x76, 0x77, 0x7a, 0x82, 0x84, 0x85, 0x83, 0x84, 0x89, - 0x8d, 0x90, 0x8e, 0x8c, 0x8d, 0x8c, 0x89, 0x85, 0x84, 0x85, 0x89, 0x8a, 0x8d, 0x8f, 0x90, 0x8d, - 0x85, 0x7e, 0x7d, 0x7e, 0x81, 0x7e, 0x7b, 0x76, 0x74, 0x7c, 0x80, 0x7b, 0x76, 0x70, 0x71, 0x78, - 0x7b, 0x7d, 0x81, 0x81, 0x7b, 0x74, 0x70, 0x72, 0x76, 0x7a, 0x7e, 0x80, 0x7d, 0x80, 0x84, 0x87, - 0x89, 0x88, 0x83, 0x81, 0x7d, 0x76, 0x77, 0x7d, 0x80, 0x7a, 0x78, 0x7b, 0x7c, 0x80, 0x81, 0x81, - 0x81, 0x85, 0x8d, 0x91, 0x90, 0x89, 0x84, 0x83, 0x84, 0x89, 0x89, 0x89, 0x8b, 0x8b, 0x8a, 0x87, - 0x85, 0x83, 0x82, 0x7c, 0x77, 0x79, 0x7e, 0x85, 0x86, 0x86, 0x8b, 0x8f, 0x91, 0x93, 0x91, 0x8f, - 0x8c, 0x83, 0x7a, 0x76, 0x75, 0x7a, 0x7d, 0x7d, 0x79, 0x74, 0x77, 0x7d, 0x83, 0x83, 0x80, 0x7c, - 0x7c, 0x80, 0x81, 0x85, 0x89, 0x8b, 0x89, 0x86, 0x83, 0x86, 0x8b, 0x8e, 0x90, 0x8d, 0x89, 0x87, - 0x86, 0x85, 0x85, 0x87, 0x8b, 0x8a, 0x87, 0x87, 0x87, 0x86, 0x80, 0x7c, 0x7d, 0x7b, 0x76, 0x72, - 0x6b, 0x62, 0x64, 0x6b, 0x75, 0x79, 0x75, 0x73, 0x72, 0x71, 0x76, 0x79, 0x7b, 0x82, 0x82, 0x7d, - 0x78, 0x74, 0x74, 0x74, 0x70, 0x6c, 0x67, 0x66, 0x66, 0x69, 0x6d, 0x6d, 0x6a, 0x66, 0x61, 0x5b, - 0x5d, 0x61, 0x62, 0x61, 0x5f, 0x63, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x61, 0x66, 0x6a, 0x6e, 0x6e, - 0x70, 0x72, 0x75, 0x79, 0x7d, 0x80, 0x85, 0x8a, 0x8b, 0x8c, 0x8b, 0x8f, 0x92, 0x91, 0x90, 0x8f, - 0x8f, 0x90, 0x8e, 0x8c, 0x8d, 0x8f, 0x8f, 0x91, 0x92, 0x8f, 0x8b, 0x86, 0x7e, 0x7d, 0x81, 0x83, - 0x85, 0x87, 0x84, 0x81, 0x81, 0x84, 0x8a, 0x8b, 0x89, 0x83, 0x7c, 0x7a, 0x7c, 0x81, 0x8a, 0x92, - 0x93, 0x91, 0x8d, 0x8f, 0x94, 0x96, 0x9b, 0x9b, 0x98, 0x98, 0x98, 0x99, 0x9b, 0x9b, 0x99, 0x98, - 0x95, 0x91, 0x8a, 0x83, 0x7d, 0x78, 0x7a, 0x7b, 0x78, 0x73, 0x71, 0x6f, 0x6f, 0x72, 0x79, 0x7c, - 0x7c, 0x80, 0x81, 0x80, 0x7d, 0x82, 0x83, 0x83, 0x81, 0x7d, 0x7c, 0x7b, 0x7c, 0x83, 0x86, 0x84, - 0x82, 0x81, 0x82, 0x86, 0x87, 0x89, 0x8a, 0x8b, 0x8b, 0x88, 0x88, 0x89, 0x85, 0x80, 0x77, 0x74, - 0x76, 0x78, 0x78, 0x79, 0x79, 0x75, 0x74, 0x74, 0x79, 0x7c, 0x7a, 0x7b, 0x7c, 0x7e, 0x83, 0x86, - 0x88, 0x87, 0x84, 0x81, 0x80, 0x7a, 0x77, 0x78, 0x78, 0x7b, 0x80, 0x84, 0x86, 0x85, 0x85, 0x85, - 0x88, 0x89, 0x87, 0x86, 0x89, 0x8d, 0x88, 0x83, 0x81, 0x82, 0x81, 0x7c, 0x75, 0x71, 0x6f, 0x6c, - 0x6c, 0x6d, 0x6f, 0x6b, 0x63, 0x60, 0x64, 0x6a, 0x72, 0x78, 0x7c, 0x80, 0x80, 0x7e, 0x7e, 0x83, - 0x87, 0x8b, 0x87, 0x85, 0x82, 0x83, 0x86, 0x87, 0x8a, 0x8a, 0x89, 0x88, 0x85, 0x85, 0x82, 0x7c, - 0x76, 0x77, 0x7a, 0x7a, 0x7a, 0x78, 0x75, 0x72, 0x72, 0x73, 0x72, 0x73, 0x70, 0x69, 0x68, 0x6c, - 0x71, 0x74, 0x75, 0x74, 0x73, 0x70, 0x6e, 0x72, 0x75, 0x76, 0x7a, 0x79, 0x76, 0x75, 0x76, 0x79, - 0x79, 0x74, 0x6f, 0x6d, 0x6b, 0x6f, 0x71, 0x72, 0x72, 0x70, 0x76, 0x7a, 0x79, 0x7c, 0x7a, 0x78, - 0x7d, 0x83, 0x8a, 0x8f, 0x8e, 0x8a, 0x86, 0x80, 0x82, 0x8a, 0x8c, 0x8c, 0x89, 0x88, 0x89, 0x89, - 0x89, 0x8b, 0x8b, 0x88, 0x8b, 0x8f, 0x94, 0x9a, 0x9c, 0x9f, 0x9d, 0x9a, 0x98, 0x94, 0x92, 0x90, - 0x8a, 0x87, 0x84, 0x82, 0x88, 0x8b, 0x88, 0x84, 0x81, 0x80, 0x82, 0x85, 0x85, 0x84, 0x7c, 0x73, - 0x79, 0x81, 0x86, 0x88, 0x86, 0x82, 0x7e, 0x7b, 0x78, 0x76, 0x79, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, - 0x7d, 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x82, 0x85, 0x87, 0x86, 0x81, 0x7c, 0x7c, 0x7a, 0x78, 0x75, - 0x71, 0x71, 0x73, 0x81, 0x8a, 0x8b, 0x86, 0x81, 0x7e, 0x81, 0x8e, 0x95, 0x93, 0x90, 0x8f, 0x8b, - 0x87, 0x87, 0x86, 0x84, 0x82, 0x80, 0x79, 0x77, 0x78, 0x78, 0x77, 0x75, 0x75, 0x74, 0x70, 0x6c, - 0x6e, 0x6f, 0x6e, 0x6d, 0x6f, 0x73, 0x73, 0x75, 0x79, 0x77, 0x76, 0x75, 0x78, 0x7b, 0x7c, 0x7c, - 0x7e, 0x7b, 0x7a, 0x86, 0x8b, 0x8f, 0x8f, 0x8d, 0x8a, 0x83, 0x82, 0x85, 0x85, 0x83, 0x83, 0x84, - 0x85, 0x86, 0x88, 0x88, 0x80, 0x7d, 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x7d, 0x7a, 0x79, 0x7d, 0x81, - 0x80, 0x7d, 0x7d, 0x78, 0x70, 0x72, 0x75, 0x74, 0x71, 0x6d, 0x6d, 0x6d, 0x6c, 0x73, 0x74, 0x78, - 0x82, 0x83, 0x82, 0x8d, 0x91, 0x95, 0x94, 0x92, 0x92, 0x91, 0x95, 0x9a, 0x9e, 0x9d, 0x9b, 0x96, - 0x92, 0x91, 0x8d, 0x83, 0x7d, 0x80, 0x87, 0x87, 0x85, 0x85, 0x76, 0x6d, 0x6f, 0x73, 0x7a, 0x7d, - 0x80, 0x7c, 0x7b, 0x7c, 0x7a, 0x77, 0x6f, 0x6f, 0x6f, 0x73, 0x7e, 0x83, 0x85, 0x89, 0x89, 0x85, - 0x81, 0x74, 0x71, 0x77, 0x81, 0x86, 0x88, 0x85, 0x81, 0x7a, 0x78, 0x77, 0x71, 0x6c, 0x6e, 0x70, - 0x71, 0x73, 0x74, 0x71, 0x69, 0x63, 0x6a, 0x69, 0x65, 0x68, 0x6f, 0x78, 0x82, 0x89, 0x8e, 0x8d, - 0x81, 0x78, 0x70, 0x66, 0x70, 0x75, 0x77, 0x7c, 0x84, 0x83, 0x7e, 0x83, 0x89, 0x87, 0x7d, 0x7b, - 0x7d, 0x76, 0x7e, 0x86, 0x82, 0x7e, 0x7e, 0x81, 0x8c, 0x90, 0x8d, 0x8b, 0x8a, 0x89, 0x85, 0x81, - 0x80, 0x81, 0x74, 0x73, 0x73, 0x6e, 0x68, 0x6b, 0x6e, 0x71, 0x77, 0x7a, 0x7c, 0x7c, 0x86, 0x8e, - 0x8f, 0x91, 0x93, 0x8b, 0x82, 0x84, 0x8c, 0x91, 0x91, 0x8e, 0x91, 0x95, 0x92, 0x90, 0x85, 0x7c, - 0x83, 0x88, 0x85, 0x8c, 0x89, 0x86, 0x84, 0x80, 0x7a, 0x80, 0x83, 0x7d, 0x76, 0x75, 0x7c, 0x7e, - 0x7e, 0x80, 0x81, 0x79, 0x6e, 0x6f, 0x75, 0x76, 0x86, 0x96, 0x9f, 0x9d, 0x95, 0x89, 0x86, 0x8f, - 0x94, 0x88, 0x84, 0x7c, 0x77, 0x76, 0x76, 0x75, 0x75, 0x79, 0x82, 0x85, 0x86, 0x87, 0x83, 0x7b, - 0x85, 0x93, 0x90, 0x81, 0x80, 0x82, 0x79, 0x77, 0x7c, 0x87, 0x8d, 0x8c, 0x85, 0x7d, 0x78, 0x73, - 0x6f, 0x71, 0x78, 0x78, 0x72, 0x74, 0x7b, 0x82, 0x89, 0x8b, 0x89, 0x81, 0x78, 0x7b, 0x82, 0x7b, - 0x75, 0x72, 0x70, 0x6f, 0x76, 0x78, 0x7a, 0x82, 0x8f, 0x9a, 0x90, 0x7a, 0x6e, 0x73, 0x6d, 0x67, - 0x71, 0x7b, 0x7e, 0x80, 0x7d, 0x77, 0x6e, 0x76, 0x8e, 0x8e, 0x84, 0x7e, 0x86, 0x86, 0x83, 0x83, - 0x80, 0x7e, 0x84, 0x8e, 0x91, 0x90, 0x9c, 0xa0, 0x9c, 0x9c, 0x98, 0x92, 0x87, 0x7b, 0x72, 0x6b, - 0x6a, 0x6d, 0x7d, 0x73, 0x71, 0x74, 0x77, 0x73, 0x61, 0x67, 0x7b, 0x78, 0x75, 0x6f, 0x66, 0x70, - 0x83, 0x80, 0x7b, 0x72, 0x66, 0x70, 0x7d, 0x7d, 0x77, 0x75, 0x6f, 0x68, 0x67, 0x5f, 0x50, 0x5a, - 0x69, 0x6a, 0x63, 0x66, 0x74, 0x7e, 0x82, 0x86, 0x7e, 0x73, 0x6d, 0x6f, 0x7b, 0x74, 0x67, 0x6f, - 0x73, 0x71, 0x77, 0x86, 0x8e, 0x80, 0x87, 0x8d, 0x8d, 0xa1, 0x9e, 0x93, 0x88, 0x7e, 0x7d, 0x88, - 0x8e, 0x85, 0x81, 0x87, 0x8d, 0x8e, 0x89, 0x86, 0x89, 0x87, 0x7d, 0x71, 0x6e, 0x75, 0x86, 0x96, - 0x9a, 0x96, 0x8f, 0x8c, 0x8d, 0x93, 0x92, 0x85, 0x85, 0x83, 0x7d, 0x7b, 0x6f, 0x6e, 0x7c, 0x77, - 0x75, 0x72, 0x83, 0x94, 0x97, 0x9a, 0x9a, 0x98, 0x94, 0x99, 0x96, 0x8d, 0x95, 0x9b, 0x94, 0x85, - 0x87, 0x91, 0x99, 0x91, 0x86, 0x83, 0x88, 0x8b, 0x8a, 0x83, 0x7c, 0x6d, 0x64, 0x82, 0x88, 0x7c, - 0x74, 0x75, 0x75, 0x76, 0x81, 0x82, 0x83, 0x87, 0x7e, 0x6b, 0x66, 0x7e, 0x92, 0x94, 0x8f, 0x8a, - 0x88, 0x81, 0x7c, 0x93, 0xa4, 0x98, 0x8e, 0x84, 0x70, 0x63, 0x5d, 0x63, 0x6e, 0x69, 0x6a, 0x72, - 0x80, 0x81, 0x79, 0x6e, 0x68, 0x70, 0x7e, 0x73, 0x5d, 0x64, 0x77, 0x7b, 0x7c, 0x7c, 0x83, 0x89, - 0x82, 0x7c, 0x7c, 0x85, 0x87, 0x85, 0x85, 0x85, 0x76, 0x68, 0x65, 0x6e, 0x81, 0x8d, 0x89, 0x83, - 0x81, 0x87, 0x88, 0x86, 0x83, 0x87, 0x82, 0x71, 0x6e, 0x83, 0x8c, 0x85, 0x7c, 0x7e, 0x8b, 0x88, - 0x76, 0x6c, 0x65, 0x61, 0x60, 0x5c, 0x5c, 0x62, 0x6b, 0x6e, 0x70, 0x75, 0x81, 0x8b, 0x92, 0xa1, - 0x9d, 0x8e, 0x8a, 0x8b, 0x8b, 0x89, 0x8e, 0x92, 0x94, 0x99, 0x9a, 0x93, 0x86, 0x82, 0x88, 0x94, - 0xa9, 0xa8, 0x9e, 0x97, 0x8e, 0x7c, 0x6b, 0x66, 0x74, 0x7a, 0x72, 0x6e, 0x72, 0x75, 0x6a, 0x5f, - 0x5f, 0x63, 0x68, 0x70, 0x68, 0x6b, 0x7e, 0x82, 0x84, 0x85, 0x7d, 0x78, 0x79, 0x81, 0x8e, 0x8f, - 0x88, 0x81, 0x7b, 0x7b, 0x69, 0x5e, 0x60, 0x5c, 0x61, 0x6c, 0x6e, 0x6f, 0x7b, 0x87, 0x87, 0x88, - 0x93, 0x94, 0x7d, 0x6e, 0x6b, 0x6c, 0x6b, 0x78, 0x8d, 0x8d, 0x87, 0x8b, 0x8f, 0x89, 0x7d, 0x7c, - 0x7c, 0x7e, 0x82, 0x85, 0x87, 0x87, 0x81, 0x7a, 0x76, 0x81, 0x89, 0x92, 0x97, 0x95, 0x97, 0x93, - 0x89, 0x86, 0x81, 0x85, 0x8e, 0x8c, 0x8d, 0x93, 0x94, 0x92, 0x95, 0x9d, 0x9d, 0x91, 0x87, 0x7e, - 0x78, 0x76, 0x75, 0x74, 0x6e, 0x6a, 0x7c, 0x8d, 0x8b, 0x89, 0x86, 0x7a, 0x78, 0x80, 0x80, 0x72, - 0x72, 0x7b, 0x87, 0x91, 0x87, 0x80, 0x84, 0x84, 0x87, 0x9a, 0x98, 0x8d, 0x7b, 0x74, 0x77, 0x75, - 0x69, 0x6d, 0x7b, 0x71, 0x6a, 0x6c, 0x6d, 0x63, 0x6a, 0x80, 0x85, 0x87, 0x85, 0x7d, 0x74, 0x79, - 0x8e, 0x91, 0x87, 0x85, 0x8f, 0x8f, 0x8f, 0x86, 0x89, 0x8a, 0x79, 0x6d, 0x72, 0x70, 0x6c, 0x6f, - 0x7a, 0x7d, 0x71, 0x6a, 0x6d, 0x6b, 0x6e, 0x73, 0x78, 0x75, 0x7a, 0x83, 0x7c, 0x73, 0x73, 0x78, - 0x75, 0x75, 0x7d, 0x82, 0x76, 0x6e, 0x82, 0x9a, 0x9c, 0x9c, 0x9a, 0x8f, 0x85, 0x84, 0x88, 0x8a, - 0x82, 0x70, 0x66, 0x6f, 0x6d, 0x6b, 0x75, 0x77, 0x79, 0x83, 0x81, 0x7e, 0x7c, 0x7e, 0x81, 0x85, - 0x84, 0x7c, 0x7a, 0x89, 0x9a, 0x8c, 0x82, 0x81, 0x71, 0x69, 0x67, 0x73, 0x7a, 0x84, 0x8c, 0x8c, - 0x79, 0x72, 0x8a, 0x9b, 0xa5, 0xa6, 0xa2, 0xa5, 0xa1, 0x97, 0x9b, 0x9e, 0x99, 0x91, 0x91, 0x93, - 0x92, 0x9b, 0x9e, 0x8b, 0x7c, 0x86, 0x7b, 0x72, 0x76, 0x74, 0x77, 0x6d, 0x6f, 0x6b, 0x63, 0x57, - 0x51, 0x5e, 0x6a, 0x6e, 0x71, 0x77, 0x6d, 0x68, 0x65, 0x5c, 0x69, 0x7b, 0x83, 0x82, 0x7e, 0x79, - 0x79, 0x83, 0x86, 0x86, 0x84, 0x6e, 0x58, 0x52, 0x67, 0x7c, 0x7c, 0x70, 0x6c, 0x62, 0x51, 0x52, - 0x5e, 0x60, 0x63, 0x6a, 0x79, 0x75, 0x60, 0x5b, 0x63, 0x6e, 0x75, 0x6d, 0x6e, 0x79, 0x87, 0xa8, - 0xb8, 0x9c, 0x92, 0x8c, 0x8f, 0x8a, 0x8c, 0x91, 0x9d, 0xa0, 0xa4, 0xaf, 0xa8, 0x8f, 0x87, 0x8d, - 0x9d, 0xa5, 0xa8, 0x9c, 0x8e, 0x8a, 0x88, 0x89, 0x97, 0x99, 0x93, 0x95, 0x86, 0x8d, 0xa3, 0x92, - 0x82, 0x80, 0x71, 0x62, 0x66, 0x70, 0x79, 0x83, 0x84, 0x88, 0x80, 0x6e, 0x68, 0x86, 0x9a, 0x9c, - 0x94, 0x8b, 0x83, 0x7b, 0x73, 0x6f, 0x71, 0x81, 0x89, 0x8f, 0x95, 0x8f, 0x90, 0x8f, 0x91, 0x94, - 0x8d, 0x70, 0x68, 0x78, 0x7c, 0x7e, 0x7d, 0x81, 0x7e, 0x6c, 0x5a, 0x55, 0x5a, 0x64, 0x6c, 0x6e, - 0x6e, 0x6f, 0x6b, 0x63, 0x68, 0x72, 0x74, 0x7b, 0x8c, 0x92, 0x9f, 0xab, 0xa0, 0x92, 0x89, 0x80, - 0x6e, 0x64, 0x72, 0x7b, 0x79, 0x7c, 0x8a, 0x90, 0x85, 0x71, 0x75, 0x82, 0x8c, 0x8a, 0x7e, 0x7d, - 0x80, 0x7c, 0x7a, 0x85, 0x8a, 0x82, 0x81, 0x84, 0x8c, 0x92, 0x8e, 0x85, 0x7b, 0x75, 0x6d, 0x6b, - 0x6d, 0x75, 0x82, 0x7d, 0x7c, 0x82, 0x87, 0x85, 0x82, 0x89, 0x8c, 0x8e, 0x87, 0x80, 0x80, 0x81, - 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x7d, 0x7d, 0x7d, 0x7a, 0x7a, 0x79, 0x7a, 0x79, 0x75, 0x72, 0x72, - 0x76, 0x7a, 0x7b, 0x80, 0x7d, 0x79, 0x75, 0x74, 0x79, 0x7d, 0x82, 0x7e, 0x7a, 0x79, 0x7d, 0x84, - 0x88, 0x86, 0x82, 0x7e, 0x7e, 0x87, 0x95, 0x99, 0x97, 0x93, 0x8e, 0x8b, 0x89, 0x89, 0x85, 0x7b, - 0x74, 0x72, 0x72, 0x73, 0x77, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x76, 0x75, 0x77, 0x77, 0x74, 0x71, - 0x71, 0x72, 0x70, 0x6f, 0x6e, 0x6e, 0x6f, 0x72, 0x73, 0x71, 0x70, 0x6e, 0x6e, 0x6f, 0x72, 0x76, - 0x7d, 0x7e, 0x80, 0x86, 0x87, 0x87, 0x84, 0x85, 0x85, 0x7c, 0x79, 0x79, 0x7b, 0x82, 0x82, 0x80, - 0x82, 0x80, 0x7d, 0x81, 0x85, 0x8b, 0x90, 0x8e, 0x89, 0x8b, 0x90, 0x91, 0x91, 0x8f, 0x8c, 0x8d, - 0x8f, 0x92, 0x92, 0x8c, 0x86, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x81, 0x83, 0x86, 0x87, 0x87, - 0x87, 0x86, 0x84, 0x7d, 0x7a, 0x83, 0x8c, 0x8f, 0x90, 0x8b, 0x83, 0x7e, 0x7c, 0x7e, 0x83, 0x84, - 0x84, 0x80, 0x7d, 0x80, 0x84, 0x82, 0x7c, 0x79, 0x79, 0x7b, 0x7e, 0x81, 0x7d, 0x79, 0x78, 0x76, - 0x74, 0x78, 0x7c, 0x80, 0x80, 0x7b, 0x79, 0x79, 0x77, 0x77, 0x74, 0x70, 0x70, 0x73, 0x7c, 0x82, - 0x81, 0x7b, 0x77, 0x7a, 0x7a, 0x7a, 0x7e, 0x7c, 0x7b, 0x79, 0x7a, 0x7c, 0x80, 0x82, 0x7e, 0x7d, - 0x82, 0x87, 0x8c, 0x8c, 0x89, 0x86, 0x81, 0x7b, 0x7b, 0x7a, 0x7c, 0x86, 0x8a, 0x89, 0x80, 0x77, - 0x76, 0x76, 0x76, 0x72, 0x6f, 0x6f, 0x6f, 0x6f, 0x75, 0x7a, 0x79, 0x7a, 0x80, 0x81, 0x7b, 0x78, - 0x7d, 0x83, 0x84, 0x83, 0x84, 0x84, 0x81, 0x80, 0x7e, 0x7d, 0x86, 0x8d, 0x8d, 0x89, 0x88, 0x88, - 0x85, 0x83, 0x83, 0x85, 0x87, 0x87, 0x87, 0x85, 0x82, 0x80, 0x7e, 0x7c, 0x77, 0x71, 0x6f, 0x72, - 0x74, 0x75, 0x72, 0x74, 0x75, 0x74, 0x75, 0x78, 0x7e, 0x88, 0x91, 0x8e, 0x89, 0x86, 0x86, 0x8c, - 0x90, 0x91, 0x94, 0x97, 0x9a, 0x9a, 0x9a, 0x98, 0x96, 0x94, 0x93, 0x93, 0x98, 0x97, 0x95, 0x92, - 0x8c, 0x86, 0x84, 0x83, 0x82, 0x7d, 0x77, 0x76, 0x78, 0x76, 0x72, 0x70, 0x71, 0x6f, 0x6b, 0x63, - 0x5f, 0x64, 0x6a, 0x6b, 0x6a, 0x6b, 0x6d, 0x70, 0x73, 0x72, 0x6e, 0x6d, 0x6f, 0x72, 0x75, 0x75, - 0x74, 0x72, 0x75, 0x78, 0x79, 0x7c, 0x84, 0x85, 0x82, 0x7e, 0x7d, 0x7a, 0x7a, 0x7a, 0x73, 0x6c, - 0x6b, 0x70, 0x73, 0x75, 0x7b, 0x80, 0x80, 0x7b, 0x75, 0x74, 0x7a, 0x7d, 0x79, 0x76, 0x7c, 0x81, - 0x82, 0x86, 0x89, 0x8a, 0x90, 0x96, 0x99, 0x95, 0x8d, 0x89, 0x8a, 0x8c, 0x8b, 0x8a, 0x8b, 0x8c, - 0x8c, 0x8d, 0x8a, 0x85, 0x83, 0x82, 0x81, 0x7e, 0x79, 0x74, 0x70, 0x71, 0x78, 0x7a, 0x7b, 0x7b, - 0x7a, 0x77, 0x78, 0x7e, 0x85, 0x81, 0x79, 0x78, 0x78, 0x78, 0x77, 0x76, 0x76, 0x75, 0x7a, 0x80, - 0x82, 0x84, 0x86, 0x89, 0x88, 0x84, 0x86, 0x8d, 0x8f, 0x8d, 0x8a, 0x8a, 0x8c, 0x8b, 0x8c, 0x8a, - 0x87, 0x86, 0x81, 0x7c, 0x7d, 0x82, 0x84, 0x83, 0x82, 0x7e, 0x79, 0x76, 0x79, 0x81, 0x83, 0x81, - 0x84, 0x8a, 0x88, 0x85, 0x82, 0x81, 0x82, 0x82, 0x81, 0x7d, 0x7c, 0x80, 0x82, 0x83, 0x80, 0x85, - 0x8a, 0x8b, 0x86, 0x7e, 0x7b, 0x7d, 0x7e, 0x80, 0x7e, 0x79, 0x74, 0x74, 0x73, 0x74, 0x7b, 0x81, - 0x86, 0x85, 0x84, 0x87, 0x87, 0x86, 0x83, 0x7a, 0x79, 0x7d, 0x82, 0x86, 0x89, 0x8a, 0x8a, 0x8d, - 0x8d, 0x87, 0x83, 0x81, 0x7d, 0x7d, 0x80, 0x81, 0x83, 0x85, 0x85, 0x82, 0x7e, 0x7e, 0x7e, 0x7c, - 0x78, 0x73, 0x6d, 0x6b, 0x6b, 0x67, 0x65, 0x69, 0x70, 0x77, 0x7a, 0x7c, 0x7b, 0x7b, 0x83, 0x87, - 0x85, 0x84, 0x84, 0x82, 0x82, 0x85, 0x86, 0x8a, 0x8d, 0x92, 0x93, 0x93, 0x92, 0x8c, 0x88, 0x86, - 0x86, 0x89, 0x88, 0x84, 0x80, 0x7c, 0x7a, 0x7b, 0x7c, 0x7a, 0x7a, 0x77, 0x73, 0x6f, 0x6b, 0x69, - 0x6c, 0x72, 0x75, 0x71, 0x6a, 0x66, 0x6a, 0x70, 0x71, 0x71, 0x71, 0x6e, 0x6c, 0x6a, 0x6c, 0x6f, - 0x6f, 0x6d, 0x6c, 0x6c, 0x6a, 0x6c, 0x71, 0x73, 0x78, 0x81, 0x83, 0x81, 0x7e, 0x79, 0x75, 0x73, - 0x72, 0x77, 0x78, 0x75, 0x75, 0x76, 0x75, 0x76, 0x7e, 0x89, 0x8c, 0x8b, 0x88, 0x84, 0x85, 0x88, - 0x8c, 0x8c, 0x8a, 0x8b, 0x8c, 0x8f, 0x93, 0x96, 0x95, 0x94, 0x92, 0x94, 0x94, 0x93, 0x91, 0x90, - 0x90, 0x8d, 0x8c, 0x90, 0x90, 0x91, 0x93, 0x93, 0x92, 0x8c, 0x87, 0x83, 0x7b, 0x74, 0x71, 0x72, - 0x73, 0x78, 0x7e, 0x8a, 0x90, 0x8c, 0x8a, 0x8b, 0x8d, 0x8e, 0x8e, 0x8d, 0x90, 0x91, 0x8d, 0x8c, - 0x8c, 0x85, 0x81, 0x81, 0x84, 0x85, 0x82, 0x7d, 0x7a, 0x79, 0x76, 0x75, 0x78, 0x75, 0x72, 0x70, - 0x6e, 0x6d, 0x70, 0x70, 0x69, 0x6b, 0x74, 0x73, 0x6b, 0x68, 0x6c, 0x72, 0x76, 0x78, 0x74, 0x6b, - 0x68, 0x6e, 0x76, 0x7b, 0x79, 0x77, 0x78, 0x7b, 0x81, 0x82, 0x7d, 0x7c, 0x7d, 0x84, 0x87, 0x87, - 0x8a, 0x8f, 0x91, 0x92, 0x97, 0x9a, 0x96, 0x91, 0x8f, 0x8b, 0x87, 0x84, 0x81, 0x79, 0x73, 0x73, - 0x76, 0x74, 0x77, 0x7b, 0x7d, 0x81, 0x82, 0x7d, 0x77, 0x77, 0x79, 0x7d, 0x80, 0x80, 0x80, 0x83, - 0x87, 0x8a, 0x8c, 0x8a, 0x82, 0x7c, 0x86, 0x8b, 0x87, 0x84, 0x83, 0x81, 0x80, 0x82, 0x83, 0x82, - 0x84, 0x80, 0x79, 0x71, 0x6e, 0x6f, 0x6a, 0x64, 0x64, 0x5c, 0x5b, 0x60, 0x68, 0x71, 0x76, 0x77, - 0x78, 0x79, 0x7d, 0x83, 0x86, 0x84, 0x84, 0x84, 0x86, 0x8c, 0x90, 0x91, 0x91, 0x95, 0x9c, 0xa1, - 0xa2, 0x9d, 0x98, 0x98, 0x96, 0x90, 0x8d, 0x8d, 0x92, 0x8f, 0x87, 0x81, 0x84, 0x81, 0x7e, 0x7c, - 0x77, 0x6e, 0x66, 0x62, 0x65, 0x76, 0x82, 0x84, 0x81, 0x79, 0x6e, 0x6d, 0x6f, 0x70, 0x6f, 0x6e, - 0x72, 0x74, 0x76, 0x78, 0x72, 0x6d, 0x6d, 0x6b, 0x6e, 0x70, 0x71, 0x7b, 0x83, 0x87, 0x88, 0x85, - 0x85, 0x86, 0x82, 0x82, 0x80, 0x79, 0x75, 0x77, 0x7b, 0x78, 0x76, 0x7a, 0x79, 0x7b, 0x79, 0x87, - 0x8b, 0x80, 0x7d, 0x84, 0x8b, 0x8e, 0x92, 0x95, 0x90, 0x87, 0x8d, 0x99, 0x9c, 0x97, 0x93, 0x91, - 0x8f, 0x8e, 0x8f, 0x93, 0x96, 0x91, 0x8b, 0x89, 0x8b, 0x8d, 0x8b, 0x84, 0x79, 0x79, 0x77, 0x70, - 0x69, 0x68, 0x6b, 0x6a, 0x6a, 0x70, 0x71, 0x70, 0x61, 0x5c, 0x74, 0x7d, 0x74, 0x7e, 0x85, 0x7d, - 0x7a, 0x79, 0x78, 0x7c, 0x80, 0x79, 0x76, 0x75, 0x76, 0x7a, 0x76, 0x71, 0x75, 0x79, 0x74, 0x70, - 0x75, 0x81, 0x89, 0x88, 0x88, 0x88, 0x82, 0x82, 0x7e, 0x81, 0x84, 0x81, 0x80, 0x7c, 0x7b, 0x78, - 0x74, 0x74, 0x75, 0x7c, 0x85, 0x87, 0x8f, 0x98, 0x9b, 0x94, 0x8a, 0x87, 0x82, 0x84, 0x81, 0x82, - 0x8f, 0x99, 0x9b, 0x9a, 0x9a, 0x8d, 0x89, 0x8e, 0x83, 0x87, 0x8b, 0x82, 0x74, 0x6c, 0x6c, 0x74, - 0x7a, 0x76, 0x71, 0x69, 0x65, 0x68, 0x6a, 0x72, 0x7b, 0x7d, 0x75, 0x76, 0x7a, 0x7c, 0x8c, 0x8f, - 0x91, 0x9a, 0x99, 0x93, 0x8d, 0x8c, 0x9d, 0x95, 0x85, 0x8c, 0x8f, 0x89, 0x89, 0x88, 0x83, 0x86, - 0x83, 0x79, 0x84, 0x8e, 0x8f, 0x8c, 0x8a, 0x8e, 0x88, 0x70, 0x62, 0x63, 0x5f, 0x5b, 0x5a, 0x60, - 0x70, 0x77, 0x75, 0x71, 0x6d, 0x79, 0x80, 0x74, 0x85, 0x89, 0x7b, 0x72, 0x72, 0x79, 0x7e, 0x88, - 0x8e, 0x89, 0x88, 0x91, 0x9c, 0x9c, 0x95, 0x8d, 0x88, 0x82, 0x86, 0x91, 0x93, 0x8f, 0x90, 0x90, - 0x82, 0x75, 0x6e, 0x64, 0x74, 0x7c, 0x6f, 0x70, 0x7b, 0x7a, 0x70, 0x69, 0x60, 0x6e, 0x76, 0x70, - 0x6c, 0x73, 0x78, 0x72, 0x72, 0x71, 0x6d, 0x71, 0x6b, 0x60, 0x68, 0x72, 0x76, 0x7d, 0x88, 0x85, - 0x81, 0x86, 0x8a, 0x92, 0x93, 0x87, 0x83, 0x8b, 0x84, 0x75, 0x71, 0x6b, 0x67, 0x64, 0x64, 0x6d, - 0x71, 0x72, 0x78, 0x73, 0x6c, 0x76, 0x8c, 0x92, 0x88, 0x86, 0x87, 0x89, 0x8a, 0x85, 0x81, 0x83, - 0x8d, 0x92, 0x8f, 0x8c, 0x89, 0x85, 0x86, 0x84, 0x7c, 0x79, 0x88, 0x93, 0x9a, 0x9c, 0x99, 0x94, - 0x8b, 0x8c, 0x88, 0x80, 0x7c, 0x7d, 0x79, 0x6b, 0x6d, 0x73, 0x72, 0x70, 0x6e, 0x69, 0x75, 0x91, - 0x99, 0x95, 0x8d, 0x79, 0x61, 0x6f, 0x7b, 0x75, 0x81, 0x8b, 0x8a, 0x84, 0x7d, 0x77, 0x74, 0x77, - 0x72, 0x6d, 0x72, 0x75, 0x79, 0x84, 0x84, 0x83, 0x83, 0x7e, 0x8c, 0x89, 0x7c, 0x76, 0x75, 0x85, - 0x81, 0x7a, 0x82, 0x8a, 0x8d, 0x8d, 0x81, 0x77, 0x8c, 0x98, 0x96, 0x8e, 0x81, 0x77, 0x81, 0x91, - 0x8e, 0x8c, 0x91, 0x88, 0x8d, 0x9c, 0x99, 0x96, 0x91, 0x92, 0x94, 0x8d, 0x83, 0x85, 0x97, 0x92, - 0x86, 0x78, 0x6d, 0x6e, 0x6c, 0x66, 0x60, 0x65, 0x6a, 0x65, 0x63, 0x64, 0x6c, 0x70, 0x6c, 0x5e, - 0x68, 0x87, 0x94, 0x9c, 0xa9, 0x9a, 0x83, 0x78, 0x87, 0x88, 0x84, 0x81, 0x8b, 0x8b, 0x7c, 0x7a, - 0x7a, 0x6d, 0x60, 0x67, 0x7e, 0x8b, 0x96, 0x95, 0x91, 0x87, 0x72, 0x7c, 0x8a, 0x79, 0x69, 0x5e, - 0x5c, 0x60, 0x65, 0x6e, 0x6f, 0x6d, 0x70, 0x65, 0x61, 0x7e, 0x98, 0x92, 0x88, 0x82, 0x81, 0x7c, - 0x6e, 0x70, 0x87, 0x8c, 0x8c, 0x98, 0xa3, 0x9f, 0x96, 0x86, 0x87, 0x8c, 0x89, 0x84, 0x84, 0x91, - 0x9c, 0x98, 0x92, 0x88, 0x84, 0x96, 0x94, 0x89, 0x8d, 0x92, 0x7a, 0x63, 0x5d, 0x65, 0x63, 0x54, - 0x4c, 0x60, 0x78, 0x82, 0x85, 0x8c, 0x89, 0x7e, 0x6f, 0x68, 0x64, 0x68, 0x72, 0x6f, 0x74, 0x87, - 0x88, 0x80, 0x74, 0x6b, 0x6e, 0x73, 0x88, 0x9f, 0x99, 0x8a, 0x7b, 0x74, 0x6e, 0x70, 0x72, 0x69, - 0x6f, 0x75, 0x71, 0x70, 0x77, 0x79, 0x7a, 0x86, 0x8d, 0x8c, 0x86, 0x89, 0x86, 0x7c, 0x7e, 0x8d, - 0x8c, 0x83, 0x84, 0x90, 0x8f, 0x9a, 0xa8, 0xa0, 0x96, 0x8d, 0x82, 0x7c, 0x7d, 0x77, 0x70, 0x7d, - 0x8d, 0x90, 0x8d, 0x91, 0x8b, 0x7b, 0x8d, 0x96, 0x83, 0x7a, 0x73, 0x71, 0x6f, 0x67, 0x67, 0x69, - 0x68, 0x6b, 0x76, 0x7c, 0x96, 0x97, 0x89, 0x90, 0x8f, 0x85, 0x75, 0x71, 0x6a, 0x57, 0x61, 0x72, - 0x81, 0x80, 0x81, 0x85, 0x85, 0x85, 0x80, 0x70, 0x6b, 0x7b, 0x87, 0x89, 0x82, 0x7a, 0x83, 0x83, - 0x7a, 0x7e, 0x8b, 0x99, 0x8c, 0x78, 0x7d, 0x8c, 0x8a, 0x80, 0x78, 0x71, 0x7b, 0x8e, 0x86, 0x7d, - 0x82, 0x86, 0x89, 0x88, 0x8c, 0x7d, 0x6f, 0x80, 0x9b, 0xa7, 0xa0, 0x9a, 0x96, 0x92, 0x8d, 0x88, - 0x80, 0x8d, 0x9b, 0x92, 0x88, 0x82, 0x79, 0x76, 0x72, 0x61, 0x4f, 0x51, 0x60, 0x5b, 0x56, 0x5a, - 0x63, 0x62, 0x5e, 0x63, 0x64, 0x71, 0x80, 0x8b, 0x9a, 0x9a, 0x8e, 0x85, 0x82, 0x88, 0x8c, 0x86, - 0x7a, 0x8a, 0x86, 0x7a, 0x75, 0x78, 0x77, 0x7c, 0x86, 0x88, 0x8f, 0x98, 0x8e, 0x88, 0x84, 0x80, - 0x81, 0x78, 0x70, 0x7a, 0x7e, 0x7c, 0x78, 0x7c, 0x80, 0x76, 0x6a, 0x5f, 0x61, 0x66, 0x87, 0xa6, - 0xa6, 0x93, 0x8b, 0x8b, 0x87, 0x85, 0x90, 0x92, 0x8f, 0x93, 0x96, 0x99, 0x96, 0x8f, 0x93, 0x90, - 0x7a, 0x75, 0x79, 0x82, 0x8d, 0x8d, 0x83, 0x76, 0x87, 0xa4, 0x9c, 0x89, 0x86, 0x8b, 0x7c, 0x62, - 0x5c, 0x62, 0x62, 0x60, 0x6d, 0x73, 0x6d, 0x79, 0x8b, 0x88, 0x75, 0x74, 0x77, 0x6c, 0x61, 0x60, - 0x61, 0x62, 0x63, 0x66, 0x77, 0x83, 0x82, 0x89, 0x8c, 0x90, 0x87, 0x80, 0x84, 0x86, 0x74, 0x6b, - 0x5f, 0x5f, 0x6e, 0x72, 0x73, 0x74, 0x6f, 0x65, 0x5c, 0x69, 0x7c, 0x89, 0x84, 0x85, 0x78, 0x6e, - 0x82, 0x95, 0x9a, 0x99, 0x90, 0x94, 0xa4, 0xa3, 0xa2, 0x9d, 0x8e, 0x92, 0x83, 0x77, 0x87, 0x8c, - 0x8a, 0x7c, 0x7b, 0x84, 0x92, 0x90, 0x8c, 0x8d, 0x91, 0xa0, 0xa1, 0x89, 0x6b, 0x60, 0x62, 0x64, - 0x5c, 0x5a, 0x6c, 0x7a, 0x8a, 0x96, 0x90, 0x8d, 0x7a, 0x87, 0xa4, 0xa3, 0x99, 0x93, 0x90, 0x8a, - 0x80, 0x74, 0x76, 0x82, 0x7a, 0x71, 0x6d, 0x87, 0x98, 0x88, 0x75, 0x72, 0x74, 0x76, 0x78, 0x80, - 0x86, 0x7c, 0x7e, 0x8b, 0x87, 0x84, 0x82, 0x74, 0x70, 0x74, 0x77, 0x6d, 0x68, 0x6c, 0x73, 0x70, - 0x62, 0x61, 0x77, 0x84, 0x8a, 0x96, 0x96, 0x90, 0x84, 0x7c, 0x85, 0x87, 0x8c, 0x8d, 0x8b, 0x81, - 0x7c, 0x8b, 0x8d, 0x88, 0x92, 0x95, 0x8a, 0x7e, 0x83, 0x87, 0x81, 0x84, 0x8d, 0x82, 0x76, 0x72, - 0x67, 0x5a, 0x54, 0x5f, 0x6c, 0x6f, 0x71, 0x70, 0x6d, 0x72, 0x81, 0x8a, 0x90, 0x8e, 0x91, 0x98, - 0x95, 0x8c, 0x87, 0x87, 0x8b, 0x92, 0x95, 0x93, 0x81, 0x6f, 0x71, 0x7d, 0x85, 0x86, 0x86, 0x81, - 0x7d, 0x7c, 0x81, 0x88, 0x99, 0x98, 0x83, 0x79, 0x71, 0x6b, 0x67, 0x60, 0x63, 0x6b, 0x73, 0x77, - 0x74, 0x6b, 0x6b, 0x6b, 0x76, 0x83, 0x81, 0x7d, 0x7e, 0x80, 0x82, 0x85, 0x87, 0x89, 0x8b, 0x8d, - 0x8f, 0x8e, 0x84, 0x7e, 0x87, 0x8d, 0x8b, 0x86, 0x84, 0x88, 0x8e, 0x8d, 0x8b, 0x8c, 0x89, 0x84, - 0x83, 0x7b, 0x77, 0x77, 0x74, 0x71, 0x70, 0x6c, 0x6d, 0x6f, 0x71, 0x73, 0x72, 0x73, 0x77, 0x81, - 0x87, 0x84, 0x7a, 0x6d, 0x64, 0x65, 0x67, 0x68, 0x6d, 0x73, 0x78, 0x79, 0x75, 0x78, 0x83, 0x86, - 0x82, 0x82, 0x87, 0x8b, 0x8a, 0x8a, 0x89, 0x87, 0x86, 0x88, 0x86, 0x84, 0x84, 0x87, 0x8c, 0x8b, - 0x86, 0x84, 0x82, 0x80, 0x80, 0x7e, 0x81, 0x85, 0x8c, 0x8f, 0x91, 0x8d, 0x89, 0x87, 0x85, 0x81, - 0x80, 0x7c, 0x78, 0x74, 0x72, 0x75, 0x7c, 0x80, 0x80, 0x7d, 0x7c, 0x80, 0x86, 0x8d, 0x8d, 0x84, - 0x7c, 0x78, 0x72, 0x70, 0x70, 0x72, 0x7b, 0x82, 0x7d, 0x7c, 0x7b, 0x80, 0x81, 0x7b, 0x7b, 0x81, - 0x84, 0x84, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x7b, 0x78, 0x7a, 0x7e, 0x81, 0x82, 0x7d, 0x7a, 0x7a, - 0x79, 0x75, 0x73, 0x75, 0x7a, 0x83, 0x8b, 0x8f, 0x8c, 0x85, 0x83, 0x83, 0x81, 0x83, 0x87, 0x8b, - 0x8d, 0x86, 0x81, 0x82, 0x88, 0x90, 0x91, 0x8f, 0x91, 0x8e, 0x8b, 0x8b, 0x88, 0x85, 0x82, 0x7e, - 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x7c, 0x7c, 0x7d, 0x7d, 0x80, 0x82, 0x7e, 0x7b, 0x79, 0x79, 0x79, - 0x79, 0x74, 0x6c, 0x68, 0x66, 0x65, 0x6a, 0x76, 0x7a, 0x78, 0x75, 0x71, 0x71, 0x77, 0x7a, 0x7a, - 0x7a, 0x7e, 0x85, 0x87, 0x8c, 0x93, 0x93, 0x90, 0x8f, 0x8b, 0x88, 0x87, 0x87, 0x85, 0x7e, 0x7b, - 0x7d, 0x82, 0x84, 0x85, 0x80, 0x7e, 0x84, 0x88, 0x8c, 0x8b, 0x88, 0x81, 0x78, 0x71, 0x6e, 0x70, - 0x72, 0x70, 0x6c, 0x69, 0x68, 0x6b, 0x76, 0x7e, 0x7a, 0x75, 0x71, 0x6e, 0x6f, 0x76, 0x80, 0x83, - 0x85, 0x89, 0x8a, 0x8a, 0x92, 0x9a, 0x9a, 0x98, 0x92, 0x8d, 0x8d, 0x8c, 0x87, 0x84, 0x84, 0x89, - 0x8d, 0x8e, 0x8b, 0x86, 0x82, 0x80, 0x7d, 0x79, 0x78, 0x76, 0x74, 0x74, 0x73, 0x77, 0x7a, 0x78, - 0x79, 0x77, 0x75, 0x79, 0x81, 0x85, 0x85, 0x87, 0x85, 0x7e, 0x77, 0x6d, 0x69, 0x6b, 0x70, 0x79, - 0x80, 0x7e, 0x7e, 0x82, 0x82, 0x84, 0x87, 0x8a, 0x89, 0x86, 0x88, 0x86, 0x82, 0x7c, 0x77, 0x74, - 0x74, 0x77, 0x7d, 0x7e, 0x79, 0x71, 0x6b, 0x68, 0x6a, 0x69, 0x68, 0x67, 0x6c, 0x70, 0x73, 0x7a, - 0x7d, 0x81, 0x85, 0x83, 0x84, 0x87, 0x85, 0x82, 0x85, 0x87, 0x86, 0x83, 0x83, 0x86, 0x8c, 0x90, - 0x93, 0x95, 0x99, 0x97, 0x92, 0x8b, 0x84, 0x80, 0x79, 0x75, 0x75, 0x79, 0x7d, 0x7d, 0x7a, 0x7b, - 0x81, 0x87, 0x86, 0x80, 0x77, 0x71, 0x70, 0x74, 0x78, 0x79, 0x77, 0x74, 0x73, 0x75, 0x79, 0x7c, - 0x7e, 0x83, 0x82, 0x81, 0x83, 0x83, 0x85, 0x87, 0x8a, 0x8c, 0x8b, 0x8c, 0x8e, 0x8c, 0x89, 0x8c, - 0x90, 0x8d, 0x89, 0x88, 0x88, 0x87, 0x86, 0x85, 0x87, 0x8b, 0x89, 0x85, 0x84, 0x84, 0x82, 0x82, - 0x87, 0x86, 0x80, 0x7c, 0x79, 0x77, 0x7a, 0x7b, 0x7b, 0x7a, 0x78, 0x79, 0x7c, 0x83, 0x8c, 0x91, - 0x8f, 0x8a, 0x87, 0x84, 0x85, 0x86, 0x85, 0x83, 0x7c, 0x74, 0x70, 0x71, 0x73, 0x75, 0x75, 0x76, - 0x78, 0x79, 0x7b, 0x79, 0x74, 0x73, 0x78, 0x7c, 0x7d, 0x84, 0x8b, 0x89, 0x88, 0x88, 0x86, 0x7e, - 0x79, 0x77, 0x76, 0x76, 0x77, 0x76, 0x72, 0x72, 0x77, 0x7e, 0x89, 0x8b, 0x8b, 0x8d, 0x8c, 0x8a, - 0x83, 0x75, 0x6d, 0x6b, 0x72, 0x7c, 0x80, 0x7d, 0x7a, 0x77, 0x75, 0x75, 0x74, 0x70, 0x65, 0x62, - 0x6a, 0x6f, 0x76, 0x7e, 0x82, 0x7e, 0x7a, 0x7b, 0x81, 0x87, 0x8a, 0x8a, 0x87, 0x81, 0x7c, 0x7b, - 0x78, 0x78, 0x7d, 0x83, 0x84, 0x84, 0x86, 0x86, 0x87, 0x87, 0x86, 0x82, 0x7d, 0x7e, 0x83, 0x87, - 0x86, 0x85, 0x85, 0x89, 0x8d, 0x8e, 0x8e, 0x8e, 0x8b, 0x8a, 0x88, 0x86, 0x82, 0x7a, 0x73, 0x6b, - 0x65, 0x66, 0x69, 0x69, 0x6b, 0x6a, 0x68, 0x6e, 0x76, 0x7c, 0x81, 0x83, 0x81, 0x82, 0x81, 0x80, - 0x82, 0x7c, 0x76, 0x71, 0x6e, 0x72, 0x76, 0x79, 0x7a, 0x77, 0x72, 0x6b, 0x67, 0x67, 0x65, 0x66, - 0x6a, 0x6c, 0x70, 0x7a, 0x87, 0x90, 0x9b, 0xa0, 0x9e, 0x9a, 0x97, 0x95, 0x93, 0x8f, 0x8f, 0x91, - 0x92, 0x96, 0x9d, 0xa4, 0xa3, 0x9f, 0x9f, 0x9e, 0x9a, 0x92, 0x8b, 0x84, 0x79, 0x73, 0x71, 0x71, - 0x75, 0x7b, 0x7d, 0x81, 0x8a, 0x94, 0x95, 0x90, 0x8a, 0x84, 0x81, 0x7c, 0x7b, 0x80, 0x88, 0x8a, - 0x84, 0x83, 0x81, 0x7d, 0x7b, 0x7a, 0x73, 0x6d, 0x6c, 0x6c, 0x71, 0x78, 0x7a, 0x79, 0x7a, 0x7c, - 0x80, 0x85, 0x87, 0x88, 0x86, 0x84, 0x85, 0x86, 0x87, 0x88, 0x86, 0x80, 0x7c, 0x7b, 0x78, 0x76, - 0x77, 0x7b, 0x7e, 0x84, 0x89, 0x8a, 0x8a, 0x85, 0x7e, 0x78, 0x72, 0x6d, 0x6b, 0x69, 0x67, 0x69, - 0x6e, 0x70, 0x73, 0x74, 0x7c, 0x84, 0x85, 0x86, 0x81, 0x81, 0x80, 0x7e, 0x7b, 0x73, 0x6e, 0x71, - 0x75, 0x79, 0x80, 0x80, 0x78, 0x74, 0x6f, 0x6d, 0x6f, 0x6c, 0x68, 0x66, 0x68, 0x6c, 0x74, 0x83, - 0x88, 0x88, 0x8b, 0x8e, 0x90, 0x91, 0x8e, 0x88, 0x83, 0x7d, 0x78, 0x7a, 0x7d, 0x7e, 0x87, 0x90, - 0x92, 0x94, 0x91, 0x8a, 0x8a, 0x88, 0x83, 0x80, 0x7b, 0x7a, 0x7a, 0x7a, 0x7c, 0x80, 0x80, 0x7c, - 0x7c, 0x7e, 0x7e, 0x7b, 0x78, 0x77, 0x7b, 0x83, 0x89, 0x88, 0x88, 0x8d, 0x92, 0x91, 0x8c, 0x87, - 0x84, 0x7c, 0x77, 0x7b, 0x81, 0x83, 0x87, 0x84, 0x80, 0x79, 0x77, 0x7d, 0x81, 0x83, 0x81, 0x7c, - 0x79, 0x7b, 0x80, 0x83, 0x85, 0x83, 0x82, 0x80, 0x7b, 0x7c, 0x7d, 0x7e, 0x7c, 0x79, 0x77, 0x79, - 0x7b, 0x7a, 0x7c, 0x7b, 0x79, 0x76, 0x73, 0x6e, 0x69, 0x69, 0x70, 0x78, 0x7e, 0x87, 0x8b, 0x8c, - 0x8a, 0x87, 0x89, 0x8e, 0x91, 0x93, 0x93, 0x8d, 0x84, 0x80, 0x79, 0x7a, 0x7c, 0x77, 0x6e, 0x6d, - 0x72, 0x73, 0x74, 0x72, 0x71, 0x71, 0x71, 0x76, 0x80, 0x8b, 0x90, 0x90, 0x90, 0x90, 0x8d, 0x87, - 0x80, 0x79, 0x75, 0x73, 0x79, 0x80, 0x86, 0x8c, 0x8c, 0x8b, 0x8d, 0x8f, 0x8f, 0x8e, 0x8f, 0x8b, - 0x7e, 0x74, 0x72, 0x79, 0x80, 0x80, 0x80, 0x7c, 0x79, 0x79, 0x77, 0x76, 0x76, 0x75, 0x75, 0x73, - 0x76, 0x7c, 0x86, 0x8c, 0x89, 0x8a, 0x8d, 0x8d, 0x8d, 0x87, 0x7d, 0x76, 0x71, 0x74, 0x7a, 0x7c, - 0x7a, 0x78, 0x78, 0x7a, 0x80, 0x8a, 0x8d, 0x8c, 0x8d, 0x86, 0x7e, 0x7e, 0x84, 0x88, 0x88, 0x80, - 0x77, 0x75, 0x73, 0x76, 0x7c, 0x7d, 0x7d, 0x7b, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x79, 0x79, 0x78, - 0x75, 0x77, 0x7a, 0x7a, 0x7b, 0x7a, 0x7d, 0x84, 0x89, 0x8a, 0x86, 0x83, 0x89, 0x8d, 0x8a, 0x86, - 0x87, 0x84, 0x7a, 0x78, 0x7c, 0x83, 0x85, 0x81, 0x7c, 0x75, 0x70, 0x6d, 0x6f, 0x74, 0x78, 0x77, - 0x76, 0x77, 0x7d, 0x89, 0x90, 0x95, 0x94, 0x90, 0x8f, 0x8c, 0x86, 0x86, 0x80, 0x74, 0x72, 0x74, - 0x77, 0x81, 0x87, 0x87, 0x83, 0x83, 0x85, 0x8a, 0x8c, 0x8b, 0x86, 0x7d, 0x76, 0x76, 0x79, 0x79, - 0x7b, 0x7c, 0x77, 0x75, 0x77, 0x76, 0x73, 0x72, 0x72, 0x6f, 0x6e, 0x75, 0x7d, 0x84, 0x86, 0x85, - 0x87, 0x89, 0x85, 0x80, 0x7b, 0x7a, 0x7a, 0x7b, 0x80, 0x84, 0x85, 0x82, 0x79, 0x75, 0x79, 0x82, - 0x86, 0x88, 0x8c, 0x8d, 0x87, 0x85, 0x84, 0x82, 0x83, 0x83, 0x80, 0x77, 0x75, 0x74, 0x77, 0x81, - 0x86, 0x84, 0x7b, 0x76, 0x7d, 0x85, 0x85, 0x82, 0x80, 0x7d, 0x77, 0x72, 0x71, 0x73, 0x73, 0x73, - 0x71, 0x6d, 0x6d, 0x71, 0x76, 0x7b, 0x7d, 0x83, 0x8d, 0x8d, 0x85, 0x82, 0x80, 0x7c, 0x80, 0x84, - 0x7c, 0x75, 0x77, 0x79, 0x75, 0x72, 0x72, 0x6f, 0x6e, 0x6e, 0x6c, 0x6f, 0x78, 0x84, 0x8f, 0x97, - 0x98, 0x95, 0x93, 0x92, 0x91, 0x8f, 0x8e, 0x91, 0x93, 0x91, 0x8e, 0x8d, 0x92, 0x97, 0x95, 0x8f, - 0x89, 0x87, 0x87, 0x83, 0x83, 0x84, 0x83, 0x86, 0x85, 0x83, 0x84, 0x83, 0x7e, 0x77, 0x74, 0x73, - 0x74, 0x7b, 0x82, 0x80, 0x7b, 0x7d, 0x82, 0x7e, 0x7b, 0x7c, 0x7e, 0x82, 0x86, 0x88, 0x88, 0x88, - 0x85, 0x82, 0x80, 0x7c, 0x79, 0x7e, 0x82, 0x83, 0x84, 0x87, 0x89, 0x87, 0x83, 0x82, 0x7d, 0x79, - 0x7b, 0x7b, 0x74, 0x72, 0x77, 0x76, 0x6f, 0x6d, 0x72, 0x79, 0x7e, 0x7d, 0x7a, 0x74, 0x72, 0x78, - 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7b, 0x7b, 0x81, 0x87, 0x88, 0x87, 0x86, 0x83, 0x82, 0x85, 0x8a, - 0x8b, 0x8a, 0x8a, 0x8b, 0x89, 0x84, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x77, 0x6f, 0x6c, 0x69, 0x67, - 0x67, 0x66, 0x66, 0x67, 0x69, 0x6e, 0x71, 0x78, 0x85, 0x89, 0x88, 0x87, 0x83, 0x7d, 0x76, 0x6f, - 0x73, 0x7b, 0x7d, 0x7c, 0x78, 0x75, 0x7a, 0x83, 0x88, 0x8d, 0x8b, 0x89, 0x8c, 0x88, 0x85, 0x85, - 0x84, 0x85, 0x87, 0x87, 0x88, 0x86, 0x81, 0x7a, 0x74, 0x72, 0x70, 0x6c, 0x6c, 0x69, 0x69, 0x6d, - 0x77, 0x7d, 0x7d, 0x7c, 0x7c, 0x80, 0x81, 0x80, 0x80, 0x80, 0x83, 0x86, 0x86, 0x80, 0x77, 0x75, - 0x7a, 0x83, 0x89, 0x8e, 0x92, 0x91, 0x8d, 0x89, 0x89, 0x8d, 0x8e, 0x88, 0x82, 0x7e, 0x7e, 0x80, - 0x7e, 0x7c, 0x80, 0x82, 0x84, 0x89, 0x8a, 0x81, 0x7d, 0x82, 0x8b, 0x8c, 0x86, 0x85, 0x84, 0x84, - 0x85, 0x86, 0x87, 0x87, 0x87, 0x83, 0x7c, 0x7c, 0x83, 0x83, 0x80, 0x83, 0x89, 0x8b, 0x87, 0x82, - 0x7e, 0x81, 0x85, 0x88, 0x8a, 0x81, 0x76, 0x72, 0x6e, 0x69, 0x6a, 0x6b, 0x6b, 0x6b, 0x6c, 0x6f, - 0x77, 0x7a, 0x7c, 0x84, 0x88, 0x8a, 0x8a, 0x87, 0x81, 0x7b, 0x80, 0x86, 0x8a, 0x89, 0x89, 0x87, - 0x86, 0x8a, 0x8e, 0x8e, 0x8b, 0x8a, 0x8a, 0x88, 0x86, 0x82, 0x81, 0x84, 0x85, 0x83, 0x7b, 0x77, - 0x73, 0x6f, 0x6f, 0x74, 0x79, 0x7c, 0x76, 0x6e, 0x70, 0x73, 0x77, 0x7e, 0x81, 0x80, 0x81, 0x84, - 0x88, 0x8a, 0x89, 0x88, 0x8d, 0x94, 0x95, 0x90, 0x85, 0x7e, 0x83, 0x88, 0x89, 0x8e, 0x91, 0x8f, - 0x8a, 0x89, 0x88, 0x83, 0x7c, 0x78, 0x70, 0x6a, 0x69, 0x6b, 0x6c, 0x68, 0x65, 0x6a, 0x6d, 0x66, - 0x60, 0x60, 0x63, 0x67, 0x6d, 0x6e, 0x6a, 0x68, 0x68, 0x6a, 0x70, 0x73, 0x72, 0x72, 0x76, 0x7a, - 0x80, 0x85, 0x89, 0x8d, 0x90, 0x92, 0x98, 0x9c, 0x9c, 0x9b, 0x97, 0x90, 0x92, 0x99, 0x97, 0x8f, - 0x89, 0x83, 0x7c, 0x77, 0x73, 0x6d, 0x68, 0x67, 0x6b, 0x71, 0x78, 0x7d, 0x83, 0x88, 0x87, 0x85, - 0x83, 0x83, 0x84, 0x83, 0x83, 0x84, 0x89, 0x90, 0x94, 0x90, 0x8c, 0x93, 0x9b, 0x97, 0x94, 0x93, - 0x92, 0x92, 0x92, 0x91, 0x8d, 0x8d, 0x8e, 0x8c, 0x87, 0x7d, 0x73, 0x6c, 0x6a, 0x6a, 0x68, 0x64, - 0x5c, 0x56, 0x53, 0x56, 0x5e, 0x62, 0x64, 0x62, 0x62, 0x65, 0x6f, 0x79, 0x77, 0x74, 0x73, 0x71, - 0x71, 0x72, 0x72, 0x72, 0x76, 0x79, 0x7e, 0x81, 0x81, 0x80, 0x81, 0x83, 0x83, 0x82, 0x7c, 0x77, - 0x77, 0x75, 0x75, 0x77, 0x7c, 0x82, 0x83, 0x83, 0x84, 0x84, 0x81, 0x82, 0x88, 0x8a, 0x8d, 0x96, - 0x97, 0x94, 0x93, 0x94, 0x97, 0x98, 0x96, 0x91, 0x90, 0x93, 0x97, 0x99, 0x97, 0x94, 0x8f, 0x8b, - 0x8d, 0x90, 0x95, 0x97, 0x97, 0x95, 0x96, 0x9b, 0x9e, 0x99, 0x8e, 0x84, 0x7c, 0x7b, 0x79, 0x75, - 0x72, 0x6f, 0x6c, 0x6d, 0x72, 0x75, 0x76, 0x7c, 0x84, 0x82, 0x7b, 0x77, 0x7a, 0x7c, 0x7e, 0x82, - 0x85, 0x88, 0x88, 0x88, 0x89, 0x8e, 0x90, 0x8d, 0x87, 0x84, 0x85, 0x84, 0x82, 0x82, 0x7e, 0x79, - 0x76, 0x74, 0x73, 0x6f, 0x6a, 0x66, 0x6a, 0x70, 0x71, 0x6b, 0x64, 0x5e, 0x5c, 0x5d, 0x64, 0x6e, - 0x76, 0x79, 0x7b, 0x79, 0x7c, 0x85, 0x8b, 0x88, 0x80, 0x7c, 0x80, 0x85, 0x8a, 0x8d, 0x8f, 0x8f, - 0x8c, 0x8a, 0x8d, 0x91, 0x90, 0x8f, 0x8a, 0x84, 0x81, 0x7b, 0x76, 0x74, 0x72, 0x6f, 0x71, 0x75, - 0x77, 0x7a, 0x7c, 0x7d, 0x80, 0x80, 0x7a, 0x7b, 0x82, 0x86, 0x87, 0x82, 0x7e, 0x80, 0x84, 0x85, - 0x84, 0x80, 0x7b, 0x7d, 0x85, 0x89, 0x89, 0x86, 0x82, 0x7c, 0x79, 0x7d, 0x84, 0x88, 0x8a, 0x87, - 0x86, 0x8b, 0x8d, 0x8b, 0x85, 0x7c, 0x72, 0x66, 0x62, 0x64, 0x67, 0x69, 0x6a, 0x69, 0x69, 0x6a, - 0x6c, 0x71, 0x78, 0x7b, 0x75, 0x6d, 0x70, 0x78, 0x79, 0x76, 0x72, 0x6e, 0x70, 0x79, 0x7e, 0x7e, - 0x7e, 0x84, 0x85, 0x83, 0x86, 0x8b, 0x8b, 0x8b, 0x8d, 0x90, 0x8f, 0x8c, 0x8d, 0x8d, 0x8a, 0x86, - 0x83, 0x83, 0x81, 0x7a, 0x72, 0x6c, 0x67, 0x62, 0x5e, 0x5f, 0x66, 0x6e, 0x72, 0x70, 0x70, 0x7a, - 0x83, 0x81, 0x79, 0x78, 0x7a, 0x7c, 0x83, 0x8c, 0x92, 0x8e, 0x88, 0x87, 0x8a, 0x8f, 0x96, 0x98, - 0x92, 0x8f, 0x8b, 0x85, 0x87, 0x8d, 0x8f, 0x91, 0x93, 0x94, 0x96, 0x97, 0x98, 0x9c, 0xa0, 0x9f, - 0x9c, 0x9b, 0x9b, 0x9c, 0x9d, 0x98, 0x90, 0x8a, 0x85, 0x82, 0x83, 0x7e, 0x7d, 0x82, 0x82, 0x81, - 0x7e, 0x76, 0x6a, 0x66, 0x6a, 0x72, 0x78, 0x7e, 0x82, 0x80, 0x78, 0x73, 0x74, 0x77, 0x76, 0x76, - 0x73, 0x70, 0x6e, 0x6d, 0x72, 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x7c, 0x7c, 0x78, 0x73, - 0x6f, 0x71, 0x78, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7e, 0x80, 0x82, 0x81, 0x83, 0x8a, 0x8e, - 0x8a, 0x82, 0x7c, 0x7a, 0x7a, 0x79, 0x7c, 0x81, 0x83, 0x7d, 0x75, 0x6f, 0x6a, 0x66, 0x66, 0x67, - 0x68, 0x6e, 0x74, 0x7c, 0x87, 0x8d, 0x91, 0x90, 0x8e, 0x8f, 0x92, 0x92, 0x90, 0x92, 0x92, 0x93, - 0x93, 0x95, 0x96, 0x90, 0x8a, 0x87, 0x86, 0x86, 0x86, 0x80, 0x76, 0x74, 0x76, 0x78, 0x75, 0x71, - 0x74, 0x74, 0x71, 0x6e, 0x6c, 0x6b, 0x6b, 0x6d, 0x75, 0x76, 0x76, 0x76, 0x74, 0x76, 0x7c, 0x7e, - 0x7c, 0x7a, 0x7b, 0x82, 0x8a, 0x8d, 0x89, 0x85, 0x83, 0x85, 0x86, 0x81, 0x7b, 0x78, 0x79, 0x80, - 0x8a, 0x93, 0x96, 0x91, 0x8d, 0x8f, 0x91, 0x8e, 0x86, 0x85, 0x87, 0x84, 0x7e, 0x79, 0x77, 0x77, - 0x73, 0x70, 0x70, 0x71, 0x70, 0x6e, 0x70, 0x77, 0x80, 0x7e, 0x76, 0x72, 0x71, 0x72, 0x75, 0x7a, - 0x7d, 0x7e, 0x7a, 0x7a, 0x81, 0x85, 0x85, 0x85, 0x8b, 0x91, 0x94, 0x93, 0x90, 0x8d, 0x8b, 0x8a, - 0x8b, 0x8d, 0x8d, 0x8a, 0x82, 0x79, 0x71, 0x6a, 0x66, 0x61, 0x5d, 0x5b, 0x5c, 0x63, 0x69, 0x6e, - 0x70, 0x6e, 0x69, 0x6a, 0x6d, 0x6f, 0x75, 0x7b, 0x85, 0x8c, 0x8a, 0x85, 0x82, 0x84, 0x82, 0x83, - 0x8a, 0x92, 0x97, 0x9a, 0x9d, 0x9c, 0x97, 0x8f, 0x8b, 0x88, 0x85, 0x89, 0x8d, 0x8d, 0x87, 0x82, - 0x7d, 0x81, 0x88, 0x87, 0x86, 0x8c, 0x91, 0x90, 0x8d, 0x8b, 0x89, 0x87, 0x89, 0x8b, 0x89, 0x88, - 0x83, 0x7a, 0x71, 0x6c, 0x69, 0x65, 0x62, 0x62, 0x64, 0x69, 0x71, 0x77, 0x7c, 0x7c, 0x79, 0x76, - 0x76, 0x7a, 0x7e, 0x85, 0x8e, 0x90, 0x87, 0x7b, 0x74, 0x70, 0x73, 0x7c, 0x7e, 0x7e, 0x7c, 0x7a, - 0x77, 0x76, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x7a, 0x7d, 0x81, 0x83, 0x88, 0x8c, 0x8a, 0x8b, 0x8e, - 0x8e, 0x8d, 0x90, 0x94, 0x95, 0x93, 0x92, 0x91, 0x8e, 0x8f, 0x93, 0x92, 0x92, 0x8e, 0x88, 0x7e, - 0x76, 0x72, 0x72, 0x76, 0x77, 0x77, 0x77, 0x78, 0x79, 0x7c, 0x83, 0x81, 0x7a, 0x7c, 0x80, 0x80, - 0x80, 0x84, 0x88, 0x89, 0x89, 0x8c, 0x8d, 0x8e, 0x93, 0x92, 0x8c, 0x8a, 0x88, 0x85, 0x85, 0x85, - 0x84, 0x7c, 0x71, 0x69, 0x68, 0x6b, 0x6c, 0x6d, 0x6f, 0x6e, 0x6c, 0x6c, 0x6d, 0x6d, 0x72, 0x74, - 0x75, 0x76, 0x79, 0x80, 0x84, 0x83, 0x83, 0x85, 0x85, 0x85, 0x87, 0x83, 0x7d, 0x7a, 0x7c, 0x80, - 0x7e, 0x7c, 0x7c, 0x80, 0x85, 0x8d, 0x93, 0x96, 0x95, 0x91, 0x8c, 0x89, 0x89, 0x8d, 0x8f, 0x8e, - 0x85, 0x77, 0x6b, 0x62, 0x5a, 0x5a, 0x59, 0x57, 0x58, 0x5f, 0x65, 0x6a, 0x6f, 0x71, 0x70, 0x69, - 0x65, 0x69, 0x6f, 0x75, 0x7b, 0x80, 0x80, 0x7b, 0x7a, 0x7c, 0x7d, 0x7c, 0x7e, 0x82, 0x87, 0x8d, - 0x90, 0x90, 0x8c, 0x8c, 0x8e, 0x8d, 0x8c, 0x8f, 0x8c, 0x83, 0x78, 0x73, 0x70, 0x69, 0x63, 0x61, - 0x61, 0x5f, 0x5e, 0x60, 0x62, 0x62, 0x5f, 0x5d, 0x5e, 0x61, 0x69, 0x75, 0x81, 0x84, 0x83, 0x7e, - 0x80, 0x89, 0x93, 0x98, 0x96, 0x94, 0x9b, 0x9e, 0x9e, 0xa2, 0xa6, 0xa2, 0x9a, 0x95, 0x94, 0x9a, - 0x9e, 0x9c, 0x9a, 0x95, 0x91, 0x90, 0x92, 0x91, 0x92, 0x98, 0x9b, 0x9e, 0x9e, 0xa0, 0xa2, 0xa0, - 0xa2, 0xa1, 0x9b, 0x95, 0x92, 0x91, 0x88, 0x7d, 0x7b, 0x7d, 0x7d, 0x7e, 0x7d, 0x76, 0x72, 0x71, - 0x71, 0x76, 0x7e, 0x82, 0x7e, 0x7a, 0x78, 0x7a, 0x7e, 0x80, 0x7c, 0x74, 0x6b, 0x67, 0x6b, 0x72, - 0x71, 0x6f, 0x6d, 0x6c, 0x6e, 0x70, 0x6f, 0x71, 0x74, 0x70, 0x6c, 0x6d, 0x71, 0x75, 0x77, 0x7b, - 0x7e, 0x82, 0x85, 0x87, 0x88, 0x86, 0x82, 0x7e, 0x7d, 0x80, 0x86, 0x8d, 0x91, 0x8a, 0x83, 0x84, - 0x81, 0x7c, 0x7c, 0x7c, 0x76, 0x71, 0x6e, 0x6e, 0x6e, 0x6d, 0x6e, 0x6d, 0x6d, 0x6f, 0x73, 0x7c, - 0x81, 0x82, 0x7d, 0x7c, 0x82, 0x8a, 0x93, 0x94, 0x8e, 0x8b, 0x8c, 0x90, 0x97, 0x9c, 0x99, 0x94, - 0x90, 0x8d, 0x90, 0x91, 0x8a, 0x7d, 0x70, 0x5e, 0x5c, 0x6d, 0x71, 0x71, 0x72, 0x6f, 0x64, 0x60, - 0x61, 0x5f, 0x5e, 0x61, 0x69, 0x70, 0x6f, 0x6d, 0x71, 0x79, 0x7c, 0x79, 0x77, 0x77, 0x79, 0x80, - 0x82, 0x80, 0x80, 0x7e, 0x81, 0x88, 0x8d, 0x8d, 0x8a, 0x8b, 0x91, 0x9a, 0xa1, 0xa4, 0x9d, 0x96, - 0x97, 0x99, 0x93, 0x95, 0x96, 0x8b, 0x7a, 0x6f, 0x6a, 0x67, 0x6b, 0x6f, 0x68, 0x65, 0x67, 0x64, - 0x60, 0x62, 0x61, 0x5e, 0x60, 0x65, 0x6a, 0x71, 0x77, 0x7a, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x87, - 0x8c, 0x88, 0x85, 0x87, 0x8a, 0x8d, 0x92, 0x97, 0x95, 0x8f, 0x86, 0x84, 0x86, 0x83, 0x8b, 0x89, - 0x7d, 0x77, 0x74, 0x71, 0x70, 0x6b, 0x6a, 0x69, 0x67, 0x6a, 0x73, 0x7b, 0x76, 0x7a, 0x8b, 0x93, - 0x97, 0x97, 0x95, 0x93, 0x97, 0xa1, 0xaa, 0xaf, 0xab, 0x9f, 0x9a, 0x9a, 0x99, 0x99, 0x99, 0x99, - 0x97, 0x98, 0x98, 0x94, 0x90, 0x90, 0x93, 0x8e, 0x93, 0x94, 0x8e, 0x8a, 0x88, 0x8f, 0x91, 0x8f, - 0x8b, 0x84, 0x81, 0x80, 0x80, 0x79, 0x6f, 0x64, 0x5c, 0x5a, 0x5b, 0x57, 0x55, 0x5d, 0x5a, 0x57, - 0x66, 0x6b, 0x66, 0x64, 0x70, 0x7e, 0x89, 0x90, 0x90, 0x8e, 0x8e, 0x8c, 0x84, 0x86, 0x83, 0x75, - 0x6d, 0x67, 0x63, 0x6d, 0x70, 0x71, 0x74, 0x75, 0x73, 0x71, 0x78, 0x7e, 0x7e, 0x74, 0x6e, 0x71, - 0x70, 0x6f, 0x6c, 0x6e, 0x74, 0x77, 0x7a, 0x80, 0x85, 0x86, 0x90, 0x8f, 0x87, 0x8f, 0x90, 0x8b, - 0x89, 0x85, 0x8c, 0x8e, 0x8b, 0x8d, 0x94, 0x94, 0x89, 0x7d, 0x73, 0x6b, 0x66, 0x66, 0x60, 0x65, - 0x71, 0x75, 0x72, 0x76, 0x87, 0x8a, 0x88, 0x8f, 0x92, 0x9a, 0xa0, 0x91, 0x91, 0x95, 0x90, 0x92, - 0x9d, 0xa2, 0x9e, 0x9a, 0x95, 0x94, 0x92, 0x8d, 0x8c, 0x84, 0x77, 0x73, 0x6f, 0x62, 0x61, 0x6d, - 0x70, 0x6b, 0x6f, 0x6d, 0x6c, 0x7a, 0x87, 0x9b, 0xa0, 0xa0, 0x92, 0x81, 0x80, 0x7e, 0x7e, 0x7c, - 0x78, 0x76, 0x76, 0x74, 0x78, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, 0x7d, 0x86, 0x83, 0x74, 0x7d, 0x8d, - 0x92, 0x95, 0x99, 0x96, 0x92, 0x8c, 0x81, 0x76, 0x7a, 0x73, 0x60, 0x5c, 0x59, 0x4f, 0x4e, 0x50, - 0x51, 0x5a, 0x54, 0x50, 0x54, 0x57, 0x60, 0x6e, 0x6f, 0x72, 0x72, 0x6e, 0x62, 0x66, 0x73, 0x72, - 0x74, 0x84, 0x95, 0x9a, 0x9a, 0x95, 0x92, 0x9a, 0x9a, 0x88, 0x8a, 0x88, 0x87, 0x82, 0x7a, 0x7e, - 0x8d, 0x9c, 0xa4, 0xa0, 0x8e, 0x79, 0x84, 0x8d, 0x87, 0x7a, 0x70, 0x6a, 0x62, 0x5f, 0x5d, 0x5d, - 0x65, 0x6b, 0x73, 0x7c, 0x7b, 0x71, 0x72, 0x75, 0x72, 0x89, 0x9d, 0xa0, 0x94, 0x8e, 0x92, 0x96, - 0xa9, 0xb8, 0xae, 0xa2, 0x98, 0x8e, 0x8c, 0x8a, 0x8a, 0x8d, 0x8d, 0x8b, 0x83, 0x71, 0x85, 0x9e, - 0xa7, 0xaa, 0xa8, 0x9a, 0x93, 0x8c, 0x85, 0x83, 0x80, 0x85, 0x86, 0x7a, 0x70, 0x71, 0x6f, 0x6d, - 0x70, 0x69, 0x6b, 0x70, 0x6f, 0x6c, 0x6a, 0x66, 0x75, 0x81, 0x8f, 0x97, 0x89, 0x85, 0x84, 0x80, - 0x77, 0x77, 0x80, 0x7d, 0x6f, 0x6b, 0x64, 0x60, 0x75, 0x81, 0x7c, 0x71, 0x67, 0x68, 0x7a, 0x80, - 0x79, 0x81, 0x85, 0x80, 0x79, 0x7e, 0x85, 0x7e, 0x80, 0x75, 0x6c, 0x76, 0x86, 0x90, 0x96, 0x98, - 0x91, 0x95, 0x9a, 0x9e, 0x9b, 0x8b, 0x75, 0x8a, 0x99, 0x8c, 0x82, 0x85, 0x91, 0x8d, 0x7c, 0x6a, - 0x61, 0x74, 0x7e, 0x78, 0x6f, 0x68, 0x67, 0x74, 0x83, 0x81, 0x8b, 0x9d, 0xa0, 0x94, 0x90, 0x8f, - 0x93, 0x8f, 0x87, 0x88, 0x8a, 0x83, 0x90, 0x9d, 0x8a, 0x7e, 0x7c, 0x8c, 0x9c, 0x89, 0x73, 0x71, - 0x75, 0x73, 0x64, 0x61, 0x68, 0x63, 0x65, 0x67, 0x5b, 0x72, 0x93, 0x93, 0x82, 0x78, 0x75, 0x5e, - 0x4e, 0x58, 0x69, 0x6c, 0x66, 0x70, 0x71, 0x65, 0x6c, 0x79, 0x82, 0x87, 0x81, 0x77, 0x73, 0x7a, - 0x82, 0x81, 0x80, 0x8b, 0x97, 0x98, 0x8d, 0x86, 0x9b, 0xa4, 0x92, 0x86, 0x8e, 0x83, 0x6b, 0x5b, - 0x4c, 0x51, 0x66, 0x66, 0x63, 0x5e, 0x51, 0x4f, 0x61, 0x6c, 0x75, 0x7e, 0x79, 0x6f, 0x67, 0x66, - 0x64, 0x5d, 0x5c, 0x6b, 0x76, 0x75, 0x75, 0x8b, 0x9d, 0x9e, 0x9e, 0x99, 0x88, 0x84, 0x8c, 0x8f, - 0x93, 0x9e, 0xa2, 0x9c, 0x97, 0x96, 0x95, 0x92, 0x92, 0x92, 0x8c, 0x93, 0x94, 0x90, 0x89, 0x7a, - 0x6f, 0x66, 0x66, 0x66, 0x6d, 0x73, 0x7e, 0x88, 0x86, 0x90, 0x93, 0x88, 0x85, 0x83, 0x83, 0x87, - 0x8a, 0x91, 0x93, 0x94, 0x96, 0x95, 0xa1, 0xae, 0xa9, 0xa1, 0x9f, 0xa1, 0x9e, 0x95, 0x95, 0x92, - 0x87, 0x84, 0x8b, 0x8e, 0x98, 0xa5, 0xaa, 0x9e, 0x94, 0x8b, 0x79, 0x6d, 0x68, 0x6e, 0x83, 0x8c, - 0x78, 0x69, 0x70, 0x6f, 0x6e, 0x6c, 0x64, 0x57, 0x56, 0x6f, 0x8a, 0x8b, 0x81, 0x7c, 0x7a, 0x7c, - 0x6e, 0x62, 0x6c, 0x76, 0x7c, 0x82, 0x8a, 0x8c, 0x75, 0x67, 0x61, 0x63, 0x6d, 0x7c, 0x85, 0x75, - 0x67, 0x6d, 0x70, 0x71, 0x71, 0x72, 0x69, 0x6f, 0x7b, 0x84, 0x7d, 0x75, 0x7c, 0x84, 0x83, 0x79, - 0x70, 0x70, 0x81, 0x8e, 0x93, 0x94, 0x82, 0x6e, 0x6d, 0x83, 0x98, 0xa5, 0xa7, 0x9a, 0x85, 0x84, - 0x85, 0x74, 0x67, 0x60, 0x60, 0x6f, 0x84, 0x8a, 0x85, 0x7a, 0x79, 0x7d, 0x7c, 0x79, 0x78, 0x6f, - 0x73, 0x87, 0x9a, 0x9d, 0x99, 0x92, 0x83, 0x7d, 0x7e, 0x7c, 0x87, 0x92, 0x8c, 0x86, 0x8d, 0x91, - 0x99, 0x9b, 0x88, 0x7b, 0x71, 0x72, 0x6c, 0x5f, 0x65, 0x73, 0x87, 0x8b, 0x81, 0x77, 0x80, 0x8b, - 0x85, 0x7d, 0x81, 0x73, 0x67, 0x6a, 0x7a, 0x81, 0x7a, 0x75, 0x83, 0x81, 0x70, 0x74, 0x7c, 0x75, - 0x6f, 0x70, 0x74, 0x79, 0x7b, 0x77, 0x78, 0x81, 0x89, 0x98, 0x96, 0x92, 0x90, 0x88, 0x81, 0x78, - 0x7d, 0x87, 0x73, 0x5d, 0x55, 0x56, 0x57, 0x5c, 0x68, 0x6a, 0x62, 0x6a, 0x75, 0x79, 0x74, 0x70, - 0x65, 0x52, 0x48, 0x4d, 0x5c, 0x66, 0x6d, 0x88, 0x99, 0x8f, 0x88, 0x96, 0x9c, 0x9e, 0x9f, 0x92, - 0x8d, 0x8b, 0x9b, 0xac, 0xaa, 0xa9, 0x9f, 0x96, 0x89, 0x86, 0x84, 0x94, 0xa1, 0x9a, 0x8d, 0x7d, - 0x87, 0xa2, 0x9e, 0x91, 0x93, 0x97, 0x94, 0x8c, 0x7b, 0x74, 0x71, 0x6c, 0x81, 0x80, 0x80, 0x79, - 0x64, 0x5e, 0x61, 0x6a, 0x78, 0x80, 0x79, 0x78, 0x87, 0x81, 0x88, 0x99, 0x99, 0x93, 0x8d, 0x85, - 0x72, 0x69, 0x6e, 0x7b, 0x8e, 0x98, 0x92, 0x7e, 0x76, 0x81, 0x96, 0xa1, 0x95, 0x88, 0x7d, 0x6f, - 0x68, 0x76, 0x7e, 0x75, 0x6a, 0x62, 0x68, 0x6d, 0x66, 0x5d, 0x50, 0x50, 0x61, 0x6a, 0x6c, 0x62, - 0x5b, 0x5a, 0x64, 0x79, 0x7b, 0x74, 0x7d, 0x7b, 0x74, 0x80, 0x86, 0x85, 0x83, 0x85, 0x8d, 0x86, - 0x86, 0x8c, 0x9d, 0x9f, 0x9b, 0x9f, 0x8e, 0x83, 0x88, 0x89, 0x81, 0x76, 0x80, 0x87, 0x84, 0x82, - 0x8d, 0x9a, 0x9a, 0x8e, 0x8d, 0x9b, 0x9c, 0xa3, 0xa5, 0x93, 0x8b, 0x85, 0x92, 0xa1, 0xaa, 0xa3, - 0x9c, 0x98, 0x8a, 0x8a, 0x8d, 0x89, 0x8c, 0x93, 0x86, 0x69, 0x62, 0x7e, 0x8d, 0x8b, 0x8c, 0x91, - 0x91, 0x8c, 0x89, 0x85, 0x82, 0x84, 0x8e, 0x88, 0x74, 0x73, 0x76, 0x6a, 0x73, 0x8e, 0x95, 0x93, - 0x8f, 0x89, 0x89, 0x83, 0x80, 0x8c, 0x86, 0x7b, 0x71, 0x65, 0x57, 0x4a, 0x4e, 0x5d, 0x72, 0x74, - 0x64, 0x53, 0x4c, 0x4a, 0x56, 0x69, 0x6c, 0x69, 0x68, 0x5f, 0x57, 0x5b, 0x6e, 0x84, 0x86, 0x83, - 0x89, 0x8a, 0x79, 0x6e, 0x6e, 0x6a, 0x6b, 0x6c, 0x70, 0x72, 0x6a, 0x6b, 0x81, 0xac, 0xb8, 0xa4, - 0x9d, 0x93, 0x89, 0x82, 0x72, 0x6f, 0x7c, 0x85, 0x86, 0x82, 0x75, 0x72, 0x6c, 0x6c, 0x86, 0x90, - 0x87, 0x75, 0x65, 0x61, 0x5d, 0x5e, 0x65, 0x69, 0x6b, 0x6a, 0x64, 0x56, 0x54, 0x68, 0x76, 0x75, - 0x7c, 0x8c, 0x90, 0x91, 0x93, 0x8f, 0x9f, 0xa9, 0xa2, 0xa1, 0xa0, 0x9e, 0x94, 0x9f, 0xab, 0xa8, - 0xa1, 0x94, 0x85, 0x78, 0x6f, 0x64, 0x6b, 0x77, 0x7d, 0x7e, 0x7a, 0x73, 0x62, 0x58, 0x5d, 0x65, - 0x6d, 0x70, 0x70, 0x72, 0x66, 0x5d, 0x6b, 0x78, 0x7b, 0x86, 0x91, 0x92, 0x92, 0x95, 0xa1, 0xb0, - 0xa6, 0x9d, 0x98, 0x93, 0x8e, 0x88, 0x8c, 0x93, 0x92, 0x8b, 0x82, 0x7c, 0x82, 0x8d, 0x94, 0x93, - 0x9a, 0x99, 0x93, 0x8f, 0x87, 0x84, 0x86, 0x8c, 0x8d, 0x8c, 0x89, 0x89, 0x84, 0x72, 0x61, 0x59, - 0x61, 0x69, 0x6e, 0x78, 0x7c, 0x7d, 0x86, 0x96, 0x9c, 0x90, 0x86, 0x7d, 0x7e, 0x85, 0x8c, 0x94, - 0x96, 0x92, 0x89, 0x83, 0x7b, 0x82, 0x91, 0x8f, 0x8c, 0x92, 0x8e, 0x8a, 0x7d, 0x74, 0x7a, 0x83, - 0x82, 0x7c, 0x73, 0x6e, 0x6d, 0x6d, 0x6b, 0x60, 0x53, 0x5d, 0x6a, 0x73, 0x7c, 0x88, 0x8d, 0x8f, - 0x98, 0x94, 0x8c, 0x8a, 0x8a, 0x8f, 0x8d, 0x8d, 0x92, 0x94, 0x8e, 0x81, 0x73, 0x6d, 0x73, 0x7b, - 0x78, 0x6f, 0x74, 0x72, 0x6f, 0x6e, 0x6e, 0x6b, 0x6e, 0x73, 0x70, 0x6e, 0x6f, 0x72, 0x77, 0x77, - 0x72, 0x69, 0x68, 0x75, 0x80, 0x87, 0x92, 0x98, 0x9b, 0xa3, 0x93, 0x81, 0x7b, 0x7e, 0x84, 0x76, - 0x6f, 0x6f, 0x70, 0x71, 0x6e, 0x62, 0x5f, 0x67, 0x64, 0x63, 0x66, 0x6c, 0x6a, 0x65, 0x6b, 0x73, - 0x78, 0x80, 0x82, 0x85, 0x86, 0x87, 0x8e, 0x89, 0x78, 0x69, 0x5c, 0x58, 0x68, 0x7a, 0x84, 0x89, - 0x8c, 0x96, 0x9e, 0x8f, 0x82, 0x7c, 0x84, 0x88, 0x85, 0x89, 0x8d, 0x8e, 0x92, 0x95, 0x93, 0x8f, - 0x8b, 0x7c, 0x6c, 0x6d, 0x73, 0x6c, 0x66, 0x62, 0x64, 0x67, 0x67, 0x65, 0x64, 0x62, 0x68, 0x75, - 0x7e, 0x7a, 0x72, 0x6d, 0x70, 0x7a, 0x8d, 0x9b, 0x9f, 0xa0, 0xa5, 0xa5, 0x9f, 0xa2, 0xa6, 0xa7, - 0xa6, 0xa3, 0xa4, 0xa7, 0xa6, 0xa1, 0x9f, 0x9b, 0x99, 0x96, 0x8b, 0x7e, 0x79, 0x79, 0x7d, 0x7b, - 0x74, 0x6d, 0x6a, 0x6a, 0x6a, 0x6a, 0x6e, 0x76, 0x7d, 0x83, 0x83, 0x7e, 0x78, 0x76, 0x79, 0x83, - 0x8c, 0x8f, 0x8a, 0x85, 0x80, 0x7c, 0x7e, 0x85, 0x87, 0x83, 0x80, 0x83, 0x89, 0x8d, 0x8c, 0x8d, - 0x8c, 0x8d, 0x91, 0x8e, 0x8a, 0x87, 0x87, 0x8c, 0x91, 0x91, 0x91, 0x90, 0x8a, 0x85, 0x81, 0x81, - 0x84, 0x82, 0x78, 0x6e, 0x65, 0x61, 0x63, 0x68, 0x6a, 0x6c, 0x6f, 0x72, 0x6b, 0x5f, 0x5c, 0x61, - 0x6a, 0x6d, 0x6a, 0x6a, 0x70, 0x75, 0x7a, 0x7d, 0x7e, 0x7d, 0x7c, 0x78, 0x75, 0x76, 0x7b, 0x81, - 0x7c, 0x77, 0x72, 0x6f, 0x73, 0x72, 0x6e, 0x6a, 0x6e, 0x79, 0x83, 0x81, 0x78, 0x73, 0x72, 0x74, - 0x79, 0x7e, 0x83, 0x83, 0x80, 0x80, 0x84, 0x8a, 0x91, 0x96, 0x98, 0x96, 0x93, 0x93, 0x94, 0x93, - 0x90, 0x8b, 0x84, 0x80, 0x7b, 0x79, 0x78, 0x7e, 0x84, 0x83, 0x7b, 0x77, 0x78, 0x7d, 0x83, 0x84, - 0x80, 0x82, 0x8c, 0x93, 0x9a, 0x9f, 0x9e, 0x9e, 0x9f, 0xa4, 0xab, 0xa9, 0xa3, 0x9a, 0x90, 0x87, - 0x85, 0x83, 0x7d, 0x77, 0x6f, 0x6c, 0x70, 0x72, 0x6f, 0x6b, 0x66, 0x64, 0x65, 0x63, 0x62, 0x66, - 0x70, 0x78, 0x76, 0x73, 0x77, 0x7d, 0x86, 0x8a, 0x85, 0x82, 0x85, 0x88, 0x89, 0x88, 0x84, 0x82, - 0x7c, 0x79, 0x79, 0x7e, 0x88, 0x8f, 0x8f, 0x88, 0x83, 0x84, 0x88, 0x8c, 0x8c, 0x87, 0x84, 0x84, - 0x86, 0x8d, 0x8d, 0x87, 0x7d, 0x76, 0x73, 0x71, 0x71, 0x74, 0x71, 0x6c, 0x65, 0x61, 0x61, 0x60, - 0x60, 0x5e, 0x5c, 0x60, 0x65, 0x67, 0x69, 0x6a, 0x6a, 0x6b, 0x6d, 0x6f, 0x78, 0x86, 0x8f, 0x92, - 0x91, 0x8e, 0x8d, 0x94, 0x9e, 0xa5, 0xa7, 0xa7, 0xa5, 0xa4, 0xa1, 0x9b, 0x92, 0x88, 0x7d, 0x74, - 0x6e, 0x70, 0x75, 0x71, 0x65, 0x5d, 0x5b, 0x5d, 0x5d, 0x5b, 0x57, 0x58, 0x5f, 0x66, 0x6a, 0x6c, - 0x70, 0x73, 0x73, 0x6f, 0x6d, 0x74, 0x7e, 0x82, 0x80, 0x7c, 0x7a, 0x7d, 0x84, 0x8d, 0x93, 0x95, - 0x97, 0x93, 0x8c, 0x8b, 0x8e, 0x94, 0x97, 0x96, 0x98, 0x98, 0x97, 0x97, 0x94, 0x8b, 0x82, 0x7e, - 0x7a, 0x77, 0x75, 0x72, 0x72, 0x6f, 0x70, 0x75, 0x76, 0x72, 0x6d, 0x6e, 0x6c, 0x6b, 0x6f, 0x73, - 0x75, 0x73, 0x6f, 0x6f, 0x71, 0x75, 0x7a, 0x81, 0x88, 0x8a, 0x8a, 0x8a, 0x8c, 0x92, 0x97, 0x95, - 0x93, 0x92, 0x8d, 0x8e, 0x8e, 0x93, 0x99, 0x9a, 0x9a, 0x9a, 0x9b, 0x96, 0x92, 0x94, 0x93, 0x93, - 0x92, 0x90, 0x92, 0x93, 0x93, 0x8f, 0x8f, 0x95, 0x9c, 0x9c, 0x96, 0x92, 0x94, 0x98, 0x90, 0x8a, - 0x8e, 0x92, 0x93, 0x91, 0x92, 0x95, 0x96, 0x93, 0x90, 0x90, 0x8c, 0x86, 0x84, 0x84, 0x86, 0x84, - 0x7c, 0x79, 0x74, 0x6c, 0x67, 0x68, 0x6e, 0x75, 0x78, 0x75, 0x70, 0x6d, 0x69, 0x64, 0x63, 0x66, - 0x68, 0x67, 0x67, 0x66, 0x6b, 0x6f, 0x71, 0x73, 0x74, 0x73, 0x75, 0x75, 0x72, 0x6f, 0x6a, 0x63, - 0x5d, 0x5d, 0x5f, 0x60, 0x62, 0x66, 0x69, 0x6a, 0x6c, 0x6f, 0x71, 0x71, 0x71, 0x73, 0x78, 0x79, - 0x79, 0x7b, 0x76, 0x71, 0x72, 0x73, 0x77, 0x79, 0x79, 0x7c, 0x7e, 0x7c, 0x7c, 0x81, 0x83, 0x83, - 0x80, 0x81, 0x84, 0x8a, 0x8d, 0x8b, 0x86, 0x85, 0x87, 0x81, 0x79, 0x74, 0x73, 0x72, 0x6a, 0x65, - 0x65, 0x63, 0x64, 0x6b, 0x70, 0x71, 0x6d, 0x6d, 0x70, 0x74, 0x79, 0x7d, 0x80, 0x7d, 0x7e, 0x84, - 0x88, 0x89, 0x89, 0x85, 0x81, 0x85, 0x90, 0x99, 0x99, 0x97, 0x96, 0x97, 0x96, 0x93, 0x94, 0x96, - 0x94, 0x92, 0x95, 0x99, 0x98, 0x97, 0x94, 0x8e, 0x88, 0x87, 0x88, 0x84, 0x7a, 0x78, 0x78, 0x72, - 0x70, 0x74, 0x76, 0x73, 0x74, 0x78, 0x77, 0x73, 0x77, 0x7c, 0x7e, 0x7e, 0x80, 0x87, 0x91, 0x9b, - 0xa4, 0xa5, 0xa1, 0x99, 0x94, 0x93, 0x96, 0x98, 0x99, 0x97, 0x90, 0x84, 0x7e, 0x81, 0x84, 0x85, - 0x7d, 0x73, 0x6d, 0x72, 0x7b, 0x82, 0x83, 0x82, 0x81, 0x82, 0x81, 0x85, 0x8a, 0x8e, 0x8e, 0x8b, - 0x88, 0x83, 0x82, 0x81, 0x7c, 0x79, 0x76, 0x78, 0x7b, 0x78, 0x75, 0x74, 0x79, 0x80, 0x86, 0x8b, - 0x8b, 0x88, 0x85, 0x80, 0x7c, 0x82, 0x88, 0x8e, 0x8e, 0x86, 0x7d, 0x7a, 0x79, 0x7a, 0x7e, 0x7d, - 0x77, 0x70, 0x6d, 0x6e, 0x6f, 0x74, 0x78, 0x75, 0x6c, 0x68, 0x6e, 0x77, 0x7e, 0x7d, 0x78, 0x75, - 0x7b, 0x86, 0x88, 0x89, 0x8c, 0x89, 0x83, 0x7e, 0x80, 0x84, 0x84, 0x81, 0x81, 0x80, 0x7d, 0x81, - 0x84, 0x80, 0x7a, 0x73, 0x6c, 0x6b, 0x6d, 0x71, 0x78, 0x7c, 0x7c, 0x78, 0x71, 0x6b, 0x6e, 0x79, - 0x7b, 0x75, 0x74, 0x7b, 0x82, 0x84, 0x83, 0x81, 0x7e, 0x80, 0x87, 0x90, 0x94, 0x8b, 0x7e, 0x75, - 0x75, 0x7d, 0x83, 0x82, 0x7c, 0x72, 0x6a, 0x68, 0x69, 0x6d, 0x6c, 0x64, 0x5d, 0x5f, 0x64, 0x67, - 0x6d, 0x74, 0x78, 0x75, 0x6f, 0x6d, 0x6f, 0x76, 0x81, 0x88, 0x8c, 0x88, 0x82, 0x80, 0x86, 0x8e, - 0x93, 0x94, 0x96, 0x9d, 0xa1, 0x9f, 0x9a, 0x94, 0x8d, 0x8a, 0x8a, 0x8d, 0x94, 0x93, 0x86, 0x79, - 0x7a, 0x7e, 0x7d, 0x7a, 0x73, 0x69, 0x61, 0x63, 0x6e, 0x75, 0x77, 0x75, 0x76, 0x7c, 0x82, 0x85, - 0x8b, 0x92, 0x92, 0x8b, 0x82, 0x7a, 0x7a, 0x7e, 0x84, 0x89, 0x8e, 0x92, 0x91, 0x8c, 0x8d, 0x91, - 0x91, 0x8d, 0x8c, 0x8e, 0x90, 0x94, 0x9d, 0xa4, 0xa1, 0x99, 0x92, 0x90, 0x8f, 0x8a, 0x82, 0x78, - 0x73, 0x72, 0x74, 0x73, 0x6e, 0x67, 0x60, 0x5c, 0x5f, 0x63, 0x65, 0x65, 0x6a, 0x74, 0x7b, 0x7c, - 0x81, 0x87, 0x85, 0x7e, 0x7d, 0x84, 0x8c, 0x8f, 0x8d, 0x89, 0x8a, 0x8f, 0x8e, 0x8c, 0x8c, 0x89, - 0x83, 0x80, 0x7e, 0x7b, 0x78, 0x76, 0x74, 0x6e, 0x6a, 0x68, 0x68, 0x6f, 0x7a, 0x81, 0x7b, 0x71, - 0x66, 0x60, 0x5f, 0x67, 0x72, 0x73, 0x6c, 0x61, 0x5e, 0x64, 0x68, 0x6c, 0x74, 0x7e, 0x83, 0x7d, - 0x7c, 0x82, 0x82, 0x82, 0x87, 0x8c, 0x8e, 0x8f, 0x90, 0x90, 0x92, 0x96, 0x97, 0x93, 0x88, 0x7b, - 0x74, 0x76, 0x86, 0x94, 0x98, 0x96, 0x93, 0x91, 0x8e, 0x88, 0x89, 0x90, 0x96, 0x95, 0x8f, 0x87, - 0x7e, 0x78, 0x7a, 0x84, 0x8a, 0x89, 0x83, 0x81, 0x89, 0x90, 0x90, 0x91, 0x93, 0x93, 0x90, 0x8d, - 0x91, 0x9a, 0x9d, 0x98, 0x90, 0x8a, 0x88, 0x84, 0x7c, 0x7b, 0x80, 0x81, 0x80, 0x79, 0x70, 0x6c, - 0x6c, 0x70, 0x79, 0x7d, 0x7d, 0x7b, 0x7d, 0x83, 0x84, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x82, 0x85, - 0x84, 0x7e, 0x7a, 0x74, 0x6e, 0x6c, 0x6e, 0x73, 0x7d, 0x86, 0x84, 0x79, 0x74, 0x75, 0x75, 0x75, - 0x74, 0x70, 0x6a, 0x63, 0x65, 0x6c, 0x71, 0x73, 0x75, 0x79, 0x77, 0x70, 0x71, 0x7a, 0x7c, 0x7b, - 0x7a, 0x76, 0x72, 0x75, 0x7a, 0x81, 0x87, 0x8b, 0x89, 0x82, 0x7a, 0x7a, 0x7e, 0x82, 0x83, 0x86, - 0x84, 0x7c, 0x74, 0x72, 0x78, 0x7b, 0x7d, 0x7c, 0x76, 0x6b, 0x62, 0x62, 0x6a, 0x72, 0x78, 0x77, - 0x6f, 0x69, 0x6d, 0x6e, 0x71, 0x78, 0x81, 0x87, 0x83, 0x80, 0x82, 0x84, 0x84, 0x8b, 0x8d, 0x86, - 0x81, 0x80, 0x87, 0x93, 0x99, 0x9a, 0x9b, 0x97, 0x8f, 0x8d, 0x91, 0x99, 0x9e, 0x9f, 0x99, 0x8e, - 0x88, 0x86, 0x81, 0x7c, 0x80, 0x80, 0x7b, 0x73, 0x6c, 0x6b, 0x6c, 0x6e, 0x71, 0x74, 0x72, 0x6f, - 0x6f, 0x73, 0x79, 0x80, 0x85, 0x84, 0x82, 0x80, 0x82, 0x82, 0x81, 0x82, 0x7e, 0x78, 0x72, 0x70, - 0x70, 0x73, 0x78, 0x80, 0x81, 0x7a, 0x75, 0x75, 0x77, 0x75, 0x71, 0x6e, 0x6f, 0x73, 0x74, 0x77, - 0x7d, 0x84, 0x88, 0x87, 0x85, 0x80, 0x7d, 0x7d, 0x7a, 0x78, 0x79, 0x7b, 0x7d, 0x85, 0x8d, 0x92, - 0x95, 0x9b, 0x9d, 0x99, 0x96, 0x96, 0x9a, 0x9f, 0xa1, 0xa0, 0x9b, 0x95, 0x92, 0x95, 0x99, 0x97, - 0x95, 0x97, 0x92, 0x8c, 0x89, 0x8b, 0x8a, 0x88, 0x85, 0x83, 0x81, 0x7e, 0x83, 0x8a, 0x8e, 0x8f, - 0x8b, 0x7a, 0x6a, 0x62, 0x69, 0x77, 0x80, 0x83, 0x81, 0x7a, 0x79, 0x78, 0x80, 0x8e, 0x94, 0x91, - 0x90, 0x8c, 0x89, 0x87, 0x86, 0x87, 0x8b, 0x91, 0x92, 0x8d, 0x87, 0x82, 0x7e, 0x7d, 0x7b, 0x78, - 0x6f, 0x67, 0x68, 0x72, 0x7c, 0x7b, 0x78, 0x75, 0x70, 0x68, 0x5e, 0x5b, 0x60, 0x69, 0x70, 0x72, - 0x71, 0x6e, 0x6c, 0x6a, 0x6b, 0x71, 0x72, 0x6c, 0x61, 0x5d, 0x60, 0x64, 0x68, 0x6d, 0x6f, 0x6a, - 0x63, 0x63, 0x67, 0x66, 0x61, 0x5c, 0x5b, 0x5f, 0x64, 0x6b, 0x6f, 0x6c, 0x69, 0x68, 0x69, 0x6a, - 0x6e, 0x72, 0x75, 0x7b, 0x82, 0x83, 0x84, 0x89, 0x8e, 0x92, 0x95, 0x99, 0x9a, 0x94, 0x93, 0x95, - 0x97, 0x99, 0x95, 0x95, 0x93, 0x93, 0x98, 0x99, 0x99, 0x94, 0x92, 0x96, 0x97, 0x93, 0x8e, 0x8e, - 0x8c, 0x89, 0x88, 0x85, 0x7b, 0x6f, 0x6e, 0x78, 0x83, 0x8a, 0x8b, 0x82, 0x6f, 0x64, 0x61, 0x6a, - 0x70, 0x6f, 0x6f, 0x72, 0x7c, 0x83, 0x85, 0x87, 0x88, 0x85, 0x84, 0x86, 0x86, 0x85, 0x89, 0x8f, - 0x92, 0x8f, 0x87, 0x7d, 0x77, 0x76, 0x77, 0x77, 0x76, 0x6d, 0x62, 0x5d, 0x60, 0x68, 0x6e, 0x70, - 0x70, 0x6f, 0x6c, 0x6a, 0x65, 0x5f, 0x5c, 0x5f, 0x68, 0x74, 0x79, 0x77, 0x76, 0x7a, 0x7d, 0x7e, - 0x7e, 0x80, 0x81, 0x87, 0x93, 0xa0, 0xa7, 0xac, 0xac, 0xa9, 0xa8, 0xa8, 0xaa, 0xa8, 0xa2, 0x9c, - 0x9a, 0x9c, 0x9a, 0x97, 0x97, 0x97, 0x95, 0x94, 0x96, 0x93, 0x90, 0x8e, 0x90, 0x94, 0x94, 0x8e, - 0x88, 0x86, 0x86, 0x88, 0x86, 0x84, 0x88, 0x8b, 0x8d, 0x91, 0x96, 0x9b, 0x9a, 0x97, 0x92, 0x8e, - 0x8e, 0x8c, 0x8b, 0x8c, 0x8c, 0x8a, 0x87, 0x83, 0x7d, 0x7a, 0x79, 0x7c, 0x7e, 0x79, 0x75, 0x74, - 0x73, 0x73, 0x74, 0x77, 0x75, 0x6d, 0x66, 0x63, 0x62, 0x5f, 0x5a, 0x59, 0x59, 0x5c, 0x66, 0x70, - 0x71, 0x6d, 0x68, 0x65, 0x66, 0x6a, 0x6d, 0x6e, 0x74, 0x7c, 0x83, 0x86, 0x85, 0x83, 0x7e, 0x75, - 0x6e, 0x6c, 0x6d, 0x6f, 0x73, 0x76, 0x78, 0x7a, 0x78, 0x76, 0x73, 0x75, 0x7e, 0x86, 0x85, 0x7e, - 0x7a, 0x78, 0x78, 0x7a, 0x78, 0x74, 0x75, 0x7e, 0x87, 0x85, 0x7b, 0x74, 0x77, 0x7d, 0x85, 0x8c, - 0x8d, 0x89, 0x80, 0x7a, 0x7b, 0x7d, 0x80, 0x7b, 0x75, 0x72, 0x74, 0x77, 0x7b, 0x79, 0x73, 0x6d, - 0x6a, 0x6a, 0x6c, 0x6c, 0x6f, 0x76, 0x7d, 0x84, 0x85, 0x83, 0x84, 0x88, 0x8c, 0x8b, 0x88, 0x8a, - 0x8f, 0x92, 0x91, 0x8e, 0x8d, 0x8c, 0x8a, 0x8a, 0x8c, 0x86, 0x7d, 0x78, 0x76, 0x79, 0x7e, 0x82, - 0x80, 0x76, 0x6b, 0x68, 0x6a, 0x6b, 0x67, 0x62, 0x62, 0x6a, 0x73, 0x77, 0x7a, 0x81, 0x85, 0x82, - 0x7c, 0x7a, 0x7a, 0x80, 0x83, 0x82, 0x81, 0x87, 0x92, 0x9e, 0xa3, 0xa1, 0x9c, 0x9b, 0x9b, 0x9a, - 0x9a, 0x99, 0x95, 0x94, 0x95, 0x96, 0x93, 0x93, 0x93, 0x8a, 0x7d, 0x71, 0x71, 0x75, 0x77, 0x7a, - 0x7a, 0x79, 0x77, 0x77, 0x76, 0x78, 0x7d, 0x7e, 0x7d, 0x80, 0x83, 0x85, 0x87, 0x8c, 0x8b, 0x85, - 0x80, 0x83, 0x8a, 0x8d, 0x8c, 0x87, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x93, 0x8f, 0x8e, 0x93, 0x96, - 0x95, 0x8f, 0x85, 0x77, 0x72, 0x74, 0x75, 0x72, 0x6c, 0x64, 0x5b, 0x54, 0x51, 0x52, 0x59, 0x61, - 0x65, 0x6a, 0x6f, 0x73, 0x78, 0x7e, 0x85, 0x85, 0x84, 0x87, 0x8e, 0x95, 0x98, 0x95, 0x93, 0x8f, - 0x8a, 0x89, 0x88, 0x89, 0x8a, 0x84, 0x7c, 0x79, 0x7b, 0x82, 0x86, 0x80, 0x72, 0x6b, 0x6e, 0x70, - 0x73, 0x71, 0x6b, 0x67, 0x67, 0x69, 0x6b, 0x71, 0x74, 0x6e, 0x63, 0x5c, 0x61, 0x6d, 0x75, 0x7a, - 0x7e, 0x80, 0x85, 0x8e, 0x95, 0x97, 0x94, 0x8f, 0x8e, 0x94, 0x9b, 0x9c, 0x99, 0x96, 0x96, 0x96, - 0x94, 0x92, 0x91, 0x90, 0x8b, 0x82, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x80, 0x7d, 0x7c, 0x7e, 0x84, - 0x8b, 0x8c, 0x86, 0x7a, 0x74, 0x78, 0x81, 0x85, 0x83, 0x7a, 0x6e, 0x6a, 0x6f, 0x79, 0x86, 0x87, - 0x82, 0x82, 0x86, 0x8a, 0x8c, 0x89, 0x80, 0x7a, 0x78, 0x78, 0x7a, 0x7d, 0x82, 0x82, 0x80, 0x80, - 0x80, 0x7d, 0x79, 0x74, 0x71, 0x6d, 0x6b, 0x69, 0x66, 0x69, 0x6e, 0x70, 0x72, 0x77, 0x7d, 0x87, - 0x91, 0x94, 0x8d, 0x86, 0x84, 0x85, 0x8b, 0x8f, 0x8e, 0x86, 0x79, 0x78, 0x7e, 0x87, 0x8c, 0x88, - 0x84, 0x7e, 0x7c, 0x80, 0x84, 0x88, 0x85, 0x79, 0x74, 0x78, 0x7c, 0x7e, 0x7e, 0x7a, 0x75, 0x76, - 0x77, 0x79, 0x7a, 0x75, 0x70, 0x6c, 0x6c, 0x71, 0x77, 0x7b, 0x80, 0x81, 0x7e, 0x83, 0x89, 0x8d, - 0x8c, 0x87, 0x82, 0x7a, 0x74, 0x70, 0x6b, 0x6b, 0x70, 0x72, 0x6f, 0x6a, 0x67, 0x6f, 0x7e, 0x86, - 0x82, 0x79, 0x77, 0x7d, 0x86, 0x8d, 0x8b, 0x83, 0x7d, 0x7e, 0x89, 0x90, 0x8f, 0x86, 0x7a, 0x74, - 0x74, 0x79, 0x7e, 0x7c, 0x70, 0x68, 0x69, 0x74, 0x7b, 0x7c, 0x7b, 0x78, 0x77, 0x7c, 0x80, 0x80, - 0x7d, 0x7e, 0x83, 0x88, 0x8a, 0x87, 0x86, 0x85, 0x87, 0x85, 0x7d, 0x74, 0x6c, 0x6c, 0x71, 0x73, - 0x74, 0x72, 0x71, 0x74, 0x7b, 0x86, 0x88, 0x83, 0x80, 0x86, 0x91, 0x9d, 0xa4, 0x9e, 0x91, 0x8c, - 0x93, 0x9d, 0xa3, 0xa1, 0x99, 0x94, 0x90, 0x90, 0x93, 0x94, 0x94, 0x93, 0x8f, 0x8e, 0x92, 0x99, - 0x9b, 0x97, 0x8e, 0x8a, 0x88, 0x85, 0x84, 0x82, 0x7d, 0x7c, 0x7b, 0x77, 0x75, 0x77, 0x7c, 0x84, - 0x8c, 0x93, 0x98, 0x9d, 0xa2, 0xa8, 0xa2, 0x98, 0x93, 0x96, 0x9b, 0x9d, 0x99, 0x93, 0x89, 0x7e, - 0x73, 0x71, 0x77, 0x7a, 0x76, 0x71, 0x6e, 0x6e, 0x73, 0x73, 0x6e, 0x65, 0x5e, 0x60, 0x69, 0x74, - 0x78, 0x75, 0x72, 0x70, 0x74, 0x78, 0x78, 0x77, 0x73, 0x71, 0x6e, 0x6c, 0x70, 0x74, 0x72, 0x6e, - 0x6c, 0x6f, 0x75, 0x78, 0x7b, 0x81, 0x82, 0x80, 0x76, 0x6f, 0x70, 0x76, 0x7c, 0x7c, 0x79, 0x77, - 0x77, 0x78, 0x7d, 0x7e, 0x7a, 0x76, 0x75, 0x77, 0x75, 0x6d, 0x67, 0x65, 0x65, 0x67, 0x6c, 0x70, - 0x6f, 0x6c, 0x69, 0x69, 0x6e, 0x78, 0x80, 0x7b, 0x73, 0x72, 0x76, 0x79, 0x7c, 0x80, 0x84, 0x84, - 0x83, 0x81, 0x7e, 0x84, 0x8b, 0x8c, 0x86, 0x79, 0x6f, 0x6d, 0x70, 0x73, 0x72, 0x6c, 0x67, 0x69, - 0x6b, 0x6c, 0x6a, 0x69, 0x6a, 0x6a, 0x6d, 0x6e, 0x6d, 0x6b, 0x69, 0x6f, 0x7a, 0x82, 0x8a, 0x92, - 0x92, 0x8f, 0x94, 0x9a, 0x9a, 0x98, 0x92, 0x8a, 0x83, 0x7d, 0x78, 0x76, 0x76, 0x76, 0x78, 0x74, - 0x71, 0x77, 0x82, 0x88, 0x8d, 0x8e, 0x88, 0x84, 0x86, 0x8c, 0x93, 0x99, 0x9c, 0x98, 0x94, 0x92, - 0x93, 0x93, 0x92, 0x8f, 0x8c, 0x8e, 0x95, 0x98, 0x99, 0x93, 0x8d, 0x92, 0x9c, 0xa1, 0xa0, 0xa1, - 0xa1, 0x9e, 0x9b, 0x9b, 0x9f, 0xa1, 0x9e, 0x98, 0x94, 0x92, 0x95, 0x95, 0x8f, 0x8b, 0x84, 0x79, - 0x76, 0x77, 0x7b, 0x7d, 0x7e, 0x83, 0x84, 0x83, 0x7b, 0x74, 0x73, 0x78, 0x7b, 0x7c, 0x7e, 0x81, - 0x83, 0x83, 0x7d, 0x79, 0x7d, 0x82, 0x89, 0x92, 0x94, 0x8d, 0x80, 0x77, 0x7d, 0x86, 0x8d, 0x8f, - 0x8a, 0x86, 0x88, 0x8b, 0x8c, 0x8d, 0x88, 0x78, 0x6d, 0x69, 0x66, 0x63, 0x5f, 0x59, 0x53, 0x50, - 0x51, 0x51, 0x52, 0x54, 0x5e, 0x6f, 0x7e, 0x81, 0x7b, 0x75, 0x72, 0x77, 0x82, 0x8a, 0x8c, 0x8f, - 0x95, 0x94, 0x8b, 0x82, 0x80, 0x81, 0x83, 0x8a, 0x8c, 0x82, 0x74, 0x6d, 0x6e, 0x74, 0x77, 0x78, - 0x72, 0x6c, 0x6f, 0x76, 0x7d, 0x82, 0x7e, 0x76, 0x72, 0x73, 0x74, 0x78, 0x78, 0x76, 0x75, 0x74, - 0x72, 0x71, 0x73, 0x76, 0x78, 0x7d, 0x86, 0x86, 0x7c, 0x71, 0x6b, 0x67, 0x68, 0x6f, 0x73, 0x77, - 0x79, 0x79, 0x77, 0x73, 0x7b, 0x86, 0x8a, 0x90, 0x94, 0x95, 0x92, 0x8b, 0x87, 0x86, 0x81, 0x7a, - 0x75, 0x74, 0x75, 0x79, 0x7b, 0x80, 0x7e, 0x75, 0x69, 0x62, 0x61, 0x65, 0x68, 0x68, 0x6a, 0x6c, - 0x74, 0x84, 0x8c, 0x8a, 0x86, 0x88, 0x8d, 0x8f, 0x8e, 0x89, 0x81, 0x7a, 0x7a, 0x80, 0x8a, 0x91, - 0x93, 0x94, 0x90, 0x8b, 0x89, 0x87, 0x84, 0x83, 0x82, 0x7e, 0x82, 0x87, 0x8d, 0x97, 0xa0, 0xa2, - 0xa0, 0x9b, 0x95, 0x97, 0x9a, 0x9e, 0x9f, 0x98, 0x94, 0x91, 0x8c, 0x89, 0x81, 0x76, 0x6f, 0x6b, - 0x6a, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x62, 0x58, 0x5a, 0x59, 0x59, 0x61, 0x6c, 0x71, 0x75, - 0x7a, 0x78, 0x71, 0x6b, 0x6c, 0x74, 0x7c, 0x82, 0x84, 0x85, 0x86, 0x88, 0x91, 0x9f, 0xa5, 0xa5, - 0xa7, 0xa8, 0xa7, 0xa7, 0xa7, 0xa3, 0x98, 0x8a, 0x82, 0x82, 0x89, 0x8f, 0x8e, 0x8b, 0x89, 0x83, - 0x78, 0x6e, 0x64, 0x68, 0x70, 0x7b, 0x83, 0x84, 0x84, 0x80, 0x79, 0x74, 0x78, 0x7d, 0x81, 0x87, - 0x89, 0x85, 0x7d, 0x74, 0x6c, 0x6c, 0x78, 0x80, 0x7a, 0x78, 0x7b, 0x80, 0x84, 0x89, 0x83, 0x74, - 0x68, 0x65, 0x6a, 0x73, 0x7d, 0x7e, 0x7c, 0x87, 0x8c, 0x8c, 0x86, 0x82, 0x7d, 0x7d, 0x87, 0x83, - 0x7d, 0x7b, 0x6e, 0x5a, 0x4f, 0x58, 0x63, 0x6e, 0x7e, 0x83, 0x87, 0x8b, 0x90, 0x99, 0xa2, 0xad, - 0xb5, 0xb3, 0xac, 0xa5, 0x9a, 0x8d, 0x97, 0xa6, 0xa7, 0x9e, 0x97, 0x96, 0x97, 0x96, 0x8f, 0x89, - 0x83, 0x77, 0x6f, 0x6f, 0x72, 0x76, 0x83, 0x7b, 0x77, 0x82, 0x81, 0x77, 0x6b, 0x62, 0x65, 0x6e, - 0x74, 0x73, 0x68, 0x5f, 0x61, 0x68, 0x7c, 0x8c, 0x92, 0x86, 0x85, 0x89, 0x88, 0x89, 0x8d, 0x8d, - 0x88, 0x81, 0x76, 0x73, 0x7b, 0x83, 0x81, 0x7b, 0x83, 0x87, 0x88, 0x86, 0x85, 0x87, 0x86, 0x7d, - 0x73, 0x6a, 0x6e, 0x80, 0x81, 0x7a, 0x86, 0x86, 0x84, 0x86, 0x85, 0x7d, 0x75, 0x70, 0x6c, 0x69, - 0x69, 0x70, 0x7a, 0x7a, 0x77, 0x78, 0x77, 0x77, 0x7b, 0x71, 0x66, 0x57, 0x55, 0x72, 0x81, 0x7e, - 0x7d, 0x80, 0x89, 0x8b, 0x73, 0x68, 0x6a, 0x67, 0x69, 0x6a, 0x65, 0x5b, 0x5c, 0x5e, 0x55, 0x4f, - 0x53, 0x5a, 0x62, 0x66, 0x69, 0x6a, 0x67, 0x6c, 0x78, 0x83, 0x94, 0x9a, 0x95, 0x8d, 0x86, 0x83, - 0x89, 0x99, 0xa2, 0x90, 0x7d, 0x83, 0x8b, 0x89, 0x7d, 0x71, 0x68, 0x5f, 0x5b, 0x5d, 0x65, 0x7b, - 0x89, 0x93, 0x94, 0x88, 0x80, 0x71, 0x67, 0x6c, 0x76, 0x7e, 0x82, 0x82, 0x80, 0x7a, 0x7e, 0x8a, - 0x99, 0xaa, 0xab, 0xa1, 0xa4, 0xa6, 0xa5, 0x9f, 0x9a, 0x96, 0x94, 0x8c, 0x86, 0x8b, 0x89, 0x8a, - 0x8b, 0x84, 0x77, 0x6e, 0x6d, 0x69, 0x76, 0x90, 0x92, 0x8b, 0x83, 0x8b, 0xa2, 0xa3, 0x9f, 0xa5, - 0xab, 0xa9, 0x91, 0x8b, 0x87, 0x7e, 0x74, 0x6f, 0x72, 0x79, 0x85, 0x94, 0xa1, 0xa6, 0xa6, 0xa9, - 0xa5, 0x9c, 0x99, 0x98, 0x94, 0x9d, 0xb6, 0xb1, 0x9f, 0x97, 0x91, 0x8e, 0x8b, 0x95, 0x9a, 0x92, - 0x83, 0x69, 0x57, 0x61, 0x75, 0x77, 0x6e, 0x65, 0x57, 0x54, 0x5f, 0x5c, 0x5d, 0x69, 0x62, 0x5b, - 0x65, 0x6a, 0x78, 0x8c, 0x92, 0x99, 0x8e, 0x83, 0x85, 0x8a, 0x91, 0x9a, 0xa5, 0xa4, 0x92, 0x86, - 0x82, 0x76, 0x78, 0x78, 0x70, 0x65, 0x64, 0x6c, 0x6d, 0x62, 0x5d, 0x6a, 0x6e, 0x77, 0x7b, 0x6d, - 0x60, 0x58, 0x56, 0x5e, 0x6e, 0x6b, 0x67, 0x6d, 0x6e, 0x72, 0x73, 0x80, 0x88, 0x74, 0x69, 0x7b, - 0x88, 0x92, 0x97, 0x90, 0x90, 0x8a, 0x7c, 0x6b, 0x64, 0x71, 0x77, 0x76, 0x6f, 0x63, 0x61, 0x62, - 0x6d, 0x7e, 0x83, 0x7b, 0x7b, 0x75, 0x82, 0x9a, 0x9e, 0x93, 0x92, 0x90, 0x76, 0x6d, 0x78, 0x70, - 0x66, 0x6b, 0x64, 0x5a, 0x5f, 0x65, 0x6a, 0x73, 0x7b, 0x87, 0x88, 0x78, 0x65, 0x52, 0x60, 0x7b, - 0x8d, 0xa3, 0x9d, 0x8b, 0x83, 0x82, 0x8c, 0x89, 0x83, 0x8a, 0x85, 0x73, 0x6a, 0x6a, 0x61, 0x77, - 0x8d, 0x83, 0x75, 0x6e, 0x69, 0x5d, 0x5c, 0x70, 0x7b, 0x76, 0x6c, 0x63, 0x5d, 0x67, 0x7d, 0x8e, - 0xa3, 0xa7, 0xa3, 0xa4, 0xa6, 0xa6, 0xad, 0xac, 0x9a, 0x8a, 0x7e, 0x6b, 0x53, 0x44, 0x4a, 0x57, - 0x5d, 0x69, 0x75, 0x7e, 0x80, 0x73, 0x65, 0x77, 0x8a, 0x84, 0x76, 0x78, 0x8c, 0x9a, 0xa2, 0xa7, - 0xae, 0xb9, 0xbd, 0xbe, 0xc6, 0xd1, 0xcb, 0xb6, 0xa5, 0xa2, 0xa7, 0xab, 0xaa, 0xaa, 0xa7, 0x98, - 0x8e, 0x92, 0x8f, 0x92, 0x8d, 0x83, 0x7b, 0x6f, 0x5d, 0x4f, 0x56, 0x6c, 0x7e, 0x82, 0x83, 0x82, - 0x8f, 0xaf, 0xba, 0xc4, 0xc8, 0xad, 0x87, 0x61, 0x47, 0x4a, 0x62, 0x66, 0x63, 0x71, 0x7a, 0x70, - 0x6c, 0x71, 0x76, 0x85, 0x95, 0x96, 0x84, 0x74, 0x6e, 0x6d, 0x73, 0x89, 0x9e, 0x9f, 0x8b, 0x7b, - 0x78, 0x83, 0x87, 0x85, 0x76, 0x63, 0x52, 0x4b, 0x3e, 0x40, 0x53, 0x5a, 0x61, 0x60, 0x56, 0x50, - 0x4e, 0x60, 0x74, 0x81, 0x82, 0x6d, 0x65, 0x66, 0x62, 0x65, 0x7d, 0x9f, 0xa6, 0xa8, 0xb4, 0xc0, - 0xc2, 0xc2, 0xaa, 0x8f, 0x8b, 0x86, 0x77, 0x6a, 0x65, 0x62, 0x62, 0x6b, 0x6e, 0x72, 0x76, 0x7a, - 0x75, 0x71, 0x7c, 0x75, 0x63, 0x5a, 0x5a, 0x5e, 0x63, 0x69, 0x7a, 0x78, 0x67, 0x74, 0x8a, 0x99, - 0x93, 0x91, 0x98, 0x9b, 0x99, 0x95, 0x8b, 0x8d, 0x8f, 0x83, 0x7c, 0x6f, 0x77, 0x8c, 0x93, 0x8c, - 0x83, 0x76, 0x61, 0x4c, 0x4e, 0x60, 0x7b, 0x97, 0xa1, 0x98, 0x91, 0x9e, 0xa9, 0xb5, 0xbf, 0xb2, - 0x8f, 0x73, 0x6c, 0x6f, 0x64, 0x5d, 0x69, 0x75, 0x7a, 0x77, 0x70, 0x76, 0x79, 0x81, 0x84, 0x82, - 0x81, 0x77, 0x87, 0x9a, 0xa0, 0xae, 0xc4, 0xc0, 0xa5, 0x90, 0x85, 0x82, 0x80, 0x89, 0x8d, 0x79, - 0x64, 0x52, 0x4f, 0x4e, 0x5b, 0x61, 0x59, 0x55, 0x4b, 0x3e, 0x45, 0x4f, 0x51, 0x52, 0x50, 0x46, - 0x42, 0x48, 0x52, 0x6d, 0x8e, 0xa3, 0xad, 0xa0, 0x95, 0x98, 0x98, 0x9e, 0x9c, 0x8c, 0x7c, 0x6f, - 0x68, 0x67, 0x63, 0x74, 0x7e, 0x7b, 0x78, 0x70, 0x66, 0x61, 0x5a, 0x50, 0x47, 0x41, 0x3b, 0x47, - 0x55, 0x64, 0x76, 0x94, 0xaa, 0xad, 0xa7, 0xa2, 0xa2, 0xaf, 0xc2, 0xc2, 0xb9, 0xb8, 0xb9, 0xbb, - 0xba, 0xb7, 0xb3, 0xb7, 0xaf, 0x96, 0x8a, 0x86, 0x88, 0x88, 0x7a, 0x71, 0x6c, 0x68, 0x75, 0x88, - 0x9b, 0xb0, 0xc0, 0xc4, 0xc1, 0xb0, 0xa8, 0x9f, 0x8f, 0x86, 0x71, 0x59, 0x51, 0x53, 0x56, 0x53, - 0x66, 0x7e, 0x87, 0x7a, 0x77, 0x84, 0x94, 0xa1, 0x9d, 0x90, 0x86, 0x71, 0x6e, 0x79, 0x86, 0x97, - 0xaa, 0xb1, 0xad, 0xa2, 0x9b, 0x9b, 0x8f, 0x90, 0x91, 0x73, 0x67, 0x60, 0x61, 0x66, 0x62, 0x68, - 0x72, 0x71, 0x5b, 0x4e, 0x55, 0x5b, 0x5b, 0x54, 0x4c, 0x3c, 0x2f, 0x32, 0x43, 0x5b, 0x79, 0x98, - 0xac, 0xb1, 0xa9, 0xb0, 0xb6, 0xac, 0xac, 0xaa, 0x98, 0x81, 0x81, 0x8c, 0x95, 0x99, 0x9e, 0xa9, - 0x9f, 0x84, 0x7a, 0x77, 0x7a, 0x7d, 0x7c, 0x70, 0x5d, 0x54, 0x57, 0x65, 0x7a, 0x94, 0xa3, 0xab, - 0xa8, 0xa9, 0xbb, 0xb7, 0xad, 0xa1, 0x8c, 0x7e, 0x75, 0x7c, 0x80, 0x81, 0x82, 0x88, 0x8d, 0x7d, - 0x69, 0x6a, 0x6c, 0x6c, 0x67, 0x61, 0x53, 0x4c, 0x54, 0x57, 0x5f, 0x76, 0x8a, 0x9c, 0xa9, 0xa1, - 0xa1, 0x9e, 0x85, 0x75, 0x61, 0x41, 0x38, 0x45, 0x4c, 0x4e, 0x57, 0x63, 0x69, 0x61, 0x4e, 0x47, - 0x53, 0x5e, 0x67, 0x64, 0x5a, 0x4c, 0x47, 0x4a, 0x4f, 0x5b, 0x6c, 0x78, 0x83, 0x83, 0x82, 0x88, - 0x85, 0x84, 0x87, 0x75, 0x52, 0x5a, 0x73, 0x7e, 0x85, 0x88, 0x90, 0x89, 0x70, 0x5a, 0x5e, 0x6d, - 0x76, 0x72, 0x66, 0x59, 0x50, 0x52, 0x58, 0x6a, 0x84, 0x9a, 0xb3, 0xbf, 0xbc, 0xc0, 0xbb, 0xb6, - 0xb3, 0xaa, 0x9b, 0x82, 0x7e, 0x92, 0x96, 0x92, 0x9c, 0xb0, 0xb2, 0x9b, 0x84, 0x86, 0x8e, 0x94, - 0x8b, 0x82, 0x81, 0x7c, 0x71, 0x71, 0x84, 0x8f, 0x98, 0xa2, 0x9f, 0xa0, 0xa0, 0x9f, 0xa0, 0xa0, - 0x9b, 0x8e, 0x81, 0x78, 0x8e, 0x99, 0x9c, 0xaa, 0xb5, 0xb3, 0xa0, 0x90, 0x8e, 0x8e, 0x88, 0x72, - 0x65, 0x5f, 0x61, 0x6a, 0x71, 0x7e, 0x89, 0x90, 0x96, 0x9e, 0xa0, 0x9b, 0x91, 0x82, 0x71, 0x65, - 0x58, 0x54, 0x56, 0x6a, 0x79, 0x81, 0x92, 0x97, 0x8d, 0x78, 0x6e, 0x6f, 0x76, 0x72, 0x6e, 0x75, - 0x78, 0x7c, 0x83, 0x80, 0x81, 0x89, 0x8d, 0x8d, 0x90, 0x90, 0x94, 0x97, 0x93, 0x89, 0x7d, 0x72, - 0x6d, 0x68, 0x79, 0x8a, 0x94, 0x9a, 0x91, 0x7a, 0x63, 0x60, 0x69, 0x6b, 0x61, 0x5c, 0x5a, 0x59, - 0x5d, 0x65, 0x71, 0x83, 0x97, 0x9e, 0xa3, 0xa7, 0xa3, 0xa2, 0x9a, 0x86, 0x76, 0x6a, 0x63, 0x61, - 0x6a, 0x77, 0x83, 0x88, 0x87, 0x81, 0x74, 0x6b, 0x6c, 0x6f, 0x6e, 0x67, 0x66, 0x63, 0x61, 0x61, - 0x65, 0x6a, 0x76, 0x85, 0x8d, 0x91, 0x91, 0x92, 0x93, 0x8c, 0x84, 0x81, 0x7c, 0x77, 0x71, 0x77, - 0x83, 0x91, 0x97, 0x94, 0x8b, 0x82, 0x7c, 0x82, 0x87, 0x86, 0x7d, 0x71, 0x6c, 0x6f, 0x79, 0x8c, - 0x9a, 0xa0, 0x9b, 0x8e, 0x82, 0x79, 0x76, 0x76, 0x6e, 0x5e, 0x55, 0x52, 0x53, 0x56, 0x60, 0x6c, - 0x75, 0x74, 0x6b, 0x66, 0x69, 0x70, 0x79, 0x7c, 0x79, 0x73, 0x6a, 0x67, 0x67, 0x6f, 0x7b, 0x85, - 0x88, 0x87, 0x85, 0x89, 0x8e, 0x91, 0x95, 0x96, 0x8f, 0x86, 0x81, 0x7e, 0x79, 0x7b, 0x82, 0x86, - 0x85, 0x77, 0x67, 0x5e, 0x5a, 0x5b, 0x5b, 0x5c, 0x59, 0x55, 0x57, 0x5e, 0x6e, 0x80, 0x8d, 0x94, - 0x93, 0x92, 0x97, 0x9f, 0xa7, 0xae, 0xad, 0xa6, 0xa5, 0xab, 0xaf, 0xb5, 0xbb, 0xbf, 0xba, 0xad, - 0xa1, 0x97, 0x8f, 0x8e, 0x8f, 0x8a, 0x81, 0x74, 0x6b, 0x64, 0x61, 0x65, 0x68, 0x61, 0x56, 0x4d, - 0x51, 0x56, 0x5b, 0x5f, 0x5c, 0x5a, 0x5c, 0x68, 0x77, 0x82, 0x93, 0xa3, 0xaa, 0xa7, 0x9b, 0x92, - 0x8a, 0x87, 0x89, 0x8b, 0x8b, 0x86, 0x80, 0x7d, 0x82, 0x8e, 0x9c, 0xa1, 0x9b, 0x8d, 0x7e, 0x7a, - 0x7c, 0x80, 0x7c, 0x70, 0x68, 0x62, 0x64, 0x66, 0x6f, 0x81, 0x89, 0x88, 0x81, 0x73, 0x6a, 0x6b, - 0x73, 0x7b, 0x80, 0x7e, 0x74, 0x6a, 0x69, 0x70, 0x80, 0x91, 0x96, 0x93, 0x8a, 0x85, 0x86, 0x91, - 0x9c, 0x99, 0x93, 0x91, 0x92, 0x96, 0x9c, 0xa5, 0xb0, 0xb5, 0xad, 0x9b, 0x84, 0x72, 0x66, 0x5f, - 0x60, 0x62, 0x5f, 0x57, 0x58, 0x5e, 0x66, 0x75, 0x82, 0x88, 0x84, 0x7d, 0x82, 0x8b, 0x94, 0x96, - 0x93, 0x8f, 0x8c, 0x8b, 0x8a, 0x89, 0x8d, 0x94, 0x9a, 0x97, 0x8d, 0x88, 0x87, 0x83, 0x82, 0x86, - 0x8a, 0x83, 0x79, 0x78, 0x7b, 0x88, 0x95, 0x98, 0x91, 0x87, 0x88, 0x92, 0x99, 0x9c, 0x94, 0x89, - 0x81, 0x7d, 0x81, 0x84, 0x8a, 0x94, 0x97, 0x90, 0x86, 0x7b, 0x79, 0x7a, 0x7b, 0x80, 0x80, 0x77, - 0x6c, 0x66, 0x64, 0x6e, 0x7d, 0x82, 0x78, 0x65, 0x56, 0x56, 0x5e, 0x63, 0x63, 0x5a, 0x4f, 0x48, - 0x49, 0x4f, 0x58, 0x6a, 0x82, 0x8f, 0x88, 0x77, 0x70, 0x6c, 0x6f, 0x77, 0x7e, 0x80, 0x73, 0x67, - 0x5e, 0x5c, 0x67, 0x76, 0x7d, 0x77, 0x69, 0x60, 0x64, 0x6d, 0x75, 0x7b, 0x79, 0x76, 0x75, 0x74, - 0x73, 0x74, 0x7b, 0x83, 0x80, 0x6c, 0x55, 0x4a, 0x45, 0x4c, 0x58, 0x65, 0x6c, 0x6c, 0x69, 0x66, - 0x69, 0x79, 0x89, 0x8f, 0x8d, 0x8d, 0x97, 0xa0, 0xa5, 0xa8, 0xa4, 0x9a, 0x95, 0x9a, 0xa0, 0x9f, - 0xa3, 0xab, 0xb3, 0xb1, 0xa7, 0x9b, 0x93, 0x8a, 0x87, 0x84, 0x7c, 0x70, 0x67, 0x62, 0x61, 0x65, - 0x6b, 0x6c, 0x62, 0x56, 0x54, 0x58, 0x5e, 0x64, 0x68, 0x6f, 0x78, 0x86, 0x97, 0xa0, 0xa9, 0xb6, - 0xbe, 0xbd, 0xad, 0x9c, 0x94, 0x97, 0xa0, 0xad, 0xb0, 0xa7, 0x9c, 0x94, 0x92, 0x99, 0xa5, 0xac, - 0xa4, 0x92, 0x82, 0x81, 0x83, 0x83, 0x82, 0x78, 0x6a, 0x63, 0x67, 0x6a, 0x6a, 0x75, 0x86, 0x8e, - 0x8a, 0x7c, 0x75, 0x76, 0x7a, 0x82, 0x88, 0x87, 0x7e, 0x79, 0x7c, 0x84, 0x90, 0x9e, 0xa4, 0xa0, - 0x99, 0x94, 0x8e, 0x87, 0x89, 0x92, 0x99, 0x97, 0x95, 0x97, 0x91, 0x8e, 0x96, 0x9e, 0x9d, 0x91, - 0x7e, 0x70, 0x64, 0x62, 0x6b, 0x71, 0x6c, 0x63, 0x61, 0x63, 0x67, 0x74, 0x80, 0x83, 0x7b, 0x75, - 0x72, 0x70, 0x70, 0x74, 0x74, 0x6e, 0x66, 0x66, 0x69, 0x69, 0x6f, 0x7e, 0x88, 0x87, 0x83, 0x82, - 0x7e, 0x78, 0x78, 0x79, 0x7a, 0x77, 0x7a, 0x81, 0x7d, 0x7e, 0x88, 0x8c, 0x87, 0x84, 0x88, 0x8e, - 0x92, 0x97, 0x97, 0x90, 0x89, 0x88, 0x8a, 0x83, 0x7c, 0x86, 0x94, 0x96, 0x8b, 0x7e, 0x79, 0x78, - 0x75, 0x75, 0x71, 0x68, 0x5c, 0x57, 0x5c, 0x61, 0x69, 0x70, 0x6d, 0x68, 0x66, 0x67, 0x64, 0x63, - 0x65, 0x5e, 0x4f, 0x45, 0x42, 0x47, 0x4f, 0x5a, 0x65, 0x6b, 0x66, 0x59, 0x54, 0x57, 0x63, 0x72, - 0x7c, 0x7d, 0x7a, 0x78, 0x7c, 0x88, 0x97, 0xa2, 0xa0, 0x9a, 0x98, 0x96, 0x94, 0x95, 0x9a, 0xa2, - 0xa5, 0x9d, 0x96, 0x96, 0x94, 0x96, 0x99, 0x98, 0x8e, 0x79, 0x63, 0x5e, 0x63, 0x6d, 0x76, 0x76, - 0x72, 0x6d, 0x6a, 0x66, 0x65, 0x6f, 0x80, 0x8c, 0x91, 0x92, 0x93, 0x91, 0x8d, 0x8b, 0x8a, 0x8b, - 0x8c, 0x88, 0x87, 0x86, 0x88, 0x90, 0x96, 0x94, 0x86, 0x7b, 0x7e, 0x84, 0x8d, 0x95, 0x98, 0x98, - 0x91, 0x8b, 0x86, 0x88, 0x94, 0x9a, 0x91, 0x7c, 0x6b, 0x64, 0x64, 0x6b, 0x70, 0x70, 0x6e, 0x6d, - 0x76, 0x85, 0x90, 0x98, 0x97, 0x8f, 0x84, 0x7c, 0x82, 0x8c, 0x92, 0x95, 0x94, 0x8f, 0x89, 0x89, - 0x91, 0x94, 0x97, 0x96, 0x8e, 0x87, 0x84, 0x88, 0x83, 0x74, 0x6d, 0x6a, 0x65, 0x60, 0x65, 0x6e, - 0x6f, 0x6d, 0x6e, 0x72, 0x78, 0x71, 0x63, 0x59, 0x5a, 0x62, 0x6b, 0x74, 0x75, 0x70, 0x6c, 0x71, - 0x7d, 0x8e, 0x99, 0x93, 0x80, 0x6e, 0x71, 0x7e, 0x8f, 0x9f, 0xa2, 0x96, 0x8a, 0x91, 0xa1, 0xb5, - 0xc6, 0xca, 0xbb, 0xa3, 0x84, 0x71, 0x73, 0x80, 0x87, 0x7b, 0x70, 0x6f, 0x74, 0x87, 0x96, 0xa0, - 0xa1, 0x9c, 0x95, 0x8e, 0x91, 0x98, 0x99, 0x94, 0x8e, 0x86, 0x7d, 0x7b, 0x83, 0x86, 0x82, 0x85, - 0x88, 0x87, 0x7e, 0x6a, 0x5a, 0x5a, 0x6b, 0x7e, 0x8e, 0x94, 0x8c, 0x81, 0x7c, 0x7e, 0x89, 0x94, - 0x95, 0x88, 0x72, 0x68, 0x69, 0x6f, 0x75, 0x71, 0x61, 0x4b, 0x47, 0x55, 0x6a, 0x83, 0x93, 0x94, - 0x89, 0x79, 0x6f, 0x71, 0x81, 0x90, 0x90, 0x84, 0x70, 0x62, 0x67, 0x71, 0x75, 0x75, 0x71, 0x6c, - 0x62, 0x64, 0x6f, 0x71, 0x6c, 0x62, 0x53, 0x4a, 0x54, 0x66, 0x72, 0x75, 0x7d, 0x89, 0x8b, 0x85, - 0x79, 0x6f, 0x6b, 0x70, 0x77, 0x7d, 0x7a, 0x6d, 0x65, 0x60, 0x60, 0x6b, 0x76, 0x7b, 0x76, 0x69, - 0x65, 0x6d, 0x79, 0x84, 0x88, 0x81, 0x73, 0x73, 0x82, 0x8d, 0x99, 0xa4, 0xa3, 0x8f, 0x73, 0x68, - 0x6b, 0x79, 0x89, 0x8a, 0x7b, 0x66, 0x5a, 0x5c, 0x67, 0x76, 0x85, 0x89, 0x88, 0x86, 0x8a, 0x96, - 0xa1, 0xa4, 0x9d, 0x95, 0x8c, 0x89, 0x93, 0x9c, 0xa0, 0x9f, 0x9d, 0x9b, 0x9a, 0x96, 0x92, 0x90, - 0x96, 0xa1, 0xa6, 0xa1, 0x93, 0x85, 0x79, 0x73, 0x78, 0x7e, 0x80, 0x75, 0x60, 0x54, 0x55, 0x5e, - 0x64, 0x63, 0x5a, 0x4e, 0x4a, 0x57, 0x69, 0x77, 0x7d, 0x80, 0x7c, 0x74, 0x77, 0x83, 0x95, 0xa9, - 0xb4, 0xad, 0x9a, 0x8d, 0x89, 0x8d, 0x97, 0x9c, 0x95, 0x89, 0x80, 0x77, 0x7e, 0x89, 0x87, 0x79, - 0x6b, 0x63, 0x64, 0x6f, 0x7a, 0x7c, 0x76, 0x75, 0x7a, 0x7a, 0x79, 0x7a, 0x76, 0x76, 0x7d, 0x86, - 0x87, 0x82, 0x7d, 0x7a, 0x7e, 0x8d, 0x9d, 0xa9, 0xab, 0xa1, 0x94, 0x91, 0x99, 0x9e, 0x9f, 0x9e, - 0x98, 0x93, 0x97, 0xa2, 0xaa, 0xb3, 0xb9, 0xb5, 0x9f, 0x8e, 0x8c, 0x92, 0x9b, 0x9d, 0x9a, 0x90, - 0x89, 0x87, 0x87, 0x8c, 0x8c, 0x80, 0x70, 0x6d, 0x6a, 0x6b, 0x74, 0x78, 0x6e, 0x63, 0x62, 0x6a, - 0x7a, 0x8d, 0x95, 0x8d, 0x83, 0x85, 0x8c, 0x94, 0x97, 0x94, 0x90, 0x8e, 0x93, 0x92, 0x8d, 0x89, - 0x7c, 0x6b, 0x67, 0x6b, 0x6b, 0x6e, 0x6d, 0x64, 0x5e, 0x5f, 0x5f, 0x5c, 0x5b, 0x5d, 0x5c, 0x5c, - 0x65, 0x6f, 0x74, 0x7a, 0x7d, 0x78, 0x70, 0x71, 0x74, 0x75, 0x71, 0x69, 0x59, 0x49, 0x49, 0x4f, - 0x58, 0x63, 0x64, 0x5b, 0x51, 0x51, 0x5c, 0x6c, 0x73, 0x66, 0x4c, 0x44, 0x52, 0x68, 0x7c, 0x89, - 0x8a, 0x81, 0x7b, 0x79, 0x7c, 0x87, 0x91, 0x8e, 0x85, 0x80, 0x7b, 0x7a, 0x81, 0x85, 0x81, 0x81, - 0x89, 0x8e, 0x92, 0x8f, 0x8b, 0x85, 0x7d, 0x7b, 0x7b, 0x7e, 0x84, 0x86, 0x88, 0x8d, 0x96, 0xa0, - 0xa8, 0xa5, 0x95, 0x7d, 0x75, 0x7a, 0x85, 0x94, 0x98, 0x8e, 0x7e, 0x76, 0x75, 0x7e, 0x8c, 0x92, - 0x86, 0x75, 0x6f, 0x6f, 0x71, 0x77, 0x79, 0x71, 0x6a, 0x6c, 0x73, 0x83, 0x8c, 0x8d, 0x86, 0x87, - 0x92, 0x9e, 0xab, 0xb4, 0xb5, 0xae, 0xa4, 0x99, 0x96, 0x98, 0x8e, 0x73, 0x5d, 0x56, 0x5b, 0x65, - 0x6c, 0x70, 0x6f, 0x65, 0x5e, 0x5d, 0x62, 0x6a, 0x6a, 0x5f, 0x5a, 0x5f, 0x69, 0x7b, 0x91, 0x9f, - 0x9f, 0x9c, 0x9e, 0xa4, 0xa9, 0xa3, 0x96, 0x8d, 0x89, 0x86, 0x84, 0x8d, 0x94, 0x90, 0x84, 0x7b, - 0x7e, 0x83, 0x86, 0x84, 0x74, 0x66, 0x68, 0x70, 0x80, 0x8e, 0x8f, 0x86, 0x7b, 0x79, 0x83, 0x93, - 0xa1, 0x9f, 0x8d, 0x7d, 0x74, 0x74, 0x83, 0x8e, 0x8d, 0x86, 0x83, 0x84, 0x86, 0x8a, 0x8b, 0x8a, - 0x86, 0x89, 0x8d, 0x92, 0x9c, 0xa3, 0xa6, 0xa5, 0xa7, 0xa8, 0xab, 0xae, 0xab, 0x9d, 0x94, 0x97, - 0x9c, 0xa0, 0xa4, 0xa2, 0x9b, 0x90, 0x87, 0x82, 0x83, 0x81, 0x6e, 0x51, 0x3e, 0x37, 0x3a, 0x4d, - 0x5d, 0x5c, 0x51, 0x4a, 0x4d, 0x5b, 0x6b, 0x73, 0x6f, 0x68, 0x6f, 0x7a, 0x87, 0x98, 0xa2, 0x9f, - 0x91, 0x87, 0x82, 0x84, 0x7d, 0x6d, 0x5c, 0x5b, 0x64, 0x69, 0x71, 0x74, 0x6f, 0x5e, 0x52, 0x53, - 0x5b, 0x60, 0x5d, 0x5a, 0x5a, 0x61, 0x69, 0x77, 0x8d, 0x9d, 0x9c, 0x8e, 0x89, 0x88, 0x89, 0x8b, - 0x8b, 0x87, 0x88, 0x8d, 0x90, 0x99, 0xa9, 0xad, 0x9f, 0x8b, 0x80, 0x74, 0x6f, 0x6f, 0x6a, 0x5f, - 0x54, 0x4f, 0x57, 0x6d, 0x79, 0x78, 0x6d, 0x6a, 0x71, 0x7e, 0x87, 0x83, 0x72, 0x61, 0x5c, 0x60, - 0x6f, 0x84, 0x8b, 0x84, 0x7b, 0x81, 0x8a, 0x8e, 0x8a, 0x7b, 0x64, 0x56, 0x54, 0x58, 0x60, 0x66, - 0x6f, 0x74, 0x78, 0x7c, 0x79, 0x7a, 0x7b, 0x73, 0x68, 0x64, 0x64, 0x68, 0x6f, 0x72, 0x6e, 0x64, - 0x62, 0x66, 0x72, 0x82, 0x81, 0x6e, 0x5f, 0x60, 0x69, 0x7c, 0x91, 0x98, 0x92, 0x89, 0x8b, 0x9a, - 0xb2, 0xbe, 0xb7, 0xaa, 0xa9, 0xb4, 0xc0, 0xd0, 0xdd, 0xda, 0xc8, 0xb7, 0xb0, 0xaf, 0xaf, 0xa8, - 0x9b, 0x92, 0x96, 0x9b, 0x9a, 0x9c, 0x97, 0x86, 0x6f, 0x65, 0x64, 0x67, 0x68, 0x5c, 0x50, 0x51, - 0x60, 0x71, 0x84, 0x95, 0x9f, 0x9a, 0x8f, 0x90, 0x9a, 0xa2, 0x9c, 0x8d, 0x80, 0x7c, 0x80, 0x88, - 0x9b, 0xab, 0xa7, 0x96, 0x89, 0x7e, 0x79, 0x76, 0x6f, 0x5f, 0x51, 0x4e, 0x51, 0x62, 0x75, 0x7a, - 0x72, 0x69, 0x6c, 0x76, 0x82, 0x7c, 0x6d, 0x5c, 0x55, 0x5a, 0x64, 0x73, 0x7e, 0x7e, 0x74, 0x71, - 0x78, 0x82, 0x88, 0x82, 0x73, 0x6b, 0x6f, 0x79, 0x8b, 0x9f, 0xab, 0xb2, 0xb5, 0xb8, 0xbc, 0xc1, - 0xc2, 0xbb, 0xaa, 0x9e, 0x9a, 0x9b, 0xa7, 0xb3, 0xaf, 0xa1, 0x93, 0x87, 0x83, 0x89, 0x89, 0x77, - 0x5e, 0x52, 0x54, 0x5f, 0x72, 0x7a, 0x71, 0x60, 0x55, 0x55, 0x62, 0x6e, 0x6a, 0x5c, 0x50, 0x53, - 0x5c, 0x6b, 0x79, 0x7e, 0x75, 0x67, 0x5f, 0x5e, 0x68, 0x71, 0x6a, 0x59, 0x52, 0x57, 0x61, 0x6f, - 0x7c, 0x7d, 0x73, 0x6e, 0x71, 0x79, 0x82, 0x7d, 0x6b, 0x5b, 0x5d, 0x6a, 0x7e, 0x95, 0x9e, 0x9b, - 0x90, 0x89, 0x87, 0x8a, 0x88, 0x7a, 0x6c, 0x63, 0x64, 0x69, 0x75, 0x83, 0x84, 0x77, 0x67, 0x5e, - 0x5d, 0x69, 0x72, 0x6c, 0x5d, 0x54, 0x58, 0x68, 0x83, 0x9b, 0xa6, 0x9d, 0x92, 0x8e, 0x96, 0xa1, - 0x9e, 0x8c, 0x78, 0x74, 0x7d, 0x98, 0xad, 0xb0, 0xa4, 0x97, 0x92, 0x90, 0x91, 0x90, 0x82, 0x6d, - 0x68, 0x6f, 0x75, 0x7e, 0x83, 0x7b, 0x72, 0x70, 0x73, 0x7b, 0x82, 0x7e, 0x76, 0x6c, 0x6c, 0x72, - 0x80, 0x97, 0xa6, 0xa7, 0xa1, 0x98, 0x90, 0x92, 0x99, 0x97, 0x87, 0x6f, 0x64, 0x66, 0x76, 0x8b, - 0x91, 0x84, 0x73, 0x6b, 0x6c, 0x7c, 0x90, 0x99, 0x92, 0x8a, 0x8a, 0x95, 0xa9, 0xb2, 0xa7, 0x93, - 0x87, 0x84, 0x88, 0x88, 0x79, 0x61, 0x4f, 0x4e, 0x5b, 0x6c, 0x77, 0x78, 0x72, 0x70, 0x70, 0x6b, - 0x6d, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x78, 0x89, 0x91, 0x94, 0x95, 0x91, 0x8a, 0x85, 0x89, 0x89, - 0x80, 0x71, 0x69, 0x6d, 0x7a, 0x8c, 0x98, 0x9a, 0x8e, 0x82, 0x77, 0x7d, 0x8c, 0x88, 0x6e, 0x56, - 0x4d, 0x52, 0x67, 0x7d, 0x89, 0x86, 0x80, 0x7b, 0x84, 0x97, 0x9d, 0x8d, 0x72, 0x67, 0x6a, 0x76, - 0x87, 0x93, 0x97, 0x97, 0x95, 0x96, 0x9a, 0x9b, 0x8e, 0x79, 0x71, 0x79, 0x81, 0x87, 0x8f, 0x94, - 0x94, 0x92, 0x9a, 0xa4, 0xac, 0xae, 0xa8, 0x9e, 0x95, 0x8d, 0x8b, 0x95, 0xa0, 0xa3, 0x9a, 0x8d, - 0x80, 0x78, 0x7c, 0x7a, 0x65, 0x47, 0x33, 0x34, 0x48, 0x64, 0x75, 0x74, 0x67, 0x60, 0x65, 0x6f, - 0x76, 0x77, 0x6f, 0x62, 0x63, 0x70, 0x89, 0x98, 0x96, 0x89, 0x83, 0x85, 0x85, 0x89, 0x8b, 0x87, - 0x7e, 0x78, 0x79, 0x83, 0x93, 0x99, 0x98, 0x9a, 0x9d, 0x9a, 0x96, 0x92, 0x8d, 0x84, 0x76, 0x75, - 0x7e, 0x8b, 0x99, 0x9e, 0x99, 0x8d, 0x83, 0x7d, 0x81, 0x82, 0x74, 0x63, 0x58, 0x5a, 0x68, 0x7c, - 0x88, 0x86, 0x7c, 0x76, 0x73, 0x79, 0x8b, 0x8f, 0x80, 0x68, 0x58, 0x57, 0x62, 0x75, 0x82, 0x81, - 0x78, 0x76, 0x77, 0x7e, 0x87, 0x82, 0x72, 0x62, 0x60, 0x6b, 0x7c, 0x8d, 0x93, 0x8e, 0x87, 0x82, - 0x7d, 0x7c, 0x76, 0x68, 0x59, 0x53, 0x52, 0x53, 0x58, 0x5f, 0x65, 0x67, 0x6a, 0x71, 0x78, 0x7d, - 0x7c, 0x6f, 0x60, 0x5e, 0x65, 0x75, 0x8a, 0x94, 0x95, 0x8c, 0x84, 0x84, 0x87, 0x89, 0x82, 0x6f, - 0x61, 0x5d, 0x65, 0x7b, 0x8e, 0x8d, 0x7e, 0x75, 0x74, 0x7d, 0x8b, 0x8f, 0x85, 0x74, 0x72, 0x7a, - 0x84, 0x8c, 0x91, 0x93, 0x91, 0x8f, 0x8f, 0x94, 0x93, 0x8a, 0x7c, 0x6c, 0x6b, 0x70, 0x7a, 0x86, - 0x87, 0x83, 0x79, 0x74, 0x72, 0x75, 0x7c, 0x7d, 0x75, 0x6d, 0x6c, 0x6f, 0x7c, 0x87, 0x88, 0x83, - 0x83, 0x8b, 0x94, 0x9d, 0x9a, 0x90, 0x84, 0x85, 0x90, 0xa0, 0xb0, 0xb9, 0xb8, 0xaf, 0xab, 0xab, - 0xb0, 0xb3, 0xa6, 0x8c, 0x79, 0x79, 0x84, 0x9b, 0xae, 0xb1, 0xa5, 0x9c, 0x9d, 0x9f, 0xa2, 0xa2, - 0x91, 0x75, 0x61, 0x59, 0x63, 0x72, 0x78, 0x78, 0x71, 0x6b, 0x6b, 0x68, 0x63, 0x5b, 0x50, 0x4c, - 0x52, 0x59, 0x65, 0x74, 0x7d, 0x85, 0x8f, 0x9e, 0xa9, 0xad, 0xb0, 0xaf, 0xa2, 0x98, 0x97, 0x9b, - 0xab, 0xb3, 0xae, 0xa2, 0x95, 0x8e, 0x8e, 0x90, 0x8b, 0x78, 0x5c, 0x4d, 0x4d, 0x5e, 0x74, 0x7c, - 0x74, 0x67, 0x62, 0x64, 0x6e, 0x78, 0x76, 0x6a, 0x61, 0x61, 0x68, 0x75, 0x7e, 0x82, 0x7c, 0x7a, - 0x88, 0x97, 0xa2, 0xa5, 0xa1, 0x97, 0x8d, 0x8d, 0x92, 0x95, 0x8f, 0x87, 0x7e, 0x79, 0x7b, 0x80, - 0x83, 0x80, 0x72, 0x64, 0x5f, 0x5f, 0x65, 0x6e, 0x6e, 0x67, 0x60, 0x5c, 0x5d, 0x64, 0x68, 0x66, - 0x5f, 0x53, 0x49, 0x45, 0x4c, 0x5a, 0x65, 0x65, 0x62, 0x67, 0x72, 0x79, 0x71, 0x5f, 0x4b, 0x43, - 0x48, 0x5e, 0x7a, 0x87, 0x85, 0x7b, 0x7e, 0x8b, 0x9b, 0xa2, 0x95, 0x7b, 0x6c, 0x6e, 0x7c, 0x92, - 0x9e, 0x9e, 0x94, 0x88, 0x85, 0x83, 0x7e, 0x77, 0x6a, 0x5a, 0x53, 0x4e, 0x4b, 0x59, 0x6a, 0x74, - 0x7d, 0x87, 0x8d, 0x8b, 0x87, 0x83, 0x7e, 0x7c, 0x80, 0x84, 0x8d, 0x9d, 0xa3, 0x9c, 0x90, 0x8d, - 0x93, 0x9c, 0x9f, 0x94, 0x80, 0x71, 0x74, 0x80, 0x91, 0x9e, 0x9c, 0x92, 0x92, 0x9c, 0xae, 0xbd, - 0xbe, 0xb3, 0xa0, 0x94, 0x92, 0x98, 0xa3, 0xa4, 0x9e, 0x97, 0x98, 0x9e, 0xa3, 0xa4, 0x9b, 0x8a, - 0x7a, 0x78, 0x76, 0x78, 0x7d, 0x7d, 0x74, 0x70, 0x74, 0x7d, 0x8c, 0x8f, 0x84, 0x72, 0x66, 0x66, - 0x6b, 0x75, 0x7e, 0x7d, 0x7a, 0x7b, 0x7e, 0x85, 0x8e, 0x93, 0x8c, 0x7e, 0x75, 0x71, 0x74, 0x80, - 0x80, 0x76, 0x6c, 0x68, 0x69, 0x6b, 0x66, 0x57, 0x43, 0x3a, 0x3d, 0x43, 0x52, 0x5a, 0x5a, 0x57, - 0x57, 0x5e, 0x70, 0x84, 0x85, 0x72, 0x62, 0x68, 0x78, 0x8b, 0x9d, 0xa4, 0x9d, 0x92, 0x8f, 0x8f, - 0x93, 0x9e, 0xa1, 0x91, 0x81, 0x7b, 0x77, 0x7a, 0x89, 0x95, 0x99, 0x9c, 0xa1, 0xa6, 0xb0, 0xb0, - 0xa6, 0x96, 0x8d, 0x8a, 0x8a, 0x93, 0x9f, 0xa1, 0x98, 0x94, 0x94, 0x95, 0x94, 0x84, 0x69, 0x54, - 0x55, 0x58, 0x5a, 0x63, 0x67, 0x5c, 0x50, 0x57, 0x69, 0x80, 0x8f, 0x8b, 0x75, 0x64, 0x5e, 0x5d, - 0x69, 0x7a, 0x81, 0x80, 0x82, 0x8d, 0x9e, 0xad, 0xb0, 0xa6, 0x99, 0x92, 0x8d, 0x8f, 0x9b, 0xa3, - 0x9c, 0x8d, 0x85, 0x81, 0x7e, 0x82, 0x7e, 0x71, 0x60, 0x5b, 0x5e, 0x64, 0x67, 0x66, 0x66, 0x6a, - 0x72, 0x7b, 0x88, 0x8c, 0x88, 0x7b, 0x6c, 0x61, 0x67, 0x7b, 0x86, 0x87, 0x81, 0x7e, 0x84, 0x8d, - 0x96, 0x92, 0x82, 0x73, 0x76, 0x83, 0x8e, 0x98, 0x9f, 0xa1, 0xa0, 0x9d, 0x9e, 0xa8, 0xac, 0xa1, - 0x8c, 0x7d, 0x7c, 0x7d, 0x80, 0x80, 0x7b, 0x77, 0x72, 0x6f, 0x76, 0x82, 0x7b, 0x68, 0x57, 0x50, - 0x4d, 0x4d, 0x5f, 0x70, 0x78, 0x75, 0x72, 0x74, 0x85, 0x92, 0x8f, 0x88, 0x7e, 0x79, 0x78, 0x7e, - 0x86, 0x89, 0x87, 0x80, 0x7d, 0x7c, 0x80, 0x78, 0x6c, 0x62, 0x5e, 0x60, 0x60, 0x68, 0x72, 0x72, - 0x6a, 0x6c, 0x76, 0x86, 0x90, 0x88, 0x78, 0x6b, 0x67, 0x63, 0x6b, 0x78, 0x82, 0x81, 0x7b, 0x84, - 0x94, 0xa0, 0xa8, 0xa4, 0x96, 0x8b, 0x89, 0x8b, 0x8d, 0x88, 0x83, 0x7b, 0x6f, 0x6c, 0x67, 0x63, - 0x60, 0x59, 0x51, 0x4a, 0x47, 0x47, 0x47, 0x44, 0x42, 0x48, 0x55, 0x68, 0x7d, 0x93, 0xa1, 0x9f, - 0x95, 0x93, 0x94, 0x91, 0x8c, 0x83, 0x72, 0x6d, 0x71, 0x77, 0x86, 0x8f, 0x83, 0x6a, 0x61, 0x6b, - 0x76, 0x81, 0x83, 0x81, 0x80, 0x82, 0x85, 0x8d, 0x9d, 0xaa, 0xab, 0xa6, 0xa6, 0xac, 0xac, 0xa6, - 0xae, 0xb0, 0xac, 0xb1, 0xc4, 0xdb, 0xe3, 0xd3, 0xb9, 0xa2, 0x97, 0x92, 0x94, 0x9b, 0x98, 0x92, - 0x8c, 0x94, 0xa6, 0xb5, 0xb1, 0x9b, 0x83, 0x7b, 0x84, 0x92, 0xa3, 0xa9, 0xa4, 0x9e, 0x9c, 0x9d, - 0xa3, 0x9d, 0x89, 0x6e, 0x58, 0x55, 0x55, 0x51, 0x4b, 0x3f, 0x37, 0x3b, 0x4b, 0x5f, 0x6b, 0x6a, - 0x60, 0x48, 0x4c, 0x60, 0x6a, 0x6d, 0x70, 0x75, 0x7a, 0x86, 0x91, 0x95, 0xa2, 0xa4, 0x9a, 0x9a, - 0xa8, 0xa9, 0x9f, 0x98, 0x97, 0x98, 0x9a, 0x9e, 0x96, 0x89, 0x87, 0x84, 0x7d, 0x76, 0x6a, 0x5a, - 0x52, 0x51, 0x51, 0x53, 0x4f, 0x4b, 0x51, 0x63, 0x72, 0x77, 0x7b, 0x75, 0x6d, 0x6c, 0x5f, 0x60, - 0x65, 0x57, 0x4b, 0x45, 0x4f, 0x5e, 0x72, 0x79, 0x69, 0x63, 0x66, 0x6d, 0x7c, 0x87, 0x8a, 0x84, - 0x80, 0x8a, 0x97, 0xa3, 0xa3, 0x8f, 0x7a, 0x78, 0x7a, 0x85, 0x8a, 0x83, 0x81, 0x73, 0x68, 0x78, - 0x84, 0x83, 0x78, 0x63, 0x54, 0x55, 0x5e, 0x6b, 0x6a, 0x5d, 0x58, 0x58, 0x5b, 0x6f, 0x86, 0x80, - 0x6f, 0x73, 0x79, 0x87, 0x9d, 0xa8, 0xa7, 0xac, 0xa7, 0xa3, 0xaf, 0xbc, 0xb8, 0x9a, 0x8a, 0x85, - 0x8f, 0x95, 0x8b, 0x78, 0x6a, 0x5e, 0x59, 0x62, 0x6f, 0x76, 0x70, 0x68, 0x6a, 0x77, 0x7c, 0x68, - 0x4f, 0x51, 0x58, 0x5b, 0x69, 0x77, 0x7d, 0x83, 0x83, 0x72, 0x7c, 0x8c, 0x77, 0x6d, 0x77, 0x7c, - 0x81, 0x83, 0x81, 0x7d, 0x85, 0x90, 0x92, 0x89, 0x82, 0x81, 0x77, 0x80, 0x90, 0x9d, 0x97, 0x8a, - 0x93, 0xa5, 0xb2, 0xbf, 0xce, 0xc3, 0xab, 0x9a, 0x8f, 0x8c, 0x89, 0x80, 0x7c, 0x86, 0x8e, 0x99, - 0x93, 0x87, 0x81, 0x74, 0x77, 0x85, 0x86, 0x86, 0x87, 0x7d, 0x76, 0x7c, 0x85, 0x8e, 0x93, 0x8c, - 0x79, 0x6f, 0x77, 0x81, 0x91, 0x9f, 0x99, 0x86, 0x7e, 0x7d, 0x8b, 0xaf, 0xbb, 0xa8, 0x98, 0x8e, - 0x8d, 0x99, 0x9d, 0x98, 0x99, 0x99, 0x90, 0x8d, 0x8b, 0x93, 0x9b, 0x87, 0x76, 0x77, 0x90, 0x9a, - 0x85, 0x73, 0x70, 0x73, 0x82, 0x97, 0xa4, 0x88, 0x66, 0x52, 0x48, 0x56, 0x60, 0x52, 0x3b, 0x3a, - 0x45, 0x56, 0x69, 0x71, 0x77, 0x6f, 0x5e, 0x6c, 0x82, 0x78, 0x5a, 0x4f, 0x5b, 0x6f, 0x88, 0x95, - 0x8f, 0x91, 0xa5, 0xa7, 0x9d, 0x9f, 0x91, 0x78, 0x7d, 0x78, 0x77, 0x85, 0x74, 0x5e, 0x5e, 0x6b, - 0x6d, 0x65, 0x5c, 0x56, 0x51, 0x4f, 0x61, 0x77, 0x79, 0x6f, 0x67, 0x60, 0x64, 0x6f, 0x7b, 0x85, - 0x83, 0x73, 0x64, 0x54, 0x58, 0x5d, 0x62, 0x72, 0x6e, 0x6b, 0x73, 0x7c, 0x81, 0x7e, 0x8e, 0x9f, - 0xaa, 0xb9, 0xd0, 0xc8, 0xaf, 0xa4, 0x9e, 0xa3, 0xb2, 0xb9, 0xb2, 0x9e, 0x9a, 0x98, 0xa0, 0xa3, - 0x93, 0x78, 0x6b, 0x67, 0x62, 0x61, 0x6b, 0x71, 0x68, 0x6a, 0x66, 0x63, 0x67, 0x65, 0x5d, 0x59, - 0x5e, 0x65, 0x74, 0x7b, 0x7b, 0x86, 0x8c, 0x94, 0xa5, 0xa7, 0x94, 0x81, 0x81, 0x77, 0x75, 0x88, - 0x9f, 0x94, 0x83, 0x80, 0x87, 0x8d, 0x8d, 0x81, 0x76, 0x6b, 0x6d, 0x7b, 0x8c, 0x8e, 0x81, 0x86, - 0x8a, 0x77, 0x6e, 0x69, 0x53, 0x3c, 0x3f, 0x48, 0x5c, 0x75, 0x72, 0x69, 0x6a, 0x88, 0x9e, 0xa1, - 0x8d, 0x73, 0x60, 0x57, 0x56, 0x60, 0x5f, 0x5e, 0x59, 0x6e, 0x80, 0x84, 0x8b, 0x8b, 0x78, 0x6b, - 0x66, 0x71, 0x85, 0x84, 0x7b, 0x82, 0x8d, 0x93, 0x9e, 0xa1, 0x9e, 0x90, 0x85, 0x83, 0x71, 0x6b, - 0x6d, 0x69, 0x6e, 0x78, 0x72, 0x76, 0x87, 0x8c, 0x85, 0x88, 0x87, 0x87, 0x8f, 0x8f, 0x97, 0xa1, - 0xa2, 0xa0, 0xa7, 0xa4, 0x99, 0x90, 0x88, 0x88, 0x88, 0x9e, 0xae, 0xb0, 0xaf, 0xa8, 0xa1, 0x9c, - 0x97, 0x9a, 0x9c, 0x9a, 0x84, 0x7d, 0x95, 0x9d, 0x8e, 0x85, 0x89, 0x91, 0x9d, 0xa7, 0xad, 0xa6, - 0x98, 0x8e, 0x8b, 0x88, 0x85, 0x7d, 0x72, 0x6c, 0x7b, 0x92, 0xa0, 0x92, 0x70, 0x59, 0x50, 0x58, - 0x60, 0x59, 0x51, 0x43, 0x46, 0x5e, 0x72, 0x6c, 0x57, 0x5f, 0x73, 0x86, 0x96, 0x9a, 0x91, 0x89, - 0x84, 0x7a, 0x76, 0x81, 0x94, 0x90, 0x79, 0x7e, 0xa3, 0xbe, 0xb6, 0x9d, 0x89, 0x7e, 0x84, 0x87, - 0x79, 0x65, 0x4f, 0x4f, 0x56, 0x58, 0x5d, 0x6a, 0x72, 0x6f, 0x7d, 0x8e, 0x8c, 0x89, 0x81, 0x71, - 0x68, 0x5e, 0x5c, 0x71, 0x74, 0x6a, 0x6e, 0x7a, 0x85, 0x7a, 0x7a, 0x7a, 0x73, 0x77, 0x80, 0x7b, - 0x76, 0x7a, 0x86, 0x93, 0x95, 0x99, 0xb1, 0xb8, 0xad, 0x9d, 0x90, 0x8e, 0x96, 0x9a, 0x96, 0x92, - 0x93, 0x8b, 0x80, 0x83, 0x7b, 0x7c, 0x82, 0x85, 0x81, 0x84, 0x87, 0x95, 0x92, 0x81, 0x6d, 0x58, - 0x5d, 0x6a, 0x5d, 0x4a, 0x47, 0x50, 0x61, 0x6d, 0x74, 0x7c, 0x79, 0x83, 0x90, 0x96, 0x8d, 0x79, - 0x68, 0x5d, 0x57, 0x52, 0x63, 0x73, 0x60, 0x56, 0x5b, 0x5f, 0x60, 0x5c, 0x48, 0x30, 0x2b, 0x39, - 0x57, 0x56, 0x4a, 0x4d, 0x5a, 0x53, 0x4b, 0x4b, 0x47, 0x3f, 0x34, 0x3d, 0x54, 0x5e, 0x59, 0x54, - 0x50, 0x4d, 0x5e, 0x70, 0x73, 0x69, 0x57, 0x55, 0x64, 0x74, 0x7c, 0x72, 0x6a, 0x6b, 0x83, 0x95, - 0x9f, 0xad, 0xb0, 0xaa, 0xad, 0xbd, 0xca, 0xd4, 0xe3, 0xe5, 0xec, 0xec, 0xea, 0xf4, 0xee, 0xd5, - 0xbc, 0xac, 0xac, 0xb6, 0xb3, 0xb1, 0xae, 0xb6, 0xb9, 0xb5, 0xaf, 0xb5, 0xb4, 0x9f, 0x9f, 0xaa, - 0xb9, 0xbf, 0xaf, 0xa0, 0x98, 0x87, 0x85, 0x8f, 0x98, 0x94, 0x8a, 0x8c, 0xae, 0xbd, 0xc0, 0xb4, - 0xa0, 0xa1, 0x8c, 0x72, 0x81, 0x95, 0xa0, 0x88, 0x71, 0x77, 0x95, 0x92, 0x72, 0x75, 0x84, 0x8e, - 0x95, 0x88, 0x68, 0x4a, 0x4e, 0x51, 0x57, 0x6f, 0x82, 0x81, 0x76, 0x72, 0x76, 0x7b, 0x61, 0x3c, - 0x36, 0x41, 0x46, 0x50, 0x63, 0x66, 0x5b, 0x50, 0x59, 0x64, 0x5f, 0x53, 0x57, 0x62, 0x70, 0x73, - 0x72, 0x72, 0x6d, 0x6b, 0x71, 0x81, 0x95, 0xa7, 0xa9, 0x9d, 0x90, 0x92, 0x97, 0x9a, 0x96, 0x8d, - 0x86, 0x84, 0x82, 0x80, 0x7b, 0x73, 0x5e, 0x50, 0x50, 0x5d, 0x7e, 0x9a, 0x9e, 0x9a, 0x8f, 0x85, - 0x88, 0x8c, 0x7c, 0x64, 0x58, 0x60, 0x71, 0x80, 0x71, 0x5c, 0x54, 0x54, 0x50, 0x5c, 0x76, 0x80, - 0x82, 0x83, 0x82, 0x7e, 0x8b, 0x99, 0xa7, 0xaf, 0xaf, 0xac, 0xa8, 0xa0, 0x97, 0x89, 0x7d, 0x77, - 0x7c, 0x7e, 0x73, 0x67, 0x6c, 0x68, 0x5e, 0x5b, 0x5b, 0x52, 0x3c, 0x2f, 0x35, 0x4c, 0x57, 0x53, - 0x4d, 0x3e, 0x31, 0x30, 0x34, 0x34, 0x38, 0x3b, 0x4b, 0x63, 0x7a, 0x84, 0x7d, 0x7b, 0x97, 0xab, - 0xa4, 0x96, 0x84, 0x72, 0x6a, 0x71, 0x86, 0x9d, 0xa3, 0x98, 0x8f, 0x8c, 0x88, 0x93, 0x9d, 0x95, - 0x86, 0x83, 0x84, 0x84, 0x81, 0x78, 0x76, 0x74, 0x78, 0x7a, 0x78, 0x75, 0x69, 0x62, 0x64, 0x5e, - 0x6c, 0x82, 0x87, 0x82, 0x7a, 0x7a, 0x85, 0x8f, 0x9a, 0xa2, 0xa4, 0xa3, 0x9f, 0xa4, 0xb0, 0xbd, - 0xbd, 0xbb, 0xbb, 0xbc, 0xc1, 0xcb, 0xcb, 0xc4, 0xc1, 0xc1, 0xcc, 0xce, 0xc4, 0xaf, 0xa0, 0xa3, - 0xa9, 0xa9, 0x98, 0x84, 0x6f, 0x67, 0x6b, 0x77, 0x81, 0x80, 0x7c, 0x82, 0x83, 0x86, 0x8f, 0x88, - 0x7a, 0x77, 0x7d, 0x85, 0x8d, 0x8c, 0x85, 0x81, 0x87, 0x94, 0x9b, 0x94, 0x80, 0x69, 0x68, 0x74, - 0x82, 0x8e, 0x8f, 0x84, 0x79, 0x79, 0x83, 0x8f, 0x8c, 0x77, 0x63, 0x55, 0x4d, 0x52, 0x62, 0x6f, - 0x71, 0x70, 0x75, 0x76, 0x74, 0x6a, 0x5b, 0x50, 0x4e, 0x4c, 0x51, 0x5a, 0x5c, 0x5b, 0x62, 0x6b, - 0x74, 0x7d, 0x82, 0x73, 0x5c, 0x56, 0x5e, 0x6e, 0x7b, 0x85, 0x89, 0x8e, 0x96, 0x9d, 0xa7, 0xaa, - 0x9e, 0x8b, 0x7b, 0x70, 0x6d, 0x72, 0x7c, 0x87, 0x90, 0x90, 0x92, 0x96, 0x92, 0x83, 0x77, 0x7c, - 0x84, 0x8e, 0x90, 0x89, 0x80, 0x7d, 0x7a, 0x7d, 0x85, 0x80, 0x71, 0x69, 0x68, 0x73, 0x8a, 0x94, - 0x8c, 0x7e, 0x7e, 0x81, 0x82, 0x7a, 0x69, 0x53, 0x46, 0x4b, 0x57, 0x62, 0x61, 0x55, 0x4c, 0x50, - 0x5c, 0x6d, 0x73, 0x69, 0x58, 0x55, 0x61, 0x7d, 0x9b, 0xb0, 0xbb, 0xc4, 0xce, 0xd4, 0xd8, 0xce, - 0xb8, 0xa1, 0x98, 0x96, 0x98, 0x9b, 0x93, 0x84, 0x7c, 0x7a, 0x7e, 0x88, 0x84, 0x71, 0x5f, 0x59, - 0x5c, 0x66, 0x73, 0x75, 0x69, 0x5f, 0x5a, 0x5c, 0x68, 0x70, 0x70, 0x71, 0x79, 0x7e, 0x84, 0x88, - 0x89, 0x8f, 0x97, 0x96, 0x91, 0x88, 0x7d, 0x71, 0x6e, 0x72, 0x7c, 0x8b, 0x91, 0x90, 0x8a, 0x8c, - 0x89, 0x86, 0x88, 0x81, 0x73, 0x68, 0x5e, 0x5e, 0x67, 0x6d, 0x6d, 0x69, 0x62, 0x57, 0x55, 0x5b, - 0x5a, 0x4f, 0x4d, 0x54, 0x60, 0x6c, 0x6d, 0x66, 0x65, 0x6e, 0x7c, 0x93, 0xa2, 0x9a, 0x84, 0x72, - 0x6a, 0x73, 0x81, 0x84, 0x7e, 0x7a, 0x82, 0x93, 0xa5, 0xaf, 0xaa, 0x98, 0x90, 0x93, 0xa2, 0xaa, - 0xa3, 0x97, 0x95, 0x95, 0x96, 0x95, 0x87, 0x6c, 0x54, 0x4d, 0x56, 0x69, 0x73, 0x6c, 0x62, 0x68, - 0x77, 0x86, 0x96, 0x9f, 0x98, 0x8f, 0x86, 0x82, 0x8c, 0x93, 0x8e, 0x87, 0x8c, 0x93, 0x98, 0x97, - 0x8a, 0x77, 0x6c, 0x6c, 0x76, 0x87, 0x90, 0x90, 0x94, 0x9a, 0x9d, 0xa4, 0xa6, 0x98, 0x82, 0x78, - 0x77, 0x7b, 0x87, 0x8e, 0x8e, 0x8b, 0x8c, 0x8f, 0x92, 0x90, 0x8b, 0x88, 0x8e, 0x95, 0x9e, 0xa2, - 0xa1, 0x9c, 0x9b, 0xa1, 0xa7, 0xac, 0xaa, 0x9b, 0x84, 0x73, 0x70, 0x75, 0x7a, 0x80, 0x84, 0x83, - 0x7c, 0x79, 0x80, 0x7e, 0x74, 0x6a, 0x65, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x73, 0x78, 0x7a, 0x7b, - 0x79, 0x6d, 0x62, 0x60, 0x6c, 0x87, 0x9a, 0x98, 0x87, 0x7a, 0x74, 0x7b, 0x8b, 0x91, 0x89, 0x7a, - 0x75, 0x7c, 0x8f, 0x9f, 0xa9, 0xa9, 0xa3, 0x99, 0x95, 0x93, 0x85, 0x6c, 0x5d, 0x5c, 0x67, 0x72, - 0x6e, 0x61, 0x57, 0x58, 0x63, 0x74, 0x7c, 0x75, 0x64, 0x5f, 0x6a, 0x83, 0x9c, 0xa8, 0xa5, 0xa0, - 0x9c, 0x99, 0x9d, 0x9f, 0x92, 0x7b, 0x6f, 0x6f, 0x78, 0x81, 0x80, 0x7d, 0x88, 0x8e, 0x8a, 0x85, - 0x7b, 0x6f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x57, 0x47, 0x42, 0x44, 0x45, 0x45, 0x44, 0x40, 0x39, - 0x35, 0x3c, 0x4b, 0x51, 0x4d, 0x4e, 0x5a, 0x66, 0x6e, 0x71, 0x6d, 0x66, 0x60, 0x5e, 0x61, 0x6f, - 0x7d, 0x85, 0x86, 0x86, 0x81, 0x81, 0x7d, 0x72, 0x63, 0x5d, 0x59, 0x5b, 0x69, 0x73, 0x71, 0x6b, - 0x6f, 0x74, 0x73, 0x6f, 0x69, 0x5e, 0x5b, 0x5b, 0x63, 0x75, 0x80, 0x82, 0x81, 0x82, 0x88, 0x96, - 0x9e, 0x95, 0x81, 0x73, 0x6b, 0x74, 0x8a, 0x9c, 0xa6, 0xb0, 0xb9, 0xc8, 0xd6, 0xdc, 0xd9, 0xd0, - 0xc7, 0xc5, 0xce, 0xd5, 0xd4, 0xc9, 0xbf, 0xbb, 0xbd, 0xbe, 0xb7, 0xa2, 0x8f, 0x88, 0x89, 0x93, - 0x99, 0x93, 0x8c, 0x8a, 0x8e, 0x9b, 0xa9, 0xa5, 0x93, 0x8a, 0x89, 0x8d, 0x9a, 0xa8, 0xa9, 0xa3, - 0xa0, 0xa0, 0xa4, 0xa5, 0x9b, 0x8e, 0x8c, 0x93, 0x9a, 0x9d, 0x96, 0x91, 0x91, 0x91, 0x90, 0x8c, - 0x84, 0x76, 0x62, 0x56, 0x51, 0x52, 0x54, 0x53, 0x50, 0x48, 0x42, 0x43, 0x4d, 0x54, 0x4a, 0x3d, - 0x39, 0x3d, 0x46, 0x52, 0x61, 0x6d, 0x7a, 0x80, 0x7d, 0x81, 0x8a, 0x8c, 0x88, 0x8a, 0x8f, 0x97, - 0x99, 0x91, 0x8a, 0x86, 0x82, 0x82, 0x8a, 0x8b, 0x84, 0x7c, 0x7b, 0x7d, 0x82, 0x85, 0x81, 0x76, - 0x71, 0x6d, 0x72, 0x80, 0x84, 0x79, 0x6d, 0x67, 0x68, 0x73, 0x75, 0x6e, 0x67, 0x63, 0x61, 0x5e, - 0x60, 0x5f, 0x51, 0x45, 0x43, 0x4e, 0x61, 0x6a, 0x72, 0x75, 0x77, 0x79, 0x86, 0x90, 0x8c, 0x85, - 0x81, 0x86, 0x94, 0xa2, 0xa8, 0xa2, 0x9d, 0x9e, 0xa4, 0xb4, 0xbe, 0xb5, 0xa1, 0x94, 0x91, 0x9f, - 0xa7, 0x98, 0x8a, 0x86, 0x80, 0x79, 0x7e, 0x81, 0x75, 0x65, 0x5b, 0x5b, 0x64, 0x67, 0x68, 0x69, - 0x77, 0x88, 0x91, 0x93, 0x90, 0x83, 0x71, 0x68, 0x62, 0x5f, 0x57, 0x4e, 0x4c, 0x51, 0x55, 0x53, - 0x4f, 0x4b, 0x42, 0x37, 0x38, 0x46, 0x59, 0x68, 0x72, 0x7b, 0x85, 0x86, 0x82, 0x86, 0x8f, 0x98, - 0x97, 0x91, 0x8e, 0x8d, 0x8c, 0x8d, 0x93, 0x9c, 0x9e, 0x9b, 0x92, 0x8a, 0x83, 0x7c, 0x7b, 0x7b, - 0x7d, 0x7e, 0x7c, 0x80, 0x86, 0x8a, 0x8a, 0x8a, 0x8a, 0x88, 0x7a, 0x6f, 0x75, 0x89, 0x99, 0xa5, - 0xaf, 0xb1, 0xaa, 0x9f, 0x98, 0x99, 0x97, 0x8d, 0x81, 0x7d, 0x83, 0x8a, 0x8a, 0x89, 0x8e, 0x96, - 0x9d, 0xac, 0xbb, 0xba, 0xad, 0xa1, 0xa0, 0xa6, 0xa3, 0x94, 0x84, 0x7a, 0x77, 0x80, 0x89, 0x81, - 0x70, 0x67, 0x63, 0x67, 0x6c, 0x66, 0x5b, 0x57, 0x5d, 0x64, 0x6b, 0x68, 0x5f, 0x58, 0x54, 0x55, - 0x5c, 0x5b, 0x53, 0x55, 0x64, 0x76, 0x8b, 0x93, 0x96, 0xa1, 0xac, 0xb4, 0xba, 0xb3, 0xa2, 0x9b, - 0x9f, 0xa0, 0xa3, 0xa0, 0x8e, 0x7c, 0x72, 0x71, 0x74, 0x6c, 0x5b, 0x4d, 0x46, 0x49, 0x50, 0x52, - 0x4e, 0x53, 0x62, 0x74, 0x84, 0x84, 0x78, 0x75, 0x80, 0x85, 0x88, 0x87, 0x80, 0x78, 0x74, 0x74, - 0x77, 0x79, 0x73, 0x6c, 0x6c, 0x69, 0x71, 0x83, 0x8a, 0x8a, 0x92, 0x9c, 0xa2, 0x9d, 0x91, 0x8a, - 0x94, 0xa2, 0xab, 0xb6, 0xb3, 0xa0, 0x93, 0x91, 0x95, 0x9d, 0x9d, 0x92, 0x88, 0x81, 0x7d, 0x7e, - 0x79, 0x73, 0x71, 0x6e, 0x6a, 0x71, 0x79, 0x78, 0x75, 0x75, 0x79, 0x86, 0x8d, 0x89, 0x84, 0x84, - 0x86, 0x91, 0x94, 0x89, 0x82, 0x7d, 0x78, 0x87, 0x99, 0xa1, 0xa1, 0x9f, 0x98, 0x97, 0x96, 0x8f, - 0x88, 0x87, 0x8c, 0x9a, 0xa3, 0xa0, 0x97, 0x95, 0x9b, 0xa2, 0xa4, 0x94, 0x7e, 0x73, 0x6c, 0x6c, - 0x70, 0x6a, 0x60, 0x60, 0x67, 0x78, 0x8a, 0x8b, 0x83, 0x7e, 0x79, 0x7a, 0x7d, 0x7a, 0x6e, 0x60, - 0x55, 0x56, 0x5b, 0x51, 0x3f, 0x35, 0x36, 0x40, 0x4f, 0x59, 0x5e, 0x68, 0x74, 0x7d, 0x85, 0x85, - 0x7e, 0x7b, 0x7d, 0x85, 0x8f, 0x90, 0x87, 0x80, 0x79, 0x70, 0x6b, 0x62, 0x55, 0x4e, 0x50, 0x55, - 0x5d, 0x5f, 0x57, 0x4e, 0x53, 0x5e, 0x6b, 0x70, 0x67, 0x5a, 0x5d, 0x63, 0x69, 0x6c, 0x63, 0x57, - 0x51, 0x50, 0x5e, 0x72, 0x83, 0x8b, 0x8b, 0x88, 0x8b, 0x93, 0x96, 0x91, 0x87, 0x7e, 0x83, 0x8c, - 0x89, 0x7c, 0x7b, 0x85, 0x96, 0xa5, 0xa6, 0xa2, 0xa8, 0xaa, 0xab, 0xab, 0xa3, 0x99, 0x97, 0x9d, - 0xa6, 0xb2, 0xb7, 0xb4, 0xb0, 0xac, 0xa8, 0xa5, 0x9b, 0x82, 0x71, 0x6c, 0x76, 0x8c, 0x93, 0x83, - 0x72, 0x76, 0x82, 0x8c, 0x8b, 0x7a, 0x6c, 0x6c, 0x7a, 0x92, 0xa5, 0xa3, 0x9a, 0x94, 0x92, 0xa0, - 0xb3, 0xb7, 0xaf, 0xac, 0xb0, 0xb5, 0xb0, 0xa2, 0x9b, 0x9a, 0x91, 0x8d, 0x8c, 0x7e, 0x70, 0x6e, - 0x71, 0x76, 0x75, 0x68, 0x5c, 0x60, 0x68, 0x71, 0x79, 0x71, 0x63, 0x65, 0x70, 0x80, 0x8b, 0x86, - 0x76, 0x71, 0x70, 0x70, 0x6f, 0x61, 0x4f, 0x4b, 0x53, 0x69, 0x85, 0x91, 0x89, 0x7c, 0x7b, 0x83, - 0x8d, 0x8e, 0x81, 0x77, 0x7c, 0x8b, 0x9d, 0xa6, 0x9e, 0x94, 0x8f, 0x8c, 0x89, 0x84, 0x7e, 0x83, - 0x8d, 0x94, 0x97, 0x97, 0x8c, 0x7c, 0x75, 0x73, 0x7b, 0x7e, 0x70, 0x60, 0x63, 0x70, 0x7a, 0x75, - 0x66, 0x5d, 0x65, 0x72, 0x7e, 0x84, 0x79, 0x69, 0x6b, 0x7a, 0x93, 0xa4, 0xa6, 0xa2, 0xa1, 0xa2, - 0xa7, 0xa3, 0x90, 0x78, 0x72, 0x7b, 0x8b, 0x9c, 0xa1, 0x96, 0x8c, 0x8a, 0x8e, 0x8f, 0x88, 0x76, - 0x6c, 0x6b, 0x6e, 0x73, 0x73, 0x6e, 0x6d, 0x70, 0x77, 0x7a, 0x75, 0x6e, 0x70, 0x79, 0x84, 0x82, - 0x6a, 0x4d, 0x3d, 0x3a, 0x3c, 0x40, 0x3f, 0x32, 0x28, 0x2f, 0x43, 0x52, 0x51, 0x4a, 0x44, 0x45, - 0x4f, 0x63, 0x6b, 0x61, 0x61, 0x72, 0x86, 0x8e, 0x84, 0x74, 0x6e, 0x6d, 0x6d, 0x75, 0x79, 0x72, - 0x6c, 0x6c, 0x6f, 0x77, 0x84, 0x83, 0x6f, 0x66, 0x6f, 0x7b, 0x76, 0x65, 0x5c, 0x62, 0x72, 0x82, - 0x85, 0x7b, 0x73, 0x77, 0x80, 0x8c, 0x93, 0x8b, 0x82, 0x8c, 0xa1, 0xba, 0xc0, 0xb1, 0xa0, 0x9a, - 0x9b, 0xa5, 0xb1, 0xb4, 0xaf, 0xaf, 0xb5, 0xc1, 0xc3, 0xb8, 0xac, 0xab, 0xb2, 0xbd, 0xc5, 0xbd, - 0xab, 0xa1, 0xa0, 0xa6, 0xb0, 0xaa, 0x96, 0x8c, 0x87, 0x8c, 0x95, 0x8c, 0x76, 0x71, 0x79, 0x84, - 0x87, 0x80, 0x78, 0x73, 0x6f, 0x72, 0x79, 0x77, 0x6d, 0x6a, 0x6f, 0x74, 0x7e, 0x86, 0x81, 0x78, - 0x7c, 0x8d, 0xa4, 0xa8, 0x97, 0x92, 0x9f, 0xa9, 0xaf, 0xa9, 0x91, 0x7b, 0x71, 0x6e, 0x6c, 0x68, - 0x66, 0x69, 0x69, 0x68, 0x70, 0x73, 0x65, 0x57, 0x55, 0x5d, 0x69, 0x6b, 0x65, 0x60, 0x65, 0x70, - 0x80, 0x84, 0x73, 0x5a, 0x4f, 0x4d, 0x51, 0x58, 0x52, 0x4b, 0x54, 0x5e, 0x69, 0x72, 0x7b, 0x84, - 0x86, 0x85, 0x8a, 0x8d, 0x86, 0x7e, 0x84, 0x8a, 0x8e, 0x89, 0x7c, 0x73, 0x71, 0x77, 0x86, 0x94, - 0x96, 0x8e, 0x8a, 0x89, 0x8f, 0x9a, 0x96, 0x85, 0x75, 0x75, 0x82, 0x85, 0x78, 0x70, 0x79, 0x89, - 0x95, 0x99, 0x96, 0x8b, 0x7e, 0x7a, 0x81, 0x86, 0x82, 0x80, 0x8a, 0x97, 0xa4, 0xb4, 0xc0, 0xbf, - 0xb7, 0xae, 0xa6, 0xa8, 0xa8, 0x9f, 0x97, 0x9a, 0x9d, 0x9b, 0x92, 0x87, 0x89, 0x92, 0x97, 0x98, - 0x8c, 0x73, 0x62, 0x5d, 0x5e, 0x5e, 0x58, 0x50, 0x4b, 0x4b, 0x4a, 0x52, 0x5d, 0x63, 0x67, 0x6d, - 0x6e, 0x6a, 0x65, 0x5b, 0x4b, 0x44, 0x43, 0x46, 0x45, 0x3d, 0x3d, 0x48, 0x4e, 0x51, 0x55, 0x54, - 0x4c, 0x4c, 0x52, 0x5a, 0x5b, 0x56, 0x5a, 0x68, 0x74, 0x77, 0x76, 0x73, 0x6f, 0x6f, 0x6e, 0x6c, - 0x69, 0x63, 0x54, 0x4a, 0x4a, 0x53, 0x5e, 0x66, 0x6a, 0x78, 0x8a, 0x99, 0xa0, 0x9d, 0x96, 0x97, - 0x9d, 0xa4, 0xa3, 0x9a, 0x92, 0x98, 0xa0, 0xa8, 0xb4, 0xba, 0xb9, 0xbb, 0xb9, 0xb6, 0xb7, 0xb6, - 0xb0, 0xaf, 0xb3, 0xba, 0xbd, 0xb7, 0xaf, 0xb2, 0xbd, 0xbd, 0xb3, 0xa5, 0x9b, 0x9a, 0x9f, 0xa4, - 0xa9, 0xa0, 0x8f, 0x89, 0x93, 0xa0, 0xa9, 0xaa, 0xa4, 0x9e, 0x9c, 0x98, 0x8f, 0x82, 0x74, 0x6d, - 0x6e, 0x73, 0x77, 0x6c, 0x58, 0x55, 0x66, 0x74, 0x7b, 0x77, 0x6d, 0x6c, 0x75, 0x79, 0x7a, 0x78, - 0x71, 0x64, 0x61, 0x6e, 0x82, 0x89, 0x7e, 0x73, 0x74, 0x70, 0x63, 0x52, 0x3f, 0x35, 0x3c, 0x4b, - 0x5c, 0x63, 0x57, 0x4c, 0x54, 0x62, 0x6f, 0x71, 0x6b, 0x60, 0x54, 0x50, 0x52, 0x53, 0x51, 0x55, - 0x64, 0x74, 0x84, 0x8d, 0x8e, 0x87, 0x86, 0x86, 0x82, 0x7a, 0x6a, 0x5e, 0x61, 0x6d, 0x83, 0x98, - 0x9f, 0x9f, 0xa6, 0xb3, 0xc0, 0xc4, 0xbc, 0xb5, 0xba, 0xc2, 0xc1, 0xb6, 0xa4, 0x92, 0x8d, 0x94, - 0x9f, 0xaa, 0xaa, 0xa2, 0x9c, 0x9b, 0x99, 0x99, 0x98, 0x90, 0x83, 0x76, 0x74, 0x7d, 0x7d, 0x76, - 0x79, 0x8d, 0xa0, 0xa7, 0xa1, 0x96, 0x8f, 0x90, 0x8e, 0x87, 0x77, 0x65, 0x5e, 0x61, 0x6d, 0x82, - 0x9a, 0xa7, 0xa8, 0xa8, 0xa4, 0xa1, 0x99, 0x88, 0x75, 0x6f, 0x6c, 0x6f, 0x6c, 0x60, 0x55, 0x5c, - 0x6d, 0x83, 0x8a, 0x7c, 0x6d, 0x6b, 0x6b, 0x70, 0x75, 0x71, 0x69, 0x66, 0x63, 0x67, 0x71, 0x79, - 0x7e, 0x88, 0x8e, 0x8e, 0x88, 0x7b, 0x6d, 0x65, 0x5d, 0x59, 0x57, 0x49, 0x39, 0x38, 0x41, 0x51, - 0x61, 0x62, 0x5b, 0x58, 0x59, 0x5e, 0x5e, 0x51, 0x42, 0x3f, 0x44, 0x49, 0x49, 0x4d, 0x55, 0x60, - 0x71, 0x85, 0x90, 0x8f, 0x85, 0x7e, 0x79, 0x7b, 0x8c, 0x99, 0x98, 0x94, 0x93, 0x96, 0xa0, 0xa1, - 0x9a, 0x98, 0x9a, 0x9c, 0x9c, 0x93, 0x85, 0x78, 0x75, 0x79, 0x80, 0x7c, 0x75, 0x77, 0x85, 0x92, - 0x9c, 0x9d, 0x95, 0x87, 0x7e, 0x7a, 0x7e, 0x83, 0x7b, 0x75, 0x80, 0x8e, 0x97, 0x96, 0x8c, 0x82, - 0x87, 0x97, 0xac, 0xb7, 0xac, 0x9e, 0x97, 0x8f, 0x8e, 0x91, 0x93, 0x8c, 0x80, 0x72, 0x6d, 0x66, - 0x5c, 0x5a, 0x64, 0x69, 0x67, 0x61, 0x58, 0x51, 0x51, 0x5a, 0x6b, 0x75, 0x6d, 0x66, 0x6a, 0x74, - 0x84, 0x91, 0x8f, 0x85, 0x7d, 0x78, 0x7b, 0x82, 0x82, 0x85, 0x99, 0xb0, 0xbf, 0xbd, 0xac, 0x99, - 0x8e, 0x8d, 0x92, 0x96, 0x8f, 0x85, 0x83, 0x82, 0x86, 0x93, 0x99, 0x91, 0x83, 0x75, 0x6c, 0x68, - 0x63, 0x5f, 0x64, 0x6f, 0x7a, 0x80, 0x7e, 0x7a, 0x73, 0x74, 0x7b, 0x85, 0x85, 0x77, 0x70, 0x78, - 0x83, 0x94, 0x9f, 0xa4, 0xad, 0xb8, 0xc0, 0xc6, 0xc3, 0xb2, 0xac, 0xb8, 0xc1, 0xc3, 0xb7, 0xa3, - 0x8c, 0x82, 0x85, 0x91, 0x96, 0x92, 0x90, 0x92, 0x98, 0xa3, 0xac, 0xad, 0xa2, 0x96, 0x8e, 0x85, - 0x7e, 0x73, 0x67, 0x6c, 0x79, 0x87, 0x8d, 0x87, 0x75, 0x6c, 0x6c, 0x79, 0x88, 0x88, 0x7b, 0x76, - 0x78, 0x7c, 0x80, 0x7b, 0x78, 0x7b, 0x80, 0x83, 0x7e, 0x6e, 0x5b, 0x58, 0x5f, 0x62, 0x5e, 0x4e, - 0x3a, 0x34, 0x40, 0x58, 0x71, 0x79, 0x74, 0x76, 0x7e, 0x84, 0x8a, 0x8c, 0x85, 0x7a, 0x6e, 0x65, - 0x64, 0x5d, 0x54, 0x5e, 0x74, 0x84, 0x8b, 0x83, 0x70, 0x5c, 0x51, 0x4f, 0x51, 0x4d, 0x40, 0x3a, - 0x44, 0x52, 0x5c, 0x5c, 0x59, 0x59, 0x5f, 0x63, 0x65, 0x66, 0x5f, 0x5b, 0x66, 0x71, 0x75, 0x71, - 0x67, 0x64, 0x69, 0x6d, 0x74, 0x78, 0x73, 0x6b, 0x6a, 0x69, 0x6c, 0x6a, 0x60, 0x54, 0x4f, 0x53, - 0x5e, 0x68, 0x68, 0x65, 0x6f, 0x7b, 0x87, 0x8c, 0x88, 0x7d, 0x75, 0x6e, 0x72, 0x7d, 0x82, 0x84, - 0x93, 0xa0, 0xa3, 0xa0, 0x99, 0x96, 0x9b, 0x9d, 0xa1, 0xa4, 0x9e, 0x92, 0x93, 0xa1, 0xb3, 0xc1, - 0xc1, 0xb7, 0xad, 0xa9, 0xad, 0xb4, 0xb8, 0xb6, 0xb7, 0xbd, 0xc4, 0xc7, 0xb9, 0xa4, 0x98, 0x95, - 0x93, 0x94, 0x8f, 0x83, 0x7a, 0x7c, 0x85, 0x8e, 0x89, 0x78, 0x6a, 0x66, 0x6c, 0x7e, 0x8f, 0x95, - 0x97, 0x9f, 0xa0, 0x9b, 0x92, 0x8b, 0x87, 0x8a, 0x8e, 0x98, 0x9c, 0x94, 0x8f, 0x9f, 0xb3, 0xbb, - 0xb4, 0xa4, 0x93, 0x8a, 0x82, 0x83, 0x80, 0x70, 0x66, 0x6b, 0x76, 0x80, 0x81, 0x78, 0x6c, 0x64, - 0x60, 0x62, 0x62, 0x5b, 0x53, 0x57, 0x61, 0x6e, 0x75, 0x6e, 0x63, 0x62, 0x69, 0x74, 0x7e, 0x80, - 0x7b, 0x80, 0x86, 0x87, 0x80, 0x6e, 0x65, 0x6a, 0x6f, 0x78, 0x82, 0x81, 0x77, 0x77, 0x7b, 0x80, - 0x7e, 0x72, 0x64, 0x62, 0x65, 0x6b, 0x79, 0x81, 0x7d, 0x82, 0x90, 0xa1, 0xaa, 0xa4, 0x96, 0x8e, - 0x8c, 0x90, 0x94, 0x8f, 0x83, 0x7d, 0x83, 0x8c, 0x93, 0x8f, 0x85, 0x80, 0x7c, 0x77, 0x79, 0x7a, - 0x74, 0x76, 0x85, 0x90, 0x99, 0x95, 0x8a, 0x83, 0x84, 0x88, 0x92, 0x91, 0x85, 0x7c, 0x80, 0x86, - 0x89, 0x7a, 0x63, 0x57, 0x57, 0x59, 0x61, 0x68, 0x68, 0x68, 0x6f, 0x78, 0x81, 0x7c, 0x6b, 0x56, - 0x4d, 0x4a, 0x50, 0x57, 0x53, 0x4a, 0x4d, 0x59, 0x69, 0x6f, 0x69, 0x60, 0x5c, 0x5d, 0x65, 0x6a, - 0x61, 0x54, 0x56, 0x61, 0x6b, 0x67, 0x5b, 0x54, 0x57, 0x5b, 0x60, 0x69, 0x6a, 0x64, 0x6a, 0x78, - 0x88, 0x91, 0x8d, 0x82, 0x7e, 0x81, 0x87, 0x93, 0x97, 0x94, 0x94, 0x9c, 0xa9, 0xaf, 0xa1, 0x88, - 0x7a, 0x79, 0x83, 0x91, 0x98, 0x9c, 0xa9, 0xb8, 0xc3, 0xc6, 0xb8, 0xa3, 0x98, 0x94, 0x97, 0x9f, - 0xa0, 0x9a, 0x98, 0x9f, 0xaa, 0xb5, 0xb2, 0xa3, 0x98, 0x92, 0x91, 0x9c, 0xa0, 0x92, 0x89, 0x90, - 0x9b, 0xa5, 0x9e, 0x8d, 0x84, 0x85, 0x87, 0x88, 0x8a, 0x84, 0x7e, 0x84, 0x8a, 0x91, 0x91, 0x85, - 0x74, 0x6d, 0x6b, 0x73, 0x7a, 0x77, 0x72, 0x74, 0x7a, 0x8d, 0x93, 0x88, 0x72, 0x66, 0x64, 0x6c, - 0x74, 0x6f, 0x69, 0x6f, 0x78, 0x7e, 0x7a, 0x67, 0x54, 0x4c, 0x46, 0x47, 0x4d, 0x49, 0x3e, 0x3c, - 0x44, 0x53, 0x5f, 0x5d, 0x50, 0x49, 0x46, 0x4d, 0x5d, 0x65, 0x61, 0x67, 0x74, 0x83, 0x8f, 0x8c, - 0x7e, 0x7a, 0x7d, 0x82, 0x8a, 0x8a, 0x82, 0x81, 0x86, 0x8d, 0x91, 0x86, 0x75, 0x69, 0x63, 0x69, - 0x78, 0x82, 0x86, 0x8a, 0x90, 0x9a, 0xa1, 0x9d, 0x91, 0x86, 0x89, 0x8e, 0x96, 0x9a, 0x92, 0x8d, - 0x97, 0xa5, 0xb2, 0xb3, 0xa6, 0x9a, 0x98, 0x98, 0x9c, 0xa1, 0x9f, 0x9e, 0xa6, 0xab, 0xb4, 0xb4, - 0xa3, 0x94, 0x92, 0x91, 0x94, 0x98, 0x92, 0x88, 0x88, 0x8e, 0x98, 0x97, 0x86, 0x71, 0x69, 0x6c, - 0x78, 0x83, 0x83, 0x81, 0x88, 0x8e, 0x96, 0x98, 0x90, 0x88, 0x83, 0x80, 0x86, 0x8f, 0x8e, 0x85, - 0x85, 0x8b, 0x93, 0x96, 0x8c, 0x79, 0x6d, 0x69, 0x6f, 0x7a, 0x7e, 0x7d, 0x86, 0x90, 0x9a, 0xa2, - 0x96, 0x80, 0x78, 0x7a, 0x7d, 0x80, 0x7b, 0x6f, 0x6c, 0x70, 0x77, 0x84, 0x83, 0x71, 0x63, 0x5c, - 0x5e, 0x6a, 0x70, 0x6e, 0x70, 0x74, 0x76, 0x78, 0x70, 0x5e, 0x4e, 0x47, 0x48, 0x4f, 0x52, 0x4a, - 0x47, 0x51, 0x62, 0x74, 0x76, 0x6c, 0x62, 0x5e, 0x5d, 0x65, 0x70, 0x70, 0x72, 0x7d, 0x81, 0x7d, - 0x74, 0x68, 0x5f, 0x5f, 0x65, 0x6f, 0x77, 0x73, 0x6e, 0x76, 0x86, 0x97, 0xa0, 0x98, 0x8a, 0x83, - 0x80, 0x85, 0x85, 0x7b, 0x73, 0x78, 0x7d, 0x83, 0x86, 0x7d, 0x72, 0x6e, 0x6f, 0x71, 0x72, 0x6d, - 0x6a, 0x6d, 0x71, 0x7a, 0x83, 0x7a, 0x6a, 0x59, 0x4b, 0x4a, 0x50, 0x54, 0x57, 0x69, 0x81, 0x90, - 0x96, 0x91, 0x87, 0x89, 0x92, 0x9a, 0xa4, 0xa4, 0x95, 0x8d, 0x8c, 0x89, 0x88, 0x82, 0x75, 0x6d, - 0x67, 0x6a, 0x79, 0x84, 0x82, 0x80, 0x83, 0x8a, 0x91, 0x8d, 0x82, 0x78, 0x74, 0x76, 0x7b, 0x7d, - 0x76, 0x79, 0x87, 0x97, 0xaa, 0xb3, 0xad, 0xa8, 0xa3, 0xa0, 0xa2, 0xa2, 0x9e, 0xa2, 0xad, 0xb2, - 0xb4, 0xae, 0x9d, 0x89, 0x81, 0x77, 0x83, 0x91, 0x8f, 0x8c, 0x90, 0x94, 0x98, 0x96, 0x8e, 0x7b, - 0x6d, 0x6c, 0x75, 0x80, 0x79, 0x6c, 0x77, 0x86, 0x8e, 0x8f, 0x84, 0x7b, 0x7c, 0x78, 0x7d, 0x8a, - 0x8b, 0x8e, 0x96, 0x9e, 0xa9, 0xb0, 0xa7, 0x90, 0x8a, 0x8a, 0x8c, 0x97, 0x90, 0x84, 0x93, 0x9e, - 0xa5, 0xac, 0xa8, 0x9e, 0x99, 0x9c, 0xa5, 0xa7, 0x9c, 0x88, 0x85, 0x8e, 0x99, 0x98, 0x8a, 0x74, - 0x68, 0x61, 0x65, 0x6c, 0x6e, 0x72, 0x79, 0x86, 0x97, 0xa9, 0xad, 0x9d, 0x92, 0x91, 0x8f, 0x93, - 0x8d, 0x80, 0x7e, 0x83, 0x8f, 0x8f, 0x7c, 0x6b, 0x60, 0x5f, 0x5f, 0x5f, 0x55, 0x49, 0x4d, 0x55, - 0x59, 0x5d, 0x53, 0x46, 0x3e, 0x3d, 0x49, 0x52, 0x4f, 0x42, 0x3c, 0x4a, 0x51, 0x57, 0x5f, 0x59, - 0x54, 0x57, 0x5e, 0x6c, 0x6b, 0x5d, 0x59, 0x66, 0x75, 0x73, 0x64, 0x5b, 0x58, 0x56, 0x4c, 0x3c, - 0x37, 0x39, 0x39, 0x44, 0x4c, 0x4d, 0x4c, 0x41, 0x31, 0x1d, 0xe, 0x14, 0x1f, 0x24, 0x31, 0x4a, - 0x5e, 0x6a, 0x77, 0x82, 0x7e, 0x7b, 0x88, 0x95, 0xa0, 0xae, 0xaa, 0xaa, 0xb9, 0xca, 0xd5, 0xc8, - 0xb0, 0xac, 0xa8, 0xb0, 0xc3, 0xbe, 0xaa, 0x9f, 0xa3, 0xba, 0xd2, 0xda, 0xcf, 0xbb, 0xb1, 0xb5, - 0xbc, 0xaf, 0x8d, 0x81, 0x95, 0xae, 0xc6, 0xc1, 0xa4, 0xa3, 0xa7, 0xa7, 0xb3, 0xa9, 0x9a, 0x9e, - 0xaa, 0xbd, 0xcb, 0xca, 0xb3, 0xaf, 0xbb, 0xb9, 0xac, 0x96, 0x81, 0x81, 0x9b, 0xb3, 0xb7, 0xa0, - 0x7d, 0x6b, 0x69, 0x6c, 0x69, 0x58, 0x46, 0x45, 0x55, 0x65, 0x59, 0x45, 0x3d, 0x46, 0x53, 0x51, - 0x44, 0x3f, 0x3e, 0x42, 0x4f, 0x50, 0x4d, 0x4c, 0x44, 0x45, 0x4e, 0x44, 0x41, 0x50, 0x55, 0x6c, - 0x89, 0x86, 0x86, 0x90, 0x99, 0xb2, 0xbf, 0xb8, 0xb2, 0xb1, 0xab, 0xa5, 0xad, 0xbb, 0xc9, 0xd1, - 0xd3, 0xd4, 0xc9, 0xb5, 0xa6, 0x9d, 0x9f, 0x91, 0x80, 0x81, 0x84, 0x89, 0x92, 0x88, 0x7a, 0x7a, - 0x7e, 0x87, 0x80, 0x66, 0x59, 0x60, 0x7c, 0x8d, 0x7e, 0x6c, 0x66, 0x67, 0x6d, 0x80, 0x8a, 0x7e, - 0x7a, 0x7b, 0x88, 0x8c, 0x7e, 0x73, 0x74, 0x78, 0x73, 0x77, 0x68, 0x57, 0x62, 0x6e, 0x7c, 0x85, - 0x73, 0x60, 0x63, 0x69, 0x83, 0x8f, 0x80, 0x6f, 0x6c, 0x8b, 0xa3, 0xad, 0xa9, 0x99, 0x9b, 0xb0, - 0xa9, 0x93, 0x7b, 0x69, 0x6b, 0x78, 0x7e, 0x72, 0x64, 0x58, 0x49, 0x4c, 0x4c, 0x3b, 0x38, 0x3c, - 0x34, 0x3f, 0x4b, 0x45, 0x48, 0x52, 0x68, 0x85, 0x79, 0x6e, 0x7c, 0x81, 0x94, 0x9d, 0x98, 0xa0, - 0x95, 0x8f, 0x8d, 0x81, 0x70, 0x63, 0x53, 0x54, 0x5f, 0x68, 0x77, 0x86, 0x88, 0x8e, 0x80, 0x70, - 0x68, 0x62, 0x6a, 0x6d, 0x72, 0x67, 0x61, 0x82, 0x96, 0xa6, 0xad, 0x99, 0x87, 0x84, 0x92, 0xa0, - 0x9c, 0x9a, 0xa7, 0xb3, 0xc6, 0xc3, 0xa7, 0xa7, 0xa5, 0x97, 0x9a, 0xa1, 0x8e, 0x7e, 0x87, 0xa1, - 0xb9, 0xba, 0xa8, 0x94, 0x85, 0x7d, 0x83, 0x82, 0x81, 0x84, 0x94, 0xa6, 0x9c, 0x82, 0x61, 0x59, - 0x69, 0x7d, 0x82, 0x72, 0x58, 0x5d, 0x66, 0x76, 0x8b, 0x7b, 0x6a, 0x5a, 0x53, 0x5e, 0x5a, 0x4d, - 0x52, 0x5f, 0x71, 0x83, 0x83, 0x77, 0x6c, 0x72, 0x7a, 0x70, 0x67, 0x66, 0x62, 0x5d, 0x64, 0x6e, - 0x6f, 0x67, 0x58, 0x5c, 0x64, 0x57, 0x49, 0x51, 0x67, 0x82, 0x88, 0x81, 0x7b, 0x6a, 0x6a, 0x6d, - 0x77, 0x74, 0x63, 0x72, 0x80, 0x88, 0x7d, 0x6c, 0x7a, 0x8f, 0x97, 0x9e, 0x93, 0x79, 0x6f, 0x72, - 0x81, 0x79, 0x6c, 0x6f, 0x87, 0x90, 0x8d, 0x8b, 0x84, 0x74, 0x6e, 0x79, 0x68, 0x58, 0x61, 0x68, - 0x7b, 0x97, 0xab, 0xaa, 0x9d, 0xa2, 0xa4, 0x9e, 0xa0, 0x96, 0x8a, 0xa2, 0xb6, 0xbb, 0xad, 0x98, - 0x94, 0x9e, 0xa8, 0xaa, 0x95, 0x8d, 0x82, 0x87, 0x99, 0x97, 0x85, 0x80, 0x9c, 0xb6, 0xb2, 0x9b, - 0x8e, 0x9a, 0xaf, 0xb2, 0xc6, 0xc6, 0xa2, 0x85, 0x8e, 0x9e, 0xa4, 0x9c, 0x7e, 0x7a, 0x88, 0x94, - 0xa2, 0xa4, 0xa5, 0xb3, 0xa4, 0xa2, 0x9d, 0x76, 0x73, 0x75, 0x77, 0x71, 0x6a, 0x62, 0x58, 0x66, - 0x8f, 0x90, 0x94, 0x85, 0x75, 0x81, 0x84, 0x8c, 0x83, 0x8b, 0x98, 0x9a, 0x92, 0x83, 0x73, 0x70, - 0x86, 0x90, 0x8f, 0x7e, 0x77, 0x75, 0x6c, 0x75, 0x73, 0x64, 0x58, 0x59, 0x5f, 0x58, 0x54, 0x53, - 0x5b, 0x61, 0x61, 0x5a, 0x45, 0x37, 0x16, 0x13, 0x3b, 0x4d, 0x49, 0x42, 0x43, 0x59, 0x76, 0x78, - 0x63, 0x57, 0x50, 0x57, 0x61, 0x61, 0x69, 0x86, 0x9f, 0xa5, 0xab, 0xa4, 0x94, 0x7d, 0x7b, 0x97, - 0xa2, 0x81, 0x6d, 0x59, 0x57, 0x5d, 0x5b, 0x54, 0x44, 0x38, 0x5d, 0x76, 0x76, 0x73, 0x7a, 0x87, - 0x93, 0x8b, 0x92, 0x95, 0x7b, 0x69, 0x7e, 0x70, 0x67, 0x66, 0x74, 0x76, 0x76, 0x84, 0x7c, 0x7b, - 0x89, 0x78, 0x7a, 0x86, 0x76, 0x83, 0x9d, 0xb1, 0xb0, 0x98, 0x7b, 0x82, 0x9e, 0xad, 0xa3, 0x83, - 0x66, 0x65, 0x6f, 0x64, 0x62, 0x63, 0x6b, 0x6b, 0x82, 0x88, 0x79, 0x7d, 0x76, 0x81, 0x94, 0x95, - 0x7e, 0x72, 0x69, 0x84, 0xa5, 0x95, 0x6c, 0x65, 0x6f, 0x73, 0x71, 0x7c, 0x7d, 0x7c, 0x80, 0x91, - 0xae, 0x9b, 0x8b, 0x9d, 0xb5, 0xd9, 0xd1, 0xb7, 0xa9, 0x9a, 0x97, 0x99, 0xb1, 0xbd, 0xab, 0x9f, - 0x87, 0x7b, 0x66, 0x4f, 0x45, 0x57, 0x6f, 0x75, 0x89, 0x87, 0x97, 0xb0, 0xb0, 0xa9, 0x9c, 0x92, - 0x9e, 0xa2, 0xa3, 0xa2, 0xac, 0xbb, 0xaa, 0xab, 0xab, 0xa3, 0xad, 0xa2, 0xa8, 0xbe, 0xc1, 0xa6, - 0x9b, 0xad, 0xb0, 0xb0, 0x9b, 0x7e, 0x84, 0x82, 0x91, 0x8c, 0x91, 0x97, 0x86, 0x77, 0x68, 0x5c, - 0x59, 0x46, 0x38, 0x51, 0x5a, 0x64, 0x56, 0x57, 0x69, 0x76, 0x70, 0x60, 0x3f, 0x49, 0x68, 0x7d, - 0xa1, 0x88, 0x7b, 0x7e, 0x73, 0x89, 0x84, 0x69, 0x6f, 0x68, 0x83, 0x8b, 0x6f, 0x66, 0x73, 0x88, - 0x88, 0x87, 0x6c, 0x54, 0x53, 0x59, 0x73, 0x74, 0x69, 0x75, 0x75, 0x6c, 0x75, 0x69, 0x4f, 0x2a, - 0x2a, 0x3f, 0x4f, 0x64, 0x62, 0x4b, 0x6b, 0x9c, 0xa1, 0x6e, 0x59, 0x4e, 0x50, 0x53, 0x6b, 0x85, - 0x80, 0x7a, 0x79, 0x86, 0x8c, 0x87, 0x69, 0x64, 0x85, 0x80, 0x67, 0x4d, 0x4e, 0x63, 0x6d, 0x71, - 0x69, 0x3c, 0x36, 0x4f, 0x71, 0x8f, 0x86, 0x95, 0x92, 0x81, 0x9b, 0xa7, 0x8a, 0x71, 0x82, 0x97, - 0x96, 0xac, 0x93, 0x99, 0xa6, 0xb0, 0xa7, 0x85, 0x82, 0x8a, 0x80, 0x88, 0x95, 0x94, 0x97, 0x99, - 0xa0, 0xa6, 0x96, 0x8e, 0x8f, 0xa2, 0xbf, 0xb6, 0x97, 0x8e, 0x7c, 0x90, 0xaf, 0xbe, 0xba, 0xa5, - 0xa9, 0xbb, 0xab, 0x9c, 0x86, 0x84, 0x9e, 0xa5, 0xa7, 0x95, 0x83, 0x8a, 0x96, 0x90, 0x96, 0x98, - 0x71, 0x69, 0x89, 0x8b, 0x69, 0x44, 0x42, 0x41, 0x3e, 0x54, 0x57, 0x44, 0x3c, 0x52, 0x6a, 0x83, - 0x7a, 0x70, 0x7d, 0x8e, 0xaa, 0xb1, 0x8c, 0x87, 0x97, 0x92, 0xad, 0xa5, 0x88, 0x60, 0x6d, 0x82, - 0x7c, 0x8f, 0x74, 0x6d, 0x82, 0x83, 0x73, 0x62, 0x3d, 0x47, 0x52, 0x5f, 0x76, 0x77, 0x62, 0x56, - 0x60, 0x7d, 0x8b, 0x6f, 0x66, 0x5a, 0x77, 0x8d, 0x6c, 0x65, 0x7b, 0x7a, 0x84, 0x85, 0x78, 0x8d, - 0x98, 0xb1, 0xc4, 0xb8, 0x9d, 0x94, 0x9a, 0xa7, 0xb3, 0x98, 0x78, 0x74, 0x73, 0x6e, 0x68, 0x68, - 0x63, 0x4f, 0x56, 0x5b, 0x5f, 0x63, 0x5d, 0x58, 0x7e, 0x9a, 0x8a, 0x77, 0x6a, 0x6c, 0x6a, 0x72, - 0x6c, 0x6a, 0x6d, 0x74, 0x8d, 0x8e, 0x6e, 0x8f, 0x90, 0x80, 0xa3, 0xa3, 0x8b, 0x89, 0x9d, 0x9f, - 0xa7, 0x9b, 0x92, 0x93, 0x95, 0x9f, 0xa5, 0x9e, 0x71, 0x6d, 0x6c, 0x70, 0x78, 0x8e, 0x8b, 0x8a, - 0x97, 0x7d, 0x6c, 0x68, 0x70, 0x82, 0x93, 0x96, 0x92, 0x88, 0x8f, 0x87, 0x7b, 0x91, 0x8d, 0x92, - 0xa8, 0xaf, 0xc5, 0xb3, 0x94, 0x8d, 0x80, 0x68, 0x5f, 0x54, 0x46, 0x4e, 0x67, 0x86, 0x94, 0xa7, - 0x99, 0x99, 0xba, 0xbb, 0xbc, 0xa8, 0x7b, 0x77, 0x9d, 0x97, 0x94, 0xa0, 0x82, 0x55, 0x5c, 0x61, - 0x51, 0x60, 0x61, 0x65, 0x83, 0x86, 0x75, 0x79, 0x72, 0x6b, 0x99, 0xa1, 0x7a, 0x83, 0x8f, 0x7c, - 0x98, 0xa2, 0x98, 0x9a, 0x95, 0x82, 0x94, 0x7a, 0x5d, 0x60, 0x84, 0x9d, 0xae, 0x9e, 0x83, 0x7c, - 0x91, 0xad, 0xa3, 0x90, 0x81, 0x7b, 0x8f, 0x83, 0x74, 0x84, 0x6b, 0x58, 0x5a, 0x48, 0x2f, 0x2b, - 0x38, 0x3b, 0x46, 0x45, 0x34, 0x22, 0x37, 0x3b, 0x4a, 0x52, 0x4b, 0x62, 0x8a, 0xa0, 0xa0, 0x9a, - 0x7d, 0x76, 0x84, 0x7b, 0x6b, 0x56, 0x46, 0x4d, 0x64, 0x63, 0x70, 0x88, 0x86, 0x82, 0x83, 0x84, - 0x87, 0x76, 0x61, 0x6c, 0x72, 0x62, 0x52, 0x5c, 0x5c, 0x5d, 0x74, 0x6e, 0x50, 0x55, 0x71, 0x83, - 0x86, 0x88, 0x83, 0x70, 0x71, 0x84, 0x86, 0x71, 0x77, 0x8a, 0x9a, 0xb0, 0xaf, 0xa2, 0x8e, 0x98, - 0x96, 0x8c, 0x7e, 0x67, 0x70, 0x8b, 0x9f, 0xb9, 0xaa, 0x98, 0xa1, 0x80, 0x81, 0x93, 0x7e, 0x6d, - 0x76, 0x97, 0xab, 0xa9, 0xa8, 0xad, 0x99, 0x92, 0x9d, 0x9e, 0x75, 0x64, 0x8d, 0xa2, 0x9a, 0xa0, - 0xab, 0x9e, 0x8a, 0x96, 0x9f, 0x96, 0x88, 0x8b, 0xb7, 0xd4, 0xc2, 0xc1, 0xb5, 0xa9, 0xae, 0x9e, - 0x84, 0x7c, 0x74, 0x87, 0xa2, 0x9f, 0x9c, 0x94, 0x95, 0x99, 0xab, 0xb0, 0xac, 0x93, 0x88, 0xa0, - 0x87, 0x85, 0x75, 0x67, 0x62, 0x6a, 0x7c, 0x92, 0x7d, 0x60, 0x6a, 0x76, 0x7b, 0x7a, 0x6c, 0x6a, - 0x6b, 0x6d, 0x5e, 0x4b, 0x57, 0x65, 0x76, 0x90, 0x9e, 0x8d, 0x88, 0x75, 0x84, 0x85, 0x4d, 0x34, - 0x46, 0x7a, 0x8b, 0x85, 0x79, 0x89, 0x8b, 0x77, 0xa7, 0x9a, 0x90, 0x84, 0x81, 0x93, 0x90, 0x8b, - 0x6f, 0x74, 0x72, 0x65, 0x6f, 0x5d, 0x3b, 0x32, 0x2c, 0x44, 0x68, 0x44, 0x29, 0x2f, 0x21, 0x39, - 0x51, 0x3d, 0x41, 0x64, 0x8b, 0xa2, 0x9c, 0x8a, 0x84, 0x7a, 0x8e, 0x94, 0x77, 0x53, 0x6c, 0x97, - 0xa3, 0xa4, 0xae, 0x97, 0x87, 0x90, 0x94, 0x82, 0x61, 0x5e, 0x6c, 0x6e, 0x4c, 0x49, 0x55, 0x4e, - 0x52, 0x6e, 0x81, 0x6e, 0x69, 0x6b, 0x76, 0x8b, 0x8e, 0x7a, 0x76, 0x6b, 0x67, 0x6e, 0x71, 0x6e, - 0x5d, 0x7b, 0xa3, 0xa2, 0x9a, 0x98, 0x9a, 0x86, 0x7a, 0x7a, 0x5a, 0x58, 0x70, 0x7b, 0x94, 0x90, - 0x8d, 0x89, 0x8f, 0x8c, 0x75, 0x57, 0x4a, 0x5e, 0x71, 0x8a, 0x8f, 0x91, 0x96, 0x90, 0x90, 0x8c, - 0x94, 0x72, 0x55, 0x62, 0x68, 0x70, 0x6f, 0x73, 0x86, 0x8e, 0x99, 0xa4, 0xa4, 0xa2, 0xb1, 0xcd, - 0xdf, 0xe2, 0xd6, 0xc4, 0xab, 0xa5, 0xa3, 0x95, 0x77, 0x8c, 0x87, 0x9b, 0xc4, 0xb0, 0xb1, 0xcb, - 0xcd, 0xb5, 0x8e, 0x87, 0x82, 0x7a, 0x7e, 0x81, 0x8c, 0x93, 0x8d, 0x81, 0xac, 0xd6, 0xb7, 0x93, - 0x82, 0x81, 0x87, 0x6c, 0x58, 0x6c, 0x7a, 0x7e, 0x8b, 0x90, 0x7d, 0x71, 0x74, 0x81, 0x8d, 0x8e, - 0x73, 0x74, 0x87, 0x84, 0x82, 0x7e, 0x68, 0x63, 0x78, 0x97, 0x98, 0x6e, 0x5a, 0x81, 0x91, 0x75, - 0x74, 0x7a, 0x65, 0x48, 0x4d, 0x69, 0x7d, 0x7b, 0x6e, 0x5f, 0x6e, 0x75, 0x57, 0x3e, 0x3a, 0x3c, - 0x3b, 0x46, 0x4d, 0x55, 0x58, 0x55, 0x5c, 0x53, 0x4b, 0x55, 0x71, 0x86, 0x8e, 0x98, 0x80, 0x73, - 0x6c, 0x66, 0x55, 0x60, 0x6f, 0x77, 0xa1, 0xc9, 0xbb, 0xb1, 0xad, 0xb2, 0x8f, 0x6c, 0x58, 0x54, - 0x52, 0x54, 0x46, 0x3e, 0x4c, 0x49, 0x5e, 0x74, 0x8f, 0x9e, 0x91, 0x8b, 0x8e, 0x92, 0x9f, 0x9a, - 0x71, 0x5f, 0x68, 0x6c, 0x7b, 0x6a, 0x5f, 0x7d, 0x9f, 0xb2, 0xb6, 0x9e, 0x83, 0x98, 0x9d, 0x97, - 0x8a, 0x7a, 0x6f, 0x6f, 0x8c, 0xb2, 0xa3, 0x8b, 0x8b, 0x8e, 0x91, 0x91, 0x7a, 0x62, 0x56, 0x61, - 0x72, 0x88, 0x82, 0x7a, 0x86, 0x9c, 0xa6, 0x97, 0x74, 0x60, 0x5d, 0x60, 0x6a, 0x79, 0x64, 0x4c, - 0x70, 0xa8, 0xbf, 0xac, 0xaa, 0xba, 0xd1, 0xf2, 0xd3, 0xa7, 0xa3, 0x86, 0x66, 0x6f, 0x79, 0x70, - 0x61, 0x6b, 0x88, 0x9c, 0x88, 0x8a, 0xa2, 0x97, 0x9d, 0x82, 0x60, 0x5f, 0x5c, 0x68, 0x7d, 0x9b, - 0x9e, 0x8d, 0xaf, 0xc8, 0xc1, 0xb8, 0x81, 0x78, 0x81, 0x75, 0x74, 0x6d, 0x66, 0x75, 0x7b, 0x81, - 0x7d, 0x75, 0x5d, 0x7d, 0xaf, 0xb6, 0xa6, 0x95, 0x8c, 0x71, 0x6f, 0x5a, 0x43, 0x41, 0x39, 0x58, - 0x7b, 0x8b, 0xae, 0xb9, 0xba, 0xc6, 0xbc, 0x84, 0x6c, 0x78, 0x87, 0x91, 0x88, 0x8e, 0x7b, 0x61, - 0x69, 0x79, 0x69, 0x3a, 0x1e, 0x2d, 0x31, 0x3d, 0x4d, 0x37, 0x40, 0x49, 0x3a, 0x4d, 0x5f, 0x57, - 0x69, 0x90, 0x8b, 0x83, 0x7c, 0x73, 0x6e, 0x4e, 0x5c, 0x6c, 0x55, 0x6a, 0x92, 0x9a, 0x9e, 0xae, - 0xb9, 0xb2, 0xb2, 0xa0, 0x81, 0x65, 0x5a, 0x59, 0x3e, 0x26, 0x46, 0x5c, 0x52, 0x7b, 0xa4, 0xb4, - 0xba, 0xa7, 0x9e, 0x9b, 0x79, 0x83, 0x8e, 0x7c, 0x76, 0x59, 0x69, 0x73, 0x6e, 0x8f, 0x98, 0x8e, - 0x88, 0x8b, 0x9c, 0x8e, 0x9c, 0xa4, 0x84, 0x7c, 0x66, 0x6d, 0x67, 0x5c, 0x74, 0x7d, 0x9c, 0xbc, - 0xc5, 0xb2, 0x8c, 0x78, 0x77, 0x7a, 0x82, 0x84, 0x84, 0x93, 0x96, 0x99, 0x9d, 0x94, 0x85, 0x71, - 0x59, 0x69, 0x72, 0x5f, 0x73, 0x74, 0x70, 0x6b, 0x78, 0x7a, 0x7c, 0xaf, 0xdc, 0xe4, 0xea, 0xf4, - 0xfe, 0xc0, 0xa9, 0xa7, 0x83, 0x6d, 0x6c, 0x86, 0x96, 0x96, 0xa3, 0xa4, 0xb0, 0xb2, 0xa1, 0x86, - 0x6a, 0x4a, 0x3d, 0x3c, 0x45, 0x4e, 0x5c, 0x74, 0x93, 0x98, 0x99, 0xa9, 0x96, 0x7a, 0x90, 0x9c, - 0x80, 0x6f, 0x67, 0x64, 0x75, 0x77, 0x78, 0x74, 0x70, 0x92, 0xac, 0x97, 0x7e, 0x6f, 0x88, 0x86, - 0x85, 0x78, 0x6e, 0x5a, 0x4d, 0x48, 0x53, 0x6f, 0x7e, 0x95, 0xbe, 0xd1, 0xdb, 0xdb, 0xa4, 0x81, - 0x6f, 0x5e, 0x6a, 0x71, 0x57, 0x60, 0x7b, 0x78, 0x79, 0x7c, 0x48, 0x33, 0x27, 0x25, 0x28, 0x2e, - 0x3b, 0x43, 0x47, 0x3f, 0x48, 0x51, 0x48, 0x49, 0x50, 0x4a, 0x3b, 0x5a, 0x65, 0x60, 0x5f, 0x59, - 0x64, 0x76, 0x7a, 0x77, 0x93, 0x98, 0x9f, 0xb0, 0xd6, 0xdb, 0xb4, 0x8e, 0x66, 0x58, 0x5a, 0x5c, - 0x55, 0x54, 0x52, 0x56, 0x6a, 0x82, 0x8e, 0x87, 0x7a, 0x8f, 0x91, 0x7d, 0x89, 0x9a, 0x9c, 0x8a, - 0x94, 0x91, 0x9a, 0xa2, 0x9e, 0xb3, 0xc8, 0xce, 0x98, 0x72, 0x9a, 0x9f, 0x84, 0x78, 0x72, 0x69, - 0x5c, 0x63, 0x87, 0x96, 0x99, 0xa9, 0xbb, 0xaf, 0xb9, 0xaf, 0x7e, 0x84, 0x7a, 0x6e, 0x87, 0x80, - 0x7d, 0x74, 0x80, 0x76, 0x66, 0x69, 0x4d, 0x49, 0x42, 0x51, 0x7a, 0x92, 0x9c, 0x91, 0x8e, 0x8d, - 0x71, 0x71, 0xaa, 0xbc, 0xb3, 0xbb, 0xbd, 0xd2, 0xdc, 0xbe, 0x9c, 0x9b, 0x93, 0x8c, 0x84, 0x76, - 0x90, 0xa6, 0xaa, 0xc1, 0xc6, 0x9d, 0xa2, 0x8c, 0x64, 0x6c, 0x55, 0x57, 0x6a, 0x67, 0x7a, 0x92, - 0x9c, 0x84, 0x67, 0x66, 0x68, 0x5c, 0x6e, 0x5d, 0x6d, 0x89, 0x76, 0x82, 0x8a, 0x7b, 0x79, 0x8a, - 0x90, 0x95, 0x87, 0x7a, 0x79, 0x7c, 0x81, 0x6b, 0x66, 0x68, 0x63, 0x57, 0x45, 0x48, 0x52, 0x63, - 0x87, 0x9f, 0xc2, 0xd1, 0xc7, 0xc8, 0xb2, 0x9d, 0x8e, 0x80, 0x80, 0x95, 0xa2, 0x91, 0x7c, 0x80, - 0x83, 0x75, 0x47, 0x28, 0x31, 0x3b, 0x4f, 0x4d, 0x45, 0x46, 0x41, 0x3d, 0x42, 0x6c, 0x73, 0x5b, - 0x4f, 0x3b, 0x42, 0x4f, 0x65, 0x76, 0x7b, 0x75, 0x84, 0x78, 0x83, 0x7e, 0x79, 0x9b, 0xbc, 0xcf, - 0xcc, 0xa6, 0x89, 0x7b, 0x5c, 0x5c, 0x4d, 0x3b, 0x3f, 0x3e, 0x3e, 0x3d, 0x4a, 0x6d, 0x67, 0x5c, - 0x58, 0x52, 0x76, 0x7b, 0x70, 0x6e, 0x6d, 0x74, 0x79, 0x79, 0x91, 0xae, 0xb7, 0xa0, 0x8e, 0x81, - 0x71, 0x63, 0x6d, 0x85, 0x94, 0xa2, 0x95, 0x72, 0x85, 0x9a, 0xa6, 0x9f, 0xa2, 0xaf, 0xb6, 0xa0, - 0x6c, 0x8b, 0x89, 0x75, 0x6d, 0x6b, 0x91, 0x96, 0x7d, 0x7c, 0x8f, 0xac, 0xa8, 0x85, 0x81, 0x7e, - 0x8a, 0xa5, 0x9b, 0x9c, 0x8c, 0x51, 0x60, 0x94, 0x8b, 0x99, 0x8f, 0x82, 0x97, 0x9d, 0xcb, 0xd7, - 0xd2, 0xc8, 0xae, 0xb1, 0xb2, 0xba, 0xc6, 0xb3, 0xaa, 0xab, 0xc2, 0xd5, 0xbf, 0x9b, 0x7a, 0x75, - 0x73, 0x61, 0x63, 0x6f, 0x73, 0x82, 0x90, 0x95, 0x8a, 0x82, 0x77, 0x6d, 0x60, 0x61, 0x69, 0x6b, - 0x69, 0x7e, 0x8c, 0x89, 0x86, 0x77, 0x7a, 0x7b, 0x88, 0x7c, 0x78, 0x6b, 0x4c, 0x55, 0x5b, 0x6b, - 0x7d, 0x68, 0x56, 0x51, 0x51, 0x5c, 0x6b, 0x83, 0x98, 0xaf, 0xc0, 0xa7, 0x93, 0x88, 0x7d, 0x8d, - 0x87, 0x79, 0x7d, 0x70, 0x5d, 0x74, 0x85, 0x72, 0x82, 0x65, 0x41, 0x36, 0x44, 0x67, 0x66, 0x62, - 0x59, 0x52, 0x45, 0x4b, 0x5d, 0x52, 0x48, 0x38, 0x32, 0x2a, 0x2a, 0x3c, 0x52, 0x5d, 0x64, 0x7e, - 0x89, 0x7e, 0x83, 0x92, 0xac, 0xbc, 0xda, 0xe1, 0xc4, 0xa0, 0x98, 0x95, 0x91, 0x6e, 0x4c, 0x4b, - 0x40, 0x4c, 0x62, 0x5e, 0x68, 0x56, 0x51, 0x5a, 0x63, 0x77, 0x80, 0x83, 0x8f, 0x93, 0x9f, 0xa2, - 0xa2, 0xb7, 0xbf, 0xc7, 0xc3, 0x9c, 0x97, 0x81, 0x6c, 0x85, 0x8e, 0x94, 0x8e, 0x82, 0x73, 0x56, - 0x68, 0x7a, 0x72, 0x8f, 0x99, 0x96, 0xa8, 0x93, 0x8b, 0x8c, 0x7d, 0x71, 0x7a, 0x7a, 0x78, 0x76, - 0x8c, 0x8b, 0x78, 0x7e, 0x85, 0x9d, 0x94, 0x7b, 0x84, 0x7b, 0x60, 0x6a, 0x75, 0x6f, 0x78, 0x85, - 0x7c, 0x87, 0x8f, 0x90, 0x9b, 0x99, 0x87, 0x8b, 0xa4, 0xa5, 0xa8, 0xc3, 0xc1, 0x98, 0x8c, 0x87, - 0x97, 0xb0, 0xaf, 0xba, 0xae, 0x95, 0x93, 0xb0, 0xb0, 0x9d, 0x92, 0x80, 0x86, 0x8b, 0x76, 0x61, - 0x63, 0x5d, 0x61, 0x75, 0x79, 0x76, 0x6f, 0x76, 0x78, 0x6c, 0x79, 0x82, 0x8b, 0x88, 0x8a, 0x93, - 0xaa, 0xa3, 0x89, 0x78, 0x5a, 0x59, 0x79, 0x75, 0x63, 0x5c, 0x5b, 0x48, 0x4e, 0x7c, 0x9f, 0x95, - 0x8c, 0x8f, 0x7b, 0x69, 0x81, 0x8b, 0x8c, 0x80, 0x86, 0x91, 0x91, 0x99, 0x91, 0x81, 0x6d, 0x5f, - 0x5e, 0x58, 0x5b, 0x4b, 0x50, 0x65, 0x5f, 0x49, 0x31, 0x40, 0x50, 0x5f, 0x58, 0x4f, 0x5e, 0x66, - 0x71, 0x81, 0x6d, 0x6f, 0x90, 0x96, 0x7a, 0x74, 0x79, 0x7d, 0x77, 0x85, 0x9b, 0x98, 0xb0, 0xb4, - 0x97, 0xa1, 0x9e, 0x76, 0x5f, 0x51, 0x53, 0x45, 0x52, 0x68, 0x57, 0x3f, 0x4c, 0x55, 0x65, 0x6e, - 0x6e, 0x5f, 0x68, 0x83, 0x89, 0x9f, 0xa5, 0x9a, 0xa1, 0x94, 0x88, 0x84, 0x85, 0x94, 0x97, 0x71, - 0x66, 0x78, 0x8e, 0x91, 0x88, 0x7b, 0x76, 0x6f, 0x79, 0x8e, 0x91, 0xa0, 0xa9, 0xa4, 0xa7, 0x8d, - 0x76, 0x6c, 0x77, 0x68, 0x56, 0x68, 0x7e, 0x8a, 0x88, 0x8d, 0xa9, 0xa7, 0xa5, 0xb0, 0xb8, 0xa7, - 0x9e, 0x99, 0x93, 0x93, 0x77, 0x70, 0x85, 0x9f, 0xa3, 0x97, 0x99, 0xab, 0x97, 0x80, 0x7b, 0x8d, - 0xa6, 0xb3, 0x9b, 0x8f, 0x9c, 0xa6, 0x9a, 0x98, 0xa4, 0xa9, 0xac, 0xaa, 0xb3, 0xac, 0xa8, 0xa1, - 0x94, 0x79, 0x61, 0x59, 0x5c, 0x4f, 0x52, 0x5f, 0x5a, 0x66, 0x72, 0x6f, 0x7c, 0x86, 0x97, 0xa3, - 0x94, 0x80, 0x8d, 0x93, 0xa6, 0xa2, 0x83, 0x75, 0x76, 0x6b, 0x68, 0x63, 0x55, 0x44, 0x50, 0x65, - 0x6c, 0x6c, 0x6d, 0x71, 0x62, 0x59, 0x71, 0x86, 0x77, 0x72, 0x69, 0x56, 0x5e, 0x52, 0x5a, 0x5f, - 0x56, 0x71, 0x78, 0x6d, 0x6d, 0x44, 0x50, 0x63, 0x68, 0x65, 0x5c, 0x71, 0x6a, 0x57, 0x4f, 0x51, - 0x55, 0x42, 0x48, 0x4f, 0x63, 0x75, 0x89, 0x95, 0x81, 0x72, 0x6c, 0x52, 0x5f, 0x7b, 0x70, 0x73, - 0x88, 0x93, 0xab, 0xc0, 0xc3, 0xcf, 0xdc, 0xdf, 0xc8, 0x88, 0x81, 0x9b, 0x90, 0x8b, 0x84, 0x74, - 0x5b, 0x46, 0x36, 0x34, 0x54, 0x57, 0x42, 0x50, 0x6c, 0x87, 0x9e, 0xa3, 0xa6, 0x97, 0x9f, 0xc1, - 0xce, 0xbb, 0xb5, 0xa8, 0x8f, 0xa1, 0xb1, 0x99, 0x8c, 0x81, 0x90, 0x93, 0x87, 0x91, 0x86, 0x81, - 0x7e, 0x72, 0x78, 0x96, 0x94, 0x8e, 0x93, 0x7a, 0x74, 0x83, 0x87, 0x8b, 0x80, 0x77, 0x92, 0xa1, - 0x91, 0x78, 0x62, 0x77, 0x82, 0x7d, 0x7e, 0x7c, 0x7c, 0x7e, 0x77, 0x5e, 0x79, 0x88, 0x83, 0x85, - 0x8b, 0x8b, 0x81, 0x76, 0x79, 0x90, 0x94, 0x90, 0x95, 0x88, 0x86, 0x78, 0x69, 0x7e, 0x8a, 0x90, - 0x94, 0xa3, 0xb7, 0xb5, 0xac, 0xb3, 0xa8, 0x9a, 0x9d, 0x9c, 0x86, 0x78, 0x65, 0x61, 0x68, 0x5c, - 0x4f, 0x60, 0x76, 0x72, 0x60, 0x54, 0x6e, 0x6e, 0x6b, 0x7d, 0x89, 0x84, 0x83, 0x9c, 0xa3, 0x91, - 0xa2, 0xa3, 0x97, 0x93, 0x95, 0x74, 0x80, 0x97, 0x95, 0x78, 0x66, 0x65, 0x5a, 0x54, 0x6a, 0x73, - 0x72, 0x67, 0x66, 0x76, 0x78, 0x7e, 0x96, 0x7c, 0x6c, 0x75, 0x6f, 0x75, 0x76, 0x6f, 0x6c, 0x6d, - 0x7c, 0x78, 0x67, 0x5c, 0x5a, 0x3d, 0x41, 0x5b, 0x54, 0x54, 0x62, 0x71, 0x6e, 0x6d, 0x65, 0x72, - 0x6d, 0x5b, 0x67, 0x55, 0x63, 0x74, 0x67, 0x70, 0x6c, 0x6e, 0x7b, 0x9c, 0x99, 0x96, 0x82, 0x86, - 0x9b, 0x81, 0x73, 0x7a, 0x7b, 0x65, 0x59, 0x49, 0x4f, 0x5e, 0x57, 0x59, 0x56, 0x6c, 0x75, 0x6c, - 0x7c, 0x89, 0x7b, 0x60, 0x6d, 0x82, 0x86, 0x94, 0x98, 0x93, 0x9f, 0x9d, 0x99, 0xa4, 0xaf, 0xae, - 0xa0, 0x99, 0xa3, 0xa5, 0x9c, 0x9c, 0x9c, 0x8a, 0x79, 0x9b, 0x9c, 0x89, 0x93, 0xa1, 0x7b, 0x76, - 0x8f, 0x9f, 0x9e, 0x9e, 0x94, 0x78, 0x8f, 0xa4, 0xa5, 0x96, 0x9d, 0xb0, 0xae, 0xad, 0xac, 0x8e, - 0x78, 0x8d, 0x8f, 0x94, 0x92, 0x8f, 0x94, 0x8e, 0x8e, 0xa4, 0xa6, 0x86, 0x8d, 0x9d, 0x92, 0x87, - 0x73, 0x70, 0x82, 0x85, 0x89, 0x99, 0x9b, 0xa1, 0x9d, 0x97, 0xaa, 0x9f, 0x84, 0x88, 0x84, 0x84, - 0x8a, 0x7e, 0x6b, 0x69, 0x5c, 0x5f, 0x74, 0x65, 0x5c, 0x5f, 0x66, 0x91, 0x7e, 0x66, 0x6b, 0x73, - 0x74, 0x5c, 0x5c, 0x82, 0x7a, 0x63, 0x6a, 0x65, 0x6b, 0x72, 0x63, 0x6e, 0x7c, 0x70, 0x5e, 0x6a, - 0x76, 0x70, 0x67, 0x76, 0x7a, 0x72, 0x71, 0x6a, 0x5e, 0x5a, 0x69, 0x81, 0x6c, 0x57, 0x67, 0x62, - 0x62, 0x52, 0x64, 0x7a, 0x71, 0x75, 0x71, 0x68, 0x6c, 0x72, 0x56, 0x55, 0x74, 0x7d, 0x72, 0x78, - 0x76, 0x80, 0x72, 0x62, 0x67, 0x5a, 0x56, 0x6a, 0x6b, 0x76, 0x7b, 0x65, 0x6e, 0x84, 0x8d, 0x8c, - 0x8d, 0x9d, 0x9b, 0x8e, 0xbc, 0xce, 0xbc, 0xb1, 0xac, 0x9c, 0x8a, 0x7d, 0x79, 0x7e, 0x75, 0x76, - 0x78, 0x6f, 0x6c, 0x72, 0x77, 0x81, 0x88, 0x80, 0x76, 0x72, 0x68, 0x62, 0x8a, 0x96, 0x98, 0xb1, - 0x9a, 0x8a, 0x8d, 0x95, 0xa2, 0x8e, 0x8d, 0x8e, 0x7d, 0x79, 0x76, 0x91, 0x91, 0x77, 0x8f, 0x98, - 0x7b, 0x64, 0x66, 0x74, 0x79, 0x8b, 0x8b, 0x9d, 0xa2, 0x97, 0x8a, 0x83, 0x7b, 0x6c, 0x70, 0x7a, - 0x7b, 0x85, 0x81, 0x8c, 0x93, 0x88, 0x85, 0x80, 0x83, 0x8a, 0x86, 0x8e, 0x8e, 0xa7, 0xae, 0x7e, - 0x86, 0x88, 0x78, 0x72, 0x6a, 0x6f, 0x72, 0x6d, 0x6e, 0x7c, 0x8f, 0x7b, 0x85, 0x8c, 0x81, 0x8e, - 0x93, 0xa0, 0xb3, 0xa7, 0x98, 0xb6, 0xa6, 0x9a, 0x96, 0x78, 0x6e, 0x6d, 0x70, 0x78, 0x6c, 0x67, - 0x79, 0x89, 0x8a, 0x81, 0x6e, 0x65, 0x75, 0x86, 0x75, 0x73, 0x87, 0x8b, 0x78, 0x6b, 0x7c, 0x8a, - 0x8f, 0x97, 0x7d, 0x83, 0x6b, 0x55, 0x5b, 0x67, 0x74, 0x73, 0x81, 0x77, 0x87, 0x79, 0x7a, 0x8b, - 0x70, 0x75, 0x7c, 0x74, 0x72, 0x78, 0x80, 0x88, 0x69, 0x6f, 0x83, 0x6d, 0x61, 0x60, 0x4b, 0x4f, - 0x6d, 0x6a, 0x73, 0x6a, 0x5f, 0x73, 0x70, 0x72, 0x6a, 0x67, 0x57, 0x59, 0x5a, 0x5f, 0x7c, 0x8d, - 0x71, 0x6e, 0x6b, 0x66, 0x74, 0x76, 0x87, 0x7e, 0x77, 0xa0, 0x96, 0x79, 0x85, 0xa4, 0xa4, 0x92, - 0x9d, 0xa1, 0x84, 0x7e, 0x77, 0x78, 0x64, 0x64, 0x77, 0x7e, 0x80, 0x75, 0x5c, 0x62, 0x7a, 0x6c, - 0x55, 0x62, 0x67, 0x69, 0x6d, 0x84, 0x95, 0x8e, 0x80, 0x70, 0x5d, 0x7d, 0x9a, 0x9d, 0x91, 0x94, - 0xae, 0x8d, 0x80, 0xa0, 0xa4, 0x92, 0x90, 0x8c, 0x81, 0x8e, 0xa1, 0xa5, 0xa5, 0xa6, 0x9f, 0x9b, - 0x95, 0x9a, 0xa1, 0x82, 0x7d, 0x95, 0x95, 0xaf, 0xa6, 0x93, 0x89, 0x9e, 0xaa, 0xa1, 0x99, 0x97, - 0x8b, 0x96, 0xa9, 0xb0, 0xa2, 0x8c, 0x92, 0x87, 0x87, 0x8e, 0x95, 0x7e, 0x6a, 0x5f, 0x62, 0x6c, - 0x7d, 0x90, 0x90, 0x8c, 0x83, 0x75, 0x70, 0x87, 0x8f, 0x97, 0x91, 0x9a, 0xa7, 0x93, 0x8e, 0x9c, - 0x89, 0x7d, 0x6e, 0x63, 0x75, 0x7b, 0x89, 0x71, 0x66, 0x80, 0x62, 0x4e, 0x5f, 0x5b, 0x49, 0x4e, - 0x5c, 0x62, 0x5d, 0x62, 0x6f, 0x73, 0x5e, 0x5c, 0x69, 0x73, 0x6b, 0x51, 0x42, 0x43, 0x4d, 0x66, - 0x7b, 0x71, 0x5b, 0x5b, 0x6b, 0x78, 0x7d, 0x74, 0x64, 0x70, 0x7d, 0x88, 0x85, 0x82, 0x71, 0x68, - 0x6d, 0x5e, 0x6f, 0x77, 0x59, 0x4f, 0x64, 0x73, 0x73, 0x6a, 0x76, 0x88, 0x80, 0x78, 0x7a, 0x90, - 0xa8, 0x9c, 0x8c, 0x7c, 0x85, 0x97, 0xa3, 0x97, 0x92, 0x8d, 0x6c, 0x63, 0x75, 0x8e, 0x96, 0x8c, - 0x81, 0x8e, 0x9d, 0x9c, 0x7a, 0x8b, 0xa9, 0x97, 0x81, 0x8b, 0x83, 0x74, 0x68, 0x7c, 0x86, 0x8a, - 0x8c, 0x88, 0x9c, 0x94, 0x8d, 0x8f, 0x7d, 0x7e, 0x84, 0x89, 0x84, 0x8b, 0x89, 0x8e, 0xa3, 0xa2, - 0x92, 0x85, 0x7b, 0x87, 0x9b, 0x97, 0x7d, 0x6e, 0x72, 0x73, 0x6d, 0x87, 0x87, 0x79, 0x62, 0x67, - 0x6d, 0x74, 0x84, 0x74, 0x72, 0x6a, 0x6f, 0x80, 0x79, 0x88, 0x8c, 0x8b, 0x83, 0x86, 0x84, 0x9f, - 0xaa, 0x95, 0x8e, 0x8c, 0x91, 0x98, 0x94, 0x93, 0x9a, 0x8a, 0x99, 0x9c, 0x8f, 0x95, 0x7a, 0x6a, - 0x7a, 0x7b, 0x73, 0x6d, 0x65, 0x71, 0x7b, 0x76, 0x8a, 0x97, 0x87, 0x9a, 0xa0, 0x90, 0x96, 0x95, - 0x96, 0x92, 0x9a, 0x91, 0x94, 0x87, 0x7b, 0x8a, 0x89, 0x82, 0x6c, 0x6a, 0x7c, 0x7b, 0x77, 0x63, - 0x51, 0x7b, 0x85, 0x77, 0x80, 0x87, 0x87, 0x62, 0x66, 0x76, 0x7a, 0x84, 0x71, 0x68, 0x6f, 0x79, - 0x6c, 0x65, 0x72, 0x7e, 0x6e, 0x5f, 0x75, 0x8e, 0x94, 0x93, 0x91, 0x7d, 0x6e, 0x6b, 0x7d, 0x6e, - 0x6f, 0x69, 0x5f, 0x74, 0x7a, 0x70, 0x68, 0x70, 0x6c, 0x5d, 0x64, 0x68, 0x58, 0x53, 0x58, 0x69, - 0x76, 0x7d, 0x84, 0x86, 0x8b, 0x89, 0x8d, 0x8f, 0x7e, 0x74, 0x72, 0x74, 0x70, 0x6c, 0x5f, 0x65, - 0x71, 0x6e, 0x73, 0x6f, 0x6b, 0x7a, 0x89, 0x8f, 0x86, 0x74, 0x80, 0x85, 0x83, 0x91, 0x87, 0x6e, - 0x6c, 0x6f, 0x67, 0x65, 0x71, 0x66, 0x6c, 0x7c, 0x78, 0x7c, 0x69, 0x6c, 0x76, 0x6d, 0x7b, 0x86, - 0x95, 0xa4, 0xa3, 0x9d, 0x9e, 0x87, 0x93, 0xa0, 0x83, 0x7b, 0x80, 0x7b, 0x83, 0x8b, 0x8d, 0x8a, - 0x88, 0x8e, 0x8a, 0x88, 0x9c, 0x9b, 0x89, 0x8a, 0x92, 0xaa, 0xad, 0xa9, 0xa0, 0xa2, 0xa5, 0xaf, - 0xaa, 0x9a, 0xaa, 0xae, 0x90, 0x8b, 0x90, 0x99, 0x7e, 0x84, 0x95, 0x8f, 0x8d, 0x83, 0x9b, 0x97, - 0x94, 0x8c, 0x82, 0x93, 0x94, 0x8e, 0x84, 0x88, 0x71, 0x6b, 0x6b, 0x61, 0x5d, 0x67, 0x7b, 0x73, - 0x79, 0x82, 0x84, 0x8a, 0x8b, 0x8b, 0x91, 0x91, 0x92, 0xa2, 0x8f, 0x8e, 0x93, 0x86, 0x83, 0x6d, - 0x6f, 0x7c, 0x65, 0x56, 0x58, 0x69, 0x63, 0x4d, 0x5d, 0x68, 0x71, 0x6a, 0x65, 0x6e, 0x71, 0x6b, - 0x67, 0x70, 0x7b, 0x87, 0x76, 0x66, 0x67, 0x67, 0x6e, 0x6a, 0x67, 0x71, 0x87, 0x6f, 0x6c, 0x78, - 0x77, 0x7e, 0x75, 0x71, 0x6b, 0x68, 0x6e, 0x67, 0x61, 0x5f, 0x68, 0x5e, 0x66, 0x69, 0x6f, 0x78, - 0x70, 0x6b, 0x61, 0x5a, 0x60, 0x5b, 0x48, 0x6c, 0x85, 0x81, 0x8a, 0x8b, 0x90, 0x92, 0x8c, 0x8e, - 0x94, 0x8a, 0x95, 0x90, 0x8d, 0x9f, 0x8c, 0x90, 0xa0, 0x97, 0x91, 0x8c, 0x89, 0x88, 0x8b, 0x92, - 0x9d, 0xa4, 0xa4, 0x8c, 0x8a, 0x8f, 0x8e, 0x80, 0x75, 0x82, 0x84, 0x7b, 0x7b, 0x7e, 0x82, 0x7e, - 0x83, 0x78, 0x6e, 0x76, 0x6b, 0x6e, 0x79, 0x92, 0x9e, 0x9c, 0x96, 0x9f, 0xa6, 0x9e, 0x9f, 0x91, - 0x94, 0x92, 0x8d, 0x81, 0x76, 0x82, 0x8d, 0x86, 0x80, 0x83, 0x87, 0x7c, 0x6c, 0x75, 0x84, 0x7a, - 0x71, 0x70, 0x7b, 0x77, 0x75, 0x6e, 0x6c, 0x76, 0x70, 0x71, 0x75, 0x85, 0x8a, 0x77, 0x85, 0x83, - 0x6f, 0x73, 0x81, 0x87, 0x77, 0x82, 0x8e, 0x87, 0x8c, 0x8b, 0x8b, 0x8e, 0x86, 0x83, 0x7e, 0x7a, - 0x76, 0x60, 0x65, 0x80, 0x96, 0x87, 0x7e, 0x84, 0x80, 0x85, 0x8d, 0x8d, 0x95, 0x94, 0x8e, 0x81, - 0x89, 0x8d, 0x8b, 0x8b, 0x94, 0x9c, 0x8b, 0x8a, 0x95, 0x8a, 0x85, 0x92, 0x93, 0x83, 0x7d, 0x87, - 0x7b, 0x75, 0x7c, 0x86, 0x87, 0x74, 0x7b, 0x6f, 0x77, 0x81, 0x70, 0x76, 0x80, 0x78, 0x69, 0x59, - 0x60, 0x67, 0x71, 0x7a, 0x83, 0x86, 0x78, 0x7b, 0x79, 0x70, 0x76, 0x71, 0x6a, 0x5f, 0x5c, 0x58, - 0x54, 0x62, 0x5c, 0x5e, 0x7b, 0x79, 0x7d, 0x6c, 0x69, 0x7b, 0x74, 0x6c, 0x70, 0x7b, 0x76, 0x78, - 0x86, 0x94, 0x95, 0x7e, 0x78, 0x7e, 0x86, 0x78, 0x73, 0x7b, 0x81, 0x75, 0x6c, 0x61, 0x77, 0x7e, - 0x69, 0x7e, 0x86, 0x73, 0x71, 0x72, 0x7e, 0x8f, 0x9c, 0x88, 0x81, 0x84, 0x7b, 0x72, 0x78, 0x83, - 0x77, 0x7b, 0x74, 0x72, 0x7e, 0x78, 0x77, 0x79, 0x77, 0x82, 0x8b, 0x7c, 0x83, 0x92, 0x99, 0x93, - 0x9a, 0x96, 0x96, 0x91, 0x90, 0x8b, 0x85, 0x92, 0x8f, 0x77, 0x71, 0x74, 0x6c, 0x6e, 0x80, 0x8d, - 0x8f, 0x8e, 0x97, 0x91, 0x9a, 0xa1, 0xa4, 0x98, 0x9d, 0x97, 0x88, 0x8d, 0x84, 0x84, 0x8b, 0x8d, - 0xa4, 0xa4, 0x96, 0x94, 0x92, 0x89, 0x86, 0x92, 0x95, 0x92, 0x95, 0x97, 0x98, 0x9a, 0x9d, 0x95, - 0x91, 0x89, 0x8e, 0x8e, 0x87, 0x80, 0x7d, 0x73, 0x79, 0x79, 0x73, 0x70, 0x7d, 0x77, 0x75, 0x84, - 0x84, 0x83, 0x7e, 0x89, 0x9d, 0x94, 0x8b, 0x87, 0x7d, 0x7a, 0x87, 0x83, 0x7e, 0x77, 0x82, 0x70, - 0x6b, 0x6b, 0x67, 0x59, 0x60, 0x5b, 0x6a, 0x73, 0x62, 0x55, 0x5e, 0x6c, 0x6a, 0x5b, 0x5c, 0x6a, - 0x63, 0x5e, 0x5c, 0x5f, 0x5c, 0x59, 0x5a, 0x4e, 0x58, 0x5e, 0x70, 0x6f, 0x7e, 0x81, 0x6d, 0x77, - 0x80, 0x77, 0x77, 0x75, 0x68, 0x6a, 0x6b, 0x6a, 0x73, 0x65, 0x68, 0x70, 0x71, 0x73, 0x77, 0x66, - 0x64, 0x68, 0x70, 0x79, 0x80, 0x83, 0x8b, 0x91, 0x95, 0x9d, 0x99, 0x95, 0x97, 0xa4, 0xa9, 0xa4, - 0xa2, 0xa6, 0xa1, 0xa1, 0xa4, 0x96, 0x9c, 0x8b, 0x87, 0x9a, 0x95, 0x8d, 0x8a, 0x8b, 0x91, 0x91, - 0x94, 0x88, 0x7e, 0x7a, 0x72, 0x78, 0x80, 0x7a, 0x82, 0x8d, 0x88, 0x83, 0x86, 0x77, 0x7d, 0x77, - 0x6e, 0x84, 0x82, 0x8e, 0x8c, 0x83, 0x8e, 0x8a, 0x8c, 0x8a, 0x7b, 0x7c, 0x7e, 0x7d, 0x78, 0x71, - 0x7b, 0x70, 0x79, 0x71, 0x67, 0x68, 0x79, 0x7b, 0x65, 0x6a, 0x84, 0x7c, 0x75, 0x6a, 0x7b, 0x7a, - 0x6e, 0x7d, 0x7d, 0x86, 0x80, 0x8a, 0x8f, 0x96, 0x9d, 0x98, 0x8e, 0x99, 0x9e, 0x82, 0x92, 0x91, - 0x95, 0x8e, 0x8b, 0x8b, 0x83, 0x90, 0x8b, 0x87, 0x82, 0x85, 0x85, 0x7d, 0x78, 0x7b, 0x76, 0x68, - 0x7a, 0x7d, 0x68, 0x6b, 0x6f, 0x68, 0x68, 0x78, 0x78, 0x79, 0x83, 0x83, 0x86, 0x83, 0x81, 0x7e, - 0x83, 0x82, 0x8c, 0x89, 0x8a, 0x88, 0x8f, 0x84, 0x87, 0x89, 0x79, 0x6f, 0x71, 0x88, 0x8a, 0x80, - 0x81, 0x7b, 0x7b, 0x7c, 0x92, 0x8f, 0x7a, 0x8f, 0x95, 0x88, 0x8e, 0x82, 0x84, 0x77, 0x6d, 0x7e, - 0x72, 0x77, 0x80, 0x74, 0x76, 0x81, 0x83, 0x75, 0x6f, 0x76, 0x6b, 0x66, 0x75, 0x79, 0x7c, 0x78, - 0x74, 0x79, 0x79, 0x73, 0x79, 0x7a, 0x77, 0x7b, 0x72, 0x68, 0x73, 0x73, 0x74, 0x74, 0x6e, 0x6e, - 0x6b, 0x78, 0x76, 0x7d, 0x85, 0x7d, 0x7c, 0x7b, 0x79, 0x75, 0x6e, 0x72, 0x6b, 0x60, 0x62, 0x68, - 0x6a, 0x6a, 0x74, 0x78, 0x83, 0x81, 0x7b, 0x7c, 0x76, 0x77, 0x71, 0x71, 0x80, 0x89, 0x84, 0x7b, - 0x83, 0x85, 0x81, 0x89, 0x7a, 0x7c, 0x7d, 0x79, 0x7b, 0x84, 0x8b, 0x8d, 0x8a, 0x87, 0x90, 0x8e, - 0x85, 0x90, 0x9b, 0x99, 0x8d, 0x8e, 0x90, 0x8c, 0x89, 0x8e, 0x8f, 0x93, 0x87, 0x84, 0x82, 0x7a, - 0x85, 0x8b, 0x8f, 0x9a, 0x8f, 0x78, 0x7a, 0x88, 0x8f, 0x82, 0x9a, 0xa2, 0x92, 0x9d, 0x9b, 0x8d, - 0x85, 0x89, 0x90, 0x95, 0x94, 0x8e, 0x84, 0x83, 0x82, 0x80, 0x8e, 0x8b, 0x85, 0x89, 0x7e, 0x93, - 0x91, 0x85, 0x92, 0x80, 0x72, 0x81, 0x75, 0x73, 0x6a, 0x6b, 0x76, 0x6c, 0x7c, 0x7a, 0x75, 0x83, - 0x7e, 0x7b, 0x77, 0x82, 0x80, 0x6f, 0x6c, 0x7d, 0x87, 0x74, 0x70, 0x6f, 0x6b, 0x66, 0x65, 0x5d, - 0x64, 0x67, 0x68, 0x66, 0x73, 0x77, 0x6d, 0x64, 0x6d, 0x78, 0x77, 0x75, 0x71, 0x7e, 0x89, 0x8d, - 0x83, 0x89, 0x7a, 0x79, 0x8c, 0x81, 0x87, 0x81, 0x7a, 0x81, 0x7a, 0x7a, 0x80, 0x83, 0x77, 0x6e, - 0x6c, 0x6b, 0x66, 0x5f, 0x6d, 0x7b, 0x87, 0x82, 0x7e, 0x85, 0x7b, 0x77, 0x80, 0x89, 0x88, 0x87, - 0x7a, 0x77, 0x73, 0x83, 0x75, 0x6f, 0x7e, 0x7d, 0x86, 0x80, 0x8b, 0x90, 0x92, 0x9b, 0x9b, 0xa4, - 0x9b, 0x90, 0x8b, 0x81, 0x7b, 0x79, 0x80, 0x87, 0x81, 0x75, 0x7c, 0x89, 0x79, 0x76, 0x84, 0x77, - 0x6a, 0x78, 0x7d, 0x7c, 0x85, 0x95, 0x8a, 0x83, 0x92, 0x8b, 0x7d, 0x77, 0x86, 0x97, 0x8b, 0x89, - 0x90, 0x89, 0x89, 0x92, 0x86, 0x8b, 0x8f, 0x89, 0x94, 0x94, 0x92, 0x94, 0x93, 0x8b, 0x88, 0x86, - 0x8f, 0x7c, 0x68, 0x68, 0x70, 0x71, 0x66, 0x5c, 0x61, 0x68, 0x60, 0x64, 0x7c, 0x77, 0x69, 0x6c, - 0x6d, 0x6f, 0x72, 0x73, 0x72, 0x75, 0x7b, 0x73, 0x72, 0x82, 0x82, 0x85, 0x8d, 0x8b, 0x81, 0x82, - 0x7e, 0x7d, 0x89, 0x83, 0x94, 0x94, 0x84, 0x84, 0x89, 0x89, 0x83, 0x8a, 0x81, 0x71, 0x82, 0x84, - 0x73, 0x79, 0x7a, 0x77, 0x77, 0x81, 0x8f, 0x8b, 0x8e, 0x88, 0x8d, 0x8d, 0x90, 0x8c, 0x84, 0x8b, - 0x97, 0x84, 0x7a, 0x8a, 0x7d, 0x75, 0x7e, 0x8b, 0x90, 0x91, 0x91, 0x8c, 0x84, 0x86, 0x8d, 0x79, - 0x7a, 0x7a, 0x73, 0x7b, 0x7c, 0x82, 0x80, 0x79, 0x8c, 0x8b, 0x74, 0x76, 0x76, 0x6d, 0x76, 0x74, - 0x77, 0x72, 0x71, 0x7c, 0x73, 0x74, 0x7a, 0x6d, 0x6f, 0x78, 0x7d, 0x79, 0x6e, 0x76, 0x87, 0x80, - 0x79, 0x75, 0x7b, 0x77, 0x6e, 0x75, 0x80, 0x85, 0x81, 0x78, 0x78, 0x71, 0x72, 0x67, 0x70, 0x72, - 0x74, 0x7e, 0x7c, 0x7a, 0x7b, 0x7e, 0x85, 0x7a, 0x7c, 0x80, 0x80, 0x71, 0x6c, 0x6c, 0x66, 0x75, - 0x86, 0x87, 0x7b, 0x76, 0x7c, 0x6d, 0x77, 0x87, 0x83, 0x70, 0x6f, 0x7c, 0x6e, 0x73, 0x7e, 0x6d, - 0x68, 0x82, 0x84, 0x83, 0x89, 0x90, 0x90, 0x89, 0x93, 0x89, 0x82, 0x82, 0x86, 0x83, 0x81, 0x87, - 0x8e, 0x85, 0x8c, 0x9d, 0x93, 0x8b, 0x99, 0x90, 0x8c, 0x8f, 0x80, 0x76, 0x7d, 0x74, 0x7c, 0x7c, - 0x82, 0x8a, 0x75, 0x78, 0x96, 0x9b, 0x92, 0x9d, 0x90, 0x96, 0x9d, 0x9b, 0x9a, 0x95, 0x9a, 0x93, - 0x8e, 0x9e, 0x9e, 0x93, 0x89, 0x87, 0x8f, 0x89, 0x85, 0x8b, 0x98, 0x88, 0x87, 0x89, 0x84, 0x89, - 0x83, 0x7c, 0x7d, 0x7a, 0x79, 0x6c, 0x6d, 0x75, 0x72, 0x77, 0x7d, 0x7d, 0x87, 0x7d, 0x87, 0x8d, - 0x84, 0x8b, 0x81, 0x7e, 0x88, 0x87, 0x77, 0x7a, 0x7a, 0x76, 0x73, 0x67, 0x6f, 0x5f, 0x55, 0x7c, - 0x84, 0x71, 0x71, 0x7a, 0x70, 0x60, 0x5f, 0x67, 0x62, 0x5c, 0x5e, 0x60, 0x5a, 0x68, 0x69, 0x60, - 0x74, 0x76, 0x6a, 0x75, 0x7a, 0x75, 0x71, 0x68, 0x71, 0x77, 0x77, 0x73, 0x6c, 0x63, 0x68, 0x80, - 0x7c, 0x7c, 0x83, 0x7b, 0x78, 0x71, 0x74, 0x7c, 0x86, 0x86, 0x7d, 0x82, 0x82, 0x8e, 0x85, 0x80, - 0x9a, 0x99, 0x8f, 0x8b, 0x8e, 0x98, 0x9b, 0xa5, 0x9f, 0x9a, 0xa1, 0xa0, 0x97, 0x9c, 0xa3, 0xa3, - 0x9a, 0x90, 0x88, 0x8a, 0x80, 0x77, 0x80, 0x7c, 0x84, 0x8e, 0x85, 0x71, 0x7b, 0x80, 0x71, 0x73, - 0x76, 0x72, 0x75, 0x65, 0x5f, 0x6c, 0x73, 0x77, 0x6d, 0x6a, 0x77, 0x7d, 0x86, 0x88, 0x86, 0x80, - 0x80, 0x86, 0x81, 0x7e, 0x82, 0x84, 0x76, 0x7e, 0x8d, 0x86, 0x7d, 0x7e, 0x8a, 0x7d, 0x76, 0x75, - 0x69, 0x67, 0x6b, 0x66, 0x6c, 0x64, 0x69, 0x6e, 0x6a, 0x71, 0x7c, 0x76, 0x79, 0x85, 0x86, 0x8b, - 0x8a, 0x87, 0x83, 0x7a, 0x8c, 0x8d, 0x7c, 0x7e, 0x84, 0x7c, 0x93, 0x80, 0x86, 0x8f, 0x88, 0x8e, - 0x87, 0x93, 0x99, 0x8b, 0x8c, 0x8c, 0x8a, 0x81, 0x83, 0x7a, 0x81, 0x86, 0x7d, 0x76, 0x76, 0x7e, - 0x83, 0x82, 0x84, 0x87, 0x83, 0x8c, 0x87, 0x85, 0x90, 0x8d, 0x95, 0x91, 0x8a, 0x82, 0x84, 0x7b, - 0x7e, 0x81, 0x83, 0x7b, 0x82, 0x89, 0x8c, 0x93, 0x95, 0x9a, 0x91, 0x91, 0x94, 0x89, 0x83, 0x7e, - 0x78, 0x77, 0x85, 0x85, 0x7d, 0x81, 0x8d, 0x85, 0x83, 0x86, 0x81, 0x7a, 0x6e, 0x78, 0x7b, 0x7a, - 0x80, 0x7c, 0x6e, 0x77, 0x76, 0x6e, 0x70, 0x72, 0x77, 0x6c, 0x6d, 0x72, 0x6f, 0x66, 0x6b, 0x6b, - 0x68, 0x6e, 0x77, 0x6b, 0x65, 0x6f, 0x76, 0x7a, 0x77, 0x72, 0x6b, 0x77, 0x84, 0x73, 0x69, 0x7b, - 0x76, 0x71, 0x72, 0x73, 0x7b, 0x85, 0x7c, 0x80, 0x8b, 0x8a, 0x7c, 0x74, 0x7b, 0x86, 0x82, 0x78, - 0x72, 0x7e, 0x78, 0x72, 0x76, 0x6f, 0x73, 0x70, 0x6c, 0x75, 0x76, 0x75, 0x7b, 0x77, 0x78, 0x87, - 0x86, 0x8d, 0x8c, 0x91, 0x94, 0x94, 0x9b, 0x8d, 0x84, 0x8a, 0x8b, 0x7d, 0x83, 0x8d, 0x82, 0x82, - 0x89, 0x8e, 0x95, 0x8f, 0x8f, 0x92, 0x8a, 0x80, 0x78, 0x7c, 0x81, 0x89, 0x80, 0x83, 0x88, 0x81, - 0x75, 0x81, 0x8a, 0x8a, 0x8e, 0x8b, 0x99, 0x8e, 0x89, 0x8e, 0x7d, 0x7e, 0x80, 0x84, 0x83, 0x8a, - 0x89, 0x83, 0x84, 0x87, 0x89, 0x7c, 0x85, 0x87, 0x83, 0x77, 0x83, 0x80, 0x78, 0x7c, 0x7d, 0x80, - 0x80, 0x79, 0x7a, 0x7e, 0x84, 0x73, 0x6d, 0x88, 0x92, 0x89, 0x83, 0x7c, 0x8c, 0x8b, 0x84, 0x90, - 0x90, 0x85, 0x7a, 0x73, 0x73, 0x6b, 0x6d, 0x6b, 0x61, 0x6d, 0x6c, 0x6e, 0x78, 0x78, 0x76, 0x77, - 0x84, 0x89, 0x7e, 0x79, 0x84, 0x7c, 0x77, 0x7d, 0x7a, 0x73, 0x79, 0x7d, 0x7d, 0x87, 0x88, 0x85, - 0x76, 0x7d, 0x86, 0x70, 0x6f, 0x75, 0x80, 0x87, 0x7d, 0x77, 0x83, 0x74, 0x79, 0x79, 0x66, 0x68, - 0x71, 0x6c, 0x5e, 0x64, 0x63, 0x59, 0x56, 0x67, 0x6c, 0x70, 0x79, 0x82, 0x87, 0x90, 0x9a, 0x94, - 0x93, 0x9d, 0x9d, 0x93, 0x8d, 0x97, 0x9c, 0x93, 0x9a, 0xa6, 0x98, 0x98, 0x93, 0x8c, 0x8d, 0x94, - 0x94, 0x85, 0x88, 0x8e, 0x8a, 0x8e, 0x8e, 0x7d, 0x8d, 0x8e, 0x8c, 0x92, 0x7e, 0x7e, 0x7b, 0x78, - 0x7a, 0x7b, 0x72, 0x71, 0x72, 0x70, 0x77, 0x7c, 0x8a, 0x7e, 0x7c, 0x8c, 0x8c, 0x88, 0x89, 0x76, - 0x6e, 0x81, 0x7d, 0x83, 0x84, 0x7d, 0x75, 0x7c, 0x7e, 0x7d, 0x7a, 0x72, 0x67, 0x6a, 0x67, 0x5f, - 0x68, 0x64, 0x69, 0x70, 0x79, 0x6c, 0x6a, 0x72, 0x67, 0x70, 0x77, 0x81, 0x78, 0x72, 0x7d, 0x7d, - 0x69, 0x69, 0x7e, 0x74, 0x73, 0x80, 0x8e, 0x92, 0x8d, 0x8a, 0x8c, 0x91, 0x97, 0x90, 0x7d, 0x8c, - 0x83, 0x87, 0x8e, 0x89, 0x8a, 0x83, 0x7b, 0x83, 0x7e, 0x7e, 0x77, 0x6e, 0x75, 0x74, 0x78, 0x83, - 0x85, 0x8c, 0x8a, 0x84, 0x97, 0xa0, 0x92, 0x8b, 0x95, 0x8f, 0x8a, 0x96, 0x95, 0x8d, 0x85, 0x83, - 0x8c, 0x90, 0x8c, 0x7b, 0x86, 0x8f, 0x88, 0x81, 0x88, 0x90, 0x8a, 0x82, 0x84, 0x86, 0x81, 0x7d, - 0x79, 0x79, 0x82, 0x84, 0x86, 0x79, 0x7e, 0x78, 0x6f, 0x6e, 0x6e, 0x6f, 0x6b, 0x6c, 0x6f, 0x6a, - 0x6d, 0x6f, 0x6f, 0x71, 0x6f, 0x79, 0x7b, 0x6d, 0x72, 0x7b, 0x73, 0x69, 0x62, 0x68, 0x65, 0x62, - 0x6e, 0x74, 0x7b, 0x84, 0x7c, 0x85, 0x86, 0x87, 0x89, 0x83, 0x87, 0x88, 0x77, 0x7d, 0x8f, 0x84, - 0x79, 0x84, 0x8d, 0x86, 0x87, 0x82, 0x84, 0x89, 0x8a, 0x8a, 0x90, 0x84, 0x89, 0x88, 0x73, 0x7b, - 0x7d, 0x78, 0x78, 0x7b, 0x77, 0x7c, 0x7a, 0x73, 0x6b, 0x76, 0x73, 0x67, 0x73, 0x71, 0x6a, 0x80, - 0x89, 0x7e, 0x7e, 0x8c, 0x80, 0x7b, 0x7d, 0x81, 0x7d, 0x79, 0x80, 0x80, 0x8e, 0x8d, 0x88, 0x93, - 0x92, 0x90, 0x90, 0x8a, 0x80, 0x87, 0x80, 0x7c, 0x84, 0x87, 0x8d, 0x83, 0x77, 0x82, 0x89, 0x8e, - 0x86, 0x7e, 0x8f, 0x98, 0x8d, 0x84, 0x8b, 0x8f, 0x82, 0x75, 0x80, 0x8c, 0x88, 0x91, 0x9a, 0x99, - 0x9a, 0x98, 0x8e, 0x94, 0x94, 0x87, 0x86, 0x81, 0x7b, 0x81, 0x85, 0x80, 0x8b, 0x8b, 0x7a, 0x81, - 0x82, 0x79, 0x78, 0x77, 0x79, 0x78, 0x7c, 0x82, 0x7e, 0x83, 0x73, 0x7c, 0x7d, 0x79, 0x7b, 0x6d, - 0x73, 0x73, 0x6a, 0x73, 0x6a, 0x63, 0x67, 0x62, 0x6c, 0x6f, 0x68, 0x6e, 0x81, 0x79, 0x7b, 0x7b, - 0x76, 0x7c, 0x7a, 0x78, 0x77, 0x76, 0x70, 0x75, 0x83, 0x7e, 0x76, 0x87, 0x83, 0x72, 0x77, 0x79, - 0x74, 0x73, 0x71, 0x78, 0x79, 0x86, 0x85, 0x82, 0x7e, 0x70, 0x73, 0x7b, 0x76, 0x77, 0x7d, 0x74, - 0x78, 0x75, 0x6c, 0x70, 0x71, 0x6b, 0x6d, 0x7a, 0x78, 0x8c, 0x98, 0x92, 0x90, 0x9c, 0x9f, 0xa0, - 0x92, 0x9b, 0x98, 0x7b, 0x84, 0x8e, 0x8f, 0x85, 0x86, 0x88, 0x8b, 0x90, 0x82, 0x7a, 0x7d, 0x81, - 0x7d, 0x84, 0x81, 0x8b, 0x8e, 0x82, 0x85, 0x89, 0x87, 0x7c, 0x7c, 0x7a, 0x7a, 0x81, 0x83, 0x7d, - 0x76, 0x7c, 0x78, 0x6e, 0x75, 0x84, 0x81, 0x81, 0x80, 0x8c, 0x81, 0x78, 0x7e, 0x85, 0x86, 0x8a, - 0x7e, 0x6e, 0x7c, 0x7c, 0x71, 0x79, 0x7d, 0x7e, 0x76, 0x68, 0x69, 0x78, 0x6f, 0x67, 0x6e, 0x6c, - 0x6c, 0x77, 0x73, 0x6f, 0x78, 0x7a, 0x81, 0x7d, 0x85, 0x88, 0x79, 0x7b, 0x81, 0x79, 0x81, 0x7d, - 0x7a, 0x7e, 0x7d, 0x90, 0x91, 0x82, 0x80, 0x85, 0x88, 0x84, 0x87, 0x93, 0x9a, 0x92, 0x8c, 0x85, - 0x8f, 0x96, 0x7a, 0x7e, 0x89, 0x81, 0x88, 0x80, 0x7a, 0x84, 0x73, 0x75, 0x88, 0x84, 0x7b, 0x80, - 0x87, 0x8d, 0x8d, 0x88, 0x8c, 0x91, 0x89, 0x8b, 0x8f, 0x8f, 0x8c, 0x7a, 0x76, 0x7a, 0x7a, 0x82, - 0x79, 0x80, 0x86, 0x81, 0x83, 0x82, 0x88, 0x88, 0x84, 0x81, 0x8b, 0x87, 0x81, 0x85, 0x90, 0x96, - 0x8d, 0x99, 0x95, 0x85, 0x86, 0x7e, 0x82, 0x80, 0x73, 0x87, 0x89, 0x80, 0x7d, 0x7d, 0x78, 0x74, - 0x6f, 0x70, 0x7e, 0x7a, 0x74, 0x75, 0x77, 0x71, 0x6c, 0x6c, 0x6d, 0x68, 0x62, 0x69, 0x63, 0x67, - 0x71, 0x6f, 0x74, 0x68, 0x66, 0x6a, 0x66, 0x65, 0x6d, 0x72, 0x70, 0x7e, 0x81, 0x7c, 0x89, 0x8b, - 0x81, 0x84, 0x80, 0x76, 0x7e, 0x75, 0x6a, 0x7d, 0x80, 0x79, 0x78, 0x78, 0x83, 0x86, 0x7e, 0x82, - 0x89, 0x83, 0x82, 0x86, 0x8d, 0x8a, 0x90, 0x94, 0x83, 0x7c, 0x7e, 0x80, 0x81, 0x7d, 0x7d, 0x7e, - 0x85, 0x80, 0x7e, 0x8c, 0x86, 0x87, 0x89, 0x86, 0x81, 0x7e, 0x83, 0x89, 0x8d, 0x8f, 0x8d, 0x8d, - 0x87, 0x7d, 0x83, 0x82, 0x78, 0x78, 0x7c, 0x84, 0x79, 0x79, 0x7e, 0x79, 0x77, 0x76, 0x76, 0x7e, - 0x7e, 0x7a, 0x83, 0x88, 0x7a, 0x79, 0x81, 0x7b, 0x88, 0x87, 0x7c, 0x86, 0x8b, 0x8a, 0x8e, 0x8e, - 0x8a, 0x8d, 0x8e, 0x88, 0x92, 0x96, 0x89, 0x89, 0x94, 0x91, 0x8e, 0x8b, 0x85, 0x88, 0x8a, 0x80, - 0x77, 0x7e, 0x80, 0x75, 0x75, 0x76, 0x7a, 0x75, 0x70, 0x77, 0x85, 0x82, 0x76, 0x81, 0x84, 0x75, - 0x72, 0x73, 0x73, 0x6d, 0x6f, 0x67, 0x6f, 0x81, 0x7d, 0x79, 0x7e, 0x7c, 0x7c, 0x77, 0x70, 0x7d, - 0x77, 0x76, 0x75, 0x81, 0x81, 0x7a, 0x78, 0x78, 0x82, 0x86, 0x79, 0x74, 0x7b, 0x75, 0x73, 0x6d, - 0x7d, 0x77, 0x6b, 0x6a, 0x6f, 0x74, 0x6f, 0x6f, 0x79, 0x6d, 0x6e, 0x85, 0x81, 0x76, 0x7c, 0x7c, - 0x7b, 0x77, 0x78, 0x80, 0x82, 0x7a, 0x80, 0x90, 0x91, 0x8e, 0x87, 0x88, 0x91, 0x8f, 0x8b, 0x8d, - 0x8e, 0x8e, 0x89, 0x90, 0x94, 0x8a, 0x8b, 0x8d, 0x8e, 0x8c, 0x87, 0x82, 0x7d, 0x80, 0x88, 0x87, - 0x88, 0x8c, 0x8b, 0x84, 0x86, 0x92, 0x8f, 0x83, 0x87, 0x8d, 0x8b, 0x88, 0x93, 0x8d, 0x84, 0x7c, - 0x7b, 0x86, 0x86, 0x7e, 0x7d, 0x83, 0x8d, 0x79, 0x7a, 0x88, 0x7c, 0x72, 0x6b, 0x7d, 0x85, 0x73, - 0x6f, 0x72, 0x7a, 0x75, 0x76, 0x7c, 0x82, 0x77, 0x6c, 0x6c, 0x71, 0x73, 0x6c, 0x65, 0x69, 0x74, - 0x75, 0x6b, 0x68, 0x6e, 0x68, 0x6c, 0x6b, 0x75, 0x7a, 0x72, 0x70, 0x72, 0x82, 0x7b, 0x77, 0x7c, - 0x78, 0x79, 0x81, 0x80, 0x7a, 0x78, 0x7e, 0x8d, 0x86, 0x83, 0x85, 0x89, 0x85, 0x7d, 0x8e, 0x8d, - 0x90, 0x87, 0x82, 0x8f, 0x91, 0x81, 0x7c, 0x82, 0x7d, 0x83, 0x86, 0x82, 0x86, 0x88, 0x85, 0x98, - 0x9e, 0x97, 0x99, 0x97, 0x9a, 0x93, 0x96, 0x98, 0x90, 0x8b, 0x88, 0x82, 0x8b, 0x8c, 0x79, 0x7b, - 0x7e, 0x83, 0x81, 0x73, 0x7a, 0x80, 0x73, 0x70, 0x79, 0x7e, 0x7b, 0x6a, 0x71, 0x70, 0x76, 0x7b, - 0x6c, 0x7a, 0x79, 0x71, 0x70, 0x78, 0x7c, 0x71, 0x76, 0x73, 0x7b, 0x79, 0x74, 0x7b, 0x77, 0x77, - 0x77, 0x79, 0x7c, 0x7d, 0x7b, 0x75, 0x86, 0x8c, 0x79, 0x7a, 0x8e, 0x84, 0x76, 0x79, 0x7c, 0x76, - 0x77, 0x75, 0x78, 0x80, 0x78, 0x70, 0x6e, 0x79, 0x7a, 0x71, 0x70, 0x76, 0x7c, 0x7a, 0x79, 0x7a, - 0x79, 0x75, 0x83, 0x7e, 0x76, 0x7c, 0x77, 0x77, 0x7d, 0x7e, 0x85, 0x86, 0x82, 0x7c, 0x7c, 0x7c, - 0x81, 0x81, 0x7d, 0x78, 0x7b, 0x82, 0x7a, 0x7c, 0x85, 0x80, 0x80, 0x7d, 0x80, 0x7e, 0x81, 0x83, - 0x76, 0x7e, 0x88, 0x88, 0x8b, 0x87, 0x93, 0x8e, 0x90, 0x8f, 0x8e, 0x8a, 0x8e, 0x90, 0x8c, 0x89, - 0x8a, 0x89, 0x85, 0x8e, 0x91, 0x88, 0x81, 0x84, 0x7e, 0x7b, 0x83, 0x87, 0x84, 0x7b, 0x83, 0x86, - 0x82, 0x87, 0x7d, 0x79, 0x7d, 0x8f, 0x8c, 0x7d, 0x85, 0x89, 0x84, 0x89, 0x92, 0x8b, 0x87, 0x95, - 0x91, 0x8c, 0x8d, 0x89, 0x87, 0x80, 0x7a, 0x81, 0x81, 0x79, 0x7b, 0x71, 0x73, 0x76, 0x76, 0x70, - 0x72, 0x80, 0x81, 0x83, 0x88, 0x8b, 0x83, 0x7a, 0x80, 0x82, 0x79, 0x77, 0x76, 0x77, 0x6f, 0x73, - 0x7e, 0x76, 0x70, 0x70, 0x71, 0x71, 0x73, 0x70, 0x6e, 0x74, 0x74, 0x77, 0x74, 0x79, 0x75, 0x65, - 0x6e, 0x76, 0x71, 0x74, 0x74, 0x76, 0x7a, 0x7e, 0x7b, 0x78, 0x77, 0x7c, 0x7c, 0x7b, 0x83, 0x82, - 0x7b, 0x75, 0x74, 0x81, 0x7b, 0x6f, 0x79, 0x74, 0x76, 0x81, 0x7a, 0x78, 0x87, 0x82, 0x79, 0x86, - 0x7e, 0x80, 0x85, 0x88, 0x7d, 0x7e, 0x86, 0x83, 0x86, 0x83, 0x85, 0x96, 0x98, 0x93, 0x95, 0x8c, - 0x94, 0x97, 0x85, 0x80, 0x8c, 0x8e, 0x77, 0x80, 0x8d, 0x86, 0x85, 0x7b, 0x76, 0x81, 0x84, 0x82, - 0x84, 0x81, 0x85, 0x8c, 0x89, 0x82, 0x7e, 0x7e, 0x74, 0x7d, 0x88, 0x81, 0x82, 0x84, 0x7e, 0x7e, - 0x87, 0x81, 0x7a, 0x7c, 0x77, 0x80, 0x85, 0x7e, 0x84, 0x81, 0x80, 0x85, 0x77, 0x73, 0x79, 0x76, - 0x6f, 0x6e, 0x79, 0x7e, 0x6e, 0x6e, 0x78, 0x77, 0x74, 0x6f, 0x76, 0x7a, 0x79, 0x77, 0x6e, 0x6c, - 0x71, 0x73, 0x72, 0x77, 0x84, 0x7b, 0x6f, 0x80, 0x7d, 0x80, 0x82, 0x80, 0x80, 0x82, 0x85, 0x7c, - 0x80, 0x7e, 0x80, 0x7e, 0x81, 0x81, 0x7a, 0x7e, 0x80, 0x88, 0x83, 0x87, 0x93, 0x93, 0x83, 0x82, - 0x7d, 0x7a, 0x81, 0x83, 0x7d, 0x82, 0x8a, 0x83, 0x83, 0x85, 0x86, 0x88, 0x92, 0x8d, 0x8d, 0x8f, - 0x93, 0x91, 0x8d, 0x92, 0x91, 0x95, 0x91, 0x88, 0x8c, 0x91, 0x8f, 0x8c, 0x88, 0x84, 0x86, 0x81, - 0x76, 0x7b, 0x81, 0x84, 0x7e, 0x7c, 0x80, 0x83, 0x75, 0x73, 0x7a, 0x85, 0x7b, 0x77, 0x83, 0x83, - 0x84, 0x85, 0x84, 0x82, 0x83, 0x85, 0x85, 0x8a, 0x83, 0x7e, 0x7a, 0x77, 0x79, 0x76, 0x70, 0x6f, - 0x6b, 0x67, 0x69, 0x6e, 0x71, 0x73, 0x71, 0x69, 0x73, 0x71, 0x6b, 0x6b, 0x6e, 0x6f, 0x6b, 0x74, - 0x78, 0x70, 0x6f, 0x76, 0x7d, 0x7a, 0x73, 0x74, 0x7c, 0x7c, 0x75, 0x76, 0x7d, 0x80, 0x79, 0x75, - 0x7c, 0x7d, 0x79, 0x78, 0x7d, 0x82, 0x82, 0x88, 0x86, 0x86, 0x8d, 0x90, 0x80, 0x87, 0x8a, 0x83, - 0x7b, 0x85, 0x90, 0x81, 0x7e, 0x85, 0x8e, 0x8b, 0x81, 0x80, 0x7c, 0x85, 0x7d, 0x7b, 0x8b, 0x8b, - 0x84, 0x81, 0x84, 0x8e, 0x8a, 0x85, 0x82, 0x83, 0x86, 0x85, 0x81, 0x82, 0x87, 0x87, 0x84, 0x88, - 0x88, 0x8c, 0x85, 0x7c, 0x85, 0x83, 0x7d, 0x86, 0x8a, 0x7e, 0x73, 0x78, 0x80, 0x79, 0x76, 0x76, - 0x7c, 0x7c, 0x83, 0x7d, 0x82, 0x82, 0x79, 0x83, 0x7e, 0x80, 0x85, 0x7e, 0x85, 0x88, 0x84, 0x8a, - 0x8e, 0x8b, 0x7e, 0x7c, 0x87, 0x7b, 0x78, 0x79, 0x80, 0x83, 0x7b, 0x80, 0x7d, 0x85, 0x88, 0x83, - 0x83, 0x7e, 0x85, 0x8a, 0x81, 0x86, 0x88, 0x80, 0x7d, 0x89, 0x87, 0x76, 0x81, 0x7c, 0x74, 0x7d, - 0x84, 0x7c, 0x7a, 0x7a, 0x72, 0x75, 0x7e, 0x78, 0x6f, 0x72, 0x7b, 0x7a, 0x73, 0x7a, 0x79, 0x78, - 0x71, 0x73, 0x78, 0x69, 0x6a, 0x75, 0x75, 0x6f, 0x72, 0x77, 0x72, 0x7c, 0x7e, 0x7d, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x85, 0x7c, 0x79, 0x7e, 0x80, 0x89, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7a, 0x82, - 0x85, 0x7c, 0x79, 0x7c, 0x81, 0x81, 0x79, 0x84, 0x8e, 0x88, 0x86, 0x87, 0x95, 0x96, 0x85, 0x82, - 0x8f, 0x83, 0x81, 0x83, 0x7e, 0x85, 0x81, 0x7a, 0x79, 0x80, 0x8e, 0x8a, 0x7e, 0x88, 0x91, 0x91, - 0x8b, 0x87, 0x84, 0x86, 0x8d, 0x85, 0x87, 0x8a, 0x8a, 0x86, 0x82, 0x8b, 0x87, 0x85, 0x88, 0x7d, - 0x7d, 0x82, 0x78, 0x7e, 0x86, 0x84, 0x84, 0x83, 0x7e, 0x80, 0x7c, 0x71, 0x6f, 0x73, 0x6a, 0x6e, - 0x73, 0x75, 0x73, 0x77, 0x6d, 0x74, 0x7b, 0x75, 0x78, 0x76, 0x79, 0x7b, 0x7e, 0x84, 0x81, 0x87, - 0x7d, 0x76, 0x7d, 0x74, 0x70, 0x70, 0x6d, 0x70, 0x75, 0x7a, 0x7b, 0x77, 0x73, 0x6d, 0x74, 0x6f, - 0x72, 0x7a, 0x75, 0x7b, 0x83, 0x83, 0x84, 0x89, 0x88, 0x7d, 0x80, 0x87, 0x83, 0x7b, 0x7d, 0x7b, - 0x82, 0x89, 0x86, 0x8e, 0x8d, 0x83, 0x81, 0x8c, 0x93, 0x8f, 0x8a, 0x8c, 0x99, 0x9e, 0x94, 0x8e, - 0x99, 0x97, 0x94, 0x93, 0x8e, 0x8e, 0x8e, 0x88, 0x87, 0x83, 0x87, 0x85, 0x7b, 0x73, 0x74, 0x80, - 0x7c, 0x75, 0x7a, 0x81, 0x83, 0x84, 0x87, 0x79, 0x83, 0x85, 0x84, 0x7d, 0x7d, 0x89, 0x84, 0x7c, - 0x7c, 0x80, 0x7b, 0x77, 0x7d, 0x82, 0x7b, 0x76, 0x78, 0x73, 0x7e, 0x82, 0x7d, 0x7c, 0x7a, 0x83, - 0x84, 0x7c, 0x73, 0x6a, 0x6f, 0x74, 0x70, 0x69, 0x6d, 0x73, 0x6c, 0x66, 0x73, 0x77, 0x6f, 0x70, - 0x70, 0x76, 0x7e, 0x77, 0x74, 0x72, 0x7a, 0x78, 0x71, 0x77, 0x77, 0x76, 0x79, 0x7d, 0x7a, 0x83, - 0x7e, 0x71, 0x75, 0x7b, 0x82, 0x7a, 0x7a, 0x78, 0x7b, 0x7d, 0x77, 0x7a, 0x7e, 0x78, 0x80, 0x83, - 0x84, 0x85, 0x8b, 0x8b, 0x84, 0x88, 0x8f, 0x8c, 0x86, 0x82, 0x7e, 0x89, 0x91, 0x8d, 0x8b, 0x88, - 0x84, 0x87, 0x83, 0x7c, 0x86, 0x85, 0x81, 0x8b, 0x8b, 0x8a, 0x8c, 0x90, 0x8c, 0x88, 0x84, 0x89, - 0x88, 0x7d, 0x86, 0x8c, 0x83, 0x82, 0x85, 0x83, 0x80, 0x81, 0x82, 0x7d, 0x87, 0x8a, 0x87, 0x88, - 0x8d, 0x86, 0x83, 0x88, 0x82, 0x7e, 0x82, 0x82, 0x81, 0x85, 0x81, 0x87, 0x90, 0x8e, 0x88, 0x84, - 0x84, 0x84, 0x7e, 0x7b, 0x7b, 0x81, 0x6f, 0x77, 0x84, 0x80, 0x81, 0x73, 0x70, 0x7b, 0x7a, 0x79, - 0x7c, 0x78, 0x7a, 0x78, 0x82, 0x84, 0x77, 0x75, 0x73, 0x79, 0x74, 0x79, 0x7b, 0x78, 0x78, 0x7a, - 0x83, 0x7e, 0x74, 0x71, 0x78, 0x73, 0x75, 0x75, 0x78, 0x7c, 0x79, 0x79, 0x78, 0x79, 0x75, 0x70, - 0x6f, 0x74, 0x73, 0x7e, 0x7b, 0x79, 0x86, 0x87, 0x7e, 0x79, 0x84, 0x7e, 0x7b, 0x82, 0x80, 0x78, - 0x81, 0x7b, 0x75, 0x74, 0x76, 0x7b, 0x7d, 0x80, 0x7a, 0x80, 0x85, 0x87, 0x87, 0x8e, 0x8c, 0x81, - 0x86, 0x8a, 0x8a, 0x89, 0x87, 0x8b, 0x8f, 0x8f, 0x8b, 0x8b, 0x88, 0x86, 0x87, 0x85, 0x81, 0x7e, - 0x7c, 0x86, 0x88, 0x85, 0x7c, 0x7e, 0x81, 0x7b, 0x7b, 0x7b, 0x7b, 0x84, 0x86, 0x85, 0x85, 0x85, - 0x81, 0x80, 0x80, 0x81, 0x80, 0x79, 0x78, 0x82, 0x86, 0x82, 0x87, 0x88, 0x7e, 0x81, 0x86, 0x87, - 0x84, 0x7a, 0x7c, 0x8a, 0x88, 0x84, 0x7e, 0x79, 0x78, 0x77, 0x71, 0x72, 0x6c, 0x6f, 0x6c, 0x6c, - 0x70, 0x73, 0x74, 0x73, 0x74, 0x78, 0x79, 0x75, 0x7b, 0x7d, 0x77, 0x81, 0x86, 0x81, 0x7d, 0x80, - 0x7d, 0x76, 0x74, 0x79, 0x78, 0x78, 0x72, 0x6d, 0x79, 0x76, 0x73, 0x78, 0x75, 0x76, 0x78, 0x73, - 0x78, 0x80, 0x83, 0x7b, 0x7b, 0x88, 0x84, 0x86, 0x82, 0x82, 0x7c, 0x82, 0x88, 0x84, 0x8e, 0x8b, - 0x8c, 0x8f, 0x8c, 0x89, 0x8f, 0x8d, 0x8c, 0x95, 0x95, 0x98, 0x93, 0x8e, 0x8f, 0x93, 0x93, 0x94, - 0x8f, 0x8b, 0x92, 0x8d, 0x83, 0x8a, 0x92, 0x8b, 0x84, 0x81, 0x7a, 0x85, 0x83, 0x7e, 0x85, 0x88, - 0x85, 0x82, 0x7e, 0x83, 0x7d, 0x7e, 0x81, 0x7b, 0x81, 0x7b, 0x7e, 0x88, 0x86, 0x80, 0x7e, 0x89, - 0x79, 0x70, 0x77, 0x78, 0x79, 0x78, 0x73, 0x7a, 0x79, 0x74, 0x7a, 0x76, 0x78, 0x7c, 0x77, 0x6f, - 0x70, 0x72, 0x6a, 0x66, 0x66, 0x68, 0x67, 0x64, 0x68, 0x69, 0x6b, 0x6e, 0x69, 0x74, 0x7b, 0x78, - 0x77, 0x79, 0x77, 0x7b, 0x7e, 0x78, 0x7b, 0x80, 0x7b, 0x7e, 0x80, 0x76, 0x79, 0x7d, 0x6b, 0x71, - 0x78, 0x77, 0x79, 0x7a, 0x7d, 0x89, 0x88, 0x82, 0x85, 0x8e, 0x8b, 0x80, 0x84, 0x8a, 0x88, 0x8b, - 0x88, 0x83, 0x8f, 0x8f, 0x81, 0x82, 0x87, 0x83, 0x89, 0x8e, 0x8e, 0x95, 0x8e, 0x8c, 0x8b, 0x82, - 0x85, 0x83, 0x81, 0x89, 0x86, 0x81, 0x86, 0x90, 0x8c, 0x87, 0x8b, 0x8c, 0x82, 0x7e, 0x7d, 0x7d, - 0x7e, 0x86, 0x83, 0x89, 0x84, 0x7c, 0x7e, 0x7d, 0x7d, 0x7c, 0x7e, 0x7c, 0x7c, 0x78, 0x78, 0x7e, - 0x82, 0x76, 0x73, 0x82, 0x83, 0x76, 0x6d, 0x79, 0x7a, 0x7c, 0x7b, 0x7d, 0x85, 0x87, 0x7b, 0x7b, - 0x85, 0x85, 0x84, 0x7c, 0x80, 0x88, 0x85, 0x81, 0x82, 0x7b, 0x7b, 0x7c, 0x7a, 0x82, 0x7d, 0x82, - 0x80, 0x80, 0x7e, 0x83, 0x89, 0x84, 0x7e, 0x83, 0x85, 0x7e, 0x81, 0x7d, 0x81, 0x82, 0x82, 0x81, - 0x7a, 0x7c, 0x7d, 0x74, 0x74, 0x80, 0x79, 0x7d, 0x79, 0x77, 0x7c, 0x76, 0x75, 0x77, 0x7c, 0x78, - 0x7d, 0x75, 0x72, 0x7a, 0x82, 0x82, 0x80, 0x77, 0x72, 0x7b, 0x7b, 0x7b, 0x76, 0x79, 0x7c, 0x77, - 0x79, 0x84, 0x79, 0x76, 0x7b, 0x77, 0x85, 0x83, 0x79, 0x7c, 0x78, 0x7b, 0x80, 0x7e, 0x81, 0x83, - 0x82, 0x7d, 0x7e, 0x86, 0x83, 0x89, 0x87, 0x84, 0x8b, 0x83, 0x87, 0x8f, 0x8b, 0x85, 0x86, 0x8c, - 0x88, 0x8a, 0x82, 0x79, 0x84, 0x88, 0x80, 0x84, 0x84, 0x84, 0x81, 0x80, 0x89, 0x81, 0x86, 0x81, - 0x77, 0x88, 0x89, 0x8a, 0x87, 0x7a, 0x88, 0x8e, 0x88, 0x84, 0x7d, 0x80, 0x81, 0x80, 0x81, 0x84, - 0x85, 0x7a, 0x79, 0x7e, 0x7d, 0x77, 0x75, 0x72, 0x73, 0x79, 0x76, 0x75, 0x6d, 0x76, 0x7a, 0x7a, - 0x77, 0x75, 0x7a, 0x7c, 0x71, 0x71, 0x74, 0x76, 0x7c, 0x73, 0x73, 0x79, 0x79, 0x74, 0x6e, 0x77, - 0x75, 0x6f, 0x75, 0x75, 0x82, 0x85, 0x7c, 0x78, 0x75, 0x7b, 0x83, 0x79, 0x7a, 0x7c, 0x7c, 0x7d, - 0x79, 0x7e, 0x86, 0x79, 0x79, 0x7d, 0x7b, 0x7b, 0x78, 0x7c, 0x7b, 0x85, 0x93, 0x8b, 0x8b, 0x90, - 0x8b, 0x90, 0x90, 0x8a, 0x8d, 0x91, 0x96, 0x95, 0x8f, 0x9a, 0x95, 0x90, 0x95, 0x95, 0x90, 0x8a, - 0x8d, 0x93, 0x90, 0x8e, 0x94, 0x92, 0x8d, 0x91, 0x90, 0x87, 0x80, 0x7d, 0x82, 0x82, 0x84, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x77, 0x75, 0x7d, 0x78, 0x74, 0x80, 0x7d, 0x82, 0x81, 0x7b, 0x7d, 0x78, - 0x79, 0x72, 0x6d, 0x74, 0x71, 0x6e, 0x6e, 0x75, 0x74, 0x70, 0x72, 0x77, 0x73, 0x70, 0x74, 0x74, - 0x72, 0x69, 0x72, 0x72, 0x6e, 0x75, 0x72, 0x74, 0x77, 0x71, 0x77, 0x72, 0x72, 0x79, 0x72, 0x7b, - 0x83, 0x7a, 0x77, 0x75, 0x77, 0x7c, 0x7d, 0x80, 0x77, 0x77, 0x78, 0x79, 0x7c, 0x77, 0x7c, 0x7e, - 0x79, 0x7a, 0x80, 0x80, 0x7b, 0x7b, 0x7e, 0x79, 0x80, 0x83, 0x7d, 0x7d, 0x80, 0x82, 0x83, 0x80, - 0x83, 0x81, 0x83, 0x82, 0x82, 0x8d, 0x91, 0x8e, 0x8b, 0x83, 0x88, 0x8a, 0x83, 0x89, 0x84, 0x80, - 0x84, 0x82, 0x82, 0x87, 0x8e, 0x89, 0x87, 0x92, 0x92, 0x8d, 0x8b, 0x83, 0x87, 0x8d, 0x8e, 0x8b, - 0x86, 0x88, 0x87, 0x82, 0x88, 0x83, 0x80, 0x80, 0x83, 0x83, 0x82, 0x8a, 0x8d, 0x83, 0x81, 0x87, - 0x89, 0x85, 0x78, 0x79, 0x84, 0x80, 0x7e, 0x84, 0x84, 0x7a, 0x78, 0x7a, 0x77, 0x76, 0x7b, 0x74, - 0x71, 0x77, 0x7c, 0x7d, 0x77, 0x79, 0x75, 0x73, 0x74, 0x74, 0x71, 0x72, 0x76, 0x7c, 0x7d, 0x7d, - 0x7e, 0x7c, 0x78, 0x7c, 0x75, 0x71, 0x7c, 0x7c, 0x79, 0x7b, 0x7c, 0x88, 0x87, 0x83, 0x83, 0x89, - 0x85, 0x81, 0x80, 0x81, 0x85, 0x84, 0x7d, 0x79, 0x80, 0x80, 0x7a, 0x74, 0x6e, 0x7b, 0x78, 0x78, - 0x7d, 0x80, 0x7e, 0x7e, 0x84, 0x84, 0x7d, 0x88, 0x8b, 0x7c, 0x84, 0x86, 0x86, 0x8a, 0x88, 0x84, - 0x89, 0x85, 0x7e, 0x81, 0x7e, 0x81, 0x80, 0x7c, 0x7e, 0x83, 0x85, 0x80, 0x7d, 0x7b, 0x7b, 0x7d, - 0x79, 0x79, 0x80, 0x77, 0x7d, 0x83, 0x81, 0x86, 0x82, 0x7e, 0x7a, 0x7d, 0x82, 0x7d, 0x78, 0x78, - 0x7b, 0x82, 0x85, 0x7c, 0x75, 0x7b, 0x7c, 0x76, 0x7c, 0x86, 0x88, 0x84, 0x80, 0x88, 0x87, 0x81, - 0x7d, 0x7a, 0x7d, 0x81, 0x76, 0x72, 0x7c, 0x7e, 0x7b, 0x81, 0x82, 0x84, 0x8e, 0x85, 0x81, 0x81, - 0x7d, 0x7b, 0x7d, 0x80, 0x7c, 0x7b, 0x79, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x77, 0x75, 0x77, 0x7d, - 0x7d, 0x73, 0x75, 0x83, 0x82, 0x7c, 0x7c, 0x81, 0x84, 0x7a, 0x7c, 0x7d, 0x77, 0x78, 0x7a, 0x80, - 0x7c, 0x7b, 0x7a, 0x74, 0x73, 0x7b, 0x73, 0x71, 0x7d, 0x7d, 0x7e, 0x7a, 0x81, 0x85, 0x82, 0x82, - 0x7e, 0x81, 0x7d, 0x7d, 0x83, 0x7c, 0x81, 0x81, 0x81, 0x86, 0x87, 0x83, 0x7b, 0x7b, 0x82, 0x85, - 0x8a, 0x8e, 0x88, 0x86, 0x8c, 0x95, 0x95, 0x92, 0x8e, 0x8a, 0x84, 0x85, 0x8c, 0x8a, 0x87, 0x86, - 0x8a, 0x8f, 0x8c, 0x88, 0x83, 0x86, 0x8e, 0x8d, 0x8a, 0x89, 0x8c, 0x87, 0x85, 0x88, 0x83, 0x8a, - 0x84, 0x79, 0x7d, 0x81, 0x81, 0x83, 0x87, 0x89, 0x88, 0x89, 0x83, 0x80, 0x7e, 0x82, 0x7c, 0x78, - 0x7c, 0x83, 0x80, 0x7c, 0x79, 0x79, 0x78, 0x79, 0x76, 0x6a, 0x66, 0x6c, 0x6b, 0x6e, 0x6a, 0x6a, - 0x70, 0x6a, 0x65, 0x69, 0x70, 0x69, 0x60, 0x66, 0x6a, 0x77, 0x78, 0x6c, 0x6f, 0x73, 0x75, 0x72, - 0x6f, 0x72, 0x74, 0x76, 0x79, 0x79, 0x78, 0x76, 0x7b, 0x7e, 0x7c, 0x80, 0x81, 0x7b, 0x77, 0x7d, - 0x7b, 0x7d, 0x80, 0x88, 0x8a, 0x85, 0x82, 0x7e, 0x82, 0x81, 0x85, 0x87, 0x86, 0x8b, 0x92, 0x8d, - 0x90, 0x94, 0x91, 0x94, 0x91, 0x8b, 0x8b, 0x90, 0x8c, 0x85, 0x8c, 0x91, 0x8e, 0x87, 0x8b, 0x91, - 0x88, 0x85, 0x88, 0x85, 0x89, 0x8b, 0x84, 0x88, 0x83, 0x82, 0x87, 0x86, 0x7e, 0x83, 0x80, 0x7d, - 0x83, 0x89, 0x8a, 0x88, 0x7e, 0x7b, 0x7d, 0x7e, 0x7e, 0x7d, 0x7a, 0x7a, 0x7a, 0x74, 0x78, 0x7c, - 0x7b, 0x80, 0x7d, 0x80, 0x7e, 0x7b, 0x7c, 0x7a, 0x75, 0x78, 0x6c, 0x70, 0x78, 0x71, 0x6d, 0x78, - 0x7a, 0x79, 0x78, 0x74, 0x79, 0x82, 0x7c, 0x81, 0x81, 0x85, 0x83, 0x85, 0x84, 0x80, 0x85, 0x85, - 0x80, 0x86, 0x80, 0x7c, 0x83, 0x84, 0x81, 0x82, 0x85, 0x80, 0x7e, 0x81, 0x7d, 0x82, 0x8c, 0x86, - 0x80, 0x83, 0x82, 0x7c, 0x74, 0x77, 0x70, 0x6d, 0x76, 0x75, 0x76, 0x7c, 0x83, 0x82, 0x83, 0x86, - 0x81, 0x85, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x7c, 0x80, 0x82, 0x7d, - 0x76, 0x75, 0x75, 0x76, 0x79, 0x73, 0x75, 0x75, 0x74, 0x79, 0x79, 0x77, 0x7c, 0x7e, 0x80, 0x82, - 0x88, 0x85, 0x8a, 0x88, 0x82, 0x7e, 0x82, 0x80, 0x7b, 0x7d, 0x81, 0x80, 0x83, 0x85, 0x83, 0x84, - 0x80, 0x7b, 0x82, 0x88, 0x85, 0x83, 0x82, 0x82, 0x82, 0x89, 0x8a, 0x8c, 0x89, 0x81, 0x7c, 0x84, - 0x83, 0x82, 0x82, 0x7d, 0x7e, 0x84, 0x85, 0x87, 0x81, 0x7c, 0x86, 0x85, 0x85, 0x81, 0x7a, 0x78, - 0x7e, 0x7c, 0x75, 0x77, 0x78, 0x74, 0x77, 0x77, 0x7b, 0x7c, 0x75, 0x76, 0x75, 0x7a, 0x7e, 0x72, - 0x77, 0x76, 0x75, 0x79, 0x79, 0x77, 0x79, 0x81, 0x84, 0x81, 0x7d, 0x84, 0x82, 0x78, 0x74, 0x79, - 0x7c, 0x79, 0x70, 0x78, 0x82, 0x7a, 0x79, 0x7d, 0x86, 0x85, 0x82, 0x85, 0x88, 0x8b, 0x86, 0x82, - 0x84, 0x7e, 0x7c, 0x86, 0x81, 0x82, 0x87, 0x81, 0x83, 0x8c, 0x87, 0x87, 0x8b, 0x88, 0x8a, 0x91, - 0x93, 0x92, 0x8f, 0x90, 0x92, 0x90, 0x92, 0x8d, 0x8c, 0x8c, 0x87, 0x87, 0x84, 0x88, 0x85, 0x7d, - 0x82, 0x86, 0x85, 0x7a, 0x77, 0x81, 0x84, 0x84, 0x7c, 0x7e, 0x85, 0x7c, 0x76, 0x80, 0x86, 0x80, - 0x80, 0x81, 0x84, 0x85, 0x7e, 0x7d, 0x80, 0x7c, 0x78, 0x77, 0x7c, 0x78, 0x78, 0x78, 0x79, 0x76, - 0x6e, 0x73, 0x76, 0x72, 0x74, 0x7a, 0x79, 0x73, 0x74, 0x76, 0x75, 0x76, 0x75, 0x72, 0x72, 0x74, - 0x73, 0x74, 0x77, 0x79, 0x76, 0x75, 0x75, 0x77, 0x7b, 0x71, 0x71, 0x76, 0x77, 0x79, 0x7a, 0x76, - 0x77, 0x77, 0x75, 0x76, 0x7a, 0x74, 0x6f, 0x79, 0x7e, 0x79, 0x79, 0x7a, 0x76, 0x76, 0x77, 0x78, - 0x7d, 0x78, 0x7a, 0x81, 0x82, 0x84, 0x86, 0x85, 0x88, 0x8e, 0x8c, 0x82, 0x85, 0x8a, 0x87, 0x82, - 0x7d, 0x84, 0x88, 0x89, 0x86, 0x88, 0x90, 0x89, 0x86, 0x87, 0x84, 0x88, 0x8b, 0x87, 0x86, 0x8e, - 0x8f, 0x85, 0x87, 0x88, 0x8a, 0x8b, 0x8b, 0x87, 0x88, 0x8c, 0x8d, 0x89, 0x8a, 0x8d, 0x8a, 0x84, - 0x87, 0x8e, 0x8c, 0x89, 0x87, 0x84, 0x86, 0x89, 0x83, 0x7c, 0x7b, 0x80, 0x7d, 0x79, 0x7b, 0x7c, - 0x7d, 0x81, 0x7b, 0x7d, 0x84, 0x81, 0x79, 0x7b, 0x7b, 0x7b, 0x7a, 0x76, 0x7a, 0x77, 0x70, 0x75, - 0x76, 0x79, 0x7b, 0x7c, 0x78, 0x7b, 0x82, 0x7a, 0x7a, 0x77, 0x75, 0x75, 0x77, 0x78, 0x77, 0x7c, - 0x7c, 0x73, 0x78, 0x7c, 0x7a, 0x7d, 0x79, 0x75, 0x7d, 0x83, 0x80, 0x7c, 0x7a, 0x79, 0x77, 0x7a, - 0x7c, 0x7e, 0x7d, 0x7e, 0x80, 0x7a, 0x81, 0x84, 0x7c, 0x7b, 0x85, 0x86, 0x85, 0x80, 0x82, 0x86, - 0x84, 0x83, 0x85, 0x8e, 0x87, 0x81, 0x83, 0x87, 0x8d, 0x85, 0x81, 0x84, 0x86, 0x86, 0x86, 0x84, - 0x84, 0x80, 0x82, 0x87, 0x83, 0x83, 0x7e, 0x7a, 0x79, 0x7e, 0x86, 0x80, 0x7a, 0x80, 0x82, 0x81, - 0x81, 0x79, 0x7c, 0x78, 0x78, 0x80, 0x80, 0x80, 0x82, 0x7c, 0x7c, 0x77, 0x7c, 0x80, 0x77, 0x76, - 0x7d, 0x83, 0x81, 0x7c, 0x7d, 0x82, 0x7d, 0x79, 0x7c, 0x80, 0x82, 0x7b, 0x80, 0x7e, 0x7a, 0x79, - 0x77, 0x7c, 0x78, 0x77, 0x7d, 0x7d, 0x7d, 0x7c, 0x80, 0x7e, 0x7a, 0x83, 0x80, 0x74, 0x77, 0x7d, - 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7b, 0x79, 0x7b, 0x7c, 0x84, 0x87, 0x89, 0x83, - 0x83, 0x8e, 0x8b, 0x87, 0x8a, 0x81, 0x85, 0x8a, 0x7e, 0x7c, 0x7b, 0x7a, 0x75, 0x74, 0x7c, 0x7d, - 0x7b, 0x76, 0x77, 0x7b, 0x7c, 0x7d, 0x79, 0x7b, 0x7a, 0x80, 0x85, 0x81, 0x83, 0x88, 0x7e, 0x79, - 0x82, 0x83, 0x83, 0x82, 0x80, 0x80, 0x82, 0x80, 0x84, 0x80, 0x84, 0x86, 0x80, 0x81, 0x85, 0x84, - 0x83, 0x83, 0x87, 0x89, 0x87, 0x87, 0x82, 0x80, 0x84, 0x89, 0x87, 0x85, 0x86, 0x81, 0x81, 0x85, - 0x83, 0x87, 0x86, 0x85, 0x86, 0x8a, 0x88, 0x84, 0x87, 0x84, 0x82, 0x87, 0x84, 0x85, 0x84, 0x81, - 0x88, 0x8b, 0x86, 0x81, 0x83, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x83, 0x80, 0x7b, 0x82, 0x7c, - 0x73, 0x75, 0x78, 0x74, 0x74, 0x76, 0x74, 0x71, 0x6f, 0x70, 0x6f, 0x68, 0x6d, 0x71, 0x69, 0x67, - 0x69, 0x6c, 0x6c, 0x69, 0x6d, 0x70, 0x73, 0x74, 0x73, 0x79, 0x78, 0x7a, 0x79, 0x78, 0x77, 0x76, - 0x7a, 0x73, 0x79, 0x7d, 0x76, 0x7c, 0x7c, 0x7a, 0x7e, 0x7b, 0x74, 0x7d, 0x83, 0x82, 0x85, 0x86, - 0x84, 0x85, 0x84, 0x89, 0x8b, 0x88, 0x8a, 0x8b, 0x8a, 0x89, 0x8c, 0x8f, 0x85, 0x88, 0x94, 0x91, - 0x8e, 0x8d, 0x8a, 0x8f, 0x90, 0x8c, 0x90, 0x93, 0x8a, 0x87, 0x86, 0x88, 0x8a, 0x87, 0x87, 0x86, - 0x81, 0x82, 0x82, 0x82, 0x81, 0x85, 0x86, 0x81, 0x82, 0x83, 0x7d, 0x80, 0x85, 0x85, 0x81, 0x80, - 0x86, 0x85, 0x88, 0x81, 0x7d, 0x87, 0x83, 0x7c, 0x7e, 0x7d, 0x7d, 0x7c, 0x77, 0x7a, 0x7c, 0x79, - 0x76, 0x73, 0x77, 0x7c, 0x80, 0x7a, 0x73, 0x78, 0x7c, 0x79, 0x73, 0x73, 0x76, 0x76, 0x72, 0x72, - 0x7b, 0x7e, 0x7b, 0x75, 0x7a, 0x80, 0x7c, 0x7c, 0x78, 0x7c, 0x82, 0x80, 0x80, 0x81, 0x80, 0x85, - 0x8b, 0x7c, 0x7d, 0x86, 0x7e, 0x79, 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7b, 0x81, 0x81, 0x7c, 0x7b, - 0x7b, 0x81, 0x83, 0x7c, 0x79, 0x7e, 0x85, 0x7b, 0x79, 0x86, 0x81, 0x7c, 0x7d, 0x7b, 0x84, 0x87, - 0x85, 0x88, 0x87, 0x89, 0x86, 0x7e, 0x7c, 0x81, 0x83, 0x7d, 0x7d, 0x84, 0x83, 0x85, 0x88, 0x7e, - 0x7b, 0x81, 0x7d, 0x76, 0x75, 0x78, 0x74, 0x71, 0x7c, 0x79, 0x75, 0x78, 0x75, 0x76, 0x76, 0x7a, - 0x80, 0x74, 0x78, 0x84, 0x80, 0x7d, 0x80, 0x83, 0x83, 0x80, 0x81, 0x86, 0x7a, 0x83, 0x88, 0x87, - 0x86, 0x81, 0x83, 0x83, 0x82, 0x84, 0x88, 0x87, 0x83, 0x81, 0x80, 0x84, 0x87, 0x82, 0x7c, 0x81, - 0x81, 0x81, 0x7a, 0x7c, 0x7e, 0x80, 0x81, 0x7e, 0x84, 0x85, 0x80, 0x7a, 0x7a, 0x84, 0x81, 0x78, - 0x7a, 0x7c, 0x7a, 0x78, 0x7b, 0x7d, 0x7b, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x7c, 0x7d, 0x7d, - 0x7e, 0x83, 0x79, 0x76, 0x81, 0x86, 0x81, 0x80, 0x83, 0x84, 0x84, 0x7e, 0x80, 0x82, 0x7b, 0x7b, - 0x7b, 0x7b, 0x7d, 0x7d, 0x7a, 0x7a, 0x7b, 0x85, 0x85, 0x7d, 0x82, 0x83, 0x83, 0x88, 0x7e, 0x81, - 0x82, 0x80, 0x7b, 0x7d, 0x83, 0x82, 0x82, 0x82, 0x83, 0x85, 0x89, 0x88, 0x85, 0x85, 0x8a, 0x8b, - 0x86, 0x84, 0x81, 0x86, 0x83, 0x7d, 0x86, 0x86, 0x81, 0x81, 0x7c, 0x80, 0x7c, 0x7b, 0x83, 0x82, - 0x81, 0x83, 0x8a, 0x88, 0x82, 0x83, 0x86, 0x83, 0x82, 0x86, 0x84, 0x80, 0x7d, 0x80, 0x7c, 0x7d, - 0x81, 0x7a, 0x78, 0x7a, 0x79, 0x7e, 0x81, 0x7d, 0x85, 0x84, 0x7d, 0x7b, 0x78, 0x78, 0x70, 0x76, - 0x79, 0x77, 0x7a, 0x7c, 0x7d, 0x7a, 0x7b, 0x7d, 0x78, 0x74, 0x75, 0x74, 0x74, 0x71, 0x77, 0x75, - 0x71, 0x73, 0x76, 0x79, 0x76, 0x72, 0x77, 0x78, 0x7a, 0x79, 0x75, 0x73, 0x73, 0x72, 0x72, 0x75, - 0x71, 0x72, 0x75, 0x76, 0x77, 0x7d, 0x7c, 0x7c, 0x7b, 0x80, 0x80, 0x82, 0x7e, 0x7c, 0x7e, 0x83, - 0x88, 0x86, 0x85, 0x87, 0x8a, 0x89, 0x87, 0x84, 0x84, 0x84, 0x82, 0x7d, 0x86, 0x89, 0x87, 0x85, - 0x89, 0x8d, 0x8c, 0x88, 0x8a, 0x85, 0x85, 0x85, 0x88, 0x87, 0x83, 0x89, 0x8a, 0x86, 0x87, 0x90, - 0x8c, 0x88, 0x8c, 0x8b, 0x8d, 0x8e, 0x8c, 0x8b, 0x8d, 0x8b, 0x87, 0x84, 0x82, 0x84, 0x81, 0x7e, - 0x83, 0x84, 0x83, 0x7d, 0x7d, 0x83, 0x7b, 0x7a, 0x7e, 0x7a, 0x7c, 0x80, 0x80, 0x7d, 0x80, 0x80, - 0x7c, 0x7d, 0x85, 0x84, 0x7a, 0x76, 0x7a, 0x73, 0x6e, 0x73, 0x72, 0x6f, 0x6b, 0x71, 0x77, 0x72, - 0x6f, 0x76, 0x74, 0x75, 0x77, 0x72, 0x76, 0x77, 0x76, 0x7a, 0x7c, 0x7a, 0x78, 0x78, 0x7c, 0x7c, - 0x77, 0x7a, 0x7b, 0x76, 0x77, 0x7d, 0x7d, 0x7b, 0x7a, 0x7d, 0x80, 0x7d, 0x84, 0x82, 0x81, 0x83, - 0x87, 0x87, 0x82, 0x85, 0x88, 0x84, 0x83, 0x88, 0x83, 0x86, 0x89, 0x8a, 0x8c, 0x8a, 0x91, 0x91, - 0x8a, 0x8e, 0x8e, 0x8c, 0x88, 0x8a, 0x89, 0x82, 0x84, 0x86, 0x82, 0x85, 0x86, 0x87, 0x81, 0x80, - 0x81, 0x80, 0x7a, 0x7a, 0x7b, 0x74, 0x77, 0x7b, 0x7b, 0x76, 0x78, 0x7b, 0x7b, 0x7b, 0x7e, 0x7d, - 0x7d, 0x7e, 0x7c, 0x7a, 0x77, 0x79, 0x74, 0x74, 0x79, 0x79, 0x78, 0x79, 0x7c, 0x7e, 0x78, 0x7d, - 0x80, 0x75, 0x72, 0x79, 0x78, 0x78, 0x79, 0x7b, 0x83, 0x80, 0x7e, 0x83, 0x7c, 0x7b, 0x7a, 0x7c, - 0x7d, 0x79, 0x7a, 0x82, 0x84, 0x7e, 0x7e, 0x86, 0x83, 0x80, 0x82, 0x81, 0x85, 0x83, 0x80, 0x82, - 0x84, 0x87, 0x85, 0x7b, 0x81, 0x83, 0x84, 0x83, 0x7e, 0x81, 0x86, 0x86, 0x7c, 0x7c, 0x81, 0x85, - 0x80, 0x7b, 0x80, 0x7e, 0x80, 0x7c, 0x7e, 0x85, 0x82, 0x85, 0x84, 0x81, 0x7e, 0x7d, 0x82, 0x7b, - 0x79, 0x84, 0x82, 0x7b, 0x7a, 0x83, 0x87, 0x80, 0x7c, 0x82, 0x81, 0x7b, 0x7e, 0x7b, 0x75, 0x77, - 0x76, 0x7a, 0x7d, 0x78, 0x80, 0x7b, 0x77, 0x7b, 0x80, 0x80, 0x7c, 0x7e, 0x82, 0x7e, 0x7d, 0x7a, - 0x7b, 0x80, 0x81, 0x86, 0x87, 0x83, 0x84, 0x87, 0x8b, 0x89, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x82, - 0x85, 0x80, 0x80, 0x85, 0x87, 0x85, 0x82, 0x82, 0x86, 0x82, 0x84, 0x86, 0x81, 0x81, 0x84, 0x88, - 0x89, 0x84, 0x87, 0x8a, 0x83, 0x8a, 0x8a, 0x84, 0x85, 0x7c, 0x80, 0x83, 0x7d, 0x7e, 0x82, 0x7d, - 0x7c, 0x80, 0x80, 0x7a, 0x74, 0x78, 0x7a, 0x73, 0x71, 0x70, 0x70, 0x73, 0x6c, 0x6f, 0x71, 0x6f, - 0x6c, 0x6c, 0x72, 0x70, 0x72, 0x77, 0x75, 0x73, 0x77, 0x74, 0x74, 0x74, 0x73, 0x72, 0x74, 0x78, - 0x82, 0x83, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7b, 0x7c, 0x7e, 0x83, 0x83, 0x83, - 0x87, 0x87, 0x86, 0x84, 0x89, 0x88, 0x80, 0x85, 0x89, 0x8f, 0x8d, 0x8b, 0x92, 0x92, 0x8e, 0x8e, - 0x90, 0x8e, 0x8a, 0x8c, 0x88, 0x87, 0x8f, 0x8b, 0x82, 0x82, 0x85, 0x83, 0x81, 0x81, 0x84, 0x82, - 0x83, 0x87, 0x86, 0x83, 0x85, 0x81, 0x80, 0x7d, 0x82, 0x86, 0x7e, 0x7e, 0x89, 0x88, 0x87, 0x85, - 0x82, 0x81, 0x7e, 0x7e, 0x78, 0x75, 0x77, 0x7a, 0x79, 0x7b, 0x7b, 0x7a, 0x78, 0x75, 0x79, 0x78, - 0x79, 0x78, 0x73, 0x74, 0x77, 0x75, 0x77, 0x79, 0x77, 0x73, 0x72, 0x79, 0x7c, 0x79, 0x79, 0x7a, - 0x7e, 0x7b, 0x7c, 0x83, 0x80, 0x7d, 0x79, 0x7c, 0x82, 0x78, 0x7b, 0x78, 0x7a, 0x85, 0x7e, 0x7c, - 0x7e, 0x7a, 0x7a, 0x7b, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x80, 0x84, 0x82, 0x7d, 0x7d, 0x7d, 0x7b, - 0x82, 0x7e, 0x7c, 0x81, 0x81, 0x85, 0x8b, 0x85, 0x83, 0x86, 0x87, 0x83, 0x83, 0x86, 0x86, 0x83, - 0x7e, 0x87, 0x8b, 0x89, 0x88, 0x8a, 0x8b, 0x84, 0x85, 0x85, 0x86, 0x84, 0x82, 0x81, 0x82, 0x83, - 0x7d, 0x7b, 0x7d, 0x7b, 0x7c, 0x7a, 0x7e, 0x81, 0x7c, 0x7b, 0x7b, 0x81, 0x86, 0x81, 0x7e, 0x7c, - 0x7c, 0x7c, 0x75, 0x73, 0x76, 0x75, 0x79, 0x7c, 0x83, 0x81, 0x7b, 0x7e, 0x81, 0x7e, 0x7a, 0x7c, - 0x7c, 0x7a, 0x80, 0x85, 0x84, 0x7c, 0x7b, 0x81, 0x82, 0x7e, 0x81, 0x7e, 0x7a, 0x7c, 0x82, 0x7e, - 0x7e, 0x82, 0x80, 0x7b, 0x81, 0x7e, 0x7a, 0x7b, 0x79, 0x79, 0x7b, 0x7b, 0x7d, 0x7d, 0x79, 0x79, - 0x7a, 0x7a, 0x7c, 0x7a, 0x7d, 0x80, 0x81, 0x81, 0x85, 0x84, 0x80, 0x84, 0x81, 0x7e, 0x82, 0x80, - 0x82, 0x80, 0x83, 0x84, 0x81, 0x86, 0x88, 0x84, 0x80, 0x81, 0x80, 0x7a, 0x79, 0x7c, 0x7e, 0x7a, - 0x7c, 0x7d, 0x7d, 0x80, 0x85, 0x84, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x85, 0x86, 0x85, 0x84, 0x86, - 0x88, 0x7e, 0x85, 0x87, 0x81, 0x86, 0x86, 0x84, 0x84, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7b, - 0x7b, 0x82, 0x7d, 0x7c, 0x82, 0x81, 0x82, 0x7c, 0x80, 0x7e, 0x78, 0x7c, 0x80, 0x78, 0x7d, 0x82, - 0x7e, 0x82, 0x86, 0x7e, 0x7d, 0x80, 0x7b, 0x7d, 0x7b, 0x81, 0x7e, 0x7b, 0x7e, 0x85, 0x8a, 0x85, - 0x84, 0x85, 0x81, 0x83, 0x83, 0x7d, 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x80, 0x7d, 0x78, 0x7a, 0x7b, - 0x7c, 0x7c, 0x7a, 0x7b, 0x7b, 0x76, 0x7b, 0x7b, 0x78, 0x77, 0x78, 0x79, 0x82, 0x80, 0x7b, 0x83, - 0x86, 0x82, 0x82, 0x84, 0x81, 0x7d, 0x7c, 0x75, 0x74, 0x78, 0x79, 0x76, 0x75, 0x7a, 0x7b, 0x7a, - 0x7a, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x79, 0x77, 0x79, 0x82, 0x81, 0x7c, 0x80, 0x83, 0x82, 0x83, - 0x82, 0x85, 0x83, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x81, 0x80, 0x7e, 0x7d, 0x7e, 0x83, 0x84, 0x82, - 0x83, 0x82, 0x83, 0x84, 0x85, 0x82, 0x80, 0x84, 0x86, 0x85, 0x89, 0x85, 0x84, 0x86, 0x87, 0x8b, - 0x8c, 0x88, 0x84, 0x87, 0x8b, 0x86, 0x84, 0x87, 0x87, 0x86, 0x84, 0x86, 0x87, 0x81, 0x81, 0x88, - 0x83, 0x82, 0x80, 0x82, 0x7e, 0x7b, 0x81, 0x7e, 0x7e, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x79, - 0x7d, 0x7c, 0x74, 0x77, 0x77, 0x76, 0x77, 0x76, 0x78, 0x76, 0x73, 0x75, 0x75, 0x76, 0x77, 0x74, - 0x70, 0x73, 0x75, 0x70, 0x72, 0x75, 0x76, 0x75, 0x75, 0x79, 0x7b, 0x7a, 0x79, 0x81, 0x82, 0x7d, - 0x80, 0x80, 0x79, 0x79, 0x7b, 0x7a, 0x7d, 0x7b, 0x7e, 0x7c, 0x7d, 0x81, 0x7e, 0x80, 0x80, 0x82, - 0x85, 0x85, 0x86, 0x88, 0x87, 0x88, 0x89, 0x87, 0x88, 0x86, 0x87, 0x8b, 0x8e, 0x8c, 0x89, 0x8e, - 0x8d, 0x89, 0x8b, 0x8b, 0x8d, 0x8a, 0x84, 0x8d, 0x8b, 0x83, 0x86, 0x85, 0x86, 0x84, 0x82, 0x84, - 0x81, 0x7d, 0x7b, 0x7b, 0x81, 0x82, 0x7b, 0x79, 0x7a, 0x7d, 0x7b, 0x7d, 0x7a, 0x76, 0x78, 0x76, - 0x79, 0x78, 0x7c, 0x79, 0x76, 0x7c, 0x7a, 0x78, 0x7a, 0x7b, 0x78, 0x78, 0x77, 0x78, 0x79, 0x78, - 0x77, 0x7b, 0x7b, 0x79, 0x7b, 0x7c, 0x7b, 0x79, 0x7b, 0x7d, 0x80, 0x81, 0x7d, 0x7c, 0x7c, 0x7b, - 0x78, 0x78, 0x78, 0x7a, 0x7a, 0x78, 0x7b, 0x7e, 0x7e, 0x82, 0x81, 0x7e, 0x82, 0x81, 0x83, 0x85, - 0x84, 0x80, 0x81, 0x88, 0x82, 0x85, 0x85, 0x84, 0x86, 0x85, 0x85, 0x86, 0x83, 0x82, 0x82, 0x82, - 0x82, 0x80, 0x81, 0x82, 0x7e, 0x83, 0x83, 0x81, 0x84, 0x85, 0x82, 0x7e, 0x7b, 0x7a, 0x79, 0x7e, - 0x80, 0x7e, 0x7d, 0x7d, 0x82, 0x81, 0x81, 0x7e, 0x7e, 0x81, 0x7c, 0x7d, 0x84, 0x84, 0x7e, 0x79, - 0x7e, 0x83, 0x80, 0x7c, 0x7a, 0x83, 0x82, 0x7b, 0x82, 0x81, 0x7b, 0x7c, 0x7e, 0x81, 0x81, 0x7c, - 0x80, 0x81, 0x7d, 0x7d, 0x7d, 0x83, 0x81, 0x80, 0x81, 0x7e, 0x82, 0x82, 0x80, 0x83, 0x87, 0x82, - 0x7e, 0x83, 0x88, 0x80, 0x7e, 0x81, 0x84, 0x84, 0x80, 0x84, 0x85, 0x81, 0x83, 0x82, 0x83, 0x88, - 0x87, 0x84, 0x89, 0x8c, 0x86, 0x83, 0x88, 0x89, 0x84, 0x81, 0x80, 0x84, 0x82, 0x7e, 0x7b, 0x7b, - 0x7a, 0x78, 0x76, 0x78, 0x77, 0x79, 0x77, 0x75, 0x78, 0x77, 0x76, 0x76, 0x74, 0x79, 0x77, 0x75, - 0x79, 0x78, 0x75, 0x79, 0x78, 0x76, 0x75, 0x77, 0x74, 0x73, 0x76, 0x77, 0x77, 0x75, 0x76, 0x77, - 0x7a, 0x7c, 0x78, 0x7c, 0x82, 0x82, 0x7c, 0x7d, 0x83, 0x85, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x83, - 0x84, 0x87, 0x85, 0x84, 0x85, 0x87, 0x88, 0x89, 0x88, 0x88, 0x8c, 0x8c, 0x88, 0x89, 0x8a, 0x88, - 0x8a, 0x89, 0x85, 0x84, 0x87, 0x86, 0x85, 0x88, 0x84, 0x82, 0x83, 0x82, 0x81, 0x83, 0x84, 0x86, - 0x80, 0x81, 0x88, 0x84, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x7b, - 0x7a, 0x7c, 0x79, 0x77, 0x77, 0x78, 0x75, 0x73, 0x78, 0x79, 0x7b, 0x7c, 0x7a, 0x7e, 0x7c, 0x7e, - 0x84, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7b, 0x78, 0x7a, 0x7c, 0x77, 0x78, 0x7d, 0x80, 0x78, 0x77, - 0x7c, 0x81, 0x81, 0x7e, 0x7c, 0x7a, 0x83, 0x7e, 0x7a, 0x7d, 0x7a, 0x7c, 0x7c, 0x7a, 0x82, 0x80, - 0x7c, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, 0x83, 0x80, 0x7d, 0x82, 0x7d, 0x7e, 0x86, 0x87, - 0x81, 0x81, 0x84, 0x81, 0x83, 0x86, 0x82, 0x84, 0x85, 0x7e, 0x84, 0x88, 0x86, 0x89, 0x84, 0x84, - 0x89, 0x87, 0x87, 0x87, 0x85, 0x83, 0x82, 0x83, 0x85, 0x85, 0x80, 0x83, 0x83, 0x80, 0x83, 0x84, - 0x7e, 0x7b, 0x7a, 0x7e, 0x7c, 0x7d, 0x7d, 0x7b, 0x7b, 0x7e, 0x82, 0x80, 0x80, 0x7e, 0x7d, 0x80, - 0x81, 0x80, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7c, 0x7b, 0x79, 0x80, 0x80, 0x79, - 0x7a, 0x7b, 0x7b, 0x79, 0x73, 0x77, 0x7d, 0x79, 0x79, 0x7e, 0x80, 0x7b, 0x7e, 0x7d, 0x7e, 0x7e, - 0x7b, 0x7d, 0x77, 0x78, 0x7e, 0x78, 0x79, 0x79, 0x78, 0x7b, 0x79, 0x7c, 0x7d, 0x7a, 0x7a, 0x7a, - 0x7d, 0x7e, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x85, 0x81, 0x7c, 0x7e, 0x81, 0x80, 0x80, 0x80, 0x7e, - 0x81, 0x80, 0x80, 0x85, 0x86, 0x85, 0x83, 0x84, 0x8a, 0x85, 0x82, 0x83, 0x83, 0x82, 0x81, 0x80, - 0x81, 0x7e, 0x81, 0x84, 0x81, 0x83, 0x86, 0x84, 0x87, 0x8a, 0x88, 0x84, 0x85, 0x83, 0x86, 0x83, - 0x83, 0x84, 0x82, 0x82, 0x7d, 0x85, 0x88, 0x81, 0x82, 0x81, 0x81, 0x82, 0x7d, 0x7c, 0x7e, 0x7e, - 0x78, 0x78, 0x80, 0x7d, 0x7a, 0x7b, 0x80, 0x7c, 0x79, 0x7d, 0x83, 0x7e, 0x7b, 0x7d, 0x82, 0x81, - 0x7c, 0x7e, 0x7c, 0x7e, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x79, 0x7b, 0x7d, 0x7d, 0x7d, 0x7a, 0x7b, - 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x83, 0x80, 0x7b, 0x81, 0x81, 0x7e, 0x81, 0x82, - 0x83, 0x81, 0x7e, 0x81, 0x88, 0x83, 0x7d, 0x81, 0x82, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x82, - 0x83, 0x81, 0x80, 0x7c, 0x7c, 0x7e, 0x7c, 0x77, 0x78, 0x7c, 0x7a, 0x79, 0x7d, 0x7c, 0x7b, 0x77, - 0x75, 0x7e, 0x7c, 0x7a, 0x7c, 0x7a, 0x7b, 0x7b, 0x78, 0x77, 0x78, 0x79, 0x7a, 0x76, 0x7d, 0x7d, - 0x7b, 0x7d, 0x7d, 0x81, 0x80, 0x7e, 0x82, 0x80, 0x80, 0x82, 0x85, 0x84, 0x85, 0x84, 0x81, 0x82, - 0x83, 0x84, 0x86, 0x85, 0x83, 0x83, 0x85, 0x87, 0x86, 0x83, 0x87, 0x89, 0x84, 0x82, 0x86, 0x87, - 0x82, 0x7c, 0x80, 0x85, 0x84, 0x80, 0x80, 0x82, 0x83, 0x84, 0x86, 0x86, 0x87, 0x8a, 0x87, 0x82, - 0x85, 0x86, 0x7e, 0x7d, 0x83, 0x82, 0x7c, 0x7c, 0x80, 0x7e, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x7c, - 0x7d, 0x7d, 0x79, 0x77, 0x77, 0x7a, 0x79, 0x75, 0x75, 0x77, 0x75, 0x72, 0x74, 0x77, 0x77, 0x76, - 0x77, 0x79, 0x78, 0x76, 0x78, 0x79, 0x77, 0x76, 0x78, 0x7a, 0x7b, 0x7c, 0x7a, 0x78, 0x7e, 0x7d, - 0x77, 0x79, 0x7c, 0x7a, 0x76, 0x7a, 0x7d, 0x82, 0x82, 0x7d, 0x81, 0x86, 0x88, 0x83, 0x82, 0x83, - 0x85, 0x84, 0x84, 0x87, 0x8a, 0x87, 0x87, 0x8e, 0x8b, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8a, - 0x8b, 0x89, 0x88, 0x8a, 0x8a, 0x8a, 0x8c, 0x8d, 0x8b, 0x85, 0x85, 0x86, 0x85, 0x82, 0x81, 0x86, - 0x85, 0x7e, 0x7b, 0x81, 0x84, 0x7c, 0x7d, 0x7c, 0x7a, 0x80, 0x7a, 0x74, 0x77, 0x7b, 0x7d, 0x75, - 0x75, 0x79, 0x76, 0x72, 0x73, 0x76, 0x75, 0x78, 0x76, 0x74, 0x75, 0x78, 0x75, 0x70, 0x6f, 0x71, - 0x73, 0x72, 0x6f, 0x72, 0x76, 0x79, 0x7b, 0x78, 0x79, 0x7c, 0x7e, 0x7b, 0x76, 0x7a, 0x7d, 0x7a, - 0x78, 0x7a, 0x7e, 0x7b, 0x7b, 0x7a, 0x7b, 0x85, 0x83, 0x7d, 0x81, 0x83, 0x85, 0x85, 0x87, 0x8b, - 0x89, 0x89, 0x88, 0x88, 0x89, 0x8a, 0x8b, 0x86, 0x84, 0x86, 0x88, 0x85, 0x83, 0x86, 0x81, 0x81, - 0x86, 0x83, 0x81, 0x85, 0x86, 0x85, 0x80, 0x81, 0x82, 0x7e, 0x7e, 0x7b, 0x7d, 0x7e, 0x7c, 0x7c, - 0x83, 0x84, 0x81, 0x80, 0x80, 0x81, 0x81, 0x7d, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x81, 0x7b, 0x7d, - 0x7e, 0x7c, 0x81, 0x81, 0x80, 0x7a, 0x7d, 0x80, 0x7d, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x7a, 0x7b, - 0x79, 0x7c, 0x7c, 0x7a, 0x7c, 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x81, 0x7e, 0x80, 0x81, 0x82, 0x84, - 0x83, 0x81, 0x85, 0x88, 0x85, 0x83, 0x84, 0x82, 0x83, 0x81, 0x82, 0x86, 0x85, 0x82, 0x84, 0x82, - 0x81, 0x82, 0x82, 0x80, 0x7e, 0x83, 0x80, 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7c, 0x7c, 0x80, 0x7e, 0x7c, 0x7c, 0x80, 0x7c, 0x7a, 0x7c, 0x80, 0x81, 0x7d, 0x7d, - 0x81, 0x7c, 0x7b, 0x7c, 0x78, 0x78, 0x79, 0x75, 0x76, 0x76, 0x74, 0x75, 0x77, 0x78, 0x78, 0x7a, - 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x77, 0x76, 0x77, 0x76, 0x7a, 0x7b, 0x7e, 0x81, 0x85, 0x83, 0x86, - 0x83, 0x84, 0x87, 0x85, 0x85, 0x85, 0x86, 0x84, 0x84, 0x82, 0x83, 0x85, 0x83, 0x83, 0x86, 0x86, - 0x83, 0x84, 0x84, 0x84, 0x84, 0x83, 0x81, 0x82, 0x83, 0x81, 0x81, 0x81, 0x83, 0x84, 0x85, 0x85, - 0x88, 0x85, 0x81, 0x82, 0x83, 0x81, 0x7d, 0x83, 0x84, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7b, 0x7d, - 0x7b, 0x79, 0x7b, 0x79, 0x7a, 0x79, 0x79, 0x78, 0x7b, 0x80, 0x7d, 0x79, 0x7c, 0x7b, 0x7a, 0x7c, - 0x7b, 0x7d, 0x7b, 0x7a, 0x79, 0x7a, 0x7d, 0x7b, 0x7b, 0x7b, 0x7e, 0x81, 0x7d, 0x7e, 0x7e, 0x7d, - 0x7c, 0x7b, 0x7b, 0x7d, 0x7b, 0x7e, 0x81, 0x7d, 0x7e, 0x84, 0x83, 0x80, 0x7e, 0x82, 0x81, 0x7e, - 0x7d, 0x7e, 0x81, 0x82, 0x7d, 0x7a, 0x82, 0x85, 0x80, 0x7e, 0x83, 0x82, 0x82, 0x7e, 0x80, 0x80, - 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x83, 0x83, 0x85, 0x86, 0x83, 0x83, 0x84, 0x86, - 0x85, 0x83, 0x82, 0x82, 0x84, 0x82, 0x81, 0x81, 0x84, 0x83, 0x7e, 0x80, 0x80, 0x81, 0x83, 0x7c, - 0x7c, 0x82, 0x80, 0x80, 0x83, 0x81, 0x7e, 0x81, 0x83, 0x81, 0x7d, 0x7d, 0x84, 0x81, 0x7d, 0x82, - 0x82, 0x82, 0x81, 0x83, 0x83, 0x80, 0x80, 0x7c, 0x7a, 0x7d, 0x7b, 0x76, 0x76, 0x7b, 0x7c, 0x76, - 0x77, 0x79, 0x78, 0x7a, 0x79, 0x7a, 0x7b, 0x77, 0x75, 0x75, 0x79, 0x79, 0x75, 0x76, 0x79, 0x79, - 0x79, 0x77, 0x77, 0x7a, 0x7c, 0x7a, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7b, - 0x7e, 0x81, 0x7e, 0x7b, 0x7e, 0x82, 0x83, 0x84, 0x7e, 0x7e, 0x81, 0x82, 0x83, 0x82, 0x81, 0x80, - 0x81, 0x82, 0x81, 0x83, 0x83, 0x81, 0x7d, 0x81, 0x84, 0x82, 0x83, 0x86, 0x84, 0x84, 0x84, 0x83, - 0x86, 0x85, 0x84, 0x82, 0x85, 0x88, 0x86, 0x84, 0x87, 0x88, 0x87, 0x87, 0x88, 0x88, 0x88, 0x84, - 0x83, 0x86, 0x86, 0x80, 0x80, 0x81, 0x7e, 0x7c, 0x7b, 0x7e, 0x7a, 0x79, 0x7c, 0x79, 0x7c, 0x7d, - 0x7b, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x80, 0x80, 0x7e, 0x82, 0x7d, 0x7b, 0x80, 0x7d, 0x80, 0x80, - 0x7c, 0x7d, 0x81, 0x7e, 0x7a, 0x7b, 0x7d, 0x7b, 0x79, 0x7a, 0x7e, 0x7a, 0x76, 0x74, 0x79, 0x7e, - 0x7b, 0x78, 0x79, 0x7e, 0x7e, 0x7a, 0x7a, 0x7c, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x80, 0x83, 0x84, - 0x80, 0x83, 0x84, 0x84, 0x81, 0x80, 0x82, 0x83, 0x83, 0x82, 0x81, 0x83, 0x82, 0x80, 0x80, 0x82, - 0x83, 0x80, 0x7d, 0x7d, 0x84, 0x88, 0x82, 0x80, 0x82, 0x80, 0x81, 0x82, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7d, 0x80, 0x7e, 0x77, 0x7a, 0x7e, 0x7d, 0x79, 0x79, 0x7b, 0x7b, 0x7b, 0x81, 0x7c, 0x79, - 0x7b, 0x7c, 0x7a, 0x7c, 0x80, 0x7c, 0x79, 0x79, 0x7b, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7b, 0x79, 0x7b, 0x7b, 0x7c, 0x81, 0x84, 0x85, 0x80, 0x7e, 0x84, 0x87, 0x88, 0x83, 0x82, 0x83, - 0x83, 0x83, 0x84, 0x84, 0x84, 0x86, 0x83, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, 0x87, 0x86, 0x84, - 0x83, 0x83, 0x83, 0x82, 0x83, 0x7e, 0x80, 0x81, 0x7c, 0x7c, 0x7c, 0x7b, 0x7d, 0x7c, 0x7b, 0x7b, - 0x7a, 0x7c, 0x79, 0x7b, 0x7e, 0x79, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x77, 0x76, 0x77, 0x78, - 0x76, 0x76, 0x7a, 0x7b, 0x7b, 0x80, 0x7d, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, 0x79, 0x79, 0x7c, 0x7d, - 0x7d, 0x7e, 0x81, 0x80, 0x7c, 0x7e, 0x83, 0x82, 0x81, 0x81, 0x81, 0x84, 0x80, 0x81, 0x85, 0x85, - 0x84, 0x83, 0x85, 0x87, 0x86, 0x87, 0x89, 0x85, 0x8b, 0x8b, 0x85, 0x85, 0x85, 0x83, 0x80, 0x83, - 0x87, 0x84, 0x81, 0x84, 0x86, 0x84, 0x83, 0x85, 0x86, 0x81, 0x82, 0x86, 0x83, 0x83, 0x85, 0x86, - 0x86, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x80, 0x7b, 0x79, 0x7c, 0x79, 0x79, 0x7c, 0x7b, 0x7a, 0x79, - 0x7c, 0x7c, 0x7a, 0x78, 0x79, 0x78, 0x79, 0x7c, 0x7b, 0x78, 0x76, 0x77, 0x79, 0x77, 0x79, 0x78, - 0x74, 0x79, 0x79, 0x77, 0x77, 0x77, 0x76, 0x74, 0x77, 0x7a, 0x79, 0x76, 0x77, 0x7a, 0x79, 0x7a, - 0x7c, 0x7e, 0x7d, 0x7d, 0x80, 0x7d, 0x7c, 0x80, 0x80, 0x7c, 0x7e, 0x84, 0x86, 0x83, 0x83, 0x84, - 0x83, 0x85, 0x86, 0x84, 0x84, 0x84, 0x83, 0x83, 0x81, 0x84, 0x86, 0x83, 0x81, 0x83, 0x83, 0x80, - 0x7e, 0x81, 0x81, 0x81, 0x82, 0x83, 0x84, 0x82, 0x80, 0x81, 0x82, 0x83, 0x8a, 0x87, 0x80, 0x81, - 0x85, 0x88, 0x82, 0x82, 0x82, 0x7e, 0x81, 0x80, 0x82, 0x83, 0x82, 0x7e, 0x7e, 0x80, 0x81, 0x7d, - 0x7b, 0x7c, 0x7d, 0x7e, 0x7b, 0x78, 0x7a, 0x7d, 0x7e, 0x80, 0x7d, 0x80, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x82, 0x84, 0x7b, 0x79, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7d, 0x82, 0x81, 0x80, 0x80, 0x81, 0x82, 0x7e, 0x80, 0x80, 0x81, 0x83, 0x82, 0x82, - 0x82, 0x81, 0x7d, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7e, 0x7e, 0x7b, 0x7a, 0x81, - 0x80, 0x7c, 0x7a, 0x7d, 0x80, 0x7e, 0x7d, 0x80, 0x82, 0x81, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, - 0x7c, 0x80, 0x7d, 0x78, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x79, 0x78, 0x7d, 0x7c, 0x7b, 0x7c, - 0x7b, 0x7c, 0x7c, 0x7c, 0x80, 0x7e, 0x7d, 0x80, 0x82, 0x81, 0x83, 0x83, 0x80, 0x82, 0x83, 0x82, - 0x80, 0x83, 0x85, 0x83, 0x81, 0x86, 0x85, 0x83, 0x82, 0x7e, 0x7e, 0x80, 0x7e, 0x81, 0x7e, 0x7c, - 0x80, 0x80, 0x83, 0x83, 0x82, 0x81, 0x81, 0x83, 0x84, 0x83, 0x81, 0x83, 0x83, 0x83, 0x85, 0x82, - 0x7e, 0x7e, 0x80, 0x7e, 0x82, 0x81, 0x7c, 0x7e, 0x81, 0x7d, 0x80, 0x82, 0x82, 0x80, 0x81, 0x80, - 0x7d, 0x7c, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x7b, 0x80, 0x7e, 0x7a, 0x7b, 0x7c, 0x7d, 0x7d, 0x7b, - 0x7c, 0x7c, 0x7a, 0x7e, 0x7d, 0x7c, 0x7d, 0x79, 0x7b, 0x80, 0x7e, 0x7c, 0x7d, 0x7c, 0x80, 0x7d, - 0x7b, 0x7d, 0x80, 0x7c, 0x7e, 0x83, 0x80, 0x81, 0x82, 0x82, 0x84, 0x84, 0x82, 0x82, 0x82, 0x81, - 0x84, 0x82, 0x7e, 0x80, 0x80, 0x82, 0x80, 0x7c, 0x7a, 0x7b, 0x7d, 0x80, 0x7d, 0x7d, 0x82, 0x82, - 0x7d, 0x80, 0x81, 0x81, 0x81, 0x80, 0x84, 0x85, 0x83, 0x84, 0x84, 0x82, 0x87, 0x89, 0x83, 0x82, - 0x86, 0x84, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x7e, 0x80, 0x84, - 0x83, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7d, 0x81, 0x83, 0x80, 0x7d, 0x81, 0x83, 0x80, 0x80, 0x7d, - 0x80, 0x81, 0x7e, 0x80, 0x81, 0x7d, 0x7b, 0x7e, 0x7d, 0x7c, 0x7a, 0x7a, 0x78, 0x7a, 0x7b, 0x78, - 0x75, 0x72, 0x74, 0x75, 0x77, 0x7a, 0x7a, 0x78, 0x79, 0x7d, 0x7d, 0x7a, 0x7a, 0x7c, 0x7b, 0x7b, - 0x7a, 0x7a, 0x78, 0x77, 0x79, 0x78, 0x7a, 0x7a, 0x77, 0x7b, 0x7b, 0x78, 0x7b, 0x7c, 0x7a, 0x7a, - 0x7b, 0x7d, 0x7d, 0x7b, 0x7c, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, 0x81, 0x83, 0x85, 0x84, - 0x84, 0x82, 0x83, 0x86, 0x87, 0x84, 0x83, 0x87, 0x88, 0x88, 0x89, 0x8a, 0x88, 0x88, 0x89, 0x86, - 0x85, 0x88, 0x84, 0x83, 0x89, 0x89, 0x88, 0x86, 0x84, 0x86, 0x85, 0x83, 0x82, 0x83, 0x80, 0x80, - 0x82, 0x82, 0x82, 0x83, 0x82, 0x7e, 0x82, 0x83, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7b, - 0x7c, 0x7d, 0x7d, 0x7a, 0x7b, 0x81, 0x80, 0x7a, 0x7b, 0x7c, 0x7a, 0x7b, 0x7a, 0x78, 0x7b, 0x7b, - 0x78, 0x7b, 0x7b, 0x79, 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x7a, 0x7b, 0x7b, 0x7a, 0x7c, 0x7c, 0x78, - 0x79, 0x7b, 0x7c, 0x80, 0x80, 0x7c, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x83, 0x83, 0x80, 0x82, 0x82, 0x81, 0x84, 0x85, 0x81, 0x83, 0x81, 0x81, 0x84, - 0x84, 0x82, 0x84, 0x85, 0x84, 0x83, 0x83, 0x83, 0x83, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7d, - 0x7d, 0x7e, 0x7c, 0x7a, 0x7c, 0x81, 0x7e, 0x7b, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x78, 0x78, 0x7a, 0x7a, 0x79, 0x79, 0x7c, 0x7e, - 0x7c, 0x7d, 0x7e, 0x7b, 0x7a, 0x7d, 0x82, 0x7d, 0x7e, 0x82, 0x82, 0x80, 0x7e, 0x83, 0x83, 0x84, - 0x87, 0x88, 0x85, 0x82, 0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x81, 0x83, 0x82, 0x84, 0x84, - 0x82, 0x82, 0x84, 0x83, 0x7d, 0x80, 0x82, 0x81, 0x82, 0x80, 0x7d, 0x81, 0x81, 0x82, 0x82, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7b, 0x7b, 0x7b, 0x79, - 0x7b, 0x7b, 0x79, 0x7a, 0x79, 0x7a, 0x7e, 0x7c, 0x7b, 0x7d, 0x7d, 0x7a, 0x7b, 0x7d, 0x7b, 0x7b, - 0x79, 0x7a, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x82, 0x85, 0x84, 0x83, 0x82, 0x84, 0x85, 0x85, - 0x84, 0x85, 0x86, 0x85, 0x84, 0x88, 0x86, 0x86, 0x87, 0x87, 0x88, 0x8b, 0x8b, 0x86, 0x85, 0x87, - 0x84, 0x84, 0x86, 0x81, 0x82, 0x81, 0x81, 0x81, 0x7e, 0x80, 0x82, 0x82, 0x7e, 0x83, 0x83, 0x81, - 0x82, 0x81, 0x80, 0x81, 0x83, 0x80, 0x7c, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7a, 0x79, 0x78, 0x7b, - 0x7b, 0x79, 0x78, 0x7a, 0x76, 0x78, 0x7a, 0x76, 0x76, 0x76, 0x76, 0x75, 0x77, 0x79, 0x78, 0x77, - 0x7a, 0x7a, 0x79, 0x7a, 0x7c, 0x7b, 0x79, 0x7d, 0x80, 0x7c, 0x79, 0x7e, 0x80, 0x7b, 0x7c, 0x7c, - 0x7d, 0x7d, 0x7b, 0x7d, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7e, 0x80, 0x80, - 0x80, 0x81, 0x83, 0x82, 0x81, 0x83, 0x84, 0x85, 0x84, 0x82, 0x82, 0x85, 0x86, 0x85, 0x87, 0x84, - 0x83, 0x85, 0x85, 0x7e, 0x7e, 0x83, 0x83, 0x83, 0x82, 0x83, 0x86, 0x85, 0x84, 0x85, 0x85, 0x85, - 0x82, 0x82, 0x84, 0x83, 0x84, 0x82, 0x82, 0x84, 0x84, 0x83, 0x82, 0x80, 0x81, 0x85, 0x82, 0x80, - 0x81, 0x82, 0x82, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x7b, 0x7d, 0x82, - 0x7e, 0x7b, 0x7e, 0x81, 0x80, 0x7d, 0x7b, 0x7d, 0x7c, 0x7e, 0x7e, 0x7b, 0x7b, 0x7b, 0x7d, 0x7b, - 0x7d, 0x7d, 0x7b, 0x79, 0x79, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x7c, 0x7b, 0x7e, 0x7d, - 0x80, 0x81, 0x80, 0x82, 0x81, 0x7b, 0x7e, 0x81, 0x7e, 0x80, 0x7d, 0x7d, 0x7d, 0x7b, 0x7e, 0x7e, - 0x7d, 0x7b, 0x7c, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, - 0x7e, 0x80, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x81, 0x7e, 0x7d, 0x7e, 0x7e, 0x81, 0x80, 0x7d, - 0x81, 0x80, 0x7e, 0x81, 0x82, 0x80, 0x82, 0x84, 0x82, 0x84, 0x84, 0x82, 0x83, 0x82, 0x80, 0x82, - 0x83, 0x81, 0x7e, 0x7d, 0x7e, 0x82, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x82, 0x81, 0x7d, - 0x7c, 0x7d, 0x80, 0x82, 0x81, 0x7d, 0x7e, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x81, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x81, 0x7c, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7d, 0x7b, 0x7c, 0x80, 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x83, 0x84, 0x82, - 0x80, 0x82, 0x83, 0x83, 0x83, 0x81, 0x80, 0x83, 0x82, 0x82, 0x81, 0x7d, 0x80, 0x81, 0x7e, 0x7e, - 0x7d, 0x7e, 0x7e, 0x81, 0x82, 0x82, 0x85, 0x81, 0x7e, 0x82, 0x83, 0x82, 0x80, 0x82, 0x83, 0x81, - 0x82, 0x81, 0x81, 0x83, 0x80, 0x81, 0x83, 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x80, 0x82, - 0x7e, 0x80, 0x82, 0x81, 0x7e, 0x81, 0x83, 0x84, 0x82, 0x82, 0x84, 0x83, 0x7e, 0x7d, 0x81, 0x81, - 0x80, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7c, 0x7c, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, - 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x82, 0x83, 0x80, 0x7e, 0x81, 0x83, 0x81, 0x7d, 0x80, - 0x7d, 0x7c, 0x7c, 0x7b, 0x7d, 0x7c, 0x79, 0x78, 0x78, 0x78, 0x79, 0x78, 0x7a, 0x7a, 0x79, 0x7a, - 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x79, 0x7b, 0x7e, 0x7b, 0x79, - 0x7b, 0x7c, 0x7d, 0x7b, 0x78, 0x7b, 0x7c, 0x78, 0x78, 0x7a, 0x78, 0x78, 0x7a, 0x7c, 0x7b, 0x7b, - 0x7c, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x84, 0x83, 0x85, 0x88, 0x86, 0x86, 0x88, 0x89, - 0x84, 0x84, 0x88, 0x87, 0x85, 0x85, 0x85, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x85, 0x87, - 0x87, 0x84, 0x84, 0x87, 0x88, 0x88, 0x86, 0x87, 0x88, 0x87, 0x85, 0x87, 0x87, 0x85, 0x83, 0x82, - 0x83, 0x86, 0x84, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x81, 0x7d, 0x80, 0x80, 0x7c, 0x7d, - 0x7e, 0x7a, 0x79, 0x7b, 0x7d, 0x7c, 0x7a, 0x78, 0x78, 0x79, 0x7b, 0x78, 0x75, 0x75, 0x77, 0x78, - 0x76, 0x78, 0x79, 0x76, 0x76, 0x77, 0x7a, 0x7b, 0x78, 0x78, 0x7b, 0x7d, 0x7e, 0x80, 0x7d, 0x7b, - 0x7c, 0x7b, 0x7c, 0x7e, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, - 0x80, 0x81, 0x7d, 0x80, 0x82, 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x81, 0x81, 0x81, 0x82, 0x84, - 0x85, 0x84, 0x86, 0x88, 0x86, 0x82, 0x83, 0x85, 0x84, 0x82, 0x7d, 0x7d, 0x82, 0x81, 0x7c, 0x7c, - 0x80, 0x82, 0x80, 0x80, 0x80, 0x82, 0x80, 0x7d, 0x81, 0x82, 0x80, 0x80, 0x7d, 0x7c, 0x80, 0x80, - 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7a, 0x7a, 0x7e, 0x7c, 0x79, 0x7b, 0x7c, 0x7d, 0x7a, - 0x7d, 0x80, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x7b, 0x7c, 0x7d, 0x81, 0x7e, 0x7b, 0x7d, 0x7e, 0x80, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x81, 0x82, 0x83, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x80, 0x81, 0x81, 0x82, 0x80, 0x81, 0x82, - 0x82, 0x82, 0x81, 0x82, 0x84, 0x81, 0x80, 0x81, 0x81, 0x7e, 0x7d, 0x81, 0x80, 0x7e, 0x81, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7e, 0x7e, 0x7d, 0x80, 0x7d, 0x7c, 0x7c, - 0x7d, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x7e, 0x80, 0x83, 0x82, 0x82, 0x84, 0x82, - 0x81, 0x82, 0x83, 0x84, 0x82, 0x82, 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x84, 0x84, - 0x82, 0x81, 0x81, 0x85, 0x83, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x81, 0x82, 0x80, 0x7c, 0x7d, - 0x7e, 0x7b, 0x7b, 0x7c, 0x7a, 0x7b, 0x7a, 0x7c, 0x7b, 0x78, 0x7a, 0x7b, 0x79, 0x7a, 0x79, 0x78, - 0x79, 0x78, 0x79, 0x78, 0x78, 0x77, 0x76, 0x74, 0x77, 0x79, 0x79, 0x79, 0x78, 0x7a, 0x78, 0x7a, - 0x7b, 0x7b, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x80, 0x7e, 0x81, 0x82, 0x7d, 0x80, - 0x82, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x82, 0x82, 0x7e, 0x81, 0x83, 0x82, 0x82, - 0x82, 0x83, 0x85, 0x81, 0x82, 0x83, 0x85, 0x85, 0x82, 0x84, 0x85, 0x84, 0x86, 0x83, 0x83, 0x87, - 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x85, 0x86, 0x81, 0x81, 0x85, 0x83, 0x7e, - 0x80, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x83, 0x85, 0x83, 0x82, 0x84, 0x86, 0x82, 0x81, 0x82, - 0x83, 0x83, 0x83, 0x81, 0x80, 0x80, 0x82, 0x81, 0x7c, 0x7e, 0x81, 0x7d, 0x7c, 0x7e, 0x7e, 0x7a, - 0x79, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7a, 0x7d, 0x7d, 0x78, 0x7a, 0x7c, 0x7a, - 0x79, 0x78, 0x7b, 0x7e, 0x7d, 0x7d, 0x7e, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x79, 0x7a, 0x7b, - 0x7a, 0x79, 0x7b, 0x7c, 0x7d, 0x7c, 0x7d, 0x80, 0x7c, 0x7a, 0x7a, 0x7d, 0x7d, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7d, 0x80, - 0x82, 0x7e, 0x7c, 0x81, 0x83, 0x80, 0x7d, 0x81, 0x81, 0x82, 0x84, 0x81, 0x7e, 0x81, 0x80, 0x80, - 0x80, 0x81, 0x83, 0x81, 0x83, 0x83, 0x82, 0x83, 0x81, 0x80, 0x80, 0x82, 0x84, 0x82, 0x81, 0x82, - 0x82, 0x85, 0x83, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x7e, 0x7d, 0x80, 0x83, 0x81, - 0x7c, 0x7c, 0x80, 0x80, 0x7d, 0x7b, 0x7e, 0x80, 0x7e, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7d, - 0x7e, 0x7e, 0x7a, 0x7b, 0x7e, 0x7d, 0x7a, 0x7b, 0x7d, 0x7c, 0x7a, 0x78, 0x79, 0x7b, 0x7b, 0x7c, - 0x7c, 0x7d, 0x7c, 0x7d, 0x7b, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x83, 0x84, 0x84, 0x83, 0x82, - 0x84, 0x85, 0x82, 0x81, 0x83, 0x85, 0x84, 0x81, 0x83, 0x84, 0x81, 0x7e, 0x82, 0x85, 0x83, 0x82, - 0x83, 0x83, 0x86, 0x86, 0x83, 0x83, 0x84, 0x82, 0x7e, 0x82, 0x82, 0x81, 0x7e, 0x81, 0x83, 0x83, - 0x81, 0x7e, 0x7d, 0x80, 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x81, 0x80, - 0x7d, 0x80, 0x7d, 0x7d, 0x7d, 0x7b, 0x7d, 0x80, 0x7c, 0x7b, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, 0x80, - 0x7e, 0x79, 0x7b, 0x80, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7d, 0x7b, 0x7d, - 0x81, 0x80, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x7b, 0x79, 0x79, - 0x7a, 0x7a, 0x79, 0x79, 0x7b, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x7e, 0x7b, - 0x7c, 0x7e, 0x7e, 0x7d, 0x7e, 0x82, 0x82, 0x7e, 0x7d, 0x7d, 0x80, 0x7d, 0x7a, 0x7c, 0x7c, 0x79, - 0x7b, 0x7c, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7e, 0x7e, 0x7e, 0x81, - 0x7e, 0x81, 0x81, 0x82, 0x81, 0x80, 0x84, 0x83, 0x83, 0x84, 0x85, 0x86, 0x85, 0x86, 0x85, 0x85, - 0x87, 0x88, 0x88, 0x8a, 0x8b, 0x88, 0x86, 0x87, 0x89, 0x85, 0x84, 0x86, 0x84, 0x82, 0x83, 0x84, - 0x84, 0x83, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x85, 0x87, 0x84, 0x84, 0x85, 0x85, 0x85, 0x83, - 0x80, 0x81, 0x81, 0x7e, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x7e, 0x7e, 0x7c, 0x7b, 0x7b, 0x7a, - 0x7b, 0x7b, 0x79, 0x79, 0x7a, 0x79, 0x79, 0x7b, 0x77, 0x75, 0x77, 0x74, 0x73, 0x76, 0x76, 0x78, - 0x76, 0x75, 0x79, 0x79, 0x77, 0x77, 0x7a, 0x7a, 0x79, 0x7b, 0x7d, 0x7c, 0x7a, 0x7c, 0x7c, 0x7b, - 0x7e, 0x7d, 0x7a, 0x7a, 0x7d, 0x7e, 0x7b, 0x7c, 0x7e, 0x7a, 0x7a, 0x7e, 0x81, 0x7d, 0x7d, 0x81, - 0x82, 0x83, 0x83, 0x83, 0x83, 0x85, 0x84, 0x83, 0x83, 0x84, 0x81, 0x82, 0x86, 0x87, 0x82, 0x83, - 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x81, 0x82, 0x83, 0x82, 0x81, 0x82, 0x83, 0x82, 0x83, 0x86, - 0x83, 0x81, 0x82, 0x81, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x80, 0x7d, - 0x7d, 0x82, 0x82, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x79, 0x7a, 0x7c, - 0x7b, 0x7a, 0x7a, 0x7d, 0x80, 0x7b, 0x7a, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x7e, 0x7e, 0x81, 0x7e, 0x7b, 0x7d, 0x7c, 0x7c, 0x7e, 0x82, 0x82, 0x82, 0x83, 0x82, 0x83, - 0x83, 0x83, 0x81, 0x7d, 0x80, 0x82, 0x81, 0x80, 0x82, 0x84, 0x82, 0x80, 0x82, 0x84, 0x84, 0x81, - 0x82, 0x83, 0x83, 0x80, 0x80, 0x82, 0x83, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x85, 0x84, - 0x82, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7c, 0x80, - 0x80, 0x7c, 0x7d, 0x80, 0x7d, 0x7d, 0x82, 0x83, 0x7d, 0x7d, 0x81, 0x83, 0x7e, 0x7e, 0x81, 0x7e, - 0x7c, 0x7c, 0x7e, 0x7d, 0x7d, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x82, 0x83, 0x80, 0x7e, - 0x80, 0x80, 0x7c, 0x7c, 0x82, 0x81, 0x7e, 0x81, 0x81, 0x7e, 0x7e, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, - 0x79, 0x7a, 0x7a, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x79, 0x79, 0x7d, 0x7d, 0x7a, 0x78, - 0x79, 0x7a, 0x78, 0x77, 0x79, 0x79, 0x7b, 0x79, 0x7a, 0x7c, 0x7d, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x81, 0x82, 0x81, 0x80, 0x82, 0x82, 0x84, 0x85, 0x83, 0x84, 0x86, 0x85, 0x85, 0x86, - 0x86, 0x84, 0x85, 0x85, 0x85, 0x85, 0x82, 0x84, 0x86, 0x82, 0x84, 0x84, 0x81, 0x82, 0x84, 0x81, - 0x83, 0x85, 0x83, 0x82, 0x83, 0x84, 0x83, 0x81, 0x7e, 0x7e, 0x81, 0x7c, 0x7d, 0x82, 0x7d, 0x7e, - 0x83, 0x83, 0x80, 0x81, 0x82, 0x82, 0x81, 0x84, 0x83, 0x83, 0x84, 0x83, 0x82, 0x81, 0x84, 0x82, - 0x7e, 0x80, 0x81, 0x81, 0x7e, 0x80, 0x80, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7c, 0x78, 0x79, 0x7a, 0x7a, 0x7a, 0x78, 0x79, 0x7a, 0x79, 0x79, 0x79, 0x79, 0x7a, - 0x78, 0x7a, 0x7b, 0x7a, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7d, 0x7b, 0x7a, 0x7c, 0x7a, 0x7b, 0x80, 0x7e, 0x7d, 0x7e, - 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x7e, - 0x80, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x81, 0x84, 0x85, 0x85, - 0x85, 0x83, 0x83, 0x86, 0x85, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x83, 0x84, 0x83, 0x83, 0x83, - 0x85, 0x84, 0x83, 0x82, 0x81, 0x82, 0x80, 0x80, 0x82, 0x7e, 0x7d, 0x80, 0x7c, 0x7c, 0x7c, 0x7b, - 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x7d, 0x7c, 0x7e, 0x7b, 0x7a, 0x7d, 0x7c, 0x7b, 0x7a, - 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x78, 0x7a, 0x7d, 0x7d, 0x7b, 0x7b, 0x7c, 0x7b, 0x7c, - 0x7d, 0x7d, 0x80, 0x7c, 0x7d, 0x81, 0x82, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x80, 0x81, - 0x83, 0x83, 0x83, 0x85, 0x84, 0x81, 0x84, 0x85, 0x84, 0x83, 0x85, 0x86, 0x85, 0x84, 0x86, 0x86, - 0x84, 0x83, 0x84, 0x86, 0x83, 0x82, 0x84, 0x84, 0x80, 0x81, 0x82, 0x82, 0x80, 0x7e, 0x82, 0x83, - 0x80, 0x80, 0x81, 0x82, 0x80, 0x80, 0x81, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x81, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7d, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7a, - 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x79, 0x7a, 0x78, 0x78, 0x7a, 0x7a, 0x7a, 0x7c, - 0x7e, 0x7d, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x80, 0x80, 0x7d, - 0x7c, 0x7e, 0x80, 0x7c, 0x7c, 0x7d, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x7e, 0x7c, 0x80, 0x82, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x7e, 0x80, 0x80, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x83, 0x84, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x83, 0x84, 0x84, 0x83, - 0x83, 0x85, 0x85, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x84, 0x84, 0x84, 0x82, 0x83, 0x85, 0x85, - 0x83, 0x83, 0x83, 0x84, 0x83, 0x82, 0x84, 0x83, 0x82, 0x82, 0x83, 0x83, 0x80, 0x81, 0x81, 0x7d, - 0x7e, 0x80, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7a, 0x7b, 0x7d, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, - 0x7b, 0x7a, 0x79, 0x7a, 0x7a, 0x77, 0x77, 0x79, 0x7a, 0x78, 0x78, 0x79, 0x78, 0x78, 0x76, 0x77, - 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7c, 0x7b, 0x7d, 0x80, 0x7e, 0x7c, 0x7e, 0x7c, 0x79, 0x7b, 0x7e, - 0x7d, 0x7b, 0x7d, 0x7e, 0x7d, 0x7a, 0x7a, 0x7e, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x81, - 0x81, 0x83, 0x83, 0x82, 0x85, 0x85, 0x84, 0x84, 0x84, 0x85, 0x86, 0x84, 0x84, 0x84, 0x82, 0x83, - 0x82, 0x80, 0x82, 0x84, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x82, 0x82, 0x81, 0x81, 0x82, 0x80, 0x7d, 0x80, 0x81, 0x80, 0x80, 0x82, 0x81, 0x81, 0x81, - 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7b, 0x7d, - 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x82, 0x80, 0x80, - 0x7d, 0x7c, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7b, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x81, 0x81, 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x83, 0x82, 0x82, 0x84, - 0x84, 0x83, 0x85, 0x83, 0x82, 0x82, 0x81, 0x83, 0x82, 0x84, 0x82, 0x81, 0x83, 0x82, 0x80, 0x81, - 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x7d, 0x7b, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x81, - 0x81, 0x7e, 0x7e, 0x81, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x81, 0x81, 0x7e, 0x80, 0x81, 0x7e, 0x7e, - 0x81, 0x81, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, - 0x7b, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7a, 0x7b, 0x7d, 0x7e, 0x7d, - 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7a, 0x7a, 0x7c, 0x7b, 0x7b, 0x7e, 0x7e, 0x7b, 0x7a, 0x7a, 0x7b, - 0x7b, 0x7a, 0x78, 0x7a, 0x7c, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7c, - 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x84, - 0x85, 0x84, 0x84, 0x83, 0x84, 0x87, 0x85, 0x84, 0x86, 0x87, 0x86, 0x85, 0x85, 0x86, 0x84, 0x82, - 0x83, 0x83, 0x83, 0x83, 0x85, 0x85, 0x85, 0x85, 0x83, 0x82, 0x82, 0x83, 0x80, 0x80, 0x82, 0x80, - 0x7d, 0x81, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x82, 0x80, - 0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x81, 0x81, 0x7d, 0x80, 0x82, 0x7d, 0x7c, 0x7e, 0x7d, - 0x7b, 0x7d, 0x7e, 0x7c, 0x7b, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7b, 0x7a, 0x7d, - 0x7e, 0x7b, 0x79, 0x7c, 0x7e, 0x7c, 0x7a, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x7e, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7b, 0x79, 0x7b, - 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x80, 0x82, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x81, - 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x84, 0x83, 0x82, 0x83, 0x84, 0x86, 0x86, 0x84, - 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x80, 0x82, 0x81, 0x80, 0x82, 0x82, 0x80, 0x80, 0x81, 0x82, - 0x82, 0x7e, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, - 0x7e, 0x80, 0x80, 0x7e, 0x7c, 0x7d, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x7e, 0x7e, - 0x7c, 0x7b, 0x7a, 0x7b, 0x7a, 0x79, 0x78, 0x78, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7d, 0x7d, 0x7b, - 0x7b, 0x7e, 0x7e, 0x7c, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x83, 0x84, - 0x83, 0x80, 0x80, 0x82, 0x82, 0x80, 0x81, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x84, 0x84, 0x83, - 0x83, 0x84, 0x84, 0x81, 0x80, 0x81, 0x83, 0x83, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x80, 0x82, - 0x83, 0x81, 0x7e, 0x81, 0x82, 0x81, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x7c, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x79, - 0x79, 0x79, 0x79, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, - 0x7c, 0x7c, 0x7e, 0x7e, 0x7d, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7d, 0x7e, - 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7d, 0x7e, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x84, 0x84, 0x85, 0x83, 0x83, 0x83, 0x82, 0x82, - 0x84, 0x84, 0x82, 0x83, 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x83, 0x81, - 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x83, 0x82, 0x7e, 0x81, 0x80, 0x80, 0x82, 0x83, 0x83, 0x82, - 0x82, 0x83, 0x84, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, - 0x7d, 0x7b, 0x7b, 0x7c, 0x7d, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, - 0x7a, 0x79, 0x78, 0x7a, 0x79, 0x78, 0x7a, 0x7a, 0x78, 0x78, 0x79, 0x7a, 0x7b, 0x7a, 0x7a, 0x7a, - 0x7b, 0x7c, 0x7b, 0x7a, 0x7d, 0x7d, 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x80, 0x80, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x81, 0x82, 0x83, 0x82, 0x81, - 0x82, 0x83, 0x82, 0x82, 0x83, 0x84, 0x84, 0x82, 0x84, 0x85, 0x84, 0x84, 0x86, 0x84, 0x84, 0x86, - 0x84, 0x83, 0x85, 0x83, 0x82, 0x83, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, - 0x81, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7b, 0x7c, 0x7d, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7e, 0x80, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x82, 0x81, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x80, - 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x82, 0x80, 0x80, 0x82, 0x83, 0x82, 0x81, 0x80, 0x81, - 0x81, 0x7e, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7d, 0x80, 0x80, 0x7d, 0x7e, - 0x80, 0x7e, 0x7e, 0x80, 0x82, 0x82, 0x81, 0x82, 0x83, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, 0x81, - 0x81, 0x81, 0x7e, 0x7e, 0x81, 0x82, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x81, 0x80, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7d, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x80, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7b, 0x7b, 0x7d, - 0x7c, 0x7a, 0x7b, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x81, 0x82, 0x81, 0x82, 0x84, 0x84, 0x84, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x82, 0x83, - 0x85, 0x85, 0x84, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x81, 0x83, 0x85, 0x85, 0x84, - 0x84, 0x85, 0x85, 0x84, 0x82, 0x82, 0x84, 0x83, 0x81, 0x80, 0x83, 0x81, 0x80, 0x81, 0x81, 0x82, - 0x82, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x7d, 0x7e, 0x81, 0x80, 0x7c, 0x7c, - 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, - 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x79, 0x79, 0x7c, 0x7c, 0x7b, 0x7c, 0x7e, 0x7d, 0x7c, 0x7d, - 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x7d, 0x7c, 0x80, 0x7e, 0x7c, 0x7e, 0x80, 0x7c, - 0x7b, 0x7d, 0x7d, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x82, 0x81, 0x80, 0x81, 0x80, 0x80, 0x7e, - 0x7e, 0x80, 0x81, 0x81, 0x7d, 0x7e, 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x80, 0x80, 0x83, - 0x83, 0x82, 0x82, 0x84, 0x86, 0x85, 0x83, 0x84, 0x86, 0x85, 0x84, 0x84, 0x84, 0x85, 0x83, 0x82, - 0x83, 0x84, 0x83, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x80, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7c, 0x7d, 0x7d, 0x7c, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, - 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, 0x81, 0x81, 0x82, - 0x82, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, 0x80, 0x82, 0x81, - 0x81, 0x83, 0x83, 0x81, 0x82, 0x83, 0x82, 0x82, 0x82, 0x84, 0x83, 0x82, 0x84, 0x85, 0x83, 0x81, - 0x80, 0x82, 0x80, 0x80, 0x83, 0x81, 0x81, 0x80, 0x7d, 0x80, 0x81, 0x7e, 0x7c, 0x7d, 0x7d, 0x7c, - 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7a, 0x7a, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, - 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, - 0x7c, 0x7a, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x81, 0x80, 0x7e, 0x81, - 0x83, 0x81, 0x81, 0x83, 0x83, 0x83, 0x81, 0x80, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x82, 0x82, 0x80, 0x81, 0x84, 0x83, 0x81, 0x82, 0x83, 0x83, 0x80, 0x81, 0x83, 0x82, 0x81, - 0x81, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x83, 0x82, 0x81, 0x82, 0x80, 0x80, 0x82, 0x82, 0x83, - 0x83, 0x81, 0x80, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, - 0x81, 0x81, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x7a, - 0x7b, 0x7a, 0x7a, 0x7b, 0x7c, 0x7a, 0x79, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x79, - 0x7a, 0x7b, 0x7b, 0x79, 0x7b, 0x7d, 0x7b, 0x7a, 0x7c, 0x7c, 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x81, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, - 0x7e, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x82, 0x83, - 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x81, - 0x82, 0x83, 0x84, 0x84, 0x82, 0x82, 0x82, 0x81, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, - 0x82, 0x81, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x81, - 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x81, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x7d, 0x7e, 0x7e, 0x7c, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, - 0x80, 0x80, 0x81, 0x80, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7c, - 0x7d, 0x7d, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7a, - 0x7a, 0x7a, 0x7a, 0x7b, 0x7a, 0x79, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x80, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x82, 0x81, 0x80, 0x81, 0x83, 0x84, 0x83, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84, 0x83, - 0x83, 0x84, 0x83, 0x84, 0x85, 0x85, 0x84, 0x84, 0x85, 0x84, 0x84, 0x85, 0x84, 0x83, 0x84, 0x85, - 0x85, 0x84, 0x84, 0x85, 0x85, 0x82, 0x80, 0x82, 0x82, 0x80, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x7e, 0x7c, 0x7e, 0x7e, 0x7d, - 0x7c, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7a, 0x79, 0x79, 0x7c, 0x7c, 0x7c, 0x7b, - 0x7b, 0x7c, 0x7b, 0x7a, 0x7b, 0x7c, 0x7b, 0x7a, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7b, 0x7c, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x81, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x81, 0x83, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, - 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x83, 0x84, 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, - 0x84, 0x83, 0x83, 0x83, 0x81, 0x82, 0x83, 0x81, 0x81, 0x82, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x80, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, - 0x80, 0x81, 0x7d, 0x7d, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x81, - 0x80, 0x80, 0x7e, 0x80, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x81, 0x80, 0x82, 0x81, 0x80, 0x81, 0x80, - 0x80, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7a, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, - 0x81, 0x82, 0x81, 0x81, 0x83, 0x83, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x82, 0x81, 0x80, 0x7e, 0x80, - 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, - 0x82, 0x82, 0x83, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x80, 0x82, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x82, 0x81, 0x82, 0x82, 0x81, 0x7e, 0x80, 0x81, 0x80, 0x7d, - 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, - 0x7a, 0x79, 0x7b, 0x7b, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x83, 0x81, 0x82, 0x83, - 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x84, 0x84, 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x82, - 0x83, 0x84, 0x84, 0x83, 0x83, 0x84, 0x82, 0x81, 0x83, 0x84, 0x84, 0x82, 0x81, 0x83, 0x83, 0x82, - 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x82, 0x82, 0x83, 0x82, 0x7e, 0x7e, - 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, - 0x7b, 0x7c, 0x7d, 0x80, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7d, - 0x7d, 0x7e, 0x80, 0x81, 0x80, 0x7d, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x80, 0x7e, 0x81, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x80, 0x80, 0x7d, 0x7e, - 0x81, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x82, 0x81, 0x81, 0x82, - 0x80, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7b, 0x7d, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x80, 0x7e, 0x81, 0x82, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x82, 0x83, 0x83, 0x82, 0x83, - 0x82, 0x82, 0x84, 0x84, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x84, 0x84, 0x84, 0x84, 0x83, - 0x84, 0x84, 0x82, 0x82, 0x83, 0x81, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7c, 0x7d, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7a, 0x7a, 0x7b, - 0x7a, 0x7a, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, - 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, - 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x81, 0x83, 0x82, - 0x82, 0x82, 0x82, 0x80, 0x80, 0x82, 0x82, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7d, 0x7c, 0x7e, 0x7e, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x83, - 0x84, 0x83, 0x82, 0x83, 0x82, 0x81, 0x81, 0x82, 0x82, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, - 0x83, 0x83, 0x82, 0x83, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x82, 0x82, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7a, 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, - 0x7b, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7b, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x83, 0x82, 0x81, 0x81, - 0x83, 0x83, 0x84, 0x83, 0x82, 0x83, 0x83, 0x82, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x82, 0x83, 0x84, 0x84, 0x83, 0x82, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7d, 0x7d, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x83, - 0x82, 0x81, 0x81, 0x81, 0x82, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, - 0x7b, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, - 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x84, 0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, - 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, - 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, 0x82, - 0x82, 0x82, 0x83, 0x83, 0x82, 0x80, 0x81, 0x82, 0x82, 0x83, 0x83, 0x83, 0x82, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, - 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7c, 0x7d, 0x7c, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, - 0x82, 0x81, 0x82, 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x82, - 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x81, 0x81, 0x80, 0x7e, - 0x80, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, - 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, - 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, - 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7a, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x83, 0x84, 0x83, 0x83, 0x84, - 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, - 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, - 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x83, 0x82, - 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x81, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7d, - 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7e, 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, - 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7c, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x81, 0x80, - 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, - 0x81, 0x81, 0x81, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x83, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x83, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x80, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7c, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, - 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, - 0x81, 0x81, 0x81, 0x80, 0x7e, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x80, 0x7e, 0x7d, 0x7e, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, - 0x80, 0x81, 0x82, 0x81, 0x82, 0x82, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, - 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x80, 0x81, 0x81, - 0x80, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x82, - 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, - 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, - 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, - 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x82, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x82, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7c, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7b, 0x7b, - 0x7b, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7c, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, - 0x7d, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x82, 0x82, 0x81, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7c, 0x7d, 0x7c, 0x7d, 0x7d, 0x7d, 0x7c, - 0x7c, 0x7c, 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, - 0x81, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, 0x82, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x7e, 0x80, - 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7c, 0x7c, 0x7d, - 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, - 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, - 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, - 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x7f, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, - 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x7e, 0x7f, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, - 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, - 0x80, 0x81, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, - 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7e, 0x7e, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, - 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7d, 0x7d, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x7e, 0x80, 0x80, - 0x7e, 0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x80, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x80, 0x80, 0x80, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x80, 0x7e, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7e, 0x7e, 0x80, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -}; diff --git a/components/driver/test/dac_dma_test/test_esp32s2.c b/components/driver/test/dac_dma_test/test_esp32s2.c deleted file mode 100644 index 9b44acd095..0000000000 --- a/components/driver/test/dac_dma_test/test_esp32s2.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* - Tests for the dac device driver on ESP32-S2 only -*/ -#include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32S2 - -#include "esp_system.h" -#include "esp_intr_alloc.h" -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/queue.h" -#include "driver/adc.h" -#include "driver/rtc_io.h" -#include "driver/gpio.h" -#include "unity.h" -#include "esp_system.h" -#include "esp_event.h" -#include "esp_wifi.h" -#include "esp_log.h" -#include "nvs_flash.h" -#include "test_utils.h" -#include "soc/soc.h" -#include "soc/spi_reg.h" -#include "soc/adc_periph.h" -#include "soc/dac_periph.h" -#include "soc/spi_periph.h" -#include "test/test_common_adc.h" -#include "driver/dac.h" -#include "soc/system_reg.h" -#include "esp32s2/rom/lldesc.h" -#include "test/test_adc_dac_dma.h" - -/******************************************************** - * This test is left for testing the legacy DAC-DMA APIs - *******************************************************/ -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - -static const char *TAG = "test_adc"; - -#define PLATFORM_SELECT (1) //0: pxp; 1: chip -#if (PLATFORM_SELECT == 0) //PXP platform -#include "soc/apb_ctrl_reg.h" -#define SET_BREAK_POINT(flag) REG_WRITE(APB_CTRL_DATE_REG, flag) -//PXP clk is slower. -#define SYS_DELAY_TIME_MOM (1/40) -#define RTC_SLOW_CLK_FLAG 1 // Slow clock is 32KHz. -static void test_pxp_deinit_io(void) -{ - for (int i = 0; i < 22; i++) { - rtc_gpio_init(i); - } -} -#else -//PXP clk is slower. -#define SET_BREAK_POINT(flag) -#define SYS_DELAY_TIME_MOM (1) -#define RTC_SLOW_CLK_FLAG 0 // Slow clock is 32KHz. -#endif - -#define SAR_SIMPLE_NUM 512 // Set out number of enabled unit. - -typedef struct dma_msg { - uint32_t int_msk; - uint8_t *data; - uint32_t data_len; -} dac_dma_event_t; - -static QueueHandle_t que_dac = NULL; -static uint8_t link_buf[2][SAR_SIMPLE_NUM*2] = {0}; -static lldesc_t dma1 = {0}; -static lldesc_t dma2 = {0}; - -/*******************************************/ -/** DAC-DMA INIT CODE */ -/*******************************************/ - -/** - * DMA liner initialization and start. - * @param is_loop - * - true: The two dma linked lists are connected end to end, with no end mark (eof). - * - false: The two dma linked lists are connected end to end, with end mark (eof). - * @param int_mask DMA interrupt types. - */ -uint32_t dac_dma_linker_init(bool is_alter, bool is_loop) -{ - /* The DAC output is a sawtooth wave. */ - if (is_alter) { - for(int i=0; i> %s - dac mode %d<< ", __func__, mode); - - dac_dma_event_t evt; - - dac_digi_init(); - const dac_digi_config_t cfg = { - .mode = mode, - .interval = 100, - .dig_clk.use_apll = false, // APB clk - .dig_clk.div_num = 79, - .dig_clk.div_b = 1, - .dig_clk.div_a = 0, - }; - dac_digi_controller_config(&cfg); - dac_output_enable(DAC_CHANNEL_1); - dac_output_enable(DAC_CHANNEL_2); - - /* DAC-DMA linker init */ - if (que_dac == NULL) { - que_dac = xQueueCreate(5, sizeof(dac_dma_event_t)); - } else { - xQueueReset(que_dac); - } - uint32_t int_mask = SPI_OUT_DONE_INT_ENA | SPI_OUT_EOF_INT_ENA | SPI_OUT_TOTAL_EOF_INT_ENA; - uint32_t dma_addr = dac_dma_linker_init(mode, false); - adc_dac_dma_isr_register(dac_dma_isr, NULL, int_mask); - adc_dac_dma_linker_start(DMA_ONLY_DAC_OUTLINK, (void *)dma_addr, int_mask); - - /* ADC-DMA start output */ - dac_digi_start(); - - /* Check interrupt type */ - while (int_mask) { - TEST_ASSERT_EQUAL( xQueueReceive(que_dac, &evt, 2000 / portTICK_RATE_MS), pdTRUE ); - ESP_LOGI(TAG, "DAC-DMA intr type 0x%x", evt.int_msk); - if (evt.int_msk & int_mask) { - int_mask &= (~evt.int_msk); - } - } - - ESP_LOGI(TAG, "DAC-DMA intr test over"); - adc_dac_dma_linker_deinit(); - adc_dac_dma_isr_deregister(dac_dma_isr, NULL); - TEST_ESP_OK( dac_digi_deinit() ); -} - -TEST_CASE("DAC-DMA interrupt test", "[dac]") -{ - test_dac_dig_dma_intr_check(DAC_CONV_NORMAL); - test_dac_dig_dma_intr_check(DAC_CONV_ALTER); -} - -/*******************************************/ -/** SPI DMA INIT CODE */ -/*******************************************/ - -#include "sys/queue.h" -static bool adc_dac_dma_isr_flag = false; - -/*--------------------------------------------------------------- - INTERRUPT HANDLER ----------------------------------------------------------------*/ - -typedef struct adc_dac_dma_isr_handler_ { - uint32_t mask; - intr_handler_t handler; - void* handler_arg; - SLIST_ENTRY(adc_dac_dma_isr_handler_) next; -} adc_dac_dma_isr_handler_t; - -static SLIST_HEAD(adc_dac_dma_isr_handler_list_, adc_dac_dma_isr_handler_) s_adc_dac_dma_isr_handler_list = - SLIST_HEAD_INITIALIZER(s_adc_dac_dma_isr_handler_list); -portMUX_TYPE s_isr_handler_list_lock = portMUX_INITIALIZER_UNLOCKED; -static intr_handle_t s_adc_dac_dma_isr_handle; - -static IRAM_ATTR void adc_dac_dma_isr_default(void* arg) -{ - uint32_t status = REG_READ(SPI_DMA_INT_ST_REG(3)); - adc_dac_dma_isr_handler_t* it; - portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); - SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { - if (it->mask & status) { - portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); - (*it->handler)(it->handler_arg); - portENTER_CRITICAL_ISR(&s_isr_handler_list_lock); - } - } - portEXIT_CRITICAL_ISR(&s_isr_handler_list_lock); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), status); -} - -static esp_err_t adc_dac_dma_isr_ensure_installed(void) -{ - esp_err_t err = ESP_OK; - portENTER_CRITICAL(&s_isr_handler_list_lock); - if (s_adc_dac_dma_isr_handle) { - goto out; - } - REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), UINT32_MAX); - err = esp_intr_alloc(ETS_SPI3_DMA_INTR_SOURCE, 0, &adc_dac_dma_isr_default, NULL, &s_adc_dac_dma_isr_handle); - if (err != ESP_OK) { - goto out; - } - -out: - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return err; -} - -esp_err_t adc_dac_dma_isr_register(intr_handler_t handler, void* handler_arg, uint32_t intr_mask) -{ - esp_err_t err = adc_dac_dma_isr_ensure_installed(); - if (err != ESP_OK) { - return err; - } - - adc_dac_dma_isr_handler_t* item = malloc(sizeof(*item)); - if (item == NULL) { - return ESP_ERR_NO_MEM; - } - item->handler = handler; - item->handler_arg = handler_arg; - item->mask = intr_mask; - portENTER_CRITICAL(&s_isr_handler_list_lock); - SLIST_INSERT_HEAD(&s_adc_dac_dma_isr_handler_list, item, next); - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return ESP_OK; -} - -esp_err_t adc_dac_dma_isr_deregister(intr_handler_t handler, void* handler_arg) -{ - adc_dac_dma_isr_handler_t* it; - adc_dac_dma_isr_handler_t* prev = NULL; - bool found = false; - portENTER_CRITICAL(&s_isr_handler_list_lock); - SLIST_FOREACH(it, &s_adc_dac_dma_isr_handler_list, next) { - if (it->handler == handler && it->handler_arg == handler_arg) { - if (it == SLIST_FIRST(&s_adc_dac_dma_isr_handler_list)) { - SLIST_REMOVE_HEAD(&s_adc_dac_dma_isr_handler_list, next); - } else { - SLIST_REMOVE_AFTER(prev, next); - } - found = true; - free(it); - break; - } - prev = it; - } - portEXIT_CRITICAL(&s_isr_handler_list_lock); - return found ? ESP_OK : ESP_ERR_INVALID_STATE; -} - -void adc_dac_dma_linker_start(spi_dma_link_type_t type, void *dma_addr, uint32_t int_msk) -{ - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_APB_SARADC_CLK_EN_M); - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_DMA_CLK_EN_M); - REG_SET_BIT(DPORT_PERIP_CLK_EN_REG, DPORT_SPI3_CLK_EN); - REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_DMA_RST_M); - REG_CLR_BIT(DPORT_PERIP_RST_EN_REG, DPORT_SPI3_RST_M); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); - REG_WRITE(SPI_DMA_INT_ENA_REG(3), int_msk | REG_READ(SPI_DMA_INT_ENA_REG(3))); - if (type & DMA_ONLY_ADC_INLINK) { - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - SET_PERI_REG_BITS(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_ADDR, (uint32_t)dma_addr, 0); - REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); - REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_IN_RST); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - } - if (type & DMA_ONLY_DAC_OUTLINK) { - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - SET_PERI_REG_BITS(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_ADDR, (uint32_t)dma_addr, 0); - REG_SET_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); - REG_CLR_BIT(SPI_DMA_CONF_REG(3), SPI_OUT_RST); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - } -} - -void adc_dac_dma_linker_stop(spi_dma_link_type_t type) -{ - if (type & DMA_ONLY_ADC_INLINK) { - REG_SET_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_STOP); - REG_CLR_BIT(SPI_DMA_IN_LINK_REG(3), SPI_INLINK_START); - } - if (type & DMA_ONLY_DAC_OUTLINK) { - REG_SET_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_STOP); - REG_CLR_BIT(SPI_DMA_OUT_LINK_REG(3), SPI_OUTLINK_START); - } -} - -void adc_dac_dma_linker_deinit(void) -{ - adc_dac_dma_linker_stop(DMA_BOTH_ADC_DAC); - REG_WRITE(SPI_DMA_INT_CLR_REG(3), 0xFFFFFFFF); - REG_WRITE(SPI_DMA_INT_ENA_REG(3), 0); - adc_dac_dma_isr_flag = false; -} - -/*******************************************/ -/** SPI DMA INIT CODE END */ -/*******************************************/ - -#endif // CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/driver/test/test_dac_dma.c b/components/driver/test/test_dac_dma.c deleted file mode 100644 index 89e60b2cca..0000000000 --- a/components/driver/test/test_dac_dma.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/* - Tests for the dac device driver on ESP32-S2 only -*/ -#include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32S2 - -#include "esp_system.h" -#include "esp_intr_alloc.h" -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/queue.h" -#include "driver/rtc_io.h" -#include "driver/gpio.h" -#include "unity.h" -#include "esp_system.h" -#include "esp_event.h" -#include "esp_wifi.h" -#include "esp_log.h" -#include "nvs_flash.h" -#include "test_utils.h" -#include "soc/soc.h" -#include "soc/spi_reg.h" -#include "soc/adc_periph.h" -#include "soc/dac_periph.h" -#include "soc/spi_periph.h" -#include "test/test_common_adc.h" -#include "driver/dac.h" -#include "soc/system_reg.h" -#include "esp32s2/rom/lldesc.h" -#include "test/test_adc_dac_dma.h" -#include "soc/apb_ctrl_reg.h" -#include "math.h" - -static const char *TAG = "test_adc"; - -#define PLATFORM_SELECT (1) //0: pxp; 1: chip -#if (PLATFORM_SELECT == 0) //PXP platform -#include "soc/syscon_reg.h" -#define SET_BREAK_POINT(flag) REG_WRITE(SYSCON_DATE_REG, flag) -//PXP clk is slower. -#define SYS_DELAY_TIME_MOM (1/40) -#define RTC_SLOW_CLK_FLAG 1 // Slow clock is 32KHz. -static void test_pxp_deinit_io(void) -{ - for (int i = 0; i < 22; i++) { - rtc_gpio_init(i); - } -} -#else -//PXP clk is slower. -#define SET_BREAK_POINT(flag) -#define SYS_DELAY_TIME_MOM (1) -#define RTC_SLOW_CLK_FLAG 0 // Slow clock is 32KHz. -#endif - -#define SAR_SIMPLE_NUM 512 // Set out number of enabled unit. - -static const char *TAG = "test_adc"; - -/*******************************************/ -/** DAC-DMA INIT CODE */ -/*******************************************/ -#define PI 3.14159265 -static uint8_t _buf[512]; -void dac_dma_test_create_buffer(dac_digi_convert_mode_t mode) -{ - if (mode == DAC_CONV_ALTER) { - for(int i=0; i < 256; i++) { - if (i % 2 != 0) { - _buf[i] = i % 256; - } else { - _buf[i] = 255*(sin(i * PI / 255) + 1)/2; - } - - } - for (int i=256;i < 512; i++) { - if (i % 2 != 0) { - _buf[i] = 255 - i % 256; - } else { - _buf[i] = 255*(sin((i-256) * PI / 255 - PI)+1)/2; - } - - } - } else { - for(int i=0; i < 256; i++) { - _buf[i] = i % 256; - } - for (int i=256;i < 512; i++) { - _buf[i] = 255 - i % 256; - } - } -} - -/** - * Testcase: Check the interrupt types of DAC-DMA. - */ -void test_dac_dma(dac_digi_convert_mode_t mode) -{ - ESP_LOGI(TAG, " >> %s - dac mode %d<< ", __func__, mode); - - const dac_digi_init_config_t cfg = { - .mode = mode, - .dac_chan_msk = BIT(DAC_CHANNEL_1) | BIT(DAC_CHANNEL_2), - .interval = 100, - .dac_dma_cnt = 4, - .dac_dma_length = 128, - .dac_dma_link_type = DAC_DMA_LINK_RECURSIVE, - }; - dac_digi_initialize(&cfg); - - dac_dma_test_create_buffer(mode); - dac_digi_start(); - uint32_t length = sizeof(_buf); - dac_digi_write_bytes(length, (uint8_t*)_buf, portMAX_DELAY); - // /* Check interrupt type */ - - ESP_LOGI(TAG, "DAC-DMA intr test over"); - dac_digi_stop(); - dac_digi_deinitialize(); -} - -TEST_CASE("DAC with DMA test", "[dac]") -{ - test_dac_dma(DAC_CONV_NORMAL); - test_dac_dma(DAC_CONV_ALTER); -} - -/** ADC-DMA ISR handler. */ -static IRAM_ATTR void dac_dma_isr(void * arg) -{ - uint32_t int_st = REG_READ(SPI_DMA_INT_ST_REG(3)); - int task_awoken = pdFALSE; - dac_dma_event_t adc_evt; - adc_evt.int_msk = int_st; - REG_WRITE(SPI_DMA_INT_CLR_REG(3), int_st); - xQueueSendFromISR(que_dac, &adc_evt, &task_awoken); - ESP_EARLY_LOGV(TAG, "int msk%x, raw%x", int_st, REG_READ(SPI_DMA_INT_RAW_REG(3))); - - if (task_awoken == pdTRUE) { - portYIELD_FROM_ISR(); - } -} - -/** - * Testcase: Check the interrupt types of DAC-DMA. - */ -void test_dac_dig_dma_intr_check_legacy(dac_digi_convert_mode_t mode) -{ - ESP_LOGI(TAG, " >> %s - dac mode %d<< ", __func__, mode); - - dac_dma_event_t evt; - - dac_digi_init(); - const dac_digi_config_t cfg = { - .mode = mode, - .interval = 100, - .dig_clk.use_apll = false, // APB clk - .dig_clk.div_num = 79, - .dig_clk.div_b = 1, - .dig_clk.div_a = 0, - }; - dac_digi_controller_config(&cfg); - dac_output_enable(DAC_CHANNEL_1); - dac_output_enable(DAC_CHANNEL_2); - - /* DAC-DMA linker init */ - if (que_dac == NULL) { - que_dac = xQueueCreate(5, sizeof(dac_dma_event_t)); - } else { - xQueueReset(que_dac); - } - uint32_t int_mask = SPI_OUT_DONE_INT_ENA | SPI_OUT_EOF_INT_ENA | SPI_OUT_TOTAL_EOF_INT_ENA; - uint32_t dma_addr = dac_dma_linker_init(mode, false); - adc_dac_dma_isr_register(dac_dma_isr, NULL, int_mask); - adc_dac_dma_linker_start(DMA_ONLY_DAC_OUTLINK, (void *)dma_addr, int_mask); - - /* ADC-DMA start output */ - dac_digi_start(); - - /* Check interrupt type */ - while (int_mask) { - TEST_ASSERT_EQUAL( xQueueReceive(que_dac, &evt, 2000 / portTICK_PERIOD_MS), pdTRUE ); - ESP_LOGI(TAG, "DAC-DMA intr type 0x%x", evt.int_msk); - if (evt.int_msk & int_mask) { - int_mask &= (~evt.int_msk); - } - } - - ESP_LOGI(TAG, "DAC-DMA intr test over"); - adc_dac_dma_linker_deinit(); - adc_dac_dma_isr_deregister(dac_dma_isr, NULL); - TEST_ESP_OK( dac_digi_deinit() ); -} - -TEST_CASE("DAC-DMA interrupt test(legacy api)", "[dac]") -{ - test_dac_dig_dma_intr_check_legacy(DAC_CONV_NORMAL); - test_dac_dig_dma_intr_check_legacy(DAC_CONV_ALTER); -} - -#endif // DAC_DMA_LEGACY_IMPL - -#endif // CONFIG_IDF_TARGET_ESP32S2 diff --git a/components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt new file mode 100644 index 0000000000..465309e6fb --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/CMakeLists.txt @@ -0,0 +1,18 @@ +# This is the project CMakeLists.txt file for the test subproject +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_test) + +if(CONFIG_COMPILER_DUMP_RTL_FILES) + add_custom_target(check_test_app_sections ALL + COMMAND ${PYTHON} $ENV{IDF_PATH}/tools/ci/check_callgraph.py + --rtl-dir ${CMAKE_BINARY_DIR}/esp-idf/driver/ + --elf-file ${CMAKE_BINARY_DIR}/dac_test.elf + find-refs + --from-sections=.iram0.text + --to-sections=.flash.text,.flash.rodata + --exit-code + DEPENDS ${elf} + ) +endif() diff --git a/components/driver/test_apps/dac_test_apps/dac/README.md b/components/driver/test_apps/dac_test_apps/dac/README.md new file mode 100644 index 0000000000..ac8bb22c88 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/README.md @@ -0,0 +1,2 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | diff --git a/components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt new file mode 100644 index 0000000000..7c837283f1 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/CMakeLists.txt @@ -0,0 +1,11 @@ +set(srcs "test_app_main.c" + "test_dac.c") + +if(CONFIG_DAC_ISR_IRAM_SAFE) + list(APPEND srcs "test_dac_iram.c") +endif() + +# In order for the cases defined by `TEST_CASE` to be linked into the final elf, +# the component can be registered as WHOLE_ARCHIVE +idf_component_register(SRCS ${srcs} + WHOLE_ARCHIVE) diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c b/components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c new file mode 100644 index 0000000000..ef64d8838d --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_app_main.c @@ -0,0 +1,54 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "unity.h" +#include "unity_test_runner.h" +#include "esp_heap_caps.h" + +// Some resources are lazy allocated in gpio/dedicated_gpio/delta_sigma driver, the threshold is left for that case +#define TEST_MEMORY_LEAK_THRESHOLD (-400) + +static size_t before_free_8bit; +static size_t before_free_32bit; + +static void check_leak(size_t before_free, size_t after_free, const char *type) +{ + ssize_t delta = after_free - before_free; + printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta); + TEST_ASSERT_MESSAGE(delta >= TEST_MEMORY_LEAK_THRESHOLD, "memory leak"); +} + +void setUp(void) +{ + before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); +} + +void tearDown(void) +{ + size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); + check_leak(before_free_8bit, after_free_8bit, "8BIT"); + check_leak(before_free_32bit, after_free_32bit, "32BIT"); +} + +void app_main(void) +{ + + // ____ _ ____ _____ _ + // | _ \ / \ / ___| |_ _|__ ___| |_ + // | | | |/ _ \| | | |/ _ \/ __| __| + // | |_| / ___ \ |___ | | __/\__ \ |_ + // |____/_/ \_\____| |_|\___||___/\__| + + printf(" ____ _ ____ _____ _ \n"); + printf(" | _ \\ / \\ / ___| |_ _|__ ___| |_ \n"); + printf(" | | | |/ _ \\| | | |/ _ \\/ __| __|\n"); + printf(" | |_| / ___ \\ |___ | | __/\\__ \\ |_ \n"); + printf(" |____/_/ \\_\\____| |_|\\___||___/\\__|\n"); + + unity_run_menu(); +} diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c b/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c new file mode 100644 index 0000000000..5f16e17335 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_dac.c @@ -0,0 +1,368 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "unity.h" +#include "unity_test_utils.h" +#include "driver/dac_driver.h" +#include "driver/adc.h" +#include "esp_err.h" +#if CONFIG_IDF_TARGET_ESP32 +#include "esp_private/i2s_platform.h" +// Following headers are used to test the conversion frequency +#include "soc/i2s_periph.h" +#include "hal/gpio_hal.h" +#include "driver/pulse_cnt.h" +#include "soc/pcnt_periph.h" +#elif CONFIG_IDF_TARGET_ESP32S2 +#include "esp_private/spi_common_internal.h" +#endif + +#if CONFIG_IDF_TARGET_ESP32 +#define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define ADC_TEST_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define ADC_TEST_WIDTH ADC_WIDTH_BIT_13 +#endif + +#define ADC_TEST_ATTEN ADC_ATTEN_DB_11 + +TEST_CASE("DAC_API_basic_logic_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .freq_hz = 20000, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + }; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + /* Constant API test */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_set_voltage(handle, 100)); + TEST_ESP_OK(dac_channels_disable(handle)); + + /* DMA API test */ + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ASSERT(dac_channels_enable_continuous_mode(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + TEST_ASSERT(dac_channels_disable(handle) == ESP_ERR_INVALID_STATE); + TEST_ASSERT(dac_channels_deinit_continuous_mode(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + + /* Cosine wave API test */ + TEST_ESP_OK(dac_channels_init_cosine_mode(handle, &cos_cfg)); + TEST_ASSERT(dac_del_channels(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_start_cosine_output(handle)); + TEST_ASSERT(dac_channels_disable(handle) == ESP_ERR_INVALID_STATE); + TEST_ESP_OK(dac_channels_stop_cosine_output(handle)); + TEST_ESP_OK(dac_channels_deinit_cosine_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + /* DMA peripheral availability test */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); +#if CONFIG_IDF_TARGET_ESP32 + TEST_ESP_OK(i2s_platform_acquire_occupation(0, "dac_test")); +#elif CONFIG_IDF_TARGET_ESP32S2 + TEST_ASSERT(spicommon_periph_claim(SPI3_HOST, "dac_test")); +#endif + TEST_ASSERT(dac_channels_init_continuous_mode(handle, &dma_cfg) == ESP_ERR_NOT_FOUND); +#if CONFIG_IDF_TARGET_ESP32 + TEST_ESP_OK(i2s_platform_release_occupation(0)); +#elif CONFIG_IDF_TARGET_ESP32S2 + TEST_ASSERT(spicommon_periph_free(SPI3_HOST)); +#endif + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} + +TEST_CASE("DAC_memory_leak_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + /* Some resources will be lazy installed, ignore the first around */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + int initial_size = esp_get_free_heap_size(); + printf("Initial free heap size: %d\n", initial_size); + for (int i = 0; i < 20; i++) { + printf("# %d: ---------------------------------\n", i + 1); + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + printf("current heap size: %d\n", esp_get_free_heap_size()); + TEST_ASSERT(initial_size == esp_get_free_heap_size()); + } + vTaskDelay(100 / portTICK_PERIOD_MS); + TEST_ASSERT(initial_size == esp_get_free_heap_size()); +} + +TEST_CASE("DAC_set_voltage_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + + /* Prepare ADC2 */ + TEST_ESP_OK(adc2_config_channel_atten(ADC_TEST_CHANNEL_NUM, ADC_TEST_ATTEN)); + + int curr_adc = 0; + int last_adc = 0; + for (uint8_t i = 0; i <= 200; i += 20) { + TEST_ESP_OK(dac_channels_set_voltage(handle, i)); + vTaskDelay(pdMS_TO_TICKS(20)); + TEST_ESP_OK(adc2_get_raw(ADC_TEST_CHANNEL_NUM, ADC_TEST_WIDTH, &curr_adc)); + printf("DAC: %d - ADC: %d\n", i, curr_adc); + if (last_adc != 0) { + TEST_ASSERT_GREATER_THAN(last_adc, curr_adc); + } + last_adc = curr_adc; + } + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} + +TEST_CASE("DAC_dma_write_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + uint8_t *data = (uint8_t *)calloc(1, 2000); + TEST_ASSERT(data); + for (int i = 0; i < 2000; i++) { + data[i] = i % 256; + } + + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + + TEST_ESP_OK(dac_channels_write_continuously(handle, data, 2000, NULL, 1000)); + vTaskDelay(pdMS_TO_TICKS(200)); + TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + free(data); +} + +/* Test the conversion frequency by counting the pulse of WS signal + * The frequency test is currently only supported on ESP32 + * because there is no such signal to monitor on ESP32-S2 */ +#if CONFIG_IDF_TARGET_ESP32 +TEST_CASE("DAC_dma_conver_frequency_test", "[dac]") +{ + /* Prepare configuration for the PCNT unit */ + pcnt_unit_handle_t pcnt_unit = NULL; + pcnt_channel_handle_t pcnt_chan = NULL; + + pcnt_unit_config_t unit_config = { + .high_limit = (int16_t)0x7fff, + .low_limit = (int16_t)0x8000, + }; + pcnt_chan_config_t chan_config = { + .edge_gpio_num = GPIO_NUM_4, + .level_gpio_num = -1, + }; + TEST_ESP_OK(pcnt_new_unit(&unit_config, &pcnt_unit)); + TEST_ESP_OK(pcnt_unit_set_glitch_filter(pcnt_unit, NULL)); + TEST_ESP_OK(pcnt_new_channel(pcnt_unit, &chan_config, &pcnt_chan)); + TEST_ESP_OK(pcnt_channel_set_edge_action(pcnt_chan, PCNT_CHANNEL_EDGE_ACTION_INCREASE, PCNT_CHANNEL_EDGE_ACTION_HOLD)); + TEST_ESP_OK(pcnt_channel_set_level_action(pcnt_chan, PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_KEEP)); + TEST_ESP_OK(pcnt_unit_enable(pcnt_unit)); + + // Connect the clock signal to pcnt input signal + gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[GPIO_NUM_4], PIN_FUNC_GPIO); + gpio_set_direction(GPIO_NUM_4, GPIO_MODE_INPUT_OUTPUT); + // The DAC conversion frequency is equal to I2S bclk. + esp_rom_gpio_connect_out_signal(GPIO_NUM_4, i2s_periph_signal[0].m_tx_ws_sig, 0, 0); + esp_rom_gpio_connect_in_signal(GPIO_NUM_4, pcnt_periph_signals.groups[0].units[0].channels[0].pulse_sig, 0); + + uint8_t *data = (uint8_t *)calloc(1, 2000); + TEST_ASSERT(data); + + /* Register DAC DMA using PLL */ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + + /* Initialize DAC to test default PLL clock */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + /* Start transmitting data on line */ + TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + + int expt_pulse = 2000; + int real_pulse; + /* Count pulse by PCNT */ + TEST_ESP_OK(pcnt_unit_clear_count(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_start(pcnt_unit)); + vTaskDelay(pdMS_TO_TICKS(100)); + TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_get_count(pcnt_unit, &real_pulse)); + /* Delete DAC handle */ + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + printf("[PLL | 20000 Hz] %d pulses, expected %d, err %d\n", real_pulse, expt_pulse, real_pulse - expt_pulse); + TEST_ASSERT_INT_WITHIN(expt_pulse * 0.01, expt_pulse, real_pulse); + + dma_cfg.clk_src = DAC_DIGI_CLK_SRC_APLL; + /* Initialize DAC to test APLL clock */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + /* Start transmitting data on line */ + TEST_ESP_OK(dac_channels_write_cyclically(handle, data, 2000, NULL, 1000)); + + /* Count pulse by PCNT */ + TEST_ESP_OK(pcnt_unit_clear_count(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_start(pcnt_unit)); + vTaskDelay(pdMS_TO_TICKS(100)); + TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_get_count(pcnt_unit, &real_pulse)); + /* Delete DAC handle */ + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + + printf("[APLL | 20000 Hz] %d pulses, expected %d, err %d\n", real_pulse, expt_pulse, real_pulse - expt_pulse); + TEST_ASSERT_INT_WITHIN(expt_pulse * 0.01, expt_pulse, real_pulse); + free(data); + /* Free PCNT */ + TEST_ESP_OK(pcnt_del_channel(pcnt_chan)); + TEST_ESP_OK(pcnt_unit_stop(pcnt_unit)); + TEST_ESP_OK(pcnt_unit_disable(pcnt_unit)); + TEST_ESP_OK(pcnt_del_unit(pcnt_unit)); +} +#endif + +TEST_CASE("DAC_cosine_wave_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_cosine_mode(handle, &cos_cfg)); + TEST_ESP_OK(dac_channels_start_cosine_output(handle)); + + vTaskDelay(pdMS_TO_TICKS(200)); + + TEST_ESP_OK(dac_channels_stop_cosine_output(handle)); + TEST_ESP_OK(dac_channels_deinit_cosine_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} + +static volatile bool task_run_flag; + +static void dac_acyclicly_write_task(void *arg) +{ + dac_channels_handle_t dac_handle = (dac_channels_handle_t)arg; + uint8_t buf[1000]; + for (int i = 0; i < 1000; i++) { + buf[i] = i % 256; + } + while (task_run_flag) { + if (dac_channels_write_continuously(dac_handle, buf, 100, NULL, 1000) == ESP_OK) { + printf("DAC write data success\n"); + } + vTaskDelay(20); + } + vTaskDelete(NULL); +} + +TEST_CASE("DAC_DMA_thread_safe", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_CH0}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + task_run_flag = true; + xTaskCreate(dac_acyclicly_write_task, "dac_acyclicly_write_task", 4096, handle, 5, NULL); + + for (int i = 0; i < 5; i++) { + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + printf("DAC stopped\n"); + vTaskDelay(pdMS_TO_TICKS(100)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + printf("DAC started\n"); + vTaskDelay(pdMS_TO_TICKS(300)); + } + task_run_flag = false; + vTaskDelay(pdMS_TO_TICKS(100)); + + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); +} diff --git a/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c b/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c new file mode 100644 index 0000000000..98f571a1e3 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/main/test_dac_iram.c @@ -0,0 +1,70 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "unity.h" +#include "unity_test_utils.h" +#include "driver/dac_driver.h" +#include "esp_private/spi_flash_os.h" +#include "esp_heap_caps.h" +#include "esp_err.h" + +#define BUF_SIZE 2000 + +static void IRAM_ATTR test_dac_direct_set_safety(dac_channels_handle_t handle) +{ + spi_flash_guard_get()->start(); + dac_channels_set_voltage(handle, 128); + spi_flash_guard_get()->end(); +} + +static void IRAM_ATTR test_dac_dma_iram_safety(dac_channels_handle_t handle, uint8_t *data, uint32_t len) +{ + spi_flash_guard_get()->start(); + // Change the data of DMA + for (int i = 0; i < len; i++) { + data[i] = i % 100; + } + spi_flash_guard_get()->end(); +} + +TEST_CASE("DAC_IRAM_safe_test", "[dac]") +{ + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 40000, + }; + + /* Real data in internal memory */ + uint8_t *data = (uint8_t *)heap_caps_calloc(1, BUF_SIZE, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + TEST_ASSERT(data); + for (int i = 0; i < BUF_SIZE; i++) { + data[i] = i % 256; + } + /* Get ready for dma transmition */ + TEST_ESP_OK(dac_new_channels(&cfg, &handle)); + TEST_ESP_OK(dac_channels_enable(handle)); + /* Test direct voltage setting safety */ + test_dac_direct_set_safety(handle); + + TEST_ESP_OK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + TEST_ESP_OK(dac_channels_enable_continuous_mode(handle)); + + /* Simulate cache off */ + dac_channels_write_cyclically(handle, data, BUF_SIZE, NULL, 1000); + test_dac_dma_iram_safety(handle, data, BUF_SIZE); + + /* Deregister DAC DMA channel group */ + TEST_ESP_OK(dac_channels_disable_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_deinit_continuous_mode(handle)); + TEST_ESP_OK(dac_channels_disable(handle)); + TEST_ESP_OK(dac_del_channels(handle)); + free(data); +} diff --git a/components/driver/test_apps/dac_test_apps/dac/pytest_dac.py b/components/driver/test_apps/dac_test_apps/dac/pytest_dac.py new file mode 100644 index 0000000000..f5d0c85fb2 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/pytest_dac.py @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +@pytest.mark.parametrize( + 'config', + [ + 'iram_safe', + 'release', + ], + indirect=True, +) +def test_dac(dut: Dut) -> None: + dut.expect_exact('Press ENTER to see the list of tests') + dut.write('*') + dut.expect_unity_test_output() diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe new file mode 100644 index 0000000000..2315dc6938 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.iram_safe @@ -0,0 +1,5 @@ +CONFIG_COMPILER_DUMP_RTL_FILES=y +CONFIG_DAC_ISR_IRAM_SAFE=y +CONFIG_DAC_CTRL_FUNC_IN_IRAM=y +# silent the error check, as the error string are stored in rodata, causing RTL check failure +CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release new file mode 100644 index 0000000000..91d93f163e --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.ci.release @@ -0,0 +1,5 @@ +CONFIG_PM_ENABLE=y +CONFIG_FREERTOS_USE_TICKLESS_IDLE=y +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y diff --git a/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults new file mode 100644 index 0000000000..a7d8d84efc --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/dac/sdkconfig.defaults @@ -0,0 +1,4 @@ +CONFIG_FREERTOS_HZ=1000 +CONFIG_ESP_TASK_WDT=n +# Disable this config, otherwise DAC will be disabled when ADC initialized +CONFIG_ADC_DISABLE_DAC=n diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt new file mode 100644 index 0000000000..2c3ca20b22 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/CMakeLists.txt @@ -0,0 +1,18 @@ +# This is the project CMakeLists.txt file for the test subproject +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_legacy_test) + +if(CONFIG_COMPILER_DUMP_RTL_FILES) + add_custom_target(check_test_app_sections ALL + COMMAND ${PYTHON} $ENV{IDF_PATH}/tools/ci/check_callgraph.py + --rtl-dir ${CMAKE_BINARY_DIR}/esp-idf/driver/ + --elf-file ${CMAKE_BINARY_DIR}/dac_legacy_test.elf + find-refs + --from-sections=.iram0.text + --to-sections=.flash.text,.flash.rodata + --exit-code + DEPENDS ${elf} + ) +endif() diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md new file mode 100644 index 0000000000..ac8bb22c88 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/README.md @@ -0,0 +1,2 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt new file mode 100644 index 0000000000..c34334492f --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/CMakeLists.txt @@ -0,0 +1,7 @@ +set(srcs "test_app_main.c" + "test_legacy_dac.c") + +# In order for the cases defined by `TEST_CASE` to be linked into the final elf, +# the component can be registered as WHOLE_ARCHIVE +idf_component_register(SRCS ${srcs} + WHOLE_ARCHIVE) diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c new file mode 100644 index 0000000000..3e67a65774 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_app_main.c @@ -0,0 +1,53 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "unity.h" +#include "unity_test_runner.h" +#include "esp_heap_caps.h" + +// Some resources are lazy allocated in dac driver, the threshold is left for that case +#define TEST_MEMORY_LEAK_THRESHOLD (-300) + +static size_t before_free_8bit; +static size_t before_free_32bit; + +static void check_leak(size_t before_free, size_t after_free, const char *type) +{ + ssize_t delta = after_free - before_free; + printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta); + TEST_ASSERT_MESSAGE(delta >= TEST_MEMORY_LEAK_THRESHOLD, "memory leak"); +} + +void setUp(void) +{ + before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); +} + +void tearDown(void) +{ + size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); + check_leak(before_free_8bit, after_free_8bit, "8BIT"); + check_leak(before_free_32bit, after_free_32bit, "32BIT"); +} + +void app_main(void) +{ + // ____ _ ____ _____ _ + // | _ \ / \ / ___| |_ _|__ ___| |_ + // | | | |/ _ \| | | |/ _ \/ __| __| + // | |_| / ___ \ |___ | | __/\__ \ |_ + // |____/_/ \_\____| |_|\___||___/\__| + + printf(" ____ _ ____ _____ _ \n"); + printf(" | _ \\ / \\ / ___| |_ _|__ ___| |_ \n"); + printf(" | | | |/ _ \\| | | |/ _ \\/ __| __|\n"); + printf(" | |_| / ___ \\ |___ | | __/\\__ \\ |_ \n"); + printf(" |____/_/ \\_\\____| |_|\\___||___/\\__| (legacy)\n"); + + unity_run_menu(); +} diff --git a/components/driver/test/test_dac.c b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c similarity index 91% rename from components/driver/test/test_dac.c rename to components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c index 9377039a74..30a22164d2 100644 --- a/components/driver/test/test_dac.c +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/main/test_legacy_dac.c @@ -9,17 +9,16 @@ #include "esp_system.h" #include "unity.h" +#include "unity_test_utils.h" #include "esp_system.h" #include "esp_event.h" #include "esp_wifi.h" #include "esp_log.h" #include "nvs_flash.h" -#include "test_utils.h" #include "soc/soc_caps.h" #define CONFIG_ADC_SUPPRESS_DEPRECATE_WARN 1 #include "driver/adc.h" -#if SOC_DAC_SUPPORTED #include "driver/dac.h" #include "esp_adc_cal.h" @@ -34,10 +33,10 @@ static const char *TAG = "test_dac"; #if CONFIG_IDF_TARGET_ESP32 #define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_8 // GPIO25 -#define DAC_TEST_CHANNEL_NUM DAC_CHANNEL_1 // GPIO25 +#define DAC_TEST_CHANNEL_NUM DAC_CHAN_0 // GPIO25 #elif CONFIG_IDF_TARGET_ESP32S2 #define ADC_TEST_CHANNEL_NUM ADC2_CHANNEL_6 // GPIO17 -#define DAC_TEST_CHANNEL_NUM DAC_CHANNEL_1 // GPIO17 +#define DAC_TEST_CHANNEL_NUM DAC_CHAN_0 // GPIO17 #endif #define DAC_OUT_MAX (200) @@ -46,7 +45,7 @@ static const char *TAG = "test_dac"; #define DAC_TEST_TIMES (100) -TEST_CASE("DAC output (RTC) check by adc", "[dac]") +TEST_CASE("DAC_output(RTC)_check_by_adc", "[dac_legacy]") { gpio_num_t adc_gpio_num, dac_gpio_num; @@ -72,7 +71,7 @@ TEST_CASE("DAC output (RTC) check by adc", "[dac]") output_data += DAC_OUT_STEP; vTaskDelay(2 * portTICK_PERIOD_MS); TEST_ESP_OK( adc2_get_raw( ADC_TEST_CHANNEL_NUM, ADC_TEST_WIDTH, &read_raw) ); - ESP_LOGI(TAG, "DAC%d - ADC%d", output_data, read_raw); + ESP_LOGI(TAG, "DAC: %d - ADC: %d", output_data, read_raw); if (read_old != 0) { TEST_ASSERT_GREATER_THAN(read_old, read_raw); } @@ -81,7 +80,7 @@ TEST_CASE("DAC output (RTC) check by adc", "[dac]") TEST_ESP_OK( dac_output_disable( DAC_TEST_CHANNEL_NUM ) ); } -TEST_CASE("DAC cw generator output (RTC) check by adc", "[dac]") +TEST_CASE("DAC_cw_generator_output(RTC)_check_by_adc", "[dac_legacy]") { gpio_num_t adc_gpio_num, dac_gpio_num; @@ -118,10 +117,6 @@ TEST_CASE("DAC cw generator output (RTC) check by adc", "[dac]") vTaskDelay(10 * portTICK_PERIOD_MS); TEST_ESP_OK( adc2_get_raw( ADC_TEST_CHANNEL_NUM, ADC_TEST_WIDTH, &read_raw[0]) ); ESP_LOGI(TAG, "ADC: %d", read_raw[0]); - /* Should open after dac cali. */ - // if (read_raw[0] == read_raw[1]) { - // TEST_ASSERT_NOT_EQUAL(read_raw[1], read_raw[2]); - // } read_raw[2] = read_raw[1]; read_raw[1] = read_raw[0]; } @@ -146,7 +141,7 @@ static bool subtest_adc_dac(int mV_ref, esp_adc_cal_characteristics_t * chars) return true; } -TEST_CASE("esp32s2 adc2-dac with adc2 calibration", "[adc-dac]") +TEST_CASE("esp32s2_adc2-dac_with_adc2_calibration", "[dac_legacy]") { gpio_num_t adc_gpio_num, dac_gpio_num; if (esp_adc_cal_check_efuse(ESP_ADC_CAL_VAL_EFUSE_TP) != ESP_OK) { @@ -187,5 +182,3 @@ TEST_CASE("esp32s2 adc2-dac with adc2 calibration", "[adc-dac]") subtest_adc_dac(2500, &chars); } #endif - -#endif // SOC_DAC_SUPPORTED diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py new file mode 100644 index 0000000000..bde3e8d188 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/pytest_legacy_dac.py @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +@pytest.mark.parametrize( + 'config', + [ + 'release', + ], + indirect=True, +) +def test_legacy_dac(dut: Dut) -> None: + dut.expect_exact('Press ENTER to see the list of tests') + dut.write('*') + dut.expect_unity_test_output() diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release new file mode 100644 index 0000000000..91d93f163e --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.ci.release @@ -0,0 +1,5 @@ +CONFIG_PM_ENABLE=y +CONFIG_FREERTOS_USE_TICKLESS_IDLE=y +CONFIG_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y diff --git a/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults new file mode 100644 index 0000000000..3a223bbed4 --- /dev/null +++ b/components/driver/test_apps/dac_test_apps/legacy_dac_driver/sdkconfig.defaults @@ -0,0 +1,4 @@ +CONFIG_FREERTOS_HZ=1000 +CONFIG_ESP_TASK_WDT=n +CONFIG_ADC_DISABLE_DAC=n +CONFIG_DAC_SUPPRESS_DEPRECATE_WARN=y diff --git a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c index b290bbe395..df6716c049 100644 --- a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c +++ b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/main/test_i2s_adc.c @@ -14,6 +14,7 @@ #include "driver/adc.h" #include "driver/rtc_io.h" #include "driver/gpio.h" +#include "soc/adc_periph.h" #include "unity.h" #include "esp_system.h" #include "esp_event.h" @@ -21,8 +22,6 @@ #include "esp_log.h" #include "nvs_flash.h" #include "esp_rom_sys.h" -#include "driver/dac.h" -#include "soc/adc_periph.h" /* * ADC DMA testcase diff --git a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults index 4295a349c9..ecbde05dc2 100644 --- a/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults +++ b/components/driver/test_apps/i2s_test_apps/legacy_i2s_adc_dac/sdkconfig.defaults @@ -1,4 +1,5 @@ CONFIG_I2S_SUPPRESS_DEPRECATE_WARN=y CONFIG_ADC_SUPPRESS_DEPRECATE_WARN=y +CONFIG_DAC_SUPPRESS_DEPRECATE_WARN=y CONFIG_I2S_ENABLE_DEBUG_LOG=y CONFIG_ESP_TASK_WDT=n diff --git a/components/hal/CMakeLists.txt b/components/hal/CMakeLists.txt index 8a9ffa9685..927ebb03d9 100644 --- a/components/hal/CMakeLists.txt +++ b/components/hal/CMakeLists.txt @@ -103,7 +103,6 @@ if(NOT BOOTLOADER_BUILD) if(${target} STREQUAL "esp32") list(APPEND srcs - "dac_hal.c" "sdio_slave_hal.c" "touch_sensor_hal.c" "aes_hal.c" @@ -114,7 +113,6 @@ if(NOT BOOTLOADER_BUILD) if(${target} STREQUAL "esp32s2") list(APPEND srcs - "dac_hal.c" "spi_flash_hal_gpspi.c" "spi_slave_hd_hal.c" "touch_sensor_hal.c" diff --git a/components/hal/adc_oneshot_hal.c b/components/hal/adc_oneshot_hal.c index b7664aa0c9..ada59ecb2d 100644 --- a/components/hal/adc_oneshot_hal.c +++ b/components/hal/adc_oneshot_hal.c @@ -158,19 +158,19 @@ static void s_disable_dac(adc_oneshot_hal_ctx_t *hal, adc_channel_t channel) #if CONFIG_IDF_TARGET_ESP32 if (hal->unit == ADC_UNIT_2) { if (channel == ADC_CHANNEL_8) { - dac_ll_power_down(DAC_CHANNEL_1); // the same as DAC channel 1 + dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 1 } if (channel == ADC_CHANNEL_9) { - dac_ll_power_down(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } } #elif CONFIG_IDF_TARGET_ESP32S2 if (hal->unit == ADC_UNIT_2) { if (channel == ADC_CHANNEL_6) { - dac_ll_power_down(DAC_CHANNEL_1); // the same as DAC channel 1 + dac_ll_power_down(DAC_CHAN_0); // the same as DAC channel 1 } if (channel == ADC_CHANNEL_7) { - dac_ll_power_down(DAC_CHANNEL_2); + dac_ll_power_down(DAC_CHAN_1); } } #else diff --git a/components/hal/dac_hal.c b/components/hal/dac_hal.c deleted file mode 100644 index 765d1fcc8f..0000000000 --- a/components/hal/dac_hal.c +++ /dev/null @@ -1,16 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -// #include "hal/dac_hal.h" - -// void dac_hal_cw_generator_config(dac_cw_config_t *cw) -// { -// dac_ll_cw_set_freq(cw->freq); -// dac_ll_cw_set_scale(cw->en_ch, cw->scale); -// dac_ll_cw_set_phase(cw->en_ch, cw->phase); -// dac_ll_cw_set_dc_offset(cw->en_ch, cw->offset); -// dac_ll_cw_set_channel(cw->en_ch, true); -// } diff --git a/components/hal/esp32/include/hal/dac_ll.h b/components/hal/esp32/include/hal/dac_ll.h index 2c15ede3bd..66207471e6 100644 --- a/components/hal/esp32/include/hal/dac_ll.h +++ b/components/hal/esp32/include/hal/dac_ll.h @@ -23,6 +23,9 @@ extern "C" { #endif +#define DAC_LL_CW_PHASE_0 0x02 +#define DAC_LL_CW_PHASE_180 0x03 + /** * Power on dac module and start output voltage. * @@ -55,10 +58,10 @@ static inline void dac_ll_power_down(dac_channel_t channel) */ static inline void dac_ll_update_output_value(dac_channel_t channel, uint8_t value) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); } @@ -103,9 +106,9 @@ static inline void dac_ll_cw_generator_disable(void) */ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = enable; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = enable; } } @@ -114,11 +117,12 @@ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) * Set frequency of cosine wave generator output. * * @note We know that CLK8M is about 8M, but don't know the actual value. so this freq have limited error. - * @param freq_hz CW generator frequency. Range: 130(130Hz) ~ 55000(100KHz). + * @param freq_hz CW generator frequency. Range: 130(130Hz) + * @param rtc8m_freq the calibrated RTC 8M clock frequency */ -static inline void dac_ll_cw_set_freq(uint32_t freq) +static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) { - uint32_t sw_freq = freq * 0xFFFF / SOC_CLK_RC_FAST_FREQ_APPROX; + uint32_t sw_freq = (uint32_t)(((float)freq / (float)rtc8m_freq) * 65536); HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl1, sw_fstep, (sw_freq > 0xFFFF) ? 0xFFFF : sw_freq); } @@ -130,9 +134,9 @@ static inline void dac_ll_cw_set_freq(uint32_t freq) */ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_scale1 = scale; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_scale2 = scale; } } @@ -141,13 +145,13 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) * Set the phase of the cosine wave generator output. * * @param channel DAC channel num. - * @param scale Phase value. + * @param phase Phase value. 0: 0x02 180: 0x03. */ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_inv1 = phase; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_inv2 = phase; } } @@ -162,14 +166,14 @@ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) */ static inline void dac_ll_cw_set_dc_offset(dac_channel_t channel, int8_t offset) { - if (channel == DAC_CHANNEL_1) { - if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_CW_PHASE_180) { - offset = 0 - offset; + if (channel == DAC_CHAN_0) { + if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc1, offset); - } else if (channel == DAC_CHANNEL_2) { - if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_CW_PHASE_180) { - offset = 0 - offset; + } else if (channel == DAC_CHAN_1) { + if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc2, offset); } diff --git a/components/hal/esp32/include/hal/i2s_ll.h b/components/hal/esp32/include/hal/i2s_ll.h index 70e9a79442..e4b5e34d43 100644 --- a/components/hal/esp32/include/hal/i2s_ll.h +++ b/components/hal/esp32/include/hal/i2s_ll.h @@ -39,6 +39,7 @@ extern "C" { #define I2S_LL_EVENT_TX_EOF BIT(12) #define I2S_LL_EVENT_RX_DSCR_ERR BIT(13) #define I2S_LL_EVENT_TX_DSCR_ERR BIT(14) +#define I2S_LL_EVENT_TX_TEOF BIT(16) #define I2S_INTR_MAX (UINT32_MAX) #define I2S_LL_TX_EVENT_MASK I2S_LL_EVENT_TX_EOF diff --git a/components/hal/esp32s2/dac_hal.c b/components/hal/esp32s2/dac_hal.c deleted file mode 100644 index 123ade4d53..0000000000 --- a/components/hal/esp32s2/dac_hal.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -// The HAL layer for ADC (esp32s2 specific part) - -#include "hal/dac_hal.h" -#include "hal/adc_ll.h" -#include "hal/dac_types.h" - -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ - -#define dac_ll_dma_clear_intr(dev, mask) spi_ll_clear_intr(dev, mask) -#define dac_ll_dma_enable_intr(dev, mask) spi_ll_enable_intr(dev, mask) -#define dac_ll_dma_fifo_reset(dev) spi_ll_dma_tx_fifo_reset(dev) -#define dac_ll_dma_disable_intr(dev, mask) spi_ll_disable_intr(dev, mask) -#define dac_ll_dma_get_intr(dev, mask) spi_ll_get_intr(dev, mask) -#define dac_ll_dma_disable(dev) spi_dma_ll_tx_disable(dev) -#define dac_ll_dma_reset(dev, chan) spi_dma_ll_tx_reset(dev, chan) -#define dac_ll_dma_start(dev, chan, desc) spi_dma_ll_tx_start(dev, chan, desc) - -void dac_dma_hal_clr_intr(dac_hal_context_t *hal) -{ - spi_ll_clear_intr(hal->dev, DAC_DMA_HAL_INTR); -} - -bool dac_dma_hal_get_intr_status(dac_hal_context_t *hal) -{ - return spi_ll_get_intr(hal->dev, DAC_DMA_HAL_INTR); -} - - -void dac_dma_hal_init(dac_hal_context_t *hal) -{ - dac_ll_dma_clear_intr(hal->dev, DAC_DMA_HAL_INTR); - dac_ll_dma_enable_intr(hal->dev, DAC_DMA_HAL_INTR); - -} - -void dac_dma_hal_deinit(dac_hal_context_t *hal) -{ - dac_ll_digi_trigger_output(false); - dac_ll_digi_enable_dma(false); - dac_ll_dma_clear_intr(hal->dev, DAC_DMA_HAL_INTR); - dac_ll_dma_disable(hal->dev); -} - -void dac_dma_hal_trans_start(dac_hal_context_t *hal, lldesc_t *desc) -{ - dac_ll_dma_reset(hal->dev, hal->dma_chan); - dac_ll_dma_fifo_reset(hal->dev); - dac_ll_dma_start(hal->dev, hal->dma_chan, desc); -} - -void dac_hal_digi_controller_configure(const dac_hal_ctrl_config_t *cfg) -{ - dac_ll_digi_clk_inv(true); - dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); - dac_ll_digi_set_trigger_interval(cfg->interval); - adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); - adc_ll_digi_clk_sel(cfg->dig_clk.use_apll); -} - -void dac_hal_digi_start(void) -{ - dac_ll_digi_enable_dma(true); - dac_ll_digi_trigger_output(true); -} - -void dac_hal_digi_stop(void) -{ - dac_ll_digi_trigger_output(false); - dac_ll_digi_enable_dma(false); -} - -void __attribute__((deprecated)) dac_hal_digi_deinit(void) -{ - dac_ll_digi_trigger_output(false); - dac_ll_digi_enable_dma(false); - dac_ll_digi_fifo_reset(); - dac_ll_digi_reset(); -} - -void __attribute__((deprecated)) dac_hal_digi_controller_config(const dac_digi_config_t *cfg) -{ - dac_ll_digi_set_convert_mode(cfg->mode == DAC_CONV_ALTER); - dac_ll_digi_set_trigger_interval(cfg->interval); - adc_ll_digi_controller_clk_div(cfg->dig_clk.div_num, cfg->dig_clk.div_b, cfg->dig_clk.div_a); - adc_ll_digi_controller_clk_enable(cfg->dig_clk.use_apll); -} - -void __attribute__((deprecated)) dac_hal_digi_init(void) -{ - dac_ll_digi_clk_inv(true); -} diff --git a/components/hal/esp32s2/include/hal/dac_hal.h b/components/hal/esp32s2/include/hal/dac_hal.h deleted file mode 100644 index 947b563a12..0000000000 --- a/components/hal/esp32s2/include/hal/dac_hal.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/******************************************************************************* - * NOTICE - * The hal is not public api, don't use in application code. - * See readme.md in hal/include/hal/readme.md - ******************************************************************************/ - -// The HAL layer for DAC (esp32s2 specific part) - -#pragma once - -#include "hal/dac_ll.h" -#include "hal/dac_types.h" -#include "hal/spi_ll.h" -#include "soc/lldesc.h" - -#include_next "hal/dac_hal.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define DAC_DMA_HAL_INTR (SPI_LL_INTR_OUT_TOTAL_EOF) - -typedef struct { - void *dev; - uint32_t dma_chan; -} dac_hal_context_t; - -typedef struct { - dac_digi_convert_mode_t mode; - uint32_t interval; -} dac_hal_ctrl_config_t; - - -/*--------------------------------------------------------------- - Digital controller setting ----------------------------------------------------------------*/ -/** - * Digital controller initialization. - */ -void dac_hal_digi_init(void); - -/** - * Digital controller deinitialization. - */ -void dac_hal_digi_deinit(void); - -/** - * Setting the DAC digital controller. - * - * @param cfg Pointer to digital controller paramter. - */ -void dac_hal_digi_controller_configure(const dac_hal_ctrl_config_t *ctrl_cfg); - -/** - * DAC digital controller start output voltage. - */ -void dac_hal_digi_start(void); - -/** - * DAC digital controller stop output voltage. - */ -void dac_hal_digi_stop(void); - -/** - * Reset DAC digital controller FIFO. - */ -#define dac_hal_digi_fifo_reset() dac_ll_digi_fifo_reset() - -/** - * Reset DAC digital controller. - */ -#define dac_hal_digi_reset() dac_ll_digi_reset() - -/******************************************************* - * DAC-DMA hal layer functions. - * On ESP32-S2, DAC shares the DMA with SPI3. -*******************************************************/ - -/** - * DAC DMA HAL initialization - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_init(dac_hal_context_t *hal); - -/** - * DAC DMA HAL interrupt clear. - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_clr_intr(dac_hal_context_t *hal); - -/** - * DAC DMA HAL transaction start. - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_trans_start(dac_hal_context_t *hal, lldesc_t *desc); - -/** - * Get if interrupt is triggered or not. - * - * @param hal Context of the HAL layer - * - * @return if the intr is triggered. 1: triggered, 0: not triggered. - */ -bool dac_dma_hal_get_intr_status(dac_hal_context_t *hal); - -/** - * DAC DMA HAL deinitialization - * - * @param hal Context of the HAL layer - */ -void dac_dma_hal_deinit(dac_hal_context_t *hal); - -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -void __attribute__((deprecated)) dac_hal_digi_controller_config(const dac_digi_config_t *cfg); - -#ifdef __cplusplus -} -#endif diff --git a/components/hal/esp32s2/include/hal/dac_ll.h b/components/hal/esp32s2/include/hal/dac_ll.h index cf5f9a3cc4..f43a537480 100644 --- a/components/hal/esp32s2/include/hal/dac_ll.h +++ b/components/hal/esp32s2/include/hal/dac_ll.h @@ -25,6 +25,9 @@ extern "C" { #endif +#define DAC_LL_CW_PHASE_0 0x02 +#define DAC_LL_CW_PHASE_180 0x03 + /*--------------------------------------------------------------- DAC common setting ---------------------------------------------------------------*/ @@ -67,10 +70,10 @@ static inline void dac_ll_power_down(dac_channel_t channel) */ static inline void dac_ll_update_output_value(dac_channel_t channel, uint8_t value) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = 0; HAL_FORCE_MODIFY_U32_REG_FIELD(RTCIO.pad_dac[channel], dac, value); } @@ -124,9 +127,9 @@ static inline void dac_ll_cw_generator_disable(void) */ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_cw_en1 = enable; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_cw_en2 = enable; } } @@ -135,11 +138,12 @@ static inline void dac_ll_cw_set_channel(dac_channel_t channel, bool enable) * Set frequency of cosine wave generator output. * * @note We know that CLK8M is about 8M, but don't know the actual value. so this freq have limited error. - * @param freq_hz CW generator frequency. Range: 130(130Hz) ~ 55000(100KHz). + * @param freq_hz CW generator frequency. Range: >= 130(130Hz) + * @param rtc8m_freq the calibrated RTC 8M clock frequency */ -static inline void dac_ll_cw_set_freq(uint32_t freq) +static inline void dac_ll_cw_set_freq(uint32_t freq, uint32_t rtc8m_freq) { - uint32_t sw_freq = freq * 0xFFFF / SOC_CLK_RC_FAST_FREQ_APPROX; + uint32_t sw_freq = (uint32_t)(((float)freq / (float)rtc8m_freq) * 65536); HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl1, sw_fstep, (sw_freq > 0xFFFF) ? 0xFFFF : sw_freq); } @@ -151,9 +155,9 @@ static inline void dac_ll_cw_set_freq(uint32_t freq) */ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_scale1 = scale; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_scale2 = scale; } } @@ -162,13 +166,13 @@ static inline void dac_ll_cw_set_scale(dac_channel_t channel, uint32_t scale) * Set the phase of the cosine wave generator output. * * @param channel DAC channel num. - * @param scale Phase value. + * @param phase Phase value. 0: 0x02 180: 0x03. */ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) { - if (channel == DAC_CHANNEL_1) { + if (channel == DAC_CHAN_0) { SENS.sar_dac_ctrl2.dac_inv1 = phase; - } else if (channel == DAC_CHANNEL_2) { + } else if (channel == DAC_CHAN_1) { SENS.sar_dac_ctrl2.dac_inv2 = phase; } } @@ -183,14 +187,14 @@ static inline void dac_ll_cw_set_phase(dac_channel_t channel, uint32_t phase) */ static inline void dac_ll_cw_set_dc_offset(dac_channel_t channel, int8_t offset) { - if (channel == DAC_CHANNEL_1) { - if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_CW_PHASE_180) { - offset = 0 - offset; + if (channel == DAC_CHAN_0) { + if (SENS.sar_dac_ctrl2.dac_inv1 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc1, offset); - } else if (channel == DAC_CHANNEL_2) { - if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_CW_PHASE_180) { - offset = 0 - offset; + } else if (channel == DAC_CHAN_1) { + if (SENS.sar_dac_ctrl2.dac_inv2 == DAC_LL_CW_PHASE_180) { + offset = -offset; } HAL_FORCE_MODIFY_U32_REG_FIELD(SENS.sar_dac_ctrl2, dac_dc2, offset); } diff --git a/components/hal/include/hal/dac_hal.h b/components/hal/include/hal/dac_hal.h deleted file mode 100644 index 40d56a57ba..0000000000 --- a/components/hal/include/hal/dac_hal.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/******************************************************************************* - * NOTICE - * The hal is not public api, don't use in application code. - * See readme.md in hal/include/hal/readme.md - ******************************************************************************/ - -#pragma once - -#include "hal/dac_ll.h" -#include "hal/dac_types.h" - -/** - * Power on dac module and start output voltage. - * - * @note Before powering up, make sure the DAC PAD is set to RTC PAD and floating status. - * @param channel DAC channel num. - */ -#define dac_hal_power_on(channel) dac_ll_power_on(channel) - -/** - * Power done dac module and stop output voltage. - * - * @param channel DAC channel num. - */ -#define dac_hal_power_down(channel) dac_ll_power_down(channel) - -/** - * Enable/disable the synchronization operation function of ADC1 and DAC. - * - * @note If enabled(default), ADC RTC controller sampling will cause the DAC channel output voltage. - * - * @param enable Enable or disable adc and dac synchronization function. - */ -#define dac_hal_rtc_sync_by_adc(enable) dac_ll_rtc_sync_by_adc(enable) - -/** - * Output voltage with value (8 bit). - * - * @param channel DAC channel num. - * @param value Output value. Value range: 0 ~ 255. - * The corresponding range of voltage is 0v ~ VDD3P3_RTC. - */ -#define dac_hal_update_output_value(channel, value) dac_ll_update_output_value(channel, value) - -/** - * Enable cosine wave generator output. - */ -#define dac_hal_cw_generator_enable() dac_ll_cw_generator_enable() - -/** - * Disable cosine wave generator output. - */ -#define dac_hal_cw_generator_disable() dac_ll_cw_generator_disable() - -/** - * Config the cosine wave generator function in DAC module. - * - * @param cw Configuration. - */ -// void dac_hal_cw_generator_config(dac_cw_config_t *cw); - -/** - * Enable/disable DAC output data from DMA. - */ -#define dac_hal_digi_enable_dma(enable) dac_ll_digi_enable_dma(enable) diff --git a/components/hal/include/hal/dac_types.h b/components/hal/include/hal/dac_types.h index 266bdbc453..ff9960c21d 100644 --- a/components/hal/include/hal/dac_types.h +++ b/components/hal/include/hal/dac_types.h @@ -1,54 +1,16 @@ #pragma once -#include "soc/soc_caps.h" -#include "hal/adc_types.h" -#include "sdkconfig.h" +#ifdef __cplusplus +extern "C" { +#endif typedef enum { - DAC_CHANNEL_1 = 0, /*!< DAC channel 1 is GPIO25(ESP32) / GPIO17(ESP32S2) */ - DAC_CHANNEL_2 = 1, /*!< DAC channel 2 is GPIO26(ESP32) / GPIO18(ESP32S2) */ - DAC_CHANNEL_MAX, + DAC_CHAN_0 = 0, /*!< DAC channel 0 is GPIO25(ESP32) / GPIO17(ESP32S2) */ + DAC_CHAN_1 = 1, /*!< DAC channel 1 is GPIO26(ESP32) / GPIO18(ESP32S2) */ + DAC_CHANNEL_1 __attribute__((deprecated("please use 'DAC_CHAN_0' instead"))) = 0, /*!< Alias of 'DAC_CHAN_0', now the channel index start from '0' */ + DAC_CHANNEL_2 __attribute__((deprecated("please use 'DAC_CHAN_1' instead"))) = 1, /*!< Alias of 'DAC_CHAN_1', now the channel index start from '0' */ } dac_channel_t; -/** - * @brief The multiple of the amplitude of the cosine wave generator. The max amplitude is VDD3P3_RTC. - */ -typedef enum { - DAC_CW_SCALE_1 = 0x0, /*!< 1/1. Default. */ - DAC_CW_SCALE_2 = 0x1, /*!< 1/2. */ - DAC_CW_SCALE_4 = 0x2, /*!< 1/4. */ - DAC_CW_SCALE_8 = 0x3, /*!< 1/8. */ -} dac_cw_scale_t; - -/** - * @brief Set the phase of the cosine wave generator output. - */ -typedef enum { - DAC_CW_PHASE_0 = 0x2, /*!< Phase shift +0° */ - DAC_CW_PHASE_180 = 0x3, /*!< Phase shift +180° */ -} dac_cw_phase_t; - -#if CONFIG_IDF_TARGET_ESP32S2 - -/** - * @brief DAC digital controller (DMA mode) work mode. - */ -typedef enum { - DAC_CONV_NORMAL, /*!< The data in the DMA buffer is simultaneously output to the enable channel of the DAC. */ - DAC_CONV_ALTER, /*!< The data in the DMA buffer is alternately output to the enable channel of the DAC. */ -} dac_digi_convert_mode_t; - -/** - * @brief DAC digital controller (DMA mode) configuration parameters. - */ -typedef struct { - dac_digi_convert_mode_t mode; /*! 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 z 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

&)$&PTo@i;RrA9jYFkdHb35P6 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�OZLS@t_s$I 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 z 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 zΠ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 HDWM4fy>Jn% literal 0 HcmV?d00001 diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 1102885555..9ecc314fd6 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -61,7 +61,6 @@ INPUT = \ $(PROJECT_PATH)/components/bt/host/nimble/esp-hci/include/esp_nimble_hci.h \ $(PROJECT_PATH)/components/bt/include/esp32/include/esp_bt.h \ $(PROJECT_PATH)/components/console/esp_console.h \ - $(PROJECT_PATH)/components/driver/include/driver/dac_common.h \ $(PROJECT_PATH)/components/driver/include/driver/dedic_gpio.h \ $(PROJECT_PATH)/components/driver/include/driver/gpio.h \ $(PROJECT_PATH)/components/driver/include/driver/gptimer.h \ @@ -178,7 +177,6 @@ INPUT = \ $(PROJECT_PATH)/components/freertos/FreeRTOS-Kernel/include/freertos/task.h \ $(PROJECT_PATH)/components/freertos/FreeRTOS-Kernel/include/freertos/timers.h \ $(PROJECT_PATH)/components/hal/include/hal/adc_types.h \ - $(PROJECT_PATH)/components/hal/include/hal/dac_types.h \ $(PROJECT_PATH)/components/hal/include/hal/esp_flash_err.h \ $(PROJECT_PATH)/components/hal/include/hal/gpio_types.h \ $(PROJECT_PATH)/components/hal/include/hal/i2c_types.h \ diff --git a/docs/doxygen/Doxyfile_esp32 b/docs/doxygen/Doxyfile_esp32 index 120918f360..b936c38e58 100644 --- a/docs/doxygen/Doxyfile_esp32 +++ b/docs/doxygen/Doxyfile_esp32 @@ -1,5 +1,4 @@ INPUT += \ - $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/dac.h \ $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/touch_sensor.h \ $(PROJECT_PATH)/components/esp_psram/include/esp32/himem.h \ $(PROJECT_PATH)/components/soc/$(IDF_TARGET)/include/soc/dac_channel.h \ diff --git a/docs/doxygen/Doxyfile_esp32s2 b/docs/doxygen/Doxyfile_esp32s2 index 79979a5787..5a8d93757e 100644 --- a/docs/doxygen/Doxyfile_esp32s2 +++ b/docs/doxygen/Doxyfile_esp32s2 @@ -1,5 +1,4 @@ INPUT += \ - $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/dac.h \ $(PROJECT_PATH)/components/driver/$(IDF_TARGET)/include/driver/touch_sensor.h \ $(PROJECT_PATH)/components/esp_hw_support/include/soc/esp32s2/esp_ds.h \ $(PROJECT_PATH)/components/esp_hw_support/include/soc/esp32s2/esp_hmac.h \ diff --git a/docs/en/api-reference/peripherals/dac.rst b/docs/en/api-reference/peripherals/dac.rst index e194f7405d..cc69b15789 100644 --- a/docs/en/api-reference/peripherals/dac.rst +++ b/docs/en/api-reference/peripherals/dac.rst @@ -7,52 +7,311 @@ Digital To Analog Converter (DAC) Overview -------- -{IDF_TARGET_NAME} has two 8-bit DAC (digital to analog converter) channels, connected to {IDF_TARGET_DAC_CH_1} (Channel 1) and {IDF_TARGET_DAC_CH_2} (Channel 2). +{IDF_TARGET_NAME} has two 8-bit DAC (digital to analog converter) channels, connected to {IDF_TARGET_DAC_CH_1} (Channel 1) and {IDF_TARGET_DAC_CH_2} (Channel 2). Which means each channel of DAC can convert digital value 0~255 to the analog voltage 0~Vref, the output voltage can be calculate by:: + + out_voltage = Vref * digi_val / 255 + +The DAC peripheral supports outputting analog signal in following ways: + +1. Outputting a voltage directly. The DAC channel will keep outputting a specified voltage. +2. Outputting continuous analog signal by DMA. The DAC will convert the data in a buffer at the specified frequency. +3. Outputting a cosine wave by the cosine wave generateor. The DAC channel can output a cosing wave with specified frequency and amplitude. + +For other analog output options, see the :doc:`Sigma-delta Modulation module ` and the :doc:`LED Control module `. Both these modules produce high-frequency PWM/PDM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. + +DAC File Structure +------------------ + +.. figure:: ../../../_static/diagrams/dac/dac_file_structure.png + :align: center + :alt: DAC file structure +**Public headers that need to be included in the DAC application** -The DAC driver allows these channels to be set to arbitrary voltages. +- ``dac.h``: The header file of legacy DAC driver (for apps using legacy driver) +- ``dac_driver.h``: The header file of new DAC driver (for apps using new DAC driver) + +.. note:: + + The legacy driver can't coexist with the new driver. Including ``dac.h`` to use the legacy driver or ``dac_driver.h`` to use the new driver. The legacy driver might be removed in future. + +Functional Overview +------------------- + +Resources Management +^^^^^^^^^^^^^^^^^^^^ + +The DAC on {IDF_TARGET_NAME} has two channels, which can be managed by the :cpp:type:`dac_channels_handle_t`. One or both two channels can be registered to a group by calling :cpp:func:`dac_new_channels`, it will return a channels handle so that the channels in a same group can be operated at the same time with this handle. While the channels in a group are not used any more, please call :cpp:func:`dac_del_channels` to free the resources and reset the hardware. + +Direct Voltage Output (Direct Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The DAC channels in the group can convert a 8-bit digital value into the analog every time calling :cpp:func:`dac_channels_set_voltage` (it can be called in ISR), and then the analog voltage will keep on corresponding pins until next convert start. But before starting to convert the voltage, the DAC channels and pins should be enabled by calling :cpp:func:`dac_channels_enable`. + +Continuous Wave Output (DMA Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +DAC channels in the group can also convert digital data continuously via the DMA. + +To convert data continuously, the channels need to be initialized into DMA mode by calling :cpp:func:`dac_channels_init_continuous_mode` and then enable DMA conversion by :cpp:func:`dac_channels_enable_continuous_mode`. + +After start up the DMA, there are two methods to transmit the rerial digital data. One method is transmitting only one time by :cpp:func:`dac_channels_write_continuously`, it will be blocked until all data transmitted, and the voltage will be kept according to the last conversion value. Another method is transmitting repeatly by :cpp:func:`dac_channels_write_cyclically`, the data in the buffer will be converted cyclicly without block, but note that the buffer size is limited by the descriptor number, and it has to stay available during the whole conversion period, otherwise invalid data might be transmitted. .. only:: esp32 - The DAC channels can also be driven with DMA-style written sample data by the digital controller, via the :doc:`I2S driver ` when using the "built-in DAC mode". + On ESP32, DAC digital controller can be connected internally to the I2S0 and use its DMA for continuous conversion. Although the DAC only needs 8-bit data for conversion, it has to be left shifted 8 bits (i.e. the high 8 bits in 16-bit slot) to satisfy the I2S communication format. So the data buffer need to be expanded before passing it into the write function. Besides, if the both two channels are enabled, the data will be transmitted with a fixed phase diferrence between these channels. + + The clock of DAC digital controller comes from I2S0 as well, so there are two kinds of clock source can be selected, they are :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` which comes from ``CPU_D2_PLL`` and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_APLL`. Theoretically, :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 19.6 KHz to several MHz and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 648 Hz to several MHz, however, the latter clock source might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency. .. only:: esp32s2 - The DAC channels can also be driven with DMA-style written sample data by the digital controller, however the driver does not supported this yet. + On ESP32-S2, DAC digital controller can be connected internally to the SPI3 and use its DMA for continuous conversion. + The clock source of DAC difital controller can be choosen to :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` (which comes from ``APB``) or :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_APLL`. Theoretically, :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 77 Hz to several MHz and :cpp:enumerator:`dac_conti_clk_src_t::DAC_DIGI_CLK_SRC_DEFAULT` can support frequency between 6 Hz to several MHz,however, the latter clock source might be occupied by other peripherals, then it may not provide the required frequency. But it doesn't mean APLL is not available in this case, it can still work as long as it can be divided to the target DAC DMA frequency. + +Cosine Wave Output (Cosine Mode) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The DAC peripheral has a cosine wave generateor on each channel, it can generate cosine wave on these channels, users can specify the frequency, amplitude and phase of the cosine wave. To output the cosine wave, please initialize the DAC to cosine mode by :cpp:func:`dac_channels_init_cosine_mode` first, and then start the cosine wave generator by :cpp:func:`dac_channels_start_cosine_output`. + +Currently, the source clock of the consine wave generator only comes from ``RTC FAST`` which can be choosen by :cpp:enumerator:`dac_cosine_clk_src_t::DAC_COSINE_CLK_SRC_DEFAULT`. + +Finite-State Machine +^^^^^^^^^^^^^^^^^^^^ + +The DAC driver adopts a finite-state machine, the following diagram shows the relationship of the public APIs and the driver internal states. + +.. figure:: ../../../_static/diagrams/dac/dac_state_machine.png + :align: center + :alt: DAC Finite-State Machine + +Power Management +^^^^^^^^^^^^^^^^ + +When the power management is enabled (i.e. :ref:`CONFIG_PM_ENABLE` is on), the system will adjust or stop the source clock of DAC before going into light sleep, thus potentially influence to the DAC signals may lead the data conversion goes wrong. + +DAC driver can prevent the system from changing or stopping the source clock in DMA or cosine wave mode by acquiring a power management lock. When the source clock is generated from APB, the lock type will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_APB_FREQ_MAX` and when the source clock is APLL (only in DMA mode), it will be set to :cpp:enumerator:`esp_pm_lock_type_t::ESP_PM_NO_LIGHT_SLEEP`. Whenever the DAC is converting (i.e. DMA or cosing wave generator is working), the driver will guarantee that the power management lock is acquired. Likewise, the driver releases the lock after conversion stopped. + +IRAM Safe +^^^^^^^^^ + +By default, the DAC DMA interrupt will be deferred when the Cache is disabled for reasons like writing/erasing Flash. Thus the DMA EOF interrupt will not get executed in time, which is not expected in a real-time application. + +There's a Kconfig option :ref:`CONFIG_DAC_ISR_IRAM_SAFE` that will: + +1. Enable the interrupt being serviced even when cache is disabled + +2. Place driver object into DRAM (in case it's linked to PSRAM by accident) + +This will allow the interrupt to run while the cache is disabled but will come at the cost of increased IRAM consumption. However, before enable :ref:`CONFIG_DAC_ISR_IRAM_SAFE` please make sure that the data buffer is allocated in the internal RAM by :cpp:func:`heap_caps_calloc` and set the last parameter to ``MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT``. + +Thread Safety +^^^^^^^^^^^^^ + +All the public DAC APIs are guaranteed to be thread safe by the driver, which means, users can call them from different RTOS tasks without protection by extra locks. Notice that DAC driver uses mutex lock to ensure the thread safety, thus these APIs are not allowed to be used in ISR. For other analog output options, see the :doc:`Sigma-delta Modulation module ` and the :doc:`LED Control module `. Both these modules produce high frequency PDM/PWM output, which can be hardware low-pass filtered in order to generate a lower frequency analog output. +Kconfig Options +^^^^^^^^^^^^^^^ + +- :ref:`CONFIG_DAC_ISR_IRAM_SAFE` controls whether the default ISR handler can work when cache is disabled, see `IRAM Safe <#iram-safe>`__ for more information. +- :ref:`CONFIG_DAC_SUPPRESS_DEPRECATE_WARN` controls whether to suppress the compiling warning message while using the legacy DAC driver. +- :ref:`CONFIG_DAC_ENABLE_DEBUG_LOG` is used to enabled the debug log output. Enable this option will increase the firmware binary size. Application Example ------------------- -Setting DAC channel 1 ({IDF_TARGET_DAC_CH_1}) voltage to approx 0.78 of VDD_A voltage (VDD * 200 / 255). For VDD_A 3.3V, this is 2.59V. +The basic examples for the ``Direct Mode``, ``DMA Mode`` and ``Consine Mode`` can be found in :example:`peripherals/dac/dac_basic`, :example:`peripherals/dac/dac_continuous` and :example:`peripherals/dac/dac_cosine_wave`. Here is a general overview of how to use these modes: + +Direct Output Example +^^^^^^^^^^^^^^^^^^^^^ .. code:: c - #include + #include ... - dac_output_enable(DAC_CHANNEL_1); - dac_output_voltage(DAC_CHANNEL_1, 200); + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + + /* Output '100', the DAC pin will output about (100 / 255) * 3.3 = 1.29 V */ + ESP_ERROR_CHECK(dac_channels_set_voltage(handle, 100)); + + /* Disable the channels to stop outputting */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete and free the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); + + +Continuous Output Example +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. only:: esp32 + + .. code:: c + + #include "driver/dac_driver.h" + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM safe enabled in Kconfig, include "esp_heap_caps.h" to allocate memory on internal RAM */ + #include "esp_heap_caps.h" + #endif + + ... + + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize the channels to DMA mode */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + /* Must enable DMA before writing data */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); + + /* Allocate the memory for the buffer to write */ + uint32_t buf_size = 2000; + uint32_t timeout_ms = 1000; + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM SAFE is enabled, allocate the buffer on the internal RAM */ + uint8_t *data = (uint8_t *)heap_caps_calloc(1, buf_size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + #else + uint8_t *data = (uint8_t *)calloc(1, buf_size); + #endif + assert(data); + /* Load the 16-bit aligned data */ + for (int i = 0; i < buf_size; i += 2) { + data[i] = 0; // Fill 0 to the low 8 bits + data[i+1] = (i / 2) % 255; // Only the high 8 bits will be conveted + } + /* Write the data acyclicly, it will be blocked untill finishing sending all the data */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + /* Write the data acyclicly, it will start output the buffer cyclicly without block, it can only be timeout when failed to aquire the lock */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + + /* Disable the DMA before deinitializing DMA mode */ + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(handle)); + /* Deinitialize DMA mode before disabling the channels */ + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(handle)); + /* Disable the channels before deleting it */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); + + +.. only:: esp32s2 + + .. code:: c + + #include "driver/dac_driver.h" + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM safe enabled in Kconfig, include "esp_heap_caps.h" to allocate memory on internal RAM */ + #include "esp_heap_caps.h" + #endif + + ... + + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_conti_config_t dma_cfg = { + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, + .desc_num = 10, + .freq_hz = 20000, + }; + + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize the channels to DMA mode */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, &dma_cfg)); + /* Must enable DMA before writing data */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); + + /* Allocate the memory for the buffer to write */ + uint32_t buf_size = 2000; + uint32_t timeout_ms = 1000; + #if CONFIG_DAC_ISR_IRAM_SAFE + /* If DAC IRAM SAFE is enabled, allocate the buffer on the internal RAM */ + uint8_t *data = (uint8_t *)heap_caps_calloc(1, buf_size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT); + #else + uint8_t *data = (uint8_t *)calloc(1, buf_size); + #endif + assert(data); + for (int i = 0; i < buf_size; i++) { + data[i] = i % 255; + } + /* Write the data acyclicly, it will be blocked untill finishing sending all the data */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + /* Write the data acyclicly, it will start output the buffer cyclicly without block, it can only be timeout when failed to aquire the lock */ + ESP_ERROR_CHECK(dac_channels_write_continuously(handle, data, buf_size, NULL, timeout_ms)); + + /* Disable the DMA before deinitializing DMA mode */ + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(handle)); + /* Deinitialize DMA mode before disabling the channels */ + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(handle)); + /* Disable the channels before deleting it */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); + + +Cosine Wave Output Example +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: c + + #include "driver/dac_driver.h" + + ... + + dac_channels_handle_t handle; + dac_channels_config_t cfg = {.chan_sel = DAC_CHANNEL_MASK_BOTH}; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + /* Allocate a channels handle for the choosen channels */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Must enable the channels before any outputting */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize the channels to cosine wave mode */ + ESP_ERROR_CHECK(dac_channels_init_cosine_mode(handle, &cos_cfg)); + /* Start outputting the cosine wave */ + ESP_ERROR_CHECK(dac_channels_start_cosine_output(handle)); + + /* Stop the cosine wave generator before deinitializing cosine mode */ + ESP_ERROR_CHECK(dac_channels_stop_cosine_output(handle)); + /* Deinitialize consine mode before disabling the channels */ + ESP_ERROR_CHECK(dac_channels_deinit_cosine_mode(handle)); + /* Disable the channels before deleting it */ + ESP_ERROR_CHECK(dac_channels_disable(handle)); + /* Delete the channels */ + ESP_ERROR_CHECK(dac_del_channels(handle)); API Reference ------------- -.. include-build-file:: inc/dac.inc -.. include-build-file:: inc/dac_common.inc - -GPIO Lookup Macros -^^^^^^^^^^^^^^^^^^ -Some useful macros can be used to specified the GPIO number of a DAC channel, or vice versa. -e.g. - -1. ``DAC_CHANNEL_1_GPIO_NUM`` is the GPIO number of channel 1 ({IDF_TARGET_DAC_CH_1}); -2. ``DAC_{IDF_TARGET_DAC_CH_2}_CHANNEL`` is the channel number of GPIO 26 (channel 2). - +.. include-build-file:: inc/dac_driver.inc .. include-build-file:: inc/dac_channel.inc .. include-build-file:: inc/dac_types.inc diff --git a/docs/en/migration-guides/release-5.x/5.0/peripherals.rst b/docs/en/migration-guides/release-5.x/5.0/peripherals.rst index 6b7657cced..33fa3fadd1 100644 --- a/docs/en/migration-guides/release-5.x/5.0/peripherals.rst +++ b/docs/en/migration-guides/release-5.x/5.0/peripherals.rst @@ -527,6 +527,65 @@ LCD The deprecated ``CAN`` peripheral driver is removed. Please use ``TWAI`` driver instead (i.e. include ``driver/twai.h`` in your application). +.. only:: SOC_DAC_SUPPORTED + + DAC + --- + + DAC driver has been redesigned (see :doc:`DAC API Reference <../api-reference/peripherals/dac>`), which aims to unify and extend the usage of DAC peripheral. Although it's recommended to use the new driver APIs, the legacy driver is still available in the previous include path ``driver/dac.h``. However, by default, including ``driver/dac.h`` will bring a build warning like `The legacy DAC driver is deprecated, please use driver/dac_driver.h instead`. The warning can be suppressed by the Kconfig option :ref:`CONFIG_DAC_SUPPRESS_DEPRECATE_WARN`. + + The major breaking changes in concept and usage are listed as follows: + + .. only:: esp32 + + Breaking Changes in Concepts + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_channel_t`` which used to identify the hardware channel are removed from user space, the channel index now starts from ``0``, please use `DAC_CHAN_0` and `DAC_CHAN_1` instead. And in the new driver, DAC channels can be seleted by :cpp:type:`dac_channel_mask_t`. And these channels can be allocated in a same channel group which is represented by :cpp:type:`dac_channels_handle_t`. + - ``dac_cw_scale_t`` is replaced by :cpp:type:`dac_cosine_scale_t`, to decupling the legacy driver and the new driver. + - ``dac_cw_phase_t`` is replaced by :cpp:type:`dac_cosine_phase_t`, the enum value is now the phase angle directly. + - ``dac_cw_config_t`` is replaced by :cpp:type:`dac_cosine_config_t`, but the ``en_ch`` field is removed because it should be specify while allocate the channel group. + + Breaking Changes in Usage + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_pad_get_io_num`` is removed. + - ``dac_output_voltage`` is replaced by :cpp:func:`dac_channels_set_voltage`. + - ``dac_output_enable`` is replaced by :cpp:func:`dac_channels_enable`. + - ``dac_output_disable`` is replaced by :cpp:func:`dac_channels_disable`. + - ``dac_cw_generator_enable`` is replaced by :cpp:func:`dac_channels_start_cosine_output`, but it need to initialize the DAC channel group to cosine mode first by :cpp:func:`dac_channels_start_cosine_output`, and :cpp:func:`dac_channels_enable` should be called as well. + - ``dac_cw_generator_disable`` is replaced by :cpp:func:`dac_channels_stop_cosine_output`, it is also only allowed to be called under cosine mode. + - ``dac_cw_generator_config`` is replaced by :cpp:func:`dac_channels_init_cosine_mode`, when it is called, the driver will work at cosine mode. + - ``dac_i2s_enable`` is replaced by :cpp:func:`dac_channels_enable_continuous_mode`, but it need to initialize the DAC channel group to DMA mode first by :cpp:func:`dac_channels_init_continuous_mode`, and :cpp:func:`dac_channels_enable` should be called as well. + - ``dac_i2s_disable`` is replaced by :cpp:func:`dac_channels_disable_continuous_mode`, it is also only allowed to be called under DMA mode. + + .. only:: esp32s2 + + Breaking Changes in Concepts + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_channel_t`` which used to identify the hardware channel are removed from user space, the channel index now starts from ``0``, please use `DAC_CHAN_0` and `DAC_CHAN_1` instead. And in the new driver, DAC channels can be seleted by :cpp:type:`dac_channel_mask_t`. And these channels can be allocated in a same channel group which is represented by :cpp:type:`dac_channels_handle_t`. + - ``dac_cw_scale_t`` is replaced by :cpp:type:`dac_cosine_scale_t`, to decupling the legacy driver and the new driver. + - ``dac_cw_phase_t`` is replaced by :cpp:type:`dac_cosine_phase_t`, the enum value is now the phase angle directly. + - ``dac_digi_convert_mode_t`` is removed. The driver now can transmit DMA data in different ways by calling :cpp:func:`dac_channels_write_continuously` or :cpp:func:`dac_channels_write_cyclically`. + - ``dac_cw_config_t`` is replaced by :cpp:type:`dac_cosine_config_t`, but the ``en_ch`` field is removed because it should be specify while allocate the channel group. + - ``dac_digi_config_t`` is replaced by :cpp:type:`dac_conti_config_t`. + + Breaking Changes in Usage + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + - ``dac_pad_get_io_num`` is removed. + - ``dac_output_voltage`` is replaced by :cpp:func:`dac_channels_set_voltage`. + - ``dac_output_enable`` is replaced by :cpp:func:`dac_channels_enable`. + - ``dac_output_disable`` is replaced by :cpp:func:`dac_channels_disable`. + - ``dac_cw_generator_enable`` is replaced by :cpp:func:`dac_channels_start_cosine_output`, but it need to initialize the DAC channel group to cosine mode first by :cpp:func:`dac_channels_start_cosine_output`, and :cpp:func:`dac_channels_enable` should be called as well. + - ``dac_cw_generator_disable`` is replaced by :cpp:func:`dac_channels_stop_cosine_output`, it is also only allowed to be called under cosine mode. + - ``dac_cw_generator_config`` is replaced by :cpp:func:`dac_channels_init_cosine_mode`, when it is called, the driver will work at cosine mode. + - ``dac_digi_init`` and ``dac_digi_controller_config`` is merged into :cpp:func:`dac_channels_init_continuous_mode`. + - ``dac_digi_deinit`` is replaced by :cpp:func:`dac_channels_deinit_continuous_mode`. + - ``dac_digi_start``, ``dac_digi_fifo_reset`` and ``dac_digi_reset`` are merged into :cpp:func:`dac_channels_enable_continuous_mode`. + - ``dac_digi_stop`` is replaced by :cpp:func:`dac_channels_disable_continuous_mode`. + Register Access Macros ---------------------- diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c index 0b06d8dca2..14751f6ae0 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_av.c @@ -22,7 +22,7 @@ #include "freertos/task.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC // DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -89,6 +89,8 @@ static uint8_t s_volume = 0; /* local volume value */ static bool s_volume_notify; /* notify volume change or not */ #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC i2s_chan_handle_t tx_chan = NULL; +#else +dac_channels_handle_t tx_chan; #endif /******************************** @@ -169,23 +171,24 @@ static void bt_av_notify_evt_handler(uint8_t event_id, esp_avrc_rn_param_t *even void bt_i2s_driver_install(void) { #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - /* I2S configuration parameters */ - i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN, - .sample_rate = 44100, - .bits_per_sample = 16, - .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, /* 2-channels */ - .communication_format = I2S_COMM_FORMAT_STAND_MSB, - .dma_buf_count = 6, - .dma_buf_len = 60, - .intr_alloc_flags = 0, /* default interrupt priority */ - .tx_desc_auto_clear = true /* auto clear tx descriptor on underflow */ + dac_channels_config_t cfg = { + .chan_sel = DAC_CHANNEL_MASK_BOTH, }; - - /* enable I2S */ - ESP_ERROR_CHECK(i2s_driver_install(0, &i2s_config, 0, NULL)); - ESP_ERROR_CHECK(i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN)); - ESP_ERROR_CHECK(i2s_set_pin(0, NULL)); + dac_conti_config_t conti_cfg = { + .freq_hz = 44100, + .chan_mode = DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &tx_chan)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(tx_chan)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(tx_chan, &conti_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(tx_chan)); #else i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(I2S_NUM_0, I2S_ROLE_MASTER); chan_cfg.auto_clear = true; @@ -215,7 +218,10 @@ void bt_i2s_driver_install(void) void bt_i2s_driver_uninstall(void) { #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_driver_uninstall(0); + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(tx_chan)); + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(tx_chan)); + ESP_ERROR_CHECK(dac_channels_disable(tx_chan)); + ESP_ERROR_CHECK(dac_del_channels(tx_chan)); #else ESP_ERROR_CHECK(i2s_channel_disable(tx_chan)); ESP_ERROR_CHECK(i2s_del_channel(tx_chan)); @@ -316,7 +322,17 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param) ch_count = 1; } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_set_clk(0, sample_rate, 16, ch_count); + dac_conti_config_t conti_cfg = { + .freq_hz = sample_rate, + .chan_mode = ch_count == 1 ? DAC_CHANNEL_MODE_SIMUL : DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + dac_channels_disable_continuous_mode(tx_chan); + dac_channels_deinit_continuous_mode(tx_chan); + dac_channels_init_continuous_mode(tx_chan, &conti_cfg); + dac_channels_enable_continuous_mode(tx_chan); #else i2s_channel_disable(tx_chan); i2s_std_clk_config_t clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate); diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c index c90c5b773a..68ab9ac538 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/bt_app_core.c @@ -16,8 +16,7 @@ #include "esp_log.h" #include "bt_app_core.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -62,6 +61,8 @@ static uint16_t ringbuffer_mode = RINGBUFFER_MODE_PROCESSING; ********************************/ #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; +#else +extern dac_channels_handle_t tx_chan; #endif /******************************* @@ -139,7 +140,7 @@ static void bt_i2s_task_handler(void *arg) } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_write(0, data, item_size, &bytes_written, portMAX_DELAY); + dac_channels_write_continuously(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #else i2s_channel_write(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #endif diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c index 151ff86f86..e658db6c7c 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_av.c @@ -22,8 +22,7 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -55,6 +54,8 @@ static uint8_t s_volume = 0; static bool s_volume_notify; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; +#else +extern dac_channels_handle_t tx_chan; #endif /* callback for A2DP sink */ @@ -171,7 +172,17 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param) sample_rate = 48000; } #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_set_clk(0, sample_rate, 16, 2); + dac_conti_config_t conti_cfg = { + .freq_hz = sample_rate, + .chan_mode = DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + dac_channels_disable_continuous_mode(tx_chan); + dac_channels_deinit_continuous_mode(tx_chan); + dac_channels_init_continuous_mode(tx_chan, &conti_cfg); + dac_channels_enable_continuous_mode(tx_chan); #else i2s_channel_disable(tx_chan); i2s_std_clk_config_t clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate); diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c index f69d10b216..8922bc3050 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/bt_app_core.c @@ -16,8 +16,7 @@ #include "bt_app_core.h" #include "freertos/ringbuf.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC -// DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -32,6 +31,8 @@ static TaskHandle_t s_bt_i2s_task_handle = NULL; static RingbufHandle_t s_ringbuf_i2s = NULL; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC extern i2s_chan_handle_t tx_chan; +#else +extern dac_channels_handle_t tx_chan; #endif bool bt_app_work_dispatch(bt_app_cb_t p_cback, uint16_t event, void *p_params, int param_len, bt_app_copy_cb_t p_copy_cback) @@ -132,7 +133,7 @@ static void bt_i2s_task_handler(void *arg) data = (uint8_t *)xRingbufferReceive(s_ringbuf_i2s, &item_size, (TickType_t)portMAX_DELAY); if (item_size != 0){ #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - i2s_write(0, data, item_size, &bytes_written, portMAX_DELAY); + dac_channels_write_continuously(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #else i2s_channel_write(tx_chan, data, item_size, &bytes_written, portMAX_DELAY); #endif diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c index 81bf399f78..e7220181ef 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/main/main.c @@ -37,7 +37,7 @@ #include "esp_avrc_api.h" #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC // DAC DMA mode is only supported by the legacy I2S driver, it will be replaced once DAC has its own DMA dirver -#include "driver/i2s.h" +#include "driver/dac_driver.h" #else #include "driver/i2s_std.h" #endif @@ -77,6 +77,8 @@ static prepare_type_env_t b_prepare_write_env; #ifndef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC i2s_chan_handle_t tx_chan; +#else +dac_channels_handle_t tx_chan; #endif //Declare the static function @@ -691,23 +693,24 @@ void app_main(void) ESP_ERROR_CHECK(err); #ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC - /* I2S configuration parameters */ - i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN, - .sample_rate = 44100, - .bits_per_sample = 16, - .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, /* 2-channels */ - .communication_format = I2S_COMM_FORMAT_STAND_MSB, - .dma_buf_count = 6, - .dma_buf_len = 60, - .intr_alloc_flags = 0, /* default interrupt priority */ - .tx_desc_auto_clear = true /* auto clear tx descriptor on underflow */ + dac_channels_config_t cfg = { + .chan_sel = DAC_CHANNEL_MASK_BOTH, }; - - /* enable I2S */ - ESP_ERROR_CHECK(i2s_driver_install(0, &i2s_config, 0, NULL)); - ESP_ERROR_CHECK(i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN)); - ESP_ERROR_CHECK(i2s_set_pin(0, NULL)); + dac_conti_config_t conti_cfg = { + .freq_hz = 44100, + .chan_mode = DAC_CHANNEL_MODE_ALTER, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 6, + .buf_size = 2048, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &tx_chan)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(tx_chan)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(tx_chan, conti_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(tx_chan)); #else i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(I2S_NUM_0, I2S_ROLE_MASTER); chan_cfg.auto_clear = true; diff --git a/examples/peripherals/.build-test-rules.yml b/examples/peripherals/.build-test-rules.yml index 754a881221..6bbcebe5cf 100644 --- a/examples/peripherals/.build-test-rules.yml +++ b/examples/peripherals/.build-test-rules.yml @@ -6,6 +6,22 @@ examples/peripherals/adc/continuous_read: temporary: true reason: adc dma mode isn't supported on these targets +examples/peripherals/dac/dac_audio: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +examples/peripherals/dac/dac_basic: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +examples/peripherals/dac/dac_continuous: + disable: + - if: SOC_DAC_SUPPORTED != 1 + +examples/peripherals/dac/dac_cosine_wave: + disable: + - if: SOC_DAC_SUPPORTED != 1 + examples/peripherals/gpio/generic_gpio: disable_test: - if: IDF_TARGET != "esp32" diff --git a/examples/peripherals/wave_gen/CMakeLists.txt b/examples/peripherals/dac/dac_audio/CMakeLists.txt similarity index 91% rename from examples/peripherals/wave_gen/CMakeLists.txt rename to examples/peripherals/dac/dac_audio/CMakeLists.txt index a601b00dd9..eefcf9cbcd 100644 --- a/examples/peripherals/wave_gen/CMakeLists.txt +++ b/examples/peripherals/dac/dac_audio/CMakeLists.txt @@ -3,4 +3,4 @@ cmake_minimum_required(VERSION 3.16) include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(wave_gen) +project(dac_audio) diff --git a/examples/peripherals/dac/dac_audio/README.md b/examples/peripherals/dac/dac_audio/README.md new file mode 100644 index 0000000000..aaa8d94a96 --- /dev/null +++ b/examples/peripherals/dac/dac_audio/README.md @@ -0,0 +1,53 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Constant Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows how to play a piece of audio by DAC driver. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* An Audio Power Amplifier like `NS4150` +* A speaker or earphone to play the audio + +### Configure the Project + +This example uses the audio that stored in a buffer, which is put in `audio_example_file.h`. You can also create your own audio buffer by the python script `generate_audio_file.py`. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +You can see the following logs on the monitor: + +``` +I (277) dac audio: DAC audio example start +I (277) dac audio: -------------------------------------- +I (287) dac audio: DAC initialized success, DAC DMA is ready +I (297) dac audio: Audio size 79512 bytes, played at frequency 16000 Hz +I (5137) dac audio: Audio size 79512 bytes, played at frequency 16000 Hz +I (9967) dac audio: Audio size 79512 bytes, played at frequency 16000 Hz +... +``` + +And meanwhile, you can hear the audio played every 1 second from the speaker or earphone. diff --git a/examples/peripherals/dac/dac_audio/main/CMakeLists.txt b/examples/peripherals/dac/dac_audio/main/CMakeLists.txt new file mode 100644 index 0000000000..70afa9ebc2 --- /dev/null +++ b/examples/peripherals/dac/dac_audio/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_audio.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/i2s/i2s_adc_dac/main/audio_example_file.h b/examples/peripherals/dac/dac_audio/main/audio_example_file.h similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/main/audio_example_file.h rename to examples/peripherals/dac/dac_audio/main/audio_example_file.h diff --git a/examples/peripherals/dac/dac_audio/main/dac_audio.c b/examples/peripherals/dac/dac_audio/main/dac_audio.c new file mode 100644 index 0000000000..c3d59ae440 --- /dev/null +++ b/examples/peripherals/dac/dac_audio/main/dac_audio.c @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_driver.h" +#include "esp_check.h" +#include "audio_example_file.h" + +#define EXAMPLE_CONVERT_FREQ_HZ 16000 // DAC conversion frequency, it determines how fast to play the audio + +static const char *TAG = "dac audio"; + +void app_main(void) +{ + ESP_LOGI(TAG, "DAC audio example start"); + ESP_LOGI(TAG, "--------------------------------------"); + + dac_channels_handle_t dac_handle; + + dac_channels_config_t cfg = { + .chan_sel = DAC_CHANNEL_MASK_BOTH, + }; + dac_conti_config_t dma_cfg = { + .freq_hz = EXAMPLE_CONVERT_FREQ_HZ, + /* Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F + */ + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_APLL, // Using APLL as clock source to get a wider frequency range + .desc_num = 5, // At least 2 descriptions + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &dac_handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(dac_handle, &dma_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(dac_handle)); + ESP_LOGI(TAG, "DAC initialized success, DAC DMA is ready"); + + uint8_t *audio = NULL; + size_t audio_size = sizeof(audio_table); +#if CONFIG_IDF_TARGET_ESP32 + audio = (uint8_t *)calloc(1, audio_size * 2); + assert(audio); + /* On ESP32, the data have to align with 16 bits, and only the high 8 bit will be converted by DAC */ + for (int i = 0; i < audio_size; i++) { + audio[2 * i + 1] = audio_table[i]; + } +#else + audio = (uint8_t *)calloc(1, audio_size); + assert(audio); + /* 'audio_table' is a const buffer which can't be sent by DMA directly, copy it into a new buffer */ + memcpy(audio, audio_table, audio_size); +#endif + + while (1) { + ESP_LOGI(TAG, "Audio size %d bytes, played at frequency %d Hz", audio_size, EXAMPLE_CONVERT_FREQ_HZ); + ESP_ERROR_CHECK(dac_channels_write_continuously(dac_handle, audio, audio_size, NULL, portMAX_DELAY)); + vTaskDelay(pdMS_TO_TICKS(1000)); + } +} diff --git a/examples/peripherals/dac/dac_audio/pytest_dac_audio.py b/examples/peripherals/dac/dac_audio/pytest_dac_audio.py new file mode 100644 index 0000000000..4e4d5f89bf --- /dev/null +++ b/examples/peripherals/dac/dac_audio/pytest_dac_audio.py @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_audio_exampl(dut: Dut) -> None: + + dut.expect('I \\(([0-9]+)\\) dac audio: DAC audio example start', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac audio: --------------------------------------', timeout=5) + dut.expect('I \\(([0-9]+)\\) dac audio: DAC initialized success, DAC DMA is ready', timeout=5) + dut.expect('I \\(([0-9]+)\\) dac audio: Audio size ([0-9]+) bytes, played at frequency ([0-9]+) Hz', timeout=5) diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/generate_audio_file.py b/examples/peripherals/dac/dac_audio/tools/generate_audio_file.py similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/generate_audio_file.py rename to examples/peripherals/dac/dac_audio/tools/generate_audio_file.py diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/sample_00.wav b/examples/peripherals/dac/dac_audio/tools/sample_00.wav similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/sample_00.wav rename to examples/peripherals/dac/dac_audio/tools/sample_00.wav diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/sample_01.wav b/examples/peripherals/dac/dac_audio/tools/sample_01.wav similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/sample_01.wav rename to examples/peripherals/dac/dac_audio/tools/sample_01.wav diff --git a/examples/peripherals/i2s/i2s_adc_dac/tools/sample_02.wav b/examples/peripherals/dac/dac_audio/tools/sample_02.wav similarity index 100% rename from examples/peripherals/i2s/i2s_adc_dac/tools/sample_02.wav rename to examples/peripherals/dac/dac_audio/tools/sample_02.wav diff --git a/examples/peripherals/i2s/i2s_adc_dac/CMakeLists.txt b/examples/peripherals/dac/dac_basic/CMakeLists.txt similarity index 91% rename from examples/peripherals/i2s/i2s_adc_dac/CMakeLists.txt rename to examples/peripherals/dac/dac_basic/CMakeLists.txt index 40019e0071..9d9a48fc37 100644 --- a/examples/peripherals/i2s/i2s_adc_dac/CMakeLists.txt +++ b/examples/peripherals/dac/dac_basic/CMakeLists.txt @@ -3,4 +3,4 @@ cmake_minimum_required(VERSION 3.16) include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(i2s_adc_dac) +project(dac_basic) diff --git a/examples/peripherals/dac/dac_basic/README.md b/examples/peripherals/dac/dac_basic/README.md new file mode 100644 index 0000000000..2a9bcbf6ad --- /dev/null +++ b/examples/peripherals/dac/dac_basic/README.md @@ -0,0 +1,71 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Basic Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the basic usage of outputting a voltage directly by the DAC driver. + +The output voltage will increase a step every 500 ms, and it will reset to 0 periodically. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Configure the Project + +There is a macro `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` in the example to choose whether put the two DAC channels into a same group + + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1, DAC channel 0 and channel 2 can be set to different voltage separately by their own group handle. + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, DAC channel 0 and channel 2 will be set to a same voltage by the same group handle. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +The DAC channels can be read by ADC channels internally. The ADC read period is 100 ms, the following log is the raw ADC value read from the DAC channels, it shows the output voltage is increasing every 500 ms. + +``` +DAC channel 0 vaule: 37 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 37 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 38 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 38 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 34 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 179 DAC channel 1 vaule: 117 +DAC channel 0 vaule: 176 DAC channel 1 vaule: 117 +DAC channel 0 vaule: 178 DAC channel 1 vaule: 122 +DAC channel 0 vaule: 179 DAC channel 1 vaule: 118 +DAC channel 0 vaule: 177 DAC channel 1 vaule: 115 +DAC channel 0 vaule: 316 DAC channel 1 vaule: 261 +DAC channel 0 vaule: 317 DAC channel 1 vaule: 263 +DAC channel 0 vaule: 311 DAC channel 1 vaule: 261 +DAC channel 0 vaule: 317 DAC channel 1 vaule: 260 +DAC channel 0 vaule: 317 DAC channel 1 vaule: 262 +DAC channel 0 vaule: 458 DAC channel 1 vaule: 406 +DAC channel 0 vaule: 456 DAC channel 1 vaule: 406 +DAC channel 0 vaule: 454 DAC channel 1 vaule: 403 +DAC channel 0 vaule: 457 DAC channel 1 vaule: 406 +DAC channel 0 vaule: 459 DAC channel 1 vaule: 407 +... +``` + +If monitoring the DAC channels with an oscilloscope, there will be a direct voltage on the screen and it will be updated every 500 ms. diff --git a/examples/peripherals/dac/dac_basic/main/CMakeLists.txt b/examples/peripherals/dac/dac_basic/main/CMakeLists.txt new file mode 100644 index 0000000000..26ed7c8ff6 --- /dev/null +++ b/examples/peripherals/dac/dac_basic/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_basic.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_basic/main/dac_basic.c b/examples/peripherals/dac/dac_basic/main/dac_basic.c new file mode 100644 index 0000000000..e1e1c6bffe --- /dev/null +++ b/examples/peripherals/dac/dac_basic/main/dac_basic.c @@ -0,0 +1,96 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_driver.h" +#include "driver/adc.h" +#include "esp_check.h" + +#define EXAMPLE_DAC_USE_SEPARATE_CHANNEL 0 // Whether to register two DAC channels in separate control group + +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +static void adc_monitor_task(void *args) +{ + /* Set the ADC channels, these channels are connected to the DAC channels internally */ + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + + int chan1_val = 0; + int chan2_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); + printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); + vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +static void dac_output_task(void *args) +{ + dac_channels_handle_t handle = (dac_channels_handle_t)args; + uint32_t val = 0; + while (1) { + /* Set the voltage every 100 ms */ + ESP_ERROR_CHECK(dac_channels_set_voltage(handle, val)); + val += 10; + val %= 250; + vTaskDelay(pdMS_TO_TICKS(500)); + } +} + +static void dac_init_channel(dac_channel_mask_t mask, dac_channels_handle_t *dac_handle) +{ + dac_channels_handle_t handle = NULL; + dac_channels_config_t cfg = { + .chan_sel = mask, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + *dac_handle = handle; +} + +static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) +{ + /* Disable the DAC channels */ + ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); + /* Delete the channel group */ + ESP_ERROR_CHECK(dac_del_channels(dac_handle)); +} + +void app_main(void) +{ +#if EXAMPLE_DAC_USE_SEPARATE_CHANNEL + dac_channels_handle_t chan1_handle; + dac_channels_handle_t chan2_handle; + /* Initialize the two channels separately */ + dac_init_channel(DAC_CHANNEL_MASK_CH0, &chan1_handle); + dac_init_channel(DAC_CHANNEL_MASK_CH1, &chan2_handle); + xTaskCreate(dac_output_task, "dac_chan1_output_task", 4096, chan1_handle, 5, NULL); + vTaskDelay(pdMS_TO_TICKS(500)); // To differential the output of two channels + xTaskCreate(dac_output_task, "dac_chan2_output_task", 4096, chan2_handle, 5, NULL); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#else + dac_channels_handle_t chan12_handle; + /* Initialize the two channels in a same group */ + dac_init_channel(DAC_CHANNEL_MASK_BOTH, &chan12_handle); + xTaskCreate(dac_output_task, "dac_output_task", 4096, chan12_handle, 5, NULL); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#endif +} diff --git a/examples/peripherals/dac/dac_basic/pytest_dac_basic.py b/examples/peripherals/dac/dac_basic/pytest_dac_basic.py new file mode 100644 index 0000000000..6455252934 --- /dev/null +++ b/examples/peripherals/dac/dac_basic/pytest_dac_basic.py @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_basic_example(dut: Dut) -> None: + res = [] + for _ in range(10): + res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + + avg1_ch1 = 0 + avg1_ch2 = 0 + avg2_ch1 = 0 + avg2_ch2 = 0 + + for val in res[0:5]: + avg1_ch1 = avg1_ch1 + int(val.group(2)) + avg1_ch2 = avg1_ch2 + int(val.group(5)) + for val in res[5:10]: + avg2_ch1 = avg1_ch1 + int(val.group(2)) + avg2_ch2 = avg1_ch2 + int(val.group(5)) + + avg1_ch1 = int(avg1_ch1 / 5) + avg1_ch2 = int(avg1_ch2 / 5) + avg2_ch1 = int(avg2_ch1 / 5) + avg2_ch2 = int(avg2_ch2 / 5) + + assert avg2_ch1 > avg1_ch1 + assert avg2_ch2 > avg1_ch2 diff --git a/examples/peripherals/dac/dac_basic/sdkconfig.defaults b/examples/peripherals/dac/dac_basic/sdkconfig.defaults new file mode 100644 index 0000000000..83e2dfa154 --- /dev/null +++ b/examples/peripherals/dac/dac_basic/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/dac/dac_continuous/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/CMakeLists.txt new file mode 100644 index 0000000000..f1a4f60e31 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_continuous) diff --git a/examples/peripherals/dac/dac_continuous/README.md b/examples/peripherals/dac/dac_continuous/README.md new file mode 100644 index 0000000000..33b7aa0fd3 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/README.md @@ -0,0 +1,153 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Constant Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the basic usage of outputting continuous voltage by the DAC driver. There are two ways to realize continuous output, one is outputting by DMA transmission and another is by timer interrupt. + +### Timer Interrupt + +While using timer interrupt to output the waves, the digital value will be set in every timer interrupt callback, it means the conversion frequency is equal to the timer interrupt frequency. Obviously, the conversion frequency is limited by the interrupt, which relies on the CPU scheduling, thus it can't reach a high frequency in this mode. But it can be used as a supplementary way while the conversion frequency is too low to use DMA mode. + +### DMA transmission + +While using DMA to transmit the wave buffers, the digital values are put into a DMA buffer wait for transmitting and converting, it means the conversion frequency is equal to the frequency that DMA transmitting the data. We can set the DMA frequency directly, and the digital data int the buffer will be sent automatically when the buffer has been loaded onto the DMA. So the conversion frequency can reach even several MHz while using DMA mode. But the wave can be distorted if the frequency is too high. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Configure the Project + +You can switch the output method by setting the macro `EXAMPLE_DAC_CONTINUOUS_MODE` to `EXAMPLE_DAC_CONTINUOUS_BY_TIMER` or `EXAMPLE_DAC_CONTINUOUS_BY_DMA`. + +There are four waves: sine, triangle, saw tooth and square. These waves are stored in corresponding buffers, and each wave has 400 points as default, which can be modified by `EXAMPLE_ARRAY_LEN`, reduce the point number can increase the wave frequency. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +This example can output sine wave, triangle wave, saw tooth wave and square wave periodically, each wave will last for 3 seconds. + +The DAC channels can be read by ADC channels internally. The ADC read period is 500 ms, the following log is the raw ADC value read from the DAC channels. But since the ADC sample-rate is lower than the DAC output-rate, the sampling value can only indicate that the voltage is changing. + +### Timer Triggered Output + +You can see sine wave, triangle wave, saw tooth wave and square wave at 50 Hz on the oscilloscope. + +``` +I (333) dac continuous: -------------------------------------------------- +I (343) dac continuous: DAC continuous output by Timer +I (343) dac continuous: DAC channel 0 io: GPIO_NUM_25 +I (353) dac continuous: DAC channel 1 io: GPIO_NUM_26 +I (353) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE +I (363) dac continuous: DAC conversion frequency (Hz): 20000 +I (373) dac continuous: DAC wave frequency (Hz): 50 +I (373) dac continuous: -------------------------------------------------- +DAC channel 0 vaule: 2291 DAC channel 1 vaule: 2331 +DAC channel 0 vaule: 43 DAC channel 1 vaule: 3 +DAC channel 0 vaule: 55 DAC channel 1 vaule: 32 +DAC channel 0 vaule: 57 DAC channel 1 vaule: 33 +DAC channel 0 vaule: 56 DAC channel 1 vaule: 34 +DAC channel 0 vaule: 59 DAC channel 1 vaule: 34 +DAC channel 0 vaule: 56 DAC channel 1 vaule: 33 +I (3393) dac continuous: triangle wave start +DAC channel 0 vaule: 2258 DAC channel 1 vaule: 2243 +DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2242 +DAC channel 0 vaule: 2259 DAC channel 1 vaule: 2242 +DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2245 +DAC channel 0 vaule: 2257 DAC channel 1 vaule: 2243 +DAC channel 0 vaule: 2258 DAC channel 1 vaule: 2240 +I (6393) dac continuous: sawtooth wave start +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2735 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2735 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2736 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2717 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2734 +DAC channel 0 vaule: 2704 DAC channel 1 vaule: 2736 +I (9393) dac continuous: square wave start +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +I (12393) dac continuous: sine wave start +DAC channel 0 vaule: 82 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 83 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 82 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 87 DAC channel 1 vaule: 62 +DAC channel 0 vaule: 84 DAC channel 1 vaule: 63 +DAC channel 0 vaule: 83 DAC channel 1 vaule: 64 +... +``` + +### DMA Output + +You can see sine wave, triangle wave, saw tooth wave and square wave at 2 KHz on the oscilloscope. + +``` +I (335) dac continuous: -------------------------------------------------- +I (345) dac continuous: DAC continuous output by DMA +I (345) dac continuous: DAC channel 0 io: GPIO_NUM_25 +I (355) dac continuous: DAC channel 1 io: GPIO_NUM_26 +I (355) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE +I (365) dac continuous: DAC conversion frequency (Hz): 800000 +I (375) dac continuous: DAC wave frequency (Hz): 2000 +I (375) dac continuous: -------------------------------------------------- +DAC channel 0 vaule: 3131 DAC channel 1 vaule: 1634 +DAC channel 0 vaule: 1712 DAC channel 1 vaule: 2531 +DAC channel 0 vaule: 1716 DAC channel 1 vaule: 2535 +DAC channel 0 vaule: 1715 DAC channel 1 vaule: 2544 +DAC channel 0 vaule: 1715 DAC channel 1 vaule: 2533 +DAC channel 0 vaule: 1712 DAC channel 1 vaule: 2539 +I (3395) dac continuous(DMA): triangle wave start +DAC channel 0 vaule: 592 DAC channel 1 vaule: 1190 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3518 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3515 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3516 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3514 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 3515 +I (6395) dac continuous(DMA): sawtooth wave start +DAC channel 0 vaule: 294 DAC channel 1 vaule: 560 +DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3227 +DAC channel 0 vaule: 2860 DAC channel 1 vaule: 3216 +DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3227 +DAC channel 0 vaule: 2861 DAC channel 1 vaule: 3216 +DAC channel 0 vaule: 2859 DAC channel 1 vaule: 3183 +I (9395) dac continuous(DMA): square wave start +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 4095 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 0 +I (12395) dac continuous(DMA): sine wave start +DAC channel 0 vaule: 2864 DAC channel 1 vaule: 3691 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 204 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 202 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 193 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 181 +DAC channel 0 vaule: 0 DAC channel 1 vaule: 194 +... +``` diff --git a/examples/peripherals/dac/dac_continuous/main/CMakeLists.txt b/examples/peripherals/dac/dac_continuous/main/CMakeLists.txt new file mode 100644 index 0000000000..b20bcad41d --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/CMakeLists.txt @@ -0,0 +1,6 @@ +set(srcs "dac_continuous_main.c" + "dac_continuous_dma.c" + "dac_continuous_timer.c") + +idf_component_register(SRCS "${srcs}" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous.h b/examples/peripherals/dac/dac_continuous/main/dac_continuous.h new file mode 100644 index 0000000000..315937281a --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous.h @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ +#include "driver/dac_driver.h" + +#define CONST_PERIOD_2_PI 6.2832 // 2 * PI + +#define EXAMPLE_ARRAY_LEN 400 // Length of wave array +#define EXAMPLE_DAC_AMPLITUDE 255 // Amplitude of DAC voltage. If it's more than 256 will causes dac_output_voltage() output 0. +#define EXAMPLE_WAVE_PERIOD_SEC 3 // Switch wave every 3 senconds +#define EXAMPLE_DAC_CHANNEL DAC_CHANNEL_MASK_BOTH // DAC_CHANNEL_MASK_CH0 & DAC_CHANNEL_MASK_CH1 + +typedef enum { + DAC_SINE_WAVE, + DAC_TRIANGLE_WAVE, + DAC_SAWTOOTH_WAVE, + DAC_SQUARE_WAVE, + DAC_WAVE_MAX, +} dac_example_wave_type_t; + +/** + * @brief Use DMA to convert continuously + * + */ +void dac_continuous_by_dma(void); + +/** + * @brief Use timer to convert continuously + * + */ +void dac_continuous_by_timer(void); + +/** + * @brief Print the example log information + * + * @param conv_freq DAC conversion frequency + * @param wave_freq The frequency of the wave + */ +void example_log_info(uint32_t conv_freq, uint32_t wave_freq); diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c b/examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c new file mode 100644 index 0000000000..dd24e90fba --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous_dma.c @@ -0,0 +1,130 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_check.h" +#include "dac_continuous.h" + +#define EXAMPLE_WAVE_FREQ_HZ 2000 // Default wave frequency 50 Hz, it can't be too high +#define EXAMPLE_CONVERT_FREQ_HZ (EXAMPLE_ARRAY_LEN * EXAMPLE_WAVE_FREQ_HZ) // The frequency that DAC convert every data in the wave array + +static uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // Used to store sine wave values +static uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // Used to store triangle wave values +static uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // Used to store sawtooth wave values +static uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // Used to store square wave values + +static const char *TAG = "dac continuous(DMA)"; +static const char wav_name[DAC_WAVE_MAX][15] = {"sine", "triangle", "sawtooth", "square"}; + +static void dac_dma_write_task(void *args) +{ + dac_channels_handle_t handle = (dac_channels_handle_t)args; + dac_example_wave_type_t wav_sel = DAC_SINE_WAVE; // Start from sine wave + + size_t buf_len = EXAMPLE_ARRAY_LEN; + + while (1) { + /* The wave in the buffer will be converted cyclicly + * but take care the data buffer need to be available during the conversion */ + switch (wav_sel) { + case DAC_SINE_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)sin_wav, buf_len, NULL, 1000)); + break; + case DAC_TRIANGLE_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)tri_wav, buf_len, NULL, 1000)); + break; + case DAC_SAWTOOTH_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)saw_wav, buf_len, NULL, 1000)); + break; + case DAC_SQUARE_WAVE: + ESP_ERROR_CHECK(dac_channels_write_cyclically(handle, (uint8_t *)squ_wav, buf_len, NULL, 1000)); + break; + default: + break; + } + /* Switch wave every EXAMPLE_WAVE_PERIOD_SEC seconds */ + vTaskDelay(pdMS_TO_TICKS(EXAMPLE_WAVE_PERIOD_SEC * 1000)); + wav_sel++; + wav_sel %= DAC_WAVE_MAX; + ESP_LOGI(TAG, "%s wave start", wav_name[wav_sel]); + } +} + +static void dac_init_channel(dac_channel_mask_t mask, dac_conti_config_t *conti_cfg, dac_channels_handle_t *dac_handle) +{ + dac_channels_handle_t handle = NULL; + dac_channels_config_t cfg = { + .chan_sel = mask, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_init_continuous_mode(handle, conti_cfg)); + /* Start the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_enable_continuous_mode(handle)); + + *dac_handle = handle; +} + +/* Unused DAC de-initialize example, to show how to delete the DAC resources */ +static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) +{ + /* Stop the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_disable_continuous_mode(dac_handle)); + /* Deinitialize the DAC DMA peripheral */ + ESP_ERROR_CHECK(dac_channels_deinit_continuous_mode(dac_handle)); + /* Disable the DAC channels */ + ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); + /* Delete the channel group */ + ESP_ERROR_CHECK(dac_del_channels(dac_handle)); +} + +static void example_generate_wave(void) +{ + uint32_t pnt_num = EXAMPLE_ARRAY_LEN; + + for (int i = 0; i < pnt_num; i ++) { + sin_wav[i] = (uint8_t)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(EXAMPLE_DAC_AMPLITUDE) / 2 + 0.5); + tri_wav[i] = (i > (pnt_num / 2)) ? (2 * EXAMPLE_DAC_AMPLITUDE * (pnt_num - i) / pnt_num) : (2 * EXAMPLE_DAC_AMPLITUDE * i / pnt_num); + saw_wav[i] = (i == pnt_num) ? 0 : (i * EXAMPLE_DAC_AMPLITUDE / pnt_num); + squ_wav[i] = (i < (pnt_num / 2)) ? EXAMPLE_DAC_AMPLITUDE : 0; + } +} + +void dac_continuous_by_dma(void) +{ + dac_channels_handle_t chan12_handle; + dac_conti_config_t conti_cfg = { + .freq_hz = EXAMPLE_CONVERT_FREQ_HZ, + /* Assume the data in buffer is 'A B C D E F' + * DAC_CHANNEL_MODE_SIMUL: + * - channel 0: A B C D E F + * - channel 1: A B C D E F + * DAC_CHANNEL_MODE_ALTER: + * - channel 0: A C E + * - channel 1: B D F + */ + .chan_mode = DAC_CHANNEL_MODE_SIMUL, + .clk_src = DAC_DIGI_CLK_SRC_DEFAULT, // If the frequency is out of range, try 'DAC_DIGI_CLK_SRC_APLL' + .desc_num = 10, + }; + /* For Continuous(DMA) Mode, only one group can access the DMA periphral, + * which means the two channels can't be initialized to DMA mode separately */ + dac_init_channel(DAC_CHANNEL_MASK_BOTH, &conti_cfg, &chan12_handle); + + example_log_info(EXAMPLE_CONVERT_FREQ_HZ, EXAMPLE_WAVE_FREQ_HZ); + + /* Generate the data buffer, the data is a sawtooth wave every 256 point, + * With the the data frequency at 20 KHz, the sawtooth wave frequency is about 20 KHz / 256 = 78.125 Hz */ + example_generate_wave(); + + /* Start to convert wave */ + xTaskCreate(dac_dma_write_task, "dac_dma_write_task", 4096, chan12_handle, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c b/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c new file mode 100644 index 0000000000..ce7f86960e --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous_main.c @@ -0,0 +1,89 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/adc.h" +#include "esp_check.h" +#include "dac_continuous.h" + +/** + * There are two ways to convert digital data to analog signal continuously: + * - Using a timer: setting DAC voltage periodically in the timer interrupt + * in this way, DAC can achieve a relatively low conversion frequency + * but it is not a efficient way comparing to using the DMA + * - Using DMA: tansmitting the data buffer via DMA, + * the conversion frequency is controlled by how fast it is transmitted by DMA + * in this way, the conversion frequency can reach sevral MHz, + * but it can't achieve a very low conversion frequency because it is limited by the DMA clock source + * Generally, recommand to use DMA, if the DMA peripheral is occupied or the required conversion frequency is very low, + * then use timer instead + */ +#define EXAMPLE_DAC_CONTINUOUS_BY_TIMER 0 +#define EXAMPLE_DAC_CONTINUOUS_BY_DMA 1 +#define EXAMPLE_DAC_CONTINUOUS_MODE EXAMPLE_DAC_CONTINUOUS_BY_DMA + +/* ADC configuration */ +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_DAC_CHAN0_IO (25) // DAC channel 0 io number +#define EXAMPLE_DAC_CHAN1_IO (26) // DAC channel 1 io number +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN0_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_DAC_CHAN0_IO (17) // DAC channel 0 io number +#define EXAMPLE_DAC_CHAN1_IO (18) // DAC channel 1 io number +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +_Static_assert(EXAMPLE_DAC_AMPLITUDE < 256, "The DAC accuracy is 8 bit-width, doesn't support the amplitude beyond 255"); + +static const char *TAG = "dac continuous"; + +void example_log_info(uint32_t conv_freq, uint32_t wave_freq) +{ + ESP_LOGI(TAG, "--------------------------------------------------"); + ESP_LOGI(TAG, "DAC continuous output by %s", EXAMPLE_DAC_CONTINUOUS_MODE ? "DMA" : "Timer"); + ESP_LOGI(TAG, "DAC channel 0 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN0_IO); + ESP_LOGI(TAG, "DAC channel 1 io: GPIO_NUM_%d", EXAMPLE_DAC_CHAN1_IO); + ESP_LOGI(TAG, "Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE"); + ESP_LOGI(TAG, "DAC conversion frequency (Hz): %d", conv_freq); + ESP_LOGI(TAG, "DAC wave frequency (Hz): %d", wave_freq); + ESP_LOGI(TAG, "--------------------------------------------------"); +} + +static void adc_monitor_task(void *args) +{ + /* Set the ADC channels, these channels are connected to the DAC channels internally */ + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN0_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + + int chan1_val = 0; + int chan2_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN0_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); + printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); + vTaskDelay(pdMS_TO_TICKS(500)); + } +} + +void app_main(void) +{ +#if EXAMPLE_DAC_CONTINUOUS_MODE == EXAMPLE_DAC_CONTINUOUS_BY_DMA + /* Output 2 kHz waves using DMA */ + dac_continuous_by_dma(); +#else + /* Output 50 Hz waves using timer interrupt */ + dac_continuous_by_timer(); +#endif + /* Create ADC monitor task to detect the voltage on DAC pin every 500 ms */ + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +} diff --git a/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c b/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c new file mode 100644 index 0000000000..c575723834 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/main/dac_continuous_timer.c @@ -0,0 +1,113 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/queue.h" +#include "driver/gpio.h" +#include "driver/adc.h" +#include "driver/gptimer.h" +#include "esp_log.h" +#include "dac_continuous.h" + +#define EXAMPLE_TIEMR_RESOLUTION 1000000 // 1MHz, 1 tick = 1us +#define EXAMPLE_WAVE_FREQ_HZ 50 // Default wave frequency 50 Hz, it can't be too high +#define EXAMPLE_CONVERT_FREQ_HZ (EXAMPLE_ARRAY_LEN * EXAMPLE_WAVE_FREQ_HZ) // The frequency that DAC convert every data in the wave array +#define EXAMPLE_TIMER_ALARM_COUNT (EXAMPLE_TIEMR_RESOLUTION / EXAMPLE_CONVERT_FREQ_HZ) // The count value that trigger the timer alarm callback + +static const char *TAG = "dac continuous(timer)"; +static const char wav_name[DAC_WAVE_MAX][15] = {"sine", "triangle", "sawtooth", "square"}; +static dac_channels_handle_t dac_handle; + +static uint8_t sin_wav[EXAMPLE_ARRAY_LEN]; // sine wave values +static uint8_t tri_wav[EXAMPLE_ARRAY_LEN]; // triangle wave values +static uint8_t saw_wav[EXAMPLE_ARRAY_LEN]; // sawtooth wave values +static uint8_t squ_wav[EXAMPLE_ARRAY_LEN]; // square wave values + +/* Timer interrupt service routine */ +static bool IRAM_ATTR on_timer_alarm_cb(gptimer_handle_t timer, const gptimer_alarm_event_data_t *edata, void *user_data) +{ + static uint32_t point_cnt = 0; // For counting the output points of one wave + static uint32_t index = 0; // The current index of the wave buffer + static dac_example_wave_type_t wav_sel = DAC_SINE_WAVE; // Start from sine wave + + // Switch wave every EXAMPLE_WAVE_PERIOD_SEC sencond + if (point_cnt < EXAMPLE_CONVERT_FREQ_HZ * EXAMPLE_WAVE_PERIOD_SEC) { + switch (wav_sel) { + case DAC_SINE_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, sin_wav[index])); + break; + case DAC_TRIANGLE_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, tri_wav[index])); + break; + case DAC_SAWTOOTH_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, saw_wav[index])); + break; + case DAC_SQUARE_WAVE: + ESP_ERROR_CHECK(dac_channels_set_voltage(dac_handle, squ_wav[index])); + break; + default: + break; + } + point_cnt++; + index++; + index %= EXAMPLE_ARRAY_LEN; + } else { + wav_sel++; + wav_sel %= DAC_WAVE_MAX; + point_cnt = 0; + index = 0; + ESP_EARLY_LOGI(TAG, "%s wave start", wav_name[wav_sel]); + } + return false; +} + +static void example_generate_wave(void) +{ + uint32_t pnt_num = EXAMPLE_ARRAY_LEN; + for (int i = 0; i < pnt_num; i ++) { + sin_wav[i] = (uint8_t)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(EXAMPLE_DAC_AMPLITUDE) / 2 + 0.5); + tri_wav[i] = (i > (pnt_num / 2)) ? (2 * EXAMPLE_DAC_AMPLITUDE * (pnt_num - i) / pnt_num) : (2 * EXAMPLE_DAC_AMPLITUDE * i / pnt_num); + saw_wav[i] = (i == pnt_num) ? 0 : (i * EXAMPLE_DAC_AMPLITUDE / pnt_num); + squ_wav[i] = (i < (pnt_num / 2)) ? EXAMPLE_DAC_AMPLITUDE : 0; + } +} + +void dac_continuous_by_timer(void) +{ + gptimer_handle_t gptimer = NULL; + gptimer_config_t timer_config = { + .clk_src = GPTIMER_CLK_SRC_DEFAULT, + .direction = GPTIMER_COUNT_UP, + .resolution_hz = EXAMPLE_TIEMR_RESOLUTION, // 1MHz, 1 tick = 1us + }; + ESP_ERROR_CHECK(gptimer_new_timer(&timer_config, &gptimer)); + dac_channels_config_t dac_cfg = { + .chan_sel = EXAMPLE_DAC_CHANNEL, + }; + ESP_ERROR_CHECK(dac_new_channels(&dac_cfg, &dac_handle)); + ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + + example_log_info(EXAMPLE_CONVERT_FREQ_HZ, EXAMPLE_WAVE_FREQ_HZ); + example_generate_wave(); + + gptimer_alarm_config_t alarm_config = { + .reload_count = 0, + .alarm_count = EXAMPLE_TIMER_ALARM_COUNT, + .flags.auto_reload_on_alarm = true, + }; + gptimer_event_callbacks_t cbs = { + .on_alarm = on_timer_alarm_cb, + }; + ESP_ERROR_CHECK(gptimer_register_event_callbacks(gptimer, &cbs, NULL)); + ESP_ERROR_CHECK(gptimer_set_alarm_action(gptimer, &alarm_config)); + ESP_ERROR_CHECK(gptimer_enable(gptimer)); + ESP_ERROR_CHECK(gptimer_start(gptimer)); +} diff --git a/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py b/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py new file mode 100644 index 0000000000..1460667fed --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/pytest_dac_continuous.py @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.generic +def test_dac_continuous_example_with_12bit_adc(dut: Dut) -> None: + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC continuous output by DMA', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 0 io: GPIO_NUM_25', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 1 io: GPIO_NUM_26', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC conversion frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC wave frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10) + + +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_continuous_example_with_13bit_adc(dut: Dut) -> None: + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC continuous output by DMA', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 0 io: GPIO_NUM_17', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC channel 1 io: GPIO_NUM_18', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: Waveform: SINE -> TRIANGLE -> SAWTOOTH -> SQUARE', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC conversion frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: DAC wave frequency \\(Hz\\): ([0-9]+)', timeout=10) + dut.expect('I \\(([0-9]+)\\) dac continuous: --------------------------------------------------', timeout=10) + dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10) diff --git a/examples/peripherals/dac/dac_continuous/sdkconfig.defaults b/examples/peripherals/dac/dac_continuous/sdkconfig.defaults new file mode 100644 index 0000000000..83e2dfa154 --- /dev/null +++ b/examples/peripherals/dac/dac_continuous/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt b/examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt new file mode 100644 index 0000000000..85484ad64e --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(dac_cosine_wave) diff --git a/examples/peripherals/dac/dac_cosine_wave/README.md b/examples/peripherals/dac/dac_cosine_wave/README.md new file mode 100644 index 0000000000..372b450db1 --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/README.md @@ -0,0 +1,70 @@ +| Supported Targets | ESP32 | ESP32-S2 | +| ----------------- | ----- | -------- | + +# DAC Constant Example + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +## Overview + +This example shows the basic usage of outputting cosine wave by the DAC driver. The cosine wave is generated by the hardware cosine wave generator in the DAC module. + +This example will output cosine wave on both channels. + +## How to use the Example + +### Hardware Required + +* A development board with ESP32 or ESP32-S2 SoC + - Note that some ESP32-S2 DevKits have LED on it which is connected to GPIO18 (same pin as DAC channel2), so the output voltage of DAC channel 1 can't go down due the this LED. +* (Optional) An oscilloscope to monitor the output wave + +### Configure the Project + +There is a macro `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` in the example to choose whether put the two DAC channels into a same group + + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1, DAC channel 0 and channel 2 can be set to different cosine wave (but the frequency are same) by their own group handle. + - If `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, DAC channel 0 and channel 2 will be set to a same cosine wave by the same group handle. + +### Build and Flash + +Build the project and flash it to the board, then run monitor tool to view serial output: + +``` +idf.py -p PORT flash monitor +``` + +(Replace PORT with the name of the serial port to use.) + +(To exit the serial monitor, type ``Ctrl-]``.) + +See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. + +## Example Output + +The DAC channels can be read by ADC channels internally. The ADC read period is 100 ms, the following log is the raw ADC value read from the DAC channels. But since the ADC sample-rate might be lower than the DAC cosine period, the sampling value can only indicate that the voltage is changing. + +``` +DAC channel 0 vaule: 647 DAC channel 1 vaule: 1728 +DAC channel 0 vaule: 2112 DAC channel 1 vaule: 2166 +DAC channel 0 vaule: 778 DAC channel 1 vaule: 2483 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 1922 +DAC channel 0 vaule: 238 DAC channel 1 vaule: 1282 +DAC channel 0 vaule: 3187 DAC channel 1 vaule: 2609 +DAC channel 0 vaule: 627 DAC channel 1 vaule: 1068 +DAC channel 0 vaule: 3168 DAC channel 1 vaule: 2624 +DAC channel 0 vaule: 225 DAC channel 1 vaule: 1286 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 2083 +DAC channel 0 vaule: 89 DAC channel 1 vaule: 1934 +DAC channel 0 vaule: 3603 DAC channel 1 vaule: 1434 +DAC channel 0 vaule: 725 DAC channel 1 vaule: 2469 +DAC channel 0 vaule: 2277 DAC channel 1 vaule: 960 +DAC channel 0 vaule: 1306 DAC channel 1 vaule: 2670 +DAC channel 0 vaule: 1670 DAC channel 1 vaule: 899 +DAC channel 0 vaule: 3189 DAC channel 1 vaule: 2609 +DAC channel 0 vaule: 86 DAC channel 1 vaule: 1459 +DAC channel 0 vaule: 4095 DAC channel 1 vaule: 2258 +... +``` + +If monitoring the DAC channels with an oscilloscope, there will be two same cosine waves at 1000 Hz if `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 0, and two cosine waves with opposite phase and different amplitude at 8000 Hz if `EXAMPLE_DAC_USE_SEPARATE_CHANNEL` is 1. diff --git a/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt b/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt new file mode 100644 index 0000000000..400ee7ff1c --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "dac_cosine_wave.c" + INCLUDE_DIRS ".") diff --git a/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c b/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c new file mode 100644 index 0000000000..4427fc9eb5 --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/main/dac_cosine_wave.c @@ -0,0 +1,111 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "driver/dac_driver.h" +#include "driver/adc.h" +#include "esp_check.h" + +#define EXAMPLE_DAC_USE_SEPARATE_CHANNEL 1 // Whether to register two DAC channels in separate control group + +#if CONFIG_IDF_TARGET_ESP32 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_8 // GPIO25, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_9 // GPIO26, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_12 +#elif CONFIG_IDF_TARGET_ESP32S2 +#define EXAMPLE_DAC_CHAN1_ADC_CHAN ADC2_CHANNEL_6 // GPIO17, same as DAC channel 0 +#define EXAMPLE_DAC_CHAN2_ADC_CHAN ADC2_CHANNEL_7 // GPIO18, same as DAC channel 1 +#define EXAMPLE_ADC_WIDTH ADC_WIDTH_BIT_13 +#endif +#define EXAMPLE_ADC_ATTEN ADC_ATTEN_DB_11 + +static void adc_monitor_task(void *args) +{ + /* Set the ADC channels, these channels are connected to the DAC channels internally */ + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + ESP_ERROR_CHECK(adc2_config_channel_atten(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_ATTEN)); + + int chan1_val = 0; + int chan2_val = 0; + while (1) { + /* Read the DAC output voltage */ + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN1_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan1_val)); + ESP_ERROR_CHECK(adc2_get_raw(EXAMPLE_DAC_CHAN2_ADC_CHAN, EXAMPLE_ADC_WIDTH, &chan2_val)); + printf("DAC channel 0 vaule: %4d\tDAC channel 1 vaule: %4d\n", chan1_val, chan2_val); + vTaskDelay(pdMS_TO_TICKS(100)); + } +} + +static void dac_init_channel(dac_channel_mask_t mask, dac_cosine_config_t *cos_cfg, dac_channels_handle_t *dac_handle) +{ + dac_channels_handle_t handle = NULL; + dac_channels_config_t cfg = { + .chan_sel = mask, + }; + /* Allocate the channel group */ + ESP_ERROR_CHECK(dac_new_channels(&cfg, &handle)); + /* Enable the channels in the group */ + ESP_ERROR_CHECK(dac_channels_enable(handle)); + /* Initialize DAC cosine wave genarator */ + ESP_ERROR_CHECK(dac_channels_init_cosine_mode(handle, cos_cfg)); + /* Start to output the cosine wave */ + ESP_ERROR_CHECK(dac_channels_start_cosine_output(handle)); + + *dac_handle = handle; +} + +static void __attribute__((unused)) dac_deinit_channel(dac_channels_handle_t dac_handle) +{ + /* Stop outputting the cosine wave */ + ESP_ERROR_CHECK(dac_channels_stop_cosine_output(dac_handle)); + /* Deinitialize the cosine wave genarator */ + ESP_ERROR_CHECK(dac_channels_deinit_cosine_mode(dac_handle)); + /* Disable the DAC channels */ + ESP_ERROR_CHECK(dac_channels_disable(dac_handle)); + /* Delete the channel group */ + ESP_ERROR_CHECK(dac_del_channels(dac_handle)); +} + +void app_main(void) +{ +#if EXAMPLE_DAC_USE_SEPARATE_CHANNEL + dac_channels_handle_t chan1_handle; + dac_channels_handle_t chan2_handle; + /* Adopt different cosine wave configuration to the two DAC channel + * But take care that the two channels can only be configured to one frequence + * If they are differt, the latter frequency will cover the former one + * The example here will produce cosine wave at 8 KHz on both channels */ + dac_cosine_config_t cos1_cfg = { + .freq_hz = 1000, // It will be covered by 8000 in the latter configuration + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + dac_cosine_config_t cos2_cfg = { + .freq_hz = 8000, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_180, + .scale = DAC_COSINE_ATTEN_2, + }; + dac_init_channel(DAC_CHANNEL_MASK_CH0, &cos1_cfg, &chan1_handle); + dac_init_channel(DAC_CHANNEL_MASK_CH1, &cos2_cfg, &chan2_handle); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#else + dac_channels_handle_t chan12_handle; + dac_cosine_config_t cos_cfg = { + .freq_hz = 1000, // 130 Hz ~ 200 KHz + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + dac_init_channel(DAC_CHANNEL_MASK_BOTH, &cos_cfg, &chan12_handle); + xTaskCreate(adc_monitor_task, "adc_monitor_task", 4096, NULL, 5, NULL); +#endif +} diff --git a/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py b/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py new file mode 100644 index 0000000000..1a3cebd4ad --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/pytest_dac_cosine_wave.py @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.generic +def test_dac_cosine_wave_example_with_12bit_adc(dut: Dut) -> None: + res = [] + for _ in range(20): + res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + + chan1_val = [] + for val in res: + chan1_val.append(int(val.group(2))) + + assert min(chan1_val) < 300 + assert max(chan1_val) > 3500 + + +@pytest.mark.esp32s2 +@pytest.mark.generic +def test_dac_cosine_wave_example_with_13bit_adc(dut: Dut) -> None: + res = [] + for _ in range(20): + res.append(dut.expect(r'DAC channel 0 vaule:( +)(\d+)(.*)DAC channel 1 vaule:( +)(\d+)', timeout=10)) + + chan1_val = [] + for val in res: + chan1_val.append(int(val.group(2))) + + assert min(chan1_val) < 600 + assert max(chan1_val) > 7000 diff --git a/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults b/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults new file mode 100644 index 0000000000..83e2dfa154 --- /dev/null +++ b/examples/peripherals/dac/dac_cosine_wave/sdkconfig.defaults @@ -0,0 +1 @@ +CONFIG_ADC_DISABLE_DAC=n diff --git a/examples/peripherals/i2s/i2s_adc_dac/README.md b/examples/peripherals/i2s/i2s_adc_dac/README.md deleted file mode 100644 index 027dac5450..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/README.md +++ /dev/null @@ -1,94 +0,0 @@ -| Supported Targets | ESP32 | -| ----------------- | ----- | - -# I2S Built-in ADC/DAC Example - -(See the README.md file in the upper level 'examples' directory for more information about examples.) - -In this example, we configure I2S to work in I2S_ADC and I2S_DAC modes and then: -* recording sound from ADC, -* playing the recorded sound, -* playing an audio file in flash via DAC. - -#### Note: -The `tools` directory contains `generate_audio_file.py` script for generating audio files: - - * The script provides an example of generating audio tables from `.wav` files. - * In this example, the `wav` file must be in 16k/16bit mono format. - * The script will bundle the `wav` files into a single table named `audio_example_file.h`. - * Since the ADC can only play 8-bit data, the script will scale each 16-bit value to a 8-bit value. - * The script will covert all signed values into unsigned values because only positive values will be output by the ADC. - -## How to Use Example - -### Hardware Required - -* A development board with ESP32 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) -* A USB cable for power supply and programming -* A microphone (with amplifier) and one or two speaker(s) for testing. - -The following is the hardware connection: - -|hardware|module|GPIO| -|:---:|:---:|:---:| -|Microphone|ADC1_CH0|GPIO36| -|speaker(R)|DAC1|GPIO25| -|speaker(L)|DAC2|GPIO26| - -### Configure the Project - -``` -idf.py menuconfig -``` - -* Set the flash size to 4 MB under Serial Flasher Options. -* Select "Custom partition table CSV" and rename "Custom partition CSV file" to "partitions_adc_dac_example.csv". - -(Note that you can use `sdkconfig.defaults`) - -### Build and Flash - -Build the project and flash it to the board, then run monitor tool to view serial output: - -``` -idf.py -p PORT flash monitor -``` - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. - -## Example Output - -Reset your development board. The application it will first record the sound through the microphone. Then it will play the recorded sound, and finally a piece of audio stored in the flash. The following is the output log: - -``` -partiton addr: 0x00110000; size: 2097152; label: storage -Erasing flash -partiton addr: 0x00110000; size: 2097152; label: storage -Erase size: 323584 Bytes -I2S: PLL_D2: Req RATE: 16000, real rate: 1004.000, BITS: 16, CLKM: 83, BCK: 60, MCLK: 83.333, SCLK: 32128.000000, diva: 64, divb: 21 -Sound recording 5% -Sound recording 10% -... -Sound recording 97% -Sound recording 102% -playing: 0 % -playing: 1 % -playing: 2 % -... -playing: 96 % -playing: 97 % -playing: 98 % -Playing file example: -I2S: PLL_D2: Req RATE: 16000, real rate: 1004.000, BITS: 16, CLKM: 83, BCK: 60, MCLK: 83.333, SCLK: 32128.000000, diva: 64, divb: 21 -``` - -## Troubleshooting - -* Program upload failure - - * Hardware connection is not correct: run `idf.py -p PORT monitor`, and reboot your board to see if there are any output logs. - * The baud rate for downloading is too high: lower your baud rate in the `menuconfig` menu, and try again. - -For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt b/examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt deleted file mode 100644 index 61fac40e63..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/main/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -idf_component_register(SRCS "app_main.c" - INCLUDE_DIRS ".") diff --git a/examples/peripherals/i2s/i2s_adc_dac/main/app_main.c b/examples/peripherals/i2s/i2s_adc_dac/main/app_main.c deleted file mode 100644 index 7fa073b51e..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/main/app_main.c +++ /dev/null @@ -1,303 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - -/* ADC/DAC are not supported in the new I2S driver, but still available in the legacy I2S driver for backward compatibility - * Please turn to the dedicated ADC/DAC driver instead */ -#pragma message("ADC/DAC on ESP32 will no longer supported via I2S driver") - -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "spi_flash_mmap.h" -#include "esp_err.h" -#include "esp_log.h" -#include "esp_partition.h" -#include "driver/i2s.h" -#include "audio_example_file.h" -#include "esp_rom_sys.h" -#include "driver/adc.h" -#include "esp_adc_cal.h" - -#if CONFIG_IDF_TARGET_ESP32 -static const char* TAG = "ad/da"; -#define V_REF 1100 -#define ADC1_TEST_CHANNEL (ADC1_CHANNEL_7) - -#define PARTITION_NAME "storage" - -/*--------------------------------------------------------------- - EXAMPLE CONFIG ----------------------------------------------------------------*/ -//enable record sound and save in flash -#define RECORD_IN_FLASH_EN (1) -//enable replay recorded sound in flash -#define REPLAY_FROM_FLASH_EN (1) - -//i2s number -#define EXAMPLE_I2S_NUM (0) -//i2s sample rate -#define EXAMPLE_I2S_SAMPLE_RATE (16000) -//i2s data bits -#define EXAMPLE_I2S_SAMPLE_BITS (16) -//enable display buffer for debug -#define EXAMPLE_I2S_BUF_DEBUG (0) -//I2S read buffer length -#define EXAMPLE_I2S_READ_LEN (16 * 1024) -//I2S data format -#define EXAMPLE_I2S_FORMAT (I2S_CHANNEL_FMT_RIGHT_LEFT) -//I2S channel number -#define EXAMPLE_I2S_CHANNEL_NUM ((EXAMPLE_I2S_FORMAT < I2S_CHANNEL_FMT_ONLY_RIGHT) ? (2) : (1)) -//I2S built-in ADC unit -#define I2S_ADC_UNIT ADC_UNIT_1 -//I2S built-in ADC channel -#define I2S_ADC_CHANNEL ADC1_CHANNEL_0 - -//flash record size, for recording 5 seconds' data -#define FLASH_RECORD_SIZE (EXAMPLE_I2S_CHANNEL_NUM * EXAMPLE_I2S_SAMPLE_RATE * EXAMPLE_I2S_SAMPLE_BITS / 8 * 5) -#define FLASH_ERASE_SIZE (FLASH_RECORD_SIZE % FLASH_SECTOR_SIZE == 0) ? FLASH_RECORD_SIZE : FLASH_RECORD_SIZE + (FLASH_SECTOR_SIZE - FLASH_RECORD_SIZE % FLASH_SECTOR_SIZE) -//sector size of flash -#define FLASH_SECTOR_SIZE (0x1000) -//flash read / write address -#define FLASH_ADDR (0x200000) - - -/** - * @brief I2S ADC/DAC mode init. - */ -void example_i2s_init(void) -{ - int i2s_num = EXAMPLE_I2S_NUM; - i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN | I2S_MODE_ADC_BUILT_IN, - .sample_rate = EXAMPLE_I2S_SAMPLE_RATE, - .bits_per_sample = EXAMPLE_I2S_SAMPLE_BITS, - .communication_format = I2S_COMM_FORMAT_STAND_MSB, - .channel_format = EXAMPLE_I2S_FORMAT, - .intr_alloc_flags = 0, - .dma_buf_count = 6, - .dma_buf_len = 256, - .use_apll = 1, - }; - //install and start i2s driver - i2s_driver_install(i2s_num, &i2s_config, 0, NULL); - //init DAC pad - i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN); - //init ADC pad - i2s_set_adc_mode(I2S_ADC_UNIT, I2S_ADC_CHANNEL); -} - -/* - * @brief erase flash for recording - */ -void example_erase_flash(void) -{ -#if RECORD_IN_FLASH_EN - printf("Erasing flash \n"); - const esp_partition_t *data_partition = NULL; - data_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, - ESP_PARTITION_SUBTYPE_DATA_FAT, PARTITION_NAME); - if (data_partition != NULL) { - printf("partiton addr: 0x%08"PRIx32"; size: %"PRIu32"; label: %s\n", data_partition->address, data_partition->size, data_partition->label); - } - printf("Erase size: %d Bytes\n", FLASH_ERASE_SIZE); - ESP_ERROR_CHECK(esp_partition_erase_range(data_partition, 0, FLASH_ERASE_SIZE)); -#else - printf("Skip flash erasing...\n"); -#endif -} - -/** - * @brief debug buffer data - */ -void example_disp_buf(uint8_t* buf, int length) -{ -#if EXAMPLE_I2S_BUF_DEBUG - printf("======\n"); - for (int i = 0; i < length; i++) { - printf("%02x ", buf[i]); - if ((i + 1) % 8 == 0) { - printf("\n"); - } - } - printf("======\n"); -#endif -} - -/** - * @brief Reset i2s clock and mode - */ -void example_reset_play_mode(void) -{ - i2s_set_clk(EXAMPLE_I2S_NUM, EXAMPLE_I2S_SAMPLE_RATE, EXAMPLE_I2S_SAMPLE_BITS, EXAMPLE_I2S_CHANNEL_NUM); -} - -/** - * @brief Set i2s clock for example audio file - */ -void example_set_file_play_mode(void) -{ - i2s_set_clk(EXAMPLE_I2S_NUM, 16000, EXAMPLE_I2S_SAMPLE_BITS, 1); -} - -/** - * @brief Scale data to 16bit/32bit for I2S DMA output. - * DAC can only output 8bit data value. - * I2S DMA will still send 16 bit or 32bit data, the highest 8bit contains DAC data. - */ -int example_i2s_dac_data_scale(uint8_t* d_buff, uint8_t* s_buff, uint32_t len) -{ - uint32_t j = 0; -#if (EXAMPLE_I2S_SAMPLE_BITS == 16) - for (int i = 0; i < len; i++) { - d_buff[j++] = 0; - d_buff[j++] = s_buff[i]; - } - return (len * 2); -#else - for (int i = 0; i < len; i++) { - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = s_buff[i]; - } - return (len * 4); -#endif -} - -/** - * @brief Scale data to 8bit for data from ADC. - * Data from ADC are 12bit width by default. - * DAC can only output 8 bit data. - * Scale each 12bit ADC data to 8bit DAC data. - */ -void example_i2s_adc_data_scale(uint8_t * d_buff, uint8_t* s_buff, uint32_t len) -{ - uint32_t j = 0; - uint32_t dac_value = 0; -#if (EXAMPLE_I2S_SAMPLE_BITS == 16) - for (int i = 0; i < len; i += 2) { - dac_value = ((((uint16_t) (s_buff[i + 1] & 0xf) << 8) | ((s_buff[i + 0])))); - d_buff[j++] = 0; - d_buff[j++] = dac_value * 256 / 4096; - } -#else - for (int i = 0; i < len; i += 4) { - dac_value = ((((uint16_t)(s_buff[i + 3] & 0xf) << 8) | ((s_buff[i + 2])))); - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = 0; - d_buff[j++] = dac_value * 256 / 4096; - } -#endif -} - -/** - * @brief I2S ADC/DAC example - * 1. Erase flash - * 2. Record audio from ADC and save in flash - * 3. Read flash and replay the sound via DAC - * 4. Play an example audio file(file format: 8bit/8khz/single channel) - * 5. Loop back to step 3 - */ -void example_i2s_adc_dac(void*arg) -{ - const esp_partition_t *data_partition = NULL; - data_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, - ESP_PARTITION_SUBTYPE_DATA_FAT, PARTITION_NAME); - if (data_partition != NULL) { - printf("partiton addr: 0x%08"PRIx32"; size: %"PRIu32"; label: %s\n", data_partition->address, data_partition->size, data_partition->label); - } else { - ESP_LOGE(TAG, "Partition error: can't find partition name: %s\n", PARTITION_NAME); - vTaskDelete(NULL); - } - //1. Erase flash - example_erase_flash(); - int i2s_read_len = EXAMPLE_I2S_READ_LEN; - int flash_wr_size = 0; - size_t bytes_read, bytes_written; - - //2. Record audio from ADC and save in flash -#if RECORD_IN_FLASH_EN - char* i2s_read_buff = (char*) calloc(i2s_read_len, sizeof(char)); - uint8_t* flash_write_buff = (uint8_t*) calloc(i2s_read_len, sizeof(char)); - i2s_adc_enable(EXAMPLE_I2S_NUM); - while (flash_wr_size < FLASH_RECORD_SIZE) { - //read data from I2S bus, in this case, from ADC. - i2s_read(EXAMPLE_I2S_NUM, (void*) i2s_read_buff, i2s_read_len, &bytes_read, portMAX_DELAY); - example_disp_buf((uint8_t*) i2s_read_buff, 64); - //save original data from I2S(ADC) into flash. - esp_partition_write(data_partition, flash_wr_size, i2s_read_buff, i2s_read_len); - flash_wr_size += i2s_read_len; - esp_rom_printf("Sound recording %u%%\n", flash_wr_size * 100 / FLASH_RECORD_SIZE); - } - i2s_adc_disable(EXAMPLE_I2S_NUM); - free(i2s_read_buff); - i2s_read_buff = NULL; - free(flash_write_buff); - flash_write_buff = NULL; -#endif - - uint8_t* flash_read_buff = (uint8_t*) calloc(i2s_read_len, sizeof(char)); - uint8_t* i2s_write_buff = (uint8_t*) calloc(i2s_read_len, sizeof(char)); - while (1) { - - //3. Read flash and replay the sound via DAC -#if REPLAY_FROM_FLASH_EN - for (int rd_offset = 0; rd_offset < flash_wr_size; rd_offset += FLASH_SECTOR_SIZE) { - //read I2S(ADC) original data from flash - esp_partition_read(data_partition, rd_offset, flash_read_buff, FLASH_SECTOR_SIZE); - //process data and scale to 8bit for I2S DAC. - example_i2s_adc_data_scale(i2s_write_buff, flash_read_buff, FLASH_SECTOR_SIZE); - //send data - i2s_write(EXAMPLE_I2S_NUM, i2s_write_buff, FLASH_SECTOR_SIZE, &bytes_written, portMAX_DELAY); - printf("playing: %d %%\n", rd_offset * 100 / flash_wr_size); - } -#endif - - //4. Play an example audio file(file format: 8bit/16khz/single channel) - printf("Playing file example: \n"); - int offset = 0; - int tot_size = sizeof(audio_table); - example_set_file_play_mode(); - while (offset < tot_size) { - int play_len = ((tot_size - offset) > (4 * 1024)) ? (4 * 1024) : (tot_size - offset); - int i2s_wr_len = example_i2s_dac_data_scale(i2s_write_buff, (uint8_t*)(audio_table + offset), play_len); - i2s_write(EXAMPLE_I2S_NUM, i2s_write_buff, i2s_wr_len, &bytes_written, portMAX_DELAY); - offset += play_len; - example_disp_buf((uint8_t*) i2s_write_buff, 32); - } - vTaskDelay(100 / portTICK_PERIOD_MS); - example_reset_play_mode(); - } - free(flash_read_buff); - free(i2s_write_buff); - vTaskDelete(NULL); -} - -void adc_read_task(void* arg) -{ - adc1_config_width(ADC_WIDTH_BIT_12); - adc1_config_channel_atten(ADC1_TEST_CHANNEL, ADC_ATTEN_DB_11); - esp_adc_cal_characteristics_t characteristics; - esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, V_REF, &characteristics); - while(1) { - uint32_t voltage; - vTaskDelay(200 / portTICK_PERIOD_MS); - esp_adc_cal_get_voltage(ADC1_TEST_CHANNEL, &characteristics, &voltage); - ESP_LOGI(TAG, "%"PRIu32" mV", voltage); - } -} - -esp_err_t app_main(void) -{ - example_i2s_init(); - esp_log_level_set("I2S", ESP_LOG_INFO); - xTaskCreate(example_i2s_adc_dac, "example_i2s_adc_dac", 1024 * 2, NULL, 5, NULL); - xTaskCreate(adc_read_task, "ADC read task", 2048, NULL, 5, NULL); - return ESP_OK; -} -#endif diff --git a/examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv b/examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv deleted file mode 100644 index 2d35c54f86..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/partitions_adc_dac_example.csv +++ /dev/null @@ -1,6 +0,0 @@ -# Name, Type, SubType, Offset, Size, Flags -# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap -nvs, data, nvs, 0x9000, 0x6000, -phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 1M, -storage, data, fat, , 2M, diff --git a/examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py b/examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py deleted file mode 100644 index 2a9af29b7b..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/pytest_i2s_adc_dac.py +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD -# SPDX-License-Identifier: CC0-1.0 - -import pytest -from pytest_embedded import Dut - - -@pytest.mark.esp32 -@pytest.mark.generic -def test_i2s_adc_dac_example(dut: Dut) -> None: - dut.expect('partiton addr: 0x([0-9a-fA-F]+); size: ([0-9]+); label: storage', timeout=30) - dut.expect_exact('Erasing flash', timeout=30) - dut.expect('partiton addr: 0x([0-9a-fA-F]+); size: ([0-9]+); label: storage', timeout=30) - dut.expect('Erase size: ([0-9]+) Bytes', timeout=30) - dut.expect('I \\(([0-9]+)\\) ad/da: ([0-9]+) mV', timeout=30) diff --git a/examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults b/examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults deleted file mode 100644 index 6e9a6a59e2..0000000000 --- a/examples/peripherals/i2s/i2s_adc_dac/sdkconfig.defaults +++ /dev/null @@ -1,7 +0,0 @@ -CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_adc_dac_example.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions_adc_dac_example.csv" -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y -# ADC/DAC are only supported in the legacy driver, suppress the warnings while using the legacy driver -CONFIG_I2S_SUPPRESS_DEPRECATE_WARN=y -CONFIG_ADC_SUPPRESS_DEPRECATE_WARN=y diff --git a/examples/peripherals/wave_gen/README.md b/examples/peripherals/wave_gen/README.md deleted file mode 100644 index 9feefb4c48..0000000000 --- a/examples/peripherals/wave_gen/README.md +++ /dev/null @@ -1,112 +0,0 @@ -| Supported Targets | ESP32 | -| ----------------- | ----- | - -# Wave Generator Example - -(See the README.md file in the upper level 'examples' directory for more information about examples) - -This example demonstrates how to implement a software controlled signal generator by utilizing the DAC and Timer Group drivers. All waveforms demonstrated in this example are generated by software. - -Users can connect DAC output channel to their devices and use it as a simple analog signal output source. - -## How to use this example - -### Hardware Required - -* A development board with ESP32 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) -* A USB cable for power supply and programming -* Target device or oscilloscope (not required) - -Make sure the DAC output pin (which is the GPIO25 if channel 1 set, GPIO26 if channel 2 set) is connected to the target device correctly. - -### Configure the project - -Open the project configuration menu (`idf.py menuconfig`). - -In the `Example Configuration` menu: - -* Use `DAC Channel Num` to select the DAC number. -* Use `Waveform` to select the waveform type. - * Select `Sine` (*default*), `Triangle`, `Sawtooth` or `Square` wave type. -* Select `Wave frequency` from the available range. -* Set the `Enable output voltage log` if you want to print the log in the terminal. - -#### Wave frequency - -For this example, the range of frequency is from 1 kHz to 17 kHz. **3 kHz is selected by default.** - -If you modify the frequency, you will change the number of DAC output points. This will affect the smoothness of the curve as well. -Each output point value is calculated by the DAC resolution of 8-bits (0~255). All of these raw values are stored in an array. - -Based on the given frequency, the number of DAC output points for each cycle can be calculated through the following formula: -```num_of_output_points = 1000000(us)/(7 us * frequency)``` - -For example, with high frequency, 20 kHz will generate only 10 output points; the curve will be edgy. - -On the other hand, 500 Hz, a relative low frequency, will result in many DAC output points and the array will not be able to store all of the generated data. - -Thus, there will be less output points per cycle in higher frequency, and more points in lower frequency. - -After the raw value calculation, the real output voltage can be converted through the following formula (VDD is 3.3 V): - -```points_voltage = (VDD * DAC_OUTPUT / 255)``` - -The voltage is within the range of 0~3300 mV. - -#### Enable output voltage log - -**Disabled selected by default.** - -If enabled, the expected voltage of each point will be printed on the terminal. - -### Build and Flash - -Build the project and flash it to the board, then run the monitor tool to view the serial output: - -Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the Getting Started Guide for all the steps to configure and use the ESP-IDF to build projects. - -* [ESP-IDF Getting Started Guide on ESP32](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html) - -## Example Output - -If an oscilloscope is available, the target wave will be displayed in it after running this example. - -#### Sine: -![Sine](image/sine.png) -#### Triangle: -![Triangle](image/triangle.png) -#### Sawtooth: -![Sawtooth](image/sawtooth.png) -#### Square: -![Square](image/square.png) - -The output log will be shown in the terminal as the following (if `Enable output voltage log` is enabled): - -``` -I (318) Wave generator: DAC output channel: 1 -I (318) Wave generator: GPIO:25 -I (328) Wave generator: Waveform: Sine -I (328) Wave generator: Frequency(Hz): 3000 -I (338) Wave generator: Output points num: 47 - -I (438) Wave generator: Output voltage(mV): 1656 -I (538) Wave generator: Output voltage(mV): 1863 -I (638) Wave generator: Output voltage(mV): 2083 -I (738) Wave generator: Output voltage(mV): 2290 -I (838) Wave generator: Output voltage(mV): 2484 -I (938) Wave generator: Output voltage(mV): 2678 -I (1038) Wave generator: Output voltage(mV): 2834 -I (1138) Wave generator: Output voltage(mV): 2976 -I (1238) Wave generator: Output voltage(mV): 3092 -I (1338) Wave generator: Output voltage(mV): 3183 -.... - -``` - -## Troubleshooting - -For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/examples/peripherals/wave_gen/image/sawtooth.png b/examples/peripherals/wave_gen/image/sawtooth.png deleted file mode 100644 index 20d6c38c324652984460859fb1d761261c181f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47422 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

Rfl8HMf4{+Ad-elg>wdIxc@@jVs#C0y_ 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 O7(8A5T-G@yGywpQ;bp4; diff --git a/examples/peripherals/wave_gen/image/sine.png b/examples/peripherals/wave_gen/image/sine.png deleted file mode 100644 index ed5a3177e39f8980b9e506beaa54b01b8f972d81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50835 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A#K6FCDRtf=1_lP664!_l$I_CF{33=R zPj`PGsJI|VJUG9!C^?nEB{)ig?g?@8j?8=^6}Ccl3m( zi(^Oy}j`uq38XZCMV(jQKD``uQ4={BQmQO8R^Wr2b%iYp9zHuuFEJ(yqnZOM%G zzk2O676c!YT5R7w`%I{T(8=xT_Ze;V>;5yHvHSb=a&G(q29+n}0yo1S&Ik^bP!gKE zb?Zcf1*QErwz*$ADZ!j^Bh+w4o1l+7GC9~ zl;vF9Uzd2~-g~>snqQy#mzUSa20dwgV1IAcM?VG+o_zhdJvYLlHkK+VUg5cU{7xdT z%-JZHt{sJ5GHC!bW4=x0r;o?wzrQ)O?-rBg0*`0OB0r}XB|cvL-|92N#3wvy zEG##F=ifD)#L=3PAK-B=>*1e|`P~+epRq7#irxFb`Q@^qnS$b#kelCsg!j+1Ueoy4 zzuV*BN>Toa*~@Pv@(V{U?`sc!e@U!)w_C(30hQRdX&Vd}ELEM4eb?M@OIG^Z8|Akq zr}%%z&gs5!-&x9{CFz({ZNKC@%LNnJIXfnu-0k;o{=b5%zt1;s`uXto<=N}s#ZNGe z`lt}JZFai)ja?$98$@1ly$;o2f5{o&DRxli7ZOlaZ`SxU-`@JQgbv?J-c_wa?7Q6aBMg%S?QTuxo&Wdc zR_(p-S{X9bJRN)Py>QnonemT7u*g^2(nC8>ieWAzbNSE2Lj65APrZx_x2+V2DF1nG zL&4cyA|4&W$}T@ur`Nwbw87R#<|aeY?-PqpT|BWh_{|3QqEeph&r6jLbeNZY70CFs zJa!^u*Q!(tIhL@aztTfzF;;&ooOOXi=9_#$-u{}Gr!qIM%FH>+a7-y}4P*b|zf;ql zLk;)-_+ad}{QLR>o5MNEb9QtG&14OH!p0tI6Uz^*x^ZBQ zmtn$rJGq}GOznFYu1g6ItCcDEbE-ES|3$1hwpBhEqhXinP-r>?i1E87kCm2I_O z%sE#t_oiIZg|;(|8lRY%xVt?=>>EXO%>L}%Wq?=)tpNoZFRpblvEwED)UihM2gR8yNfJQGjGbNwehavYV!zDxO6~OAM_anLu=l=Fyzs<-w-U2RsKT5wc;FXZ~)l0X}{&##H_9An}i-sjCps7 z?sGBt+4MH(_T$s7|D6&vZ>p=a>K@POzpH;+Ir0`ie|hF* zhl$%HXXY;8-qnBe>laU!kh4FxNE?2*Tz}soD$(a7-|j%|%~1vd#=n``|L#2y6mm;W zBy9e?Upg+cj}<*x@p;CUb+%hFUrfn6_i77^R*y{fl?49pdk+LHmdWUFo%qXnNk7Zy zxqcrvoZE1)#M(!zKpfDltz~7I~?7A;f>T74xEv zAL8~ti(Htd@NAE~#T!?@mt490UbFq;=4E9pu*~&-eam@vo8QYfF2%cC9h0n=ir;)M z(K=(J+uv^m-3Kl$-oxd*#IuJhaf!r=o8Q)$EoXk?cJ%RQq`wQ$sY~Fl* z>H4PHaw%61KUb}3_{YyKF3eZ6qN6U#-7+ch@>jpTiI>-NSHP#fzz)f5lSF9zxGBAA zdB5_Y&lN58m`**{X&XC_KTqGlS8&Tu{c>&F1#oKHWVb~A>q$}N#Y;mQSw9}(Est^Z zc`c|q#F;8Of%T)J)12ldanSE{Q0eyWd z-u}56)ib2?PIF9-Sbe0`ow9D zL9<&V>ta*bUnJbVCU=r|4|jgxliN(MUp_r7IA{B6>#x0Kx6DIcmg;0_)=sw0`?<;d zh03~$gAd&Q@6uJ~o~nH5hty-GY&)x?`xZ?9`01$k%8&23xBZDq$h_Ge%n%pVcT;Zh z@_n(jW{y3`$uL{0uEg>C#Fu4V>jH9?A1`ElGtmD zy>p|hXFM`)*{1O+x3SeL|Nmp1>OelyL{ip^Jfn|cKf=##iN8vheK`c{5Neb zx}IldufMVHx0->-Vm8iW#>!vX*l$;}PF~vhPJC(3{tBK<(FsZGq{LMCZyP!B8-Bn1 zK2f~x_U8%PKV6@3tZKR$?-keCZDp^Hl{9>dzag*td8V9ar08m)>icRdm+@Xn;NQ-%=5xj)gN_?Yp&W<4 zaErdad&0{^Ccf*TdD&7>Fl^0jF|D3O$^Rvj`TWynb?gjlcWSwUE+vH@@eE#avLlY$Q||ZNsXu~L7?xT!M4Fg{)SOFV_vhc)WO!3zLht4SyO@{rXZD8O zHZ-)_*WbI?J8qZd?UnpayG3?NTk+<+=@1t3-rRelu!raK!G?biPKzi1kj$5Mds0_^ zJ@P77o7qyHykm=kc|;t4N%-AV^}P^LCF{+8c|EI`km9o+6Ut@v%|xW_Ha&U9yg<13 zJp07esl2Oi9l7AKWiRIpx87TSFFluC92lE&`_abxk)8Ujj0Pn=-wt03cq*qOyC!$; ziodt!86IkQ=5l-Te6c?gOy2UBW))FHQbGI(M z%9H10-c_)8>bDEmbRJB0^jzX}$ZDoe&q0T-&&MiXSk}a>2;VHwS*5W5%QI#N6@#Ah z>=XCtnUzZG=Jux4wnQmqhHt;Se#UB@4=)ThzTC)rkbi$*${V9IH{*Gyn(y?UyXN>z zi)1zXbIi=={vB_-^F*)Wi{e{n3E{`5=l&~{=#V*nVngAtt=uY;uYNYTd;e*9Sx!pq zy=g0sUUO@hWs?2<^bU#Bdh4B&I7F;=zBb-+e_i9!T^@6O#X2uNaEbBqJRY8N4I7)5 z@@L9_njsPY?o0n+h!-!fk5!ntW?nmIQt?k)?>n=%J^Xf&Q{u~t9;M%}ii$LqUSG?- z&h|IO`mt>lhr)(uW|B8FnZF;ex%1|7d+nc;nG=%@1}y(WE7R)<&Iv^(-`BS=zK*wu-~T-EeR7)nzaPeL zW!{}SEM>#U-w{(Yl@cQ-^cuBET!xv*S0CMO-j3O^QPQnli8Ie z8;^OG@@+qxxJ`ZPpMT<8Zz6X`vGs=!oMfo`U%3yhv#e$GKqU6EB^5f(g*$PV91?7Pb4E@E+m>8;Y5BOhHTrWoZlAl#xVdE0Ldgr?Y|M;qa7)sZc9X60U zXK-6m*q(LTS!r94PEV1ZlgGB@NJx1%FSI@05prNgj*poM^R0D7IW5{3&u0Gqw)yt; z`+MrDr%GG(y~{Qe%87n=LoU5^Vq#gI&m)ltv-~eD=_hnl0}a%qXK!}wT{eqxf0 zRpIQylLa02o9*J%xtrlHeLUm*Go{cP3OJK z&Y3uE&(aW&js?ET_f`hKITqn{xNqU}4@}**bC0Dwn85QRY;Day=Sc?ErjimZj2@DX zPReo;V)>`03atC>rn>DoheVcnJuA0M_lt{{*tgZ4Opst~3!Yx|;m}lrGX{M68wy@X z#L6X>FY1zSJsCPfdv8IjN3!{x+sjM(5^T;-UVXS=s^OHUOx#8cZ*R>$pYNXcZl(T) zH_l$(8n?C`bP+q~Je%!s&f^bEr{8`0;=|T=q+#KTp1aClOTMKV8Q3ukXfRE3vw2p= zbb5mC1-4I@>MG{!eq{bA^}2`SuJh}&`EI*1amO$>rp3I!v~1zympsyCEA!56c+I8b zJLlqsu-y$?LN7O#sjp(Nbi4TEl){l4rXo`}X0zmPvUWF^_wD3WznzB;6i(JlFyE&y z6sfo2f(8r2Lf(zsN1=!2y;w~m3f>;dcJhc~2Ne|bgIZAM@EjKnLV z5pGY5%Z&^qGtPqDd~NOdU+T=08P775G{3oYVQHfDtw%4{&!4ux;N|q`v7&$4Cd)|) z9f*}`yC2T~*G=hf;^L5mR?T-YRTYg>3#XJzG<9mtdjbkU=RnEb5AWD5EoOOKIWI=G zZFSGWBgzX7JyPB(BIF+Dv&EI))nW%B{yHBJjjwgBGNttDshEHPN%D*AQ`SK6DD1fzg<#yIxOBiDCxtl5+s8CR71<#K|Et;v!O zkaM#?K%8sMI_-DENsD=RL_@#&g?udWTlej>Xz5gmkFqZXEc;hiOi~YTf2ftLahg>u zq+2(er~e-B4V^`fo=a>E&4iPCG&kG{R(M=d6mGJ2a^pz{E9NT^FIO5T8yQHhILxrV z*`#Fe1m#an!fkp@v91Z7$C8{4av~20E%x|5)5Dql^$CgneVn(06C~Y_{$2OEqNu&> zi(kmc6#sSK&WV~_Yq)K*?h$)xQK`hbHw#-dCf>W*_G6*$yqZr>PQ?c&>|EYZYqRt5 zGEl5TMl0P@8m>D^y;-_;^^1uTf3AF-x>~zLUS+~YpU2R0=XR>IbH+LLE$@=03Oouw zZ@qDo-)3%fPiEetu0+oywQ$3j!h4;9lP~F}^(EL`oxFN((NgsVB?slaPHEnrFhz5N z7KhH7hP_o^Uw!)~mh&nwGjTDeNz1dE(|M(=VSnz-meEF_q(gqoDFE3WOVem<+gmfTKMcwIs5vG#-}!?F0-w1{Nf_&|LRFrk?47cnkP2v z)WSdV9C81&W0Bx|YgVx*sT&Xc`ob34@HbC-*6yEQj#-{*7mqj>=l>i&a=Oa6;qy3B=&xNV}4%l|0}~d0hu3nUVeOh{A11=bD_I2 zb}7HVxc%Z2>iWgBR=C2iX7Qrcq7kmnrjylSgU14A8A?TYm%ZA(K4Y^88>`s9>1C>~ zyms}UOWL}w@4%tI&w4{b7Tj9B_vBr>Q(qbPPPGj@YHYuAR?Jaj0eQ>*)h9!3m_JUm zS(l;mB#HHP-s+0iel@ReyDd6>>H8(oHJTf?$)33R3-0eI1BX~w<$Y6AS+lv;9O~x~ zZ@gMNTRY;Tdu98Ho}K1_r3niAIxU+fudZNwr2M=PoRpp%Z@P8iuj?sLg)?hWskMK? z$q6akn^%iQynbw`46jiGni*d)OEpFnMqXd)QTgSxdqwPX_m)fFCGMGIF5_K0`Ikiv z4|C9#H=@@2=GifEUnwx&z4xNshny=#D{gjb9XXeJ^U148{NLrC&y{$$pm$F(%j3@Z zF>j}6+cGZYHgvXR6>FECwQ14;um5`$1tYFRELuIuWZL_iLZVZP&U|z+TW%-`N!61Z zn+*@VR_JwL=WT3VztVQsZLPTJ%xn2Ww{Wc4&8s59Xl?KF=HJ06?RvXEHIt?bKL0G8 zxT$(8llC(WeW`P6o^)!>+jjEm6RmlTKTcG}_^x{-+0p-`(6xEzCbdQPBUO%xL`;a_ zWfe0K{xadCpQ7l?bY7*kPyS}HPAg98}U4Qyx zO`de8p7(w4@C`w%Vj@CfqH{N$e7?PTeON+n^@TInpo!^0mBfN|ix&Rw^WOI66npC~ zj&C9n7a~kqrrEqv`c*3!wC?Ql?aAxI5-j_R9&dQJ-#YMUu^pC_WDveuyYQ0o?h2mE zF$bAAQ*@3qy#G{s^VxsfU0<_e%G<}9b*s*tfCuuMxu633h1|nQzJadIjI}J&5*}Db zwZQluk={2IXRu&ro(*C_O;SKS=&Ok-+#(B_=|>xoRT~q%-K6}r|?y+!0q$r zemG>dGwNvyYz?FBCpIc z)v|&Rzlt3x()xE#PB_rCOG`K+BYgYQEwzTX{AagqUKNra+Niqyv^&W85%cf!?Tc!h zYIP=D!oRV!wRZn1y?oUT>$;v4T15vY^j=>1abiIDMTImiA;TS~8P*>VDm868pcEx- z-)+?6$SP))d0O*!@m8kOcBhPw?W;Pawj%D|!+rAa@6E0I_43QV_|x6{*+2aIn<*T! z`i@`7Y7xVRn8G!IEgO%$K3+fHuEv6YJIj>yxf@8Xn&R0%pLDSqukgrmPWtik#!+?eknmU*u??2-Z&-Q1HO&)hj#cBF zxm7pn`Mb1rKfW(jpEt!}qTkM_#;KMb?mmxQud8q9yYW){t?+TFzxQJjVqZ#>yeZ3W zyt+|)cYfEdF1Fn+u1V5D&bf|TH`eH^h+m_9H(_yONPN%b_a$sv{Nfu=t0>C6*Ny#T zo8|fEz*%wIeN&cBF5l|erGJKf*4|Htdi6H+FMn~Rtx=TCdsmdLYiWAwf~8@c*dgeh0E$*_qo+ji#l z_4_Tyel7nWJ`HjxR1*-F!f5>FVkO2VX1nR$STRGk^W*wqsrEPj|(H9J%$Z zyYScCb6dssJbh#2`Jt_id(x+i?Mw20JgV*86rOm-aH-_+V4tn6hQdEbTt< zPX2$q;%n2(&pD25_FTu*oGpIz`h0QEkjj_6o4)mN?ef~TWM%LAiD^02&$SkxzNz`7 z%dIAKk57Ee^sUFb)}I!Ad0FVoWrIy~>y}^k=((Rd-P5V&ooh|vgJw1^+591ZX|<8y^}xAn7ctFyz2Hg4-Zz>X`i{k({`bMk!+ASfppw2t zZsVcTTPkCh9lKPTdb4ctt;M;qdoRB)d9_AmcB~qw=ga30F8wL?<(#%Y@SD~`J%5cp z^=fCGIiG8_**@^E{?LCr;j60H_M`MGmV|g1h)pM5Le`zB0xcp}7B!T(Wf|0Z810&z`f!w}Lsa}T9sQ#hO%{In5r3bbqEpc@N*Egr^`Y z4fpu$UVr*R#PPc~QYTHgdHvF#HEE#8j@%lja`X6Q*N<-2;eD^J*6Z&{-pj=;5&!q; zm#^{uKUN9ed&_J1#4CQ@+Y{&H7QMQYw_~Sa;NGgz{$Hp6Th@NPYIH&3%ZF=;YmPt3 zdcR`9?9{{m{Z8+x+w1dIe}74jS*m%@o`?6W!})?{?K~mMYnJ+2t4gJ9`pd5CsoU&! z9MqfK;&Wi>&&adCq*B*!%G&F(segI*qn(>snLU}h89tvo@^Z+Huo+)!OcY(v;d2WPe%qFYoTqEn6pZmH&Ut zzw}tS#?PN$`qxKEG8C1HMKG`N6u!#!Yv0l2MZ4s8@T>P!KPi)YJwN)d+rt?#Z)HW_ z^-tM&_{}k;urp@i8cqw>`>c zs-!&9JbOOt+I5ZUsiCi3gN}VHnRq|#xmDo9KJA<5f;hD!{%>_M+<9oO%xUq7dH$a! z3jh1qy7#JENHk-?HfugDTa&6Cb2sEZFXI05_HS&}pO(Punah_{9ee1dd|z2hQuAf2 zT=u;W>#Q?wTj(Zq1aj_sdca@et-fWvPTb^AEMnExQw}Jt%CwNYkmM0xGWX!N&CLfkNza{U!?sN* zqB3K>ardq+whDpRtzH~kS+5?;I+e%-PI0DB?Cbti{1lvRciUav-%xT(n(j|W%g zZq3@^7qaKBmwgT6|7~sNMMtBpK5#C+v%gi_eEtuCbxW!=14GyETym%|;N?|rE}a@< z`=ZN-tL(4sXnoy&;?0T;g*z@4eD8R5^!@qrpjYksAF7*nHE-MdV)OZTcPpgC`o*j- zeRwlbdolOjvXi2`W_z_ZSIj(CS}DjGzIoy1?fm~WC$;>!x47%+)%4xjr`x}NU^;#M zWAg9MEMk_DUI~I%P3G|Q=x>;_VYzX0<64$5wkxZB7p_~B7;w;^lh?j%rS81H&u(^$ z>#uW3UO4;3o6GU`qD~%7XV3q$DP%hukR>pap;_T zv1Im&oK;^VKFe!a``A=JIdy%yTiwj^Pja5K_AXeum6e5EthAuf?hp6fCA*kPXSKLB zUtND|7t?C_cQ=D3G}<(#hOaz-D4J78`s$YqHj8ToVS8S@Qd?%r!5q!G#&OqvZV8da zCOkI`wIke4g}(J`d@7fB|KpRscTe~Fh3v3rE{}is_jkRDKyLBU{D+VBpW`&W#<4Z< z>WZyf`U(T)&Oh=o@n>1YNjKZx!u30P4^Mq}MJ~`Wq4vjyGueMaGA>=YCMzE8pIa+G zPnPq%+|Hu1CC!s#E+#DgHc7Pm$c+cw1#C@c%m2oo=x%M>JY(ZcIpqa+-^CovI{voJ z^f{-F^aeZbeANv(A(t0RO2j8*Zn>Z->^yC0=?v7X>c873s;u z9QEbGvc|5A%NpfYA7$ebEURlhmWw%C}K2Q~%zp5MoEO=i6ln?~C< zp@`NW>$T?Y>N*x$T0iAnS5eU`b%!PM-Fk!%)_B^N?%MpkT|6RL?x}9T$A^m~Ug-aS zp11YoHOpsl=@O#+YY(m0ubll|q$RL&(yZOvU0c7hWyRasF`tWC@#I*gP?+VMaPq&U=*k0$hgZI>Zu;N1W7P?txX>qEZgIB8t2-Dc+I`X!wR~%%KJjIV z)z-p_#--NPIkVFfON{*!T7MqgsIvYXlXlN5EALvS)nd}6tYNw#;nDodzlAZq&YF4t zg+-}o?-H*(``xvF&%WLszH{N@7j;6h3lp6GzKFe5>-y_1>k~d6N-Wr~ypHF|-Lkhgr#s&I zeBZAA>nqWDIsg9rERKC>dgFzWRo}bj7OTZ+@@IeTQOot{`EhgA<<6jG(i87&?cK$6 zdR=|hF2ex54Tl0MOHMu%=bN|GS8@Yu*xhGeBBpb%*>z*xhHYnAuZb4TyPNt-OX_3j z-8*+4g#TRU==bwi$Ghg1iep~NbH$C98?Rq_n0rmnVw?VxOV)_3*!S;OOTSRT%cFNK z_h@fZ(uym2ZTGBNG?9B$b6?nbbfm8_xwLZWoO64o@#$~)lyNgTZ07;4?^W83qHd*gm)bRkcK7aLS}nF} z_1g5}#?q~4(o1BT+%{z#32!<&TgaBBG4}4cg$=oJGqx_=VpG&q|Gxq{UMe_c>Wm^Bnhr>HhH9dQY_+Q7yHCdixxB{ zE-4P@>AdcDSlP7W^15r^UQ67b2O2kR&@4Z=?B3zUhwK+@`dA+$QThK_+fJi>+pgt? z9A2^Opn=pa7SZEU{CBS%_RZNE@NjnLg@R2dw~O3#X$#~Ib-Ua+Tb}O)NnTawUV>6VJllx>7HEaiRBNq^Mez1@=IKJ zrZ?l>G#-odhisC=a%QUE|D>Jg8WJ8Vdi<99hOCW&;R#orN^`#!>@XLPxPGk0v%XSx ziD10+mZO*B?ax*?9$%Ao)9}lM30^zAl^>WV33&4NhUQo$aOr$!R6Z{J|6?h8>Gw35 zr?LjuoLYko_J@9XcJ}4l+n0ZTKdqfFa%e?`KHt2gE?(acOc$nXG+4FFmtE^Vi)cGT z^S^Jqh28$#-F^A>_4FBA12!s#==ygZk9aN{vSOjws$%=>h~~wIj9n|;ue{Em_V5^U z-Tl9N|1F7D`*b*KsZZ`7?Npz)2Y0S2vdeG`q!cx+9UxPsOj z^-8#0a#r4_+_C1H%$kaOw_U^bpPXB~RrXn=vE&Nv4H0WEKXBc?`9M+APCxbb1L_;H zE*@$NNZff~RqLx&uOz(^Vnsi<&b_+J>$c(5cOeOm9+LXb6MP#*jeltyZtClODl8Lv zBWzK%Xn(WI_Z?zdCnDpxe+tga(>U4Z^7UW*bLoav_XU%f`&?4h&A#R|b;+M|N_hGF z)S~4F7H{vWef~Un#;r=}hNr4#XQgCB)5O9z7+gCxDM&f3#(tuSMR@NGk5$*qe@|L* zd*y*oFPHCZDqXds$+dB6NzAziLTs{OCx%kE12Tt7;GktvP#qxt1RT&PMY0&r8 ztXj5rcCD@0&ARHxwc3fzi!c4Rp6Z_~&)F8=zco%!evbBH@!RjLb{1LX&QWFZ)|P%H z;r!^u-G;MDQbCI4nG$u(&4O+riOF0#zYj#%%$f7<(aYQe4zZ1*oD-ON7dId1aw+9a zT+Otam9uI`^cDNpB}N8Q4iqWP@l$8E(|!8+wHFubv=`DRr1s@#KGwcecVm*r;Tu;E z>If}=b7^I{@>|UfUla?sJ$0E=yZG47MXSQjB*tz%xZ+gS!b4td`(C(heaqkF(yI8( zReXBmwP=-9*9>}onLDa}pUup9?C#F34o5ehn|Dh$z;gHeCo(dkX<~USIW}ONIux}D2;oK z*b2V*=K)NwKjehJNr-T5_5K)qJbc}{3$+sh3N6gmt$O79uINS2x0!)I8t!%djaqSF z+n*k`d;9;pRE))wam`2UO42(B=I@{&g9(r?Rx)zyTm)cbBwlr%$I()^2oN!ez zV*C8N`~E%qdRtFg%Bgr?GpHSO{bTZv*Ia8n{H(awc!XRR*rv51YC?eChNuNrHFKRg z*Bss)yRn(^?~$+?!|nsSeyuHG<(4*)sTJVdy(n+RhXbB_Qle#Fi>o}>{rvOk8>iCcHN^rFA1)oXRSVzk_LQan_1CMfS3m0K z_!w-hAGe2L|6Mba=f7*`ALd^3>iGgetsIpNO1qC~=gBvUcD`DX=m|QJ-cwkxZ!kF$_Cj=v55ILJAZz8rn=2O=HTn6-X&!_f4<3M=A6i~>u`Yhsu#=F zT@aY%yx7mAlvV83A$G1yrs>6h=Q3R0fAOjqci_Vyb@ik>Vu$OC3$y*e9z4-_U{UOi z5(QhK&;@N`u6G0W)>Q73X50R_U`MYXWBn-iLbfJ8tp9s??LcEMY3$Hr(F@BPOoslM>V1aI18GOv2W~ zWqW2F7l}CjcxP;Xfv^9nnB&0-54XM44h%meYSn#pR~FOh@3(E={`t#tZT{rGbQXWs2ep7aMp4f^*y2qyUb#{HlRo$VEAPHJ^+-sF_SI0WcWqwWI(t_< zc;g-%B9U~5ahpx+>*b#p%@S^VnA3GCL%XirCuGjK8MprE*zF76szUW>D{a-n z+Z~Vg9hjjVk)r%LAuepguKc@U8{C8=W;UCYMJYE!Y=Pi=U%gH z1z*_D8BDJeRLtM{wb>NCXRLS5xWr@(BSZ4yO+v5vn(gW)U-;wxs(^*P2t`KdkFw)^zWz3*n!> zyZeWh_p^=BVZKk_IECyGXaD~oNie%||JpWP(W{>XA09ru%lZ#3vLf)JJO(2=FggyHF zLA>$lt(rRPZ&|EiUxUwch?)sStc-oFydfx1R>#gW!SrqQwgXvRuM(#AYi{6kE4utH zK=09a(?3I7g*{LF$iDjes_)-Z*X;jiWpYiSG5V5)lD68v)$9F)G+!^9 z7-?vFUc%_ZySs<4)K%B>zgDwJ{>T#?9q^Fj4hyrTCJlYxve2f)2>@H zIKeU5xACc6(G!h_Lgp;jIE*JBUnl*=?VeM}p3j_Y>&mun3kea3*mHB{`G$3@ZC{rx zN=gb|EUo3EWP9hKpQ-E7mA%e-FIQxDY5908DDerYT4TABX>UddOXJaNh5PT$h>>Lz zwQf>pJ|n6#A)qAWbLQGl9vf$TPhEOy>(4)BIom~b=C!g5f+lXWHra8j$G&=1wxa*Q zs_x42t*V@BmhF9f#ZNTCH&Av>k?mH^!e8Gn3Pk*6e6!tk)zTk&2C0G(<drf<|Nwfmp!9s;<3hJ!X=h^DKVz(y6y`Jvv==%nBZ{Z zfbg_RCARYr@5L;6vg10_;i{lO!;LF1@`g@2kk!@Y%+om4Wb5ojr{ta*1{TI0_E55% z&7Q8rBDPt`+E z;tkr6qY*OaMEu{>$Q@CB^VT=LkQR?ylkoR@rpCG(Uk@)xa-Vi|cE4Xm=pMbvdWH+S zwy5t}t(+)*&@J=fyGu`Z@0-3Zft5w<>jX26C0m5IozHJM`R*#$nnQu|>U*0Hc)iV$ zZ=BloO5$TB)9TFon_0txLyoVgDQGO^ne_WhQ8lA=_$Mn{44T<1FmF7n$~(vC*4nHipU)?o+bwlYVbh8! ztUN6IZ}(9xr?2|&mM%IZ@Yp`~=7$PChpdfD7iBdbT({X&Yn3EV)t|i3sV6HsSuJ=%Y(LEWIpr*##pin{5-q*c+$bdJV1$ z3?F?4RRy0X&DYv6Ymt@1)5qLvm?zv>%N^qVQP=3G_6C<&-$v2Hn)xY{^;M7U(RYI6 z5c$Sd=2q!*Qhx-5`xo8IVxG5l7T=cHja=cT|7Lfq^47J8WT2SIZUS={c(#XhP0-N%Q}QP1Ve_k3ADCYEu}+%c^|-bswo!ED#$OydXHO_F zc{|_Qde<>w>W9VW52=1V6O-5w9dOD`oA;xM+0`mFy0P_t`Sx2C zZ}M0V+{|Os(%n#S^r<=5+^^3qjRQ6+>SZ2S@jE|{Q|r*`ye)2}ViEJ_=a)pkbIq+z+0nZlccX2*%+pG1=j~rfhT+-30X<}oS<`uE;S%(9{ zV_BxX>rT{9T6{CiH$hj0jddD_bLI3C4P8kS`?kM+enRrkhVVA~eZwyXKhcQVfVbPHYHs*uU1nDF*eZklhTO6bMz#C& zq@_;#^?lO`I=FdbN1L%h%qySH@=d2z6z#q%6@?}Q$}P0_o^E$Ymj9lpj^@K{y%6eptteonkwX9-x_P4T(19DjpXP7gKuFLv!OCj%oR4(i5zx&_4KmGIN@>B8Z zXC9nN*nKoFJLJzZg%;CgK~JtpO+8@2y@r4J`~MsH*7C0^m6dnIzhl#Qb@~34Osn}< z{oQ87dadsGIk&tR_O}eT4~xVtJNw$mblTiGFAP;eDz2}%&0*%n4Vq}15Sf@+7q%HR z|F|Yfe^SMi4)Jte8)?sNyzeiW2E;1d%Ts3-{a0>dubjR|RL4fg-Ruu{+;{0d$(T}! z8`oA?lpl*Z_~`J{ovWlC>@f{*T*mDBc)_LRrx?RG6lidTpI&J3{vel3P`Rt*anaz4 znPoB4U6a>tl?&EeZSX1YNV{stjw>s)N~g!FajrDIbA0-AuEQ-m_o#rYvYW@ayCK zV0V|!9@MCASJ(!!$ruHacS>yn*b z!f%W`PpsKyV!t{ve({^ou(jfzHeN@pI}Yq>*ztTWAJgiVd1XwiS+3RnE^uwmGo8B^B+^+NnGO_qKV|8hbm(-+(bq*qOB+L*vi9%%)g`T*RQ1gyG~w%!ZO6AA6OTCbDuXHe%*Ji& zn^#-R1RMG(>vb~=sEiVhKuw?*PEYOOWu4aB^})>KQQ$}E%43l`SeJfWk@HG}=|f;z zY>w)RoH<);L;OK#(AsacKln7p^o z&e|>{1G{A5_J^TpNErmQ<_WB~1Fd4Or))afQz{?A zcH-*YvwW@+;J~H}akkbx2!~#I=?6%CX1C``_xxUu`~j z&o1Vwhf`Ym#Qg>B^OfIht}SsYw!1K;_i04Mlnq*Ox^1(jwQT2Jy!?QcBBZ?89pg6> zQR3X)`bZ>#`CHTRCmBrH4(k|B?&DkcD1}S^^7*>YZ;p10hcDWA!MEhw%k}fQ0#y>H zn&&gDiioS-wtHJmz$~sc?4DJ>e!af@I^QqN5@7P?3N6*$NTo?`r$vlvixX>1=HKa@_um@}KiI3gHWMm_>uPY-@OM zU=g3*h4%V|vqQoa0wyQO_ga6JiA#8!W23XfhTD1Vv)GcgTC=TRajkh);GWfRc<=O$ zeS#6nf;IwTeOtvMm>*U*Fg2>)&R}}Y_#mQw<+MkMhED@-Dee0|ePX-P!j%V<@+bN8c)Z3iBi+?ScUtYh1PrUR?2w?@{_Gc*eKv`un1+hK3b znbDr`|L-GNsrC1dJY)^4J@xC_3FCbB#?aO2&U0I{OIP{Z?s;+P#pS#*Z9^vQ-Jg=x zi#oO*klJ~AG3Oe?or|Kn+K-Fq+$-5@Z!MQJ|HOm8k7f$I`Tr@me{)v)jLR>5#M5Iz z?V;IuA}fA8+ALk-U@cv7D|B9Lv5nTcD941C(kD01=2JPgm@A}7sju|a#TRR~iD{)j zy?M@Ug~gqf$-FjIr{9HVC7p?2j>y_7`^en==*GBZ-wyBk_iV+SGu*2#vRn&@VdODa zZ)a2&isb6ux@TQ6_dR{Tu1h?>l~Sr7W&506tG%Jd;%nrN%?Ca?-s=AUNaxS|-wtcr ztK~b|9Zx>=6OD-en$TBj_E{!dcf+Ra*Apye9e8!&X^+~Ls4k!L9-V6{+jMy{LS3SH zEbBRaZ*AKwp?`4V`&t&Uebr68@!s$1wIn~^=ym`4bozH?&Q}FZ*}IM|<~m&Q_t(F~ z*w7Fs-H^mHE0^{L6z=%AG4R+mj!=e9pIjD}W4r8EF(ioP_I3F`s`&U@IA7(yjOfpc zZ3_D8nHFt?IJn8@_7ed-9IkTcvb$YUQ`L!nu!zp)ixY^qUEfcx}@jk zcgMiYP?y&AxqmhL**i13|TSm);CcxT>^b-GNoDS>j(sxYqou z?GcRl8~ApS>+%Cql0P$;vVGPWU76&!^Y5E)U(MIwk9*qIxA?bjTWHI~Y3{4dm@^n= zZcA?XCKyqZ^=MPm)$e|}wQr6ITvAt)yZXCcH(6`_HF@cyi@7$3e7}DuYQ>=$!QRpf zA4UBCa6ZJvyGA*LQ9~v>rnYu<-rqo0hRqqpA>zTmA12P5y;#ZqmH>E`@fo|APH9qb zb;`O)R_FR`{=fYkzCP~Z$!F*1+qZv)?H+Lws@{08&Fs={zuA6L8J@QddFA60j!rNr zI&(Dg$I}xY=WkS8lzmv-V!XySV#fYYr-UQ^?mn@Rk7Lch6=fG69lcT~5TUFr@0-wj zQZyt`%V60Z$ONKSxa3^d?~YDdje#G*rr$0|3XcoywPpD#81bi^T{~i~{N)45-xnTt z{?qGzG_m#KtX&l$i9$bFT;pnyOS+}))}lg>q!)52JdAk!>b14q@5NjUX&0ZZ_!9A% zXQ!psr^UREt%_=XbsDhL#%f*k`Q=&Bb+HS7-?>mbVZxDn7Y??IM>ubmXY`xjS}VSx zBWqXNhegq@38k(3N|UR0Y(FM+)$X{J!iGg!yY?yAUK7z%zHBh-fYfB|jMk6@pM#Hh zmma$+wKi-+ko!`vn%Ksr{hYk-YsB9D>pt4BWFk+}`bCF==I7Y|DfspA_~btdo$uwQ zN6n3L6}>6Y{=3`WJ+0+X)RDCO2t50U305et&I zbbfP0+Squ#dGtAQ$L<504!${bxI53kF|=EfuUxb-l>6$2uLWxw4WbiruUhw&Iwa(_ z=AJ1#%#`hOrYXy$(NrzG@$~|JgWzQcm_&mUcJ>R)sg@bq-#)Z;$>;rcj3H*{^5z+6 zZ8&mY?eX;o)(PB;yVwt$xBjuG?MICDCNZtu&xHJ4LzZw?r0m%G#EU6XFf?ViNW=x+ zeJk(Ehw}XJ4McE>=8tu41OG=aBU=75`U zL~@bn4!&Ou#;o9-EpgxplEOoakLW%7Z)>r?=I_?ndl!Tqu5P%xb=Bb&+oHPo7e~Fm zyi?{!>ST9Ky{eD)=a;Sw(+yeqw(YU@qDTAXGcIoD5MeufscS_<`i%$daR&Q-oszvR zKUMnp(sJRD)xp)mA=8god}9$+Gg@Bu{PGUw;1A10(re_?k8v2W_BZS*Ds6qYy^1ev z{zLPqmDQ7X2U?a_*1px>(2?kV>{VpNhkYM(Vq6n=@7*k_5M>RsoN+}ei6ty+E_>ho zuUF)J6M8G>1n3?;oP0_oA~>OvUs_J}UdL{x8c(kKa}WOBy}zCL^%S>7t1d^B=q83l z&uu-tVv%(@-=BZ->NdWCZL`B46&KD4l?{#AtQ{yC__Cj)HvUMoSWAyrw{$E$=xxq#|2jJKWSL*jtNU|eA;BN%YS|=x4rSLZL33Bu5F8baiPk!@hW5P0?zpdxR%63 zPn>tluW_rmlbZl2YAR)~JeawOW6kRO&)i#n-LSZA<8@AN`cnDz&$ZUS>2?X-d3Ecn zLo2>SM%34B3Cqr`ln8ZuTeaq=cG}9XA?{PT4oJoePEA`@utR%M(Ko9%R}QaL-tM|| zVn#K{>7QS>%wBwnVa~R*Q{}SL-RFG0QhIB}t84SaquI2U`82XtTCz_2ec*B6BfYv0 zuV(&yFuPt~;zIhvL)!0L_uei45|J%=QTD_I-mEk}<2%mA`(!O_w{E|r8d|k}`L}h} zL9M*8o=-|I%rs)XCKB=Mz>W=t2{)yc9$b0^u+3RBMbh&YW25ZJp{V z=b*35C%N%*+!i~vj|SXEpFcgl>6a@$wZQxATA}sJ%_fAb{G9OBA>pKY^9%81-|DK< zecoovW%DfB*x0*-_oWbjP-AJ} zp82xBb@s@=`8(m&@>a)$x8<{gt4rT#Y!I+q{!J^knx|tA->Y?otoEffPhWA}W#^nV zr}lQO+~oz9Reyigtv`Rrs6VzhvDmr?v{J5Lm4%wd9E3 z$__7kyHx=Rp)RTAl~)g^D}UUmGij5qmi!yvfQQ`WS1zAhxtCK*-u27v6&BZC2-cT1 zeXQk?4xL|icx}ppBuKLD*8?ZprgKc%JZWbxtz`)-HCx58=G6+f)f*NaxV0^N&kHH0 z?C22Zt^2e#v^hyL9Nu^@Ac6HkZiGms>=h13deK^waJR1P_pjO4^LOWDaGZVl@JiW# zQJsHG;qx~e^vB+PefF(^7RQ?H_jSK#J@C`{EBo)-hQlk2qMk=6n^*5xz4+9Nj=4dC zS7+~^yYJs?qdO6|Po#MYgh71u&@4=QyX({Dy_{MnCYHaSChu}6!g~2PwG}lY7xNcC zvbxj8blT1JfV7n4iWx?reMc(~9I}mBAGdec-o37_3EN(_sa+75_4%$vSw-X4hd!tC zskLH*ko5xpHl0)9bHS^%F$7 zb^c6y*e$L<>y_5xB9rI88IS&B>h?ePrdaIR#@SUD%zOD4HywEN_fSPx(RSS)E#|hm zDN6OC7F*}NS`ox(@mPD&uMZDx?);j_d#>#8xvmw5crCqagR7%M{8kj?HE}U%+iW#= ze7d-!PWq~N{XTt{{yE--XL8eTthlvRG`^TkYnjdOvzw3aue$T->%-^#zn0E!h<~4# z*W6OEO?IOB{Cg!4yARDMbS}=g!kGF~?X>rD`@@~jk~Y<(Kb&z#yYr@3Lg@1CT?bb6 zWo_XC`FOY4@^4!IS2JaAZF6LD6NqRINIU>al{(8zgd(=JT$0PpU$>57K}5pcI}I1k z-L}wNSzXBtboYskJn_CGaVt1fou2L5EoZ{q6Dyl^--`8LZ`-oqbmtgzVnwOPGq&9&WT ztFGxDyE4DAOSAjHs=d0uPHw&Ee^_*DSEU(=$a|C_-KymhE<;rY&OU; z)7y3R_O1NZUtPPir`0fJ?{^NC{kiJEs(VR`xh%Jui$wJ93X9Oa8dPKJvr=zE(viu6 z&9Rj?Z*{p^x#q-o#hzTXJS5>^-REc|~Db(ZrkLkw^J$LSL~^$FO_u=d7Crbj+> z?VfsIm7mdZDN||jyRUNJu5$vl8%&+PTiz*N)BCVPJi_hKhTX~>YYb1Gyuj|$`0>T` zeyx29wPD%GJiN;;I4dvfFsx*|c|zvCYeMP$W0gM4=MVi^l&{ubn7MSZ=yk8GDZ--r zdzc%qw#zVY6P_wKdCTdIZesfn&ktd4TD{nd^+Aum`_cT1X~xOS+U}{>CEq`Ey>3yp z-Sz3=`@*901DTeJ%DtPnqUOwvI%!e=Fb=-&C)TZJ1|Kv6}+)+X7d(Tsq>N1oNHdqU8l5R)nch7 zhs2n&Z?F5wa&6lRw+!33gx&@-HfH}Yj(c7SM<2YA2TwH4u9OSCEB1BsHbXa)wvXp> zejQ!BSt9r-1E=d^wzZRgHTS*X3A*7d_3>+u@`fMWF-7`JE1smQx^AhORQaar)b>K_ zz`#C-gxsRdn}tI;9rvtTAoMTCFRS%x;8Lc7W78KuQeLmsS8A!1o~}GsCa>m&=68vc z?#Z_oeQJE)*%d6^QgCPPfvQDCOa)fCAvV3ra_L1pw!730zg@Gi^|IU5MN_X>83!1q z7B@Z(_LvgPv!I==o2xgeaq7SBn=hI(G$s71Lo*)+Mx0|_`p);=IW->j^fdX#)GcEPTe0R^lI+tJKN_Q48$K&aJtu*Ji{7f?8)@%8jm`Du+%?aQU{bMUty?r_gyFDYu$$c`FY@$*E2IQSJPq z+4$)5?aj6P?_d2FROGkz^Omq-+_+`h!Q|~>t)Z_97d;XcXX-9@2+!2pB&5FT#GR`K zws%$^v|6C4bvIyAY+u*$J^SJ>FeAn`cWqS^EttnVxV0*`z@iq(3)u5W!K9Qg; zyRVtF&%9CEAhaDeYdT+4M@Hk$A(aJR&ffnJeEBr@p+}$3haWa(ZcsPgoH|QbRKBA} zbWNH0Qr2BhT|_(lwW>a+{k&iMlmB18XXWx`D=sZq@d8xNU9V+XwbVkm;)~eyD_UH^ z(#BEyBHPLtvabd??zIj4crd}@-{JUK?>e>S?J-!j{l4z`w}e8)Ud+L}K)TN5hI@kK zU)jp(;dj=ugasFE0?hzQhn;)4PHBVLn~u9%6gRwS$o_nUdyTEp=Bc0_-~FX#4bwD( z69N+)L-zjuZM{#(pImMypA@;WDA#Vk?Cage^@l<8)w8*D-W&9UAK3gM zjA^x|stxyYt~JY6n5~)95+VXlxMx@Lra$jq*JjvvcI95J4aW}3^tZTwlF6RnwpGMm zA^3yMY3=av7yq0N6|r9wiJ0y#&_Bt0dwIY8h6^DHOBa1Qv^MI2%hzACpZ?>Sv*bhF zp6U%1y`Hw*);m{ONm)*vy7 zby!qhz39^0wzmdaeC4mM@R{$5l5*QR>z;-JvuN1FzcdI0`DdFKGP3pSiL6*=x<Q4bzUeycF-6sMY=+KmU~d{j_sg zBg<~-I+qi(Yc@7reYg9LP1)Oh`7a6=9TK+q+4>xmRIA>CljIh6u1i~&(AYh{&dUGo2lYeEJr64XyjuhDrCF5cUEalBYuAR= zuxTwju{?R}gg0B}i3)|;TgR}3ojNAGapDu`mgH=A_M6X`R%?de1TAXe)qehGt;Pnk zH+^}t!ecDf)*F;Q*m~n5Q+9t(!47NgHPB(nDWbW8@sH;zhkIxUMp!&|;+K4HBk2As zvN!~v8RC%^;xAZA8zDcbqL!lC7PEx-IxE%$GYwb{eep_b*1jD6kd)o&{HhB?|lgi*pRP$Kl(6;#ix$>@#}IKD2uwPi*> z$K-vQ2To?D{QToK<4xS!15&>uqAv6*ZIuc%+M>k<7Dkge!JI9-BBraOmg|%Cf*NglwQg&2>dvY=gt$o?#hVAH=pRN2@HMSlAc(% zK;WiJaL7c7Hydn1sv`FPE&CaD^And|<_%wK+XIWu(|ydd!gX&>$Qc^lG;cdr^OQ zh}WT22NroON?X*GG|^0@=l!mZZTuy%jZ;l-*l?SRMtDvz zbpP$$ylzhWXUI=3UcWKP>3veo$9-<@f)W2^?;bwlAh)}-GWW2l);-oU&%bWXy&b>X z?P>ohoka7WOW&R7nzg9wNJ9J5g^!kUh;Ea3XA@HPp362WVd3oN1x8j^rKZNMf25qr z!}BdKJEW}JaGrsd-CV`etm7uK9h{4~RJLh6`l-t-8eB8|rC7uJ*MEMu2miRbA-DXh z%0ty{_ILK~;COg$#}}jjm+qFGzy9JOYglwt_LXxpZ$9dZW=@!Eb>r;0^oLe2w69)@ zN(gO=jOta~;I;a8dfmJOx02(x3q?2=9{ntRHOR(h*$=(TA48wIu(5>sl`geZN#t6? ztyMWCrsA)4%@tug^Pj(7|F)=Q{j^+d%92H1D|RV_EPiw~<1>G-$*QJvJA-$&^tJ1$ z<@yGyDqcKTx#G*-ww3pnU0M74jZMhDTbusQxwV4vFmH&=-#1pP)wezK;$HJ(!2V-|HmQTAGaE|-cqvL9<^lQ##L8m$6U1HOnka^-h7@++k@9% zv@vxrP~1@WYyahT{?o7jR_}T(VN>=xBz&bPHE}wTT<|*fzYb!qO=yv(~*Z$o3 zHT^ShRVK_3?dv-3c3LTm+yY9L9iz(|b9_C)d78ACv zNTxA#XY#yPL9El3&x+j@&Ao=vQ!*@J>oYC?gspB@xBNTDv^q0BNZY>YfYbbi8@Ju7 ziF(?T&9%l@Tu>}*!e9k7Mk?VB#mxAfn!#1{Ei^*&hwZFDD@Ts6gr&oVz&GgR- zirPYn%@e1dSm!dsWRovzn9wBOrsIMUwY%>B)VZ@fc;ebE zVi6M!s@h&Ye0THRv)regYtAN4XSk3IS~B9WcAhnBn6B4#*03E*Fa0TaJ1;1HajCsh zi_r6DjE@R}6CV2M=onqU+ps*ZH8kt;iXS~P_q3yycJ_Fgtm^r4V#@dbQDQnDPhT@I z__8`$K4i5)PlHW}O!k#&Uvk73msX2cd`V-^c{;IMukH8U``eoys1cF3I8=Lri!A@96^@m{yx6S2C?OUA63M zxmbkn?@3XXM@_B<)$sagUKRW3%O?}*#q?>q`~LFF5%O~{%;7J&E4pS+;Nj`Je)jn4 zZFv@&n*Q;|)^4*e86ok1pURzh#^k*?%bl-oy06)n@3+D>SX@h3(0bsNag*n9wt2lO zE39-fRT#6+in54(-BOq5Dv^>M^6*;i(upg6u!x;`&6mE}BV?c7)vuq0ra{tM?26{= zVT~*y8~6OmDbM|BVY}zRr_vf3d;MLqexAx-tU?od8+MAZ^_gnrC~nAlxF&*M-p+E? zfmJu$(?ctnPDfsin=_a7TEG^c#?Wlga`UKwQ?Df*6LixT>A&9{^jGIhJ>RLFt0J1+ zzCP|(w^8C)zdc`j+l1h$Zc``APhb3hZU4n7wE;&H?cJX){PpkmQ_p;f>^<8BA}Uv$ z+nbe;xPvwH>&jS;ZKmNC+YGl(fB5g=muJ2@H?FNnDvUYiy6DlBeTPJK?j&_=Jf=NK z+t(o2Y)7rfV~K;`?w>PZ+Lgl7E*^2Rr^H{vJ>lz1tMi9`+);5$`099d`P6GntNryS zMOpHHuUC8e*3QB|;q9*5GOz8JvNhJN;?Mz2G1g{iuraDtSYOUaSp1=db=tpMYjYn@ zbK4u(mYu%jZ2OGx|3&$nt2{nPCc3m;N7OHcot0%>g;mvNw!YQ zdfu2ArlNJs+|**Lalp$d>$dZM-RY^hZ|Z}$KAeZ!4;q+#yiupT=2zaT156BZo(5Zv zU2^x-I#m}nGozn!@mVeF&>lde^&bUOBm+IbyX`sb6v)M@WBEz0|sTKqiq z%!d2@M)!|1ejcb=lW?-&`14nbo!)#bw!Fr0Mm~|}%$JYVQ%txd@?K6X&RV>x`RjDs zBEQ^ew`97~ujdqGIVTkED8H-x+~B2LVcF+RE4=5v+-9tNbX`i7p2UUph+8HCrx+)j zEbb`1n195ZwzQ=1Xwt_`J2#&AZL@FIOOMr zflU|tnr|MPc2-4y*SVFwZJV;?jIRqsh|ZMRykAOm`8E!nm%k4l3;!O@GOc9t`D*U( z;Z42ebBli8eET{-ZvWm>yt3}!d5b=k^G84*$q5qcY5-D&=+ zu;IrJv))Mg`dj+nea)8jqS=D&_zdH>>m{bP?@bZ(n|xh|p1 zrBl~_pTpwDi{u?k-6cxWr}JNn?@_Bha#`xvIb%!j-ooj3W2ftV|MY+V@4SyDa_<6X zv^?Kmi#RH8@x0ZyE~J*o+-2wVn>J~#Qo|OWMZU~aFNqzlyKX4OBE0qT25wfdtD>up zUQ7s)+kblI$xO-lyN`Q(yRNz6+l|E)XSN;aI)68LiSCAPH@b7q*j$;LrM&xAqHyKW zubgWVCr)R69Fg4^8uxaCX^41)xw*N1+@2j;v8g3uciB0wy4|_paA#@bv`x8lUpUXv z+7O@~Z~wO>FuU`>qe#yEs!i-G5*B@u-Y=fJB?w%uSE! zb^muyo8I&VNvF;(H$QgkYWsZq1y{DWde=ru|C-zIvZe7|bIX;+567gXJl+Q#f03em zKx2}KRjI+;HbJonw}J}s!(x0KQ$DQ;iA`XYy1OC6r}1jLz`RLHtYPvYZ=+snZn*VT zX?L36+lwq=W&MXb-{j9bz!h#+p}93gzHzIi^jFqvXL}dcEwEf+|ERm?gk#xK<+Ab@ zf{UMVU3=DkLV<}}ILPeJG~ubLb5(U7-q7;QpK`iBcYOhC_moF!<$YT>N}ZCBNbXCp z(Yo`*&-Y|~aVfj@t&c0T%yvahU2w?Xsc=VO>aCjWBcjX8<{ijtSvBEpNXQH8<5G|B zWq7-W%Chk#|66@#<=n6X+|!Sg4Z0-)K`wkDwuYOvpMqCv=~jH{YzdX96qdcIAPai{^cw_jZf`1 zI8NBDaP;*5>V$%WmP?t8w{dB0zVxW}UK>;6(f^HI*}7{N7>8TfzI^y?;rpIb?1w)b zUmP{h?c*!E+4JQkw_d%~>mIuL=!`0ssdBFc_np4fq3xI3!Lu&r*aj8D-hiXb1#Zh0 zb-}IE}ic=rXs7YGtT~g`~RN1Lu}%-Y5Ack@s>P`*(&9P<_JVQesSVlOk&ObJ(2qo z+r>EzI}YWghnO)eSCFfs=XA6H0^J8$nY;-N+%;5s(lDvJKt6mwbkbQc< zZ|#1;RUr~?HCkFSpYPZ0o^xRO#((~cH)ZW!xnh;+pMZ;}r=Py!CciN;i@86C|LMm1 ziK+`LSf+@nMs)|YTFl)QlC{Bh5{G?vh6mSuUi3csrY(@UK0Fa*r*_Z#${m0IKPz)f?U|BqE;sdE z+HO&ugOdHHuCEuXb5yk#R(WmZ9(VB9Y1>wB|I6nSl=~C@Y;4^3S)}}dsLq_dA7d0} zUU`#tjKgTDOG2jO;@nf>R=NEm7yXqlou5_P7N~e=OZzsEGt{N}g~|)(e6KmWR%OGZ zS#M>JZayEtwAz?Es`A5^E0WIb&q~arx!3UBJ(-te(m3_*!~&&tJ2pM#TvPD0TJx>) z2D9|Vod>F_HtNoLoG5(z+kzNt)j4uf{8ufS4r{JyY!j4^-)ubTY8NOE9$2Te;YYR9 z5BcqA^eR+4e_Ej;l_GXIdtY6He7FbEr0*+9PZ_&N!hK6;DLV1sX#)X75_%)VOr@ zt@U@^6LQa;4`A|M(sRu@#PU(f#1|5prd@ADR!%#}v*4iA3qzi}bMzM7HvsKCyAjGF zR=qY*ZGUOM4&4>m;eN@wxK-54?%$0447ue?jJ2d2E(`Z_l^=Tb zu`9O$o@O&lJrrNM_&D={O^D0nK+5^ACR2c#pQfv-*)NO zAtC41O|?+m@TI^zRC2`(rreK^*=nZKwLYIT3dN6CuI65|Bdyx~Wu|2xrWc{5p_hMd z7msWKZ<&1KR?Ep>S+9N8+%WIK_j%^>H?tVrs(qN{v-kO23>V!M>H017Kw;$3{{MFW zUk5)8+kEh@;TjNE|-ud32vs!aQl+HHL7NbY2W!^2G+j=)v_uH$@A1s(w?}*M6jhWN>-&(ia z{h}@FwG&%n9$q;o5TV?kV6&}z`JwW;RjVu--Sb0VtqJ99 zSg6%!dTeev)0Hfx#d3~QC%*7`_+9BKr_Rm)rdM5`w#<6y8g@` zb(SJb+=q3|XEO3^zhX5}L-T^zb-nfTuKeiufO49r`4i=Omm7I$ziwo_l8;X?eY-EV za>;>B!r!01RNipxd5TG6==6os-% zJiEP>op1TWKUDn`nj34EyXUr7_=bYXe^!UD&&$sb6g16OX7*j6X!3lwalJ+3*ZA-5 z%F8t5Z*Hh+U}LIy!>+-n5;{&&SZbUM9$70b1xWRGtt$I!X1mlCnnrBhk1EjO3Fwr)$6bMb`sbB7B}8jq&(_*~R7*J@-> zKmOZVal?;*#|NfA`^B8xJ$L6Jf#B8$VQlwh56%so*t=n4S63C&W4Ve`;X9^YxfB|* zQZ%enJVYYz=7uH5=XX8oS#c>KNL6%a)R!ZNC-3E2UgjF&nbXo79M~u@@1*6mhiXP% z!GWnJ4}Bh9Y1^=^-5OHb>|Xn*^ybZ0#BfE}?h40;V2VaKNej%}P+L8a(3?yLm!J`A+^lKaZbT_fGr1 zdlGW)&{L*v(Y(AK{S9VIG!!+}`8)eC3eb4kc#IDD&_V@=ne5RnMcK;EFK^KO;0UJH}W zQQz=^@yg=eZ@t1dy!*u`)aACV^}w$WpV{}#d9=3wK-0G;VMi{$Y_U%KSZ(zFUtQJr zcYo$C?y+iAS6=PP#Uhrjmj5pAVnEqk>7uXy{=WSE-v9o;_n!`3c%ADUBGs0-e$gZ5 zq76;0+y$?BE52OYwR6cYMxW!&z2E;^?frTC1#QP-tUqr$MH2i;YVL@V$8o03))A%r)lcH z=DrEOe|SA|vzPyP&nm_(*RxtQ;<1eXW9~J)JGnU4@CHsbS-XD6x5yn!p6z|kr?f%q z61WI5^#}#$#yL!@SwGL_)QJwXv}G5LkZ`(pEuiSS@qf#VLLZf@oQwF{#6Ma}O4YhAwb_+r<+yL3z*3ohe!3OlAR7 zue8bO&M*9*Tv`8l*^*_!t|6`#dXv2aKHBrH@tIyDR@j+wQ`<51y4d@Jxd&%lIsJP6 zv!ZG_tumJH{^vz?CJ5Mz^?CeTu=vlXbFZwYOcqS8?qR6D{{6>KaOlg_o+}C!jEK}V z_mqlHFnw7Tvy`z>H2h#e;B1aH4!e@5 ztXJr~ZpV_wqjHb;&EXAXT@mNH^!ToK_U}|zFztNX#j|e1q=V}(-{L=%$9{OlO^4Je zYHytqUOx0YW!j{@$S6zirmo}BjmLIK2k&MPD)J7PYO?nDt+=MM4o9be+%TI-yS`zX z=$aR~;8S(WkLvAPEgJFjafo$sO=IZpQ+(I&k%972!tkdga^Ld zY|ysv{I;%D{5*?ArA5Pyyq0ad==Ew{uhv$!V~;P_+ur$-E+HD2y5*g>rsL6#+m>%z zztf|hbJYp8If`mLqBR3%6GhKBB)*j+W( zzd!2dP-YQh)9 z3>?#Mee{&$TGQGxsh3}PceUQ1qqi5WSY-ai%<9_jk}JEIxTU(IIbA26o*7vr#x}1= zB{b_m=(PJ0a_m#z-D(5vvE+T`-#e*px7n&I+g8q=zVdHr);8;XGE;ZoGs@@Gf^5iI)zW``{q&s2GvgQz>uxPl z@$w3W?6ZCN#%afunL_V#^fvs^&tH<`l+QfTZRPuiv8AkGHnR;U&Y7voq`hpRonchM z*UUoqwJa>x`l=XLM02jG-B>d3)@{x;MaQBz))a*-zItHeI=v0sUabs9D$ouw#kGp+ zR9laDp_<$;Pd||yA+iG&#y}At6r^L5|**}QNi`7AD*o(71E(us^?bD zjp`JP?>n_(!>K&ZRhth4o!@<5CRD4Td*$C$4eMs@WdYG4F+UW-RxsUaJE$b(*6^my zd#>h3(C)7z&*NP5?u+cGmf820uQb(~S+3+pWY+Im^S+JY;sTq?DyF2QT2HDFGh4T# z??Pj&?zuzE<>tat$EE&1dsn_g|J|7qL-`I&H!1y z;#$vZh2RysT5;1mO%?hhSPs{{lww-SbJ`emT4eb7Ou>kGxq=a$(pEVsH{@8}1SZt} zoBy5X@y_R;Zn)WKONu{O(tA8FDC}s0od#?06#u_BWu|U!mR|HIf>}atVo&3--?R7Y z8koC0P4S%L7h+*idC_zqx8#adNfU)bkN*0+YExk0j{E!e%IEofI5)djOSEAc-`2L> zGND=eNsqh(KBn^&Filz6do%XOp6Y`!OY+B0#q62bgY!!dw zEb(Jgq|0GRNxjl#N33tAP7;`3EojMljaByF+|Q9a91?!6ejoBkBx3HZd;Z2U*$!qb z*Xpb`uK52s^2h#imObVneBaxcR_{5l%Mxa}>S9)g`i81+C0sfi_DVOZ#vk2se`8as zb-1nf_V;oMjpezQIg|UfBj(r_#n0Na{NM5u^?VW0>4!Bpn7KbyNfZdF+R<1n5W<%1 z7c!e$M_r4#^8Z~1t>iV;N!$y%S}r;zOkLc?GG8Q&RWxkFE535kkcl=j4hajF`?W5a zdu!WFPEdxNm!%zXn(IchoDq*qeVclbxb5`m`uDcKIToi{_>d>Be8=m|nOYm>1XNqi zWm>J?aChs{_UiZt=Hd~*7jb8Nx4y=3-znj39?N6KaPf$bzSG_1oD&+^omE=PdGGZk zEZ$NuJ?O~t(4^P-iW_Qnb=ApdeA5!!Yrn4lz@oU1%sVwQ+g~k`{Ljbu_>WU{afsiZ z<^@K2yP6jmNfa+?I`AmBOeR}-}jjf4yavg&r*q#Yy?;74xwo=+;r*_|d$({;Gq}?fcJ6t# zBi|f}_<1J{x0)8otUI<%WO@3Y~ui8yHjs!~wI;^ zRa`uaCuyxH__o^mPH2Fn?bo-jR@$;o>t8BlzqG@D^^vf+S@O5fxz1T1`0bUFRrd0` z595?JY}yrM-1%HYcSDw0!H!)#jawK0d%5|88dJ7=3}?u>zJE-s=d2cES}k)GJdST$ zy$Uq*qdQ}{$j8j7H{85GC*R)L0ZJ;dF6nQ#2uH+pv9G(b^=a7(CC^_E=P#G9kBNK# zzcj86(h1<$cLD+t_3$c~r+a~C6bR}=& z*H5V%rrl}t5vI5FR~^>e(3NFVRdjcAf&Vr$@d#V%=%u=T zZ~rl^mZ|4%4DHLhA+?Ho%{<$=Osh?APf@a4E5yCP#D3e{Zj1QEZ?3wQT=TPTTq>`3 z>N$^VQck-TL&NtdMYsF0?xj08S1}}LO0kIU|Eu@djzg>2wzunW@8%71dCE%_Om@0WxEz%iGtdD`JDyV3?osg$WeM|VvgTfszQ6L@ zqodv07b9M%S^fTU-9Oc#HcGW@$8_lQd)dF}mOYP}jOR^M{`uIRed5Q^Lj_#VdMDhk z-+yOmV{~zW)w7kA!Xc|;rCCJ7jh<{i{0}nD~mgn_s^2qulRhw|y;i$-3T?LB`E1E?o9NvGyca^rlYEO<2Z*-mhE%Mo& zxu)MQ;~aaHxORjMck|_t#;3Av(^ywCtxkQsd;RWrkvo`WA9JkXo4fWl%kr{%(AeuT zCT;1fdP3#qpk?j5B`%05)JCZ;)P>E{AGj(S5%B0vjc(cxOWld5trsZ2W}J88L|3AI zUH!g=E$3%k_?qA3#awW!dBLNC_o=Mi4Ic#;7VnswbG@|aUT5I;Pls+X9T#O4TbDBT ze>v9zt}o*Mtv@#ZTmQdG-lJ94qethIvuI>xS%hwg%)2X>cL-PNhMYTfv~u39?do=R z$0Yd;?#y9iR2N!W((J#TX@i;Or}|slIOkk)d(E{b$YfrP+*6J9M#i>pLyFgPt;y1r z-KfO(UGJEbvcmyst~GPzIQBgHCLU4QvsEmja>chvM<3q1eFedu zt4~<5v)Jdp?pf+ryjvjRm%NMJOoL7TZOW7%uWrd~JgUFw^(=G8rHmGD9Rms@(&o-XbCOhrz zN$06|V^WezLw?Lm#fj13)oW156@qc>kyALS~PI(lX*u>hg}x&B`l<^H?}H+K{%J~f^dIDIg_{5X}$H|N+#Fy6^K3iE4k-a){5B+E-}pcmI2!I zS?sL->7UD^VTsiTRhltaap6%MrJvY zmqFLW%=q*-9J-qyQdKDSFL<$AU;J8`OP}m!9k}#n{`o`E+&aBk@t{0){QS`?c?ugo z1-#Ys_J8Z~aFeI}`QY8t59~tS^UD^Mt(?2r(CVl`nQD(;+FGgKq7fBwWoNdXv}gaN z^CpCC_JXLT*(M?Kc5}i_=WsW!w#^b>u=CO8^&c#+pPv5qR?Pay#Zmq5LKH@PoPUXD{BwSg^)$>&LE}Mmv&D zp&T1*u|CUr`o+Q$d6gp{=EyWV^UmI594X)N$mCGTo^6rNH!SuX;40rA_;S^OtSj#h zu9A&R$XsW{2h&e*E!@OUF0NrfrFbor7voqU3~0uht9oY&O`($-1IqOaJHH>Y$W*D`Q1m z{bmQTkco%)-Z~z|I7_=`;n&;w(_49aeuRZ{Ke!mZHZN=?`+=lao^x**ma-)&1xlJG zWIf(3KI8h24;gjc7ZlX%zJGoFJEF#9&R&5T=1m_J1UpyuF8|1=%XjVrSJ=rn$?kb} zdv_k%s_iSgi(hEcF%89t)v8Mh#o2P-Uf(7td^0PyQS@epXTfc9-J05Y zU{YMa+J-L?JqjC4=FPoTJ@b|?>ovdQdZJ~bjZ<%BxYg`Akn|MN?LYXaH%$6^=Ju$A zhYT`ARTn$mT++QoH}a9;pVg1M8t!uHth?z}7u$V2k4JiIlEMZ9u}_DJYv1GwhnVpk zHkQ(o%yu;WWE=5o@foqzQpXHf%iN_M8>KqC=5P5H$=c(Rx?%0|Z~gXCt)gY0141(_ zB3w&Dp3gpRe>(ol+P+iI9Q@yY;1Vka?F!-23Ah-LP&naJkLHF?6|3hhJ%7lrF?8=y z=P(b$-g~`j8%!Sl(%G~2z@-&s>E&V(m49BWyz7+kbm6VoFww@V3$IsY`8TqDy__iR zolv+`#X0sN!`-`FV)X*Ay7d=56X)w#v166vFP%3s(|rThmKBe#ro0I|zv%X8d_6T89TpfJ7!~gDC=c%{6vT900=BVvpJY6|Gi|5d* z6>r?WUU}y1{?_2_Nr$6Tb~dqU9TSSE$}oO&n0pP6->KlJ`K_k~-z{RRU3m3d#)Ges zGs62WI`s7~-+bVda*E$un|nPvev^e7Q?J}i3ip3&$MpK;`uTC-Ex{9gB;V<+d-8O@ z^_)cyyM8Y)GI*fVBfX_?`i%V0O5qSTkLq%hkWU*IEa;NS+a26%GfTUsRbY1h8fnIY zu+@Q<%w~mdiykdMPHI3)r&XnKL7rv zzy{gm3eXTCVmt6OL%-Ux^6gDiwKn{^kg;Wx)`p%RJ71?b%)hef{GoHRURxa(j41tm zb*CBM_l9I&*Q-$prO#?sKeM=|%CwsKhvtS~-1{^)++jCM-LZSer0GoF_ZekZ?B>^E zJixx|fzBE0vbi@P`-9w_Rnrq4kM2&Id*ZisBiCXb>3LlyC(LefaOqB5QE{<%&aKut z?u#aceb}LP)8K{gL)C>^DGGLbt+e_~S;D?uS=ZOq65#*YTUDj)tv+qCSn)drZ+ks27tykPQeLVi*#+Dx%jQTd2<{KD; z7Hr8AJTJB5OI!Y_cb!`M`WG)0vSYov{eSf#-wP8Wn``P=LTp6b8(3_ry5+y{O=J+e z%(a|;>4Y5{=Xo%93hi8z5c}7Rb=vO@4+9^8(#1@@poGvYvsF@Yic#}h7hiZ|-%+zj zdoibu!=r@~^u6=p=`=2k%$S? zgA+bR>@ujB5>t`={zJ0GA0?gr&ZmPn-;I(Fxukbq>U89fsl89%yzG2+=hZAza5g`> zQSQmhK8K@=^=z(Xueq)xpUbi|f8vTC4CS_4vo{q-hO20KcFn&vy;tSE>O!w|w&n{# zu_aKLwfx_S^3sqc?T2OmDKve&b;9AONJh8%e4EJH+8;lg1)ceMWgnC%9e93y=h|H9 z!y*yC3ami8uh+4KtvZm!a4=eR`O{SgK7|=_i!jS%|ELg?b4g&l)WGCDal8Fw@w;|R z+MNq5w@!W$#rrHmc~Y=-Xu{fUlVlG(e5bo%-g<7GK$SMVhkCraJrB10^;>@KRl@BR z7c}bLTUI}4^S*O8S?Ywsa@C##=_a))^A|kY(sJODk}+fUVs)*%c{k)Fr^>x6(El~1 zNt@5y-u~6)k_A&Ix*IUu*0_}X_vdrB#I1K#)><edS;MRf8L%stY$=mad$&=+fc2 zE&Bzv?uZ>Tec7||9N4>|k;;pXOi;VCbm8m9%ipZ$TCHx*UF@_tIALcxBWNu`?)rJt z7#l-(-wdb~Pk(6Nrj#D3#ay)`xLEpV@ebp2hk6xc7f0D%d&?3g6fX1n8k08XRl}yQ z1^pKm_p)A_JT+HP)&HH{-QdPYTmA|qEw`{O*d(WR%%W5**YJy8&bwa=4%xF#s}?H} zi^%`iCLa_NH-o?G;7x|>!lLrCnl>Bkzn=SG;@x>G<}l1TH!*N;WikIu`7@TgFP!CE z_rs)dy8dp{-Ip$$P~O25E4sgSw@=m?g*{Bc(Wy^nc*Y#{e=DP*rOr9^RCczRYpb#4 z7wvOT9){NMZto3v_~vYW_>0{lIShXOpmAL7h=XU<170j&xLR$N;HA@Z*EF`R z3$r%8rMY3w@vEKgox68zGY?9*nr9XgzkPE7#}UWVZo&}@Djgb2dk(%=-Y{v$tYGWT zbxR)PG)}$ZRr4W`RqQD5)ZSbJH*LAMDP4RQ{BD_)?Alh^ux@P=yggHP6SN6hHtzRc z_U``keE(H@0Pf!EiAfr;m}Qy&~I1rTDX{A z|E||rUf5&0@#yARja{11Y2e>+0V?0Tn;x3;#C8T|y-~WfV%pAI`PN&HZ@bCWRbu<) za>6mqiMh~pCfKp9|l9wbG$&%UM1t>fGsu=qw>pNUs*tjndxXQFs7yxfwxX4z}E#OYjX zX3w52t{-P|HPr2C24AmLdU9;z(%YqG;TKQxX9TF{J8pf=u5$b4iN)`)@zn3%uDDKer#I_X9o^bFf2m2y znlh`m8-$ngENJ|dc{!r=7n8}Yq{go=ecQLLZr>R9Z_&=#{`nSjZmrPXP;z$dTaU)8 zQf=$v{ZE&Pv)z64^~PdO9fS4lzpL05Ir~>0b&YO5qilQ4mo<#N%00X3@La78Ql%>X z@bTA6s3^D|aWE>x|Nh$ZT-RPr3^8=5pWPE4 zzq{^2j`i!R554L)zeHNpY#6c%*3#DL4{eU=u}r%=F{rWi_gU-J+9u_DX5X>YH9Y$yUY<+V_M?}(_w}b6 ze@;BO{l4D$_XoHAvR%x#!Y0A_-NeATtk>o{$7aMH({FFm{-gFWxyv=4XMs63J$TEyu7b8Hbf?yW6h+8pwdmE?SVjPX-H%1 zxm!}*IVo~$C7HMto@`xpMuO9sJ$~(hQ!-1YY~g8~8uYg(R^ox{^zxjXL)@%lQSt!^ zxraQzx>;UZVfl4YwBQ*vrqxRS_J&N=-SDccfTgk3`XaW|%w2J%adqy}d7Igl`xgjrxO`Gu&+DmY@{GHx-CXCw z!ge0A_p9l%kvDm@X4Rr%(a@vY9<9#m>I#mYXVP}F*RlWRt3{8l9ODW*c?INq-3?oI z&0^AiRKl_*(Wv z$Gq=?5vv`{1S3|j=o3G%a<0~fS3!nT4j5gzDiXn&%-bmX-}>qWPqz(kFETD#{a~Tu z(&NzwFKwUoDmtKd;sbm3w*8Ov-kVq0nw&>N5Oq*E4Vzu0aBLsq?l4awsGcV5I!wNie4ur=O})y?K#XV;lmogWf%Uv8XMzoM#0uX{>{pmv03deIUI z>0_#y&by90u9JJkW4K}?&;Q19M<=1`G=nXD!JHpIOuDq8i);F=uiphD(!#6XPPUTx zYksfl=>NuF$vftWeT^vp{h;m3tNZ*9e5G~fx|OnhDF|P06Qjr~c4&u}tl!L~syr_? zKI9%&6?c@Hkn!cbjzM^?%gJR>y`IU9;$QPMFG5&Zf1@f>msah{?6YuT!pWRAcgXndGrr;-CrZ zw0ZT6jY|(p-IQcnEjTHAMH$zcY>Cuw8|NNK61GbgZhXpI%=<5-F?9OmiLBF9ot*eG znE!IM@w$_h0_~eff92 z?)gVucdQn4xhy(d*63yb>Wp08-MM1l`0aI=d!^rgvt<}q=T6BE*(wcvhw%vNFr!pny zf>lUJn+4Upfm4}Y6^ z=UBY>RJqramV!13W~yx9F)Z0`vbm;b#ov9gAHBIAgKm0XdH(zniNzraFONTz-ml+c zXlC;;_KUjAfuQ@FRr@wJi3&t~+p^}}MdQs?Pd7U?H)?L+aq8Q9x;wA5aqFqu;GEjX zY;kQO(`r4@Uncv48&!qWb&|GdeY&|z?xN2wzxZkA*B2+hxyzwb^23Wo?7Gk!Ro;Ka z0p(_|Zhbf%`Qxw7o-fP8tqyFnUa(0z_Ujua(c@BgH?~)A?QdoL!RvA-RsMf*X6xCd z%ibrkOtw1eKL5k3*;C{=z7-yo|9dp`UtLyx`LAE=8)s#S{S3I8qr7*W-3p7Xin+hn zBqXk}ytAWOZ1eBm^>g<9x0|alb>czMV6Ux5WqBsLbl=%%cH5Jm*YlAc@8SF_xh)H? ze3Q`JcQ;6A!;B}@UJ@=_)}MIkEEfpFJH9N__^+D&u-vN58fK~9E)ubXmB}IQmUA=@i$vST(+r38 zch{I7da&J=hfn$_)9I=xZP%bx2b`349W2R}sJlP+CuH}YnA*lXO?$fo_OoUz-SK>` zyb7cL-EB+E{vOc1H(T<4fO5!3hB*^=I~?6?u&W_I%sDx6hxfEEb3-zopPv5wy~)Yz zngLc);RhC*_tqCnAJ}AAkP=_N+2*bAVcGqDGI>|pyC(55buXV-5Gv|jyF$xsVqmCz zh)u6^LSk03g2CMvTN0-)K9ni5SVwyKwz~m6>1-whL3WW=FNNalc%s z=z3>q;*Ut?za1uVZaz=)G&wI=?K|$T!=zp4JbjL2+y4FoT`3!?B-9t`ZdkQlRaA^? zjoXTK3vW5HTr&-@b&|i$sT2Qxn`nex$n^)$Gi`zrrWOYU!W&>-TU(c_b}(u#Jm^rB zAu-X;KHK0CZ~d`6P0mtQu`8k)1}4+qT5db=D11l#kLN$T?LVoA%I%g^mi2hJlfh83 zyxqh}ltCtV3wKD=txx+xda8Hx&Q}h&TDYeCV5qg+1?RwYJ5l!bLvl*X~<$;akkw16=*7Wtj^PoXRU# z<5Sx3%;8I7gZSN7OsCuHqZ^+(m-5#2l`c7;_54W!6L-rErV}3^xBa9aSx8d%>ONZaS4%sQcy!xK+dH*$K$3rdoZ<>ZY^y)7?*0cHG?|?#8=J0sF?Q`#) zcP&fNKYNyjx|@bNrd?a)w@tZp;h>e# zvGvJeZ-a!QICL&XT*~dz%KhOWAD6I}FFnp-;ek`xC25j8N9MHlPU(qVe&E!K^kq{F z795`?esmI7?atd=I`XSle{$zqQ{=~|x#3ji&24P+!#Z6>PaOALa`9RAmjov6`-_g- zEBz4R6nFKJ%lY$sf!@YXDoeKCpZnp|4&^0+s}9+{;}bn0{`Ii*WNyiVWs5og^tAPu z?mMk^``wPBvbFu2xx#;3O~0ep{QIH7`pWx0oOSYAbDXDbtlMo<*V><>k*T41y2&+6RevTjt)4SkbHgdiHF3@k z3a(q9p1IEbKsROD=D-8CH@L*+Pizil|9QRrzl=+-Z^;C?^#}e(?E59P@RO|=tB54b5 z_mIs(k3=H0EjRBlW0rXx#dMlI!2j((4EHztuRdZH0-bTbxQmI~YtC)g&wI;$OStmAqA85i%C&P5Ig|6lXt!sUmCugoae@K#PwbH8Wby?1hrDwO~ zUn=if_4L(mS7(l@tncCxyw=<1ubQsdClGN{_EF}ZMesG^KlCoIHkHv_Fs0?vA055g zUOAtHkBW@~5&8G#d^m0S!&m#>jHyTOSaOzr(wx3xTgu}et(8lv-n|R>`1;omHi3Va z|9-puv^8eg|1Kj_G-m^Y_5orHQZWw-kNQ0`Ky!?uf>N1K5uyV zvT6Fmo>QBHO;)|}TBTm**1GXQ{aT4s%iiP*mTs30=7iYvK2CRgyE67f9Glj%A9|Nt zCw!Y42ljXLKDXrux|SEu{8qn*Utc8RWAC{W49wD8YZz8VUTJE4#pK<5*G~U+{vH$e<$2*> z4)JUL(D!DX^K0d9=c5lR{;&VMy)mnH&EZoUr?}2u^1e@7>3x34Loa>5@R_%yM3l$PK3mEPRE z*#EAM;o{XtA`yCFclLELoxXeEi<*(c-Nok*)v|;sU6PDD&K6b*Ni_%$i>|% zb=Y&ZKJrnpmCHLm(fRF5jz`Het1d}gWBBOD3MP4t56s+QJFM4r?AagKs$I9HdG&g^ zcW>ThfR@d^Hd=qt>#J(7N{duzP}1cG|5jA6FOkcByk>SUS90%S4)w0oGW!~_$nFC? zAwD+~J}wR0o_+OkJdalfV^MnL*PHKdeQKP|bozMD+w~e7-ke&l-rUH`8pd{OX3!y! zuMYNre3iW|nI+83{xH{?d)@jsdCa_c^w>vQ?rog|KbP9)pa`-cpJZY z8vmSsxqQ9N-!GRxS*NN>|4-EfCBVAC#5IL(abj~m7*F9puciIu`QP8dc9lm89^bw9 z?ex^U)343j6_Z%=QPk->bl|gXjIp8BE%BTMR_AIoJGfOHbip z{>vK1vr6)EQ)3j9ce1p5LT1QiHfF}gsb|lhVA9?lY+UHV_KHhKqcCsw_b|E8_RED2 zA`f^ffbSujIwhN>S@p2-p?7tGg&iOB*A*^y)7mJJdh<}StyK7&@}wo-c4gMYuA3(L z*ZzCOPm5DLe;kf(TxYS>c*2V*yJB9>@_xe`_%SeDLizEx9XTOYS;;qdpJFq(6Qu2u zly$17Kb4_5H)q>%jukti!xKVT!s4!;U|PMWd^6iwhx*2)(eumv*|Iow6669BzNQq3 z=d!Ydnf()E>P|4a66D4;d-gFd=52E}*=mQ1h{#7Iob+Pri`6lDta%`RzxCeQ*@s2M zTvHDJw_1@^Y4RuDyM9gb8Og2jAu(GI<-V85kbKvZZleFa(uT+U)j?;zj}MjOzHN(N z_h#RgZ&#jj$v-dLQD}Va@0EY={w%q0;vIwNeig>0t&^G8Jw1KpUvUbn@1a*kq1=z! zR{Zd2P3_3-kh}F|7Pzg9_A;HdjHQi zuz#w?P`By8jF99r^^xDYyW&NTUO)AvV0j-mAAekl;k(lds-OL?+v)XmiOoK}@EL7? zJ}r>TmSdjS(Ac$0X0ea8(cZv_*mYTrcLYR_vp!zeE*|^xKPN3$~pwxHduR{E>!>DXiSbyA*rAyj%5_JHnQQUuVOT_Yxj8@BO!>PW|D( zdddvO2h;Tbz0P4%ea9S{AXxk&^XTMQ6VBqZ+yWqU&;xn@>3iI^HfJ zJ;!dLvwd&D(}{^|R7~e}GA6q;wmy7*Qt4lS!;^=sV!uvkzq4S{&g@AmuwlN-5@xeR z@@8M7P$O%IP5L1TmxQg4Uon{aH$J_rnz*nzXkP@g?HN;>FWy~&T+1ICJ}PC9?lp|! zT;r?e5Zk!)>3@AjJ$Wfd0Je)LG}SJViey-J%$V#Sv$X7hyP&gF*R>RT;z z2DEhOv16FgHH*pad27QrI0$a{@ZfP?bmOLW#EOI0%#S2bmpXW7Y2uQM{d$+`a$idv zK9*N8o2i@qSS#Z-y>IO|A8wIxPvAX#_F_YcaD=;Z-u%Dd4SX*?HZWz+e|&+{w7uG) z(Ur?+U9(T)wu)b`m*3R)kg2?Bdcc4Awxgc>ygzEqUUMFK5hE*~?B94a`Q@PpfkhAR zRdoWj=cMFOcfb{{QRs?(6Z{g7ItTWlJAad1PV!^~$mTA&tDj z(#gG(E$jAgIK*F=TYh8N5~B`xv)C^6CMO!{U&iG31puYWWw`};hBwXgr0 zYpK0bPOsVeIzR6vuV+fGTf6cAm$|LCx5R^j*BjUAZSWE}cPENR#y{a|(z6L)EkMf^ z8Lv7mbarmqsIC7_imj|x^Ok(F_t}r{gA;bD>!N9=%0^2@TP8uqx&I)J4Od3e_sA?D%(5f)cRbO$rg_;M_4o&6c|sNbJB9_ z^u~R^n-trAA8!BLC}_ELvck=SlFBEhL}^Ea7>hWVc`8Yme{Rb->E5zxu_)k1W^ZBJT4%4&_+0-14?k zMvU}d6M?0?YQ|b&p(Mo7Xb4fQS1vZD(yN>MWmg%<$2%%sJ}+dDtEW zgBIUxYMQ$H<}A1B8nY;8LGR3t`4L;<#WVMBEA2_#>^I+#b=vQQ$AORZaS?a>WnBJz^1l()X9&jB#K6~!h4OY1|n|VIYxa*_&GWPBrzL-=7 zIo_#0xeE^cylHvlR;P59;rgfR*7WRKzAU8xI{&=$({+)Ecg}t8ox3Y|-YYO=^BD2< zEn0cN%A&mb^}R%vYxg?tv*|DYc98|P`**wLs;Dhd-wk;|OQp|z;Q66fp2HyhZ{pSe z@AlN!AL5o5d^E*Y?Ng^#Gb4{Vo5*ar*YoSFPIAu|Ouu4zE3j9uK$Y+blUtnkn1him)Fa zvq*#oAIF+GtBQ+3g$wwY%;1Eb{I+tc?;iE;Fx(8oB zsaox>F{|3{+xT?enPjdtou_Q0^xi)?b+qfY`Oc!xk3RXWi&?XycCxm)zTW!&)mq+H z*0C+Fu?uNTfgJ?hBhGTXTU=kxzE0+Zm5(5NYwfMAx6kLr*MI(%JDrzzp{4wzUFJJ~ zN6q|q@<2+0k%8n4o|1$I3{2e9-)IMh7uhV>9I6A!IYw>WbJt_kFo4yL4*x zV-N1y85#EfK<4(`$okzo3onHiDqNIJ7rtyMIfKWCO^tbSV|IeVW2+NWKv%MMv0j7k z-Tl#Uxw1e$F5%;i(z1H(=Psh>|2%9qcub`CBCqOtszWwd_E}m(%VQp)o%^ST~2-?9u_yIk6gH~Q)}Lllc7AIruva3CEYWXCH%iW$yy%sl2hV7Yv+>%hi5Q#=PbEY zA>R+3W87-KGo9~}&upldPC6(tOa5xm+!18I>-M@5*4OLaD=1FL2p41#2K`Zcx~m#j$4j-t9Y^MD3l^ow>0C zmw5XAN@2M6hKe`G!T_JG;^q?2I1oNaA9-c6|R2iS@7l zbOij0OJvRdc~kcFQF-R=-7kKA_{@IG^Vn6cH9tBHmDQOiH-ghfz#)dKK{cvAGnu%h zR!1b**5_p_uhKSr!%*Q8`!rL>hU>KDJ<+K~{X*%^(U$6~DxRTR`^n(AsCAS7oM&8O z9v${*ALGXt1rMW0+ z6LGLf@qME~`o#C&Yqhjeh;{Q=ZLYr7SzoZI>v=(u=wZ?4b0rKl?Oxcp%C{5M+j;DkiR^(Cy_=P&O1 z?R&V}d`;}j>#jEspIfv-?(W)z*nRd>+W-BMyH{G#cr@9(pys>&tQC(e=g0W2dnDP> zKj-+>CtC9wf1K!f47xy3bp2@;xrq8CLEf}X<(O5<#yMp(RZ>DWEwNy|Hn(Wk^$5F# zE${BO&V0YG;_d#Z#;KMb#<}o->EsE}J^I|R^;T1s^1ew|Pc+yh3G)0tI_s^HnvvS= z1kja(p%<(^Z3+7=+a2*pC~Ec{UkKBDxtx5#$w$Jr(DOag7@=$mINziF5mW+>+sUD znn~@kYMh=gpFikg>aNmWvo4@&E7R*Uzqf!&Q*hqBFo|*1(jRUR&GDWoOB5#^+U+*i zZ9`zx4)C5LF7dU+-;Z3n@_lKwyl#2?N85dEc1+ytT-$xhvX(RYztz&dVjg&Ovc=A> zhh3ljdS*i-7Nz`|hL(x(jgPbnZ1g zwa=K(#-*0IE&ZqwxbN-RPOUl~HE0yUiZgJz0^Slke|tW_QD%7lMv) z_xd(YJ!sK?x93iorf{gu_Q}wk_<08;YtAf;foi-9(^&aa^%a*xZSSV=nR5d(ZM>%B z&w}U29b#;t7R$rbU5`pD_4jN(t)eJgiF(6eOvUzlGgmxvPe4!G{KYXFmG}5O-u36l z$Hx^~-{d;a-Me?sOW(sOZMoOy&9lCmR#h}kJ$lUtQ3e}7(*poai8flbw`uSE}I<38=V zmqMk#1S))7%d*w$j{uK|CF?b{=7s53)EMUU`i1yK%{g~+>SVFy#YIn-9DO+_#xk?e zivRG{8M1{%c5^d%N`xaGCTC20l{h=c$IOKJ*1Y4#Qk;z!ysgaXIp5~yVQo{uGyB*- zi5X1V25Ao;*GHLTe#lC7@45qr8jZGt z%MVbyFh-Yo<@H~yRkgN0R@)fGoO!$F^ez20ADj|uOMcz0|MTwK=G7H>Iwnt_t-n2e zyMEpOM;GRZrJ0X395{6A z>L-SqJ4@3UUcGvDdG^Wr@<;Eb=lsb(x@U{^&-s7yPaoK}_Vma7x^1%C{WK5TT~Kb@ zsGXRozPjn4NA7Yf#SI&3O8>3#GB`Pa$y=K6d0O#UC| zv-|eUKf5bmJ{A2}y|rvd*_LY)&s|h*yVrVly5N~uP6dCT_I9&gkLOAo;_i8ExT60) zC-v$D-L~d%Wlo3d!tYb28MiKVmNehLTl0ziKI_CNrllH>mgN>6tC(Ro%kf`sg4_N% zyW1`+v@A7w6E;WAT28L=WySKzj1Pm_ar|i1m>6exzDvPUF9r$)*sp^mDC!biZORZWLe|z;3#fanCx6gg8j0y-} z>h~%C`m$=RZErVjevmjL*Wxj+`lcBgu2s{`c<(B$=9+GlQ{4O~`#{sFZy}D|S-rEq z>g7shgxqH2DVy<@b4h-X%fFjvU(G0Oy*2G$7Jsgk%T}*Gzm3^(zW22l{^Vc%B6#cS z;&r)SeBWE;E)Q0>Vh);X$i!WGs@qv)JDbsrJfugCk{!#yi{ z)0TEK-o=@`2R4*0NlY%k!TX25J6HZd!I~4N8&>x#irh@}WVE`m?o_zFQaJ0hz|CKr zW-Z8-xHRWsN|(g1Sf#JlUT=H-q&hBcTav+_D`j=`<(AvIuO4#xH79l#T=GABlhv(j z;r&Qy-q@)YTaRzc?H6udUpM#M3`d?%`V~AY?uZ_~;o5as__0gR$4f06*m}JlNiIv? zvNo6}y8Ys^#)RC>3zxC|+&+65d)s+4s}p)2U3J&@CgkobSuFR=tMyEh?Y4tbGpv_6 z{^PW`ARen?cCUB(UEj2goU)H~zFNL)Uzodcf?T@uu8V~^AME*NbS|-Dj!HNgxVk@f z%X6D7?zxS55^IewU0?Lgd&9R2%NABInVYj>^Fd*m10P&@q!wN-vznPFeW~TL|MJ-9 ztK3&zeZPjc&F}g@!5sDfEIMrEH^r-RnhpJ&trLHng=sV1SbE${z*$`z6fGrPWk!2v zKYSd&IBILD15c51-1|#y3v*XalY3*8yWE)VQkdba`lJN?BakgxKY82^EjXJ{Rg!t5 zGlnhW_RAFKWT^-BJ_*91vTR!p6kXFeZhK$#Sf$2s>$$v{%h#RC6O=os+~#Luv!=aG z_Q0y1s$Xxc{0nk!HRuMICMY*_COW5kF8Ow08!yXYO?|V22Fs7@rQYCR`zda~7IpKg z-{HebQY+fG<-WM&@O@^+;v_-d^ttDPmIq%7T;k1qev#tGLPL)aXAL$cc*S%}K@#O}aP_DYI zPV4as&+c8ZRc}hJJ?{BF)#`Pkw%fFC+c%%we=JSmqO09(4poNt$GREao*vVCy?i0_ z96woyX!k>wZ=OAw|KO-W*;0L-riJkj=WWtTpRsw0pVSH7+qY2}X98J8Vwx8yoc{}r_*Iig>$$SQLAW|Mm-t7b{f zs_*qJH$HZ4=dEvz=1E`la;2miF0W)>;wt;>utC%OKeroRE?l^qbNRRS-;0#D>PFsj zp51m)L%N9VhNw}UkMj?C;oA#VEC?_AK1sdvwevLvao10a;@PFQ33iHnyis?}t$E_M z;~wR1w<5nBNZ{hhE4g&}@`1@U^Y7d6e^|eeX@>Axi=`$!_x!GZy}fkJSq|eryF$8- z9OgQjaLuCa+5PrY*RAgc-+Hs@+ktCSGolZ@DYrhhBJ%qBX5Q#cC4bkXn+BzuZZiEZ z#b2E+apP)YTW{=J&V+4;Rjz-y?I-(SGw%dOiP_>4>+gy?y7Ke>I-30BaINEpJrc_< zzYS`+>8E@&a;nOvi~{E$@-k0a!cQ@jn22rsu>0EQ?Ht}Kd(N>x|52&*=icYX$NRHC zuJ?Di=&;UY1MB~Auhg*Z>i;9RgnDZ|ub-Fe#pe7uKIr_JyPVAOb3ZJum=L);y6(1S zLO`$o{qtSh*#28QeLJQ1--hT9_xFqc&Mo}3|Lu*ZAN!4Y;%`5?U;SF`zx6~;;b-u% z3rM5xp~Qj%^W8+*?Eas3|0PlR<Z%JKc3 znLIMn8(pK%@bZ{Ua>@T!=KAK|ojaE+e&4KJU#R}$<>UUHQNi)*j=N&dyQ!^xsy#nI z;NjHRUq4D*znpSX*s&{O-=T|3r#Pnevc4>{mF|m6EYgdQJ-;Bn+<*BltNwcBM%J^1 zwzqF@?>@%FJZYCgGqmylW!;L3V!qtD8P(spxv z)%2^rbswMVI(1U^>Hl)qH%~nI`sJrLFH4O#1UG`_%PKFQSAtu{-y@o#O8_^eOw-f6GdZE`Upd~40u z11V28e_NAhWT3^oJ1qRGX&857Y3u3mbGz3^Wv*Er#n3QoPxQVhyVBYl3mRW_Y3W|K z+qbO0=)@D|t>yI#8|B32yvkmay=eOPjjd6$SzU!M^ou{5-?)hsNz zk|n*RGhLwW1IW_s#9fs`4djAzBJ{y{Pmm8`XJX{2{qaCw@3fNtrOdp z%H5X#5cB-g)VO%dzpn}%%szhdR~E>5ZT#0W@{h)Q)1VnG38B&^0#hgJ&OV{l>tN8G z;1Mc5f67WX{>(`yyYJoAjX!!qEz#obI~ry!>&1}!-Wpt;!C~}FBh|`to-{_ z-5wX$yYZ8+T$)mmWP0uCCsETDGd^einKeDGYub64PKbqG@jS#_o_Jt!IrC1A>R&IC zYF#&b{boGz?*F8d+`gQQBHtfAm^oqh4++O@HF3+#t}WmV-B&!>CvNJpJ3klr{!rz~ zS+vgX|DWOxt&5&D|397954S#)(0OH%SI*mw$ziYe^Baf=m6zJhUEQ{~rd1?I{(sWX zIe}&zXR5W|_2*5IEV;C}w_s(T$m|;tDb*1!&iiauyx$jfZR3JQIXn3+slw}2%T`*v zO>mp{G^%;``f1l}rPtT&y7SVdA-4bR#jk5_A6k9xAQms)!4UF(&I z1HvwZiIsFpU_vzN347lDfr7RF})yXaVE*fPXk(9o5z8UXq+gO#UH{`(@D{{Az9>i8>C|^v!y|(*!+`gzk<=uMPRxdvtFD_UVf9~t_ zNvHQlSO4@{XLxLC+uy5ow@d_<<(|AGm%I5Ki}MVf>Jn>%2TMbz+z<(^`tFpa!tk|? zi`h-gxrs2}wgq3l?Ts7O^Y*aRQ-E5oh*>?U3Y7jIa6F zdT=9$=G!ZmPHC8ym0sJWJL~Xwy`TGn-j?gduQlH<^KyKg%(e~!W$tFWHD7g{d2pEL|!f1!NlAm$qo0{9+=>K=`9Dy86RQJ=z9Lp z&aBpbzs{~B_4n8rDgvD>T}8d;o({jn`n#6(PwK`c@xP|ozFqEnm}A11f|W;(?3wHt z9DMKOvJJM||vjZ;Cy?2_Yk+nJpCJhv-@!sbYJ^rfxtx67Vt%gO9L zl#=Va^U^z=c|18s9N0@+=Q+Me+0T;{!TML{d9Gec0WP0q0 zJ-LhhkkW@qe;gV_Or!Q0U0AI9C{b{(AHR2|f=VJPPE5wB-PLV5i779ZEWOMAla+b*tz?$@<1NV2VO6{7r=8#S~p(ug=TGrg2Qc>(=O9483g6* z|F%Ic_r#~ED>WB3zB>}&p}ume)|}TLyLj@pGc?q_T;2C>*|*Ef9(qq@gocZ|zgdM{cHjPc1*mkmby3@A)+`~Z7mk*5TQ45=nkvF5 z9k(mQ#;0YW_xatr_L`S_UM}|joq0LK{r%s?x1+PX?w-x`XERGzSd;MUfN<~EZ@ah8 z|Ns1X#95)6EWM(acd=xDT=I5?l#}5F;l}AHY)kaxU|g$)Z2FJ z`X=ofH2dSbn0-;TCA%~9wG8IGm|k4FM4|aX#?F_k`|{jDscp%&+Rj_@sh=;teWe_@ zX6ubjC$D+hiL%aVObE_$S?I&jmDp)$a-m^cX|>({zK=IkgtVKUOV}0Itk`%V?}6*g z)T}kf`t!bTTnI{!?{C=!Km7h$V!f|gbe32C>&*#97v?q!UYT0*>!iAWfw8rn-jaka zkqD3Ut`O5{2eS6ou=1+t*M7L+r#m&wJ96r|UCOgm^O{eGSJkTic~Qopxi_fQ_;*oJ z{g0Fj8e7Z1_TJ0$NsW8#wYZ#h)wczj%Y&T_9+h6)rQ4sk|H_mL4oVxCtUQ@6m?%s7 zEDvsstqI!Jr*C;E!TJ56Y17wTd1=D*C2x|h&#YOW@_wEYaof@T!ZH73lt`l`ukw#Q zw5+d9YJi*pi->~`69t&uEYVLK)maY)ThwdIV^K@t586TEvv zgJbVrt=5m%@Yv-RRVUq9YsJ$=1c#l-BuSNpVecjg3^>g}B(^*G=n%gMWU z!xNGt1w&>BO9Xnn4BAq{jb#xsXZtaozTVi*KJl;lBCAl1ozr9Af&o zUZ@;-5wuC_oT!6(^pwF544bQpmBmJyd&pPL+l!%QVTF(4c0YxXH`bRJEKt zRd(z^NO&OgGhu(jf7u#ONY!-Fv7+mahn_qQ&)Rs$X=2KX6`$^M zuiTjZO6kDq#kYNZIeAN#PupZVO>@;3t81a2yoo~Zi)Zu1urmiIxb_zJOei`Q^Zb+O z{MxNG7C#Ek2Tbhxq-ns>_xdKtxtm@rn!fCmtLW2Nnx=fdrZY`UpB|11@lb!NxncDr zDT|C&P`k8!p3&ywM7CwSxIP!_m3A$ccrL0JKh=KM-1!Xa^s_Zr7Rs${jtZ5#tM^DV zXu`~(#|w^lZGZAkJ2?25?XJIZRxg&WXyw;93(=m%Qal zk09HQnynM6x4+o5ZnE6Fvss%?eGT~On4sZ1^Y4pqU8`f*SHE%!zIWF+r2gTmyOVBw zFg-r6ApK5C!gC&<(y0aw!8Wc&33V!6{U6rczOlUP)by&aa(C+t5~pl2dd|IV`ub1P zmd(1eR&=9^S=H|FuM;y4Jxy(so6xAa;Su}S|IF)OC!ZEP*mRkJfq}u()z4*}Q$iB} DrwgiZ diff --git a/examples/peripherals/wave_gen/image/square.png b/examples/peripherals/wave_gen/image/square.png deleted file mode 100644 index 57535395a0144428e8b11cc6bd021b27a8052a70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45087 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

Ox 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 TI>niRfq}u()z4*}Q$iB}Xg;DH diff --git a/examples/peripherals/wave_gen/image/triangle.png b/examples/peripherals/wave_gen/image/triangle.png deleted file mode 100644 index b742ece1478ac0a6b3b92811da13afe297a0356c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49953 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%0D@0Q${r9Uq&ebUvY=X-nm{5xhl%T#|g&UYx9 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 Y; -#include -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/queue.h" -#include "driver/gpio.h" -#include "driver/dac.h" -#include "driver/gptimer.h" -#include "esp_log.h" - -/* The timer ISR has an execution time of 5.5 micro-seconds(us). - Therefore, a timer period less than 5.5 us will cause trigger the interrupt watchdog. - 7 us is a safe interval that will not trigger the watchdog. No need to customize it. -*/ - -#define TIMER_INTR_US 7 // Execution time of each ISR interval in micro-seconds -#define POINT_ARR_LEN 200 // Length of points array -#define AMP_DAC 255 // Amplitude of DAC voltage. If it's more than 256 will causes dac_output_voltage() output 0. -#define VDD 3300 // VDD is 3.3V, 3300mV -#define CONST_PERIOD_2_PI 6.2832 -#define DAC_CHAN CONFIG_EXAMPLE_DAC_CHANNEL // DAC_CHANNEL_1 (GPIO25) by default -#define FREQ CONFIG_EXAMPLE_WAVE_FREQUENCY // 3kHz by default -#define OUTPUT_POINT_NUM (int)(1000000 / (TIMER_INTR_US * FREQ) + 0.5) // The number of output wave points. - -_Static_assert(OUTPUT_POINT_NUM <= POINT_ARR_LEN, "The CONFIG_EXAMPLE_WAVE_FREQUENCY is too low and using too long buffer."); - -static int raw_val[POINT_ARR_LEN]; // Used to store raw values -static int volt_val[POINT_ARR_LEN]; // Used to store voltage values(in mV) -static const char *TAG = "wave_gen"; - -static int g_index = 0; - -/* Timer interrupt service routine */ -static bool IRAM_ATTR on_timer_alarm_cb(gptimer_handle_t timer, const gptimer_alarm_event_data_t *edata, void *user_data) -{ - int *head = (int *)user_data; - - /* DAC output ISR has an execution time of 4.4 us*/ - if (g_index >= OUTPUT_POINT_NUM) { - g_index = 0; - } - dac_output_voltage(DAC_CHAN, *(head + g_index)); - g_index++; - return false; -} - -static void prepare_data(int pnt_num) -{ - for (int i = 0; i < pnt_num; i ++) { -#ifdef CONFIG_EXAMPLE_WAVEFORM_SINE - raw_val[i] = (int)((sin( i * CONST_PERIOD_2_PI / pnt_num) + 1) * (double)(AMP_DAC) / 2 + 0.5); -#elif CONFIG_EXAMPLE_WAVEFORM_TRIANGLE - raw_val[i] = (i > (pnt_num / 2)) ? (2 * AMP_DAC * (pnt_num - i) / pnt_num) : (2 * AMP_DAC * i / pnt_num); -#elif CONFIG_EXAMPLE_WAVEFORM_SAWTOOTH - raw_val[i] = (i == pnt_num) ? 0 : (i * AMP_DAC / pnt_num); -#elif CONFIG_EXAMPLE_WAVEFORM_SQUARE - raw_val[i] = (i < (pnt_num / 2)) ? AMP_DAC : 0; -#endif - volt_val[i] = (int)(VDD * raw_val[i] / (float)AMP_DAC); - } -} - -static void log_info(void) -{ - ESP_LOGI(TAG, "DAC output channel: %d", DAC_CHAN); - if (DAC_CHAN == DAC_CHANNEL_1) { - ESP_LOGI(TAG, "GPIO:%d", GPIO_NUM_25); - } else { - ESP_LOGI(TAG, "GPIO:%d", GPIO_NUM_26); - } -#ifdef CONFIG_EXAMPLE_WAVEFORM_SINE - ESP_LOGI(TAG, "Waveform: SINE"); -#elif CONFIG_EXAMPLE_WAVEFORM_TRIANGLE - ESP_LOGI(TAG, "Waveform: TRIANGLE"); -#elif CONFIG_EXAMPLE_WAVEFORM_SAWTOOTH - ESP_LOGI(TAG, "Waveform: SAWTOOTH"); -#elif CONFIG_EXAMPLE_WAVEFORM_SQUARE - ESP_LOGI(TAG, "Waveform: SQUARE"); -#endif - - ESP_LOGI(TAG, "Frequency(Hz): %d", FREQ); - ESP_LOGI(TAG, "Output points num: %d\n", OUTPUT_POINT_NUM); -} - -void app_main(void) -{ - g_index = 0; - gptimer_handle_t gptimer = NULL; - gptimer_config_t timer_config = { - .clk_src = GPTIMER_CLK_SRC_DEFAULT, - .direction = GPTIMER_COUNT_UP, - .resolution_hz = 1000000, // 1MHz, 1 tick = 1us - }; - ESP_ERROR_CHECK(gptimer_new_timer(&timer_config, &gptimer)); - ESP_ERROR_CHECK(dac_output_enable(DAC_CHAN)); - - log_info(); - prepare_data(OUTPUT_POINT_NUM); - - gptimer_alarm_config_t alarm_config = { - .reload_count = 0, - .alarm_count = TIMER_INTR_US, - .flags.auto_reload_on_alarm = true, - }; - gptimer_event_callbacks_t cbs = { - .on_alarm = on_timer_alarm_cb, - }; - ESP_ERROR_CHECK(gptimer_register_event_callbacks(gptimer, &cbs, raw_val)); - ESP_ERROR_CHECK(gptimer_set_alarm_action(gptimer, &alarm_config)); - ESP_ERROR_CHECK(gptimer_enable(gptimer)); - ESP_ERROR_CHECK(gptimer_start(gptimer)); - - while (1) { - vTaskDelay(10); -#if CONFIG_EXAMPLE_LOG_VOLTAGE - if (g_index < OUTPUT_POINT_NUM) { - ESP_LOGI(TAG, "Output voltage(mV): %d", volt_val[g_index]); - ESP_LOGD(TAG, "g_index: %d\n", g_index); - } -#endif - } -} diff --git a/examples/system/app_trace_to_host/README.md b/examples/system/app_trace_to_host/README.md index b029ea48a4..8c7c21e116 100644 --- a/examples/system/app_trace_to_host/README.md +++ b/examples/system/app_trace_to_host/README.md @@ -30,7 +30,7 @@ This example will assume that that an ESP-WROVER-KIT is used. #### Pin Assignment: -The sinusoidal signal of 50 to 60 Hz ranging from 0 V ~ 3.1 V should be input into `ADC1_CHANNEL_6`. Users may provide this signal themselves, or use the example-generated signal in `DAC_CHANNEL_1`. Listed below are the corresponding DAC/ADC channel pins for supported targets. +The sinusoidal signal of 130 Hz ranging from 0 V ~ 3.1 V should be input into `ADC1_CHANNEL_6`. Users may provide this signal themselves, or use the example-generated signal in `DAC_CHAN_0`. Listed below are the corresponding DAC/ADC channel pins for supported targets. | Target | DAC Output | ADC Input | | ------------------ | ------------------ | ------------------ | diff --git a/examples/system/app_trace_to_host/example_test.py b/examples/system/app_trace_to_host/example_test.py index f0e4fb7876..8565d414bb 100644 --- a/examples/system/app_trace_to_host/example_test.py +++ b/examples/system/app_trace_to_host/example_test.py @@ -17,7 +17,7 @@ def test_examples_app_trace_to_host(env, extra_data): with ttfw_idf.OCDBackend(oocd_log_path, dut.app.target) as ocd: dut.start_app() dut.expect_all('example: Enabling ADC1 on channel 6 / GPIO34.', - 'example: Enabling CW generator on DAC channel 1', + 'example: Enabling CW generator on DAC channel 0', 'example: Sampling ADC and sending data to the host...', re.compile(r'example: Collected \d+ samples in 20 ms.'), 'example: Sampling ADC and sending data to the UART...', diff --git a/examples/system/app_trace_to_host/main/Kconfig.projbuild b/examples/system/app_trace_to_host/main/Kconfig.projbuild deleted file mode 100644 index 67c46e4d00..0000000000 --- a/examples/system/app_trace_to_host/main/Kconfig.projbuild +++ /dev/null @@ -1,20 +0,0 @@ -menu "Example Configuration" - - config CUSTOM_RTC_CLK_8M_DIV - bool "Set custom RTC 8 MHz clock divider to lower CW frequency (CHECK HELP FIRST)" - default "n" - help - Set custom / non standard divider for RTC 8 MHz clock. - This is to lower minimum frequency of cosine waveform generator (CW) - in order to provide sinusoidal signal at about 50 or 60 Hz. - - WARNINIG: setting non standard divider for the RTC 8 MHz clock - will affect functionality of RTC peripherals other than CW. - - This includes ADC sampling, and will in general make - all RTC register access slower. - - DO NOT use this option / change default RTC 8 MHz clock divider - in your applications, if you are not sure what you are doing. - -endmenu diff --git a/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c b/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c index e1c31ddf24..3cedb337de 100644 --- a/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c +++ b/examples/system/app_trace_to_host/main/app_trace_to_host_example_main.c @@ -15,7 +15,7 @@ #include "soc/rtc_periph.h" #include "soc/sens_periph.h" #include "esp_adc/adc_oneshot.h" -#include "driver/dac.h" +#include "driver/dac_driver.h" #include "soc/adc_channel.h" #include "soc/dac_channel.h" @@ -23,48 +23,32 @@ #define TEST_SAMPLING_PERIOD 20 -/* - * When setting custom divider of RTC 8 MHz clock in menuconfig, - * use the following values to set the CW frequency: - * ~ 50 Hz (entered below) - * RTC_CLK_8M_DIV 7 - * CW_FREQUENCY_STEP 3 - * ~ 60 Hz - * RTC_CLK_8M_DIV 1 - * CW_FREQUENCY_STEP 1 - */ -#ifdef CONFIG_CUSTOM_RTC_CLK_8M_DIV -#define RTC_CLK_8M_DIV 7 -#define CW_FREQUENCY_STEP 3 -#else -#define CW_FREQUENCY_STEP 1 -#endif - static const char *TAG = "example"; /* * Enable cosine waveform generator (CW) - * on DAC channel 1 to provide sinusoidal signal + * on DAC channel 0 to provide sinusoidal signal * It can be used instead of a live signal for testing * of speed of logging to the host * sequentially with data retrieval from ADC */ static void enable_cosine_generator(void) { - // Enable tone generator common to both DAC channels 1 and 2 - SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); - // Enable / connect tone tone generator on / to channel 1 - SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); - // Invert MSB, otherwise part of the waveform will be inverted - SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_INV1, 2, SENS_DAC_INV1_S); - // Set the frequency of waveform on CW output -#ifdef CONFIG_CUSTOM_RTC_CLK_8M_DIV - REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_CK8M_DIV_SEL, RTC_CLK_8M_DIV); - ESP_LOGI(TAG, "Custom divider of RTC 8 MHz clock has been set."); -#endif - SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL1_REG, SENS_SW_FSTEP, CW_FREQUENCY_STEP, SENS_SW_FSTEP_S); - - dac_output_enable(DAC_CHANNEL_1); + dac_channels_handle_t dac_handle; + dac_channels_config_t dac_cfg = { + .chan_sel = DAC_CHANNEL_MASK_CH0, + }; + ESP_ERROR_CHECK(dac_new_channels(&dac_cfg, &dac_handle)); + ESP_ERROR_CHECK(dac_channels_enable(dac_handle)); + dac_cosine_config_t cos_cfg = { + .freq_hz = 130, + .clk_src = DAC_COSINE_CLK_SRC_DEFAULT, + .offset = 0, + .phase = DAC_COSINE_PHASE_0, + .scale = DAC_COSINE_NO_ATTEN, + }; + ESP_ERROR_CHECK(dac_channels_init_cosine_mode(dac_handle, &cos_cfg)); + ESP_ERROR_CHECK(dac_channels_start_cosine_output(dac_handle)); } /* @@ -108,7 +92,7 @@ void app_main(void) }; ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, ADC1_TEST_CHANNEL, &config)); - ESP_LOGI(TAG, "Enabling CW generator on DAC channel 1 / GPIO%d.", DAC_CHANNEL_1_GPIO_NUM); + ESP_LOGI(TAG, "Enabling CW generator on DAC channel 0 / GPIO%d.", DAC_CHAN_0_GPIO_NUM); enable_cosine_generator(); while (1) { diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index ada4ffaf4c..7b58fe61c1 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -922,13 +922,11 @@ components/sdmmc/sdmmc_io.c components/sdmmc/sdmmc_mmc.c components/sdmmc/sdmmc_sd.c components/soc/esp32/adc_periph.c -components/soc/esp32/dac_periph.c components/soc/esp32/i2c_periph.c components/soc/esp32/include/soc/apb_ctrl_reg.h components/soc/esp32/include/soc/apb_ctrl_struct.h components/soc/esp32/include/soc/bb_reg.h components/soc/esp32/include/soc/boot_mode.h -components/soc/esp32/include/soc/dac_channel.h components/soc/esp32/include/soc/emac_dma_struct.h components/soc/esp32/include/soc/emac_ext_struct.h components/soc/esp32/include/soc/emac_mac_struct.h @@ -1060,7 +1058,6 @@ components/soc/esp32h2/include/soc/wdev_reg.h components/soc/esp32h2/ledc_periph.c components/soc/esp32h2/uart_periph.c components/soc/esp32s2/adc_periph.c -components/soc/esp32s2/dac_periph.c components/soc/esp32s2/dedic_gpio_periph.c components/soc/esp32s2/i2c_periph.c components/soc/esp32s2/include/soc/apb_ctrl_reg.h @@ -1069,7 +1066,6 @@ components/soc/esp32s2/include/soc/assist_debug_reg.h components/soc/esp32s2/include/soc/bb_reg.h components/soc/esp32s2/include/soc/boot_mode.h components/soc/esp32s2/include/soc/crypto_dma_reg.h -components/soc/esp32s2/include/soc/dac_channel.h components/soc/esp32s2/include/soc/dedic_gpio_reg.h components/soc/esp32s2/include/soc/dedic_gpio_struct.h components/soc/esp32s2/include/soc/extmem_reg.h