From 6b5f578d02aaa74d74d4384333cd38a4689806a7 Mon Sep 17 00:00:00 2001 From: grdddj Date: Sun, 1 May 2022 14:05:32 +0200 Subject: [PATCH] feat(core): implement basic R emulator Can be built by `TREZOR_MODEL=R make build_unix`, `make build_unix_frozen` does not work yet. All the dialogs are not very pretty, they are just meant to work. --- core/.changelog.d/2230.added | 1 + core/SConscript.boardloader | 4 +- core/SConscript.bootloader | 4 +- core/SConscript.bootloader_ci | 4 +- core/SConscript.firmware | 32 +- core/SConscript.prodtest | 4 +- core/SConscript.reflash | 4 +- core/SConscript.unix | 22 +- .../extmod/modtrezorconfig/norcow_config.h | 2 +- .../extmod/modtrezorio/modtrezorio-poll.h | 2 +- core/embed/extmod/modtrezorio/modtrezorio.c | 2 +- core/embed/extmod/modtrezorui/display-unix.h | 8 +- core/embed/extmod/modtrezorui/display.c | 8 +- core/embed/extmod/modtrezorui/display.h | 8 + .../extmod/modtrezorutils/modtrezorutils.c | 2 + core/embed/trezorhal/flash.c | 2 +- core/embed/trezorhal/flash.h | 4 +- core/embed/unix/background_R.h | 1593 +++++++++++++++++ core/embed/unix/background_R.jpg | Bin 0 -> 19068 bytes core/embed/unix/flash.c | 2 +- core/embed/unix/jpg_to_h.py | 34 + core/embed/unix/touch.c | 2 +- core/src/all_modules.py | 4 + core/src/apps/base.py | 7 +- core/src/apps/homescreen/homescreen.py | 7 +- core/src/apps/workflow_handlers.py | 2 +- core/src/storage/device.py | 4 + core/src/trezor/ui/__init__.py | 10 +- core/src/trezor/ui/constants/__init__.py | 6 +- core/src/trezor/ui/constants/tr.py | 9 + core/src/trezor/ui/layouts/__init__.py | 6 +- core/src/trezor/ui/layouts/tr/__init__.py | 295 +++ 32 files changed, 2033 insertions(+), 61 deletions(-) create mode 100644 core/.changelog.d/2230.added create mode 100644 core/embed/unix/background_R.h create mode 100644 core/embed/unix/background_R.jpg create mode 100644 core/embed/unix/jpg_to_h.py create mode 100644 core/src/trezor/ui/constants/tr.py create mode 100644 core/src/trezor/ui/layouts/tr/__init__.py diff --git a/core/.changelog.d/2230.added b/core/.changelog.d/2230.added new file mode 100644 index 000000000..7e9b19fa8 --- /dev/null +++ b/core/.changelog.d/2230.added @@ -0,0 +1 @@ +Add model R emulator diff --git a/core/SConscript.boardloader b/core/SConscript.boardloader index a6ea8b691..0f00671e3 100644 --- a/core/SConscript.boardloader +++ b/core/SConscript.boardloader @@ -97,11 +97,11 @@ env.Replace( env.Replace( TREZOR_MODEL=TREZOR_MODEL, ) -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T', 'R'): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' CPU_MODEL = 'STM32F427xx' -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1',): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' CPU_MODEL = 'STM32F405xx' diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index ce981550c..d7828d0c5 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -123,11 +123,11 @@ env.Replace( env.Replace( TREZOR_MODEL=TREZOR_MODEL, ) -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T', 'R'): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' CPU_MODEL = 'STM32F427xx' -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1',): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' CPU_MODEL = 'STM32F405xx' diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 27096570b..f2eb9f2cb 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -123,11 +123,11 @@ env.Replace( env.Replace( TREZOR_MODEL=TREZOR_MODEL, ) -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T', 'R'): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' CPU_MODEL = 'STM32F427xx' -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1',): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' CPU_MODEL = 'STM32F405xx' diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 33225a840..9b665e734 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -6,7 +6,7 @@ import os BITCOIN_ONLY = ARGUMENTS.get('BITCOIN_ONLY', '0') EVERYTHING = BITCOIN_ONLY != '1' TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') -UI2 = ARGUMENTS.get('UI2', '0') == '1' or TREZOR_MODEL == '1' +UI2 = ARGUMENTS.get('UI2', '0') == '1' or TREZOR_MODEL in ('1', 'R') FEATURE_FLAGS = { "RDI": True, @@ -151,7 +151,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: SOURCE_MOD += [ 'embed/extmod/modtrezorio/modtrezorio.c', ] -if TREZOR_MODEL == "T": +if TREZOR_MODEL in ("T",): SOURCE_MOD += [ 'embed/extmod/modtrezorio/ff.c', 'embed/extmod/modtrezorio/ffunicode.c', @@ -380,13 +380,13 @@ SOURCE_TREZORHAL = [ 'embed/trezorhal/util.s', 'embed/trezorhal/vectortable.s', ] -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T',): SOURCE_TREZORHAL += [ 'embed/trezorhal/sbu.c', 'embed/trezorhal/sdcard.c', 'embed/trezorhal/touch.c', ] -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1', 'R'): SOURCE_TREZORHAL += [ 'embed/trezorhal/button.c', ] @@ -433,13 +433,13 @@ env.Replace( env.Replace( TREZOR_MODEL=TREZOR_MODEL, ) -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T', 'R'): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' CPU_MODEL = 'STM32F427xx' LD_VARIANT = '' RUST_TARGET = 'thumbv7em-none-eabihf' -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1',): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' CPU_MODEL = 'STM32F405xx' @@ -562,7 +562,7 @@ if FROZEN: if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/altcoin.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/webauthn.py')) - if TREZOR_MODEL == 'T' and UI2: + if TREZOR_MODEL in ('T') and UI2: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/tt.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/__init__.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/reset.py')) @@ -570,7 +570,7 @@ if FROZEN: if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/altcoin.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/webauthn.py')) - elif TREZOR_MODEL == 'T': + elif TREZOR_MODEL in ('T',): SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/components/tt/*.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/tt.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt/__init__.py')) @@ -579,10 +579,12 @@ if FROZEN: if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt/altcoin.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt/webauthn.py')) - elif TREZOR_MODEL == '1': - SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/components/t1/*.py')) + elif TREZOR_MODEL in ('1',): SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/t1.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/t1.py')) + elif TREZOR_MODEL in ('R',): + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/tr.py')) + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tr/__init__.py')) else: raise ValueError('Unknown Trezor model') @@ -614,7 +616,7 @@ if FROZEN: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/management/*.py', exclude=[ SOURCE_PY_DIR + 'apps/management/sd_protect.py', - ] if TREZOR_MODEL != 'T' else []) + ] if TREZOR_MODEL not in ('T',) else []) ) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/management/*/*.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/misc/*.py')) @@ -727,8 +729,10 @@ def cargo_build(): profile = '--release' else: profile = '' - if TREZOR_MODEL == "1": + if TREZOR_MODEL in ("1",): features = ["model_t1"] + elif TREZOR_MODEL in ("R",): + features = ["model_tr"] else: features = ["model_tt"] if BITCOIN_ONLY == "1": @@ -796,7 +800,7 @@ program_elf = env.Command( env.Depends(program_elf, rust) -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T', 'R'): action_bin=[ '$OBJCOPY -O binary -j .vendorheader -j .header -j .flash -j .data --pad-to 0x08100000 $SOURCE ${TARGET}.p1', '$OBJCOPY -O binary -j .flash2 $SOURCE ${TARGET}.p2', @@ -804,7 +808,7 @@ if TREZOR_MODEL == 'T': '$HEADERTOOL -h $TARGET ' + ('-D' if ARGUMENTS.get('PRODUCTION', '0') == '0' else ''), '$DD if=$TARGET of=${TARGET}.p1 skip=0 bs=128k count=6', ] -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1',): action_bin=[ '$OBJCOPY -O binary -j .header -j .flash -j .data $SOURCE $TARGET', '../legacy/bootloader/firmware_sign.py -f $TARGET', diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 3b7560285..7039311f0 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -101,11 +101,11 @@ env.Replace( env.Replace( TREZOR_MODEL=TREZOR_MODEL, ) -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T', 'R'): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' CPU_MODEL = 'STM32F427xx' -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1',): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' CPU_MODEL = 'STM32F405xx' diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 404c34c94..98d44f7d9 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -95,11 +95,11 @@ env.Replace( env.Replace( TREZOR_MODEL=TREZOR_MODEL, ) -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T', 'R'): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16' CPU_CCFLAGS = '-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mtune=cortex-m4 ' CPU_MODEL = 'STM32F427xx' -elif TREZOR_MODEL == '1': +elif TREZOR_MODEL in ('1',): CPU_ASFLAGS = '-mthumb -mcpu=cortex-m3 -mfloat-abi=soft' CPU_CCFLAGS = '-mthumb -mtune=cortex-m3 -mcpu=cortex-m3 -mfloat-abi=soft ' CPU_MODEL = 'STM32F405xx' diff --git a/core/SConscript.unix b/core/SConscript.unix index dab42df27..eaebdf190 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -6,7 +6,7 @@ import os BITCOIN_ONLY = ARGUMENTS.get('BITCOIN_ONLY', '0') EVERYTHING = BITCOIN_ONLY != '1' TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') -UI2 = ARGUMENTS.get('UI2', '0') == '1' or TREZOR_MODEL == '1' +UI2 = ARGUMENTS.get('UI2', '0') == '1' or TREZOR_MODEL in ('1', 'R') FEATURE_FLAGS = { "SECP256K1_ZKP": True, # required for trezor.crypto.curve.bip340 (BIP340/Taproot) @@ -147,7 +147,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: SOURCE_MOD += [ 'embed/extmod/modtrezorio/modtrezorio.c', ] -if TREZOR_MODEL == "T": +if TREZOR_MODEL in ("T",): SOURCE_MOD += [ 'embed/extmod/modtrezorio/ff.c', 'embed/extmod/modtrezorio/ffunicode.c', @@ -353,7 +353,7 @@ SOURCE_UNIX = [ 'vendor/micropython/ports/unix/input.c', 'vendor/micropython/ports/unix/unix_mphal.c', ] -if TREZOR_MODEL == 'T': +if TREZOR_MODEL in ('T',): SOURCE_UNIX += [ 'embed/unix/sbu.c', 'embed/unix/sdcard.c', @@ -525,7 +525,7 @@ if FROZEN: if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/altcoin.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/webauthn.py')) - if TREZOR_MODEL == 'T' and UI2: + if TREZOR_MODEL in ('T',) and UI2: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/tt.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/__init__.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/reset.py')) @@ -533,7 +533,7 @@ if FROZEN: if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/altcoin.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt_v2/webauthn.py')) - elif TREZOR_MODEL == 'T': + elif TREZOR_MODEL in ('T',): SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/components/tt/*.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/tt.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt/__init__.py')) @@ -542,10 +542,12 @@ if FROZEN: if EVERYTHING: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt/altcoin.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tt/webauthn.py')) - elif TREZOR_MODEL == '1': - SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/components/t1/*.py')) + elif TREZOR_MODEL in ('1',): SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/t1.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/t1.py')) + elif TREZOR_MODEL in ('R',): + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/constants/tr.py')) + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/tr/__init__.py')) else: raise ValueError('Unknown Trezor model') @@ -577,7 +579,7 @@ if FROZEN: SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/management/*.py', exclude=[ SOURCE_PY_DIR + 'apps/management/sd_protect.py', - ] if TREZOR_MODEL != 'T' else []) + ] if TREZOR_MODEL not in ('T',) else []) ) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/management/*/*.py')) SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'apps/misc/*.py')) @@ -689,8 +691,10 @@ RUST_LIB = 'trezor_lib' RUST_LIBPATH = f'{RUST_LIBDIR}/lib{RUST_LIB}.a' def cargo_build(): - if TREZOR_MODEL == "1": + if TREZOR_MODEL in ('1',): features = ["model_t1"] + elif TREZOR_MODEL in ('R',): + features = ["model_tr"] else: features = ["model_tt"] if BITCOIN_ONLY == "1": diff --git a/core/embed/extmod/modtrezorconfig/norcow_config.h b/core/embed/extmod/modtrezorconfig/norcow_config.h index 3e802dec7..588b4fc41 100644 --- a/core/embed/extmod/modtrezorconfig/norcow_config.h +++ b/core/embed/extmod/modtrezorconfig/norcow_config.h @@ -25,7 +25,7 @@ #define NORCOW_HEADER_LEN 0 #define NORCOW_SECTOR_COUNT 2 -#if defined TREZOR_MODEL_T +#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_R #define NORCOW_SECTOR_SIZE (64 * 1024) #elif defined TREZOR_MODEL_1 #define NORCOW_SECTOR_SIZE (16 * 1024) diff --git a/core/embed/extmod/modtrezorio/modtrezorio-poll.h b/core/embed/extmod/modtrezorio/modtrezorio-poll.h index 403492201..ac9f9138f 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio-poll.h +++ b/core/embed/extmod/modtrezorio/modtrezorio-poll.h @@ -110,7 +110,7 @@ STATIC mp_obj_t mod_trezorio_poll(mp_obj_t ifaces, mp_obj_t list_ref, return mp_const_true; } } -#elif defined TREZOR_MODEL_1 +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R else if (iface == BUTTON_IFACE) { const uint32_t evt = button_read(); if (evt & (BTN_EVT_DOWN | BTN_EVT_UP)) { diff --git a/core/embed/extmod/modtrezorio/modtrezorio.c b/core/embed/extmod/modtrezorio/modtrezorio.c index a9933f085..d28dc5d05 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio.c +++ b/core/embed/extmod/modtrezorio/modtrezorio.c @@ -81,7 +81,7 @@ STATIC const mp_rom_map_elem_t mp_module_trezorio_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_TOUCH_START), MP_ROM_INT((TOUCH_START >> 24) & 0xFFU)}, {MP_ROM_QSTR(MP_QSTR_TOUCH_MOVE), MP_ROM_INT((TOUCH_MOVE >> 24) & 0xFFU)}, {MP_ROM_QSTR(MP_QSTR_TOUCH_END), MP_ROM_INT((TOUCH_END >> 24) & 0xFFU)}, -#elif defined TREZOR_MODEL_1 +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R {MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_INT(BUTTON_IFACE)}, {MP_ROM_QSTR(MP_QSTR_BUTTON_PRESSED), MP_ROM_INT((BTN_EVT_DOWN >> 24) & 0x3U)}, diff --git a/core/embed/extmod/modtrezorui/display-unix.h b/core/embed/extmod/modtrezorui/display-unix.h index dce5682be..81f5cc576 100644 --- a/core/embed/extmod/modtrezorui/display-unix.h +++ b/core/embed/extmod/modtrezorui/display-unix.h @@ -39,7 +39,7 @@ #define TOUCH_OFFSET_Y 110 #endif -#elif defined TREZOR_MODEL_1 +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R #define WINDOW_WIDTH 200 #define WINDOW_HEIGHT 340 @@ -76,7 +76,7 @@ static struct { #define PIXELDATA_DIRTY() void PIXELDATA(uint16_t c) { -#if defined TREZOR_MODEL_1 +#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R // set to white if highest bits of all R, G, B values are set to 1 // bin(10000 100000 10000) = hex(0x8410) // otherwise set to black @@ -181,6 +181,10 @@ void display_init(void) { #include "background_1.h" BACKGROUND = IMG_LoadTexture_RW( RENDERER, SDL_RWFromMem(background_1_jpg, background_1_jpg_len), 0); +#elif defined TREZOR_MODEL_R +#include "background_R.h" + BACKGROUND = IMG_LoadTexture_RW( + RENDERER, SDL_RWFromMem(background_R_jpg, background_R_jpg_len), 0); #endif #endif if (BACKGROUND) { diff --git a/core/embed/extmod/modtrezorui/display.c b/core/embed/extmod/modtrezorui/display.c index 42dcf05d8..c505d87c5 100644 --- a/core/embed/extmod/modtrezorui/display.c +++ b/core/embed/extmod/modtrezorui/display.c @@ -75,7 +75,7 @@ #endif -#elif defined TREZOR_MODEL_1 +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R #ifdef TREZOR_FONT_NORMAL_ENABLE #include "font_pixeloperator_regular_8.h" @@ -117,7 +117,7 @@ static struct { int x, y; } DISPLAY_OFFSET; #else #if defined TREZOR_MODEL_T #include "display-stm32_T.h" -#elif defined TREZOR_MODEL_1 +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R #include "display-stm32_1.h" #else #error Unknown Trezor model @@ -917,7 +917,7 @@ int display_orientation(int degrees) { if (degrees != DISPLAY_ORIENTATION) { #if defined TREZOR_MODEL_T if (degrees == 0 || degrees == 90 || degrees == 180 || degrees == 270) { -#elif defined TREZOR_MODEL_1 +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R if (degrees == 0 || degrees == 180) { #else #error Unknown Trezor model @@ -930,7 +930,7 @@ int display_orientation(int degrees) { } int display_backlight(int val) { -#if defined TREZOR_MODEL_1 +#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R val = 255; #endif if (DISPLAY_BACKLIGHT != val && val >= 0 && val <= 255) { diff --git a/core/embed/extmod/modtrezorui/display.h b/core/embed/extmod/modtrezorui/display.h index cdbca62ea..aefff2141 100644 --- a/core/embed/extmod/modtrezorui/display.h +++ b/core/embed/extmod/modtrezorui/display.h @@ -40,6 +40,14 @@ #define DISPLAY_RESY 64 #define TREZOR_FONT_BPP 1 +#elif defined TREZOR_MODEL_R + +#define MAX_DISPLAY_RESX 128 +#define MAX_DISPLAY_RESY 128 +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 128 +#define TREZOR_FONT_BPP 1 + #else #error Unknown Trezor model #endif diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index 41d203906..41449742c 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -283,6 +283,8 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_MODEL), MP_ROM_QSTR(MP_QSTR_1)}, #elif defined TREZOR_MODEL_T {MP_ROM_QSTR(MP_QSTR_MODEL), MP_ROM_QSTR(MP_QSTR_T)}, +#elif defined TREZOR_MODEL_R + {MP_ROM_QSTR(MP_QSTR_MODEL), MP_ROM_QSTR(MP_QSTR_R)}, #else #error Unknown Trezor model #endif diff --git a/core/embed/trezorhal/flash.c b/core/embed/trezorhal/flash.c index 8f3192944..886e185d8 100644 --- a/core/embed/trezorhal/flash.c +++ b/core/embed/trezorhal/flash.c @@ -39,7 +39,7 @@ static const uint32_t FLASH_SECTOR_TABLE[FLASH_SECTOR_COUNT + 1] = { [9] = 0x080A0000, // - 0x080BFFFF | 128 KiB [10] = 0x080C0000, // - 0x080DFFFF | 128 KiB [11] = 0x080E0000, // - 0x080FFFFF | 128 KiB -#if defined TREZOR_MODEL_T +#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_R [12] = 0x08100000, // - 0x08103FFF | 16 KiB [13] = 0x08104000, // - 0x08107FFF | 16 KiB [14] = 0x08108000, // - 0x0810BFFF | 16 KiB diff --git a/core/embed/trezorhal/flash.h b/core/embed/trezorhal/flash.h index 77078e749..100b4de9b 100644 --- a/core/embed/trezorhal/flash.h +++ b/core/embed/trezorhal/flash.h @@ -26,7 +26,7 @@ // see docs/memory.md for more information -#if defined TREZOR_MODEL_T +#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_R #define FLASH_SECTOR_COUNT 24 #elif defined TREZOR_MODEL_1 #define FLASH_SECTOR_COUNT 12 @@ -40,7 +40,7 @@ // 3 -#if defined TREZOR_MODEL_T +#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_R #define FLASH_SECTOR_STORAGE_1 4 #define FLASH_SECTOR_STORAGE_2 16 #elif defined TREZOR_MODEL_1 diff --git a/core/embed/unix/background_R.h b/core/embed/unix/background_R.h new file mode 100644 index 000000000..6fcd52e18 --- /dev/null +++ b/core/embed/unix/background_R.h @@ -0,0 +1,1593 @@ +// clang-format off +unsigned char background_R_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x01, 0x02, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0xff, 0xe1, 0x12, 0x90, + 0x45, 0x78, 0x69, 0x66, 0x00, 0x00, 0x49, 0x49, 0x2a, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x12, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x28, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x31, 0x01, 0x02, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x69, 0x87, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x49, 0x4d, 0x50, 0x20, 0x32, 0x2e, 0x31, 0x30, 0x2e, 0x33, 0x30, + 0x00, 0x00, 0x32, 0x30, 0x32, 0x32, 0x3a, 0x30, 0x34, 0x3a, 0x32, 0x33, + 0x20, 0x32, 0x31, 0x3a, 0x31, 0x38, 0x3a, 0x30, 0x39, 0x00, 0x01, 0x00, + 0x01, 0xa0, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xfe, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x01, 0x01, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x03, 0x01, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x02, 0x02, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x6a, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, + 0x49, 0x46, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0xff, 0xdb, 0x00, 0x43, 0x00, 0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, + 0x07, 0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14, 0x0d, 0x0c, 0x0b, + 0x0b, 0x0c, 0x19, 0x12, 0x13, 0x0f, 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, + 0x1a, 0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, 0x22, 0x2c, 0x23, 0x1c, + 0x1c, 0x28, 0x37, 0x29, 0x2c, 0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, + 0x39, 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32, 0xff, 0xdb, 0x00, + 0x43, 0x01, 0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, 0x18, 0x0d, 0x0d, 0x18, + 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0xff, 0xc0, 0x00, 0x11, 0x08, 0x01, + 0x00, 0x00, 0x96, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, + 0x01, 0xff, 0xc4, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, + 0x00, 0xb5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, + 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, + 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, + 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, + 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, + 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, + 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, + 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xff, 0xc4, 0x00, 0x1f, 0x01, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, + 0x00, 0xb5, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, + 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 0x03, 0x11, + 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, + 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, + 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, + 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, + 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, + 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, + 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xef, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0xaa, 0xdf, + 0x6a, 0x56, 0x5a, 0x6c, 0x5e, 0x6d, 0xed, 0xdc, 0x36, 0xe9, 0xd8, 0xc8, + 0xe1, 0x73, 0xf4, 0xf5, 0xa0, 0x0b, 0x54, 0x57, 0x29, 0x73, 0xf1, 0x17, + 0xc3, 0x76, 0xe7, 0x02, 0xf5, 0xa5, 0x3f, 0xf4, 0xce, 0x32, 0x6b, 0x22, + 0xe7, 0xe2, 0xde, 0x95, 0x1e, 0x45, 0xbd, 0x8d, 0xd4, 0xa7, 0xb6, 0xe2, + 0xaa, 0x0f, 0xf3, 0xa0, 0x0f, 0x42, 0xa2, 0xbc, 0xa6, 0x6f, 0x8c, 0x12, + 0xf3, 0xe4, 0xe9, 0x11, 0xaf, 0xa6, 0xf9, 0x89, 0xfe, 0x40, 0x55, 0x47, + 0xf8, 0xb9, 0xaa, 0x9f, 0xbb, 0x65, 0x6a, 0xbf, 0xf7, 0xd1, 0xfe, 0xb4, + 0x58, 0x0f, 0x61, 0xa2, 0xbc, 0x59, 0xbe, 0x2c, 0x6b, 0xa4, 0xfc, 0xb0, + 0xda, 0x01, 0xff, 0x00, 0x5c, 0xcf, 0xf8, 0xd3, 0x7f, 0xe1, 0x6b, 0x6b, + 0xf8, 0xfb, 0x96, 0x9f, 0xf7, 0xe8, 0xff, 0x00, 0x8d, 0x3b, 0x01, 0xed, + 0x74, 0x57, 0x8c, 0x27, 0xc5, 0x8d, 0x6d, 0x47, 0xcd, 0x0d, 0xa3, 0x7f, + 0xc0, 0x08, 0xfe, 0xb5, 0x62, 0x3f, 0x8b, 0xba, 0x92, 0x91, 0xe6, 0x58, + 0x5a, 0xb7, 0xd0, 0xb0, 0xa5, 0x60, 0x3d, 0x7e, 0x8a, 0xf2, 0xf8, 0x3e, + 0x30, 0x2e, 0xe0, 0x2e, 0x34, 0x8e, 0x3b, 0x94, 0x9b, 0xfa, 0x15, 0xad, + 0x5b, 0x6f, 0x8a, 0xda, 0x14, 0xdc, 0x4b, 0x15, 0xd4, 0x3e, 0xe5, 0x43, + 0x0f, 0xd0, 0xd1, 0x60, 0x3b, 0xba, 0x2b, 0x9e, 0xb4, 0xf1, 0xc7, 0x87, + 0x2f, 0x08, 0x09, 0xa9, 0xc5, 0x1b, 0x1e, 0x82, 0x5c, 0xa7, 0xf3, 0xad, + 0xf8, 0xe4, 0x49, 0x50, 0x3c, 0x6e, 0xae, 0x87, 0x90, 0xca, 0x72, 0x0f, + 0xe3, 0x40, 0x0e, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, + 0x8a, 0x6c, 0x92, 0x08, 0xa2, 0x79, 0x18, 0xe1, 0x55, 0x4b, 0x1f, 0xc2, + 0x80, 0x38, 0xff, 0x00, 0x1c, 0xf8, 0xd5, 0x7c, 0x39, 0x00, 0xb5, 0xb4, + 0xda, 0xfa, 0x84, 0xab, 0x91, 0x9e, 0x44, 0x63, 0xd4, 0x8f, 0x5f, 0x6a, + 0xf1, 0x5b, 0xdd, 0x42, 0xef, 0x52, 0xb8, 0x33, 0xde, 0x5c, 0x49, 0x34, + 0xad, 0xd5, 0x9d, 0xb3, 0x56, 0x3c, 0x41, 0xa8, 0x49, 0xaa, 0x6b, 0xd7, + 0x77, 0x52, 0xb1, 0x25, 0xe4, 0x38, 0xcf, 0x61, 0xd8, 0x55, 0x15, 0x5e, + 0x29, 0x88, 0x4d, 0xa7, 0xa9, 0xa3, 0x6d, 0x33, 0x12, 0x49, 0x23, 0x05, + 0x3b, 0x42, 0x9c, 0x13, 0x4f, 0x55, 0x74, 0x65, 0x56, 0x39, 0xdd, 0xd0, + 0xd3, 0x00, 0xdb, 0x9a, 0x5f, 0xd2, 0x97, 0xa8, 0xc5, 0x18, 0xcf, 0x03, + 0xf3, 0xa0, 0x04, 0xc5, 0x1b, 0x45, 0x2e, 0x0d, 0x04, 0x50, 0x03, 0x71, + 0xcd, 0x1b, 0x79, 0xa7, 0xe3, 0x83, 0x49, 0x83, 0x9e, 0x28, 0x01, 0xb8, + 0xeb, 0xe9, 0x41, 0x5a, 0x78, 0x5e, 0x3a, 0x73, 0x4b, 0x8e, 0x3f, 0xa5, + 0x00, 0x47, 0xb4, 0x8e, 0x95, 0xb7, 0xe1, 0xff, 0x00, 0x15, 0xea, 0x7e, + 0x1e, 0xba, 0x57, 0xb7, 0x99, 0x9a, 0x0c, 0xfc, 0xf0, 0xb1, 0xca, 0xb0, + 0xfe, 0x9f, 0x5a, 0xc7, 0x2b, 0xdb, 0x34, 0xc6, 0x14, 0x01, 0xf4, 0x96, + 0x87, 0xac, 0xdb, 0x6b, 0xda, 0x54, 0x57, 0xf6, 0xa7, 0xe5, 0x71, 0xf3, + 0x29, 0xea, 0xad, 0xdc, 0x1a, 0xd1, 0xaf, 0x1d, 0xf8, 0x4b, 0xa9, 0xcb, + 0x16, 0xb1, 0x71, 0xa7, 0x16, 0x3e, 0x54, 0xd1, 0xef, 0x00, 0xf6, 0x61, + 0x5e, 0xc5, 0x52, 0x30, 0xa2, 0x8a, 0x28, 0x00, 0xaa, 0x7a, 0xb9, 0xc6, + 0x8d, 0x7c, 0x7f, 0xe9, 0xde, 0x4f, 0xfd, 0x04, 0xd5, 0xca, 0xa5, 0xab, + 0xff, 0x00, 0xc8, 0x1a, 0xfb, 0x3d, 0x3c, 0x87, 0xff, 0x00, 0xd0, 0x4d, + 0x00, 0x7c, 0xd7, 0x73, 0xff, 0x00, 0x1f, 0x93, 0x7f, 0xbe, 0x68, 0x19, + 0x0a, 0xcc, 0xb8, 0xc8, 0x19, 0xe6, 0x8b, 0x9f, 0xf8, 0xfd, 0x9b, 0xfd, + 0xf3, 0x46, 0x71, 0x14, 0x98, 0xfe, 0xe9, 0xaa, 0x11, 0x12, 0xb4, 0xdb, + 0x08, 0x45, 0xe0, 0xb6, 0xee, 0x05, 0x1b, 0xe7, 0x46, 0x47, 0x65, 0x25, + 0x51, 0x83, 0x63, 0x18, 0xa9, 0xf3, 0x88, 0xe3, 0xc7, 0xf7, 0x45, 0x35, + 0xcf, 0xc8, 0xe3, 0x3d, 0x54, 0xd0, 0x02, 0xed, 0x05, 0x32, 0x4e, 0x19, + 0x93, 0x23, 0x1e, 0xb5, 0x58, 0x25, 0xd1, 0x95, 0xe3, 0x0e, 0x32, 0x9c, + 0x93, 0xda, 0xac, 0xf3, 0xe5, 0xc7, 0x9e, 0xbb, 0x07, 0xf2, 0xa1, 0x17, + 0x6d, 0xc4, 0xb2, 0x13, 0xf2, 0xb2, 0xae, 0x3d, 0xfa, 0x50, 0x05, 0x3d, + 0xd3, 0xab, 0xc8, 0xa6, 0x64, 0x1b, 0x0e, 0x0e, 0x4f, 0x5f, 0xa5, 0x4b, + 0x2b, 0xb9, 0xb2, 0x8a, 0x65, 0x38, 0x2c, 0xdb, 0x49, 0xf7, 0xa9, 0x1a, + 0xd9, 0x65, 0x92, 0xe1, 0xd8, 0xe0, 0x96, 0xcc, 0x78, 0x3c, 0x77, 0xff, + 0x00, 0xeb, 0x51, 0x2c, 0x6e, 0xf6, 0x31, 0x46, 0xaa, 0xa0, 0xab, 0x72, + 0xb9, 0xa4, 0x32, 0x28, 0xd2, 0xe2, 0x40, 0xe5, 0x65, 0x53, 0xb7, 0x93, + 0xcf, 0x4a, 0x5b, 0x63, 0x23, 0x5d, 0x94, 0x76, 0xde, 0x8a, 0x09, 0x62, + 0xbd, 0x3a, 0x50, 0x12, 0xe5, 0x63, 0x75, 0x8d, 0x11, 0x03, 0x80, 0x1b, + 0x07, 0xa8, 0xa7, 0xd9, 0xa4, 0xd0, 0xc8, 0x8a, 0xea, 0xab, 0x1e, 0x49, + 0x66, 0x07, 0x93, 0xc7, 0x4a, 0x04, 0x45, 0x1f, 0xda, 0xae, 0x3e, 0x68, + 0xf8, 0x5c, 0xe0, 0x03, 0xde, 0x95, 0xae, 0x7f, 0xd1, 0xb2, 0x18, 0xac, + 0xa1, 0xf0, 0x47, 0xf9, 0xfc, 0x29, 0xc6, 0x2b, 0x88, 0xbf, 0x77, 0x0b, + 0x83, 0x1e, 0x72, 0xa7, 0xb8, 0xcd, 0x0d, 0x68, 0x3e, 0xc8, 0x47, 0x0d, + 0x31, 0x70, 0x49, 0xf6, 0xe6, 0x81, 0x84, 0x05, 0xcd, 0xca, 0xc6, 0xf2, + 0x2b, 0x07, 0xcf, 0x20, 0xf4, 0x35, 0x23, 0x0e, 0x29, 0x56, 0x04, 0x8a, + 0xe9, 0x59, 0x39, 0x8c, 0xa1, 0x1c, 0x9e, 0x54, 0xff, 0x00, 0x9f, 0xe7, + 0x43, 0x72, 0x29, 0x88, 0xea, 0x3e, 0x1b, 0x36, 0xcf, 0x1a, 0xda, 0xe3, + 0xba, 0xb0, 0x3f, 0x95, 0x7b, 0xcd, 0x78, 0x2f, 0xc3, 0x8f, 0xf9, 0x1d, + 0x2d, 0x7d, 0xc3, 0x7f, 0x2a, 0xf7, 0xaa, 0x4c, 0x61, 0x45, 0x14, 0x52, + 0x00, 0xaa, 0x7a, 0xb1, 0xc6, 0x8d, 0x7b, 0xff, 0x00, 0x5c, 0x1f, 0xff, + 0x00, 0x41, 0x35, 0x72, 0xa9, 0xea, 0xdf, 0xf2, 0x07, 0xbd, 0xff, 0x00, + 0xae, 0x0f, 0xfc, 0x8d, 0x00, 0x7c, 0xd5, 0x71, 0xff, 0x00, 0x1f, 0xb3, + 0x7f, 0xbe, 0x69, 0x57, 0x95, 0x20, 0xf4, 0x23, 0x14, 0x97, 0x03, 0xfd, + 0x36, 0x6f, 0xf7, 0xcd, 0x38, 0x0c, 0x0e, 0x4e, 0x3d, 0xea, 0x84, 0x45, + 0xe4, 0xb8, 0xfb, 0x8f, 0x9f, 0x4a, 0x6f, 0x90, 0xed, 0xcc, 0x8f, 0xf8, + 0x54, 0xfc, 0x75, 0x0c, 0x28, 0xda, 0x3d, 0x47, 0xe7, 0x48, 0x04, 0x66, + 0xf9, 0x54, 0x0e, 0xc0, 0x0a, 0x6f, 0x63, 0x4e, 0xc0, 0x20, 0xe0, 0x8f, + 0xce, 0x8d, 0xa3, 0x1c, 0x91, 0xf9, 0xd3, 0x01, 0xa3, 0x83, 0xed, 0x4e, + 0x1c, 0x50, 0x02, 0x8e, 0xe0, 0x7e, 0x34, 0xb8, 0x5f, 0xef, 0x7e, 0xb4, + 0x00, 0x03, 0xcf, 0x3d, 0x29, 0x0f, 0x3d, 0x69, 0xd8, 0x5f, 0x51, 0xf9, + 0xd2, 0x60, 0x0e, 0xe3, 0xf3, 0xa0, 0x03, 0x38, 0xe7, 0x34, 0x67, 0x9a, + 0x51, 0xb7, 0xa6, 0x47, 0xe7, 0x46, 0x3d, 0xc7, 0xe7, 0x40, 0x0d, 0xed, + 0x4d, 0x3c, 0x0e, 0x6a, 0x4c, 0x0c, 0x67, 0x70, 0xfc, 0xe9, 0x8d, 0x8c, + 0x71, 0x40, 0x1d, 0x47, 0xc3, 0x71, 0x9f, 0x1a, 0xda, 0xfd, 0x1b, 0xf9, + 0x1a, 0xf7, 0x9a, 0xf0, 0x7f, 0x86, 0xbc, 0xf8, 0xda, 0xd7, 0xd3, 0x6b, + 0xff, 0x00, 0xe8, 0x26, 0xbd, 0xe2, 0x93, 0x18, 0x51, 0x45, 0x14, 0x80, + 0x2a, 0x96, 0xaf, 0xff, 0x00, 0x20, 0x6b, 0xdf, 0xfa, 0xe0, 0xff, 0x00, + 0xc8, 0xd5, 0xda, 0xa5, 0xab, 0xff, 0x00, 0xc8, 0x1a, 0xf4, 0x7f, 0xd3, + 0x17, 0xfe, 0x54, 0x01, 0xf3, 0x64, 0xb9, 0x37, 0xb2, 0x8e, 0xe5, 0xcd, + 0x67, 0xce, 0xcc, 0x65, 0x60, 0x4f, 0x43, 0x8a, 0xd3, 0xe9, 0xa9, 0x37, + 0xfd, 0x74, 0xfe, 0xb5, 0x9b, 0x75, 0xff, 0x00, 0x1f, 0x32, 0x7f, 0xbd, + 0x4c, 0x44, 0x59, 0x3e, 0xb4, 0x99, 0x34, 0x51, 0x40, 0xc3, 0x27, 0xd6, + 0x8a, 0x28, 0xa0, 0x03, 0x34, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x66, 0x8a, 0x28, 0x01, 0x72, 0x7d, 0x6b, 0x42, 0xd3, 0xf7, 0xd6, + 0xd2, 0xf3, 0xf3, 0xc7, 0x83, 0xf5, 0x15, 0x9d, 0x5a, 0x1a, 0x6f, 0xdd, + 0xb9, 0xff, 0x00, 0xae, 0x7f, 0xd6, 0x80, 0x3a, 0xdf, 0x86, 0xa3, 0xfe, + 0x2b, 0x6b, 0x5f, 0xf7, 0x5f, 0xff, 0x00, 0x41, 0x35, 0xef, 0x15, 0xe1, + 0x1f, 0x0d, 0x47, 0xfc, 0x56, 0xd6, 0xc7, 0xfd, 0x87, 0xfe, 0x46, 0xbd, + 0xde, 0x90, 0x05, 0x14, 0x51, 0x40, 0x05, 0x53, 0xd5, 0xbf, 0xe4, 0x0f, + 0x79, 0xff, 0x00, 0x5c, 0x5b, 0xf9, 0x55, 0xca, 0xa7, 0xab, 0x7f, 0xc8, + 0x1e, 0xf3, 0xfe, 0xb8, 0xb7, 0xf2, 0xa0, 0x0f, 0x9b, 0xc9, 0xc6, 0xa4, + 0xff, 0x00, 0xf5, 0xd3, 0xfa, 0xd6, 0x65, 0xd7, 0xfc, 0x7c, 0xc9, 0xfe, + 0xf5, 0x69, 0x9f, 0xf9, 0x09, 0x37, 0xfd, 0x74, 0x35, 0x99, 0x75, 0xff, + 0x00, 0x1f, 0x52, 0x7f, 0xbd, 0x4c, 0x44, 0x34, 0x51, 0x45, 0x03, 0x0a, + 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, + 0x28, 0xa2, 0x80, 0x0a, 0xd0, 0xd3, 0x3e, 0xed, 0xcf, 0xfb, 0x9f, 0xd6, + 0xb3, 0xeb, 0x43, 0x4c, 0xfb, 0xb7, 0x3f, 0xee, 0x7f, 0x5a, 0x00, 0xeb, + 0xfe, 0x1a, 0x0f, 0xf8, 0xad, 0x20, 0xff, 0x00, 0x71, 0xbf, 0x95, 0x7b, + 0xb5, 0x78, 0x4f, 0xc3, 0x5f, 0xf9, 0x1d, 0x20, 0xff, 0x00, 0x71, 0xbf, + 0x95, 0x7b, 0xb5, 0x20, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0xa7, 0xab, 0x7f, + 0xc8, 0x22, 0xf3, 0xfe, 0xb8, 0xb7, 0xf2, 0xab, 0x95, 0x4f, 0x56, 0xff, + 0x00, 0x90, 0x45, 0xe7, 0xfd, 0x71, 0x6f, 0xe5, 0x40, 0x1f, 0x37, 0x1f, + 0xf9, 0x08, 0xbf, 0xfd, 0x74, 0xeb, 0x59, 0xb7, 0x5f, 0xf1, 0xf3, 0x27, + 0xfb, 0xc6, 0xb4, 0x8f, 0xfc, 0x84, 0x5f, 0xfe, 0xba, 0x56, 0x65, 0xc7, + 0xfc, 0x7c, 0x49, 0xfe, 0xf1, 0xa6, 0x22, 0x2a, 0x28, 0xa2, 0x81, 0x85, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x68, 0x69, 0x9f, 0x76, 0xe4, 0xff, 0x00, 0xd3, + 0x3f, 0xeb, 0x59, 0xf5, 0xa3, 0xa6, 0x72, 0x97, 0x5f, 0xf5, 0xcf, 0xfa, + 0xd0, 0x07, 0x5d, 0xf0, 0xd3, 0xfe, 0x47, 0x48, 0x3f, 0xdc, 0x7f, 0xe5, + 0x5e, 0xed, 0x5e, 0x13, 0xf0, 0xcc, 0x7f, 0xc5, 0x6b, 0x07, 0xfb, 0x8f, + 0xfc, 0xab, 0xdd, 0xa9, 0x00, 0x51, 0x45, 0x14, 0x00, 0x55, 0x2d, 0x5f, + 0xfe, 0x40, 0xf7, 0x9f, 0xf5, 0xc5, 0xbf, 0x95, 0x5d, 0xaa, 0x7a, 0xb7, + 0xfc, 0x82, 0x2f, 0x3f, 0xeb, 0x8b, 0x7f, 0x2a, 0x00, 0xf9, 0xb8, 0xff, + 0x00, 0xc8, 0x49, 0xff, 0x00, 0xeb, 0xa5, 0x66, 0x5c, 0x7f, 0xc7, 0xc4, + 0x9f, 0xef, 0x1a, 0xd3, 0x3f, 0xf2, 0x12, 0x7f, 0xfa, 0xe9, 0x59, 0x97, + 0x3f, 0xf1, 0xf3, 0x27, 0xfb, 0xc6, 0x98, 0x88, 0xa8, 0xa2, 0x8a, 0x06, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x15, 0xa3, 0xa6, 0x1f, 0x96, 0xe7, 0xfe, 0xb9, + 0xff, 0x00, 0x5a, 0xce, 0xad, 0x0d, 0x33, 0xee, 0xdc, 0xff, 0x00, 0xb9, + 0xfd, 0x68, 0x03, 0xaf, 0xf8, 0x66, 0x3f, 0xe2, 0xb5, 0x83, 0xfd, 0xc7, + 0xfe, 0x55, 0xee, 0xd5, 0xe1, 0x3f, 0x0c, 0xff, 0x00, 0xe4, 0x75, 0x83, + 0xfd, 0xc7, 0xfe, 0x55, 0xee, 0xd4, 0x80, 0x28, 0xa2, 0x8a, 0x00, 0x2a, + 0x96, 0xaf, 0xff, 0x00, 0x20, 0x7b, 0xcf, 0xfa, 0xe2, 0xdf, 0xca, 0xae, + 0xd5, 0x2d, 0x5f, 0xfe, 0x40, 0xf7, 0x9f, 0xf5, 0xc5, 0xbf, 0x95, 0x00, + 0x7c, 0xde, 0x7f, 0xe4, 0x24, 0xff, 0x00, 0xf5, 0xd3, 0xfa, 0xd6, 0x6d, + 0xd7, 0xfc, 0x7c, 0xc9, 0x8f, 0xef, 0x1a, 0xd3, 0x3c, 0x6a, 0x4f, 0xff, + 0x00, 0x5d, 0x0f, 0xf3, 0xac, 0xbb, 0x9f, 0xf8, 0xf9, 0x97, 0xfd, 0xea, + 0xa1, 0x11, 0x51, 0x45, 0x14, 0x86, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, + 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x15, 0xa1, + 0xa6, 0xfd, 0xcb, 0x9f, 0xf7, 0x3f, 0xad, 0x67, 0xd6, 0x86, 0x99, 0xf7, + 0x2e, 0x7f, 0xeb, 0x9f, 0xf5, 0xa0, 0x0e, 0xbf, 0xe1, 0x9f, 0xfc, 0x8e, + 0xb0, 0x7f, 0xb8, 0xff, 0x00, 0xca, 0xbd, 0xda, 0xbc, 0x27, 0xe1, 0x9f, + 0xfc, 0x8e, 0xb0, 0x7f, 0xd7, 0x37, 0xfe, 0x55, 0xee, 0xd4, 0x30, 0x0a, + 0x28, 0xa2, 0x90, 0x05, 0x52, 0xd5, 0xf9, 0xd1, 0xef, 0x3f, 0xeb, 0x8b, + 0x7f, 0x2a, 0xbb, 0x54, 0xf5, 0x6f, 0xf9, 0x04, 0x5e, 0x7f, 0xd7, 0x16, + 0xfe, 0x54, 0x01, 0xf3, 0x79, 0x1f, 0xf1, 0x32, 0x7f, 0xfa, 0xe8, 0x7f, + 0x9d, 0x65, 0xdd, 0x7f, 0xc7, 0xcc, 0x9f, 0xef, 0x1a, 0xd2, 0x76, 0xdb, + 0xa8, 0xbb, 0x7a, 0x49, 0x9f, 0xd6, 0xab, 0x6a, 0x70, 0x18, 0xee, 0xdd, + 0x94, 0x65, 0x18, 0xe4, 0x1a, 0xa1, 0x14, 0x68, 0xa3, 0x07, 0xd2, 0x8c, + 0x1f, 0x4a, 0x43, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xc1, 0x1d, 0xa8, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0xb4, 0x74, + 0xbf, 0xb9, 0x73, 0xff, 0x00, 0x5c, 0xff, 0x00, 0xad, 0x67, 0x56, 0x8d, + 0x81, 0xf2, 0xad, 0xa7, 0x6f, 0xef, 0x00, 0x05, 0x00, 0x75, 0xdf, 0x0c, + 0xbf, 0xe4, 0x75, 0x80, 0xff, 0x00, 0xd3, 0x37, 0xfe, 0x55, 0xee, 0xd5, + 0xe1, 0x5f, 0x0c, 0x7f, 0xe4, 0x74, 0x87, 0xfe, 0xb9, 0xbf, 0xf2, 0xaf, + 0x75, 0xa4, 0x01, 0x45, 0x14, 0x50, 0x01, 0x54, 0xb5, 0x7f, 0xf9, 0x03, + 0xde, 0x7f, 0xd7, 0x16, 0xfe, 0x55, 0x76, 0xab, 0xdf, 0xc2, 0xd7, 0x1a, + 0x7d, 0xc4, 0x28, 0x40, 0x67, 0x8d, 0x94, 0x67, 0xdc, 0x50, 0x07, 0xcc, + 0xd7, 0x1f, 0xf1, 0xf9, 0x37, 0xfb, 0xe6, 0xa5, 0xde, 0xb2, 0xc6, 0x16, + 0x4e, 0xdd, 0xe9, 0x97, 0xc8, 0x61, 0xd4, 0x67, 0x8d, 0xbe, 0xf0, 0x73, + 0x9a, 0x8c, 0x38, 0x03, 0x24, 0xe0, 0x7b, 0xd5, 0x08, 0x9c, 0xc3, 0x6e, + 0x47, 0x24, 0xd2, 0x79, 0x56, 0xd8, 0x1c, 0x9e, 0x2a, 0xb1, 0xb8, 0x8b, + 0xfb, 0xc2, 0x90, 0xdc, 0x45, 0xfd, 0xf1, 0x40, 0x16, 0x05, 0xbd, 0xa9, + 0xa0, 0x43, 0x6c, 0x0f, 0x53, 0x91, 0x55, 0x85, 0xc4, 0x58, 0xc6, 0xf1, + 0xcd, 0x1e, 0x7c, 0x79, 0xc6, 0xf1, 0x40, 0x16, 0x4c, 0x50, 0x37, 0x5c, + 0xd3, 0x7c, 0x8b, 0x7e, 0xc2, 0xa3, 0x04, 0x74, 0x07, 0xf1, 0xa7, 0x03, + 0x40, 0x0f, 0xf2, 0x6d, 0x88, 0xe8, 0x68, 0xfb, 0x35, 0xbe, 0x29, 0x8c, + 0xe1, 0x57, 0x2d, 0xc0, 0xa8, 0xfe, 0xd3, 0x1f, 0xf7, 0xc5, 0x03, 0x26, + 0xfb, 0x3d, 0xb6, 0x3a, 0x73, 0x4b, 0xf6, 0x7b, 0x6c, 0x0a, 0x83, 0xed, + 0x11, 0xe7, 0x3b, 0xc5, 0x28, 0xb8, 0x88, 0x0f, 0xbc, 0x29, 0x01, 0x2b, + 0x5b, 0xdb, 0x0e, 0xd4, 0x8e, 0x57, 0x68, 0x55, 0x18, 0x51, 0x51, 0xf9, + 0xf1, 0x9f, 0xe3, 0x14, 0xa7, 0x18, 0xc8, 0xa6, 0x23, 0xaf, 0xf8, 0x61, + 0xff, 0x00, 0x23, 0xa4, 0x3f, 0xf5, 0xcd, 0xbf, 0x95, 0x7b, 0xb5, 0x78, + 0x7f, 0xc2, 0xab, 0x77, 0x9b, 0xc5, 0xc6, 0x55, 0xc6, 0xd8, 0x61, 0x66, + 0x6c, 0xfb, 0xf1, 0x5e, 0xe1, 0x52, 0x30, 0xa2, 0x8a, 0x28, 0x00, 0xa3, + 0x19, 0xa2, 0x8a, 0x00, 0xf9, 0xcb, 0xc6, 0x16, 0xa6, 0xd3, 0xc4, 0xf7, + 0x69, 0x8c, 0x66, 0x46, 0xfe, 0x7f, 0xfe, 0xaa, 0xc6, 0xf2, 0xc3, 0x94, + 0xdd, 0xca, 0xe0, 0x9c, 0x57, 0x79, 0xf1, 0x5f, 0x4d, 0x36, 0xfa, 0xea, + 0xdd, 0xaa, 0xfc, 0x93, 0x28, 0x6c, 0xfb, 0xe3, 0x07, 0xf9, 0x7e, 0xb5, + 0xc3, 0xf4, 0x8e, 0x36, 0x3d, 0x08, 0x23, 0xf9, 0x55, 0x08, 0x3c, 0xb8, + 0xc7, 0xf0, 0x2f, 0xe5, 0x49, 0xb6, 0x35, 0x3f, 0x71, 0x48, 0xfa, 0x53, + 0xf2, 0xa4, 0x75, 0xa6, 0xb0, 0x1e, 0xb9, 0xa0, 0x03, 0x11, 0x75, 0xd8, + 0xbf, 0xf7, 0xcd, 0x37, 0x64, 0x64, 0xff, 0x00, 0xab, 0x5f, 0xca, 0x9c, + 0x14, 0x0e, 0xe2, 0x90, 0x85, 0x03, 0xaf, 0x6a, 0x00, 0x95, 0x11, 0x1a, + 0xd2, 0x6d, 0xa3, 0x06, 0x32, 0xa4, 0x7b, 0x03, 0x90, 0x45, 0x42, 0x0d, + 0x4b, 0x6e, 0xea, 0x6d, 0x2e, 0x88, 0x3f, 0xdc, 0x03, 0xf3, 0x35, 0x5f, + 0x38, 0xa0, 0x07, 0xb4, 0x20, 0xb2, 0x16, 0xe5, 0x76, 0x93, 0x8f, 0x7c, + 0xe2, 0x94, 0xa4, 0x7f, 0xdc, 0x5c, 0xfd, 0x29, 0xcc, 0x0a, 0xc6, 0x8c, + 0x71, 0x86, 0x52, 0x01, 0xfc, 0x69, 0x01, 0x52, 0x3a, 0xd0, 0x31, 0x36, + 0xc7, 0x8c, 0xec, 0x5f, 0xca, 0x82, 0x13, 0xfe, 0x79, 0xa7, 0xe4, 0x29, + 0x78, 0x34, 0xbb, 0x7e, 0x94, 0x08, 0x66, 0xd4, 0x27, 0xfd, 0x5a, 0xfe, + 0x54, 0xa4, 0x2f, 0x92, 0xe0, 0x0c, 0x6d, 0x23, 0x1f, 0x43, 0x4e, 0x3b, + 0x42, 0xf5, 0x19, 0xa6, 0x29, 0x0d, 0x04, 0xcc, 0x0f, 0x19, 0x51, 0xfa, + 0x1a, 0x00, 0xf4, 0xdf, 0x83, 0x96, 0x67, 0x7e, 0xa7, 0x7a, 0x47, 0x00, + 0x24, 0x4a, 0x7d, 0xce, 0x49, 0xfe, 0x42, 0xbd, 0x5e, 0xb8, 0xef, 0x86, + 0x56, 0x1f, 0x62, 0xf0, 0x6c, 0x12, 0x15, 0xc3, 0x5c, 0xbb, 0x4a, 0x7d, + 0xc7, 0x41, 0xfa, 0x0a, 0xec, 0x6a, 0x46, 0x14, 0x51, 0x45, 0x00, 0x14, + 0x51, 0x45, 0x00, 0x71, 0x5f, 0x12, 0xb4, 0x73, 0xa8, 0x78, 0x7b, 0xed, + 0x11, 0xae, 0x64, 0xb7, 0x3c, 0xff, 0x00, 0xba, 0x7f, 0xfa, 0xf8, 0xaf, + 0x0f, 0x47, 0x5d, 0x86, 0x29, 0x06, 0x57, 0xb8, 0x3d, 0x8d, 0x7d, 0x41, + 0x75, 0x6f, 0x1d, 0xdd, 0xac, 0xb6, 0xf2, 0x8c, 0xc7, 0x2a, 0x95, 0x61, + 0xec, 0x6b, 0xe6, 0xef, 0x11, 0xe9, 0x72, 0xe8, 0xfa, 0xe5, 0xc5, 0xac, + 0xa3, 0x95, 0x73, 0xcf, 0xaf, 0xbf, 0xf5, 0xfc, 0x69, 0xa1, 0x19, 0xbe, + 0x44, 0x1f, 0xde, 0x90, 0x7e, 0x34, 0x9e, 0x44, 0x23, 0xf8, 0xe5, 0xfc, + 0xe9, 0x7a, 0x8a, 0x53, 0xd2, 0x80, 0x1b, 0xe4, 0x43, 0xff, 0x00, 0x3d, + 0x25, 0xfc, 0xe8, 0xfb, 0x3c, 0x19, 0xfb, 0xd2, 0x1f, 0xf8, 0x15, 0x2e, + 0x33, 0x57, 0x2c, 0x74, 0xd9, 0x6f, 0x92, 0xe2, 0x61, 0xb9, 0x2d, 0xad, + 0x93, 0x7c, 0xd3, 0x79, 0x6c, 0xca, 0x83, 0xb0, 0x38, 0x07, 0x04, 0xe0, + 0xe3, 0x3e, 0x86, 0x80, 0x2b, 0x65, 0x55, 0x02, 0x20, 0xda, 0x83, 0x9c, + 0x56, 0x81, 0xf0, 0xf6, 0xb4, 0xb9, 0xce, 0x8f, 0xa8, 0x0c, 0x0d, 0xc7, + 0x36, 0xcf, 0xc0, 0xf5, 0xe9, 0xd2, 0xb6, 0x0d, 0xc4, 0x16, 0xd1, 0xa4, + 0x96, 0x90, 0x58, 0xe9, 0x76, 0x6d, 0x23, 0x3c, 0x33, 0xdc, 0x41, 0xe7, + 0xdc, 0xca, 0x36, 0xf0, 0xca, 0xad, 0x96, 0x55, 0xc8, 0xe1, 0xb2, 0x06, + 0x7f, 0x1a, 0xd2, 0x97, 0x57, 0xb2, 0x5f, 0x06, 0xc5, 0x2c, 0x7e, 0x2a, + 0xd5, 0xce, 0xac, 0xce, 0x20, 0x95, 0xb7, 0x02, 0x4c, 0x0a, 0x72, 0xa9, + 0xe5, 0x6f, 0xed, 0xc7, 0x39, 0xc7, 0x5e, 0x4f, 0x4a, 0x2e, 0x07, 0x0f, + 0xe6, 0x03, 0x11, 0x89, 0xc6, 0xe8, 0xc9, 0xce, 0x33, 0xd0, 0xd4, 0x3f, + 0x67, 0x83, 0xfb, 0xf2, 0x63, 0xeb, 0x5d, 0x65, 0xc4, 0xd6, 0xd7, 0x16, + 0xd2, 0xc9, 0x77, 0x06, 0x9d, 0x7b, 0x6a, 0x0c, 0xb8, 0xbe, 0xb2, 0x87, + 0xc8, 0x92, 0x16, 0x28, 0x02, 0x97, 0x89, 0x40, 0x25, 0x77, 0x6d, 0x39, + 0x20, 0x8f, 0xbd, 0xea, 0x6b, 0x9e, 0xbe, 0xd3, 0xae, 0x74, 0xf7, 0x4f, + 0x3a, 0x29, 0x44, 0x52, 0x0c, 0xc3, 0x2b, 0x46, 0xca, 0xb2, 0xaf, 0xaa, + 0xe4, 0x72, 0x39, 0x14, 0x01, 0x50, 0x5b, 0xc3, 0x8f, 0xbf, 0x2f, 0xe7, + 0x4a, 0x60, 0x87, 0xfb, 0xf2, 0xfe, 0x74, 0x67, 0xf0, 0xa3, 0xf1, 0xa0, + 0x04, 0xfb, 0x3c, 0x1d, 0xda, 0x53, 0xf5, 0x35, 0x77, 0x4f, 0xb3, 0x6d, + 0x47, 0x50, 0xb5, 0xd3, 0xed, 0xd7, 0x06, 0x69, 0x02, 0x00, 0x3d, 0xcf, + 0x5a, 0xa6, 0x6b, 0xd1, 0xbe, 0x12, 0xe8, 0x5f, 0x6a, 0xd4, 0xa7, 0xd6, + 0x66, 0x4c, 0xc7, 0x6d, 0xfb, 0xb8, 0x72, 0x38, 0xde, 0x47, 0x27, 0xf0, + 0x07, 0xf5, 0xa0, 0x0f, 0x5b, 0xb2, 0xb4, 0x8e, 0xc6, 0xc6, 0x0b, 0x48, + 0x57, 0x6c, 0x70, 0xc6, 0xb1, 0xa8, 0xf6, 0x03, 0x15, 0x3d, 0x14, 0x52, + 0x18, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x57, 0x9b, 0xfc, + 0x53, 0xf0, 0xe7, 0xda, 0xec, 0x93, 0x56, 0xb7, 0x4f, 0xde, 0x47, 0x85, + 0x97, 0x1e, 0x9d, 0x8f, 0xf4, 0xfc, 0xab, 0xd2, 0x2a, 0x2b, 0x8b, 0x78, + 0xee, 0xad, 0xa4, 0xb7, 0x99, 0x43, 0x47, 0x22, 0x95, 0x60, 0x7b, 0x83, + 0x40, 0x1f, 0x2d, 0x29, 0xec, 0x7a, 0xd3, 0xf3, 0x9e, 0x86, 0xb6, 0x7c, + 0x5b, 0xa1, 0x4b, 0xa0, 0x6b, 0x93, 0x5b, 0xb0, 0xfd, 0xde, 0xec, 0xa3, + 0x7a, 0x8e, 0xc6, 0xb1, 0x46, 0x08, 0xa6, 0x21, 0x45, 0x75, 0xd6, 0xbe, + 0x15, 0x97, 0x56, 0xd3, 0x92, 0x2b, 0x06, 0xd3, 0xe0, 0x92, 0xd2, 0x08, + 0x6f, 0x6e, 0xbe, 0xd0, 0xef, 0xbe, 0x52, 0xc4, 0x94, 0x00, 0x1e, 0x08, + 0xda, 0xc0, 0xe1, 0x47, 0x7e, 0xa4, 0xf4, 0xe4, 0x48, 0xea, 0x6b, 0xa6, + 0xd7, 0xd0, 0xb6, 0xb7, 0xab, 0x5c, 0xe8, 0x92, 0xcd, 0x1e, 0x99, 0xf6, + 0x74, 0x68, 0x83, 0xe0, 0x33, 0x40, 0xc7, 0x6e, 0x17, 0x68, 0xe1, 0x79, + 0x39, 0x07, 0x07, 0x19, 0xcf, 0x39, 0xa1, 0x81, 0x0e, 0xa2, 0xd2, 0xdc, + 0x78, 0xc1, 0x74, 0xb9, 0x2d, 0x74, 0xbb, 0xbb, 0xab, 0x8b, 0x84, 0xb7, + 0xfb, 0x40, 0x37, 0x0a, 0xa5, 0xcb, 0x04, 0xe8, 0x5c, 0x10, 0x01, 0xe3, + 0xa7, 0x6e, 0x38, 0xa9, 0x96, 0xc7, 0x4c, 0x99, 0xd6, 0x2b, 0x6b, 0xbd, + 0x0a, 0x6b, 0x89, 0x08, 0x58, 0xe2, 0x11, 0x5f, 0x02, 0xec, 0x4e, 0x00, + 0xc9, 0x38, 0x19, 0x3e, 0xb5, 0x81, 0xa7, 0x41, 0x2d, 0xd7, 0x89, 0x34, + 0x6b, 0x68, 0x26, 0x30, 0xcd, 0x2c, 0xf1, 0x24, 0x72, 0x8f, 0xe0, 0x63, + 0x2e, 0x03, 0x7e, 0x07, 0x9a, 0xe8, 0x65, 0x8f, 0x4e, 0x68, 0xd8, 0xe8, + 0xba, 0xac, 0x72, 0x5f, 0xa0, 0x2f, 0x12, 0x4b, 0xa7, 0x88, 0x8b, 0x91, + 0xce, 0x15, 0xb2, 0x46, 0xec, 0x64, 0x8c, 0xf5, 0xc6, 0x3a, 0x91, 0x48, + 0x64, 0x3a, 0x3c, 0xd0, 0x5d, 0x5f, 0x2c, 0x16, 0xd6, 0xc3, 0x4f, 0xd5, + 0x63, 0x9d, 0x2d, 0xcc, 0x51, 0x3b, 0x3c, 0x57, 0x01, 0xdc, 0x23, 0x29, + 0x0e, 0x4e, 0x3a, 0xfa, 0x90, 0x7d, 0x2b, 0x53, 0x5c, 0xf0, 0xbc, 0x5a, + 0x4d, 0xad, 0xd5, 0xa6, 0x6c, 0xa4, 0xdd, 0x09, 0xbf, 0xb0, 0xf2, 0x64, + 0x63, 0x22, 0x45, 0xb8, 0x6f, 0x57, 0xc6, 0x57, 0x85, 0xec, 0x7f, 0x03, + 0xc6, 0x0f, 0x31, 0xa5, 0x14, 0x9b, 0x42, 0xd4, 0xa3, 0x89, 0x19, 0xef, + 0xde, 0x48, 0xde, 0x42, 0xca, 0x58, 0xb4, 0x59, 0xfe, 0x1c, 0x74, 0x3b, + 0x88, 0xce, 0x7a, 0x8e, 0xe3, 0xa1, 0xe9, 0x60, 0xbb, 0xd2, 0xa6, 0xd6, + 0xd6, 0x29, 0xc5, 0xeb, 0xc1, 0x63, 0xa6, 0xcf, 0x15, 0xec, 0xf3, 0x28, + 0x0d, 0x24, 0x85, 0x89, 0x5d, 0xf9, 0xc9, 0x20, 0x33, 0x2a, 0x8e, 0xfc, + 0x0a, 0x02, 0xd6, 0x38, 0xbf, 0xca, 0x93, 0x3d, 0xa9, 0x71, 0xcd, 0x23, + 0x1f, 0xad, 0x31, 0x12, 0x5a, 0xda, 0xcf, 0x7d, 0x79, 0x15, 0xa5, 0xb2, + 0x19, 0x26, 0x95, 0x82, 0x22, 0x8e, 0xe4, 0xd7, 0xd2, 0x3e, 0x1f, 0xd1, + 0xe2, 0xd0, 0x74, 0x3b, 0x5d, 0x3a, 0x20, 0x3f, 0x74, 0x9f, 0x3b, 0x0f, + 0xe2, 0x63, 0xd4, 0xfe, 0x75, 0xe7, 0x3f, 0x09, 0xfc, 0x34, 0x1d, 0xe4, + 0xd7, 0xee, 0x50, 0xe1, 0x73, 0x1d, 0xb0, 0x23, 0xbf, 0x76, 0xfe, 0x9f, + 0x9d, 0x7a, 0xcd, 0x21, 0x85, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, + 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x1c, 0x67, 0xc4, 0x4f, + 0x0d, 0xae, 0xb3, 0xa2, 0x35, 0xcc, 0x4b, 0x9b, 0x9b, 0x65, 0x27, 0x20, + 0x72, 0x57, 0xbf, 0xe5, 0xd6, 0xbc, 0x23, 0x05, 0x1c, 0xa3, 0x70, 0x41, + 0xc1, 0xaf, 0xaa, 0x88, 0x04, 0x10, 0x46, 0x41, 0xea, 0x2b, 0xc2, 0x3e, + 0x21, 0xf8, 0x52, 0x5d, 0x13, 0x56, 0x6b, 0xb8, 0x23, 0xcd, 0x9c, 0xec, + 0x4a, 0x90, 0x38, 0x53, 0xe9, 0x4c, 0x0e, 0x3e, 0xba, 0x45, 0xbd, 0xba, + 0xbb, 0xb2, 0xb4, 0xd4, 0xf4, 0xeb, 0xa9, 0xed, 0xf5, 0x1d, 0x3e, 0x15, + 0xb7, 0xb9, 0xfb, 0x32, 0x91, 0x24, 0x90, 0x82, 0xaa, 0xa5, 0x71, 0xc1, + 0xc2, 0xe0, 0x7e, 0x04, 0xd7, 0x30, 0xac, 0x2a, 0xde, 0x9d, 0xa9, 0x5d, + 0xe9, 0x37, 0xd1, 0x5e, 0x59, 0x4c, 0xd1, 0x4d, 0x1b, 0x02, 0x0a, 0x9e, + 0x0e, 0x0e, 0x70, 0x7d, 0x47, 0x1c, 0x8e, 0xf4, 0x08, 0xeb, 0x75, 0xaf, + 0x0e, 0x49, 0x15, 0x95, 0xbf, 0x8b, 0x64, 0x7d, 0x4a, 0xee, 0x39, 0x95, + 0x67, 0x86, 0xec, 0xdf, 0x22, 0xc9, 0xb4, 0x30, 0x50, 0xd8, 0x31, 0xe4, + 0x60, 0x94, 0x18, 0xf7, 0xf6, 0x35, 0x85, 0x79, 0xe2, 0x4b, 0xcb, 0x9b, + 0xab, 0x3b, 0x9f, 0xb4, 0xdf, 0xc9, 0x2d, 0xab, 0x97, 0x46, 0xbb, 0xba, + 0xf3, 0x48, 0xce, 0x38, 0x18, 0x55, 0xc0, 0xe3, 0x9f, 0x5a, 0xb7, 0x16, + 0xb1, 0x67, 0x34, 0x68, 0x60, 0xb8, 0x9f, 0x47, 0x9e, 0x38, 0x3c, 0xb4, + 0x48, 0x8b, 0x4b, 0x6c, 0x7e, 0x6f, 0x98, 0x6c, 0x62, 0xc4, 0x6e, 0x5c, + 0x77, 0xc1, 0x61, 0xce, 0x01, 0xc8, 0xd0, 0x2c, 0xe7, 0x49, 0x8e, 0x67, + 0xd5, 0x3c, 0x2b, 0x1c, 0x0e, 0xfb, 0x4b, 0x0d, 0x36, 0x23, 0x72, 0xa9, + 0x8e, 0x18, 0xc6, 0x17, 0xae, 0x78, 0xc0, 0xe9, 0xf4, 0xa4, 0x32, 0x5d, + 0x3f, 0xc3, 0x2d, 0x06, 0x91, 0x27, 0x8a, 0xe1, 0x4b, 0xfd, 0x36, 0xd1, + 0x54, 0x17, 0x92, 0xda, 0xf1, 0x49, 0x1b, 0x8e, 0x30, 0xaa, 0x13, 0x38, + 0x3d, 0x81, 0x3e, 0x99, 0x3d, 0xeb, 0x0e, 0x27, 0x6d, 0x13, 0x43, 0x99, + 0xe4, 0x2d, 0xfd, 0xab, 0xaa, 0x83, 0x9f, 0x35, 0x0e, 0xf4, 0xb7, 0x25, + 0xd5, 0xf7, 0x13, 0xfc, 0x4c, 0x54, 0x7e, 0x19, 0xf6, 0x35, 0x66, 0x6d, + 0x7a, 0x1b, 0x59, 0x99, 0x8d, 0xc4, 0xba, 0xd4, 0xee, 0xaa, 0x64, 0x7b, + 0x87, 0x91, 0x2d, 0xf7, 0x83, 0x90, 0xca, 0x8a, 0x54, 0x9c, 0x74, 0xe7, + 0x1c, 0xe7, 0x8f, 0x5e, 0x7e, 0xf6, 0xf6, 0xe7, 0x51, 0xbd, 0x96, 0xf2, + 0xf2, 0x66, 0x9a, 0xe2, 0x56, 0xdc, 0xee, 0xdd, 0x49, 0xff, 0x00, 0x3d, + 0xbb, 0x51, 0x60, 0xb9, 0x13, 0x1c, 0x0a, 0xbb, 0xa1, 0xe9, 0x17, 0x1a, + 0xee, 0xb3, 0x6f, 0xa7, 0xdb, 0x83, 0xba, 0x56, 0xf9, 0x9b, 0xfb, 0xab, + 0xdc, 0x9f, 0xc2, 0xa8, 0x12, 0x49, 0xc0, 0x19, 0x24, 0xf1, 0x5e, 0xdb, + 0xf0, 0xd7, 0xc2, 0x4d, 0xa2, 0x69, 0xcd, 0xa8, 0xde, 0xc6, 0x56, 0xfa, + 0xe8, 0x0c, 0x2b, 0x0e, 0x63, 0x4e, 0xc3, 0xea, 0x7b, 0xd3, 0x03, 0xb3, + 0xb0, 0xb1, 0x83, 0x4d, 0xb0, 0x82, 0xca, 0xd9, 0x02, 0xc3, 0x0a, 0x04, + 0x50, 0x2a, 0xcd, 0x14, 0x52, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa8, 0x2f, + 0x2c, 0xed, 0xef, 0xed, 0x5e, 0xda, 0xea, 0x14, 0x9a, 0x17, 0x18, 0x64, + 0x71, 0x90, 0x6a, 0x7a, 0x28, 0x03, 0xcc, 0xb5, 0x5f, 0x83, 0xf6, 0xb3, + 0xcc, 0xd2, 0x69, 0xba, 0x83, 0xdb, 0x86, 0x39, 0x11, 0xca, 0x9b, 0x80, + 0xfa, 0x11, 0x8a, 0xc4, 0x93, 0xe0, 0xfe, 0xb4, 0xa7, 0xf7, 0x77, 0xf6, + 0x4c, 0x3f, 0xda, 0xdc, 0x3f, 0xa1, 0xaf, 0x68, 0xa2, 0x80, 0x3c, 0x54, + 0x7c, 0x21, 0xd7, 0x80, 0xff, 0x00, 0x8f, 0xcb, 0x0c, 0xff, 0x00, 0xbe, + 0xdf, 0xfc, 0x4d, 0x07, 0xe1, 0x0e, 0xbd, 0xff, 0x00, 0x3f, 0x96, 0x3f, + 0xf7, 0xd3, 0x7f, 0x85, 0x7b, 0x55, 0x14, 0x01, 0xe2, 0xa3, 0xe1, 0x0e, + 0xbb, 0xff, 0x00, 0x3f, 0x96, 0x03, 0xfe, 0x04, 0xdf, 0xfc, 0x4d, 0x58, + 0x87, 0xe0, 0xee, 0xa2, 0xcd, 0xfb, 0xfd, 0x52, 0xd9, 0x17, 0xbe, 0xc4, + 0x2d, 0xfe, 0x15, 0xec, 0x54, 0x50, 0x07, 0x1d, 0xe1, 0xcf, 0x87, 0x3a, + 0x3e, 0x83, 0x2a, 0xdc, 0x49, 0xba, 0xf2, 0xe9, 0x79, 0x59, 0x26, 0x03, + 0x09, 0xf4, 0x15, 0xd8, 0xd1, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, + 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x7f, 0xff, 0xd9, 0xff, 0xe1, + 0x0c, 0x77, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6e, 0x73, 0x2e, + 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x61, + 0x70, 0x2f, 0x31, 0x2e, 0x30, 0x2f, 0x00, 0x3c, 0x3f, 0x78, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x3d, 0x22, + 0xef, 0xbb, 0xbf, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x57, 0x35, 0x4d, + 0x30, 0x4d, 0x70, 0x43, 0x65, 0x68, 0x69, 0x48, 0x7a, 0x72, 0x65, 0x53, + 0x7a, 0x4e, 0x54, 0x63, 0x7a, 0x6b, 0x63, 0x39, 0x64, 0x22, 0x3f, 0x3e, + 0x20, 0x3c, 0x78, 0x3a, 0x78, 0x6d, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x20, + 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, 0x78, 0x3d, 0x22, 0x61, 0x64, 0x6f, + 0x62, 0x65, 0x3a, 0x6e, 0x73, 0x3a, 0x6d, 0x65, 0x74, 0x61, 0x2f, 0x22, + 0x20, 0x78, 0x3a, 0x78, 0x6d, 0x70, 0x74, 0x6b, 0x3d, 0x22, 0x58, 0x4d, + 0x50, 0x20, 0x43, 0x6f, 0x72, 0x65, 0x20, 0x34, 0x2e, 0x34, 0x2e, 0x30, + 0x2d, 0x45, 0x78, 0x69, 0x76, 0x32, 0x22, 0x3e, 0x20, 0x3c, 0x72, 0x64, + 0x66, 0x3a, 0x52, 0x44, 0x46, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, + 0x72, 0x64, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x31, + 0x39, 0x39, 0x39, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x32, 0x2d, 0x72, 0x64, + 0x66, 0x2d, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x2d, 0x6e, 0x73, 0x23, + 0x22, 0x3e, 0x20, 0x3c, 0x72, 0x64, 0x66, 0x3a, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x64, 0x66, 0x3a, + 0x61, 0x62, 0x6f, 0x75, 0x74, 0x3d, 0x22, 0x22, 0x20, 0x78, 0x6d, 0x6c, + 0x6e, 0x73, 0x3a, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3d, 0x22, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x6f, 0x62, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x61, 0x70, 0x2f, 0x31, 0x2e, + 0x30, 0x2f, 0x6d, 0x6d, 0x2f, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, + 0x3a, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x61, 0x70, 0x2f, 0x31, 0x2e, 0x30, 0x2f, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x23, 0x22, 0x20, 0x78, 0x6d, + 0x6c, 0x6e, 0x73, 0x3a, 0x64, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x70, 0x75, 0x72, 0x6c, 0x2e, 0x6f, 0x72, 0x67, 0x2f, + 0x64, 0x63, 0x2f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x31, 0x2e, 0x31, 0x2f, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, + 0x47, 0x49, 0x4d, 0x50, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x69, 0x6d, 0x70, 0x2e, 0x6f, 0x72, + 0x67, 0x2f, 0x78, 0x6d, 0x70, 0x2f, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, + 0x73, 0x3a, 0x78, 0x6d, 0x70, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x78, 0x61, 0x70, 0x2f, 0x31, 0x2e, 0x30, 0x2f, 0x22, + 0x20, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3a, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x44, 0x3d, 0x22, 0x67, 0x69, 0x6d, 0x70, 0x3a, + 0x64, 0x6f, 0x63, 0x69, 0x64, 0x3a, 0x67, 0x69, 0x6d, 0x70, 0x3a, 0x61, + 0x64, 0x38, 0x61, 0x34, 0x35, 0x64, 0x66, 0x2d, 0x65, 0x32, 0x31, 0x35, + 0x2d, 0x34, 0x61, 0x62, 0x38, 0x2d, 0x62, 0x39, 0x39, 0x39, 0x2d, 0x33, + 0x38, 0x63, 0x32, 0x63, 0x32, 0x66, 0x31, 0x30, 0x35, 0x35, 0x35, 0x22, + 0x20, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3a, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3d, 0x22, 0x78, 0x6d, 0x70, 0x2e, 0x69, + 0x69, 0x64, 0x3a, 0x64, 0x35, 0x38, 0x36, 0x64, 0x66, 0x33, 0x65, 0x2d, + 0x64, 0x32, 0x61, 0x64, 0x2d, 0x34, 0x62, 0x61, 0x63, 0x2d, 0x62, 0x34, + 0x35, 0x39, 0x2d, 0x39, 0x36, 0x32, 0x36, 0x63, 0x63, 0x65, 0x35, 0x66, + 0x65, 0x33, 0x31, 0x22, 0x20, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3a, 0x4f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x44, 0x3d, 0x22, 0x78, 0x6d, 0x70, 0x2e, 0x64, + 0x69, 0x64, 0x3a, 0x30, 0x36, 0x31, 0x31, 0x31, 0x32, 0x61, 0x36, 0x2d, + 0x61, 0x32, 0x65, 0x30, 0x2d, 0x34, 0x35, 0x36, 0x63, 0x2d, 0x39, 0x66, + 0x33, 0x38, 0x2d, 0x32, 0x61, 0x64, 0x63, 0x66, 0x39, 0x62, 0x62, 0x38, + 0x38, 0x34, 0x61, 0x22, 0x20, 0x64, 0x63, 0x3a, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, + 0x65, 0x67, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, 0x41, 0x50, 0x49, + 0x3d, 0x22, 0x32, 0x2e, 0x30, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3d, 0x22, 0x4c, 0x69, + 0x6e, 0x75, 0x78, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x3d, 0x22, 0x31, 0x36, 0x35, + 0x30, 0x37, 0x34, 0x31, 0x34, 0x39, 0x31, 0x37, 0x38, 0x34, 0x38, 0x38, + 0x34, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x32, 0x2e, 0x31, 0x30, 0x2e, 0x33, 0x30, + 0x22, 0x20, 0x78, 0x6d, 0x70, 0x3a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x54, 0x6f, 0x6f, 0x6c, 0x3d, 0x22, 0x47, 0x49, 0x4d, 0x50, 0x20, + 0x32, 0x2e, 0x31, 0x30, 0x22, 0x3e, 0x20, 0x3c, 0x78, 0x6d, 0x70, 0x4d, + 0x4d, 0x3a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x3e, 0x20, 0x3c, + 0x72, 0x64, 0x66, 0x3a, 0x53, 0x65, 0x71, 0x3e, 0x20, 0x3c, 0x72, 0x64, + 0x66, 0x3a, 0x6c, 0x69, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x73, 0x61, 0x76, 0x65, 0x64, + 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x3d, 0x22, 0x2f, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, + 0x74, 0x3a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, + 0x3d, 0x22, 0x78, 0x6d, 0x70, 0x2e, 0x69, 0x69, 0x64, 0x3a, 0x61, 0x65, + 0x31, 0x36, 0x62, 0x33, 0x36, 0x37, 0x2d, 0x63, 0x64, 0x35, 0x65, 0x2d, + 0x34, 0x62, 0x39, 0x65, 0x2d, 0x61, 0x66, 0x39, 0x61, 0x2d, 0x61, 0x65, + 0x30, 0x66, 0x37, 0x36, 0x63, 0x38, 0x35, 0x65, 0x30, 0x66, 0x22, 0x20, + 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, + 0x72, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x47, 0x69, 0x6d, + 0x70, 0x20, 0x32, 0x2e, 0x31, 0x30, 0x20, 0x28, 0x4c, 0x69, 0x6e, 0x75, + 0x78, 0x29, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x77, 0x68, + 0x65, 0x6e, 0x3d, 0x22, 0x32, 0x30, 0x32, 0x32, 0x2d, 0x30, 0x34, 0x2d, + 0x32, 0x33, 0x54, 0x32, 0x31, 0x3a, 0x31, 0x38, 0x3a, 0x31, 0x31, 0x2b, + 0x30, 0x32, 0x3a, 0x30, 0x30, 0x22, 0x2f, 0x3e, 0x20, 0x3c, 0x2f, 0x72, + 0x64, 0x66, 0x3a, 0x53, 0x65, 0x71, 0x3e, 0x20, 0x3c, 0x2f, 0x78, 0x6d, + 0x70, 0x4d, 0x4d, 0x3a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x3e, + 0x20, 0x3c, 0x2f, 0x72, 0x64, 0x66, 0x3a, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x20, 0x3c, 0x2f, 0x72, 0x64, + 0x66, 0x3a, 0x52, 0x44, 0x46, 0x3e, 0x20, 0x3c, 0x2f, 0x78, 0x3a, 0x78, + 0x6d, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3c, 0x3f, 0x78, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x20, 0x65, 0x6e, 0x64, 0x3d, 0x22, 0x77, 0x22, 0x3f, 0x3e, 0xff, + 0xe2, 0x02, 0xb0, 0x49, 0x43, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, + 0x4c, 0x45, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0xa0, 0x6c, 0x63, 0x6d, + 0x73, 0x04, 0x30, 0x00, 0x00, 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, + 0x20, 0x58, 0x59, 0x5a, 0x20, 0x07, 0xe6, 0x00, 0x04, 0x00, 0x17, 0x00, + 0x13, 0x00, 0x08, 0x00, 0x21, 0x61, 0x63, 0x73, 0x70, 0x41, 0x50, 0x50, + 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf6, 0xd6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, + 0x2d, 0x6c, 0x63, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, + 0x20, 0x00, 0x00, 0x00, 0x40, 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x01, + 0x60, 0x00, 0x00, 0x00, 0x36, 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x01, + 0x98, 0x00, 0x00, 0x00, 0x14, 0x63, 0x68, 0x61, 0x64, 0x00, 0x00, 0x01, + 0xac, 0x00, 0x00, 0x00, 0x2c, 0x72, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, + 0xd8, 0x00, 0x00, 0x00, 0x14, 0x62, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, + 0xec, 0x00, 0x00, 0x00, 0x14, 0x67, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, + 0x14, 0x00, 0x00, 0x00, 0x20, 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, + 0x14, 0x00, 0x00, 0x00, 0x20, 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, + 0x14, 0x00, 0x00, 0x00, 0x20, 0x63, 0x68, 0x72, 0x6d, 0x00, 0x00, 0x02, + 0x34, 0x00, 0x00, 0x00, 0x24, 0x64, 0x6d, 0x6e, 0x64, 0x00, 0x00, 0x02, + 0x58, 0x00, 0x00, 0x00, 0x24, 0x64, 0x6d, 0x64, 0x64, 0x00, 0x00, 0x02, + 0x7c, 0x00, 0x00, 0x00, 0x24, 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, + 0x53, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x47, 0x00, + 0x49, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x20, 0x00, 0x62, 0x00, 0x75, 0x00, + 0x69, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x2d, 0x00, 0x69, 0x00, 0x6e, 0x00, + 0x20, 0x00, 0x73, 0x00, 0x52, 0x00, 0x47, 0x00, 0x42, 0x6d, 0x6c, 0x75, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x65, 0x6e, 0x55, 0x53, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x50, 0x00, 0x75, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x69, 0x00, + 0x63, 0x00, 0x20, 0x00, 0x44, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x61, 0x00, + 0x69, 0x00, 0x6e, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf6, 0xd6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, + 0x2d, 0x73, 0x66, 0x33, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, + 0x42, 0x00, 0x00, 0x05, 0xde, 0xff, 0xff, 0xf3, 0x25, 0x00, 0x00, 0x07, + 0x93, 0x00, 0x00, 0xfd, 0x90, 0xff, 0xff, 0xfb, 0xa1, 0xff, 0xff, 0xfd, + 0xa2, 0x00, 0x00, 0x03, 0xdc, 0x00, 0x00, 0xc0, 0x6e, 0x58, 0x59, 0x5a, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xa0, 0x00, 0x00, 0x38, + 0xf5, 0x00, 0x00, 0x03, 0x90, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x24, 0x9f, 0x00, 0x00, 0x0f, 0x84, 0x00, 0x00, 0xb6, + 0xc4, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, + 0x97, 0x00, 0x00, 0xb7, 0x87, 0x00, 0x00, 0x18, 0xd9, 0x70, 0x61, 0x72, + 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x66, + 0x66, 0x00, 0x00, 0xf2, 0xa7, 0x00, 0x00, 0x0d, 0x59, 0x00, 0x00, 0x13, + 0xd0, 0x00, 0x00, 0x0a, 0x5b, 0x63, 0x68, 0x72, 0x6d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xd7, 0x00, 0x00, 0x54, + 0x7c, 0x00, 0x00, 0x4c, 0xcd, 0x00, 0x00, 0x99, 0x9a, 0x00, 0x00, 0x26, + 0x67, 0x00, 0x00, 0x0f, 0x5c, 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, + 0x53, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x47, 0x00, + 0x49, 0x00, 0x4d, 0x00, 0x50, 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, + 0x53, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x73, 0x00, + 0x52, 0x00, 0x47, 0x00, 0x42, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x03, 0x02, + 0x02, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x04, + 0x05, 0x08, 0x05, 0x05, 0x04, 0x04, 0x05, 0x0a, 0x07, 0x07, 0x06, 0x08, + 0x0c, 0x0a, 0x0c, 0x0c, 0x0b, 0x0a, 0x0b, 0x0b, 0x0d, 0x0e, 0x12, 0x10, + 0x0d, 0x0e, 0x11, 0x0e, 0x0b, 0x0b, 0x10, 0x16, 0x10, 0x11, 0x13, 0x14, + 0x15, 0x15, 0x15, 0x0c, 0x0f, 0x17, 0x18, 0x16, 0x14, 0x18, 0x12, 0x14, + 0x15, 0x14, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x03, 0x04, 0x04, 0x05, 0x04, + 0x05, 0x09, 0x05, 0x05, 0x09, 0x14, 0x0d, 0x0b, 0x0d, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xff, + 0xc2, 0x00, 0x11, 0x08, 0x01, 0x54, 0x00, 0xc8, 0x03, 0x01, 0x11, 0x00, + 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, 0x1c, 0x00, 0x01, + 0x00, 0x01, 0x05, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x05, 0x06, + 0xff, 0xc4, 0x00, 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x03, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x10, 0x03, 0x10, + 0x00, 0x00, 0x01, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x83, 0xce, 0x31, 0x13, 0x10, 0xa4, 0xa8, + 0xcb, 0x32, 0xd7, 0xd2, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf0, 0x16, + 0x6b, 0x93, 0xe6, 0xeb, 0xc3, 0x4f, 0x38, 0xa0, 0x10, 0x48, 0x24, 0x15, + 0x1e, 0x91, 0xef, 0x2f, 0xd4, 0x46, 0xc8, 0x8f, 0xb7, 0x50, 0x00, 0x03, + 0x42, 0xd9, 0xa7, 0x6c, 0xa8, 0xa8, 0x80, 0x48, 0x04, 0x90, 0x41, 0x24, + 0x12, 0x52, 0x49, 0x49, 0xbd, 0x65, 0xdc, 0xd2, 0x80, 0x07, 0xcc, 0x59, + 0xc9, 0x56, 0x56, 0x52, 0x58, 0x32, 0x0a, 0xc1, 0x04, 0x80, 0x49, 0x49, + 0x50, 0x24, 0x82, 0x80, 0x76, 0x0e, 0x75, 0xec, 0x00, 0x0d, 0x59, 0x67, + 0x3a, 0x59, 0x90, 0x59, 0x2e, 0x10, 0x54, 0x63, 0xac, 0x03, 0x21, 0x31, + 0x96, 0xa2, 0xe2, 0x42, 0xdc, 0x4a, 0x16, 0xa4, 0xa8, 0xb2, 0x74, 0xec, + 0xbb, 0x02, 0x50, 0x06, 0xa7, 0xb3, 0x9e, 0x6c, 0xc9, 0x31, 0xca, 0xcb, + 0x66, 0x55, 0x62, 0xcb, 0x7d, 0x3c, 0xb9, 0xac, 0xeb, 0x30, 0xa5, 0xf4, + 0x2c, 0xa4, 0xb0, 0x4a, 0xd9, 0x8c, 0x9b, 0x32, 0x52, 0xc1, 0xd2, 0xb2, + 0xec, 0x89, 0x40, 0x1a, 0xa2, 0xce, 0x78, 0xb3, 0x24, 0xa4, 0xa8, 0xb6, + 0x54, 0x52, 0x64, 0x16, 0x16, 0xa3, 0x10, 0x83, 0x24, 0xb4, 0x49, 0x90, + 0x52, 0x92, 0x58, 0x3a, 0x56, 0x5d, 0x91, 0x28, 0x03, 0x54, 0x59, 0xce, + 0xf6, 0x64, 0x96, 0x8b, 0x30, 0x33, 0x6a, 0xd8, 0x20, 0xac, 0x92, 0x4a, + 0x4a, 0x89, 0x29, 0x20, 0x82, 0xd1, 0xd2, 0x92, 0xec, 0x89, 0x40, 0x1a, + 0x9e, 0xce, 0x78, 0xb3, 0x24, 0xa8, 0x92, 0x92, 0x0a, 0x49, 0x24, 0x02, + 0xa2, 0x09, 0x04, 0x02, 0x92, 0xc9, 0xd2, 0xf2, 0xec, 0x69, 0x40, 0x1a, + 0xa2, 0xce, 0x79, 0xb2, 0xe9, 0x6d, 0x44, 0x00, 0x08, 0x04, 0x92, 0x40, + 0x24, 0x02, 0xe2, 0x5b, 0x3a, 0x5a, 0x5d, 0x8d, 0x28, 0x03, 0x53, 0x59, + 0xcf, 0xb6, 0x79, 0xf2, 0xda, 0x50, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd5, + 0xb2, 0x13, 0xa5, 0xa5, 0xd8, 0xd2, 0x80, 0x35, 0x2d, 0x9a, 0x0e, 0xcf, + 0x3a, 0x5c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xac, 0xca, 0x4e, + 0x93, 0x97, 0x62, 0xca, 0x00, 0xd5, 0x16, 0x68, 0x0b, 0x3c, 0xe9, 0x71, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xb3, 0x2d, 0x3a, 0x4e, 0x5d, + 0x89, 0x28, 0x03, 0x54, 0x59, 0xa0, 0x2c, 0xf3, 0x97, 0x1a, 0x50, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x3e, 0xcc, 0xa4, 0xe9, 0x5c, 0xdd, 0x84, 0xa0, + 0x0d, 0x4f, 0x66, 0x81, 0xb3, 0xce, 0x5c, 0x69, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0xeb, 0x32, 0x93, 0xa5, 0x73, 0x76, 0x1a, 0x80, 0x35, 0x3d, + 0x9a, 0x06, 0xcf, 0x35, 0x71, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, + 0xac, 0xca, 0x4e, 0x96, 0xcd, 0xd8, 0x4a, 0x00, 0xd4, 0xf6, 0x68, 0x1b, + 0x3c, 0xc5, 0xb1, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9f, 0x66, 0x42, + 0x74, 0xbe, 0x6e, 0xc2, 0x50, 0x06, 0xa7, 0xb3, 0x40, 0xd9, 0xe5, 0xcd, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0xcc, 0x94, 0xe9, 0x5c, + 0xeb, 0x61, 0x00, 0x0d, 0x4f, 0x66, 0x80, 0xb3, 0xcc, 0x5b, 0x32, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x19, 0xf6, 0x64, 0xa7, 0x4b, 0xe7, 0x5b, 0x04, + 0x00, 0x6a, 0x7b, 0x34, 0x05, 0x9e, 0x72, 0xe3, 0xca, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x67, 0xd9, 0x92, 0x9d, 0x2f, 0x9d, 0x6c, 0x10, 0x01, 0xa9, + 0xec, 0xd0, 0x16, 0x79, 0xcb, 0x8f, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x9f, 0x66, 0x42, 0x74, 0xc4, 0xbb, 0x06, 0x50, 0x06, 0xa7, 0xb3, 0x40, + 0xd9, 0xe6, 0xae, 0x3c, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7d, 0x99, + 0x09, 0xd3, 0x12, 0xec, 0x19, 0x40, 0x1a, 0x9e, 0xcd, 0x03, 0x67, 0x9a, + 0xb8, 0xf2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0xf6, 0x64, 0xa7, 0x4b, + 0xe7, 0x5b, 0x04, 0x00, 0x6a, 0x7b, 0x34, 0x0d, 0x9e, 0x6a, 0xe3, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x16, 0x64, 0x27, 0x4b, 0xe7, 0x5b, + 0x04, 0x00, 0x6a, 0x8b, 0x34, 0x05, 0x98, 0x4b, 0x85, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xe8, 0xd9, 0x79, 0x3a, 0x67, 0x37, 0x60, 0x28, 0x03, + 0x53, 0xd9, 0xcf, 0x76, 0x66, 0xdb, 0xe2, 0x66, 0xc2, 0x49, 0x6d, 0x64, + 0xad, 0x29, 0x5a, 0x49, 0x20, 0x00, 0x01, 0xea, 0x59, 0x6e, 0x4e, 0x9f, + 0x97, 0xef, 0xd4, 0x01, 0xa9, 0xec, 0xe7, 0xab, 0x33, 0x0b, 0xd6, 0xc2, + 0x41, 0x0a, 0x21, 0x11, 0x16, 0xca, 0x80, 0x82, 0x4d, 0x51, 0x25, 0xa3, + 0x1a, 0x3a, 0x82, 0x5f, 0xbf, 0x50, 0x06, 0xac, 0xb3, 0x9c, 0xec, 0xbc, + 0x57, 0x54, 0x90, 0x44, 0x40, 0x24, 0x92, 0x5a, 0x82, 0x41, 0x05, 0x49, + 0x4a, 0x52, 0x5a, 0x8e, 0xa4, 0x97, 0xef, 0x14, 0x01, 0xf2, 0x16, 0x72, + 0x6d, 0x92, 0x53, 0x2a, 0xa4, 0x10, 0x0c, 0xbb, 0x2d, 0xc1, 0xac, 0x68, + 0xa8, 0x12, 0x82, 0x2b, 0x21, 0x2c, 0x4d, 0x76, 0x4c, 0x7b, 0x00, 0x03, + 0xcc, 0x38, 0xeb, 0x52, 0xd9, 0x7d, 0x05, 0xb0, 0x41, 0x26, 0x45, 0x61, + 0x97, 0xd6, 0x89, 0x64, 0x24, 0x20, 0x82, 0xb2, 0xf4, 0xd7, 0x68, 0x44, + 0x80, 0x08, 0x39, 0x2f, 0x59, 0xf9, 0xb5, 0xad, 0x24, 0xa0, 0x90, 0x5a, + 0x5c, 0x93, 0x09, 0x32, 0x8b, 0x2b, 0x74, 0x84, 0xa8, 0x82, 0x4a, 0x4f, + 0xbb, 0x9a, 0xe9, 0xd8, 0x00, 0x01, 0xa4, 0x75, 0x34, 0x9a, 0x5a, 0x5a, + 0x60, 0x42, 0x91, 0x59, 0x05, 0xb4, 0xac, 0x2e, 0x3c, 0x0a, 0x88, 0x05, + 0xfb, 0x3a, 0x0f, 0x3a, 0xdb, 0x00, 0x00, 0x0f, 0x02, 0xce, 0x42, 0xb2, + 0xdc, 0x4d, 0x40, 0x85, 0x65, 0x47, 0xaa, 0xbf, 0x61, 0x1f, 0x28, 0x79, + 0x95, 0xe6, 0xa5, 0x54, 0x88, 0x24, 0xc9, 0x6b, 0xb2, 0xa3, 0x30, 0x00, + 0x00, 0x39, 0xa3, 0x53, 0x59, 0xc9, 0x70, 0x50, 0x83, 0xe9, 0xb3, 0x70, + 0x0f, 0x6e, 0xbc, 0x52, 0xec, 0x79, 0xb5, 0x88, 0x82, 0x4a, 0x4d, 0xc8, + 0xd6, 0xfd, 0x80, 0x00, 0x00, 0x7c, 0xb5, 0x9c, 0x95, 0x65, 0x11, 0x50, + 0xaf, 0xa0, 0x97, 0xed, 0x32, 0xf8, 0x04, 0xf7, 0xed, 0xf2, 0x24, 0xfa, + 0xbb, 0x70, 0x4f, 0x85, 0xb2, 0x01, 0x90, 0xd7, 0x62, 0x47, 0xa8, 0x00, + 0x00, 0x00, 0x73, 0xd6, 0x9a, 0x82, 0x66, 0xe9, 0x35, 0xf4, 0x32, 0xf8, + 0xe6, 0x2e, 0x5f, 0x6e, 0xd7, 0xc2, 0xcd, 0xfd, 0x56, 0xf9, 0x7b, 0x52, + 0xeb, 0xeb, 0x99, 0x2d, 0xb5, 0xbd, 0xe3, 0x75, 0x80, 0x00, 0x00, 0x03, + 0xc9, 0x39, 0x0b, 0x59, 0xc1, 0x8a, 0xcf, 0xa0, 0x59, 0x8c, 0x19, 0x73, + 0xac, 0xc3, 0xcf, 0x5c, 0x8a, 0xa6, 0xf3, 0xf1, 0x2e, 0x69, 0x3d, 0x96, + 0xbb, 0x02, 0x2f, 0x80, 0x00, 0x00, 0x00, 0x69, 0xaa, 0xd0, 0x0c, 0xdc, + 0x32, 0x0f, 0xa3, 0x97, 0xe8, 0x4f, 0x91, 0xaf, 0x46, 0x3d, 0x25, 0xf9, + 0x5b, 0x3c, 0xa4, 0xb2, 0xd7, 0x4c, 0x46, 0xcc, 0x00, 0x00, 0x00, 0x00, + 0x18, 0xe7, 0x28, 0x5c, 0xfc, 0x93, 0x55, 0xb3, 0x98, 0x7a, 0x52, 0xe7, + 0x1e, 0x79, 0x8f, 0x5e, 0x5a, 0x41, 0xb0, 0x1a, 0xea, 0x18, 0x90, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0xd3, 0x48, 0x57, 0xc5, 0x18, 0x44, 0xa1, 0x45, + 0x66, 0x71, 0xb0, 0x63, 0x74, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0xff, 0xc4, 0x00, 0x31, 0x10, 0x00, 0x00, 0x05, + 0x02, 0x03, 0x07, 0x03, 0x04, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x11, 0x14, 0x20, 0x10, + 0x12, 0x13, 0x30, 0x33, 0x34, 0x35, 0x07, 0x21, 0x32, 0x15, 0x16, 0x31, + 0x41, 0x22, 0x24, 0x23, 0x42, 0x50, 0x43, 0xff, 0xda, 0x00, 0x08, 0x01, + 0x01, 0x00, 0x01, 0x05, 0x02, 0xff, 0x00, 0x82, 0xa7, 0xdb, 0x6c, 0x2e, + 0xb1, 0x05, 0xb0, 0xab, 0x8e, 0x98, 0x90, 0x77, 0x65, 0x24, 0x87, 0xdd, + 0xd4, 0x90, 0x57, 0x65, 0x24, 0xc2, 0x6e, 0x3a, 0x62, 0x82, 0x2b, 0x10, + 0x5c, 0x08, 0x79, 0xb7, 0x39, 0xb5, 0x5b, 0xd2, 0x0d, 0x34, 0xe4, 0xfa, + 0x87, 0x35, 0xc0, 0xf5, 0xdd, 0x54, 0x7c, 0x3b, 0x54, 0x96, 0xf8, 0x35, + 0xa8, 0xc6, 0x26, 0x3d, 0xc7, 0xb8, 0xc4, 0x62, 0x63, 0x11, 0xbc, 0x60, + 0x9c, 0x51, 0x06, 0xaa, 0xf3, 0x58, 0x0c, 0x5e, 0x35, 0x56, 0x04, 0x5f, + 0x51, 0x65, 0x24, 0xe9, 0x57, 0x74, 0x1a, 0xa2, 0xb5, 0xde, 0x17, 0x52, + 0x9d, 0x73, 0xf2, 0x30, 0x18, 0x72, 0x70, 0x18, 0x0c, 0x06, 0x03, 0x00, + 0x46, 0x69, 0x3b, 0x36, 0xe9, 0x53, 0xea, 0xd3, 0x72, 0x4f, 0xfa, 0x75, + 0x24, 0xd4, 0x6b, 0x51, 0x05, 0xab, 0x70, 0x8b, 0x88, 0xa0, 0x93, 0xc7, + 0x97, 0x80, 0x32, 0x06, 0x1a, 0x75, 0x4c, 0x3b, 0x48, 0x9b, 0xf5, 0x0a, + 0x6e, 0x8b, 0xfd, 0x58, 0x53, 0xd2, 0x08, 0x39, 0xba, 0xa5, 0x1b, 0xc9, + 0xc4, 0x9c, 0x25, 0xc8, 0xc3, 0x13, 0x37, 0x89, 0x27, 0x98, 0x48, 0xcc, + 0xa4, 0x29, 0x65, 0xc3, 0xcc, 0xa4, 0x66, 0x12, 0x1a, 0x73, 0x88, 0xa5, + 0x3e, 0x94, 0x84, 0x3a, 0x4b, 0x0a, 0x7c, 0x92, 0x6d, 0xb8, 0x4e, 0x6c, + 0x31, 0x63, 0xb9, 0xbf, 0x40, 0xd1, 0xea, 0x07, 0x66, 0x41, 0x1e, 0xe7, + 0xc3, 0xde, 0x5f, 0x04, 0x82, 0xd9, 0x2d, 0xc4, 0xf4, 0xa4, 0xa4, 0xb8, + 0x7c, 0x04, 0x13, 0x69, 0x34, 0x92, 0x50, 0x9f, 0xe8, 0x27, 0x02, 0x4c, + 0x84, 0xb4, 0xd1, 0x44, 0x67, 0x01, 0x1d, 0xa4, 0xac, 0x9c, 0xc1, 0x87, + 0xb7, 0xff, 0x00, 0xcd, 0x1c, 0xcb, 0x31, 0xfa, 0x31, 0x61, 0xf8, 0x5d, + 0x17, 0xff, 0x00, 0x66, 0x90, 0x9f, 0xcb, 0x5b, 0x17, 0xf0, 0x4f, 0xb3, + 0x4e, 0x23, 0x88, 0xdf, 0xb6, 0xe2, 0x5a, 0x4f, 0x01, 0x29, 0x51, 0xc6, + 0x26, 0x5c, 0x22, 0x5c, 0x65, 0x99, 0xb0, 0xda, 0xdb, 0x79, 0xc8, 0xdf, + 0xc9, 0x98, 0xfb, 0x8a, 0xdc, 0x22, 0x94, 0xda, 0x38, 0x4f, 0x03, 0x16, + 0x1f, 0x85, 0xd1, 0xea, 0x07, 0x64, 0x90, 0x41, 0x4d, 0x2b, 0x1c, 0x56, + 0x40, 0x9b, 0x52, 0x87, 0xe1, 0xb0, 0x60, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, + 0x28, 0x58, 0x7e, 0x17, 0x47, 0xa8, 0x1d, 0x92, 0x41, 0x6c, 0xc7, 0xdb, + 0xf2, 0x30, 0xd9, 0x80, 0xc3, 0x56, 0x1a, 0x0c, 0x58, 0x7e, 0x0f, 0x45, + 0xff, 0x00, 0xd9, 0x24, 0x82, 0x9c, 0x4a, 0x06, 0x65, 0x23, 0x32, 0x81, + 0x99, 0x40, 0xcc, 0xa4, 0x66, 0x10, 0x33, 0x29, 0x19, 0x94, 0x8c, 0xca, + 0x46, 0x69, 0x23, 0x34, 0x91, 0x99, 0x48, 0xcd, 0x24, 0x66, 0x50, 0x33, + 0x29, 0x07, 0x25, 0x20, 0x95, 0xbc, 0x14, 0x2c, 0x3f, 0x05, 0xa3, 0xd4, + 0x0e, 0xcd, 0xb2, 0xc4, 0x3b, 0xd4, 0xe7, 0xc0, 0x3d, 0xe7, 0x15, 0xec, + 0x2c, 0x3f, 0x05, 0xa3, 0xd4, 0x0e, 0xd2, 0x3f, 0x52, 0x47, 0x5b, 0x9f, + 0x07, 0xbb, 0x77, 0xe5, 0x61, 0xf8, 0x1d, 0x17, 0xff, 0x00, 0x67, 0x1f, + 0xa9, 0x27, 0xad, 0xcf, 0x85, 0xdd, 0x3b, 0xf3, 0xb1, 0x7c, 0x16, 0x8b, + 0xff, 0x00, 0xb3, 0x63, 0xa9, 0x27, 0xad, 0xcf, 0x83, 0xdd, 0x3b, 0xf2, + 0xb1, 0xbc, 0x16, 0x8b, 0xff, 0x00, 0xb3, 0x8f, 0xd4, 0x93, 0xd7, 0xe7, + 0xc2, 0xee, 0x5d, 0xf9, 0xd8, 0xbe, 0x0b, 0x45, 0xff, 0x00, 0xd9, 0x31, + 0xf3, 0x91, 0xd6, 0xe7, 0xc2, 0xee, 0x9e, 0xf9, 0xd8, 0xbe, 0x0b, 0x45, + 0xff, 0x00, 0xd9, 0xb1, 0xf3, 0x7f, 0xad, 0xcf, 0x83, 0xdd, 0x3b, 0xf3, + 0xb1, 0xbc, 0x0e, 0x8b, 0xff, 0x00, 0xb3, 0x63, 0xe6, 0xf7, 0x57, 0x9f, + 0x03, 0xbb, 0x7b, 0xe7, 0x63, 0x78, 0x1d, 0x17, 0xff, 0x00, 0x67, 0x1f, + 0xe6, 0xf7, 0x57, 0x9f, 0x07, 0xba, 0x77, 0xe7, 0x63, 0x78, 0x1d, 0x17, + 0xff, 0x00, 0x65, 0x1f, 0xa8, 0xff, 0x00, 0x5b, 0x9f, 0x07, 0xba, 0x7b, + 0xe7, 0x63, 0x78, 0x1d, 0x17, 0xff, 0x00, 0x67, 0x1f, 0xa9, 0x23, 0xad, + 0xcf, 0x83, 0xdd, 0x3d, 0xf2, 0xb1, 0xbc, 0x0e, 0x8b, 0xff, 0x00, 0xb3, + 0x8f, 0xf3, 0x91, 0xd6, 0xe7, 0xc1, 0xee, 0x9e, 0xf9, 0xd8, 0xde, 0x07, + 0x45, 0xff, 0x00, 0xd9, 0xb1, 0xd4, 0x91, 0xd6, 0xe7, 0xc1, 0xee, 0x9e, + 0xf9, 0xd8, 0xde, 0x07, 0x45, 0xff, 0x00, 0xd9, 0xb1, 0xd4, 0x91, 0xd5, + 0xe7, 0xc0, 0xee, 0x9e, 0xf9, 0xd8, 0xde, 0x03, 0x45, 0xff, 0x00, 0xd9, + 0x47, 0xea, 0x4c, 0x4e, 0xe4, 0x8e, 0x7c, 0x02, 0xfe, 0xcb, 0xa7, 0x8a, + 0xec, 0x6f, 0x01, 0xa2, 0xff, 0x00, 0xec, 0xd0, 0x78, 0x1c, 0xc6, 0xf8, + 0xc5, 0xc2, 0x31, 0xc3, 0x31, 0xc2, 0x31, 0xba, 0x63, 0x74, 0xc1, 0x34, + 0x66, 0x0d, 0xb3, 0x21, 0xba, 0x63, 0x70, 0xc6, 0xe9, 0x8d, 0xd3, 0x18, + 0x18, 0xdd, 0x31, 0xba, 0x63, 0x74, 0xc4, 0x54, 0xf0, 0xc1, 0x8b, 0x1f, + 0xc0, 0x68, 0xbf, 0xfb, 0x34, 0x84, 0x39, 0x81, 0x11, 0xa0, 0x19, 0xa0, + 0x6f, 0x20, 0x6f, 0x20, 0x1a, 0x90, 0x37, 0x90, 0x37, 0x90, 0x31, 0x49, + 0x8d, 0xe4, 0x8d, 0xe4, 0x8f, 0xe0, 0x31, 0x40, 0xc5, 0x23, 0x14, 0x83, + 0x52, 0x42, 0x95, 0x88, 0x31, 0x63, 0xf8, 0x0d, 0x17, 0xe3, 0x6a, 0x54, + 0x14, 0x9e, 0xdc, 0x46, 0x20, 0xb6, 0x7e, 0x74, 0x62, 0x31, 0xd9, 0xfb, + 0xc4, 0x62, 0x30, 0x06, 0x2c, 0xa4, 0x29, 0x14, 0x0d, 0x17, 0x53, 0x5c, + 0x4a, 0x29, 0x96, 0xea, 0xd4, 0xad, 0xd4, 0x70, 0x14, 0x63, 0x2e, 0x0a, + 0x36, 0x23, 0x2c, 0x32, 0xc0, 0x98, 0x32, 0x33, 0x46, 0x0d, 0xec, 0x26, + 0xd4, 0xe8, 0xcb, 0x8c, 0xb0, 0xcb, 0x0c, 0xb8, 0xe0, 0x04, 0xa4, 0xf0, + 0xfc, 0x9d, 0x1d, 0x9c, 0xbd, 0x2b, 0x45, 0x4d, 0x9c, 0xc5, 0x3e, 0x6a, + 0x37, 0x25, 0xff, 0x00, 0xa8, 0xfc, 0x6c, 0xde, 0x18, 0x8f, 0xd2, 0x7d, + 0xe1, 0x86, 0xc7, 0xeb, 0x41, 0x16, 0x01, 0xbe, 0xa5, 0x3a, 0x3e, 0x6e, + 0xa0, 0x45, 0x81, 0x69, 0xba, 0x21, 0x64, 0xea, 0x5f, 0xf8, 0x91, 0x90, + 0xf6, 0xd9, 0x80, 0xf6, 0x0b, 0x51, 0x11, 0x20, 0xff, 0x00, 0xa2, 0x18, + 0x23, 0x5a, 0xb7, 0xbd, 0xb1, 0x2d, 0xb8, 0x03, 0x51, 0x60, 0xc1, 0x92, + 0x97, 0x62, 0x43, 0xcc, 0xd7, 0xb5, 0x7a, 0x81, 0x4e, 0x0d, 0x2f, 0x74, + 0x95, 0x1d, 0x26, 0x79, 0x61, 0x97, 0x19, 0x61, 0x96, 0x05, 0x19, 0x21, + 0x4a, 0xc7, 0x62, 0x55, 0xba, 0x6e, 0xa1, 0x0f, 0x1e, 0x58, 0x65, 0x86, + 0x58, 0x65, 0x86, 0x58, 0x87, 0xf1, 0x42, 0x7d, 0x3d, 0xa7, 0x65, 0xe9, + 0xba, 0xab, 0x90, 0x3e, 0xa3, 0x4d, 0x90, 0xdf, 0x05, 0xf2, 0xd3, 0x16, + 0x33, 0xb3, 0x1e, 0x5c, 0x58, 0x11, 0x4a, 0x12, 0xe1, 0x4f, 0x86, 0x97, + 0x29, 0x35, 0x19, 0x12, 0xa0, 0x3d, 0x11, 0xbd, 0x98, 0xed, 0x89, 0x15, + 0x73, 0xa5, 0xc3, 0x8a, 0x88, 0x51, 0x75, 0xde, 0xf4, 0x8c, 0x94, 0xf2, + 0xd0, 0x61, 0x45, 0xfe, 0x72, 0x96, 0xd4, 0x23, 0x8b, 0x75, 0x4d, 0x8d, + 0x03, 0xea, 0x6b, 0x7c, 0x76, 0xb1, 0xe5, 0xb2, 0x86, 0x1e, 0xda, 0x63, + 0xd3, 0xba, 0x3f, 0x11, 0xfe, 0x45, 0xc7, 0x4a, 0xfa, 0xad, 0x39, 0xe6, + 0x8e, 0x3b, 0xb8, 0xed, 0xa6, 0xb8, 0x71, 0x18, 0x95, 0x6a, 0x37, 0x43, + 0x4c, 0x19, 0x73, 0xe6, 0x55, 0x73, 0xb1, 0x04, 0xba, 0x94, 0xea, 0x7b, + 0x94, 0x3a, 0x5b, 0x15, 0x59, 0x75, 0x38, 0x99, 0x38, 0xfb, 0x62, 0x45, + 0x72, 0x7c, 0xaa, 0x64, 0x06, 0xe9, 0x70, 0x79, 0x37, 0xd5, 0x0f, 0x2f, + 0x20, 0xb6, 0xbd, 0x1d, 0xa6, 0xed, 0x59, 0x0e, 0x3e, 0x65, 0x1d, 0x0e, + 0xbb, 0x59, 0x3a, 0x0c, 0x80, 0xe3, 0x87, 0x26, 0x5b, 0x8d, 0xad, 0x75, + 0xb6, 0x5a, 0x81, 0x3e, 0xb9, 0xb0, 0xc7, 0xa7, 0xb4, 0x3e, 0x1b, 0x7c, + 0xaa, 0xa4, 0x04, 0xd4, 0xa1, 0x54, 0x61, 0xaa, 0x0c, 0xa2, 0x31, 0x88, + 0xa6, 0xb6, 0x89, 0x31, 0x21, 0xc8, 0x89, 0x51, 0x6a, 0x04, 0x4a, 0x84, + 0x3a, 0xb5, 0x42, 0x33, 0x0d, 0x46, 0x9d, 0x09, 0xea, 0x91, 0xbc, 0xac, + 0xb5, 0x3a, 0x1b, 0x68, 0x8f, 0x40, 0x06, 0x62, 0x8b, 0x4b, 0x5d, 0x66, + 0xa4, 0xcb, 0x28, 0x8e, 0xcf, 0x2e, 0xfc, 0xa2, 0x71, 0x5b, 0x2f, 0x63, + 0x0c, 0x48, 0x5c, 0x57, 0x8c, 0xb7, 0x57, 0x5f, 0x6a, 0x8d, 0x52, 0x74, + 0xad, 0xea, 0xa2, 0x8a, 0x9f, 0x01, 0xa8, 0x0e, 0x56, 0xdb, 0x87, 0x56, + 0xa9, 0x54, 0xa7, 0x67, 0x24, 0x1e, 0xcb, 0x1a, 0x87, 0xf4, 0xda, 0x77, + 0x32, 0x43, 0x08, 0x94, 0xc5, 0xc9, 0x43, 0x76, 0x8f, 0x38, 0x8f, 0x64, + 0x59, 0xb2, 0x20, 0xb9, 0x22, 0x54, 0x3a, 0x88, 0x8d, 0x0e, 0x1a, 0xe0, + 0x97, 0xd2, 0xe3, 0xa6, 0x4d, 0x4e, 0x54, 0xb6, 0x46, 0x22, 0xcf, 0xb7, + 0x15, 0x58, 0x99, 0xce, 0x9f, 0x4f, 0x62, 0xa5, 0x1e, 0xa7, 0xe9, 0xcc, + 0x84, 0x2d, 0xcb, 0x46, 0xb0, 0xd0, 0x3b, 0x7a, 0xa8, 0x43, 0xed, 0xea, + 0xa9, 0x0f, 0xb7, 0xaa, 0xa3, 0xed, 0xea, 0xa0, 0x2b, 0x6e, 0xaa, 0xa3, + 0x66, 0xce, 0xac, 0x3e, 0x74, 0x9f, 0x4e, 0x77, 0x54, 0xc3, 0x0d, 0xc5, + 0x6b, 0xfe, 0xcf, 0xff, 0xc4, 0x00, 0x1b, 0x11, 0x00, 0x02, 0x02, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x11, 0x21, 0x40, 0x70, 0x90, 0xff, 0xda, 0x00, 0x08, + 0x01, 0x03, 0x01, 0x01, 0x3f, 0x01, 0xf6, 0x3e, 0x8c, 0x0e, 0x0a, 0xb6, + 0x63, 0x22, 0x95, 0x8f, 0x83, 0xff, 0x00, 0xff, 0xc4, 0x00, 0x1e, 0x11, + 0x00, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x11, 0x20, 0x00, 0x30, 0x10, 0x41, + 0x50, 0x60, 0x70, 0xff, 0xda, 0x00, 0x08, 0x01, 0x02, 0x01, 0x01, 0x3f, + 0x01, 0xfb, 0xf0, 0xc8, 0xd5, 0xd6, 0xf0, 0xc8, 0x64, 0x32, 0x19, 0x09, + 0x0b, 0x86, 0x43, 0x21, 0x90, 0xc8, 0x48, 0x5c, 0x24, 0x2e, 0x12, 0x17, + 0x09, 0x0b, 0x84, 0x85, 0xc2, 0x42, 0xe1, 0x21, 0x70, 0x90, 0xb8, 0x48, + 0x5c, 0x70, 0x50, 0x17, 0x0c, 0x86, 0x43, 0x23, 0xc2, 0xeb, 0xca, 0x1c, + 0x46, 0x46, 0x46, 0x46, 0x45, 0xa3, 0x23, 0x23, 0x23, 0x23, 0x48, 0xd1, + 0x3c, 0x4f, 0x9c, 0x59, 0x2c, 0x9b, 0x0f, 0xc1, 0xff, 0x00, 0xff, 0xc4, + 0x00, 0x44, 0x10, 0x00, 0x01, 0x03, 0x01, 0x04, 0x05, 0x08, 0x05, 0x0a, + 0x05, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x11, + 0x04, 0x12, 0x21, 0x31, 0x10, 0x20, 0x22, 0x41, 0x71, 0x05, 0x13, 0x32, + 0x40, 0x51, 0x61, 0x72, 0x81, 0x14, 0x30, 0x33, 0x52, 0x92, 0x23, 0x34, + 0x35, 0x42, 0x62, 0x82, 0xa1, 0xb1, 0xc1, 0xd1, 0x15, 0x50, 0x73, 0x83, + 0x91, 0x06, 0x24, 0x43, 0xf0, 0x63, 0x93, 0xd3, 0xff, 0xda, 0x00, 0x08, + 0x01, 0x01, 0x00, 0x06, 0x3f, 0x02, 0xfe, 0x43, 0xb5, 0x23, 0x5b, 0xc4, + 0xad, 0xab, 0x64, 0x03, 0xfb, 0x81, 0x63, 0x6d, 0x8b, 0xfc, 0xaf, 0x9e, + 0x37, 0xe1, 0x3f, 0xb2, 0xf9, 0xd8, 0xf8, 0x4a, 0xf9, 0xe3, 0x7e, 0x12, + 0xb0, 0xb6, 0xc5, 0xfe, 0x56, 0xcd, 0xb2, 0x03, 0xfd, 0xc0, 0xb6, 0x5e, + 0xd7, 0x70, 0x3e, 0xb4, 0xb1, 0x84, 0xda, 0xa5, 0x1b, 0x99, 0x97, 0xf9, + 0x47, 0x9a, 0x8a, 0x28, 0x47, 0x0b, 0xc5, 0x63, 0x6b, 0x7b, 0x7c, 0x14, + 0x6a, 0xf9, 0x4b, 0x4c, 0xaf, 0xf1, 0x3c, 0xac, 0xfd, 0x46, 0x05, 0x7c, + 0x9d, 0xaa, 0x66, 0x70, 0x79, 0x5f, 0x3a, 0x73, 0xbc, 0x60, 0x15, 0xf2, + 0xf0, 0x45, 0x28, 0xfb, 0x3b, 0x25, 0x06, 0x5e, 0x30, 0x4a, 0x7e, 0xac, + 0x9b, 0xfc, 0xfd, 0x43, 0xec, 0x56, 0x47, 0xdd, 0x88, 0x60, 0xf7, 0x8f, + 0xad, 0xd4, 0x70, 0x42, 0xc3, 0x6b, 0x75, 0x5d, 0xff, 0x00, 0x1b, 0xcf, + 0xe5, 0xad, 0x33, 0xda, 0x68, 0xf7, 0x6c, 0xb5, 0x13, 0xa7, 0x7f, 0x92, + 0xef, 0xf5, 0xcd, 0x7b, 0x4d, 0x0b, 0x4a, 0x82, 0x7d, 0xee, 0x6e, 0x3c, + 0x75, 0x62, 0x6e, 0xe3, 0x78, 0xe9, 0x66, 0x38, 0x6f, 0x59, 0xa8, 0xe9, + 0xc0, 0xac, 0x15, 0x08, 0x2b, 0x7a, 0xde, 0xaf, 0xee, 0x5b, 0xd6, 0x4a, + 0xe8, 0x18, 0xaa, 0x67, 0xa0, 0x8a, 0x1a, 0x8c, 0x16, 0x1a, 0x63, 0x1e, + 0xeb, 0x88, 0xd5, 0x83, 0xef, 0x7e, 0x9a, 0x02, 0x7e, 0xe0, 0x17, 0x49, + 0x13, 0x5c, 0x94, 0x5c, 0x3f, 0x55, 0x7a, 0x9b, 0x57, 0x91, 0xa3, 0x71, + 0xb9, 0x5a, 0xac, 0x59, 0x53, 0xdb, 0x55, 0x25, 0x70, 0xc6, 0xa1, 0x7b, + 0x3a, 0xf7, 0xa1, 0xb0, 0x0d, 0x5a, 0x0f, 0xe0, 0xaf, 0xf7, 0x1a, 0x27, + 0x39, 0xd8, 0xd0, 0xe4, 0x98, 0x63, 0xec, 0xc4, 0x27, 0x17, 0xb6, 0xa7, + 0xb1, 0x5e, 0xa5, 0x1b, 0x4c, 0x74, 0xfd, 0xed, 0x58, 0x7e, 0xf6, 0x80, + 0xa5, 0xff, 0x00, 0xbb, 0xf4, 0x39, 0x33, 0x87, 0xea, 0xae, 0xef, 0xaa, + 0x2d, 0xed, 0x65, 0x11, 0x61, 0xa5, 0xef, 0x79, 0x18, 0xc9, 0x15, 0xdc, + 0xa9, 0x7f, 0xf1, 0x55, 0x2e, 0x05, 0x35, 0xd2, 0x1b, 0xcd, 0x1d, 0xea, + 0xb1, 0x9a, 0x03, 0xb9, 0x5e, 0x76, 0x3d, 0xc9, 0xf2, 0x1a, 0x39, 0xa5, + 0x3e, 0x86, 0xb1, 0xbb, 0x4f, 0xde, 0xd5, 0x87, 0xef, 0x69, 0x25, 0xa7, + 0x3d, 0x18, 0xfe, 0x29, 0xa3, 0xb3, 0xd7, 0x7d, 0xfd, 0x58, 0xbe, 0xf7, + 0x54, 0x1e, 0x33, 0xab, 0x17, 0x9e, 0x8c, 0x73, 0xd1, 0x92, 0xde, 0xb2, + 0x2b, 0x22, 0xb2, 0x59, 0x2c, 0x8a, 0xc8, 0xac, 0x8a, 0xc8, 0xac, 0x8a, + 0xc8, 0xac, 0x8a, 0xdf, 0xa4, 0x78, 0xce, 0xac, 0x5e, 0x7a, 0x0f, 0x50, + 0xe6, 0xdd, 0x93, 0xb4, 0x0f, 0x19, 0xd5, 0x87, 0xcd, 0x37, 0x8a, 0x7f, + 0x50, 0x8f, 0x8a, 0x28, 0x78, 0xce, 0xac, 0x5e, 0x69, 0xa9, 0xdd, 0x41, + 0x89, 0xc9, 0xbe, 0x23, 0xab, 0x1f, 0x9a, 0x09, 0xdd, 0x41, 0x88, 0xa6, + 0x78, 0x8e, 0xac, 0x5e, 0x68, 0x27, 0x75, 0x06, 0x22, 0x9b, 0xe2, 0x3a, + 0xb1, 0x79, 0xa6, 0xa7, 0xf5, 0x06, 0x71, 0x47, 0x8a, 0x67, 0x88, 0xea, + 0xc5, 0xe6, 0x9a, 0x9f, 0xc7, 0xa8, 0x31, 0x39, 0x33, 0xc4, 0x75, 0x62, + 0xf3, 0x41, 0x3f, 0x8f, 0x50, 0x8f, 0x8a, 0x3c, 0x53, 0x3c, 0x47, 0x56, + 0x2f, 0x34, 0xd4, 0xee, 0x3d, 0x41, 0x88, 0xa6, 0x78, 0x8e, 0xac, 0x5e, + 0x69, 0xa9, 0xfc, 0x7a, 0x83, 0x11, 0x4c, 0xf1, 0x1d, 0x58, 0xbc, 0xd0, + 0x4e, 0xea, 0x0c, 0x45, 0x33, 0xc4, 0x75, 0x62, 0xf3, 0x41, 0x3b, 0xa8, + 0x31, 0x14, 0xcf, 0x11, 0xd5, 0x8f, 0xcd, 0x35, 0x3b, 0xa8, 0x31, 0x14, + 0xcf, 0x11, 0xd5, 0x8f, 0xcd, 0x04, 0xee, 0xa1, 0x1a, 0x2a, 0x3f, 0x11, + 0xd5, 0x8f, 0xcd, 0x35, 0x38, 0x75, 0x06, 0xa2, 0xa3, 0xf1, 0x1d, 0x58, + 0xbc, 0xd0, 0x41, 0xe3, 0xd5, 0x64, 0xb2, 0xd3, 0x96, 0x82, 0xe3, 0xa2, + 0x3f, 0x11, 0xd5, 0x8f, 0xcf, 0x45, 0x37, 0x2c, 0x96, 0x4b, 0x25, 0x92, + 0xc9, 0x64, 0xb2, 0x59, 0x2c, 0x97, 0x45, 0x64, 0xb2, 0x59, 0x2c, 0x96, + 0x5a, 0x63, 0xf1, 0x1d, 0x58, 0xc8, 0x6d, 0x47, 0x54, 0x86, 0xf0, 0xa5, + 0x4d, 0x46, 0xac, 0xbf, 0x64, 0x82, 0x88, 0xec, 0x2b, 0x05, 0x8b, 0xf1, + 0x5d, 0x32, 0xba, 0x6b, 0xa6, 0x57, 0x4c, 0xac, 0x1d, 0x52, 0x9a, 0xf1, + 0x91, 0xd3, 0x78, 0xba, 0xe8, 0xdc, 0xba, 0x65, 0x74, 0xca, 0xe9, 0x95, + 0xed, 0x0a, 0xe9, 0xa3, 0xda, 0xdd, 0x16, 0x48, 0xf2, 0x2d, 0x89, 0xbf, + 0x96, 0xad, 0xa2, 0x3e, 0xd6, 0x14, 0xfd, 0xdb, 0xd3, 0x7c, 0x5a, 0xe7, + 0xfa, 0x9a, 0x1d, 0xe1, 0x29, 0xbc, 0x35, 0x8f, 0x80, 0xa8, 0x21, 0xf7, + 0xde, 0x1a, 0xa9, 0xad, 0x23, 0x77, 0x07, 0x11, 0xfb, 0x20, 0xee, 0xc7, + 0x6b, 0xf1, 0x7d, 0x74, 0x53, 0xb9, 0x37, 0x86, 0xb3, 0xce, 0xe0, 0xc4, + 0xd7, 0xfd, 0x58, 0x41, 0x7e, 0xbb, 0x2d, 0x0d, 0x1d, 0x21, 0x43, 0xc4, + 0x2e, 0xd0, 0x77, 0x2d, 0x97, 0x16, 0xf7, 0x2f, 0x68, 0xbd, 0xaa, 0xf6, + 0xab, 0xda, 0xac, 0x5e, 0x4a, 0x03, 0x70, 0xd0, 0x0e, 0xf5, 0x7b, 0xa0, + 0xee, 0xe5, 0xed, 0x17, 0xb5, 0x5e, 0xd9, 0x7b, 0x55, 0xed, 0x15, 0xd6, + 0xa9, 0x2d, 0x4e, 0x1b, 0x53, 0xbb, 0x0e, 0x03, 0x5e, 0x58, 0xc0, 0xdb, + 0x1b, 0x4d, 0xe2, 0x9c, 0xdd, 0xdb, 0xb5, 0xb9, 0xa8, 0x80, 0x2f, 0xa1, + 0x76, 0x2e, 0x03, 0x00, 0x2a, 0x73, 0xe0, 0xa3, 0xf4, 0x9b, 0x69, 0x32, + 0x98, 0xef, 0x98, 0xec, 0xed, 0x6c, 0x82, 0xb5, 0xe8, 0xdf, 0x0e, 0xec, + 0xfc, 0xd3, 0x2d, 0xd1, 0x7f, 0xa6, 0x39, 0xcb, 0x15, 0x94, 0x1f, 0x4c, + 0x7b, 0x27, 0x93, 0x3e, 0xed, 0xa4, 0xc3, 0xce, 0xbf, 0x92, 0xf9, 0xc9, + 0x2e, 0x73, 0x41, 0x9c, 0xe3, 0x18, 0xdf, 0x7a, 0xf1, 0x72, 0x64, 0x8f, + 0xb8, 0x58, 0xf2, 0x5a, 0xd7, 0x47, 0x2b, 0x5e, 0x09, 0x14, 0xaf, 0x44, + 0xf7, 0x8d, 0x68, 0xac, 0xf1, 0xe2, 0xf9, 0x1d, 0x74, 0x28, 0xa0, 0x8f, + 0xa1, 0x1b, 0x43, 0x47, 0xa8, 0x74, 0x8c, 0x1f, 0x26, 0xfd, 0xb1, 0xfa, + 0xeb, 0x3a, 0xc5, 0x62, 0x7f, 0x34, 0xd8, 0x83, 0xc5, 0xa2, 0xd3, 0x3c, + 0x21, 0x84, 0x0c, 0x8e, 0xf7, 0x70, 0xc3, 0x3e, 0xc4, 0x3d, 0x06, 0x2e, + 0x6c, 0xd0, 0xb4, 0xcd, 0x28, 0x0e, 0x7b, 0xbb, 0xc7, 0xb9, 0xe5, 0x8f, + 0x7a, 0xb4, 0xd9, 0xaf, 0xba, 0x41, 0x3f, 0x48, 0xb8, 0xd6, 0xf7, 0x8b, + 0xde, 0xff, 0x00, 0xb9, 0x8c, 0x13, 0x19, 0x6d, 0x1e, 0x9b, 0x08, 0x75, + 0x48, 0x93, 0xa7, 0xe4, 0xfc, 0xc7, 0xe5, 0xdc, 0x98, 0xf6, 0x3c, 0xc9, + 0xc9, 0xae, 0x24, 0x3d, 0xa5, 0x8d, 0x7b, 0xe0, 0x71, 0x1d, 0xff, 0x00, + 0x81, 0xc2, 0xb4, 0x57, 0x63, 0x73, 0xdf, 0x19, 0x6b, 0x5c, 0x0c, 0x8c, + 0xba, 0x71, 0x00, 0xe5, 0x53, 0xdb, 0xab, 0x27, 0x28, 0x48, 0x36, 0x59, + 0xb1, 0x1f, 0x1d, 0xe7, 0xd4, 0xbd, 0x80, 0x56, 0x56, 0x6d, 0x33, 0xf6, + 0x45, 0xa7, 0x52, 0xd9, 0x6a, 0xbc, 0xe8, 0xe8, 0xc1, 0x0b, 0x64, 0x60, + 0x37, 0x9a, 0xe7, 0x64, 0x6b, 0xf5, 0x7a, 0x27, 0x1f, 0x2d, 0xeb, 0xd2, + 0xbf, 0x8c, 0xcc, 0xe0, 0xeb, 0x38, 0x99, 0xee, 0xb1, 0x8a, 0xbb, 0x17, + 0x01, 0x8e, 0x3f, 0x69, 0x59, 0xec, 0x7f, 0xc4, 0x6d, 0x2d, 0xe7, 0x66, + 0x6c, 0x57, 0xb9, 0xd7, 0x61, 0x53, 0x45, 0xf4, 0xc7, 0x2c, 0xfc, 0x23, + 0xff, 0x00, 0xa2, 0x88, 0xb6, 0xd9, 0x35, 0xa6, 0xcb, 0x3b, 0x79, 0xc6, + 0xb2, 0xd5, 0xb4, 0x1c, 0x2f, 0x11, 0xb4, 0xd3, 0x51, 0x9b, 0x55, 0xa9, + 0xb1, 0xb8, 0x59, 0x6c, 0xb6, 0x86, 0x47, 0x0e, 0xde, 0x21, 0x8e, 0x78, + 0xbd, 0x9d, 0x32, 0x17, 0x4d, 0x31, 0xaf, 0x47, 0xbd, 0x5b, 0xb9, 0x34, + 0x5a, 0xbd, 0x37, 0xd0, 0x25, 0x0f, 0x12, 0x50, 0xb9, 0xa1, 0x9d, 0x1a, + 0x34, 0xfd, 0x5c, 0x48, 0xa8, 0xdf, 0xe5, 0xa9, 0x15, 0x9e, 0x21, 0x57, + 0xc8, 0xeb, 0xa1, 0x43, 0x66, 0x8f, 0xa3, 0x18, 0xa7, 0x1e, 0xff, 0x00, + 0x55, 0xe9, 0x31, 0x37, 0x62, 0x4c, 0x7c, 0xf7, 0xea, 0x7a, 0x40, 0x9d, + 0xb1, 0xda, 0x24, 0xb5, 0x18, 0x8c, 0x54, 0xc6, 0x46, 0x00, 0xd3, 0x9e, + 0xea, 0x12, 0x99, 0x1c, 0xd7, 0x80, 0x60, 0x17, 0x58, 0x45, 0x00, 0x14, + 0x1b, 0xbb, 0xc5, 0x38, 0xa8, 0x99, 0x67, 0xf9, 0xc3, 0xa7, 0x02, 0x3c, + 0x69, 0xb5, 0x7b, 0x0c, 0x55, 0x23, 0x1c, 0x93, 0x3b, 0xce, 0x0d, 0x8e, + 0x2b, 0x65, 0x5c, 0xe3, 0xd8, 0x05, 0xf5, 0x1b, 0x6d, 0x4e, 0xe6, 0x58, + 0xda, 0x46, 0x6e, 0xb7, 0xd9, 0xb7, 0x82, 0x31, 0xc7, 0x2c, 0x76, 0x0b, + 0xa2, 0xe3, 0x25, 0xbe, 0xe0, 0xcb, 0x81, 0x98, 0x1a, 0xd2, 0xb8, 0xb7, + 0x7d, 0x31, 0xaa, 0xe5, 0xe6, 0xc5, 0x3c, 0x71, 0xd9, 0x39, 0xa9, 0x66, + 0x86, 0x20, 0xdf, 0x68, 0x5a, 0xd2, 0x45, 0x3b, 0x29, 0xa8, 0xee, 0x51, + 0x94, 0x6d, 0x3b, 0x66, 0x2e, 0x1b, 0xcf, 0xab, 0x92, 0x07, 0x6f, 0xc8, + 0xf6, 0x14, 0xf8, 0xde, 0x2e, 0xd0, 0xe9, 0xb6, 0xd9, 0xaf, 0x52, 0xd1, + 0x23, 0x01, 0x60, 0x73, 0x49, 0x6e, 0x18, 0x9c, 0xb2, 0x3d, 0xf9, 0x52, + 0xf2, 0x89, 0xb2, 0x58, 0x2d, 0xb6, 0x8b, 0x4c, 0x6c, 0x0c, 0x73, 0xac, + 0x8f, 0xc0, 0x81, 0x80, 0x34, 0xba, 0x77, 0x50, 0x79, 0x2b, 0x3d, 0xb7, + 0xf8, 0x75, 0xa5, 0xdc, 0xd4, 0xed, 0x9a, 0xef, 0x34, 0xec, 0x68, 0x6a, + 0xaf, 0x47, 0x61, 0xb7, 0xd9, 0x5d, 0x78, 0x0b, 0xd6, 0xa3, 0xb2, 0x73, + 0xfb, 0x21, 0x36, 0xd7, 0x66, 0x8a, 0x4b, 0x45, 0xe6, 0x81, 0x30, 0x65, + 0x5e, 0xe6, 0xbf, 0x23, 0x5f, 0x15, 0x2f, 0x79, 0xf7, 0x2f, 0x97, 0xe4, + 0xcb, 0x44, 0x76, 0x9b, 0x9c, 0xd7, 0x3f, 0x25, 0xe0, 0xce, 0x34, 0xed, + 0xa6, 0x1d, 0x9d, 0xca, 0x77, 0xca, 0xea, 0x3a, 0xd0, 0xf1, 0xcc, 0x86, + 0x34, 0xd4, 0xdd, 0x38, 0xd4, 0xe5, 0x4e, 0xec, 0xeb, 0x77, 0x4c, 0x56, + 0x66, 0xe4, 0x4d, 0x5c, 0xee, 0xc0, 0x99, 0x14, 0x62, 0xeb, 0x18, 0x28, + 0x07, 0xac, 0xf4, 0xc8, 0xc7, 0x73, 0xff, 0x00, 0x43, 0xa5, 0xb2, 0xc4, + 0xeb, 0xaf, 0x6a, 0x67, 0x28, 0xd9, 0xe5, 0x8f, 0x99, 0x91, 0xf1, 0x41, + 0x68, 0xb3, 0x32, 0x2a, 0x90, 0x48, 0xc7, 0x64, 0x8b, 0xa6, 0xa5, 0x8e, + 0x22, 0x9d, 0xd9, 0x29, 0x1b, 0xc8, 0x6e, 0x2e, 0x73, 0x2e, 0xba, 0xe3, + 0xe9, 0x1d, 0xec, 0x0d, 0xfa, 0x03, 0x42, 0x4e, 0x0d, 0xc0, 0x76, 0x95, + 0x51, 0xc9, 0xb6, 0xc2, 0x3f, 0xa0, 0xef, 0xd9, 0x19, 0x79, 0x5d, 0xae, + 0xb3, 0xc2, 0x36, 0x43, 0x1d, 0x4b, 0xe4, 0xd5, 0xb5, 0xd8, 0x38, 0xf4, + 0x4b, 0xb1, 0xed, 0x53, 0xc3, 0xc9, 0x56, 0x96, 0x59, 0xf9, 0x22, 0x18, + 0x9b, 0x39, 0x7c, 0xd1, 0x16, 0x83, 0x88, 0x6f, 0xd5, 0x6d, 0xe3, 0x8b, + 0xbf, 0x34, 0x6e, 0x0b, 0x96, 0x56, 0xb9, 0xdc, 0xcc, 0x41, 0xa1, 0xb7, + 0x5b, 0x5e, 0xed, 0xf9, 0x63, 0xdd, 0xa7, 0xd2, 0x25, 0x6d, 0x27, 0xb4, + 0x63, 0x8e, 0xe6, 0xee, 0xf5, 0xaf, 0x8a, 0x41, 0x56, 0x3c, 0x50, 0xa7, + 0x02, 0x2b, 0x19, 0xc5, 0xae, 0xed, 0x1a, 0x79, 0xcb, 0x34, 0xf2, 0x59, + 0xdf, 0x4a, 0x5e, 0x89, 0xe5, 0xa6, 0x8a, 0x67, 0x5a, 0x2c, 0xa2, 0x09, + 0x9f, 0x21, 0x94, 0x49, 0x66, 0xae, 0xd7, 0x6b, 0x4d, 0xe3, 0x80, 0xef, + 0xdd, 0xd8, 0x54, 0xee, 0x1c, 0xb8, 0xfb, 0x1c, 0x98, 0x73, 0x36, 0x67, + 0xb6, 0x43, 0xc6, 0xf1, 0x68, 0xa2, 0x7b, 0xe3, 0x8e, 0x6b, 0x54, 0xae, + 0x6d, 0xdb, 0x96, 0x91, 0x46, 0x83, 0x5e, 0x95, 0x5a, 0x6b, 0x96, 0xee, + 0xfc, 0xcd, 0x13, 0x21, 0x92, 0x67, 0x9b, 0x3b, 0x29, 0x72, 0x1b, 0xc6, + 0xe3, 0x68, 0x28, 0x28, 0x34, 0x89, 0xe5, 0x6f, 0xfb, 0x38, 0x8d, 0x49, + 0xf7, 0xcf, 0x67, 0xaf, 0x30, 0xda, 0x23, 0x0f, 0x61, 0xfc, 0x13, 0x9d, + 0x62, 0x95, 0xb2, 0x33, 0xdc, 0x7e, 0x05, 0x63, 0x61, 0x79, 0xf0, 0x90, + 0x57, 0xd1, 0xf6, 0x8f, 0xfd, 0x65, 0x7d, 0x1f, 0x68, 0xf8, 0x17, 0xcc, + 0x2d, 0x1f, 0x02, 0xfa, 0x3e, 0xd1, 0xf0, 0x2f, 0xa3, 0xe7, 0xf8, 0x15, + 0x3d, 0x0c, 0xb3, 0xbd, 0xee, 0x01, 0x07, 0xf2, 0x84, 0xc1, 0xff, 0x00, + 0xf8, 0xa2, 0xfd, 0xd3, 0x62, 0x89, 0x82, 0x38, 0xdb, 0x80, 0x6b, 0x7f, + 0x9d, 0x7f, 0xff, 0xc4, 0x00, 0x2a, 0x10, 0x01, 0x00, 0x02, 0x01, 0x02, + 0x04, 0x05, 0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0xa1, 0x10, 0x20, 0x81, + 0x91, 0xb1, 0x30, 0x40, 0xc1, 0xd1, 0xf0, 0xe1, 0xf1, 0x50, 0xff, 0xda, + 0x00, 0x08, 0x01, 0x01, 0x00, 0x01, 0x3f, 0x21, 0xff, 0x00, 0xc1, 0xb8, + 0xc5, 0x70, 0xc8, 0x95, 0x2d, 0xc3, 0xfd, 0xe7, 0xc0, 0xbb, 0xc6, 0x6a, + 0xfe, 0x8b, 0x1f, 0xcf, 0xfe, 0x22, 0xbf, 0x37, 0xe9, 0x9f, 0x22, 0xeb, + 0x12, 0x05, 0x9d, 0xbf, 0xd6, 0x76, 0x0d, 0xdf, 0xa9, 0xa4, 0xc7, 0x78, + 0x97, 0xc5, 0xe7, 0xfa, 0xdc, 0x4b, 0x82, 0x99, 0x77, 0x31, 0xda, 0x1c, + 0x82, 0x3c, 0x1f, 0x01, 0x2f, 0x68, 0x5d, 0x45, 0x5f, 0x79, 0xaa, 0xa5, + 0xe7, 0x2e, 0x97, 0xc5, 0x2f, 0x89, 0x96, 0xad, 0x60, 0x19, 0xb9, 0x7b, + 0x81, 0x6f, 0x16, 0xd1, 0xae, 0x72, 0x92, 0x80, 0xd0, 0x34, 0xa0, 0x00, + 0x9f, 0xca, 0x90, 0x11, 0xc5, 0x36, 0xfc, 0x84, 0xd3, 0xc9, 0x8a, 0x83, + 0xa3, 0x47, 0xd0, 0x7c, 0x99, 0x3b, 0x95, 0xc0, 0xe5, 0xe0, 0x3c, 0x2a, + 0x95, 0xa4, 0xaa, 0xe5, 0x00, 0x65, 0x72, 0xf0, 0xa9, 0x58, 0x87, 0xb2, + 0x6a, 0xc6, 0x90, 0xb4, 0x33, 0x8c, 0x58, 0x2c, 0x24, 0xda, 0x1b, 0xeb, + 0x5e, 0x7f, 0xc7, 0x99, 0x69, 0x45, 0x77, 0x37, 0xfc, 0xb8, 0xcd, 0xd5, + 0x75, 0x61, 0x8f, 0xa3, 0x6c, 0xa1, 0x63, 0x4e, 0x4c, 0x4d, 0x3b, 0xa3, + 0x52, 0x6d, 0xca, 0x06, 0x3f, 0x12, 0xad, 0xd6, 0x6b, 0x3d, 0xe7, 0xcc, + 0x4f, 0x49, 0xbe, 0x3b, 0xc0, 0xbe, 0xb2, 0xb3, 0x32, 0xdb, 0xd6, 0xa2, + 0x24, 0x15, 0x15, 0xb5, 0xa0, 0x9b, 0x4f, 0xf2, 0xb5, 0x61, 0xf2, 0xa8, + 0x4e, 0x44, 0xf4, 0x0f, 0xdf, 0x83, 0x82, 0x20, 0x69, 0x97, 0xa2, 0x59, + 0x05, 0x03, 0x48, 0x9b, 0x95, 0xa2, 0xf1, 0xcd, 0x7c, 0x42, 0x87, 0xc6, + 0x33, 0x01, 0x27, 0x2a, 0x07, 0xda, 0x30, 0x02, 0xcf, 0x09, 0xc8, 0x87, + 0x8c, 0x82, 0x6a, 0xc1, 0x7d, 0x8b, 0x9b, 0xe9, 0x6f, 0x53, 0x30, 0x1e, + 0x9b, 0xc6, 0xfc, 0x85, 0x87, 0x07, 0x2d, 0x23, 0xce, 0x18, 0xcc, 0x6b, + 0xf0, 0x0f, 0x97, 0xb0, 0xf8, 0xc6, 0x10, 0x52, 0xda, 0xf3, 0x03, 0x47, + 0x23, 0x87, 0x39, 0xfc, 0x88, 0x01, 0xdf, 0x55, 0x54, 0x54, 0xa0, 0x0e, + 0xff, 0x00, 0x54, 0xd8, 0xc5, 0x93, 0x15, 0x60, 0x83, 0xd4, 0xa2, 0x2f, + 0x07, 0x36, 0x4a, 0x3e, 0xab, 0x07, 0x36, 0xd2, 0xfe, 0x23, 0x06, 0x0f, + 0x7c, 0xa5, 0x0a, 0xba, 0x0b, 0x70, 0xb6, 0xfc, 0xc6, 0xb2, 0xc2, 0xd5, + 0xf4, 0x63, 0xbd, 0x80, 0x7a, 0xae, 0x16, 0x15, 0xbe, 0x85, 0xd1, 0x23, + 0x66, 0x8d, 0xb9, 0xaa, 0x66, 0x25, 0x55, 0x57, 0x6c, 0x91, 0xac, 0xa6, + 0x32, 0xe7, 0xaf, 0xf0, 0x79, 0x5e, 0x2e, 0x5f, 0x03, 0xc0, 0xfd, 0xc8, + 0xf3, 0x22, 0x2c, 0x77, 0xb7, 0xe6, 0x1f, 0x56, 0xf9, 0x4c, 0x09, 0x0a, + 0x1c, 0xf4, 0x65, 0x83, 0xb9, 0xc9, 0xda, 0xe8, 0x95, 0xa4, 0x3b, 0x4f, + 0x65, 0x7e, 0x65, 0x2a, 0x4e, 0x2d, 0xae, 0xff, 0x00, 0x72, 0x98, 0xa0, + 0x6c, 0x42, 0xe4, 0x9b, 0xab, 0x08, 0x88, 0x50, 0x2c, 0xed, 0x89, 0x62, + 0xe3, 0xe7, 0x15, 0x04, 0x94, 0x66, 0x82, 0x16, 0x2e, 0x54, 0x1e, 0x6c, + 0xb6, 0x80, 0x92, 0xb7, 0xe2, 0x4b, 0xf6, 0xf0, 0x7f, 0x7e, 0x9e, 0x5d, + 0x17, 0xf3, 0x04, 0x31, 0xd2, 0x6e, 0x72, 0x84, 0xb0, 0x0b, 0x43, 0x58, + 0xe2, 0x5e, 0x79, 0x91, 0x7b, 0xb7, 0x5c, 0x09, 0xce, 0x13, 0x5d, 0x72, + 0xb2, 0xde, 0x13, 0x26, 0x7a, 0xe5, 0x53, 0x15, 0xda, 0x5e, 0xec, 0x32, + 0xb9, 0xdc, 0xce, 0xb9, 0x97, 0x1c, 0xe8, 0x8f, 0x56, 0x75, 0xcf, 0x33, + 0xc0, 0x13, 0xd6, 0x0f, 0x63, 0xcb, 0xfc, 0x5c, 0x8f, 0x00, 0xc3, 0x3e, + 0x25, 0xf0, 0xd6, 0x37, 0xab, 0xbf, 0x80, 0x2b, 0x49, 0x7c, 0x72, 0x97, + 0xc5, 0x99, 0x81, 0xca, 0x52, 0x9a, 0x46, 0xef, 0xf7, 0x03, 0x15, 0xae, + 0x20, 0x5f, 0x5e, 0x53, 0x0c, 0x63, 0xa4, 0xd6, 0x56, 0x22, 0x7a, 0x78, + 0x7f, 0x95, 0xc0, 0xf2, 0xff, 0x00, 0x5f, 0x22, 0x5d, 0x53, 0x55, 0x74, + 0x13, 0xad, 0x28, 0xdc, 0xc7, 0x80, 0xbc, 0x12, 0xa8, 0x73, 0x70, 0xe2, + 0x3d, 0xbc, 0x12, 0xc9, 0x1e, 0x2d, 0xc5, 0x77, 0x81, 0x8b, 0xd9, 0x41, + 0x05, 0x69, 0x35, 0x72, 0x9f, 0xdb, 0xe5, 0xe5, 0xfe, 0xfe, 0x92, 0xc8, + 0x56, 0x65, 0xc1, 0x78, 0xfd, 0x81, 0xdb, 0x6c, 0x9c, 0x98, 0x6c, 0x90, + 0x7f, 0x7f, 0x0f, 0x2f, 0x5d, 0xff, 0x00, 0x3e, 0x1d, 0xdf, 0x7d, 0x82, + 0x8b, 0xab, 0xcb, 0x2d, 0x94, 0xaf, 0xf3, 0xf3, 0x07, 0x79, 0x3b, 0xbf, + 0xb0, 0xef, 0x66, 0x34, 0x71, 0x7c, 0xe4, 0x6e, 0xf6, 0x77, 0x3f, 0x61, + 0xde, 0x4e, 0xff, 0x00, 0xcd, 0x03, 0xe1, 0x0f, 0x73, 0xf6, 0x1d, 0xfc, + 0xef, 0x7c, 0xcc, 0xef, 0x23, 0x69, 0xad, 0xcc, 0xba, 0x9f, 0x63, 0x5d, + 0xdb, 0xce, 0x84, 0xef, 0xa2, 0xf7, 0x1f, 0x61, 0xde, 0xce, 0xf1, 0xf3, + 0x13, 0xd7, 0x47, 0x7f, 0x3b, 0xa7, 0xd8, 0x87, 0x72, 0xf3, 0x40, 0xe5, + 0x8e, 0xea, 0x77, 0xef, 0xb0, 0xef, 0x61, 0xf7, 0x66, 0x3e, 0x5c, 0xef, + 0x61, 0xfb, 0x90, 0xd7, 0xd8, 0x0e, 0xe6, 0x77, 0x3e, 0x66, 0x39, 0x0f, + 0xbf, 0x05, 0x75, 0xfe, 0xc3, 0xb9, 0x9d, 0xdf, 0x9f, 0x91, 0xdd, 0xcc, + 0xba, 0xff, 0x00, 0x61, 0xde, 0xc1, 0x5d, 0x5f, 0x31, 0x28, 0xcd, 0x8e, + 0xe6, 0x67, 0x77, 0xf6, 0x1d, 0xec, 0x5a, 0xbc, 0x5f, 0x3b, 0x28, 0xfb, + 0xb3, 0xbb, 0xfb, 0x0e, 0xea, 0x77, 0x6c, 0x1e, 0x64, 0x25, 0xaf, 0xa5, + 0x92, 0xd6, 0xe3, 0xf6, 0x17, 0x3f, 0x0c, 0xcc, 0x47, 0x8f, 0x98, 0x0e, + 0x4b, 0xa7, 0x08, 0x7a, 0xca, 0xa7, 0x4e, 0x27, 0x11, 0x6a, 0x72, 0x19, + 0xca, 0x85, 0xae, 0x09, 0xce, 0xe7, 0x21, 0x9c, 0x89, 0xcf, 0x4e, 0x62, + 0x72, 0x98, 0x26, 0xcc, 0xe6, 0x27, 0x21, 0x88, 0x75, 0x55, 0x1d, 0xe6, + 0xf5, 0xf3, 0x51, 0x78, 0x26, 0x61, 0x95, 0xb4, 0xe1, 0x90, 0xf5, 0x2e, + 0x7d, 0xb0, 0xa6, 0x05, 0x38, 0xf1, 0x39, 0x2b, 0xc3, 0x86, 0x94, 0xdb, + 0x50, 0xb0, 0x08, 0x82, 0x61, 0xe2, 0xcc, 0xd3, 0xc6, 0x0e, 0x1e, 0x73, + 0x1f, 0x30, 0xa8, 0xa1, 0xbc, 0xc9, 0xac, 0x1e, 0x12, 0xe5, 0x15, 0x8d, + 0xae, 0x3a, 0x73, 0x2e, 0xa6, 0x89, 0x77, 0x5c, 0x60, 0xd4, 0x1a, 0x78, + 0xca, 0x13, 0x36, 0x2e, 0x4e, 0x12, 0xc6, 0x11, 0x8f, 0x03, 0xe0, 0x5e, + 0x8d, 0xeb, 0xb7, 0x38, 0xf9, 0x6e, 0xb5, 0x7f, 0x37, 0x5f, 0x99, 0x75, + 0xeb, 0x44, 0x40, 0xa5, 0xba, 0x13, 0x50, 0xdd, 0x12, 0xf5, 0x2b, 0x5a, + 0xef, 0xc3, 0x28, 0x91, 0x6e, 0x98, 0xef, 0x0f, 0x32, 0xc7, 0x9d, 0x47, + 0x84, 0x22, 0xba, 0xd4, 0x23, 0x20, 0xd0, 0x4b, 0xdc, 0xad, 0x0f, 0xe6, + 0x4b, 0xc2, 0xdc, 0x7e, 0xd2, 0x96, 0xe9, 0x5b, 0xcc, 0xe3, 0x34, 0x48, + 0xad, 0x94, 0x04, 0xe7, 0x4b, 0xf2, 0xe1, 0x0b, 0x6b, 0x75, 0xac, 0x4a, + 0x2d, 0x64, 0xc5, 0x5e, 0x3d, 0x99, 0x97, 0x72, 0xed, 0xa4, 0x5a, 0x96, + 0xa8, 0xa7, 0x5d, 0x65, 0xc2, 0xe2, 0xf3, 0xaf, 0x68, 0x3e, 0xf2, 0x9b, + 0x2f, 0xf4, 0x43, 0x4f, 0x96, 0x2c, 0xba, 0x96, 0xbe, 0x09, 0x0f, 0xf9, + 0xb7, 0x25, 0x27, 0xfb, 0xa6, 0x01, 0x0c, 0x06, 0x0f, 0x2e, 0xb1, 0xab, + 0x68, 0x07, 0x4d, 0x7b, 0x19, 0x55, 0xb2, 0x25, 0xe5, 0xe1, 0xad, 0x32, + 0x8d, 0xa5, 0x38, 0xe6, 0x6e, 0xc9, 0x52, 0xcc, 0xd4, 0x1e, 0x45, 0xc7, + 0x4a, 0x9c, 0xf8, 0x45, 0x45, 0xca, 0xc2, 0xfa, 0x40, 0xbd, 0x01, 0x30, + 0x6a, 0x4c, 0x7f, 0x32, 0xaf, 0x79, 0x41, 0x33, 0x09, 0xaa, 0x5a, 0xcc, + 0xb2, 0xfd, 0x49, 0x86, 0xed, 0x27, 0x5d, 0x0e, 0xef, 0x9e, 0xe7, 0x75, + 0x83, 0xd2, 0xed, 0xf1, 0x2c, 0x04, 0xa1, 0x4a, 0xde, 0x61, 0xad, 0xc5, + 0xb4, 0x41, 0xbf, 0xda, 0x7f, 0x75, 0x3a, 0xbe, 0xd1, 0x06, 0xec, 0xf2, + 0x96, 0x71, 0x3c, 0x2a, 0x51, 0x02, 0x82, 0x80, 0xda, 0x57, 0xbc, 0x63, + 0x5a, 0x0d, 0xca, 0xd9, 0x53, 0x2e, 0xc5, 0x95, 0xff, 0x00, 0x98, 0x0d, + 0x97, 0xb4, 0xa5, 0x7e, 0x93, 0x2f, 0xf3, 0x38, 0xed, 0xf4, 0x80, 0xb1, + 0x69, 0xd5, 0x75, 0x66, 0x26, 0x28, 0x5f, 0xa5, 0xf3, 0x7e, 0xde, 0x7c, + 0xce, 0x07, 0xa6, 0xfd, 0xe4, 0xf5, 0x8b, 0xa0, 0xdb, 0xd9, 0x1c, 0x2f, + 0x58, 0xe2, 0xa7, 0x19, 0x6c, 0x00, 0xa5, 0x58, 0x1b, 0x09, 0x68, 0x34, + 0x50, 0x39, 0xf0, 0x68, 0xda, 0x17, 0x00, 0xa0, 0x6e, 0x9a, 0xd4, 0x44, + 0x0b, 0x80, 0x49, 0xa5, 0xeb, 0xb9, 0x5a, 0xcc, 0x0d, 0x0d, 0xbd, 0x96, + 0x28, 0x9d, 0x2a, 0xc6, 0xf3, 0x6e, 0x0c, 0x09, 0x2e, 0x3f, 0x36, 0x25, + 0xa7, 0xfb, 0x4b, 0x5d, 0xe1, 0xb6, 0x6e, 0x65, 0xc6, 0x5f, 0xfc, 0x8b, + 0x5f, 0xf6, 0x15, 0x28, 0x90, 0x07, 0xab, 0xd1, 0x03, 0xe8, 0x2d, 0x0b, + 0xa2, 0xf3, 0xd1, 0xe8, 0xfc, 0xc7, 0x37, 0x9b, 0xf3, 0xe7, 0x09, 0xaa, + 0x0b, 0x90, 0xe1, 0x96, 0xc8, 0xd9, 0xa6, 0x86, 0x64, 0x19, 0x39, 0x18, + 0xa8, 0xb9, 0xdd, 0x7a, 0x85, 0x61, 0xa6, 0x93, 0x79, 0xe2, 0x9c, 0xfb, + 0x40, 0x98, 0xd3, 0x54, 0x74, 0x69, 0x6f, 0x26, 0x80, 0x15, 0x07, 0x00, + 0x98, 0xd5, 0x55, 0x2e, 0x96, 0x0b, 0xcb, 0x55, 0x91, 0xc5, 0x06, 0xf5, + 0x4b, 0x26, 0x8e, 0x02, 0x08, 0xe0, 0x22, 0x15, 0x56, 0x07, 0x1c, 0xce, + 0x0a, 0x3d, 0x4c, 0xac, 0xc7, 0x2c, 0xbc, 0xcc, 0x26, 0xf1, 0xad, 0xe6, + 0xaf, 0xe0, 0x31, 0xeb, 0xf4, 0x40, 0xc3, 0xd4, 0x1c, 0x7d, 0x44, 0xbc, + 0x63, 0x85, 0xc3, 0x74, 0xc6, 0xd2, 0x9b, 0x4d, 0xa1, 0xb1, 0xb6, 0x16, + 0x76, 0x82, 0x9a, 0x05, 0xca, 0xc5, 0xa6, 0xa1, 0xf6, 0xab, 0x1c, 0xa9, + 0xd5, 0x4c, 0xb6, 0xcb, 0xb3, 0x12, 0xbc, 0x82, 0xc3, 0x6a, 0xbe, 0x7e, + 0x04, 0x34, 0x93, 0xa5, 0xbe, 0xa2, 0xb5, 0x3e, 0x3b, 0x31, 0x3b, 0xb4, + 0xd3, 0x53, 0xcb, 0x50, 0x6a, 0x96, 0xc9, 0x6e, 0xd7, 0xcb, 0x63, 0x90, + 0x6b, 0x22, 0x9b, 0x11, 0x54, 0x33, 0xa1, 0xd3, 0x7c, 0x4b, 0xac, 0xcb, + 0xc4, 0xac, 0x96, 0x07, 0xe6, 0x09, 0x78, 0xb6, 0xe2, 0xdf, 0xd4, 0xfd, + 0x2e, 0x32, 0x0c, 0x0d, 0x36, 0x3d, 0x75, 0x8f, 0x12, 0xb1, 0xca, 0x39, + 0x66, 0xb5, 0xa2, 0xd9, 0x3d, 0x36, 0x32, 0x38, 0xd9, 0x7a, 0x11, 0xc6, + 0x7a, 0xbe, 0xaa, 0x93, 0x46, 0x05, 0x7d, 0x59, 0x8d, 0x05, 0x51, 0x4f, + 0x36, 0xc3, 0x26, 0x6b, 0x24, 0x51, 0x62, 0xb2, 0x5e, 0xd3, 0x50, 0x5e, + 0x11, 0x12, 0x2c, 0x1a, 0x23, 0x90, 0xe5, 0xb5, 0xe2, 0xb6, 0xb6, 0xb0, + 0x43, 0xd8, 0x48, 0x52, 0xd5, 0x81, 0x0e, 0x0d, 0x5a, 0x06, 0x68, 0x2e, + 0x34, 0x2d, 0x0f, 0x72, 0xb7, 0x99, 0x66, 0x8b, 0x2a, 0x3a, 0x70, 0x8e, + 0x6e, 0x2e, 0x93, 0xb7, 0xe4, 0x69, 0xef, 0xf4, 0xf5, 0x71, 0x37, 0xed, + 0x0c, 0x6a, 0x29, 0x04, 0x76, 0x77, 0xf1, 0x04, 0xeb, 0xd1, 0xcc, 0x6a, + 0xe0, 0xa2, 0x05, 0x2a, 0x19, 0x52, 0x08, 0x32, 0x83, 0xaa, 0x25, 0x4a, + 0x68, 0x28, 0xe0, 0xbb, 0x9d, 0x07, 0x68, 0x86, 0x9a, 0x72, 0x86, 0x31, + 0xd4, 0x68, 0x26, 0x05, 0x66, 0xc7, 0x18, 0xba, 0xb3, 0x81, 0xb2, 0xcc, + 0x6f, 0x60, 0xe9, 0x91, 0x6a, 0xa3, 0x59, 0x85, 0x6d, 0x4b, 0x6b, 0x0f, + 0x7f, 0x87, 0x16, 0x65, 0x45, 0x0b, 0x60, 0x30, 0x6b, 0xd1, 0x6e, 0x8e, + 0xa6, 0xaa, 0x6b, 0xbf, 0x81, 0x78, 0xa7, 0x24, 0xbd, 0x58, 0x48, 0x45, + 0x3e, 0xc1, 0xf5, 0x2a, 0xf3, 0x71, 0x46, 0xcf, 0xf0, 0x44, 0xd0, 0xea, + 0x4d, 0x66, 0xc5, 0x00, 0xd0, 0x9c, 0x11, 0x1c, 0x22, 0x58, 0x8e, 0x11, + 0xa6, 0x6e, 0x88, 0x41, 0xa2, 0xb8, 0xd8, 0xa5, 0x6c, 0x58, 0x28, 0x86, + 0x41, 0x30, 0x6b, 0x00, 0x26, 0xbe, 0x50, 0x37, 0x39, 0xd0, 0x82, 0xb8, + 0xae, 0xe6, 0x51, 0x5c, 0x5b, 0xc8, 0x22, 0x86, 0x83, 0x36, 0x54, 0x59, + 0x0d, 0x0d, 0x3d, 0xaa, 0x85, 0x8d, 0x5c, 0x53, 0x71, 0x58, 0x06, 0xc2, + 0xcc, 0x30, 0xa3, 0x92, 0xd3, 0x2d, 0x11, 0x62, 0x38, 0x26, 0x85, 0x11, + 0x4d, 0x5b, 0x4f, 0x5d, 0x7d, 0xbe, 0xad, 0xa3, 0x24, 0xb9, 0x45, 0xce, + 0x9e, 0x07, 0x8d, 0xe0, 0xad, 0xc6, 0x49, 0xb6, 0xb1, 0x6a, 0xab, 0x1d, + 0x30, 0x7b, 0x4d, 0x52, 0xb0, 0x82, 0x55, 0x12, 0x88, 0xa5, 0x0d, 0x9b, + 0x98, 0xec, 0xd4, 0x02, 0x5e, 0x8a, 0x4e, 0xa8, 0x68, 0x62, 0x85, 0x93, + 0x5b, 0x2f, 0x32, 0x68, 0x6d, 0xa5, 0x71, 0x04, 0x86, 0x46, 0x33, 0xd4, + 0x1a, 0xd3, 0x7d, 0x5b, 0x6d, 0x55, 0x84, 0x61, 0x3d, 0x96, 0x16, 0x9b, + 0x07, 0xf3, 0x00, 0x0a, 0x30, 0x7d, 0x6e, 0x2e, 0x04, 0xd5, 0x71, 0x1d, + 0xa2, 0x07, 0x99, 0x16, 0xae, 0x57, 0xa4, 0x6e, 0xbf, 0x8e, 0x70, 0xcd, + 0x7f, 0xd1, 0x49, 0xfe, 0xc3, 0x1b, 0xab, 0xbd, 0x85, 0xfb, 0x9d, 0x72, + 0xb8, 0x7a, 0xe8, 0x20, 0xc0, 0x27, 0x61, 0x9d, 0xe0, 0x17, 0x03, 0x79, + 0xa9, 0xeb, 0xfa, 0x43, 0x35, 0x34, 0x94, 0x07, 0xfe, 0xd7, 0xff, 0xda, + 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x3e, 0xdb, 0xc0, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x8d, 0xff, 0x00, + 0xdb, 0x6f, 0xf9, 0x98, 0x00, 0x00, 0x17, 0xef, 0xfe, 0xdb, 0xfd, 0xb7, + 0xdf, 0x20, 0x00, 0x0b, 0x7e, 0xbe, 0xfb, 0xfd, 0xff, 0x00, 0xdb, 0x7d, + 0x00, 0x07, 0x3e, 0xf7, 0xc4, 0x9e, 0x4f, 0xb8, 0x6d, 0x90, 0x00, 0xed, + 0xda, 0x6c, 0x68, 0xec, 0x08, 0x43, 0xd2, 0x00, 0x0c, 0xb6, 0xff, 0x00, + 0xfd, 0x2b, 0x70, 0x9b, 0xfe, 0x40, 0x03, 0xde, 0x7f, 0x6d, 0xf7, 0xff, + 0x00, 0xef, 0xf7, 0x68, 0x00, 0x7b, 0xdf, 0xef, 0xb6, 0xfb, 0x7d, 0xff, + 0x00, 0xd9, 0x00, 0x0f, 0x58, 0x10, 0x01, 0xb0, 0x40, 0x01, 0x3b, 0x20, + 0x01, 0xcf, 0x49, 0x24, 0x92, 0x49, 0x24, 0x93, 0xb4, 0x00, 0x3b, 0x69, + 0x24, 0x92, 0x49, 0x24, 0x92, 0xa4, 0x80, 0x03, 0x7d, 0x24, 0x92, 0x49, + 0x24, 0x92, 0x54, 0xd0, 0x00, 0x6e, 0xa4, 0x92, 0x49, 0x24, 0x92, 0x48, + 0x96, 0x00, 0x1f, 0xd4, 0x92, 0x49, 0x24, 0x92, 0x49, 0x3b, 0xc0, 0x03, + 0xba, 0x92, 0x49, 0x24, 0x92, 0x49, 0x2b, 0x58, 0x00, 0x76, 0x52, 0x49, + 0x24, 0x92, 0x49, 0x25, 0x6f, 0x00, 0x0e, 0xf2, 0x49, 0x24, 0x92, 0x49, + 0x24, 0x89, 0xc0, 0x01, 0xfd, 0x49, 0x24, 0x92, 0x49, 0x24, 0x91, 0xa8, + 0x00, 0x3f, 0x29, 0x24, 0x92, 0x49, 0x24, 0x92, 0x35, 0x00, 0x05, 0xf5, + 0x24, 0x92, 0x49, 0x24, 0x92, 0x45, 0x90, 0x00, 0x7e, 0xa4, 0x92, 0x49, + 0x24, 0x92, 0x48, 0xd2, 0x00, 0x1f, 0xd4, 0x92, 0x49, 0x24, 0x92, 0x49, + 0x12, 0x80, 0x01, 0xba, 0x92, 0x49, 0x24, 0x92, 0x49, 0x22, 0x70, 0x00, + 0x3e, 0xd2, 0x49, 0x24, 0x92, 0x49, 0x24, 0xeb, 0x00, 0x06, 0x66, 0x6f, + 0x27, 0x16, 0xd8, 0x44, 0x93, 0x60, 0x01, 0xcf, 0x4f, 0xe5, 0xda, 0x4b, + 0x2c, 0xbb, 0x6c, 0x00, 0x3f, 0xe4, 0x9f, 0xfb, 0xfb, 0x20, 0x37, 0xef, + 0x80, 0x05, 0xef, 0x40, 0x20, 0x3f, 0x65, 0xbb, 0x9d, 0x60, 0x00, 0xd0, + 0x36, 0xdf, 0x7e, 0xcd, 0x93, 0x7e, 0xe0, 0x00, 0x13, 0x86, 0xdb, 0xf9, + 0x7b, 0x13, 0x7d, 0xb8, 0x00, 0x00, 0x4f, 0x53, 0xcc, 0x6f, 0xf6, 0xcb, + 0x63, 0x80, 0x00, 0x03, 0xfb, 0xec, 0xfb, 0xfa, 0xef, 0xb6, 0x80, 0x00, + 0x00, 0x27, 0x7d, 0x9e, 0x84, 0xb3, 0xf6, 0xe0, 0x00, 0x00, 0x01, 0xad, + 0xf8, 0xd8, 0x7f, 0xbe, 0xf4, 0x00, 0x00, 0x00, 0x13, 0xf6, 0x61, 0x44, + 0x0f, 0xd6, 0x00, 0x00, 0x00, 0x03, 0x56, 0xe1, 0xcb, 0x8b, 0xde, 0x80, + 0x00, 0x00, 0x00, 0x0c, 0xfb, 0x2e, 0x20, 0x1e, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0xe7, 0xde, 0x1b, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, + 0x3c, 0x94, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xff, 0xc4, 0x00, 0x1f, 0x11, 0x00, 0x02, 0x02, 0x03, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, + 0x00, 0x10, 0x20, 0x31, 0x40, 0x30, 0x41, 0x50, 0x21, 0x60, 0xff, 0xda, + 0x00, 0x08, 0x01, 0x03, 0x01, 0x01, 0x3f, 0x10, 0xfc, 0x37, 0x1c, 0x71, + 0xc7, 0xee, 0xe3, 0x8f, 0xd1, 0xc7, 0x1f, 0x81, 0x3c, 0x43, 0x23, 0xd2, + 0x73, 0x51, 0x45, 0x4a, 0x2a, 0x54, 0xb0, 0x18, 0x9c, 0xc5, 0xfd, 0xad, + 0xc3, 0x09, 0xb3, 0xab, 0x18, 0x9f, 0x1f, 0xb3, 0xec, 0x71, 0xc3, 0x1c, + 0x73, 0xe6, 0x03, 0x13, 0xc8, 0x31, 0x3c, 0x83, 0x13, 0x6a, 0x28, 0xa2, + 0x8a, 0x28, 0xa2, 0x8a, 0x28, 0xa2, 0x8a, 0x28, 0xac, 0x62, 0x68, 0x70, + 0x1a, 0x18, 0x9a, 0x1c, 0x07, 0x54, 0x31, 0x34, 0x38, 0x0e, 0xa8, 0x62, + 0x68, 0x70, 0x1d, 0x50, 0xc4, 0xd0, 0xe0, 0x3a, 0xa1, 0x89, 0xa1, 0xc0, + 0x75, 0x43, 0x13, 0x43, 0x80, 0xea, 0x86, 0x27, 0x88, 0xeb, 0x33, 0xc4, + 0x75, 0x99, 0xa1, 0xc0, 0x75, 0x99, 0xa1, 0xc0, 0x75, 0x43, 0x13, 0x43, + 0x80, 0xea, 0x86, 0x26, 0x87, 0x01, 0xd6, 0x66, 0x87, 0x01, 0xd6, 0x66, + 0x87, 0x01, 0xa1, 0x89, 0xa1, 0x4e, 0x3b, 0x7e, 0x83, 0x13, 0xc8, 0x31, + 0x3c, 0x83, 0x13, 0xee, 0xe3, 0xf2, 0xf9, 0x07, 0xe0, 0x1e, 0x13, 0x6e, + 0x3a, 0x71, 0xe0, 0xe3, 0x8e, 0x38, 0xe3, 0xf1, 0x3e, 0x0a, 0x28, 0xb8, + 0x35, 0x96, 0xa3, 0x8e, 0x39, 0xbf, 0x73, 0x88, 0xa6, 0x5d, 0x12, 0xa0, + 0x87, 0x8c, 0x50, 0xfa, 0x80, 0x7d, 0xc2, 0x18, 0x4f, 0xeb, 0x84, 0x2d, + 0xf1, 0x88, 0xa8, 0x88, 0x00, 0x11, 0x80, 0x8e, 0x0c, 0x26, 0x5f, 0x29, + 0xa1, 0xce, 0xe3, 0x8f, 0x9d, 0x7f, 0x80, 0xff, 0xc4, 0x00, 0x1f, 0x11, + 0x00, 0x02, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x20, 0x21, 0x31, 0x41, + 0x40, 0x30, 0x51, 0x50, 0xff, 0xda, 0x00, 0x08, 0x01, 0x02, 0x01, 0x01, + 0x3f, 0x10, 0xfe, 0x14, 0x32, 0x19, 0x0c, 0x86, 0x43, 0x21, 0x90, 0xfe, + 0xd0, 0x42, 0x21, 0x7d, 0x21, 0x10, 0x86, 0xbe, 0x09, 0x47, 0x89, 0xab, + 0x92, 0x97, 0x66, 0x7c, 0x0f, 0x17, 0x15, 0x19, 0x27, 0x69, 0x24, 0x92, + 0x4f, 0x49, 0x24, 0x59, 0x26, 0x92, 0x2c, 0xd5, 0xdb, 0xd5, 0x60, 0x82, + 0x0e, 0x0c, 0x8a, 0x45, 0x0e, 0x10, 0x90, 0x94, 0x8f, 0x0f, 0x07, 0x45, + 0xba, 0x31, 0xdb, 0xd0, 0xa8, 0xbb, 0x46, 0x72, 0xb1, 0x83, 0x90, 0x43, + 0x20, 0x5b, 0xc8, 0xd7, 0xe0, 0x94, 0x1d, 0x91, 0x61, 0xd5, 0xdb, 0xd0, + 0xa9, 0x04, 0xfd, 0xd8, 0xed, 0xe8, 0x5e, 0x37, 0x6f, 0x42, 0x24, 0x92, + 0x51, 0x28, 0x92, 0x51, 0x28, 0x94, 0x4a, 0x25, 0x12, 0x89, 0x44, 0xa2, + 0x51, 0x24, 0xd5, 0xdb, 0xd0, 0x87, 0xe0, 0xfc, 0x0c, 0x76, 0xf4, 0x21, + 0xf8, 0x16, 0xc6, 0x3b, 0x7a, 0x10, 0xfc, 0x0b, 0x63, 0x1d, 0xbd, 0x08, + 0x7b, 0xf0, 0x2d, 0x8c, 0x76, 0xf4, 0x21, 0xef, 0xc0, 0xb6, 0x31, 0xdb, + 0xd0, 0x87, 0xbf, 0x06, 0xc3, 0x1d, 0xbd, 0x08, 0x7b, 0xf0, 0x6c, 0x31, + 0xdb, 0xd0, 0xbc, 0x3b, 0x0c, 0x76, 0xf4, 0x22, 0x3c, 0x1b, 0x0c, 0x76, + 0xf4, 0x21, 0xef, 0xc1, 0xb0, 0xc7, 0x6f, 0x42, 0x1e, 0xfc, 0x1b, 0x0c, + 0x76, 0xf4, 0x21, 0xef, 0xc1, 0xb0, 0xc7, 0x6f, 0x42, 0x1e, 0xfc, 0x1b, + 0x0c, 0x76, 0xf4, 0x21, 0xef, 0xc1, 0xb0, 0xc7, 0x6f, 0x42, 0x12, 0x1f, + 0x83, 0x61, 0x8e, 0xde, 0x84, 0x3c, 0xdf, 0x9b, 0x72, 0x66, 0xab, 0x03, + 0x1d, 0xbd, 0x0a, 0x98, 0x30, 0x60, 0xc1, 0x83, 0x14, 0xc1, 0x8a, 0x62, + 0xb8, 0x20, 0x79, 0xa3, 0xb7, 0xab, 0x24, 0x92, 0x49, 0xb6, 0x49, 0x30, + 0x60, 0x9a, 0x6a, 0x8e, 0xdd, 0xa8, 0xc8, 0x64, 0x10, 0x41, 0x04, 0x3a, + 0xb2, 0x08, 0x20, 0x82, 0x2c, 0x76, 0xad, 0x8f, 0x63, 0xbd, 0x06, 0x2b, + 0xd7, 0xc1, 0xe5, 0x27, 0xf0, 0x5a, 0xa2, 0xdb, 0x13, 0xbb, 0xac, 0x77, + 0xe4, 0xa0, 0x43, 0x12, 0x24, 0x48, 0x90, 0x95, 0x66, 0x06, 0xa4, 0x91, + 0x22, 0x44, 0x89, 0x1c, 0x81, 0xde, 0xd0, 0xc7, 0xbb, 0x59, 0x24, 0x89, + 0x64, 0x89, 0xfb, 0xed, 0x5a, 0xc6, 0xe7, 0x84, 0x10, 0x41, 0xab, 0x9f, + 0xc5, 0x38, 0x63, 0x51, 0x71, 0x65, 0xc1, 0x03, 0xc0, 0xdc, 0x8b, 0xee, + 0xb2, 0xac, 0xda, 0x8a, 0x51, 0x2c, 0x91, 0x43, 0xd8, 0xac, 0x7f, 0x34, + 0xe1, 0x8e, 0xc4, 0xd1, 0x31, 0xac, 0x92, 0xe2, 0x04, 0xf0, 0x27, 0x2a, + 0x2d, 0x92, 0x46, 0xe8, 0xaa, 0xfe, 0xdb, 0xcd, 0x90, 0x41, 0x1f, 0xb6, + 0x3f, 0xbe, 0x89, 0x26, 0xe9, 0x27, 0xfb, 0x7f, 0xff, 0xc4, 0x00, 0x2a, + 0x10, 0x01, 0x00, 0x02, 0x02, 0x01, 0x02, 0x06, 0x02, 0x03, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, 0x21, 0x31, 0x41, 0x51, + 0x61, 0x20, 0x71, 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xf0, 0x30, 0x40, 0xd1, + 0x10, 0x50, 0xf1, 0xe1, 0xff, 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, 0x01, + 0x3f, 0x10, 0xff, 0x00, 0xa1, 0x29, 0x03, 0xb3, 0x43, 0xee, 0xc7, 0xe6, + 0x7b, 0x56, 0x1e, 0x91, 0x71, 0x66, 0xbf, 0x7d, 0x5c, 0xb7, 0x11, 0xda, + 0xbd, 0xc8, 0x18, 0xf8, 0xa3, 0x28, 0x03, 0x7c, 0x84, 0x9a, 0x2d, 0x8d, + 0x7f, 0xbc, 0x26, 0x9a, 0x01, 0x49, 0x7d, 0xe0, 0x51, 0x29, 0xd3, 0x63, + 0xec, 0xff, 0x00, 0x22, 0x81, 0x56, 0x83, 0x6b, 0x1e, 0xe0, 0xa0, 0x8e, + 0x89, 0x31, 0xec, 0x82, 0x26, 0x38, 0x68, 0x1e, 0xa8, 0x51, 0xb2, 0x50, + 0x0a, 0x1e, 0xa4, 0x92, 0xbb, 0x9a, 0x80, 0x7d, 0x0d, 0x23, 0x8a, 0x83, + 0x36, 0x97, 0xee, 0x16, 0x9b, 0x71, 0xb7, 0xac, 0x6d, 0xe9, 0xe6, 0xa6, + 0x44, 0xd1, 0x01, 0xd9, 0xde, 0xe5, 0x05, 0x88, 0x7d, 0xc2, 0x92, 0xa5, + 0x74, 0x98, 0x32, 0xcf, 0x79, 0x95, 0x1d, 0xa4, 0x57, 0xcc, 0x37, 0x51, + 0x82, 0x4f, 0x22, 0xe7, 0x2f, 0xaa, 0x32, 0xf9, 0xa8, 0xbe, 0xf7, 0x01, + 0x08, 0xda, 0x3b, 0xbd, 0xdf, 0xc1, 0x0e, 0xec, 0xac, 0xd0, 0xc6, 0x09, + 0xb6, 0x5a, 0x06, 0x97, 0x83, 0xf8, 0x10, 0x80, 0x34, 0xed, 0x25, 0x8f, + 0x4e, 0x37, 0xe5, 0x15, 0x0d, 0xda, 0xfc, 0x4b, 0xea, 0x81, 0xed, 0x5a, + 0x9b, 0xd1, 0x4b, 0xc9, 0x5b, 0x8b, 0x12, 0xee, 0xb9, 0xa8, 0x0b, 0xa5, + 0xeb, 0x84, 0x97, 0x74, 0x57, 0xaa, 0x20, 0x1a, 0xe8, 0x6e, 0xfd, 0x20, + 0x1a, 0x44, 0xf9, 0xc0, 0x13, 0xbf, 0x21, 0x1a, 0x2b, 0x81, 0xf8, 0xa8, + 0x5e, 0xc3, 0x6b, 0x8b, 0x26, 0x4a, 0x4b, 0xf5, 0x5c, 0x45, 0x84, 0xb4, + 0xe9, 0x31, 0x68, 0xbb, 0x6b, 0x0f, 0xdc, 0xf2, 0x07, 0x17, 0xc6, 0x62, + 0xd1, 0x55, 0xac, 0x75, 0x60, 0xc6, 0x40, 0x44, 0xb3, 0xca, 0x36, 0x9d, + 0x95, 0x9b, 0x85, 0xe7, 0xb9, 0xf2, 0xe9, 0x5e, 0x1c, 0x37, 0x37, 0x34, + 0x84, 0xda, 0x74, 0x40, 0xaf, 0xa8, 0x44, 0x16, 0xd4, 0xb9, 0x20, 0x56, + 0x5c, 0xd6, 0x02, 0x00, 0x6c, 0xed, 0x17, 0xab, 0x99, 0x48, 0x4e, 0xbf, + 0xc5, 0x1b, 0x67, 0xc8, 0x10, 0x39, 0x96, 0x1a, 0xdf, 0x51, 0xcc, 0xa1, + 0x28, 0x55, 0xf0, 0xfc, 0xcb, 0x02, 0x24, 0x3d, 0x2a, 0x53, 0x95, 0x5f, + 0x7e, 0xf1, 0x04, 0x3a, 0x20, 0x55, 0x37, 0x63, 0x86, 0x28, 0x97, 0xb1, + 0xfb, 0xa8, 0x2d, 0x8b, 0x1e, 0x4a, 0x94, 0x05, 0xdf, 0xc9, 0x80, 0xb8, + 0x50, 0x99, 0x6d, 0xe2, 0x5e, 0xe2, 0x2f, 0x7a, 0x19, 0x68, 0x73, 0x64, + 0x54, 0x85, 0x63, 0xb6, 0x48, 0x43, 0x49, 0xbb, 0x43, 0x76, 0x3c, 0x32, + 0xd8, 0xaa, 0x98, 0x7e, 0x85, 0x8b, 0xeb, 0xe1, 0xa6, 0x60, 0x45, 0xe2, + 0xe9, 0x7d, 0xa0, 0xbd, 0xd3, 0x6e, 0xe5, 0x84, 0xa0, 0x35, 0x61, 0x4e, + 0x3c, 0xa2, 0xf0, 0x1d, 0x68, 0xda, 0x54, 0x33, 0xe8, 0x30, 0xe0, 0xb4, + 0x81, 0x80, 0x3a, 0x62, 0x24, 0xd6, 0x5c, 0xc1, 0x64, 0xbe, 0x44, 0x50, + 0x01, 0x56, 0xab, 0x2a, 0x7a, 0x44, 0xc7, 0xd4, 0x80, 0x6c, 0xf5, 0x85, + 0x7a, 0x29, 0xba, 0xad, 0xca, 0x0b, 0x16, 0xea, 0xab, 0x1f, 0x70, 0x56, + 0x46, 0x1b, 0x16, 0x82, 0xd7, 0xdc, 0x1b, 0xda, 0xa9, 0x99, 0x76, 0xef, + 0x01, 0x51, 0xd1, 0xd6, 0x99, 0x54, 0x8b, 0x9e, 0x01, 0x62, 0x76, 0x00, + 0xe0, 0x6b, 0xfc, 0x95, 0xea, 0x51, 0xce, 0xb4, 0x80, 0xca, 0x96, 0xc1, + 0xc3, 0x9e, 0x61, 0x55, 0xaa, 0x6d, 0x1c, 0xbd, 0x04, 0x16, 0x55, 0xb8, + 0x2e, 0xff, 0x00, 0xfb, 0x11, 0xb7, 0x0a, 0xf3, 0x96, 0xe3, 0x89, 0x83, + 0x1d, 0x06, 0x8f, 0xb7, 0xc3, 0x98, 0x52, 0x82, 0xe2, 0x15, 0xe8, 0x0b, + 0xeb, 0x80, 0x84, 0x00, 0x34, 0x53, 0x89, 0x89, 0x89, 0xad, 0x79, 0x04, + 0xc5, 0x76, 0xfd, 0xf9, 0xcb, 0x55, 0x89, 0x65, 0x2f, 0x21, 0xf9, 0xf8, + 0x8a, 0x4c, 0x16, 0x06, 0xe8, 0xcb, 0xaf, 0x2a, 0x89, 0xa7, 0x50, 0x57, + 0x22, 0x2b, 0x8f, 0x39, 0x71, 0x94, 0xa5, 0xb1, 0xb2, 0xef, 0xaa, 0xc7, + 0x28, 0xdc, 0x22, 0x84, 0x02, 0x83, 0xa3, 0x6f, 0xac, 0xc3, 0xa0, 0x08, + 0xe8, 0x07, 0xe8, 0xf6, 0x60, 0x15, 0x1a, 0xd8, 0xe5, 0xec, 0xcc, 0x72, + 0x1c, 0x15, 0x15, 0x1a, 0x78, 0x69, 0xe9, 0x0b, 0xbe, 0x66, 0xca, 0x51, + 0x25, 0xf5, 0x14, 0xf5, 0x98, 0x8d, 0x06, 0xdb, 0x42, 0xb7, 0x37, 0xc4, + 0x28, 0xa5, 0x80, 0xdd, 0x8a, 0x0e, 0xc9, 0x9f, 0x58, 0x6f, 0x64, 0xda, + 0xbb, 0x97, 0xe7, 0x10, 0x48, 0x63, 0xc2, 0xd0, 0x28, 0x17, 0xdd, 0x4a, + 0xef, 0x0d, 0x96, 0x0c, 0xd4, 0xa8, 0xd6, 0xfb, 0x40, 0x11, 0xba, 0xb8, + 0xbf, 0x08, 0x16, 0x2b, 0x87, 0xac, 0x0e, 0x07, 0x49, 0x99, 0xaa, 0x5e, + 0x5c, 0x67, 0x32, 0xcc, 0x76, 0x86, 0x4f, 0x46, 0x25, 0xcb, 0x02, 0xbc, + 0xb7, 0x09, 0x76, 0x41, 0xb0, 0x31, 0xa4, 0x04, 0xb6, 0xab, 0x98, 0xc6, + 0x98, 0xd4, 0x33, 0x98, 0xc2, 0x51, 0xbf, 0x69, 0xa9, 0x0e, 0x5b, 0x68, + 0x03, 0xde, 0xac, 0x61, 0x99, 0x9d, 0x16, 0x9b, 0xa1, 0x7a, 0x20, 0x3d, + 0x60, 0x9f, 0x54, 0x2d, 0x1a, 0x40, 0xbc, 0x53, 0xf2, 0x94, 0xb7, 0x9c, + 0x34, 0x22, 0x24, 0xe0, 0xa7, 0x7f, 0x3b, 0x88, 0xb0, 0x61, 0x42, 0x98, + 0x43, 0xa0, 0xd6, 0x35, 0x0b, 0x64, 0xb5, 0x55, 0xd4, 0x5f, 0x27, 0xcc, + 0xcc, 0x64, 0x93, 0x74, 0xf5, 0x58, 0x06, 0xa0, 0xdd, 0xe4, 0x12, 0xe1, + 0xe4, 0x1c, 0x0b, 0x07, 0x47, 0x19, 0x10, 0x3d, 0xe3, 0x6b, 0x6f, 0xd5, + 0xcf, 0x68, 0x40, 0x42, 0xbf, 0x7a, 0x5c, 0xa5, 0x78, 0x44, 0x3e, 0xcf, + 0x0e, 0x74, 0x37, 0xbc, 0x72, 0x07, 0xa9, 0x71, 0x96, 0x94, 0x23, 0xdd, + 0x98, 0x87, 0x96, 0x54, 0xad, 0xae, 0x93, 0x99, 0x73, 0x88, 0x39, 0xdf, + 0x03, 0x3a, 0xbc, 0x5d, 0x06, 0x8b, 0x54, 0x52, 0x60, 0x4e, 0x03, 0xea, + 0x1e, 0x91, 0x4a, 0x0b, 0x66, 0xb7, 0x10, 0x45, 0xe0, 0x38, 0x01, 0x99, + 0x5e, 0x68, 0x72, 0x56, 0x20, 0x82, 0xd3, 0xba, 0x7d, 0x41, 0x5e, 0xdd, + 0x69, 0xe3, 0xa4, 0x48, 0x91, 0x93, 0x4e, 0xf3, 0x14, 0xb6, 0x8b, 0x73, + 0x85, 0x6e, 0x16, 0x68, 0xe4, 0xe4, 0xad, 0x77, 0xef, 0x16, 0x9b, 0x2a, + 0xaf, 0x37, 0x7e, 0xf2, 0xf4, 0x01, 0xe1, 0xbf, 0x96, 0x2c, 0x63, 0x45, + 0xdb, 0x79, 0x96, 0xd6, 0x90, 0x21, 0xbc, 0x1e, 0xa6, 0xe3, 0x95, 0x28, + 0xce, 0x6e, 0x87, 0xfc, 0xf8, 0x41, 0x6e, 0x6c, 0x06, 0xf1, 0xfa, 0x11, + 0xa1, 0xba, 0x34, 0x06, 0xe7, 0x78, 0x3a, 0x24, 0x54, 0x14, 0xb4, 0x3b, + 0x6a, 0x82, 0xe2, 0xb6, 0x56, 0x78, 0xbc, 0xd7, 0x73, 0xa7, 0xa4, 0x6f, + 0x92, 0xb4, 0x8d, 0x98, 0x2b, 0x72, 0x2b, 0x81, 0xaa, 0x99, 0xda, 0x23, + 0xc4, 0x68, 0xae, 0xc7, 0x24, 0xc9, 0x6b, 0xa3, 0x07, 0xac, 0xa7, 0x67, + 0x78, 0x34, 0x6f, 0xb5, 0x7b, 0xcb, 0x85, 0xa5, 0xee, 0xc1, 0xa8, 0x09, + 0x78, 0xd0, 0x7e, 0xbf, 0x6e, 0x25, 0x17, 0x26, 0x2b, 0xe6, 0x28, 0xc1, + 0x91, 0x8b, 0x67, 0xcf, 0xe2, 0x59, 0x17, 0x4d, 0x68, 0xd3, 0xff, 0x00, + 0x92, 0x80, 0xa6, 0x0d, 0x59, 0xb3, 0x18, 0x82, 0xb5, 0x18, 0x38, 0x31, + 0x79, 0xce, 0x23, 0x25, 0xdd, 0x3a, 0x4a, 0xd3, 0x7a, 0x3b, 0x47, 0x6d, + 0xb1, 0xa1, 0xaf, 0xd7, 0x37, 0xe1, 0x55, 0x43, 0x90, 0x75, 0x02, 0x1a, + 0x5d, 0xf3, 0x98, 0x51, 0x72, 0x89, 0x0d, 0x84, 0x66, 0x38, 0xe9, 0x31, + 0x0a, 0x5d, 0x8a, 0x88, 0x3e, 0x70, 0x42, 0xd5, 0x51, 0x71, 0x60, 0x4b, + 0xd7, 0x71, 0xd0, 0x0c, 0xcb, 0xda, 0x70, 0xf3, 0x44, 0xb6, 0x5b, 0x73, + 0x91, 0xb8, 0xea, 0xd5, 0xce, 0x3f, 0xd8, 0xee, 0x37, 0x4c, 0x90, 0x37, + 0xa7, 0x93, 0x19, 0x8e, 0x6a, 0x5e, 0xba, 0xcc, 0xcb, 0x76, 0x7a, 0x11, + 0xe0, 0x4f, 0x70, 0x49, 0x4d, 0x06, 0x2e, 0xd5, 0xf9, 0x94, 0x1e, 0x71, + 0x31, 0x13, 0xd1, 0x6b, 0xcf, 0x0c, 0x0e, 0x0e, 0x76, 0x88, 0x44, 0xbc, + 0x6e, 0xf2, 0xf0, 0x9b, 0x59, 0x5d, 0x7e, 0xd0, 0xc2, 0x85, 0x34, 0x5b, + 0x02, 0x65, 0xa5, 0x3f, 0xa1, 0xa3, 0x4b, 0x2f, 0xa2, 0xfe, 0xf7, 0x8e, + 0xa5, 0xd8, 0xd4, 0x62, 0xe6, 0xef, 0xd0, 0xc7, 0x84, 0x04, 0x82, 0xd5, + 0x8f, 0x1a, 0x8e, 0xb2, 0xb0, 0xd9, 0xdf, 0x73, 0xf7, 0x7b, 0x7f, 0x41, + 0x0a, 0x39, 0x17, 0xed, 0x30, 0x2b, 0xc2, 0xa7, 0x5c, 0xc2, 0x2b, 0x12, + 0xdf, 0x1e, 0x1a, 0x02, 0xe6, 0xf2, 0xf4, 0x20, 0x32, 0x63, 0x5f, 0x49, + 0xfb, 0xdd, 0xbf, 0xa1, 0xfb, 0x7d, 0xa5, 0x45, 0xab, 0xf7, 0x40, 0x8e, + 0xbb, 0xfc, 0x5e, 0x1a, 0x8f, 0xcd, 0xfe, 0x12, 0xcc, 0xdf, 0xad, 0xdb, + 0xfa, 0x02, 0xdf, 0x8b, 0xfd, 0x4a, 0xad, 0xdf, 0xf7, 0x32, 0xfd, 0xed, + 0x78, 0x7d, 0xcb, 0xf0, 0x82, 0xf3, 0xf2, 0x7d, 0xcc, 0x7a, 0x1f, 0xe3, + 0xfa, 0x01, 0xa8, 0xeb, 0xfa, 0x97, 0x16, 0xb9, 0xfd, 0xcc, 0xbf, 0x5b, + 0x5e, 0x1b, 0xb4, 0xbc, 0x9f, 0x04, 0x6d, 0x5c, 0x1c, 0xc6, 0xda, 0xeb, + 0xfe, 0x81, 0x71, 0xc5, 0x9c, 0xbb, 0xfb, 0x22, 0xbc, 0x7a, 0x2f, 0xaf, + 0x09, 0xcf, 0xaa, 0x7e, 0x84, 0x74, 0x93, 0x62, 0x3f, 0xa3, 0xfd, 0x03, + 0x8c, 0xdc, 0x37, 0xd2, 0x8f, 0x79, 0x8e, 0x0d, 0xfe, 0x2f, 0x08, 0xbe, + 0xb1, 0xfa, 0x11, 0xa8, 0xcf, 0x23, 0xf6, 0x5f, 0xe8, 0x1b, 0x38, 0x60, + 0x6c, 0x32, 0x3f, 0xdb, 0x1e, 0x1c, 0x03, 0x76, 0x7e, 0x09, 0x6b, 0xba, + 0xc6, 0xaf, 0xed, 0x7f, 0xd0, 0xb6, 0x2d, 0x9f, 0x84, 0x26, 0xf7, 0x23, + 0x80, 0xf5, 0x37, 0xc7, 0x86, 0xe3, 0x1f, 0xa8, 0x4c, 0x0b, 0xc0, 0xfb, + 0x8f, 0x7b, 0x39, 0x38, 0xfe, 0x82, 0xc8, 0x6e, 0xdf, 0x51, 0x97, 0x75, + 0x7f, 0x72, 0xbe, 0xe5, 0xf1, 0xe1, 0x4a, 0x78, 0x1f, 0xa1, 0x11, 0xe8, + 0xc5, 0x35, 0xeb, 0xfe, 0x86, 0x2c, 0x75, 0x7d, 0x33, 0x2a, 0xfa, 0xfe, + 0xe2, 0x28, 0xaa, 0xdd, 0xf1, 0xe1, 0x4f, 0xec, 0xe9, 0x05, 0x1d, 0xe6, + 0x5e, 0x4e, 0xef, 0xfd, 0x0c, 0x83, 0xbb, 0xe9, 0x9e, 0xa1, 0xfd, 0xc2, + 0xde, 0xf3, 0xf8, 0xbc, 0x39, 0x9f, 0x1f, 0xe2, 0x31, 0x09, 0x87, 0xba, + 0x3c, 0x9d, 0xdf, 0xd0, 0xb5, 0xfc, 0xeb, 0x2a, 0xda, 0xff, 0x00, 0x68, + 0xcb, 0xcf, 0xda, 0xbc, 0x36, 0xbf, 0x8a, 0xb7, 0xc4, 0x2c, 0xcd, 0x1a, + 0x76, 0x86, 0xbf, 0xa1, 0xab, 0x9b, 0xcb, 0x0d, 0x8f, 0xed, 0x70, 0x8a, + 0xbb, 0xdf, 0x1e, 0x15, 0x41, 0xfa, 0xd4, 0x0f, 0x3c, 0x98, 0xa5, 0x37, + 0x63, 0xfa, 0x17, 0x26, 0xb3, 0x30, 0x94, 0x30, 0xaf, 0xb8, 0x2b, 0xf5, + 0xf5, 0xe1, 0xa9, 0xaa, 0xed, 0x1f, 0x53, 0x60, 0xe8, 0xc2, 0xca, 0x95, + 0xec, 0xeb, 0xde, 0x73, 0xe9, 0xe7, 0x19, 0xd1, 0x16, 0xe1, 0x88, 0x9b, + 0x5f, 0x14, 0x1c, 0xd8, 0x84, 0x8a, 0x0e, 0xac, 0xe0, 0x0f, 0x24, 0xc6, + 0xbe, 0xf1, 0x05, 0x16, 0xf4, 0x44, 0x37, 0xec, 0x44, 0xff, 0x00, 0xc2, + 0x7f, 0xe5, 0x4b, 0x6e, 0x2e, 0xd3, 0xdf, 0x3a, 0x4c, 0xa9, 0xf1, 0x40, + 0x79, 0x1a, 0x01, 0xeb, 0x19, 0x3b, 0x15, 0xc1, 0x5d, 0xe4, 0xfa, 0xf0, + 0x95, 0x55, 0xc7, 0xe1, 0x02, 0x07, 0x38, 0x96, 0x2f, 0x91, 0x7d, 0x30, + 0x19, 0x68, 0xe9, 0x51, 0x5c, 0x0d, 0x47, 0x08, 0xaf, 0x74, 0x55, 0xab, + 0x7e, 0x53, 0x8a, 0x27, 0x62, 0x36, 0x1e, 0x7c, 0x13, 0xa0, 0x5d, 0xc0, + 0x94, 0x93, 0x3d, 0x21, 0x75, 0xe4, 0xbd, 0x47, 0xa8, 0x08, 0x20, 0x2f, + 0xac, 0xc5, 0x42, 0x73, 0xda, 0x15, 0x6c, 0x16, 0x5e, 0xa5, 0x35, 0x13, + 0x9c, 0x90, 0x4a, 0x87, 0xb4, 0xba, 0xa0, 0x2d, 0xc3, 0xd9, 0xd2, 0x7e, + 0xd3, 0xb7, 0x86, 0xe0, 0x92, 0xd0, 0x11, 0x61, 0xe6, 0xd3, 0xed, 0x00, + 0x1a, 0xc1, 0xa1, 0x56, 0xad, 0xa4, 0x40, 0xdb, 0x8f, 0x59, 0xd8, 0x1e, + 0x70, 0x50, 0x51, 0xe0, 0x96, 0x8d, 0x13, 0x38, 0x88, 0xe6, 0x84, 0x4c, + 0x87, 0x6b, 0x97, 0x48, 0x6b, 0x21, 0xf2, 0x85, 0x64, 0xbf, 0x39, 0x49, + 0xa5, 0x59, 0x98, 0x8a, 0xe5, 0xe2, 0xe3, 0x61, 0x5a, 0xbd, 0x91, 0x9d, + 0x47, 0x54, 0xde, 0x3a, 0x28, 0x2e, 0x20, 0xa3, 0x9e, 0x91, 0xb5, 0xe4, + 0xcc, 0x25, 0xbb, 0xa8, 0x45, 0x5b, 0xab, 0x9a, 0x7d, 0x89, 0xab, 0xf0, + 0x0e, 0xd8, 0x7c, 0x20, 0x8d, 0xa2, 0xf6, 0xc5, 0xbe, 0xce, 0x2e, 0xf0, + 0x9d, 0xf6, 0x62, 0x25, 0x85, 0x07, 0x77, 0x44, 0xd7, 0x05, 0xb0, 0xe0, + 0xed, 0x11, 0x3c, 0x98, 0x98, 0x04, 0xf8, 0x17, 0xb8, 0xe6, 0x06, 0x7e, + 0xa5, 0x4b, 0x43, 0xca, 0xb2, 0x24, 0x20, 0x64, 0xd7, 0xd9, 0x32, 0xb8, + 0xd1, 0xc1, 0xed, 0x77, 0x8a, 0xc3, 0x37, 0xdb, 0x98, 0x6b, 0x1a, 0x17, + 0xde, 0x88, 0x6d, 0x4a, 0x76, 0x96, 0x55, 0x90, 0x5f, 0x68, 0x30, 0xd9, + 0x86, 0xb1, 0x2a, 0xef, 0x64, 0x55, 0x8b, 0x13, 0x58, 0xe3, 0xde, 0x06, + 0xd9, 0xf2, 0xa6, 0x0f, 0x24, 0x03, 0x22, 0xf0, 0xf5, 0x8d, 0x9d, 0xca, + 0x4c, 0x04, 0xc7, 0xaa, 0xac, 0x7c, 0x97, 0xc2, 0x18, 0xf1, 0x45, 0x6c, + 0x27, 0xe4, 0x12, 0xc0, 0x42, 0x91, 0xe7, 0x97, 0xe6, 0xe5, 0x7a, 0x97, + 0xc6, 0x71, 0x0a, 0x2f, 0x15, 0x79, 0x83, 0x64, 0xa2, 0xce, 0xbe, 0xd7, + 0x2a, 0x41, 0x15, 0xe7, 0xa3, 0x50, 0x82, 0xd9, 0x65, 0xb6, 0xe6, 0x8a, + 0x73, 0x78, 0xb7, 0x53, 0x2b, 0x4a, 0x56, 0xdd, 0x40, 0x3b, 0x6c, 0x76, + 0x99, 0x02, 0x80, 0x94, 0x79, 0xa3, 0x0a, 0x98, 0x3b, 0x15, 0x82, 0x2a, + 0x98, 0xc6, 0x86, 0xe1, 0x5f, 0x73, 0x82, 0x08, 0xe7, 0x2e, 0x65, 0xae, + 0x1c, 0x37, 0x86, 0xe7, 0xb0, 0x65, 0xdc, 0x7a, 0x8c, 0x0d, 0xc7, 0x59, + 0x3d, 0xf5, 0x70, 0x9b, 0x2b, 0x2f, 0xe6, 0x00, 0xa0, 0xc0, 0x38, 0x0f, + 0x0a, 0x01, 0x12, 0xc7, 0x08, 0xce, 0x4f, 0x49, 0x73, 0x6c, 0xf5, 0x85, + 0x72, 0x16, 0x79, 0xc2, 0x93, 0xed, 0x26, 0x9a, 0x95, 0x68, 0xa3, 0x88, + 0xb1, 0x68, 0x59, 0x9c, 0xc7, 0x20, 0x80, 0xf3, 0x80, 0x16, 0x03, 0x91, + 0x78, 0x26, 0x56, 0x58, 0x1c, 0x75, 0x82, 0xd3, 0x2e, 0x59, 0x9f, 0x00, + 0x1e, 0xef, 0x45, 0xf9, 0x4b, 0xea, 0x3c, 0xdc, 0xc1, 0x55, 0x5b, 0x8d, + 0xaa, 0x8a, 0x37, 0x91, 0xa3, 0xb1, 0x0a, 0x47, 0xda, 0x1b, 0x44, 0xf2, + 0xdc, 0x1b, 0x52, 0x9b, 0xbb, 0x8c, 0x0a, 0x50, 0xdf, 0x91, 0x1b, 0x00, + 0xf4, 0x84, 0x40, 0xb4, 0x66, 0x11, 0x85, 0x81, 0x1c, 0xb5, 0x11, 0xdc, + 0xb3, 0xba, 0xc6, 0x1e, 0xfd, 0x2f, 0xa7, 0x8d, 0xf8, 0xea, 0x0d, 0x8d, + 0xd9, 0xea, 0xe2, 0x43, 0x88, 0x71, 0xc8, 0x63, 0xe5, 0xc7, 0x77, 0xc8, + 0x66, 0x08, 0x56, 0xee, 0xbf, 0xf6, 0x04, 0x44, 0x65, 0x75, 0x7f, 0xec, + 0xaa, 0xe1, 0x3a, 0xb7, 0xff, 0x00, 0x66, 0x41, 0x67, 0x85, 0xee, 0x55, + 0xa4, 0xb8, 0x52, 0xfd, 0xe7, 0x62, 0x0e, 0x41, 0xd6, 0x51, 0x5d, 0x20, + 0xa8, 0x92, 0xab, 0x89, 0xdb, 0xa4, 0x7d, 0xa9, 0x6a, 0xf9, 0x8d, 0x75, + 0x8f, 0x53, 0xef, 0xaa, 0x84, 0xd0, 0xf5, 0xd7, 0xdc, 0xa3, 0x05, 0x5e, + 0x7c, 0xfc, 0xca, 0x0b, 0xb7, 0xab, 0x3f, 0x32, 0xe6, 0xc5, 0xd2, 0x0e, + 0xfe, 0xe1, 0xb7, 0x35, 0xcc, 0xb6, 0x44, 0x5b, 0xbb, 0x09, 0xe6, 0xfd, + 0xaf, 0x1d, 0x4a, 0x6b, 0x5b, 0x77, 0x81, 0xe4, 0x83, 0x3b, 0x02, 0xf6, + 0xea, 0xc8, 0x7a, 0x6b, 0xd2, 0x5a, 0x1b, 0x79, 0x69, 0x94, 0x39, 0xb4, + 0x9a, 0xac, 0x4c, 0x99, 0x2b, 0xc9, 0x77, 0x72, 0xdb, 0x43, 0xce, 0x56, + 0x25, 0xa5, 0x07, 0x3b, 0x94, 0xa4, 0x10, 0x9a, 0xf0, 0x80, 0x37, 0x2e, + 0x6a, 0x8b, 0x50, 0x80, 0x86, 0x86, 0xe3, 0xb2, 0x9a, 0xc5, 0x48, 0x94, + 0x8c, 0x08, 0x8b, 0x54, 0x87, 0x10, 0x08, 0xc6, 0xe8, 0x72, 0xd6, 0x61, + 0x30, 0x37, 0x91, 0xd4, 0x4a, 0xa9, 0xd8, 0x04, 0xa1, 0x11, 0x65, 0x4c, + 0xc8, 0x55, 0x09, 0x46, 0x47, 0x7a, 0x5d, 0x35, 0x50, 0x22, 0x80, 0x69, + 0x6e, 0xf0, 0x14, 0xd8, 0x5d, 0x75, 0xff, 0x00, 0x20, 0xad, 0x12, 0x9e, + 0x87, 0x13, 0x02, 0x9b, 0x35, 0x67, 0x74, 0x23, 0x8b, 0xc6, 0x85, 0x6a, + 0xde, 0xc1, 0x6a, 0xf4, 0x27, 0x78, 0x20, 0xb4, 0x02, 0xde, 0xee, 0xde, + 0xef, 0xf0, 0x32, 0x74, 0x28, 0x30, 0x0b, 0xf2, 0xb5, 0xc0, 0x23, 0xd3, + 0x97, 0xb4, 0x33, 0x6b, 0x6a, 0xf7, 0x2b, 0x01, 0x03, 0x2c, 0x08, 0x4a, + 0xa6, 0x8c, 0xe0, 0x4a, 0x9a, 0x2b, 0x54, 0x54, 0x3e, 0x29, 0x72, 0x1b, + 0x64, 0x52, 0xc9, 0x66, 0x95, 0x33, 0x37, 0x8f, 0xfa, 0x15, 0x00, 0x95, + 0x0a, 0xd1, 0x58, 0x51, 0xd1, 0xb2, 0xd9, 0xb6, 0x05, 0x9e, 0xa8, 0x0a, + 0x18, 0x09, 0x80, 0xd5, 0xc3, 0xae, 0xc6, 0x13, 0x83, 0x00, 0x82, 0x02, + 0xc2, 0xc1, 0x58, 0xda, 0xa8, 0xd0, 0xc1, 0x45, 0xaa, 0xc7, 0x79, 0xed, + 0x05, 0x26, 0xc5, 0xad, 0x23, 0x80, 0xab, 0x8a, 0x71, 0x74, 0x0f, 0x2a, + 0xce, 0x75, 0xa9, 0x70, 0xd2, 0x9d, 0x20, 0x8d, 0x0d, 0x62, 0x2b, 0x2e, + 0x15, 0xed, 0xb8, 0x97, 0x68, 0x70, 0x21, 0x83, 0xcc, 0x3d, 0x5e, 0x9f, + 0xc2, 0x30, 0xc1, 0xb0, 0xca, 0xaf, 0x63, 0x07, 0x9d, 0x43, 0xee, 0x8f, + 0x63, 0xbf, 0xd4, 0x2a, 0xcb, 0x8c, 0xdb, 0x05, 0x39, 0x35, 0x7c, 0x10, + 0xb0, 0x6d, 0x9b, 0x25, 0xb6, 0x36, 0x42, 0x82, 0xd8, 0xc8, 0x48, 0x53, + 0xb4, 0x52, 0x94, 0x64, 0xce, 0xb5, 0x10, 0x05, 0x6b, 0xad, 0x4a, 0x85, + 0x67, 0x74, 0xb7, 0x9b, 0x6d, 0x65, 0x5f, 0xf1, 0x98, 0x6c, 0xc1, 0x8a, + 0x7f, 0x5b, 0xa2, 0x42, 0xf4, 0x04, 0x75, 0x67, 0x3a, 0x55, 0x79, 0x15, + 0x23, 0xf0, 0xa0, 0x02, 0x11, 0xb9, 0xd1, 0x30, 0x50, 0x4c, 0x2c, 0xda, + 0x30, 0xa6, 0x29, 0x65, 0xa3, 0x68, 0xf2, 0x31, 0xbb, 0x79, 0x9c, 0x0e, + 0x8e, 0x99, 0x8f, 0x9f, 0x8e, 0x21, 0x5c, 0xaa, 0xd0, 0x16, 0xaf, 0x01, + 0x00, 0xf5, 0xb6, 0xb4, 0xef, 0x6e, 0xe8, 0xbe, 0xbf, 0xc4, 0x80, 0xc1, + 0xd4, 0xc4, 0x79, 0xf7, 0x54, 0xf5, 0x26, 0xb2, 0x39, 0xf8, 0x86, 0x17, + 0x97, 0x35, 0x2d, 0x78, 0x15, 0xdc, 0x8b, 0x92, 0x6b, 0x39, 0xa6, 0x05, + 0x4a, 0x0a, 0x1e, 0x53, 0x5a, 0xfc, 0x79, 0x98, 0x08, 0xe0, 0xb1, 0x12, + 0xf0, 0x4a, 0x6d, 0x78, 0x48, 0xd4, 0x02, 0x19, 0xa6, 0x5e, 0x40, 0x9b, + 0x11, 0x80, 0x80, 0x40, 0x4c, 0x28, 0x2b, 0x39, 0x00, 0x65, 0x50, 0x26, + 0x33, 0x0b, 0x45, 0x9a, 0x2a, 0x55, 0x2a, 0xd5, 0x08, 0x42, 0x91, 0x3a, + 0xe8, 0x36, 0xde, 0x1a, 0x80, 0xe0, 0x68, 0x64, 0x65, 0xe9, 0xd7, 0xff, + 0x00, 0xb8, 0x44, 0x70, 0x48, 0x61, 0x75, 0xe6, 0xb3, 0x6b, 0x07, 0x04, + 0x1d, 0x3a, 0x4c, 0x0e, 0x6e, 0xb4, 0xcd, 0x4e, 0xa1, 0x75, 0xb4, 0x3d, + 0xd1, 0x4e, 0xc7, 0x57, 0xf1, 0x87, 0xc1, 0x65, 0x9a, 0xf5, 0x7a, 0xfc, + 0x2c, 0x3b, 0x25, 0xf6, 0xb6, 0x87, 0xbe, 0x7c, 0xa7, 0x2b, 0xc6, 0xae, + 0x58, 0x31, 0xae, 0x48, 0xb2, 0x68, 0xaa, 0x39, 0xcb, 0x21, 0x78, 0xf2, + 0x85, 0x8f, 0xf3, 0xf3, 0xcb, 0xae, 0x02, 0xca, 0x40, 0x39, 0x12, 0x98, + 0xb2, 0x04, 0xb9, 0x6f, 0x5b, 0xc2, 0xe0, 0xdc, 0x6d, 0x56, 0x92, 0x69, + 0xcc, 0x37, 0x6c, 0x0e, 0x1d, 0x96, 0x36, 0x15, 0xe7, 0xcc, 0xe4, 0x12, + 0x29, 0x3c, 0x1e, 0x2e, 0x88, 0x90, 0xb5, 0x53, 0xf0, 0x15, 0x35, 0x6e, + 0x35, 0xb2, 0x31, 0x4c, 0xbf, 0xaf, 0x37, 0xaa, 0xac, 0xdb, 0x71, 0x2d, + 0x90, 0x35, 0x65, 0xf3, 0x14, 0x69, 0x2b, 0x8b, 0x85, 0x5d, 0x30, 0x16, + 0x65, 0x37, 0xa6, 0x0e, 0xaa, 0x43, 0x16, 0x8e, 0xe0, 0xd4, 0x1e, 0xc7, + 0xf2, 0x1d, 0x97, 0x83, 0x3d, 0x9f, 0x21, 0xdb, 0xd2, 0x20, 0x0a, 0x4a, + 0xa4, 0xe7, 0xbc, 0x10, 0x07, 0x3b, 0x8f, 0x35, 0xca, 0x6c, 0x08, 0x85, + 0x2b, 0x01, 0x28, 0x02, 0x29, 0x04, 0x87, 0x72, 0x87, 0x14, 0x90, 0x20, + 0x57, 0x36, 0x80, 0x5a, 0x38, 0xb3, 0x82, 0x16, 0x01, 0x71, 0xbb, 0x32, + 0x40, 0xaf, 0x25, 0x8e, 0x7b, 0xa2, 0x99, 0xf8, 0xd5, 0x0a, 0xa5, 0x0b, + 0x4a, 0x14, 0xb3, 0x00, 0xa9, 0x1f, 0xba, 0xc2, 0x20, 0xd6, 0x97, 0x14, + 0x21, 0x6c, 0xae, 0x67, 0x97, 0xfc, 0xb6, 0x46, 0x50, 0x69, 0x08, 0x51, + 0x99, 0x8a, 0xac, 0x5e, 0xea, 0x2c, 0x1b, 0x7b, 0x6a, 0x3a, 0x31, 0x54, + 0x2b, 0x6f, 0xb3, 0xc9, 0xe7, 0xd1, 0xfc, 0xa5, 0x0d, 0xc3, 0xe5, 0x15, + 0x8e, 0xfc, 0x8f, 0x58, 0x85, 0x28, 0x33, 0xb4, 0xec, 0x4d, 0x27, 0x52, + 0x18, 0x75, 0x7e, 0x26, 0x06, 0x4c, 0x15, 0x1a, 0xd7, 0xd1, 0x11, 0x13, + 0x12, 0xa5, 0x2b, 0x56, 0x3a, 0x41, 0xac, 0x5a, 0xb2, 0x69, 0x40, 0x2b, + 0x4d, 0xf1, 0x09, 0x30, 0xd3, 0x03, 0x94, 0x06, 0x6c, 0x0e, 0x40, 0x45, + 0x64, 0x1c, 0x99, 0x49, 0x6c, 0x48, 0x55, 0x14, 0x0b, 0xa1, 0x12, 0x13, + 0xdd, 0xb8, 0x94, 0x22, 0x09, 0x73, 0x7b, 0x04, 0x07, 0x27, 0xca, 0x6f, + 0x75, 0xc5, 0xdc, 0x37, 0x17, 0x16, 0x83, 0x9e, 0xa0, 0xba, 0x69, 0xa3, + 0x1b, 0x48, 0x08, 0x00, 0x28, 0x02, 0x80, 0xfe, 0x6c, 0xdb, 0x98, 0xd3, + 0xd6, 0x25, 0xfa, 0xc7, 0x27, 0x8f, 0x93, 0x13, 0x25, 0xe6, 0xa7, 0x94, + 0x57, 0x44, 0xe4, 0x77, 0xdf, 0x8b, 0x22, 0xab, 0x1f, 0xe0, 0x11, 0x08, + 0xf2, 0xf0, 0xbf, 0x89, 0x4b, 0x95, 0x75, 0xb7, 0xf1, 0x1c, 0x02, 0xd7, + 0x5a, 0xfd, 0xea, 0x57, 0xa5, 0xeb, 0xef, 0x26, 0x88, 0xe4, 0x42, 0x9e, + 0xfc, 0x1b, 0xbf, 0xb1, 0x35, 0xd9, 0x70, 0x76, 0x9c, 0x1a, 0xea, 0x0e, + 0x77, 0x06, 0x89, 0x7c, 0x8a, 0xc7, 0xe7, 0x9f, 0xfb, 0xaf, 0xff, 0xd9 +}; +unsigned int background_R_jpg_len = 19068; diff --git a/core/embed/unix/background_R.jpg b/core/embed/unix/background_R.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3c97cc1e51c7b669487c90eb6fd83413eefe21c GIT binary patch literal 19068 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 B9Mb>* literal 0 HcmV?d00001 diff --git a/core/embed/unix/flash.c b/core/embed/unix/flash.c index c7d4691d9..c9a400b94 100644 --- a/core/embed/unix/flash.c +++ b/core/embed/unix/flash.c @@ -47,7 +47,7 @@ static const uint32_t FLASH_SECTOR_TABLE[FLASH_SECTOR_COUNT + 1] = { [9] = 0x080A0000, // - 0x080BFFFF | 128 KiB [10] = 0x080C0000, // - 0x080DFFFF | 128 KiB [11] = 0x080E0000, // - 0x080FFFFF | 128 KiB -#if defined TREZOR_MODEL_T +#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_R [12] = 0x08100000, // - 0x08103FFF | 16 KiB [13] = 0x08104000, // - 0x08107FFF | 16 KiB [14] = 0x08108000, // - 0x0810BFFF | 16 KiB diff --git a/core/embed/unix/jpg_to_h.py b/core/embed/unix/jpg_to_h.py new file mode 100644 index 000000000..01e0449e0 --- /dev/null +++ b/core/embed/unix/jpg_to_h.py @@ -0,0 +1,34 @@ +""" +Creates a header file containing image data. +""" + +background_image = "background_R.jpg" + +h_file_name = "background_R.h" + +h_file_template = """\ +// clang-format off +unsigned char background_R_jpg[] = {content}; +unsigned int background_R_jpg_len = {length}; +""" + +with open(background_image, "rb") as f: + image_data = f.read() + +column_count = 12 + +content = "{{\n{image_bytes}\n}}" +image_bytes = " " # begin with indent +for index, byte in enumerate(image_data, start=1): + image_bytes += f"0x{byte:02x}," + # If at the end of line, include a newline with indent, otherwise just space + if index % column_count == 0: + image_bytes += "\n " + else: + image_bytes += " " + +# Get rid of trailing coma +image_bytes = image_bytes.rstrip(", \n") + +with open(h_file_name, "w") as f: + f.write(h_file_template.format(content=content.format(image_bytes=image_bytes), length=len(image_data))) diff --git a/core/embed/unix/touch.c b/core/embed/unix/touch.c index 0467b5df6..171e551de 100644 --- a/core/embed/unix/touch.c +++ b/core/embed/unix/touch.c @@ -102,7 +102,7 @@ uint32_t touch_read(void) { return 0; } -#elif defined TREZOR_MODEL_1 +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R #include "button.h" diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 163737621..f6c279f8c 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -186,6 +186,8 @@ trezor.ui.constants import trezor.ui.constants trezor.ui.constants.t1 import trezor.ui.constants.t1 +trezor.ui.constants.tr +import trezor.ui.constants.tr trezor.ui.constants.tt import trezor.ui.constants.tt trezor.ui.container @@ -202,6 +204,8 @@ trezor.ui.layouts.reset import trezor.ui.layouts.reset trezor.ui.layouts.t1 import trezor.ui.layouts.t1 +trezor.ui.layouts.tr +import trezor.ui.layouts.tr trezor.ui.layouts.tt import trezor.ui.layouts.tt trezor.ui.layouts.tt.altcoin diff --git a/core/src/apps/base.py b/core/src/apps/base.py index be523e587..a9954a0f3 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -55,7 +55,6 @@ def get_features() -> Features: Capability.Crypto, Capability.Shamir, Capability.ShamirGroups, - Capability.PassphraseEntry, ] else: f.capabilities = [ @@ -74,8 +73,12 @@ def get_features() -> Features: Capability.U2F, Capability.Shamir, Capability.ShamirGroups, - Capability.PassphraseEntry, ] + + # Other models are not capable of PassphraseEntry + if utils.MODEL in ("T",): + f.capabilities.append(Capability.PassphraseEntry) + f.sd_card_present = sdcard.is_present() f.initialized = storage.device.is_initialized() diff --git a/core/src/apps/homescreen/homescreen.py b/core/src/apps/homescreen/homescreen.py index 4dd46b74d..1520e939d 100644 --- a/core/src/apps/homescreen/homescreen.py +++ b/core/src/apps/homescreen/homescreen.py @@ -4,7 +4,7 @@ from micropython import const import storage import storage.cache import storage.device -from trezor import config, ui +from trezor import config, ui, utils from trezor.ui.loader import Loader, LoaderNeutral from apps.base import lock_device @@ -53,7 +53,10 @@ class Homescreen(HomescreenBase): # homescreen with shifted avatar and text on bottom ui.display.avatar(48, 48 - 10, self.get_image(), ui.WHITE, ui.BLACK) - ui.display.text_center(ui.WIDTH // 2, 220, self.label, ui.BOLD, ui.FG, ui.BG) + label_heights = {"1": 54, "R": 110, "T": 220} + ui.display.text_center( + ui.WIDTH // 2, label_heights[utils.MODEL], self.label, ui.BOLD, ui.FG, ui.BG + ) def on_touch_start(self, _x: int, _y: int) -> None: if self.loader.start_ms is not None: diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py index a76849834..a5839084e 100644 --- a/core/src/apps/workflow_handlers.py +++ b/core/src/apps/workflow_handlers.py @@ -50,7 +50,7 @@ def find_message_handler_module(msg_type: int) -> str: elif msg_type == MessageType.GetNonce: return "apps.management.get_nonce" - if utils.MODEL == "T" and msg_type == MessageType.SdProtect: + if utils.MODEL in ("T",) and msg_type == MessageType.SdProtect: return "apps.management.sd_protect" # bitcoin diff --git a/core/src/storage/device.py b/core/src/storage/device.py index eaf489511..8f2a4532b 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -4,6 +4,7 @@ from ubinascii import hexlify import storage.cache from storage import common +from trezor import utils if TYPE_CHECKING: from trezor.enums import BackupType @@ -199,6 +200,9 @@ def get_passphrase_always_on_device() -> bool: - If DEVICE(1) => returns True, the check against b"\x01" in get_bool succeeds. - If HOST(2) => returns False, the check against b"\x01" in get_bool fails. """ + # Some models do not support passphrase input on device + if utils.MODEL in ("1", "R"): + return False return common.get_bool(_NAMESPACE, _PASSPHRASE_ALWAYS_ON_DEVICE) diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index 99a8f3ce2..b94b73490 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -49,7 +49,7 @@ else: # in both debug and production, emulator needs to draw the screen explicitly -if utils.EMULATOR or utils.MODEL == "1": +if utils.EMULATOR or utils.MODEL in ("1", "R"): loop.after_step_hook = refresh @@ -240,7 +240,7 @@ class Component: def __init__(self) -> None: self.repaint = True - if utils.MODEL == "T": + if utils.MODEL in ("T",): def dispatch(self, event: int, x: int, y: int) -> None: if event is RENDER: @@ -263,7 +263,7 @@ class Component: def on_touch_end(self, x: int, y: int) -> None: pass - elif utils.MODEL == "1": + elif utils.MODEL in ("1", "R"): def dispatch(self, event: int, x: int, y: int) -> None: if event is RENDER: @@ -374,7 +374,7 @@ class Layout(Component): Usually overridden to add another tasks to the list.""" return self.handle_input(), self.handle_rendering() - if utils.MODEL == "T": + if utils.MODEL in ("T",): def handle_input(self) -> Generator: """Task that is waiting for the user input.""" @@ -388,7 +388,7 @@ class Layout(Component): # way to get the lowest input-to-render latency. self.dispatch(RENDER, 0, 0) - elif utils.MODEL == "1": + elif utils.MODEL in ("1", "R"): def handle_input(self) -> Generator: """Task that is waiting for the user input.""" diff --git a/core/src/trezor/ui/constants/__init__.py b/core/src/trezor/ui/constants/__init__.py index ef1cf9b8e..55c1c66f1 100644 --- a/core/src/trezor/ui/constants/__init__.py +++ b/core/src/trezor/ui/constants/__init__.py @@ -1,8 +1,10 @@ from trezor import utils -if utils.MODEL == "1": +if utils.MODEL in ("1",): from .t1 import * # noqa: F401,F403 -elif utils.MODEL == "T": +elif utils.MODEL in ("R",): + from .tr import * # noqa: F401,F403 +elif utils.MODEL in ("T",): from .tt import * # noqa: F401,F403 else: raise ValueError("Unknown Trezor model") diff --git a/core/src/trezor/ui/constants/tr.py b/core/src/trezor/ui/constants/tr.py new file mode 100644 index 000000000..91be0728d --- /dev/null +++ b/core/src/trezor/ui/constants/tr.py @@ -0,0 +1,9 @@ +from micropython import const + +TEXT_HEADER_HEIGHT = const(13) +TEXT_LINE_HEIGHT = const(9) +TEXT_LINE_HEIGHT_HALF = const(4) +TEXT_MARGIN_LEFT = const(0) +TEXT_MAX_LINES = const(4) +TEXT_MAX_LINES_NO_HEADER = const(5) +PAGINATION_MARGIN_RIGHT = const(4) diff --git a/core/src/trezor/ui/layouts/__init__.py b/core/src/trezor/ui/layouts/__init__.py index 527666382..dca4f8dc8 100644 --- a/core/src/trezor/ui/layouts/__init__.py +++ b/core/src/trezor/ui/layouts/__init__.py @@ -10,9 +10,11 @@ except ImportError: # NOTE: using any import magic probably causes mypy not to check equivalence of # layout type signatures across models -if utils.MODEL == "1": +if utils.MODEL in ("1",): from .t1 import * # noqa: F401,F403 -elif utils.MODEL == "T": +elif utils.MODEL in ("R",): + from .tr import * # noqa: F401,F403 +elif utils.MODEL in ("T",): if not UI2: from .tt import * # noqa: F401,F403 else: diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py new file mode 100644 index 000000000..6ce8e46f2 --- /dev/null +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -0,0 +1,295 @@ +from typing import TYPE_CHECKING, Sequence + +from trezor import io, log, loop, ui, wire, workflow +from trezor.enums import ButtonRequestType + +import trezorui2 + +from ..common import button_request, interact + +if TYPE_CHECKING: + from typing import Any, NoReturn, Type + + ExceptionType = BaseException | Type[BaseException] + + +class _RustLayout(ui.Layout): + # pylint: disable=super-init-not-called + def __init__(self, layout: Any): + self.layout = layout + self.timer = loop.Timer() + self.layout.set_timer_fn(self.set_timer) + + def set_timer(self, token: int, deadline: int) -> None: + self.timer.schedule(deadline, token) + + def create_tasks(self) -> tuple[loop.Task, ...]: + return self.handle_input_and_rendering(), self.handle_timers() + + def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is-generator] + button = loop.wait(io.BUTTON) + ui.display.clear() + self.layout.paint() + while True: + # Using `yield` instead of `await` to avoid allocations. + event, button_num = yield button + workflow.idle_timer.touch() + msg = None + if event in (io.BUTTON_PRESSED, io.BUTTON_RELEASED): + msg = self.layout.button_event(event, button_num) + self.layout.paint() + if msg is not None: + raise ui.Result(msg) + + def handle_timers(self) -> loop.Task: # type: ignore [awaitable-is-generator] + while True: + # Using `yield` instead of `await` to avoid allocations. + token = yield self.timer + msg = self.layout.timer(token) + self.layout.paint() + if msg is not None: + raise ui.Result(msg) + + +async def confirm_action( + ctx: wire.GenericContext, + br_type: str, + title: str, + action: str | None = None, + description: str | None = None, + description_param: str | None = None, + description_param_font: int = ui.BOLD, + verb: str | bytes | None = "OK", + verb_cancel: str | bytes | None = "cancel", + hold: bool = False, + hold_danger: bool = False, + icon: str | None = None, + icon_color: int | None = None, + reverse: bool = False, + larger_vspace: bool = False, + exc: ExceptionType = wire.ActionCancelled, + br_code: ButtonRequestType = ButtonRequestType.Other, +) -> None: + if isinstance(verb, bytes) or isinstance(verb_cancel, bytes): + raise NotImplementedError + + if description is not None and description_param is not None: + if description_param_font != ui.BOLD: + log.error(__name__, "confirm_action description_param_font not implemented") + description = description.format(description_param) + + if hold: + log.error(__name__, "confirm_action hold not implemented") + + result = await interact( + ctx, + _RustLayout( + trezorui2.confirm_action( + title=title.upper(), + action=action, + description=description, + verb=verb, + verb_cancel=verb_cancel, + hold=hold, + reverse=reverse, + ) + ), + br_type, + br_code, + ) + if result is not trezorui2.CONFIRMED: + raise exc + + +async def confirm_text( + ctx: wire.GenericContext, + br_type: str, + title: str, + data: str, + description: str | None = None, + br_code: ButtonRequestType = ButtonRequestType.Other, + icon: str = ui.ICON_SEND, # TODO cleanup @ redesign + icon_color: int = ui.GREEN, # TODO cleanup @ redesign +) -> None: + result = await interact( + ctx, + _RustLayout( + trezorui2.confirm_text( + title=title.upper(), + data=data, + description=description, + ) + ), + br_type, + br_code, + ) + if result is not trezorui2.CONFIRMED: + raise wire.ActionCancelled + + +async def show_success( + ctx: wire.GenericContext, + br_type: str, + content: str, +) -> None: + result = await interact( + ctx, + _RustLayout( + trezorui2.confirm_text( + title="Success", + data=content, + description="", + ) + ), + br_type, + br_code=ButtonRequestType.Other, + ) + if result is not trezorui2.CONFIRMED: + raise wire.ActionCancelled + + +async def show_address( + ctx: wire.GenericContext, + address: str, + *, + case_sensitive: bool = True, + address_qr: str | None = None, + title: str = "Confirm address", + network: str | None = None, + multisig_index: int | None = None, + xpubs: Sequence[str] = (), + address_extra: str | None = None, + title_qr: str | None = None, +) -> None: + result = await interact( + ctx, + _RustLayout( + trezorui2.confirm_text( + title="ADDRESS", + data=address, + description="Confirm address", + ) + ), + "show_address", + ButtonRequestType.Address, + ) + if result is not trezorui2.CONFIRMED: + raise wire.ActionCancelled + + +async def confirm_output( + ctx: wire.GenericContext, + address: str, + amount: str, + font_amount: int = ui.NORMAL, # TODO cleanup @ redesign + title: str = "Confirm sending", + icon: str = ui.ICON_SEND, +) -> None: + result = await interact( + ctx, + _RustLayout( + trezorui2.confirm_text( + title=title, + data=f"Send {amount} to {address}?", + description="Confirm Output", + ) + ), + "confirm_output", + ButtonRequestType.Other, + ) + if result is not trezorui2.CONFIRMED: + raise wire.ActionCancelled + + +async def confirm_total( + ctx: wire.GenericContext, + total_amount: str, + fee_amount: str, + title: str = "Confirm transaction", + total_label: str = "Total amount:\n", + fee_label: str = "\nincluding fee:\n", + icon_color: int = ui.GREEN, + br_type: str = "confirm_total", + br_code: ButtonRequestType = ButtonRequestType.SignTx, +) -> None: + result = await interact( + ctx, + _RustLayout( + trezorui2.confirm_text( + title=title, + data=f"{total_label}{total_amount}\n{fee_label}{fee_amount}", + description="Confirm Output", + ) + ), + br_type, + br_code, + ) + if result is not trezorui2.CONFIRMED: + raise wire.ActionCancelled + + +async def confirm_blob( + ctx: wire.GenericContext, + br_type: str, + title: str, + data: bytes | str, + description: str | None = None, + hold: bool = False, + br_code: ButtonRequestType = ButtonRequestType.Other, + icon: str = ui.ICON_SEND, # TODO cleanup @ redesign + icon_color: int = ui.GREEN, # TODO cleanup @ redesign + ask_pagination: bool = False, +) -> None: + result = await interact( + ctx, + _RustLayout( + trezorui2.confirm_text( + title=title, + data=str(data), + description=description, + ) + ), + br_type, + br_code, + ) + if result is not trezorui2.CONFIRMED: + raise wire.ActionCancelled + + +def draw_simple_text(title: str, description: str = "") -> None: + log.error(__name__, "draw_simple_text not implemented") + + +async def request_pin_on_device( + ctx: wire.GenericContext, + prompt: str, + attempts_remaining: int | None, + allow_cancel: bool, +) -> str: + await button_request(ctx, "pin_device", code=ButtonRequestType.PinEntry) + + # TODO: this should not be callable on TR + return "1234" + + +async def show_error_and_raise( + ctx: wire.GenericContext, + br_type: str, + content: str, + header: str = "Error", + subheader: str | None = None, + button: str = "Close", + red: bool = False, + exc: ExceptionType = wire.ActionCancelled, +) -> NoReturn: + raise NotImplementedError + + +async def show_popup( + title: str, + description: str, + subtitle: str | None = None, + description_param: str = "", + timeout_ms: int = 3000, +) -> None: + raise NotImplementedError